@qwik.dev/core 2.0.0-alpha.0 → 2.0.0-alpha.2

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 (38) 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/build/package.json +1 -1
  7. package/dist/cli.cjs +1384 -761
  8. package/dist/core-internal.d.ts +15 -2
  9. package/dist/core.cjs +75 -61
  10. package/dist/core.cjs.map +1 -1
  11. package/dist/core.min.mjs +1 -1
  12. package/dist/core.mjs +75 -61
  13. package/dist/core.mjs.map +1 -1
  14. package/dist/core.prod.cjs +56 -46
  15. package/dist/core.prod.mjs +58 -49
  16. package/dist/insights/index.qwik.cjs +1 -1
  17. package/dist/insights/index.qwik.mjs +1 -1
  18. package/dist/loader/index.cjs +2 -2
  19. package/dist/loader/index.mjs +2 -2
  20. package/dist/loader/package.json +1 -1
  21. package/dist/optimizer.cjs +57 -60
  22. package/dist/optimizer.mjs +59 -63
  23. package/dist/prefetch/package.json +1 -1
  24. package/dist/qwikloader.debug.js +1 -0
  25. package/dist/qwikloader.js +2 -2
  26. package/dist/server.cjs +81 -53
  27. package/dist/server.mjs +81 -53
  28. package/dist/starters/features/auth/package.json +3 -1
  29. package/dist/starters/features/drizzle/package.json +2 -1
  30. package/dist/starters/features/postcss/package.json +3 -0
  31. package/dist/starters/features/prisma/package.json +2 -1
  32. package/dist/starters/features/tailwind/package.json +3 -0
  33. package/dist/starters/features/turso/package.json +4 -1
  34. package/dist/testing/index.cjs +77 -49
  35. package/dist/testing/index.mjs +77 -49
  36. package/dist/testing/package.json +1 -1
  37. package/package.json +13 -11
  38. package/public.d.ts +2 -0
package/dist/server.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * @license
3
- * @qwik.dev/core/server 2.0.0-alpha.0-dev+dd93926
3
+ * @qwik.dev/core/server 2.0.0-alpha.2-dev+58b6f8d
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
@@ -647,6 +647,12 @@ __publicField(SsrNode, "ELEMENT_NODE", 1);
647
647
  __publicField(SsrNode, "TEXT_NODE", 3);
648
648
  __publicField(SsrNode, "DOCUMENT_NODE", 9);
649
649
  __publicField(SsrNode, "DOCUMENT_FRAGMENT_NODE", 11);
