@drfed/web 0.0.0-stage → 0.1.0-dev.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 (128) hide show
  1. package/.output/nitro.json +17 -0
  2. package/.output/public/.vite/manifest.json +493 -0
  3. package/.output/public/_build/assets/ActorDetailQuery.graphql-D96mwq1k.js +60 -0
  4. package/.output/public/_build/assets/ActorDetailQuery.graphql-DrxSNh1X.js +60 -0
  5. package/.output/public/_build/assets/CompleteLoginChallenge.graphql-C5Zq3wNh.js +10 -0
  6. package/.output/public/_build/assets/CopyButton-B2l484wE.js +1 -0
  7. package/.output/public/_build/assets/CopyButton-Bi-ZR8x9.css +1 -0
  8. package/.output/public/_build/assets/CreateInstanceMutation.graphql-B4CRy6cl.js +19 -0
  9. package/.output/public/_build/assets/CreateObjectMutation.graphql-B4A01dgV.js +23 -0
  10. package/.output/public/_build/assets/GenerateActorsMutation.graphql-mlHJNIbe.js +23 -0
  11. package/.output/public/_build/assets/GetHostQuery.graphql-CuzDdOdW.js +17 -0
  12. package/.output/public/_build/assets/GetHostQuery.graphql-o9K0Qkg0.js +17 -0
  13. package/.output/public/_build/assets/HomeViewerQuery.graphql-B903WWKs.js +8 -0
  14. package/.output/public/_build/assets/HttpStatusCode-bgaVzuLy.js +1 -0
  15. package/.output/public/_build/assets/InstanceActorListQuery.graphql-DmNwiEhM.js +24 -0
  16. package/.output/public/_build/assets/InstanceActorListQuery.graphql-paa7teUO.js +24 -0
  17. package/.output/public/_build/assets/InstanceDetailQuery.graphql-B52nR132.js +66 -0
  18. package/.output/public/_build/assets/InstanceDetailQuery.graphql-DSA2BcAV.js +66 -0
  19. package/.output/public/_build/assets/InstanceSummary_instance.graphql-BoQAa5Od.js +1 -0
  20. package/.output/public/_build/assets/JNCCF6MP-CNMywyiC.js +1 -0
  21. package/.output/public/_build/assets/LP6E37CW-Cwv6G3n1.js +1 -0
  22. package/.output/public/_build/assets/SignInMutation.graphql-BalZYNFu.js +9 -0
  23. package/.output/public/_build/assets/TSB6MOZK-CpiH97G1.js +1 -0
  24. package/.output/public/_build/assets/Toast-3-eXCAKc.css +1 -0
  25. package/.output/public/_build/assets/Toast-C1zr9crB.js +1 -0
  26. package/.output/public/_build/assets/WorkspaceQuery.graphql-UoI7QDs4.js +23 -0
  27. package/.output/public/_build/assets/_...404_-WZ8kAljY.js +1 -0
  28. package/.output/public/_build/assets/_challengeId_-BgL-Berz.js +1 -0
  29. package/.output/public/_build/assets/_id_-YcZZShAv.css +1 -0
  30. package/.output/public/_build/assets/_id_-bpxdclBj.js +1 -0
  31. package/.output/public/_build/assets/_slug_-CyTA2aW7.css +1 -0
  32. package/.output/public/_build/assets/_slug_-DXfRknzJ.js +200 -0
  33. package/.output/public/_build/assets/about-DIrbzRsi.js +1 -0
  34. package/.output/public/_build/assets/actors-HfZh_afh.js +24 -0
  35. package/.output/public/_build/assets/client-CGFoRcqH.js +3 -0
  36. package/.output/public/_build/assets/components-5MVu7IcD.js +1 -0
  37. package/.output/public/_build/assets/dist-BrJ_B8nU.js +1 -0
  38. package/.output/public/_build/assets/dist-DVo0HS5G.js +1 -0
  39. package/.output/public/_build/assets/dist-WrlGlK67.js +1 -0
  40. package/.output/public/_build/assets/entry-client-BurSTYr9.css +1 -0
  41. package/.output/public/_build/assets/entry-client-RIC5nXxX.js +8 -0
  42. package/.output/public/_build/assets/form-BxigYd7J.css +1 -0
  43. package/.output/public/_build/assets/form.module-BecmEfV_.js +1 -0
  44. package/.output/public/_build/assets/index-BHn6sAgH.js +23 -0
  45. package/.output/public/_build/assets/index-BSLqnqN7.js +8 -0
  46. package/.output/public/_build/assets/index-B_xLBDOo.css +1 -0
  47. package/.output/public/_build/assets/instance-tpMrvJNZ.js +35 -0
  48. package/.output/public/_build/assets/label-Mv8GZ4jc.js +1 -0
  49. package/.output/public/_build/assets/objects-DPb8DI8A.css +1 -0
  50. package/.output/public/_build/assets/objects-DR9TfL-V.js +25 -0
  51. package/.output/public/_build/assets/relay-runtime-BX3uubtA.js +7 -0
  52. package/.output/public/_build/assets/routing-DMN2NHu6.js +1 -0
  53. package/.output/public/_build/assets/sign-in-B67sv7z8.js +10 -0
  54. package/.output/public/_build/assets/web-DB_Nkq2D.js +1 -0
  55. package/.output/public/apple-touch-icon.png +0 -0
  56. package/.output/public/favicon.ico +0 -0
  57. package/.output/public/icon-192.png +0 -0
  58. package/.output/public/icon-512.png +0 -0
  59. package/.output/public/icon-mask.png +0 -0
  60. package/.output/public/icon.svg +395 -0
  61. package/.output/public/manifest.webmanifest +13 -0
  62. package/.output/server/_...404_-DDEH5apf.mjs +16 -0
  63. package/.output/server/_challengeId_-C7BBdG0r.mjs +100 -0
  64. package/.output/server/_chunks/ssr-renderer.mjs +26 -0
  65. package/.output/server/_id_-DqytvZEf.mjs +505 -0
  66. package/.output/server/_libs/@shikijs/core+[...].mjs +7173 -0
  67. package/.output/server/_libs/@shikijs/engine-javascript+[...].mjs +3110 -0
  68. package/.output/server/_libs/babel__runtime.mjs +243 -0
  69. package/.output/server/_libs/dequal.mjs +25 -0
  70. package/.output/server/_libs/faker-js__faker.mjs +13150 -0
  71. package/.output/server/_libs/fbjs.mjs +115 -0
  72. package/.output/server/_libs/h3+rou3+srvx.mjs +650 -0
  73. package/.output/server/_libs/hookable.mjs +41 -0
  74. package/.output/server/_libs/invariant.mjs +36 -0
  75. package/.output/server/_libs/relay-runtime.mjs +9704 -0
  76. package/.output/server/_libs/seroval-plugins.mjs +563 -0
  77. package/.output/server/_libs/seroval.mjs +2956 -0
  78. package/.output/server/_libs/shikijs__langs.mjs +3 -0
  79. package/.output/server/_libs/shikijs__themes.mjs +7 -0
  80. package/.output/server/_libs/solid-js.mjs +1248 -0
  81. package/.output/server/_libs/solid-relay+tiny-invariant.mjs +1029 -0
  82. package/.output/server/_libs/ufo.mjs +64 -0
  83. package/.output/server/_libs/valibot.mjs +711 -0
  84. package/.output/server/_runtime.mjs +33 -0
  85. package/.output/server/_slug_-CBOaSqoF.mjs +978 -0
  86. package/.output/server/_ssr/ActorDetailQuery.graphql-C1mWRP1B.mjs +283 -0
  87. package/.output/server/_ssr/CompleteLoginChallenge.graphql-CM7o_Md1.mjs +78 -0
  88. package/.output/server/_ssr/CopyButton-CQNR5D1y.mjs +43 -0
  89. package/.output/server/_ssr/CreateInstanceMutation.graphql-C-h2lGxz.mjs +116 -0
  90. package/.output/server/_ssr/CreateObjectMutation.graphql-C393Hp7q.mjs +166 -0
  91. package/.output/server/_ssr/GenerateActorsMutation.graphql-D2ADtn1j.mjs +163 -0
  92. package/.output/server/_ssr/GetHostQuery.graphql-C45XQo1i.mjs +127 -0
  93. package/.output/server/_ssr/HomeViewerQuery.graphql-Dote4Pkz.mjs +81 -0
  94. package/.output/server/_ssr/InstanceActorListQuery.graphql-DgItgN5t.mjs +167 -0
  95. package/.output/server/_ssr/InstanceDetailQuery.graphql-DP5wWWjX.mjs +367 -0
  96. package/.output/server/_ssr/InstanceSummary_instance.graphql-10tilF-Z.mjs +34 -0
  97. package/.output/server/_ssr/JNCCF6MP-BAZlBnvx.mjs +419 -0
  98. package/.output/server/_ssr/LP6E37CW-D2Ih_b_K.mjs +163 -0
  99. package/.output/server/_ssr/SignInMutation.graphql-BBXmiay6.mjs +72 -0
  100. package/.output/server/_ssr/TSB6MOZK-D06WZb6o.mjs +166 -0
  101. package/.output/server/_ssr/Toast-Bb1gcxED.mjs +947 -0
  102. package/.output/server/_ssr/WorkspaceQuery.graphql-DnCO8t-4.mjs +153 -0
  103. package/.output/server/_ssr/about-CD3QIgf_.mjs +14 -0
  104. package/.output/server/_ssr/actors-CMWf-xQU.mjs +1160 -0
  105. package/.output/server/_ssr/dist-D6rgyh-L.mjs +81 -0
  106. package/.output/server/_ssr/dist-I7KRMRbA.mjs +432 -0
  107. package/.output/server/_ssr/form.module-CTvIl1lm.mjs +192 -0
  108. package/.output/server/_ssr/index-C4crD6q-.mjs +347 -0
  109. package/.output/server/_ssr/index-yuhuc6-X.mjs +111 -0
  110. package/.output/server/_ssr/instance-ZYWGeWd3.mjs +280 -0
  111. package/.output/server/_ssr/label-DAXzanI9.mjs +9 -0
  112. package/.output/server/_ssr/objects-D5MVukzB.mjs +4316 -0
  113. package/.output/server/_ssr/routing-DKTLkkbY.mjs +620 -0
  114. package/.output/server/_ssr/sign-in-CNHZb_zL.mjs +264 -0
  115. package/.output/server/_ssr/ssr.mjs +6138 -0
  116. package/.output/server/index.mjs +691 -0
  117. package/LICENSE +661 -0
  118. package/README.md +143 -2
  119. package/dist/bridge.d.mts +39 -0
  120. package/dist/bridge.mjs +104 -0
  121. package/dist/bridge.mjs.map +1 -0
  122. package/dist/request-policy.d.mts +8 -0
  123. package/dist/request-policy.mjs +94 -0
  124. package/dist/request-policy.mjs.map +1 -0
  125. package/dist/runtime.d.mts +14 -0
  126. package/dist/runtime.mjs +44 -0
  127. package/dist/runtime.mjs.map +1 -0
  128. package/package.json +111 -3
