From 7c4962691c77b86494c3060797a8a44363649a91 Mon Sep 17 00:00:00 2001 From: rowan Date: Sat, 24 May 2025 16:21:18 -0500 Subject: [PATCH] no options we rawdoggin it --- dist/test.js | 1023 +++++++++++++------------------------------------- src/de.ts | 4 +- src/index.ts | 4 +- 3 files changed, 266 insertions(+), 765 deletions(-) diff --git a/dist/test.js b/dist/test.js index cbea957..a6eae4a 100644 --- a/dist/test.js +++ b/dist/test.js @@ -5,12 +5,6 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; -var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name); -var __typeError = (msg) => { - throw TypeError(msg); -}; -var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; @@ -30,54 +24,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); -var __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol("metadata")] ?? null)]; -var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"]; -var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn; -var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) }); -var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]); -var __runInitializers = (array, flags, self, value) => { - for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value); - return value; -}; -var __decorateElement = (array, flags, name, decorators, target, extra) => { - var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16); - var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5]; - var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []); - var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() { - return __privateGet(this, extra); - }, set [name](x) { - return __privateSet(this, extra, x); - } }, name)); - k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name); - for (var i = decorators.length - 1; i >= 0; i--) { - ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers); - if (k) { - ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x }; - if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name]; - if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y; - } - it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1; - if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it); - else if (typeof it !== "object" || it === null) __typeError("Object expected"); - else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn); - } - return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target; -}; -var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); -var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg); -var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj); -var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)); -var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value); -var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method); - -// ../serde-ts/node_modules/@tsmetadata/polyfill/lib/index.js -var require_lib = __commonJS({ - "../serde-ts/node_modules/@tsmetadata/polyfill/lib/index.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - Symbol.metadata ??= Symbol("Symbol.metadata"); - } -}); // ../serde-ts/dist/utils.js var require_utils = __commonJS({ @@ -129,26 +75,19 @@ var require_impl = __commonJS({ super(`unhandled type: '${typeof value}' for serializer ${serializer.constructor.name}`); } }; - function serializeObject(serializer, obj, options) { + function serializeObject(serializer, obj) { for (const key in obj) { const value = obj[key]; - if (options === null || options === void 0 ? void 0 : options.shouldSerialize(key, value)) { - const name = (options === null || options === void 0 ? void 0 : options.getSerializationPropertyName(key)) || key; - serializer.serializeEntry(name, value); - } + serializer.serializeEntry(key, value); } return serializer.end(); } - function serializeClass(serializer, value, options) { + function serializeClass(serializer, value) { const name = value.constructor.name; const ser = serializer.serializeClass(name); - return serializeObject(ser, value, options); + return serializeObject(ser, value); } - var defaultGetter = (value) => { - var _a; - return (_a = value.constructor[Symbol.metadata]) === null || _a === void 0 ? void 0 : _a.serde; - }; - function serialize3(serializer, value, optionsGetter = defaultGetter) { + function serialize3(serializer, value) { switch (typeof value) { case "string": return serializer.serializeString(value); @@ -163,14 +102,13 @@ var require_impl = __commonJS({ case "undefined": return serializer.serializeNull(); case "object": - const options = optionsGetter(value); switch (true) { case value == null: return serializer.serializeNull(); case !(0, utils_1.isPlainObject)(value): - return serializeClass(serializer, value, options); + return serializeClass(serializer, value); default: - return serializeObject(serializer.serializeObject(), value, options); + return serializeObject(serializer.serializeObject(), value); } default: throw new UnhandledTypeError(serializer, value); @@ -179,593 +117,58 @@ var require_impl = __commonJS({ } }); -// ../serde-ts/dist/registry.js -var require_registry = __commonJS({ - "../serde-ts/dist/registry.js"(exports2) { +// ../serde-ts/dist/ser/interface.js +var require_interface = __commonJS({ + "../serde-ts/dist/ser/interface.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.registerDeserializer = exports2.registerSerializer = exports2.GlobalRegistry = exports2.Registry = void 0; - var Registry2 = class { - constructor() { - Object.defineProperty(this, "serializers", { - enumerable: true, - configurable: true, - writable: true, - value: /* @__PURE__ */ new Map() - }); - Object.defineProperty(this, "deserializers", { - enumerable: true, - configurable: true, - writable: true, - value: /* @__PURE__ */ new Map() - }); - } - registerSerializer(ctor, serialize3) { - this.serializers.set(ctor, serialize3); - } - registerDeserializer(ctor, deserialize3) { - this.deserializers.set(ctor, deserialize3); + exports2.Serializer = exports2.SerializeIterable = exports2.SerializeObject = void 0; + var SerializeObject2 = class { + serializeEntry(key, value) { + this.serializeKey(key); + this.serializeValue(value); } }; - exports2.Registry = Registry2; - exports2.GlobalRegistry = new Registry2(); - exports2.registerSerializer = exports2.GlobalRegistry.registerSerializer.bind(exports2.GlobalRegistry); - exports2.registerDeserializer = exports2.GlobalRegistry.registerDeserializer.bind(exports2.GlobalRegistry); + exports2.SerializeObject = SerializeObject2; + var SerializeIterable = class { + }; + exports2.SerializeIterable = SerializeIterable; + var Serializer = class { + serializeAny(_value) { + throw new Error("Method not implemented."); + } + serializeBoolean(_value) { + throw new Error("Method not implemented."); + } + serializeNumber(_value) { + throw new Error("Method not implemented."); + } + serializeBigInt(_value) { + throw new Error("Method not implemented."); + } + serializeString(_value) { + throw new Error("Method not implemented."); + } + serializeSymbol(_value) { + throw new Error("Method not implemented."); + } + serializeNull() { + throw new Error("Method not implemented."); + } + serializeObject() { + throw new Error("Method not implemented."); + } + serializeClass(_name) { + throw new Error("Method not implemented."); + } + }; + exports2.Serializer = Serializer; } }); -// ../serde-ts/dist/de/generic.js -var require_generic = __commonJS({ - "../serde-ts/dist/de/generic.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.ProxyDeserializer = exports2.ProxyVisitor = exports2.GenericSeed = void 0; - var utils_1 = require_utils(); - var GenericSeed2 = class _GenericSeed { - constructor(visitor = new ProxyVisitor2()) { - Object.defineProperty(this, "visitor", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - this.visitor = visitor; - } - static deserialize(deserializer, visitor = new ProxyVisitor2()) { - return deserializer.deserializeAny(visitor); - } - deserialize(deserializer) { - return _GenericSeed.deserialize(deserializer, this.visitor); - } - }; - exports2.GenericSeed = GenericSeed2; - var ProxyMapAccess = class _ProxyMapAccess { - constructor(access, options) { - Object.defineProperty(this, "access", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - Object.defineProperty(this, "options", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - if (access instanceof _ProxyMapAccess) { - return this; - } - this.access = access; - this.options = options; - } - wrapResponse(result) { - var _a, _b, _c, _d; - if (result.done) { - return result; - } else if ((0, utils_1.isString)(result.value)) { - const key = (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.getDeserializationPropertyName(result.value)) !== null && _b !== void 0 ? _b : result.value; - return utils_1.IterResult.Next(key); - } else if (Array.isArray(result.value)) { - const [alias, value] = result.value; - const key = (_d = (_c = this.options) === null || _c === void 0 ? void 0 : _c.getDeserializationPropertyName(alias)) !== null && _d !== void 0 ? _d : alias; - return utils_1.IterResult.Next([ - key, - value - ]); - } else { - return result; - } - } - nextKeySeed(seed) { - return this.wrapResponse(this.access.nextKeySeed(seed)); - } - nextValueSeed(seed) { - return this.access.nextValueSeed(seed); - } - nextEntrySeed(kseed, vseed) { - return this.wrapResponse(this.access.nextEntrySeed(kseed, vseed)); - } - nextKey() { - return this.wrapResponse(this.access.nextKey()); - } - nextValue() { - return this.access.nextValue(); - } - nextEntry() { - return this.wrapResponse(this.access.nextEntry()); - } - sizeHint() { - var _a, _b; - return (_b = (_a = this.access).sizeHint) === null || _b === void 0 ? void 0 : _b.call(_a); - } - *generate(next) { - let item; - while ((item = next()) && !item.done) { - yield item.value; - } - } - keys(seed) { - return this.generate(seed == null ? this.nextKey.bind(this) : this.nextKeySeed.bind(this, seed)); - } - values(seed) { - return this.generate(seed == null ? this.nextValue.bind(this) : this.nextValueSeed.bind(this, seed)); - } - entries(kseed, vseed) { - return this.generate(kseed == null || vseed == null ? this.nextEntry.bind(this) : this.nextEntrySeed.bind(this, kseed, vseed)); - } - [Symbol.iterator]() { - return this.entries(); - } - }; - var ProxyVisitor2 = class _ProxyVisitor { - constructor(overrides, options) { - Object.defineProperty(this, "overrides", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - Object.defineProperty(this, "options", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - if (overrides instanceof _ProxyVisitor) { - return overrides; - } - this.overrides = overrides; - this.options = options; - } - visitBoolean(value) { - var _a, _b, _c; - return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitBoolean) === null || _b === void 0 ? void 0 : _b.call(_a, value)) !== null && _c !== void 0 ? _c : value; - } - visitNumber(value) { - var _a, _b, _c; - return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitNumber) === null || _b === void 0 ? void 0 : _b.call(_a, value)) !== null && _c !== void 0 ? _c : value; - } - visitBigInt(value) { - var _a, _b, _c; - return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitBigInt) === null || _b === void 0 ? void 0 : _b.call(_a, value)) !== null && _c !== void 0 ? _c : value; - } - visitString(value) { - var _a, _b, _c; - return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitString) === null || _b === void 0 ? void 0 : _b.call(_a, value)) !== null && _c !== void 0 ? _c : value; - } - visitSymbol(value) { - var _a, _b, _c; - return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitSymbol) === null || _b === void 0 ? void 0 : _b.call(_a, value)) !== null && _c !== void 0 ? _c : value; - } - visitNull() { - var _a, _b, _c; - return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitNull) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : null; - } - visitObject(access) { - var _a, _b; - const proxy = new ProxyMapAccess(access, this.options); - if ((0, utils_1.isFunction)((_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitObject)) { - return (_b = this.overrides) === null || _b === void 0 ? void 0 : _b.visitObject(proxy); - } - const result = []; - let entry; - while ((entry = proxy.nextEntry()) && !entry.done) { - result.push(entry.value); - } - return Object.fromEntries(result); - } - visitIterable(access) { - var _a, _b; - if ((0, utils_1.isFunction)((_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitIterable)) { - return (_b = this.overrides) === null || _b === void 0 ? void 0 : _b.visitIterable(access); - } - const result = []; - let element; - while (element = access.nextElement()) { - result.push(element); - } - return result; - } - }; - exports2.ProxyVisitor = ProxyVisitor2; - var ProxyDeserializer = class { - constructor(deserializer, options) { - Object.defineProperty(this, "deserializer", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - Object.defineProperty(this, "options", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - this.deserializer = deserializer; - this.options = options; - } - deserializeAny(visitor) { - return this.deserializer.deserializeAny(new ProxyVisitor2(visitor, this.options)); - } - deserializeBoolean(visitor) { - return this.deserializer.deserializeBoolean(new ProxyVisitor2(visitor, this.options)); - } - deserializeNumber(visitor) { - return this.deserializer.deserializeNumber(new ProxyVisitor2(visitor, this.options)); - } - deserializeBigInt(visitor) { - return this.deserializer.deserializeBigInt(new ProxyVisitor2(visitor, this.options)); - } - deserializeString(visitor) { - return this.deserializer.deserializeString(new ProxyVisitor2(visitor, this.options)); - } - deserializeSymbol(visitor) { - return this.deserializer.deserializeSymbol(new ProxyVisitor2(visitor, this.options)); - } - deserializeNull(visitor) { - return this.deserializer.deserializeNull(new ProxyVisitor2(visitor, this.options)); - } - deserializeObject(visitor) { - return this.deserializer.deserializeObject(new ProxyVisitor2(visitor, this.options)); - } - deserializeIterable(visitor) { - return this.deserializer.deserializeIterable(new ProxyVisitor2(visitor, this.options)); - } - deserializeFunction(visitor) { - return this.deserializer.deserializeFunction(new ProxyVisitor2(visitor, this.options)); - } - }; - exports2.ProxyDeserializer = ProxyDeserializer; - } -}); - -// ../serde-ts/dist/de/impl.js -var require_impl2 = __commonJS({ - "../serde-ts/dist/de/impl.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.deserialize = deserialize3; - var registry_1 = require_registry(); - var generic_1 = require_generic(); - function deserialize3(deserializer, into, registry = registry_1.GlobalRegistry) { - var _a; - const de2 = registry.deserializers.get(into); - if (de2 == null) { - throw new ReferenceError(`No deserializer for ${into.name}`); - } else { - return de2(new generic_1.ProxyDeserializer(deserializer, (_a = into === null || into === void 0 ? void 0 : into[Symbol.metadata]) === null || _a === void 0 ? void 0 : _a.serde)); - } - } - } -}); - -// ../serde-ts/dist/case.js -var require_case = __commonJS({ - "../serde-ts/dist/case.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.CaseConvention = void 0; - exports2.convertCase = convertCase; - exports2.CaseConvention = Object.freeze({ - Lowercase: 0, - Uppercase: 1, - PascalCase: 2, - CamelCase: 3, - SnakeCase: 4, - ScreamingSnakeCase: 5, - KebabCase: 6, - ScreamingKebabCase: 7 - }); - var wordBoundaryRegex = /[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g; - function identifyWords(value) { - return value && value.match(wordBoundaryRegex); - } - var lower = (ch) => ch.toLowerCase(); - var upper = (ch) => ch.toUpperCase(); - var first = (xs) => xs && xs[0]; - var tail = (xs) => xs && xs.slice(1); - function upperFirst(xs) { - return upper(first(xs)) + tail(xs); - } - function toPascalCase(words) { - return words.map(lower).map(upperFirst).join(""); - } - var joinMap = (fn, delim, xs) => { - return xs.map(fn).join(delim); - }; - function convertCase(value, convention) { - const words = identifyWords(value); - if (!words || words.length <= 0) { - return ""; - } - switch (convention) { - case exports2.CaseConvention.Lowercase: - return words.join("").toLowerCase(); - case exports2.CaseConvention.Uppercase: - return words.join("").toUpperCase(); - case exports2.CaseConvention.PascalCase: - return toPascalCase(words); - case exports2.CaseConvention.CamelCase: - const pascal = toPascalCase(words); - return first(pascal).toLowerCase() + tail(pascal); - case exports2.CaseConvention.SnakeCase: - return joinMap(lower, "_", words); - case exports2.CaseConvention.ScreamingSnakeCase: - return joinMap(upper, "_", words); - case exports2.CaseConvention.KebabCase: - return joinMap(lower, "-", words); - case exports2.CaseConvention.ScreamingKebabCase: - return joinMap(upper, "-", words); - } - } - } -}); - -// ../serde-ts/dist/option.js -var require_option = __commonJS({ - "../serde-ts/dist/option.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.SerdeOptions = exports2.PropertyMap = exports2.Stage = void 0; - var case_1 = require_case(); - var utils_1 = require_utils(); - exports2.Stage = Object.freeze({ - Serialize: 0, - Deserialize: 1 - }); - var PropertyMap = class extends Map { - constructor(options, iterable) { - super(iterable); - Object.defineProperty(this, "options", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - Object.defineProperty(this, "aliases", { - enumerable: true, - configurable: true, - writable: true, - value: /* @__PURE__ */ new Map() - }); - this.options = options; - this.buildAliasMap(); - } - setAliasesFromOptions(key, options) { - this.aliases.set(key, key); - if (options.alias != null) { - this.addAlias(options.alias, key); - } - if ((0, utils_1.isString)(options.rename)) { - this.aliases.set(options.rename, key); - } else if ((0, utils_1.isNumber)(this.options.container.renameAll)) { - this.aliases.set(this.options.applyCaseConvention(exports2.Stage.Deserialize, key), key); - } - } - set(key, value) { - super.set(key, value); - this.setAliasesFromOptions(key, value); - return this; - } - addAlias(alias, key) { - if ((0, utils_1.isString)(alias)) { - this.aliases.set(alias, key); - } else if ((0, utils_1.isIterable)(alias)) { - for (const a of alias) { - this.addAlias(a, key); - } - } - } - getFieldFromAlias(alias) { - return this.aliases.get(alias); - } - buildAliasMap() { - for (const [key, value] of this.entries()) { - if (value.alias != null) { - this.addAlias(value.alias, key); - } - } - } - }; - exports2.PropertyMap = PropertyMap; - var SerdeOptions = class { - constructor(target, container = {}, properties = new PropertyMap(this)) { - Object.defineProperty(this, "target", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - Object.defineProperty(this, "container", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - Object.defineProperty(this, "properties", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - this.target = target; - this.container = container; - this.properties = properties; - } - getClassName(stage, defaultName) { - var _a, _b, _c, _d; - if (defaultName === void 0) { - defaultName = (_b = (_a = this.target) === null || _a === void 0 ? void 0 : _a.constructor) === null || _b === void 0 ? void 0 : _b.name; - } - if ((0, utils_1.isString)(this.container.rename)) { - return this.container.rename; - } else if (stage === exports2.Stage.Serialize && (0, utils_1.isString)((_c = this.container.rename) === null || _c === void 0 ? void 0 : _c.serialize)) { - return this.container.rename.serialize; - } else if (stage === exports2.Stage.Deserialize && (0, utils_1.isString)((_d = this.container.rename) === null || _d === void 0 ? void 0 : _d.deserialize)) { - return this.container.rename.serialize; - } else { - return defaultName; - } - } - getSerializedClassName(defaultName) { - var _a, _b; - if (defaultName === void 0) { - defaultName = (_b = (_a = this.target) === null || _a === void 0 ? void 0 : _a.constructor) === null || _b === void 0 ? void 0 : _b.name; - } - return this.getClassName(exports2.Stage.Serialize, defaultName); - } - getDeserializedClassName(defaultName) { - var _a, _b; - if (defaultName === void 0) { - defaultName = (_b = (_a = this.target) === null || _a === void 0 ? void 0 : _a.constructor) === null || _b === void 0 ? void 0 : _b.name; - } - return this.getClassName(exports2.Stage.Deserialize, defaultName); - } - getCaseConvention(stage) { - var _a, _b; - if ((0, utils_1.isNumber)(this.container.renameAll)) { - if (stage === exports2.Stage.Serialize) { - return this.container.renameAll; - } else { - return case_1.CaseConvention.CamelCase; - } - } else if (stage === exports2.Stage.Serialize && (0, utils_1.isNumber)((_a = this.container.renameAll) === null || _a === void 0 ? void 0 : _a.serialize)) { - return this.container.renameAll.serialize; - } else if (stage === exports2.Stage.Deserialize && (0, utils_1.isNumber)((_b = this.container.renameAll) === null || _b === void 0 ? void 0 : _b.deserialize)) { - return this.container.renameAll.deserialize; - } - } - applyCaseConvention(stage, property) { - const convention = this.getCaseConvention(stage); - return convention != null ? (0, case_1.convertCase)(property, convention) : property; - } - getPropertyRename(stage, property) { - var _a, _b; - const options = this.properties.get(property); - if (options == null) { - return; - } else if ((0, utils_1.isString)(options.rename)) { - return options.rename; - } else if (stage == exports2.Stage.Serialize && (0, utils_1.isString)((_a = options.rename) === null || _a === void 0 ? void 0 : _a.serialize)) { - return options.rename.serialize; - } else if (stage == exports2.Stage.Deserialize && (0, utils_1.isString)((_b = options.rename) === null || _b === void 0 ? void 0 : _b.deserialize)) { - return options.rename.deserialize; - } - } - getSerializationPropertyName(property) { - return this.getPropertyRename(exports2.Stage.Serialize, property) || this.applyCaseConvention(exports2.Stage.Serialize, property); - } - getNameFromAlias(alias) { - return this.properties.getFieldFromAlias(alias); - } - getDeserializationPropertyName(property) { - return this.getNameFromAlias(property) || this.applyCaseConvention(exports2.Stage.Deserialize, property); - } - shouldSkip(stage, property, value) { - var _a, _b, _c, _d; - const options = this.properties.get(property); - if (options == null) { - return false; - } else if (typeof options.skip === "boolean") { - return options.skip; - } else if ((0, utils_1.isFunction)(options.skip)) { - return options.skip(value); - } else if (stage === exports2.Stage.Serialize && typeof ((_a = options.skip) === null || _a === void 0 ? void 0 : _a.serialize) === "boolean") { - return options.skip.serialize; - } else if (stage === exports2.Stage.Serialize && (0, utils_1.isFunction)((_b = options.skip) === null || _b === void 0 ? void 0 : _b.serialize)) { - return options.skip.serialize(value); - } else if (stage === exports2.Stage.Deserialize && typeof ((_c = options.skip) === null || _c === void 0 ? void 0 : _c.deserialize) === "boolean") { - return options.skip.deserialize; - } else if (stage === exports2.Stage.Deserialize && (0, utils_1.isFunction)((_d = options.skip) === null || _d === void 0 ? void 0 : _d.deserialize)) { - return options.skip.deserialize(value); - } else { - return false; - } - } - shouldSerialize(property, value) { - return !this.shouldSkip(exports2.Stage.Serialize, property, value); - } - shouldDeserialize(property, value) { - return !this.shouldSkip(exports2.Stage.Deserialize, property, value); - } - defaultFor(property) { - const options = this.properties.get(property); - if (options != null && (0, utils_1.isFunction)(options.default)) { - return options.default(); - } else if ((0, utils_1.isFunction)(this.container.default)) { - return this.container.default(); - } - } - }; - exports2.SerdeOptions = SerdeOptions; - } -}); - -// ../serde-ts/dist/decorator.js -var require_decorator = __commonJS({ - "../serde-ts/dist/decorator.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.serde = serde2; - var option_1 = require_option(); - var ContextKind = Object.freeze({ - Class: "class", - Method: "method", - Getter: "getter", - Setter: "setter", - Field: "field", - Accessor: "accessor" - }); - function decorateClass(target, context, options) { - const serde3 = context.metadata.serde; - context.metadata.serde = new option_1.SerdeOptions(target, options, serde3 === null || serde3 === void 0 ? void 0 : serde3.properties); - } - function decorateField(context, options) { - const serde3 = context.metadata.serde || new option_1.SerdeOptions(void 0); - serde3.properties.set(context.name, options); - context.metadata.serde = serde3; - } - function serde2(options) { - return function(target, context) { - switch (context.kind) { - case ContextKind.Class: - decorateClass(target, context, options); - break; - case ContextKind.Field: - decorateField(context, options); - default: - break; - } - }; - } - } -}); - -// ../serde-ts/dist/index.js -var require_dist = __commonJS({ - "../serde-ts/dist/index.js"(exports2) { +// ../serde-ts/dist/ser/index.js +var require_ser = __commonJS({ + "../serde-ts/dist/ser/index.js"(exports2) { "use strict"; var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === void 0) k2 = k; @@ -780,52 +183,22 @@ var require_dist = __commonJS({ if (k2 === void 0) k2 = k; o[k2] = m[k]; }); - var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); - } : function(o, v) { - o["default"] = v; - }); - var __importStar = exports2 && exports2.__importStar || /* @__PURE__ */ function() { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function(o2) { - var ar = []; - for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - } - __setModuleDefault(result, mod); - return result; - }; - }(); var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p); }; Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.de = exports2.ser = void 0; - require_lib(); - exports2.ser = __importStar(require_impl()); - exports2.de = __importStar(require_impl2()); - __exportStar(require_decorator(), exports2); - __exportStar(require_option(), exports2); - __exportStar(require_case(), exports2); - __exportStar(require_registry(), exports2); - __exportStar(require_utils(), exports2); + __exportStar(require_impl(), exports2); + __exportStar(require_interface(), exports2); } }); // ../serde-ts/dist/de/interface.js -var require_interface = __commonJS({ +var require_interface2 = __commonJS({ "../serde-ts/dist/de/interface.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.IterableAccess = exports2.MapAccess = void 0; + exports2.isVisitor = isVisitor; var utils_1 = require_utils(); var MapAccess2 = class { nextEntrySeed(kseed, vseed) { @@ -850,7 +223,7 @@ var require_interface = __commonJS({ } *generate(next) { let item; - while (item = next()) { + while ((item = next()) && !item.done) { yield item.value; } } @@ -869,8 +242,26 @@ var require_interface = __commonJS({ }; exports2.MapAccess = MapAccess2; var IterableAccess = class { + *[Symbol.iterator]() { + return { + next: this.nextElement + }; + } }; exports2.IterableAccess = IterableAccess; + var VisitorMethods = Object.freeze([ + "visitBoolean", + "visitNumber", + "visitBigInt", + "visitString", + "visitSymbol", + "visitNull", + "visitObject", + "visitIterable" + ]); + function isVisitor(visitor) { + return VisitorMethods.every((method) => method in visitor); + } } }); @@ -881,7 +272,7 @@ var require_forward = __commonJS({ Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Forward = exports2.ForwardIterableAccess = exports2.ForwardMapAccess = void 0; var utils_1 = require_utils(); - var interface_1 = require_interface(); + var interface_1 = require_interface2(); var ForwardMapAccess = class _ForwardMapAccess extends interface_1.MapAccess { constructor(keys, values) { super(); @@ -1011,6 +402,152 @@ var require_forward = __commonJS({ } }); +// ../serde-ts/dist/de/generic.js +var require_generic = __commonJS({ + "../serde-ts/dist/de/generic.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Visitor = exports2.GenericSeed = void 0; + var utils_1 = require_utils(); + var interface_1 = require_interface2(); + var GenericSeed2 = class _GenericSeed { + constructor(visitor = new Visitor2()) { + Object.defineProperty(this, "visitor", { + enumerable: true, + configurable: true, + writable: true, + value: void 0 + }); + this.visitor = visitor; + } + static deserialize(deserializer, visitor = new Visitor2()) { + return deserializer.deserializeAny(visitor); + } + deserialize(deserializer) { + return _GenericSeed.deserialize(deserializer, this.visitor); + } + }; + exports2.GenericSeed = GenericSeed2; + var Visitor2 = class _Visitor { + constructor(overrides) { + Object.defineProperty(this, "overrides", { + enumerable: true, + configurable: true, + writable: true, + value: void 0 + }); + this.overrides = overrides; + } + static from(visitor) { + if (visitor instanceof _Visitor || (0, interface_1.isVisitor)(visitor)) { + return visitor; + } + return new this(visitor); + } + visitBoolean(value) { + var _a, _b, _c; + return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitBoolean) === null || _b === void 0 ? void 0 : _b.call(_a, value)) !== null && _c !== void 0 ? _c : value; + } + visitNumber(value) { + var _a, _b, _c; + return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitNumber) === null || _b === void 0 ? void 0 : _b.call(_a, value)) !== null && _c !== void 0 ? _c : value; + } + visitBigInt(value) { + var _a, _b, _c; + return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitBigInt) === null || _b === void 0 ? void 0 : _b.call(_a, value)) !== null && _c !== void 0 ? _c : value; + } + visitString(value) { + var _a, _b, _c; + return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitString) === null || _b === void 0 ? void 0 : _b.call(_a, value)) !== null && _c !== void 0 ? _c : value; + } + visitSymbol(value) { + var _a, _b, _c; + return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitSymbol) === null || _b === void 0 ? void 0 : _b.call(_a, value)) !== null && _c !== void 0 ? _c : value; + } + visitNull() { + var _a, _b, _c; + return (_c = (_b = (_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitNull) === null || _b === void 0 ? void 0 : _b.call(_a)) !== null && _c !== void 0 ? _c : null; + } + visitObject(access) { + var _a, _b; + if ((0, utils_1.isFunction)((_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitObject)) { + return (_b = this.overrides) === null || _b === void 0 ? void 0 : _b.visitObject(access); + } + const result = []; + for (const entry of access) { + result.push(entry); + } + return Object.fromEntries(result); + } + visitIterable(access) { + var _a, _b; + if ((0, utils_1.isFunction)((_a = this.overrides) === null || _a === void 0 ? void 0 : _a.visitIterable)) { + return (_b = this.overrides) === null || _b === void 0 ? void 0 : _b.visitIterable(access); + } + const result = []; + for (const element of access) { + result.push(element); + } + return result; + } + }; + exports2.Visitor = Visitor2; + } +}); + +// ../serde-ts/dist/registry.js +var require_registry = __commonJS({ + "../serde-ts/dist/registry.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.registerDeserializer = exports2.registerSerializer = exports2.GlobalRegistry = exports2.Registry = void 0; + var Registry2 = class { + constructor() { + Object.defineProperty(this, "serializers", { + enumerable: true, + configurable: true, + writable: true, + value: /* @__PURE__ */ new Map() + }); + Object.defineProperty(this, "deserializers", { + enumerable: true, + configurable: true, + writable: true, + value: /* @__PURE__ */ new Map() + }); + } + registerSerializer(ctor, serialize3) { + this.serializers.set(ctor, serialize3); + } + registerDeserializer(ctor, deserialize3) { + this.deserializers.set(ctor, deserialize3); + } + }; + exports2.Registry = Registry2; + exports2.GlobalRegistry = new Registry2(); + exports2.registerSerializer = exports2.GlobalRegistry.registerSerializer.bind(exports2.GlobalRegistry); + exports2.registerDeserializer = exports2.GlobalRegistry.registerDeserializer.bind(exports2.GlobalRegistry); + } +}); + +// ../serde-ts/dist/de/impl.js +var require_impl2 = __commonJS({ + "../serde-ts/dist/de/impl.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.deserialize = deserialize3; + var registry_1 = require_registry(); + function deserialize3(deserializer, into, registry = registry_1.GlobalRegistry) { + const de2 = registry.deserializers.get(into); + if (de2 == null) { + throw new ReferenceError(`No deserializer for ${into.name}`); + } else { + return de2(deserializer); + } + } + } +}); + // ../serde-ts/dist/de/index.js var require_de = __commonJS({ "../serde-ts/dist/de/index.js"(exports2) { @@ -1035,62 +572,13 @@ var require_de = __commonJS({ __exportStar(require_forward(), exports2); __exportStar(require_generic(), exports2); __exportStar(require_impl2(), exports2); - __exportStar(require_interface(), exports2); + __exportStar(require_interface2(), exports2); } }); -// ../serde-ts/dist/ser/interface.js -var require_interface2 = __commonJS({ - "../serde-ts/dist/ser/interface.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.Serializer = exports2.SerializeIterable = exports2.SerializeObject = void 0; - var SerializeObject2 = class { - serializeEntry(key, value) { - this.serializeKey(key); - this.serializeValue(value); - } - }; - exports2.SerializeObject = SerializeObject2; - var SerializeIterable = class { - }; - exports2.SerializeIterable = SerializeIterable; - var Serializer = class { - serializeAny(_value) { - throw new Error("Method not implemented."); - } - serializeBoolean(_value) { - throw new Error("Method not implemented."); - } - serializeNumber(_value) { - throw new Error("Method not implemented."); - } - serializeBigInt(_value) { - throw new Error("Method not implemented."); - } - serializeString(_value) { - throw new Error("Method not implemented."); - } - serializeSymbol(_value) { - throw new Error("Method not implemented."); - } - serializeNull() { - throw new Error("Method not implemented."); - } - serializeObject() { - throw new Error("Method not implemented."); - } - serializeClass(_name) { - throw new Error("Method not implemented."); - } - }; - exports2.Serializer = Serializer; - } -}); - -// ../serde-ts/dist/ser/index.js -var require_ser = __commonJS({ - "../serde-ts/dist/ser/index.js"(exports2) { +// ../serde-ts/dist/index.js +var require_dist = __commonJS({ + "../serde-ts/dist/index.js"(exports2) { "use strict"; var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { if (k2 === void 0) k2 = k; @@ -1105,12 +593,39 @@ var require_ser = __commonJS({ if (k2 === void 0) k2 = k; o[k2] = m[k]; }); + var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); + } : function(o, v) { + o["default"] = v; + }); + var __importStar = exports2 && exports2.__importStar || /* @__PURE__ */ function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + }(); var __exportStar = exports2 && exports2.__exportStar || function(m, exports3) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding(exports3, m, p); }; Object.defineProperty(exports2, "__esModule", { value: true }); - __exportStar(require_impl(), exports2); - __exportStar(require_interface2(), exports2); + exports2.de = exports2.ser = void 0; + exports2.ser = __importStar(require_ser()); + exports2.de = __importStar(require_de()); + __exportStar(require_registry(), exports2); + __exportStar(require_utils(), exports2); } }); @@ -1247,7 +762,7 @@ var CommaSeparated = class extends import_de.MapAccess { de; defaultSeed; first = true; - constructor(deserializer, visitor = new import_de.ProxyVisitor()) { + constructor(deserializer, visitor = new import_de.Visitor()) { super(); this.de = deserializer; this.defaultSeed = new import_de.GenericSeed(visitor); @@ -1534,39 +1049,26 @@ function fromString(value, into) { } // test.ts -var _value_dec, _init; -_value_dec = [(0, import_serde2.serde)({ rename: "a_string" })]; var InnerStruct = class { + value; constructor(v) { - __publicField(this, "value", __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this); this.value = v; } }; -_init = __decoratorStart(null); -__decorateElement(_init, 5, "value", _value_dec, InnerStruct); -__decoratorMetadata(_init, InnerStruct); -var _aNumber_dec, _TestStruct_decorators, _init2; -_TestStruct_decorators = [(0, import_serde2.serde)({ renameAll: { serialize: import_serde2.CaseConvention.SnakeCase, deserialize: import_serde2.CaseConvention.CamelCase } })], _aNumber_dec = [(0, import_serde2.serde)({ rename: "a_number", skip: (v) => v == 79 })]; var TestStruct = class { + aNumber; + innerStruct; constructor(str2, n) { - __publicField(this, "aNumber", __runInitializers(_init2, 8, this)), __runInitializers(_init2, 11, this); - __publicField(this, "innerStruct"); this.aNumber = n; this.innerStruct = new InnerStruct(str2); } }; -_init2 = __decoratorStart(null); -__decorateElement(_init2, 5, "aNumber", _aNumber_dec, TestStruct); -TestStruct = __decorateElement(_init2, 0, "TestStruct", _TestStruct_decorators, TestStruct); -__runInitializers(_init2, 1, TestStruct); var test = new TestStruct("hi :3", 69); (0, import_serde2.registerSerializer)(InnerStruct, (ser, value) => ser.serializeAny?.(value)); (0, import_serde2.registerDeserializer)(InnerStruct, (de2) => de2.deserializeObject({ visitObject(access) { let value; - let entry; - while ((entry = access.nextEntry()) && !entry.done) { - const [key, val] = entry.value; + for (const [key, val] of access) { if (key === "value") { value = val; break; @@ -1578,8 +1080,7 @@ var test = new TestStruct("hi :3", 69); (0, import_serde2.registerDeserializer)(TestStruct, (de2) => de2.deserializeObject({ visitObject(access) { let str2, num; - for (const entry of access) { - const [key, value] = entry; + for (const [key, value] of access) { switch (key) { case "aNumber": num = value; @@ -1593,7 +1094,7 @@ var test = new TestStruct("hi :3", 69); return new TestStruct(str2, num); } })); -(0, import_serde2.registerSerializer)(TestStruct, (ser, value) => ser.serializeAny(value)); +(0, import_serde2.registerSerializer)(TestStruct, (ser, value) => ser.serializeAny?.(value)); var str = toString(test); console.log(str); var de = fromString(str, TestStruct); diff --git a/src/de.ts b/src/de.ts index c66e695..94b0b2f 100644 --- a/src/de.ts +++ b/src/de.ts @@ -1,5 +1,5 @@ import { GlobalRegistry, IterResult, Registry } from 'serde' -import { IIterableAccess, MapAccess, IVisitor, IDeserializer, Deserialize, ProxyVisitor, GenericSeed } from 'serde/de' +import { IIterableAccess, MapAccess, IVisitor, IDeserializer, Deserialize, GenericSeed, Visitor } from 'serde/de' import { unexpected } from './err' type Byte = number @@ -49,7 +49,7 @@ export class CommaSeparated extends MapAccess implements IIterableAccess { private readonly defaultSeed: GenericSeed private first: boolean = true - constructor(deserializer: JSONDeserializer, visitor: IVisitor = new ProxyVisitor()) { + constructor(deserializer: JSONDeserializer, visitor: IVisitor = new Visitor()) { super() this.de = deserializer this.defaultSeed = new GenericSeed(visitor) diff --git a/src/index.ts b/src/index.ts index 23231dc..8f7e972 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ import { JSONSerializer } from './ser' -import { deserialize, Deserialize } from 'serde/de' +import { deserialize } from 'serde/de' import { JSONDeserializer } from './de' import { serialize } from 'serde/ser' @@ -9,7 +9,7 @@ export function toString(value: any): string { return serializer.output } -export function fromString>(value: string, into: any): T { +export function fromString(value: string, into: any): T { const deserializer = JSONDeserializer.fromString(value) return deserialize(deserializer, into) }