650
+ var DomRef = class {
651
+ /** @id is the same id as for SsrNode */
652
+ constructor(id) {
653
+ this.id = id;
654
+ }
655
+ };
650
656
  var SsrComponentFrame = class {
651
657
  constructor(componentNode) {
652
658
  this.componentNode = componentNode;
@@ -945,7 +951,7 @@ function getBuildBase(opts) {
945
951
  return `${import.meta.env.BASE_URL}build/`;
946
952
  }
947
953
  var versions = {
948
- qwik: "2.0.0-alpha.0-dev+dd93926",
954
+ qwik: "2.0.0-alpha.2-dev+58b6f8d",
949
955
  qwikDom: "2.1.19"
950
956
  };
951
957
 
@@ -1140,6 +1146,20 @@ var StoreHandler = class {
1140
1146
  if (prop === STORE_TARGET) {
1141
1147
  return true;
1142
1148
  }
1149
+ if (typeof prop === "string") {
1150
+ const ctx = tryGetInvokeContext();
1151
+ if (ctx) {
1152
+ const effectSubscriber = ctx.$effectSubscriber$;
1153
+ if (effectSubscriber) {
1154
+ addEffect(
1155
+ target,
1156
+ Array.isArray(target) ? STORE_ARRAY_PROP : prop,
1157
+ this,
1158
+ effectSubscriber
1159
+ );
1160
+ }
1161
+ }
1162
+ }
1143
1163
  return Object.prototype.hasOwnProperty.call(target, prop);
1144
1164
  }
1145
1165
  ownKeys(target) {
@@ -1564,6 +1584,7 @@ var executeComponent = (container, renderHost, subscriptionHost, componentQRL, p
1564
1584
  iCtx.$container$ = container;
1565
1585
  let componentFn;
1566
1586
  container.ensureProjectionResolved(renderHost);
1587
+ let isInlineComponent = false;
1567
1588
  if (componentQRL === null) {
1568
1589
  componentQRL = componentQRL || container.getHostProp(renderHost, OnRenderProp);
1569
1590
  assertDefined(componentQRL, "No Component found at this location");
@@ -1578,14 +1599,19 @@ var executeComponent = (container, renderHost, subscriptionHost, componentQRL, p
1578
1599
  const qComponentFn = componentQRL;
1579
1600
  componentFn = () => invokeApply(iCtx, qComponentFn, [props || EMPTY_OBJ, null, 0]);
1580
1601
  } else {
1602
+ isInlineComponent = true;
1581
1603
  const inlineComponent = componentQRL;
1582
1604
  componentFn = () => invokeApply(iCtx, inlineComponent, [props || EMPTY_OBJ]);
1583
1605
  }
1584
1606
  const executeComponentWithPromiseExceptionRetry = (retryCount = 0) => safeCall(
1585
1607
  () => {
1586
- container.setHostProp(renderHost, ELEMENT_SEQ_IDX, null);
1587
- container.setHostProp(renderHost, USE_ON_LOCAL_SEQ_IDX, null);
1588
- container.setHostProp(renderHost, ELEMENT_PROPS, props);
1608
+ if (!isInlineComponent) {
1609
+ container.setHostProp(renderHost, ELEMENT_SEQ_IDX, null);
1610
+ container.setHostProp(renderHost, USE_ON_LOCAL_SEQ_IDX, null);
1611
+ if (container.getHostProp(renderHost, ELEMENT_PROPS) !== props) {
1612
+ container.setHostProp(renderHost, ELEMENT_PROPS, props);
1613
+ }
1614
+ }
1589
1615
  if (vnode_isVNode(renderHost)) {
1590
1616
  clearVNodeEffectDependencies(renderHost);
1591
1617
  }
@@ -2823,7 +2849,10 @@ function choreComparator(a, b, shouldThrowOnHostMismatch) {
2823
2849
  return hostDiff;
2824
2850
  }
2825
2851
  } else {
2826
- const errorMessage = "SERVER: during HTML streaming, it is not possible to cause a re-run of tasks on a different host";
2852
+ const errorMessage = `SERVER: during HTML streaming, re-running tasks on a different host is not allowed.
2853
+ You are attempting to change a state that has already been streamed to the client.
2854
+ This can lead to inconsistencies between Server-Side Rendering (SSR) and Client-Side Rendering (CSR).
2855
+ Problematic Node: ${aHost.toString()}`;
2827
2856
  if (shouldThrowOnHostMismatch) {
2828
2857
  throwErrorAndStop(errorMessage);
2829
2858
  }
@@ -2993,9 +3022,11 @@ var isTask = (value) => {
2993
3022
  return value instanceof Task;
2994
3023
  };
2995
3024
 
3025
+ // packages/qwik/src/core/signal/flags.ts
3026
+ var NEEDS_COMPUTATION = Symbol("invalid");
3027
+
2996
3028
  // packages/qwik/src/core/signal/signal.ts
2997
3029
  var DEBUG3 = false;
2998
- var NEEDS_COMPUTATION = Symbol("invalid");
2999
3030
  var log2 = (...args) => console.log("SIGNAL", ...args.map(qwikDebugToString));
3000
3031
  var throwIfQRLNotResolved = (qrl) => {
3001
3032
  const resolved = qrl.resolved;
@@ -3328,7 +3359,7 @@ var WrappedSignal = class extends Signal {
3328
3359
  };
3329
3360
 
3330
3361
  // packages/qwik/src/core/version.ts
3331
- var version = "2.0.0-alpha.0-dev+dd93926";
3362
+ var version = "2.0.0-alpha.2-dev+58b6f8d";
3332
3363
 
3333
3364
  // packages/qwik/src/core/shared/shared-container.ts
3334
3365
  var _SharedContainer = class {
@@ -3355,9 +3386,10 @@ var _SharedContainer = class {
3355
3386
  trackSignalValue(signal, subscriber, property, data) {
3356
3387
  return trackSignal(() => signal.value, subscriber, property, this, data);
3357
3388
  }
3358
- serializationCtxFactory(NodeConstructor, symbolToChunkResolver, writer, prepVNodeData) {
3389
+ serializationCtxFactory(NodeConstructor, DomRefConstructor, symbolToChunkResolver, writer, prepVNodeData) {
3359
3390
  return createSerializationContext(
3360
3391
  NodeConstructor,
3392
+ DomRefConstructor,
3361
3393
  symbolToChunkResolver,
3362
3394
  this.getHostProp.bind(this),
3363
3395
  this.setHostProp.bind(this),
@@ -6237,12 +6269,7 @@ function inflateQRL(container, qrl) {
6237
6269
  }
6238
6270
  return qrl;
6239
6271
  }
6240
- var DomVRef = class {
6241
- constructor(id) {
6242
- this.id = id;
6243
- }
6244
- };
6245
- var createSerializationContext = (NodeConstructor, symbolToChunkResolver, getProp, setProp, storeProxyMap, writer, prepVNodeData) => {
6272
+ var createSerializationContext = (NodeConstructor, DomRefConstructor, symbolToChunkResolver, getProp, setProp, storeProxyMap, writer, prepVNodeData) => {
6246
6273
  if (!writer) {
6247
6274
  const buffer = [];
6248
6275
  writer = {
@@ -6266,11 +6293,13 @@ var createSerializationContext = (NodeConstructor, symbolToChunkResolver, getPro
6266
6293
  return id;
6267
6294
  };
6268
6295
  const isSsrNode = NodeConstructor ? (obj) => obj instanceof NodeConstructor : () => false;
6296
+ const isDomRef = DomRefConstructor ? (obj) => obj instanceof DomRefConstructor : () => false;
6269
6297
  return {
6270
6298
  $serialize$() {
6271
6299
  serialize(this);
6272
6300
  },
6273
6301
  $isSsrNode$: isSsrNode,
6302
+ $isDomRef$: isDomRef,
6274
6303
  $symbolToChunkResolver$: symbolToChunkResolver,
6275
6304
  $wasSeen$,
6276
6305
  $roots$: roots,
@@ -6379,6 +6408,8 @@ var createSerializationContext = (NodeConstructor, symbolToChunkResolver, getPro
6379
6408
  discoveredValues.push(obj.$el$, obj.$qrl$, obj.$state$, obj.$effectDependencies$);
6380
6409
  } else if (isSsrNode(obj)) {
6381
6410
  discoveredValues.push(obj.vnodeData);
6411
+ } else if (isDomRef(obj)) {
6412
+ discoveredValues.push(obj.id);
6382
6413
  } else if (isJSXNode2(obj)) {
6383
6414
  discoveredValues.push(obj.type, obj.props, obj.constProps, obj.children);
6384
6415
  } else if (Array.isArray(obj)) {
@@ -6433,7 +6464,7 @@ var createSerializationContext = (NodeConstructor, symbolToChunkResolver, getPro
6433
6464
  };
6434
6465
  var promiseResults = /* @__PURE__ */ new WeakMap();
6435
6466
  function serialize(serializationContext) {
6436
- const { $writer$, $isSsrNode$, $setProp$, $storeProxyMap$ } = serializationContext;
6467
+ const { $writer$, $isSsrNode$, $isDomRef$, $setProp$, $storeProxyMap$ } = serializationContext;
6437
6468
  let depth = -1;
6438
6469
  let writeType = false;
6439
6470
  const output = (type, value) => {
@@ -6601,14 +6632,10 @@ function serialize(serializationContext) {
6601
6632
  }
6602
6633
  output(13 /* Object */, out);
6603
6634
  }
6604
- } else if (value instanceof DomVRef) {
6635
+ } else if ($isDomRef$(value)) {
6605
6636
  output(9 /* RefVNode */, value.id);
6606
6637
  } else if (value instanceof Signal) {
6607
- let v = value instanceof ComputedSignal && (value.$invalid$ || fastSkipSerialize(value.$untrackedValue$)) ? NEEDS_COMPUTATION : value.$untrackedValue$;
6608
- if ($isSsrNode$(v)) {
6609
- serializationContext.$addRoot$(v);
6610
- v = new DomVRef(v.id);
6611
- }
6638
+ const v = value instanceof ComputedSignal && (value.$invalid$ || fastSkipSerialize(value.$untrackedValue$)) ? NEEDS_COMPUTATION : value.$untrackedValue$;
6612
6639
  if (value instanceof WrappedSignal) {
6613
6640
  output(23 /* WrappedSignal */, [
6614
6641
  ...serializeWrappingFn(serializationContext, value),
@@ -6994,8 +7021,8 @@ var createQRL = (chunk, symbol, symbolRef, symbolFn, capture, captureRef, refSym
6994
7021
  }
6995
7022
  let _containerEl;
6996
7023
  const qrl = async function(...args) {
6997
- const fn = invokeFn.call(this, tryGetInvokeContext());
6998
- const result = await fn(...args);
7024
+ const boundedFn = bindFnToContext.call(this, tryGetInvokeContext());
7025
+ const result = await boundedFn(...args);
6999
7026
  return result;
7000
7027
  };
7001
7028
  const setContainer = (el) => {
@@ -7004,6 +7031,30 @@ var createQRL = (chunk, symbol, symbolRef, symbolFn, capture, captureRef, refSym
7004
7031
  }
7005
7032
  return _containerEl;
7006
7033
  };
7034
+ function bindFnToContext(currentCtx, beforeFn) {
7035
+ return (...args) => maybeThen(resolveLazy(), (fn) => {
7036
+ if (!isFunction(fn)) {
7037
+ throw qError(QError_qrlIsNotFunction);
7038
+ }
7039
+ if (beforeFn && beforeFn() === false) {
7040
+ return;
7041
+ }
7042
+ const context = createOrReuseInvocationContext(currentCtx);
7043
+ const prevQrl = context.$qrl$;
7044
+ const prevEvent = context.$event$;
7045
+ context.$qrl$ = qrl;
7046
+ context.$event$ || (context.$event$ = this);
7047
+ try {
7048
+ return invoke.call(this, context, fn, ...args);
7049
+ } finally {
7050
+ context.$qrl$ = prevQrl;
7051
+ context.$event$ = prevEvent;
7052
+ }
7053
+ });
7054
+ }
7055
+ const resolveLazy = (containerEl) => {
7056
+ return symbolRef !== null ? symbolRef : resolve(containerEl);
7057
+ };
7007
7058
  const wrapFn = (fn) => {
7008
7059
  if (typeof fn !== "function" || !capture?.length && !captureRef?.length) {
7009
7060
  return fn;
@@ -7053,30 +7104,6 @@ var createQRL = (chunk, symbol, symbolRef, symbolFn, capture, captureRef, refSym
7053
7104
  }
7054
7105
  return symbolRef;
7055
7106
  };
7056
- const resolveLazy = (containerEl) => {
7057
- return symbolRef !== null ? symbolRef : resolve(containerEl);
7058
- };
7059
- function invokeFn(currentCtx, beforeFn) {
7060
- return (...args) => maybeThen(resolveLazy(), (f) => {
7061
- if (!isFunction(f)) {
7062
- throw qError(QError_qrlIsNotFunction);
7063
- }
7064
- if (beforeFn && beforeFn() === false) {
7065
- return;
7066
- }
7067
- const context = createOrReuseInvocationContext(currentCtx);
7068
- const prevQrl = context.$qrl$;
7069
- const prevEvent = context.$event$;
7070
- context.$qrl$ = qrl;
7071
- context.$event$ || (context.$event$ = this);
7072
- try {
7073
- return invoke.call(this, context, f, ...args);
7074
- } finally {
7075
- context.$qrl$ = prevQrl;
7076
- context.$event$ = prevEvent;
7077
- }
7078
- });
7079
- }
7080
7107
  const createOrReuseInvocationContext = (invoke2) => {
7081
7108
  if (invoke2 == null) {
7082
7109
  return newInvokeContext();
@@ -7099,7 +7126,7 @@ var createQRL = (chunk, symbol, symbolRef, symbolFn, capture, captureRef, refSym
7099
7126
  $symbol$: symbol,
7100
7127
  $refSymbol$: refSymbol,
7101
7128
  $hash$: hash2,
7102
- getFn: invokeFn,
7129
+ getFn: bindFnToContext,
7103
7130
  $capture$: capture,
7104
7131
  $captureRef$: captureRef,
7105
7132
  dev: null,
@@ -7810,6 +7837,7 @@ var SSRContainer = class extends _SharedContainer2 {
7810
7837
  };
7811
7838
  this.serializationCtx = this.serializationCtxFactory(
7812
7839
  SsrNode,
7840
+ DomRef,
7813
7841
  this.symbolToChunkResolver,
7814
7842
  opts.writer,
7815
7843
  (vNodeData) => this.addVNodeToSerializationRoots(vNodeData)
@@ -8573,10 +8601,10 @@ var SSRContainer = class extends _SharedContainer2 {
8573
8601
  if (key === "ref") {
8574
8602
  const lastNode = this.getLastNode();
8575
8603
  if (isSignal2(value)) {
8576
- value.value = lastNode;
8604
+ value.value = new DomRef(lastNode.id);
8577
8605
  continue;
8578
8606
  } else if (typeof value === "function") {
8579
- value(lastNode);
8607
+ value(new DomRef(lastNode.id));
8580
8608
  continue;
8581
8609
  }
8582
8610
  }
@@ -8850,8 +8878,8 @@ function resolveManifest(manifest) {
8850
8878
  var Q_FUNCS_PREFIX = 'document["qFuncs_HASH"]=';
8851
8879
 
8852
8880
  // packages/qwik/src/server/scripts.ts
8853
- var QWIK_LOADER_DEFAULT_MINIFIED = '(()=>{var e=Object.defineProperty,t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable,o=(t,n,r)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[n]=r,s=(e,s)=>{for(var a in s||(s={}))n.call(s,a)&&o(e,a,s[a]);if(t)for(var a of t(s))r.call(s,a)&&o(e,a,s[a]);return e};((e,t)=>{const n="__q_context__",r=window,o=new Set,a=new Set([e]),c="replace",i="forEach",l="target",f="getAttribute",p="isConnected",b="qvisible",u="_qwikjson_",h=(e,t)=>Array.from(e.querySelectorAll(t)),y=e=>{const t=[];return a.forEach((n=>t.push(...h(n,e)))),t},d=e=>{S(e),h(e,"[q\\\\:shadowroot]").forEach((e=>{const t=e.shadowRoot;t&&d(t)}))},q=e=>e&&"function"==typeof e.then,m=(e,t,n=t.type)=>{y("[on"+e+"\\\\:"+n+"]")[i]((r=>E(r,e,t,n)))},w=t=>{if(void 0===t[u]){let n=(t===e.documentElement?e.body:t).lastElementChild;for(;n;){if("SCRIPT"===n.tagName&&"qwik/json"===n[f]("type")){t[u]=JSON.parse(n.textContent[c](/\\\\x3C(\\/?script)/gi,"<$1"));break}n=n.previousElementSibling}}},v=(e,t)=>new CustomEvent(e,{detail:t}),E=async(t,r,o,a=o.type)=>{const i="on"+r+":"+a;t.hasAttribute("preventdefault:"+a)&&o.preventDefault();const l=t._qc_,b=l&&l.li.filter((e=>e[0]===i));if(b&&b.length>0){for(const e of b){const n=e[1].getFn([t,o],(()=>t[p]))(o,t),r=o.cancelBubble;q(n)&&await n,r&&o.stopPropagation()}return}const u=t.qDispatchEvent;if(u)return u(o,r);const h=t[f](i);if(h){const r=t.closest("[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])"),a=r[f]("q:base"),i=r[f]("q:version")||"unknown",l=r[f]("q:manifest-hash")||"dev",b=new URL(a,e.baseURI);for(const f of h.split("\\n")){const u=new URL(f,b),h=u.href,y=u.hash[c](/^#?([^?[|]*).*$/,"$1")||"default",d=performance.now();let m,v,E;const _=f.startsWith("#"),A={qBase:a,qManifest:l,qVersion:i,href:h,symbol:y,element:t,reqTime:d};if(_){const t=r.getAttribute("q:instance");m=(e["qFuncs_"+t]||[])[Number.parseInt(y)],m||(v="sync",E=Error("sync handler error for symbol: "+y))}else{const e=u.href.split("#")[0];try{const t=import(e);w(r),m=(await t)[y],m||(v="no-symbol",E=Error(`${y} not in ${e}`))}catch(e){v||(v="async"),E=e}}if(!m){g("qerror",s({importError:v,error:E},A)),console.error(E);break}const k=e[n];if(t[p]){const r=async(a=0)=>{try{e[n]=[t,o,u],_||g("qsymbol",s({},A));const r=m(o,t);q(r)&&await r}catch(e){q(e)&&a<100?e.then((()=>r(a++))):g("qerror",s({error:e},A))}finally{e[n]=k}};r()}}}},g=(t,n)=>{e.dispatchEvent(v(t,n))},_=e=>e[c](/([A-Z])/g,(e=>"-"+e.toLowerCase())),A=async e=>{let t=_(e.type),n=e[l];for(m("-document",e,t);n&&n[f];){const r=E(n,"",e,t);let o=e.cancelBubble;q(r)&&await r,o=o||e.cancelBubble||n.hasAttribute("stoppropagation:"+e.type),n=e.bubbles&&!0!==o?n.parentElement:null}},k=e=>{m("-window",e,_(e.type))},C=()=>{var n;const s=e.readyState;if(!t&&("interactive"==s||"complete"==s)&&(a.forEach(d),t=1,g("qinit"),(null!=(n=r.requestIdleCallback)?n:r.setTimeout).bind(r)((()=>g("qidle"))),o.has(b))){const e=y("[on\\\\:"+b+"]"),t=new IntersectionObserver((e=>{for(const n of e)n.isIntersecting&&(t.unobserve(n[l]),E(n[l],"",v(b,n)))}));e[i]((e=>t.observe(e)))}},O=(e,t,n,r=!1)=>e.addEventListener(t,n,{capture:r,passive:!1}),S=(...e)=>{for(const t of e)"string"==typeof t?o.has(t)||(a.forEach((e=>O(e,t,A,!0))),O(r,t,k,!0),o.add(t)):a.has(t)||(o.forEach((e=>O(t,e,A,!0))),a.add(t))};if(!(n in e)){e[n]=0;const t=r.qwikevents;Array.isArray(t)&&S(...t),r.qwikevents={events:o,roots:a,push:S},O(e,"readystatechange",C),C()}})(document)})()';
8854
- var QWIK_LOADER_DEFAULT_DEBUG = '(() => {\n var __defProp = Object.defineProperty;\n var __getOwnPropSymbols = Object.getOwnPropertySymbols;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __propIsEnum = Object.prototype.propertyIsEnumerable;\n var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: value\n }) : obj[key] = value;\n var __spreadValues = (a, b) => {\n for (var prop in b || (b = {})) {\n __hasOwnProp.call(b, prop) && __defNormalProp(a, prop, b[prop]);\n }\n if (__getOwnPropSymbols) {\n for (var prop of __getOwnPropSymbols(b)) {\n __propIsEnum.call(b, prop) && __defNormalProp(a, prop, b[prop]);\n }\n }\n return a;\n };\n ((doc, hasInitialized) => {\n const Q_CONTEXT = "__q_context__";\n const win = window;\n const events = new Set;\n const roots = new Set([ doc ]);\n const nativeQuerySelectorAll = (root, selector) => Array.from(root.querySelectorAll(selector));\n const querySelectorAll = query => {\n const elements = [];\n roots.forEach((root => elements.push(...nativeQuerySelectorAll(root, query))));\n return elements;\n };\n const findShadowRoots = fragment => {\n processEventOrNode(fragment);\n nativeQuerySelectorAll(fragment, "[q\\\\:shadowroot]").forEach((parent => {\n const shadowRoot = parent.shadowRoot;\n shadowRoot && findShadowRoots(shadowRoot);\n }));\n };\n const isPromise = promise => promise && "function" == typeof promise.then;\n const broadcast = (infix, ev, type = ev.type) => {\n querySelectorAll("[on" + infix + "\\\\:" + type + "]").forEach((el => dispatch(el, infix, ev, type)));\n };\n const resolveContainer = containerEl => {\n if (void 0 === containerEl._qwikjson_) {\n let script = (containerEl === doc.documentElement ? doc.body : containerEl).lastElementChild;\n while (script) {\n if ("SCRIPT" === script.tagName && "qwik/json" === script.getAttribute("type")) {\n containerEl._qwikjson_ = JSON.parse(script.textContent.replace(/\\\\x3C(\\/?script)/gi, "<$1"));\n break;\n }\n script = script.previousElementSibling;\n }\n }\n };\n const createEvent = (eventName, detail) => new CustomEvent(eventName, {\n detail: detail\n });\n const dispatch = async (element, scope, ev, eventName = ev.type) => {\n const attrName = "on" + scope + ":" + eventName;\n element.hasAttribute("preventdefault:" + eventName) && ev.preventDefault();\n const ctx = element._qc_;\n const relevantListeners = ctx && ctx.li.filter((li => li[0] === attrName));\n if (relevantListeners && relevantListeners.length > 0) {\n for (const listener of relevantListeners) {\n const results = listener[1].getFn([ element, ev ], (() => element.isConnected))(ev, element);\n const cancelBubble = ev.cancelBubble;\n isPromise(results) && await results;\n cancelBubble && ev.stopPropagation();\n }\n return;\n }\n const qDispatchEvent = element.qDispatchEvent;\n if (qDispatchEvent) {\n return qDispatchEvent(ev, scope);\n }\n const attrValue = element.getAttribute(attrName);\n if (attrValue) {\n const container = element.closest("[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])");\n const qBase = container.getAttribute("q:base");\n const qVersion = container.getAttribute("q:version") || "unknown";\n const qManifest = container.getAttribute("q:manifest-hash") || "dev";\n const base = new URL(qBase, doc.baseURI);\n for (const qrl of attrValue.split("\\n")) {\n const url = new URL(qrl, base);\n const href = url.href;\n const symbol = url.hash.replace(/^#?([^?[|]*).*$/, "$1") || "default";\n const reqTime = performance.now();\n let handler;\n let importError;\n let error;\n const isSync = qrl.startsWith("#");\n const eventData = {\n qBase: qBase,\n qManifest: qManifest,\n qVersion: qVersion,\n href: href,\n symbol: symbol,\n element: element,\n reqTime: reqTime\n };\n if (isSync) {\n const hash = container.getAttribute("q:instance");\n handler = (doc["qFuncs_" + hash] || [])[Number.parseInt(symbol)];\n if (!handler) {\n importError = "sync";\n error = new Error("sync handler error for symbol: " + symbol);\n }\n } else {\n const uri = url.href.split("#")[0];\n try {\n const module = import(\n uri);\n resolveContainer(container);\n handler = (await module)[symbol];\n if (!handler) {\n importError = "no-symbol";\n error = new Error(`${symbol} not in ${uri}`);\n }\n } catch (err) {\n importError || (importError = "async");\n error = err;\n }\n }\n if (!handler) {\n emitEvent("qerror", __spreadValues({\n importError: importError,\n error: error\n }, eventData));\n console.error(error);\n break;\n }\n const previousCtx = doc[Q_CONTEXT];\n if (element.isConnected) {\n const handleEvent = async (retryCount = 0) => {\n try {\n doc[Q_CONTEXT] = [ element, ev, url ];\n isSync || emitEvent("qsymbol", __spreadValues({}, eventData));\n const results = handler(ev, element);\n isPromise(results) && await results;\n } catch (error2) {\n isPromise(error2) && retryCount < 100 ? error2.then((() => handleEvent(retryCount++))) : emitEvent("qerror", __spreadValues({\n error: error2\n }, eventData));\n } finally {\n doc[Q_CONTEXT] = previousCtx;\n }\n };\n handleEvent();\n }\n }\n }\n };\n const emitEvent = (eventName, detail) => {\n doc.dispatchEvent(createEvent(eventName, detail));\n };\n const camelToKebab = str => str.replace(/([A-Z])/g, (a => "-" + a.toLowerCase()));\n const processDocumentEvent = async ev => {\n let type = camelToKebab(ev.type);\n let element = ev.target;\n broadcast("-document", ev, type);\n while (element && element.getAttribute) {\n const results = dispatch(element, "", ev, type);\n let cancelBubble = ev.cancelBubble;\n isPromise(results) && await results;\n cancelBubble = cancelBubble || ev.cancelBubble || element.hasAttribute("stoppropagation:" + ev.type);\n element = ev.bubbles && !0 !== cancelBubble ? element.parentElement : null;\n }\n };\n const processWindowEvent = ev => {\n broadcast("-window", ev, camelToKebab(ev.type));\n };\n const processReadyStateChange = () => {\n var _a;\n const readyState = doc.readyState;\n if (!hasInitialized && ("interactive" == readyState || "complete" == readyState)) {\n roots.forEach(findShadowRoots);\n hasInitialized = 1;\n emitEvent("qinit");\n (null != (_a = win.requestIdleCallback) ? _a : win.setTimeout).bind(win)((() => emitEvent("qidle")));\n if (events.has("qvisible")) {\n const results = querySelectorAll("[on\\\\:qvisible]");\n const observer = new IntersectionObserver((entries => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n observer.unobserve(entry.target);\n dispatch(entry.target, "", createEvent("qvisible", entry));\n }\n }\n }));\n results.forEach((el => observer.observe(el)));\n }\n }\n };\n const addEventListener = (el, eventName, handler, capture = !1) => el.addEventListener(eventName, handler, {\n capture: capture,\n passive: !1\n });\n const processEventOrNode = (...eventNames) => {\n for (const eventNameOrNode of eventNames) {\n if ("string" == typeof eventNameOrNode) {\n if (!events.has(eventNameOrNode)) {\n roots.forEach((root => addEventListener(root, eventNameOrNode, processDocumentEvent, !0)));\n addEventListener(win, eventNameOrNode, processWindowEvent, !0);\n events.add(eventNameOrNode);\n }\n } else if (!roots.has(eventNameOrNode)) {\n events.forEach((eventName => addEventListener(eventNameOrNode, eventName, processDocumentEvent, !0)));\n roots.add(eventNameOrNode);\n }\n }\n };\n if (!(Q_CONTEXT in doc)) {\n doc[Q_CONTEXT] = 0;\n const qwikevents = win.qwikevents;\n Array.isArray(qwikevents) && processEventOrNode(...qwikevents);\n win.qwikevents = {\n events: events,\n roots: roots,\n push: processEventOrNode\n };\n addEventListener(doc, "readystatechange", processReadyStateChange);\n processReadyStateChange();\n }\n })(document);\n})()';
8881
+ var QWIK_LOADER_DEFAULT_MINIFIED = '(()=>{var e=Object.defineProperty,t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable,r=(t,n,o)=>n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[n]=o,s=(e,s)=>{for(var a in s||(s={}))n.call(s,a)&&r(e,a,s[a]);if(t)for(var a of t(s))o.call(s,a)&&r(e,a,s[a]);return e};((e,t)=>{const n="__q_context__",o=window,r=new Set,a=new Set([e]),i="replace",c="forEach",l="target",f="getAttribute",p="isConnected",b="qvisible",u="_qwikjson_",h=(e,t)=>Array.from(e.querySelectorAll(t)),y=e=>{const t=[];return a.forEach((n=>t.push(...h(n,e)))),t},d=e=>{S(e),h(e,"[q\\\\:shadowroot]").forEach((e=>{const t=e.shadowRoot;t&&d(t)}))},q=e=>e&&"function"==typeof e.then,m=(e,t,n=t.type)=>{y("[on"+e+"\\\\:"+n+"]")[c]((o=>g(o,e,t,n)))},w=t=>{if(void 0===t[u]){let n=(t===e.documentElement?e.body:t).lastElementChild;for(;n;){if("SCRIPT"===n.tagName&&"qwik/json"===n[f]("type")){t[u]=JSON.parse(n.textContent[i](/\\\\x3C(\\/?script)/gi,"<$1"));break}n=n.previousElementSibling}}},v=(e,t)=>new CustomEvent(e,{detail:t}),g=async(t,o,r,a=r.type)=>{const c="on"+o+":"+a;t.hasAttribute("preventdefault:"+a)&&r.preventDefault(),t.hasAttribute("stoppropagation:"+a)&&r.stopPropagation();const l=t._qc_,b=l&&l.li.filter((e=>e[0]===c));if(b&&b.length>0){for(const e of b){const n=e[1].getFn([t,r],(()=>t[p]))(r,t),o=r.cancelBubble;q(n)&&await n,o&&r.stopPropagation()}return}const u=t.qDispatchEvent;if(u)return u(r,o);const h=t[f](c);if(h){const o=t.closest("[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])"),a=o[f]("q:base"),c=o[f]("q:version")||"unknown",l=o[f]("q:manifest-hash")||"dev",b=new URL(a,e.baseURI);for(const f of h.split("\\n")){const u=new URL(f,b),h=u.href,y=u.hash[i](/^#?([^?[|]*).*$/,"$1")||"default",d=performance.now();let m,v,g;const A=f.startsWith("#"),_={qBase:a,qManifest:l,qVersion:c,href:h,symbol:y,element:t,reqTime:d};if(A){const t=o.getAttribute("q:instance");m=(e["qFuncs_"+t]||[])[Number.parseInt(y)],m||(v="sync",g=Error("sync handler error for symbol: "+y))}else{const e=u.href.split("#")[0];try{const t=import(e);w(o),m=(await t)[y],m||(v="no-symbol",g=Error(`${y} not in ${e}`))}catch(e){v||(v="async"),g=e}}if(!m){E("qerror",s({importError:v,error:g},_)),console.error(g);break}const k=e[n];if(t[p]){const o=async(a=0)=>{try{e[n]=[t,r,u],A||E("qsymbol",s({},_));const o=m(r,t);q(o)&&await o}catch(e){q(e)&&a<100?e.then((()=>o(a++))):E("qerror",s({error:e},_))}finally{e[n]=k}};o()}}}},E=(t,n)=>{e.dispatchEvent(v(t,n))},A=e=>e[i](/([A-Z])/g,(e=>"-"+e.toLowerCase())),_=async e=>{let t=A(e.type),n=e[l];for(m("-document",e,t);n&&n[f];){const o=g(n,"",e,t);let r=e.cancelBubble;q(o)&&await o,r=r||e.cancelBubble||n.hasAttribute("stoppropagation:"+e.type),n=e.bubbles&&!0!==r?n.parentElement:null}},k=e=>{m("-window",e,A(e.type))},C=()=>{var n;const s=e.readyState;if(!t&&("interactive"==s||"complete"==s)&&(a.forEach(d),t=1,E("qinit"),(null!=(n=o.requestIdleCallback)?n:o.setTimeout).bind(o)((()=>E("qidle"))),r.has(b))){const e=y("[on\\\\:"+b+"]"),t=new IntersectionObserver((e=>{for(const n of e)n.isIntersecting&&(t.unobserve(n[l]),g(n[l],"",v(b,n)))}));e[c]((e=>t.observe(e)))}},O=(e,t,n,o=!1)=>e.addEventListener(t,n,{capture:o,passive:!1}),S=(...e)=>{for(const t of e)"string"==typeof t?r.has(t)||(a.forEach((e=>O(e,t,_,!0))),O(o,t,k,!0),r.add(t)):a.has(t)||(r.forEach((e=>O(t,e,_,!0))),a.add(t))};if(!(n in e)){e[n]=0;const t=o.qwikevents;Array.isArray(t)&&S(...t),o.qwikevents={events:r,roots:a,push:S},O(e,"readystatechange",C),C()}})(document)})()';
8882
+ var QWIK_LOADER_DEFAULT_DEBUG = '(() => {\n var __defProp = Object.defineProperty;\n var __getOwnPropSymbols = Object.getOwnPropertySymbols;\n var __hasOwnProp = Object.prototype.hasOwnProperty;\n var __propIsEnum = Object.prototype.propertyIsEnumerable;\n var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {\n enumerable: !0,\n configurable: !0,\n writable: !0,\n value: value\n }) : obj[key] = value;\n var __spreadValues = (a, b) => {\n for (var prop in b || (b = {})) {\n __hasOwnProp.call(b, prop) && __defNormalProp(a, prop, b[prop]);\n }\n if (__getOwnPropSymbols) {\n for (var prop of __getOwnPropSymbols(b)) {\n __propIsEnum.call(b, prop) && __defNormalProp(a, prop, b[prop]);\n }\n }\n return a;\n };\n ((doc, hasInitialized) => {\n const Q_CONTEXT = "__q_context__";\n const win = window;\n const events = new Set;\n const roots = new Set([ doc ]);\n const nativeQuerySelectorAll = (root, selector) => Array.from(root.querySelectorAll(selector));\n const querySelectorAll = query => {\n const elements = [];\n roots.forEach((root => elements.push(...nativeQuerySelectorAll(root, query))));\n return elements;\n };\n const findShadowRoots = fragment => {\n processEventOrNode(fragment);\n nativeQuerySelectorAll(fragment, "[q\\\\:shadowroot]").forEach((parent => {\n const shadowRoot = parent.shadowRoot;\n shadowRoot && findShadowRoots(shadowRoot);\n }));\n };\n const isPromise = promise => promise && "function" == typeof promise.then;\n const broadcast = (infix, ev, type = ev.type) => {\n querySelectorAll("[on" + infix + "\\\\:" + type + "]").forEach((el => dispatch(el, infix, ev, type)));\n };\n const resolveContainer = containerEl => {\n if (void 0 === containerEl._qwikjson_) {\n let script = (containerEl === doc.documentElement ? doc.body : containerEl).lastElementChild;\n while (script) {\n if ("SCRIPT" === script.tagName && "qwik/json" === script.getAttribute("type")) {\n containerEl._qwikjson_ = JSON.parse(script.textContent.replace(/\\\\x3C(\\/?script)/gi, "<$1"));\n break;\n }\n script = script.previousElementSibling;\n }\n }\n };\n const createEvent = (eventName, detail) => new CustomEvent(eventName, {\n detail: detail\n });\n const dispatch = async (element, scope, ev, eventName = ev.type) => {\n const attrName = "on" + scope + ":" + eventName;\n element.hasAttribute("preventdefault:" + eventName) && ev.preventDefault();\n element.hasAttribute("stoppropagation:" + eventName) && ev.stopPropagation();\n const ctx = element._qc_;\n const relevantListeners = ctx && ctx.li.filter((li => li[0] === attrName));\n if (relevantListeners && relevantListeners.length > 0) {\n for (const listener of relevantListeners) {\n const results = listener[1].getFn([ element, ev ], (() => element.isConnected))(ev, element);\n const cancelBubble = ev.cancelBubble;\n isPromise(results) && await results;\n cancelBubble && ev.stopPropagation();\n }\n return;\n }\n const qDispatchEvent = element.qDispatchEvent;\n if (qDispatchEvent) {\n return qDispatchEvent(ev, scope);\n }\n const attrValue = element.getAttribute(attrName);\n if (attrValue) {\n const container = element.closest("[q\\\\:container]:not([q\\\\:container=html]):not([q\\\\:container=text])");\n const qBase = container.getAttribute("q:base");\n const qVersion = container.getAttribute("q:version") || "unknown";\n const qManifest = container.getAttribute("q:manifest-hash") || "dev";\n const base = new URL(qBase, doc.baseURI);\n for (const qrl of attrValue.split("\\n")) {\n const url = new URL(qrl, base);\n const href = url.href;\n const symbol = url.hash.replace(/^#?([^?[|]*).*$/, "$1") || "default";\n const reqTime = performance.now();\n let handler;\n let importError;\n let error;\n const isSync = qrl.startsWith("#");\n const eventData = {\n qBase: qBase,\n qManifest: qManifest,\n qVersion: qVersion,\n href: href,\n symbol: symbol,\n element: element,\n reqTime: reqTime\n };\n if (isSync) {\n const hash = container.getAttribute("q:instance");\n handler = (doc["qFuncs_" + hash] || [])[Number.parseInt(symbol)];\n if (!handler) {\n importError = "sync";\n error = new Error("sync handler error for symbol: " + symbol);\n }\n } else {\n const uri = url.href.split("#")[0];\n try {\n const module = import(\n uri);\n resolveContainer(container);\n handler = (await module)[symbol];\n if (!handler) {\n importError = "no-symbol";\n error = new Error(`${symbol} not in ${uri}`);\n }\n } catch (err) {\n importError || (importError = "async");\n error = err;\n }\n }\n if (!handler) {\n emitEvent("qerror", __spreadValues({\n importError: importError,\n error: error\n }, eventData));\n console.error(error);\n break;\n }\n const previousCtx = doc[Q_CONTEXT];\n if (element.isConnected) {\n const handleEvent = async (retryCount = 0) => {\n try {\n doc[Q_CONTEXT] = [ element, ev, url ];\n isSync || emitEvent("qsymbol", __spreadValues({}, eventData));\n const results = handler(ev, element);\n isPromise(results) && await results;\n } catch (error2) {\n isPromise(error2) && retryCount < 100 ? error2.then((() => handleEvent(retryCount++))) : emitEvent("qerror", __spreadValues({\n error: error2\n }, eventData));\n } finally {\n doc[Q_CONTEXT] = previousCtx;\n }\n };\n handleEvent();\n }\n }\n }\n };\n const emitEvent = (eventName, detail) => {\n doc.dispatchEvent(createEvent(eventName, detail));\n };\n const camelToKebab = str => str.replace(/([A-Z])/g, (a => "-" + a.toLowerCase()));\n const processDocumentEvent = async ev => {\n let type = camelToKebab(ev.type);\n let element = ev.target;\n broadcast("-document", ev, type);\n while (element && element.getAttribute) {\n const results = dispatch(element, "", ev, type);\n let cancelBubble = ev.cancelBubble;\n isPromise(results) && await results;\n cancelBubble = cancelBubble || ev.cancelBubble || element.hasAttribute("stoppropagation:" + ev.type);\n element = ev.bubbles && !0 !== cancelBubble ? element.parentElement : null;\n }\n };\n const processWindowEvent = ev => {\n broadcast("-window", ev, camelToKebab(ev.type));\n };\n const processReadyStateChange = () => {\n var _a;\n const readyState = doc.readyState;\n if (!hasInitialized && ("interactive" == readyState || "complete" == readyState)) {\n roots.forEach(findShadowRoots);\n hasInitialized = 1;\n emitEvent("qinit");\n (null != (_a = win.requestIdleCallback) ? _a : win.setTimeout).bind(win)((() => emitEvent("qidle")));\n if (events.has("qvisible")) {\n const results = querySelectorAll("[on\\\\:qvisible]");\n const observer = new IntersectionObserver((entries => {\n for (const entry of entries) {\n if (entry.isIntersecting) {\n observer.unobserve(entry.target);\n dispatch(entry.target, "", createEvent("qvisible", entry));\n }\n }\n }));\n results.forEach((el => observer.observe(el)));\n }\n }\n };\n const addEventListener = (el, eventName, handler, capture = !1) => el.addEventListener(eventName, handler, {\n capture: capture,\n passive: !1\n });\n const processEventOrNode = (...eventNames) => {\n for (const eventNameOrNode of eventNames) {\n if ("string" == typeof eventNameOrNode) {\n if (!events.has(eventNameOrNode)) {\n roots.forEach((root => addEventListener(root, eventNameOrNode, processDocumentEvent, !0)));\n addEventListener(win, eventNameOrNode, processWindowEvent, !0);\n events.add(eventNameOrNode);\n }\n } else if (!roots.has(eventNameOrNode)) {\n events.forEach((eventName => addEventListener(eventNameOrNode, eventName, processDocumentEvent, !0)));\n roots.add(eventNameOrNode);\n }\n }\n };\n if (!(Q_CONTEXT in doc)) {\n doc[Q_CONTEXT] = 0;\n const qwikevents = win.qwikevents;\n Array.isArray(qwikevents) && processEventOrNode(...qwikevents);\n win.qwikevents = {\n events: events,\n roots: roots,\n push: processEventOrNode\n };\n addEventListener(doc, "readystatechange", processReadyStateChange);\n processReadyStateChange();\n }\n })(document);\n})()';
8855
8883
  function getQwikLoaderScript(opts = {}) {
8856
8884
  return opts.debug ? QWIK_LOADER_DEFAULT_DEBUG : QWIK_LOADER_DEFAULT_MINIFIED;
8857
8885
  }
@@ -9,12 +9,14 @@
9
9
  ],
10
10
  "nextSteps": {
11
11
  "lines": [
12
+ " Please add `optimizeDeps: { include: ['@auth/core'] }`",
13
+ " to your vite.config.ts file.",
12
14
  " Have a look at the docs for more info: ",
13
15
  " https://qwik.dev/docs/integrations/authjs/"
14
16
  ]
15
17
  }
16
18
  },
17
19
  "devDependencies": {
18
- "@auth/qwik": "0.2.2"
20
+ "@auth/qwik": "0.5.4"
19
21
  }
20
22
  }
@@ -22,7 +22,8 @@
22
22
  " Check out the Drizzle docs for more info:",
23
23
  " - https://orm.drizzle.team/docs/overview"
24
24
  ]
25
- }
25
+ },
26
+ "alwaysInRoot": []
26
27
  },
27
28
  "devDependencies": {
28
29
  "@types/better-sqlite3": "^7.6.9",
@@ -7,6 +7,9 @@
7
7
  "docs": [
8
8
  "https://qwik.dev/integrations/integration/postcss/",
9
9
  "https://github.com/postcss/postcss-load-config"
10
+ ],
11
+ "alwaysInRoot": [
12
+ ".vscode"
10
13
  ]
11
14
  },
12
15
  "devDependencies": {
@@ -20,7 +20,8 @@
20
20
  " Check out the Prisma docs for more info:",
21
21
  " - https://www.prisma.io/docs/getting-started"
22
22
  ]
23
- }
23
+ },
24
+ "alwaysInRoot": []
24
25
  },
25
26
  "devDependencies": {
26
27
  "@prisma/client": "5.3.1",
@@ -7,6 +7,9 @@
7
7
  "docs": [
8
8
  "https://qwik.dev/integrations/integration/tailwind/",
9
9
  "https://tailwindcss.com/docs/utility-first"
10
+ ],
11
+ "alwaysInRoot": [
12
+ ".vscode"
10
13
  ]
11
14
  },
12
15
  "devDependencies": {
@@ -19,7 +19,10 @@
19
19
  " To get an authentication token for the database, run:",
20
20
  " turso db tokens create <db-name>"
21
21
  ]
22
- }
22
+ },
23
+ "alwaysInRoot": [
24
+ ".env.local"
25
+ ]
23
26
  },
24
27
  "dependencies": {
25
28
  "@libsql/client": "latest"