houdini 1.0.0-next.8 → 1.0.0

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 (92) hide show
  1. package/README.md +4 -1
  2. package/build/cmd-cjs/index.js +2325 -121
  3. package/build/cmd-esm/index.js +2325 -121
  4. package/build/codegen/generators/runtime/runtimeConfig.d.ts +7 -0
  5. package/build/codegen/generators/typescript/typeReference.d.ts +4 -2
  6. package/build/codegen/generators/typescript/types.d.ts +0 -1
  7. package/build/codegen/utils/flattenSelections.d.ts +1 -1
  8. package/build/codegen-cjs/index.js +2919 -689
  9. package/build/codegen-esm/index.js +2919 -689
  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/index.d.ts +1 -1
  17. package/build/runtime/client/plugins/cache.d.ts +1 -1
  18. package/build/runtime/client/plugins/fetch.d.ts +1 -1
  19. package/build/runtime/client/plugins/fetchParams.d.ts +1 -1
  20. package/build/runtime/client/plugins/mutation.d.ts +1 -1
  21. package/build/runtime/client/plugins/query.d.ts +1 -1
  22. package/build/runtime/client/plugins/subscription.d.ts +1 -1
  23. package/build/runtime/client/plugins/throwOnError.d.ts +1 -1
  24. package/build/runtime/client/utils/documentPlugins.d.ts +2 -2
  25. package/build/runtime/imports/pluginConfig.d.ts +3 -0
  26. package/build/runtime/lib/config.d.ts +2 -2
  27. package/build/runtime/lib/scalars.d.ts +1 -1
  28. package/build/runtime/lib/types.d.ts +42 -42
  29. package/build/runtime-cjs/cache/storage.d.ts +18 -15
  30. package/build/runtime-cjs/cache/storage.js +9 -11
  31. package/build/runtime-cjs/client/documentStore.d.ts +15 -13
  32. package/build/runtime-cjs/client/documentStore.js +11 -8
  33. package/build/runtime-cjs/client/index.d.ts +1 -1
  34. package/build/runtime-cjs/client/index.js +16 -13
  35. package/build/runtime-cjs/client/plugins/cache.d.ts +1 -1
  36. package/build/runtime-cjs/client/plugins/cache.js +6 -6
  37. package/build/runtime-cjs/client/plugins/fetch.d.ts +1 -1
  38. package/build/runtime-cjs/client/plugins/fetch.js +9 -9
  39. package/build/runtime-cjs/client/plugins/fetchParams.d.ts +1 -1
  40. package/build/runtime-cjs/client/plugins/fetchParams.js +3 -3
  41. package/build/runtime-cjs/client/plugins/mutation.d.ts +1 -1
  42. package/build/runtime-cjs/client/plugins/mutation.js +3 -3
  43. package/build/runtime-cjs/client/plugins/query.d.ts +1 -1
  44. package/build/runtime-cjs/client/plugins/query.js +4 -4
  45. package/build/runtime-cjs/client/plugins/subscription.d.ts +1 -1
  46. package/build/runtime-cjs/client/plugins/subscription.js +5 -5
  47. package/build/runtime-cjs/client/plugins/throwOnError.d.ts +1 -1
  48. package/build/runtime-cjs/client/plugins/throwOnError.js +3 -3
  49. package/build/runtime-cjs/client/utils/documentPlugins.d.ts +2 -2
  50. package/build/runtime-cjs/imports/pluginConfig.d.ts +3 -0
  51. package/build/runtime-cjs/imports/pluginConfig.js +27 -0
  52. package/build/runtime-cjs/lib/config.d.ts +2 -2
  53. package/build/runtime-cjs/lib/config.js +11 -1
  54. package/build/runtime-cjs/lib/scalars.d.ts +1 -1
  55. package/build/runtime-cjs/lib/scalars.js +13 -2
  56. package/build/runtime-cjs/lib/types.d.ts +42 -42
  57. package/build/runtime-cjs/lib/types.js +26 -30
  58. package/build/runtime-esm/cache/storage.d.ts +18 -15
  59. package/build/runtime-esm/cache/storage.js +9 -11
  60. package/build/runtime-esm/client/documentStore.d.ts +15 -13
  61. package/build/runtime-esm/client/documentStore.js +12 -9
  62. package/build/runtime-esm/client/index.d.ts +1 -1
  63. package/build/runtime-esm/client/index.js +13 -10
  64. package/build/runtime-esm/client/plugins/cache.d.ts +1 -1
  65. package/build/runtime-esm/client/plugins/cache.js +5 -5
  66. package/build/runtime-esm/client/plugins/fetch.d.ts +1 -1
  67. package/build/runtime-esm/client/plugins/fetch.js +8 -8
  68. package/build/runtime-esm/client/plugins/fetchParams.d.ts +1 -1
  69. package/build/runtime-esm/client/plugins/fetchParams.js +2 -2
  70. package/build/runtime-esm/client/plugins/mutation.d.ts +1 -1
  71. package/build/runtime-esm/client/plugins/mutation.js +2 -2
  72. package/build/runtime-esm/client/plugins/query.d.ts +1 -1
  73. package/build/runtime-esm/client/plugins/query.js +3 -3
  74. package/build/runtime-esm/client/plugins/subscription.d.ts +1 -1
  75. package/build/runtime-esm/client/plugins/subscription.js +4 -4
  76. package/build/runtime-esm/client/plugins/throwOnError.d.ts +1 -1
  77. package/build/runtime-esm/client/plugins/throwOnError.js +2 -2
  78. package/build/runtime-esm/client/utils/documentPlugins.d.ts +2 -2
  79. package/build/runtime-esm/imports/pluginConfig.d.ts +3 -0
  80. package/build/runtime-esm/imports/pluginConfig.js +5 -0
  81. package/build/runtime-esm/lib/config.d.ts +2 -2
  82. package/build/runtime-esm/lib/config.js +11 -1
  83. package/build/runtime-esm/lib/scalars.d.ts +1 -1
  84. package/build/runtime-esm/lib/scalars.js +13 -2
  85. package/build/runtime-esm/lib/types.d.ts +42 -42
  86. package/build/runtime-esm/lib/types.js +26 -30
  87. package/build/test-cjs/index.js +2302 -98
  88. package/build/test-esm/index.js +2302 -98
  89. package/build/vite/houdini.d.ts +2 -0
  90. package/build/vite-cjs/index.js +2328 -122
  91. package/build/vite-esm/index.js +2328 -122
  92. package/package.json +2 -2
