@solidjs/web 2.0.0-beta.3 → 2.0.0-beta.30

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 (73) hide show
  1. package/README.md +27 -4
  2. package/dist/dev.cjs +1211 -205
  3. package/dist/dev.js +1175 -199
  4. package/dist/server.cjs +1342 -234
  5. package/dist/server.js +1304 -231
  6. package/dist/web.cjs +1195 -196
  7. package/dist/web.js +1159 -190
  8. package/frames/dist/client.cjs +1746 -0
  9. package/frames/dist/client.dev.cjs +1759 -0
  10. package/frames/dist/client.dev.js +1747 -0
  11. package/frames/dist/client.js +1734 -0
  12. package/frames/dist/server.cjs +2426 -0
  13. package/frames/dist/server.js +2414 -0
  14. package/frames/package.json +30 -0
  15. package/package.json +287 -38
  16. package/serialization/dist/serialization.cjs +169 -0
  17. package/serialization/dist/serialization.js +159 -0
  18. package/serialization/package.json +20 -0
  19. package/serialization/types/index.d.ts +157 -0
  20. package/serialization/types-cjs/index.d.cts +157 -0
  21. package/serialization/types-cjs/package.json +3 -0
  22. package/server-functions/dist/client.cjs +613 -0
  23. package/server-functions/dist/client.js +585 -0
  24. package/server-functions/dist/server.cjs +904 -0
  25. package/server-functions/dist/server.js +875 -0
  26. package/server-functions/package.json +30 -0
  27. package/storage/package.json +8 -3
  28. package/storage/types/index.d.ts +26 -0
  29. package/storage/types-cjs/index.d.cts +28 -0
  30. package/storage/types-cjs/package.json +3 -0
  31. package/types/client.d.ts +125 -21
  32. package/types/core.d.ts +4 -3
  33. package/types/frames/client.d.ts +20 -0
  34. package/types/frames/frame-client.d.ts +270 -0
  35. package/types/frames/frame-sink.d.ts +168 -0
  36. package/types/frames/frame-transport.d.ts +196 -0
  37. package/types/frames/serializer.d.ts +157 -0
  38. package/types/frames/server.d.ts +30 -0
  39. package/types/index.d.ts +211 -26
  40. package/types/jsx-properties.d.ts +93 -0
  41. package/types/jsx.d.ts +4150 -1
  42. package/types/response.d.ts +129 -0
  43. package/types/serializer.d.ts +157 -0
  44. package/types/server-functions/client.d.ts +200 -0
  45. package/types/server-functions/flash.d.ts +38 -0
  46. package/types/server-functions/server.d.ts +490 -0
  47. package/types/server-functions/shared.d.ts +445 -0
  48. package/types/server-mock.d.ts +93 -0
  49. package/types/server.d.ts +221 -28
  50. package/types-cjs/client.d.cts +192 -0
  51. package/types-cjs/core.d.cts +4 -0
  52. package/types-cjs/frames/client.d.cts +20 -0
  53. package/types-cjs/frames/frame-client.d.cts +270 -0
  54. package/types-cjs/frames/frame-sink.d.cts +168 -0
  55. package/types-cjs/frames/frame-transport.d.cts +196 -0
  56. package/types-cjs/frames/serializer.d.cts +157 -0
  57. package/types-cjs/frames/server.d.cts +30 -0
  58. package/types-cjs/index.d.cts +231 -0
  59. package/types-cjs/jsx-properties.d.cts +93 -0
  60. package/types-cjs/jsx.d.cts +4150 -0
  61. package/types-cjs/package.json +3 -0
  62. package/types-cjs/response.d.cts +129 -0
  63. package/types-cjs/serializer.d.cts +157 -0
  64. package/types-cjs/server-functions/client.d.cts +200 -0
  65. package/types-cjs/server-functions/flash.d.cts +38 -0
  66. package/types-cjs/server-functions/server.d.cts +490 -0
  67. package/types-cjs/server-functions/shared.d.cts +445 -0
  68. package/types-cjs/server-mock.d.cts +165 -0
  69. package/types-cjs/server.d.cts +349 -0
  70. package/storage/types/src/client.d.ts +0 -1
  71. package/storage/types/src/index.d.ts +0 -46
  72. package/storage/types/src/server-mock.d.ts +0 -72
  73. package/storage/types/storage/src/index.d.ts +0 -2
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@solidjs/web/frames",
3
+ "main": "./dist/server.cjs",
4
+ "module": "./dist/server.js",
5
+ "types": "../types/frames/server.d.ts",
6
+ "type": "module",
7
+ "sideEffects": false,
8
+ "exports": {
9
+ ".": {
10
+ "browser": {
11
+ "import": {
12
+ "types": "../types/frames/client.d.ts",
13
+ "default": "./dist/client.js"
14
+ },
15
+ "require": {
16
+ "types": "../types-cjs/frames/client.d.cts",
17
+ "default": "./dist/client.cjs"
18
+ }
19
+ },
20
+ "import": {
21
+ "types": "../types/frames/server.d.ts",
22
+ "default": "./dist/server.js"
23
+ },
24
+ "require": {
25
+ "types": "../types-cjs/frames/server.d.cts",
26
+ "default": "./dist/server.cjs"
27
+ }
28
+ }
29
+ }
30
+ }
package/package.json CHANGED
@@ -1,99 +1,348 @@
1
1
  {
2
2
  "name": "@solidjs/web",
3
- "description": "Solid's web runtime for the browser and the server",
4
- "version": "2.0.0-beta.3",
3
+ "description": "Solid's web runtime: client rendering, hydration, SSR, and DOM-specific control flow (Portal, Dynamic).",
4
+ "version": "2.0.0-beta.30",
5
5
  "author": "Ryan Carniato",
6
6
  "license": "MIT",
7
7
  "homepage": "https://solidjs.com",
8
8
  "repository": {
9
9
  "type": "git",
10
- "url": "https://github.com/solidjs/solid-web"
10
+ "url": "git+https://github.com/solidjs/solid.git",
11
+ "directory": "packages/solid-web"
11
12
  },
12
13
  "publishConfig": {
13
14
  "access": "public"
14
15
  },
15
16
  "main": "./dist/server.cjs",
16
17
  "module": "./dist/server.js",
17
- "unpkg": "./dist/web.cjs",
18
+ "unpkg": "./dist/web.js",
19
+ "jsdelivr": "./dist/web.js",
18
20
  "types": "./types/index.d.ts",
19
21
  "type": "module",
20
22
  "sideEffects": false,
21
23
  "files": [
22
24
  "dist",
23
25
  "types",
26
+ "types-cjs",
24
27
  "package.json",
25
28
  "storage/dist",
26
29
  "storage/types",
27
- "storage/package.json"
30
+ "storage/types-cjs",
31
+ "storage/package.json",
32
+ "serialization/dist",
33
+ "serialization/types",
34
+ "serialization/types-cjs",
35
+ "serialization/package.json",
36
+ "server-functions/dist",
37
+ "server-functions/package.json",
38
+ "frames/dist",
39
+ "frames/package.json"
28
40
  ],
29
41
  "exports": {
30
42
  ".": {
31
43
  "worker": {
32
- "types": "./types/index.d.ts",
33
- "import": "./dist/server.js",
34
- "require": "./dist/server.cjs"
44
+ "import": {
45
+ "types": "./types/index.d.ts",
46
+ "default": "./dist/server.js"
47
+ },
48
+ "require": {
49
+ "types": "./types-cjs/index.d.cts",
50
+ "default": "./dist/server.cjs"
51
+ }
35
52
  },
36
53
  "browser": {
37
54
  "development": {
55
+ "import": {
56
+ "types": "./types/index.d.ts",
57
+ "default": "./dist/dev.js"
58
+ },
59
+ "require": {
60
+ "types": "./types-cjs/index.d.cts",
61
+ "default": "./dist/dev.cjs"
62
+ }
63
+ },
64
+ "import": {
38
65
  "types": "./types/index.d.ts",
39
- "import": "./dist/dev.js",
40
- "require": "./dist/dev.cjs"
66
+ "default": "./dist/web.js"
41
67
  },
42
- "types": "./types/index.d.ts",
43
- "import": "./dist/web.js",
44
- "require": "./dist/web.cjs"
68
+ "require": {
69
+ "types": "./types-cjs/index.d.cts",
70
+ "default": "./dist/web.cjs"
71
+ }
45
72
  },
46
73
  "deno": {
47
- "types": "./types/index.d.ts",
48
- "import": "./dist/server.js",
49
- "require": "./dist/server.cjs"
74
+ "import": {
75
+ "types": "./types/index.d.ts",
76
+ "default": "./dist/server.js"
77
+ },
78
+ "require": {
79
+ "types": "./types-cjs/index.d.cts",
80
+ "default": "./dist/server.cjs"
81
+ }
50
82
  },
51
83
  "node": {
52
- "types": "./types/index.d.ts",
53
- "import": "./dist/server.js",
54
- "require": "./dist/server.cjs"
84
+ "import": {
85
+ "types": "./types/index.d.ts",
86
+ "default": "./dist/server.js"
87
+ },
88
+ "require": {
89
+ "types": "./types-cjs/index.d.cts",
90
+ "default": "./dist/server.cjs"
91
+ }
55
92
  },
56
93
  "development": {
94
+ "import": {
95
+ "types": "./types/index.d.ts",
96
+ "default": "./dist/dev.js"
97
+ },
98
+ "require": {
99
+ "types": "./types-cjs/index.d.cts",
100
+ "default": "./dist/dev.cjs"
101
+ }
102
+ },
103
+ "import": {
57
104
  "types": "./types/index.d.ts",
58
- "import": "./dist/dev.js",
59
- "require": "./dist/dev.cjs"
105
+ "default": "./dist/web.js"
106
+ },
107
+ "require": {
108
+ "types": "./types-cjs/index.d.cts",
109
+ "default": "./dist/web.cjs"
110
+ }
111
+ },
112
+ "./jsx-runtime": {
113
+ "import": {
114
+ "types": "./types/jsx.d.ts",
115
+ "default": "./dist/web.js"
60
116
  },
61
- "types": "./types/index.d.ts",
62
- "import": "./dist/web.js",
63
- "require": "./dist/web.cjs"
117
+ "require": {
118
+ "types": "./types-cjs/jsx.d.cts",
119
+ "default": "./dist/web.cjs"
120
+ }
121
+ },
122
+ "./jsx-dev-runtime": {
123
+ "import": {
124
+ "types": "./types/jsx.d.ts",
125
+ "default": "./dist/dev.js"
126
+ },
127
+ "require": {
128
+ "types": "./types-cjs/jsx.d.cts",
129
+ "default": "./dist/dev.cjs"
130
+ }
64
131
  },
65
132
  "./storage": {
66
- "types": "./storage/types/index.d.ts",
67
- "import": "./storage/dist/storage.js",
68
- "require": "./storage/dist/storage.cjs"
133
+ "import": {
134
+ "types": "./storage/types/index.d.ts",
135
+ "default": "./storage/dist/storage.js"
136
+ },
137
+ "require": {
138
+ "types": "./storage/types-cjs/index.d.cts",
139
+ "default": "./storage/dist/storage.cjs"
140
+ }
141
+ },
142
+ "./serialization": {
143
+ "import": {
144
+ "types": "./serialization/types/index.d.ts",
145
+ "default": "./serialization/dist/serialization.js"
146
+ },
147
+ "require": {
148
+ "types": "./serialization/types-cjs/index.d.cts",
149
+ "default": "./serialization/dist/serialization.cjs"
150
+ }
151
+ },
152
+ "./server-functions": {
153
+ "worker": {
154
+ "import": {
155
+ "types": "./types/server-functions/server.d.ts",
156
+ "default": "./server-functions/dist/server.js"
157
+ },
158
+ "require": {
159
+ "types": "./types-cjs/server-functions/server.d.cts",
160
+ "default": "./server-functions/dist/server.cjs"
161
+ }
162
+ },
163
+ "browser": {
164
+ "import": {
165
+ "types": "./types/server-functions/client.d.ts",
166
+ "default": "./server-functions/dist/client.js"
167
+ },
168
+ "require": {
169
+ "types": "./types-cjs/server-functions/client.d.cts",
170
+ "default": "./server-functions/dist/client.cjs"
171
+ }
172
+ },
173
+ "deno": {
174
+ "import": {
175
+ "types": "./types/server-functions/server.d.ts",
176
+ "default": "./server-functions/dist/server.js"
177
+ },
178
+ "require": {
179
+ "types": "./types-cjs/server-functions/server.d.cts",
180
+ "default": "./server-functions/dist/server.cjs"
181
+ }
182
+ },
183
+ "node": {
184
+ "import": {
185
+ "types": "./types/server-functions/server.d.ts",
186
+ "default": "./server-functions/dist/server.js"
187
+ },
188
+ "require": {
189
+ "types": "./types-cjs/server-functions/server.d.cts",
190
+ "default": "./server-functions/dist/server.cjs"
191
+ }
192
+ },
193
+ "import": {
194
+ "types": "./types/server-functions/client.d.ts",
195
+ "default": "./server-functions/dist/client.js"
196
+ },
197
+ "require": {
198
+ "types": "./types-cjs/server-functions/client.d.cts",
199
+ "default": "./server-functions/dist/client.cjs"
200
+ }
201
+ },
202
+ "./server-functions/server": {
203
+ "import": {
204
+ "types": "./types/server-functions/server.d.ts",
205
+ "default": "./server-functions/dist/server.js"
206
+ },
207
+ "require": {
208
+ "types": "./types-cjs/server-functions/server.d.cts",
209
+ "default": "./server-functions/dist/server.cjs"
210
+ }
211
+ },
212
+ "./server-functions/client": {
213
+ "import": {
214
+ "types": "./types/server-functions/client.d.ts",
215
+ "default": "./server-functions/dist/client.js"
216
+ },
217
+ "require": {
218
+ "types": "./types-cjs/server-functions/client.d.cts",
219
+ "default": "./server-functions/dist/client.cjs"
220
+ }
221
+ },
222
+ "./frames": {
223
+ "worker": {
224
+ "import": {
225
+ "types": "./types/frames/server.d.ts",
226
+ "default": "./frames/dist/server.js"
227
+ },
228
+ "require": {
229
+ "types": "./types-cjs/frames/server.d.cts",
230
+ "default": "./frames/dist/server.cjs"
231
+ }
232
+ },
233
+ "browser": {
234
+ "development": {
235
+ "import": {
236
+ "types": "./types/frames/client.d.ts",
237
+ "default": "./frames/dist/client.dev.js"
238
+ },
239
+ "require": {
240
+ "types": "./types-cjs/frames/client.d.cts",
241
+ "default": "./frames/dist/client.dev.cjs"
242
+ }
243
+ },
244
+ "import": {
245
+ "types": "./types/frames/client.d.ts",
246
+ "default": "./frames/dist/client.js"
247
+ },
248
+ "require": {
249
+ "types": "./types-cjs/frames/client.d.cts",
250
+ "default": "./frames/dist/client.cjs"
251
+ }
252
+ },
253
+ "deno": {
254
+ "import": {
255
+ "types": "./types/frames/server.d.ts",
256
+ "default": "./frames/dist/server.js"
257
+ },
258
+ "require": {
259
+ "types": "./types-cjs/frames/server.d.cts",
260
+ "default": "./frames/dist/server.cjs"
261
+ }
262
+ },
263
+ "node": {
264
+ "import": {
265
+ "types": "./types/frames/server.d.ts",
266
+ "default": "./frames/dist/server.js"
267
+ },
268
+ "require": {
269
+ "types": "./types-cjs/frames/server.d.cts",
270
+ "default": "./frames/dist/server.cjs"
271
+ }
272
+ },
273
+ "development": {
274
+ "import": {
275
+ "types": "./types/frames/client.d.ts",
276
+ "default": "./frames/dist/client.dev.js"
277
+ },
278
+ "require": {
279
+ "types": "./types-cjs/frames/client.d.cts",
280
+ "default": "./frames/dist/client.dev.cjs"
281
+ }
282
+ },
283
+ "import": {
284
+ "types": "./types/frames/client.d.ts",
285
+ "default": "./frames/dist/client.js"
286
+ },
287
+ "require": {
288
+ "types": "./types-cjs/frames/client.d.cts",
289
+ "default": "./frames/dist/client.cjs"
290
+ }
291
+ },
292
+ "./frames/server": {
293
+ "import": {
294
+ "types": "./types/frames/server.d.ts",
295
+ "default": "./frames/dist/server.js"
296
+ },
297
+ "require": {
298
+ "types": "./types-cjs/frames/server.d.cts",
299
+ "default": "./frames/dist/server.cjs"
300
+ }
301
+ },
302
+ "./frames/client": {
303
+ "import": {
304
+ "types": "./types/frames/client.d.ts",
305
+ "default": "./frames/dist/client.js"
306
+ },
307
+ "require": {
308
+ "types": "./types-cjs/frames/client.d.cts",
309
+ "default": "./frames/dist/client.cjs"
310
+ }
69
311
  },
70
- "./dist/*": "./dist/*",
71
312
  "./types/*": "./types/*"
72
313
  },
73
314
  "dependencies": {
74
- "seroval": "^1.1.0",
75
- "seroval-plugins": "^1.1.0"
315
+ "seroval": "~1.5.4",
316
+ "seroval-plugins": "~1.5.4"
76
317
  },
77
318
  "peerDependencies": {
78
- "solid-js": "^2.0.0-beta.3",
79
- "@solidjs/signals": "^0.13.3"
319
+ "solid-js": "^2.0.0-beta.30"
80
320
  },
81
321
  "devDependencies": {
82
- "solid-js": "2.0.0-beta.3"
322
+ "solid-js": "2.0.0-beta.30"
83
323
  },
84
324
  "scripts": {
85
- "build": "npm-run-all -nl build:*",
325
+ "build": "npm-run-all -nl build:clean types:copy-jsx build:js",
86
326
  "build:clean": "rimraf dist/",
87
327
  "build:js": "rollup -c",
88
328
  "link": "symlink-dir . node_modules/@solidjs/web",
89
- "types": "npm-run-all -nl types:*",
90
- "types:clean": "rimraf types/",
329
+ "types": "npm-run-all -nl types:clean types:copy-jsx types:web types:copy-web types:web-storage types:copy-server-functions types:web-frames types:copy-serialization types:copy-frames types:cjs",
330
+ "types:clean": "rimraf types/ types-cjs/ storage/types/ storage/types-cjs/ serialization/types/ serialization/types-cjs/ frames/types/",
331
+ "types:copy-jsx": "ncp ../../node_modules/@dom-expressions/runtime/src/jsx.d.ts ./src/jsx.d.ts && ncp ../../node_modules/@dom-expressions/runtime/src/jsx-properties.d.ts ./src/jsx-properties.d.ts && dom-expressions-jsx-types --input ./src/jsx.d.ts --element \"SolidElement | Node | ArrayElement\" --import 'import type { Element as SolidElement } from \"solid-js\";'",
91
332
  "types:web": "tsc --project ./tsconfig.build.json",
92
- "types:copy-web": "ncp ../../node_modules/dom-expressions/src/client.d.ts ./types/client.d.ts && ncp ../../node_modules/dom-expressions/src/server.d.ts ./types/server.d.ts",
333
+ "types:copy-web": "ncp ../../node_modules/@dom-expressions/runtime/src/client.d.ts ./types/client.d.ts && ncp ../../node_modules/@dom-expressions/runtime/src/server.d.ts ./types/server.d.ts && ncp ../../node_modules/@dom-expressions/runtime/src/serializer.d.ts ./types/serializer.d.ts && ncp ../../node_modules/@dom-expressions/runtime/src/response.d.ts ./types/response.d.ts && ncp ./src/jsx.d.ts ./types/jsx.d.ts && ncp ./src/jsx-properties.d.ts ./types/jsx-properties.d.ts",
93
334
  "types:web-storage": "tsc --project ./storage/tsconfig.build.json",
335
+ "types:web-frames": "tsc --project ./frames/tsconfig.build.json",
336
+ "types:copy-serialization": "node -e \"fs.mkdirSync('./serialization/types', { recursive: true }); fs.copyFileSync('../../node_modules/@dom-expressions/runtime/src/serializer.d.ts', './serialization/types/index.d.ts');\"",
337
+ "types:copy-server-functions": "node -e \"fs.mkdirSync('./types/server-functions', { recursive: true }); for (const f of ['shared', 'flash', 'client', 'server']) fs.copyFileSync('../../node_modules/@dom-expressions/runtime/src/server-functions/' + f + '.d.ts', './types/server-functions/' + f + '.d.ts');\"",
338
+ "types:copy-frames": "node -e \"fs.mkdirSync('./types/frames', { recursive: true }); for (const f of ['frame-client', 'frame-transport', 'frame-sink', 'serializer']) fs.copyFileSync('../../node_modules/@dom-expressions/runtime/src/' + f + '.d.ts', './types/frames/' + f + '.d.ts'); for (const f of ['client', 'server']) fs.writeFileSync('./types/frames/' + f + '.d.ts', fs.readFileSync('./frames/types/' + f + '.d.ts', 'utf8').replaceAll('@dom-expressions/runtime/src/', './'));\"",
339
+ "types:cjs": "node ../../scripts/sync-dual-types.mjs ./types ./types-cjs ./storage/types ./storage/types-cjs ./serialization/types ./serialization/types-cjs",
94
340
  "test": "vitest run && vitest run --config vite.config.server.mjs && vitest run --config vite.config.hydrate.mjs",
95
341
  "test:server": "vitest run --config vite.config.server.mjs",
96
342
  "coverage": "vitest run --coverage",
97
- "test-types": "tsc --project tsconfig.test.json"
343
+ "bench": "vitest bench --run",
344
+ "bench:server": "vitest bench --run --config vite.config.server-bench.mjs",
345
+ "test-types": "npm-run-all -nl types test-types:tsc",
346
+ "test-types:tsc": "tsc --project tsconfig.test.json"
98
347
  }
99
348
  }
