将 @sapphire/shapeshift 从 5.x 升级到 6.x
根据 TypeScript 类型自动比较 @sapphire/shapeshift 5.0.0 与 6.0.0 的公开 API。签名变化表示可能存在不兼容变更,并非确定结论。
概要
| 已删除的导入路径 | 0 |
|---|---|
| 已删除的导出 | 0 |
| 已修改的签名 | 10 |
| 已删除的类或接口成员 | 0 |
| 已修改的类或接口成员 | 12 |
| 新增弃用 | 0 |
| 要求变化(engines、peer 依赖) | 0 |
| 新增导出 | 0 |
已删除的导出
未发现。
已修改的签名
| export | 之前 | 之后 |
|---|---|---|
@sapphire/shapeshift · Constructor | (new (...args: readonly any[]) => T) | (abstract new (...args: readonly any[]) => T) | (abstract new (...args: readonly any[]) => T) | (new (...args: readonly any[]) => T) |
@sapphire/shapeshift · ValidatorError | ValidationError | CombinedPropertyError | CombinedError | UnknownEnumValueError | CombinedError | CombinedPropertyError | UnknownEnumValueError | ValidationError |
@sapphire/shapeshift · DateConstraintName | "s.date().lessThan()" | "s.date().lessThanOrEqual()" | "s.date().greaterThan()" | "s.date().greaterThanOrEqual()" | "s.date().equal()" | "s.date().notEqual()" | "s.date().valid()" | "s.date().invalid()" | "s.date().equal()" | "s.date().greaterThan()" | "s.date().greaterThanOrEqual()" | "s.date().lessThan()" | "s.date().lessThanOrEqual()" | "s.date().notEqual()" | "s.date().invalid()" | "s.date().valid()" |
@sapphire/shapeshift · ArrayConstraintName | "s.array(T).unique()" | "s.array(T).lengthLessThan()" | "s.array(T).lengthLessThanOrEqual()" | "s.array(T).lengthGreaterThan()" | "s.array(T).lengthGreaterThanOrEqual()" | "s.array(T).lengthEqual()" | "s.array(T).lengthNotEqual()" | "s.array(T).lengthRange()" | "s.array(T).lengthRangeInclusive()" | "s.array(T).lengthRangeExclusive()" | "s.array(T).unique()" | "s.array(T).lengthEqual()" | "s.array(T).lengthGreaterThan()" | "s.array(T).lengthGreaterThanOrEqual()" | "s.array(T).lengthLessThan()" | "s.array(T).lengthLessThanOrEqual()" | "s.array(T).lengthNotEqual()" | "s.array(T).lengthRange()" | "s.array(T).lengthRangeExclusive()" | "s.array(T).lengthRangeInclusive()" |
@sapphire/shapeshift · ExpandSmallerTuples | T extends [T[0], ...infer Tail] ? T | ExpandSmallerTuples<Tail> : [] | T extends [T[0], ...infer Tail] ? ExpandSmallerTuples<Tail> | T : [] |
@sapphire/shapeshift · BigIntConstraintName | "s.bigint().lessThan()" | "s.bigint().lessThanOrEqual()" | "s.bigint().greaterThan()" | "s.bigint().greaterThanOrEqual()" | "s.bigint().equal()" | "s.bigint().notEqual()" | "s.bigint().divisibleBy()" | "s.bigint().divisibleBy()" | "s.bigint().equal()" | "s.bigint().greaterThan()" | "s.bigint().greaterThanOrEqual()" | "s.bigint().lessThan()" | "s.bigint().lessThanOrEqual()" | "s.bigint().notEqual()" |
@sapphire/shapeshift · ConstraintErrorNames | "s.array(T).unique()" | "s.array(T).lengthLessThan()" | "s.array(T).lengthLessThanOrEqual()" | "s.array(T).lengthGreaterThan()" | "s.array(T).lengthGreaterThanOrEqual()" | "s.array(T).lengthEqual()" | "s.array(T).lengthNotEqual()" | "s.array(T).lengthRange()" | "s.array(T).lengthRangeInclusive()" | "s.array(T).lengthRangeExclusive()" | "s.typedArray(T).byteLengthLessThan()" | "s.typedArray(T).byteLengthLessThanOrEqual()" | "s.typedArray(T).byteLengthGreaterThan()" | "s.typedArray(T).byteLengthGreaterThanOrEqual()" | "s.typedArray(T).byteLengthEqual()" | "s.typedArray(T).byteLengthNotEqual()" |… | "s.array(T).unique()" | "s.array(T).lengthEqual()" | "s.array(T).lengthGreaterThan()" | "s.array(T).lengthGreaterThanOrEqual()" | "s.array(T).lengthLessThan()" | "s.array(T).lengthLessThanOrEqual()" | "s.array(T).lengthNotEqual()" | "s.array(T).lengthRange()" | "s.array(T).lengthRangeExclusive()" | "s.array(T).lengthRangeInclusive()" | "s.bigint().divisibleBy()" | "s.bigint().equal()" | "s.bigint().greaterThan()" | "s.bigint().greaterThanOrEqual()" | "s.bigint().lessThan()" | "s.bigint().lessThanOrEqual()" | "s.bigint().notEqual()" | "s.boolean().false()" | "s.boolean().true()" | "s.date().equ… |
@sapphire/shapeshift · NumberConstraintName | `s.number().lessThan(${string})` | `s.number().lessThanOrEqual(${string})` | `s.number().greaterThan(${string})` | `s.number().greaterThanOrEqual(${string})` | `s.number().equal(${string})` | `s.number().notEqual(${string})` | `s.number().divisibleBy(${string})` | `s.number().int(${string})` | `s.number().safeInt(${string})` | `s.number().finite(${string})` | `s.number().divisibleBy(${string})` | `s.number().equal(${string})` | `s.number().greaterThan(${string})` | `s.number().greaterThanOrEqual(${string})` | `s.number().lessThan(${string})` | `s.number().lessThanOrEqual(${string})` | `s.number().notEqual(${string})` | `s.number().finite(${string})` | `s.number().int(${string})` | `s.number().safeInt(${string})` |
@sapphire/shapeshift · StringConstraintName | "s.string().lengthLessThan()" | "s.string().lengthLessThanOrEqual()" | "s.string().lengthGreaterThan()" | "s.string().lengthGreaterThanOrEqual()" | "s.string().lengthEqual()" | "s.string().lengthNotEqual()" | "s.string().regex()" | "s.string().url()" | "s.string().uuid()" | "s.string().email()" | "s.string().ip()" | "s.string().ipv4()" | "s.string().ipv6()" | "s.string().date()" | "s.string().phone()" | "s.string().lengthEqual()" | "s.string().lengthGreaterThan()" | "s.string().lengthGreaterThanOrEqual()" | "s.string().lengthLessThan()" | "s.string().lengthLessThanOrEqual()" | "s.string().lengthNotEqual()" | "s.string().date()" | "s.string().email()" | "s.string().phone()" | "s.string().regex()" | "s.string().url()" | "s.string().uuid()" | "s.string().ip()" | "s.string().ipv4()" | "s.string().ipv6()" |
@sapphire/shapeshift · TypedArrayConstraintName | "s.typedArray(T).byteLengthLessThan()" | "s.typedArray(T).byteLengthLessThanOrEqual()" | "s.typedArray(T).byteLengthGreaterThan()" | "s.typedArray(T).byteLengthGreaterThanOrEqual()" | "s.typedArray(T).byteLengthEqual()" | "s.typedArray(T).byteLengthNotEqual()" | "s.typedArray(T).byteLengthRange()" | "s.typedArray(T).byteLengthRangeInclusive()" | "s.typedArray(T).byteLengthRangeExclusive()" | "s.typedArray(T).lengthLessThan()" | "s.typedArray(T).lengthLessThanOrEqual()" | "s.typedArray(T).lengthGreaterThan()" | "s.typedArray(T).lengthGreaterThanOrEqual()" | "s.typedArray(T).lengthEqual()" | "s.… | "s.typedArray(T).byteLengthEqual()" | "s.typedArray(T).byteLengthGreaterThan()" | "s.typedArray(T).byteLengthGreaterThanOrEqual()" | "s.typedArray(T).byteLengthLessThan()" | "s.typedArray(T).byteLengthLessThanOrEqual()" | "s.typedArray(T).byteLengthNotEqual()" | "s.typedArray(T).byteLengthRange()" | "s.typedArray(T).byteLengthRangeExclusive()" | "s.typedArray(T).byteLengthRangeInclusive()" | "s.typedArray(T).lengthEqual()" | "s.typedArray(T).lengthGreaterThan()" | "s.typedArray(T).lengthGreaterThanOrEqual()" | "s.typedArray(T).lengthLessThan()" | "s.typedArray(T).lengthLessThanOrEqual()" | "s.… |
已删除的类或接口成员
未发现。
已修改的类或接口成员
| member | 之前 | 之后 |
|---|---|---|
Result.isErr | (): this is { success: false; error: E; } | (): this is { error: E; success: false; } |
MapValidator.handle | (value: unknown): Result<Map<K, V>, ValidationError | CombinedPropertyError> | (value: unknown): Result<Map<K, V>, CombinedPropertyError | ValidationError> |
SetValidator.handle | (values: unknown): Result<Set<T>, ValidationError | CombinedError> | (values: unknown): Result<Set<T>, CombinedError | ValidationError> |
ArrayValidator.handle | (values: unknown): Result<T, ValidationError | CombinedPropertyError> | (values: unknown): Result<T, CombinedPropertyError | ValidationError> |
TupleValidator.handle | (values: unknown): Result<[...T], ValidationError | CombinedPropertyError> | (values: unknown): Result<[...T], CombinedPropertyError | ValidationError> |
UnionValidator.handle | (value: unknown): Result<T, ValidationError | CombinedError> | (value: unknown): Result<T, CombinedError | ValidationError> |
ObjectValidator.extend | <ET extends object>(schema: ObjectValidator<ET, UndefinedToOptional<ET>> | MappedObjectValidator<ET>, options?: ValidatorOptions | undefined): ObjectValidator<T & ET, UndefinedToOptional<T & ET>> | <ET extends object>(schema: MappedObjectValidator<ET> | ObjectValidator<ET, UndefinedToOptional<ET>>, options?: ValidatorOptions | undefined): ObjectValidator<ET & T, UndefinedToOptional<ET & T>> |
ObjectValidator.handle | (value: unknown): Result<I, ValidationError | CombinedPropertyError> | (value: unknown): Result<I, CombinedPropertyError | ValidationError> |
RecordValidator.handle | (value: unknown): Result<Record<string, T>, ValidationError | CombinedPropertyError> | (value: unknown): Result<Record<string, T>, CombinedPropertyError | ValidationError> |
BooleanValidator.equal | <R extends true | false>(value: R, options?: ValidatorOptions | undefined): BooleanValidator<R> | <R extends false | true>(value: R, options?: ValidatorOptions | undefined): BooleanValidator<R> |
BooleanValidator.notEqual | <R extends true | false>(value: R, options?: ValidatorOptions | undefined): BooleanValidator<R> | <R extends false | true>(value: R, options?: ValidatorOptions | undefined): BooleanValidator<R> |
NativeEnumValidator.handle | (value: unknown): Result<T[keyof T], ValidationError | UnknownEnumValueError> | (value: unknown): Result<T[keyof T], UnknownEnumValueError | ValidationError> |
新增弃用
未发现。
要求变化(engines、peer 依赖)
未发现。
这些版本之间的 changelog
软件包作者发布的文本,按原样显示。
6.0.0
## 🏠 Refactor
- **errors:** Update import paths and types ([058d979](https://github.com/sapphiredev/shapeshift/commit/058d979f410339dd396f5ccdd9001364430f14f0))
## 🐛 Bug Fixes
- Correct validator return types and resolve lint errors ([48fe811](https://github.com/sapphiredev/shapeshift/commit/48fe811f0a48724ed6311fbb859ba77b536fdc1a))
## 🚀 Features
- Publish an ESM-only package ([b97e51b](https://github.com/sapphiredev/shapeshift/commit/b97e51b589e9fe63c9c88de17e7d6a4844524aa2))
- 💥 **BREAKING CHANGE:** remove CommonJS and browser global entry points; consumers must use ESM.
## 🪞 Styling
- **docs:** Improve documentation formatting and clarity ([98bd46c](https://github.com/sapphiredev/shapeshift/commit/98bd46c7708de07b8bd99d8b24459ceeec121a4b))把这些数据交给你的 AI 智能体
Vigia 是免费的 MCP 服务器:你的编程智能体在写代码之前就能检查版本、不兼容变更和安全漏洞。无需注册,无需 API 密钥。
claude mcp add --transport http vigia https://vigia.coredls.cloud/mcp
添加到 Cursor添加到 VS Code★ 在 GitHub 上加星
任何其他 MCP 客户端
{ "mcpServers": { "vigia": { "url": "https://vigia.coredls.cloud/mcp" } } }常见问题
将 @sapphire/shapeshift 从 5 升级到 6 有哪些不兼容变更?
在 @sapphire/shapeshift 5.0.0 与 6.0.0 之间,Vigia 发现 0 个已删除的导出、10 个已修改的签名,以及 12 个已删除或修改的类或接口成员。
@sapphire/shapeshift 6 中弃用了哪些内容?
@sapphire/shapeshift 6.0.0 中有 0 个导出或成员新被标记为弃用。
供智能体使用
GET https://vigia.coredls.cloud/v1/packages/npm/@sapphire/shapeshift/upgrade?from=5.0.0&to=6.0.0