@qwik.dev/core 2.0.0-beta.3 → 2.0.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.
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * @qwik.dev/core/testing 2.0.0-beta.3-dev+aa098fc
3
+ * @qwik.dev/core/testing 2.0.0-beta.5-dev+8887f7e
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
@@ -22242,6 +22242,24 @@ function assertNumber(value1, text, ...parts) {
22242
22242
  }
22243
22243
  }
22244
22244
 
22245
+ // packages/qwik/src/core/shared/utils/types.ts
22246
+ var isSerializableObject = (v) => {
22247
+ const proto = Object.getPrototypeOf(v);
22248
+ return proto === Object.prototype || proto === Array.prototype || proto === null;
22249
+ };
22250
+ var isObject = (v) => {
22251
+ return typeof v === "object" && v !== null;
22252
+ };
22253
+ var isArray = (v) => {
22254
+ return Array.isArray(v);
22255
+ };
22256
+ var isString = (v) => {
22257
+ return typeof v === "string";
22258
+ };
22259
+ var isFunction = (v) => {
22260
+ return typeof v === "function";
22261
+ };
22262
+
22245
22263
  // packages/qwik/src/core/shared/error/error.ts
22246
22264
  var codeToText = (code2, ...parts) => {
22247
22265
  if (qDev) {
@@ -22322,7 +22340,7 @@ See https://qwik.dev/docs/components/tasks/#use-method-rules`,
22322
22340
  if (parts.length) {
22323
22341
  text = text.replaceAll(/{{(\d+)}}/g, (_, index) => {
22324
22342
  let v = parts[index];
22325
- if (v && typeof v === "object" && v.constructor === Object) {
22343
+ if (v && isObject(v) && v.constructor === Object) {
22326
22344
  v = JSON.stringify(v).slice(0, 50);
22327
22345
  }
22328
22346
  return v;
@@ -22394,24 +22412,6 @@ function retryOnPromise(fn, retryCount = 0) {
22394
22412
  }
22395
22413
  }
22396
22414
 
22397
- // packages/qwik/src/core/shared/utils/types.ts
22398
- var isSerializableObject = (v) => {
22399
- const proto = Object.getPrototypeOf(v);
22400
- return proto === Object.prototype || proto === Array.prototype || proto === null;
22401
- };
22402
- var isObject = (v) => {
22403
- return !!v && typeof v === "object";
22404
- };
22405
- var isArray = (v) => {
22406
- return Array.isArray(v);
22407
- };
22408
- var isString = (v) => {
22409
- return typeof v === "string";
22410
- };
22411
- var isFunction = (v) => {
22412
- return typeof v === "function";
22413
- };
22414
-
22415
22415
  // packages/qwik/src/build/index.dev.ts
22416
22416
  var isDev2 = true;
22417
22417
 
@@ -22619,7 +22619,7 @@ var WrappedSignalImpl = class extends SignalImpl {
22619
22619
  this.$funcStr$ = fnStr;
22620
22620
  this.$flags$ = flags;
22621
22621
  }
22622
- $invalidate$() {
22622
+ invalidate() {
22623
22623
  var _a;
22624
22624
  this.$flags$ |= 1 /* INVALID */;
22625
22625
  this.$forceRunEffects$ = false;
@@ -22635,9 +22635,14 @@ var WrappedSignalImpl = class extends SignalImpl {
22635
22635
  * remained the same object.
22636
22636
  */
22637
22637
  force() {
22638
- this.$flags$ |= 1 /* INVALID */;
22639
- this.$forceRunEffects$ = false;
22640
- triggerEffects(this.$container$, this, this.$effects$);
22638
+ var _a;
22639
+ this.$forceRunEffects$ = true;
22640
+ (_a = this.$container$) == null ? void 0 : _a.$scheduler$(
22641
+ 7 /* RECOMPUTE_AND_SCHEDULE_EFFECTS */,
22642
+ this.$hostElement$,
22643
+ this,
22644
+ this.$effects$
22645
+ );
22641
22646
  }
22642
22647
  get untrackedValue() {
22643
22648
  const didChange = this.$computeIfNeeded$();
@@ -22744,7 +22749,7 @@ var newInvokeContextFromTuple = ([element, event, url]) => {
22744
22749
  return newInvokeContext(locale, hostElement, element, event, url);
22745
22750
  };
22746
22751
  var newInvokeContext = (locale, hostElement, element, event, url) => {
22747
- const $locale$ = locale || (typeof event === "object" && event && "locale" in event ? event.locale : void 0);
22752
+ const $locale$ = locale || (event && isObject(event) && "locale" in event ? event.locale : void 0);
22748
22753
  const ctx = {
22749
22754
  $url$: url,
22750
22755
  $i$: 0,
@@ -22863,7 +22868,7 @@ var StoreHandler = class {
22863
22868
  return this.toString;
22864
22869
  }
22865
22870
  const flags = this.$flags$;
22866
- if (flags & 1 /* RECURSIVE */ && typeof value === "object" && value !== null && !Object.isFrozen(value) && !isStore(value) && !Object.isFrozen(target)) {
22871
+ if (flags & 1 /* RECURSIVE */ && isObject(value) && !Object.isFrozen(value) && !isStore(value) && !Object.isFrozen(target)) {
22867
22872
  return getOrCreateStore(value, this.$flags$, this.$container$);
22868
22873
  }
22869
22874
  return value;
@@ -23284,6 +23289,7 @@ var inlinedQrl = (symbol, symbolName, lexicalScopeCapture = EMPTY_ARRAY) => {
23284
23289
  var _CONST_PROPS = Symbol("CONST");
23285
23290
  var _VAR_PROPS = Symbol("VAR");
23286
23291
  var _IMMUTABLE = Symbol("IMMUTABLE");
23292
+ var _UNINITIALIZED = Symbol("UNINITIALIZED");
23287
23293
 
23288
23294
  // packages/qwik/src/core/shared/qrl/qrl.public.ts
23289
23295
  var runtimeSymbolId = 0;
@@ -23318,12 +23324,12 @@ var ComputedSignalImpl = class extends SignalImpl {
23318
23324
  $flags$;
23319
23325
  $forceRunEffects$ = false;
23320
23326
  [_EFFECT_BACK_REF] = null;
23321
- constructor(container, fn, flags = 1 /* INVALID */) {
23327
+ constructor(container, fn, flags = 1 /* INVALID */ | 16 /* SERIALIZATION_STRATEGY_ALWAYS */) {
23322
23328
  super(container, NEEDS_COMPUTATION);
23323
23329
  this.$computeQrl$ = fn;
23324
23330
  this.$flags$ = flags;
23325
23331
  }
23326
- $invalidate$() {
23332
+ invalidate() {
23327
23333
  var _a;
23328
23334
  this.$flags$ |= 1 /* INVALID */;
23329
23335
  this.$forceRunEffects$ = false;
@@ -23401,7 +23407,11 @@ var DEBUG4 = false;
23401
23407
  var log4 = (...args) => console.log("SERIALIZER SIGNAL", ...args.map(qwikDebugToString));
23402
23408
  var SerializerSignalImpl = class extends ComputedSignalImpl {
23403
23409
  constructor(container, argQrl) {
23404
- super(container, argQrl);
23410
+ super(
23411
+ container,
23412
+ argQrl,
23413
+ 1 /* INVALID */ | 16 /* SERIALIZATION_STRATEGY_ALWAYS */
23414
+ );
23405
23415
  }
23406
23416
  $didInitialize$ = false;
23407
23417
  $computeIfNeeded$() {
@@ -23417,7 +23427,7 @@ var SerializerSignalImpl = class extends ComputedSignalImpl {
23417
23427
  const update = arg.update;
23418
23428
  const currentValue = this.$untrackedValue$ === NEEDS_COMPUTATION ? initial : this.$untrackedValue$;
23419
23429
  const untrackedValue = trackSignal(
23420
- () => this.$didInitialize$ ? update == null ? void 0 : update(currentValue) : deserialize(currentValue),
23430
+ () => this.$didInitialize$ ? (update == null ? void 0 : update(currentValue)) || currentValue : deserialize(currentValue),
23421
23431
  this,
23422
23432
  "." /* VNODE */,
23423
23433
  this.$container$
@@ -23494,7 +23504,7 @@ var AsyncComputedSignalImpl = class extends ComputedSignalImpl {
23494
23504
  $loadingEffects$ = null;
23495
23505
  $errorEffects$ = null;
23496
23506
  $destroy$;
23497
- $promiseValue$ = null;
23507
+ $promiseValue$ = NEEDS_COMPUTATION;
23498
23508
  [_EFFECT_BACK_REF] = null;
23499
23509
  constructor(container, fn, flags = 1 /* INVALID */) {
23500
23510
  super(container, fn, flags);
@@ -23548,6 +23558,10 @@ var AsyncComputedSignalImpl = class extends ComputedSignalImpl {
23548
23558
  get untrackedError() {
23549
23559
  return this.$untrackedError$;
23550
23560
  }
23561
+ invalidate() {
23562
+ super.invalidate();
23563
+ this.$promiseValue$ = NEEDS_COMPUTATION;
23564
+ }
23551
23565
  $computeIfNeeded$() {
23552
23566
  if (!(this.$flags$ & 1 /* INVALID */)) {
23553
23567
  return false;
@@ -23558,10 +23572,10 @@ var AsyncComputedSignalImpl = class extends ComputedSignalImpl {
23558
23572
  var _a;
23559
23573
  return (_a = this.$container$) == null ? void 0 : _a.handleError(err, null);
23560
23574
  });
23561
- const untrackedValue = this.$promiseValue$ ?? computeQrl.getFn()({
23575
+ const untrackedValue = this.$promiseValue$ === NEEDS_COMPUTATION ? computeQrl.getFn()({
23562
23576
  track: trackFn(this, this.$container$),
23563
23577
  cleanup: cleanup2
23564
- });
23578
+ }) : this.$promiseValue$;
23565
23579
  if (isPromise(untrackedValue)) {
23566
23580
  this.untrackedLoading = true;
23567
23581
  this.untrackedError = null;
@@ -23570,11 +23584,12 @@ var AsyncComputedSignalImpl = class extends ComputedSignalImpl {
23570
23584
  this.untrackedLoading = false;
23571
23585
  this.untrackedError = null;
23572
23586
  }).catch((err) => {
23587
+ this.$promiseValue$ = err;
23573
23588
  this.untrackedLoading = false;
23574
23589
  this.untrackedError = err;
23575
23590
  });
23576
23591
  }
23577
- this.$promiseValue$ = null;
23592
+ this.$promiseValue$ = NEEDS_COMPUTATION;
23578
23593
  DEBUG5 && log5("Signal.$asyncCompute$", untrackedValue);
23579
23594
  this.$flags$ &= ~1 /* INVALID */;
23580
23595
  const didChange = untrackedValue !== this.$untrackedValue$;
@@ -23587,7 +23602,6 @@ var AsyncComputedSignalImpl = class extends ComputedSignalImpl {
23587
23602
 
23588
23603
  // packages/qwik/src/core/reactive-primitives/signal-api.ts
23589
23604
  var createSerializerSignal = (arg) => {
23590
- throwIfQRLNotResolved(arg);
23591
23605
  return new SerializerSignalImpl(null, arg);
23592
23606
  };
23593
23607
 
@@ -24167,9 +24181,12 @@ var executeComponent = (container, renderHost, subscriptionHost, componentQRL, p
24167
24181
  (err) => {
24168
24182
  if (isPromise(err) && retryCount < MAX_RETRY_ON_PROMISE_COUNT) {
24169
24183
  return err.then(
24170
- () => executeComponentWithPromiseExceptionRetry(retryCount++)
24184
+ () => executeComponentWithPromiseExceptionRetry(++retryCount)
24171
24185
  );
24172
24186
  } else {
24187
+ if (retryCount >= MAX_RETRY_ON_PROMISE_COUNT) {
24188
+ throw new Error(`Max retry count of component execution reached`);
24189
+ }
24173
24190
  throw err;
24174
24191
  }
24175
24192
  }
@@ -25726,7 +25743,7 @@ var createScheduler = (container, scheduleDrain, journalFlush) => {
25726
25743
  if (target instanceof ComputedSignalImpl || target instanceof WrappedSignalImpl) {
25727
25744
  const forceRunEffects = target.$forceRunEffects$;
25728
25745
  target.$forceRunEffects$ = false;
25729
- if (!(effects == null ? void 0 : effects.size)) {
25746
+ if (!(effects == null ? void 0 : effects.size) && !forceRunEffects) {
25730
25747
  break;
25731
25748
  }
25732
25749
  returnValue = maybeThen(
@@ -26225,7 +26242,7 @@ var ignoreErrorToPreventNodeFromCrashing = (err) => {
26225
26242
  // packages/qwik/src/core/shared/shared-serialization.ts
26226
26243
  var deserializedProxyMap = /* @__PURE__ */ new WeakMap();
26227
26244
  var isDeserializerProxy = (value) => {
26228
- return typeof value === "object" && value !== null && SERIALIZER_PROXY_UNWRAP in value;
26245
+ return isObject(value) && SERIALIZER_PROXY_UNWRAP in value;
26229
26246
  };
26230
26247
  var SERIALIZER_PROXY_UNWRAP = Symbol("UNWRAP");
26231
26248
  var wrapDeserializerProxy = (container, data) => {
@@ -26415,9 +26432,8 @@ var inflate = (container, target, typeId, data) => {
26415
26432
  const hasValue = d.length > 6;
26416
26433
  if (hasValue) {
26417
26434
  asyncComputed.$untrackedValue$ = d[6];
26418
- } else {
26419
- asyncComputed.$flags$ |= 1 /* INVALID */;
26420
26435
  }
26436
+ asyncComputed.$flags$ |= 1 /* INVALID */;
26421
26437
  break;
26422
26438
  }
26423
26439
  // Inflating a SerializerSignal is the same as inflating a ComputedSignal
@@ -26512,7 +26528,7 @@ var inflate = (container, target, typeId, data) => {
26512
26528
  propsProxy[_VAR_PROPS] = data === 0 ? {} : data[0];
26513
26529
  propsProxy[_CONST_PROPS] = data[1];
26514
26530
  break;
26515
- case 35 /* EffectData */: {
26531
+ case 35 /* SubscriptionData */: {
26516
26532
  const effectData = target;
26517
26533
  effectData.data.$scopedStyleIdPrefix$ = data[0];
26518
26534
  effectData.data.$isConst$ = data[1];
@@ -26533,6 +26549,7 @@ var _constants = [
26533
26549
  EMPTY_OBJ,
26534
26550
  NEEDS_COMPUTATION,
26535
26551
  STORE_ALL_PROPS,
26552
+ _UNINITIALIZED,
26536
26553
  Slot,
26537
26554
  Fragment,
26538
26555
  NaN,
@@ -26552,6 +26569,7 @@ var _constantNames = [
26552
26569
  "EMPTY_OBJ",
26553
26570
  "NEEDS_COMPUTATION",
26554
26571
  "STORE_ALL_PROPS",
26572
+ "_UNINITIALIZED",
26555
26573
  "Slot",
26556
26574
  "Fragment",
26557
26575
  "NaN",
@@ -26572,7 +26590,12 @@ var allocate = (container, typeId, value) => {
26572
26590
  if (!container.$forwardRefs$) {
26573
26591
  throw qError(18 /* serializeErrorCannotAllocate */, ["forward ref"]);
26574
26592
  }
26575
- return container.$getObjectById$(container.$forwardRefs$[value]);
26593
+ const rootRef = container.$forwardRefs$[value];
26594
+ if (rootRef === -1) {
26595
+ return _UNINITIALIZED;
26596
+ } else {
26597
+ return container.$getObjectById$(rootRef);
26598
+ }
26576
26599
  case 2 /* ForwardRefs */:
26577
26600
  return value;
26578
26601
  case 3 /* Constant */:
@@ -26668,7 +26691,7 @@ var allocate = (container, typeId, value) => {
26668
26691
  } else {
26669
26692
  throw qError(17 /* serializeErrorExpectedVNode */, [typeof vNode]);
26670
26693
  }
26671
- case 35 /* EffectData */:
26694
+ case 35 /* SubscriptionData */:
26672
26695
  return new SubscriptionData({});
26673
26696
  default:
26674
26697
  throw qError(18 /* serializeErrorCannotAllocate */, [typeId]);
@@ -26711,7 +26734,7 @@ var createSerializationContext = (NodeConstructor, DomRefConstructor, symbolToCh
26711
26734
  };
26712
26735
  }
26713
26736
  const seenObjsMap = /* @__PURE__ */ new Map();
26714
- const rootsPathMap = /* @__PURE__ */ new Map();
26737
+ const objectPathStringCache = /* @__PURE__ */ new Map();
26715
26738
  const syncFnMap = /* @__PURE__ */ new Map();
26716
26739
  const syncFns = [];
26717
26740
  const roots = [];
@@ -26720,7 +26743,7 @@ var createSerializationContext = (NodeConstructor, DomRefConstructor, symbolToCh
26720
26743
  return seenObjsMap.set(obj, { $parent$: parent, $index$: index, $rootIndex$: -1 });
26721
26744
  };
26722
26745
  const $addRootPath$ = (obj) => {
26723
- const rootPath = rootsPathMap.get(obj);
26746
+ const rootPath = objectPathStringCache.get(obj);
26724
26747
  if (rootPath) {
26725
26748
  return rootPath;
26726
26749
  }
@@ -26738,7 +26761,7 @@ var createSerializationContext = (NodeConstructor, DomRefConstructor, symbolToCh
26738
26761
  current = seenObjsMap.get(current.$parent$);
26739
26762
  }
26740
26763
  const pathStr = path.length > 1 ? path.join(" ") : path.length ? path[0] : seen.$index$;
26741
- rootsPathMap.set(obj, pathStr);
26764
+ objectPathStringCache.set(obj, pathStr);
26742
26765
  return pathStr;
26743
26766
  };
26744
26767
  const $addRoot$ = (obj, parent = null) => {
@@ -26803,7 +26826,7 @@ var createSerializationContext = (NodeConstructor, DomRefConstructor, symbolToCh
26803
26826
  $storeProxyMap$: storeProxyMap,
26804
26827
  $getProp$: getProp,
26805
26828
  $setProp$: setProp,
26806
- $pathMap$: rootsPathMap
26829
+ $objectPathStringCache$: objectPathStringCache
26807
26830
  };
26808
26831
  };
26809
26832
  function $discoverRoots$(serializationContext, obj, parent, index) {
@@ -26825,7 +26848,7 @@ var discoverValuesForVNodeData = (vnodeData, callback) => {
26825
26848
  for (let i = 1; i < value.length; i += 2) {
26826
26849
  const keyValue = value[i - 1];
26827
26850
  const attrValue = value[i];
26828
- if (typeof attrValue === "string" || // skip empty props
26851
+ if (attrValue == null || typeof attrValue === "string" || // skip empty props
26829
26852
  keyValue === ELEMENT_PROPS && Object.keys(attrValue).length === 0) {
26830
26853
  continue;
26831
26854
  }
@@ -26843,13 +26866,28 @@ var PromiseResult = class {
26843
26866
  this.$qrl$ = $qrl$;
26844
26867
  }
26845
26868
  };
26869
+ var SerializationWeakRef = class {
26870
+ constructor($obj$) {
26871
+ this.$obj$ = $obj$;
26872
+ }
26873
+ };
26846
26874
  async function serialize(serializationContext) {
26847
- const { $writer$, $isSsrNode$, $isDomRef$, $storeProxyMap$, $addRoot$, $pathMap$, $wasSeen$ } = serializationContext;
26875
+ const {
26876
+ $writer$,
26877
+ $isSsrNode$,
26878
+ $isDomRef$,
26879
+ $storeProxyMap$,
26880
+ $addRoot$,
26881
+ $objectPathStringCache$,
26882
+ $wasSeen$
26883
+ } = serializationContext;
26848
26884
  let depth = 0;
26885
+ let rootIdx = 0;
26849
26886
  const forwardRefs = [];
26850
26887
  let forwardRefsId = 0;
26851
26888
  const promises = /* @__PURE__ */ new Set();
26852
26889
  const preloadQrls = /* @__PURE__ */ new Set();
26890
+ const s11nWeakRefs = /* @__PURE__ */ new Map();
26853
26891
  let parent = null;
26854
26892
  const isRootObject = () => depth === 0;
26855
26893
  const outputArray = (value, writeFn) => {
@@ -26890,17 +26928,27 @@ async function serialize(serializationContext) {
26890
26928
  };
26891
26929
  const addPreloadQrl = (qrl) => {
26892
26930
  preloadQrls.add(qrl);
26893
- serializationContext.$addRoot$(qrl, null);
26931
+ serializationContext.$addRoot$(qrl);
26894
26932
  };
26895
- const outputRootRef = (value, rootDepth = 0) => {
26933
+ const outputAsRootRef = (value, rootDepth = 0) => {
26896
26934
  const seen = $wasSeen$(value);
26897
- const rootRefPath = $pathMap$.get(value);
26935
+ const rootRefPath = $objectPathStringCache$.get(value);
26898
26936
  if (rootDepth === depth && seen && seen.$parent$ !== null && rootRefPath) {
26899
26937
  output(0 /* RootRef */, rootRefPath);
26900
26938
  return true;
26901
26939
  } else if (depth > rootDepth && seen && seen.$rootIndex$ !== -1) {
26902
26940
  output(0 /* RootRef */, seen.$rootIndex$);
26903
26941
  return true;
26942
+ } else if (s11nWeakRefs.has(value)) {
26943
+ const forwardRefId = s11nWeakRefs.get(value);
26944
+ if (rootDepth === depth) {
26945
+ forwardRefs[forwardRefId] = rootIdx;
26946
+ } else {
26947
+ const rootRef = $addRoot$(value);
26948
+ output(0 /* RootRef */, rootRef);
26949
+ forwardRefs[forwardRefId] = rootRef;
26950
+ return true;
26951
+ }
26904
26952
  }
26905
26953
  return false;
26906
26954
  };
@@ -26913,11 +26961,11 @@ async function serialize(serializationContext) {
26913
26961
  output(3 /* Constant */, value ? 2 /* True */ : 3 /* False */);
26914
26962
  } else if (typeof value === "function") {
26915
26963
  if (value === Slot) {
26916
- output(3 /* Constant */, 9 /* Slot */);
26964
+ output(3 /* Constant */, 10 /* Slot */);
26917
26965
  } else if (value === Fragment) {
26918
- output(3 /* Constant */, 10 /* Fragment */);
26966
+ output(3 /* Constant */, 11 /* Fragment */);
26919
26967
  } else if (isQrl(value)) {
26920
- if (!outputRootRef(value)) {
26968
+ if (!outputAsRootRef(value)) {
26921
26969
  const qrl = qrlToString(serializationContext, value);
26922
26970
  const type = preloadQrls.has(value) ? 21 /* PreloadQRL */ : 20 /* QRL */;
26923
26971
  if (isRootObject()) {
@@ -26936,18 +26984,18 @@ async function serialize(serializationContext) {
26936
26984
  }
26937
26985
  } else if (typeof value === "number") {
26938
26986
  if (Number.isNaN(value)) {
26939
- output(3 /* Constant */, 11 /* NaN */);
26987
+ output(3 /* Constant */, 12 /* NaN */);
26940
26988
  } else if (!Number.isFinite(value)) {
26941
26989
  output(
26942
26990
  3 /* Constant */,
26943
- value < 0 ? 13 /* NegativeInfinity */ : 12 /* PositiveInfinity */
26991
+ value < 0 ? 14 /* NegativeInfinity */ : 13 /* PositiveInfinity */
26944
26992
  );
26945
26993
  } else if (value === Number.MAX_SAFE_INTEGER) {
26946
- output(3 /* Constant */, 14 /* MaxSafeInt */);
26994
+ output(3 /* Constant */, 15 /* MaxSafeInt */);
26947
26995
  } else if (value === Number.MAX_SAFE_INTEGER - 1) {
26948
- output(3 /* Constant */, 15 /* AlmostMaxSafeInt */);
26996
+ output(3 /* Constant */, 16 /* AlmostMaxSafeInt */);
26949
26997
  } else if (value === Number.MIN_SAFE_INTEGER) {
26950
- output(3 /* Constant */, 16 /* MinSafeInt */);
26998
+ output(3 /* Constant */, 17 /* MinSafeInt */);
26951
26999
  } else {
26952
27000
  output(4 /* Number */, value);
26953
27001
  }
@@ -26970,7 +27018,7 @@ async function serialize(serializationContext) {
26970
27018
  if (value.length === 0) {
26971
27019
  output(3 /* Constant */, 4 /* EmptyString */);
26972
27020
  } else {
26973
- if (!outputRootRef(value)) {
27021
+ if (!outputAsRootRef(value)) {
26974
27022
  output(5 /* String */, value);
26975
27023
  }
26976
27024
  }
@@ -26980,12 +27028,14 @@ async function serialize(serializationContext) {
26980
27028
  output(3 /* Constant */, 7 /* NEEDS_COMPUTATION */);
26981
27029
  } else if (value === STORE_ALL_PROPS) {
26982
27030
  output(3 /* Constant */, 8 /* STORE_ALL_PROPS */);
27031
+ } else if (value === _UNINITIALIZED) {
27032
+ output(3 /* Constant */, 9 /* UNINITIALIZED */);
26983
27033
  } else {
26984
27034
  throw qError(20 /* serializeErrorUnknownType */, [typeof value]);
26985
27035
  }
26986
27036
  };
26987
27037
  const writeObjectValue = (value) => {
26988
- if (outputRootRef(value, 1)) {
27038
+ if (outputAsRootRef(value, 1)) {
26989
27039
  return;
26990
27040
  }
26991
27041
  if (isPropsProxy(value)) {
@@ -26994,7 +27044,7 @@ async function serialize(serializationContext) {
26994
27044
  const out = constProps ? [varProps, constProps] : Object.keys(varProps).length ? [varProps] : 0;
26995
27045
  output(34 /* PropsProxy */, out);
26996
27046
  } else if (value instanceof SubscriptionData) {
26997
- output(35 /* EffectData */, [value.data.$scopedStyleIdPrefix$, value.data.$isConst$]);
27047
+ output(35 /* SubscriptionData */, [value.data.$scopedStyleIdPrefix$, value.data.$isConst$]);
26998
27048
  } else if (isStore(value)) {
26999
27049
  if (isResource(value)) {
27000
27050
  serializationContext.$resources$.add(value);
@@ -27073,7 +27123,6 @@ async function serialize(serializationContext) {
27073
27123
  output(1 /* ForwardRef */, forwardRefId);
27074
27124
  return;
27075
27125
  }
27076
- const v = value instanceof ComputedSignalImpl && (value.$flags$ & 1 /* INVALID */ || fastSkipSerialize(value.$untrackedValue$)) ? NEEDS_COMPUTATION : value.$untrackedValue$;
27077
27126
  if (value instanceof WrappedSignalImpl) {
27078
27127
  output(26 /* WrappedSignal */, [
27079
27128
  ...serializeWrappingFn(serializationContext, value),
@@ -27082,33 +27131,36 @@ async function serialize(serializationContext) {
27082
27131
  value.$hostElement$,
27083
27132
  ...value.$effects$ || []
27084
27133
  ]);
27085
- } else if (value instanceof AsyncComputedSignalImpl) {
27086
- addPreloadQrl(value.$computeQrl$);
27087
- const out = [
27088
- value.$computeQrl$,
27089
- value.$effects$,
27090
- value.$loadingEffects$,
27091
- value.$errorEffects$,
27092
- value.$untrackedLoading$,
27093
- value.$untrackedError$
27094
- ];
27095
- if (v !== NEEDS_COMPUTATION) {
27096
- out.push(v);
27097
- }
27098
- output(28 /* AsyncComputedSignal */, out);
27099
27134
  } else if (value instanceof ComputedSignalImpl) {
27135
+ let v = value.$untrackedValue$;
27136
+ const shouldAlwaysSerialize = value.$flags$ & 16 /* SERIALIZATION_STRATEGY_ALWAYS */;
27137
+ const shouldNeverSerialize = value.$flags$ & 8 /* SERIALIZATION_STRATEGY_NEVER */;
27138
+ const isInvalid = value.$flags$ & 1 /* INVALID */;
27139
+ const isSkippable = fastSkipSerialize(value.$untrackedValue$);
27140
+ if (shouldAlwaysSerialize) {
27141
+ v = value.$untrackedValue$;
27142
+ } else if (shouldNeverSerialize) {
27143
+ v = NEEDS_COMPUTATION;
27144
+ } else if (isInvalid || isSkippable) {
27145
+ v = NEEDS_COMPUTATION;
27146
+ }
27100
27147
  addPreloadQrl(value.$computeQrl$);
27101
- const out = [
27102
- value.$computeQrl$,
27103
- // TODO check if we can use domVRef for effects
27104
- value.$effects$
27105
- ];
27148
+ const out = [value.$computeQrl$, value.$effects$];
27149
+ const isAsync = value instanceof AsyncComputedSignalImpl;
27150
+ if (isAsync) {
27151
+ out.push(
27152
+ value.$loadingEffects$,
27153
+ value.$errorEffects$,
27154
+ value.$untrackedLoading$,
27155
+ value.$untrackedError$
27156
+ );
27157
+ }
27106
27158
  if (v !== NEEDS_COMPUTATION) {
27107
27159
  out.push(v);
27108
27160
  }
27109
- output(27 /* ComputedSignal */, out);
27161
+ output(isAsync ? 28 /* AsyncComputedSignal */ : 27 /* ComputedSignal */, out);
27110
27162
  } else {
27111
- output(25 /* Signal */, [v, ...value.$effects$ || []]);
27163
+ output(25 /* Signal */, [value.$untrackedValue$, ...value.$effects$ || []]);
27112
27164
  }
27113
27165
  } else if (value instanceof URL) {
27114
27166
  output(7 /* URL */, value.href);
@@ -27217,6 +27269,11 @@ async function serialize(serializationContext) {
27217
27269
  }
27218
27270
  const out = btoa(buf).replace(/=+$/, "");
27219
27271
  output(19 /* Uint8Array */, out);
27272
+ } else if (value instanceof SerializationWeakRef) {
27273
+ const forwardRefId = forwardRefsId++;
27274
+ s11nWeakRefs.set(value.$obj$, forwardRefId);
27275
+ forwardRefs[forwardRefId] = -1;
27276
+ output(1 /* ForwardRef */, forwardRefId);
27220
27277
  } else if (vnode_isVNode(value)) {
27221
27278
  output(3 /* Constant */, 0 /* Undefined */);
27222
27279
  } else {
@@ -27237,20 +27294,19 @@ async function serialize(serializationContext) {
27237
27294
  }
27238
27295
  const outputRoots = async () => {
27239
27296
  $writer$.write("[");
27240
- let lastRootsLength = 0;
27241
27297
  let rootsLength = serializationContext.$roots$.length;
27242
- while (lastRootsLength < rootsLength || promises.size) {
27243
- if (lastRootsLength !== 0) {
27298
+ while (rootIdx < rootsLength || promises.size) {
27299
+ if (rootIdx !== 0) {
27244
27300
  $writer$.write(",");
27245
27301
  }
27246
27302
  let separator = false;
27247
- for (let i = lastRootsLength; i < rootsLength; i++) {
27303
+ for (; rootIdx < rootsLength; rootIdx++) {
27248
27304
  if (separator) {
27249
27305
  $writer$.write(",");
27250
27306
  } else {
27251
27307
  separator = true;
27252
27308
  }
27253
- writeValue(serializationContext.$roots$[i]);
27309
+ writeValue(serializationContext.$roots$[rootIdx]);
27254
27310
  }
27255
27311
  if (promises.size) {
27256
27312
  try {
@@ -27258,7 +27314,6 @@ async function serialize(serializationContext) {
27258
27314
  } catch {
27259
27315
  }
27260
27316
  }
27261
- lastRootsLength = rootsLength;
27262
27317
  rootsLength = serializationContext.$roots$.length;
27263
27318
  }
27264
27319
  if (forwardRefs.length) {
@@ -27433,7 +27488,7 @@ function shouldTrackObj(obj) {
27433
27488
  return (
27434
27489
  // THINK: Not sure if we need to keep track of functions (QRLs) Let's skip them for now.
27435
27490
  // and see if we have a test case which requires them.
27436
- typeof obj === "object" && obj !== null || /**
27491
+ isObject(obj) || /**
27437
27492
  * We track all strings greater than 1 character, because those take at least 6 bytes to encode
27438
27493
  * and even with 999 root objects it saves one byte per reference. Tracking more objects makes
27439
27494
  * the map bigger so we want to strike a balance
@@ -27449,7 +27504,7 @@ function isResource(value) {
27449
27504
  return "__brand" in value && value.__brand === "resource";
27450
27505
  }
27451
27506
  var frameworkType = (obj) => {
27452
- return typeof obj === "object" && obj !== null && (obj instanceof SignalImpl || obj instanceof Task || isJSXNode(obj)) || isQrl(obj);
27507
+ return isObject(obj) && (obj instanceof SignalImpl || obj instanceof Task || isJSXNode(obj)) || isQrl(obj);
27453
27508
  };
27454
27509
  var canSerialize = (value, seen = /* @__PURE__ */ new WeakSet()) => {
27455
27510
  if (value == null || typeof value === "string" || typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") {
@@ -27513,6 +27568,8 @@ var canSerialize = (value, seen = /* @__PURE__ */ new WeakSet()) => {
27513
27568
  if (isQrl(value) || isQwikComponent(value)) {
27514
27569
  return true;
27515
27570
  }
27571
+ } else if (value === _UNINITIALIZED) {
27572
+ return true;
27516
27573
  }
27517
27574
  return false;
27518
27575
  };
@@ -27553,14 +27610,14 @@ var _typeIdNames = [
27553
27610
  "FormData",
27554
27611
  "JSXNode",
27555
27612
  "PropsProxy",
27556
- "EffectData"
27613
+ "SubscriptionData"
27557
27614
  ];
27558
27615
  var circularProofJson = (obj, indent) => {
27559
27616
  const seen = /* @__PURE__ */ new WeakSet();
27560
27617
  return JSON.stringify(
27561
27618
  obj,
27562
- (key, value) => {
27563
- if (typeof value === "object" && value !== null) {
27619
+ (_, value) => {
27620
+ if (isObject(value)) {
27564
27621
  if (seen.has(value)) {
27565
27622
  return `[Circular ${value.constructor.name}]`;
27566
27623
  }
@@ -27596,7 +27653,7 @@ var dumpState = (state, color = false, prefix = "", limit = 20) => {
27596
27653
  if (key === void 0) {
27597
27654
  hasRaw = true;
27598
27655
  out.push(
27599
- `${RED}[raw${typeof value === "object" && value ? ` ${value.constructor.name}` : ""}]${RESET} ${printRaw(value, `${prefix} `)}`
27656
+ `${RED}[raw${isObject(value) ? ` ${value.constructor.name}` : ""}]${RESET} ${printRaw(value, `${prefix} `)}`
27600
27657
  );
27601
27658
  } else {
27602
27659
  if (key === 3 /* Constant */) {
@@ -27724,10 +27781,10 @@ var shouldSerialize = (obj) => {
27724
27781
  return true;
27725
27782
  };
27726
27783
  var fastSkipSerialize = (obj) => {
27727
- return obj && (typeof obj === "object" || typeof obj === "function") && (NoSerializeSymbol in obj || noSerializeSet.has(obj));
27784
+ return obj && (isObject(obj) || typeof obj === "function") && (NoSerializeSymbol in obj || noSerializeSet.has(obj));
27728
27785
  };
27729
27786
  var noSerialize = (input) => {
27730
- if (typeof input === "object" && input !== null || typeof input === "function") {
27787
+ if (isObject(input) && input !== null || typeof input === "function") {
27731
27788
  noSerializeSet.add(input);
27732
27789
  }
27733
27790
  return input;
@@ -28665,7 +28722,7 @@ var triggerEffects = (container, signal, effects) => {
28665
28722
  container.$scheduler$(1 /* QRL_RESOLVE */, null, consumer.$computeQrl$);
28666
28723
  }
28667
28724
  }
28668
- consumer.$invalidate$();
28725
+ consumer.invalidate();
28669
28726
  } else if (property === ":" /* COMPONENT */) {
28670
28727
  const host = consumer;
28671
28728
  const qrl = container.getHostProp(host, OnRenderProp);
@@ -28697,7 +28754,7 @@ var triggerEffects = (container, signal, effects) => {
28697
28754
  DEBUG7 && log6("done scheduling");
28698
28755
  };
28699
28756
  var isSerializerObj = (obj) => {
28700
- return typeof obj === "object" && obj !== null && typeof obj[SerializerSymbol] === "function";
28757
+ return isObject(obj) && typeof obj[SerializerSymbol] === "function";
28701
28758
  };
28702
28759
 
28703
28760
  // packages/qwik/src/core/debug.ts
@@ -32654,7 +32711,7 @@ var SSRContainer = class extends import_core6._SharedContainer {
32654
32711
  const qwikLoaderScript = getQwikLoaderScript({
32655
32712
  debug: this.renderOptions.debug
32656
32713
  });
32657
- const scriptAttrs = ["id", "qwikloader", "async", true];
32714
+ const scriptAttrs = ["id", "qwikloader", "async", true, "type", "module"];
32658
32715
  const nonce = (_a = this.renderOptions.serverData) == null ? void 0 : _a.nonce;
32659
32716
  if (nonce) {
32660
32717
  scriptAttrs.push("nonce", nonce);