@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
@@ -22227,6 +22227,24 @@ function assertNumber(value1, text, ...parts) {
22227
22227
  }
22228
22228
  }
22229
22229
 
22230
+ // packages/qwik/src/core/shared/utils/types.ts
22231
+ var isSerializableObject = (v) => {
22232
+ const proto = Object.getPrototypeOf(v);
22233
+ return proto === Object.prototype || proto === Array.prototype || proto === null;
22234
+ };
22235
+ var isObject = (v) => {
22236
+ return typeof v === "object" && v !== null;
22237
+ };
22238
+ var isArray = (v) => {
22239
+ return Array.isArray(v);
22240
+ };
22241
+ var isString = (v) => {
22242
+ return typeof v === "string";
22243
+ };
22244
+ var isFunction = (v) => {
22245
+ return typeof v === "function";
22246
+ };
22247
+
22230
22248
  // packages/qwik/src/core/shared/error/error.ts
22231
22249
  var codeToText = (code2, ...parts) => {
22232
22250
  if (qDev) {
@@ -22307,7 +22325,7 @@ See https://qwik.dev/docs/components/tasks/#use-method-rules`,
22307
22325
  if (parts.length) {
22308
22326
  text = text.replaceAll(/{{(\d+)}}/g, (_, index) => {
22309
22327
  let v = parts[index];
22310
- if (v && typeof v === "object" && v.constructor === Object) {
22328
+ if (v && isObject(v) && v.constructor === Object) {
22311
22329
  v = JSON.stringify(v).slice(0, 50);
22312
22330
  }
22313
22331
  return v;
@@ -22379,24 +22397,6 @@ function retryOnPromise(fn, retryCount = 0) {
22379
22397
  }
22380
22398
  }
22381
22399
 
22382
- // packages/qwik/src/core/shared/utils/types.ts
22383
- var isSerializableObject = (v) => {
22384
- const proto = Object.getPrototypeOf(v);
22385
- return proto === Object.prototype || proto === Array.prototype || proto === null;
22386
- };
22387
- var isObject = (v) => {
22388
- return !!v && typeof v === "object";
22389
- };
22390
- var isArray = (v) => {
22391
- return Array.isArray(v);
22392
- };
22393
- var isString = (v) => {
22394
- return typeof v === "string";
22395
- };
22396
- var isFunction = (v) => {
22397
- return typeof v === "function";
22398
- };
22399
-
22400
22400
  // packages/qwik/src/build/index.dev.ts
22401
22401
  var isDev2 = true;
22402
22402
 
@@ -22605,7 +22605,7 @@ var WrappedSignalImpl = class extends (_b = SignalImpl, _a = _EFFECT_BACK_REF, _
22605
22605
  this.$funcStr$ = fnStr;
22606
22606
  this.$flags$ = flags;
22607
22607
  }
22608
- $invalidate$() {
22608
+ invalidate() {
22609
22609
  this.$flags$ |= 1 /* INVALID */;
22610
22610
  this.$forceRunEffects$ = false;
22611
22611
  this.$container$?.$scheduler$(
@@ -22620,9 +22620,13 @@ var WrappedSignalImpl = class extends (_b = SignalImpl, _a = _EFFECT_BACK_REF, _
22620
22620
  * remained the same object.
22621
22621
  */
22622
22622
  force() {
22623
- this.$flags$ |= 1 /* INVALID */;
22624
- this.$forceRunEffects$ = false;
22625
- triggerEffects(this.$container$, this, this.$effects$);
22623
+ this.$forceRunEffects$ = true;
22624
+ this.$container$?.$scheduler$(
22625
+ 7 /* RECOMPUTE_AND_SCHEDULE_EFFECTS */,
22626
+ this.$hostElement$,
22627
+ this,
22628
+ this.$effects$
22629
+ );
22626
22630
  }
22627
22631
  get untrackedValue() {
22628
22632
  const didChange = this.$computeIfNeeded$();
@@ -22729,7 +22733,7 @@ var newInvokeContextFromTuple = ([element, event, url]) => {
22729
22733
  return newInvokeContext(locale, hostElement, element, event, url);
22730
22734
  };
22731
22735
  var newInvokeContext = (locale, hostElement, element, event, url) => {
22732
- const $locale$ = locale || (typeof event === "object" && event && "locale" in event ? event.locale : void 0);
22736
+ const $locale$ = locale || (event && isObject(event) && "locale" in event ? event.locale : void 0);
22733
22737
  const ctx = {
22734
22738
  $url$: url,
22735
22739
  $i$: 0,
@@ -22848,7 +22852,7 @@ var StoreHandler = class {
22848
22852
  return this.toString;
22849
22853
  }
22850
22854
  const flags = this.$flags$;
22851
- if (flags & 1 /* RECURSIVE */ && typeof value === "object" && value !== null && !Object.isFrozen(value) && !isStore(value) && !Object.isFrozen(target)) {
22855
+ if (flags & 1 /* RECURSIVE */ && isObject(value) && !Object.isFrozen(value) && !isStore(value) && !Object.isFrozen(target)) {
22852
22856
  return getOrCreateStore(value, this.$flags$, this.$container$);
22853
22857
  }
22854
22858
  return value;
@@ -23266,6 +23270,7 @@ var inlinedQrl = (symbol, symbolName, lexicalScopeCapture = EMPTY_ARRAY) => {
23266
23270
  var _CONST_PROPS = Symbol("CONST");
23267
23271
  var _VAR_PROPS = Symbol("VAR");
23268
23272
  var _IMMUTABLE = Symbol("IMMUTABLE");
23273
+ var _UNINITIALIZED = Symbol("UNINITIALIZED");
23269
23274
 
23270
23275
  // packages/qwik/src/core/shared/qrl/qrl.public.ts
23271
23276
  var runtimeSymbolId = 0;
@@ -23291,7 +23296,7 @@ var DEBUG3 = false;
23291
23296
  var log3 = (...args) => console.log("COMPUTED SIGNAL", ...args.map(qwikDebugToString));
23292
23297
  var _a2, _b2;
23293
23298
  var ComputedSignalImpl = class extends (_b2 = SignalImpl, _a2 = _EFFECT_BACK_REF, _b2) {
23294
- constructor(container, fn, flags = 1 /* INVALID */) {
23299
+ constructor(container, fn, flags = 1 /* INVALID */ | 16 /* SERIALIZATION_STRATEGY_ALWAYS */) {
23295
23300
  super(container, NEEDS_COMPUTATION);
23296
23301
  /**
23297
23302
  * The compute function is stored here.
@@ -23306,7 +23311,7 @@ var ComputedSignalImpl = class extends (_b2 = SignalImpl, _a2 = _EFFECT_BACK_REF
23306
23311
  this.$computeQrl$ = fn;
23307
23312
  this.$flags$ = flags;
23308
23313
  }
23309
- $invalidate$() {
23314
+ invalidate() {
23310
23315
  this.$flags$ |= 1 /* INVALID */;
23311
23316
  this.$forceRunEffects$ = false;
23312
23317
  this.$container$?.$scheduler$(
@@ -23382,7 +23387,11 @@ var DEBUG4 = false;
23382
23387
  var log4 = (...args) => console.log("SERIALIZER SIGNAL", ...args.map(qwikDebugToString));
23383
23388
  var SerializerSignalImpl = class extends ComputedSignalImpl {
23384
23389
  constructor(container, argQrl) {
23385
- super(container, argQrl);
23390
+ super(
23391
+ container,
23392
+ argQrl,
23393
+ 1 /* INVALID */ | 16 /* SERIALIZATION_STRATEGY_ALWAYS */
23394
+ );
23386
23395
  __publicField(this, "$didInitialize$", false);
23387
23396
  }
23388
23397
  $computeIfNeeded$() {
@@ -23398,7 +23407,7 @@ var SerializerSignalImpl = class extends ComputedSignalImpl {
23398
23407
  const update = arg.update;
23399
23408
  const currentValue = this.$untrackedValue$ === NEEDS_COMPUTATION ? initial : this.$untrackedValue$;
23400
23409
  const untrackedValue = trackSignal(
23401
- () => this.$didInitialize$ ? update?.(currentValue) : deserialize(currentValue),
23410
+ () => this.$didInitialize$ ? update?.(currentValue) || currentValue : deserialize(currentValue),
23402
23411
  this,
23403
23412
  "." /* VNODE */,
23404
23413
  this.$container$
@@ -23478,7 +23487,7 @@ var AsyncComputedSignalImpl = class extends (_b3 = ComputedSignalImpl, _a3 = _EF
23478
23487
  __publicField(this, "$loadingEffects$", null);
23479
23488
  __publicField(this, "$errorEffects$", null);
23480
23489
  __publicField(this, "$destroy$");
23481
- __publicField(this, "$promiseValue$", null);
23490
+ __publicField(this, "$promiseValue$", NEEDS_COMPUTATION);
23482
23491
  __publicField(this, _a3, null);
23483
23492
  }
23484
23493
  /**
@@ -23528,6 +23537,10 @@ var AsyncComputedSignalImpl = class extends (_b3 = ComputedSignalImpl, _a3 = _EF
23528
23537
  get untrackedError() {
23529
23538
  return this.$untrackedError$;
23530
23539
  }
23540
+ invalidate() {
23541
+ super.invalidate();
23542
+ this.$promiseValue$ = NEEDS_COMPUTATION;
23543
+ }
23531
23544
  $computeIfNeeded$() {
23532
23545
  if (!(this.$flags$ & 1 /* INVALID */)) {
23533
23546
  return false;
@@ -23535,10 +23548,10 @@ var AsyncComputedSignalImpl = class extends (_b3 = ComputedSignalImpl, _a3 = _EF
23535
23548
  const computeQrl = this.$computeQrl$;
23536
23549
  throwIfQRLNotResolved(computeQrl);
23537
23550
  const [cleanup2] = cleanupFn(this, (err) => this.$container$?.handleError(err, null));
23538
- const untrackedValue = this.$promiseValue$ ?? computeQrl.getFn()({
23551
+ const untrackedValue = this.$promiseValue$ === NEEDS_COMPUTATION ? computeQrl.getFn()({
23539
23552
  track: trackFn(this, this.$container$),
23540
23553
  cleanup: cleanup2
23541
- });
23554
+ }) : this.$promiseValue$;
23542
23555
  if (isPromise(untrackedValue)) {
23543
23556
  this.untrackedLoading = true;
23544
23557
  this.untrackedError = null;
@@ -23547,11 +23560,12 @@ var AsyncComputedSignalImpl = class extends (_b3 = ComputedSignalImpl, _a3 = _EF
23547
23560
  this.untrackedLoading = false;
23548
23561
  this.untrackedError = null;
23549
23562
  }).catch((err) => {
23563
+ this.$promiseValue$ = err;
23550
23564
  this.untrackedLoading = false;
23551
23565
  this.untrackedError = err;
23552
23566
  });
23553
23567
  }
23554
- this.$promiseValue$ = null;
23568
+ this.$promiseValue$ = NEEDS_COMPUTATION;
23555
23569
  DEBUG5 && log5("Signal.$asyncCompute$", untrackedValue);
23556
23570
  this.$flags$ &= ~1 /* INVALID */;
23557
23571
  const didChange = untrackedValue !== this.$untrackedValue$;
@@ -23564,7 +23578,6 @@ var AsyncComputedSignalImpl = class extends (_b3 = ComputedSignalImpl, _a3 = _EF
23564
23578
 
23565
23579
  // packages/qwik/src/core/reactive-primitives/signal-api.ts
23566
23580
  var createSerializerSignal = (arg) => {
23567
- throwIfQRLNotResolved(arg);
23568
23581
  return new SerializerSignalImpl(null, arg);
23569
23582
  };
23570
23583
 
@@ -24148,9 +24161,12 @@ var executeComponent = (container, renderHost, subscriptionHost, componentQRL, p
24148
24161
  (err) => {
24149
24162
  if (isPromise(err) && retryCount < MAX_RETRY_ON_PROMISE_COUNT) {
24150
24163
  return err.then(
24151
- () => executeComponentWithPromiseExceptionRetry(retryCount++)
24164
+ () => executeComponentWithPromiseExceptionRetry(++retryCount)
24152
24165
  );
24153
24166
  } else {
24167
+ if (retryCount >= MAX_RETRY_ON_PROMISE_COUNT) {
24168
+ throw new Error(`Max retry count of component execution reached`);
24169
+ }
24154
24170
  throw err;
24155
24171
  }
24156
24172
  }
@@ -25704,7 +25720,7 @@ var createScheduler = (container, scheduleDrain, journalFlush) => {
25704
25720
  if (target instanceof ComputedSignalImpl || target instanceof WrappedSignalImpl) {
25705
25721
  const forceRunEffects = target.$forceRunEffects$;
25706
25722
  target.$forceRunEffects$ = false;
25707
- if (!effects?.size) {
25723
+ if (!effects?.size && !forceRunEffects) {
25708
25724
  break;
25709
25725
  }
25710
25726
  returnValue = maybeThen(
@@ -26201,7 +26217,7 @@ var ignoreErrorToPreventNodeFromCrashing = (err) => {
26201
26217
  // packages/qwik/src/core/shared/shared-serialization.ts
26202
26218
  var deserializedProxyMap = /* @__PURE__ */ new WeakMap();
26203
26219
  var isDeserializerProxy = (value) => {
26204
- return typeof value === "object" && value !== null && SERIALIZER_PROXY_UNWRAP in value;
26220
+ return isObject(value) && SERIALIZER_PROXY_UNWRAP in value;
26205
26221
  };
26206
26222
  var SERIALIZER_PROXY_UNWRAP = Symbol("UNWRAP");
26207
26223
  var wrapDeserializerProxy = (container, data) => {
@@ -26390,9 +26406,8 @@ var inflate = (container, target, typeId, data) => {
26390
26406
  const hasValue = d.length > 6;
26391
26407
  if (hasValue) {
26392
26408
  asyncComputed.$untrackedValue$ = d[6];
26393
- } else {
26394
- asyncComputed.$flags$ |= 1 /* INVALID */;
26395
26409
  }
26410
+ asyncComputed.$flags$ |= 1 /* INVALID */;
26396
26411
  break;
26397
26412
  }
26398
26413
  // Inflating a SerializerSignal is the same as inflating a ComputedSignal
@@ -26486,7 +26501,7 @@ var inflate = (container, target, typeId, data) => {
26486
26501
  propsProxy[_VAR_PROPS] = data === 0 ? {} : data[0];
26487
26502
  propsProxy[_CONST_PROPS] = data[1];
26488
26503
  break;
26489
- case 35 /* EffectData */: {
26504
+ case 35 /* SubscriptionData */: {
26490
26505
  const effectData = target;
26491
26506
  effectData.data.$scopedStyleIdPrefix$ = data[0];
26492
26507
  effectData.data.$isConst$ = data[1];
@@ -26507,6 +26522,7 @@ var _constants = [
26507
26522
  EMPTY_OBJ,
26508
26523
  NEEDS_COMPUTATION,
26509
26524
  STORE_ALL_PROPS,
26525
+ _UNINITIALIZED,
26510
26526
  Slot,
26511
26527
  Fragment,
26512
26528
  NaN,
@@ -26526,6 +26542,7 @@ var _constantNames = [
26526
26542
  "EMPTY_OBJ",
26527
26543
  "NEEDS_COMPUTATION",
26528
26544
  "STORE_ALL_PROPS",
26545
+ "_UNINITIALIZED",
26529
26546
  "Slot",
26530
26547
  "Fragment",
26531
26548
  "NaN",
@@ -26546,7 +26563,12 @@ var allocate = (container, typeId, value) => {
26546
26563
  if (!container.$forwardRefs$) {
26547
26564
  throw qError(18 /* serializeErrorCannotAllocate */, ["forward ref"]);
26548
26565
  }
26549
- return container.$getObjectById$(container.$forwardRefs$[value]);
26566
+ const rootRef = container.$forwardRefs$[value];
26567
+ if (rootRef === -1) {
26568
+ return _UNINITIALIZED;
26569
+ } else {
26570
+ return container.$getObjectById$(rootRef);
26571
+ }
26550
26572
  case 2 /* ForwardRefs */:
26551
26573
  return value;
26552
26574
  case 3 /* Constant */:
@@ -26642,7 +26664,7 @@ var allocate = (container, typeId, value) => {
26642
26664
  } else {
26643
26665
  throw qError(17 /* serializeErrorExpectedVNode */, [typeof vNode]);
26644
26666
  }
26645
- case 35 /* EffectData */:
26667
+ case 35 /* SubscriptionData */:
26646
26668
  return new SubscriptionData({});
26647
26669
  default:
26648
26670
  throw qError(18 /* serializeErrorCannotAllocate */, [typeId]);
@@ -26684,7 +26706,7 @@ var createSerializationContext = (NodeConstructor, DomRefConstructor, symbolToCh
26684
26706
  };
26685
26707
  }
26686
26708
  const seenObjsMap = /* @__PURE__ */ new Map();
26687
- const rootsPathMap = /* @__PURE__ */ new Map();
26709
+ const objectPathStringCache = /* @__PURE__ */ new Map();
26688
26710
  const syncFnMap = /* @__PURE__ */ new Map();
26689
26711
  const syncFns = [];
26690
26712
  const roots = [];
@@ -26693,7 +26715,7 @@ var createSerializationContext = (NodeConstructor, DomRefConstructor, symbolToCh
26693
26715
  return seenObjsMap.set(obj, { $parent$: parent, $index$: index, $rootIndex$: -1 });
26694
26716
  };
26695
26717
  const $addRootPath$ = (obj) => {
26696
- const rootPath = rootsPathMap.get(obj);
26718
+ const rootPath = objectPathStringCache.get(obj);
26697
26719
  if (rootPath) {
26698
26720
  return rootPath;
26699
26721
  }
@@ -26711,7 +26733,7 @@ var createSerializationContext = (NodeConstructor, DomRefConstructor, symbolToCh
26711
26733
  current = seenObjsMap.get(current.$parent$);
26712
26734
  }
26713
26735
  const pathStr = path.length > 1 ? path.join(" ") : path.length ? path[0] : seen.$index$;
26714
- rootsPathMap.set(obj, pathStr);
26736
+ objectPathStringCache.set(obj, pathStr);
26715
26737
  return pathStr;
26716
26738
  };
26717
26739
  const $addRoot$ = (obj, parent = null) => {
@@ -26776,7 +26798,7 @@ var createSerializationContext = (NodeConstructor, DomRefConstructor, symbolToCh
26776
26798
  $storeProxyMap$: storeProxyMap,
26777
26799
  $getProp$: getProp,
26778
26800
  $setProp$: setProp,
26779
- $pathMap$: rootsPathMap
26801
+ $objectPathStringCache$: objectPathStringCache
26780
26802
  };
26781
26803
  };
26782
26804
  function $discoverRoots$(serializationContext, obj, parent, index) {
@@ -26798,7 +26820,7 @@ var discoverValuesForVNodeData = (vnodeData, callback) => {
26798
26820
  for (let i = 1; i < value.length; i += 2) {
26799
26821
  const keyValue = value[i - 1];
26800
26822
  const attrValue = value[i];
26801
- if (typeof attrValue === "string" || // skip empty props
26823
+ if (attrValue == null || typeof attrValue === "string" || // skip empty props
26802
26824
  keyValue === ELEMENT_PROPS && Object.keys(attrValue).length === 0) {
26803
26825
  continue;
26804
26826
  }
@@ -26816,13 +26838,28 @@ var PromiseResult = class {
26816
26838
  this.$qrl$ = $qrl$;
26817
26839
  }
26818
26840
  };
26841
+ var SerializationWeakRef = class {
26842
+ constructor($obj$) {
26843
+ this.$obj$ = $obj$;
26844
+ }
26845
+ };
26819
26846
  async function serialize(serializationContext) {
26820
- const { $writer$, $isSsrNode$, $isDomRef$, $storeProxyMap$, $addRoot$, $pathMap$, $wasSeen$ } = serializationContext;
26847
+ const {
26848
+ $writer$,
26849
+ $isSsrNode$,
26850
+ $isDomRef$,
26851
+ $storeProxyMap$,
26852
+ $addRoot$,
26853
+ $objectPathStringCache$,
26854
+ $wasSeen$
26855
+ } = serializationContext;
26821
26856
  let depth = 0;
26857
+ let rootIdx = 0;
26822
26858
  const forwardRefs = [];
26823
26859
  let forwardRefsId = 0;
26824
26860
  const promises = /* @__PURE__ */ new Set();
26825
26861
  const preloadQrls = /* @__PURE__ */ new Set();
26862
+ const s11nWeakRefs = /* @__PURE__ */ new Map();
26826
26863
  let parent = null;
26827
26864
  const isRootObject = () => depth === 0;
26828
26865
  const outputArray = (value, writeFn) => {
@@ -26863,17 +26900,27 @@ async function serialize(serializationContext) {
26863
26900
  };
26864
26901
  const addPreloadQrl = (qrl) => {
26865
26902
  preloadQrls.add(qrl);
26866
- serializationContext.$addRoot$(qrl, null);
26903
+ serializationContext.$addRoot$(qrl);
26867
26904
  };
26868
- const outputRootRef = (value, rootDepth = 0) => {
26905
+ const outputAsRootRef = (value, rootDepth = 0) => {
26869
26906
  const seen = $wasSeen$(value);
26870
- const rootRefPath = $pathMap$.get(value);
26907
+ const rootRefPath = $objectPathStringCache$.get(value);
26871
26908
  if (rootDepth === depth && seen && seen.$parent$ !== null && rootRefPath) {
26872
26909
  output(0 /* RootRef */, rootRefPath);
26873
26910
  return true;
26874
26911
  } else if (depth > rootDepth && seen && seen.$rootIndex$ !== -1) {
26875
26912
  output(0 /* RootRef */, seen.$rootIndex$);
26876
26913
  return true;
26914
+ } else if (s11nWeakRefs.has(value)) {
26915
+ const forwardRefId = s11nWeakRefs.get(value);
26916
+ if (rootDepth === depth) {
26917
+ forwardRefs[forwardRefId] = rootIdx;
26918
+ } else {
26919
+ const rootRef = $addRoot$(value);
26920
+ output(0 /* RootRef */, rootRef);
26921
+ forwardRefs[forwardRefId] = rootRef;
26922
+ return true;
26923
+ }
26877
26924
  }
26878
26925
  return false;
26879
26926
  };
@@ -26886,11 +26933,11 @@ async function serialize(serializationContext) {
26886
26933
  output(3 /* Constant */, value ? 2 /* True */ : 3 /* False */);
26887
26934
  } else if (typeof value === "function") {
26888
26935
  if (value === Slot) {
26889
- output(3 /* Constant */, 9 /* Slot */);
26936
+ output(3 /* Constant */, 10 /* Slot */);
26890
26937
  } else if (value === Fragment) {
26891
- output(3 /* Constant */, 10 /* Fragment */);
26938
+ output(3 /* Constant */, 11 /* Fragment */);
26892
26939
  } else if (isQrl(value)) {
26893
- if (!outputRootRef(value)) {
26940
+ if (!outputAsRootRef(value)) {
26894
26941
  const qrl = qrlToString(serializationContext, value);
26895
26942
  const type = preloadQrls.has(value) ? 21 /* PreloadQRL */ : 20 /* QRL */;
26896
26943
  if (isRootObject()) {
@@ -26909,18 +26956,18 @@ async function serialize(serializationContext) {
26909
26956
  }
26910
26957
  } else if (typeof value === "number") {
26911
26958
  if (Number.isNaN(value)) {
26912
- output(3 /* Constant */, 11 /* NaN */);
26959
+ output(3 /* Constant */, 12 /* NaN */);
26913
26960
  } else if (!Number.isFinite(value)) {
26914
26961
  output(
26915
26962
  3 /* Constant */,
26916
- value < 0 ? 13 /* NegativeInfinity */ : 12 /* PositiveInfinity */
26963
+ value < 0 ? 14 /* NegativeInfinity */ : 13 /* PositiveInfinity */
26917
26964
  );
26918
26965
  } else if (value === Number.MAX_SAFE_INTEGER) {
26919
- output(3 /* Constant */, 14 /* MaxSafeInt */);
26966
+ output(3 /* Constant */, 15 /* MaxSafeInt */);
26920
26967
  } else if (value === Number.MAX_SAFE_INTEGER - 1) {
26921
- output(3 /* Constant */, 15 /* AlmostMaxSafeInt */);
26968
+ output(3 /* Constant */, 16 /* AlmostMaxSafeInt */);
26922
26969
  } else if (value === Number.MIN_SAFE_INTEGER) {
26923
- output(3 /* Constant */, 16 /* MinSafeInt */);
26970
+ output(3 /* Constant */, 17 /* MinSafeInt */);
26924
26971
  } else {
26925
26972
  output(4 /* Number */, value);
26926
26973
  }
@@ -26943,7 +26990,7 @@ async function serialize(serializationContext) {
26943
26990
  if (value.length === 0) {
26944
26991
  output(3 /* Constant */, 4 /* EmptyString */);
26945
26992
  } else {
26946
- if (!outputRootRef(value)) {
26993
+ if (!outputAsRootRef(value)) {
26947
26994
  output(5 /* String */, value);
26948
26995
  }
26949
26996
  }
@@ -26953,12 +27000,14 @@ async function serialize(serializationContext) {
26953
27000
  output(3 /* Constant */, 7 /* NEEDS_COMPUTATION */);
26954
27001
  } else if (value === STORE_ALL_PROPS) {
26955
27002
  output(3 /* Constant */, 8 /* STORE_ALL_PROPS */);
27003
+ } else if (value === _UNINITIALIZED) {
27004
+ output(3 /* Constant */, 9 /* UNINITIALIZED */);
26956
27005
  } else {
26957
27006
  throw qError(20 /* serializeErrorUnknownType */, [typeof value]);
26958
27007
  }
26959
27008
  };
26960
27009
  const writeObjectValue = (value) => {
26961
- if (outputRootRef(value, 1)) {
27010
+ if (outputAsRootRef(value, 1)) {
26962
27011
  return;
26963
27012
  }
26964
27013
  if (isPropsProxy(value)) {
@@ -26967,7 +27016,7 @@ async function serialize(serializationContext) {
26967
27016
  const out = constProps ? [varProps, constProps] : Object.keys(varProps).length ? [varProps] : 0;
26968
27017
  output(34 /* PropsProxy */, out);
26969
27018
  } else if (value instanceof SubscriptionData) {
26970
- output(35 /* EffectData */, [value.data.$scopedStyleIdPrefix$, value.data.$isConst$]);
27019
+ output(35 /* SubscriptionData */, [value.data.$scopedStyleIdPrefix$, value.data.$isConst$]);
26971
27020
  } else if (isStore(value)) {
26972
27021
  if (isResource(value)) {
26973
27022
  serializationContext.$resources$.add(value);
@@ -27046,7 +27095,6 @@ async function serialize(serializationContext) {
27046
27095
  output(1 /* ForwardRef */, forwardRefId);
27047
27096
  return;
27048
27097
  }
27049
- const v = value instanceof ComputedSignalImpl && (value.$flags$ & 1 /* INVALID */ || fastSkipSerialize(value.$untrackedValue$)) ? NEEDS_COMPUTATION : value.$untrackedValue$;
27050
27098
  if (value instanceof WrappedSignalImpl) {
27051
27099
  output(26 /* WrappedSignal */, [
27052
27100
  ...serializeWrappingFn(serializationContext, value),
@@ -27055,33 +27103,36 @@ async function serialize(serializationContext) {
27055
27103
  value.$hostElement$,
27056
27104
  ...value.$effects$ || []
27057
27105
  ]);
27058
- } else if (value instanceof AsyncComputedSignalImpl) {
27059
- addPreloadQrl(value.$computeQrl$);
27060
- const out = [
27061
- value.$computeQrl$,
27062
- value.$effects$,
27063
- value.$loadingEffects$,
27064
- value.$errorEffects$,
27065
- value.$untrackedLoading$,
27066
- value.$untrackedError$
27067
- ];
27068
- if (v !== NEEDS_COMPUTATION) {
27069
- out.push(v);
27070
- }
27071
- output(28 /* AsyncComputedSignal */, out);
27072
27106
  } else if (value instanceof ComputedSignalImpl) {
27107
+ let v = value.$untrackedValue$;
27108
+ const shouldAlwaysSerialize = value.$flags$ & 16 /* SERIALIZATION_STRATEGY_ALWAYS */;
27109
+ const shouldNeverSerialize = value.$flags$ & 8 /* SERIALIZATION_STRATEGY_NEVER */;
27110
+ const isInvalid = value.$flags$ & 1 /* INVALID */;
27111
+ const isSkippable = fastSkipSerialize(value.$untrackedValue$);
27112
+ if (shouldAlwaysSerialize) {
27113
+ v = value.$untrackedValue$;
27114
+ } else if (shouldNeverSerialize) {
27115
+ v = NEEDS_COMPUTATION;
27116
+ } else if (isInvalid || isSkippable) {
27117
+ v = NEEDS_COMPUTATION;
27118
+ }
27073
27119
  addPreloadQrl(value.$computeQrl$);
27074
- const out = [
27075
- value.$computeQrl$,
27076
- // TODO check if we can use domVRef for effects
27077
- value.$effects$
27078
- ];
27120
+ const out = [value.$computeQrl$, value.$effects$];
27121
+ const isAsync = value instanceof AsyncComputedSignalImpl;
27122
+ if (isAsync) {
27123
+ out.push(
27124
+ value.$loadingEffects$,
27125
+ value.$errorEffects$,
27126
+ value.$untrackedLoading$,
27127
+ value.$untrackedError$
27128
+ );
27129
+ }
27079
27130
  if (v !== NEEDS_COMPUTATION) {
27080
27131
  out.push(v);
27081
27132
  }
27082
- output(27 /* ComputedSignal */, out);
27133
+ output(isAsync ? 28 /* AsyncComputedSignal */ : 27 /* ComputedSignal */, out);
27083
27134
  } else {
27084
- output(25 /* Signal */, [v, ...value.$effects$ || []]);
27135
+ output(25 /* Signal */, [value.$untrackedValue$, ...value.$effects$ || []]);
27085
27136
  }
27086
27137
  } else if (value instanceof URL) {
27087
27138
  output(7 /* URL */, value.href);
@@ -27190,6 +27241,11 @@ async function serialize(serializationContext) {
27190
27241
  }
27191
27242
  const out = btoa(buf).replace(/=+$/, "");
27192
27243
  output(19 /* Uint8Array */, out);
27244
+ } else if (value instanceof SerializationWeakRef) {
27245
+ const forwardRefId = forwardRefsId++;
27246
+ s11nWeakRefs.set(value.$obj$, forwardRefId);
27247
+ forwardRefs[forwardRefId] = -1;
27248
+ output(1 /* ForwardRef */, forwardRefId);
27193
27249
  } else if (vnode_isVNode(value)) {
27194
27250
  output(3 /* Constant */, 0 /* Undefined */);
27195
27251
  } else {
@@ -27210,20 +27266,19 @@ async function serialize(serializationContext) {
27210
27266
  }
27211
27267
  const outputRoots = async () => {
27212
27268
  $writer$.write("[");
27213
- let lastRootsLength = 0;
27214
27269
  let rootsLength = serializationContext.$roots$.length;
27215
- while (lastRootsLength < rootsLength || promises.size) {
27216
- if (lastRootsLength !== 0) {
27270
+ while (rootIdx < rootsLength || promises.size) {
27271
+ if (rootIdx !== 0) {
27217
27272
  $writer$.write(",");
27218
27273
  }
27219
27274
  let separator = false;
27220
- for (let i = lastRootsLength; i < rootsLength; i++) {
27275
+ for (; rootIdx < rootsLength; rootIdx++) {
27221
27276
  if (separator) {
27222
27277
  $writer$.write(",");
27223
27278
  } else {
27224
27279
  separator = true;
27225
27280
  }
27226
- writeValue(serializationContext.$roots$[i]);
27281
+ writeValue(serializationContext.$roots$[rootIdx]);
27227
27282
  }
27228
27283
  if (promises.size) {
27229
27284
  try {
@@ -27231,7 +27286,6 @@ async function serialize(serializationContext) {
27231
27286
  } catch {
27232
27287
  }
27233
27288
  }
27234
- lastRootsLength = rootsLength;
27235
27289
  rootsLength = serializationContext.$roots$.length;
27236
27290
  }
27237
27291
  if (forwardRefs.length) {
@@ -27405,7 +27459,7 @@ function shouldTrackObj(obj) {
27405
27459
  return (
27406
27460
  // THINK: Not sure if we need to keep track of functions (QRLs) Let's skip them for now.
27407
27461
  // and see if we have a test case which requires them.
27408
- typeof obj === "object" && obj !== null || /**
27462
+ isObject(obj) || /**
27409
27463
  * We track all strings greater than 1 character, because those take at least 6 bytes to encode
27410
27464
  * and even with 999 root objects it saves one byte per reference. Tracking more objects makes
27411
27465
  * the map bigger so we want to strike a balance
@@ -27421,7 +27475,7 @@ function isResource(value) {
27421
27475
  return "__brand" in value && value.__brand === "resource";
27422
27476
  }
27423
27477
  var frameworkType = (obj) => {
27424
- return typeof obj === "object" && obj !== null && (obj instanceof SignalImpl || obj instanceof Task || isJSXNode(obj)) || isQrl(obj);
27478
+ return isObject(obj) && (obj instanceof SignalImpl || obj instanceof Task || isJSXNode(obj)) || isQrl(obj);
27425
27479
  };
27426
27480
  var canSerialize = (value, seen = /* @__PURE__ */ new WeakSet()) => {
27427
27481
  if (value == null || typeof value === "string" || typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") {
@@ -27485,6 +27539,8 @@ var canSerialize = (value, seen = /* @__PURE__ */ new WeakSet()) => {
27485
27539
  if (isQrl(value) || isQwikComponent(value)) {
27486
27540
  return true;
27487
27541
  }
27542
+ } else if (value === _UNINITIALIZED) {
27543
+ return true;
27488
27544
  }
27489
27545
  return false;
27490
27546
  };
@@ -27525,14 +27581,14 @@ var _typeIdNames = [
27525
27581
  "FormData",
27526
27582
  "JSXNode",
27527
27583
  "PropsProxy",
27528
- "EffectData"
27584
+ "SubscriptionData"
27529
27585
  ];
27530
27586
  var circularProofJson = (obj, indent) => {
27531
27587
  const seen = /* @__PURE__ */ new WeakSet();
27532
27588
  return JSON.stringify(
27533
27589
  obj,
27534
- (key, value) => {
27535
- if (typeof value === "object" && value !== null) {
27590
+ (_, value) => {
27591
+ if (isObject(value)) {
27536
27592
  if (seen.has(value)) {
27537
27593
  return `[Circular ${value.constructor.name}]`;
27538
27594
  }
@@ -27568,7 +27624,7 @@ var dumpState = (state, color = false, prefix = "", limit = 20) => {
27568
27624
  if (key === void 0) {
27569
27625
  hasRaw = true;
27570
27626
  out.push(
27571
- `${RED}[raw${typeof value === "object" && value ? ` ${value.constructor.name}` : ""}]${RESET} ${printRaw(value, `${prefix} `)}`
27627
+ `${RED}[raw${isObject(value) ? ` ${value.constructor.name}` : ""}]${RESET} ${printRaw(value, `${prefix} `)}`
27572
27628
  );
27573
27629
  } else {
27574
27630
  if (key === 3 /* Constant */) {
@@ -27696,10 +27752,10 @@ var shouldSerialize = (obj) => {
27696
27752
  return true;
27697
27753
  };
27698
27754
  var fastSkipSerialize = (obj) => {
27699
- return obj && (typeof obj === "object" || typeof obj === "function") && (NoSerializeSymbol in obj || noSerializeSet.has(obj));
27755
+ return obj && (isObject(obj) || typeof obj === "function") && (NoSerializeSymbol in obj || noSerializeSet.has(obj));
27700
27756
  };
27701
27757
  var noSerialize = (input) => {
27702
- if (typeof input === "object" && input !== null || typeof input === "function") {
27758
+ if (isObject(input) && input !== null || typeof input === "function") {
27703
27759
  noSerializeSet.add(input);
27704
27760
  }
27705
27761
  return input;
@@ -28637,7 +28693,7 @@ var triggerEffects = (container, signal, effects) => {
28637
28693
  container.$scheduler$(1 /* QRL_RESOLVE */, null, consumer.$computeQrl$);
28638
28694
  }
28639
28695
  }
28640
- consumer.$invalidate$();
28696
+ consumer.invalidate();
28641
28697
  } else if (property === ":" /* COMPONENT */) {
28642
28698
  const host = consumer;
28643
28699
  const qrl = container.getHostProp(host, OnRenderProp);
@@ -28669,7 +28725,7 @@ var triggerEffects = (container, signal, effects) => {
28669
28725
  DEBUG7 && log6("done scheduling");
28670
28726
  };
28671
28727
  var isSerializerObj = (obj) => {
28672
- return typeof obj === "object" && obj !== null && typeof obj[SerializerSymbol] === "function";
28728
+ return isObject(obj) && typeof obj[SerializerSymbol] === "function";
28673
28729
  };
28674
28730
 
28675
28731
  // packages/qwik/src/core/debug.ts
@@ -32621,7 +32677,7 @@ var SSRContainer = class extends _SharedContainer2 {
32621
32677
  const qwikLoaderScript = getQwikLoaderScript({
32622
32678
  debug: this.renderOptions.debug
32623
32679
  });
32624
- const scriptAttrs = ["id", "qwikloader", "async", true];
32680
+ const scriptAttrs = ["id", "qwikloader", "async", true, "type", "module"];
32625
32681
  const nonce = this.renderOptions.serverData?.nonce;
32626
32682
  if (nonce) {
32627
32683
  scriptAttrs.push("nonce", nonce);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qwik.dev/core/testing",
3
- "version": "2.0.0-beta.3-dev+aa098fc",
3
+ "version": "2.0.0-beta.5-dev+8887f7e",
4
4
  "main": "index.mjs",
5
5
  "types": "index.d.ts",
6
6
  "private": true,