@@ -0,0 +1,169 @@
1
+ 'use strict';
2
+
3
+ var seroval = require('seroval');
4
+ var web = require('seroval-plugins/web');
5
+
6
+ const DEFAULT_DISABLED_FEATURES = seroval.Feature.AggregateError | seroval.Feature.BigIntTypedArray;
7
+ const serializeOnlyDisabledFeatures = () => process.env.NODE_ENV === "development" ? 0 : seroval.Feature.ErrorPrototypeStack;
8
+ const HYDRATION_GLOBAL = "_$HY.r";
9
+ const DEFAULT_WEB_PLUGINS = Object.freeze([web.AbortSignalPlugin,
10
+ web.CustomEventPlugin, web.DOMExceptionPlugin, web.EventPlugin,
11
+ web.FormDataPlugin, web.HeadersPlugin, web.ReadableStreamPlugin, web.RequestPlugin, web.ResponsePlugin, web.URLSearchParamsPlugin, web.URLPlugin]);
12
+ function resolveSerializerPlugins(customPlugins) {
13
+ return customPlugins ? [...customPlugins, ...DEFAULT_WEB_PLUGINS] : [...DEFAULT_WEB_PLUGINS];
14
+ }
15
+ function createSerializer(options) {
16
+ return new seroval.Serializer({
17
+ ...options,
18
+ plugins: resolveSerializerPlugins(options.plugins),
19
+ disabledFeatures: (options.disabledFeatures === undefined ? DEFAULT_DISABLED_FEATURES : options.disabledFeatures) | serializeOnlyDisabledFeatures()
20
+ });
21
+ }
22
+ function createHydrationSerializer({
23
+ onData,
24
+ onDone,
25
+ scopeId,
26
+ onError,
27
+ plugins
28
+ }) {
29
+ return createSerializer({
30
+ scopeId,
31
+ plugins,
32
+ globalIdentifier: HYDRATION_GLOBAL,
33
+ onData,
34
+ onDone,
35
+ onError
36
+ });
37
+ }
38
+ function getLocalHeaderScript(id) {
39
+ return seroval.getCrossReferenceHeader(id) + ";";
40
+ }
41
+ const JSON_CODEC_DISABLED_FEATURES = seroval.Feature.RegExp;
42
+ const JSON_CODEC_DEPTH_LIMIT = 64;
43
+ function resolveCodecOptions({
44
+ plugins,
45
+ disabledFeatures,
46
+ depthLimit
47
+ } = {}) {
48
+ return {
49
+ plugins: resolveSerializerPlugins(plugins),
50
+ disabledFeatures: disabledFeatures === undefined ? JSON_CODEC_DISABLED_FEATURES : disabledFeatures,
51
+ depthLimit: depthLimit === undefined ? JSON_CODEC_DEPTH_LIMIT : depthLimit
52
+ };
53
+ }
54
+ function serializeJSON(value, {
55
+ onParse,
56
+ onDone,
57
+ onError,
58
+ ...codecOptions
59
+ }) {
60
+ const resolved = resolveCodecOptions(codecOptions);
61
+ return seroval.toCrossJSONStream(value, {
62
+ onParse,
63
+ onDone,
64
+ onError,
65
+ ...resolved,
66
+ disabledFeatures: resolved.disabledFeatures | serializeOnlyDisabledFeatures()
67
+ });
68
+ }
69
+ function createJSONDeserializer(options) {
70
+ const refs = new Map();
71
+ const resolved = resolveCodecOptions(options);
72
+ return function deserializeJSONChunk(node) {
73
+ return seroval.fromCrossJSON(node, {
74
+ refs,
75
+ ...resolved
76
+ });
77
+ };
78
+ }
79
+ function createJSONSerializer({
80
+ onData,
81
+ onDone,
82
+ onError,
83
+ plugins,
84
+ disabledFeatures,
85
+ depthLimit
86
+ }) {
87
+ const resolved = resolveCodecOptions({
88
+ plugins,
89
+ disabledFeatures,
90
+ depthLimit
91
+ });
92
+ const refs = new Map();
93
+ const cancels = new Set();
94
+ let pendingWrites = 0;
95
+ let flushed = false;
96
+ let done = false;
97
+ const maybeDone = () => {
98
+ if (flushed && pendingWrites === 0 && !done) {
99
+ done = true;
100
+ onDone && onDone();
101
+ }
102
+ };
103
+ return {
104
+ write(key, value) {
105
+ if (flushed) return;
106
+ pendingWrites++;
107
+ let settled = false;
108
+ let cancel = null;
109
+ const stream = seroval.toCrossJSONStream(value, {
110
+ refs,
111
+ plugins: resolved.plugins,
112
+ disabledFeatures: resolved.disabledFeatures | serializeOnlyDisabledFeatures(),
113
+ onParse(node, initial) {
114
+ onData({
115
+ key,
116
+ node,
117
+ initial
118
+ });
119
+ },
120
+ onError,
121
+ onDone() {
122
+ settled = true;
123
+ if (cancel) cancels.delete(cancel);
124
+ pendingWrites--;
125
+ maybeDone();
126
+ }
127
+ });
128
+ if (!settled) {
129
+ cancel = stream;
130
+ cancels.add(cancel);
131
+ }
132
+ },
133
+ flush() {
134
+ flushed = true;
135
+ maybeDone();
136
+ },
137
+ close() {
138
+ flushed = true;
139
+ for (const cancel of cancels) cancel();
140
+ cancels.clear();
141
+ }
142
+ };
143
+ }
144
+ function createJSONDataTable(options) {
145
+ const deserialize = createJSONDeserializer(options);
146
+ const table = new Map();
147
+ return {
148
+ apply(record) {
149
+ const value = deserialize(record.node);
150
+ if (record.initial) table.set(record.key, value);
151
+ },
152
+ get(key) {
153
+ return table.get(key);
154
+ },
155
+ resolve(ref) {
156
+ return table.get(ref.$ref);
157
+ }
158
+ };
159
+ }
160
+
161
+ exports.DEFAULT_WEB_PLUGINS = DEFAULT_WEB_PLUGINS;
162
+ exports.createHydrationSerializer = createHydrationSerializer;
163
+ exports.createJSONDataTable = createJSONDataTable;
164
+ exports.createJSONDeserializer = createJSONDeserializer;
165
+ exports.createJSONSerializer = createJSONSerializer;
166
+ exports.createSerializer = createSerializer;
167
+ exports.getLocalHeaderScript = getLocalHeaderScript;
168
+ exports.resolveSerializerPlugins = resolveSerializerPlugins;
169
+ exports.serializeJSON = serializeJSON;