@zudojs/serialization 0.1.0 → 1.0.1

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 (58) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +131 -15
  3. package/dist/index.d.ts +3 -2
  4. package/dist/index.js +1 -1
  5. package/dist/serializerEnvelope/envelope.core.d.ts +28 -5
  6. package/dist/serializerEnvelope/envelope.core.js +79 -8
  7. package/dist/serializerEnvelope/index.d.ts +1 -1
  8. package/dist/serializerEnvelope/index.js +1 -1
  9. package/dist/serializerJson/jsonSerializer.core.d.ts +4 -0
  10. package/dist/serializerJson/jsonSerializer.core.js +108 -52
  11. package/dist/serializerRegistry/index.d.ts +1 -0
  12. package/dist/serializerRegistry/serializerRegistry.factory.d.ts +17 -5
  13. package/dist/serializerRegistry/serializerRegistry.factory.js +12 -9
  14. package/dist/serializerTransformsExt/error.transformer.d.ts +4 -1
  15. package/dist/serializerTransformsExt/error.transformer.js +15 -4
  16. package/dist/serializerTypes/index.d.ts +1 -1
  17. package/dist/serializerTypes/serializer.type.d.ts +30 -13
  18. package/package.json +26 -14
  19. package/dist/index.d.ts.map +0 -1
  20. package/dist/index.js.map +0 -1
  21. package/dist/serializerEnvelope/envelope.core.d.ts.map +0 -1
  22. package/dist/serializerEnvelope/envelope.core.js.map +0 -1
  23. package/dist/serializerEnvelope/index.d.ts.map +0 -1
  24. package/dist/serializerEnvelope/index.js.map +0 -1
  25. package/dist/serializerJson/index.d.ts.map +0 -1
  26. package/dist/serializerJson/index.js.map +0 -1
  27. package/dist/serializerJson/jsonSerializer.core.d.ts.map +0 -1
  28. package/dist/serializerJson/jsonSerializer.core.js.map +0 -1
  29. package/dist/serializerRegistry/index.d.ts.map +0 -1
  30. package/dist/serializerRegistry/index.js.map +0 -1
  31. package/dist/serializerRegistry/serializerRegistry.core.d.ts.map +0 -1
  32. package/dist/serializerRegistry/serializerRegistry.core.js.map +0 -1
  33. package/dist/serializerRegistry/serializerRegistry.factory.d.ts.map +0 -1
  34. package/dist/serializerRegistry/serializerRegistry.factory.js.map +0 -1
  35. package/dist/serializerTransforms/bigint.transformer.d.ts.map +0 -1
  36. package/dist/serializerTransforms/bigint.transformer.js.map +0 -1
  37. package/dist/serializerTransforms/date.transformer.d.ts.map +0 -1
  38. package/dist/serializerTransforms/date.transformer.js.map +0 -1
  39. package/dist/serializerTransforms/index.d.ts.map +0 -1
  40. package/dist/serializerTransforms/index.js.map +0 -1
  41. package/dist/serializerTransforms/map.transformer.d.ts.map +0 -1
  42. package/dist/serializerTransforms/map.transformer.js.map +0 -1
  43. package/dist/serializerTransforms/set.transformer.d.ts.map +0 -1
  44. package/dist/serializerTransforms/set.transformer.js.map +0 -1
  45. package/dist/serializerTransforms/transformerRegistry.core.d.ts.map +0 -1
  46. package/dist/serializerTransforms/transformerRegistry.core.js.map +0 -1
  47. package/dist/serializerTransformsExt/buffer.transformer.d.ts.map +0 -1
  48. package/dist/serializerTransformsExt/buffer.transformer.js.map +0 -1
  49. package/dist/serializerTransformsExt/encoding.utils.d.ts.map +0 -1
  50. package/dist/serializerTransformsExt/encoding.utils.js.map +0 -1
  51. package/dist/serializerTransformsExt/error.transformer.d.ts.map +0 -1
  52. package/dist/serializerTransformsExt/error.transformer.js.map +0 -1
  53. package/dist/serializerTransformsExt/index.d.ts.map +0 -1
  54. package/dist/serializerTransformsExt/index.js.map +0 -1
  55. package/dist/serializerTypes/index.d.ts.map +0 -1
  56. package/dist/serializerTypes/index.js.map +0 -1
  57. package/dist/serializerTypes/serializer.type.d.ts.map +0 -1
  58. package/dist/serializerTypes/serializer.type.js.map +0 -1
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Zudojs Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @zudojs/serialization
2
2
 
3
- Data translation layer with JSON serializer, type transformers, envelopes, and registry for Zudojs applications.
3
+ JSON serialization with optional type preservation, a transformer registry, and an envelope for cross-service payloads.
4
4
 
5
5
  ## Installation
6
6
 
