seroval 0.11.6 → 0.12.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 (122) hide show
  1. package/README.md +29 -16
  2. package/dist/cjs/development/index.cjs +3072 -4875
  3. package/dist/cjs/development/index.cjs.map +4 -4
  4. package/dist/cjs/production/index.cjs +3 -3
  5. package/dist/esm/development/index.mjs +3069 -4874
  6. package/dist/esm/development/index.mjs.map +4 -4
  7. package/dist/esm/production/index.mjs +3 -3
  8. package/dist/types/core/Serializer.d.ts +2 -0
  9. package/dist/types/core/Serializer.d.ts.map +1 -0
  10. package/dist/types/core/UnsupportedTypeError.d.ts +1 -0
  11. package/dist/types/core/UnsupportedTypeError.d.ts.map +1 -0
  12. package/dist/types/core/assert.d.ts +1 -0
  13. package/dist/types/core/assert.d.ts.map +1 -0
  14. package/dist/types/core/base/async.d.ts +30 -0
  15. package/dist/types/core/base/async.d.ts.map +1 -0
  16. package/dist/types/core/base/stream.d.ts +40 -0
  17. package/dist/types/core/base/stream.d.ts.map +1 -0
  18. package/dist/types/core/base/sync.d.ts +32 -0
  19. package/dist/types/core/base/sync.d.ts.map +1 -0
  20. package/dist/types/core/base-primitives.d.ts +3 -1
  21. package/dist/types/core/base-primitives.d.ts.map +1 -0
  22. package/dist/types/core/compat.d.ts +1 -0
  23. package/dist/types/core/compat.d.ts.map +1 -0
  24. package/dist/types/core/constants.d.ts +19 -4
  25. package/dist/types/core/constants.d.ts.map +1 -0
  26. package/dist/types/core/constructors.d.ts +1 -0
  27. package/dist/types/core/constructors.d.ts.map +1 -0
  28. package/dist/types/core/cross/async.d.ts +8 -3
  29. package/dist/types/core/cross/async.d.ts.map +1 -0
  30. package/dist/types/core/cross/cross-parser.d.ts +8 -0
  31. package/dist/types/core/cross/cross-parser.d.ts.map +1 -0
  32. package/dist/types/core/cross/index.d.ts +12 -5
  33. package/dist/types/core/cross/index.d.ts.map +1 -0
  34. package/dist/types/core/cross/serialize.d.ts +23 -5
  35. package/dist/types/core/cross/serialize.d.ts.map +1 -0
  36. package/dist/types/core/cross/stream.d.ts +8 -3
  37. package/dist/types/core/cross/stream.d.ts.map +1 -0
  38. package/dist/types/core/cross/sync.d.ts +8 -3
  39. package/dist/types/core/cross/sync.d.ts.map +1 -0
  40. package/dist/types/core/get-identifier.d.ts +1 -0
  41. package/dist/types/core/get-identifier.d.ts.map +1 -0
  42. package/dist/types/core/keys.d.ts +1 -0
  43. package/dist/types/core/keys.d.ts.map +1 -0
  44. package/dist/types/core/literals.d.ts +1 -0
  45. package/dist/types/core/literals.d.ts.map +1 -0
  46. package/dist/types/core/parser-context.d.ts +23 -0
  47. package/dist/types/core/parser-context.d.ts.map +1 -0
  48. package/dist/types/core/plugin.d.ts +26 -0
  49. package/dist/types/core/plugin.d.ts.map +1 -0
  50. package/dist/types/core/promise-to-result.d.ts +1 -0
  51. package/dist/types/core/promise-to-result.d.ts.map +1 -0
  52. package/dist/types/core/reference.d.ts +1 -0
  53. package/dist/types/core/reference.d.ts.map +1 -0
  54. package/dist/types/core/serializer-context.old.d.ts +165 -0
  55. package/dist/types/core/serializer-context.old.d.ts.map +1 -0
  56. package/dist/types/core/shared.d.ts +4 -7
  57. package/dist/types/core/shared.d.ts.map +1 -0
  58. package/dist/types/core/string.d.ts +1 -0
  59. package/dist/types/core/string.d.ts.map +1 -0
  60. package/dist/types/core/tree/async.d.ts +8 -3
  61. package/dist/types/core/tree/async.d.ts.map +1 -0
  62. package/dist/types/core/tree/deserialize.d.ts +49 -2
  63. package/dist/types/core/tree/deserialize.d.ts.map +1 -0
  64. package/dist/types/core/tree/index.d.ts +10 -7
  65. package/dist/types/core/tree/index.d.ts.map +1 -0
  66. package/dist/types/core/tree/serialize.d.ts +37 -4
  67. package/dist/types/core/tree/serialize.d.ts.map +1 -0
  68. package/dist/types/core/tree/sync.d.ts +8 -3
  69. package/dist/types/core/tree/sync.d.ts.map +1 -0
  70. package/dist/types/core/types.d.ts +10 -3
  71. package/dist/types/core/types.d.ts.map +1 -0
  72. package/dist/types/core/web-api.d.ts +1 -0
  73. package/dist/types/core/web-api.d.ts.map +1 -0
  74. package/dist/types/index.d.ts +3 -0
  75. package/dist/types/index.d.ts.map +1 -0
  76. package/dist/types/types.d.ts +1 -0
  77. package/dist/types/types.d.ts.map +1 -0
  78. package/package.json +2 -2
  79. package/src/core/Serializer.ts +2 -0
  80. package/src/core/base/async.ts +804 -0
  81. package/src/core/base/stream.ts +496 -0
  82. package/src/core/base/sync.ts +675 -0
  83. package/src/core/base-primitives.ts +22 -0
  84. package/src/core/constants.ts +61 -45
  85. package/src/core/cross/async.ts +6 -751
  86. package/src/core/cross/cross-parser.ts +9 -0
  87. package/src/core/cross/index.ts +62 -84
  88. package/src/core/cross/serialize.ts +71 -862
  89. package/src/core/cross/stream.ts +6 -873
  90. package/src/core/cross/sync.ts +6 -624
  91. package/src/core/is-serializable.new.ts +208 -0
  92. package/src/core/keys.ts +1 -1
  93. package/src/core/parser-context.ts +131 -0
  94. package/src/core/plugin.ts +55 -0
  95. package/src/core/serializer-context.new.ts +1168 -0
  96. package/src/core/serializer-context.old.ts +1126 -0
  97. package/src/core/shared.ts +46 -123
  98. package/src/core/tree/async.ts +6 -750
  99. package/src/core/tree/deserialize.ts +423 -420
  100. package/src/core/tree/index.ts +49 -91
  101. package/src/core/tree/parser.ts +45 -0
  102. package/src/core/tree/serialize.ts +122 -828
  103. package/src/core/tree/sync.ts +6 -624
  104. package/src/core/types.ts +13 -2
  105. package/src/example.ts +28 -0
  106. package/src/index.ts +3 -0
  107. package/dist/types/core/assignments.d.ts +0 -33
  108. package/dist/types/core/context.d.ts +0 -9
  109. package/dist/types/core/cross/context.d.ts +0 -37
  110. package/dist/types/core/cross/primitives.d.ts +0 -9
  111. package/dist/types/core/cross/web-api.d.ts +0 -4
  112. package/dist/types/core/tree/context.d.ts +0 -44
  113. package/dist/types/core/tree/primitives.d.ts +0 -9
  114. package/dist/types/core/tree/web-api.d.ts +0 -4
  115. package/src/core/assignments.ts +0 -159
  116. package/src/core/context.ts +0 -15
  117. package/src/core/cross/context.ts +0 -102
  118. package/src/core/cross/primitives.ts +0 -128
  119. package/src/core/cross/web-api.ts +0 -50
  120. package/src/core/tree/context.ts +0 -125
  121. package/src/core/tree/primitives.ts +0 -123
  122. package/src/core/tree/web-api.ts +0 -50
