solid-js 1.8.2 → 1.8.3

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 (43) hide show
  1. package/dist/dev.cjs +1 -1
  2. package/dist/dev.js +534 -299
  3. package/dist/server.js +170 -75
  4. package/dist/solid.cjs +1 -1
  5. package/dist/solid.js +461 -257
  6. package/h/dist/h.js +34 -8
  7. package/h/jsx-runtime/dist/jsx.js +1 -1
  8. package/h/jsx-runtime/types/index.d.ts +11 -8
  9. package/h/types/hyperscript.d.ts +11 -11
  10. package/html/dist/html.js +216 -94
  11. package/html/types/lit.d.ts +45 -31
  12. package/package.json +1 -1
  13. package/store/dist/dev.js +114 -42
  14. package/store/dist/server.js +19 -8
  15. package/store/dist/store.js +105 -39
  16. package/store/types/index.d.ts +21 -7
  17. package/store/types/modifiers.d.ts +6 -3
  18. package/store/types/mutable.d.ts +5 -2
  19. package/store/types/server.d.ts +12 -4
  20. package/store/types/store.d.ts +218 -61
  21. package/types/index.d.ts +72 -9
  22. package/types/reactive/array.d.ts +12 -4
  23. package/types/reactive/observable.d.ts +25 -17
  24. package/types/reactive/scheduler.d.ts +9 -6
  25. package/types/reactive/signal.d.ts +228 -140
  26. package/types/render/Suspense.d.ts +5 -5
  27. package/types/render/component.d.ts +62 -31
  28. package/types/render/flow.d.ts +43 -31
  29. package/types/render/hydration.d.ts +13 -13
  30. package/types/server/index.d.ts +57 -2
  31. package/types/server/reactive.d.ts +73 -42
  32. package/types/server/rendering.d.ts +166 -95
  33. package/universal/dist/dev.js +28 -12
  34. package/universal/dist/universal.js +28 -12
  35. package/universal/types/index.d.ts +3 -1
  36. package/universal/types/universal.d.ts +0 -1
  37. package/web/dist/dev.js +617 -81
  38. package/web/dist/server.js +175 -92
  39. package/web/dist/web.js +611 -80
  40. package/web/types/client.d.ts +2 -2
  41. package/web/types/core.d.ts +10 -1
  42. package/web/types/index.d.ts +27 -10
  43. package/web/types/server-mock.d.ts +47 -32
@@ -1,24 +1,59 @@
1
- import { sharedConfig, createRoot, splitProps } from 'solid-js';
2
- export { ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, createComponent, mergeProps } from 'solid-js';
3
- import { Feature, Serializer, GLOBAL_CONTEXT_API_SCRIPT, getCrossReferenceHeader } from 'seroval';
1
+ import { sharedConfig, createRoot, splitProps } from "solid-js";
2
+ export {
3
+ ErrorBoundary,
4
+ For,
5
+ Index,
6
+ Match,
7
+ Show,
8
+ Suspense,
9
+ SuspenseList,
10
+ Switch,
11
+ createComponent,
12
+ mergeProps
13
+ } from "solid-js";
14
+ import { Feature, Serializer, GLOBAL_CONTEXT_API_SCRIPT, getCrossReferenceHeader } from "seroval";
4
15
 