@@ -13,26 +13,142 @@ npm install @zudojs/serialization
13
13
  ```typescript
14
14
  import { createSerializer } from "@zudojs/serialization";
15
15
 
16
- const serializer = createSerializer({
17
- format: "json",
18
- transformers: [dateTransformer, bigIntTransformer],
16
+ // Format is positional; options are per-instance defaults.
17
+ const serializer = createSerializer("json", { preserveTypes: true });
18
+
19
+ const json = serializer.serialize({ id: "123", createdAt: new Date() });
20
+ const value = serializer.deserialize<{ id: string; createdAt: Date }>(json);
21
+
22
+ value.createdAt instanceof Date; // true
23
+ ```
24
+
25
+ The methods are `serialize` / `deserialize`, and every option can be overridden
26
+ per call:
27
+
28
+ ```typescript
29
+ serializer.serialize(value, { pretty: true, maxSize: 1_000_000 });
30
+ serializer.deserialize(json, { strict: true, maxDepth: 64 });
31
+ ```
32
+
33
+ ## Type preservation
34
+
35
+ By default the serializer is a thin pass to `JSON.stringify`/`JSON.parse`. With
36
+ `preserveTypes`, values that JSON cannot represent are tagged and restored:
37
+
38
+ ```typescript
39
+ const s = createSerializer("json", { preserveTypes: true });
40
+
41
+ const value = {
42
+ when: new Date(),
43
+ amount: 42n,
44
+ seen: new Set(["a"]),
45
+ index: new Map([["k", new Date()]]),
46
+ bytes: new Uint8Array([1, 2, 3]),
47
+ };
48
+
49
+ const json = s.serialize(value);
50
+ const back = s.deserialize<typeof value>(json);
51
+ // Date, BigInt, Set, Map, Uint8Array all restored — including values nested
52
+ // inside a Map or Set.
53
+ ```
54
+
55
+ Built-in transformers cover `Date`, `BigInt`, `Map`, `Set`, `Uint8Array`/`Buffer`
56
+ and `Error`. Register your own against the same contract:
57
+
58
+ ```typescript
59
+ import { TransformerRegistry, JSONSerializer } from "@zudojs/serialization";
60
+
61
+ const registry = new TransformerRegistry();
62
+ registry.register({
63
+ type: "Money",
64
+ canSerialize: (v): v is Money => v instanceof Money,
65
+ serialize: (v) => ({ $type: "Money", $value: v.toString() }),
66
+ deserialize: (v) => Money.parse((v as { $value: string }).$value),
67
+ });
68
+
69
+ const serializer = new JSONSerializer({ transformers: registry });
70
+ ```
71
+
72
+ ## Untrusted input
73
+
74
+ `deserialize` is the boundary that matters — the string arrives from a queue, an
75
+ RPC peer or a request body.
76
+
77
+ - **Prototype-polluting keys are dropped** on the `preserveTypes` path, which
78
+ is the one that rebuilds objects key by key. `__proto__`, `constructor` and
79
+ `prototype` never reach the reconstructed object; set `allowUnsafeKeys` to
80
+ keep them, as real own properties, when the payload is trusted. The fast path
81
+ is plain `JSON.parse`, where `__proto__` survives as an inert own property and
82
+ never reaches the prototype — but do not spread or deep-merge such an object
83
+ into another without screening its keys.
84
+ - **Input is size-bounded** by `maxSize`, and depth-bounded by `maxDepth`. On
85
+ the `preserveTypes` path the depth limit defaults to 128; on the fast path it
86
+ is enforced whenever you set it, per call or as an instance default.
87
+ - **An unrecognised `$type` tag is treated as ordinary data**, so a peer cannot
88
+ stop the consumer with `{"$type":"anything"}` and your own records may carry a
89
+ `$type` field. Pass `strict: true` to make an unknown tag an error instead.
90
+
91
+ ## Errors
92
+
93
+ Stack traces are **not** serialized unless you ask, because a serialized error
94
+ routinely ends up in a queue message or a log sink:
95
+
96
+ ```typescript
97
+ serializer.serialize({ error }, { preserveTypes: true }); // name, message, code
98
+ serializer.serialize({ error }, { preserveTypes: true, includeStack: true });
99
+ ```
100
+
101
+ On the way back, a wire-supplied stack is attached as a non-enumerable
102
+ `originalStack` rather than overwriting the reconstructed error's own.
103
+
104
+ ## Envelopes
105
+
106
+ An envelope carries the metadata a consumer needs to decode the payload:
107
+
108
+ ```typescript
109
+ import {
110
+ serializeToEnvelope,
111
+ deserializeFromEnvelope,
112
+ } from "@zudojs/serialization";
113
+
114
+ const envelope = serializeToEnvelope(payload, serializer);
115
+ // { metadata: { format, version, contentType, encoding }, data }
116
+
117
+ const value = deserializeFromEnvelope(envelope, serializer, "json");
118
+ ```
119
+
120
+ Both helpers forward a fourth argument to the serializer, so the options that
121
+ matter on the wire are reachable through an envelope:
122
+
123
+ ```typescript
124
+ const envelope = serializeToEnvelope(payload, serializer, "json", {
125
+ preserveTypes: true,
19
126
  });
20
127
 
21
- const json = serializer.stringify({ id: "123", createdAt: new Date() });
22
- const obj = serializer.parse(json);
128
+ const value = deserializeFromEnvelope(envelope, serializer, "json", {
129
+ preserveTypes: true,
130
+ strict: true,
131
+ maxSize: 1_000_000,
132
+ });
23
133
  ```
24
134
 
135
+ `unwrapEnvelope` validates the shape and rejects a payload stamped with a schema
136
+ version newer than this build understands, rather than misreading it.
137
+ `contentType` is derived from the format.
138
+
25
139
  ## Features
26
140
 
27
- - JSON serialization with type transformers
28
- - Envelope pattern for API responses
29
- - Transformer registry
30
- - Support for BigInt, Date, Buffer, and custom types
31
- - Circular reference detection
141
+ - JSON serialization with opt-in type preservation
142
+ - Built-in transformers for Date, BigInt, Map, Set, Buffer and Error
143
+ - Transformer registry for custom types
144
+ - Envelope pattern with schema-version and encoding checks
145
+ - Prototype-pollution protection on reconstruction
146
+ - Size and depth limits on both directions
147
+ - Circular reference detection (on the `preserveTypes` path)
32
148
 
33
149
  ## Use Cases
34
150
 
35
- - API response serialization
36
- - Event payload serialization
37
- - Cache serialization
38
- - Cross-service data transfer
151
+ - Queue and RPC message payloads
152
+ - Cross-service communication
153
+ - Cache value encoding
154
+ - API responses carrying non-JSON types
package/dist/index.d.ts CHANGED
@@ -24,7 +24,7 @@
24
24
  * );