@@ -1,5 +1,3 @@
1
- import type { SerovalConstantNode } from './types';
2
-
3
1
  export const enum SerovalConstant {
4
2
  Null = 0,
5
3
  Undefined = 1,
@@ -52,6 +50,7 @@ export const enum SerovalNodeType {
52
50
  Event = 37,
53
51
  CustomEvent = 38,
54
52
  DOMException = 39,
53
+ Plugin = 40,
55
54
  }
56
55
 
57
56
  export const enum SerovalObjectFlags {
@@ -127,48 +126,65 @@ export const SYMBOL_REF: Record<Symbols, WellKnownSymbols> = {
127
126
  [Symbols.Unscopables]: Symbol.unscopables,
128
127
  };
129
128
 
130
- export function serializeConstant(node: SerovalConstantNode): string {
131
- switch (node.s) {
132
- case SerovalConstant.True:
133
- return '!0';
134
- case SerovalConstant.False:
135
- return '!1';
136
- case SerovalConstant.Undefined:
137
- return 'void 0';
138
- case SerovalConstant.Null:
139
- return 'null';
140
- case SerovalConstant.NegativeZero:
141
- return '-0';
142
- case SerovalConstant.Infinity:
143
- return '1/0';
144
- case SerovalConstant.NegativeInfinity:
145
- return '-1/0';
146
- case SerovalConstant.NaN:
147
- return 'NaN';
148
- default:
149
- throw new Error('invariant');
150
- }
151
- }
129
+ export const CONSTANT_STRING: Record<SerovalConstant, string> = {
130
+ [SerovalConstant.True]: '!0',
131
+ [SerovalConstant.False]: '!1',
132
+ [SerovalConstant.Undefined]: 'void 0',
133
+ [SerovalConstant.Null]: 'null',
134
+ [SerovalConstant.NegativeZero]: '-0',
135
+ [SerovalConstant.Infinity]: '1/0',
136
+ [SerovalConstant.NegativeInfinity]: '-1/0',
137
+ [SerovalConstant.NaN]: '0/0',
138
+ };
152
139
 
153
- export function deserializeConstant(node: SerovalConstantNode): unknown {
154
- switch (node.s) {
155
- case SerovalConstant.True:
156
- return true;
157
- case SerovalConstant.False:
158
- return false;
159
- case SerovalConstant.Undefined:
160
- return undefined;
161
- case SerovalConstant.Null:
162
- return null;
163
- case SerovalConstant.NegativeZero:
164
- return -0;
165
- case SerovalConstant.Infinity:
166
- return Infinity;
167
- case SerovalConstant.NegativeInfinity:
168
- return -Infinity;
169
- case SerovalConstant.NaN:
170
- return NaN;
171
- default:
172
- throw new Error('invariant');
173
- }
140
+ export const CONSTANT_VAL: Record<SerovalConstant, unknown> = {
141
+ [SerovalConstant.True]: true,
142
+ [SerovalConstant.False]: false,
143
+ [SerovalConstant.Undefined]: undefined,
144
+ [SerovalConstant.Null]: null,
145
+ [SerovalConstant.NegativeZero]: -0,
146
+ [SerovalConstant.Infinity]: Infinity,
147
+ [SerovalConstant.NegativeInfinity]: -Infinity,
148
+ [SerovalConstant.NaN]: NaN,
149
+ };
150
+
151
+ export const enum ErrorConstructorTag {
152
+ Error = 0,
153
+ EvalError = 1,
154
+ RangeError = 2,
155
+ ReferenceError = 3,
156
+ SyntaxError = 4,
157
+ TypeError = 5,
158
+ URIError = 6,
174
159
  }
160
+
161
+ export const ERROR_CONSTRUCTOR_STRING: Record<ErrorConstructorTag, string> = {
162
+ [ErrorConstructorTag.Error]: 'Error',
163
+ [ErrorConstructorTag.EvalError]: 'EvalError',
164
+ [ErrorConstructorTag.RangeError]: 'RangeError',
165
+ [ErrorConstructorTag.ReferenceError]: 'ReferenceError',
166
+ [ErrorConstructorTag.SyntaxError]: 'SyntaxError',
167
+ [ErrorConstructorTag.TypeError]: 'TypeError',
168
+ [ErrorConstructorTag.URIError]: 'URIError',
169
+ };
170
+
171
+ type ErrorConstructors =
172
+ | ErrorConstructor
173
+ | EvalErrorConstructor
174
+ | RangeErrorConstructor
175
+ | ReferenceErrorConstructor
176
+ | SyntaxErrorConstructor
177
+ | TypeErrorConstructor
178
+ | URIErrorConstructor;
179
+
180
+ export const ERROR_CONSTRUCTOR: Record<ErrorConstructorTag, ErrorConstructors> = {
181
+ [ErrorConstructorTag.Error]: Error,
182
+ [ErrorConstructorTag.EvalError]: EvalError,
183
+ [ErrorConstructorTag.RangeError]: RangeError,
184
+ [ErrorConstructorTag.ReferenceError]: ReferenceError,
185
+ [ErrorConstructorTag.SyntaxError]: SyntaxError,
186
+ [ErrorConstructorTag.TypeError]: TypeError,
187
+ [ErrorConstructorTag.URIError]: URIError,
188
+ };
189
+
190
+ export const UNIVERSAL_SENTINEL = Symbol('why');