solid-js 1.5.0-beta.2 → 1.5.0-beta.5

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.
@@ -13,225 +13,255 @@ const Aliases = {
13
13
  htmlFor: "for"
14
14
  };
15
15
 
16
- var chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$';
17
- var unsafeChars = /[<>\b\f\n\r\t\0\u2028\u2029]/g;
18
- var reserved = /^(?:do|if|in|for|int|let|new|try|var|byte|case|char|else|enum|goto|long|this|void|with|await|break|catch|class|const|final|float|short|super|throw|while|yield|delete|double|export|import|native|return|switch|throws|typeof|boolean|default|extends|finally|package|private|abstract|continue|debugger|function|volatile|interface|protected|transient|implements|instanceof|synchronized)$/;
19
- var escaped = {
20
- '<': '\\u003C',
21
- '>': '\\u003E',
22
- '/': '\\u002F',
23
- '\\': '\\\\',
24
- '\b': '\\b',
25
- '\f': '\\f',
26
- '\n': '\\n',
27
- '\r': '\\r',
28
- '\t': '\\t',
29
- '\0': '\\0',
30
- '\u2028': '\\u2028',
31
- '\u2029': '\\u2029'
32
- };
33
- var objectProtoOwnPropertyNames = Object.getOwnPropertyNames(Object.prototype).sort().join('\0');
34
- function devalue(value) {
35
- var counts = new Map();
36
- function walk(thing) {
37
- if (typeof thing === 'function') {
38
- throw new Error("Cannot stringify a function");
16
+ const {
17
+ hasOwnProperty
18
+ } = Object.prototype;
19
+ const REF_START_CHARS = "hjkmoquxzABCDEFGHIJKLNPQRTUVWXYZ$_";
20
+ const REF_START_CHARS_LEN = REF_START_CHARS.length;
21
+ const REF_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$_";
22
+ const REF_CHARS_LEN = REF_CHARS.length;
23
+ const STACK = [];
24
+ const BUFFER = [""];
25
+ let ASSIGNMENTS = new Map();
26
+ let INDEX_OR_REF = new WeakMap();
27
+ let REF_COUNT = 0;
28
+ BUFFER.pop();
29
+ function stringify(root) {
30
+ if (writeProp(root, "")) {
31
+ let result = BUFFER[0];
32
+ for (let i = 1, len = BUFFER.length; i < len; i++) {
33
+ result += BUFFER[i];
39
34
  }
40
- if (counts.has(thing)) {
41
- counts.set(thing, counts.get(thing) + 1);
42
- return;
35
+ if (REF_COUNT) {
36
+ if (ASSIGNMENTS.size) {
37
+ let ref = INDEX_OR_REF.get(root);
38
+ if (typeof ref === "number") {
39
+ ref = toRefParam(REF_COUNT++);
40
+ result = ref + "=" + result;
41
+ }
42
+ for (const [assignmentRef, assignments] of ASSIGNMENTS) {
43
+ result += ";" + assignments + assignmentRef;
44
+ }
45
+ result += ";return " + ref;
46
+ ASSIGNMENTS = new Map();
47
+ } else {
48
+ result = "return " + result;
49
+ }
50
+ result = "(function(" + refParamsString() + "){" + result + "}())";
51
+ } else if (root && root.constructor === Object) {
52
+ result = "(" + result + ")";
43
53
  }
44
- counts.set(thing, 1);
45
- if (!isPrimitive(thing)) {
46
- var type = getType(thing);
47
- switch (type) {
48
- case 'Number':
49
- case 'String':
50
- case 'Boolean':
51
- case 'Date':
52
- case 'RegExp':
53
- return;
54
- case 'Array':
55
- thing.forEach(walk);
56
- break;
57
- case 'Set':
58
- case 'Map':
59
- Array.from(thing).forEach(walk);
60
- break;
61
- default:
62
- var proto = Object.getPrototypeOf(thing);
63
- if (proto !== Object.prototype && proto !== null && Object.getOwnPropertyNames(proto).sort().join('\0') !== objectProtoOwnPropertyNames) {
64
- throw new Error("Cannot stringify arbitrary non-POJOs");
65
- }
66
- if (Object.getOwnPropertySymbols(thing).length > 0) {
67
- throw new Error("Cannot stringify POJOs with symbolic keys");
68
- }
69
- Object.keys(thing).forEach(function (key) {
70
- return walk(thing[key]);
71
- });
54
+ BUFFER.length = 0;
55
+ INDEX_OR_REF = new WeakMap();
56
+ return result;
57
+ }
58
+ return "void 0";
59
+ }
60
+ function writeProp(cur, accessor) {
61
+ switch (typeof cur) {
62
+ case "string":
63
+ BUFFER.push(quote(cur, 0));
64
+ break;
65
+ case "number":
66
+ BUFFER.push(cur + "");
67
+ break;
68
+ case "boolean":
69
+ BUFFER.push(cur ? "!0" : "!1");
70
+ break;
71
+ case "object":
72
+ if (cur === null) {
73
+ BUFFER.push("null");
74
+ } else {
75
+ const ref = getRef(cur, accessor);
76
+ switch (ref) {
77
+ case true:
78
+ return false;
79
+ case false:
80
+ switch (cur.constructor) {
81
+ case Object:
82
+ writeObject(cur);
83
+ break;
84
+ case Array:
85
+ writeArray(cur);
86
+ break;
87
+ case Date:
88
+ BUFFER.push('new Date("' + cur.toISOString() + '")');
89
+ break;
90
+ case RegExp:
91
+ BUFFER.push(cur + "");
92
+ break;
93
+ case Map:
94
+ BUFFER.push("new Map(");
95
+ writeArray(Array.from(cur));
96
+ BUFFER.push(")");
97
+ break;
98
+ case Set:
99
+ BUFFER.push("new Set(");
100
+ writeArray(Array.from(cur));
101
+ BUFFER.push(")");
102
+ break;
103
+ case undefined:
104
+ BUFFER.push("Object.assign(Object.create(null),");
105
+ writeObject(cur);
106
+ BUFFER.push("))");
107
+ break;
108
+ default:
109
+ return false;
110
+ }
111
+ break;
112
+ default:
113
+ BUFFER.push(ref);
114
+ break;
115
+ }
116
+ }
117
+ break;
118
+ default:
119
+ return false;
120
+ }
121
+ return true;
122
+ }
123
+ function writeObject(obj) {
124
+ let sep = "{";
125
+ STACK.push(obj);
126
+ for (const key in obj) {
127
+ if (hasOwnProperty.call(obj, key)) {
128
+ const val = obj[key];
129
+ const escapedKey = toObjectKey(key);
130
+ BUFFER.push(sep + escapedKey + ":");
131
+ if (writeProp(val, escapedKey)) {
132
+ sep = ",";
133
+ } else {
134
+ BUFFER.pop();
72
135
  }
73
136
  }
74
137
  }
75
- walk(value);
76
- var names = new Map();
77
- Array.from(counts).filter(function (entry) {
78
- return entry[1] > 1;
79
- }).sort(function (a, b) {
80
- return b[1] - a[1];
81
- }).forEach(function (entry, i) {
82
- names.set(entry[0], getName(i));
83
- });
84
- function stringify(thing) {
85
- if (names.has(thing)) {
86
- return names.get(thing);
138
+ if (sep === "{") {
139
+ BUFFER.push("{}");
140
+ } else {
141
+ BUFFER.push("}");
142
+ }
143
+ STACK.pop();
144
+ }
145
+ function writeArray(arr) {
146
+ BUFFER.push("[");
147
+ STACK.push(arr);
148
+ writeProp(arr[0], 0);
149
+ for (let i = 1, len = arr.length; i < len; i++) {
150
+ BUFFER.push(",");
151
+ writeProp(arr[i], i);
152
+ }
153
+ STACK.pop();
154
+ BUFFER.push("]");
155
+ }
156
+ function getRef(cur, accessor) {
157
+ let ref = INDEX_OR_REF.get(cur);
158
+ if (ref === undefined) {
159
+ INDEX_OR_REF.set(cur, BUFFER.length);
160
+ return false;
161
+ }
162
+ if (typeof ref === "number") {
163
+ ref = insertAndGetRef(cur, ref);
164
+ }
165
+ if (STACK.includes(cur)) {
166
+ const parent = STACK[STACK.length - 1];
167
+ let parentRef = INDEX_OR_REF.get(parent);
168
+ if (typeof parentRef === "number") {
169
+ parentRef = insertAndGetRef(parent, parentRef);
87
170
  }
88
- if (isPrimitive(thing)) {
89
- return stringifyPrimitive(thing);
171
+ ASSIGNMENTS.set(ref, (ASSIGNMENTS.get(ref) || "") + toAssignment(parentRef, accessor) + "=");
172
+ return true;
173
+ }
174
+ return ref;
175
+ }
176
+ function toObjectKey(name) {
177
+ const invalidIdentifierPos = getInvalidIdentifierPos(name);
178
+ return invalidIdentifierPos === -1 ? name : quote(name, invalidIdentifierPos);
179
+ }
180
+ function toAssignment(parent, key) {
181
+ return parent + (typeof key === "number" || key[0] === '"' ? "[" + key + "]" : "." + key);
182
+ }
183
+ function getInvalidIdentifierPos(name) {
184
+ let char = name[0];
185
+ if (!(char >= "a" && char <= "z" || char >= "A" && char <= "Z" || char === "$" || char === "_")) {
186
+ return 0;
187
+ }
188
+ for (let i = 1, len = name.length; i < len; i++) {
189
+ char = name[i];
190
+ if (!(char >= "a" && char <= "z" || char >= "A" && char <= "Z" || char >= "0" && char <= "9" || char === "$" || char === "_")) {
191
+ return i;
90
192
  }
91
- var type = getType(thing);
92
- switch (type) {
93
- case 'Number':
94
- case 'String':
95
- case 'Boolean':
96
- return "Object(" + stringify(thing.valueOf()) + ")";
97
- case 'RegExp':
98
- return "new RegExp(" + stringifyString(thing.source) + ", \"" + thing.flags + "\")";
99
- case 'Date':
100
- return "new Date(" + thing.getTime() + ")";
101
- case 'Array':
102
- var members = thing.map(function (v, i) {
103
- return i in thing ? stringify(v) : '';
104
- });
105
- var tail = thing.length === 0 || thing.length - 1 in thing ? '' : ',';
106
- return "[" + members.join(',') + tail + "]";
107
- case 'Set':
108
- case 'Map':
109
- return "new " + type + "([" + Array.from(thing).map(stringify).join(',') + "])";
193
+ }
194
+ return -1;
195
+ }
196
+ function quote(str, startPos) {
197
+ let result = "";
198
+ let lastPos = 0;
199
+ for (let i = startPos, len = str.length; i < len; i++) {
200
+ let replacement;
201
+ switch (str[i]) {
202
+ case '"':
203
+ replacement = '\\"';
204
+ break;
205
+ case "\\":
206
+ replacement = "\\\\";
207
+ break;
208
+ case "<":
209
+ replacement = "\\x3C";
210
+ break;
211
+ case "\n":
212
+ replacement = "\\n";
213
+ break;
214
+ case "\r":
215
+ replacement = "\\r";
216
+ break;
217
+ case "\u2028":
218
+ replacement = "\\u2028";
219
+ break;
220
+ case "\u2029":
221
+ replacement = "\\u2029";
222
+ break;
110
223
  default:
111
- var obj = "{" + Object.keys(thing).map(function (key) {
112
- return safeKey(key) + ":" + stringify(thing[key]);
113
- }).join(',') + "}";
114
- var proto = Object.getPrototypeOf(thing);
115
- if (proto === null) {
116
- return Object.keys(thing).length > 0 ? "Object.assign(Object.create(null)," + obj + ")" : "Object.create(null)";
117
- }
118
- return obj;
224
+ continue;
119
225
  }
226
+ result += str.slice(lastPos, i) + replacement;
227
+ lastPos = i + 1;
120
228
  }
121
- var str = stringify(value);
122
- if (names.size) {
123
- var params_1 = [];
124
- var statements_1 = [];
125
- var values_1 = [];
126
- names.forEach(function (name, thing) {
127
- params_1.push(name);
128
- if (isPrimitive(thing)) {
129
- values_1.push(stringifyPrimitive(thing));
130
- return;
131
- }
132
- var type = getType(thing);
133
- switch (type) {
134
- case 'Number':
135
- case 'String':
136
- case 'Boolean':
137
- values_1.push("Object(" + stringify(thing.valueOf()) + ")");
138
- break;
139
- case 'RegExp':
140
- values_1.push(thing.toString());
141
- break;
142
- case 'Date':
143
- values_1.push("new Date(" + thing.getTime() + ")");
144
- break;
145
- case 'Array':
146
- values_1.push("Array(" + thing.length + ")");
147
- thing.forEach(function (v, i) {
148
- statements_1.push(name + "[" + i + "]=" + stringify(v));
149
- });
150
- break;
151
- case 'Set':
152
- values_1.push("new Set");
153
- statements_1.push(name + "." + Array.from(thing).map(function (v) {
154
- return "add(" + stringify(v) + ")";
155
- }).join('.'));
156
- break;
157
- case 'Map':
158
- values_1.push("new Map");
159
- statements_1.push(name + "." + Array.from(thing).map(function (_a) {
160
- var k = _a[0],
161
- v = _a[1];
162
- return "set(" + stringify(k) + ", " + stringify(v) + ")";
163
- }).join('.'));
164
- break;
165
- default:
166
- values_1.push(Object.getPrototypeOf(thing) === null ? 'Object.create(null)' : '{}');
167
- Object.keys(thing).forEach(function (key) {
168
- statements_1.push("" + name + safeProp(key) + "=" + stringify(thing[key]));
169
- });
170
- }
171
- });
172
- statements_1.push("return " + str);
173
- return "(function(" + params_1.join(',') + "){" + statements_1.join(';') + "}(" + values_1.join(',') + "))";
229
+ if (lastPos === startPos) {
230
+ result = str;
174
231
  } else {
175
- return str;
176
- }
177
- }
178
- function getName(num) {
179
- var name = '';
180
- do {
181
- name = chars[num % chars.length] + name;
182
- num = ~~(num / chars.length) - 1;
183
- } while (num >= 0);
184
- return reserved.test(name) ? name + "_" : name;
185
- }
186
- function isPrimitive(thing) {
187
- return Object(thing) !== thing;
188
- }
189
- function stringifyPrimitive(thing) {
190
- if (typeof thing === 'string') return stringifyString(thing);
191
- if (thing === void 0) return 'void 0';
192
- if (thing === 0 && 1 / thing < 0) return '-0';
193
- var str = String(thing);
194
- if (typeof thing === 'number') return str.replace(/^(-)?0\./, '$1.');
195
- return str;
196
- }
197
- function getType(thing) {
198
- return Object.prototype.toString.call(thing).slice(8, -1);
199
- }
200
- function escapeUnsafeChar(c) {
201
- return escaped[c] || c;
202
- }
203
- function escapeUnsafeChars(str) {
204
- return str.replace(unsafeChars, escapeUnsafeChar);
205
- }
206
- function safeKey(key) {
207
- return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) ? key : escapeUnsafeChars(JSON.stringify(key));
208
- }
209
- function safeProp(key) {
210
- return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) ? "." + key : "[" + escapeUnsafeChars(JSON.stringify(key)) + "]";
211
- }
212
- function stringifyString(str) {
213
- var result = '"';
214
- for (var i = 0; i < str.length; i += 1) {
215
- var char = str.charAt(i);
216
- var code = char.charCodeAt(0);
217
- if (char === '"') {
218
- result += '\\"';
219
- } else if (char in escaped) {
220
- result += escaped[char];
221
- } else if (code >= 0xd800 && code <= 0xdfff) {
222
- var next = str.charCodeAt(i + 1);
223
- if (code <= 0xdbff && next >= 0xdc00 && next <= 0xdfff) {
224
- result += char + str[++i];
225
- } else {
226
- result += "\\u" + code.toString(16).toUpperCase();
227
- }
228
- } else {
229
- result += char;
230
- }
232
+ result += str.slice(lastPos);
233
+ }
234
+ return '"' + result + '"';
235
+ }
236
+ function insertAndGetRef(obj, pos) {
237
+ const ref = toRefParam(REF_COUNT++);
238
+ INDEX_OR_REF.set(obj, ref);
239
+ if (pos) {
240
+ BUFFER[pos - 1] += ref + "=";
241
+ } else {
242
+ BUFFER[pos] = ref + "=" + BUFFER[pos];
243
+ }
244
+ return ref;
245
+ }
246
+ function refParamsString() {
247
+ let result = REF_START_CHARS[0];
248
+ for (let i = 1; i < REF_COUNT; i++) {
249
+ result += "," + toRefParam(i);
231
250
  }
232
- result += '"';
251
+ REF_COUNT = 0;
233
252
  return result;
234
253
  }
254
+ function toRefParam(index) {
255
+ let mod = index % REF_START_CHARS_LEN;
256
+ let ref = REF_START_CHARS[mod];
257
+ index = (index - mod) / REF_START_CHARS_LEN;
258
+ while (index > 0) {
259
+ mod = index % REF_CHARS_LEN;
260
+ ref += REF_CHARS[mod];
261
+ index = (index - mod) / REF_CHARS_LEN;
262
+ }
263
+ return ref;
264
+ }
235
265
 
236
266
  const REPLACE_SCRIPT = `function $df(e,t,d,l){d=document.getElementById(e),(l=document.getElementById("pl-"+e))&&l.replaceWith(...d.childNodes),d.remove(),_$HY.set(e,t)}`;
237
267
  function renderToString(code, options = {}) {
@@ -244,7 +274,7 @@ function renderToString(code, options = {}) {
244
274
  nonce: options.nonce,
245
275
  writeResource(id, p, error) {
246
276
  if (error) return scripts += `_$HY.set("${id}", ${serializeError(p)});`;
247
- scripts += `_$HY.set("${id}", ${devalue(p)});`;
277
+ scripts += `_$HY.set("${id}", ${stringify(p)});`;
248
278
  }
249
279
  };
250
280
  let html = injectAssets(solidJs.sharedConfig.context.assets, resolveSSRNode(escape(code())));
@@ -430,22 +460,16 @@ function renderToStream(code, options = {}) {
430
460
  };
431
461
  }
432
462
  function Assets(props) {
433
- solidJs.sharedConfig.context.assets.push(() => NoHydration({
434
- get children() {
435
- return resolveSSRNode(props.children);
436
- }
437
- }));
438
- return ssr(`%%$${solidJs.sharedConfig.context.assets.length - 1}%%`);
463
+ useAssets(() => props.children);
439
464
  }
440
465
  function HydrationScript(props) {
441
466
  const {
442
467
  nonce
443
468
  } = solidJs.sharedConfig.context;
444
- solidJs.sharedConfig.context.assets.push(() => generateHydrationScript({
469
+ return ssr(generateHydrationScript({
445
470
  nonce,
446
471
  ...props
447
472
  }));
448
- return ssr(`%%$${solidJs.sharedConfig.context.assets.length - 1}%%`);
449
473
  }
450
474
  function NoHydration(props) {
451
475
  const c = solidJs.sharedConfig.context;
@@ -591,6 +615,15 @@ function getHydrationKey() {
591
615
  const hydrate = solidJs.sharedConfig.context;
592
616
  return hydrate && !hydrate.noHydrate && `${hydrate.id}${hydrate.count++}`;
593
617
  }
618
+ function useAssets(fn) {
619
+ solidJs.sharedConfig.context.assets.push(() => resolveSSRNode(fn()));
620
+ }
621
+ function getAssets() {
622
+ const assets = solidJs.sharedConfig.context.assets;
623
+ let out = "";
624
+ for (let i = 0, len = assets.length; i < len; i++) out += assets[i]();
625
+ return out;
626
+ }
594
627
  function generateHydrationScript({
595
628
  eventNames = ["click", "input"],
596
629
  nonce
@@ -598,10 +631,10 @@ function generateHydrationScript({
598
631
  return `<script${nonce ? ` nonce="${nonce}"` : ""}>var e,t;e=window._$HY||(_$HY={events:[],completed:new WeakSet,r:{}}),t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),["${eventNames.join('","')}"].forEach((o=>document.addEventListener(o,(o=>{let s=o.composedPath&&o.composedPath()[0]||o.target,a=t(s);a&&!e.completed.has(a)&&e.events.push([a,o])})))),e.init=(t,o)=>{e.r[t]=[new Promise(((e,t)=>o=e)),o]},e.set=(t,o,s)=>{(s=e.r[t])&&s[1](o),e.r[t]=[o]},e.unset=t=>{delete e.r[t]},e.load=t=>e.r[t];</script><!--xs-->`;
599
632
  }
600
633
  function injectAssets(assets, html) {
601
- for (let i = 0; i < assets.length; i++) {
602
- html = html.replace(`%%$${i}%%`, assets[i]());
603
- }
604
- return html;
634
+ if (!assets || !assets.length) return html;
635
+ let out = "";
636
+ for (let i = 0, len = assets.length; i < len; i++) out += assets[i]();
637
+ return html.replace(`<head>`, `<head>` + out);
605
638
  }
606
639
  function injectScripts(html, scripts, nonce) {
607
640
  const tag = `<script${nonce ? ` nonce="${nonce}"` : ""}>${scripts}</script>`;
@@ -622,9 +655,9 @@ function serializeError(error) {
622
655
  fields[key] = value;
623
656
  }
624
657
  }
625
- return `Object.assign(new Error(${devalue(error.message)}), ${devalue(fields)})`;
658
+ return `Object.assign(new Error(${stringify(error.message)}), ${stringify(fields)})`;
626
659
  }
627
- return devalue(error);
660
+ return stringify(error);
628
661
  }
629
662
  function waitForFragments(registry, key) {
630
663
  for (const k of [...registry.keys()].reverse()) {
@@ -635,7 +668,7 @@ function waitForFragments(registry, key) {
635
668
  }
636
669
  return false;
637
670
  }
638
- function serializeSet(registry, key, value, serializer = devalue) {
671
+ function serializeSet(registry, key, value, serializer = stringify) {
639
672
  const exist = registry.get(value);
640
673
  if (exist) return `_$HY.set("${key}", _$HY.r["${exist}"][0])`;
641
674
  value !== null && typeof value === "object" && registry.set(value, key);
@@ -690,6 +723,37 @@ function pipeToWritable(code, writable, options = {}) {
690
723
  const stream = renderToStream(code, options);
691
724
  if (!options.onReady) stream.pipeTo(writable);
692
725
  }
726
+ function ssrSpread(props, isSVG, skipChildren) {
727
+ let result = "";
728
+ if (props == null) return results;
729
+ if (typeof props === "function") props = props();
730
+ const keys = Object.keys(props);
731
+ let classResolved;
732
+ for (let i = 0; i < keys.length; i++) {
733
+ const prop = keys[i];
734
+ if (prop === "children") {
735
+ !skipChildren && console.warn(`SSR currently does not support spread children.`);
736
+ continue;
737
+ }
738
+ const value = props[prop];
739
+ if (prop === "style") {
740
+ result += `style="${ssrStyle(value)}"`;
741
+ } else if (prop === "class" || prop === "className" || prop === "classList") {
742
+ if (classResolved) continue;
743
+ let n;
744
+ result += `class="${(n = props.class) ? n + " " : ""}${(n = props.className) ? n + " " : ""}${ssrClassList(props.classList)}"`;
745
+ classResolved = true;
746
+ } else if (BooleanAttributes.has(prop)) {
747
+ if (value) result += prop;else continue;
748
+ } else if (value == undefined || prop === "ref" || prop.slice(0, 2) === "on") {
749
+ continue;
750
+ } else {
751
+ result += `${Aliases[prop] || prop}="${escape(value, true)}"`;
752
+ }
753
+ if (i !== keys.length - 1) result += " ";
754
+ }
755
+ return result;
756
+ }
693
757
 
694
758
  const isServer = true;
695
759
  function spread() {}
@@ -754,6 +818,7 @@ exports.NoHydration = NoHydration;
754
818
  exports.Portal = Portal;
755
819
  exports.escape = escape;
756
820
  exports.generateHydrationScript = generateHydrationScript;
821
+ exports.getAssets = getAssets;
757
822
  exports.getHydrationKey = getHydrationKey;
758
823
  exports.isServer = isServer;
759
824
  exports.pipeToNodeWritable = pipeToNodeWritable;
@@ -768,4 +833,6 @@ exports.ssrAttribute = ssrAttribute;
768
833
  exports.ssrClassList = ssrClassList;
769
834
  exports.ssrElement = ssrElement;
770
835
  exports.ssrHydrationKey = ssrHydrationKey;
836
+ exports.ssrSpread = ssrSpread;
771
837
  exports.ssrStyle = ssrStyle;
838
+ exports.useAssets = useAssets;