25
25
  * ```
26
26
  */
27
- export type { SerializationFormat, SerializedValue, SerializeOptions, DeserializeOptions, SerializationMetadata, SerializedEnvelope, Serializer, AsyncSerializer, TypeTransformer, UndefinedStrategy, } from "./serializerTypes/index.js";
27
+ export type { SerializationFormat, SerializedValue, SerializeOptions, DeserializeOptions, SerializationMetadata, SerializedEnvelope, Serializer, TypeTransformer, } from "./serializerTypes/index.js";
28
28
  export { JSONSerializer } from "./serializerJson/index.js";
29
29
  export { TransformerRegistry } from "./serializerTransforms/index.js";
30
30
  export { DateTransformer } from "./serializerTransforms/index.js";
@@ -34,7 +34,8 @@ export { SetTransformer } from "./serializerTransforms/index.js";
34
34
  export { BufferTransformer } from "./serializerTransformsExt/index.js";
35
35
  export { ErrorTransformer } from "./serializerTransformsExt/index.js";
36
36
  export { toBase64, fromBase64, encodeUtf8, decodeUtf8, } from "./serializerTransformsExt/index.js";
37
- export { createEnvelope, unwrapEnvelope, serializeToEnvelope, deserializeFromEnvelope, } from "./serializerEnvelope/index.js";
37
+ export { createEnvelope, assertValidEnvelope, contentTypeForFormat, unwrapEnvelope, serializeToEnvelope, deserializeFromEnvelope, } from "./serializerEnvelope/index.js";
38
38
  export { SerializerRegistry } from "./serializerRegistry/index.js";
39
39
  export { createSerializer, createDefaultRegistry, } from "./serializerRegistry/index.js";
40
+ export type { CreateSerializerOptions } from "./serializerRegistry/index.js";
40
41
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -37,7 +37,7 @@ export { BufferTransformer } from "./serializerTransformsExt/index.js";
37
37
  export { ErrorTransformer } from "./serializerTransformsExt/index.js";
38
38
  export { toBase64, fromBase64, encodeUtf8, decodeUtf8, } from "./serializerTransformsExt/index.js";
39
39
  // ─── Envelope ─────────────────────────────────────────────────
40
- export { createEnvelope, unwrapEnvelope, serializeToEnvelope, deserializeFromEnvelope, } from "./serializerEnvelope/index.js";
40
+ export { createEnvelope, assertValidEnvelope, contentTypeForFormat, unwrapEnvelope, serializeToEnvelope, deserializeFromEnvelope, } from "./serializerEnvelope/index.js";
41
41
  // ─── Registry & Factory ───────────────────────────────────────
42
42
  export { SerializerRegistry } from "./serializerRegistry/index.js";
43
43
  export { createSerializer, createDefaultRegistry, } from "./serializerRegistry/index.js";
@@ -5,7 +5,7 @@
5
5
  * so consumers know how to deserialize the payload. Essential for
6
6
  * messaging, queues, RPC, and cross-service communication.
7
7
  */
8
- import type { SerializedEnvelope, SerializedValue } from "../serializerTypes/index.js";
8
+ import type { SerializedEnvelope, SerializedValue, SerializeOptions, DeserializeOptions } from "../serializerTypes/index.js";
9
9
  /**
10
10
  * Create a serialization envelope wrapping data with metadata.
11
11
  *
@@ -19,6 +19,20 @@ export declare function createEnvelope(data: SerializedValue, format?: string, o
19
19
  readonly contentType?: string;
20
20
  readonly encoding?: string;
21
21
  }): SerializedEnvelope;
22
+ /**
23
+ * Maps a format identifier to its MIME content type.
24
+ *
25
+ * Defaulting every envelope to `application/json` regardless of format is how
26
+ * a msgpack payload ends up labelled as JSON on the wire.
27
+ */
28
+ export declare function contentTypeForFormat(format: string): string;
29
+ /**
30
+ * Validates that a value received from the wire is a well-formed envelope.
31
+ *
32
+ * @param envelope - The candidate envelope.
33
+ * @throws {Error} when the shape or schema version is unusable.
34
+ */
35
+ export declare function assertValidEnvelope(envelope: unknown): asserts envelope is SerializedEnvelope;
22
36
  /**
23
37
  * Extract the data from an envelope, validating metadata.
24
38
  *
@@ -34,20 +48,29 @@ export declare function unwrapEnvelope(envelope: SerializedEnvelope, expectedFor
34
48
  * @param value - The value to serialize.
35
49
  * @param serializer - The serializer to use.
36
50
  * @param format - The format identifier for metadata.
51
+ * @param options - Serialize options forwarded to the serializer. Without this
52
+ * the helper could only ever call `serialize(value)`, so `preserveTypes`,
53
+ * `pretty` and the size/depth limits were unreachable through an envelope
54
+ * unless they happened to be baked into the serializer instance.
37
55
  * @returns A SerializedEnvelope containing the serialized data.
38
56
  */
39
57
  export declare function serializeToEnvelope<T>(value: T, serializer: {
40
- serialize: (v: T) => string;
41
- }, format?: string): SerializedEnvelope;
58
+ serialize: (v: T, options?: SerializeOptions) => string;
59
+ contentType?: string;
60
+ }, format?: string, options?: SerializeOptions): SerializedEnvelope;
42
61
  /**
43
62
  * Unwrap an envelope and deserialize the data.
44
63
  *
45
64
  * @param envelope - The envelope to unwrap.
46
65
  * @param deserializer - The deserializer to use.
47
66
  * @param expectedFormat - Optional format to validate against.
67
+ * @param options - Deserialize options forwarded to the deserializer, so that
68
+ * `preserveTypes`, `strict`, `maxSize` and `maxDepth` are reachable through
69
+ * an envelope. Envelope payloads arrive from the wire, which is exactly
70
+ * where those limits matter.
48
71
  * @returns The deserialized value.
49
72
  */
50
73
  export declare function deserializeFromEnvelope<T>(envelope: SerializedEnvelope, deserializer: {
51
- deserialize: <U>(v: string) => U;
52
- }, expectedFormat?: string): T;
74
+ deserialize: <U>(v: string, options?: DeserializeOptions) => U;
75
+ }, expectedFormat?: string, options?: DeserializeOptions): T;
53
76
  //# sourceMappingURL=envelope.core.d.ts.map
@@ -6,7 +6,7 @@
6
6
  * messaging, queues, RPC, and cross-service communication.
7
7
  */
8
8
  import { SerializationFormat, SerializationContentType, SERIALIZATION_SCHEMA_VERSION, } from "@zudojs/constants";
9
- import { encodeUtf8, decodeUtf8 } from "../serializerTransformsExt/index.js";
9
+ import { decodeUtf8 } from "../serializerTransformsExt/index.js";
10
10
  /**
11
11
  * Create a serialization envelope wrapping data with metadata.
12
12
  *
@@ -20,12 +20,66 @@ export function createEnvelope(data, format = SerializationFormat.JSON, options
20
20
  metadata: {
21
21
  format,
22
22
  version: options.version ?? SERIALIZATION_SCHEMA_VERSION,
23
- contentType: options.contentType ?? SerializationContentType.JSON,
23
+ contentType: options.contentType ?? contentTypeForFormat(format),
24
24
  encoding: options.encoding ?? "utf-8",
25
25
  },
26
26
  data,
27
27
  };
28
28
  }
29
+ /**
30
+ * Maps a format identifier to its MIME content type.
31
+ *
32
+ * Defaulting every envelope to `application/json` regardless of format is how
33
+ * a msgpack payload ends up labelled as JSON on the wire.
34
+ */
35
+ export function contentTypeForFormat(format) {
36
+ switch (format) {
37
+ case SerializationFormat.JSON:
38
+ return SerializationContentType.JSON;
39
+ case "text":
40
+ return "text/plain";
41
+ case "binary":
42
+ return "application/octet-stream";
43
+ case "messagepack":
44
+ case "msgpack":
45
+ return "application/msgpack";
46
+ default:
47
+ return "application/octet-stream";
48
+ }
49
+ }
50
+ /**
51
+ * Validates that a value received from the wire is a well-formed envelope.
52
+ *
53
+ * @param envelope - The candidate envelope.
54
+ * @throws {Error} when the shape or schema version is unusable.
55
+ */
56
+ export function assertValidEnvelope(envelope) {
57
+ if (typeof envelope !== "object" || envelope === null) {
58
+ throw new Error(`Malformed envelope: expected an object, got ${envelope === null ? "null" : typeof envelope}`);
59
+ }
60
+ const candidate = envelope;
61
+ if (typeof candidate.metadata !== "object" || candidate.metadata === null) {
62
+ throw new Error("Malformed envelope: missing metadata");
63
+ }
64
+ const metadata = candidate.metadata;
65
+ if (typeof metadata.format !== "string" || metadata.format.length === 0) {
66
+ throw new Error("Malformed envelope: metadata.format is missing");
67
+ }
68
+ if (typeof candidate.data !== "string" &&
69
+ !(candidate.data instanceof Uint8Array)) {
70
+ throw new Error("Malformed envelope: data must be a string or Uint8Array");
71
+ }
72
+ // The version exists so a future producer can be detected rather than
73
+ // silently misread. Older versions stay readable; newer ones do not.
74
+ if (metadata.version !== undefined) {
75
+ if (!Number.isInteger(metadata.version)) {
76
+ throw new Error(`Malformed envelope: metadata.version must be an integer, got ${String(metadata.version)}`);
77
+ }
78
+ if (metadata.version > SERIALIZATION_SCHEMA_VERSION) {
79
+ throw new Error(`Unsupported envelope schema version ${metadata.version}: this build understands up to ${SERIALIZATION_SCHEMA_VERSION}`);
80
+ }
81
+ }
82
+ }
29
83
  /**
30
84
  * Extract the data from an envelope, validating metadata.
31
85
  *
@@ -35,6 +89,7 @@ export function createEnvelope(data, format = SerializationFormat.JSON, options
35
89
  * @throws {Error} when the envelope format doesn't match expectations.
36
90
  */
37
91
  export function unwrapEnvelope(envelope, expectedFormat) {
92
+ assertValidEnvelope(envelope);
38
93
  if (expectedFormat && envelope.metadata.format !== expectedFormat) {
39
94
  throw new Error(`Envelope format mismatch: expected "${expectedFormat}", got "${envelope.metadata.format}"`);
40
95
  }
@@ -46,11 +101,17 @@ export function unwrapEnvelope(envelope, expectedFormat) {
46
101
  * @param value - The value to serialize.
47
102
  * @param serializer - The serializer to use.
48
103
  * @param format - The format identifier for metadata.
104
+ * @param options - Serialize options forwarded to the serializer. Without this
105
+ * the helper could only ever call `serialize(value)`, so `preserveTypes`,
106
+ * `pretty` and the size/depth limits were unreachable through an envelope
107
+ * unless they happened to be baked into the serializer instance.
49
108
  * @returns A SerializedEnvelope containing the serialized data.
50
109
  */
51
- export function serializeToEnvelope(value, serializer, format = SerializationFormat.JSON) {
52
- const data = serializer.serialize(value);
53
- return createEnvelope(data, format);
110
+ export function serializeToEnvelope(value, serializer, format = SerializationFormat.JSON, options) {
111
+ const data = serializer.serialize(value, options);
112
+ return createEnvelope(data, format, {
113
+ contentType: serializer.contentType,
114
+ });
54
115
  }
55
116
  /**
56
117
  * Unwrap an envelope and deserialize the data.
@@ -58,11 +119,21 @@ export function serializeToEnvelope(value, serializer, format = SerializationFor
58
119
  * @param envelope - The envelope to unwrap.
59
120
  * @param deserializer - The deserializer to use.
60
121
  * @param expectedFormat - Optional format to validate against.
122
+ * @param options - Deserialize options forwarded to the deserializer, so that
123
+ * `preserveTypes`, `strict`, `maxSize` and `maxDepth` are reachable through
124
+ * an envelope. Envelope payloads arrive from the wire, which is exactly
125
+ * where those limits matter.
61
126
  * @returns The deserialized value.
62
127
  */
63
- export function deserializeFromEnvelope(envelope, deserializer, expectedFormat) {
128
+ export function deserializeFromEnvelope(envelope, deserializer, expectedFormat, options) {
64
129
  const data = unwrapEnvelope(envelope, expectedFormat);
65
- const str = typeof data === "string" ? data : decodeUtf8(data);
66
- return deserializer.deserialize(str);
130
+ if (typeof data === "string") {
131
+ return deserializer.deserialize(data, options);
132
+ }
133
+ const encoding = (envelope.metadata.encoding ?? "utf-8").toLowerCase();
134
+ if (encoding !== "utf-8" && encoding !== "utf8") {
135
+ throw new Error(`Unsupported envelope encoding "${envelope.metadata.encoding}": only UTF-8 is supported`);
136
+ }
137
+ return deserializer.deserialize(decodeUtf8(data), options);
67
138
  }
68
139
  //# sourceMappingURL=envelope.core.js.map
@@ -3,5 +3,5 @@
3
3
  *
4
4
  * Wraps serialized data with metadata for cross-service communication.
5
5
  */
6
- export { createEnvelope, unwrapEnvelope, serializeToEnvelope, deserializeFromEnvelope, } from "./envelope.core.js";
6
+ export { createEnvelope, assertValidEnvelope, contentTypeForFormat, unwrapEnvelope, serializeToEnvelope, deserializeFromEnvelope, } from "./envelope.core.js";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -3,5 +3,5 @@
3
3
  *
4
4
  * Wraps serialized data with metadata for cross-service communication.
5
5
  */
6
- export { createEnvelope, unwrapEnvelope, serializeToEnvelope, deserializeFromEnvelope, } from "./envelope.core.js";
6
+ export { createEnvelope, assertValidEnvelope, contentTypeForFormat, unwrapEnvelope, serializeToEnvelope, deserializeFromEnvelope, } from "./envelope.core.js";
7
7
  //# sourceMappingURL=index.js.map
@@ -11,8 +11,11 @@ export declare class JSONSerializer implements Serializer<unknown, string> {
11
11
  readonly name = "json";
12
12
  readonly contentType = "application/json";
13
13
  private readonly transformers;
14
+ private readonly defaults;
14
15
  constructor(options?: {
15
16
  readonly transformers?: TransformerRegistry;
17
+ /** Default options merged into every call. */
18
+ readonly defaults?: SerializeOptions & DeserializeOptions;
16
19
  });
17
20
  /** Register a custom type transformer. */
18
21
  registerTransformer(transformer: import("../serializerTypes/index.js").TypeTransformer): void;
@@ -22,5 +25,6 @@ export declare class JSONSerializer implements Serializer<unknown, string> {
22
25
  private restoreValue;
23
26
  private assertValidJson;
24
27
  private assertOutputSize;
28
+ private assertInputSize;
25
29
  }
26
30
  //# sourceMappingURL=jsonSerializer.core.d.ts.map
@@ -8,9 +8,9 @@
8
8
  import { TransformerRegistry } from "../serializerTransforms/index.js";
9
9
  import { DateTransformer, BigIntTransformer, MapTransformer, SetTransformer, } from "../serializerTransforms/index.js";
10
10
  import { BufferTransformer, ErrorTransformer, } from "../serializerTransformsExt/index.js";
11
- import { SerializationLimits, SerializationTags } from "@zudojs/constants";
11
+ import { SerializationLimits, SerializationTags, SCHEMA_FORBIDDEN_KEYS, } from "@zudojs/constants";
12
12
  import { isPlainObject } from "@zudojs/types";
13
- import { assertNoCircularReference, assertDepthWithinLimit, assertSizeWithinLimit, } from "@zudojs/validation";
13
+ import { assertNoCircularReference, assertDepthWithinLimit, } from "@zudojs/validation";
14
14
  /** Default transformer registry with all built-in transformers. */
15
15
  function createDefaultTransformers() {
16
16
  const registry = new TransformerRegistry();
@@ -26,110 +26,136 @@ export class JSONSerializer {
26
26
  name = "json";
27
27
  contentType = "application/json";
28
28
  transformers;
29
+ defaults;
29
30
  constructor(options) {
30
31
  this.transformers = options?.transformers ?? createDefaultTransformers();
32
+ this.defaults = options?.defaults ?? {};
31
33
  }
32
34
  /** Register a custom type transformer. */
33
35
  registerTransformer(transformer) {
34
36
  this.transformers.register(transformer);
35
37
  }
36
38
  serialize(value, options) {
37
- const maxDepth = options?.maxDepth ?? SerializationLimits.MAX_DEPTH;
38
- const maxSize = options?.maxSize ?? SerializationLimits.MAX_SIZE;
39
- if (options?.preserveTypes === true) {
39
+ const opts = { ...this.defaults, ...options };
40
+ const maxDepth = opts.maxDepth ?? SerializationLimits.MAX_DEPTH;
41
+ const maxSize = opts.maxSize ?? SerializationLimits.MAX_SIZE;
42
+ if (opts.preserveTypes === true) {
40
43
  assertNoCircularReference(value);
41
44
  assertDepthWithinLimit(value, maxDepth);
42
- const transformed = this.transformValue(value, 0, maxDepth);
43
- const json = options?.pretty
44
- ? JSON.stringify(transformed, null, options?.indent ?? 2)
45
+ const transformed = this.transformValue(value, 0, maxDepth, opts);
46
+ const json = opts.pretty
47
+ ? JSON.stringify(transformed, null, opts.indent ?? 2)
45
48
  : JSON.stringify(transformed);
46
49
  this.assertOutputSize(json, maxSize);
47
50
  return json;
48
51
  }
49
- const json = options?.pretty
50
- ? JSON.stringify(value, null, options?.indent ?? 2)
52
+ // The fast path stays a bare `JSON.stringify` by default, but a depth
53
+ // limit the caller asked for must still be enforced: `maxDepth` used to
54
+ // be read only when `preserveTypes` was on, so a per-call or per-instance
55
+ // limit was silently ignored on the path most callers use.
56
+ if (opts.maxDepth !== undefined) {
57
+ assertDepthWithinLimit(value, maxDepth);
58
+ }
59
+ const json = opts.pretty
60
+ ? JSON.stringify(value, null, opts.indent ?? 2)
51
61
  : JSON.stringify(value);
52
62
  this.assertOutputSize(json, maxSize);
53
63
  return json;
54
64
  }
55
65
  deserialize(value, options) {
56
- if (options?.strict === true)
66
+ const opts = { ...this.defaults, ...options };
67
+ // Bound the input before parsing. `maxSize` used to apply on the way out
68
+ // only, which is the wrong direction: serialized output is ours, whereas
69
+ // the string handed to `deserialize` arrives from a queue, an RPC peer, or
70
+ // a request body.
71
+ const maxSize = opts.maxSize ?? SerializationLimits.MAX_SIZE;
72
+ this.assertInputSize(value, maxSize);
73
+ if (opts.strict === true)
57
74
  this.assertValidJson(value);
58
75
  const parsed = JSON.parse(value);
59
- if (options?.preserveTypes === true) {
60
- const maxDepth = options?.maxDepth ?? SerializationLimits.MAX_DEPTH;
76
+ if (opts.preserveTypes === true) {
77
+ const maxDepth = opts.maxDepth ?? SerializationLimits.MAX_DEPTH;
61
78
  assertDepthWithinLimit(parsed, maxDepth);
62
- return this.restoreValue(parsed, 0, maxDepth);
79
+ return this.restoreValue(parsed, 0, maxDepth, opts);
80
+ }
81
+ // Same contract on the fast path: an explicit `maxDepth` bounds input
82
+ // that arrives from the wire, whether or not types are being restored.
83
+ if (opts.maxDepth !== undefined) {
84
+ assertDepthWithinLimit(parsed, opts.maxDepth);
63
85
  }
64
86
  return parsed;
65
87
  }
66
- transformValue(value, depth, maxDepth) {
88
+ transformValue(value, depth, maxDepth, options) {
67
89
  if (value === null || value === undefined)
68
90
  return value;
69
91
  if (typeof value === "bigint") {
70
92
  const transformer = this.transformers.findForValue(value);
71
- return transformer ? transformer.serialize(value) : value.toString();
93
+ return transformer
94
+ ? transformer.serialize(value, options)
95
+ : value.toString();
72
96
  }
73
97
  if (typeof value !== "object")
74
98
  return value;
75
- if (depth >= maxDepth)
76
- return value;
99
+ if (depth >= maxDepth) {
100
+ // Depth is pre-checked by assertDepthWithinLimit, so this is a belt-and
101
+ // braces guard. Returning the raw value would silently emit an untagged
102
+ // Map or Date, which cannot round-trip — fail loudly instead.
103
+ throw new Error(`Serialization exceeded maximum depth of ${maxDepth}`);
104
+ }
77
105
  if (Array.isArray(value)) {
78
- return value.map((item) => this.transformValue(item, depth + 1, maxDepth));
106
+ return value.map((item) => this.transformValue(item, depth + 1, maxDepth, options));
79
107
  }
80
108
  const transformer = this.transformers.findForValue(value);
81
109
  if (transformer) {
82
- const raw = transformer.serialize(value);
83
- return this.transformValue(raw, depth + 1, maxDepth);
84
- }
85
- if (value instanceof Map) {
86
- const entries = [];
87
- for (const [k, v] of value) {
88
- entries.push([
89
- this.transformValue(k, depth + 1, maxDepth),
90
- this.transformValue(v, depth + 1, maxDepth),
91
- ]);
92
- }
93
- return {
94
- [SerializationTags.TYPE]: "Map",
95
- [SerializationTags.VALUE]: entries,
96
- };
97
- }
98
- if (value instanceof Set) {
99
- return {
100
- [SerializationTags.TYPE]: "Set",
101
- [SerializationTags.VALUE]: [...value].map((v) => this.transformValue(v, depth + 1, maxDepth)),
102
- };
110
+ const raw = transformer.serialize(value, options);
111
+ return this.transformValue(raw, depth + 1, maxDepth, options);
103
112
  }
104
113
  if (isPlainObject(value)) {
105
114
  const result = {};
106
115
  for (const key of Object.keys(value)) {
107
- result[key] = this.transformValue(value[key], depth + 1, maxDepth);
116
+ defineKey(result, key, this.transformValue(value[key], depth + 1, maxDepth, options), options.allowUnsafeKeys === true);
108
117
  }
109
118
  return result;
110
119
  }
111
120
  return value;
112
121
  }
113
- restoreValue(value, depth, maxDepth) {
122
+ restoreValue(value, depth, maxDepth, options) {
114
123
  if (value === null || value === undefined)
115
124
  return value;
116
125
  if (typeof value !== "object")
117
126
  return value;
118
- if (depth >= maxDepth)
119
- return value;
127
+ if (depth >= maxDepth) {
128
+ throw new Error(`Deserialization exceeded maximum depth of ${maxDepth}`);
129
+ }
120
130
  if (Array.isArray(value)) {
121
- return value.map((item) => this.restoreValue(item, depth + 1, maxDepth));
131
+ return value.map((item) => this.restoreValue(item, depth + 1, maxDepth, options));
122
132
  }
123
133
  const obj = value;
124
134
  const typeTag = obj[SerializationTags.TYPE];
125
- if (typeof typeTag === "string") {
126
- const transformer = this.transformers.get(typeTag);
127
- return transformer.deserialize(value);
135
+ if (typeof typeTag === "string" && this.transformers.has(typeTag)) {
136
+ // Restore the children first. A transformer receives a plain structure
137
+ // and has no way to recurse back into this serializer, so handing it the
138
+ // still-tagged payload is what used to leave a Map full of raw
139
+ // `{$type, $value}` objects.
140
+ const restoredShell = {};
141
+ for (const key of Object.keys(obj)) {
142
+ defineKey(restoredShell, key, key === SerializationTags.TYPE
143
+ ? obj[key]
144
+ : this.restoreValue(obj[key], depth + 1, maxDepth, options), options.allowUnsafeKeys === true);
145
+ }
146
+ return this.transformers.get(typeTag).deserialize(restoredShell, options);
147
+ }
148
+ // An unknown tag is ordinary data. Throwing here let any peer crash the
149
+ // consumer with `{"$type":"anything"}`, and made legitimate payloads that
150
+ // happen to carry a `$type` field unparseable.
151
+ if (typeof typeTag === "string" && options.strict === true) {
152
+ throw new Error(`Unknown serialization type tag: "${typeTag}". ` +
153
+ "Register a transformer for it, or deserialize without strict mode.");
128
154
  }
129
155
  if (isPlainObject(value)) {
130
156
  const result = {};
131
157
  for (const key of Object.keys(value)) {
132
- result[key] = this.restoreValue(value[key], depth + 1, maxDepth);
158
+ defineKey(result, key, this.restoreValue(value[key], depth + 1, maxDepth, options), options.allowUnsafeKeys === true);
133
159
  }
134
160
  return result;
135
161
  }
@@ -144,12 +170,42 @@ export class JSONSerializer {
144
170
  }
145
171
  }
146
172
  assertOutputSize(json, maxSize) {
147
- const size = typeof Buffer !== "undefined"
148
- ? Buffer.byteLength(json, "utf-8")
149
- : new TextEncoder().encode(json).byteLength;
173
+ const size = byteLength(json);
150
174
  if (size > maxSize) {
151
175
  throw new Error(`Serialized payload too large: ${size} bytes (max: ${maxSize})`);
152
176
  }
153
177
  }
178
+ assertInputSize(json, maxSize) {
179
+ const size = byteLength(json);
180
+ if (size > maxSize) {
181
+ throw new Error(`Serialized payload too large: ${size} bytes (max: ${maxSize})`);
182
+ }
183
+ }
184
+ }
185
+ /** Byte length of a string, in whichever runtime we are on. */
186
+ function byteLength(value) {
187
+ return typeof Buffer !== "undefined"
188
+ ? Buffer.byteLength(value, "utf-8")
189
+ : new TextEncoder().encode(value).byteLength;
190
+ }
191
+ /**
192
+ * Assigns a key onto a freshly built object without invoking a setter.
193
+ *
194
+ * Plain assignment of `__proto__` does not create an own property — it calls
195
+ * the inherited setter and replaces the object's prototype, so an attacker's
196
+ * keys resolve on the result while `Object.keys` shows nothing. `defineProperty`
197
+ * always creates a real own property, and forbidden keys are dropped outright
198
+ * unless the caller has explicitly opted in with `allowUnsafeKeys`.
199
+ */
200
+ function defineKey(target, key, value, allowUnsafeKeys) {
201
+ if (!allowUnsafeKeys && SCHEMA_FORBIDDEN_KEYS.has(key)) {
202
+ return;
203
+ }
204
+ Object.defineProperty(target, key, {
205
+ value,
206
+ writable: true,
207
+ enumerable: true,
208
+ configurable: true,
209
+ });
154
210
  }
155
211
  //# sourceMappingURL=jsonSerializer.core.js.map
@@ -6,4 +6,5 @@
6
6
  */
7
7
  export { SerializerRegistry } from "./serializerRegistry.core.js";
8
8
  export { createSerializer, createDefaultRegistry, } from "./serializerRegistry.factory.js";
9
+ export type { CreateSerializerOptions } from "./serializerRegistry.factory.js";
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -6,21 +6,33 @@
6
6
  * exposing concrete class constructors.
7
7
  */
8
8
  import type { Serializer, SerializationFormat } from "../serializerTypes/index.js";
9
+ import { SerializationFormat as Format } from "@zudojs/constants";
9
10
  import { TransformerRegistry } from "../serializerTransforms/index.js";
10
11
  import { SerializerRegistry } from "./serializerRegistry.core.js";
12
+ /** Options accepted when creating a serializer. */
13
+ export interface CreateSerializerOptions {
14
+ /** Transformer registry to use instead of the built-in one. */
15
+ readonly transformers?: TransformerRegistry;
16
+ /** Pretty-print by default. Overridable per call. */
17
+ readonly pretty?: boolean;
18
+ /** Preserve special JS types by default. Overridable per call. */
19
+ readonly preserveTypes?: boolean;
20
+ }
11
21
  /**
12
22
  * Create a serializer for the given format.
13
23
  *
24
+ * The `"json"` overload reports `Serializer<unknown, string>` rather than the
25
+ * `string | Uint8Array` union. JSON output is always a string, and the union
26
+ * made the result unusable with this package's own `serializeToEnvelope`,
27
+ * which needs a string-producing serializer.
28
+ *
14
29
  * @param format - The serialization format (e.g., "json").
15
30
  * @param options - Optional configuration for the serializer.
16
31
  * @returns A Serializer instance.
17
32
  * @throws {UnsupportedSerializationFormatError} when the format is not supported.
18
33
  */
19
- export declare function createSerializer(format: SerializationFormat, options?: {
20
- readonly transformers?: TransformerRegistry;
21
- readonly pretty?: boolean;
22
- readonly preserveTypes?: boolean;
23
- }): Serializer;
34
+ export declare function createSerializer(format: typeof Format.JSON, options?: CreateSerializerOptions): Serializer<unknown, string>;
35
+ export declare function createSerializer(format: SerializationFormat, options?: CreateSerializerOptions): Serializer;
24
36
  /**
25
37
  * Create a default serializer registry pre-populated with built-in serializers.
26
38
  *
@@ -10,18 +10,21 @@ import { UnsupportedSerializationFormatError } from "@zudojs/errors";
10
10
  import { SerializationFormat as Format } from "@zudojs/constants";
11
11
  import { TransformerRegistry } from "../serializerTransforms/index.js";
12
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
13
  export function createSerializer(format, options) {
22
14
  switch (format) {
23
15
  case Format.JSON:
24
- return new JSONSerializer({ transformers: options?.transformers });
16
+ // `pretty` and `preserveTypes` used to be accepted and thrown away.
17
+ // They are now carried as per-instance defaults that each call can
18
+ // still override.
19
+ return new JSONSerializer({
20
+ transformers: options?.transformers,
21
+ defaults: {
22
+ ...(options?.pretty !== undefined ? { pretty: options.pretty } : {}),
23
+ ...(options?.preserveTypes !== undefined
24
+ ? { preserveTypes: options.preserveTypes }
25
+ : {}),
26
+ },
27
+ });
25
28
  default:
26
29
  throw new UnsupportedSerializationFormatError(format);
27
30
  }
@@ -2,7 +2,10 @@
2
2
  * @zudojs/serialization — Error transformer.
3
3
  *
4
4
  * Preserves Error instances across serialization boundaries.
5
- * Stack traces are controlled via options for security.
5
+ *
6
+ * Stack traces are omitted unless `includeStack` is set: a stack names
7
+ * absolute file paths and internal call structure, and a serialized error
8
+ * routinely ends up in a queue message, an RPC response, or a log sink.
6
9
  */
7
10
  import type { TypeTransformer } from "../serializerTypes/index.js";
8
11
  /** Transformer that handles Error round-trips. */
@@ -2,7 +2,10 @@
2
2
  * @zudojs/serialization — Error transformer.
3
3
  *
4
4
  * Preserves Error instances across serialization boundaries.
5
- * Stack traces are controlled via options for security.
5
+ *
6
+ * Stack traces are omitted unless `includeStack` is set: a stack names
7
+ * absolute file paths and internal call structure, and a serialized error
8
+ * routinely ends up in a queue message, an RPC response, or a log sink.
6
9
  */
7
10
  import { SerializationTags } from "@zudojs/constants";
8
11
  const ERROR_TYPE = "Error";
@@ -12,13 +15,13 @@ export const ErrorTransformer = {
12
15
  canSerialize(value) {
13
16
  return value instanceof Error;
14
17
  },
15
- serialize(value) {
18
+ serialize(value, options) {
16
19
  const result = {
17
20
  [SerializationTags.TYPE]: ERROR_TYPE,
18
21
  name: value.name,
19
22
  message: value.message,
20
23
  };
21
- if (value.stack !== undefined) {
24
+ if (options?.includeStack === true && value.stack !== undefined) {
22
25
  result.stack = value.stack;
23
26
  }
24
27
  const code = value.code;
@@ -35,9 +38,17 @@ export const ErrorTransformer = {
35
38
  if (typeof name === "string" && name !== "Error") {
36
39
  error.name = name;
37
40
  }
41
+ // A stack from the wire is attacker-controlled text. Restoring it over the
42
+ // real one would make the reconstructed error lie about where it came
43
+ // from, so it is carried as a separate, clearly-named field instead.
38
44
  const stack = data.stack;
39
45
  if (typeof stack === "string") {
40
- error.stack = stack;
46
+ Object.defineProperty(error, "originalStack", {
47
+ value: stack,
48
+ writable: true,
49
+ enumerable: false,
50
+ configurable: true,
51
+ });
41
52
  }
42
53
  const code = data.code;
43
54
  if (typeof code === "string") {
@@ -3,5 +3,5 @@
3
3
  *
4
4
  * Core contracts for serializers, transformers, and serialization options.
5
5
  */
6
- export type { SerializationFormat, SerializedValue, SerializeOptions, DeserializeOptions, SerializationMetadata, SerializedEnvelope, Serializer, AsyncSerializer, TypeTransformer, UndefinedStrategy, } from "./serializer.type.js";
6
+ export type { SerializationFormat, SerializedValue, SerializeOptions, DeserializeOptions, SerializationMetadata, SerializedEnvelope, Serializer, TypeTransformer, } from "./serializer.type.js";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -21,6 +21,18 @@ export interface SerializeOptions {
21
21
  readonly maxSize?: number;
22
22
  /** Indentation for pretty-print (default: 2). */
23
23
  readonly indent?: number;
24
+ /**
25
+ * Include `Error.stack` when serializing errors (default: false).
26
+ *
27
+ * A stack names absolute file paths and internal call structure. Serialized
28
+ * errors travel to queues, RPC peers and log sinks, so stacks are opt-in.
29
+ */
30
+ readonly includeStack?: boolean;
31
+ /**
32
+ * Permit `__proto__`, `constructor` and `prototype` as data keys
33
+ * (default: false). See {@link DeserializeOptions.allowUnsafeKeys}.
34
+ */
35
+ readonly allowUnsafeKeys?: boolean;
24
36
  }
25
37
  /** Options for deserialization operations. */
26
38
  export interface DeserializeOptions {
@@ -28,10 +40,24 @@ export interface DeserializeOptions {
28
40
  readonly preserveTypes?: boolean;
29
41
  /** Maximum object depth before throwing. */
30
42
  readonly maxDepth?: number;
31
- /** Throw on malformed or unexpected data. */
43
+ /**
44
+ * Throw on malformed or unexpected data.
45
+ *
46
+ * Also makes an unrecognised `$type` tag an error rather than treating the
47
+ * object as ordinary data.
48
+ */
32
49
  readonly strict?: boolean;
33
- /** Allow prototype-polluting keys during reconstruction. */
50
+ /**
51
+ * Allow prototype-polluting keys during reconstruction (default: false).
52
+ *
53
+ * With this off — the default — `__proto__`, `constructor` and `prototype`
54
+ * are dropped from reconstructed objects. Turning it on reinstates them as
55
+ * real own properties (never as a prototype assignment), which is only safe
56
+ * when the payload is trusted.
57
+ */
34
58
  readonly allowUnsafeKeys?: boolean;
59
+ /** Maximum accepted input size in bytes. */
60
+ readonly maxSize?: number;
35
61
  }
36
62
  /** Metadata attached to serialized output. */
37
63
  export interface SerializationMetadata {
@@ -60,13 +86,6 @@ export interface Serializer<TValue = unknown, TSerialized = SerializedValue> {
60
86
  /** Deserialize a value from the target format. */
61
87
  deserialize<T = TValue>(value: TSerialized, options?: DeserializeOptions): T;
62
88
  }
63
- /** Asynchronous serializer contract (for streaming / large payloads). */
64
- export interface AsyncSerializer<TValue = unknown, TSerialized = SerializedValue> {
65
- readonly name: string;
66
- readonly contentType: string;
67
- serialize(value: TValue, options?: SerializeOptions): Promise<TSerialized>;
68
- deserialize<T = TValue>(value: TSerialized, options?: DeserializeOptions): Promise<T>;
69
- }
70
89
  /** Transforms a specific JS type during serialization. */
71
90
  export interface TypeTransformer<TValue = unknown> {
72
91
  /** Tag name used in tagged representations (e.g., "Date"). */
@@ -74,10 +93,8 @@ export interface TypeTransformer<TValue = unknown> {
74
93
  /** Returns true when this transformer handles the given value. */
75
94
  canSerialize(value: unknown): value is TValue;
76
95
  /** Convert the value into a JSON-safe representation. */
77
- serialize(value: TValue): unknown;
96
+ serialize(value: TValue, options?: SerializeOptions): unknown;
78
97
  /** Reconstruct the original value from the serialized form. */
79
- deserialize(value: unknown): TValue;
98
+ deserialize(value: unknown, options?: DeserializeOptions): TValue;
80
99
  }
81
- /** Strategy for handling `undefined` values. */
82
- export type UndefinedStrategy = "omit" | "null" | "preserve";
83
100
  //# sourceMappingURL=serializer.type.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zudojs/serialization",
3
- "version": "0.1.0",
3
+ "version": "1.0.1",
4
4
  "description": "Data translation layer with JSON serializer, type transformers, envelopes, and registry for Zudojs applications.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -13,25 +13,26 @@
13
13
  },
14
14
  "files": [
15
15
  "dist",
16
+ "!dist/**/*.map",
17
+ "!dist/**/*.tsbuildinfo",
18
+ "!dist/.tsbuildinfo",
16
19
  "LICENSE"
17
20
  ],
18
- "scripts": {
19
- "build": "tsc",
20
- "typecheck": "tsc --noEmit",
21
- "test": "vitest run",
22
- "test:watch": "vitest"
23
- },
24
21
  "dependencies": {
25
- "@zudojs/constants": "0.1.0",
26
- "@zudojs/errors": "0.1.0",
27
- "@zudojs/types": "0.1.0",
28
- "@zudojs/validation": "0.1.0"
22
+ "@zudojs/constants": "1.0.1",
23
+ "@zudojs/errors": "1.0.1",
24
+ "@zudojs/types": "1.0.0",
25
+ "@zudojs/validation": "1.0.1"
29
26
  },
30
27
  "devDependencies": {
31
- "typescript": "^5.7.0",
28
+ "typescript": "7.0.2",
32
29
  "vitest": "^4.1.11"
33
30
  },
34
31
  "license": "MIT",
32
+ "author": {
33
+ "name": "Oluwayemi Oyinlola",
34
+ "url": "https://github.com/oyinlola-tech"
35
+ },
35
36
  "keywords": [
36
37
  "zudojs",
37
38
  "serialization",
@@ -46,8 +47,19 @@
46
47
  },
47
48
  "module": "./dist/index.js",
48
49
  "homepage": "https://github.com/oyinlola-tech/zudo#readme",
50
+ "bugs": {
51
+ "url": "https://github.com/oyinlola-tech/zudo/issues"
52
+ },
49
53
  "repository": {
50
54
  "type": "git",
51
- "url": "https://github.com/oyinlola-tech/zudo"
55
+ "url": "https://github.com/oyinlola-tech/zudo",
56
+ "directory": "packages/serialization"
57
+ },
58
+ "scripts": {
59
+ "build": "tsc -p tsconfig.json",
60
+ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit",
61
+ "test": "vitest run",
62
+ "test:watch": "vitest",
63
+ "clean": "rm -rf dist"
52
64
  }
53
- }
65
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAGjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,UAAU,GACX,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACL,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,+BAA+B,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAgBH,iEAAiE;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,iEAAiE;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,iEAAiE;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EACL,QAAQ,EACR,UAAU,EACV,UAAU,EACV,UAAU,GACX,MAAM,oCAAoC,CAAC;AAE5C,iEAAiE;AACjE,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AAEvC,iEAAiE;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACL,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,+BAA+B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"envelope.core.d.ts","sourceRoot":"","sources":["../../src/serializerEnvelope/envelope.core.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAElB,eAAe,EAChB,MAAM,6BAA6B,CAAC;AAQrC;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,eAAe,EACrB,MAAM,GAAE,MAAiC,EACzC,OAAO,GAAE;IACP,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACvB,GACL,kBAAkB,CAUpB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,kBAAkB,EAC5B,cAAc,CAAC,EAAE,MAAM,GACtB,eAAe,CAOjB;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,KAAK,EAAE,CAAC,EACR,UAAU,EAAE;IAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAA;CAAE,EAC3C,MAAM,GAAE,MAAiC,GACxC,kBAAkB,CAGpB;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EACvC,QAAQ,EAAE,kBAAkB,EAC5B,YAAY,EAAE;IAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC,CAAA;CAAE,EAClD,cAAc,CAAC,EAAE,MAAM,GACtB,CAAC,CAIH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"envelope.core.js","sourceRoot":"","sources":["../../src/serializerEnvelope/envelope.core.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAE7E;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAqB,EACrB,SAAiB,mBAAmB,CAAC,IAAI,EACzC,UAII,EAAE;IAEN,OAAO;QACL,QAAQ,EAAE;YACR,MAAM;YACN,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,4BAA4B;YACxD,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,wBAAwB,CAAC,IAAI;YACjE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO;SACtC;QACD,IAAI;KACL,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,QAA4B,EAC5B,cAAuB;IAEvB,IAAI,cAAc,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CACb,uCAAuC,cAAc,WAAW,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAC5F,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAQ,EACR,UAA2C,EAC3C,SAAiB,mBAAmB,CAAC,IAAI;IAEzC,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAA4B,EAC5B,YAAkD,EAClD,cAAuB;IAEvB,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/D,OAAO,YAAY,CAAC,WAAW,CAAI,GAAG,CAAC,CAAC;AAC1C,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serializerEnvelope/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/serializerEnvelope/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,oBAAoB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serializerJson/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/serializerJson/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsonSerializer.core.d.ts","sourceRoot":"","sources":["../../src/serializerJson/jsonSerializer.core.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AA+BvE,qBAAa,cAAe,YAAW,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC;IAChE,SAAgB,IAAI,UAAU;IAC9B,SAAgB,WAAW,sBAAsB;IAEjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;gBAEvC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAA;KAAE;IAIrE,0CAA0C;IAC1C,mBAAmB,CACjB,WAAW,EAAE,OAAO,6BAA6B,EAAE,eAAe,GACjE,IAAI;IAIP,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAsB7D,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,CAAC;IAcxE,OAAO,CAAC,cAAc;IA+DtB,OAAO,CAAC,YAAY;IAoCpB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,gBAAgB;CAWzB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"jsonSerializer.core.js","sourceRoot":"","sources":["../../src/serializerJson/jsonSerializer.core.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serializerRegistry/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EACL,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/serializerRegistry/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EACL,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"serializerRegistry.core.d.ts","sourceRoot":"","sources":["../../src/serializerRegistry/serializerRegistry.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAG9D;;;;;GAKG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiC;IAE7D,sFAAsF;IACtF,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAItC,uCAAuC;IACvC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,kFAAkF;IAClF,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAM7B,iEAAiE;IACjE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,+CAA+C;IAC/C,KAAK,IAAI,MAAM,EAAE;IAIjB,yCAAyC;IACzC,KAAK,IAAI,IAAI;IAIb,wCAAwC;IACxC,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"serializerRegistry.core.js","sourceRoot":"","sources":["../../src/serializerRegistry/serializerRegistry.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IACZ,WAAW,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE7D,sFAAsF;IACtF,QAAQ,CAAC,UAAsB;QAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACpD,CAAC;IAED,uCAAuC;IACvC,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,kFAAkF;IAClF,GAAG,CAAC,IAAY;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;QACzD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,iEAAiE;IACjE,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,+CAA+C;IAC/C,KAAK;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,yCAAyC;IACzC,KAAK;QACH,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,wCAAwC;IACxC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC/B,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"serializerRegistry.factory.d.ts","sourceRoot":"","sources":["../../src/serializerRegistry/serializerRegistry.factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,mBAAmB,EACpB,MAAM,6BAA6B,CAAC;AAIrC,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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"serializerRegistry.factory.js","sourceRoot":"","sources":["../../src/serializerRegistry/serializerRegistry.factory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,mCAAmC,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,mBAAmB,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAClE,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"}
@@ -1 +0,0 @@
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,CA4BrD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"bigint.transformer.js","sourceRoot":"","sources":["../../src/serializerTransforms/bigint.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,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,CACb,yDAAyD,OAAO,GAAG,EAAE,CACtE,CAAC;QACJ,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"}
@@ -1 +0,0 @@
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,CA4BjD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"date.transformer.js","sourceRoot":"","sources":["../../src/serializerTransforms/date.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,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,CACb,uDAAuD,OAAO,GAAG,EAAE,CACpE,CAAC;QACJ,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"}
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
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,CA4BjE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"map.transformer.js","sourceRoot":"","sources":["../../src/serializerTransforms/map.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,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,CACb,qDAAqD,OAAO,GAAG,EAAE,CAClE,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,GAAgC,CAAC,CAAC;IACnD,CAAC;CACF,CAAC"}
@@ -1 +0,0 @@
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,CAwBxD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"set.transformer.js","sourceRoot":"","sources":["../../src/serializerTransforms/set.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,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,CACb,qDAAqD,OAAO,GAAG,EAAE,CAClE,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;CACF,CAAC"}
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"transformerRegistry.core.js","sourceRoot":"","sources":["../../src/serializerTransforms/transformerRegistry.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;;;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"}
@@ -1 +0,0 @@
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,CAyBzD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"buffer.transformer.js","sourceRoot":"","sources":["../../src/serializerTransformsExt/buffer.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,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,CACb,yDAAyD,OAAO,GAAG,EAAE,CACtE,CAAC;QACJ,CAAC;QACD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;CACF,CAAC"}
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"error.transformer.js","sourceRoot":"","sources":["../../src/serializerTransformsExt/error.transformer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,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"}
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serializerTypes/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,eAAe,EACf,iBAAiB,GAClB,MAAM,sBAAsB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/serializerTypes/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"serializer.type.d.ts","sourceRoot":"","sources":["../../src/serializerTypes/serializer.type.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"serializer.type.js","sourceRoot":"","sources":["../../src/serializerTypes/serializer.type.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}