@@ -0,0 +1,1029 @@
1
+ import { r as __toESM } from "../_runtime.mjs";
2
+ import { n as require_relay_runtime, t as require_experimental } from "./relay-runtime.mjs";
3
+ import { A as batch, F as createContext, I as createEffect, J as onCleanup, L as createMemo, N as createComponent, P as createComputed, V as createSignal, Y as onMount, i as unwrap, n as createStore, nt as useContext, r as reconcile, tt as untrack, z as createResource } from "./solid-js.mjs";
4
+ import { n as OpaqueReference } from "./seroval.mjs";
5
+ import { t as dequal } from "./dequal.mjs";
6
+ //#region ../../node_modules/.pnpm/tiny-invariant@1.3.3/node_modules/tiny-invariant/dist/esm/tiny-invariant.js
7
+ var import_relay_runtime = /* @__PURE__ */ __toESM(require_relay_runtime(), 1);
8
+ var prefix = "Invariant failed";
9
+ function invariant(condition, message) {
10
+ if (condition) return;
11
+ throw new Error(prefix);
12
+ }
13
+ //#endregion
14
+ //#region ../../node_modules/.pnpm/solid-relay@1.0.0-beta.29_relay-runtime@21.0.1_seroval@1.6.3_solid-js@1.9.14/node_modules/solid-relay/dist/index.mjs
15
+ var import_experimental = /* @__PURE__ */ __toESM(require_experimental(), 1);
16
+ var { __internal: __internal$5, createOperationDescriptor: createOperationDescriptor$3, getRequest: getRequest$4, getRequestIdentifier, Observable: Observable$1, PreloadableQueryRegistry, ReplaySubject: ReplaySubject$2 } = import_relay_runtime.default?.default?.__esModule ? import_relay_runtime.default.default : import_relay_runtime.default;
17
+ var fetchKey = 100001;
18
+ /**
19
+ * Preloads a query and returns a `PreloadedQuery` reference.
20
+ *
21
+ * Use this to start fetching before render (for example during route preload),
22
+ * then consume the returned reference with `createPreloadedQuery`.
23
+ *
24
+ * @param environment - Relay environment used to execute and retain the query.
25
+ * @param preloadableRequest - Query document or preloadable concrete request.
26
+ * @param variables - Variables for the query operation.
27
+ * @param options - Options for the preload request.
28
+ * @returns A query reference that can be consumed by `createPreloadedQuery`.
29
+ */
30
+ function loadQuery(environment, preloadableRequest, variables, options) {
31
+ fetchKey++;
32
+ const fetchPolicy = options?.fetchPolicy ?? "store-or-network";
33
+ const networkCacheConfig = {
34
+ ...options?.networkCacheConfig,
35
+ force: true
36
+ };
37
+ let retainReference;
38
+ let didExecuteNetworkSource = false;
39
+ const executeWithNetworkSource = (operation, networkObservable) => {
40
+ didExecuteNetworkSource = true;
41
+ return environment.executeWithSource({
42
+ operation,
43
+ source: networkObservable
44
+ });
45
+ };
46
+ const executionSubject = new ReplaySubject$2();
47
+ const returnedObservable = Observable$1.create((sink) => executionSubject.subscribe(sink));
48
+ let networkRequestSubscription;
49
+ let networkError = null;
50
+ let didMakeNetworkRequest = false;
51
+ const makeNetworkRequest = (params) => {
52
+ didMakeNetworkRequest = true;
53
+ const subject = new ReplaySubject$2();
54
+ const identifier = "raw-network-request-" + getRequestIdentifier(params, variables);
55
+ networkRequestSubscription = __internal$5.fetchQueryDeduped(environment, identifier, () => {
56
+ return environment.getNetwork().execute(params, variables, networkCacheConfig);
57
+ }).subscribe({
58
+ error(err) {
59
+ networkError = err;
60
+ subject.error(err);
61
+ },
62
+ next(data) {
63
+ subject.next(data);
64
+ },
65
+ complete() {
66
+ subject.complete();
67
+ }
68
+ });
69
+ return Observable$1.create((sink) => {
70
+ const subjectSubscription = subject.subscribe(sink);
71
+ return () => {
72
+ subjectSubscription.unsubscribe();
73
+ networkRequestSubscription?.unsubscribe();
74
+ };
75
+ });
76
+ };
77
+ let executionSubcription;
78
+ const executeDeduped = (operation, fetchFn) => {
79
+ didMakeNetworkRequest = true;
80
+ executionSubcription = __internal$5.fetchQueryDeduped(environment, operation.request.identifier, fetchFn).subscribe({
81
+ error(err) {
82
+ executionSubject.error(err);
83
+ },
84
+ next(data) {
85
+ executionSubject.next(data);
86
+ },
87
+ complete() {
88
+ executionSubject.complete();
89
+ }
90
+ });
91
+ };
92
+ const checkAvailabilityAndExecute = (concreteRequest) => {
93
+ const operation = createOperationDescriptor$3(concreteRequest, variables, networkCacheConfig);
94
+ retainReference = environment.retain(operation);
95
+ if (fetchPolicy === "store-only") return;
96
+ if (fetchPolicy !== "store-or-network" || environment.check(operation).status !== "available") executeDeduped(operation, () => {
97
+ return executeWithNetworkSource(operation, makeNetworkRequest(concreteRequest.params));
98
+ });
99
+ };
100
+ let params;
101
+ let cancelOnLoadCallback;
102
+ let queryId;
103
+ if ("kind" in preloadableRequest && preloadableRequest.kind === "PreloadableConcreteRequest") {
104
+ params = preloadableRequest.params;
105
+ queryId = params.id;
106
+ invariant(queryId != null, `Relay: \`loadQuery\` requires that preloadable query \`${params.name}\` has a persisted query id`);
107
+ const module = PreloadableQueryRegistry.get(queryId);
108
+ if (module != null) checkAvailabilityAndExecute(module);
109
+ else {
110
+ const networkObservable = fetchPolicy === "store-only" ? null : makeNetworkRequest(params);
111
+ cancelOnLoadCallback = PreloadableQueryRegistry.onLoad(queryId, (preloadedModule) => {
112
+ cancelOnLoadCallback();
113
+ const operation = createOperationDescriptor$3(preloadedModule, variables, networkCacheConfig);
114
+ retainReference = environment.retain(operation);
115
+ if (networkObservable != null) executeDeduped(operation, () => executeWithNetworkSource(operation, networkObservable));
116
+ }).dispose;
117
+ }
118
+ } else {
119
+ const request = getRequest$4(preloadableRequest);
120
+ params = request.params;
121
+ queryId = "cacheID" in params && params.cacheID != null ? params.cacheID : params.id;
122
+ checkAvailabilityAndExecute(request);
123
+ }
124
+ let isDisposed = false;
125
+ let isReleased = false;
126
+ let isNetworkRequestCanceled = false;
127
+ const releaseQuery = () => {
128
+ if (isReleased) return;
129
+ retainReference?.dispose();
130
+ isReleased = true;
131
+ };
132
+ const cancelNetworkRequest = () => {
133
+ if (isNetworkRequestCanceled) return;
134
+ if (didExecuteNetworkSource) executionSubcription?.unsubscribe();
135
+ else networkRequestSubscription?.unsubscribe();
136
+ cancelOnLoadCallback?.();
137
+ isNetworkRequestCanceled = true;
138
+ };
139
+ return {
140
+ kind: "PreloadedQuery",
141
+ id: queryId,
142
+ name: params.name,
143
+ variables,
144
+ fetchKey,
145
+ fetchPolicy,
146
+ networkCacheConfig,
147
+ controls: new OpaqueReference({
148
+ environment,
149
+ source: didMakeNetworkRequest ? returnedObservable : void 0,
150
+ getNetworkError: () => networkError,
151
+ dispose: () => {
152
+ if (isDisposed) return;
153
+ releaseQuery();
154
+ cancelNetworkRequest();
155
+ isDisposed = true;
156
+ },
157
+ isDisposed: () => isDisposed || isReleased,
158
+ releaseQuery
159
+ })
160
+ };
161
+ }
162
+ var RelayContext = createContext();
163
+ /**
164
+ * Provides a Relay environment to Solid Relay primitives in the subtree.
165
+ *
166
+ * Wrap your application (or route subtree) with this provider before calling
167
+ * primitives such as `createLazyLoadQuery`, `createFragment`, or `createMutation`.
168
+ */
169
+ function RelayEnvironmentProvider(props) {
170
+ const environment = createMemo(() => props.environment);
171
+ return createComponent(RelayContext.Provider, {
172
+ get value() {
173
+ return {
174
+ environment,
175
+ dataStores: /* @__PURE__ */ new WeakMap()
176
+ };
177
+ },
178
+ get children() {
179
+ return props.children;
180
+ }
181
+ });
182
+ }
183
+ /**
184
+ * Returns the current Relay environment accessor from context.
185
+ *
186
+ * Throws if called outside `RelayEnvironmentProvider`.
187
+ */
188
+ function useRelayEnvironment() {
189
+ const context = useContext(RelayContext);
190
+ invariant(context != null, "useRelayEnvironment: Expected to have found a Relay environment provided by a `RelayEnvironmentProvider` component. This usually means that useRelayEnvironment was used in a component that is not a descendant of a `RelayEnvironmentProvider`. Please make sure a `RelayEnvironmentProvider` has been rendered somewhere as a parent or ancestor of your component.");
191
+ return context.environment;
192
+ }
193
+ function useDataStores() {
194
+ return useContext(RelayContext)?.dataStores;
195
+ }
196
+ var createDataStore = (init, resourceAccessor) => {
197
+ const [store, setStore] = createStableStore(init, untrack(() => resourceAccessor()));
198
+ const readData = () => {
199
+ resourceAccessor()?.();
200
+ const error = Reflect.get(store, "error");
201
+ if (error) throw error;
202
+ return Reflect.get(store, "data");
203
+ };
204
+ Object.defineProperties(readData, {
205
+ latest: { get: () => Reflect.get(store, "data") },
206
+ error: { get: () => Reflect.get(store, "error") },
207
+ pending: { get: () => Reflect.get(store, "pending") }
208
+ });
209
+ return [readData, setStore];
210
+ };
211
+ function createStableStore(init, resource) {
212
+ const stores = useDataStores();
213
+ if (resource) {
214
+ const existing = stores?.get(resource);
215
+ if (existing) return existing;
216
+ }
217
+ const store = createStore(init);
218
+ if (resource) stores?.set(resource, store);
219
+ return store;
220
+ }
221
+ var { FRAGMENT_OWNER_KEY: FRAGMENT_OWNER_KEY$1, RequestDescriptor } = import_relay_runtime.default?.default?.__esModule ? import_relay_runtime.default.default : import_relay_runtime.default;
222
+ var OWNER_PROTO = {};
223
+ function cleanSnapshot(input) {
224
+ if (typeof input !== "object" || input === null) return input;
225
+ if (Array.isArray(input)) return input.map(cleanSnapshot);
226
+ return Object.fromEntries(Object.entries(input).map(([key, value]) => {
227
+ if (key === FRAGMENT_OWNER_KEY$1) {
228
+ const wrapped = { ...value };
229
+ Object.setPrototypeOf(wrapped, OWNER_PROTO);
230
+ return [key, wrapped];
231
+ }
232
+ return [key, cleanSnapshot(value)];
233
+ }));
234
+ }
235
+ var { observeFragment: observeFragment$1 } = import_experimental.default?.default?.__esModule ? import_experimental.default.default : import_experimental.default;
236
+ function createFragment(fragment, key, options) {
237
+ return createFragmentInternal(fragment, key, void 0, options);
238
+ }
239
+ function createFragmentInternal(fragment, key, options, createResourceOptions) {
240
+ const environment = useRelayEnvironment();
241
+ const subscribeResult = (source, onResult) => {
242
+ return source.subscribe({ next(res) {
243
+ batch(() => {
244
+ switch (res.state) {
245
+ case "ok":
246
+ setResult("error", void 0);
247
+ setResult("pending", false);
248
+ setResult("data", reconcile(cleanSnapshot(res.value), {
249
+ key: "__id",
250
+ merge: true
251
+ }));
252
+ break;
253
+ case "error":
254
+ setResult("data", void 0);
255
+ setResult("error", res.error);
256
+ setResult("pending", false);
257
+ break;
258
+ case "loading":
259
+ setResult("data", void 0);
260
+ setResult("error", void 0);
261
+ setResult("pending", true);
262
+ break;
263
+ }
264
+ });
265
+ onResult?.(res);
266
+ } });
267
+ };
268
+ const [subscription, setSubscription] = createSignal();
269
+ createEffect(() => {
270
+ const sub = subscription();
271
+ if (sub) onCleanup(() => {
272
+ sub.unsubscribe();
273
+ });
274
+ });
275
+ const setResultQueue = [];
276
+ let setResult = (...args) => {
277
+ setResultQueue.push(args);
278
+ };
279
+ let fetchedInSameEnv = false;
280
+ const [resource] = createResource(() => {
281
+ return batch(() => {
282
+ setSubscription(void 0);
283
+ setResult("pending", false);
284
+ environment();
285
+ const k = unwrap(key());
286
+ if (!k) {
287
+ setResult("data", void 0);
288
+ setResult("error", void 0);
289
+ return;
290
+ }
291
+ return {
292
+ key: k,
293
+ parentOperation: options?.().parentOperation
294
+ };
295
+ });
296
+ }, ({ key, parentOperation }) => {
297
+ setResult("pending", true);
298
+ fetchedInSameEnv = true;
299
+ const observe = () => {
300
+ let settled;
301
+ let resolve;
302
+ let reject;
303
+ setSubscription(subscribeResult(observeFragment$1(environment(), fragment, key), (res) => {
304
+ if (res.state === "ok") {
305
+ settled ??= { ok: true };
306
+ resolve?.(true);
307
+ } else if (res.state === "error") {
308
+ settled ??= {
309
+ ok: false,
310
+ error: res.error
311
+ };
312
+ reject?.(res.error);
313
+ }
314
+ }));
315
+ if (settled?.ok) return true;
316
+ if (settled) return Promise.reject(settled.error);
317
+ return new Promise((res, rej) => {
318
+ resolve = res;
319
+ reject = rej;
320
+ });
321
+ };
322
+ if (!parentOperation) return observe();
323
+ return new Promise((resolve, reject) => {
324
+ parentOperation.subscribe({
325
+ complete: resolve,
326
+ error: reject
327
+ });
328
+ }).then(observe);
329
+ }, {
330
+ deferStream: createResourceOptions?.deferStream,
331
+ storage(init) {
332
+ const [value, setValue] = createSignal(init);
333
+ return [value, (next) => {
334
+ const current = untrack(value);
335
+ const nextValue = typeof next === "function" ? next(current) : next;
336
+ const k = unwrap(untrack(key));
337
+ if (!fetchedInSameEnv && !current && nextValue && k) setSubscription(subscribeResult(observeFragment$1(environment(), fragment, k)));
338
+ setValue(() => nextValue);
339
+ }];
340
+ }
341
+ });
342
+ const store = createDataStore({
343
+ data: void 0,
344
+ error: void 0,
345
+ pending: false
346
+ }, () => resource);
347
+ for (const args of setResultQueue) store[1].apply(void 0, args);
348
+ setResult = store[1];
349
+ return store[0];
350
+ }
351
+ var caches = /* @__PURE__ */ new WeakMap();
352
+ function getQueryCache(environment) {
353
+ let cache = caches.get(environment);
354
+ if (!cache) {
355
+ cache = /* @__PURE__ */ new Map();
356
+ caches.set(environment, cache);
357
+ }
358
+ return cache;
359
+ }
360
+ var access = (v) => typeof v === "function" && !v.length ? v() : v;
361
+ var { createOperationDescriptor: createOperationDescriptor$2, getRequest: getRequest$3 } = import_relay_runtime.default?.default?.__esModule ? import_relay_runtime.default.default : import_relay_runtime.default;
362
+ function createMemoOperationDescriptor(gqlQuery, variables, cacheConfig) {
363
+ const memoizedVariables = createMemo(() => access(variables), void 0, { equals: dequal });
364
+ const memoizedCacheConfig = createMemo(() => access(cacheConfig), void 0, { equals: dequal });
365
+ return createMemo(() => {
366
+ const variables = memoizedVariables();
367
+ if (!variables) return;
368
+ return createOperationDescriptor$2(getRequest$3(access(gqlQuery)), variables, memoizedCacheConfig());
369
+ });
370
+ }
371
+ var { FRAGMENT_OWNER_KEY, FRAGMENTS_KEY, ID_KEY } = import_relay_runtime.default?.default?.__esModule ? import_relay_runtime.default.default : import_relay_runtime.default;
372
+ var getQueryRef = (operation) => ({
373
+ [ID_KEY]: operation.fragment.dataID,
374
+ [FRAGMENTS_KEY]: { [operation.fragment.node.name]: operation.request.variables },
375
+ [FRAGMENT_OWNER_KEY]: operation.request
376
+ });
377
+ var { __internal: __internal$4, getRequest: getRequest$2, Observable, ReplaySubject: ReplaySubject$1 } = import_relay_runtime.default?.default?.__esModule ? import_relay_runtime.default.default : import_relay_runtime.default;
378
+ var { observeFragment } = import_experimental.default?.default?.__esModule ? import_experimental.default.default : import_experimental.default;
379
+ /**
380
+ * Reads query data and subscribes to store updates for the current component.
381
+ *
382
+ * It fetches according to the provided fetch policy and returns a reactive
383
+ * data store containing the query response.
384
+ *
385
+ * @param gqlQuery - GraphQL query document.
386
+ * @param variables - Query variables or an accessor for reactive variables.
387
+ * @param options.fetchPolicy - Query fetch policy.
388
+ * @param options.networkCacheConfig - Network cache configuration.
389
+ * @param options.deferStream - Whether to defer the SSR stream until the data is resolved.
390
+ * @returns A `DataStore` containing the query data state.
391
+ */
392
+ function createLazyLoadQuery(gqlQuery, variables, options) {
393
+ const environment = useRelayEnvironment();
394
+ const operation = createMemoOperationDescriptor(gqlQuery, variables, options?.networkCacheConfig);
395
+ return createLazyLoadQueryInternal({
396
+ query: operation,
397
+ fragment: () => getRequest$2(access(gqlQuery)).fragment,
398
+ fetchObservable: createMemo(() => {
399
+ const op = operation();
400
+ const env = environment();
401
+ if (!op || !env) return;
402
+ return __internal$4.fetchQuery(env, op);
403
+ }),
404
+ fetchPolicy: () => access(options?.fetchPolicy),
405
+ deferStream: options?.deferStream
406
+ });
407
+ }
408
+ function createLazyLoadQueryInternal(params) {
409
+ const environment = useRelayEnvironment();
410
+ const queryCache = createMemo(() => getQueryCache(environment()));
411
+ const isLiveQuery = createMemo(() => params.query()?.request.node.params.metadata.live !== void 0);
412
+ const fetchPolicy = createMemo(() => params.fetchPolicy?.() ?? (isLiveQuery() ? "store-and-network" : "store-or-network"));
413
+ const cacheKey = createMemo(() => {
414
+ const query = params.query();
415
+ if (!query) return;
416
+ return [
417
+ fetchPolicy(),
418
+ query.request.identifier,
419
+ params.fetchKey?.()
420
+ ].filter((v) => v != null).join("-");
421
+ });
422
+ const cacheEntry = createMemo(() => {
423
+ const operation = params.query();
424
+ const key = cacheKey();
425
+ if (!operation || !key) return;
426
+ const cache = queryCache();
427
+ const existing = cache.get(key);
428
+ if (existing != null) return existing;
429
+ const hasFullQuery = environment().check(operation).status === "available";
430
+ const shouldFetch = (() => {
431
+ switch (fetchPolicy()) {
432
+ case "store-only": return false;
433
+ case "store-or-network": return !hasFullQuery;
434
+ case "store-and-network":
435
+ case "network-only": return true;
436
+ }
437
+ })();
438
+ const replaySubject = new ReplaySubject$1();
439
+ let subscriptionTarget = shouldFetch ? environment().executeWithSource({
440
+ operation,
441
+ source: __internal$4.fetchQueryDeduped(environment(), operation.request.identifier, () => Observable.create((sink) => replaySubject.subscribe(sink)))
442
+ }) : void 0;
443
+ let fetchedInSameEnv = false;
444
+ const [resource] = createResource(() => shouldFetch && params.fetchObservable(), async (observable) => {
445
+ subscriptionTarget = observable;
446
+ fetchedInSameEnv = true;
447
+ let pr = Promise.withResolvers();
448
+ observable.subscribe({
449
+ next(response) {
450
+ const nextPr = Promise.withResolvers();
451
+ pr.resolve({
452
+ value: response,
453
+ next: nextPr.promise
454
+ });
455
+ pr = nextPr;
456
+ },
457
+ error(error) {
458
+ pr.reject(error);
459
+ },
460
+ complete() {
461
+ pr.resolve(null);
462
+ }
463
+ });
464
+ return await pr.promise;
465
+ }, {
466
+ deferStream: params.deferStream,
467
+ storage(init) {
468
+ const [value, setValue] = createSignal(init);
469
+ return [value, (next) => {
470
+ const current = untrack(value);
471
+ const nextValue = typeof next === "function" ? next(current) : next;
472
+ let result = nextValue;
473
+ if (!fetchedInSameEnv && nextValue) (async () => {
474
+ try {
475
+ while (result) {
476
+ replaySubject.next(result.value);
477
+ result = await result.next;
478
+ }
479
+ replaySubject.complete();
480
+ } catch (error) {
481
+ replaySubject.error(error instanceof Error ? error : new Error(String(error)));
482
+ }
483
+ })();
484
+ setValue(() => nextValue);
485
+ }];
486
+ }
487
+ });
488
+ let entry;
489
+ if (shouldFetch) {
490
+ const subscription = subscriptionTarget?.subscribe({});
491
+ let retainCount = 0;
492
+ let retention;
493
+ entry = {
494
+ resource,
495
+ retain: (environment) => {
496
+ retainCount++;
497
+ if (retainCount === 1) retention = environment.retain(operation);
498
+ return { dispose: () => {
499
+ retainCount = Math.max(retainCount - 1, 0);
500
+ if (retainCount === 0) {
501
+ retention?.dispose();
502
+ if (isLiveQuery()) subscription?.unsubscribe();
503
+ cache.delete(key);
504
+ }
505
+ } };
506
+ }
507
+ };
508
+ cache.set(key, entry);
509
+ }
510
+ return entry;
511
+ });
512
+ createComputed(() => {
513
+ const entry = cacheEntry();
514
+ if (!entry) return;
515
+ onCleanup(entry.retain(environment()).dispose);
516
+ });
517
+ const [result, setResult] = createDataStore({
518
+ data: void 0,
519
+ error: void 0,
520
+ pending: false
521
+ }, () => cacheEntry()?.resource);
522
+ createComputed(() => {
523
+ batch(() => {
524
+ setResult("data", void 0);
525
+ setResult("error", void 0);
526
+ setResult("pending", false);
527
+ const operation = params.query();
528
+ const env = environment();
529
+ if (!operation || !env) return;
530
+ setResult("pending", true);
531
+ const fragmentSubscription = observeFragment(env, params.fragment(), getQueryRef(operation)).subscribe({ next(state) {
532
+ batch(() => {
533
+ switch (state.state) {
534
+ case "ok":
535
+ setResult("error", void 0);
536
+ setResult("pending", false);
537
+ setResult("data", reconcile(cleanSnapshot(state.value), {
538
+ key: "__id",
539
+ merge: true
540
+ }));
541
+ break;
542
+ case "error":
543
+ setResult("data", void 0);
544
+ setResult("error", state.error);
545
+ setResult("pending", false);
546
+ break;
547
+ case "loading":
548
+ setResult("data", void 0);
549
+ setResult("error", void 0);
550
+ setResult("pending", true);
551
+ break;
552
+ }
553
+ });
554
+ } });
555
+ onCleanup(() => {
556
+ fragmentSubscription.unsubscribe();
557
+ });
558
+ });
559
+ });
560
+ return result;
561
+ }
562
+ var { commitMutation } = import_relay_runtime.default?.default?.__esModule ? import_relay_runtime.default.default : import_relay_runtime.default;
563
+ /**
564
+ * Creates a mutation commit function and an in-flight state accessor.
565
+ *
566
+ * The returned commit function forwards to Relay's `commitMutation` and
567
+ * keeps `isMutationInFlight` updated while one or more commits are active.
568
+ *
569
+ * @param mutation - GraphQL mutation document.
570
+ * @returns A tuple of `[commitMutation, isMutationInFlight]`.
571
+ */
572
+ function createMutation(mutation) {
573
+ const environment = useRelayEnvironment();
574
+ const inFlightMutations = /* @__PURE__ */ new Set();
575
+ const [isMutationInFlight, setIsMutationInFlight] = createSignal(false);
576
+ const cleanup = (disposable) => {
577
+ inFlightMutations.delete(disposable);
578
+ setIsMutationInFlight(inFlightMutations.size > 0);
579
+ };
580
+ const commit = (config) => {
581
+ setIsMutationInFlight(true);
582
+ const disposable = commitMutation(environment(), {
583
+ ...config,
584
+ mutation,
585
+ onCompleted: (response, errors) => {
586
+ cleanup(disposable);
587
+ config.onCompleted?.(response, errors);
588
+ },
589
+ onError: (error) => {
590
+ cleanup(disposable);
591
+ config.onError?.(error);
592
+ },
593
+ onUnsubscribe: () => {
594
+ cleanup(disposable);
595
+ config.onUnsubscribe?.();
596
+ }
597
+ });
598
+ inFlightMutations.add(disposable);
599
+ return disposable;
600
+ };
601
+ return [commit, isMutationInFlight];
602
+ }
603
+ function createFetchTracker() {
604
+ let currentSubscription = null;
605
+ const [isFetching, setIsFetching] = createSignal(false);
606
+ const disposeFetch = () => {
607
+ if (currentSubscription != null) {
608
+ currentSubscription.unsubscribe();
609
+ currentSubscription = null;
610
+ }
611
+ setIsFetching(false);
612
+ };
613
+ const startFetch = (subscription) => {
614
+ currentSubscription = subscription;
615
+ setIsFetching(true);
616
+ };
617
+ const completeFetch = () => {
618
+ currentSubscription = null;
619
+ setIsFetching(false);
620
+ };
621
+ onCleanup(disposeFetch);
622
+ return {
623
+ disposeFetch,
624
+ startFetch,
625
+ completeFetch,
626
+ isFetching
627
+ };
628
+ }
629
+ var { ConnectionInterface, getValueAtPath: getValueAtPath$1 } = import_relay_runtime.default?.default?.__esModule ? import_relay_runtime.default.default : import_relay_runtime.default;
630
+ function getConnectionState(direction, fragmentNode, fragmentData, connectionPathInFragmentData) {
631
+ const { EDGES, PAGE_INFO, HAS_NEXT_PAGE, HAS_PREV_PAGE, END_CURSOR, START_CURSOR } = ConnectionInterface.get();
632
+ const connection = getValueAtPath$1(fragmentData, connectionPathInFragmentData);
633
+ if (connection == null) return {
634
+ cursor: null,
635
+ hasMore: false
636
+ };
637
+ invariant(typeof connection === "object", `Relay: Expected connection in fragment \`${fragmentNode.name}\` to have been \`null\`, or a plain object with ${EDGES} and ${PAGE_INFO} properties. Instead got \`${connection}\`.`);
638
+ const edges = connection[EDGES];
639
+ const pageInfo = connection[PAGE_INFO];
640
+ if (edges == null || pageInfo == null) return {
641
+ cursor: null,
642
+ hasMore: false
643
+ };
644
+ invariant(Array.isArray(edges), `Relay: Expected connection in fragment \`${fragmentNode.name}\` to have a plural \`${EDGES}\` field. Instead got \`${edges}\`.`);
645
+ invariant(typeof pageInfo === "object", `Relay: Expected connection in fragment \`${fragmentNode.name}\` to have a \`${PAGE_INFO}\` field. Instead got \`${pageInfo}\`.`);
646
+ const cursor = direction === "forward" ? pageInfo[END_CURSOR] ?? null : pageInfo[START_CURSOR] ?? null;
647
+ invariant(cursor === null || typeof cursor === "string", `Relay: Expected page info for connection in fragment \`${fragmentNode.name}\` to have a valid \`${START_CURSOR}\`. Instead got \`${cursor}\`.`);
648
+ return {
649
+ cursor,
650
+ hasMore: direction === "forward" ? cursor != null && pageInfo[HAS_NEXT_PAGE] === true : cursor != null && pageInfo[HAS_PREV_PAGE] === true
651
+ };
652
+ }
653
+ var useIsMounted = () => {
654
+ const [isMounted, setIsMounted] = createSignal(false);
655
+ onMount(() => {
656
+ setIsMounted(true);
657
+ onCleanup(() => setIsMounted(false));
658
+ });
659
+ return isMounted;
660
+ };
661
+ var { __internal: __internal$3, getSelector: getSelector$2 } = import_relay_runtime.default?.default?.__esModule ? import_relay_runtime.default.default : import_relay_runtime.default;
662
+ function useIsOperationNodeActive(fragmentNode, fragmentRef) {
663
+ const environment = useRelayEnvironment();
664
+ const selector = createMemo(() => getSelector$2(fragmentNode, fragmentRef()));
665
+ const observable = createMemo(() => {
666
+ const s = selector();
667
+ if (s == null) return null;
668
+ invariant(s.kind === "SingularReaderSelector", "useIsOperationNodeActive: Plural fragments are not supported.");
669
+ return __internal$3.getObservableForActiveRequest(environment(), s.owner);
670
+ });
671
+ const [isActive, setIsActive] = createSignal(false);
672
+ createEffect(() => {
673
+ let subscription;
674
+ const obs = observable();
675
+ setIsActive(obs != null);
676
+ if (obs != null) {
677
+ const onCompleteOrError = () => setIsActive(false);
678
+ subscription = obs.subscribe({
679
+ complete: onCompleteOrError,
680
+ error: onCompleteOrError
681
+ });
682
+ }
683
+ onCleanup(() => {
684
+ subscription?.unsubscribe();
685
+ });
686
+ });
687
+ return isActive;
688
+ }
689
+ var { getRequest: getRequest$1 } = import_relay_runtime.default?.default?.__esModule ? import_relay_runtime.default.default : import_relay_runtime.default;
690
+ var initialNullQueryReferenceState = { kind: "NullQueryReference" };
691
+ /**
692
+ * Creates imperative helpers for preloading queries.
693
+ *
694
+ * Returns a tuple:
695
+ * - an accessor for the current `PreloadedQuery` reference
696
+ * - a `loadQuery` function to start loading with variables
697
+ * - a `disposeQuery` function to clear and dispose the current reference
698
+ *
699
+ * @param preloadableRequest - Query document or preloadable concrete request.
700
+ * @param initialQueryReference - Optional initial query reference.
701
+ * @returns `[queryRef, loadQuery, disposeQuery]`.
702
+ */
703
+ function createQueryLoader(preloadableRequest, initialQueryReference) {
704
+ const environment = useRelayEnvironment();
705
+ const isMounted = useIsMounted();
706
+ const [queryReference, setQueryReference] = createSignal(initialQueryReference ?? initialNullQueryReferenceState);
707
+ createEffect(() => {
708
+ const ref = queryReference();
709
+ onCleanup(() => {
710
+ if ("controls" in ref) if (requestIsLiveQuery(preloadableRequest)) ref.controls?.value.dispose();
711
+ else ref.controls?.value.releaseQuery();
712
+ });
713
+ });
714
+ return [
715
+ () => {
716
+ const ref = queryReference();
717
+ return ref.kind === "NullQueryReference" ? null : ref;
718
+ },
719
+ (variables, options) => {
720
+ const mergedOptions = options != null && Object.hasOwn(options, "__environment") ? {
721
+ fetchPolicy: options.fetchPolicy,
722
+ networkCacheConfig: options.networkCacheConfig
723
+ } : options;
724
+ if (untrack(isMounted)) setQueryReference(loadQuery(options?.__environment ?? untrack(environment), preloadableRequest, variables, mergedOptions));
725
+ },
726
+ () => {
727
+ if (untrack(isMounted)) setQueryReference(initialNullQueryReferenceState);
728
+ }
729
+ ];
730
+ }
731
+ function requestIsLiveQuery(preloadableRequest) {
732
+ if ("kind" in preloadableRequest && preloadableRequest.kind === "PreloadableConcreteRequest") return preloadableRequest.params.metadata.live !== void 0;
733
+ return getRequest$1(preloadableRequest).params.metadata.live !== void 0;
734
+ }
735
+ var { __internal: __internal$2, createOperationDescriptor: createOperationDescriptor$1, getFragment: getFragment$1, getFragmentIdentifier: getFragmentIdentifier$1, getRefetchMetadata: getRefetchMetadata$1, getSelector: getSelector$1, getValueAtPath, ReplaySubject } = import_relay_runtime.default?.default?.__esModule ? import_relay_runtime.default.default : import_relay_runtime.default;
736
+ var { waitForFragmentData } = import_experimental.default?.default?.__esModule ? import_experimental.default.default : import_experimental.default;
737
+ function createRefetchableFragmentInternal(fragment, key, componentDisplayName = "createRefetchableFragment()", options) {
738
+ const parentEnvironment = useRelayEnvironment();
739
+ const parentFragmentRef = () => unwrap(key());
740
+ const isMounted = useIsMounted();
741
+ const fragmentNode = getFragment$1(fragment);
742
+ const { refetchableRequest, fragmentRefPathInResponse, identifierInfo } = getRefetchMetadata$1(fragmentNode, componentDisplayName);
743
+ const fragmentIdentifier = createMemo(() => getFragmentIdentifier$1(fragmentNode, parentFragmentRef()));
744
+ const [state, setState] = createSignal({
745
+ fetchPolicy: void 0,
746
+ mirroredEnvironment: parentEnvironment(),
747
+ mirroredFragmentIdentifier: fragmentIdentifier(),
748
+ onComplete: void 0,
749
+ refetchEnvironment: null,
750
+ refetchQuery: null
751
+ });
752
+ const environment = createMemo(() => state().refetchEnvironment ?? parentEnvironment());
753
+ const [preloadedQueryRef, loadQuery, disposeQuery] = createQueryLoader(refetchableRequest);
754
+ const [fragmentRef, setFragmentRef] = createSignal(parentFragmentRef());
755
+ createComputed(() => {
756
+ if (untrack(fragmentRef) !== parentFragmentRef()) setFragmentRef(() => parentFragmentRef());
757
+ });
758
+ const refetchObservable = createMemo(() => {
759
+ const refetchQuery = state().refetchQuery;
760
+ const preloadedQuery = preloadedQueryRef();
761
+ if (!refetchQuery || !preloadedQuery) return;
762
+ const fetchObservable = preloadedQuery.controls?.value.source != null ? preloadedQuery.controls.value.source : __internal$2.fetchQuery(environment(), refetchQuery);
763
+ const replaySubject = new ReplaySubject();
764
+ fetchObservable.subscribe({
765
+ next: (value) => replaySubject.next(value),
766
+ unsubscribe: () => replaySubject.unsubscribe(),
767
+ complete() {
768
+ replaySubject.complete();
769
+ state().onComplete?.(null);
770
+ },
771
+ error(err) {
772
+ replaySubject.error(err);
773
+ state().onComplete?.(err);
774
+ }
775
+ });
776
+ return replaySubject;
777
+ });
778
+ createComputed(() => {
779
+ const refetchQuery = state().refetchQuery;
780
+ if (!refetchQuery) return;
781
+ const obs = refetchObservable();
782
+ if (!obs) return;
783
+ obs.subscribe({ async complete() {
784
+ const data = await waitForFragmentData(environment(), refetchableRequest.fragment, getQueryRef(refetchQuery));
785
+ if (!data) return;
786
+ const refetchedFragmentRef = getValueAtPath(unwrap(data), fragmentRefPathInResponse);
787
+ if (!refetchedFragmentRef) return;
788
+ setFragmentRef(unwrap(refetchedFragmentRef));
789
+ } });
790
+ });
791
+ const refetch = (action) => setState((state) => ({
792
+ ...state,
793
+ fetchPolicy: action.fetchPolicy,
794
+ mirroredEnvironment: state.refetchEnvironment ?? state.mirroredEnvironment,
795
+ onComplete: action.onComplete,
796
+ refetchEnvironment: action.refetchEnvironment,
797
+ refetchQuery: action.refetchQuery
798
+ }));
799
+ const reset = (action) => setState({
800
+ fetchPolicy: void 0,
801
+ mirroredEnvironment: action.environment,
802
+ mirroredFragmentIdentifier: action.fragmentIdentifier,
803
+ onComplete: void 0,
804
+ refetchEnvironment: void 0,
805
+ refetchQuery: null
806
+ });
807
+ createEffect(() => {
808
+ const env = environment();
809
+ const fragmentIdent = fragmentIdentifier();
810
+ if (env !== state().mirroredEnvironment || fragmentIdent !== state().mirroredFragmentIdentifier) {
811
+ reset({
812
+ environment: env,
813
+ fragmentIdentifier: fragmentIdent
814
+ });
815
+ disposeQuery();
816
+ }
817
+ });
818
+ const fragmentData = createFragmentInternal(fragment, parentFragmentRef, () => ({ parentOperation: refetchObservable() }), options);
819
+ return {
820
+ fragmentData,
821
+ fragmentRef,
822
+ refetch: (providedRefetchVariables, options) => {
823
+ const fragmentRef = parentFragmentRef();
824
+ const identifierValue = identifierInfo?.identifierField != null && fragmentData.latest != null && typeof fragmentData.latest === "object" ? fragmentData.latest[identifierInfo.identifierField] : null;
825
+ if (!untrack(isMounted)) {
826
+ console.warn(`Relay: Unexpected call to \`refetch\` on unmounted component for fragment \`${fragmentNode.name}\` in \`${componentDisplayName}\`. It looks like some instances of your component are still trying to fetch data but they already unmounted. Please make sure you clear all timers, intervals, async calls, etc that may trigger a fetch.`);
827
+ return { dispose: () => {} };
828
+ }
829
+ if (fragmentRef === null) console.warn(`Relay: Unexpected call to \`refetch\` while using a null fragment ref for fragment \`fragmentNode.name\` in \`${componentDisplayName}\`. When calling \`refetch\`, we expect initial fragment data to be non-null. Please make sure you're passing a valid fragment ref to \`${componentDisplayName}\` before calling \`refetch\`, or make sure you pass all required variables to \`refetch\`.`);
830
+ const fetchPolicy = options?.fetchPolicy;
831
+ const onComplete = options?.onComplete;
832
+ const fragmentSelector = getSelector$1(fragmentNode, fragmentRef);
833
+ let parentVariables;
834
+ let fragmentVariables;
835
+ if (fragmentSelector == null) {
836
+ parentVariables = {};
837
+ fragmentVariables = {};
838
+ } else if (fragmentSelector.kind === "PluralReaderSelector") {
839
+ const selector = fragmentSelector;
840
+ parentVariables = selector.selectors[0]?.owner.variables ?? {};
841
+ fragmentVariables = selector.selectors[0]?.variables ?? {};
842
+ } else {
843
+ const selector = fragmentSelector;
844
+ parentVariables = selector.owner.variables;
845
+ fragmentVariables = selector.variables;
846
+ }
847
+ const refetchVariables = {
848
+ ...parentVariables,
849
+ ...fragmentVariables,
850
+ ...providedRefetchVariables
851
+ };
852
+ if (identifierInfo != null && !Object.hasOwn(providedRefetchVariables, identifierInfo.identifierQueryVariableName)) {
853
+ if (typeof identifierValue !== "string") console.warn(`Relay: Expected result to have a string \`${identifierInfo.identifierField}\` in order to refetch, got \`${String(identifierValue)}\`. `);
854
+ refetchVariables[identifierInfo.identifierQueryVariableName] = identifierValue;
855
+ }
856
+ const refetchQuery = createOperationDescriptor$1(refetchableRequest, refetchVariables, { force: true });
857
+ batch(() => {
858
+ loadQuery(refetchQuery.request.variables, {
859
+ fetchPolicy,
860
+ __environment: state().refetchEnvironment
861
+ });
862
+ refetch({
863
+ fetchPolicy,
864
+ onComplete,
865
+ refetchEnvironment: state().refetchEnvironment,
866
+ refetchQuery
867
+ });
868
+ });
869
+ return { dispose: disposeQuery };
870
+ }
871
+ };
872
+ }
873
+ var { __internal: __internal$1, createOperationDescriptor, getFragment, getFragmentIdentifier, getPaginationMetadata, getPaginationVariables, getRefetchMetadata, getSelector } = import_relay_runtime.default?.default?.__esModule ? import_relay_runtime.default.default : import_relay_runtime.default;
874
+ function createPaginationFragment(fragment, key) {
875
+ const fragmentNode = getFragment(fragment);
876
+ const componentDisplayName = "createPaginationFragment()";
877
+ const { connectionPathInFragmentData, paginationRequest, paginationMetadata } = getPaginationMetadata(fragmentNode, componentDisplayName);
878
+ const { fragmentData, fragmentRef, refetch } = createRefetchableFragmentInternal(fragment, key, componentDisplayName);
879
+ const fragmentIdentifier = createMemo(() => getFragmentIdentifier(fragmentNode, fragmentRef()));
880
+ const [loadPrevious, hasPrevious, isLoadingPrevious, disposeFetchPrevious] = createLoadMore({
881
+ direction: "backward",
882
+ fragmentNode,
883
+ fragmentRef,
884
+ fragmentIdentifier,
885
+ fragmentData,
886
+ connectionPathInFragmentData,
887
+ paginationRequest,
888
+ paginationMetadata,
889
+ componentDisplayName
890
+ });
891
+ const [loadNext, hasNext, isLoadingNext, disposeFetchNext] = createLoadMore({
892
+ direction: "forward",
893
+ fragmentNode,
894
+ fragmentRef,
895
+ fragmentIdentifier,
896
+ fragmentData,
897
+ connectionPathInFragmentData,
898
+ paginationRequest,
899
+ paginationMetadata,
900
+ componentDisplayName
901
+ });
902
+ const refetchPagination = (variables, options) => {
903
+ disposeFetchNext();
904
+ disposeFetchPrevious();
905
+ return refetch(variables, options);
906
+ };
907
+ Object.defineProperties(fragmentData, {
908
+ loadNext: { value: loadNext },
909
+ loadPrevious: { value: loadPrevious },
910
+ hasNext: { get: hasNext },
911
+ hasPrevious: { get: hasPrevious },
912
+ isLoadingNext: { get: isLoadingNext },
913
+ isLoadingPrevious: { get: isLoadingPrevious },
914
+ refetch: { value: refetchPagination }
915
+ });
916
+ return fragmentData;
917
+ }
918
+ function createLoadMore({ direction, fragmentNode, fragmentRef, fragmentIdentifier, fragmentData, connectionPathInFragmentData, paginationRequest, paginationMetadata, componentDisplayName }) {
919
+ const environment = useRelayEnvironment();
920
+ const [isLoadingMore, reallySetIsLoadingMore] = createSignal(false);
921
+ const setIsLoadingMore = (value) => {
922
+ const schedule = untrack(environment).getScheduler()?.schedule;
923
+ if (schedule) schedule(() => {
924
+ reallySetIsLoadingMore(value);
925
+ });
926
+ else reallySetIsLoadingMore(value);
927
+ };
928
+ const { isFetching, startFetch, disposeFetch, completeFetch } = createFetchTracker();
929
+ const { identifierInfo } = getRefetchMetadata(fragmentNode, componentDisplayName);
930
+ const identifierValue = createMemo(() => identifierInfo?.identifierField != null && fragmentData.latest != null ? fragmentData.latest[identifierInfo.identifierField] : null);
931
+ const isMounted = useIsMounted();
932
+ const [mirroredEnvironment, setMirroredEnvironment] = createSignal(environment());
933
+ const [mirroredFragmentIdentifier, setMirroredFragmentIdentifier] = createSignal(fragmentIdentifier());
934
+ const isParentQueryActive = useIsOperationNodeActive(fragmentNode, fragmentRef);
935
+ const shouldReset = createMemo(() => environment() !== mirroredEnvironment() || fragmentIdentifier() !== mirroredFragmentIdentifier());
936
+ createEffect(() => {
937
+ if (shouldReset()) batch(() => {
938
+ disposeFetch();
939
+ setIsLoadingMore(false);
940
+ setMirroredEnvironment(untrack(environment));
941
+ setMirroredFragmentIdentifier(untrack(fragmentIdentifier));
942
+ });
943
+ });
944
+ const connectionState = createMemo(() => getConnectionState(direction, fragmentNode, fragmentData.latest, connectionPathInFragmentData));
945
+ const isRequestInvalid = createMemo(() => fragmentData.latest == null || isParentQueryActive());
946
+ return [
947
+ (count, options) => {
948
+ if (!untrack(isMounted)) {
949
+ console.warn(`Relay: Unexpected fetch on unmounted component for fragment \`${fragmentNode.name}\` in \`${componentDisplayName}\`. It looks like some instances of your component are still trying to fetch data but they already unmounted. Please make sure you clear all timers, intervals, async calls, etc that may trigger a fetch.`);
950
+ return { dispose: () => {} };
951
+ }
952
+ const fragmentSelector = getSelector(fragmentNode, untrack(fragmentRef));
953
+ if (untrack(isFetching) || untrack(isRequestInvalid)) {
954
+ if (fragmentSelector == null) console.warn(`Relay: Unexpected fetch while using a null fragment ref for fragment \`${fragmentNode.name}\` in \`${componentDisplayName}\`. When fetching more items, we expect initial fragment data to be non-null. Please make sure you're passing a valid fragment ref to \`${componentDisplayName}\` before paginating.`);
955
+ options?.onComplete?.(null);
956
+ return { dispose: () => {} };
957
+ }
958
+ invariant(fragmentSelector != null && fragmentSelector.kind !== "PluralReaderSelector", `Relay: Expected to be able to find a non-plural fragment owner for fragment \`${fragmentNode.name}\` when using \`${componentDisplayName}\`. If you're seeing this, this is likely a bug in Relay.`);
959
+ const selector = fragmentSelector;
960
+ const parentVariables = selector.owner.variables;
961
+ const fragmentVariables = selector.variables;
962
+ const baseVariables = {
963
+ ...parentVariables,
964
+ ...fragmentVariables
965
+ };
966
+ const paginationVariables = getPaginationVariables(direction, count, untrack(connectionState).cursor, baseVariables, {}, paginationMetadata);
967
+ if (identifierInfo != null) {
968
+ const value = untrack(identifierValue);
969
+ if (typeof value !== "string") console.warn(`Relay: Expected result to have a string \`${identifierInfo.identifierField}\` in order to refetch, got \`${String(value)}\`.`);
970
+ paginationVariables[identifierInfo.identifierQueryVariableName] = value;
971
+ }
972
+ const paginationQuery = createOperationDescriptor(paginationRequest, paginationVariables, { force: true });
973
+ __internal$1.fetchQuery(untrack(environment), paginationQuery).subscribe({
974
+ start(subscription) {
975
+ startFetch(subscription);
976
+ setIsLoadingMore(true);
977
+ },
978
+ complete() {
979
+ completeFetch();
980
+ setIsLoadingMore(false);
981
+ options?.onComplete?.(null);
982
+ },
983
+ error(error) {
984
+ completeFetch();
985
+ setIsLoadingMore(false);
986
+ options?.onComplete?.(error);
987
+ },
988
+ unsubscribe() {
989
+ setIsLoadingMore(false);
990
+ }
991
+ });
992
+ return { dispose: disposeFetch };
993
+ },
994
+ () => connectionState().hasMore,
995
+ isLoadingMore,
996
+ disposeFetch
997
+ ];
998
+ }
999
+ var { __internal, getRequest } = import_relay_runtime.default?.default?.__esModule ? import_relay_runtime.default.default : import_relay_runtime.default;
1000
+ function createPreloadedQuery(query, preloadedQuery) {
1001
+ const environment = useRelayEnvironment();
1002
+ const [maybePreloaded] = createResource(() => access(preloadedQuery), (v) => v);
1003
+ const operation = createMemoOperationDescriptor(query, () => maybePreloaded.latest?.variables, () => maybePreloaded.latest?.networkCacheConfig ?? void 0);
1004
+ createEffect(() => {
1005
+ const preloaded = maybePreloaded.latest;
1006
+ if (preloaded) onCleanup(() => {
1007
+ preloaded.controls?.value.dispose();
1008
+ });
1009
+ });
1010
+ return createLazyLoadQueryInternal({
1011
+ query: operation,
1012
+ fragment: () => getRequest(query).fragment,
1013
+ fetchKey: () => maybePreloaded.latest?.fetchKey,
1014
+ fetchPolicy: () => maybePreloaded.latest?.fetchPolicy,
1015
+ fetchObservable: () => {
1016
+ const preloaded = maybePreloaded.latest;
1017
+ const op = operation();
1018
+ if (!preloaded || !op) return;
1019
+ invariant(preloaded.controls == null || !preloaded.controls?.value.isDisposed(), "usePreloadedQuery(): Expected preloadedQuery to not be disposed yet. This is because disposing the query marks it for future garbage collection, and as such query results may no longer be present in the Relay store.");
1020
+ const fallback = __internal.fetchQuery(environment(), op);
1021
+ if (preloaded.controls?.value.source == null) return fallback;
1022
+ invariant(preloaded.controls == null || environment() === preloaded.controls.value.environment, "usePreloadedQuery(): usePreloadedQuery was passed a preloaded query that was created with a different environment than the one that is currently in context.");
1023
+ return preloaded.controls.value.source.ifEmpty(fallback);
1024
+ }
1025
+ });
1026
+ }
1027
+ var { requestSubscription } = import_relay_runtime.default?.default?.__esModule ? import_relay_runtime.default.default : import_relay_runtime.default;
1028
+ //#endregion
1029
+ export { createPaginationFragment as a, useRelayEnvironment as c, createMutation as i, createFragment as n, createPreloadedQuery as o, createLazyLoadQuery as r, loadQuery as s, RelayEnvironmentProvider as t };