diff --git a/dist/test.js b/dist/test.js index 312d8da..7578372 100644 --- a/dist/test.js +++ b/dist/test.js @@ -25,57 +25,60 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge mod )); +// ../serde-ts/dist/utils.js +var require_utils = __commonJS({ + "../serde-ts/dist/utils.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.IterResult = void 0; + exports2.staticImplements = staticImplements; + exports2.isPlainObject = isPlainObject; + exports2.isFunction = isFunction; + exports2.isIterable = isIterable; + exports2.isString = isString; + exports2.isNumber = isNumber; + function staticImplements() { + return (constructor) => { + constructor; + }; + } + function isPlainObject(value) { + return Object.getPrototypeOf(value) === Object.prototype; + } + function isFunction(value) { + return value != null && typeof value === "function"; + } + function isIterable(value) { + return isFunction(value[Symbol.iterator]); + } + function isString(value) { + return typeof value === "string"; + } + function isNumber(value) { + return !isNaN(value); + } + var IterResult2 = class { + static Next(value) { + return { done: false, value }; + } + static Done() { + return { done: true, value: void 0 }; + } + }; + exports2.IterResult = IterResult2; + } +}); + // ../serde-ts/dist/ser/impl.js var require_impl = __commonJS({ "../serde-ts/dist/ser/impl.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.Serializer = exports2.SerializeIterable = exports2.SerializeObject = void 0; exports2.serialize = serialize3; - 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; - var isPlainObject = (value) => (value === null || value === void 0 ? void 0 : value.constructor) === Object; + var utils_1 = require_utils(); var UnhandledTypeError = class extends TypeError { constructor(serializer, value) { - super(`unhandled type: "${typeof value}" for serializer ${serializer.constructor.name}`); + super(`unhandled type: '${typeof value}' for serializer ${serializer.constructor.name}`); } }; function serializeObject(serializer, obj) { @@ -107,7 +110,7 @@ var require_impl = __commonJS({ switch (true) { case value == null: return serializer.serializeNull(); - case !isPlainObject(value): + case !(0, utils_1.isPlainObject)(value): return serializeClass(serializer, value); default: return serializeObject(serializer.serializeObject(), value); @@ -159,225 +162,8 @@ var require_impl2 = __commonJS({ "../serde-ts/dist/de/impl.js"(exports2) { "use strict"; Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.Forward = exports2.ForwardIterableAccess = exports2.ForwardMapAccess = exports2.GenericVisitor = exports2.GenericSeed = exports2.IterableAccess = exports2.MapAccess = exports2.IterResult = void 0; exports2.deserialize = deserialize3; var registry_1 = require_registry(); - var IterResult2 = class { - static Next(value) { - return { done: false, value }; - } - static Done() { - return { done: true, value: void 0 }; - } - }; - exports2.IterResult = IterResult2; - var MapAccess2 = class { - nextEntrySeed(kseed, vseed) { - const key = this.nextKeySeed(kseed); - if (!key.done) { - const value = this.nextValueSeed(vseed); - if (!value.done) { - return IterResult2.Next([key.value, value.value]); - } - } - return IterResult2.Done(); - } - nextEntry() { - const key = this.nextKey(); - if (!key.done) { - const value = this.nextValue(); - if (!value.done) { - return IterResult2.Next([key.value, value.value]); - } - } - return IterResult2.Done(); - } - }; - exports2.MapAccess = MapAccess2; - var IterableAccess = class { - }; - exports2.IterableAccess = IterableAccess; - var GenericSeed2 = class _GenericSeed { - constructor(visitor = new GenericVisitor3()) { - Object.defineProperty(this, "visitor", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - this.visitor = visitor; - } - static deserialize(deserializer, visitor = new GenericVisitor3()) { - return deserializer.deserializeAny(visitor); - } - deserialize(deserializer) { - return _GenericSeed.deserialize(deserializer, this.visitor); - } - }; - exports2.GenericSeed = GenericSeed2; - var GenericVisitor3 = class { - visitBoolean(value) { - return value; - } - visitNumber(value) { - return value; - } - visitBigInt(value) { - return value; - } - visitString(value) { - return value; - } - visitSymbol(value) { - return value; - } - visitNull() { - return null; - } - visitObject(access) { - const result = []; - let entry; - while ((entry = access.nextEntry()) && !entry.done) { - result.push(entry.value); - } - return Object.fromEntries(result); - } - visitIterable(access) { - const result = []; - let element; - while (element = access.nextElement()) { - result.push(element); - } - return result; - } - }; - exports2.GenericVisitor = GenericVisitor3; - var ForwardMapAccess = class _ForwardMapAccess extends MapAccess2 { - constructor(keys, values) { - super(); - Object.defineProperty(this, "keys", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - Object.defineProperty(this, "values", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - Object.defineProperty(this, "kindex", { - enumerable: true, - configurable: true, - writable: true, - value: 0 - }); - Object.defineProperty(this, "vindex", { - enumerable: true, - configurable: true, - writable: true, - value: 0 - }); - this.keys = keys; - this.values = values; - } - static fromObject(obj) { - return new _ForwardMapAccess(Object.keys(obj), Object.values(obj)); - } - nextKeySeed(_seed) { - return this.nextKey(); - } - nextValueSeed(_seed) { - return this.nextValue(); - } - nextKey() { - if (this.kindex < this.keys.length) { - return IterResult2.Next(this.keys[this.kindex++]); - } else { - return IterResult2.Done(); - } - } - nextValue() { - if (this.vindex < this.values.length) { - return IterResult2.Next(this.values[this.vindex++]); - } else { - return IterResult2.Done(); - } - } - }; - exports2.ForwardMapAccess = ForwardMapAccess; - var ForwardIterableAccess = class extends IterableAccess { - constructor(items) { - super(); - Object.defineProperty(this, "items", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - Object.defineProperty(this, "index", { - enumerable: true, - configurable: true, - writable: true, - value: 0 - }); - this.items = items; - } - nextElement() { - if (this.index < this.items.length) { - return IterResult2.Next(this.items[this.index++]); - } else { - return IterResult2.Done(); - } - } - }; - exports2.ForwardIterableAccess = ForwardIterableAccess; - var Forward2 = class { - constructor(value) { - Object.defineProperty(this, "value", { - enumerable: true, - configurable: true, - writable: true, - value: void 0 - }); - this.value = value; - } - static with(value) { - return new this(value); - } - deserializeAny(_visitor) { - throw new Error("Can't forward to deserializeAny"); - } - deserializeBoolean(visitor) { - return visitor.visitBoolean(this.value); - } - deserializeNumber(visitor) { - return visitor.visitNumber(this.value); - } - deserializeBigInt(visitor) { - return visitor.visitBigInt(this.value); - } - deserializeString(visitor) { - return visitor.visitString(this.value); - } - deserializeSymbol(visitor) { - return visitor.visitSymbol(this.value); - } - deserializeNull(visitor) { - return visitor.visitNull(); - } - deserializeObject(visitor) { - return visitor.visitObject(ForwardMapAccess.fromObject(this.value)); - } - deserializeIterable(visitor) { - return visitor.visitIterable(new ForwardIterableAccess(this.value)); - } - deserializeFunction(_visitor) { - throw new Error("Method not implemented."); - } - }; - exports2.Forward = Forward2; function deserialize3(deserializer, into, registry = registry_1.GlobalRegistry) { const de2 = registry.deserializers.get(into); if (de2 == null) { @@ -451,40 +237,6 @@ var require_case = __commonJS({ } }); -// ../serde-ts/dist/utils.js -var require_utils = __commonJS({ - "../serde-ts/dist/utils.js"(exports2) { - "use strict"; - Object.defineProperty(exports2, "__esModule", { value: true }); - exports2.staticImplements = staticImplements; - exports2.isPlainObject = isPlainObject; - exports2.isFunction = isFunction; - exports2.isIterable = isIterable; - exports2.isString = isString; - exports2.isNumber = isNumber; - function staticImplements() { - return (constructor) => { - constructor; - }; - } - function isPlainObject(value) { - return Object.getPrototypeOf(value) === Object.prototype; - } - function isFunction(value) { - return value != null && typeof value === "function"; - } - function isIterable(value) { - return isFunction(value[Symbol.iterator]); - } - function isString(value) { - return typeof value === "string"; - } - function isNumber(value) { - return !isNaN(value); - } - } -}); - // ../serde-ts/dist/index.js var require_dist = __commonJS({ "../serde-ts/dist/index.js"(exports2) { @@ -539,11 +291,351 @@ var require_dist = __commonJS({ } }); +// ../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.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) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + 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_interface(), exports2); + } +}); + +// ../serde-ts/dist/de/interface.js +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; + var utils_1 = require_utils(); + var MapAccess2 = class { + nextEntrySeed(kseed, vseed) { + const key = this.nextKeySeed(kseed); + if (!key.done) { + const value = this.nextValueSeed(vseed); + if (!value.done) { + return utils_1.IterResult.Next([key.value, value.value]); + } + } + return utils_1.IterResult.Done(); + } + nextEntry() { + const key = this.nextKey(); + if (!key.done) { + const value = this.nextValue(); + if (!value.done) { + return utils_1.IterResult.Next([key.value, value.value]); + } + } + return utils_1.IterResult.Done(); + } + }; + exports2.MapAccess = MapAccess2; + var IterableAccess = class { + }; + exports2.IterableAccess = IterableAccess; + } +}); + +// ../serde-ts/dist/de/forward.js +var require_forward = __commonJS({ + "../serde-ts/dist/de/forward.js"(exports2) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { value: true }); + exports2.Forward = exports2.ForwardIterableAccess = exports2.ForwardMapAccess = void 0; + var utils_1 = require_utils(); + var interface_1 = require_interface2(); + var ForwardMapAccess = class _ForwardMapAccess extends interface_1.MapAccess { + constructor(keys, values) { + super(); + Object.defineProperty(this, "keys", { + enumerable: true, + configurable: true, + writable: true, + value: void 0 + }); + Object.defineProperty(this, "values", { + enumerable: true, + configurable: true, + writable: true, + value: void 0 + }); + Object.defineProperty(this, "kindex", { + enumerable: true, + configurable: true, + writable: true, + value: 0 + }); + Object.defineProperty(this, "vindex", { + enumerable: true, + configurable: true, + writable: true, + value: 0 + }); + this.keys = keys; + this.values = values; + } + static fromObject(obj) { + return new _ForwardMapAccess(Object.keys(obj), Object.values(obj)); + } + nextKeySeed(_seed) { + return this.nextKey(); + } + nextValueSeed(_seed) { + return this.nextValue(); + } + nextKey() { + if (this.kindex < this.keys.length) { + return utils_1.IterResult.Next(this.keys[this.kindex++]); + } else { + return utils_1.IterResult.Done(); + } + } + nextValue() { + if (this.vindex < this.values.length) { + return utils_1.IterResult.Next(this.values[this.vindex++]); + } else { + return utils_1.IterResult.Done(); + } + } + }; + exports2.ForwardMapAccess = ForwardMapAccess; + var ForwardIterableAccess = class extends interface_1.IterableAccess { + constructor(items) { + super(); + Object.defineProperty(this, "items", { + enumerable: true, + configurable: true, + writable: true, + value: void 0 + }); + Object.defineProperty(this, "index", { + enumerable: true, + configurable: true, + writable: true, + value: 0 + }); + this.items = items; + } + nextElement() { + if (this.index < this.items.length) { + return utils_1.IterResult.Next(this.items[this.index++]); + } else { + return utils_1.IterResult.Done(); + } + } + }; + exports2.ForwardIterableAccess = ForwardIterableAccess; + var Forward2 = class { + constructor(value) { + Object.defineProperty(this, "value", { + enumerable: true, + configurable: true, + writable: true, + value: void 0 + }); + this.value = value; + } + static with(value) { + return new this(value); + } + deserializeAny(_visitor) { + throw new Error("Can't forward to deserializeAny"); + } + deserializeBoolean(visitor) { + return visitor.visitBoolean(this.value); + } + deserializeNumber(visitor) { + return visitor.visitNumber(this.value); + } + deserializeBigInt(visitor) { + return visitor.visitBigInt(this.value); + } + deserializeString(visitor) { + return visitor.visitString(this.value); + } + deserializeSymbol(visitor) { + return visitor.visitSymbol(this.value); + } + deserializeNull(visitor) { + return visitor.visitNull(); + } + deserializeObject(visitor) { + return visitor.visitObject(ForwardMapAccess.fromObject(this.value)); + } + deserializeIterable(visitor) { + return visitor.visitIterable(new ForwardIterableAccess(this.value)); + } + deserializeFunction(_visitor) { + throw new Error("Method not implemented."); + } + }; + exports2.Forward = Forward2; + } +}); + +// ../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.GenericVisitor = exports2.GenericSeed = void 0; + var GenericSeed2 = class _GenericSeed { + constructor(visitor = new GenericVisitor3()) { + Object.defineProperty(this, "visitor", { + enumerable: true, + configurable: true, + writable: true, + value: void 0 + }); + this.visitor = visitor; + } + static deserialize(deserializer, visitor = new GenericVisitor3()) { + return deserializer.deserializeAny(visitor); + } + deserialize(deserializer) { + return _GenericSeed.deserialize(deserializer, this.visitor); + } + }; + exports2.GenericSeed = GenericSeed2; + var GenericVisitor3 = class { + visitBoolean(value) { + return value; + } + visitNumber(value) { + return value; + } + visitBigInt(value) { + return value; + } + visitString(value) { + return value; + } + visitSymbol(value) { + return value; + } + visitNull() { + return null; + } + visitObject(access) { + const result = []; + let entry; + while ((entry = access.nextEntry()) && !entry.done) { + result.push(entry.value); + } + return Object.fromEntries(result); + } + visitIterable(access) { + const result = []; + let element; + while (element = access.nextElement()) { + result.push(element); + } + return result; + } + }; + exports2.GenericVisitor = GenericVisitor3; + } +}); + +// ../serde-ts/dist/de/index.js +var require_de = __commonJS({ + "../serde-ts/dist/de/index.js"(exports2) { + "use strict"; + var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); + } : function(o, m, k, k2) { + if (k2 === void 0) k2 = k; + o[k2] = m[k]; + }); + 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_forward(), exports2); + __exportStar(require_generic(), exports2); + __exportStar(require_impl2(), exports2); + __exportStar(require_interface2(), exports2); + } +}); + // test.ts var import_serde2 = __toESM(require_dist()); // src/ser.ts -var import_ser = __toESM(require_impl()); +var import_ser = __toESM(require_ser()); var JSONObjectSerializer = class extends import_ser.SerializeObject { ser; first = true; @@ -627,10 +719,10 @@ var JSONSerializer = class { }; // src/index.ts -var import_de2 = __toESM(require_impl2()); +var import_de2 = __toESM(require_de()); // src/de.ts -var import_de = __toESM(require_impl2()); +var import_de = __toESM(require_de()); // src/err.ts var unexpected = (expected, actual, position) => new SyntaxError(`Expected ${expected} at position ${position} (got '${actual}')`); @@ -681,7 +773,7 @@ var CommaSeparated = class extends import_de.MapAccess { } nextItemSeed(seed, end) { if (this.de.buffer.peek().next() === end) { - return import_de.IterResult.Done(); + return import_serde.IterResult.Done(); } if (!this.first) { const take = this.de.buffer.take(); @@ -690,7 +782,7 @@ var CommaSeparated = class extends import_de.MapAccess { } } this.first = false; - return import_de.IterResult.Next(seed(this.de)); + return import_serde.IterResult.Next(seed(this.de)); } nextKeySeed(seed) { return this.nextItemSeed(seed, Token.RightCurly); @@ -700,7 +792,7 @@ var CommaSeparated = class extends import_de.MapAccess { if (next !== Token.Colon) { throw unexpected(":", String.fromCharCode(next), this.de.buffer.position); } - return import_de.IterResult.Next(seed(this.de)); + return import_serde.IterResult.Next(seed(this.de)); } nextItem(end) { return this.nextItemSeed(this.seed(), end); @@ -946,7 +1038,7 @@ var JSONDeserializer = class { }; // src/index.ts -var import_ser3 = __toESM(require_impl()); +var import_ser3 = __toESM(require_ser()); function toString(value) { const serializer = new JSONSerializer(); (0, import_ser3.serialize)(serializer, value); @@ -958,7 +1050,7 @@ function fromString(value, into) { } // test.ts -var import_de4 = __toESM(require_impl2()); +var import_de4 = __toESM(require_de()); var InnerStruct = class { value; constructor(v) { diff --git a/src/de.ts b/src/de.ts index ee719c6..68854a4 100644 --- a/src/de.ts +++ b/src/de.ts @@ -1,6 +1,6 @@ -import { IIterableAccess, MapAccess, IVisitor, IDeserializer, IterResult, Deserialize, GenericVisitor, GenericSeed } from 'serde/de' +import { IIterableAccess, MapAccess, IVisitor, IDeserializer, Deserialize, GenericVisitor, GenericSeed } from 'serde/de' import { unexpected } from './err' -import { GlobalRegistry, Registry } from 'serde' +import { GlobalRegistry, IterResult, Registry } from 'serde' type Byte = number