@qwik.dev/core 2.0.0-beta.7 → 2.0.0-beta.9

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 (46) hide show
  1. package/bindings/qwik.darwin-arm64.node +0 -0
  2. package/bindings/qwik.darwin-x64.node +0 -0
  3. package/bindings/qwik.linux-x64-gnu.node +0 -0
  4. package/bindings/qwik.win32-x64-msvc.node +0 -0
  5. package/bindings/qwik_wasm_bg.wasm +0 -0
  6. package/dist/backpatch/index.cjs +6 -0
  7. package/dist/backpatch/index.d.ts +2 -0
  8. package/dist/backpatch/index.mjs +5 -0
  9. package/dist/backpatch/package.json +8 -0
  10. package/dist/backpatch-executor.debug.js +34 -0
  11. package/dist/backpatch-executor.js +1 -0
  12. package/dist/build/package.json +1 -1
  13. package/dist/cli.cjs +17 -17
  14. package/dist/core-internal.d.ts +112 -56
  15. package/dist/core.cjs +1022 -469
  16. package/dist/core.cjs.map +1 -1
  17. package/dist/core.min.mjs +1 -1
  18. package/dist/core.mjs +1018 -469
  19. package/dist/core.mjs.map +1 -1
  20. package/dist/core.prod.cjs +654 -361
  21. package/dist/core.prod.mjs +729 -373
  22. package/dist/loader/index.cjs +2 -2
  23. package/dist/loader/index.mjs +2 -2
  24. package/dist/loader/package.json +1 -1
  25. package/dist/optimizer.cjs +78 -76
  26. package/dist/optimizer.mjs +78 -78
  27. package/dist/qwikloader.debug.js +0 -13
  28. package/dist/qwikloader.js +1 -1
  29. package/dist/server.cjs +217 -63
  30. package/dist/server.d.ts +9 -0
  31. package/dist/server.mjs +213 -63
  32. package/dist/starters/features/auth/package.json +1 -1
  33. package/dist/starters/features/localize/package.json +3 -3
  34. package/dist/starters/features/pandacss/package.json +1 -1
  35. package/dist/starters/features/playwright/playwright-report/index.html +943 -903
  36. package/dist/starters/features/postcss/postcss.config.js +1 -1
  37. package/dist/starters/features/tailwind/package.json +2 -2
  38. package/dist/starters/features/tailwind/prettier.config.js +10 -0
  39. package/dist/starters/features/tailwind-v3/package.json +1 -1
  40. package/dist/starters/features/tailwind-v3/prettier.config.js +10 -0
  41. package/dist/testing/index.cjs +3826 -952
  42. package/dist/testing/index.d.ts +972 -1
  43. package/dist/testing/index.mjs +3811 -946
  44. package/dist/testing/package.json +1 -1
  45. package/package.json +8 -6
  46. package/dist/starters/features/tailwind/.prettierrc.js +0 -3
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,6 @@
1
+ const QWIK_BACKPATCH_EXECUTOR_MINIFIED = "const t='script[type=\"qwik/backpatch\"]',e=document.currentScript;if(e){const o=e.closest(\"[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])\");if(o){const e=o.querySelector(t);if(e){const t=JSON.parse(e.textContent||\"[]\"),n=document.createTreeWalker(o,NodeFilter.SHOW_ELEMENT);let r=n.currentNode,c=0;for(let e=0;e<t.length;e+=3){const o=t[e],i=t[e+1];let l=t[e+2];for(;c<o;)r=n.nextNode(),c++;const s=r;null==l||!1===l?s.removeAttribute(i):(\"boolean\"==typeof l&&(l=\"\"),s.setAttribute(i,l))}}}}";
2
+ const QWIK_BACKPATCH_EXECUTOR_DEBUG = "const BACKPATCH_DATA_SELECTOR = 'script[type=\"qwik/backpatch\"]';\nconst executorScript = document.currentScript;\nif (executorScript) {\n const container = executorScript.closest(\n \"[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])\"\n );\n if (container) {\n const script = container.querySelector(BACKPATCH_DATA_SELECTOR);\n if (script) {\n const data = JSON.parse(script.textContent || \"[]\");\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT);\n let currentNode = walker.currentNode;\n let currentNodeIdx = 0;\n for (let i = 0; i < data.length; i += 3) {\n const elementIdx = data[i];\n const attrName = data[i + 1];\n let value = data[i + 2];\n while (currentNodeIdx < elementIdx) {\n currentNode = walker.nextNode();\n currentNodeIdx++;\n }\n const element = currentNode;\n if (value == null || value === false) {\n element.removeAttribute(attrName);\n } else {\n if (typeof value === \"boolean\") {\n value = \"\";\n }\n element.setAttribute(attrName, value);\n }\n }\n }\n }\n}";
3
+ globalThis.QWIK_BACKPATCH_EXECUTOR_MINIFIED = QWIK_BACKPATCH_EXECUTOR_MINIFIED;
4
+ globalThis.QWIK_BACKPATCH_EXECUTOR_DEBUG = QWIK_BACKPATCH_EXECUTOR_DEBUG;
5
+ exports.QWIK_BACKPATCH_EXECUTOR_MINIFIED = QWIK_BACKPATCH_EXECUTOR_MINIFIED;
6
+ exports.QWIK_BACKPATCH_EXECUTOR_DEBUG = QWIK_BACKPATCH_EXECUTOR_DEBUG;
@@ -0,0 +1,2 @@
1
+ export declare const QWIK_BACKPATCH_EXECUTOR_MINIFIED: string;
2
+ export declare const QWIK_BACKPATCH_EXECUTOR_DEBUG: string;
@@ -0,0 +1,5 @@
1
+ const QWIK_BACKPATCH_EXECUTOR_MINIFIED = "const t='script[type=\"qwik/backpatch\"]',e=document.currentScript;if(e){const o=e.closest(\"[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])\");if(o){const e=o.querySelector(t);if(e){const t=JSON.parse(e.textContent||\"[]\"),n=document.createTreeWalker(o,NodeFilter.SHOW_ELEMENT);let r=n.currentNode,c=0;for(let e=0;e<t.length;e+=3){const o=t[e],i=t[e+1];let l=t[e+2];for(;c<o;)r=n.nextNode(),c++;const s=r;null==l||!1===l?s.removeAttribute(i):(\"boolean\"==typeof l&&(l=\"\"),s.setAttribute(i,l))}}}}";
2
+ const QWIK_BACKPATCH_EXECUTOR_DEBUG = "const BACKPATCH_DATA_SELECTOR = 'script[type=\"qwik/backpatch\"]';\nconst executorScript = document.currentScript;\nif (executorScript) {\n const container = executorScript.closest(\n \"[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])\"\n );\n if (container) {\n const script = container.querySelector(BACKPATCH_DATA_SELECTOR);\n if (script) {\n const data = JSON.parse(script.textContent || \"[]\");\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT);\n let currentNode = walker.currentNode;\n let currentNodeIdx = 0;\n for (let i = 0; i < data.length; i += 3) {\n const elementIdx = data[i];\n const attrName = data[i + 1];\n let value = data[i + 2];\n while (currentNodeIdx < elementIdx) {\n currentNode = walker.nextNode();\n currentNodeIdx++;\n }\n const element = currentNode;\n if (value == null || value === false) {\n element.removeAttribute(attrName);\n } else {\n if (typeof value === \"boolean\") {\n value = \"\";\n }\n element.setAttribute(attrName, value);\n }\n }\n }\n }\n}";
3
+ globalThis.QWIK_BACKPATCH_EXECUTOR_MINIFIED = QWIK_BACKPATCH_EXECUTOR_MINIFIED;
4
+ globalThis.QWIK_BACKPATCH_EXECUTOR_DEBUG = QWIK_BACKPATCH_EXECUTOR_DEBUG;
5
+ export { QWIK_BACKPATCH_EXECUTOR_MINIFIED, QWIK_BACKPATCH_EXECUTOR_DEBUG };
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "@qwik.dev/core/backpatch",
3
+ "version": "2.0.0-beta.9-dev+6b582c7",
4
+ "main": "index.mjs",
5
+ "types": "index.d.ts",
6
+ "private": true,
7
+ "type": "module"
8
+ }
@@ -0,0 +1,34 @@
1
+ const BACKPATCH_DATA_SELECTOR = 'script[type="qwik/backpatch"]';
2
+ const executorScript = document.currentScript;
3
+ if (executorScript) {
4
+ const container = executorScript.closest(
5
+ "[q\\:container]:not([q\\:container=html]):not([q\\:container=text])"
6
+ );
7
+ if (container) {
8
+ const script = container.querySelector(BACKPATCH_DATA_SELECTOR);
9
+ if (script) {
10
+ const data = JSON.parse(script.textContent || "[]");
11
+ const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT);
12
+ let currentNode = walker.currentNode;
13
+ let currentNodeIdx = 0;
14
+ for (let i = 0; i < data.length; i += 3) {
15
+ const elementIdx = data[i];
16
+ const attrName = data[i + 1];
17
+ let value = data[i + 2];
18
+ while (currentNodeIdx < elementIdx) {
19
+ currentNode = walker.nextNode();
20
+ currentNodeIdx++;
21
+ }
22
+ const element = currentNode;
23
+ if (value == null || value === false) {
24
+ element.removeAttribute(attrName);
25
+ } else {
26
+ if (typeof value === "boolean") {
27
+ value = "";
28
+ }
29
+ element.setAttribute(attrName, value);
30
+ }
31
+ }
32
+ }
33
+ }
34
+ }
@@ -0,0 +1 @@
1
+ const t='script[type="qwik/backpatch"]',e=document.currentScript;if(e){const o=e.closest("[q\\:container]:not([q\\:container=html]):not([q\\:container=text])");if(o){const e=o.querySelector(t);if(e){const t=JSON.parse(e.textContent||"[]"),n=document.createTreeWalker(o,NodeFilter.SHOW_ELEMENT);let r=n.currentNode,c=0;for(let e=0;e<t.length;e+=3){const o=t[e],i=t[e+1];let l=t[e+2];for(;c<o;)r=n.nextNode(),c++;const s=r;null==l||!1===l?s.removeAttribute(i):("boolean"==typeof l&&(l=""),s.setAttribute(i,l))}}}}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qwik.dev/core/build",
3
- "version": "2.0.0-beta.7-dev+2dd89a6",
3
+ "version": "2.0.0-beta.9-dev+6b582c7",
4
4
  "main": "index.mjs",
