@oyinlola141/lattice-serialization 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +19 -0
  2. package/dist/index.d.ts +40 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +44 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/serializerEnvelope/envelope.core.d.ts +53 -0
  7. package/dist/serializerEnvelope/envelope.core.d.ts.map +1 -0
  8. package/dist/serializerEnvelope/envelope.core.js +68 -0
  9. package/dist/serializerEnvelope/envelope.core.js.map +1 -0
  10. package/dist/serializerEnvelope/index.d.ts +7 -0
  11. package/dist/serializerEnvelope/index.d.ts.map +1 -0
  12. package/dist/serializerEnvelope/index.js +7 -0
  13. package/dist/serializerEnvelope/index.js.map +1 -0
  14. package/dist/serializerJson/index.d.ts +8 -0
  15. package/dist/serializerJson/index.d.ts.map +1 -0
  16. package/dist/serializerJson/index.js +8 -0
  17. package/dist/serializerJson/index.js.map +1 -0
  18. package/dist/serializerJson/jsonSerializer.core.d.ts +26 -0
  19. package/dist/serializerJson/jsonSerializer.core.d.ts.map +1 -0
  20. package/dist/serializerJson/jsonSerializer.core.js +149 -0
  21. package/dist/serializerJson/jsonSerializer.core.js.map +1 -0
  22. package/dist/serializerRegistry/index.d.ts +9 -0
  23. package/dist/serializerRegistry/index.d.ts.map +1 -0
  24. package/dist/serializerRegistry/index.js +9 -0
  25. package/dist/serializerRegistry/index.js.map +1 -0
  26. package/dist/serializerRegistry/serializerRegistry.core.d.ts +31 -0
  27. package/dist/serializerRegistry/serializerRegistry.core.d.ts.map +1 -0
  28. package/dist/serializerRegistry/serializerRegistry.core.js +48 -0
  29. package/dist/serializerRegistry/serializerRegistry.core.js.map +1 -0
  30. package/dist/serializerRegistry/serializerRegistry.factory.d.ts +30 -0
  31. package/dist/serializerRegistry/serializerRegistry.factory.d.ts.map +1 -0
  32. package/dist/serializerRegistry/serializerRegistry.factory.js +39 -0
  33. package/dist/serializerRegistry/serializerRegistry.factory.js.map +1 -0
  34. package/dist/serializerTransforms/bigint.transformer.d.ts +10 -0
  35. package/dist/serializerTransforms/bigint.transformer.d.ts.map +1 -0
  36. package/dist/serializerTransforms/bigint.transformer.js +35 -0
  37. package/dist/serializerTransforms/bigint.transformer.js.map +1 -0
  38. package/dist/serializerTransforms/date.transformer.d.ts +10 -0
  39. package/dist/serializerTransforms/date.transformer.d.ts.map +1 -0
  40. package/dist/serializerTransforms/date.transformer.js +34 -0
  41. package/dist/serializerTransforms/date.transformer.js.map +1 -0
  42. package/dist/serializerTransforms/index.d.ts +11 -0
  43. package/dist/serializerTransforms/index.d.ts.map +1 -0
  44. package/dist/serializerTransforms/index.js +11 -0
  45. package/dist/serializerTransforms/index.js.map +1 -0
  46. package/dist/serializerTransforms/map.transformer.d.ts +10 -0
  47. package/dist/serializerTransforms/map.transformer.d.ts.map +1 -0
  48. package/dist/serializerTransforms/map.transformer.js +34 -0
  49. package/dist/serializerTransforms/map.transformer.js.map +1 -0
  50. package/dist/serializerTransforms/set.transformer.d.ts +10 -0
  51. package/dist/serializerTransforms/set.transformer.d.ts.map +1 -0
  52. package/dist/serializerTransforms/set.transformer.js +30 -0
  53. package/dist/serializerTransforms/set.transformer.js.map +1 -0
  54. package/dist/serializerTransforms/transformerRegistry.core.d.ts +33 -0
  55. package/dist/serializerTransforms/transformerRegistry.core.d.ts.map +1 -0
  56. package/dist/serializerTransforms/transformerRegistry.core.js +60 -0
  57. package/dist/serializerTransforms/transformerRegistry.core.js.map +1 -0
  58. package/dist/serializerTransformsExt/buffer.transformer.d.ts +10 -0
  59. package/dist/serializerTransformsExt/buffer.transformer.d.ts.map +1 -0
  60. package/dist/serializerTransformsExt/buffer.transformer.js +32 -0
  61. package/dist/serializerTransformsExt/buffer.transformer.js.map +1 -0
  62. package/dist/serializerTransformsExt/encoding.utils.d.ts +14 -0
  63. package/dist/serializerTransformsExt/encoding.utils.d.ts.map +1 -0
  64. package/dist/serializerTransformsExt/encoding.utils.js +43 -0
  65. package/dist/serializerTransformsExt/encoding.utils.js.map +1 -0
  66. package/dist/serializerTransformsExt/error.transformer.d.ts +10 -0
  67. package/dist/serializerTransformsExt/error.transformer.d.ts.map +1 -0
  68. package/dist/serializerTransformsExt/error.transformer.js +49 -0
  69. package/dist/serializerTransformsExt/error.transformer.js.map +1 -0
  70. package/dist/serializerTransformsExt/index.d.ts +10 -0
  71. package/dist/serializerTransformsExt/index.d.ts.map +1 -0
  72. package/dist/serializerTransformsExt/index.js +10 -0
  73. package/dist/serializerTransformsExt/index.js.map +1 -0
  74. package/dist/serializerTypes/index.d.ts +7 -0
  75. package/dist/serializerTypes/index.d.ts.map +1 -0
  76. package/dist/serializerTypes/index.js +7 -0
  77. package/dist/serializerTypes/index.js.map +1 -0
  78. package/dist/serializerTypes/serializer.type.d.ts +83 -0
  79. package/dist/serializerTypes/serializer.type.d.ts.map +1 -0
  80. package/dist/serializerTypes/serializer.type.js +9 -0
  81. package/dist/serializerTypes/serializer.type.js.map +1 -0
  82. package/package.json +49 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializerRegistry.factory.d.ts","sourceRoot":"","sources":["../../src/serializerRegistry/serializerRegistry.factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAInF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC,GACA,UAAU,CAOZ;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,kBAAkB,CAI1D"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @latticejs/serialization — Serializer factory.
