houdini 1.0.0-next.9 → 1.0.1

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 (62) hide show
  1. package/README.md +4 -1
  2. package/build/cmd-cjs/index.js +2368 -151
  3. package/build/cmd-esm/index.js +2368 -151
  4. package/build/codegen/generators/runtime/runtimeConfig.d.ts +7 -0
  5. package/build/codegen/transforms/fragmentVariables.d.ts +2 -1
  6. package/build/codegen/utils/flattenSelections.d.ts +1 -1
  7. package/build/codegen/validators/typeCheck.d.ts +1 -0
  8. package/build/codegen-cjs/index.js +2962 -719
  9. package/build/codegen-esm/index.js +2962 -719
  10. package/build/lib/config.d.ts +4 -6
  11. package/build/lib/types.d.ts +18 -15
  12. package/build/lib-cjs/index.js +3159 -171
  13. package/build/lib-esm/index.js +3152 -171
  14. package/build/runtime/cache/storage.d.ts +18 -15
  15. package/build/runtime/client/documentStore.d.ts +15 -13
  16. package/build/runtime/client/utils/documentPlugins.d.ts +2 -2
  17. package/build/runtime/imports/pluginConfig.d.ts +3 -0
  18. package/build/runtime/lib/config.d.ts +2 -2
  19. package/build/runtime/lib/scalars.d.ts +1 -1
  20. package/build/runtime/lib/types.d.ts +41 -42
  21. package/build/runtime-cjs/cache/storage.d.ts +18 -15
  22. package/build/runtime-cjs/cache/storage.js +9 -11
  23. package/build/runtime-cjs/client/documentStore.d.ts +15 -13
  24. package/build/runtime-cjs/client/documentStore.js +10 -7
  25. package/build/runtime-cjs/client/index.js +3 -0
  26. package/build/runtime-cjs/client/plugins/cache.js +3 -3
  27. package/build/runtime-cjs/client/plugins/fetch.js +2 -2
  28. package/build/runtime-cjs/client/plugins/query.js +1 -1
  29. package/build/runtime-cjs/client/plugins/subscription.js +2 -2
  30. package/build/runtime-cjs/client/utils/documentPlugins.d.ts +2 -2
  31. package/build/runtime-cjs/imports/pluginConfig.d.ts +3 -0
  32. package/build/runtime-cjs/imports/pluginConfig.js +27 -0
  33. package/build/runtime-cjs/lib/config.d.ts +2 -2
  34. package/build/runtime-cjs/lib/config.js +11 -1
  35. package/build/runtime-cjs/lib/scalars.d.ts +1 -1
  36. package/build/runtime-cjs/lib/scalars.js +13 -2
  37. package/build/runtime-cjs/lib/types.d.ts +41 -42
  38. package/build/runtime-cjs/lib/types.js +26 -30
  39. package/build/runtime-esm/cache/storage.d.ts +18 -15
  40. package/build/runtime-esm/cache/storage.js +9 -11
  41. package/build/runtime-esm/client/documentStore.d.ts +15 -13
  42. package/build/runtime-esm/client/documentStore.js +10 -7
  43. package/build/runtime-esm/client/index.js +5 -2
  44. package/build/runtime-esm/client/plugins/cache.js +3 -3
  45. package/build/runtime-esm/client/plugins/fetch.js +2 -2
  46. package/build/runtime-esm/client/plugins/query.js +1 -1
  47. package/build/runtime-esm/client/plugins/subscription.js +2 -2
  48. package/build/runtime-esm/client/utils/documentPlugins.d.ts +2 -2
  49. package/build/runtime-esm/imports/pluginConfig.d.ts +3 -0
  50. package/build/runtime-esm/imports/pluginConfig.js +5 -0
  51. package/build/runtime-esm/lib/config.d.ts +2 -2
  52. package/build/runtime-esm/lib/config.js +11 -1
  53. package/build/runtime-esm/lib/scalars.d.ts +1 -1
  54. package/build/runtime-esm/lib/scalars.js +13 -2
  55. package/build/runtime-esm/lib/types.d.ts +41 -42
  56. package/build/runtime-esm/lib/types.js +26 -30
  57. package/build/test-cjs/index.js +2346 -128
  58. package/build/test-esm/index.js +2346 -128
  59. package/build/vite/houdini.d.ts +2 -0
  60. package/build/vite-cjs/index.js +2371 -152
  61. package/build/vite-esm/index.js +2371 -152
  62. package/package.json +2 -2