5
5
  "types": "index.d.ts",
6
6
  "private": true,
package/dist/cli.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * @qwik.dev/core/cli 2.0.0-beta.7-dev+2dd89a6
3
+ * @qwik.dev/core/cli 2.0.0-beta.9-dev+6b582c7
4
4
  * Copyright QwikDev. All Rights Reserved.
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://github.com/QwikDev/qwik/blob/main/LICENSE
@@ -983,9 +983,9 @@ var require_path_key = __commonJS({
983
983
  }
984
984
  });
985
985
 
986
- // node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/resolveCommand.js
986
+ // node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js
987
987
  var require_resolveCommand = __commonJS({
988
- "node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/resolveCommand.js"(exports2, module2) {
988
+ "node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js"(exports2, module2) {
989
989
  "use strict";
990
990
  var path3 = require("path");
991
991
  var which = require_which();
@@ -1025,9 +1025,9 @@ var require_resolveCommand = __commonJS({
1025
1025
  }
1026
1026
  });
1027
1027
 
1028
- // node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/escape.js
1028
+ // node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js
1029
1029
  var require_escape = __commonJS({
1030
- "node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/escape.js"(exports2, module2) {
1030
+ "node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js"(exports2, module2) {
1031
1031
  "use strict";
1032
1032
  var metaCharsRegExp = /([()\][%!^"`<>&|;, *?])/g;
1033
1033
  function escapeCommand(arg) {
@@ -1036,8 +1036,8 @@ var require_escape = __commonJS({
1036
1036
  }
1037
1037
  function escapeArgument(arg, doubleEscapeMetaChars) {
1038
1038
  arg = `${arg}`;
1039
- arg = arg.replace(/(\\*)"/g, '$1$1\\"');
1040
- arg = arg.replace(/(\\*)$/, "$1$1");
1039
+ arg = arg.replace(/(?=(\\+?)?)\1"/g, '$1$1\\"');
1040
+ arg = arg.replace(/(?=(\\+?)?)\1$/, "$1$1");
1041
1041
  arg = `"${arg}"`;
1042
1042
  arg = arg.replace(metaCharsRegExp, "^$1");
1043
1043
  if (doubleEscapeMetaChars) {
@@ -1078,9 +1078,9 @@ var require_shebang_command = __commonJS({
1078
1078
  }
1079
1079
  });
1080
1080
 
1081
- // node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/readShebang.js
1081
+ // node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js
1082
1082
  var require_readShebang = __commonJS({
1083
- "node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/util/readShebang.js"(exports2, module2) {
1083
+ "node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js"(exports2, module2) {
1084
1084
  "use strict";
1085
1085
  var fs8 = require("fs");
1086
1086
  var shebangCommand = require_shebang_command();
@@ -1100,9 +1100,9 @@ var require_readShebang = __commonJS({
1100
1100
  }
1101
1101
  });
1102
1102
 
1103
- // node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/parse.js
1103
+ // node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js
1104
1104
  var require_parse = __commonJS({
1105
- "node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/parse.js"(exports2, module2) {
1105
+ "node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js"(exports2, module2) {
1106
1106
  "use strict";
1107
1107
  var path3 = require("path");
1108
1108
  var resolveCommand = require_resolveCommand();
@@ -1162,9 +1162,9 @@ var require_parse = __commonJS({
1162
1162
  }
1163
1163
  });
1164
1164
 
1165
- // node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/enoent.js
1165
+ // node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js
1166
1166
  var require_enoent = __commonJS({
1167
- "node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/lib/enoent.js"(exports2, module2) {
1167
+ "node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js"(exports2, module2) {
1168
1168
  "use strict";
1169
1169
  var isWin = process.platform === "win32";
1170
1170
  function notFoundError(original, syscall) {
@@ -1183,7 +1183,7 @@ var require_enoent = __commonJS({
1183
1183
  const originalEmit = cp.emit;
1184
1184
  cp.emit = function(name, arg1) {
1185
1185
  if (name === "exit") {
1186
- const err = verifyENOENT(arg1, parsed, "spawn");
1186
+ const err = verifyENOENT(arg1, parsed);
1187
1187
  if (err) {
1188
1188
  return originalEmit.call(cp, "error", err);
1189
1189
  }
@@ -1212,9 +1212,9 @@ var require_enoent = __commonJS({
1212
1212
  }
1213
1213
  });
1214
1214
 
1215
- // node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/index.js
1215
+ // node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js
1216
1216
  var require_cross_spawn = __commonJS({
1217
- "node_modules/.pnpm/cross-spawn@7.0.3/node_modules/cross-spawn/index.js"(exports2, module2) {
1217
+ "node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js"(exports2, module2) {
1218
1218
  "use strict";
1219
1219
  var cp = require("child_process");
1220
1220
  var parse = require_parse();
@@ -5536,7 +5536,7 @@ async function printHelp(app) {
5536
5536
  await runCommand2(Object.assign(app, { task: args[0], args }));
5537
5537
  }
5538
5538
  function printVersion() {
5539
- console.log("2.0.0-beta.7-dev+2dd89a6");
5539
+ console.log("2.0.0-beta.9-dev+6b582c7");
5540
5540
  }
5541
5541
  // Annotate the CommonJS export names for ESM import in node:
5542
5542
  0 && (module.exports = {
@@ -5,7 +5,6 @@ import { isDev } from './build';
5
5
  import { isServer } from './build';
6
6
  import { QRL as QRL_2 } from './qrl.public';
7
7
  import type { StreamWriter as StreamWriter_2 } from '.';
8
- import { ValueOrPromise as ValueOrPromise_2 } from '..';
9
8
 
10
9
  /**
11
10
  * Qwik Optimizer marker function.
@@ -99,7 +98,7 @@ declare type _AllowPlainQrl<Q> = QRLEventHandlerMulti<any, any> extends Q ? Q ex
99
98
 
100
99
  declare type AllPascalEventMaps = PascalMap<AllEventsMap>;
101
100
 
102
- declare type AllSignalFlags = SignalFlags | WrappedSignalFlags | ComputedSignalFlags;
101
+ declare type AllSignalFlags = SignalFlags | WrappedSignalFlags | SerializationSignalFlags;
103
102
 
104
103
  /**
105
104
  * TS defines these with the React syntax which is not compatible with Qwik. E.g. `ariaAtomic`
@@ -367,6 +366,10 @@ export declare type AsyncComputedFn<T> = (ctx: AsyncComputedCtx) => Promise<T>;
367
366
 
368
367
  /** @public */
369
368
  export declare interface AsyncComputedReadonlySignal<T = unknown> extends ComputedSignal<T> {
369
+ /** Whether the signal is currently loading. */
370
+ loading: boolean;
371
+ /** The error that occurred while computing the signal. */
372
+ error: Error | null;
370
373
  }
371
374
 
372
375
  /** @public */
@@ -387,7 +390,7 @@ declare class AsyncComputedSignalImpl<T> extends ComputedSignalImpl<T, AsyncComp
387
390
  $destroy$: NoSerialize<() => void> | null;
388
391
  private $promiseValue$;
389
392
  [_EFFECT_BACK_REF]: Map<EffectProperty | string, EffectSubscription> | null;
390
- constructor(container: Container | null, fn: AsyncComputeQRL<T>, flags?: SignalFlags | ComputedSignalFlags);
393
+ constructor(container: Container | null, fn: AsyncComputeQRL<T>, flags?: SignalFlags | SerializationSignalFlags);
391
394
  /**
392
395
  * Loading is true if the signal is still waiting for the promise to resolve, false if the promise
393
396
  * has resolved or rejected.
@@ -400,7 +403,7 @@ declare class AsyncComputedSignalImpl<T> extends ComputedSignalImpl<T, AsyncComp
400
403
  set untrackedError(value: Error | null);
401
404
  get untrackedError(): Error | null;
402
405
  invalidate(): void;
403
- $computeIfNeeded$(): boolean;
406
+ $computeIfNeeded$(): boolean | undefined;
404
407
  }
405
408
 
406
409
  declare type AsyncComputeQRL<T> = QRLInternal<AsyncComputedFn<T>>;
@@ -431,6 +434,32 @@ declare type BivariantQrlFn<ARGS extends any[], RETURN> = {
431
434
  /** @public */
432
435
  declare type Booleanish = boolean | `${boolean}`;
433
436
 
437
+ declare interface Chore<T extends ChoreType = ChoreType> {
438
+ $type$: T;
439
+ $idx$: number | string;
440
+ $host$: HostElement;
441
+ $target$: ChoreTarget | null;
442
+ $payload$: unknown;
443
+ $state$: ChoreState;
444
+ $blockedChores$: Chore[] | null;
445
+ $startTime$: number | undefined;
446
+ $endTime$: number | undefined;
447
+ $resolve$: ((value: any) => void) | undefined;
448
+ $reject$: ((reason?: any) => void) | undefined;
449
+ $returnValue$: ValueOrPromise<ChoreReturnValue<T>>;
450
+ }
451
+
452
+ declare type ChoreReturnValue<T extends ChoreType = ChoreType> = T extends ChoreType.RECOMPUTE_AND_SCHEDULE_EFFECTS | ChoreType.WAIT_FOR_QUEUE | ChoreType.NODE_PROP ? void : T extends ChoreType.NODE_DIFF | ChoreType.COMPONENT ? JSXOutput : unknown;
453
+
454
+ declare enum ChoreState {
455
+ NONE = 0,
456
+ RUNNING = 1,
457
+ FAILED = 2,
458
+ DONE = 3
459
+ }
460
+
461
+ declare type ChoreTarget = HostElement | QRLInternal<(...args: unknown[]) => unknown> | Signal | StoreTarget;
462
+
434
463
  declare const enum ChoreType {
435
464
  MACRO = 240,
436
465
  MICRO = 15,
@@ -442,10 +471,9 @@ declare const enum ChoreType {
442
471
  NODE_PROP = 5,
443
472
  COMPONENT = 6,
444
473
  RECOMPUTE_AND_SCHEDULE_EFFECTS = 7,
445
- JOURNAL_FLUSH = 16,
446
- VISIBLE = 32,
447
- CLEANUP_VISIBLE = 48,
448
- WAIT_FOR_ALL = 255
474
+ VISIBLE = 16,
475
+ CLEANUP_VISIBLE = 32,
476
+ WAIT_FOR_QUEUE = 255
449
477
  }
450
478
 
451
479
  /**
@@ -469,9 +497,9 @@ export declare interface ClientContainer extends Container {
469
497
  qManifestHash: string;
470
498
  rootVNode: _ElementVNode;
471
499
  $journal$: VNodeJournal;
472
- renderDone: Promise<void> | null;
473
500
  $forwardRefs$: Array<number> | null;
474
501
  $initialQRLsIndexes$: Array<number> | null;
502
+ $flushEpoch$: number;
475
503
  parseQRL<T = unknown>(qrl: string): QRL<T>;
476
504
  $setRawState$(id: number, vParent: _ElementVNode | _VirtualVNode): void;
477
505
  }
@@ -599,11 +627,6 @@ export declare interface ComputedSignal<T> extends ReadonlySignal<T> {
599
627
  invalidate(): void;
600
628
  }
601
629
 
602
- declare const enum ComputedSignalFlags {
603
- SERIALIZATION_STRATEGY_NEVER = 8,
604
- SERIALIZATION_STRATEGY_ALWAYS = 16
605
- }
606
-
607
630
  /**
608
631
  * A signal which is computed from other signals.
609
632
  *
@@ -617,10 +640,9 @@ declare class ComputedSignalImpl<T, S extends QRLInternal = ComputeQRL<T>> exten
617
640
  * resolve the QRL during the mark dirty phase so that any call to it will be synchronous). )
618
641
  */
619
642
  $computeQrl$: S;
620
- $flags$: SignalFlags | ComputedSignalFlags;
621
- $forceRunEffects$: boolean;
643
+ $flags$: SignalFlags | SerializationSignalFlags;
622
644
  [_EFFECT_BACK_REF]: Map<EffectProperty | string, EffectSubscription> | null;
623
- constructor(container: Container | null, fn: S, flags?: SignalFlags | ComputedSignalFlags);
645
+ constructor(container: Container | null, fn: S, flags?: SignalFlags | SerializationSignalFlags);
624
646
  invalidate(): void;
625
647
  /**
626
648
  * Use this to force running subscribers, for example when the calculated value has mutated but
@@ -628,7 +650,7 @@ declare class ComputedSignalImpl<T, S extends QRLInternal = ComputeQRL<T>> exten
628
650
  */
629
651
  force(): void;
630
652
  get untrackedValue(): T;
631
- $computeIfNeeded$(): boolean;
653
+ $computeIfNeeded$(): void;
632
654
  set value(_: any);
633
655
  get value(): any;
634
656
  }
@@ -658,7 +680,7 @@ declare interface Container {
658
680
  readonly $serverData$: Record<string, any>;
659
681
  $currentUniqueId$: number;
660
682
  $buildBase$: string | null;
661
- handleError(err: any, $host$: HostElement): void;
683
+ handleError(err: any, $host$: HostElement | null): void;
662
684
  getParentHost(host: HostElement): HostElement | null;
663
685
  setContext<T>(host: HostElement, context: ContextId<T>, value: T): void;
664
686
  resolveContext<T>(host: HostElement, contextId: ContextId<T>): T | undefined;
@@ -809,12 +831,6 @@ export declare interface CorePlatform {
809
831
  * @param fn - The function to call when the next animation frame is ready.
810
832
  */
811
833
  raf: (fn: () => any) => Promise<any>;
812
- /**
813
- * Perform operation on next tick.
814
- *
815
- * @param fn - The function to call when the tick is ready.
816
- */
817
- nextTick: (fn: () => any) => Promise<any>;
818
834
  /**
819
835
  * Retrieve chunk name for the symbol.
820
836
  *
@@ -920,17 +936,16 @@ export declare const createComputedQrl: <T>(qrl: QRL<() => T>, options?: Compute
920
936
  */
921
937
  export declare const createContextId: <STATE = unknown>(name: string) => ContextId<STATE>;
922
938
 
923
- declare const createScheduler: (container: Container, scheduleDrain: () => void, journalFlush: () => void) => {
924
- (type: ChoreType.QRL_RESOLVE, ignore: null, target: ComputeQRL<any> | AsyncComputeQRL<any>): ValueOrPromise<void>;
925
- (type: ChoreType.JOURNAL_FLUSH): ValueOrPromise<void>;
926
- (type: ChoreType.WAIT_FOR_ALL): ValueOrPromise<void>;
927
- (type: ChoreType.RECOMPUTE_AND_SCHEDULE_EFFECTS, host: HostElement | null, target: Signal | StoreHandler, effects: Set<EffectSubscription> | null): ValueOrPromise<void>;
928
- (type: ChoreType.TASK | ChoreType.VISIBLE, task: Task): ValueOrPromise<void>;
929
- (type: ChoreType.RUN_QRL, host: HostElement, target: QRLInternal<(...args: unknown[]) => unknown>, args: unknown[]): ValueOrPromise<void>;
930
- (type: ChoreType.COMPONENT, host: HostElement, qrl: QRLInternal<OnRenderFn<unknown>>, props: Props | null): ValueOrPromise<JSXOutput>;
931
- (type: ChoreType.NODE_DIFF, host: HostElement, target: HostElement, value: JSXOutput | Signal): ValueOrPromise<void>;
932
- (type: ChoreType.NODE_PROP, host: HostElement, prop: string, value: any): ValueOrPromise<void>;
933
- (type: ChoreType.CLEANUP_VISIBLE, task: Task): ValueOrPromise<JSXOutput>;
939
+ declare const createScheduler: (container: Container, journalFlush: () => void, choreQueue?: Chore[], blockedChores?: Set<Chore>, runningChores?: Set<Chore>) => {
940
+ (type: ChoreType.QRL_RESOLVE, ignore: null, target: ComputeQRL<any> | AsyncComputeQRL<any>): Chore<ChoreType.QRL_RESOLVE>;
941
+ (type: ChoreType.WAIT_FOR_QUEUE): Chore<ChoreType.WAIT_FOR_QUEUE>;
942
+ (type: ChoreType.RECOMPUTE_AND_SCHEDULE_EFFECTS, host: HostElement | null, target: Signal | StoreHandler, effects: Set<EffectSubscription> | null): Chore<ChoreType.RECOMPUTE_AND_SCHEDULE_EFFECTS>;
943
+ (type: ChoreType.TASK | ChoreType.VISIBLE, task: Task): Chore<ChoreType.TASK | ChoreType.VISIBLE>;
944
+ (type: ChoreType.RUN_QRL, host: HostElement, target: QRLInternal<(...args: unknown[]) => unknown>, args: unknown[]): Chore<ChoreType.RUN_QRL>;
945
+ (type: ChoreType.COMPONENT, host: HostElement, qrl: QRLInternal<OnRenderFn<unknown>>, props: Props | null): Chore<ChoreType.COMPONENT>;
946
+ (type: ChoreType.NODE_DIFF, host: HostElement, target: HostElement, value: JSXOutput | Signal): Chore<ChoreType.NODE_DIFF>;
947
+ (type: ChoreType.NODE_PROP, host: HostElement, prop: string, value: any): Chore<ChoreType.NODE_PROP>;
948
+ (type: ChoreType.CLEANUP_VISIBLE, task: Task): Chore<ChoreType.CLEANUP_VISIBLE>;
934
949
  };
935
950
 
936
951
  /**
@@ -1026,7 +1041,6 @@ declare class DomContainer extends _SharedContainer implements ClientContainer {
1026
1041
  rootVNode: _ElementVNode;
1027
1042
  document: _QDocument;
1028
1043
  $journal$: VNodeJournal;
1029
- renderDone: Promise<void> | null;
1030
1044
  $rawStateData$: unknown[];
1031
1045
  $storeProxyMap$: ObjToProxyMap;
1032
1046
  $qFuncs$: Array<(...args: unknown[]) => unknown>;
@@ -1036,18 +1050,15 @@ declare class DomContainer extends _SharedContainer implements ClientContainer {
1036
1050
  vNodeLocate: (id: string | Element) => _VNode;
1037
1051
  private $stateData$;
1038
1052
  private $styleIds$;
1039
- private $renderCount$;
1040
1053
  constructor(element: _ContainerElement);
1041
1054
  $setRawState$(id: number, vParent: _ElementVNode | _VirtualVNode): void;
1042
1055
  parseQRL<T = unknown>(qrl: string): QRL<T>;
1043
- handleError(err: any, host: HostElement): void;
1056
+ handleError(err: any, host: HostElement | null): void;
1044
1057
  setContext<T>(host: HostElement, context: ContextId<T>, value: T): void;
1045
1058
  resolveContext<T>(host: HostElement, contextId: ContextId<T>): T | undefined;
1046
1059
  getParentHost(host: HostElement): HostElement | null;
1047
1060
  setHostProp<T>(host: HostElement, name: string, value: T): void;
1048
1061
  getHostProp<T>(host: HostElement, name: string): T | null;
1049
- scheduleRender(): Promise<void>;
1050
- private processChores;
1051
1062
  ensureProjectionResolved(vNode: _VirtualVNode): void;
1052
1063
  $getObjectById$: (id: number | string) => unknown;
1053
1064
  getSyncFn(id: number): (...args: unknown[]) => unknown;
@@ -1209,6 +1220,13 @@ declare type Filtered<T, A = {}> = {
1209
1220
  /** @internal */
1210
1221
  export declare const _fnSignal: <T extends (...args: any) => any>(fn: T, args: Parameters<T>, fnStr?: string) => WrappedSignalImpl<any>;
1211
1222
 
1223
+ /**
1224
+ * Force a store to recompute and schedule effects.
1225
+ *
1226
+ * @public
1227
+ */
1228
+ export declare const forceStoreEffects: (value: StoreTarget, prop: keyof StoreTarget) => void;
1229
+
1212
1230
  /** @public */
1213
1231
  export declare const Fragment: FunctionComponent<{
1214
1232
  children?: any;
@@ -1226,6 +1244,9 @@ export declare type FunctionComponent<P = unknown> = {
1226
1244
  renderFn(props: P, key: string | null, flags: number, dev?: DevJSX): JSXOutput;
1227
1245
  }['renderFn'];
1228
1246
 
1247
+ /** @internal */
1248
+ export declare const _getConstProps: <T, JSX>(props: PropsProxy | Record<string, unknown> | null | undefined) => Props | null;
1249
+
1229
1250
  /** @internal */
1230
1251
  export declare const _getContextContainer: () => ClientContainer | undefined;
1231
1252
 
@@ -1267,6 +1288,9 @@ export declare const getPlatform: () => CorePlatform;
1267
1288
  /** @internal */
1268
1289
  export declare function _getQContainerElement(element: Element | _VNode): Element | null;
1269
1290
 
1291
+ /** @internal */
1292
+ export declare const _getVarProps: <T, JSX>(props: PropsProxy | Record<string, unknown> | null | undefined) => Props | null;
1293
+
1270
1294
  /** @public */
1271
1295
  declare interface GlobalInjections {
1272
1296
  tag: string;
@@ -1288,6 +1312,12 @@ declare function h<TYPE extends string | FunctionComponent<PROPS>, PROPS extends
1288
1312
  export { h as createElement }
1289
1313
  export { h }
1290
1314
 
1315
+ /**
1316
+ * @returns True if the store has effects for the given prop
1317
+ * @internal
1318
+ */
1319
+ export declare const _hasStoreEffects: (value: StoreTarget, prop: keyof StoreTarget) => boolean;
1320
+
1291
1321
  /** @public */
1292
1322
  declare interface HoistEntryStrategy {
1293
1323
  type: 'hoist';
@@ -1501,12 +1531,15 @@ export declare interface ISsrComponentFrame {
1501
1531
 
1502
1532
  declare interface ISsrNode {
1503
1533
  id: string;
1504
- parentSsrNode: ISsrNode | null;
1505
- vnodeData?: VNodeData;
1534
+ flags: SsrNodeFlags;
1535
+ parentComponent: ISsrNode | null;
1536
+ vnodeData: VNodeData;
1537
+ currentFile: string | null;
1506
1538
  setProp(name: string, value: any): void;
1507
1539
  getProp(name: string): any;
1508
1540
  removeProp(name: string): void;
1509
1541
  addChild(child: ISsrNode): void;
1542
+ setTreeNonUpdatable(): void;
1510
1543
  }
1511
1544
 
1512
1545
  /** @internal */
@@ -1679,7 +1712,7 @@ export declare const _mapApp_findIndx: <T>(array: (T | null)[], key: string, sta
1679
1712
  export declare const _mapArray_get: <T>(array: (T | null)[], key: string, start: number) => T | null;
1680
1713
 
1681
1714
  /** @internal */
1682
- export declare const _mapArray_set: <T>(array: (T | null)[], key: string, value: T | null, start: number) => void;
1715
+ export declare const _mapArray_set: <T>(array: (T | null)[], key: string, value: T | null, start: number, allowNullValue?: boolean) => void;
1683
1716
 
1684
1717
  declare type MediaSpecialAttrs = {
1685
1718
  crossOrigin?: HTMLCrossOriginAttribute;
@@ -2627,14 +2660,14 @@ declare interface ResourceReturnInternal<T> {
2627
2660
  }
2628
2661
 
2629
2662
  /** @internal */
2630
- export declare const _restProps: (props: PropsProxy, omit: string[], target?: Props) => Props;
2663
+ export declare const _restProps: (props: PropsProxy, omit?: string[], target?: Props) => Props;
2631
2664
 
2632
2665
  /**
2633
2666
  * This is called by qwik-loader to schedule a QRL. It has to be synchronous.
2634
2667
  *
2635
2668
  * @internal
2636
2669
  */
2637
- export declare const _run: (...args: unknown[]) => ValueOrPromise_2<void>;
2670
+ export declare const _run: (...args: unknown[]) => ValueOrPromise<unknown>;
2638
2671
 
2639
2672
  declare type Scheduler = ReturnType<typeof createScheduler>;
2640
2673
 
@@ -2699,6 +2732,11 @@ declare interface SerializationContext {
2699
2732
  $setProp$: (obj: any, prop: string, value: any) => void;
2700
2733
  }
2701
2734
 
2735
+ declare const enum SerializationSignalFlags {
2736
+ SERIALIZATION_STRATEGY_NEVER = 16,
2737
+ SERIALIZATION_STRATEGY_ALWAYS = 32
2738
+ }
2739
+
2702
2740
  /** @public */
2703
2741
  export declare type SerializationStrategy = 'never' | 'always';
2704
2742
 
@@ -2781,7 +2819,7 @@ declare interface SerializerSignal<T> extends ComputedSignal<T> {
2781
2819
  declare class SerializerSignalImpl<T, S> extends ComputedSignalImpl<T> {
2782
2820
  constructor(container: Container | null, argQrl: QRLInternal<SerializerArg<T, S>>);
2783
2821
  $didInitialize$: boolean;
2784
- $computeIfNeeded$(): boolean;
2822
+ $computeIfNeeded$(): void;
2785
2823
  }
2786
2824
 
2787
2825
  /**
@@ -2832,7 +2870,8 @@ export declare abstract class _SharedContainer implements Container {
2832
2870
  $currentUniqueId$: number;
2833
2871
  $instanceHash$: string | null;
2834
2872
  $buildBase$: string | null;
2835
- constructor(scheduleDrain: () => void, journalFlush: () => void, serverData: Record<string, any>, locale: string);
2873
+ $flushEpoch$: number;
2874
+ constructor(journalFlush: () => void, serverData: Record<string, any>, locale: string);
2836
2875
  trackSignalValue<T>(signal: Signal, subscriber: HostElement, property: string, data: _SubscriptionData): T;
2837
2876
  serializationCtxFactory(NodeConstructor: {
2838
2877
  new (...rest: any[]): {
@@ -2844,7 +2883,7 @@ export declare abstract class _SharedContainer implements Container {
2844
2883
  };
2845
2884
  } | null, symbolToChunkResolver: SymbolToChunkResolver, writer?: StreamWriter): SerializationContext;
2846
2885
  abstract ensureProjectionResolved(host: HostElement): void;
2847
- abstract handleError(err: any, $host$: HostElement): void;
2886
+ abstract handleError(err: any, $host$: HostElement | null): void;
2848
2887
  abstract getParentHost(host: HostElement): HostElement | null;
2849
2888
  abstract setContext<T>(host: HostElement, context: ContextId<T>, value: T): void;
2850
2889
  abstract resolveContext<T>(host: HostElement, contextId: ContextId<T>): T | undefined;
@@ -2870,7 +2909,8 @@ export declare interface Signal<T = any> extends ReadonlySignal<T> {
2870
2909
  }
2871
2910
 
2872
2911
  declare const enum SignalFlags {
2873
- INVALID = 1
2912
+ INVALID = 1,
2913
+ RUN_EFFECTS = 2
2874
2914
  }
2875
2915
 
2876
2916
  declare class SignalImpl<T = any> implements Signal<T> {
@@ -2879,6 +2919,11 @@ declare class SignalImpl<T = any> implements Signal<T> {
2879
2919
  $effects$: null | Set<EffectSubscription>;
2880
2920
  $container$: Container | null;
2881
2921
  constructor(container: Container | null, value: T);
2922
+ /**
2923
+ * Use this to force running subscribers, for example when the calculated value has mutated but
2924
+ * remained the same object
2925
+ */
2926
+ force(): void;
2882
2927
  get untrackedValue(): T;
2883
2928
  set untrackedValue(value: T);
2884
2929
  get value(): T;
@@ -3208,6 +3253,8 @@ declare interface SSRContainer extends Container {
3208
3253
  render(jsx: JSXOutput): Promise<void>;
3209
3254
  emitPreloaderPre(): void;
3210
3255
  emitQwikLoaderAtTopIfNeeded(): void;
3256
+ emitPatchDataIfNeeded(): void;
3257
+ addBackpatchEntry(ssrNodeId: string, attrName: string, serializedValue: string | boolean | null): void;
3211
3258
  }
3212
3259
 
3213
3260
  /** @public */
@@ -3223,6 +3270,10 @@ declare type SsrNode = {
3223
3270
  [_EFFECT_BACK_REF]: Map<EffectProperty | string, EffectSubscription> | null;
3224
3271
  };
3225
3272
 
3273
+ declare const enum SsrNodeFlags {
3274
+ Updatable = 1
3275
+ }
3276
+
3226
3277
  /** @public */
3227
3278
  export declare const SSRRaw: FunctionComponent<{
3228
3279
  data: string;
@@ -3237,13 +3288,18 @@ export declare const SSRStreamBlock: FunctionComponent<{
3237
3288
  }>;
3238
3289
 
3239
3290
  /** @public */
3240
- export declare type SSRStreamChildren = AsyncGenerator<JSXChildren, void, any> | ((stream: StreamWriter) => Promise<void>) | (() => AsyncGenerator<JSXChildren, void, any>);
3291
+ export declare type SSRStreamChildren = AsyncGenerator<JSXChildren, void, any> | ((stream: SSRStreamWriter) => Promise<void>) | (() => AsyncGenerator<JSXChildren, void, any>);
3241
3292
 
3242
3293
  /** @public */
3243
3294
  export declare type SSRStreamProps = {
3244
3295
  children: SSRStreamChildren;
3245
3296
  };
3246
3297
 
3298
+ /** @public */
3299
+ export declare interface SSRStreamWriter {
3300
+ write(chunk: JSXOutput): void;
3301
+ }
3302
+
3247
3303
  declare type StopPropagation = {
3248
3304
  [K in keyof HTMLElementEventMap as `stoppropagation:${K}`]?: boolean;
3249
3305
  };
@@ -3260,6 +3316,7 @@ declare class StoreHandler implements ProxyHandler<StoreTarget> {
3260
3316
  $effects$: null | Map<string | symbol, Set<EffectSubscription>>;
3261
3317
  constructor($flags$: StoreFlags, $container$: Container | null);
3262
3318
  toString(): string;
3319
+ force(prop: keyof StoreTarget): void;
3263
3320
  get(target: StoreTarget, prop: string | symbol): any;
3264
3321
  /** In the case of oldValue and value are the same, the effects are not triggered. */
3265
3322
  set(target: StoreTarget, prop: string | symbol, value: any): boolean;
@@ -4346,7 +4403,7 @@ export declare const _VAR_PROPS: unique symbol;
4346
4403
  export declare const _verifySerializable: <T>(value: T, preMessage?: string) => T;
4347
4404
 
4348
4405
  /**
4349
- * 2.0.0-beta.7-dev+2dd89a6
4406
+ * 2.0.0-beta.9-dev+6b582c7
4350
4407
  *
4351
4408
  * @public
4352
4409
  */
@@ -4475,10 +4532,10 @@ export declare const enum _VNodeFlags {
4475
4532
  Element = 1,
4476
4533
  Virtual = 2,
4477
4534
  ELEMENT_OR_VIRTUAL_MASK = 3,
4535
+ Text = 4,
4478
4536
  ELEMENT_OR_TEXT_MASK = 5,
4479
4537
  TYPE_MASK = 7,
4480
4538
  INFLATED_TYPE_MASK = 15,
4481
- Text = 4,
4482
4539
  Inflated = 8,
4483
4540
  Resolved = 16,
4484
4541
  Deleted = 32,
@@ -4524,7 +4581,7 @@ export declare function _walkJSX(ssr: SSRContainer, value: JSXOutput, options: {
4524
4581
  export declare function withLocale<T>(locale: string, fn: () => T): T;
4525
4582
 
4526
4583
  declare const enum WrappedSignalFlags {
4527
- UNWRAP = 2
4584
+ UNWRAP = 4
4528
4585
  }
4529
4586
 
4530
4587
  declare class WrappedSignalImpl<T> extends SignalImpl<T> implements BackRef {
@@ -4533,7 +4590,6 @@ declare class WrappedSignalImpl<T> extends SignalImpl<T> implements BackRef {
4533
4590
  $funcStr$: string | null;
4534
4591
  $flags$: AllSignalFlags;
4535
4592
  $hostElement$: HostElement | null;
4536
- $forceRunEffects$: boolean;
4537
4593
  [_EFFECT_BACK_REF]: Map<EffectProperty | string, EffectSubscription> | null;
4538
4594
  constructor(container: Container | null, fn: (...args: any[]) => T, args: any[], fnStr: string | null, flags?: SignalFlags);
4539
4595
  invalidate(): void;
@@ -4543,7 +4599,7 @@ declare class WrappedSignalImpl<T> extends SignalImpl<T> implements BackRef {
4543
4599
  */
4544
4600
  force(): void;
4545
4601
  get untrackedValue(): T;
4546
- $computeIfNeeded$(): boolean;
4602
+ $computeIfNeeded$(): void;
4547
4603
  set value(_: any);
4548
4604
  get value(): any;
4549
4605
  }