@solidjs/web 2.0.0-experimental.9 → 2.0.0-rc.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 (85) hide show
  1. package/README.md +22 -4
  2. package/dist/dev.cjs +1588 -224
  3. package/dist/dev.js +1513 -200
  4. package/dist/server.cjs +2722 -254
  5. package/dist/server.js +2659 -245
  6. package/dist/web.cjs +1524 -218
  7. package/dist/web.js +1449 -194
  8. package/frames/dist/client.cjs +1916 -0
  9. package/frames/dist/client.dev.cjs +1933 -0
  10. package/frames/dist/client.dev.js +1921 -0
  11. package/frames/dist/client.js +1904 -0
  12. package/frames/dist/server.cjs +3756 -0
  13. package/frames/dist/server.js +3743 -0
  14. package/frames/package.json +30 -0
  15. package/package.json +350 -37
  16. package/serialization/decode/package.json +20 -0
  17. package/serialization/dist/decode.cjs +122 -0
  18. package/serialization/dist/decode.js +116 -0
  19. package/serialization/dist/serialization.cjs +244 -0
  20. package/serialization/dist/serialization.js +227 -0
  21. package/serialization/package.json +20 -0
  22. package/serialization/types/index.d.ts +182 -0
  23. package/serialization/types/serializer-decode.d.ts +182 -0
  24. package/serialization/types-cjs/index.d.cts +182 -0
  25. package/serialization/types-cjs/package.json +3 -0
  26. package/serialization/types-cjs/serializer-decode.d.cts +182 -0
  27. package/server-functions/dist/client.cjs +793 -0
  28. package/server-functions/dist/client.js +763 -0
  29. package/server-functions/dist/rich-args.cjs +11 -0
  30. package/server-functions/dist/rich-args.js +9 -0
  31. package/server-functions/dist/server.cjs +1171 -0
  32. package/server-functions/dist/server.dev.cjs +1171 -0
  33. package/server-functions/dist/server.dev.js +1137 -0
  34. package/server-functions/dist/server.js +1137 -0
  35. package/server-functions/package.json +40 -0
  36. package/server-functions/rich-args/package.json +20 -0
  37. package/storage/package.json +8 -3
  38. package/storage/types/index.d.ts +26 -0
  39. package/storage/types-cjs/index.d.cts +28 -0
  40. package/storage/types-cjs/package.json +3 -0
  41. package/types/client.d.ts +290 -27
  42. package/types/cookies.d.ts +93 -0
  43. package/types/core.d.ts +6 -2
  44. package/types/frames/client.d.ts +36 -0
  45. package/types/frames/frame-client.d.ts +338 -0
  46. package/types/frames/frame-sink.d.ts +194 -0
  47. package/types/frames/frame-transport.d.ts +222 -0
  48. package/types/frames/serializer.d.ts +182 -0
  49. package/types/frames/server.d.ts +52 -0
  50. package/types/index.d.ts +223 -24
  51. package/types/jsx-properties.d.ts +93 -0
  52. package/types/jsx.d.ts +4159 -1
  53. package/types/response.d.ts +174 -0
  54. package/types/serializer-decode.d.ts +182 -0
  55. package/types/serializer.d.ts +182 -0
  56. package/types/server-functions/client.d.ts +231 -0
  57. package/types/server-functions/flash.d.ts +38 -0
  58. package/types/server-functions/rich-args.d.ts +10 -0
  59. package/types/server-functions/server.d.ts +616 -0
  60. package/types/server-functions/shared.d.ts +523 -0
  61. package/types/server-mock.d.ts +249 -12
  62. package/types/server.d.ts +424 -51
  63. package/types-cjs/client.d.cts +337 -0
  64. package/types-cjs/cookies.d.cts +93 -0
  65. package/types-cjs/core.d.cts +6 -0
  66. package/types-cjs/frames/client.d.cts +36 -0
  67. package/types-cjs/frames/frame-client.d.cts +338 -0
  68. package/types-cjs/frames/frame-sink.d.cts +194 -0
  69. package/types-cjs/frames/frame-transport.d.cts +222 -0
  70. package/types-cjs/frames/serializer.d.cts +182 -0
  71. package/types-cjs/frames/server.d.cts +52 -0
  72. package/types-cjs/index.d.cts +244 -0
  73. package/types-cjs/jsx-properties.d.cts +93 -0
  74. package/types-cjs/jsx.d.cts +4159 -0
  75. package/types-cjs/package.json +3 -0
  76. package/types-cjs/response.d.cts +174 -0
  77. package/types-cjs/serializer-decode.d.cts +182 -0
  78. package/types-cjs/serializer.d.cts +182 -0
  79. package/types-cjs/server-functions/client.d.cts +231 -0
  80. package/types-cjs/server-functions/flash.d.cts +38 -0
  81. package/types-cjs/server-functions/rich-args.d.cts +10 -0
  82. package/types-cjs/server-functions/server.d.cts +616 -0
  83. package/types-cjs/server-functions/shared.d.cts +523 -0
  84. package/types-cjs/server-mock.d.cts +277 -0
  85. package/types-cjs/server.d.cts +523 -0