5
- const booleans = ["allowfullscreen", "async", "autofocus", "autoplay", "checked", "controls", "default", "disabled", "formnovalidate", "hidden", "indeterminate", "ismap", "loop", "multiple", "muted", "nomodule", "novalidate", "open", "playsinline", "readonly", "required", "reversed", "seamless", "selected"];
6
- const BooleanAttributes = /*#__PURE__*/new Set(booleans);
7
- const ChildProperties = /*#__PURE__*/new Set(["innerHTML", "textContent", "innerText", "children"]);
8
- const Aliases = /*#__PURE__*/Object.assign(Object.create(null), {
16
+ const booleans = [
17
+ "allowfullscreen",
18
+ "async",
19
+ "autofocus",
20
+ "autoplay",
21
+ "checked",
22
+ "controls",
23
+ "default",
24
+ "disabled",
25
+ "formnovalidate",
26
+ "hidden",
27
+ "indeterminate",
28
+ "ismap",
29
+ "loop",
30
+ "multiple",
31
+ "muted",
32
+ "nomodule",
33
+ "novalidate",
34
+ "open",
35
+ "playsinline",
36
+ "readonly",
37
+ "required",
38
+ "reversed",
39
+ "seamless",
40
+ "selected"
41
+ ];
42
+ const BooleanAttributes = /*#__PURE__*/ new Set(booleans);
43
+ const ChildProperties = /*#__PURE__*/ new Set([
44
+ "innerHTML",
45
+ "textContent",
46
+ "innerText",
47
+ "children"
48
+ ]);
49
+ const Aliases = /*#__PURE__*/ Object.assign(Object.create(null), {
9
50
  className: "class",
10
51
  htmlFor: "for"
11
52
  });
12
53
 
13
- const ES2017FLAG = Feature.AggregateError
14
- | Feature.BigInt
15
- | Feature.BigIntTypedArray;
16
- const GLOBAL_IDENTIFIER = '_$HY.r';
17
- function createSerializer({
18
- onData,
19
- onDone,
20
- scopeId
21
- }) {
54
+ const ES2017FLAG = Feature.AggregateError | Feature.BigInt | Feature.BigIntTypedArray;
55
+ const GLOBAL_IDENTIFIER = "_$HY.r";
56
+ function createSerializer({ onData, onDone, scopeId }) {
22
57
  return new Serializer({
23
58
  scopeId,
24
59
  globalIdentifier: GLOBAL_IDENTIFIER,
@@ -34,12 +69,11 @@ function getLocalHeaderScript(id) {
34
69
  return getCrossReferenceHeader(id);
35
70
  }
36
71
 
37
- const VOID_ELEMENTS = /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i;
72
+ const VOID_ELEMENTS =
73
+ /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i;
38
74
  const REPLACE_SCRIPT = `function $df(e,n,o,t){if(n=document.getElementById(e),o=document.getElementById("pl-"+e)){for(;o&&8!==o.nodeType&&o.nodeValue!=="pl-"+e;)t=o.nextSibling,o.remove(),o=t;_$HY.done?o.remove():o.replaceWith(n.content)}n.remove(),_$HY.fe(e)}`;
39
75
  function renderToString(code, options = {}) {
40
- const {
41
- renderId
42
- } = options;
76
+ const { renderId } = options;
43
77
  let scripts = "";
44
78
  const serializer = createSerializer({
45
79
  scopeId: renderId,
@@ -72,9 +106,7 @@ function renderToString(code, options = {}) {
72
106
  return html;
73
107
  }
74
108
  function renderToStringAsync(code, options = {}) {
75
- const {
76
- timeoutMs = 30000
77
- } = options;
109
+ const { timeoutMs = 30000 } = options;
78
110
  let timeoutHandle;
79
111
  const timeout = new Promise((_, reject) => {
80
112
  timeoutHandle = setTimeout(() => reject("renderToString timed out"), timeoutMs);
@@ -85,12 +117,7 @@ function renderToStringAsync(code, options = {}) {
85
117
  });
86
118
  }
87
119
  function renderToStream(code, options = {}) {
88
- let {
89
- nonce,
90
- onCompleteShell,
91
- onCompleteAll,
92
- renderId
93
- } = options;
120
+ let { nonce, onCompleteShell, onCompleteAll, renderId } = options;
94
121
  let dispose;
95
122
  const blockingPromises = [];
96
123
  const pushTask = task => {
@@ -105,11 +132,12 @@ function renderToStream(code, options = {}) {
105
132
  const checkEnd = () => {
106
133
  if (!registry.size && !completed) {
107
134
  writeTasks();
108
- onCompleteAll && onCompleteAll({
109
- write(v) {
110
- !completed && buffer.write(v);
111
- }
112
- });
135
+ onCompleteAll &&
136
+ onCompleteAll({
137
+ write(v) {
138
+ !completed && buffer.write(v);
139
+ }
140
+ });
113
141
  writable && writable.end();
114
142
  completed = true;
115
143
  setTimeout(dispose);
@@ -165,23 +193,29 @@ function renderToStream(code, options = {}) {
165
193
  const first = html.indexOf(placeholder);
166
194
  if (first === -1) return;
167
195
  const last = html.indexOf(`<!--!$/${id}-->`, first + placeholder.length);
168
- html = html.replace(html.slice(first, last + placeholder.length + 1), resolveSSRNode(payloadFn()));
196
+ html = html.replace(
197
+ html.slice(first, last + placeholder.length + 1),
198
+ resolveSSRNode(payloadFn())
199
+ );
169
200
  },
170
201
  serialize(id, p, wait) {
171
202
  const serverOnly = sharedConfig.context.noHydrate;
172
203
  if (!firstFlushed && wait && typeof p === "object" && "then" in p) {
173
204
  blockingPromises.push(p);
174
- !serverOnly && p.then(d => {
175
- serializer.write(id, d);
176
- }).catch(e => {
177
- serializer.write(id, e);
178
- });
205
+ !serverOnly &&
206
+ p
207
+ .then(d => {
208
+ serializer.write(id, d);
209
+ })
210
+ .catch(e => {
211
+ serializer.write(id, e);
212
+ });
179
213
  } else if (!serverOnly) serializer.write(id, p);
180
214
  },
181
215
  registerFragment(key) {
182
216
  if (!registry.has(key)) {
183
217
  let resolve, reject;
184
- const p = new Promise((r, rej) => (resolve = r, reject = rej));
218
+ const p = new Promise((r, rej) => ((resolve = r), (reject = rej)));
185
219
  registry.set(key, {
186
220
  resolve,
187
221
  reject
@@ -190,10 +224,7 @@ function renderToStream(code, options = {}) {
190
224
  }
191
225
  return (value, error) => {
192
226
  if (registry.has(key)) {
193
- const {
194
- resolve,
195
- reject
196
- } = registry.get(key);
227
+ const { resolve, reject } = registry.get(key);
197
228
  registry.delete(key);
198
229
  if (waitForFragments(registry, key)) {
199
230
  resolve(true);
@@ -201,7 +232,9 @@ function renderToStream(code, options = {}) {
201
232
  }
202
233
  if ((value !== undefined || error) && !completed) {
203
234
  if (!firstFlushed) {
204
- Promise.resolve().then(() => html = replacePlaceholder(html, key, value !== undefined ? value : ""));
235
+ Promise.resolve().then(
236
+ () => (html = replacePlaceholder(html, key, value !== undefined ? value : ""))
237
+ );
205
238
  error ? reject(error) : resolve(true);
206
239
  } else {
207
240
  buffer.write(`<template id="${key}">${value !== undefined ? value : " "}</template>`);
@@ -227,11 +260,12 @@ function renderToStream(code, options = {}) {
227
260
  if (tasks.length) html = injectScripts(html, tasks, nonce);
228
261
  buffer.write(html);
229
262
  tasks = "";
230
- onCompleteShell && onCompleteShell({
231
- write(v) {
232
- !completed && buffer.write(v);
233
- }
234
- });
263
+ onCompleteShell &&
264
+ onCompleteShell({
265
+ write(v) {
266
+ !completed && buffer.write(v);
267
+ }
268
+ });
235
269
  }
236
270
  return {
237
271
  then(fn) {
@@ -254,7 +288,8 @@ function renderToStream(code, options = {}) {
254
288
  buffer = writable = w;
255
289
  buffer.write(tmp);
256
290
  firstFlushed = true;
257
- if (completed) writable.end();else setTimeout(flushEnd);
291
+ if (completed) writable.end();
292
+ else setTimeout(flushEnd);
258
293
  });
259
294
  },
260
295
  pipeTo(w) {
@@ -263,7 +298,7 @@ function renderToStream(code, options = {}) {
263
298
  const encoder = new TextEncoder();
264
299
  const writer = w.getWriter();
265
300
  let resolve;
266
- const p = new Promise(r => resolve = r);
301
+ const p = new Promise(r => (resolve = r));
267
302
  writable = {
268
303
  end() {
269
304
  writer.releaseLock();
@@ -278,20 +313,21 @@ function renderToStream(code, options = {}) {
278
313
  };
279
314
  buffer.write(tmp);
280
315
  firstFlushed = true;
281
- if (completed) writable.end();else setTimeout(flushEnd);
316
+ if (completed) writable.end();
317
+ else setTimeout(flushEnd);
282
318
  return p;
283
319
  });
284
320
  }
285
321
  };
286
322
  }
287
323
  function HydrationScript(props) {
288
- const {
289
- nonce
290
- } = sharedConfig.context;
291
- return ssr(generateHydrationScript({
292
- nonce,
293
- ...props
294
- }));
324
+ const { nonce } = sharedConfig.context;
325
+ return ssr(
326
+ generateHydrationScript({
327
+ nonce,
328
+ ...props
329
+ })
330
+ );
295
331
  }
296
332
  function ssr(t, ...nodes) {
297
333
  if (nodes.length) {
@@ -336,7 +372,8 @@ function ssrStyle(value) {
336
372
  return result;
337
373
  }
338
374
  function ssrElement(tag, props, children, needsId) {
339
- if (props == null) props = {};else if (typeof props === "function") props = props();
375
+ if (props == null) props = {};
376
+ else if (typeof props === "function") props = props();
340
377
  const skipChildren = VOID_ELEMENTS.test(tag);
341
378
  const keys = Object.keys(props);
342
379
  let result = `<${tag}${needsId ? ssrHydrationKey() : ""} `;
@@ -344,7 +381,8 @@ function ssrElement(tag, props, children, needsId) {
344
381
  for (let i = 0; i < keys.length; i++) {
345
382
  const prop = keys[i];
346
383
  if (ChildProperties.has(prop)) {
347
- if (children === undefined && !skipChildren) children = prop === "innerHTML" ? props[prop] : escape(props[prop]);
384
+ if (children === undefined && !skipChildren)
385
+ children = prop === "innerHTML" ? props[prop] : escape(props[prop]);
348
386
  continue;
349
387
  }
350
388
  const value = props[prop];
@@ -353,10 +391,14 @@ function ssrElement(tag, props, children, needsId) {
353
391
  } else if (prop === "class" || prop === "className" || prop === "classList") {
354
392
  if (classResolved) continue;
355
393
  let n;
356
- result += `class="${escape(((n = props.class) ? n + " " : "") + ((n = props.className) ? n + " " : ""), true) + ssrClassList(props.classList)}"`;
394
+ result += `class="${
395
+ escape(((n = props.class) ? n + " " : "") + ((n = props.className) ? n + " " : ""), true) +
396
+ ssrClassList(props.classList)
397
+ }"`;
357
398
  classResolved = true;
358
399
  } else if (BooleanAttributes.has(prop)) {
359
- if (value) result += prop;else continue;
400
+ if (value) result += prop;
401
+ else continue;
360
402
  } else if (value == undefined || prop === "ref" || prop.slice(0, 2) === "on") {
361
403
  continue;
362
404
  } else {
@@ -364,16 +406,17 @@ function ssrElement(tag, props, children, needsId) {
364
406
  }
365
407
  if (i !== keys.length - 1) result += " ";
366
408
  }
367
- if (skipChildren) return {
368
- t: result + "/>"
369
- };
409
+ if (skipChildren)
410
+ return {
411
+ t: result + "/>"
412
+ };
370
413
  if (typeof children === "function") children = children();
371
414
  return {
372
415
  t: result + `>${resolveSSRNode(children, true)}</${tag}>`
373
416
  };
374
417
  }
375
418
  function ssrAttribute(key, value, isBoolean) {
376
- return isBoolean ? value ? " " + key : "" : value != null ? ` ${key}="${value}"` : "";
419
+ return isBoolean ? (value ? " " + key : "") : value != null ? ` ${key}="${value}"` : "";
377
420
  }
378
421
  function ssrHydrationKey() {
379
422
  const hk = getHydrationKey();
@@ -417,12 +460,13 @@ function escape(s, attr) {
417
460
  left = iDelim + 1;
418
461
  iDelim = s.indexOf(delim, left);
419
462
  } while (iDelim >= 0);
420
- } else while (iAmp >= 0) {
421
- if (left < iAmp) out += s.substring(left, iAmp);
422
- out += "&amp;";
423
- left = iAmp + 1;
424
- iAmp = s.indexOf("&", left);
425
- }
463
+ } else
464
+ while (iAmp >= 0) {
465
+ if (left < iAmp) out += s.substring(left, iAmp);
466
+ out += "&amp;";
467
+ left = iAmp + 1;
468
+ iAmp = s.indexOf("&", left);
469
+ }
426
470
  return left < s.length ? out + s.substring(left) : out;
427
471
  }
428
472
  function resolveSSRNode(node, top) {
@@ -434,7 +478,7 @@ function resolveSSRNode(node, top) {
434
478
  let mapped = "";
435
479
  for (let i = 0, len = node.length; i < len; i++) {
436
480
  if (!top && typeof prev !== "object" && typeof node[i] !== "object") mapped += `<!--!$-->`;
437
- mapped += resolveSSRNode(prev = node[i]);
481
+ mapped += resolveSSRNode((prev = node[i]));
438
482
  }
439
483
  return mapped;
440
484
  }
@@ -455,11 +499,12 @@ function getAssets() {
455
499
  for (let i = 0, len = assets.length; i < len; i++) out += assets[i]();
456
500
  return out;
457
501
  }
458
- function generateHydrationScript({
459
- eventNames = ["click", "input"],
460
- nonce
461
- } = {}) {
462
- return `<script${nonce ? ` nonce="${nonce}"` : ""}>window._$HY||(e=>{let t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host.nodeType?e.host:e.parentNode));["${eventNames.join('", "')}"].forEach((o=>document.addEventListener(o,(o=>{let a=o.composedPath&&o.composedPath()[0]||o.target,s=t(a);s&&!e.completed.has(s)&&e.events.push([s,o])}))))})(_$HY={events:[],completed:new WeakSet,r:{},fe(){}});${getGlobalHeaderScript()}</script><!--xs-->`;
502
+ function generateHydrationScript({ eventNames = ["click", "input"], nonce } = {}) {
503
+ return `<script${
504
+ nonce ? ` nonce="${nonce}"` : ""
505
+ }>window._$HY||(e=>{let t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host.nodeType?e.host:e.parentNode));["${eventNames.join(
506
+ '", "'
507
+ )}"].forEach((o=>document.addEventListener(o,(o=>{let a=o.composedPath&&o.composedPath()[0]||o.target,s=t(a);s&&!e.completed.has(s)&&e.events.push([s,o])}))))})(_$HY={events:[],completed:new WeakSet,r:{},fe(){}});${getGlobalHeaderScript()}</script><!--xs-->`;
463
508
  }
464
509
  function Hydration(props) {
465
510
  if (!sharedConfig.context.noHydrate) return props.children;
@@ -511,9 +556,7 @@ function Assets(props) {
511
556
  }
512
557
  function pipeToNodeWritable(code, writable, options = {}) {
513
558
  if (options.onReady) {
514
- options.onCompleteShell = ({
515
- write
516
- }) => {
559
+ options.onCompleteShell = ({ write }) => {
517
560
  options.onReady({
518
561
  write,
519
562
  startWriting() {
@@ -527,9 +570,7 @@ function pipeToNodeWritable(code, writable, options = {}) {
527
570
  }
528
571
  function pipeToWritable(code, writable, options = {}) {
529
572
  if (options.onReady) {
530
- options.onCompleteShell = ({
531
- write
532
- }) => {
573
+ options.onCompleteShell = ({ write }) => {
533
574
  options.onReady({
534
575
  write,
535
576
  startWriting() {
@@ -559,11 +600,19 @@ function ssrSpread(props, isSVG, skipChildren) {
559
600
  } else if (prop === "class" || prop === "className" || prop === "classList") {
560
601
  if (classResolved) continue;
561
602
  let n;
562
- result += `class="${(n = props.class) ? n + " " : ""}${(n = props.className) ? n + " " : ""}${ssrClassList(props.classList)}"`;
603
+ result += `class="${(n = props.class) ? n + " " : ""}${
604
+ (n = props.className) ? n + " " : ""
605
+ }${ssrClassList(props.classList)}"`;
563
606
  classResolved = true;
564
607
  } else if (BooleanAttributes.has(prop)) {
565
- if (value) result += prop;else continue;
566
- } else if (value == undefined || prop === "ref" || prop.slice(0, 2) === "on" || prop.slice(0, 5) === "prop:") {
608
+ if (value) result += prop;
609
+ else continue;
610
+ } else if (
611
+ value == undefined ||
612
+ prop === "ref" ||
613
+ prop.slice(0, 2) === "on" ||
614
+ prop.slice(0, 5) === "prop:"
615
+ ) {
567
616
  continue;
568
617
  } else {
569
618
  if (prop.slice(0, 5) === "attr:") prop = prop.slice(5);
@@ -587,7 +636,8 @@ function Dynamic(props) {
587
636
  const comp = p.component,
588
637
  t = typeof comp;
589
638
  if (comp) {
590
- if (t === "function") return comp(others);else if (t === "string") {
639
+ if (t === "function") return comp(others);
640
+ else if (t === "string") {
591
641
  return ssrElement(comp, others, undefined, true);
592
642
  }
593
643
  }
@@ -596,4 +646,37 @@ function Portal(props) {
596
646
  return "";
597
647
  }
598
648
 
599
- export { Assets, Dynamic, Hydration, HydrationScript, NoHydration, Portal, addEventListener, delegateEvents, escape, generateHydrationScript, getAssets, getHydrationKey, hydrate, insert, isDev, isServer, pipeToNodeWritable, pipeToWritable, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, useAssets };
649
+ export {
650
+ Assets,
651
+ Dynamic,
652
+ Hydration,
653
+ HydrationScript,
654
+ NoHydration,
655
+ Portal,
656
+ addEventListener,
657
+ delegateEvents,
658
+ escape,
659
+ generateHydrationScript,
660
+ getAssets,
661
+ getHydrationKey,
662
+ hydrate,
663
+ insert,
664
+ isDev,
665
+ isServer,
666
+ pipeToNodeWritable,
667
+ pipeToWritable,
668
+ render,
669
+ renderToStream,
670
+ renderToString,
671
+ renderToStringAsync,
672
+ resolveSSRNode,
673
+ spread,
674
+ ssr,
675
+ ssrAttribute,
676
+ ssrClassList,
677
+ ssrElement,
678
+ ssrHydrationKey,
679
+ ssrSpread,
680
+ ssrStyle,
681
+ useAssets
682
+ };