From 870ab417fb69775e3b490d4457aa5963b6f16673 Mon Sep 17 00:00:00 2001 From: sinclairzx81 Date: Thu, 16 Jan 2025 17:20:57 +0900 Subject: [PATCH] Revision 0.34.14 (#1140) * Fix Compiler Promise Check * ChangeLog * Version --- changelog/0.34.0.md | 2 ++ package-lock.json | 4 ++-- package.json | 2 +- src/compiler/compiler.ts | 2 +- src/value/guard/guard.ts | 16 ++++++++-------- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/changelog/0.34.0.md b/changelog/0.34.0.md index 3c68b589..97f0a53f 100644 --- a/changelog/0.34.0.md +++ b/changelog/0.34.0.md @@ -1,4 +1,6 @@ ### 0.34.0 +- [Revision 0.34.14](https://github.com/sinclairzx81/typebox/pull/1140) + - [1139](https://github.com/sinclairzx81/typebox/issues/1139) Update TypeCompiler Check for Promise (use instanceof Promise over Thenable check) - [Revision 0.34.13](https://github.com/sinclairzx81/typebox/pull/1124) - Pre emptive fix for TypeScript 5.8.0-nightly to resolve symbol narrowing on Convert. - [Revision 0.34.12](https://github.com/sinclairzx81/typebox/pull/1120) diff --git a/package-lock.json b/package-lock.json index 82a40a27..830c835e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@sinclair/typebox", - "version": "0.34.13", + "version": "0.34.14", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@sinclair/typebox", - "version": "0.34.13", + "version": "0.34.14", "license": "MIT", "devDependencies": { "@arethetypeswrong/cli": "^0.13.2", diff --git a/package.json b/package.json index e4078594..1c2dafe0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@sinclair/typebox", - "version": "0.34.13", + "version": "0.34.14", "description": "Json Schema Type Builder with Static Type Resolution for TypeScript", "keywords": [ "typescript", diff --git a/src/compiler/compiler.ts b/src/compiler/compiler.ts index 706667ee..eb5c67c4 100644 --- a/src/compiler/compiler.ts +++ b/src/compiler/compiler.ts @@ -384,7 +384,7 @@ export namespace TypeCompiler { } } function* FromPromise(schema: TPromise, references: TSchema[], value: string): IterableIterator { - yield `(typeof value === 'object' && typeof ${value}.then === 'function')` + yield `${value} instanceof Promise` } function* FromRecord(schema: TRecord, references: TSchema[], value: string): IterableIterator { yield Policy.IsRecordLike(value) diff --git a/src/value/guard/guard.ts b/src/value/guard/guard.ts index 7ad705a9..56410e70 100644 --- a/src/value/guard/guard.ts +++ b/src/value/guard/guard.ts @@ -50,18 +50,18 @@ export type TypedArrayType = // -------------------------------------------------------------------------- /** Returns true if this value is an async iterator */ export function IsAsyncIterator(value: unknown): value is AsyncIterableIterator { - return IsObject(value) && Symbol.asyncIterator in value + return IsObject(value) && globalThis.Symbol.asyncIterator in value } /** Returns true if this value is an iterator */ export function IsIterator(value: unknown): value is IterableIterator { - return IsObject(value) && Symbol.iterator in value + return IsObject(value) && globalThis.Symbol.iterator in value } // -------------------------------------------------------------------------- // Object Instances // -------------------------------------------------------------------------- /** Returns true if this value is not an instance of a class */ export function IsStandardObject(value: unknown): value is ObjectType { - return IsObject(value) && (Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null) + return IsObject(value) && (globalThis.Object.getPrototypeOf(value) === Object.prototype || globalThis.Object.getPrototypeOf(value) === null) } /** Returns true if this value is an instance of a class */ export function IsInstanceObject(value: unknown): value is ObjectType { @@ -72,11 +72,11 @@ export function IsInstanceObject(value: unknown): value is ObjectType { // -------------------------------------------------------------------------- /** Returns true if this value is a Promise */ export function IsPromise(value: unknown): value is Promise { - return value instanceof Promise + return value instanceof globalThis.Promise } /** Returns true if this value is a Date */ export function IsDate(value: unknown): value is Date { - return value instanceof Date && Number.isFinite(value.getTime()) + return value instanceof Date && globalThis.Number.isFinite(value.getTime()) } /** Returns true if this value is an instance of Map */ export function IsMap(value: unknown): value is Map { @@ -92,7 +92,7 @@ export function IsRegExp(value: unknown): value is RegExp { } /** Returns true if this value is a typed array */ export function IsTypedArray(value: unknown): value is TypedArrayType { - return ArrayBuffer.isView(value) + return globalThis.ArrayBuffer.isView(value) } /** Returns true if the value is a Int8Array */ export function IsInt8Array(value: unknown): value is Int8Array { @@ -154,7 +154,7 @@ export function IsObject(value: unknown): value is ObjectType { } /** Returns true if this value is an array, but not a typed array */ export function IsArray(value: unknown): value is ArrayType { - return Array.isArray(value) && !ArrayBuffer.isView(value) + return globalThis.Array.isArray(value) && !globalThis.ArrayBuffer.isView(value) } /** Returns true if this value is an undefined */ export function IsUndefined(value: unknown): value is undefined { @@ -174,7 +174,7 @@ export function IsNumber(value: unknown): value is number { } /** Returns true if this value is an integer */ export function IsInteger(value: unknown): value is number { - return Number.isInteger(value) + return globalThis.Number.isInteger(value) } /** Returns true if this value is bigint */ export function IsBigInt(value: unknown): value is bigint {