3
+ *
4
+ * Factory function for creating serializer instances by format name.
5
+ * Provides a clean public API for creating serializers without
6
+ * exposing concrete class constructors.
7
+ */
8
+ import { JSONSerializer } from "../serializerJson/index.js";
9
+ import { UnsupportedSerializationFormatError } from "@latticejs/errors";
10
+ import { SerializationFormat as Format } from "@latticejs/constants";
11
+ import { TransformerRegistry } from "../serializerTransforms/index.js";
12
+ import { SerializerRegistry } from "./serializerRegistry.core.js";
13
+ /**
14
+ * Create a serializer for the given format.
15
+ *
16
+ * @param format - The serialization format (e.g., "json").
17
+ * @param options - Optional configuration for the serializer.
18
+ * @returns A Serializer instance.
19
+ * @throws {UnsupportedSerializationFormatError} when the format is not supported.
20
+ */
21
+ export function createSerializer(format, options) {
22
+ switch (format) {
23
+ case Format.JSON:
24
+ return new JSONSerializer({ transformers: options?.transformers });
25
+ default:
26
+ throw new UnsupportedSerializationFormatError(format);
27
+ }
28
+ }
29
+ /**
30
+ * Create a default serializer registry pre-populated with built-in serializers.
31
+ *
32
+ * @returns A SerializerRegistry with "json" registered.
33
+ */
34
+ export function createDefaultRegistry() {
35
+ const registry = new SerializerRegistry();
36
+ registry.register(createSerializer(Format.JSON));
37
+ return registry;
38
+ }
39
+ //# sourceMappingURL=serializerRegistry.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializerRegistry.factory.js","sourceRoot":"","sources":["../../src/serializerRegistry/serializerRegistry.factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,mCAAmC,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,mBAAmB,IAAI,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAA2B,EAC3B,OAIC;IAED,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,IAAI;YACd,OAAO,IAAI,cAAc,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QACrE;YACE,MAAM,IAAI,mCAAmC,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @oyinlola141/lattice-serialization — BigInt transformer.
3
+ *
4
+ * Preserves BigInt values across serialization boundaries
5
+ * using string representation.
6
+ */
7
+ import type { TypeTransformer } from "../serializerTypes/index.js";
8
+ /** Transformer that handles BigInt round-trips. */
9
+ export declare const BigIntTransformer: TypeTransformer<bigint>;
10
+ //# sourceMappingURL=bigint.transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigint.transformer.d.ts","sourceRoot":"","sources":["../../src/serializerTransforms/bigint.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAKnE,mDAAmD;AACnD,eAAO,MAAM,iBAAiB,EAAE,eAAe,CAAC,MAAM,CA0BrD,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @latticejs/serialization — BigInt transformer.
3
+ *
4
+ * Preserves BigInt values across serialization boundaries
5
+ * using string representation.
6
+ */
7
+ import { SerializationTags } from "@latticejs/constants";
8
+ const BIGINT_TYPE = "BigInt";
9
+ /** Transformer that handles BigInt round-trips. */
10
+ export const BigIntTransformer = {
11
+ type: BIGINT_TYPE,
12
+ canSerialize(value) {
13
+ return typeof value === "bigint";
14
+ },
15
+ serialize(value) {
16
+ return {
17
+ [SerializationTags.TYPE]: BIGINT_TYPE,
18
+ [SerializationTags.VALUE]: value.toString(),
19
+ };
20
+ },
21
+ deserialize(value) {
22
+ const data = value;
23
+ const raw = data[SerializationTags.VALUE];
24
+ if (typeof raw !== "string") {
25
+ throw new Error(`Invalid BigInt serialized value: expected string, got ${typeof raw}`);
26
+ }
27
+ try {
28
+ return BigInt(raw);
29
+ }
30
+ catch {
31
+ throw new Error(`Cannot parse BigInt from: "${raw}"`);
32
+ }
33
+ },
34
+ };
35
+ //# sourceMappingURL=bigint.transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigint.transformer.js","sourceRoot":"","sources":["../../src/serializerTransforms/bigint.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,WAAW,GAAG,QAAiB,CAAC;AAEtC,mDAAmD;AACnD,MAAM,CAAC,MAAM,iBAAiB,GAA4B;IACxD,IAAI,EAAE,WAAW;IAEjB,YAAY,CAAC,KAAc;QACzB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACnC,CAAC;IAED,SAAS,CAAC,KAAa;QACrB,OAAO;YACL,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;YACrC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE;SAC5C,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,KAAc;QACxB,MAAM,IAAI,GAAG,KAAgC,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,yDAAyD,OAAO,GAAG,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,GAAG,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @oyinlola141/lattice-serialization — Date transformer.
3
+ *
4
+ * Preserves Date instances across serialization boundaries
5
+ * using ISO-8601 string representation.
6
+ */
7
+ import type { TypeTransformer } from "../serializerTypes/index.js";
8
+ /** Transformer that handles Date round-trips. */
9
+ export declare const DateTransformer: TypeTransformer<Date>;
10
+ //# sourceMappingURL=date.transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.transformer.d.ts","sourceRoot":"","sources":["../../src/serializerTransforms/date.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAKnE,iDAAiD;AACjD,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,IAAI,CA0BjD,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @latticejs/serialization — Date transformer.
3
+ *
4
+ * Preserves Date instances across serialization boundaries
5
+ * using ISO-8601 string representation.
6
+ */
7
+ import { SerializationTags } from "@latticejs/constants";
8
+ const DATE_TYPE = "Date";
9
+ /** Transformer that handles Date round-trips. */
10
+ export const DateTransformer = {
11
+ type: DATE_TYPE,
12
+ canSerialize(value) {
13
+ return value instanceof Date;
14
+ },
15
+ serialize(value) {
16
+ return {
17
+ [SerializationTags.TYPE]: DATE_TYPE,
18
+ [SerializationTags.VALUE]: value.toISOString(),
19
+ };
20
+ },
21
+ deserialize(value) {
22
+ const data = value;
23
+ const raw = data[SerializationTags.VALUE];
24
+ if (typeof raw !== "string") {
25
+ throw new Error(`Invalid Date serialized value: expected string, got ${typeof raw}`);
26
+ }
27
+ const date = new Date(raw);
28
+ if (Number.isNaN(date.getTime())) {
29
+ throw new Error(`Invalid Date value: "${raw}"`);
30
+ }
31
+ return date;
32
+ },
33
+ };
34
+ //# sourceMappingURL=date.transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.transformer.js","sourceRoot":"","sources":["../../src/serializerTransforms/date.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,SAAS,GAAG,MAAe,CAAC;AAElC,iDAAiD;AACjD,MAAM,CAAC,MAAM,eAAe,GAA0B;IACpD,IAAI,EAAE,SAAS;IAEf,YAAY,CAAC,KAAc;QACzB,OAAO,KAAK,YAAY,IAAI,CAAC;IAC/B,CAAC;IAED,SAAS,CAAC,KAAW;QACnB,OAAO;YACL,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,SAAS;YACnC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE;SAC/C,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,KAAc;QACxB,MAAM,IAAI,GAAG,KAAgC,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,uDAAuD,OAAO,GAAG,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,GAAG,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @oyinlola141/lattice-serialization — Core type transformers.
3
+ *
4
+ * Built-in transformers for Date, BigInt, Map, and Set types.
5
+ */
6
+ export { TransformerRegistry } from "./transformerRegistry.core.js";
7
+ export { DateTransformer } from "./date.transformer.js";
8
+ export { BigIntTransformer } from "./bigint.transformer.js";
9
+ export { MapTransformer } from "./map.transformer.js";
10
+ export { SetTransformer } from "./set.transformer.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serializerTransforms/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @latticejs/serialization — Core type transformers.
3
+ *
4
+ * Built-in transformers for Date, BigInt, Map, and Set types.
5
+ */
6
+ export { TransformerRegistry } from "./transformerRegistry.core.js";
7
+ export { DateTransformer } from "./date.transformer.js";
8
+ export { BigIntTransformer } from "./bigint.transformer.js";
9
+ export { MapTransformer } from "./map.transformer.js";
10
+ export { SetTransformer } from "./set.transformer.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/serializerTransforms/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @oyinlola141/lattice-serialization — Map transformer.
3
+ *
4
+ * Preserves Map instances across serialization boundaries
5
+ * using an array-of-entries representation.
6
+ */
7
+ import type { TypeTransformer } from "../serializerTypes/index.js";
8
+ /** Transformer that handles Map round-trips. */
9
+ export declare const MapTransformer: TypeTransformer<Map<unknown, unknown>>;
10
+ //# sourceMappingURL=map.transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.transformer.d.ts","sourceRoot":"","sources":["../../src/serializerTransforms/map.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAKnE,gDAAgD;AAChD,eAAO,MAAM,cAAc,EAAE,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CA0BjE,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @latticejs/serialization — Map transformer.
3
+ *
4
+ * Preserves Map instances across serialization boundaries
5
+ * using an array-of-entries representation.
6
+ */
7
+ import { SerializationTags } from "@latticejs/constants";
8
+ const MAP_TYPE = "Map";
9
+ /** Transformer that handles Map round-trips. */
10
+ export const MapTransformer = {
11
+ type: MAP_TYPE,
12
+ canSerialize(value) {
13
+ return value instanceof Map;
14
+ },
15
+ serialize(value) {
16
+ const entries = [];
17
+ for (const [k, v] of value) {
18
+ entries.push([k, v]);
19
+ }
20
+ return {
21
+ [SerializationTags.TYPE]: MAP_TYPE,
22
+ [SerializationTags.VALUE]: entries,
23
+ };
24
+ },
25
+ deserialize(value) {
26
+ const data = value;
27
+ const raw = data[SerializationTags.VALUE];
28
+ if (!Array.isArray(raw)) {
29
+ throw new Error(`Invalid Map serialized value: expected array, got ${typeof raw}`);
30
+ }
31
+ return new Map(raw);
32
+ },
33
+ };
34
+ //# sourceMappingURL=map.transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map.transformer.js","sourceRoot":"","sources":["../../src/serializerTransforms/map.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,QAAQ,GAAG,KAAc,CAAC;AAEhC,gDAAgD;AAChD,MAAM,CAAC,MAAM,cAAc,GAA2C;IACpE,IAAI,EAAE,QAAQ;IAEd,YAAY,CAAC,KAAc;QACzB,OAAO,KAAK,YAAY,GAAG,CAAC;IAC9B,CAAC;IAED,SAAS,CAAC,KAA4B;QACpC,MAAM,OAAO,GAA8B,EAAE,CAAC;QAC9C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QACD,OAAO;YACL,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,QAAQ;YAClC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,OAAO;SACnC,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,KAAc;QACxB,MAAM,IAAI,GAAG,KAAgC,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,qDAAqD,OAAO,GAAG,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,GAAgC,CAAC,CAAC;IACnD,CAAC;CACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @oyinlola141/lattice-serialization — Set transformer.
3
+ *
4
+ * Preserves Set instances across serialization boundaries
5
+ * using an array representation.
6
+ */
7
+ import type { TypeTransformer } from "../serializerTypes/index.js";
8
+ /** Transformer that handles Set round-trips. */
9
+ export declare const SetTransformer: TypeTransformer<Set<unknown>>;
10
+ //# sourceMappingURL=set.transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.transformer.d.ts","sourceRoot":"","sources":["../../src/serializerTransforms/set.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAKnE,gDAAgD;AAChD,eAAO,MAAM,cAAc,EAAE,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAsBxD,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @latticejs/serialization — Set transformer.
3
+ *
4
+ * Preserves Set instances across serialization boundaries
5
+ * using an array representation.
6
+ */
7
+ import { SerializationTags } from "@latticejs/constants";
8
+ const SET_TYPE = "Set";
9
+ /** Transformer that handles Set round-trips. */
10
+ export const SetTransformer = {
11
+ type: SET_TYPE,
12
+ canSerialize(value) {
13
+ return value instanceof Set;
14
+ },
15
+ serialize(value) {
16
+ return {
17
+ [SerializationTags.TYPE]: SET_TYPE,
18
+ [SerializationTags.VALUE]: [...value],
19
+ };
20
+ },
21
+ deserialize(value) {
22
+ const data = value;
23
+ const raw = data[SerializationTags.VALUE];
24
+ if (!Array.isArray(raw)) {
25
+ throw new Error(`Invalid Set serialized value: expected array, got ${typeof raw}`);
26
+ }
27
+ return new Set(raw);
28
+ },
29
+ };
30
+ //# sourceMappingURL=set.transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.transformer.js","sourceRoot":"","sources":["../../src/serializerTransforms/set.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,QAAQ,GAAG,KAAc,CAAC;AAEhC,gDAAgD;AAChD,MAAM,CAAC,MAAM,cAAc,GAAkC;IAC3D,IAAI,EAAE,QAAQ;IAEd,YAAY,CAAC,KAAc;QACzB,OAAO,KAAK,YAAY,GAAG,CAAC;IAC9B,CAAC;IAED,SAAS,CAAC,KAAmB;QAC3B,OAAO;YACL,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,QAAQ;YAClC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;SACtC,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,KAAc;QACxB,MAAM,IAAI,GAAG,KAAgC,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,qDAAqD,OAAO,GAAG,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;CACF,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @oyinlola141/lattice-serialization — Transformer registry.
3
+ *
4
+ * Manages type transformers that handle custom JS types during
5
+ * serialization and deserialization. Keyed by type tag string.
6
+ */
7
+ import type { TypeTransformer } from "../serializerTypes/index.js";
8
+ /**
9
+ * Registry of type transformers keyed by their type tag.
10
+ *
11
+ * Transformers handle round-trip serialization of special JS types
12
+ * (Date, BigInt, Map, Set, etc.) through tagged JSON representations.
13
+ */
14
+ export declare class TransformerRegistry {
15
+ private readonly transformers;
16
+ /** Register a transformer. Throws if the registry is full. */
17
+ register(transformer: TypeTransformer): void;
18
+ /** Unregister a transformer by type tag. */
19
+ unregister(type: string): boolean;
20
+ /** Retrieve a transformer by type tag. */
21
+ get(type: string): TypeTransformer;
22
+ /** Find a transformer that can serialize the given value. */
23
+ findForValue(value: unknown): TypeTransformer | undefined;
24
+ /** Returns true when a transformer is registered for the type tag. */
25
+ has(type: string): boolean;
26
+ /** Returns all registered type tags. */
27
+ types(): string[];
28
+ /** Remove all registered transformers. */
29
+ clear(): void;
30
+ /** Number of registered transformers. */
31
+ get size(): number;
32
+ }
33
+ //# sourceMappingURL=transformerRegistry.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformerRegistry.core.d.ts","sourceRoot":"","sources":["../../src/serializerTransforms/transformerRegistry.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAInE;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsC;IAEnE,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,EAAE,eAAe,GAAG,IAAI;IAS5C,4CAA4C;IAC5C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,0CAA0C;IAC1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAMlC,6DAA6D;IAC7D,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,GAAG,SAAS;IAOzD,sEAAsE;IACtE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,wCAAwC;IACxC,KAAK,IAAI,MAAM,EAAE;IAIjB,0CAA0C;IAC1C,KAAK,IAAI,IAAI;IAIb,yCAAyC;IACzC,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @latticejs/serialization — Transformer registry.
3
+ *
4
+ * Manages type transformers that handle custom JS types during
5
+ * serialization and deserialization. Keyed by type tag string.
6
+ */
7
+ import { TransformerNotFoundError } from "@latticejs/errors";
8
+ import { SerializationLimits } from "@latticejs/constants";
9
+ /**
10
+ * Registry of type transformers keyed by their type tag.
11
+ *
12
+ * Transformers handle round-trip serialization of special JS types
13
+ * (Date, BigInt, Map, Set, etc.) through tagged JSON representations.
14
+ */
15
+ export class TransformerRegistry {
16
+ transformers = new Map();
17
+ /** Register a transformer. Throws if the registry is full. */
18
+ register(transformer) {
19
+ if (this.transformers.size >= SerializationLimits.MAX_TRANSFORMERS) {
20
+ throw new Error(`Maximum transformer limit (${SerializationLimits.MAX_TRANSFORMERS}) reached.`);
21
+ }
22
+ this.transformers.set(transformer.type, transformer);
23
+ }
24
+ /** Unregister a transformer by type tag. */
25
+ unregister(type) {
26
+ return this.transformers.delete(type);
27
+ }
28
+ /** Retrieve a transformer by type tag. */
29
+ get(type) {
30
+ const transformer = this.transformers.get(type);
31
+ if (!transformer)
32
+ throw new TransformerNotFoundError(type);
33
+ return transformer;
34
+ }
35
+ /** Find a transformer that can serialize the given value. */
36
+ findForValue(value) {
37
+ for (const transformer of this.transformers.values()) {
38
+ if (transformer.canSerialize(value))
39
+ return transformer;
40
+ }
41
+ return undefined;
42
+ }
43
+ /** Returns true when a transformer is registered for the type tag. */
44
+ has(type) {
45
+ return this.transformers.has(type);
46
+ }
47
+ /** Returns all registered type tags. */
48
+ types() {
49
+ return [...this.transformers.keys()];
50
+ }
51
+ /** Remove all registered transformers. */
52
+ clear() {
53
+ this.transformers.clear();
54
+ }
55
+ /** Number of registered transformers. */
56
+ get size() {
57
+ return this.transformers.size;
58
+ }
59
+ }
60
+ //# sourceMappingURL=transformerRegistry.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformerRegistry.core.js","sourceRoot":"","sources":["../../src/serializerTransforms/transformerRegistry.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,OAAO,mBAAmB;IACb,YAAY,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEnE,8DAA8D;IAC9D,QAAQ,CAAC,WAA4B;QACnC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CACb,8BAA8B,mBAAmB,CAAC,gBAAgB,YAAY,CAC/E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;IAED,4CAA4C;IAC5C,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,0CAA0C;IAC1C,GAAG,CAAC,IAAY;QACd,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC3D,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,6DAA6D;IAC7D,YAAY,CAAC,KAAc;QACzB,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;YACrD,IAAI,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC;gBAAE,OAAO,WAAW,CAAC;QAC1D,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,sEAAsE;IACtE,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,wCAAwC;IACxC,KAAK;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,0CAA0C;IAC1C,KAAK;QACH,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,yCAAyC;IACzC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;IAChC,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @oyinlola141/lattice-serialization — Buffer transformer.
3
+ *
4
+ * Preserves Uint8Array and Buffer instances across serialization boundaries
5
+ * using base64 encoding.
6
+ */
7
+ import type { TypeTransformer } from "../serializerTypes/index.js";
8
+ /** Transformer that handles Uint8Array round-trips. */
9
+ export declare const BufferTransformer: TypeTransformer<Uint8Array>;
10
+ //# sourceMappingURL=buffer.transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer.transformer.d.ts","sourceRoot":"","sources":["../../src/serializerTransformsExt/buffer.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAMnE,uDAAuD;AACvD,eAAO,MAAM,iBAAiB,EAAE,eAAe,CAAC,UAAU,CAuBzD,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @latticejs/serialization — Buffer transformer.
3
+ *
4
+ * Preserves Uint8Array and Buffer instances across serialization boundaries
5
+ * using base64 encoding.
6
+ */
7
+ import { SerializationTags } from "@latticejs/constants";
8
+ import { toBase64, fromBase64 } from "./encoding.utils.js";
9
+ const BUFFER_TYPE = "Buffer";
10
+ /** Transformer that handles Uint8Array round-trips. */
11
+ export const BufferTransformer = {
12
+ type: BUFFER_TYPE,
13
+ canSerialize(value) {
14
+ return value instanceof Uint8Array;
15
+ },
16
+ serialize(value) {
17
+ return {
18
+ [SerializationTags.TYPE]: BUFFER_TYPE,
19
+ [SerializationTags.ENCODING]: "base64",
20
+ [SerializationTags.VALUE]: toBase64(value),
21
+ };
22
+ },
23
+ deserialize(value) {
24
+ const data = value;
25
+ const raw = data[SerializationTags.VALUE];
26
+ if (typeof raw !== "string") {
27
+ throw new Error(`Invalid Buffer serialized value: expected string, got ${typeof raw}`);
28
+ }
29
+ return fromBase64(raw);
30
+ },
31
+ };
32
+ //# sourceMappingURL=buffer.transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer.transformer.js","sourceRoot":"","sources":["../../src/serializerTransformsExt/buffer.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,WAAW,GAAG,QAAiB,CAAC;AAEtC,uDAAuD;AACvD,MAAM,CAAC,MAAM,iBAAiB,GAAgC;IAC5D,IAAI,EAAE,WAAW;IAEjB,YAAY,CAAC,KAAc;QACzB,OAAO,KAAK,YAAY,UAAU,CAAC;IACrC,CAAC;IAED,SAAS,CAAC,KAAiB;QACzB,OAAO;YACL,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,WAAW;YACrC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,QAAQ;YACtC,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,KAAc;QACxB,MAAM,IAAI,GAAG,KAAgC,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,yDAAyD,OAAO,GAAG,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;CACF,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @oyinlola141/lattice-serialization — Encoding utilities.
3
+ *
4
+ * Base64 and UTF-8 encoding/decoding helpers.
5
+ */
6
+ /** Encode a Uint8Array to a Base64 string. */
7
+ export declare function toBase64(data: Uint8Array): string;
8
+ /** Decode a Base64 string into a Uint8Array. */
9
+ export declare function fromBase64(base64: string): Uint8Array;
10
+ /** Encode a string to a Uint8Array using UTF-8. */
11
+ export declare function encodeUtf8(text: string): Uint8Array;
12
+ /** Decode a Uint8Array to a string using UTF-8. */
13
+ export declare function decodeUtf8(data: Uint8Array): string;
14
+ //# sourceMappingURL=encoding.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.utils.d.ts","sourceRoot":"","sources":["../../src/serializerTransformsExt/encoding.utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,8CAA8C;AAC9C,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CASjD;AAED,gDAAgD;AAChD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAUrD;AAED,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAKnD;AAED,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAKnD"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @latticejs/serialization — Encoding utilities.
3
+ *
4
+ * Base64 and UTF-8 encoding/decoding helpers.
5
+ */
6
+ /** Encode a Uint8Array to a Base64 string. */
7
+ export function toBase64(data) {
8
+ if (typeof Buffer !== "undefined") {
9
+ return Buffer.from(data).toString("base64");
10
+ }
11
+ let binary = "";
12
+ for (let i = 0; i < data.length; i++) {
13
+ binary += String.fromCharCode(data[i]);
14
+ }
15
+ return btoa(binary);
16
+ }
17
+ /** Decode a Base64 string into a Uint8Array. */
18
+ export function fromBase64(base64) {
19
+ if (typeof Buffer !== "undefined") {
20
+ return new Uint8Array(Buffer.from(base64, "base64"));
21
+ }
22
+ const binary = atob(base64);
23
+ const bytes = new Uint8Array(binary.length);
24
+ for (let i = 0; i < binary.length; i++) {
25
+ bytes[i] = binary.charCodeAt(i);
26
+ }
27
+ return bytes;
28
+ }
29
+ /** Encode a string to a Uint8Array using UTF-8. */
30
+ export function encodeUtf8(text) {
31
+ if (typeof TextEncoder !== "undefined") {
32
+ return new TextEncoder().encode(text);
33
+ }
34
+ return new Uint8Array(Buffer.from(text, "utf-8"));
35
+ }
36
+ /** Decode a Uint8Array to a string using UTF-8. */
37
+ export function decodeUtf8(data) {
38
+ if (typeof TextDecoder !== "undefined") {
39
+ return new TextDecoder("utf-8").decode(data);
40
+ }
41
+ return Buffer.from(data).toString("utf-8");
42
+ }
43
+ //# sourceMappingURL=encoding.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.utils.js","sourceRoot":"","sources":["../../src/serializerTransformsExt/encoding.utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,8CAA8C;AAC9C,MAAM,UAAU,QAAQ,CAAC,IAAgB;IACvC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE,CAAC;QACvC,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,UAAU,CAAC,IAAgB;IACzC,IAAI,OAAO,WAAW,KAAK,WAAW,EAAE,CAAC;QACvC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @oyinlola141/lattice-serialization — Error transformer.
3
+ *
4
+ * Preserves Error instances across serialization boundaries.
5
+ * Stack traces are controlled via options for security.
6
+ */
7
+ import type { TypeTransformer } from "../serializerTypes/index.js";
8
+ /** Transformer that handles Error round-trips. */
9
+ export declare const ErrorTransformer: TypeTransformer<Error>;
10
+ //# sourceMappingURL=error.transformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.transformer.d.ts","sourceRoot":"","sources":["../../src/serializerTransformsExt/error.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAKnE,kDAAkD;AAClD,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAAC,KAAK,CAgDnD,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @latticejs/serialization — Error transformer.
3
+ *
4
+ * Preserves Error instances across serialization boundaries.
5
+ * Stack traces are controlled via options for security.
6
+ */
7
+ import { SerializationTags } from "@latticejs/constants";
8
+ const ERROR_TYPE = "Error";
9
+ /** Transformer that handles Error round-trips. */
10
+ export const ErrorTransformer = {
11
+ type: ERROR_TYPE,
12
+ canSerialize(value) {
13
+ return value instanceof Error;
14
+ },
15
+ serialize(value) {
16
+ const result = {
17
+ [SerializationTags.TYPE]: ERROR_TYPE,
18
+ name: value.name,
19
+ message: value.message,
20
+ };
21
+ if (value.stack !== undefined) {
22
+ result.stack = value.stack;
23
+ }
24
+ const code = value.code;
25
+ if (typeof code === "string") {
26
+ result.code = code;
27
+ }
28
+ return result;
29
+ },
30
+ deserialize(value) {
31
+ const data = value;
32
+ const message = typeof data.message === "string" ? data.message : "";
33
+ const error = new Error(message);
34
+ const name = data.name;
35
+ if (typeof name === "string" && name !== "Error") {
36
+ error.name = name;
37
+ }
38
+ const stack = data.stack;
39
+ if (typeof stack === "string") {
40
+ error.stack = stack;
41
+ }
42
+ const code = data.code;
43
+ if (typeof code === "string") {
44
+ error.code = code;
45
+ }
46
+ return error;
47
+ },
48
+ };
49
+ //# sourceMappingURL=error.transformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.transformer.js","sourceRoot":"","sources":["../../src/serializerTransformsExt/error.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,UAAU,GAAG,OAAgB,CAAC;AAEpC,kDAAkD;AAClD,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,IAAI,EAAE,UAAU;IAEhB,YAAY,CAAC,KAAc;QACzB,OAAO,KAAK,YAAY,KAAK,CAAC;IAChC,CAAC;IAED,SAAS,CAAC,KAAY;QACpB,MAAM,MAAM,GAA4B;YACtC,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,UAAU;YACpC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC;QAEF,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC7B,CAAC;QAED,MAAM,IAAI,GAAI,KAA4C,CAAC,IAAI,CAAC;QAChE,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,KAAc;QACxB,MAAM,IAAI,GAAG,KAAgC,CAAC;QAC9C,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAEjC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACjD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QACpB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACtB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,KAA4C,CAAC,IAAI,GAAG,IAAI,CAAC;QAC5D,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @oyinlola141/lattice-serialization — Extended type transformers.
3
+ *
4
+ * Built-in transformers for Buffer/Uint8Array and Error types,
5
+ * plus encoding utilities.
6
+ */
7
+ export { BufferTransformer } from "./buffer.transformer.js";
8
+ export { ErrorTransformer } from "./error.transformer.js";
9
+ export { toBase64, fromBase64, encodeUtf8, decodeUtf8, } from "./encoding.utils.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serializerTransformsExt/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,UAAU,GACX,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @latticejs/serialization — Extended type transformers.
3
+ *
4
+ * Built-in transformers for Buffer/Uint8Array and Error types,
5
+ * plus encoding utilities.
6
+ */
7
+ export { BufferTransformer } from "./buffer.transformer.js";
8
+ export { ErrorTransformer } from "./error.transformer.js";
9
+ export { toBase64, fromBase64, encodeUtf8, decodeUtf8, } from "./encoding.utils.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/serializerTransformsExt/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,UAAU,GACX,MAAM,qBAAqB,CAAC"}