@@ -7495,7 +7495,7 @@ var require_definition = __commonJS({
7495
7495
  exports.assertInterfaceType = assertInterfaceType;
7496
7496
  exports.isUnionType = isUnionType13;
7497
7497
  exports.assertUnionType = assertUnionType;
7498
- exports.isEnumType = isEnumType10;
7498
+ exports.isEnumType = isEnumType11;
7499
7499
  exports.assertEnumType = assertEnumType;
7500
7500
  exports.isInputObjectType = isInputObjectType8;
7501
7501
  exports.assertInputObjectType = assertInputObjectType;
@@ -7566,7 +7566,7 @@ var require_definition = __commonJS({
7566
7566
  return Constructor;
7567
7567
  }
7568
7568
  function isType(type) {
7569
- return isScalarType13(type) || isObjectType12(type) || isInterfaceType12(type) || isUnionType13(type) || isEnumType10(type) || isInputObjectType8(type) || isListType8(type) || isNonNullType10(type);
7569
+ return isScalarType13(type) || isObjectType12(type) || isInterfaceType12(type) || isUnionType13(type) || isEnumType11(type) || isInputObjectType8(type) || isListType8(type) || isNonNullType10(type);
7570
7570
  }
7571
7571
  function assertType(type) {
7572
7572
  if (!isType(type)) {
@@ -7610,11 +7610,11 @@ var require_definition = __commonJS({
7610
7610
  }
7611
7611
  return type;
7612
7612
  }
7613
- function isEnumType10(type) {
7613
+ function isEnumType11(type) {
7614
7614
  return (0, _instanceOf.default)(type, GraphQLEnumType4);
7615
7615
  }
7616
7616
  function assertEnumType(type) {
7617
- if (!isEnumType10(type)) {
7617
+ if (!isEnumType11(type)) {
7618
7618
  throw new Error("Expected ".concat((0, _inspect.default)(type), " to be a GraphQL Enum type."));
7619
7619
  }
7620
7620
  return type;
@@ -7647,7 +7647,7 @@ var require_definition = __commonJS({
7647
7647
  return type;
7648
7648
  }
7649
7649
  function isInputType(type) {
7650
- return isScalarType13(type) || isEnumType10(type) || isInputObjectType8(type) || isWrappingType(type) && isInputType(type.ofType);
7650
+ return isScalarType13(type) || isEnumType11(type) || isInputObjectType8(type) || isWrappingType(type) && isInputType(type.ofType);
7651
7651
  }
7652
7652
  function assertInputType(type) {
7653
7653
  if (!isInputType(type)) {
@@ -7656,7 +7656,7 @@ var require_definition = __commonJS({
7656
7656
  return type;
7657
7657
  }
7658
7658
  function isOutputType(type) {
7659
- return isScalarType13(type) || isObjectType12(type) || isInterfaceType12(type) || isUnionType13(type) || isEnumType10(type) || isWrappingType(type) && isOutputType(type.ofType);
7659
+ return isScalarType13(type) || isObjectType12(type) || isInterfaceType12(type) || isUnionType13(type) || isEnumType11(type) || isWrappingType(type) && isOutputType(type.ofType);
7660
7660
  }
7661
7661
  function assertOutputType(type) {
7662
7662
  if (!isOutputType(type)) {
@@ -7665,7 +7665,7 @@ var require_definition = __commonJS({
7665
7665
  return type;
7666
7666
  }
7667
7667
  function isLeafType4(type) {
7668
- return isScalarType13(type) || isEnumType10(type);
7668
+ return isScalarType13(type) || isEnumType11(type);
7669
7669
  }
7670
7670
  function assertLeafType(type) {
7671
7671
  if (!isLeafType4(type)) {
@@ -7753,7 +7753,7 @@ var require_definition = __commonJS({
7753
7753
  }
7754
7754
  }
7755
7755
  function isNamedType4(type) {
7756
- return isScalarType13(type) || isObjectType12(type) || isInterfaceType12(type) || isUnionType13(type) || isEnumType10(type) || isInputObjectType8(type);
7756
+ return isScalarType13(type) || isObjectType12(type) || isInterfaceType12(type) || isUnionType13(type) || isEnumType11(type) || isInputObjectType8(type);
7757
7757
  }
7758
7758
  function assertNamedType(type) {
7759
7759
  if (!isNamedType4(type)) {
@@ -24050,42 +24050,42 @@ var require_node = __commonJS({
24050
24050
  return Link2;
24051
24051
  }(events_1.EventEmitter);
24052
24052
  exports.Link = Link;
24053
- var File3 = function() {
24054
- function File4(link, node, flags, fd) {
24053
+ var File4 = function() {
24054
+ function File5(link, node, flags, fd) {
24055
24055
  this.position = 0;
24056
24056
  this.link = link;
24057
24057
  this.node = node;
24058
24058
  this.flags = flags;
24059
24059
  this.fd = fd;
24060
24060
  }
24061
- File4.prototype.getString = function(encoding) {
24061
+ File5.prototype.getString = function(encoding) {
24062
24062
  if (encoding === void 0) {
24063
24063
  encoding = "utf8";
24064
24064
  }
24065
24065
  return this.node.getString();
24066
24066
  };
24067
- File4.prototype.setString = function(str) {
24067
+ File5.prototype.setString = function(str) {
24068
24068
  this.node.setString(str);
24069
24069
  };
24070
- File4.prototype.getBuffer = function() {
24070
+ File5.prototype.getBuffer = function() {
24071
24071
  return this.node.getBuffer();
24072
24072
  };
24073
- File4.prototype.setBuffer = function(buf) {
24073
+ File5.prototype.setBuffer = function(buf) {
24074
24074
  this.node.setBuffer(buf);
24075
24075
  };
24076
- File4.prototype.getSize = function() {
24076
+ File5.prototype.getSize = function() {
24077
24077
  return this.node.getSize();
24078
24078
  };
24079
- File4.prototype.truncate = function(len) {
24079
+ File5.prototype.truncate = function(len) {
24080
24080
  this.node.truncate(len);
24081
24081
  };
24082
- File4.prototype.seekTo = function(position) {
24082
+ File5.prototype.seekTo = function(position) {
24083
24083
  this.position = position;
24084
24084
  };
24085
- File4.prototype.stats = function() {
24085
+ File5.prototype.stats = function() {
24086
24086
  return Stats_1.default.build(this.node);
24087
24087
  };
24088
- File4.prototype.write = function(buf, offset, length, position) {
24088
+ File5.prototype.write = function(buf, offset, length, position) {
24089
24089
  if (offset === void 0) {
24090
24090
  offset = 0;
24091
24091
  }
@@ -24100,7 +24100,7 @@ var require_node = __commonJS({
24100
24100
  this.position = position + bytes;
24101
24101
  return bytes;
24102
24102
  };
24103
- File4.prototype.read = function(buf, offset, length, position) {
24103
+ File5.prototype.read = function(buf, offset, length, position) {
24104
24104
  if (offset === void 0) {
24105
24105
  offset = 0;
24106
24106
  }
@@ -24113,15 +24113,15 @@ var require_node = __commonJS({
24113
24113
  this.position = position + bytes;
24114
24114
  return bytes;
24115
24115
  };
24116
- File4.prototype.chmod = function(perm) {
24116
+ File5.prototype.chmod = function(perm) {
24117
24117
  this.node.chmod(perm);
24118
24118
  };
24119
- File4.prototype.chown = function(uid, gid) {
24119
+ File5.prototype.chown = function(uid, gid) {
24120
24120
  this.node.chown(uid, gid);
24121
24121
  };
24122
- return File4;
24122
+ return File5;
24123
24123
  }();
24124
- exports.File = File3;
24124
+ exports.File = File4;
24125
24125
  }
24126
24126
  });
24127
24127
 
@@ -24807,20 +24807,20 @@ var require_volume = __commonJS({
24807
24807
  }
24808
24808
  function flattenJSON(nestedJSON) {
24809
24809
  var flatJSON = {};
24810
- function flatten(pathPrefix, node) {
24810
+ function flatten2(pathPrefix, node) {
24811
24811
  for (var path2 in node) {
24812
24812
  var contentOrNode = node[path2];
24813
24813
  var joinedPath = join3(pathPrefix, path2);
24814
24814
  if (typeof contentOrNode === "string") {
24815
24815
  flatJSON[joinedPath] = contentOrNode;
24816
24816
  } else if (typeof contentOrNode === "object" && contentOrNode !== null && Object.keys(contentOrNode).length > 0) {
24817
- flatten(joinedPath, contentOrNode);
24817
+ flatten2(joinedPath, contentOrNode);
24818
24818
  } else {
24819
24819
  flatJSON[joinedPath] = null;
24820
24820
  }
24821
24821
  }
24822
24822
  }
24823
- flatten("", nestedJSON);
24823
+ flatten2("", nestedJSON);
24824
24824
  return flatJSON;
24825
24825
  }
24826
24826
  var Volume = function() {
@@ -30230,9 +30230,9 @@ var require_streams = __commonJS({
30230
30230
  }
30231
30231
  }
30232
30232
  try {
30233
- const { Blob: Blob3 } = require("buffer");
30234
- if (Blob3 && !Blob3.prototype.stream) {
30235
- Blob3.prototype.stream = function name(params) {
30233
+ const { Blob: Blob4 } = require("buffer");
30234
+ if (Blob4 && !Blob4.prototype.stream) {
30235
+ Blob4.prototype.stream = function name(params) {
30236
30236
  let position = 0;
30237
30237
  const blob = this;
30238
30238
  return new ReadableStream({
@@ -30283,12 +30283,12 @@ async function* toIterator(parts, clone2 = true) {
30283
30283
  }
30284
30284
  }
30285
30285
  }
30286
- var import_streams, POOL_SIZE, _Blob, Blob2, fetch_blob_default;
30286
+ var import_streams, POOL_SIZE, _Blob, Blob3, fetch_blob_default;
30287
30287
  var init_fetch_blob = __esm({
30288
30288
  "../../node_modules/.pnpm/fetch-blob@3.2.0/node_modules/fetch-blob/index.js"() {
30289
30289
  import_streams = __toESM(require_streams(), 1);
30290
30290
  POOL_SIZE = 65536;
30291
- _Blob = class Blob {
30291
+ _Blob = class Blob2 {
30292
30292
  #parts = [];
30293
30293
  #type = "";
30294
30294
  #size = 0;
@@ -30312,7 +30312,7 @@ var init_fetch_blob = __esm({
30312
30312
  part = new Uint8Array(element.buffer.slice(element.byteOffset, element.byteOffset + element.byteLength));
30313
30313
  } else if (element instanceof ArrayBuffer) {
30314
30314
  part = new Uint8Array(element.slice(0));
30315
- } else if (element instanceof Blob) {
30315
+ } else if (element instanceof Blob2) {
30316
30316
  part = element;
30317
30317
  } else {
30318
30318
  part = encoder.encode(`${element}`);
@@ -30391,7 +30391,7 @@ var init_fetch_blob = __esm({
30391
30391
  relativeStart = 0;
30392
30392
  }
30393
30393
  }
30394
- const blob = new Blob([], { type: String(type).toLowerCase() });
30394
+ const blob = new Blob2([], { type: String(type).toLowerCase() });
30395
30395
  blob.#size = span;
30396
30396
  blob.#parts = blobParts;
30397
30397
  return blob;
@@ -30408,17 +30408,17 @@ var init_fetch_blob = __esm({
30408
30408
  type: { enumerable: true },
30409
30409
  slice: { enumerable: true }
30410
30410
  });
30411
- Blob2 = _Blob;
30412
- fetch_blob_default = Blob2;
30411
+ Blob3 = _Blob;
30412
+ fetch_blob_default = Blob3;
30413
30413
  }
30414
30414
  });
30415
30415
 
30416
30416
  // ../../node_modules/.pnpm/fetch-blob@3.2.0/node_modules/fetch-blob/file.js
30417
- var _File, File2, file_default;
30417
+ var _File, File3, file_default;
30418
30418
  var init_file = __esm({
30419
30419
  "../../node_modules/.pnpm/fetch-blob@3.2.0/node_modules/fetch-blob/file.js"() {
30420
30420
  init_fetch_blob();
30421
- _File = class File extends fetch_blob_default {
30421
+ _File = class File2 extends fetch_blob_default {
30422
30422
  #lastModified = 0;
30423
30423
  #name = "";
30424
30424
  constructor(fileBits, fileName, options = {}) {
@@ -30447,8 +30447,8 @@ var init_file = __esm({
30447
30447
  return !!object && object instanceof fetch_blob_default && /^(File)$/.test(object[Symbol.toStringTag]);
30448
30448
  }
30449
30449
  };
30450
- File2 = _File;
30451
- file_default = File2;
30450
+ File3 = _File;
30451
+ file_default = File3;
30452
30452
  }
30453
30453
  });
30454
30454
 
@@ -30466,7 +30466,7 @@ Content-Type: ${v.type || "application/octet-stream"}\r
30466
30466
  c.push(`--${b}--`);
30467
30467
  return new B(c, { type: "multipart/form-data; boundary=" + b });
30468
30468
  }
30469
- var t, i, h, r, m, f, e, x, FormData;
30469
+ var t, i, h, r, m, f, e, x, FormData2;
30470
30470
  var init_esm_min = __esm({
30471
30471
  "../../node_modules/.pnpm/formdata-polyfill@4.0.10/node_modules/formdata-polyfill/esm.min.js"() {
30472
30472
  init_fetch_blob();
@@ -30481,7 +30481,7 @@ var init_esm_min = __esm({
30481
30481
  throw new TypeError(`Failed to execute '${n}' on 'FormData': ${e2} arguments required, but only ${a.length} present.`);
30482
30482
  }
30483
30483
  };
30484
- FormData = class FormData2 {
30484
+ FormData2 = class FormData3 {
30485
30485
  #d = [];
30486
30486
  constructor(...a) {
30487
30487
  if (a.length)
@@ -30647,7 +30647,7 @@ async function toFormData(Body2, ct) {
30647
30647
  let contentType;
30648
30648
  let filename;
30649
30649
  const entryChunks = [];
30650
- const formData = new FormData();
30650
+ const formData = new FormData2();
30651
30651
  const onPartData = (ui8a) => {
30652
30652
  entryValue += decoder.decode(ui8a, { stream: true });
30653
30653
  };
@@ -65187,7 +65187,18 @@ var graphql2 = __toESM(require_graphql2(), 1);
65187
65187
  var import_minimatch = __toESM(require_minimatch(), 1);
65188
65188
  var import_node_url2 = require("node:url");
65189
65189
 
65190
+ // src/runtime/imports/config.ts
65191
+ var config_default = {};
65192
+
65193
+ // src/runtime/imports/pluginConfig.ts
65194
+ var configs = [];
65195
+ var pluginConfig_default = configs;
65196
+
65190
65197
  // src/runtime/lib/config.ts
65198
+ var mockConfig = null;
65199
+ function getMockConfig() {
65200
+ return mockConfig;
65201
+ }
65191
65202
  function defaultConfigValues(file) {
65192
65203
  return {
65193
65204
  defaultKeys: ["id"],
@@ -65215,12 +65226,150 @@ function computeID(configFile, type, data) {
65215
65226
  }
65216
65227
  return id.slice(0, -2);
65217
65228
  }
65229
+ var _configFile = null;
65230
+ function getCurrentConfig() {
65231
+ const mockConfig2 = getMockConfig();
65232
+ if (mockConfig2) {
65233
+ return mockConfig2;
65234
+ }
65235
+ if (_configFile) {
65236
+ return _configFile;
65237
+ }
65238
+ let configFile = defaultConfigValues(config_default);
65239
+ for (const pluginConfig of pluginConfig_default) {
65240
+ configFile = pluginConfig(configFile);
65241
+ }
65242
+ _configFile = configFile;
65243
+ return configFile;
65244
+ }
65245
+
65246
+ // src/runtime/lib/deepEquals.ts
65247
+ function deepEquals(objA, objB, map = /* @__PURE__ */ new WeakMap()) {
65248
+ if (Object.is(objA, objB))
65249
+ return true;
65250
+ if (objA instanceof Date && objB instanceof Date) {
65251
+ return objA.getTime() === objB.getTime();
65252
+ }
65253
+ if (objA instanceof RegExp && objB instanceof RegExp) {
65254
+ return objA.toString() === objB.toString();
65255
+ }
65256
+ if (typeof objA !== "object" || objA === null || typeof objB !== "object" || objB === null) {
65257
+ return false;
65258
+ }
65259
+ if (map.get(objA) === objB)
65260
+ return true;
65261
+ map.set(objA, objB);
65262
+ const keysA = Reflect.ownKeys(objA);
65263
+ const keysB = Reflect.ownKeys(objB);
65264
+ if (keysA.length !== keysB.length) {
65265
+ return false;
65266
+ }
65267
+ for (let i2 = 0; i2 < keysA.length; i2++) {
65268
+ if (!Reflect.has(objB, keysA[i2]) || !deepEquals(objA[keysA[i2]], objB[keysA[i2]], map)) {
65269
+ return false;
65270
+ }
65271
+ }
65272
+ return true;
65273
+ }
65274
+
65275
+ // src/runtime/lib/selection.ts
65276
+ function getFieldsForType(selection2, __typename) {
65277
+ let targetSelection = selection2.fields || {};
65278
+ if (selection2.abstractFields && __typename) {
65279
+ const mappedType = selection2.abstractFields.typeMap[__typename];
65280
+ if (mappedType) {
65281
+ targetSelection = selection2.abstractFields.fields[mappedType];
65282
+ } else if (selection2.abstractFields.fields[__typename]) {
65283
+ targetSelection = selection2.abstractFields.fields[__typename];
65284
+ }
65285
+ }
65286
+ return targetSelection;
65287
+ }
65288
+
65289
+ // src/runtime/lib/scalars.ts
65290
+ async function marshalSelection({
65291
+ selection: selection2,
65292
+ data
65293
+ }) {
65294
+ const config4 = getCurrentConfig();
65295
+ if (data === null || typeof data === "undefined") {
65296
+ return data;
65297
+ }
65298
+ if (Array.isArray(data)) {
65299
+ return await Promise.all(data.map((val) => marshalSelection({ selection: selection2, data: val })));
65300
+ }
65301
+ const targetSelection = getFieldsForType(selection2, data["__typename"]);
65302
+ return Object.fromEntries(
65303
+ await Promise.all(
65304
+ Object.entries(data).map(async ([fieldName, value]) => {
65305
+ const { type, selection: selection3 } = targetSelection[fieldName];
65306
+ if (!type) {
65307
+ return [fieldName, value];
65308
+ }
65309
+ if (selection3) {
65310
+ return [fieldName, await marshalSelection({ selection: selection3, data: value })];
65311
+ }
65312
+ if (config4.scalars?.[type]) {
65313
+ const marshalFn = config4.scalars[type].marshal;
65314
+ if (!marshalFn) {
65315
+ throw new Error(
65316
+ `scalar type ${type} is missing a \`marshal\` function. see https://github.com/AlecAivazis/houdini#%EF%B8%8Fcustom-scalars`
65317
+ );
65318
+ }
65319
+ if (Array.isArray(value)) {
65320
+ return [fieldName, value.map(marshalFn)];
65321
+ }
65322
+ return [fieldName, marshalFn(value)];
65323
+ }
65324
+ return [fieldName, value];
65325
+ })
65326
+ )
65327
+ );
65328
+ }
65218
65329
 
65219
65330
  // src/runtime/lib/types.ts
65220
- var CompiledFragmentKind = "HoudiniFragment" /* Fragment */;
65221
- var CompiledMutationKind = "HoudiniMutation" /* Mutation */;
65222
- var CompiledQueryKind = "HoudiniQuery" /* Query */;
65223
- var CompiledSubscriptionKind = "HoudiniSubscription" /* Subscription */;
65331
+ var CachePolicy = {
65332
+ CacheOrNetwork: "CacheOrNetwork",
65333
+ CacheOnly: "CacheOnly",
65334
+ NetworkOnly: "NetworkOnly",
65335
+ CacheAndNetwork: "CacheAndNetwork"
65336
+ };
65337
+ var ArtifactKind = {
65338
+ Query: "HoudiniQuery",
65339
+ Subscription: "HoudiniSubscription",
65340
+ Mutation: "HoudiniMutation",
65341
+ Fragment: "HoudiniFragment"
65342
+ };
65343
+ var CompiledFragmentKind = ArtifactKind.Fragment;
65344
+ var CompiledMutationKind = ArtifactKind.Mutation;
65345
+ var CompiledQueryKind = ArtifactKind.Query;
65346
+ var CompiledSubscriptionKind = ArtifactKind.Subscription;
65347
+ var RefetchUpdateMode = {
65348
+ append: "append",
65349
+ prepend: "prepend",
65350
+ replace: "replace"
65351
+ };
65352
+ var DataSource = {
65353
+ Cache: "cache",
65354
+ Network: "network",
65355
+ Ssr: "ssr"
65356
+ };
65357
+
65358
+ // src/runtime/lib/key.ts
65359
+ var computeKey = ({ field, args }) => {
65360
+ const keys = Object.keys(args ?? {});
65361
+ keys.sort();
65362
+ return args && keys.length > 0 ? `${field}(${keys.map((key) => `${key}: ${stringifyObjectWithNoQuotesOnKeys(args[key])}`).join(", ")})` : field;
65363
+ };
65364
+ var stringifyObjectWithNoQuotesOnKeys = (obj_from_json) => {
65365
+ if (Array.isArray(obj_from_json)) {
65366
+ return `[${obj_from_json.map((obj) => `${stringifyObjectWithNoQuotesOnKeys(obj)}`).join(", ")}]`;
65367
+ }
65368
+ if (typeof obj_from_json !== "object" || obj_from_json instanceof Date || obj_from_json === null) {
65369
+ return JSON.stringify(obj_from_json).replace(/"([^"]+)":/g, "$1: ");
65370
+ }
65371
+ return `{${Object.keys(obj_from_json).map((key) => `${key}: ${stringifyObjectWithNoQuotesOnKeys(obj_from_json[key])}`).join(", ")}}`;
65372
+ };
65224
65373
 
65225
65374
  // src/lib/constants.ts
65226
65375
  var siteURL = "https://houdinigraphql.com";
@@ -65666,7 +65815,7 @@ var Body = class {
65666
65815
  } else if (ArrayBuffer.isView(body)) {
65667
65816
  body = import_node_buffer.Buffer.from(body.buffer, body.byteOffset, body.byteLength);
65668
65817
  } else if (body instanceof import_node_stream.default) {
65669
- } else if (body instanceof FormData) {
65818
+ } else if (body instanceof FormData2) {
65670
65819
  body = formDataToBlob(body);
65671
65820
  boundary = body.type.split("=")[1];
65672
65821
  } else {
@@ -65706,7 +65855,7 @@ var Body = class {
65706
65855
  async formData() {
65707
65856
  const ct = this.headers.get("content-type");
65708
65857
  if (ct.startsWith("application/x-www-form-urlencoded")) {
65709
- const formData = new FormData();
65858
+ const formData = new FormData2();
65710
65859
  const parameters = new URLSearchParams(await this.text());
65711
65860
  for (const [name, value] of parameters) {
65712
65861
  formData.append(name, value);
@@ -65832,7 +65981,7 @@ var extractContentType = (body, request) => {
65832
65981
  if (import_node_buffer.Buffer.isBuffer(body) || import_node_util2.types.isAnyArrayBuffer(body) || ArrayBuffer.isView(body)) {
65833
65982
  return null;
65834
65983
  }
65835
- if (body instanceof FormData) {
65984
+ if (body instanceof FormData2) {
65836
65985
  return `multipart/form-data; boundary=${request[INTERNALS].boundary}`;
65837
65986
  }
65838
65987
  if (body && typeof body.getBoundary === "function") {
@@ -66799,14 +66948,2002 @@ function plugin(name, hooks) {
66799
66948
  return data;
66800
66949
  }
66801
66950
 
66951
+ // src/runtime/lib/flatten.ts
66952
+ function flatten(source) {
66953
+ if (!source) {
66954
+ return [];
66955
+ }
66956
+ return source.reduce((acc, element) => {
66957
+ if (!element) {
66958
+ return acc;
66959
+ }
66960
+ if (Array.isArray(element)) {
66961
+ return acc.concat(flatten(element));
66962
+ }
66963
+ return acc.concat(element);
66964
+ }, []);
66965
+ }
66966
+
66967
+ // src/runtime/cache/gc.ts
66968
+ var GarbageCollector = class {
66969
+ cache;
66970
+ lifetimes = /* @__PURE__ */ new Map();
66971
+ get cacheBufferSize() {
66972
+ return this.cache._internal_unstable.config.cacheBufferSize ?? 10;
66973
+ }
66974
+ constructor(cache) {
66975
+ this.cache = cache;
66976
+ }
66977
+ resetLifetime(id, field) {
66978
+ if (!this.lifetimes.get(id)) {
66979
+ this.lifetimes.set(id, /* @__PURE__ */ new Map());
66980
+ }
66981
+ this.lifetimes.get(id).set(field, 0);
66982
+ }
66983
+ tick() {
66984
+ const dt_tick = Date.now().valueOf();
66985
+ const config_max_time = this.cache._internal_unstable.config.defaultLifetime;
66986
+ for (const [id, fieldMap] of this.lifetimes.entries()) {
66987
+ for (const [field, lifetime] of fieldMap.entries()) {
66988
+ if (this.cache._internal_unstable.subscriptions.get(id, field).length > 0) {
66989
+ continue;
66990
+ }
66991
+ fieldMap.set(field, lifetime + 1);
66992
+ if (fieldMap.get(field) > this.cacheBufferSize) {
66993
+ this.cache._internal_unstable.storage.deleteField(id, field);
66994
+ this.cache._internal_unstable.lists.deleteField(id, field);
66995
+ fieldMap.delete(field);
66996
+ if ([...fieldMap.keys()].length === 0) {
66997
+ this.lifetimes.delete(id);
66998
+ }
66999
+ this.cache._internal_unstable.staleManager.delete(id, field);
67000
+ }
67001
+ if (config_max_time && config_max_time > 0) {
67002
+ const dt_valueOf = this.cache.getFieldTime(id, field);
67003
+ if (dt_valueOf && dt_tick - dt_valueOf > config_max_time) {
67004
+ this.cache._internal_unstable.staleManager.markFieldStale(id, field);
67005
+ }
67006
+ }
67007
+ }
67008
+ }
67009
+ }
67010
+ };
67011
+
67012
+ // src/runtime/cache/lists.ts
67013
+ var ListManager = class {
67014
+ rootID;
67015
+ cache;
67016
+ constructor(cache, rootID2) {
67017
+ this.rootID = rootID2;
67018
+ this.cache = cache;
67019
+ }
67020
+ lists = /* @__PURE__ */ new Map();
67021
+ listsByField = /* @__PURE__ */ new Map();
67022
+ get(listName, id, allLists) {
67023
+ const matches = this.lists.get(listName);
67024
+ if (!matches || matches.size === 0) {
67025
+ return null;
67026
+ }
67027
+ if (allLists) {
67028
+ return new ListCollection(
67029
+ Array.from(matches, ([key, value]) => [...value.lists]).flat()
67030
+ );
67031
+ }
67032
+ const head = [...matches.values()][0];
67033
+ const { recordType } = head.lists[0];
67034
+ const parentID = id ? this.cache._internal_unstable.id(recordType || "", id) : this.rootID;
67035
+ if (matches?.size === 1) {
67036
+ if (!id) {
67037
+ return head;
67038
+ }
67039
+ return parentID === Array.from(matches.keys())[0] ? head : null;
67040
+ }
67041
+ if (!id) {
67042
+ console.error(
67043
+ `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 `
67044
+ );
67045
+ return null;
67046
+ }
67047
+ return this.lists.get(listName)?.get(parentID);
67048
+ }
67049
+ remove(listName, id) {
67050
+ this.lists.get(listName)?.delete(id || this.rootID);
67051
+ }
67052
+ add(list) {
67053
+ if (!this.lists.has(list.name)) {
67054
+ this.lists.set(list.name, /* @__PURE__ */ new Map());
67055
+ }
67056
+ const name = list.name;
67057
+ const parentID = list.recordID || this.rootID;
67058
+ if (this.lists.get(name)?.get(parentID)?.includes(list.key)) {
67059
+ return;
67060
+ }
67061
+ if (!this.lists.has(name)) {
67062
+ this.lists.set(name, /* @__PURE__ */ new Map());
67063
+ }
67064
+ if (!this.lists.get(name).has(parentID)) {
67065
+ this.lists.get(name).set(parentID, new ListCollection([]));
67066
+ }
67067
+ if (!this.listsByField.has(parentID)) {
67068
+ this.listsByField.set(parentID, /* @__PURE__ */ new Map());
67069
+ }
67070
+ if (!this.listsByField.get(parentID).has(list.key)) {
67071
+ this.listsByField.get(parentID)?.set(list.key, []);
67072
+ }
67073
+ const handler = new List({ ...list, manager: this });
67074
+ this.lists.get(list.name).get(parentID).lists.push(handler);
67075
+ this.listsByField.get(parentID).get(list.key).push(handler);
67076
+ }
67077
+ removeIDFromAllLists(id) {
67078
+ for (const fieldMap of this.lists.values()) {
67079
+ for (const list of fieldMap.values()) {
67080
+ list.removeID(id);
67081
+ }
67082
+ }
67083
+ }
67084
+ deleteField(parentID, field) {
67085
+ if (!this.listsByField.get(parentID)?.has(field)) {
67086
+ return;
67087
+ }
67088
+ for (const list of this.listsByField.get(parentID).get(field)) {
67089
+ this.lists.get(list.name)?.get(list.recordID)?.deleteListWithKey(field);
67090
+ if (this.lists.get(list.name)?.get(list.recordID)?.lists.length === 0) {
67091
+ this.lists.get(list.name)?.delete(list.recordID);
67092
+ }
67093
+ }
67094
+ this.listsByField.get(parentID).delete(field);
67095
+ }
67096
+ };
67097
+ var List = class {
67098
+ recordID;
67099
+ recordType;
67100
+ key;
67101
+ type;
67102
+ cache;
67103
+ selection;
67104
+ _when;
67105
+ filters;
67106
+ name;
67107
+ connection;
67108
+ manager;
67109
+ abstract;
67110
+ constructor({
67111
+ name,
67112
+ recordID,
67113
+ recordType,
67114
+ key,
67115
+ listType,
67116
+ selection: selection2,
67117
+ when,
67118
+ filters,
67119
+ connection,
67120
+ manager,
67121
+ abstract
67122
+ }) {
67123
+ this.recordID = recordID || rootID;
67124
+ this.recordType = recordType;
67125
+ this.key = key;
67126
+ this.type = listType;
67127
+ this.cache = manager.cache;
67128
+ this.selection = selection2;
67129
+ this._when = when;
67130
+ this.filters = filters;
67131
+ this.name = name;
67132
+ this.connection = connection;
67133
+ this.manager = manager;
67134
+ this.abstract = abstract;
67135
+ }
67136
+ when(when) {
67137
+ return this.manager.lists.get(this.name).get(this.recordID).when(when);
67138
+ }
67139
+ append(selection2, data, variables = {}) {
67140
+ return this.addToList(selection2, data, variables, "last");
67141
+ }
67142
+ prepend(selection2, data, variables = {}) {
67143
+ return this.addToList(selection2, data, variables, "first");
67144
+ }
67145
+ addToList(selection2, data, variables = {}, where) {
67146
+ const listType = this.listType(data);
67147
+ const dataID = this.cache._internal_unstable.id(listType, data);
67148
+ if (!this.validateWhen() || !dataID) {
67149
+ return;
67150
+ }
67151
+ let insertSelection = selection2;
67152
+ let insertData = data;
67153
+ if (this.connection) {
67154
+ insertSelection = {
67155
+ fields: {
67156
+ newEntry: {
67157
+ keyRaw: this.key,
67158
+ type: "Connection",
67159
+ selection: {
67160
+ fields: {
67161
+ edges: {
67162
+ keyRaw: "edges",
67163
+ type: "ConnectionEdge",
67164
+ updates: ["append", "prepend"],
67165
+ selection: {
67166
+ fields: {
67167
+ node: {
67168
+ type: listType,
67169
+ keyRaw: "node",
67170
+ selection: {
67171
+ ...selection2,
67172
+ fields: {
67173
+ ...selection2.fields,
67174
+ __typename: {
67175
+ keyRaw: "__typename",
67176
+ type: "String"
67177
+ }
67178
+ }
67179
+ }
67180
+ }
67181
+ }
67182
+ }
67183
+ }
67184
+ }
67185
+ }
67186
+ }
67187
+ }
67188
+ };
67189
+ insertData = {
67190
+ newEntry: {
67191
+ edges: [{ node: { ...data, __typename: listType } }]
67192
+ }
67193
+ };
67194
+ } else {
67195
+ insertSelection = {
67196
+ fields: {
67197
+ newEntries: {
67198
+ keyRaw: this.key,
67199
+ type: listType,
67200
+ updates: ["append", "prepend"],
67201
+ selection: {
67202
+ ...selection2,
67203
+ fields: {
67204
+ ...selection2.fields,
67205
+ __typename: {
67206
+ keyRaw: "__typename",
67207
+ type: "String"
67208
+ }
67209
+ }
67210
+ }
67211
+ }
67212
+ }
67213
+ };
67214
+ insertData = {
67215
+ newEntries: [{ ...data, __typename: listType }]
67216
+ };
67217
+ }
67218
+ this.cache.write({
67219
+ selection: insertSelection,
67220
+ data: insertData,
67221
+ variables,
67222
+ parent: this.recordID,
67223
+ applyUpdates: [where === "first" ? "prepend" : "append"]
67224
+ });
67225
+ }
67226
+ removeID(id, variables = {}) {
67227
+ if (!this.validateWhen()) {
67228
+ return;
67229
+ }
67230
+ let parentID = this.recordID;
67231
+ let targetID = id;
67232
+ let targetKey = this.key;
67233
+ if (this.connection) {
67234
+ const { value: embeddedConnection } = this.cache._internal_unstable.storage.get(
67235
+ this.recordID,
67236
+ this.key
67237
+ );
67238
+ if (!embeddedConnection) {
67239
+ return;
67240
+ }
67241
+ const embeddedConnectionID = embeddedConnection;
67242
+ const { value: edges } = this.cache._internal_unstable.storage.get(
67243
+ embeddedConnectionID,
67244
+ "edges"
67245
+ );
67246
+ for (const edge of flatten(edges) || []) {
67247
+ if (!edge) {
67248
+ continue;
67249
+ }
67250
+ const edgeID = edge;
67251
+ const { value: nodeID } = this.cache._internal_unstable.storage.get(edgeID, "node");
67252
+ if (!nodeID) {
67253
+ continue;
67254
+ }
67255
+ if (nodeID === id) {
67256
+ targetID = edgeID;
67257
+ }
67258
+ }
67259
+ parentID = embeddedConnectionID;
67260
+ targetKey = "edges";
67261
+ }
67262
+ let value = this.cache._internal_unstable.storage.get(parentID, targetKey).value;
67263
+ if (!value || !value.includes(targetID)) {
67264
+ return;
67265
+ }
67266
+ const subscribers = this.cache._internal_unstable.subscriptions.get(this.recordID, this.key);
67267
+ this.cache._internal_unstable.subscriptions.remove(
67268
+ targetID,
67269
+ this.connection ? this.selection.fields.edges.selection : this.selection,
67270
+ subscribers.map((sub) => sub[0]),
67271
+ variables
67272
+ );
67273
+ this.cache._internal_unstable.storage.remove(parentID, targetKey, targetID);
67274
+ for (const [spec] of subscribers) {
67275
+ spec.set(
67276
+ this.cache._internal_unstable.getSelection({
67277
+ parent: spec.parentID || this.manager.rootID,
67278
+ selection: spec.selection,
67279
+ variables: spec.variables?.() || {}
67280
+ }).data
67281
+ );
67282
+ }
67283
+ return true;
67284
+ }
67285
+ remove(data, variables = {}) {
67286
+ const targetID = this.cache._internal_unstable.id(this.listType(data), data);
67287
+ if (!targetID) {
67288
+ return;
67289
+ }
67290
+ return this.removeID(targetID, variables);
67291
+ }
67292
+ listType(data) {
67293
+ return data.__typename || this.type;
67294
+ }
67295
+ validateWhen(when) {
67296
+ let filters = when || this._when;
67297
+ let ok = true;
67298
+ if (filters) {
67299
+ const targets = this.filters;
67300
+ if (filters.must && targets) {
67301
+ ok = Object.entries(filters.must).reduce(
67302
+ (prev, [key, value]) => Boolean(prev && targets[key] == value),
67303
+ ok
67304
+ );
67305
+ }
67306
+ if (filters.must_not) {
67307
+ ok = !targets || Object.entries(filters.must_not).reduce(
67308
+ (prev, [key, value]) => Boolean(prev && targets[key] != value),
67309
+ ok
67310
+ );
67311
+ }
67312
+ }
67313
+ return ok;
67314
+ }
67315
+ toggleElement(selection2, data, variables = {}, where) {
67316
+ if (!this.remove(data, variables)) {
67317
+ this.addToList(selection2, data, variables, where);
67318
+ }
67319
+ }
67320
+ *[Symbol.iterator]() {
67321
+ let entries = [];
67322
+ let value = this.cache._internal_unstable.storage.get(this.recordID, this.key).value;
67323
+ if (!this.connection) {
67324
+ entries = flatten(value);
67325
+ } else {
67326
+ entries = this.cache._internal_unstable.storage.get(value, "edges").value;
67327
+ }
67328
+ for (let record2 of entries) {
67329
+ yield record2;
67330
+ }
67331
+ }
67332
+ };
67333
+ var ListCollection = class {
67334
+ lists = [];
67335
+ constructor(lists) {
67336
+ this.lists = lists;
67337
+ }
67338
+ get selection() {
67339
+ return this.lists[0].selection;
67340
+ }
67341
+ append(...args) {
67342
+ this.lists.forEach((list) => list.append(...args));
67343
+ }
67344
+ prepend(...args) {
67345
+ this.lists.forEach((list) => list.prepend(...args));
67346
+ }
67347
+ addToList(...args) {
67348
+ this.lists.forEach((list) => list.addToList(...args));
67349
+ }
67350
+ removeID(...args) {
67351
+ this.lists.forEach((list) => list.removeID(...args));
67352
+ }
67353
+ remove(...args) {
67354
+ this.lists.forEach((list) => list.remove(...args));
67355
+ }
67356
+ toggleElement(...args) {
67357
+ this.lists.forEach((list) => list.toggleElement(...args));
67358
+ }
67359
+ when(when) {
67360
+ return new ListCollection(
67361
+ this.lists.filter((list) => {
67362
+ return list.validateWhen(when);
67363
+ })
67364
+ );
67365
+ }
67366
+ includes(key) {
67367
+ return !!this.lists.find((list) => list.key === key);
67368
+ }
67369
+ deleteListWithKey(key) {
67370
+ return this.lists = this.lists.filter((list) => list.key !== key);
67371
+ }
67372
+ *[Symbol.iterator]() {
67373
+ for (let list of this.lists) {
67374
+ for (const entry of list) {
67375
+ yield entry;
67376
+ }
67377
+ }
67378
+ }
67379
+ };
67380
+
67381
+ // src/runtime/cache/schema.ts
67382
+ var SchemaManager = class {
67383
+ cache;
67384
+ fieldTypes = {};
67385
+ constructor(cache) {
67386
+ this.cache = cache;
67387
+ }
67388
+ setFieldType({
67389
+ parent,
67390
+ key,
67391
+ type,
67392
+ nullable = false,
67393
+ link
67394
+ }) {
67395
+ let parensIndex = key.indexOf("(");
67396
+ if (parensIndex !== -1) {
67397
+ key = key.substring(0, parensIndex);
67398
+ }
67399
+ if (parent === rootID) {
67400
+ parent = "Query";
67401
+ } else if (parent.includes(":")) {
67402
+ parent = parent.substring(0, parent.indexOf(":"));
67403
+ }
67404
+ if (!this.fieldTypes[parent]) {
67405
+ this.fieldTypes[parent] = {};
67406
+ }
67407
+ this.fieldTypes[parent][key] = {
67408
+ type,
67409
+ nullable,
67410
+ link: !!link
67411
+ };
67412
+ }
67413
+ fieldType(type, field) {
67414
+ return this.fieldTypes[type]?.[field] || null;
67415
+ }
67416
+ get config() {
67417
+ return this.cache._internal_unstable.config;
67418
+ }
67419
+ };
67420
+
67421
+ // src/runtime/cache/staleManager.ts
67422
+ var StaleManager = class {
67423
+ cache;
67424
+ fieldsTime = /* @__PURE__ */ new Map();
67425
+ constructor(cache) {
67426
+ this.cache = cache;
67427
+ }
67428
+ #initMapId = (id) => {
67429
+ if (!this.fieldsTime.get(id)) {
67430
+ this.fieldsTime.set(id, /* @__PURE__ */ new Map());
67431
+ }
67432
+ };
67433
+ getFieldTime(id, field) {
67434
+ return this.fieldsTime.get(id)?.get(field);
67435
+ }
67436
+ setFieldTimeToNow(id, field) {
67437
+ this.#initMapId(id);
67438
+ this.fieldsTime.get(id)?.set(field, new Date().valueOf());
67439
+ }
67440
+ markFieldStale(id, field) {
67441
+ this.#initMapId(id);
67442
+ this.fieldsTime.get(id)?.set(field, null);
67443
+ }
67444
+ markAllStale() {
67445
+ for (const [id, fieldMap] of this.fieldsTime.entries()) {
67446
+ for (const [field] of fieldMap.entries()) {
67447
+ this.markFieldStale(id, field);
67448
+ }
67449
+ }
67450
+ }
67451
+ markRecordStale(id) {
67452
+ const fieldsTimeOfType = this.fieldsTime.get(id);
67453
+ if (fieldsTimeOfType) {
67454
+ for (const [field] of fieldsTimeOfType.entries()) {
67455
+ this.markFieldStale(id, field);
67456
+ }
67457
+ }
67458
+ }
67459
+ markTypeStale(type) {
67460
+ for (const [id, fieldMap] of this.fieldsTime.entries()) {
67461
+ if (id.startsWith(`${type}:`)) {
67462
+ for (const [field] of fieldMap.entries()) {
67463
+ this.markFieldStale(id, field);
67464
+ }
67465
+ }
67466
+ }
67467
+ }
67468
+ markTypeFieldStale(type, field, when) {
67469
+ const key = computeKey({ field, args: when });
67470
+ for (const [id, fieldMap] of this.fieldsTime.entries()) {
67471
+ if (id.startsWith(`${type}:`)) {
67472
+ for (const local_field of fieldMap.keys()) {
67473
+ if (local_field === key) {
67474
+ this.markFieldStale(id, field);
67475
+ }
67476
+ }
67477
+ }
67478
+ }
67479
+ }
67480
+ delete(id, field) {
67481
+ if (this.fieldsTime.has(id)) {
67482
+ this.fieldsTime.get(id)?.delete(field);
67483
+ if (this.fieldsTime.get(id)?.size === 0) {
67484
+ this.fieldsTime.delete(id);
67485
+ }
67486
+ }
67487
+ }
67488
+ };
67489
+
67490
+ // src/runtime/cache/storage.ts
67491
+ var InMemoryStorage = class {
67492
+ data;
67493
+ idCount = 0;
67494
+ rank = 0;
67495
+ constructor() {
67496
+ this.data = [];
67497
+ }
67498
+ get layerCount() {
67499
+ return this.data.length;
67500
+ }
67501
+ get nextRank() {
67502
+ return this.rank++;
67503
+ }
67504
+ createLayer(optimistic = false) {
67505
+ const layer = new Layer(this.idCount++);
67506
+ layer.optimistic = optimistic;
67507
+ this.data.push(layer);
67508
+ return layer;
67509
+ }
67510
+ insert(id, field, location, target) {
67511
+ return this.topLayer.insert(id, field, location, target);
67512
+ }
67513
+ remove(id, field, target) {
67514
+ return this.topLayer.remove(id, field, target);
67515
+ }
67516
+ delete(id) {
67517
+ return this.topLayer.delete(id);
67518
+ }
67519
+ deleteField(id, field) {
67520
+ return this.topLayer.deleteField(id, field);
67521
+ }
67522
+ getLayer(id) {
67523
+ for (const layer of this.data) {
67524
+ if (layer.id === id) {
67525
+ return layer;
67526
+ }
67527
+ }
67528
+ throw new Error("Could not find layer with id: " + id);
67529
+ }
67530
+ replaceID(replacement) {
67531
+ for (const layer of this.data) {
67532
+ layer.replaceID(replacement);
67533
+ }
67534
+ }
67535
+ get(id, field) {
67536
+ const operations = {
67537
+ [OperationKind.insert]: {
67538
+ [OperationLocation.start]: [],
67539
+ [OperationLocation.end]: []
67540
+ },
67541
+ [OperationKind.remove]: /* @__PURE__ */ new Set()
67542
+ };
67543
+ const layerIDs = [];
67544
+ for (let i2 = this.data.length - 1; i2 >= 0; i2--) {
67545
+ const layer = this.data[i2];
67546
+ const [layerValue, kind] = layer.get(id, field);
67547
+ const layerOperations = layer.getOperations(id, field) || [];
67548
+ layer.deletedIDs.forEach((v) => {
67549
+ if (layer.operations[v]?.undoDeletesInList?.includes(field)) {
67550
+ return;
67551
+ }
67552
+ operations.remove.add(v);
67553
+ });
67554
+ if (typeof layerValue === "undefined" && layerOperations.length === 0) {
67555
+ if (layer.deletedIDs.size > 0) {
67556
+ layerIDs.push(layer.id);
67557
+ }
67558
+ continue;
67559
+ }
67560
+ if (typeof layerValue !== "undefined" && !Array.isArray(layerValue)) {
67561
+ return {
67562
+ value: layerValue,
67563
+ kind,
67564
+ displayLayers: [layer.id]
67565
+ };
67566
+ }
67567
+ layerIDs.push(layer.id);
67568
+ if (layerOperations.length > 0) {
67569
+ for (const op of layerOperations) {
67570
+ if (isRemoveOperation(op)) {
67571
+ operations.remove.add(op.id);
67572
+ }
67573
+ if (isInsertOperation(op)) {
67574
+ operations.insert[op.location].unshift(op.id);
67575
+ }
67576
+ if (isDeleteOperation(op)) {
67577
+ return {
67578
+ value: void 0,
67579
+ kind: "unknown",
67580
+ displayLayers: []
67581
+ };
67582
+ }
67583
+ }
67584
+ }
67585
+ if (typeof layerValue === "undefined") {
67586
+ continue;
67587
+ }
67588
+ if (!operations.remove.size && !operations.insert.start.length && !operations.insert.end.length) {
67589
+ return { value: layerValue, displayLayers: layerIDs, kind: "link" };
67590
+ }
67591
+ return {
67592
+ value: [...operations.insert.start, ...layerValue, ...operations.insert.end].filter(
67593
+ (value) => !operations.remove.has(value)
67594
+ ),
67595
+ displayLayers: layerIDs,
67596
+ kind
67597
+ };
67598
+ }
67599
+ return {
67600
+ value: void 0,
67601
+ kind: "unknown",
67602
+ displayLayers: []
67603
+ };
67604
+ }
67605
+ writeLink(id, field, value) {
67606
+ return this.topLayer.writeLink(id, field, value);
67607
+ }
67608
+ writeField(id, field, value) {
67609
+ return this.topLayer.writeField(id, field, value);
67610
+ }
67611
+ resolveLayer(id) {
67612
+ let startingIndex = null;
67613
+ for (const [index, layer] of this.data.entries()) {
67614
+ if (layer.id !== id) {
67615
+ continue;
67616
+ }
67617
+ startingIndex = index - 1;
67618
+ this.data[index].optimistic = false;
67619
+ break;
67620
+ }
67621
+ if (startingIndex === null) {
67622
+ throw new Error("could not find layer with id: " + id);
67623
+ }
67624
+ if (startingIndex === -1) {
67625
+ startingIndex = 0;
67626
+ }
67627
+ if (this.data[startingIndex].optimistic) {
67628
+ startingIndex++;
67629
+ }
67630
+ const baseLayer = this.data[startingIndex];
67631
+ let layerIndex = startingIndex;
67632
+ while (layerIndex < this.data.length) {
67633
+ const layer = this.data[layerIndex++];
67634
+ if (layer.optimistic) {
67635
+ layerIndex--;
67636
+ break;
67637
+ }
67638
+ baseLayer.writeLayer(layer);
67639
+ }
67640
+ this.data.splice(startingIndex + 1, layerIndex - startingIndex - 1);
67641
+ }
67642
+ get topLayer() {
67643
+ if (this.data.length === 0) {
67644
+ this.createLayer();
67645
+ }
67646
+ if (this.data[this.data.length - 1]?.optimistic) {
67647
+ this.createLayer();
67648
+ }
67649
+ return this.data[this.data.length - 1];
67650
+ }
67651
+ };
67652
+ var Layer = class {
67653
+ id;
67654
+ optimistic = false;
67655
+ fields = {};
67656
+ links = {};
67657
+ operations = {};
67658
+ deletedIDs = /* @__PURE__ */ new Set();
67659
+ constructor(id) {
67660
+ this.id = id;
67661
+ }
67662
+ get(id, field) {
67663
+ if (typeof this.links[id]?.[field] !== "undefined") {
67664
+ return [this.links[id][field], "link"];
67665
+ }
67666
+ return [this.fields[id]?.[field], "scalar"];
67667
+ }
67668
+ getOperations(id, field) {
67669
+ if (this.operations[id]?.deleted) {
67670
+ return [
67671
+ {
67672
+ kind: OperationKind.delete,
67673
+ target: id
67674
+ }
67675
+ ];
67676
+ }
67677
+ if (this.operations[id]?.fields?.[field]) {
67678
+ return this.operations[id].fields[field];
67679
+ }
67680
+ }
67681
+ writeField(id, field, value) {
67682
+ this.fields[id] = {
67683
+ ...this.fields[id],
67684
+ [field]: value
67685
+ };
67686
+ return this.id;
67687
+ }
67688
+ writeLink(id, field, value) {
67689
+ const valueList = Array.isArray(value) ? value : [value];
67690
+ for (const value2 of flatten(valueList)) {
67691
+ if (!value2) {
67692
+ continue;
67693
+ }
67694
+ const fieldOperations = this.operations[id]?.fields[field];
67695
+ if (this.operations[value2]?.deleted || this.deletedIDs.has(value2)) {
67696
+ this.operations[value2] = {
67697
+ ...this.operations[value2],
67698
+ undoDeletesInList: [...this.operations[id]?.undoDeletesInList || [], field]
67699
+ };
67700
+ } else if (value2 && fieldOperations?.length > 0) {
67701
+ this.operations[id].fields[field] = fieldOperations.filter(
67702
+ (op) => op.kind !== "remove" || op.id !== value2
67703
+ );
67704
+ }
67705
+ }
67706
+ this.links[id] = {
67707
+ ...this.links[id],
67708
+ [field]: value
67709
+ };
67710
+ return this.id;
67711
+ }
67712
+ isDisplayLayer(displayLayers) {
67713
+ return displayLayers.length === 0 || displayLayers.includes(this.id) || Math.max(...displayLayers) < this.id;
67714
+ }
67715
+ clear() {
67716
+ this.links = {};
67717
+ this.fields = {};
67718
+ this.operations = {};
67719
+ this.deletedIDs = /* @__PURE__ */ new Set();
67720
+ }
67721
+ replaceID({ from, to }) {
67722
+ this.fields[to] = this.fields[from];
67723
+ this.links[to] = this.links[from];
67724
+ this.operations[to] = this.operations[from] || { fields: {} };
67725
+ if (this.deletedIDs.has(from)) {
67726
+ this.deletedIDs.add(to);
67727
+ }
67728
+ }
67729
+ removeUndefinedFields() {
67730
+ for (const [id, fields] of Object.entries(this.fields)) {
67731
+ for (const [field, value] of Object.entries(fields)) {
67732
+ if (typeof value === "undefined") {
67733
+ try {
67734
+ delete this.fields[id][field];
67735
+ } catch {
67736
+ }
67737
+ try {
67738
+ delete this.links[id][field];
67739
+ } catch {
67740
+ }
67741
+ }
67742
+ }
67743
+ if (Object.keys(fields || {}).length === 0) {
67744
+ delete this.fields[id];
67745
+ }
67746
+ if (Object.keys(this.links[id] || {}).length === 0) {
67747
+ delete this.links[id];
67748
+ }
67749
+ }
67750
+ }
67751
+ delete(id) {
67752
+ this.operations = {
67753
+ ...this.operations,
67754
+ [id]: {
67755
+ ...this.operations[id],
67756
+ deleted: true,
67757
+ undoDeletesInList: []
67758
+ }
67759
+ };
67760
+ this.deletedIDs.add(id);
67761
+ }
67762
+ deleteField(id, field) {
67763
+ this.fields[id] = {
67764
+ ...this.fields[id],
67765
+ [field]: void 0
67766
+ };
67767
+ }
67768
+ insert(id, field, where, target) {
67769
+ this.addFieldOperation(id, field, {
67770
+ kind: OperationKind.insert,
67771
+ id: target,
67772
+ location: where
67773
+ });
67774
+ }
67775
+ remove(id, field, target) {
67776
+ this.addFieldOperation(id, field, {
67777
+ kind: OperationKind.remove,
67778
+ id: target
67779
+ });
67780
+ }
67781
+ writeLayer(layer) {
67782
+ if (layer.id === this.id) {
67783
+ return;
67784
+ }
67785
+ for (const [id, ops] of Object.entries(layer.operations)) {
67786
+ const fields = {};
67787
+ for (const opMap of [this.operations[id], layer.operations[id]].filter(Boolean)) {
67788
+ for (const [fieldName, operations] of Object.entries(opMap.fields || {})) {
67789
+ fields[fieldName] = [...fields[fieldName] || [], ...operations];
67790
+ }
67791
+ }
67792
+ if (Object.keys(fields).length > 0) {
67793
+ this.operations[id] = {
67794
+ ...this.operations[id],
67795
+ fields
67796
+ };
67797
+ }
67798
+ if (ops?.deleted) {
67799
+ delete this.fields[id];
67800
+ delete this.links[id];
67801
+ }
67802
+ }
67803
+ for (const [id, values] of Object.entries(layer.fields)) {
67804
+ if (!values) {
67805
+ continue;
67806
+ }
67807
+ for (const [field, value] of Object.entries(values)) {
67808
+ this.writeField(id, field, value);
67809
+ }
67810
+ }
67811
+ for (const [id, values] of Object.entries(layer.links)) {
67812
+ if (!values) {
67813
+ continue;
67814
+ }
67815
+ for (const [field, value] of Object.entries(values)) {
67816
+ this.writeLink(id, field, value);
67817
+ }
67818
+ }
67819
+ layer.deletedIDs.forEach((v) => this.deletedIDs.add(v));
67820
+ }
67821
+ addFieldOperation(id, field, operation) {
67822
+ this.operations = {
67823
+ ...this.operations,
67824
+ [id]: {
67825
+ ...this.operations[id],
67826
+ fields: {
67827
+ [field]: [...this.operations[id]?.fields[field] || [], operation]
67828
+ }
67829
+ }
67830
+ };
67831
+ }
67832
+ };
67833
+ function isDeleteOperation(value) {
67834
+ return !!value && value.kind === OperationKind.delete;
67835
+ }
67836
+ function isInsertOperation(value) {
67837
+ return !!value && value.kind === OperationKind.insert;
67838
+ }
67839
+ function isRemoveOperation(value) {
67840
+ return !!value && value.kind === OperationKind.remove;
67841
+ }
67842
+ var OperationLocation = {
67843
+ start: "start",
67844
+ end: "end"
67845
+ };
67846
+ var OperationKind = {
67847
+ delete: "delete",
67848
+ insert: "insert",
67849
+ remove: "remove"
67850
+ };
67851
+
67852
+ // src/runtime/cache/stuff.ts
67853
+ function evaluateKey(key, variables = {}) {
67854
+ let evaluated = "";
67855
+ let varName = "";
67856
+ let inString = false;
67857
+ for (const char of key) {
67858
+ if (varName) {
67859
+ if (varChars.includes(char)) {
67860
+ varName += char;
67861
+ continue;
67862
+ }
67863
+ const value = variables[varName.slice(1)];
67864
+ evaluated += typeof value !== "undefined" ? JSON.stringify(value) : "undefined";
67865
+ varName = "";
67866
+ }
67867
+ if (char === "$" && !inString) {
67868
+ varName = "$";
67869
+ continue;
67870
+ }
67871
+ if (char === '"') {
67872
+ inString = !inString;
67873
+ }
67874
+ evaluated += char;
67875
+ }
67876
+ return evaluated;
67877
+ }
67878
+ var varChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789";
67879
+
67880
+ // src/runtime/cache/subscription.ts
67881
+ var InMemorySubscriptions = class {
67882
+ cache;
67883
+ constructor(cache) {
67884
+ this.cache = cache;
67885
+ }
67886
+ subscribers = {};
67887
+ referenceCounts = {};
67888
+ keyVersions = {};
67889
+ add({
67890
+ parent,
67891
+ spec,
67892
+ selection: selection2,
67893
+ variables,
67894
+ parentType
67895
+ }) {
67896
+ const __typename = this.cache._internal_unstable.storage.get(parent, "__typename").value;
67897
+ let targetSelection = getFieldsForType(selection2, __typename);
67898
+ for (const fieldSelection of Object.values(targetSelection || {})) {
67899
+ const { keyRaw, selection: innerSelection, type, list, filters } = fieldSelection;
67900
+ const key = evaluateKey(keyRaw, variables);
67901
+ let targetSelection2;
67902
+ if (innerSelection) {
67903
+ const __typename2 = this.cache._internal_unstable.storage.get(parent, "__typename").value;
67904
+ targetSelection2 = getFieldsForType(innerSelection, __typename2);
67905
+ }
67906
+ this.addFieldSubscription({
67907
+ id: parent,
67908
+ key,
67909
+ selection: [spec, targetSelection2],
67910
+ type
67911
+ });
67912
+ if (list) {
67913
+ this.registerList({
67914
+ list,
67915
+ filters,
67916
+ id: parent,
67917
+ key,
67918
+ variables,
67919
+ selection: innerSelection,
67920
+ parentType: parentType || spec.rootType
67921
+ });
67922
+ }
67923
+ if (innerSelection) {
67924
+ const { value: linkedRecord } = this.cache._internal_unstable.storage.get(
67925
+ parent,
67926
+ key
67927
+ );
67928
+ let children = !Array.isArray(linkedRecord) ? [linkedRecord] : flatten(linkedRecord) || [];
67929
+ for (const child of children) {
67930
+ if (!child) {
67931
+ continue;
67932
+ }
67933
+ this.add({
67934
+ parent: child,
67935
+ spec,
67936
+ selection: innerSelection,
67937
+ variables,
67938
+ parentType: type
67939
+ });
67940
+ }
67941
+ }
67942
+ }
67943
+ }
67944
+ addFieldSubscription({
67945
+ id,
67946
+ key,
67947
+ selection: selection2,
67948
+ type
67949
+ }) {
67950
+ const spec = selection2[0];
67951
+ if (!this.subscribers[id]) {
67952
+ this.subscribers[id] = {};
67953
+ }
67954
+ if (!this.subscribers[id][key]) {
67955
+ this.subscribers[id][key] = [];
67956
+ }
67957
+ if (!this.keyVersions[key]) {
67958
+ this.keyVersions[key] = /* @__PURE__ */ new Set();
67959
+ }
67960
+ this.keyVersions[key].add(key);
67961
+ if (!this.subscribers[id][key].map(([{ set }]) => set).includes(spec.set)) {
67962
+ this.subscribers[id][key].push([spec, selection2[1]]);
67963
+ }
67964
+ if (!this.referenceCounts[id]) {
67965
+ this.referenceCounts[id] = {};
67966
+ }
67967
+ if (!this.referenceCounts[id][key]) {
67968
+ this.referenceCounts[id][key] = /* @__PURE__ */ new Map();
67969
+ }
67970
+ const counts = this.referenceCounts[id][key];
67971
+ counts.set(spec.set, (counts.get(spec.set) || 0) + 1);
67972
+ this.cache._internal_unstable.lifetimes.resetLifetime(id, key);
67973
+ const { selection: innerSelection } = selection2[1]?.[key] ?? {};
67974
+ }
67975
+ registerList({
67976
+ list,
67977
+ id,
67978
+ key,
67979
+ parentType,
67980
+ selection: selection2,
67981
+ filters,
67982
+ variables
67983
+ }) {
67984
+ this.cache._internal_unstable.lists.add({
67985
+ name: list.name,
67986
+ connection: list.connection,
67987
+ recordID: id,
67988
+ recordType: this.cache._internal_unstable.storage.get(id, "__typename")?.value || parentType,
67989
+ listType: list.type,
67990
+ key,
67991
+ selection: selection2,
67992
+ filters: Object.entries(filters || {}).reduce((acc, [key2, { kind, value }]) => {
67993
+ return {
67994
+ ...acc,
67995
+ [key2]: kind !== "Variable" ? value : variables[value]
67996
+ };
67997
+ }, {})
67998
+ });
67999
+ }
68000
+ addMany({
68001
+ parent,
68002
+ variables,
68003
+ subscribers,
68004
+ parentType
68005
+ }) {
68006
+ for (const [spec, targetSelection] of subscribers) {
68007
+ for (const selection2 of Object.values(targetSelection ?? {})) {
68008
+ const {
68009
+ type: linkedType,
68010
+ keyRaw,
68011
+ selection: innerSelection,
68012
+ list,
68013
+ filters
68014
+ } = selection2;
68015
+ const key = evaluateKey(keyRaw, variables);
68016
+ const fieldSelection = innerSelection ? getFieldsForType(innerSelection, parentType) : void 0;
68017
+ this.addFieldSubscription({
68018
+ id: parent,
68019
+ key,
68020
+ selection: [spec, fieldSelection],
68021
+ type: linkedType
68022
+ });
68023
+ if (list) {
68024
+ this.registerList({
68025
+ list,
68026
+ filters,
68027
+ id: parent,
68028
+ key,
68029
+ variables,
68030
+ selection: innerSelection,
68031
+ parentType: parentType || spec.rootType
68032
+ });
68033
+ }
68034
+ const childSelection = selection2.selection;
68035
+ if (childSelection) {
68036
+ const { value: link } = this.cache._internal_unstable.storage.get(parent, key);
68037
+ const children = !Array.isArray(link) ? [link] : flatten(link);
68038
+ for (const linkedRecord of children) {
68039
+ if (!linkedRecord) {
68040
+ continue;
68041
+ }
68042
+ const __typename = this.cache._internal_unstable.storage.get(
68043
+ linkedRecord,
68044
+ "__typename"
68045
+ ).value;
68046
+ let targetSelection2 = getFieldsForType(childSelection, __typename);
68047
+ this.addMany({
68048
+ parent: linkedRecord,
68049
+ variables,
68050
+ subscribers: subscribers.map(([sub]) => [sub, targetSelection2]),
68051
+ parentType: linkedType
68052
+ });
68053
+ }
68054
+ }
68055
+ }
68056
+ }
68057
+ }
68058
+ get(id, field) {
68059
+ return this.subscribers[id]?.[field] || [];
68060
+ }
68061
+ remove(id, selection2, targets, variables, visited = []) {
68062
+ visited.push(id);
68063
+ const linkedIDs = [];
68064
+ const __typename = this.cache._internal_unstable.storage.get(id, "__typename").value;
68065
+ let targetSelection = getFieldsForType(selection2, __typename);
68066
+ for (const fieldSelection of Object.values(targetSelection || {})) {
68067
+ const key = evaluateKey(fieldSelection.keyRaw, variables);
68068
+ this.removeSubscribers(id, key, targets);
68069
+ if (!fieldSelection.selection) {
68070
+ continue;
68071
+ }
68072
+ const { value: previousValue } = this.cache._internal_unstable.storage.get(id, key);
68073
+ const links = !Array.isArray(previousValue) ? [previousValue] : flatten(previousValue);
68074
+ for (const link of links) {
68075
+ if (link !== null) {
68076
+ linkedIDs.push([link, fieldSelection.selection || {}]);
68077
+ }
68078
+ }
68079
+ }
68080
+ for (const [linkedRecordID, linkFields] of linkedIDs) {
68081
+ this.remove(linkedRecordID, linkFields, targets, visited);
68082
+ }
68083
+ }
68084
+ removeSubscribers(id, fieldName, specs) {
68085
+ let targets = [];
68086
+ for (const spec of specs) {
68087
+ if (!this.referenceCounts[id]?.[fieldName]?.has(spec.set)) {
68088
+ continue;
68089
+ }
68090
+ const counts = this.referenceCounts[id][fieldName];
68091
+ const newVal = (counts.get(spec.set) || 0) - 1;
68092
+ counts.set(spec.set, newVal);
68093
+ if (newVal <= 0) {
68094
+ targets.push(spec.set);
68095
+ counts.delete(spec.set);
68096
+ }
68097
+ }
68098
+ if (this.subscribers[id]) {
68099
+ this.subscribers[id][fieldName] = this.get(id, fieldName).filter(
68100
+ ([{ set }]) => !targets.includes(set)
68101
+ );
68102
+ }
68103
+ }
68104
+ removeAllSubscribers(id, targets, visited = []) {
68105
+ visited.push(id);
68106
+ for (const field of Object.keys(this.subscribers[id] || [])) {
68107
+ const subscribers = targets || this.subscribers[id][field].map(([spec]) => spec);
68108
+ this.removeSubscribers(id, field, subscribers);
68109
+ const { value, kind } = this.cache._internal_unstable.storage.get(id, field);
68110
+ if (kind === "scalar") {
68111
+ continue;
68112
+ }
68113
+ const nextTargets = Array.isArray(value) ? flatten(value) : [value];
68114
+ for (const id2 of nextTargets) {
68115
+ if (visited.includes(id2)) {
68116
+ continue;
68117
+ }
68118
+ this.removeAllSubscribers(id2, subscribers, visited);
68119
+ }
68120
+ }
68121
+ }
68122
+ };
68123
+
68124
+ // src/runtime/cache/cache.ts
68125
+ var Cache = class {
68126
+ _internal_unstable;
68127
+ constructor(config4) {
68128
+ this._internal_unstable = new CacheInternal({
68129
+ cache: this,
68130
+ storage: new InMemoryStorage(),
68131
+ subscriptions: new InMemorySubscriptions(this),
68132
+ lists: new ListManager(this, rootID),
68133
+ lifetimes: new GarbageCollector(this),
68134
+ staleManager: new StaleManager(this),
68135
+ schema: new SchemaManager(this)
68136
+ });
68137
+ if (config4) {
68138
+ this.setConfig(defaultConfigValues(config4));
68139
+ }
68140
+ }
68141
+ write({
68142
+ layer: layerID,
68143
+ notifySubscribers = [],
68144
+ ...args
68145
+ }) {
68146
+ const layer = layerID ? this._internal_unstable.storage.getLayer(layerID) : this._internal_unstable.storage.topLayer;
68147
+ const subscribers = this._internal_unstable.writeSelection({ ...args, layer }).map((sub) => sub[0]);
68148
+ const notified = [];
68149
+ for (const spec of subscribers.concat(notifySubscribers)) {
68150
+ if (!notified.includes(spec.set)) {
68151
+ notified.push(spec.set);
68152
+ spec.set(
68153
+ this._internal_unstable.getSelection({
68154
+ parent: spec.parentID || rootID,
68155
+ selection: spec.selection,
68156
+ variables: spec.variables?.() || {}
68157
+ }).data
68158
+ );
68159
+ }
68160
+ }
68161
+ return subscribers;
68162
+ }
68163
+ read(...args) {
68164
+ const { data, partial, stale, hasData } = this._internal_unstable.getSelection(...args);
68165
+ if (!hasData) {
68166
+ return { data: null, partial: false, stale: false };
68167
+ }
68168
+ return {
68169
+ data,
68170
+ partial,
68171
+ stale
68172
+ };
68173
+ }
68174
+ subscribe(spec, variables = {}) {
68175
+ return this._internal_unstable.subscriptions.add({
68176
+ parent: spec.parentID || rootID,
68177
+ spec,
68178
+ selection: spec.selection,
68179
+ variables
68180
+ });
68181
+ }
68182
+ unsubscribe(spec, variables = {}) {
68183
+ return this._internal_unstable.subscriptions.remove(
68184
+ spec.parentID || rootID,
68185
+ spec.selection,
68186
+ [spec],
68187
+ variables
68188
+ );
68189
+ }
68190
+ list(name, parentID, allLists) {
68191
+ const handler = this._internal_unstable.lists.get(name, parentID, allLists);
68192
+ if (!handler) {
68193
+ throw new Error(
68194
+ `Cannot find list with name: ${name}${parentID ? " under parent " + parentID : ""}. Is it possible that the query is not mounted?`
68195
+ );
68196
+ }
68197
+ return handler;
68198
+ }
68199
+ delete(id) {
68200
+ this._internal_unstable.subscriptions.removeAllSubscribers(id);
68201
+ this._internal_unstable.lists.removeIDFromAllLists(id);
68202
+ this._internal_unstable.storage.delete(id);
68203
+ }
68204
+ setConfig(config4) {
68205
+ this._internal_unstable.setConfig(config4);
68206
+ }
68207
+ markTypeStale(options) {
68208
+ if (!options) {
68209
+ this._internal_unstable.staleManager.markAllStale();
68210
+ } else if (!options.field) {
68211
+ this._internal_unstable.staleManager.markTypeStale(options.type);
68212
+ } else {
68213
+ this._internal_unstable.staleManager.markTypeFieldStale(
68214
+ options.type,
68215
+ options.field,
68216
+ options.when
68217
+ );
68218
+ }
68219
+ }
68220
+ markRecordStale(id, options) {
68221
+ if (options.field) {
68222
+ const key = computeKey({ field: options.field, args: options.when ?? {} });
68223
+ this._internal_unstable.staleManager.markFieldStale(id, key);
68224
+ } else {
68225
+ this._internal_unstable.staleManager.markRecordStale(id);
68226
+ }
68227
+ }
68228
+ getFieldTime(id, field) {
68229
+ return this._internal_unstable.staleManager.getFieldTime(id, field);
68230
+ }
68231
+ };
68232
+ var CacheInternal = class {
68233
+ _disabled = false;
68234
+ config = defaultConfigValues({
68235
+ plugins: {
68236
+ "houdini-svelte": {
68237
+ client: ""
68238
+ }
68239
+ }
68240
+ });
68241
+ storage;
68242
+ subscriptions;
68243
+ lists;
68244
+ cache;
68245
+ lifetimes;
68246
+ staleManager;
68247
+ schema;
68248
+ constructor({
68249
+ storage,
68250
+ subscriptions,
68251
+ lists,
68252
+ cache,
68253
+ lifetimes,
68254
+ staleManager,
68255
+ schema
68256
+ }) {
68257
+ this.storage = storage;
68258
+ this.subscriptions = subscriptions;
68259
+ this.lists = lists;
68260
+ this.cache = cache;
68261
+ this.lifetimes = lifetimes;
68262
+ this.staleManager = staleManager;
68263
+ this.schema = schema;
68264
+ this._disabled = typeof globalThis.window === "undefined";
68265
+ try {
68266
+ if (process.env.HOUDINI_TEST === "true") {
68267
+ this._disabled = false;
68268
+ }
68269
+ } catch {
68270
+ }
68271
+ }
68272
+ setConfig(config4) {
68273
+ this.config = config4;
68274
+ }
68275
+ writeSelection({
68276
+ data,
68277
+ selection: selection2,
68278
+ variables = {},
68279
+ parent = rootID,
68280
+ applyUpdates,
68281
+ layer,
68282
+ toNotify = [],
68283
+ forceNotify,
68284
+ forceStale
68285
+ }) {
68286
+ if (this._disabled) {
68287
+ return [];
68288
+ }
68289
+ let targetSelection = getFieldsForType(selection2, data["__typename"]);
68290
+ for (const [field, value] of Object.entries(data)) {
68291
+ if (!selection2 || !targetSelection[field]) {
68292
+ throw new Error(
68293
+ "Could not find field listing in selection for " + field + " @ " + JSON.stringify(selection2)
68294
+ );
68295
+ }
68296
+ let {
68297
+ type: linkedType,
68298
+ keyRaw,
68299
+ selection: fieldSelection,
68300
+ operations,
68301
+ abstract: isAbstract,
68302
+ updates,
68303
+ nullable
68304
+ } = targetSelection[field];
68305
+ const key = evaluateKey(keyRaw, variables);
68306
+ this.schema.setFieldType({
68307
+ parent,
68308
+ key: keyRaw,
68309
+ type: linkedType,
68310
+ nullable,
68311
+ link: !!fieldSelection
68312
+ });
68313
+ const currentSubscribers = this.subscriptions.get(parent, key);
68314
+ const specs = currentSubscribers.map((sub) => sub[0]);
68315
+ const { value: previousValue, displayLayers } = this.storage.get(parent, key);
68316
+ const displayLayer = layer.isDisplayLayer(displayLayers);
68317
+ if (displayLayer) {
68318
+ this.lifetimes.resetLifetime(parent, key);
68319
+ if (forceStale) {
68320
+ this.staleManager.markFieldStale(parent, key);
68321
+ } else {
68322
+ this.staleManager.setFieldTimeToNow(parent, key);
68323
+ }
68324
+ }
68325
+ if (!fieldSelection) {
68326
+ let newValue = value;
68327
+ if (updates && applyUpdates && Array.isArray(value)) {
68328
+ for (const update of applyUpdates) {
68329
+ if (!updates.includes(update)) {
68330
+ continue;
68331
+ }
68332
+ if (update === "append") {
68333
+ newValue = (previousValue || []).concat(value);
68334
+ } else if (update === "prepend") {
68335
+ newValue = value.concat(previousValue || []);
68336
+ }
68337
+ }
68338
+ }
68339
+ if (updates && applyUpdates?.includes("prepend") && ["endCursor", "hasNextPage"].includes(key)) {
68340
+ newValue = previousValue;
68341
+ } else if (updates && applyUpdates?.includes("append") && ["startCursor", "hasPreviousPage"].includes(key)) {
68342
+ newValue = previousValue;
68343
+ }
68344
+ const valueChanged = !deepEquals(newValue, previousValue);
68345
+ if (displayLayer && (valueChanged || forceNotify)) {
68346
+ toNotify.push(...currentSubscribers);
68347
+ }
68348
+ layer.writeField(parent, key, newValue);
68349
+ } else if (value === null) {
68350
+ if (previousValue === null) {
68351
+ continue;
68352
+ }
68353
+ const previousLinks = flatten([previousValue]);
68354
+ for (const link of previousLinks) {
68355
+ this.subscriptions.remove(link, fieldSelection, specs, variables);
68356
+ }
68357
+ layer.writeLink(parent, key, null);
68358
+ toNotify.push(...currentSubscribers);
68359
+ } else if (value instanceof Object && !Array.isArray(value)) {
68360
+ if (isAbstract) {
68361
+ if (!value.__typename) {
68362
+ throw new Error(
68363
+ "Encountered interface type without __typename in the payload"
68364
+ );
68365
+ }
68366
+ linkedType = value.__typename;
68367
+ }
68368
+ const embedded = this.idFields(linkedType)?.filter(
68369
+ (field2) => typeof value[field2] === "undefined"
68370
+ ).length > 0;
68371
+ let linkedID = null;
68372
+ if (value !== null) {
68373
+ linkedID = !embedded ? this.id(linkedType, value) : `${parent}.${key}`;
68374
+ }
68375
+ let linkChange = linkedID !== previousValue;
68376
+ layer.writeLink(parent, key, linkedID);
68377
+ if (linkedID && displayLayer && (linkChange || forceNotify)) {
68378
+ if (previousValue && typeof previousValue === "string") {
68379
+ this.subscriptions.remove(previousValue, fieldSelection, specs, variables);
68380
+ }
68381
+ this.subscriptions.addMany({
68382
+ parent: linkedID,
68383
+ subscribers: currentSubscribers,
68384
+ variables,
68385
+ parentType: linkedType
68386
+ });
68387
+ toNotify.push(...currentSubscribers);
68388
+ }
68389
+ if (linkedID) {
68390
+ this.writeSelection({
68391
+ selection: fieldSelection,
68392
+ parent: linkedID,
68393
+ data: value,
68394
+ variables,
68395
+ toNotify,
68396
+ applyUpdates,
68397
+ layer,
68398
+ forceNotify
68399
+ });
68400
+ }
68401
+ } else if (Array.isArray(value) && (typeof previousValue === "undefined" || Array.isArray(previousValue))) {
68402
+ let oldIDs = [...previousValue || []];
68403
+ const emptyEdges = !updates ? [] : oldIDs.map((id) => {
68404
+ if (!id) {
68405
+ return "";
68406
+ }
68407
+ const { value: cursorField } = this.storage.get(id, "cursor");
68408
+ if (cursorField) {
68409
+ return "";
68410
+ }
68411
+ const { value: node } = this.storage.get(id, "node");
68412
+ if (!node) {
68413
+ return "";
68414
+ }
68415
+ return node;
68416
+ });
68417
+ let linkedIDs = [];
68418
+ const { newIDs, nestedIDs } = this.extractNestedListIDs({
68419
+ value,
68420
+ abstract: Boolean(isAbstract),
68421
+ specs: toNotify,
68422
+ applyUpdates,
68423
+ recordID: parent,
68424
+ key,
68425
+ linkedType,
68426
+ variables,
68427
+ fields: fieldSelection,
68428
+ layer,
68429
+ forceNotify
68430
+ });
68431
+ if (applyUpdates && updates) {
68432
+ if (key === "edges") {
68433
+ const newNodeIDs = [];
68434
+ for (const id of newIDs) {
68435
+ if (!id) {
68436
+ continue;
68437
+ }
68438
+ const { value: node } = this.storage.get(id, "node");
68439
+ if (typeof node !== "string") {
68440
+ continue;
68441
+ }
68442
+ if (!node || !this.storage.get(node, "__typename")) {
68443
+ continue;
68444
+ }
68445
+ newNodeIDs.push(node);
68446
+ }
68447
+ oldIDs = oldIDs.filter((id) => {
68448
+ if (!id) {
68449
+ return true;
68450
+ }
68451
+ const { value: value2 } = this.storage.get(id, "node");
68452
+ const node = value2;
68453
+ if (newNodeIDs.includes(node) && emptyEdges.includes(node)) {
68454
+ return false;
68455
+ }
68456
+ return true;
68457
+ });
68458
+ }
68459
+ for (const update of applyUpdates) {
68460
+ if (update !== "replace" && !updates.includes(update)) {
68461
+ continue;
68462
+ }
68463
+ if (update === "prepend") {
68464
+ linkedIDs = newIDs.concat(oldIDs);
68465
+ } else if (update === "append") {
68466
+ linkedIDs = oldIDs.concat(newIDs);
68467
+ } else if (update === "replace") {
68468
+ linkedIDs = newIDs;
68469
+ }
68470
+ }
68471
+ } else {
68472
+ linkedIDs = nestedIDs;
68473
+ }
68474
+ const contentChanged = !deepEquals(linkedIDs, oldIDs);
68475
+ if (contentChanged || forceNotify) {
68476
+ toNotify.push(...currentSubscribers);
68477
+ }
68478
+ for (const lostID of oldIDs) {
68479
+ if (linkedIDs.includes(lostID) || !lostID) {
68480
+ continue;
68481
+ }
68482
+ this.subscriptions.remove(lostID, fieldSelection, specs, variables);
68483
+ }
68484
+ if (contentChanged || oldIDs.length === 0 && newIDs.length === 0) {
68485
+ layer.writeLink(parent, key, linkedIDs);
68486
+ }
68487
+ for (const id of newIDs.filter((id2) => !oldIDs.includes(id2))) {
68488
+ if (id == null) {
68489
+ continue;
68490
+ }
68491
+ this.subscriptions.addMany({
68492
+ parent: id,
68493
+ subscribers: currentSubscribers,
68494
+ variables,
68495
+ parentType: linkedType
68496
+ });
68497
+ }
68498
+ }
68499
+ for (const operation of operations || []) {
68500
+ let parentID;
68501
+ if (operation.parentID) {
68502
+ if (operation.parentID.kind !== "Variable") {
68503
+ parentID = operation.parentID.value;
68504
+ } else {
68505
+ const id = variables[operation.parentID.value];
68506
+ if (typeof id !== "string") {
68507
+ throw new Error("parentID value must be a string");
68508
+ }
68509
+ parentID = id;
68510
+ }
68511
+ }
68512
+ if (operation.list && !this.lists.get(operation.list, parentID, operation.target === "all")) {
68513
+ continue;
68514
+ }
68515
+ const targets = Array.isArray(value) ? value : [value];
68516
+ for (const target of targets) {
68517
+ if (operation.action === "insert" && target instanceof Object && fieldSelection && operation.list) {
68518
+ this.cache.list(operation.list, parentID, operation.target === "all").when(operation.when).addToList(
68519
+ fieldSelection,
68520
+ target,
68521
+ variables,
68522
+ operation.position || "last"
68523
+ );
68524
+ } else if (operation.action === "remove" && target instanceof Object && fieldSelection && operation.list) {
68525
+ this.cache.list(operation.list, parentID, operation.target === "all").when(operation.when).remove(target, variables);
68526
+ } else if (operation.action === "delete" && operation.type) {
68527
+ if (typeof target !== "string") {
68528
+ throw new Error("Cannot delete a record with a non-string ID");
68529
+ }
68530
+ const targetID = this.id(operation.type, target);
68531
+ if (!targetID) {
68532
+ continue;
68533
+ }
68534
+ this.cache.delete(targetID);
68535
+ } else if (operation.action === "toggle" && target instanceof Object && fieldSelection && operation.list) {
68536
+ this.cache.list(operation.list, parentID, operation.target === "all").when(operation.when).toggleElement(
68537
+ fieldSelection,
68538
+ target,
68539
+ variables,
68540
+ operation.position || "last"
68541
+ );
68542
+ }
68543
+ }
68544
+ }
68545
+ }
68546
+ return toNotify;
68547
+ }
68548
+ getSelection({
68549
+ selection: selection2,
68550
+ parent = rootID,
68551
+ variables,
68552
+ stepsFromConnection = null
68553
+ }) {
68554
+ if (parent === null) {
68555
+ return { data: null, partial: false, stale: false, hasData: true };
68556
+ }
68557
+ const target = {};
68558
+ let hasData = false;
68559
+ let partial = false;
68560
+ let cascadeNull = false;
68561
+ let stale = false;
68562
+ const typename = this.storage.get(parent, "__typename").value;
68563
+ let targetSelection = getFieldsForType(selection2, typename);
68564
+ for (const [
68565
+ attributeName,
68566
+ { type, keyRaw, selection: fieldSelection, nullable, list }
68567
+ ] of Object.entries(targetSelection)) {
68568
+ const key = evaluateKey(keyRaw, variables);
68569
+ const { value } = this.storage.get(parent, key);
68570
+ const dt_field = this.staleManager.getFieldTime(parent, key);
68571
+ if (dt_field === null) {
68572
+ stale = true;
68573
+ }
68574
+ let nextStep = stepsFromConnection;
68575
+ if (nextStep !== null) {
68576
+ if (nextStep >= 2) {
68577
+ nextStep = null;
68578
+ } else {
68579
+ nextStep += 1;
68580
+ }
68581
+ }
68582
+ if (list?.connection) {
68583
+ nextStep = 0;
68584
+ }
68585
+ const embeddedCursor = key === "cursor" && stepsFromConnection === 1;
68586
+ if (typeof value === "undefined" && !embeddedCursor) {
68587
+ partial = true;
68588
+ }
68589
+ if (typeof value === "undefined" || value === null) {
68590
+ target[attributeName] = null;
68591
+ if (typeof value !== "undefined") {
68592
+ hasData = true;
68593
+ }
68594
+ } else if (!fieldSelection) {
68595
+ const fnUnmarshal = this.config?.scalars?.[type]?.unmarshal;
68596
+ if (fnUnmarshal) {
68597
+ target[attributeName] = fnUnmarshal(value);
68598
+ } else {
68599
+ target[attributeName] = value;
68600
+ }
68601
+ hasData = true;
68602
+ } else if (Array.isArray(value)) {
68603
+ const listValue = this.hydrateNestedList({
68604
+ fields: fieldSelection,
68605
+ variables,
68606
+ linkedList: value,
68607
+ stepsFromConnection: nextStep
68608
+ });
68609
+ target[attributeName] = listValue.data;
68610
+ if (listValue.partial) {
68611
+ partial = true;
68612
+ }
68613
+ if (listValue.stale) {
68614
+ stale = true;
68615
+ }
68616
+ if (listValue.hasData || value.length === 0) {
68617
+ hasData = true;
68618
+ }
68619
+ } else {
68620
+ const objectFields = this.getSelection({
68621
+ parent: value,
68622
+ selection: fieldSelection,
68623
+ variables,
68624
+ stepsFromConnection: nextStep
68625
+ });
68626
+ target[attributeName] = objectFields.data;
68627
+ if (objectFields.partial) {
68628
+ partial = true;
68629
+ }
68630
+ if (objectFields.stale) {
68631
+ stale = true;
68632
+ }
68633
+ if (objectFields.hasData) {
68634
+ hasData = true;
68635
+ }
68636
+ }
68637
+ if (target[attributeName] === null && !nullable && !embeddedCursor) {
68638
+ cascadeNull = true;
68639
+ }
68640
+ }
68641
+ return {
68642
+ data: cascadeNull ? null : target,
68643
+ partial: hasData && partial,
68644
+ stale: hasData && stale,
68645
+ hasData
68646
+ };
68647
+ }
68648
+ id(type, data) {
68649
+ const id = typeof data === "string" ? data : this.computeID(type, data);
68650
+ if (!id) {
68651
+ return null;
68652
+ }
68653
+ if (!type) {
68654
+ return id;
68655
+ }
68656
+ return type + ":" + id;
68657
+ }
68658
+ idFields(type) {
68659
+ return keyFieldsForType(this.config, type);
68660
+ }
68661
+ computeID(type, data) {
68662
+ return computeID(this.config, type, data);
68663
+ }
68664
+ hydrateNestedList({
68665
+ fields,
68666
+ variables,
68667
+ linkedList,
68668
+ stepsFromConnection
68669
+ }) {
68670
+ const result = [];
68671
+ let partialData = false;
68672
+ let stale = false;
68673
+ let hasValues = false;
68674
+ for (const entry of linkedList) {
68675
+ if (Array.isArray(entry)) {
68676
+ const nestedValue = this.hydrateNestedList({
68677
+ fields,
68678
+ variables,
68679
+ linkedList: entry,
68680
+ stepsFromConnection
68681
+ });
68682
+ result.push(nestedValue.data);
68683
+ if (nestedValue.partial) {
68684
+ partialData = true;
68685
+ }
68686
+ continue;
68687
+ }
68688
+ if (entry === null) {
68689
+ result.push(entry);
68690
+ continue;
68691
+ }
68692
+ const {
68693
+ data,
68694
+ partial,
68695
+ stale: local_stale,
68696
+ hasData
68697
+ } = this.getSelection({
68698
+ parent: entry,
68699
+ selection: fields,
68700
+ variables,
68701
+ stepsFromConnection
68702
+ });
68703
+ result.push(data);
68704
+ if (partial) {
68705
+ partialData = true;
68706
+ }
68707
+ if (local_stale) {
68708
+ stale = true;
68709
+ }
68710
+ if (hasData) {
68711
+ hasValues = true;
68712
+ }
68713
+ }
68714
+ return {
68715
+ data: result,
68716
+ partial: partialData,
68717
+ stale,
68718
+ hasData: hasValues
68719
+ };
68720
+ }
68721
+ extractNestedListIDs({
68722
+ value,
68723
+ abstract,
68724
+ recordID,
68725
+ key,
68726
+ linkedType,
68727
+ fields,
68728
+ variables,
68729
+ applyUpdates,
68730
+ specs,
68731
+ layer,
68732
+ forceNotify
68733
+ }) {
68734
+ const nestedIDs = [];
68735
+ const newIDs = [];
68736
+ for (const [i2, entry] of value.entries()) {
68737
+ if (Array.isArray(entry)) {
68738
+ const inner = this.extractNestedListIDs({
68739
+ value: entry,
68740
+ abstract,
68741
+ recordID,
68742
+ key,
68743
+ linkedType,
68744
+ fields,
68745
+ variables,
68746
+ applyUpdates,
68747
+ specs,
68748
+ layer,
68749
+ forceNotify
68750
+ });
68751
+ newIDs.push(...inner.newIDs);
68752
+ nestedIDs[i2] = inner.nestedIDs;
68753
+ continue;
68754
+ }
68755
+ if (entry === null || typeof entry === "undefined") {
68756
+ newIDs.push(null);
68757
+ nestedIDs[i2] = null;
68758
+ continue;
68759
+ }
68760
+ const entryObj = entry;
68761
+ let linkedID = `${recordID}.${key}[${this.storage.nextRank}]`;
68762
+ const embedded = this.idFields(linkedType)?.filter(
68763
+ (field) => typeof entry[field] === "undefined"
68764
+ ).length > 0;
68765
+ const typename = entryObj.__typename;
68766
+ let innerType = linkedType;
68767
+ if (abstract) {
68768
+ if (!typename) {
68769
+ throw new Error("Encountered interface type without __typename in the payload");
68770
+ }
68771
+ innerType = typename;
68772
+ }
68773
+ if (!embedded) {
68774
+ const id = this.id(innerType, entry);
68775
+ if (id) {
68776
+ linkedID = id;
68777
+ } else {
68778
+ continue;
68779
+ }
68780
+ }
68781
+ this.writeSelection({
68782
+ root: rootID,
68783
+ selection: fields,
68784
+ parent: linkedID,
68785
+ data: entryObj,
68786
+ variables,
68787
+ toNotify: specs,
68788
+ applyUpdates,
68789
+ layer,
68790
+ forceNotify
68791
+ });
68792
+ newIDs.push(linkedID);
68793
+ nestedIDs[i2] = linkedID;
68794
+ }
68795
+ return { newIDs, nestedIDs };
68796
+ }
68797
+ collectGarbage() {
68798
+ this.lifetimes.tick();
68799
+ if (this.storage.layerCount === 1) {
68800
+ this.storage.topLayer.removeUndefinedFields();
68801
+ }
68802
+ }
68803
+ };
68804
+ var rootID = "_ROOT_";
68805
+
68806
+ // src/runtime/cache/index.ts
68807
+ var cache_default = new Cache();
68808
+
68809
+ // src/runtime/client/utils/documentPlugins.ts
68810
+ var documentPlugin = (kind, source) => {
68811
+ return () => {
68812
+ const sourceHandlers = source();
68813
+ const enterWrapper = (handler) => {
68814
+ return !handler ? void 0 : (ctx, handlers) => {
68815
+ if (ctx.artifact.kind !== kind) {
68816
+ return handlers.next(ctx);
68817
+ }
68818
+ return handler(ctx, handlers);
68819
+ };
68820
+ };
68821
+ const exitWrapper = (handler) => {
68822
+ return !handler ? void 0 : (ctx, handlers) => {
68823
+ if (ctx.artifact.kind !== kind) {
68824
+ return handlers.resolve(ctx);
68825
+ }
68826
+ return handler(ctx, handlers);
68827
+ };
68828
+ };
68829
+ return {
68830
+ start: enterWrapper(sourceHandlers.start),
68831
+ network: enterWrapper(sourceHandlers.network),
68832
+ afterNetwork: exitWrapper(sourceHandlers.afterNetwork),
68833
+ end: exitWrapper(sourceHandlers.end),
68834
+ catch: sourceHandlers.catch ? (ctx, handlers) => sourceHandlers.catch(ctx, handlers) : void 0,
68835
+ cleanup: (...args) => sourceHandlers.cleanup?.(...args)
68836
+ };
68837
+ };
68838
+ };
68839
+
68840
+ // src/runtime/client/plugins/query.ts
68841
+ var query = documentPlugin(ArtifactKind.Query, function() {
68842
+ let subscriptionSpec = null;
68843
+ let lastVariables = null;
68844
+ let artifactName = "";
68845
+ return {
68846
+ start(ctx, { next }) {
68847
+ ctx.variables = {
68848
+ ...lastVariables,
68849
+ ...ctx.variables
68850
+ };
68851
+ next(ctx);
68852
+ },
68853
+ end(ctx, { resolve: resolve2, marshalVariables, variablesChanged }) {
68854
+ if (variablesChanged(ctx)) {
68855
+ artifactName = ctx.artifact.name;
68856
+ if (subscriptionSpec) {
68857
+ cache_default.unsubscribe(subscriptionSpec, subscriptionSpec.variables?.() || {});
68858
+ }
68859
+ lastVariables = { ...marshalVariables(ctx) };
68860
+ subscriptionSpec = {
68861
+ rootType: ctx.artifact.rootType,
68862
+ selection: ctx.artifact.selection,
68863
+ variables: () => lastVariables,
68864
+ set: (newValue) => {
68865
+ resolve2(ctx, {
68866
+ data: newValue,
68867
+ errors: null,
68868
+ fetching: false,
68869
+ partial: false,
68870
+ stale: false,
68871
+ source: DataSource.Cache,
68872
+ variables: ctx.variables ?? {}
68873
+ });
68874
+ }
68875
+ };
68876
+ cache_default.subscribe(subscriptionSpec, lastVariables ?? {});
68877
+ }
68878
+ resolve2(ctx);
68879
+ },
68880
+ cleanup() {
68881
+ if (subscriptionSpec) {
68882
+ cache_default.unsubscribe(subscriptionSpec, subscriptionSpec.variables?.() ?? {});
68883
+ lastVariables = null;
68884
+ }
68885
+ }
68886
+ };
68887
+ });
68888
+
68889
+ // src/runtime/client/plugins/mutation.ts
68890
+ var mutation = documentPlugin(ArtifactKind.Mutation, () => {
68891
+ return {
68892
+ async start(ctx, { next, marshalVariables }) {
68893
+ const layer = cache_default._internal_unstable.storage.createLayer(true);
68894
+ const optimisticResponse = ctx.stuff.optimisticResponse;
68895
+ let toNotify = [];
68896
+ if (optimisticResponse) {
68897
+ toNotify = cache_default.write({
68898
+ selection: ctx.artifact.selection,
68899
+ data: await marshalSelection({
68900
+ selection: ctx.artifact.selection,
68901
+ data: optimisticResponse
68902
+ }),
68903
+ variables: marshalVariables(ctx),
68904
+ layer: layer.id
68905
+ });
68906
+ }
68907
+ ctx.cacheParams = {
68908
+ ...ctx.cacheParams,
68909
+ layer,
68910
+ notifySubscribers: toNotify,
68911
+ forceNotify: true
68912
+ };
68913
+ next(ctx);
68914
+ },
68915
+ afterNetwork(ctx, { resolve: resolve2 }) {
68916
+ ctx.cacheParams?.layer?.clear();
68917
+ resolve2(ctx);
68918
+ },
68919
+ end(ctx, { resolve: resolve2, value }) {
68920
+ const hasErrors = value.errors && value.errors.length > 0;
68921
+ if (hasErrors) {
68922
+ ctx.cacheParams?.layer?.clear();
68923
+ }
68924
+ if (ctx.cacheParams?.layer) {
68925
+ cache_default._internal_unstable.storage.resolveLayer(ctx.cacheParams.layer.id);
68926
+ }
68927
+ resolve2(ctx);
68928
+ },
68929
+ catch(ctx, { error }) {
68930
+ if (ctx.cacheParams?.layer) {
68931
+ const { layer } = ctx.cacheParams;
68932
+ layer.clear();
68933
+ cache_default._internal_unstable.storage.resolveLayer(layer.id);
68934
+ }
68935
+ throw error;
68936
+ }
68937
+ };
68938
+ });
68939
+
66802
68940
  // src/lib/types.ts
66803
- var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
66804
- LogLevel2["Full"] = "full";
66805
- LogLevel2["Summary"] = "summary";
66806
- LogLevel2["ShortSummary"] = "short-summary";
66807
- LogLevel2["Quiet"] = "quiet";
66808
- return LogLevel2;
66809
- })(LogLevel || {});
68941
+ var LogLevel = {
68942
+ Full: "full",
68943
+ Summary: "summary",
68944
+ ShortSummary: "short-summary",
68945
+ Quiet: "quiet"
68946
+ };
66810
68947
 
66811
68948
  // src/lib/config.ts
66812
68949
  var import_meta = {};
@@ -66858,7 +68995,7 @@ var Config = class {
66858
68995
  scalars,
66859
68996
  cacheBufferSize,
66860
68997
  definitionsPath,
66861
- defaultCachePolicy = "CacheOrNetwork" /* CacheOrNetwork */,
68998
+ defaultCachePolicy = CachePolicy.CacheOrNetwork,
66862
68999
  defaultPartial = false,
66863
69000
  defaultListPosition = "append",
66864
69001
  defaultListTarget = null,
@@ -66880,7 +69017,7 @@ var Config = class {
66880
69017
  Object.values(LogLevel)
66881
69018
  )}`
66882
69019
  );
66883
- logLevel = "summary" /* Summary */;
69020
+ logLevel = LogLevel.Summary;
66884
69021
  }
66885
69022
  this.schemaPath = schemaPath;
66886
69023
  this.filepath = filepath;
@@ -66896,7 +69033,7 @@ var Config = class {
66896
69033
  this.internalListPosition = defaultListPosition === "append" ? "last" : "first";
66897
69034
  this.defaultListTarget = defaultListTarget;
66898
69035
  this.definitionsFolder = definitionsPath;
66899
- this.logLevel = (logLevel || "summary" /* Summary */).toLowerCase();
69036
+ this.logLevel = (logLevel || LogLevel.Summary).toLowerCase();
66900
69037
  this.defaultFragmentMasking = defaultFragmentMasking;
66901
69038
  this.routesDir = join2(this.projectRoot, "src", "routes");
66902
69039
  this.schemaPollInterval = watchSchema?.interval ?? 2e3;
@@ -67237,8 +69374,10 @@ var Config = class {
67237
69374
  return node.name.value === "CachePolicy";
67238
69375
  }
67239
69376
  isInternalDirective(name) {
67240
- const internalDirectives = this.#newSchemaInstance?.getDirectives().map((directive) => directive.name) ?? [];
67241
- return internalDirectives.includes(name) || this.isDeleteDirective(name);
69377
+ const internalDirectives = this.#newSchemaInstance?.getDirectives().reduce((list, directive) => {
69378
+ return list.concat(directive.name);
69379
+ }, []) ?? [];
69380
+ return !defaultDirectives.includes(name) && (internalDirectives.includes(name) || this.isDeleteDirective(name));
67242
69381
  }
67243
69382
  isListFragment(name) {
67244
69383
  return name.endsWith(this.insertFragmentSuffix) || name.endsWith(this.removeFragmentSuffix) || name.endsWith(this.toggleFragmentSuffix);
@@ -67345,7 +69484,13 @@ async function getConfig({
67345
69484
  const plugins = pluginsNested.flat();
67346
69485
  for (const plugin2 of plugins) {
67347
69486
  if (plugin2.config) {
67348
- configFile = deepMerge(configPath, configFile, await plugin2.config(configFile));
69487
+ try {
69488
+ const configFactory = await import(plugin2.config);
69489
+ const newValue = typeof configFactory === "function" ? configFactory(configFile) : configFactory;
69490
+ configFile = deepMerge(configPath, configFile, newValue);
69491
+ } catch {
69492
+ console.log("could not load config file" + plugin2.config);
69493
+ }
67349
69494
  }
67350
69495
  }
67351
69496
  _config = new Config({
@@ -67503,6 +69648,8 @@ async function loadSchemaFile(schemaPath) {
67503
69648
  }
67504
69649
  return graphql2.buildClientSchema(jsonContents);
67505
69650
  }
69651
+ var emptySchema = graphql2.buildSchema("type Query { hello: String }");
69652
+ var defaultDirectives = emptySchema.getDirectives().map((dir) => dir.name);
67506
69653
 
67507
69654
  // src/lib/graphql.ts
67508
69655
  var graphql3 = __toESM(require_graphql2(), 1);
@@ -67519,7 +69666,7 @@ function getRootType(type) {
67519
69666
  function hashDocument({
67520
69667
  document
67521
69668
  }) {
67522
- const docString = typeof document === "string" ? document : document.artifact?.raw;
69669
+ const docString = typeof document === "string" ? document : document.originalString;
67523
69670
  return import_node_crypto.default.createHash("sha256").update(docString ?? "").digest("hex");
67524
69671
  }
67525
69672
  function parentTypeFromAncestors(schema, filepath, ancestors) {
@@ -68059,7 +70206,13 @@ var FieldCollection = class {
68059
70206
  if (fragment.selection.size === 0) {
68060
70207
  return [];
68061
70208
  }
68062
- fragment.astNode.selectionSet.selections = fragment.selection.toSelectionSet();
70209
+ fragment.astNode = {
70210
+ ...fragment.astNode,
70211
+ selectionSet: {
70212
+ ...fragment.astNode.selectionSet,
70213
+ selections: fragment.selection.toSelectionSet()
70214
+ }
70215
+ };
68063
70216
  return [fragment.astNode];
68064
70217
  }).concat(
68065
70218
  Object.values(this.fields).map((field) => {
@@ -68283,7 +70436,7 @@ async function fragmentVariables(config4, documents) {
68283
70436
  };
68284
70437
  documents.push({
68285
70438
  name: "generated::fragmentVariables",
68286
- kind: "HoudiniFragment" /* Fragment */,
70439
+ kind: ArtifactKind.Fragment,
68287
70440
  document: doc,
68288
70441
  originalParsed: doc,
68289
70442
  generateStore: false,
@@ -69210,7 +71363,7 @@ async function paginate(config4, documents) {
69210
71363
  ]
69211
71364
  };
69212
71365
  newDocs.push({
69213
- kind: "HoudiniQuery" /* Query */,
71366
+ kind: ArtifactKind.Query,
69214
71367
  filename: doc.filename,
69215
71368
  name: refetchQueryName,
69216
71369
  document: queryDoc,
@@ -69630,7 +71783,7 @@ async function addListFragments(config4, documents) {
69630
71783
  config4.newDocuments += "\n" + generatedDoc.definitions.filter((c) => c.kind === "FragmentDefinition").map(graphql11.print).join("\n\n");
69631
71784
  documents.push({
69632
71785
  name: "generated::lists",
69633
- kind: "HoudiniFragment" /* Fragment */,
71786
+ kind: ArtifactKind.Fragment,
69634
71787
  generateArtifact: false,
69635
71788
  generateStore: false,
69636
71789
  document: generatedDoc,
@@ -69897,7 +72050,7 @@ function selection({
69897
72050
  (directive) => directive.name.value === config4.paginateDirective
69898
72051
  );
69899
72052
  if (paginated && document.refetch && document.refetch.method === "offset") {
69900
- fieldObj.updates = ["append" /* append */];
72053
+ fieldObj.updates = [RefetchUpdateMode.append];
69901
72054
  }
69902
72055
  let continueConnection = inConnection;
69903
72056
  if ([
@@ -69907,7 +72060,7 @@ function selection({
69907
72060
  "hasNextPage",
69908
72061
  "hasPreviousPage"
69909
72062
  ].includes(attributeName) && inConnection && document.refetch) {
69910
- fieldObj.updates = ["append" /* append */, "prepend" /* prepend */];
72063
+ fieldObj.updates = [RefetchUpdateMode.append, RefetchUpdateMode.prepend];
69911
72064
  }
69912
72065
  if (attributeName === "node" && inConnection) {
69913
72066
  continueConnection = false;
@@ -70086,7 +72239,7 @@ function artifactGenerator(stats) {
70086
72239
  );
70087
72240
  let rootType = "";
70088
72241
  let selectionSet;
70089
- if (docKind !== "HoudiniFragment" /* Fragment */) {
72242
+ if (docKind !== ArtifactKind.Fragment) {
70090
72243
  const operation = operations[0];
70091
72244
  if (operation.operation === "query") {
70092
72245
  rootType = config4.schema.getQueryType()?.name;
@@ -70119,7 +72272,7 @@ function artifactGenerator(stats) {
70119
72272
  let directive = fragments[0]?.directives?.find(
70120
72273
  (directive2) => directive2.name.value === config4.argumentsDirective
70121
72274
  );
70122
- if (docKind === "HoudiniFragment" /* Fragment */ && directive) {
72275
+ if (docKind === ArtifactKind.Fragment && directive) {
70123
72276
  inputs = fragmentArgumentsDefinitions(config4, doc.filename, fragments[0]);
70124
72277
  }
70125
72278
  const mergedSelection = flattenSelections({
@@ -70160,22 +72313,12 @@ function artifactGenerator(stats) {
70160
72313
  document: doc
70161
72314
  })
70162
72315
  };
70163
- const plugin_data = config4.plugins.reduce(
70164
- (prev, plugin2) => {
70165
- if (!plugin2.artifactData) {
70166
- return prev;
70167
- }
70168
- const result = { ...prev };
70169
- const dataToAdd = plugin2.artifactData({ config: config4, document: doc }) ?? {};
70170
- if (Object.keys(dataToAdd).length > 0) {
70171
- result[plugin2.name] = dataToAdd;
70172
- }
70173
- return result;
70174
- },
70175
- {}
70176
- );
70177
- if (Object.keys(plugin_data).length > 0) {
70178
- artifact.plugin_data = plugin_data;
72316
+ artifact.pluginData = {};
72317
+ for (const plugin2 of config4.plugins) {
72318
+ if (!plugin2.artifactData) {
72319
+ continue;
72320
+ }
72321
+ artifact.pluginData[plugin2.name] = plugin2.artifactData({ config: config4, document: doc }) ?? {};
70179
72322
  }
70180
72323
  if (inputs && inputs.length > 0) {
70181
72324
  artifact.input = inputObject(config4, inputs);
@@ -70236,7 +72379,7 @@ function artifactGenerator(stats) {
70236
72379
  return;
70237
72380
  }
70238
72381
  const match = existingArtifact && existingArtifact.match(/"HoudiniHash=(\w+)"/);
70239
- if (match && match[1] !== hash({ config: config4, document: doc })) {
72382
+ if (match && match[1] !== artifact.hash) {
70240
72383
  stats.changed.push(artifact.name);
70241
72384
  }
70242
72385
  stats.total.push(artifact.name);
@@ -70349,6 +72492,30 @@ async function generatePluginIndex({
70349
72492
  ]);
70350
72493
  }
70351
72494
 
72495
+ // src/codegen/generators/runtime/runtimeConfig.ts
72496
+ async function injectConfig({
72497
+ config: config4,
72498
+ content,
72499
+ importStatement,
72500
+ exportStatement
72501
+ }) {
72502
+ const extraConfigs = config4.plugins.reduce((acc, plugin2) => {
72503
+ if (!plugin2.config) {
72504
+ return acc;
72505
+ }
72506
+ return [...acc, plugin2.config];
72507
+ }, []);
72508
+ return extraConfigs.length > 0 ? `
72509
+ ${extraConfigs.map((plugin2, i2) => importStatement(plugin2, `plugin${i2}`))}
72510
+
72511
+ const plugins = [
72512
+ ${extraConfigs.map((_, i2) => `plugin${i2}`).join(",\n")}
72513
+ ]
72514
+
72515
+ ${exportStatement("plugins")}
72516
+ ` : content;
72517
+ }
72518
+
70352
72519
  // src/codegen/generators/runtime/index.ts
70353
72520
  async function runtimeGenerator(config4, docs) {
70354
72521
  const importStatement = config4.module === "commonjs" ? importDefaultFrom : (where, as) => `import ${as} from '${where}'`;
@@ -70359,6 +72526,9 @@ async function runtimeGenerator(config4, docs) {
70359
72526
  [path_exports.join(config4.runtimeSource, "lib", "constants.js")]: (content) => {
70360
72527
  return content.replace("SITE_URL", siteURL);
70361
72528
  },
72529
+ [path_exports.join(config4.runtimeSource, "imports", "pluginConfig.js")]: (content) => {
72530
+ return injectConfig({ config: config4, importStatement, exportStatement, content });
72531
+ },
70362
72532
  [path_exports.join(config4.runtimeSource, "imports", "config.js")]: (content) => {
70363
72533
  const configFilePath = path_exports.join(config4.runtimeDirectory, "imports", "config.js");
70364
72534
  const relativePath = path_exports.relative(path_exports.dirname(configFilePath), config4.filepath);
@@ -70467,11 +72637,13 @@ function scalarPropertyValue(config4, missingScalars, target) {
70467
72637
 
70468
72638
  // src/codegen/generators/typescript/typeReference.ts
70469
72639
  var AST8 = recast8.types.builders;
70470
- function tsTypeReference(config4, missingScalars, definition) {
72640
+ function tsTypeReference(config4, missingScalars, definition, body) {
70471
72641
  const { type, wrappers } = unwrapType(config4, definition.type);
70472
72642
  let result;
70473
72643
  if (graphql16.isScalarType(type)) {
70474
72644
  result = scalarPropertyValue(config4, missingScalars, type);
72645
+ } else if (graphql16.isEnumType(type)) {
72646
+ result = enumReference(config4, body, type.name);
70475
72647
  } else {
70476
72648
  result = AST8.tsTypeReference(AST8.identifier(type.name));
70477
72649
  }
@@ -70486,6 +72658,19 @@ function tsTypeReference(config4, missingScalars, definition) {
70486
72658
  }
70487
72659
  return result;
70488
72660
  }
72661
+ function enumReference(config4, body, name) {
72662
+ ensureImports({
72663
+ config: config4,
72664
+ body,
72665
+ import: ["ValueOf"],
72666
+ importKind: "type",
72667
+ sourceModule: "$houdini/runtime/lib/types"
72668
+ });
72669
+ return AST8.tsTypeReference(
72670
+ AST8.identifier("ValueOf"),
72671
+ AST8.tsTypeParameterInstantiation([AST8.tsTypeQuery(AST8.identifier(name))])
72672
+ );
72673
+ }
70489
72674
 
70490
72675
  // src/codegen/generators/typescript/addReferencedInputTypes.ts
70491
72676
  var AST9 = recast9.types.builders;
@@ -70517,7 +72702,7 @@ function addReferencedInputTypes(config4, filepath, body, visitedTypes, missingS
70517
72702
  members.push(
70518
72703
  AST9.tsPropertySignature(
70519
72704
  AST9.identifier(field.name),
70520
- AST9.tsTypeAnnotation(tsTypeReference(config4, missingScalars, field)),
72705
+ AST9.tsTypeAnnotation(tsTypeReference(config4, missingScalars, field, body)),
70521
72706
  graphql17.isNullableType(field.type)
70522
72707
  )
70523
72708
  );
@@ -70548,6 +72733,13 @@ function inlineType({
70548
72733
  if (graphql18.isScalarType(type)) {
70549
72734
  result = scalarPropertyValue(config4, missingScalars, type);
70550
72735
  } else if (graphql18.isEnumType(type)) {
72736
+ ensureImports({
72737
+ config: config4,
72738
+ body,
72739
+ importKind: "type",
72740
+ import: ["ValueOf"],
72741
+ sourceModule: "$houdini/runtime/lib/types"
72742
+ });
70551
72743
  if (!visitedTypes.has(type.name)) {
70552
72744
  ensureImports({
70553
72745
  config: config4,
@@ -70557,7 +72749,7 @@ function inlineType({
70557
72749
  });
70558
72750
  visitedTypes.add(type.name);
70559
72751
  }
70560
- result = AST10.tsTypeReference(AST10.identifier(type.name));
72752
+ result = enumReference(config4, body, type.name);
70561
72753
  } else if (selections) {
70562
72754
  const rootObj = type;
70563
72755
  const inlineFragments = {};
@@ -70990,7 +73182,7 @@ async function generateOperationTypeDefs(config4, filepath, body, definition, se
70990
73182
  return AST11.tsPropertySignature(
70991
73183
  AST11.identifier(definition2.variable.name.value),
70992
73184
  AST11.tsTypeAnnotation(
70993
- tsTypeReference(config4, missingScalars, definition2)
73185
+ tsTypeReference(config4, missingScalars, definition2, body)
70994
73186
  ),
70995
73187
  definition2.type.kind !== "NonNullType"
70996
73188
  );
@@ -71057,7 +73249,12 @@ async function generateFragmentTypeDefs(config4, filepath, body, selections, def
71057
73249
  return AST11.tsPropertySignature(
71058
73250
  AST11.identifier(definition2.variable.name.value),
71059
73251
  AST11.tsTypeAnnotation(
71060
- tsTypeReference(config4, missingScalars, definition2)
73252
+ tsTypeReference(
73253
+ config4,
73254
+ missingScalars,
73255
+ definition2,
73256
+ body
73257
+ )
71061
73258
  ),
71062
73259
  definition2.type.kind !== "NonNullType"
71063
73260
  );
@@ -71150,7 +73347,7 @@ async function imperativeCacheTypef(config4, docs) {
71150
73347
  ),
71151
73348
  AST12.tsPropertySignature(
71152
73349
  AST12.identifier("lists"),
71153
- AST12.tsTypeAnnotation(listDefinitions(config4, docs))
73350
+ AST12.tsTypeAnnotation(listDefinitions(config4, body, docs))
71154
73351
  ),
71155
73352
  AST12.tsPropertySignature(
71156
73353
  AST12.identifier("queries"),
@@ -71259,7 +73456,7 @@ function typeDefinitions(config4, body, docs, returnType) {
71259
73456
  const prop = AST12.tsPropertySignature(
71260
73457
  AST12.identifier(arg.name),
71261
73458
  AST12.tsTypeAnnotation(
71262
- tsTypeReference(config4, /* @__PURE__ */ new Set(), arg)
73459
+ tsTypeReference(config4, /* @__PURE__ */ new Set(), arg, body)
71263
73460
  )
71264
73461
  );
71265
73462
  const unwrapped2 = unwrapType(config4, arg.type);
@@ -71309,7 +73506,7 @@ function typeDefinitions(config4, body, docs, returnType) {
71309
73506
  })
71310
73507
  );
71311
73508
  }
71312
- function listDefinitions(config4, docs) {
73509
+ function listDefinitions(config4, body, docs) {
71313
73510
  const lists = [];
71314
73511
  const visitedLists = /* @__PURE__ */ new Set();
71315
73512
  for (const doc of docs) {
@@ -71366,7 +73563,8 @@ function listDefinitions(config4, docs) {
71366
73563
  tsTypeReference(
71367
73564
  config4,
71368
73565
  /* @__PURE__ */ new Set(),
71369
- arg
73566
+ arg,
73567
+ body
71370
73568
  )
71371
73569
  )
71372
73570
  );
@@ -71388,7 +73586,7 @@ function listDefinitions(config4, docs) {
71388
73586
  function queryDefinitions(config4, body, docs, returnType) {
71389
73587
  return AST12.tsTupleType(
71390
73588
  docs.reduce((prev, doc) => {
71391
- if (doc.kind !== "HoudiniQuery" /* Query */ || !doc.generateStore) {
73589
+ if (doc.kind !== ArtifactKind.Query || !doc.generateStore) {
71392
73590
  return prev;
71393
73591
  }
71394
73592
  const definition = doc.document.definitions.find(
@@ -71419,7 +73617,7 @@ function queryDefinitions(config4, body, docs, returnType) {
71419
73617
  }
71420
73618
  function fragmentListMap(config4, concreteTypes, body, docs, return_type) {
71421
73619
  return docs.reduce((prev, doc) => {
71422
- if (doc.kind !== "HoudiniFragment" /* Fragment */) {
73620
+ if (doc.kind !== ArtifactKind.Fragment) {
71423
73621
  return prev;
71424
73622
  }
71425
73623
  const definition = doc.document.definitions.find(
@@ -71558,13 +73756,19 @@ async function definitionsGenerator(config4) {
71558
73756
  })
71559
73757
  )
71560
73758
  ).code;
71561
- const typeDefinitions2 = enums.sort((a, b) => a.name.value.localeCompare(b.name.value)).map(
71562
- (definition) => `
71563
- export declare enum ${definition.name.value} {
71564
- ${definition.values?.map((value) => ` ${value.name.value} = "${value.name.value}"`).join(",\n")}
73759
+ const typeDefinitions2 = `
73760
+ type ValuesOf<T> = T[keyof T]
73761
+ ` + enums.sort((a, b) => a.name.value.localeCompare(b.name.value)).map((definition) => {
73762
+ const name = definition.name.value;
73763
+ const values = definition.values;
73764
+ return `
73765
+ export declare const ${name}: {
73766
+ ${values?.map((value) => ` readonly ${value.name.value}: "${value.name.value}";`).join("\n")}
71565
73767
  }
71566
- `
71567
- ).join("");
73768
+
73769
+ export type ${name}$options = ValuesOf<typeof ${name}>
73770
+ `;
73771
+ }).join("");
71568
73772
  const definitionsIndex = `
71569
73773
  export * from './enums.js'
71570
73774
  `;
@@ -71630,10 +73834,10 @@ var graphql22 = __toESM(require_graphql2(), 1);
71630
73834
  async function graphqlExtensions(config4, documents) {
71631
73835
  let internalSchema = `
71632
73836
  enum CachePolicy {
71633
- ${"CacheAndNetwork" /* CacheAndNetwork */}
71634
- ${"CacheOnly" /* CacheOnly */}
71635
- ${"CacheOrNetwork" /* CacheOrNetwork */}
71636
- ${"NetworkOnly" /* NetworkOnly */}
73837
+ ${CachePolicy.CacheAndNetwork}
73838
+ ${CachePolicy.CacheOnly}
73839
+ ${CachePolicy.CacheOrNetwork}
73840
+ ${CachePolicy.NetworkOnly}
71637
73841
  }
71638
73842
 
71639
73843
  """
@@ -72549,7 +74753,7 @@ function getAndVerifyNodeInterface(config4) {
72549
74753
  var nbInvalidNodeFieldMessageDisplayed = 0;
72550
74754
  function displayInvalidNodeFieldMessage(logLevel) {
72551
74755
  if (nbInvalidNodeFieldMessageDisplayed === 0) {
72552
- if (logLevel === "full" /* Full */) {
74756
+ if (logLevel === LogLevel.Full) {
72553
74757
  console.warn(invalidNodeFieldMessage);
72554
74758
  } else {
72555
74759
  console.warn(invalidNodeFieldMessageLight);
@@ -72717,7 +74921,7 @@ async function runPipeline2(config4, docs) {
72717
74921
  }
72718
74922
  const unchanged = artifactStats.total.length - artifactStats.changed.length - artifactStats.new.length - artifactStats.deleted.length;
72719
74923
  const printMessage = !config4.pluginMode || unchanged !== artifactStats.total.length;
72720
- if (!printMessage || config4.logLevel === "quiet" /* Quiet */) {
74924
+ if (!printMessage || config4.logLevel === LogLevel.Quiet) {
72721
74925
  if (error) {
72722
74926
  throw error;
72723
74927
  }
@@ -72731,14 +74935,14 @@ async function runPipeline2(config4, docs) {
72731
74935
  }
72732
74936
  if (artifactStats.total.length === 0) {
72733
74937
  console.log(`\u{1F4A1} No operation found. If that's unexpected, please check your config.`);
72734
- } else if (["summary" /* Summary */, "short-summary" /* ShortSummary */].includes(config4.logLevel)) {
74938
+ } else if (config4.logLevel == LogLevel.Summary || config4.logLevel == LogLevel.ShortSummary) {
72735
74939
  if (unchanged > 0 && printMessage && !config4.pluginMode) {
72736
74940
  console.log(`\u{1F4C3} Unchanged: ${unchanged}`);
72737
74941
  }
72738
74942
  logStyled("CREATED", artifactStats.new, config4.logLevel, config4.pluginMode);
72739
74943
  logStyled("UPDATED", artifactStats.changed, config4.logLevel, config4.pluginMode);
72740
74944
  logStyled("DELETED", artifactStats.deleted, config4.logLevel, config4.pluginMode);
72741
- } else if (config4.logLevel === "full" /* Full */) {
74945
+ } else if (config4.logLevel === LogLevel.Full) {
72742
74946
  for (const artifact of artifactStats.total) {
72743
74947
  let emoji = "\u{1F4C3}";
72744
74948
  if (artifactStats.changed.includes(artifact)) {
@@ -72848,14 +75052,14 @@ async function processGraphQLDocument(config4, filepath, document) {
72848
75052
  });
72849
75053
  }
72850
75054
  }
72851
- let kind = "HoudiniFragment" /* Fragment */;
75055
+ let kind = ArtifactKind.Fragment;
72852
75056
  if (operations.length === 1) {
72853
75057
  if (operations[0].kind === "OperationDefinition" && operations[0].operation === "query") {
72854
- kind = "HoudiniQuery" /* Query */;
75058
+ kind = ArtifactKind.Query;
72855
75059
  } else if (operations[0].kind === "OperationDefinition" && operations[0].operation === "mutation") {
72856
- kind = "HoudiniMutation" /* Mutation */;
75060
+ kind = ArtifactKind.Mutation;
72857
75061
  } else if (operations[0].kind === "OperationDefinition" && operations[0].operation === "subscription") {
72858
- kind = "HoudiniSubscription" /* Subscription */;
75062
+ kind = ArtifactKind.Subscription;
72859
75063
  }
72860
75064
  }
72861
75065
  return {
@@ -72900,7 +75104,7 @@ function logStyled(kind, stat3, logLevel, plugin2) {
72900
75104
  }
72901
75105
  }
72902
75106
  console.log(msg.join(""));
72903
- if (!plugin2 && logLevel === "summary" /* Summary */) {
75107
+ if (!plugin2 && logLevel === LogLevel.Summary) {
72904
75108
  for (const artifact of stat3.slice(0, nbToDisplay)) {
72905
75109
  console.log(` ${artifact}`);
72906
75110
  }
@@ -72948,16 +75152,18 @@ function Plugin(opts = {}) {
72948
75152
  content: code,
72949
75153
  watch_file: this.addWatchFile,
72950
75154
  config: config3,
72951
- filepath
75155
+ filepath,
75156
+ map: this.getCombinedSourcemap()
72952
75157
  };
72953
75158
  for (const plugin2 of config3.plugins) {
72954
75159
  if (!plugin2.transformFile) {
72955
75160
  continue;
72956
75161
  }
72957
- const { code: code2 } = await plugin2.transformFile(ctx);
75162
+ const { code: code2, map } = await plugin2.transformFile(ctx);
72958
75163
  ctx.content = code2;
75164
+ ctx.map = map;
72959
75165
  }
72960
- return { code: ctx.content };
75166
+ return { code: ctx.content, map: ctx.map };
72961
75167
  },
72962
75168
  async load(id, opts2, ...rest) {
72963
75169
  for (const plugin2 of config3.plugins) {