@@ -0,0 +1,116 @@
1
+ import { Feature, fromCrossJSON } from 'seroval';
2
+ import { AbortSignalPlugin, CustomEventPlugin, DOMExceptionPlugin, EventPlugin, FormDataPlugin, HeadersPlugin, ReadableStreamPlugin, RequestPlugin, ResponsePlugin, URLSearchParamsPlugin, URLPlugin } from 'seroval-plugins/web';
3
+
4
+ const STATE = Symbol.for("dom-expressions.container-trace-state");
5
+ const state = globalThis[STATE] || (globalThis[STATE] = {
6
+ materialized: new WeakMap(),
7
+ materializedValues: new WeakSet()
8
+ });
9
+ const TRACE = Symbol.for("dom-expressions.container-trace");
10
+ function materialize(marker) {
11
+ let value = state.materialized.get(marker.$tr);
12
+ if (value === undefined) {
13
+ value = state.materializeTrace(marker);
14
+ state.materialized.set(marker.$tr, value);
15
+ if (value !== null && typeof value === "object") state.materializedValues.add(value);
16
+ }
17
+ return value;
18
+ }
19
+ function parseTrace(value, ctx) {
20
+ const trace = value[TRACE];
21
+ return {
22
+ a: trace.array ? 1 : 0,
23
+ i: ctx.parse(trace.subscribe())
24
+ };
25
+ }
26
+ const ContainerTracePlugin = {
27
+ tag: "dom-expressions/container-trace",
28
+ test(value) {
29
+ return value != null && typeof value === "object" && TRACE in value;
30
+ },
31
+ parse: {
32
+ sync() {
33
+ throw new Error("A reactive container can only be serialized by a streaming serializer.");
34
+ },
35
+ async async(value, ctx) {
36
+ const trace = value[TRACE];
37
+ return {
38
+ a: trace.array ? 1 : 0,
39
+ i: await ctx.parse(trace.subscribe())
40
+ };
41
+ },
42
+ stream: parseTrace
43
+ },
44
+ serialize(node, ctx) {
45
+ return "{$tr:" + ctx.serialize(node.i) + ",$ta:" + node.a + "}";
46
+ },
47
+ deserialize(node, ctx) {
48
+ const iterable = ctx.deserialize(node.i);
49
+ const marker = {
50
+ $tr: iterable,
51
+ $ta: node.a
52
+ };
53
+ return state.materializeTrace ? materialize(marker) : marker;
54
+ }
55
+ };
56
+
57
+ const DEFAULT_WEB_PLUGINS = Object.freeze([AbortSignalPlugin,
58
+ CustomEventPlugin, DOMExceptionPlugin, EventPlugin,
59
+ FormDataPlugin, HeadersPlugin, ReadableStreamPlugin, RequestPlugin, ResponsePlugin, URLSearchParamsPlugin, URLPlugin,
60
+ ContainerTracePlugin]);
61
+ function resolveSerializerPlugins(customPlugins) {
62
+ return customPlugins ? [...customPlugins, ...DEFAULT_WEB_PLUGINS] : [...DEFAULT_WEB_PLUGINS];
63
+ }
64
+ const JSON_CODEC_DISABLED_FEATURES = Feature.RegExp;
65
+ const JSON_CODEC_DEPTH_LIMIT = 64;
66
+ function resolveCodecOptions({
67
+ plugins,
68
+ disabledFeatures,
69
+ depthLimit
70
+ } = {}) {
71
+ return {
72
+ plugins: resolveSerializerPlugins(plugins),
73
+ disabledFeatures: disabledFeatures === undefined ? JSON_CODEC_DISABLED_FEATURES : disabledFeatures,
74
+ depthLimit: depthLimit === undefined ? JSON_CODEC_DEPTH_LIMIT : depthLimit
75
+ };
76
+ }
77
+ function createJSONDeserializer(options) {
78
+ const refs = new Map();
79
+ const resolved = resolveCodecOptions(options);
80
+ function deserializeJSONChunk(node) {
81
+ return fromCrossJSON(node, {
82
+ refs,
83
+ ...resolved
84
+ });
85
+ }
86
+ deserializeJSONChunk.abort = function abort(error) {
87
+ for (const value of refs.values()) {
88
+ if (value === null || typeof value !== "object") continue;
89
+ if (value.__SEROVAL_STREAM__) {
90
+ value.throw(error);
91
+ } else if (typeof value.s === "function" && typeof value.f === "function" && value.p instanceof Promise) {
92
+ value.p.then(undefined, () => {});
93
+ value.f(error);
94
+ }
95
+ }
96
+ };
97
+ return deserializeJSONChunk;
98
+ }
99
+ function createJSONDataTable(options) {
100
+ const deserialize = createJSONDeserializer(options);
101
+ const table = new Map();
102
+ return {
103
+ apply(record) {
104
+ const value = deserialize(record.node);
105
+ if (record.initial) table.set(record.key, value);
106
+ },
107
+ get(key) {
108
+ return table.get(key);
109
+ },
110
+ resolve(ref) {
111
+ return table.get(ref.$ref);
112
+ }
113
+ };
114
+ }
115
+
116
+ export { DEFAULT_WEB_PLUGINS, createJSONDataTable, createJSONDeserializer, resolveCodecOptions, resolveSerializerPlugins };
@@ -0,0 +1,244 @@
1
+ 'use strict';
2
+
3
+ var seroval = require('seroval');
4
+ var web = require('seroval-plugins/web');
5
+
6
+ const STATE = Symbol.for("dom-expressions.container-trace-state");
7
+ const state = globalThis[STATE] || (globalThis[STATE] = {
8
+ materialized: new WeakMap(),
9
+ materializedValues: new WeakSet()
10
+ });
11
+ const TRACE = Symbol.for("dom-expressions.container-trace");
12
+ function materialize(marker) {
13
+ let value = state.materialized.get(marker.$tr);
14
+ if (value === undefined) {
15
+ value = state.materializeTrace(marker);
16
+ state.materialized.set(marker.$tr, value);
17
+ if (value !== null && typeof value === "object") state.materializedValues.add(value);
18
+ }
19
+ return value;
20
+ }
21
+ function parseTrace(value, ctx) {
22
+ const trace = value[TRACE];
23
+ return {
24
+ a: trace.array ? 1 : 0,
25
+ i: ctx.parse(trace.subscribe())
26
+ };
27
+ }
28
+ const ContainerTracePlugin = {
29
+ tag: "dom-expressions/container-trace",
30
+ test(value) {
31
+ return value != null && typeof value === "object" && TRACE in value;
32
+ },
33
+ parse: {
34
+ sync() {
35
+ throw new Error("A reactive container can only be serialized by a streaming serializer.");
36
+ },
37
+ async async(value, ctx) {
38
+ const trace = value[TRACE];
39
+ return {
40
+ a: trace.array ? 1 : 0,
41
+ i: await ctx.parse(trace.subscribe())
42
+ };
43
+ },
44
+ stream: parseTrace
45
+ },
46
+ serialize(node, ctx) {
47
+ return "{$tr:" + ctx.serialize(node.i) + ",$ta:" + node.a + "}";
48
+ },
49
+ deserialize(node, ctx) {
50
+ const iterable = ctx.deserialize(node.i);
51
+ const marker = {
52
+ $tr: iterable,
53
+ $ta: node.a
54
+ };
55
+ return state.materializeTrace ? materialize(marker) : marker;
56
+ }
57
+ };
58
+
59
+ const DEFAULT_WEB_PLUGINS = Object.freeze([web.AbortSignalPlugin,
60
+ web.CustomEventPlugin, web.DOMExceptionPlugin, web.EventPlugin,
61
+ web.FormDataPlugin, web.HeadersPlugin, web.ReadableStreamPlugin, web.RequestPlugin, web.ResponsePlugin, web.URLSearchParamsPlugin, web.URLPlugin,
62
+ ContainerTracePlugin]);
63
+ function resolveSerializerPlugins(customPlugins) {
64
+ return customPlugins ? [...customPlugins, ...DEFAULT_WEB_PLUGINS] : [...DEFAULT_WEB_PLUGINS];
65
+ }
66
+ const JSON_CODEC_DISABLED_FEATURES = seroval.Feature.RegExp;
67
+ const JSON_CODEC_DEPTH_LIMIT = 64;
68
+ function resolveCodecOptions({
69
+ plugins,
70
+ disabledFeatures,
71
+ depthLimit
72
+ } = {}) {
73
+ return {
74
+ plugins: resolveSerializerPlugins(plugins),
75
+ disabledFeatures: disabledFeatures === undefined ? JSON_CODEC_DISABLED_FEATURES : disabledFeatures,
76
+ depthLimit: depthLimit === undefined ? JSON_CODEC_DEPTH_LIMIT : depthLimit
77
+ };
78
+ }
79
+ function createJSONDeserializer(options) {
80
+ const refs = new Map();
81
+ const resolved = resolveCodecOptions(options);
82
+ function deserializeJSONChunk(node) {
83
+ return seroval.fromCrossJSON(node, {
84
+ refs,
85
+ ...resolved
86
+ });
87
+ }
88
+ deserializeJSONChunk.abort = function abort(error) {
89
+ for (const value of refs.values()) {
90
+ if (value === null || typeof value !== "object") continue;
91
+ if (value.__SEROVAL_STREAM__) {
92
+ value.throw(error);
93
+ } else if (typeof value.s === "function" && typeof value.f === "function" && value.p instanceof Promise) {
94
+ value.p.then(undefined, () => {});
95
+ value.f(error);
96
+ }
97
+ }
98
+ };
99
+ return deserializeJSONChunk;
100
+ }
101
+ function createJSONDataTable(options) {
102
+ const deserialize = createJSONDeserializer(options);
103
+ const table = new Map();
104
+ return {
105
+ apply(record) {
106
+ const value = deserialize(record.node);
107
+ if (record.initial) table.set(record.key, value);
108
+ },
109
+ get(key) {
110
+ return table.get(key);
111
+ },
112
+ resolve(ref) {
113
+ return table.get(ref.$ref);
114
+ }
115
+ };
116
+ }
117
+
118
+ const DEFAULT_DISABLED_FEATURES = seroval.Feature.AggregateError | seroval.Feature.BigIntTypedArray;
119
+ const serializeOnlyDisabledFeatures = () => process.env.NODE_ENV === "development" ? 0 : seroval.Feature.ErrorPrototypeStack;
120
+ const HYDRATION_GLOBAL = "_$HY.r";
121
+ function createSerializer(options) {
122
+ return new seroval.Serializer({
123
+ ...options,
124
+ plugins: resolveSerializerPlugins(options.plugins),
125
+ disabledFeatures: (options.disabledFeatures === undefined ? DEFAULT_DISABLED_FEATURES : options.disabledFeatures) | serializeOnlyDisabledFeatures()
126
+ });
127
+ }
128
+ function createHydrationSerializer({
129
+ onData,
130
+ onDone,
131
+ scopeId,
132
+ onError,
133
+ plugins
134
+ }) {
135
+ return createSerializer({
136
+ scopeId,
137
+ plugins,
138
+ globalIdentifier: HYDRATION_GLOBAL,
139
+ onData,
140
+ onDone,
141
+ onError
142
+ });
143
+ }
144
+ function getLocalHeaderScript(id) {
145
+ return seroval.getCrossReferenceHeader(id) + ";";
146
+ }
147
+ function serializeJSON(value, {
148
+ onParse,
149
+ onDone,
150
+ onError,
151
+ ...codecOptions
152
+ }) {
153
+ const resolved = resolveCodecOptions(codecOptions);
154
+ return seroval.toCrossJSONStream(value, {
155
+ onParse,
156
+ onDone,
157
+ onError,
158
+ ...resolved,
159
+ disabledFeatures: resolved.disabledFeatures | serializeOnlyDisabledFeatures()
160
+ });
161
+ }
162
+ function createJSONSerializer({
163
+ onData,
164
+ onDone,
165
+ onError,
166
+ plugins,
167
+ disabledFeatures,
168
+ depthLimit
169
+ }) {
170
+ const resolved = resolveCodecOptions({
171
+ plugins,
172
+ disabledFeatures,
173
+ depthLimit
174
+ });
175
+ const refs = new Map();
176
+ const cancels = new Set();
177
+ let pendingWrites = 0;
178
+ let flushed = false;
179
+ let done = false;
180
+ const maybeDone = () => {
181
+ if (flushed && pendingWrites === 0 && !done) {
182
+ done = true;
183
+ onDone && onDone();
184
+ }
185
+ };
186
+ return {
187
+ write(key, value) {
188
+ if (flushed) return;
189
+ pendingWrites++;
190
+ let settled = false;
191
+ let cancel = null;
192
+ const stream = seroval.toCrossJSONStream(value, {
193
+ refs,
194
+ plugins: resolved.plugins,
195
+ disabledFeatures: resolved.disabledFeatures | serializeOnlyDisabledFeatures(),
196
+ onParse(node, initial) {
197
+ onData({
198
+ key,
199
+ node,
200
+ initial
201
+ });
202
+ },
203
+ onError,
204
+ onDone() {
205
+ settled = true;
206
+ if (cancel) cancels.delete(cancel);
207
+ pendingWrites--;
208
+ maybeDone();
209
+ }
210
+ });
211
+ if (!settled) {
212
+ cancel = stream;
213
+ cancels.add(cancel);
214
+ }
215
+ },
216
+ flush() {
217
+ flushed = true;
218
+ maybeDone();
219
+ },
220
+ close() {
221
+ flushed = true;
222
+ for (const cancel of cancels) cancel();
223
+ cancels.clear();
224
+ }
225
+ };
226
+ }
227
+
228
+ Object.defineProperty(exports, "OpaqueReference", {
229
+ enumerable: true,
230
+ get: function () { return seroval.OpaqueReference; }
231
+ });
232
+ Object.defineProperty(exports, "createPlugin", {
233
+ enumerable: true,
234
+ get: function () { return seroval.createPlugin; }
235
+ });
236
+ exports.DEFAULT_WEB_PLUGINS = DEFAULT_WEB_PLUGINS;
237
+ exports.createHydrationSerializer = createHydrationSerializer;
238
+ exports.createJSONDataTable = createJSONDataTable;
239
+ exports.createJSONDeserializer = createJSONDeserializer;
240
+ exports.createJSONSerializer = createJSONSerializer;
241
+ exports.createSerializer = createSerializer;
242
+ exports.getLocalHeaderScript = getLocalHeaderScript;
243
+ exports.resolveSerializerPlugins = resolveSerializerPlugins;
244
+ exports.serializeJSON = serializeJSON;
@@ -0,0 +1,227 @@
1
+ import { Feature, fromCrossJSON, toCrossJSONStream, Serializer, getCrossReferenceHeader } from 'seroval';
2
+ export { OpaqueReference, createPlugin } from 'seroval';
3
+ import { AbortSignalPlugin, CustomEventPlugin, DOMExceptionPlugin, EventPlugin, FormDataPlugin, HeadersPlugin, ReadableStreamPlugin, RequestPlugin, ResponsePlugin, URLSearchParamsPlugin, URLPlugin } from 'seroval-plugins/web';
4
+
5
+ const STATE = Symbol.for("dom-expressions.container-trace-state");
6
+ const state = globalThis[STATE] || (globalThis[STATE] = {
7
+ materialized: new WeakMap(),
8
+ materializedValues: new WeakSet()
9
+ });
10
+ const TRACE = Symbol.for("dom-expressions.container-trace");
11
+ function materialize(marker) {
12
+ let value = state.materialized.get(marker.$tr);
13
+ if (value === undefined) {
14
+ value = state.materializeTrace(marker);
15
+ state.materialized.set(marker.$tr, value);
16
+ if (value !== null && typeof value === "object") state.materializedValues.add(value);
17
+ }
18
+ return value;
19
+ }
20
+ function parseTrace(value, ctx) {
21
+ const trace = value[TRACE];
22
+ return {
23
+ a: trace.array ? 1 : 0,
24
+ i: ctx.parse(trace.subscribe())
25
+ };
26
+ }
27
+ const ContainerTracePlugin = {
28
+ tag: "dom-expressions/container-trace",
29
+ test(value) {
30
+ return value != null && typeof value === "object" && TRACE in value;
31
+ },
32
+ parse: {
33
+ sync() {
34
+ throw new Error("A reactive container can only be serialized by a streaming serializer.");
35
+ },
36
+ async async(value, ctx) {
37
+ const trace = value[TRACE];
38
+ return {
39
+ a: trace.array ? 1 : 0,
40
+ i: await ctx.parse(trace.subscribe())
41
+ };
42
+ },
43
+ stream: parseTrace
44
+ },
45
+ serialize(node, ctx) {
46
+ return "{$tr:" + ctx.serialize(node.i) + ",$ta:" + node.a + "}";
47
+ },
48
+ deserialize(node, ctx) {
49
+ const iterable = ctx.deserialize(node.i);
50
+ const marker = {
51
+ $tr: iterable,
52
+ $ta: node.a
53
+ };
54
+ return state.materializeTrace ? materialize(marker) : marker;
55
+ }
56
+ };
57
+
58
+ const DEFAULT_WEB_PLUGINS = Object.freeze([AbortSignalPlugin,
59
+ CustomEventPlugin, DOMExceptionPlugin, EventPlugin,
60
+ FormDataPlugin, HeadersPlugin, ReadableStreamPlugin, RequestPlugin, ResponsePlugin, URLSearchParamsPlugin, URLPlugin,
61
+ ContainerTracePlugin]);
62
+ function resolveSerializerPlugins(customPlugins) {
63
+ return customPlugins ? [...customPlugins, ...DEFAULT_WEB_PLUGINS] : [...DEFAULT_WEB_PLUGINS];
64
+ }
65
+ const JSON_CODEC_DISABLED_FEATURES = Feature.RegExp;
66
+ const JSON_CODEC_DEPTH_LIMIT = 64;
67
+ function resolveCodecOptions({
68
+ plugins,
69
+ disabledFeatures,
70
+ depthLimit
71
+ } = {}) {
72
+ return {
73
+ plugins: resolveSerializerPlugins(plugins),
74
+ disabledFeatures: disabledFeatures === undefined ? JSON_CODEC_DISABLED_FEATURES : disabledFeatures,
75
+ depthLimit: depthLimit === undefined ? JSON_CODEC_DEPTH_LIMIT : depthLimit
76
+ };
77
+ }
78
+ function createJSONDeserializer(options) {
79
+ const refs = new Map();
80
+ const resolved = resolveCodecOptions(options);
81
+ function deserializeJSONChunk(node) {
82
+ return fromCrossJSON(node, {
83
+ refs,
84
+ ...resolved
85
+ });
86
+ }
87
+ deserializeJSONChunk.abort = function abort(error) {
88
+ for (const value of refs.values()) {
89
+ if (value === null || typeof value !== "object") continue;
90
+ if (value.__SEROVAL_STREAM__) {
91
+ value.throw(error);
92
+ } else if (typeof value.s === "function" && typeof value.f === "function" && value.p instanceof Promise) {
93
+ value.p.then(undefined, () => {});
94
+ value.f(error);
95
+ }
96
+ }
97
+ };
98
+ return deserializeJSONChunk;
99
+ }
100
+ function createJSONDataTable(options) {
101
+ const deserialize = createJSONDeserializer(options);
102
+ const table = new Map();
103
+ return {
104
+ apply(record) {
105
+ const value = deserialize(record.node);
106
+ if (record.initial) table.set(record.key, value);
107
+ },
108
+ get(key) {
109
+ return table.get(key);
110
+ },
111
+ resolve(ref) {
112
+ return table.get(ref.$ref);
113
+ }
114
+ };
115
+ }
116
+
117
+ const DEFAULT_DISABLED_FEATURES = Feature.AggregateError | Feature.BigIntTypedArray;
118
+ const serializeOnlyDisabledFeatures = () => process.env.NODE_ENV === "development" ? 0 : Feature.ErrorPrototypeStack;
119
+ const HYDRATION_GLOBAL = "_$HY.r";
120
+ function createSerializer(options) {
121
+ return new Serializer({
122
+ ...options,
123
+ plugins: resolveSerializerPlugins(options.plugins),
124
+ disabledFeatures: (options.disabledFeatures === undefined ? DEFAULT_DISABLED_FEATURES : options.disabledFeatures) | serializeOnlyDisabledFeatures()
125
+ });
126
+ }
127
+ function createHydrationSerializer({
128
+ onData,
129
+ onDone,
130
+ scopeId,
131
+ onError,
132
+ plugins
133
+ }) {
134
+ return createSerializer({
135
+ scopeId,
136
+ plugins,
137
+ globalIdentifier: HYDRATION_GLOBAL,
138
+ onData,
139
+ onDone,
140
+ onError
141
+ });
142
+ }
143
+ function getLocalHeaderScript(id) {
144
+ return getCrossReferenceHeader(id) + ";";
145
+ }
146
+ function serializeJSON(value, {
147
+ onParse,
148
+ onDone,
149
+ onError,
150
+ ...codecOptions
151
+ }) {
152
+ const resolved = resolveCodecOptions(codecOptions);
153
+ return toCrossJSONStream(value, {
154
+ onParse,
155
+ onDone,
156
+ onError,
157
+ ...resolved,
158
+ disabledFeatures: resolved.disabledFeatures | serializeOnlyDisabledFeatures()
159
+ });
160
+ }
161
+ function createJSONSerializer({
162
+ onData,
163
+ onDone,
164
+ onError,
165
+ plugins,
166
+ disabledFeatures,
167
+ depthLimit
168
+ }) {
169
+ const resolved = resolveCodecOptions({
170
+ plugins,
171
+ disabledFeatures,
172
+ depthLimit
173
+ });
174
+ const refs = new Map();
175
+ const cancels = new Set();
176
+ let pendingWrites = 0;
177
+ let flushed = false;
178
+ let done = false;
179
+ const maybeDone = () => {
180
+ if (flushed && pendingWrites === 0 && !done) {
181
+ done = true;
182
+ onDone && onDone();
183
+ }
184
+ };
185
+ return {
186
+ write(key, value) {
187
+ if (flushed) return;
188
+ pendingWrites++;
189
+ let settled = false;
190
+ let cancel = null;
191
+ const stream = toCrossJSONStream(value, {
192
+ refs,
193
+ plugins: resolved.plugins,
194
+ disabledFeatures: resolved.disabledFeatures | serializeOnlyDisabledFeatures(),
195
+ onParse(node, initial) {
196
+ onData({
197
+ key,
198
+ node,
199
+ initial
200
+ });
201
+ },
202
+ onError,
203
+ onDone() {
204
+ settled = true;
205
+ if (cancel) cancels.delete(cancel);
206
+ pendingWrites--;
207
+ maybeDone();
208
+ }
209
+ });
210
+ if (!settled) {
211
+ cancel = stream;
212
+ cancels.add(cancel);
213
+ }
214
+ },
215
+ flush() {
216
+ flushed = true;
217
+ maybeDone();
218
+ },
219
+ close() {
220
+ flushed = true;
221
+ for (const cancel of cancels) cancel();
222
+ cancels.clear();
223
+ }
224
+ };
225
+ }
226
+
227
+ export { DEFAULT_WEB_PLUGINS, createHydrationSerializer, createJSONDataTable, createJSONDeserializer, createJSONSerializer, createSerializer, getLocalHeaderScript, resolveSerializerPlugins, serializeJSON };
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "@solidjs/web/serialization",
3
+ "main": "./dist/serialization.cjs",
4
+ "module": "./dist/serialization.js",
5
+ "types": "./types/index.d.ts",
6
+ "type": "module",
7
+ "sideEffects": false,
8
+ "exports": {
9
+ ".": {
10
+ "import": {
11
+ "types": "./types/index.d.ts",
12
+ "default": "./dist/serialization.js"
13
+ },
14
+ "require": {
15
+ "types": "./types-cjs/index.d.cts",
16
+ "default": "./dist/serialization.cjs"
17
+ }
18
+ }
19
+ }
20
+ }