@@ -5106,7 +5106,7 @@ var require_definition = __commonJS({
5106
5106
  exports.assertInterfaceType = assertInterfaceType;
5107
5107
  exports.isUnionType = isUnionType13;
5108
5108
  exports.assertUnionType = assertUnionType;
5109
- exports.isEnumType = isEnumType11;
5109
+ exports.isEnumType = isEnumType12;
5110
5110
  exports.assertEnumType = assertEnumType;
5111
5111
  exports.isInputObjectType = isInputObjectType8;
5112
5112
  exports.assertInputObjectType = assertInputObjectType;
@@ -5177,7 +5177,7 @@ var require_definition = __commonJS({
5177
5177
  return Constructor;
5178
5178
  }
5179
5179
  function isType(type) {
5180
- return isScalarType13(type) || isObjectType12(type) || isInterfaceType12(type) || isUnionType13(type) || isEnumType11(type) || isInputObjectType8(type) || isListType8(type) || isNonNullType10(type);
5180
+ return isScalarType13(type) || isObjectType12(type) || isInterfaceType12(type) || isUnionType13(type) || isEnumType12(type) || isInputObjectType8(type) || isListType8(type) || isNonNullType10(type);
5181
5181
  }
5182
5182
  function assertType(type) {
5183
5183
  if (!isType(type)) {
@@ -5221,11 +5221,11 @@ var require_definition = __commonJS({
5221
5221
  }
5222
5222
  return type;
5223
5223
  }
5224
- function isEnumType11(type) {
5224
+ function isEnumType12(type) {
5225
5225
  return (0, _instanceOf.default)(type, GraphQLEnumType4);
5226
5226
  }
5227
5227
  function assertEnumType(type) {
5228
- if (!isEnumType11(type)) {
5228
+ if (!isEnumType12(type)) {
5229
5229
  throw new Error("Expected ".concat((0, _inspect.default)(type), " to be a GraphQL Enum type."));
5230
5230
  }
5231
5231
  return type;
@@ -5258,7 +5258,7 @@ var require_definition = __commonJS({
5258
5258
  return type;
5259
5259
  }
5260
5260
  function isInputType(type) {
5261
- return isScalarType13(type) || isEnumType11(type) || isInputObjectType8(type) || isWrappingType(type) && isInputType(type.ofType);
5261
+ return isScalarType13(type) || isEnumType12(type) || isInputObjectType8(type) || isWrappingType(type) && isInputType(type.ofType);
5262
5262
  }
5263
5263
  function assertInputType(type) {
5264
5264
  if (!isInputType(type)) {
@@ -5267,7 +5267,7 @@ var require_definition = __commonJS({
5267
5267
  return type;
5268
5268
  }
5269
5269
  function isOutputType(type) {
5270
- return isScalarType13(type) || isObjectType12(type) || isInterfaceType12(type) || isUnionType13(type) || isEnumType11(type) || isWrappingType(type) && isOutputType(type.ofType);
5270
+ return isScalarType13(type) || isObjectType12(type) || isInterfaceType12(type) || isUnionType13(type) || isEnumType12(type) || isWrappingType(type) && isOutputType(type.ofType);
5271
5271
  }
5272
5272
  function assertOutputType(type) {
5273
5273
  if (!isOutputType(type)) {
@@ -5276,7 +5276,7 @@ var require_definition = __commonJS({
5276
5276
  return type;
5277
5277
  }
5278
5278
  function isLeafType4(type) {
5279
- return isScalarType13(type) || isEnumType11(type);
5279
+ return isScalarType13(type) || isEnumType12(type);
5280
5280
  }
5281
5281
  function assertLeafType(type) {
5282
5282
  if (!isLeafType4(type)) {
@@ -5364,7 +5364,7 @@ var require_definition = __commonJS({
5364
5364
  }
5365
5365
  }
5366
5366
  function isNamedType4(type) {
5367
- return isScalarType13(type) || isObjectType12(type) || isInterfaceType12(type) || isUnionType13(type) || isEnumType11(type) || isInputObjectType8(type);
5367
+ return isScalarType13(type) || isObjectType12(type) || isInterfaceType12(type) || isUnionType13(type) || isEnumType12(type) || isInputObjectType8(type);
5368
5368
  }
5369
5369
  function assertNamedType(type) {
5370
5370
  if (!isNamedType4(type)) {
@@ -22424,42 +22424,42 @@ var require_node = __commonJS({
22424
22424
  return Link2;
22425
22425
  }(events_1.EventEmitter);
22426
22426
  exports.Link = Link;
22427
- var File3 = function() {
22428
- function File4(link, node, flags, fd) {
22427
+ var File4 = function() {
22428
+ function File5(link, node, flags, fd) {
22429
22429
  this.position = 0;
22430
22430
  this.link = link;
22431
22431
  this.node = node;
22432
22432
  this.flags = flags;
22433
22433
  this.fd = fd;
22434
22434
  }
22435
- File4.prototype.getString = function(encoding) {
22435
+ File5.prototype.getString = function(encoding) {
22436
22436
  if (encoding === void 0) {
22437
22437
  encoding = "utf8";
22438
22438
  }
22439
22439
  return this.node.getString();
22440
22440
  };
22441
- File4.prototype.setString = function(str) {
22441
+ File5.prototype.setString = function(str) {
22442
22442
  this.node.setString(str);
22443
22443
  };
22444
- File4.prototype.getBuffer = function() {
22444
+ File5.prototype.getBuffer = function() {
22445
22445
  return this.node.getBuffer();
22446
22446
  };
22447
- File4.prototype.setBuffer = function(buf) {
22447
+ File5.prototype.setBuffer = function(buf) {
22448
22448
  this.node.setBuffer(buf);
22449
22449
  };
22450
- File4.prototype.getSize = function() {
22450
+ File5.prototype.getSize = function() {
22451
22451
  return this.node.getSize();
22452
22452
  };
22453
- File4.prototype.truncate = function(len) {
22453
+ File5.prototype.truncate = function(len) {
22454
22454
  this.node.truncate(len);
22455
22455
  };
22456
- File4.prototype.seekTo = function(position) {
22456
+ File5.prototype.seekTo = function(position) {
22457
22457
  this.position = position;
22458
22458
  };
22459
- File4.prototype.stats = function() {
22459
+ File5.prototype.stats = function() {
22460
22460
  return Stats_1.default.build(this.node);
22461
22461
  };
22462
- File4.prototype.write = function(buf, offset, length, position) {
22462
+ File5.prototype.write = function(buf, offset, length, position) {
22463
22463
  if (offset === void 0) {
22464
22464
  offset = 0;
22465
22465
  }
@@ -22474,7 +22474,7 @@ var require_node = __commonJS({
22474
22474
  this.position = position + bytes;
22475
22475
  return bytes;
22476
22476
  };
22477
- File4.prototype.read = function(buf, offset, length, position) {
22477
+ File5.prototype.read = function(buf, offset, length, position) {
22478
22478
  if (offset === void 0) {
22479
22479
  offset = 0;
22480
22480
  }
@@ -22487,15 +22487,15 @@ var require_node = __commonJS({
22487
22487
  this.position = position + bytes;
22488
22488
  return bytes;
22489
22489
  };
22490
- File4.prototype.chmod = function(perm) {
22490
+ File5.prototype.chmod = function(perm) {
22491
22491
  this.node.chmod(perm);
22492
22492
  };
22493
- File4.prototype.chown = function(uid, gid) {
22493
+ File5.prototype.chown = function(uid, gid) {
22494
22494
  this.node.chown(uid, gid);
22495
22495
  };
22496
- return File4;
22496
+ return File5;
22497
22497
  }();
22498
- exports.File = File3;
22498
+ exports.File = File4;
22499
22499
  }
22500
22500
  });
22501
22501
 
@@ -23181,20 +23181,20 @@ var require_volume = __commonJS({
23181
23181
  }
23182
23182
  function flattenJSON(nestedJSON) {
23183
23183
  var flatJSON = {};
23184
- function flatten(pathPrefix, node) {
23184
+ function flatten2(pathPrefix, node) {
23185
23185
  for (var path2 in node) {
23186
23186
  var contentOrNode = node[path2];
23187
23187
  var joinedPath = join3(pathPrefix, path2);
23188
23188
  if (typeof contentOrNode === "string") {
23189
23189
  flatJSON[joinedPath] = contentOrNode;
23190
23190
  } else if (typeof contentOrNode === "object" && contentOrNode !== null && Object.keys(contentOrNode).length > 0) {
23191
- flatten(joinedPath, contentOrNode);
23191
+ flatten2(joinedPath, contentOrNode);
23192
23192
  } else {
23193
23193
  flatJSON[joinedPath] = null;
23194
23194
  }
23195
23195
  }
23196
23196
  }
23197
- flatten("", nestedJSON);
23197
+ flatten2("", nestedJSON);
23198
23198
  return flatJSON;
23199
23199
  }
23200
23200
  var Volume = function() {
@@ -28604,9 +28604,9 @@ var require_streams = __commonJS({
28604
28604
  }
28605
28605
  }
28606
28606
  try {
28607
- const { Blob: Blob3 } = __require("buffer");
28608
- if (Blob3 && !Blob3.prototype.stream) {
28609
- Blob3.prototype.stream = function name(params) {
28607
+ const { Blob: Blob4 } = __require("buffer");
28608
+ if (Blob4 && !Blob4.prototype.stream) {
28609
+ Blob4.prototype.stream = function name(params) {
28610
28610
  let position = 0;
28611
28611
  const blob = this;
28612
28612
  return new ReadableStream({
@@ -28657,12 +28657,12 @@ async function* toIterator(parts, clone2 = true) {
28657
28657
  }
28658
28658
  }
28659
28659
  }
28660
- var import_streams, POOL_SIZE, _Blob, Blob2, fetch_blob_default;
28660
+ var import_streams, POOL_SIZE, _Blob, Blob3, fetch_blob_default;
28661
28661
  var init_fetch_blob = __esm({
28662
28662
  "../../node_modules/.pnpm/fetch-blob@3.2.0/node_modules/fetch-blob/index.js"() {
28663
28663
  import_streams = __toESM(require_streams(), 1);
28664
28664
  POOL_SIZE = 65536;
28665
- _Blob = class Blob {
28665
+ _Blob = class Blob2 {
28666
28666
  #parts = [];
28667
28667
  #type = "";
28668
28668
  #size = 0;
@@ -28686,7 +28686,7 @@ var init_fetch_blob = __esm({
28686
28686
  part = new Uint8Array(element.buffer.slice(element.byteOffset, element.byteOffset + element.byteLength));
28687
28687
  } else if (element instanceof ArrayBuffer) {
28688
28688
  part = new Uint8Array(element.slice(0));
28689
- } else if (element instanceof Blob) {
28689
+ } else if (element instanceof Blob2) {
28690
28690
  part = element;
28691
28691
  } else {
28692
28692
  part = encoder.encode(`${element}`);
@@ -28765,7 +28765,7 @@ var init_fetch_blob = __esm({
28765
28765
  relativeStart = 0;
28766
28766
  }
28767
28767
  }
28768
- const blob = new Blob([], { type: String(type).toLowerCase() });
28768
+ const blob = new Blob2([], { type: String(type).toLowerCase() });
28769
28769
  blob.#size = span;
28770
28770
  blob.#parts = blobParts;
28771
28771
  return blob;
@@ -28782,17 +28782,17 @@ var init_fetch_blob = __esm({
28782
28782
  type: { enumerable: true },
28783
28783
  slice: { enumerable: true }
28784
28784
  });
28785
- Blob2 = _Blob;
28786
- fetch_blob_default = Blob2;
28785
+ Blob3 = _Blob;
28786
+ fetch_blob_default = Blob3;
28787
28787
  }
28788
28788
  });
28789
28789
 
28790
28790
  // ../../node_modules/.pnpm/fetch-blob@3.2.0/node_modules/fetch-blob/file.js
28791
- var _File, File2, file_default;
28791
+ var _File, File3, file_default;
28792
28792
  var init_file = __esm({
28793
28793
  "../../node_modules/.pnpm/fetch-blob@3.2.0/node_modules/fetch-blob/file.js"() {
28794
28794
  init_fetch_blob();
28795
- _File = class File extends fetch_blob_default {
28795
+ _File = class File2 extends fetch_blob_default {
28796
28796
  #lastModified = 0;
28797
28797
  #name = "";
28798
28798
  constructor(fileBits, fileName, options = {}) {
@@ -28821,8 +28821,8 @@ var init_file = __esm({
28821
28821
  return !!object && object instanceof fetch_blob_default && /^(File)$/.test(object[Symbol.toStringTag]);
28822
28822
  }
28823
28823
  };
28824
- File2 = _File;
28825
- file_default = File2;
28824
+ File3 = _File;
28825
+ file_default = File3;
28826
28826
  }
28827
28827
  });
28828
28828
 
@@ -28840,7 +28840,7 @@ Content-Type: ${v.type || "application/octet-stream"}\r
28840
28840
  c.push(`--${b}--`);
28841
28841
  return new B(c, { type: "multipart/form-data; boundary=" + b });
28842
28842
  }
28843
- var t, i, h, r, m, f, e, x, FormData;
28843
+ var t, i, h, r, m, f, e, x, FormData2;
28844
28844
  var init_esm_min = __esm({
28845
28845
  "../../node_modules/.pnpm/formdata-polyfill@4.0.10/node_modules/formdata-polyfill/esm.min.js"() {
28846
28846
  init_fetch_blob();
@@ -28855,7 +28855,7 @@ var init_esm_min = __esm({
28855
28855
  throw new TypeError(`Failed to execute '${n}' on 'FormData': ${e2} arguments required, but only ${a.length} present.`);
28856
28856
  }
28857
28857
  };
28858
- FormData = class FormData2 {
28858
+ FormData2 = class FormData3 {
28859
28859
  #d = [];
28860
28860
  constructor(...a) {
28861
28861
  if (a.length)
@@ -29021,7 +29021,7 @@ async function toFormData(Body2, ct) {
29021
29021
  let contentType;
29022
29022
  let filename;
29023
29023
  const entryChunks = [];
29024
- const formData = new FormData();
29024
+ const formData = new FormData2();
29025
29025
  const onPartData = (ui8a) => {
29026
29026
  entryValue += decoder.decode(ui8a, { stream: true });
29027
29027
  };
@@ -68328,7 +68328,18 @@ var graphql2 = __toESM(require_graphql2(), 1);
68328
68328
  var import_minimatch = __toESM(require_minimatch(), 1);
68329
68329
  import { fileURLToPath, pathToFileURL } from "node:url";
68330
68330
 
68331
+ // src/runtime/imports/config.ts
68332
+ var config_default = {};
68333
+
68334
+ // src/runtime/imports/pluginConfig.ts
68335
+ var configs = [];
68336
+ var pluginConfig_default = configs;
68337
+
68331
68338
  // src/runtime/lib/config.ts
68339
+ var mockConfig = null;
68340
+ function getMockConfig() {
68341
+ return mockConfig;
68342
+ }
68332
68343
  function defaultConfigValues(file) {
68333
68344
  return {
68334
68345
  defaultKeys: ["id"],
@@ -68356,12 +68367,150 @@ function computeID(configFile, type, data) {
68356
68367
  }
68357
68368
  return id.slice(0, -2);
68358
68369
  }
68370
+ var _configFile = null;
68371
+ function getCurrentConfig() {
68372
+ const mockConfig2 = getMockConfig();
68373
+ if (mockConfig2) {
68374
+ return mockConfig2;
68375
+ }
68376
+ if (_configFile) {
68377
+ return _configFile;
68378
+ }
68379
+ let configFile = defaultConfigValues(config_default);
68380
+ for (const pluginConfig of pluginConfig_default) {
68381
+ configFile = pluginConfig(configFile);
68382
+ }
68383
+ _configFile = configFile;
68384
+ return configFile;
68385
+ }
68386
+
68387
+ // src/runtime/lib/deepEquals.ts
68388
+ function deepEquals(objA, objB, map = /* @__PURE__ */ new WeakMap()) {
68389
+ if (Object.is(objA, objB))
68390
+ return true;
68391
+ if (objA instanceof Date && objB instanceof Date) {
68392
+ return objA.getTime() === objB.getTime();
68393
+ }
68394
+ if (objA instanceof RegExp && objB instanceof RegExp) {
68395
+ return objA.toString() === objB.toString();
68396
+ }
68397
+ if (typeof objA !== "object" || objA === null || typeof objB !== "object" || objB === null) {
68398
+ return false;
68399
+ }
68400
+ if (map.get(objA) === objB)
68401
+ return true;
68402
+ map.set(objA, objB);
68403
+ const keysA = Reflect.ownKeys(objA);
68404
+ const keysB = Reflect.ownKeys(objB);
68405
+ if (keysA.length !== keysB.length) {
68406
+ return false;
68407
+ }
68408
+ for (let i2 = 0; i2 < keysA.length; i2++) {
68409
+ if (!Reflect.has(objB, keysA[i2]) || !deepEquals(objA[keysA[i2]], objB[keysA[i2]], map)) {
68410
+ return false;
68411
+ }
68412
+ }
68413
+ return true;
68414
+ }
68415
+
68416
+ // src/runtime/lib/selection.ts
68417
+ function getFieldsForType(selection2, __typename) {
68418
+ let targetSelection = selection2.fields || {};
68419
+ if (selection2.abstractFields && __typename) {
68420
+ const mappedType = selection2.abstractFields.typeMap[__typename];
68421
+ if (mappedType) {
68422
+ targetSelection = selection2.abstractFields.fields[mappedType];
68423
+ } else if (selection2.abstractFields.fields[__typename]) {
68424
+ targetSelection = selection2.abstractFields.fields[__typename];
68425
+ }
68426
+ }
68427
+ return targetSelection;
68428
+ }
68429
+
68430
+ // src/runtime/lib/scalars.ts
68431
+ async function marshalSelection({
68432
+ selection: selection2,
68433
+ data
68434
+ }) {
68435
+ const config2 = getCurrentConfig();
68436
+ if (data === null || typeof data === "undefined") {
68437
+ return data;
68438
+ }
68439
+ if (Array.isArray(data)) {
68440
+ return await Promise.all(data.map((val) => marshalSelection({ selection: selection2, data: val })));
68441
+ }
68442
+ const targetSelection = getFieldsForType(selection2, data["__typename"]);
68443
+ return Object.fromEntries(
68444
+ await Promise.all(
68445
+ Object.entries(data).map(async ([fieldName, value]) => {
68446
+ const { type, selection: selection3 } = targetSelection[fieldName];
68447
+ if (!type) {
68448
+ return [fieldName, value];
68449
+ }
68450
+ if (selection3) {
68451
+ return [fieldName, await marshalSelection({ selection: selection3, data: value })];
68452
+ }
68453
+ if (config2.scalars?.[type]) {
68454
+ const marshalFn = config2.scalars[type].marshal;
68455
+ if (!marshalFn) {
68456
+ throw new Error(
68457
+ `scalar type ${type} is missing a \`marshal\` function. see https://github.com/AlecAivazis/houdini#%EF%B8%8Fcustom-scalars`
68458
+ );
68459
+ }
68460
+ if (Array.isArray(value)) {
68461
+ return [fieldName, value.map(marshalFn)];
68462
+ }
68463
+ return [fieldName, marshalFn(value)];
68464
+ }
68465
+ return [fieldName, value];
68466
+ })
68467
+ )
68468
+ );
68469
+ }
68359
68470
 
68360
68471
  // src/runtime/lib/types.ts
68361
- var CompiledFragmentKind = "HoudiniFragment" /* Fragment */;
68362
- var CompiledMutationKind = "HoudiniMutation" /* Mutation */;
68363
- var CompiledQueryKind = "HoudiniQuery" /* Query */;
68364
- var CompiledSubscriptionKind = "HoudiniSubscription" /* Subscription */;
68472
+ var CachePolicy = {
68473
+ CacheOrNetwork: "CacheOrNetwork",
68474
+ CacheOnly: "CacheOnly",
68475
+ NetworkOnly: "NetworkOnly",
68476
+ CacheAndNetwork: "CacheAndNetwork"
68477
+ };
68478
+ var ArtifactKind = {
68479
+ Query: "HoudiniQuery",
68480
+ Subscription: "HoudiniSubscription",
68481
+ Mutation: "HoudiniMutation",
68482
+ Fragment: "HoudiniFragment"
68483
+ };
68484
+ var CompiledFragmentKind = ArtifactKind.Fragment;
68485
+ var CompiledMutationKind = ArtifactKind.Mutation;
68486
+ var CompiledQueryKind = ArtifactKind.Query;
68487
+ var CompiledSubscriptionKind = ArtifactKind.Subscription;
68488
+ var RefetchUpdateMode = {
68489
+ append: "append",
68490
+ prepend: "prepend",
68491
+ replace: "replace"
68492
+ };
68493
+ var DataSource = {
68494
+ Cache: "cache",
68495
+ Network: "network",
68496
+ Ssr: "ssr"
68497
+ };
68498
+
68499
+ // src/runtime/lib/key.ts
68500
+ var computeKey = ({ field, args }) => {
68501
+ const keys = Object.keys(args ?? {});
68502
+ keys.sort();
68503
+ return args && keys.length > 0 ? `${field}(${keys.map((key) => `${key}: ${stringifyObjectWithNoQuotesOnKeys(args[key])}`).join(", ")})` : field;
68504
+ };
68505
+ var stringifyObjectWithNoQuotesOnKeys = (obj_from_json) => {
68506
+ if (Array.isArray(obj_from_json)) {
68507
+ return `[${obj_from_json.map((obj) => `${stringifyObjectWithNoQuotesOnKeys(obj)}`).join(", ")}]`;
68508
+ }
68509
+ if (typeof obj_from_json !== "object" || obj_from_json instanceof Date || obj_from_json === null) {
68510
+ return JSON.stringify(obj_from_json).replace(/"([^"]+)":/g, "$1: ");
68511
+ }
68512
+ return `{${Object.keys(obj_from_json).map((key) => `${key}: ${stringifyObjectWithNoQuotesOnKeys(obj_from_json[key])}`).join(", ")}}`;
68513
+ };
68365
68514
 
68366
68515
  // src/lib/constants.ts
68367
68516
  var siteURL = "https://houdinigraphql.com";
@@ -68807,7 +68956,7 @@ var Body = class {
68807
68956
  } else if (ArrayBuffer.isView(body)) {
68808
68957
  body = Buffer2.from(body.buffer, body.byteOffset, body.byteLength);
68809
68958
  } else if (body instanceof Stream) {
68810
- } else if (body instanceof FormData) {
68959
+ } else if (body instanceof FormData2) {
68811
68960
  body = formDataToBlob(body);
68812
68961
  boundary = body.type.split("=")[1];
68813
68962
  } else {
@@ -68847,7 +68996,7 @@ var Body = class {
68847
68996
  async formData() {
68848
68997
  const ct = this.headers.get("content-type");
68849
68998
  if (ct.startsWith("application/x-www-form-urlencoded")) {
68850
- const formData = new FormData();
68999
+ const formData = new FormData2();
68851
69000
  const parameters = new URLSearchParams(await this.text());
68852
69001
  for (const [name, value] of parameters) {
68853
69002
  formData.append(name, value);
@@ -68973,7 +69122,7 @@ var extractContentType = (body, request) => {
68973
69122
  if (Buffer2.isBuffer(body) || types.isAnyArrayBuffer(body) || ArrayBuffer.isView(body)) {
68974
69123
  return null;
68975
69124
  }
68976
- if (body instanceof FormData) {
69125
+ if (body instanceof FormData2) {
68977
69126
  return `multipart/form-data; boundary=${request[INTERNALS].boundary}`;
68978
69127
  }
68979
69128
  if (body && typeof body.getBoundary === "function") {
@@ -69940,14 +70089,2002 @@ function plugin(name, hooks) {
69940
70089
  return data;
69941
70090
  }
69942
70091
 
70092
+ // src/runtime/lib/flatten.ts
70093
+ function flatten(source) {
70094
+ if (!source) {
70095
+ return [];
70096
+ }
70097
+ return source.reduce((acc, element) => {
70098
+ if (!element) {
70099
+ return acc;
70100
+ }
70101
+ if (Array.isArray(element)) {
70102
+ return acc.concat(flatten(element));
70103
+ }
70104
+ return acc.concat(element);
70105
+ }, []);
70106
+ }
70107
+
70108
+ // src/runtime/cache/gc.ts
70109
+ var GarbageCollector = class {
70110
+ cache;
70111
+ lifetimes = /* @__PURE__ */ new Map();
70112
+ get cacheBufferSize() {
70113
+ return this.cache._internal_unstable.config.cacheBufferSize ?? 10;
70114
+ }
70115
+ constructor(cache) {
70116
+ this.cache = cache;
70117
+ }
70118
+ resetLifetime(id, field) {
70119
+ if (!this.lifetimes.get(id)) {
70120
+ this.lifetimes.set(id, /* @__PURE__ */ new Map());
70121
+ }
70122
+ this.lifetimes.get(id).set(field, 0);
70123
+ }
70124
+ tick() {
70125
+ const dt_tick = Date.now().valueOf();
70126
+ const config_max_time = this.cache._internal_unstable.config.defaultLifetime;
70127
+ for (const [id, fieldMap] of this.lifetimes.entries()) {
70128
+ for (const [field, lifetime] of fieldMap.entries()) {
70129
+ if (this.cache._internal_unstable.subscriptions.get(id, field).length > 0) {
70130
+ continue;
70131
+ }
70132
+ fieldMap.set(field, lifetime + 1);
70133
+ if (fieldMap.get(field) > this.cacheBufferSize) {
70134
+ this.cache._internal_unstable.storage.deleteField(id, field);
70135
+ this.cache._internal_unstable.lists.deleteField(id, field);
70136
+ fieldMap.delete(field);
70137
+ if ([...fieldMap.keys()].length === 0) {
70138
+ this.lifetimes.delete(id);
70139
+ }
70140
+ this.cache._internal_unstable.staleManager.delete(id, field);
70141
+ }
70142
+ if (config_max_time && config_max_time > 0) {
70143
+ const dt_valueOf = this.cache.getFieldTime(id, field);
70144
+ if (dt_valueOf && dt_tick - dt_valueOf > config_max_time) {
70145
+ this.cache._internal_unstable.staleManager.markFieldStale(id, field);
70146
+ }
70147
+ }
70148
+ }
70149
+ }
70150
+ }
70151
+ };
70152
+
70153
+ // src/runtime/cache/lists.ts
70154
+ var ListManager = class {
70155
+ rootID;
70156
+ cache;
70157
+ constructor(cache, rootID2) {
70158
+ this.rootID = rootID2;
70159
+ this.cache = cache;
70160
+ }
70161
+ lists = /* @__PURE__ */ new Map();
70162
+ listsByField = /* @__PURE__ */ new Map();
70163
+ get(listName, id, allLists) {
70164
+ const matches = this.lists.get(listName);
70165
+ if (!matches || matches.size === 0) {
70166
+ return null;
70167
+ }
70168
+ if (allLists) {
70169
+ return new ListCollection(
70170
+ Array.from(matches, ([key, value]) => [...value.lists]).flat()
70171
+ );
70172
+ }
70173
+ const head = [...matches.values()][0];
70174
+ const { recordType } = head.lists[0];
70175
+ const parentID = id ? this.cache._internal_unstable.id(recordType || "", id) : this.rootID;
70176
+ if (matches?.size === 1) {
70177
+ if (!id) {
70178
+ return head;
70179
+ }
70180
+ return parentID === Array.from(matches.keys())[0] ? head : null;
70181
+ }
70182
+ if (!id) {
70183
+ console.error(
70184
+ `Found multiple instances of "${listName}". Please provide one of @parentID or @allLists directives to help identify which list you want modify. For more information, visit this guide: https://www.houdinigraphql.com/api/graphql#parentidvalue-string `
70185
+ );
70186
+ return null;
70187
+ }
70188
+ return this.lists.get(listName)?.get(parentID);
70189
+ }
70190
+ remove(listName, id) {
70191
+ this.lists.get(listName)?.delete(id || this.rootID);
70192
+ }
70193
+ add(list) {
70194
+ if (!this.lists.has(list.name)) {
70195
+ this.lists.set(list.name, /* @__PURE__ */ new Map());
70196
+ }
70197
+ const name = list.name;
70198
+ const parentID = list.recordID || this.rootID;
70199
+ if (this.lists.get(name)?.get(parentID)?.includes(list.key)) {
70200
+ return;
70201
+ }
70202
+ if (!this.lists.has(name)) {
70203
+ this.lists.set(name, /* @__PURE__ */ new Map());
70204
+ }
70205
+ if (!this.lists.get(name).has(parentID)) {
70206
+ this.lists.get(name).set(parentID, new ListCollection([]));
70207
+ }
70208
+ if (!this.listsByField.has(parentID)) {
70209
+ this.listsByField.set(parentID, /* @__PURE__ */ new Map());
70210
+ }
70211
+ if (!this.listsByField.get(parentID).has(list.key)) {
70212
+ this.listsByField.get(parentID)?.set(list.key, []);
70213
+ }
70214
+ const handler = new List({ ...list, manager: this });
70215
+ this.lists.get(list.name).get(parentID).lists.push(handler);
70216
+ this.listsByField.get(parentID).get(list.key).push(handler);
70217
+ }
70218
+ removeIDFromAllLists(id) {
70219
+ for (const fieldMap of this.lists.values()) {
70220
+ for (const list of fieldMap.values()) {
70221
+ list.removeID(id);
70222
+ }
70223
+ }
70224
+ }
70225
+ deleteField(parentID, field) {
70226
+ if (!this.listsByField.get(parentID)?.has(field)) {
70227
+ return;
70228
+ }
70229
+ for (const list of this.listsByField.get(parentID).get(field)) {
70230
+ this.lists.get(list.name)?.get(list.recordID)?.deleteListWithKey(field);
70231
+ if (this.lists.get(list.name)?.get(list.recordID)?.lists.length === 0) {
70232
+ this.lists.get(list.name)?.delete(list.recordID);
70233
+ }
70234
+ }
70235
+ this.listsByField.get(parentID).delete(field);
70236
+ }
70237
+ };
70238
+ var List = class {
70239
+ recordID;
70240
+ recordType;
70241
+ key;
70242
+ type;
70243
+ cache;
70244
+ selection;
70245
+ _when;
70246
+ filters;
70247
+ name;
70248
+ connection;
70249
+ manager;
70250
+ abstract;
70251
+ constructor({
70252
+ name,
70253
+ recordID,
70254
+ recordType,
70255
+ key,
70256
+ listType,
70257
+ selection: selection2,
70258
+ when,
70259
+ filters,
70260
+ connection,
70261
+ manager,
70262
+ abstract
70263
+ }) {
70264
+ this.recordID = recordID || rootID;
70265
+ this.recordType = recordType;
70266
+ this.key = key;
70267
+ this.type = listType;
70268
+ this.cache = manager.cache;
70269
+ this.selection = selection2;
70270
+ this._when = when;
70271
+ this.filters = filters;
70272
+ this.name = name;
70273
+ this.connection = connection;
70274
+ this.manager = manager;
70275
+ this.abstract = abstract;
70276
+ }
70277
+ when(when) {
70278
+ return this.manager.lists.get(this.name).get(this.recordID).when(when);
70279
+ }
70280
+ append(selection2, data, variables = {}) {
70281
+ return this.addToList(selection2, data, variables, "last");
70282
+ }
70283
+ prepend(selection2, data, variables = {}) {
70284
+ return this.addToList(selection2, data, variables, "first");
70285
+ }
70286
+ addToList(selection2, data, variables = {}, where) {
70287
+ const listType = this.listType(data);
70288
+ const dataID = this.cache._internal_unstable.id(listType, data);
70289
+ if (!this.validateWhen() || !dataID) {
70290
+ return;
70291
+ }
70292
+ let insertSelection = selection2;
70293
+ let insertData = data;
70294
+ if (this.connection) {
70295
+ insertSelection = {
70296
+ fields: {
70297
+ newEntry: {
70298
+ keyRaw: this.key,
70299
+ type: "Connection",
70300
+ selection: {
70301
+ fields: {
70302
+ edges: {
70303
+ keyRaw: "edges",
70304
+ type: "ConnectionEdge",
70305
+ updates: ["append", "prepend"],
70306
+ selection: {
70307
+ fields: {
70308
+ node: {
70309
+ type: listType,
70310
+ keyRaw: "node",
70311
+ selection: {
70312
+ ...selection2,
70313
+ fields: {
70314
+ ...selection2.fields,
70315
+ __typename: {
70316
+ keyRaw: "__typename",
70317
+ type: "String"
70318
+ }
70319
+ }
70320
+ }
70321
+ }
70322
+ }
70323
+ }
70324
+ }
70325
+ }
70326
+ }
70327
+ }
70328
+ }
70329
+ };
70330
+ insertData = {
70331
+ newEntry: {
70332
+ edges: [{ node: { ...data, __typename: listType } }]
70333
+ }
70334
+ };
70335
+ } else {
70336
+ insertSelection = {
70337
+ fields: {
70338
+ newEntries: {
70339
+ keyRaw: this.key,
70340
+ type: listType,
70341
+ updates: ["append", "prepend"],
70342
+ selection: {
70343
+ ...selection2,
70344
+ fields: {
70345
+ ...selection2.fields,
70346
+ __typename: {
70347
+ keyRaw: "__typename",
70348
+ type: "String"
70349
+ }
70350
+ }
70351
+ }
70352
+ }
70353
+ }
70354
+ };
70355
+ insertData = {
70356
+ newEntries: [{ ...data, __typename: listType }]
70357
+ };
70358
+ }
70359
+ this.cache.write({
70360
+ selection: insertSelection,
70361
+ data: insertData,
70362
+ variables,
70363
+ parent: this.recordID,
70364
+ applyUpdates: [where === "first" ? "prepend" : "append"]
70365
+ });
70366
+ }
70367
+ removeID(id, variables = {}) {
70368
+ if (!this.validateWhen()) {
70369
+ return;
70370
+ }
70371
+ let parentID = this.recordID;
70372
+ let targetID = id;
70373
+ let targetKey = this.key;
70374
+ if (this.connection) {
70375
+ const { value: embeddedConnection } = this.cache._internal_unstable.storage.get(
70376
+ this.recordID,
70377
+ this.key
70378
+ );
70379
+ if (!embeddedConnection) {
70380
+ return;
70381
+ }
70382
+ const embeddedConnectionID = embeddedConnection;
70383
+ const { value: edges } = this.cache._internal_unstable.storage.get(
70384
+ embeddedConnectionID,
70385
+ "edges"
70386
+ );
70387
+ for (const edge of flatten(edges) || []) {
70388
+ if (!edge) {
70389
+ continue;
70390
+ }
70391
+ const edgeID = edge;
70392
+ const { value: nodeID } = this.cache._internal_unstable.storage.get(edgeID, "node");
70393
+ if (!nodeID) {
70394
+ continue;
70395
+ }
70396
+ if (nodeID === id) {
70397
+ targetID = edgeID;
70398
+ }
70399
+ }
70400
+ parentID = embeddedConnectionID;
70401
+ targetKey = "edges";
70402
+ }
70403
+ let value = this.cache._internal_unstable.storage.get(parentID, targetKey).value;
70404
+ if (!value || !value.includes(targetID)) {
70405
+ return;
70406
+ }
70407
+ const subscribers = this.cache._internal_unstable.subscriptions.get(this.recordID, this.key);
70408
+ this.cache._internal_unstable.subscriptions.remove(
70409
+ targetID,
70410
+ this.connection ? this.selection.fields.edges.selection : this.selection,
70411
+ subscribers.map((sub) => sub[0]),
70412
+ variables
70413
+ );
70414
+ this.cache._internal_unstable.storage.remove(parentID, targetKey, targetID);
70415
+ for (const [spec] of subscribers) {
70416
+ spec.set(
70417
+ this.cache._internal_unstable.getSelection({
70418
+ parent: spec.parentID || this.manager.rootID,
70419
+ selection: spec.selection,
70420
+ variables: spec.variables?.() || {}
70421
+ }).data
70422
+ );
70423
+ }
70424
+ return true;
70425
+ }
70426
+ remove(data, variables = {}) {
70427
+ const targetID = this.cache._internal_unstable.id(this.listType(data), data);
70428
+ if (!targetID) {
70429
+ return;
70430
+ }
70431
+ return this.removeID(targetID, variables);
70432
+ }
70433
+ listType(data) {
70434
+ return data.__typename || this.type;
70435
+ }
70436
+ validateWhen(when) {
70437
+ let filters = when || this._when;
70438
+ let ok = true;
70439
+ if (filters) {
70440
+ const targets = this.filters;
70441
+ if (filters.must && targets) {
70442
+ ok = Object.entries(filters.must).reduce(
70443
+ (prev, [key, value]) => Boolean(prev && targets[key] == value),
70444
+ ok
70445
+ );
70446
+ }
70447
+ if (filters.must_not) {
70448
+ ok = !targets || Object.entries(filters.must_not).reduce(
70449
+ (prev, [key, value]) => Boolean(prev && targets[key] != value),
70450
+ ok
70451
+ );
70452
+ }
70453
+ }
70454
+ return ok;
70455
+ }
70456
+ toggleElement(selection2, data, variables = {}, where) {
70457
+ if (!this.remove(data, variables)) {
70458
+ this.addToList(selection2, data, variables, where);
70459
+ }
70460
+ }
70461
+ *[Symbol.iterator]() {
70462
+ let entries = [];
70463
+ let value = this.cache._internal_unstable.storage.get(this.recordID, this.key).value;
70464
+ if (!this.connection) {
70465
+ entries = flatten(value);
70466
+ } else {
70467
+ entries = this.cache._internal_unstable.storage.get(value, "edges").value;
70468
+ }
70469
+ for (let record2 of entries) {
70470
+ yield record2;
70471
+ }
70472
+ }
70473
+ };
70474
+ var ListCollection = class {
70475
+ lists = [];
70476
+ constructor(lists) {
70477
+ this.lists = lists;
70478
+ }
70479
+ get selection() {
70480
+ return this.lists[0].selection;
70481
+ }
70482
+ append(...args) {
70483
+ this.lists.forEach((list) => list.append(...args));
70484
+ }
70485
+ prepend(...args) {
70486
+ this.lists.forEach((list) => list.prepend(...args));
70487
+ }
70488
+ addToList(...args) {
70489
+ this.lists.forEach((list) => list.addToList(...args));
70490
+ }
70491
+ removeID(...args) {
70492
+ this.lists.forEach((list) => list.removeID(...args));
70493
+ }
70494
+ remove(...args) {
70495
+ this.lists.forEach((list) => list.remove(...args));
70496
+ }
70497
+ toggleElement(...args) {
70498
+ this.lists.forEach((list) => list.toggleElement(...args));
70499
+ }
70500
+ when(when) {
70501
+ return new ListCollection(
70502
+ this.lists.filter((list) => {
70503
+ return list.validateWhen(when);
70504
+ })
70505
+ );
70506
+ }
70507
+ includes(key) {
70508
+ return !!this.lists.find((list) => list.key === key);
70509
+ }
70510
+ deleteListWithKey(key) {
70511
+ return this.lists = this.lists.filter((list) => list.key !== key);
70512
+ }
70513
+ *[Symbol.iterator]() {
70514
+ for (let list of this.lists) {
70515
+ for (const entry of list) {
70516
+ yield entry;
70517
+ }
70518
+ }
70519
+ }
70520
+ };
70521
+
70522
+ // src/runtime/cache/schema.ts
70523
+ var SchemaManager = class {
70524
+ cache;
70525
+ fieldTypes = {};
70526
+ constructor(cache) {
70527
+ this.cache = cache;
70528
+ }
70529
+ setFieldType({
70530
+ parent,
70531
+ key,
70532
+ type,
70533
+ nullable = false,
70534
+ link
70535
+ }) {
70536
+ let parensIndex = key.indexOf("(");
70537
+ if (parensIndex !== -1) {
70538
+ key = key.substring(0, parensIndex);
70539
+ }
70540
+ if (parent === rootID) {
70541
+ parent = "Query";
70542
+ } else if (parent.includes(":")) {
70543
+ parent = parent.substring(0, parent.indexOf(":"));
70544
+ }
70545
+ if (!this.fieldTypes[parent]) {
70546
+ this.fieldTypes[parent] = {};
70547
+ }
70548
+ this.fieldTypes[parent][key] = {
70549
+ type,
70550
+ nullable,
70551
+ link: !!link
70552
+ };
70553
+ }
70554
+ fieldType(type, field) {
70555
+ return this.fieldTypes[type]?.[field] || null;
70556
+ }
70557
+ get config() {
70558
+ return this.cache._internal_unstable.config;
70559
+ }
70560
+ };
70561
+
70562
+ // src/runtime/cache/staleManager.ts
70563
+ var StaleManager = class {
70564
+ cache;
70565
+ fieldsTime = /* @__PURE__ */ new Map();
70566
+ constructor(cache) {
70567
+ this.cache = cache;
70568
+ }
70569
+ #initMapId = (id) => {
70570
+ if (!this.fieldsTime.get(id)) {
70571
+ this.fieldsTime.set(id, /* @__PURE__ */ new Map());
70572
+ }
70573
+ };
70574
+ getFieldTime(id, field) {
70575
+ return this.fieldsTime.get(id)?.get(field);
70576
+ }
70577
+ setFieldTimeToNow(id, field) {
70578
+ this.#initMapId(id);
70579
+ this.fieldsTime.get(id)?.set(field, new Date().valueOf());
70580
+ }
70581
+ markFieldStale(id, field) {
70582
+ this.#initMapId(id);
70583
+ this.fieldsTime.get(id)?.set(field, null);
70584
+ }
70585
+ markAllStale() {
70586
+ for (const [id, fieldMap] of this.fieldsTime.entries()) {
70587
+ for (const [field] of fieldMap.entries()) {
70588
+ this.markFieldStale(id, field);
70589
+ }
70590
+ }
70591
+ }
70592
+ markRecordStale(id) {
70593
+ const fieldsTimeOfType = this.fieldsTime.get(id);
70594
+ if (fieldsTimeOfType) {
70595
+ for (const [field] of fieldsTimeOfType.entries()) {
70596
+ this.markFieldStale(id, field);
70597
+ }
70598
+ }
70599
+ }
70600
+ markTypeStale(type) {
70601
+ for (const [id, fieldMap] of this.fieldsTime.entries()) {
70602
+ if (id.startsWith(`${type}:`)) {
70603
+ for (const [field] of fieldMap.entries()) {
70604
+ this.markFieldStale(id, field);
70605
+ }
70606
+ }
70607
+ }
70608
+ }
70609
+ markTypeFieldStale(type, field, when) {
70610
+ const key = computeKey({ field, args: when });
70611
+ for (const [id, fieldMap] of this.fieldsTime.entries()) {
70612
+ if (id.startsWith(`${type}:`)) {
70613
+ for (const local_field of fieldMap.keys()) {
70614
+ if (local_field === key) {
70615
+ this.markFieldStale(id, field);
70616
+ }
70617
+ }
70618
+ }
70619
+ }
70620
+ }
70621
+ delete(id, field) {
70622
+ if (this.fieldsTime.has(id)) {
70623
+ this.fieldsTime.get(id)?.delete(field);
70624
+ if (this.fieldsTime.get(id)?.size === 0) {
70625
+ this.fieldsTime.delete(id);
70626
+ }
70627
+ }
70628
+ }
70629
+ };
70630
+
70631
+ // src/runtime/cache/storage.ts
70632
+ var InMemoryStorage = class {
70633
+ data;
70634
+ idCount = 0;
70635
+ rank = 0;
70636
+ constructor() {
70637
+ this.data = [];
70638
+ }
70639
+ get layerCount() {
70640
+ return this.data.length;
70641
+ }
70642
+ get nextRank() {
70643
+ return this.rank++;
70644
+ }
70645
+ createLayer(optimistic = false) {
70646
+ const layer = new Layer(this.idCount++);
70647
+ layer.optimistic = optimistic;
70648
+ this.data.push(layer);
70649
+ return layer;
70650
+ }
70651
+ insert(id, field, location, target) {
70652
+ return this.topLayer.insert(id, field, location, target);
70653
+ }
70654
+ remove(id, field, target) {
70655
+ return this.topLayer.remove(id, field, target);
70656
+ }
70657
+ delete(id) {
70658
+ return this.topLayer.delete(id);
70659
+ }
70660
+ deleteField(id, field) {
70661
+ return this.topLayer.deleteField(id, field);
70662
+ }
70663
+ getLayer(id) {
70664
+ for (const layer of this.data) {
70665
+ if (layer.id === id) {
70666
+ return layer;
70667
+ }
70668
+ }
70669
+ throw new Error("Could not find layer with id: " + id);
70670
+ }
70671
+ replaceID(replacement) {
70672
+ for (const layer of this.data) {
70673
+ layer.replaceID(replacement);
70674
+ }
70675
+ }
70676
+ get(id, field) {
70677
+ const operations = {
70678
+ [OperationKind.insert]: {
70679
+ [OperationLocation.start]: [],
70680
+ [OperationLocation.end]: []
70681
+ },
70682
+ [OperationKind.remove]: /* @__PURE__ */ new Set()
70683
+ };
70684
+ const layerIDs = [];
70685
+ for (let i2 = this.data.length - 1; i2 >= 0; i2--) {
70686
+ const layer = this.data[i2];
70687
+ const [layerValue, kind] = layer.get(id, field);
70688
+ const layerOperations = layer.getOperations(id, field) || [];
70689
+ layer.deletedIDs.forEach((v) => {
70690
+ if (layer.operations[v]?.undoDeletesInList?.includes(field)) {
70691
+ return;
70692
+ }
70693
+ operations.remove.add(v);
70694
+ });
70695
+ if (typeof layerValue === "undefined" && layerOperations.length === 0) {
70696
+ if (layer.deletedIDs.size > 0) {
70697
+ layerIDs.push(layer.id);
70698
+ }
70699
+ continue;
70700
+ }
70701
+ if (typeof layerValue !== "undefined" && !Array.isArray(layerValue)) {
70702
+ return {
70703
+ value: layerValue,
70704
+ kind,
70705
+ displayLayers: [layer.id]
70706
+ };
70707
+ }
70708
+ layerIDs.push(layer.id);
70709
+ if (layerOperations.length > 0) {
70710
+ for (const op of layerOperations) {
70711
+ if (isRemoveOperation(op)) {
70712
+ operations.remove.add(op.id);
70713
+ }
70714
+ if (isInsertOperation(op)) {
70715
+ operations.insert[op.location].unshift(op.id);
70716
+ }
70717
+ if (isDeleteOperation(op)) {
70718
+ return {
70719
+ value: void 0,
70720
+ kind: "unknown",
70721
+ displayLayers: []
70722
+ };
70723
+ }
70724
+ }
70725
+ }
70726
+ if (typeof layerValue === "undefined") {
70727
+ continue;
70728
+ }
70729
+ if (!operations.remove.size && !operations.insert.start.length && !operations.insert.end.length) {
70730
+ return { value: layerValue, displayLayers: layerIDs, kind: "link" };
70731
+ }
70732
+ return {
70733
+ value: [...operations.insert.start, ...layerValue, ...operations.insert.end].filter(
70734
+ (value) => !operations.remove.has(value)
70735
+ ),
70736
+ displayLayers: layerIDs,
70737
+ kind
70738
+ };
70739
+ }
70740
+ return {
70741
+ value: void 0,
70742
+ kind: "unknown",
70743
+ displayLayers: []
70744
+ };
70745
+ }
70746
+ writeLink(id, field, value) {
70747
+ return this.topLayer.writeLink(id, field, value);
70748
+ }
70749
+ writeField(id, field, value) {
70750
+ return this.topLayer.writeField(id, field, value);
70751
+ }
70752
+ resolveLayer(id) {
70753
+ let startingIndex = null;
70754
+ for (const [index, layer] of this.data.entries()) {
70755
+ if (layer.id !== id) {
70756
+ continue;
70757
+ }
70758
+ startingIndex = index - 1;
70759
+ this.data[index].optimistic = false;
70760
+ break;
70761
+ }
70762
+ if (startingIndex === null) {
70763
+ throw new Error("could not find layer with id: " + id);
70764
+ }
70765
+ if (startingIndex === -1) {
70766
+ startingIndex = 0;
70767
+ }
70768
+ if (this.data[startingIndex].optimistic) {
70769
+ startingIndex++;
70770
+ }
70771
+ const baseLayer = this.data[startingIndex];
70772
+ let layerIndex = startingIndex;
70773
+ while (layerIndex < this.data.length) {
70774
+ const layer = this.data[layerIndex++];
70775
+ if (layer.optimistic) {
70776
+ layerIndex--;
70777
+ break;
70778
+ }
70779
+ baseLayer.writeLayer(layer);
70780
+ }
70781
+ this.data.splice(startingIndex + 1, layerIndex - startingIndex - 1);
70782
+ }
70783
+ get topLayer() {
70784
+ if (this.data.length === 0) {
70785
+ this.createLayer();
70786
+ }
70787
+ if (this.data[this.data.length - 1]?.optimistic) {
70788
+ this.createLayer();
70789
+ }
70790
+ return this.data[this.data.length - 1];
70791
+ }
70792
+ };
70793
+ var Layer = class {
70794
+ id;
70795
+ optimistic = false;
70796
+ fields = {};
70797
+ links = {};
70798
+ operations = {};
70799
+ deletedIDs = /* @__PURE__ */ new Set();
70800
+ constructor(id) {
70801
+ this.id = id;
70802
+ }
70803
+ get(id, field) {
70804
+ if (typeof this.links[id]?.[field] !== "undefined") {
70805
+ return [this.links[id][field], "link"];
70806
+ }
70807
+ return [this.fields[id]?.[field], "scalar"];
70808
+ }
70809
+ getOperations(id, field) {
70810
+ if (this.operations[id]?.deleted) {
70811
+ return [
70812
+ {
70813
+ kind: OperationKind.delete,
70814
+ target: id
70815
+ }
70816
+ ];
70817
+ }
70818
+ if (this.operations[id]?.fields?.[field]) {
70819
+ return this.operations[id].fields[field];
70820
+ }
70821
+ }
70822
+ writeField(id, field, value) {
70823
+ this.fields[id] = {
70824
+ ...this.fields[id],
70825
+ [field]: value
70826
+ };
70827
+ return this.id;
70828
+ }
70829
+ writeLink(id, field, value) {
70830
+ const valueList = Array.isArray(value) ? value : [value];
70831
+ for (const value2 of flatten(valueList)) {
70832
+ if (!value2) {
70833
+ continue;
70834
+ }
70835
+ const fieldOperations = this.operations[id]?.fields[field];
70836
+ if (this.operations[value2]?.deleted || this.deletedIDs.has(value2)) {
70837
+ this.operations[value2] = {
70838
+ ...this.operations[value2],
70839
+ undoDeletesInList: [...this.operations[id]?.undoDeletesInList || [], field]
70840
+ };
70841
+ } else if (value2 && fieldOperations?.length > 0) {
70842
+ this.operations[id].fields[field] = fieldOperations.filter(
70843
+ (op) => op.kind !== "remove" || op.id !== value2
70844
+ );
70845
+ }
70846
+ }
70847
+ this.links[id] = {
70848
+ ...this.links[id],
70849
+ [field]: value
70850
+ };
70851
+ return this.id;
70852
+ }
70853
+ isDisplayLayer(displayLayers) {
70854
+ return displayLayers.length === 0 || displayLayers.includes(this.id) || Math.max(...displayLayers) < this.id;
70855
+ }
70856
+ clear() {
70857
+ this.links = {};
70858
+ this.fields = {};
70859
+ this.operations = {};
70860
+ this.deletedIDs = /* @__PURE__ */ new Set();
70861
+ }
70862
+ replaceID({ from, to }) {
70863
+ this.fields[to] = this.fields[from];
70864
+ this.links[to] = this.links[from];
70865
+ this.operations[to] = this.operations[from] || { fields: {} };
70866
+ if (this.deletedIDs.has(from)) {
70867
+ this.deletedIDs.add(to);
70868
+ }
70869
+ }
70870
+ removeUndefinedFields() {
70871
+ for (const [id, fields] of Object.entries(this.fields)) {
70872
+ for (const [field, value] of Object.entries(fields)) {
70873
+ if (typeof value === "undefined") {
70874
+ try {
70875
+ delete this.fields[id][field];
70876
+ } catch {
70877
+ }
70878
+ try {
70879
+ delete this.links[id][field];
70880
+ } catch {
70881
+ }
70882
+ }
70883
+ }
70884
+ if (Object.keys(fields || {}).length === 0) {
70885
+ delete this.fields[id];
70886
+ }
70887
+ if (Object.keys(this.links[id] || {}).length === 0) {
70888
+ delete this.links[id];
70889
+ }
70890
+ }
70891
+ }
70892
+ delete(id) {
70893
+ this.operations = {
70894
+ ...this.operations,
70895
+ [id]: {
70896
+ ...this.operations[id],
70897
+ deleted: true,
70898
+ undoDeletesInList: []
70899
+ }
70900
+ };
70901
+ this.deletedIDs.add(id);
70902
+ }
70903
+ deleteField(id, field) {
70904
+ this.fields[id] = {
70905
+ ...this.fields[id],
70906
+ [field]: void 0
70907
+ };
70908
+ }
70909
+ insert(id, field, where, target) {
70910
+ this.addFieldOperation(id, field, {
70911
+ kind: OperationKind.insert,
70912
+ id: target,
70913
+ location: where
70914
+ });
70915
+ }
70916
+ remove(id, field, target) {
70917
+ this.addFieldOperation(id, field, {
70918
+ kind: OperationKind.remove,
70919
+ id: target
70920
+ });
70921
+ }
70922
+ writeLayer(layer) {
70923
+ if (layer.id === this.id) {
70924
+ return;
70925
+ }
70926
+ for (const [id, ops] of Object.entries(layer.operations)) {
70927
+ const fields = {};
70928
+ for (const opMap of [this.operations[id], layer.operations[id]].filter(Boolean)) {
70929
+ for (const [fieldName, operations] of Object.entries(opMap.fields || {})) {
70930
+ fields[fieldName] = [...fields[fieldName] || [], ...operations];
70931
+ }
70932
+ }
70933
+ if (Object.keys(fields).length > 0) {
70934
+ this.operations[id] = {
70935
+ ...this.operations[id],
70936
+ fields
70937
+ };
70938
+ }
70939
+ if (ops?.deleted) {
70940
+ delete this.fields[id];
70941
+ delete this.links[id];
70942
+ }
70943
+ }
70944
+ for (const [id, values] of Object.entries(layer.fields)) {
70945
+ if (!values) {
70946
+ continue;
70947
+ }
70948
+ for (const [field, value] of Object.entries(values)) {
70949
+ this.writeField(id, field, value);
70950
+ }
70951
+ }
70952
+ for (const [id, values] of Object.entries(layer.links)) {
70953
+ if (!values) {
70954
+ continue;
70955
+ }
70956
+ for (const [field, value] of Object.entries(values)) {
70957
+ this.writeLink(id, field, value);
70958
+ }
70959
+ }
70960
+ layer.deletedIDs.forEach((v) => this.deletedIDs.add(v));
70961
+ }
70962
+ addFieldOperation(id, field, operation) {
70963
+ this.operations = {
70964
+ ...this.operations,
70965
+ [id]: {
70966
+ ...this.operations[id],
70967
+ fields: {
70968
+ [field]: [...this.operations[id]?.fields[field] || [], operation]
70969
+ }
70970
+ }
70971
+ };
70972
+ }
70973
+ };
70974
+ function isDeleteOperation(value) {
70975
+ return !!value && value.kind === OperationKind.delete;
70976
+ }
70977
+ function isInsertOperation(value) {
70978
+ return !!value && value.kind === OperationKind.insert;
70979
+ }
70980
+ function isRemoveOperation(value) {
70981
+ return !!value && value.kind === OperationKind.remove;
70982
+ }
70983
+ var OperationLocation = {
70984
+ start: "start",
70985
+ end: "end"
70986
+ };
70987
+ var OperationKind = {
70988
+ delete: "delete",
70989
+ insert: "insert",
70990
+ remove: "remove"
70991
+ };
70992
+
70993
+ // src/runtime/cache/stuff.ts
70994
+ function evaluateKey(key, variables = {}) {
70995
+ let evaluated = "";
70996
+ let varName = "";
70997
+ let inString = false;
70998
+ for (const char of key) {
70999
+ if (varName) {
71000
+ if (varChars.includes(char)) {
71001
+ varName += char;
71002
+ continue;
71003
+ }
71004
+ const value = variables[varName.slice(1)];
71005
+ evaluated += typeof value !== "undefined" ? JSON.stringify(value) : "undefined";
71006
+ varName = "";
71007
+ }
71008
+ if (char === "$" && !inString) {
71009
+ varName = "$";
71010
+ continue;
71011
+ }
71012
+ if (char === '"') {
71013
+ inString = !inString;
71014
+ }
71015
+ evaluated += char;
71016
+ }
71017
+ return evaluated;
71018
+ }
71019
+ var varChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789";
71020
+
71021
+ // src/runtime/cache/subscription.ts
71022
+ var InMemorySubscriptions = class {
71023
+ cache;
71024
+ constructor(cache) {
71025
+ this.cache = cache;
71026
+ }
71027
+ subscribers = {};
71028
+ referenceCounts = {};
71029
+ keyVersions = {};
71030
+ add({
71031
+ parent,
71032
+ spec,
71033
+ selection: selection2,
71034
+ variables,
71035
+ parentType
71036
+ }) {
71037
+ const __typename = this.cache._internal_unstable.storage.get(parent, "__typename").value;
71038
+ let targetSelection = getFieldsForType(selection2, __typename);
71039
+ for (const fieldSelection of Object.values(targetSelection || {})) {
71040
+ const { keyRaw, selection: innerSelection, type, list, filters } = fieldSelection;
71041
+ const key = evaluateKey(keyRaw, variables);
71042
+ let targetSelection2;
71043
+ if (innerSelection) {
71044
+ const __typename2 = this.cache._internal_unstable.storage.get(parent, "__typename").value;
71045
+ targetSelection2 = getFieldsForType(innerSelection, __typename2);
71046
+ }
71047
+ this.addFieldSubscription({
71048
+ id: parent,
71049
+ key,
71050
+ selection: [spec, targetSelection2],
71051
+ type
71052
+ });
71053
+ if (list) {
71054
+ this.registerList({
71055
+ list,
71056
+ filters,
71057
+ id: parent,
71058
+ key,
71059
+ variables,
71060
+ selection: innerSelection,
71061
+ parentType: parentType || spec.rootType
71062
+ });
71063
+ }
71064
+ if (innerSelection) {
71065
+ const { value: linkedRecord } = this.cache._internal_unstable.storage.get(
71066
+ parent,
71067
+ key
71068
+ );
71069
+ let children = !Array.isArray(linkedRecord) ? [linkedRecord] : flatten(linkedRecord) || [];
71070
+ for (const child of children) {
71071
+ if (!child) {
71072
+ continue;
71073
+ }
71074
+ this.add({
71075
+ parent: child,
71076
+ spec,
71077
+ selection: innerSelection,
71078
+ variables,
71079
+ parentType: type
71080
+ });
71081
+ }
71082
+ }
71083
+ }
71084
+ }
71085
+ addFieldSubscription({
71086
+ id,
71087
+ key,
71088
+ selection: selection2,
71089
+ type
71090
+ }) {
71091
+ const spec = selection2[0];
71092
+ if (!this.subscribers[id]) {
71093
+ this.subscribers[id] = {};
71094
+ }
71095
+ if (!this.subscribers[id][key]) {
71096
+ this.subscribers[id][key] = [];
71097
+ }
71098
+ if (!this.keyVersions[key]) {
71099
+ this.keyVersions[key] = /* @__PURE__ */ new Set();
71100
+ }
71101
+ this.keyVersions[key].add(key);
71102
+ if (!this.subscribers[id][key].map(([{ set }]) => set).includes(spec.set)) {
71103
+ this.subscribers[id][key].push([spec, selection2[1]]);
71104
+ }
71105
+ if (!this.referenceCounts[id]) {
71106
+ this.referenceCounts[id] = {};
71107
+ }
71108
+ if (!this.referenceCounts[id][key]) {
71109
+ this.referenceCounts[id][key] = /* @__PURE__ */ new Map();
71110
+ }
71111
+ const counts = this.referenceCounts[id][key];
71112
+ counts.set(spec.set, (counts.get(spec.set) || 0) + 1);
71113
+ this.cache._internal_unstable.lifetimes.resetLifetime(id, key);
71114
+ const { selection: innerSelection } = selection2[1]?.[key] ?? {};
71115
+ }
71116
+ registerList({
71117
+ list,
71118
+ id,
71119
+ key,
71120
+ parentType,
71121
+ selection: selection2,
71122
+ filters,
71123
+ variables
71124
+ }) {
71125
+ this.cache._internal_unstable.lists.add({
71126
+ name: list.name,
71127
+ connection: list.connection,
71128
+ recordID: id,
71129
+ recordType: this.cache._internal_unstable.storage.get(id, "__typename")?.value || parentType,
71130
+ listType: list.type,
71131
+ key,
71132
+ selection: selection2,
71133
+ filters: Object.entries(filters || {}).reduce((acc, [key2, { kind, value }]) => {
71134
+ return {
71135
+ ...acc,
71136
+ [key2]: kind !== "Variable" ? value : variables[value]
71137
+ };
71138
+ }, {})
71139
+ });
71140
+ }
71141
+ addMany({
71142
+ parent,
71143
+ variables,
71144
+ subscribers,
71145
+ parentType
71146
+ }) {
71147
+ for (const [spec, targetSelection] of subscribers) {
71148
+ for (const selection2 of Object.values(targetSelection ?? {})) {
71149
+ const {
71150
+ type: linkedType,
71151
+ keyRaw,
71152
+ selection: innerSelection,
71153
+ list,
71154
+ filters
71155
+ } = selection2;
71156
+ const key = evaluateKey(keyRaw, variables);
71157
+ const fieldSelection = innerSelection ? getFieldsForType(innerSelection, parentType) : void 0;
71158
+ this.addFieldSubscription({
71159
+ id: parent,
71160
+ key,
71161
+ selection: [spec, fieldSelection],
71162
+ type: linkedType
71163
+ });
71164
+ if (list) {
71165
+ this.registerList({
71166
+ list,
71167
+ filters,
71168
+ id: parent,
71169
+ key,
71170
+ variables,
71171
+ selection: innerSelection,
71172
+ parentType: parentType || spec.rootType
71173
+ });
71174
+ }
71175
+ const childSelection = selection2.selection;
71176
+ if (childSelection) {
71177
+ const { value: link } = this.cache._internal_unstable.storage.get(parent, key);
71178
+ const children = !Array.isArray(link) ? [link] : flatten(link);
71179
+ for (const linkedRecord of children) {
71180
+ if (!linkedRecord) {
71181
+ continue;
71182
+ }
71183
+ const __typename = this.cache._internal_unstable.storage.get(
71184
+ linkedRecord,
71185
+ "__typename"
71186
+ ).value;
71187
+ let targetSelection2 = getFieldsForType(childSelection, __typename);
71188
+ this.addMany({
71189
+ parent: linkedRecord,
71190
+ variables,
71191
+ subscribers: subscribers.map(([sub]) => [sub, targetSelection2]),
71192
+ parentType: linkedType
71193
+ });
71194
+ }
71195
+ }
71196
+ }
71197
+ }
71198
+ }
71199
+ get(id, field) {
71200
+ return this.subscribers[id]?.[field] || [];
71201
+ }
71202
+ remove(id, selection2, targets, variables, visited = []) {
71203
+ visited.push(id);
71204
+ const linkedIDs = [];
71205
+ const __typename = this.cache._internal_unstable.storage.get(id, "__typename").value;
71206
+ let targetSelection = getFieldsForType(selection2, __typename);
71207
+ for (const fieldSelection of Object.values(targetSelection || {})) {
71208
+ const key = evaluateKey(fieldSelection.keyRaw, variables);
71209
+ this.removeSubscribers(id, key, targets);
71210
+ if (!fieldSelection.selection) {
71211
+ continue;
71212
+ }
71213
+ const { value: previousValue } = this.cache._internal_unstable.storage.get(id, key);
71214
+ const links = !Array.isArray(previousValue) ? [previousValue] : flatten(previousValue);
71215
+ for (const link of links) {
71216
+ if (link !== null) {
71217
+ linkedIDs.push([link, fieldSelection.selection || {}]);
71218
+ }
71219
+ }
71220
+ }
71221
+ for (const [linkedRecordID, linkFields] of linkedIDs) {
71222
+ this.remove(linkedRecordID, linkFields, targets, visited);
71223
+ }
71224
+ }
71225
+ removeSubscribers(id, fieldName, specs) {
71226
+ let targets = [];
71227
+ for (const spec of specs) {
71228
+ if (!this.referenceCounts[id]?.[fieldName]?.has(spec.set)) {
71229
+ continue;
71230
+ }
71231
+ const counts = this.referenceCounts[id][fieldName];
71232
+ const newVal = (counts.get(spec.set) || 0) - 1;
71233
+ counts.set(spec.set, newVal);
71234
+ if (newVal <= 0) {
71235
+ targets.push(spec.set);
71236
+ counts.delete(spec.set);
71237
+ }
71238
+ }
71239
+ if (this.subscribers[id]) {
71240
+ this.subscribers[id][fieldName] = this.get(id, fieldName).filter(
71241
+ ([{ set }]) => !targets.includes(set)
71242
+ );
71243
+ }
71244
+ }
71245
+ removeAllSubscribers(id, targets, visited = []) {
71246
+ visited.push(id);
71247
+ for (const field of Object.keys(this.subscribers[id] || [])) {
71248
+ const subscribers = targets || this.subscribers[id][field].map(([spec]) => spec);
71249
+ this.removeSubscribers(id, field, subscribers);
71250
+ const { value, kind } = this.cache._internal_unstable.storage.get(id, field);
71251
+ if (kind === "scalar") {
71252
+ continue;
71253
+ }
71254
+ const nextTargets = Array.isArray(value) ? flatten(value) : [value];
71255
+ for (const id2 of nextTargets) {
71256
+ if (visited.includes(id2)) {
71257
+ continue;
71258
+ }
71259
+ this.removeAllSubscribers(id2, subscribers, visited);
71260
+ }
71261
+ }
71262
+ }
71263
+ };
71264
+
71265
+ // src/runtime/cache/cache.ts
71266
+ var Cache = class {
71267
+ _internal_unstable;
71268
+ constructor(config2) {
71269
+ this._internal_unstable = new CacheInternal({
71270
+ cache: this,
71271
+ storage: new InMemoryStorage(),
71272
+ subscriptions: new InMemorySubscriptions(this),
71273
+ lists: new ListManager(this, rootID),
71274
+ lifetimes: new GarbageCollector(this),
71275
+ staleManager: new StaleManager(this),
71276
+ schema: new SchemaManager(this)
71277
+ });
71278
+ if (config2) {
71279
+ this.setConfig(defaultConfigValues(config2));
71280
+ }
71281
+ }
71282
+ write({
71283
+ layer: layerID,
71284
+ notifySubscribers = [],
71285
+ ...args
71286
+ }) {
71287
+ const layer = layerID ? this._internal_unstable.storage.getLayer(layerID) : this._internal_unstable.storage.topLayer;
71288
+ const subscribers = this._internal_unstable.writeSelection({ ...args, layer }).map((sub) => sub[0]);
71289
+ const notified = [];
71290
+ for (const spec of subscribers.concat(notifySubscribers)) {
71291
+ if (!notified.includes(spec.set)) {
71292
+ notified.push(spec.set);
71293
+ spec.set(
71294
+ this._internal_unstable.getSelection({
71295
+ parent: spec.parentID || rootID,
71296
+ selection: spec.selection,
71297
+ variables: spec.variables?.() || {}
71298
+ }).data
71299
+ );
71300
+ }
71301
+ }
71302
+ return subscribers;
71303
+ }
71304
+ read(...args) {
71305
+ const { data, partial, stale, hasData } = this._internal_unstable.getSelection(...args);
71306
+ if (!hasData) {
71307
+ return { data: null, partial: false, stale: false };
71308
+ }
71309
+ return {
71310
+ data,
71311
+ partial,
71312
+ stale
71313
+ };
71314
+ }
71315
+ subscribe(spec, variables = {}) {
71316
+ return this._internal_unstable.subscriptions.add({
71317
+ parent: spec.parentID || rootID,
71318
+ spec,
71319
+ selection: spec.selection,
71320
+ variables
71321
+ });
71322
+ }
71323
+ unsubscribe(spec, variables = {}) {
71324
+ return this._internal_unstable.subscriptions.remove(
71325
+ spec.parentID || rootID,
71326
+ spec.selection,
71327
+ [spec],
71328
+ variables
71329
+ );
71330
+ }
71331
+ list(name, parentID, allLists) {
71332
+ const handler = this._internal_unstable.lists.get(name, parentID, allLists);
71333
+ if (!handler) {
71334
+ throw new Error(
71335
+ `Cannot find list with name: ${name}${parentID ? " under parent " + parentID : ""}. Is it possible that the query is not mounted?`
71336
+ );
71337
+ }
71338
+ return handler;
71339
+ }
71340
+ delete(id) {
71341
+ this._internal_unstable.subscriptions.removeAllSubscribers(id);
71342
+ this._internal_unstable.lists.removeIDFromAllLists(id);
71343
+ this._internal_unstable.storage.delete(id);
71344
+ }
71345
+ setConfig(config2) {
71346
+ this._internal_unstable.setConfig(config2);
71347
+ }
71348
+ markTypeStale(options) {
71349
+ if (!options) {
71350
+ this._internal_unstable.staleManager.markAllStale();
71351
+ } else if (!options.field) {
71352
+ this._internal_unstable.staleManager.markTypeStale(options.type);
71353
+ } else {
71354
+ this._internal_unstable.staleManager.markTypeFieldStale(
71355
+ options.type,
71356
+ options.field,
71357
+ options.when
71358
+ );
71359
+ }
71360
+ }
71361
+ markRecordStale(id, options) {
71362
+ if (options.field) {
71363
+ const key = computeKey({ field: options.field, args: options.when ?? {} });
71364
+ this._internal_unstable.staleManager.markFieldStale(id, key);
71365
+ } else {
71366
+ this._internal_unstable.staleManager.markRecordStale(id);
71367
+ }
71368
+ }
71369
+ getFieldTime(id, field) {
71370
+ return this._internal_unstable.staleManager.getFieldTime(id, field);
71371
+ }
71372
+ };
71373
+ var CacheInternal = class {
71374
+ _disabled = false;
71375
+ config = defaultConfigValues({
71376
+ plugins: {
71377
+ "houdini-svelte": {
71378
+ client: ""
71379
+ }
71380
+ }
71381
+ });
71382
+ storage;
71383
+ subscriptions;
71384
+ lists;
71385
+ cache;
71386
+ lifetimes;
71387
+ staleManager;
71388
+ schema;
71389
+ constructor({
71390
+ storage,
71391
+ subscriptions,
71392
+ lists,
71393
+ cache,
71394
+ lifetimes,
71395
+ staleManager,
71396
+ schema
71397
+ }) {
71398
+ this.storage = storage;
71399
+ this.subscriptions = subscriptions;
71400
+ this.lists = lists;
71401
+ this.cache = cache;
71402
+ this.lifetimes = lifetimes;
71403
+ this.staleManager = staleManager;
71404
+ this.schema = schema;
71405
+ this._disabled = typeof globalThis.window === "undefined";
71406
+ try {
71407
+ if (process.env.HOUDINI_TEST === "true") {
71408
+ this._disabled = false;
71409
+ }
71410
+ } catch {
71411
+ }
71412
+ }
71413
+ setConfig(config2) {
71414
+ this.config = config2;
71415
+ }
71416
+ writeSelection({
71417
+ data,
71418
+ selection: selection2,
71419
+ variables = {},
71420
+ parent = rootID,
71421
+ applyUpdates,
71422
+ layer,
71423
+ toNotify = [],
71424
+ forceNotify,
71425
+ forceStale
71426
+ }) {
71427
+ if (this._disabled) {
71428
+ return [];
71429
+ }
71430
+ let targetSelection = getFieldsForType(selection2, data["__typename"]);
71431
+ for (const [field, value] of Object.entries(data)) {
71432
+ if (!selection2 || !targetSelection[field]) {
71433
+ throw new Error(
71434
+ "Could not find field listing in selection for " + field + " @ " + JSON.stringify(selection2)
71435
+ );
71436
+ }
71437
+ let {
71438
+ type: linkedType,
71439
+ keyRaw,
71440
+ selection: fieldSelection,
71441
+ operations,
71442
+ abstract: isAbstract,
71443
+ updates,
71444
+ nullable
71445
+ } = targetSelection[field];
71446
+ const key = evaluateKey(keyRaw, variables);
71447
+ this.schema.setFieldType({
71448
+ parent,
71449
+ key: keyRaw,
71450
+ type: linkedType,
71451
+ nullable,
71452
+ link: !!fieldSelection
71453
+ });
71454
+ const currentSubscribers = this.subscriptions.get(parent, key);
71455
+ const specs = currentSubscribers.map((sub) => sub[0]);
71456
+ const { value: previousValue, displayLayers } = this.storage.get(parent, key);
71457
+ const displayLayer = layer.isDisplayLayer(displayLayers);
71458
+ if (displayLayer) {
71459
+ this.lifetimes.resetLifetime(parent, key);
71460
+ if (forceStale) {
71461
+ this.staleManager.markFieldStale(parent, key);
71462
+ } else {
71463
+ this.staleManager.setFieldTimeToNow(parent, key);
71464
+ }
71465
+ }
71466
+ if (!fieldSelection) {
71467
+ let newValue = value;
71468
+ if (updates && applyUpdates && Array.isArray(value)) {
71469
+ for (const update of applyUpdates) {
71470
+ if (!updates.includes(update)) {
71471
+ continue;
71472
+ }
71473
+ if (update === "append") {
71474
+ newValue = (previousValue || []).concat(value);
71475
+ } else if (update === "prepend") {
71476
+ newValue = value.concat(previousValue || []);
71477
+ }
71478
+ }
71479
+ }
71480
+ if (updates && applyUpdates?.includes("prepend") && ["endCursor", "hasNextPage"].includes(key)) {
71481
+ newValue = previousValue;
71482
+ } else if (updates && applyUpdates?.includes("append") && ["startCursor", "hasPreviousPage"].includes(key)) {
71483
+ newValue = previousValue;
71484
+ }
71485
+ const valueChanged = !deepEquals(newValue, previousValue);
71486
+ if (displayLayer && (valueChanged || forceNotify)) {
71487
+ toNotify.push(...currentSubscribers);
71488
+ }
71489
+ layer.writeField(parent, key, newValue);
71490
+ } else if (value === null) {
71491
+ if (previousValue === null) {
71492
+ continue;
71493
+ }
71494
+ const previousLinks = flatten([previousValue]);
71495
+ for (const link of previousLinks) {
71496
+ this.subscriptions.remove(link, fieldSelection, specs, variables);
71497
+ }
71498
+ layer.writeLink(parent, key, null);
71499
+ toNotify.push(...currentSubscribers);
71500
+ } else if (value instanceof Object && !Array.isArray(value)) {
71501
+ if (isAbstract) {
71502
+ if (!value.__typename) {
71503
+ throw new Error(
71504
+ "Encountered interface type without __typename in the payload"
71505
+ );
71506
+ }
71507
+ linkedType = value.__typename;
71508
+ }
71509
+ const embedded = this.idFields(linkedType)?.filter(
71510
+ (field2) => typeof value[field2] === "undefined"
71511
+ ).length > 0;
71512
+ let linkedID = null;
71513
+ if (value !== null) {
71514
+ linkedID = !embedded ? this.id(linkedType, value) : `${parent}.${key}`;
71515
+ }
71516
+ let linkChange = linkedID !== previousValue;
71517
+ layer.writeLink(parent, key, linkedID);
71518
+ if (linkedID && displayLayer && (linkChange || forceNotify)) {
71519
+ if (previousValue && typeof previousValue === "string") {
71520
+ this.subscriptions.remove(previousValue, fieldSelection, specs, variables);
71521
+ }
71522
+ this.subscriptions.addMany({
71523
+ parent: linkedID,
71524
+ subscribers: currentSubscribers,
71525
+ variables,
71526
+ parentType: linkedType
71527
+ });
71528
+ toNotify.push(...currentSubscribers);
71529
+ }
71530
+ if (linkedID) {
71531
+ this.writeSelection({
71532
+ selection: fieldSelection,
71533
+ parent: linkedID,
71534
+ data: value,
71535
+ variables,
71536
+ toNotify,
71537
+ applyUpdates,
71538
+ layer,
71539
+ forceNotify
71540
+ });
71541
+ }
71542
+ } else if (Array.isArray(value) && (typeof previousValue === "undefined" || Array.isArray(previousValue))) {
71543
+ let oldIDs = [...previousValue || []];
71544
+ const emptyEdges = !updates ? [] : oldIDs.map((id) => {
71545
+ if (!id) {
71546
+ return "";
71547
+ }
71548
+ const { value: cursorField } = this.storage.get(id, "cursor");
71549
+ if (cursorField) {
71550
+ return "";
71551
+ }
71552
+ const { value: node } = this.storage.get(id, "node");
71553
+ if (!node) {
71554
+ return "";
71555
+ }
71556
+ return node;
71557
+ });
71558
+ let linkedIDs = [];
71559
+ const { newIDs, nestedIDs } = this.extractNestedListIDs({
71560
+ value,
71561
+ abstract: Boolean(isAbstract),
71562
+ specs: toNotify,
71563
+ applyUpdates,
71564
+ recordID: parent,
71565
+ key,
71566
+ linkedType,
71567
+ variables,
71568
+ fields: fieldSelection,
71569
+ layer,
71570
+ forceNotify
71571
+ });
71572
+ if (applyUpdates && updates) {
71573
+ if (key === "edges") {
71574
+ const newNodeIDs = [];
71575
+ for (const id of newIDs) {
71576
+ if (!id) {
71577
+ continue;
71578
+ }
71579
+ const { value: node } = this.storage.get(id, "node");
71580
+ if (typeof node !== "string") {
71581
+ continue;
71582
+ }
71583
+ if (!node || !this.storage.get(node, "__typename")) {
71584
+ continue;
71585
+ }
71586
+ newNodeIDs.push(node);
71587
+ }
71588
+ oldIDs = oldIDs.filter((id) => {
71589
+ if (!id) {
71590
+ return true;
71591
+ }
71592
+ const { value: value2 } = this.storage.get(id, "node");
71593
+ const node = value2;
71594
+ if (newNodeIDs.includes(node) && emptyEdges.includes(node)) {
71595
+ return false;
71596
+ }
71597
+ return true;
71598
+ });
71599
+ }
71600
+ for (const update of applyUpdates) {
71601
+ if (update !== "replace" && !updates.includes(update)) {
71602
+ continue;
71603
+ }
71604
+ if (update === "prepend") {
71605
+ linkedIDs = newIDs.concat(oldIDs);
71606
+ } else if (update === "append") {
71607
+ linkedIDs = oldIDs.concat(newIDs);
71608
+ } else if (update === "replace") {
71609
+ linkedIDs = newIDs;
71610
+ }
71611
+ }
71612
+ } else {
71613
+ linkedIDs = nestedIDs;
71614
+ }
71615
+ const contentChanged = !deepEquals(linkedIDs, oldIDs);
71616
+ if (contentChanged || forceNotify) {
71617
+ toNotify.push(...currentSubscribers);
71618
+ }
71619
+ for (const lostID of oldIDs) {
71620
+ if (linkedIDs.includes(lostID) || !lostID) {
71621
+ continue;
71622
+ }
71623
+ this.subscriptions.remove(lostID, fieldSelection, specs, variables);
71624
+ }
71625
+ if (contentChanged || oldIDs.length === 0 && newIDs.length === 0) {
71626
+ layer.writeLink(parent, key, linkedIDs);
71627
+ }
71628
+ for (const id of newIDs.filter((id2) => !oldIDs.includes(id2))) {
71629
+ if (id == null) {
71630
+ continue;
71631
+ }
71632
+ this.subscriptions.addMany({
71633
+ parent: id,
71634
+ subscribers: currentSubscribers,
71635
+ variables,
71636
+ parentType: linkedType
71637
+ });
71638
+ }
71639
+ }
71640
+ for (const operation of operations || []) {
71641
+ let parentID;
71642
+ if (operation.parentID) {
71643
+ if (operation.parentID.kind !== "Variable") {
71644
+ parentID = operation.parentID.value;
71645
+ } else {
71646
+ const id = variables[operation.parentID.value];
71647
+ if (typeof id !== "string") {
71648
+ throw new Error("parentID value must be a string");
71649
+ }
71650
+ parentID = id;
71651
+ }
71652
+ }
71653
+ if (operation.list && !this.lists.get(operation.list, parentID, operation.target === "all")) {
71654
+ continue;
71655
+ }
71656
+ const targets = Array.isArray(value) ? value : [value];
71657
+ for (const target of targets) {
71658
+ if (operation.action === "insert" && target instanceof Object && fieldSelection && operation.list) {
71659
+ this.cache.list(operation.list, parentID, operation.target === "all").when(operation.when).addToList(
71660
+ fieldSelection,
71661
+ target,
71662
+ variables,
71663
+ operation.position || "last"
71664
+ );
71665
+ } else if (operation.action === "remove" && target instanceof Object && fieldSelection && operation.list) {
71666
+ this.cache.list(operation.list, parentID, operation.target === "all").when(operation.when).remove(target, variables);
71667
+ } else if (operation.action === "delete" && operation.type) {
71668
+ if (typeof target !== "string") {
71669
+ throw new Error("Cannot delete a record with a non-string ID");
71670
+ }
71671
+ const targetID = this.id(operation.type, target);
71672
+ if (!targetID) {
71673
+ continue;
71674
+ }
71675
+ this.cache.delete(targetID);
71676
+ } else if (operation.action === "toggle" && target instanceof Object && fieldSelection && operation.list) {
71677
+ this.cache.list(operation.list, parentID, operation.target === "all").when(operation.when).toggleElement(
71678
+ fieldSelection,
71679
+ target,
71680
+ variables,
71681
+ operation.position || "last"
71682
+ );
71683
+ }
71684
+ }
71685
+ }
71686
+ }
71687
+ return toNotify;
71688
+ }
71689
+ getSelection({
71690
+ selection: selection2,
71691
+ parent = rootID,
71692
+ variables,
71693
+ stepsFromConnection = null
71694
+ }) {
71695
+ if (parent === null) {
71696
+ return { data: null, partial: false, stale: false, hasData: true };
71697
+ }
71698
+ const target = {};
71699
+ let hasData = false;
71700
+ let partial = false;
71701
+ let cascadeNull = false;
71702
+ let stale = false;
71703
+ const typename = this.storage.get(parent, "__typename").value;
71704
+ let targetSelection = getFieldsForType(selection2, typename);
71705
+ for (const [
71706
+ attributeName,
71707
+ { type, keyRaw, selection: fieldSelection, nullable, list }
71708
+ ] of Object.entries(targetSelection)) {
71709
+ const key = evaluateKey(keyRaw, variables);
71710
+ const { value } = this.storage.get(parent, key);
71711
+ const dt_field = this.staleManager.getFieldTime(parent, key);
71712
+ if (dt_field === null) {
71713
+ stale = true;
71714
+ }
71715
+ let nextStep = stepsFromConnection;
71716
+ if (nextStep !== null) {
71717
+ if (nextStep >= 2) {
71718
+ nextStep = null;
71719
+ } else {
71720
+ nextStep += 1;
71721
+ }
71722
+ }
71723
+ if (list?.connection) {
71724
+ nextStep = 0;
71725
+ }
71726
+ const embeddedCursor = key === "cursor" && stepsFromConnection === 1;
71727
+ if (typeof value === "undefined" && !embeddedCursor) {
71728
+ partial = true;
71729
+ }
71730
+ if (typeof value === "undefined" || value === null) {
71731
+ target[attributeName] = null;
71732
+ if (typeof value !== "undefined") {
71733
+ hasData = true;
71734
+ }
71735
+ } else if (!fieldSelection) {
71736
+ const fnUnmarshal = this.config?.scalars?.[type]?.unmarshal;
71737
+ if (fnUnmarshal) {
71738
+ target[attributeName] = fnUnmarshal(value);
71739
+ } else {
71740
+ target[attributeName] = value;
71741
+ }
71742
+ hasData = true;
71743
+ } else if (Array.isArray(value)) {
71744
+ const listValue = this.hydrateNestedList({
71745
+ fields: fieldSelection,
71746
+ variables,
71747
+ linkedList: value,
71748
+ stepsFromConnection: nextStep
71749
+ });
71750
+ target[attributeName] = listValue.data;
71751
+ if (listValue.partial) {
71752
+ partial = true;
71753
+ }
71754
+ if (listValue.stale) {
71755
+ stale = true;
71756
+ }
71757
+ if (listValue.hasData || value.length === 0) {
71758
+ hasData = true;
71759
+ }
71760
+ } else {
71761
+ const objectFields = this.getSelection({
71762
+ parent: value,
71763
+ selection: fieldSelection,
71764
+ variables,
71765
+ stepsFromConnection: nextStep
71766
+ });
71767
+ target[attributeName] = objectFields.data;
71768
+ if (objectFields.partial) {
71769
+ partial = true;
71770
+ }
71771
+ if (objectFields.stale) {
71772
+ stale = true;
71773
+ }
71774
+ if (objectFields.hasData) {
71775
+ hasData = true;
71776
+ }
71777
+ }
71778
+ if (target[attributeName] === null && !nullable && !embeddedCursor) {
71779
+ cascadeNull = true;
71780
+ }
71781
+ }
71782
+ return {
71783
+ data: cascadeNull ? null : target,
71784
+ partial: hasData && partial,
71785
+ stale: hasData && stale,
71786
+ hasData
71787
+ };
71788
+ }
71789
+ id(type, data) {
71790
+ const id = typeof data === "string" ? data : this.computeID(type, data);
71791
+ if (!id) {
71792
+ return null;
71793
+ }
71794
+ if (!type) {
71795
+ return id;
71796
+ }
71797
+ return type + ":" + id;
71798
+ }
71799
+ idFields(type) {
71800
+ return keyFieldsForType(this.config, type);
71801
+ }
71802
+ computeID(type, data) {
71803
+ return computeID(this.config, type, data);
71804
+ }
71805
+ hydrateNestedList({
71806
+ fields,
71807
+ variables,
71808
+ linkedList,
71809
+ stepsFromConnection
71810
+ }) {
71811
+ const result = [];
71812
+ let partialData = false;
71813
+ let stale = false;
71814
+ let hasValues = false;
71815
+ for (const entry of linkedList) {
71816
+ if (Array.isArray(entry)) {
71817
+ const nestedValue = this.hydrateNestedList({
71818
+ fields,
71819
+ variables,
71820
+ linkedList: entry,
71821
+ stepsFromConnection
71822
+ });
71823
+ result.push(nestedValue.data);
71824
+ if (nestedValue.partial) {
71825
+ partialData = true;
71826
+ }
71827
+ continue;
71828
+ }
71829
+ if (entry === null) {
71830
+ result.push(entry);
71831
+ continue;
71832
+ }
71833
+ const {
71834
+ data,
71835
+ partial,
71836
+ stale: local_stale,
71837
+ hasData
71838
+ } = this.getSelection({
71839
+ parent: entry,
71840
+ selection: fields,
71841
+ variables,
71842
+ stepsFromConnection
71843
+ });
71844
+ result.push(data);
71845
+ if (partial) {
71846
+ partialData = true;
71847
+ }
71848
+ if (local_stale) {
71849
+ stale = true;
71850
+ }
71851
+ if (hasData) {
71852
+ hasValues = true;
71853
+ }
71854
+ }
71855
+ return {
71856
+ data: result,
71857
+ partial: partialData,
71858
+ stale,
71859
+ hasData: hasValues
71860
+ };
71861
+ }
71862
+ extractNestedListIDs({
71863
+ value,
71864
+ abstract,
71865
+ recordID,
71866
+ key,
71867
+ linkedType,
71868
+ fields,
71869
+ variables,
71870
+ applyUpdates,
71871
+ specs,
71872
+ layer,
71873
+ forceNotify
71874
+ }) {
71875
+ const nestedIDs = [];
71876
+ const newIDs = [];
71877
+ for (const [i2, entry] of value.entries()) {
71878
+ if (Array.isArray(entry)) {
71879
+ const inner = this.extractNestedListIDs({
71880
+ value: entry,
71881
+ abstract,
71882
+ recordID,
71883
+ key,
71884
+ linkedType,
71885
+ fields,
71886
+ variables,
71887
+ applyUpdates,
71888
+ specs,
71889
+ layer,
71890
+ forceNotify
71891
+ });
71892
+ newIDs.push(...inner.newIDs);
71893
+ nestedIDs[i2] = inner.nestedIDs;
71894
+ continue;
71895
+ }
71896
+ if (entry === null || typeof entry === "undefined") {
71897
+ newIDs.push(null);
71898
+ nestedIDs[i2] = null;
71899
+ continue;
71900
+ }
71901
+ const entryObj = entry;
71902
+ let linkedID = `${recordID}.${key}[${this.storage.nextRank}]`;
71903
+ const embedded = this.idFields(linkedType)?.filter(
71904
+ (field) => typeof entry[field] === "undefined"
71905
+ ).length > 0;
71906
+ const typename = entryObj.__typename;
71907
+ let innerType = linkedType;
71908
+ if (abstract) {
71909
+ if (!typename) {
71910
+ throw new Error("Encountered interface type without __typename in the payload");
71911
+ }
71912
+ innerType = typename;
71913
+ }
71914
+ if (!embedded) {
71915
+ const id = this.id(innerType, entry);
71916
+ if (id) {
71917
+ linkedID = id;
71918
+ } else {
71919
+ continue;
71920
+ }
71921
+ }
71922
+ this.writeSelection({
71923
+ root: rootID,
71924
+ selection: fields,
71925
+ parent: linkedID,
71926
+ data: entryObj,
71927
+ variables,
71928
+ toNotify: specs,
71929
+ applyUpdates,
71930
+ layer,
71931
+ forceNotify
71932
+ });
71933
+ newIDs.push(linkedID);
71934
+ nestedIDs[i2] = linkedID;
71935
+ }
71936
+ return { newIDs, nestedIDs };
71937
+ }
71938
+ collectGarbage() {
71939
+ this.lifetimes.tick();
71940
+ if (this.storage.layerCount === 1) {
71941
+ this.storage.topLayer.removeUndefinedFields();
71942
+ }
71943
+ }
71944
+ };
71945
+ var rootID = "_ROOT_";
71946
+
71947
+ // src/runtime/cache/index.ts
71948
+ var cache_default = new Cache();
71949
+
71950
+ // src/runtime/client/utils/documentPlugins.ts
71951
+ var documentPlugin = (kind, source) => {
71952
+ return () => {
71953
+ const sourceHandlers = source();
71954
+ const enterWrapper = (handler) => {
71955
+ return !handler ? void 0 : (ctx, handlers) => {
71956
+ if (ctx.artifact.kind !== kind) {
71957
+ return handlers.next(ctx);
71958
+ }
71959
+ return handler(ctx, handlers);
71960
+ };
71961
+ };
71962
+ const exitWrapper = (handler) => {
71963
+ return !handler ? void 0 : (ctx, handlers) => {
71964
+ if (ctx.artifact.kind !== kind) {
71965
+ return handlers.resolve(ctx);
71966
+ }
71967
+ return handler(ctx, handlers);
71968
+ };
71969
+ };
71970
+ return {
71971
+ start: enterWrapper(sourceHandlers.start),
71972
+ network: enterWrapper(sourceHandlers.network),
71973
+ afterNetwork: exitWrapper(sourceHandlers.afterNetwork),
71974
+ end: exitWrapper(sourceHandlers.end),
71975
+ catch: sourceHandlers.catch ? (ctx, handlers) => sourceHandlers.catch(ctx, handlers) : void 0,
71976
+ cleanup: (...args) => sourceHandlers.cleanup?.(...args)
71977
+ };
71978
+ };
71979
+ };
71980
+
71981
+ // src/runtime/client/plugins/query.ts
71982
+ var query = documentPlugin(ArtifactKind.Query, function() {
71983
+ let subscriptionSpec = null;
71984
+ let lastVariables = null;
71985
+ let artifactName = "";
71986
+ return {
71987
+ start(ctx, { next }) {
71988
+ ctx.variables = {
71989
+ ...lastVariables,
71990
+ ...ctx.variables
71991
+ };
71992
+ next(ctx);
71993
+ },
71994
+ end(ctx, { resolve: resolve2, marshalVariables, variablesChanged }) {
71995
+ if (variablesChanged(ctx)) {
71996
+ artifactName = ctx.artifact.name;
71997
+ if (subscriptionSpec) {
71998
+ cache_default.unsubscribe(subscriptionSpec, subscriptionSpec.variables?.() || {});
71999
+ }
72000
+ lastVariables = { ...marshalVariables(ctx) };
72001
+ subscriptionSpec = {
72002
+ rootType: ctx.artifact.rootType,
72003
+ selection: ctx.artifact.selection,
72004
+ variables: () => lastVariables,
72005
+ set: (newValue) => {
72006
+ resolve2(ctx, {
72007
+ data: newValue,
72008
+ errors: null,
72009
+ fetching: false,
72010
+ partial: false,
72011
+ stale: false,
72012
+ source: DataSource.Cache,
72013
+ variables: ctx.variables ?? {}
72014
+ });
72015
+ }
72016
+ };
72017
+ cache_default.subscribe(subscriptionSpec, lastVariables ?? {});
72018
+ }
72019
+ resolve2(ctx);
72020
+ },
72021
+ cleanup() {
72022
+ if (subscriptionSpec) {
72023
+ cache_default.unsubscribe(subscriptionSpec, subscriptionSpec.variables?.() ?? {});
72024
+ lastVariables = null;
72025
+ }
72026
+ }
72027
+ };
72028
+ });
72029
+
72030
+ // src/runtime/client/plugins/mutation.ts
72031
+ var mutation = documentPlugin(ArtifactKind.Mutation, () => {
72032
+ return {
72033
+ async start(ctx, { next, marshalVariables }) {
72034
+ const layer = cache_default._internal_unstable.storage.createLayer(true);
72035
+ const optimisticResponse = ctx.stuff.optimisticResponse;
72036
+ let toNotify = [];
72037
+ if (optimisticResponse) {
72038
+ toNotify = cache_default.write({
72039
+ selection: ctx.artifact.selection,
72040
+ data: await marshalSelection({
72041
+ selection: ctx.artifact.selection,
72042
+ data: optimisticResponse
72043
+ }),
72044
+ variables: marshalVariables(ctx),
72045
+ layer: layer.id
72046
+ });
72047
+ }
72048
+ ctx.cacheParams = {
72049
+ ...ctx.cacheParams,
72050
+ layer,
72051
+ notifySubscribers: toNotify,
72052
+ forceNotify: true
72053
+ };
72054
+ next(ctx);
72055
+ },
72056
+ afterNetwork(ctx, { resolve: resolve2 }) {
72057
+ ctx.cacheParams?.layer?.clear();
72058
+ resolve2(ctx);
72059
+ },
72060
+ end(ctx, { resolve: resolve2, value }) {
72061
+ const hasErrors = value.errors && value.errors.length > 0;
72062
+ if (hasErrors) {
72063
+ ctx.cacheParams?.layer?.clear();
72064
+ }
72065
+ if (ctx.cacheParams?.layer) {
72066
+ cache_default._internal_unstable.storage.resolveLayer(ctx.cacheParams.layer.id);
72067
+ }
72068
+ resolve2(ctx);
72069
+ },
72070
+ catch(ctx, { error }) {
72071
+ if (ctx.cacheParams?.layer) {
72072
+ const { layer } = ctx.cacheParams;
72073
+ layer.clear();
72074
+ cache_default._internal_unstable.storage.resolveLayer(layer.id);
72075
+ }
72076
+ throw error;
72077
+ }
72078
+ };
72079
+ });
72080
+
69943
72081
  // src/lib/types.ts
69944
- var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
69945
- LogLevel2["Full"] = "full";
69946
- LogLevel2["Summary"] = "summary";
69947
- LogLevel2["ShortSummary"] = "short-summary";
69948
- LogLevel2["Quiet"] = "quiet";
69949
- return LogLevel2;
69950
- })(LogLevel || {});
72082
+ var LogLevel = {
72083
+ Full: "full",
72084
+ Summary: "summary",
72085
+ ShortSummary: "short-summary",
72086
+ Quiet: "quiet"
72087
+ };
69951
72088
 
69952
72089
  // src/lib/config.ts
69953
72090
  var currentDir = global.__dirname || dirname(fileURLToPath(import.meta.url));
@@ -69998,7 +72135,7 @@ var Config = class {
69998
72135
  scalars,
69999
72136
  cacheBufferSize,
70000
72137
  definitionsPath,
70001
- defaultCachePolicy = "CacheOrNetwork" /* CacheOrNetwork */,
72138
+ defaultCachePolicy = CachePolicy.CacheOrNetwork,
70002
72139
  defaultPartial = false,
70003
72140
  defaultListPosition = "append",
70004
72141
  defaultListTarget = null,
@@ -70020,7 +72157,7 @@ var Config = class {
70020
72157
  Object.values(LogLevel)
70021
72158
  )}`
70022
72159
  );
70023
- logLevel = "summary" /* Summary */;
72160
+ logLevel = LogLevel.Summary;
70024
72161
  }
70025
72162
  this.schemaPath = schemaPath;
70026
72163
  this.filepath = filepath;
@@ -70036,7 +72173,7 @@ var Config = class {
70036
72173
  this.internalListPosition = defaultListPosition === "append" ? "last" : "first";
70037
72174
  this.defaultListTarget = defaultListTarget;
70038
72175
  this.definitionsFolder = definitionsPath;
70039
- this.logLevel = (logLevel || "summary" /* Summary */).toLowerCase();
72176
+ this.logLevel = (logLevel || LogLevel.Summary).toLowerCase();
70040
72177
  this.defaultFragmentMasking = defaultFragmentMasking;
70041
72178
  this.routesDir = join2(this.projectRoot, "src", "routes");
70042
72179
  this.schemaPollInterval = watchSchema?.interval ?? 2e3;
@@ -70377,8 +72514,10 @@ var Config = class {
70377
72514
  return node.name.value === "CachePolicy";
70378
72515
  }
70379
72516
  isInternalDirective(name) {
70380
- const internalDirectives = this.#newSchemaInstance?.getDirectives().map((directive) => directive.name) ?? [];
70381
- return internalDirectives.includes(name) || this.isDeleteDirective(name);
72517
+ const internalDirectives = this.#newSchemaInstance?.getDirectives().reduce((list, directive) => {
72518
+ return list.concat(directive.name);
72519
+ }, []) ?? [];
72520
+ return !defaultDirectives.includes(name) && (internalDirectives.includes(name) || this.isDeleteDirective(name));
70382
72521
  }
70383
72522
  isListFragment(name) {
70384
72523
  return name.endsWith(this.insertFragmentSuffix) || name.endsWith(this.removeFragmentSuffix) || name.endsWith(this.toggleFragmentSuffix);
@@ -70485,7 +72624,13 @@ async function getConfig({
70485
72624
  const plugins = pluginsNested.flat();
70486
72625
  for (const plugin2 of plugins) {
70487
72626
  if (plugin2.config) {
70488
- configFile = deepMerge(configPath, configFile, await plugin2.config(configFile));
72627
+ try {
72628
+ const configFactory = await import(plugin2.config);
72629
+ const newValue = typeof configFactory === "function" ? configFactory(configFile) : configFactory;
72630
+ configFile = deepMerge(configPath, configFile, newValue);
72631
+ } catch {
72632
+ console.log("could not load config file" + plugin2.config);
72633
+ }
70489
72634
  }
70490
72635
  }
70491
72636
  _config = new Config({
@@ -70643,6 +72788,8 @@ async function loadSchemaFile(schemaPath) {
70643
72788
  }
70644
72789
  return graphql2.buildClientSchema(jsonContents);
70645
72790
  }
72791
+ var emptySchema = graphql2.buildSchema("type Query { hello: String }");
72792
+ var defaultDirectives = emptySchema.getDirectives().map((dir) => dir.name);
70646
72793
 
70647
72794
  // src/lib/graphql.ts
70648
72795
  var graphql3 = __toESM(require_graphql2(), 1);
@@ -70659,7 +72806,7 @@ function getRootType(type) {
70659
72806
  function hashDocument({
70660
72807
  document
70661
72808
  }) {
70662
- const docString = typeof document === "string" ? document : document.artifact?.raw;
72809
+ const docString = typeof document === "string" ? document : document.originalString;
70663
72810
  return crypto.createHash("sha256").update(docString ?? "").digest("hex");
70664
72811
  }
70665
72812
  function parentTypeFromAncestors(schema, filepath, ancestors) {
@@ -71206,7 +73353,13 @@ var FieldCollection = class {
71206
73353
  if (fragment.selection.size === 0) {
71207
73354
  return [];
71208
73355
  }
71209
- fragment.astNode.selectionSet.selections = fragment.selection.toSelectionSet();
73356
+ fragment.astNode = {
73357
+ ...fragment.astNode,
73358
+ selectionSet: {
73359
+ ...fragment.astNode.selectionSet,
73360
+ selections: fragment.selection.toSelectionSet()
73361
+ }
73362
+ };
71210
73363
  return [fragment.astNode];
71211
73364
  }).concat(
71212
73365
  Object.values(this.fields).map((field) => {
@@ -71430,7 +73583,7 @@ async function fragmentVariables(config2, documents) {
71430
73583
  };
71431
73584
  documents.push({
71432
73585
  name: "generated::fragmentVariables",
71433
- kind: "HoudiniFragment" /* Fragment */,
73586
+ kind: ArtifactKind.Fragment,
71434
73587
  document: doc,
71435
73588
  originalParsed: doc,
71436
73589
  generateStore: false,
@@ -71584,26 +73737,45 @@ function fragmentArguments(config2, filepath, definition) {
71584
73737
  if (!typeArg || typeArg.kind !== "StringValue") {
71585
73738
  return [];
71586
73739
  }
71587
- let type = typeArg.value;
71588
- let name = arg.name.value;
71589
- let required = false;
73740
+ let type = parseArgumentTypeString(typeArg.value);
71590
73741
  let defaultValue = arg.value.fields?.find((arg2) => arg2.name.value === "default")?.value || null;
71591
- if (type[type.length - 1] === "!") {
71592
- type = type.slice(0, -1);
71593
- required = true;
71594
- defaultValue = null;
71595
- }
71596
73742
  return [
71597
73743
  {
71598
- name,
73744
+ name: arg.name.value,
71599
73745
  type,
71600
- required,
73746
+ required: type.kind === "NonNullType",
71601
73747
  defaultValue
71602
73748
  }
71603
73749
  ];
71604
73750
  }) || []
71605
73751
  );
71606
73752
  }
73753
+ function parseArgumentTypeString(input) {
73754
+ if (input[input.length - 1] === "!") {
73755
+ const inner = parseArgumentTypeString(input.substring(0, input.length - 1));
73756
+ if (inner.kind === "NonNullType") {
73757
+ throw new Error("invalid type" + input);
73758
+ }
73759
+ return {
73760
+ kind: "NonNullType",
73761
+ type: inner
73762
+ };
73763
+ }
73764
+ if (input[input.length - 1] === "]") {
73765
+ const inner = parseArgumentTypeString(input.substring(1, input.length - 1));
73766
+ return {
73767
+ kind: "ListType",
73768
+ type: inner
73769
+ };
73770
+ }
73771
+ return {
73772
+ kind: "NamedType",
73773
+ name: {
73774
+ kind: "Name",
73775
+ value: input
73776
+ }
73777
+ };
73778
+ }
71607
73779
  function collectDefaultArgumentValues(config2, filepath, definition) {
71608
73780
  let result = {};
71609
73781
  for (const { name, required, defaultValue } of fragmentArguments(
@@ -71666,19 +73838,9 @@ function fragmentArgumentsDefinitions(config2, filepath, definition) {
71666
73838
  return [];
71667
73839
  }
71668
73840
  return args.map((arg) => {
71669
- const innerType = {
71670
- kind: "NamedType",
71671
- name: {
71672
- kind: "Name",
71673
- value: arg.type
71674
- }
71675
- };
71676
73841
  return {
71677
73842
  kind: "VariableDefinition",
71678
- type: arg.required ? innerType : {
71679
- kind: "NonNullType",
71680
- type: innerType
71681
- },
73843
+ type: arg.type,
71682
73844
  variable: {
71683
73845
  kind: "Variable",
71684
73846
  name: {
@@ -72351,7 +74513,7 @@ async function paginate(config2, documents) {
72351
74513
  ]
72352
74514
  };
72353
74515
  newDocs.push({
72354
- kind: "HoudiniQuery" /* Query */,
74516
+ kind: ArtifactKind.Query,
72355
74517
  filename: doc.filename,
72356
74518
  name: refetchQueryName,
72357
74519
  document: queryDoc,
@@ -72771,7 +74933,7 @@ async function addListFragments(config2, documents) {
72771
74933
  config2.newDocuments += "\n" + generatedDoc.definitions.filter((c) => c.kind === "FragmentDefinition").map(graphql11.print).join("\n\n");
72772
74934
  documents.push({
72773
74935
  name: "generated::lists",
72774
- kind: "HoudiniFragment" /* Fragment */,
74936
+ kind: ArtifactKind.Fragment,
72775
74937
  generateArtifact: false,
72776
74938
  generateStore: false,
72777
74939
  document: generatedDoc,
@@ -73038,7 +75200,7 @@ function selection({
73038
75200
  (directive) => directive.name.value === config2.paginateDirective
73039
75201
  );
73040
75202
  if (paginated && document.refetch && document.refetch.method === "offset") {
73041
- fieldObj.updates = ["append" /* append */];
75203
+ fieldObj.updates = [RefetchUpdateMode.append];
73042
75204
  }
73043
75205
  let continueConnection = inConnection;
73044
75206
  if ([
@@ -73048,7 +75210,7 @@ function selection({
73048
75210
  "hasNextPage",
73049
75211
  "hasPreviousPage"
73050
75212
  ].includes(attributeName) && inConnection && document.refetch) {
73051
- fieldObj.updates = ["append" /* append */, "prepend" /* prepend */];
75213
+ fieldObj.updates = [RefetchUpdateMode.append, RefetchUpdateMode.prepend];
73052
75214
  }
73053
75215
  if (attributeName === "node" && inConnection) {
73054
75216
  continueConnection = false;
@@ -73227,7 +75389,7 @@ function artifactGenerator(stats) {
73227
75389
  );
73228
75390
  let rootType = "";
73229
75391
  let selectionSet;
73230
- if (docKind !== "HoudiniFragment" /* Fragment */) {
75392
+ if (docKind !== ArtifactKind.Fragment) {
73231
75393
  const operation = operations[0];
73232
75394
  if (operation.operation === "query") {
73233
75395
  rootType = config2.schema.getQueryType()?.name;
@@ -73260,7 +75422,7 @@ function artifactGenerator(stats) {
73260
75422
  let directive = fragments[0]?.directives?.find(
73261
75423
  (directive2) => directive2.name.value === config2.argumentsDirective
73262
75424
  );
73263
- if (docKind === "HoudiniFragment" /* Fragment */ && directive) {
75425
+ if (docKind === ArtifactKind.Fragment && directive) {
73264
75426
  inputs = fragmentArgumentsDefinitions(config2, doc.filename, fragments[0]);
73265
75427
  }
73266
75428
  const mergedSelection = flattenSelections({
@@ -73301,22 +75463,12 @@ function artifactGenerator(stats) {
73301
75463
  document: doc
73302
75464
  })
73303
75465
  };
73304
- const plugin_data = config2.plugins.reduce(
73305
- (prev, plugin2) => {
73306
- if (!plugin2.artifactData) {
73307
- return prev;
73308
- }
73309
- const result = { ...prev };
73310
- const dataToAdd = plugin2.artifactData({ config: config2, document: doc }) ?? {};
73311
- if (Object.keys(dataToAdd).length > 0) {
73312
- result[plugin2.name] = dataToAdd;
73313
- }
73314
- return result;
73315
- },
73316
- {}
73317
- );
73318
- if (Object.keys(plugin_data).length > 0) {
73319
- artifact.plugin_data = plugin_data;
75466
+ artifact.pluginData = {};
75467
+ for (const plugin2 of config2.plugins) {
75468
+ if (!plugin2.artifactData) {
75469
+ continue;
75470
+ }
75471
+ artifact.pluginData[plugin2.name] = plugin2.artifactData({ config: config2, document: doc }) ?? {};
73320
75472
  }
73321
75473
  if (inputs && inputs.length > 0) {
73322
75474
  artifact.input = inputObject(config2, inputs);
@@ -73377,7 +75529,7 @@ function artifactGenerator(stats) {
73377
75529
  return;
73378
75530
  }
73379
75531
  const match = existingArtifact && existingArtifact.match(/"HoudiniHash=(\w+)"/);
73380
- if (match && match[1] !== hash({ config: config2, document: doc })) {
75532
+ if (match && match[1] !== artifact.hash) {
73381
75533
  stats.changed.push(artifact.name);
73382
75534
  }
73383
75535
  stats.total.push(artifact.name);
@@ -73490,6 +75642,30 @@ async function generatePluginIndex({
73490
75642
  ]);
73491
75643
  }
73492
75644
 
75645
+ // src/codegen/generators/runtime/runtimeConfig.ts
75646
+ async function injectConfig({
75647
+ config: config2,
75648
+ content,
75649
+ importStatement,
75650
+ exportStatement
75651
+ }) {
75652
+ const extraConfigs = config2.plugins.reduce((acc, plugin2) => {
75653
+ if (!plugin2.config) {
75654
+ return acc;
75655
+ }
75656
+ return [...acc, plugin2.config];
75657
+ }, []);
75658
+ return extraConfigs.length > 0 ? `
75659
+ ${extraConfigs.map((plugin2, i2) => importStatement(plugin2, `plugin${i2}`))}
75660
+
75661
+ const plugins = [
75662
+ ${extraConfigs.map((_, i2) => `plugin${i2}`).join(",\n")}
75663
+ ]
75664
+
75665
+ ${exportStatement("plugins")}
75666
+ ` : content;
75667
+ }
75668
+
73493
75669
  // src/codegen/generators/runtime/index.ts
73494
75670
  async function runtimeGenerator(config2, docs) {
73495
75671
  const importStatement = config2.module === "commonjs" ? importDefaultFrom : (where, as) => `import ${as} from '${where}'`;
@@ -73500,6 +75676,9 @@ async function runtimeGenerator(config2, docs) {
73500
75676
  [path_exports.join(config2.runtimeSource, "lib", "constants.js")]: (content) => {
73501
75677
  return content.replace("SITE_URL", siteURL);
73502
75678
  },
75679
+ [path_exports.join(config2.runtimeSource, "imports", "pluginConfig.js")]: (content) => {
75680
+ return injectConfig({ config: config2, importStatement, exportStatement, content });
75681
+ },
73503
75682
  [path_exports.join(config2.runtimeSource, "imports", "config.js")]: (content) => {
73504
75683
  const configFilePath = path_exports.join(config2.runtimeDirectory, "imports", "config.js");
73505
75684
  const relativePath = path_exports.relative(path_exports.dirname(configFilePath), config2.filepath);
@@ -74557,7 +76736,7 @@ function listDefinitions(config2, body, docs) {
74557
76736
  function queryDefinitions(config2, body, docs, returnType) {
74558
76737
  return AST12.tsTupleType(
74559
76738
  docs.reduce((prev, doc) => {
74560
- if (doc.kind !== "HoudiniQuery" /* Query */ || !doc.generateStore) {
76739
+ if (doc.kind !== ArtifactKind.Query || !doc.generateStore) {
74561
76740
  return prev;
74562
76741
  }
74563
76742
  const definition = doc.document.definitions.find(
@@ -74588,7 +76767,7 @@ function queryDefinitions(config2, body, docs, returnType) {
74588
76767
  }
74589
76768
  function fragmentListMap(config2, concreteTypes, body, docs, return_type) {
74590
76769
  return docs.reduce((prev, doc) => {
74591
- if (doc.kind !== "HoudiniFragment" /* Fragment */) {
76770
+ if (doc.kind !== ArtifactKind.Fragment) {
74592
76771
  return prev;
74593
76772
  }
74594
76773
  const definition = doc.document.definitions.find(
@@ -74727,13 +76906,19 @@ async function definitionsGenerator(config2) {
74727
76906
  })
74728
76907
  )
74729
76908
  ).code;
74730
- const typeDefinitions2 = enums.sort((a, b) => a.name.value.localeCompare(b.name.value)).map(
74731
- (definition) => `
74732
- export const ${definition.name.value} = {
74733
- ${definition.values?.map((value) => ` ${value.name.value}: "${value.name.value}"`).join(",\n")}
74734
- } as const
74735
- `
74736
- ).join("");
76909
+ const typeDefinitions2 = `
76910
+ type ValuesOf<T> = T[keyof T]
76911
+ ` + enums.sort((a, b) => a.name.value.localeCompare(b.name.value)).map((definition) => {
76912
+ const name = definition.name.value;
76913
+ const values = definition.values;
76914
+ return `
76915
+ export declare const ${name}: {
76916
+ ${values?.map((value) => ` readonly ${value.name.value}: "${value.name.value}";`).join("\n")}
76917
+ }
76918
+
76919
+ export type ${name}$options = ValuesOf<typeof ${name}>
76920
+ `;
76921
+ }).join("");
74737
76922
  const definitionsIndex = `
74738
76923
  export * from './enums.js'
74739
76924
  `;
@@ -74799,10 +76984,10 @@ var graphql22 = __toESM(require_graphql2(), 1);
74799
76984
  async function graphqlExtensions(config2, documents) {
74800
76985
  let internalSchema = `
74801
76986
  enum CachePolicy {
74802
- ${"CacheAndNetwork" /* CacheAndNetwork */}
74803
- ${"CacheOnly" /* CacheOnly */}
74804
- ${"CacheOrNetwork" /* CacheOrNetwork */}
74805
- ${"NetworkOnly" /* NetworkOnly */}
76987
+ ${CachePolicy.CacheAndNetwork}
76988
+ ${CachePolicy.CacheOnly}
76989
+ ${CachePolicy.CacheOrNetwork}
76990
+ ${CachePolicy.NetworkOnly}
74806
76991
  }
74807
76992
 
74808
76993
  """
@@ -74992,7 +77177,7 @@ async function typeCheck(config2, docs) {
74992
77177
  const lists = [];
74993
77178
  const listTypes = [];
74994
77179
  const fragments = {};
74995
- for (const { document: parsed, filename } of docs) {
77180
+ for (const { document: parsed, originalString, filename } of docs) {
74996
77181
  graphql25.visit(parsed, {
74997
77182
  [graphql25.Kind.FRAGMENT_DEFINITION](definition) {
74998
77183
  fragments[definition.name.value] = definition;
@@ -75190,7 +77375,7 @@ async function typeCheck(config2, docs) {
75190
77375
  paginateArgs(config2, filepath),
75191
77376
  noUnusedFragmentArguments(config2)
75192
77377
  );
75193
- for (const { filename, document: parsed } of docs) {
77378
+ for (const { filename, document: parsed, originalString } of docs) {
75194
77379
  for (const error of graphql25.validate(config2.schema, parsed, rules(filename))) {
75195
77380
  errors.push(
75196
77381
  new HoudiniError({
@@ -75426,24 +77611,15 @@ function validateFragmentArguments(config2, filepath, fragments) {
75426
77611
  )
75427
77612
  );
75428
77613
  } else {
75429
- const zipped = appliedArgumentNames.map(
75430
- (name) => [
75431
- appliedArguments[name],
75432
- fragmentArguments2[fragmentName].find((arg) => arg.name === name).type
75433
- ]
75434
- );
77614
+ const zipped = appliedArgumentNames.map((name) => [
77615
+ appliedArguments[name],
77616
+ fragmentArguments2[fragmentName].find((arg) => arg.name === name).type
77617
+ ]);
75435
77618
  for (const [applied, target] of zipped) {
75436
- if (applied.value.kind === graphql25.Kind.VARIABLE || applied.value.kind === graphql25.Kind.LIST || applied.value.kind === graphql25.Kind.OBJECT) {
75437
- continue;
75438
- }
75439
- const appliedType = applied.value.kind.substring(
75440
- 0,
75441
- applied.value.kind.length - "Value".length
75442
- );
75443
- if (appliedType !== target) {
77619
+ if (!valueIsType(config2, applied.value, target)) {
75444
77620
  ctx.reportError(
75445
77621
  new graphql25.GraphQLError(
75446
- `Invalid argument type. Expected ${target}, found ${appliedType}`
77622
+ `Invalid argument type. Expected ${target}, found ${applied.value.kind}`
75447
77623
  )
75448
77624
  );
75449
77625
  }
@@ -75453,6 +77629,47 @@ function validateFragmentArguments(config2, filepath, fragments) {
75453
77629
  };
75454
77630
  };
75455
77631
  }
77632
+ function valueIsType(config2, value, targetType) {
77633
+ if (value.kind === "NullValue") {
77634
+ return targetType.kind !== "NonNullType";
77635
+ }
77636
+ if (targetType.kind === "NonNullType") {
77637
+ targetType = targetType.type;
77638
+ }
77639
+ if (value.kind === "ListValue") {
77640
+ if (targetType.kind !== "ListType") {
77641
+ return false;
77642
+ }
77643
+ const listType = targetType.type;
77644
+ return value.values.every((value2) => valueIsType(config2, value2, listType));
77645
+ }
77646
+ if (value.kind === "BooleanValue") {
77647
+ return targetType.kind === "NamedType" && targetType.name.value === "Boolean";
77648
+ }
77649
+ if (value.kind === "StringValue") {
77650
+ return targetType.kind === "NamedType" && targetType.name.value === "String";
77651
+ }
77652
+ if (value.kind === "IntValue") {
77653
+ return targetType.kind === "NamedType" && targetType.name.value === "Int";
77654
+ }
77655
+ if (value.kind === "FloatValue") {
77656
+ return targetType.kind === "NamedType" && targetType.name.value === "Float";
77657
+ }
77658
+ if (value.kind === "ObjectValue" && targetType.kind === "NamedType") {
77659
+ return true;
77660
+ }
77661
+ if (value.kind === "EnumValue" && targetType.kind === "NamedType") {
77662
+ const enumType = config2.schema.getType(targetType.name.value);
77663
+ if (!graphql25.isEnumType(enumType)) {
77664
+ return false;
77665
+ }
77666
+ return enumType.getValues().some((enumValue) => enumValue.value === value.value);
77667
+ }
77668
+ if (value.kind === "Variable") {
77669
+ return true;
77670
+ }
77671
+ return false;
77672
+ }
75456
77673
  function paginateArgs(config2, filepath) {
75457
77674
  return function(ctx) {
75458
77675
  let alreadyPaginated = false;
@@ -75718,7 +77935,7 @@ function getAndVerifyNodeInterface(config2) {
75718
77935
  var nbInvalidNodeFieldMessageDisplayed = 0;
75719
77936
  function displayInvalidNodeFieldMessage(logLevel) {
75720
77937
  if (nbInvalidNodeFieldMessageDisplayed === 0) {
75721
- if (logLevel === "full" /* Full */) {
77938
+ if (logLevel === LogLevel.Full) {
75722
77939
  console.warn(invalidNodeFieldMessage);
75723
77940
  } else {
75724
77941
  console.warn(invalidNodeFieldMessageLight);
@@ -75886,7 +78103,7 @@ async function runPipeline2(config2, docs) {
75886
78103
  }
75887
78104
  const unchanged = artifactStats.total.length - artifactStats.changed.length - artifactStats.new.length - artifactStats.deleted.length;
75888
78105
  const printMessage = !config2.pluginMode || unchanged !== artifactStats.total.length;
75889
- if (!printMessage || config2.logLevel === "quiet" /* Quiet */) {
78106
+ if (!printMessage || config2.logLevel === LogLevel.Quiet) {
75890
78107
  if (error) {
75891
78108
  throw error;
75892
78109
  }
@@ -75900,14 +78117,14 @@ async function runPipeline2(config2, docs) {
75900
78117
  }
75901
78118
  if (artifactStats.total.length === 0) {
75902
78119
  console.log(`\u{1F4A1} No operation found. If that's unexpected, please check your config.`);
75903
- } else if (["summary" /* Summary */, "short-summary" /* ShortSummary */].includes(config2.logLevel)) {
78120
+ } else if (config2.logLevel == LogLevel.Summary || config2.logLevel == LogLevel.ShortSummary) {
75904
78121
  if (unchanged > 0 && printMessage && !config2.pluginMode) {
75905
78122
  console.log(`\u{1F4C3} Unchanged: ${unchanged}`);
75906
78123
  }
75907
78124
  logStyled("CREATED", artifactStats.new, config2.logLevel, config2.pluginMode);
75908
78125
  logStyled("UPDATED", artifactStats.changed, config2.logLevel, config2.pluginMode);
75909
78126
  logStyled("DELETED", artifactStats.deleted, config2.logLevel, config2.pluginMode);
75910
- } else if (config2.logLevel === "full" /* Full */) {
78127
+ } else if (config2.logLevel === LogLevel.Full) {
75911
78128
  for (const artifact of artifactStats.total) {
75912
78129
  let emoji = "\u{1F4C3}";
75913
78130
  if (artifactStats.changed.includes(artifact)) {
@@ -76017,14 +78234,14 @@ async function processGraphQLDocument(config2, filepath, document) {
76017
78234
  });
76018
78235
  }
76019
78236
  }
76020
- let kind = "HoudiniFragment" /* Fragment */;
78237
+ let kind = ArtifactKind.Fragment;
76021
78238
  if (operations.length === 1) {
76022
78239
  if (operations[0].kind === "OperationDefinition" && operations[0].operation === "query") {
76023
- kind = "HoudiniQuery" /* Query */;
78240
+ kind = ArtifactKind.Query;
76024
78241
  } else if (operations[0].kind === "OperationDefinition" && operations[0].operation === "mutation") {
76025
- kind = "HoudiniMutation" /* Mutation */;
78242
+ kind = ArtifactKind.Mutation;
76026
78243
  } else if (operations[0].kind === "OperationDefinition" && operations[0].operation === "subscription") {
76027
- kind = "HoudiniSubscription" /* Subscription */;
78244
+ kind = ArtifactKind.Subscription;
76028
78245
  }
76029
78246
  }
76030
78247
  return {
@@ -76069,7 +78286,7 @@ function logStyled(kind, stat3, logLevel, plugin2) {
76069
78286
  }
76070
78287
  }
76071
78288
  console.log(msg.join(""));
76072
- if (!plugin2 && logLevel === "summary" /* Summary */) {
78289
+ if (!plugin2 && logLevel === LogLevel.Summary) {
76073
78290
  for (const artifact of stat3.slice(0, nbToDisplay)) {
76074
78291
  console.log(` ${artifact}`);
76075
78292
  }
@@ -76512,8 +78729,8 @@ async function updatePackageJSON(targetPath) {
76512
78729
  }
76513
78730
  packageJSON.devDependencies = {
76514
78731
  ...packageJSON.devDependencies,
76515
- houdini: "^1.0.0-next.9",
76516
- "houdini-svelte": "^1.0.0-next.9"
78732
+ houdini: "^1.0.1",
78733
+ "houdini-svelte": "^1.0.1"
76517
78734
  };
76518
78735
  await fs_exports.writeFile(packagePath, JSON.stringify(packageJSON, null, 4));
76519
78736
  }