From c4868f40b518d85ff6c816955d4d2db8686e5c4c Mon Sep 17 00:00:00 2001 From: rowan Date: Tue, 27 May 2025 00:27:06 -0500 Subject: [PATCH] add type declarations --- dist/index.js | 48 ++++++++++++++++++++++++------------------------ package.json | 1 + src/index.ts | 4 ++-- tsconfig.json | 4 ++-- types/de.d.ts | 34 ++++++++++++++++++++++++++++++++++ types/err.d.ts | 1 + types/index.d.ts | 2 ++ types/ser.d.ts | 36 ++++++++++++++++++++++++++++++++++++ 8 files changed, 102 insertions(+), 28 deletions(-) create mode 100644 types/de.d.ts create mode 100644 types/err.d.ts create mode 100644 types/index.d.ts create mode 100644 types/ser.d.ts diff --git a/dist/index.js b/dist/index.js index 972a198..91ceacc 100644 --- a/dist/index.js +++ b/dist/index.js @@ -26,9 +26,9 @@ mod )); - // ../serde-ts/dist/ser/interface.js + // node_modules/serde/dist/ser/interface.js var require_interface = __commonJS({ - "../serde-ts/dist/ser/interface.js"(exports) { + "node_modules/serde/dist/ser/interface.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Serializer = exports.SerializeIterable = exports.SerializeObject = void 0; @@ -78,9 +78,9 @@ } }); - // ../serde-ts/dist/ser/identity.js + // node_modules/serde/dist/ser/identity.js var require_identity = __commonJS({ - "../serde-ts/dist/ser/identity.js"(exports) { + "node_modules/serde/dist/ser/identity.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IdentitySerializer = void 0; @@ -164,9 +164,9 @@ } }); - // ../serde-ts/dist/utils.js + // node_modules/serde/dist/utils.js var require_utils = __commonJS({ - "../serde-ts/dist/utils.js"(exports) { + "node_modules/serde/dist/utils.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PrimitivePrototype = exports.IterResult = void 0; @@ -233,9 +233,9 @@ } }); - // ../serde-ts/dist/registry.js + // node_modules/serde/dist/registry.js var require_registry = __commonJS({ - "../serde-ts/dist/registry.js"(exports) { + "node_modules/serde/dist/registry.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.registerDeserialize = exports.registerSerialize = exports.GlobalRegistry = exports.Registry = void 0; @@ -341,9 +341,9 @@ } }); - // ../serde-ts/dist/ser/impl.js + // node_modules/serde/dist/ser/impl.js var require_impl = __commonJS({ - "../serde-ts/dist/ser/impl.js"(exports) { + "node_modules/serde/dist/ser/impl.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.serialize = serialize3; @@ -408,9 +408,9 @@ } }); - // ../serde-ts/dist/ser/index.js + // node_modules/serde/dist/ser/index.js var require_ser = __commonJS({ - "../serde-ts/dist/ser/index.js"(exports) { + "node_modules/serde/dist/ser/index.js"(exports) { "use strict"; var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === void 0) k2 = k; @@ -435,9 +435,9 @@ } }); - // ../serde-ts/dist/de/impl.js + // node_modules/serde/dist/de/impl.js var require_impl2 = __commonJS({ - "../serde-ts/dist/de/impl.js"(exports) { + "node_modules/serde/dist/de/impl.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deserialize = deserialize2; @@ -453,9 +453,9 @@ } }); - // ../serde-ts/dist/de/interface.js + // node_modules/serde/dist/de/interface.js var require_interface2 = __commonJS({ - "../serde-ts/dist/de/interface.js"(exports) { + "node_modules/serde/dist/de/interface.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.IterableAccess = exports.MapAccess = void 0; @@ -516,9 +516,9 @@ } }); - // ../serde-ts/dist/de/forward.js + // node_modules/serde/dist/de/forward.js var require_forward = __commonJS({ - "../serde-ts/dist/de/forward.js"(exports) { + "node_modules/serde/dist/de/forward.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Forwarder = void 0; @@ -667,9 +667,9 @@ } }); - // ../serde-ts/dist/de/generic.js + // node_modules/serde/dist/de/generic.js var require_generic = __commonJS({ - "../serde-ts/dist/de/generic.js"(exports) { + "node_modules/serde/dist/de/generic.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Visitor = void 0; @@ -742,9 +742,9 @@ } }); - // ../serde-ts/dist/de/index.js + // node_modules/serde/dist/de/index.js var require_de = __commonJS({ - "../serde-ts/dist/de/index.js"(exports) { + "node_modules/serde/dist/de/index.js"(exports) { "use strict"; var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === void 0) k2 = k; @@ -770,9 +770,9 @@ } }); - // ../serde-ts/dist/index.js + // node_modules/serde/dist/index.js var require_dist = __commonJS({ - "../serde-ts/dist/index.js"(exports) { + "node_modules/serde/dist/index.js"(exports) { "use strict"; var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === void 0) k2 = k; diff --git a/package.json b/package.json index 0ac56ab..50f81f8 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "1.0.0", "description": "", "main": "dist/index.js", + "types": "./types/index.d.ts", "type": "module", "scripts": { "build": "esbuild src/index.ts --bundle --outfile=dist/index.js", diff --git a/src/index.ts b/src/index.ts index ca77546..fb13c98 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,6 @@ -import { JSONSerializer } from './ser' +import { JSONSerializer } from './ser.js' import { deserialize } from 'serde/de' -import { JSONDeserializer } from './de' +import { JSONDeserializer } from './de.js' import { serialize } from 'serde/ser' export function toString(value: any): string { diff --git a/tsconfig.json b/tsconfig.json index d77b881..194f95b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -52,7 +52,7 @@ // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ // "declarationMap": true, /* Create sourcemaps for d.ts files. */ // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ @@ -72,7 +72,7 @@ // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + "declarationDir": "./types/", /* Specify the output directory for generated declaration files. */ /* Interop Constraints */ // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ diff --git a/types/de.d.ts b/types/de.d.ts new file mode 100644 index 0000000..1038d5c --- /dev/null +++ b/types/de.d.ts @@ -0,0 +1,34 @@ +import { Registry } from 'serde'; +import { Deserialize, IDeserializer, IterableAccess, IVisitor, MapAccess } from 'serde/de'; +type Entry = [any, any]; +export declare class JSONMapAccess extends MapAccess { + private readonly _entries; + private index; + constructor(entries: Entry[]); + static fromObject(value: object): JSONMapAccess; + nextKey(seed?: Deserialize): IteratorResult; + nextValue(seed?: Deserialize): IteratorResult; +} +export declare class JSONIterableAccess extends IterableAccess { + private readonly iterator; + constructor(iterator: Iterator); + static fromIterable(iterable: Iterable): JSONIterableAccess; + nextElement>(seed?: D): IteratorResult; +} +export declare class JSONDeserializer implements IDeserializer { + private readonly input; + private readonly parser; + constructor(input: string, registry?: Registry); + static fromString(value: string, registry?: Registry): JSONDeserializer; + deserializeAny(_visitor: IVisitor): T; + deserializeBoolean(visitor: IVisitor): T; + deserializeNumber(visitor: IVisitor): T; + deserializeBigInt(visitor: IVisitor): T; + deserializeString(visitor: IVisitor): T; + deserializeSymbol(visitor: IVisitor): T; + deserializeNull(visitor: IVisitor): T; + deserializeObject(visitor: IVisitor): T; + deserializeIterable(visitor: IVisitor): T; + deserializeFunction(_visitor: IVisitor): T; +} +export {}; diff --git a/types/err.d.ts b/types/err.d.ts new file mode 100644 index 0000000..939e7c9 --- /dev/null +++ b/types/err.d.ts @@ -0,0 +1 @@ +export declare const unexpected: (expected: string, actual: string, position: number) => SyntaxError; diff --git a/types/index.d.ts b/types/index.d.ts new file mode 100644 index 0000000..2bcacd0 --- /dev/null +++ b/types/index.d.ts @@ -0,0 +1,2 @@ +export declare function toString(value: any): string; +export declare function fromString(value: string, into: any): T; diff --git a/types/ser.d.ts b/types/ser.d.ts new file mode 100644 index 0000000..64cb3f4 --- /dev/null +++ b/types/ser.d.ts @@ -0,0 +1,36 @@ +import { Registry } from 'serde'; +import { SerializeIterable, SerializeObject, Serializer } from 'serde/ser'; +interface Stringify { + (value: any): string; +} +declare class JSONSerializeObject extends SerializeObject { + private readonly stringify; + private value; + private currentKey?; + constructor(stringify: Stringify); + serializeKey(key: string): void; + serializeValue(value: U): void; + end(): string; +} +declare class JSONSerializeIterable extends SerializeIterable { + private readonly stringify; + private elements; + constructor(stringify: Stringify); + serializeElement(value: U): void; + end(): string; +} +export declare class JSONSerializer extends Serializer { + private stringify; + constructor(registry?: Registry); + serializeAny(value: any): string; + serializeBoolean(value: any): string; + serializeNumber(value: any): string; + serializeBigInt(value: any): string; + serializeString(value: any): string; + serializeSymbol(value: any): string; + serializeNull(): string; + serializeIterable(_len: number): JSONSerializeIterable; + serializeObject(_len: number): JSONSerializeObject; + serializeClass(_name: string, _len: number): JSONSerializeObject; +} +export {};