fetchium 0.2.4 → 0.3.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 (53) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/cjs/development/QueryClient-QKhS8mhg.js +2 -0
  3. package/dist/cjs/development/QueryClient-QKhS8mhg.js.map +1 -0
  4. package/dist/cjs/development/index.js +1 -1
  5. package/dist/cjs/{production/mutation-LrsiDsl7.js → development/mutation-w67Vpuvw.js} +2 -2
  6. package/dist/cjs/{production/mutation-LrsiDsl7.js.map → development/mutation-w67Vpuvw.js.map} +1 -1
  7. package/dist/cjs/development/react/index.js +1 -1
  8. package/dist/cjs/development/react/index.js.map +1 -1
  9. package/dist/cjs/development/rest/index.js +1 -1
  10. package/dist/cjs/development/topic/index.js +1 -1
  11. package/dist/cjs/production/QueryClient-DIAqDTHF.js +2 -0
  12. package/dist/cjs/production/QueryClient-DIAqDTHF.js.map +1 -0
  13. package/dist/cjs/production/index.js +1 -1
  14. package/dist/cjs/{development/mutation-CUV5TC93.js → production/mutation-CgS9gXW7.js} +2 -2
  15. package/dist/cjs/{development/mutation-CUV5TC93.js.map → production/mutation-CgS9gXW7.js.map} +1 -1
  16. package/dist/cjs/production/react/index.js +1 -1
  17. package/dist/cjs/production/react/index.js.map +1 -1
  18. package/dist/cjs/production/rest/index.js +1 -1
  19. package/dist/cjs/production/topic/index.js +1 -1
  20. package/dist/esm/EntityInstance.d.ts.map +1 -1
  21. package/dist/esm/QueryResult.d.ts +3 -3
  22. package/dist/esm/QueryResult.d.ts.map +1 -1
  23. package/dist/esm/development/{QueryClient-WObL5AFz.js → QueryClient-C9tBdK1Z.js} +347 -330
  24. package/dist/esm/development/QueryClient-C9tBdK1Z.js.map +1 -0
  25. package/dist/esm/development/index.js +2 -2
  26. package/dist/esm/development/{mutation-C3e7FM9D.js → mutation-Dx63NCGk.js} +2 -2
  27. package/dist/esm/development/{mutation-C3e7FM9D.js.map → mutation-Dx63NCGk.js.map} +1 -1
  28. package/dist/esm/development/react/index.js +5 -36
  29. package/dist/esm/development/react/index.js.map +1 -1
  30. package/dist/esm/development/rest/index.js +2 -2
  31. package/dist/esm/development/topic/index.js +1 -1
  32. package/dist/esm/production/{QueryClient-DqHBCvA1.js → QueryClient-D64xo0EA.js} +319 -304
  33. package/dist/esm/production/QueryClient-D64xo0EA.js.map +1 -0
  34. package/dist/esm/production/index.js +2 -2
  35. package/dist/esm/production/{mutation-BOc53DJi.js → mutation-Aw1JE7VO.js} +2 -2
  36. package/dist/esm/production/{mutation-BOc53DJi.js.map → mutation-Aw1JE7VO.js.map} +1 -1
  37. package/dist/esm/production/react/index.js +5 -36
  38. package/dist/esm/production/react/index.js.map +1 -1
  39. package/dist/esm/production/rest/index.js +2 -2
  40. package/dist/esm/production/topic/index.js +1 -1
  41. package/dist/esm/react/use-query.d.ts +8 -0
  42. package/dist/esm/react/use-query.d.ts.map +1 -1
  43. package/dist/esm/types.d.ts +3 -3
  44. package/dist/esm/types.d.ts.map +1 -1
  45. package/package.json +6 -6
  46. package/plugin/docs/api/fetchium-react.md +5 -4
  47. package/plugin/docs/api/fetchium.md +2 -2
  48. package/dist/cjs/development/QueryClient-DjKxdY2y.js +0 -2
  49. package/dist/cjs/development/QueryClient-DjKxdY2y.js.map +0 -1
  50. package/dist/cjs/production/QueryClient-YzaJT_2g.js +0 -2
  51. package/dist/cjs/production/QueryClient-YzaJT_2g.js.map +0 -1
  52. package/dist/esm/development/QueryClient-WObL5AFz.js.map +0 -1
  53. package/dist/esm/production/QueryClient-DqHBCvA1.js.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./QueryClient-DjKxdY2y.js"),r=require("./QueryAdapter-DUo338ga.js"),t=require("./mutation-CUV5TC93.js");exports.ARRAY_KEY=e.ARRAY_KEY;exports.Entity=e.Entity;exports.GcManager=e.GcManager;exports.LiveFieldConfig=e.LiveFieldConfig;exports.LiveFieldType=e.LiveFieldType;exports.Mask=e.Mask;exports.NetworkManager=e.NetworkManager;exports.NetworkManagerContext=e.NetworkManagerContext;exports.NetworkMode=e.NetworkMode;exports.NoOpGcManager=e.NoOpGcManager;exports.NoOpNetworkManager=e.NoOpNetworkManager;exports.QUERY_ID=e.QUERY_ID;exports.Query=e.Query;exports.QueryClient=e.QueryClient;exports.QueryClientContext=e.QueryClientContext;exports.RECORD_KEY=e.RECORD_KEY;exports.defaultNetworkManager=e.defaultNetworkManager;exports.draft=e.draft;exports.fetchQuery=e.fetchQuery;exports.queryKeyForClass=e.queryKeyForClass;exports.registerFormat=e.registerFormat;exports.t=e.t;exports.QueryAdapter=r.QueryAdapter;exports.Mutation=t.Mutation;exports.getMutation=t.getMutation;exports.mutationKeyForClass=t.mutationKeyForClass;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./QueryClient-QKhS8mhg.js"),r=require("./QueryAdapter-DUo338ga.js"),t=require("./mutation-w67Vpuvw.js");exports.ARRAY_KEY=e.ARRAY_KEY;exports.Entity=e.Entity;exports.GcManager=e.GcManager;exports.LiveFieldConfig=e.LiveFieldConfig;exports.LiveFieldType=e.LiveFieldType;exports.Mask=e.Mask;exports.NetworkManager=e.NetworkManager;exports.NetworkManagerContext=e.NetworkManagerContext;exports.NetworkMode=e.NetworkMode;exports.NoOpGcManager=e.NoOpGcManager;exports.NoOpNetworkManager=e.NoOpNetworkManager;exports.QUERY_ID=e.QUERY_ID;exports.Query=e.Query;exports.QueryClient=e.QueryClient;exports.QueryClientContext=e.QueryClientContext;exports.RECORD_KEY=e.RECORD_KEY;exports.defaultNetworkManager=e.defaultNetworkManager;exports.draft=e.draft;exports.fetchQuery=e.fetchQuery;exports.queryKeyForClass=e.queryKeyForClass;exports.registerFormat=e.registerFormat;exports.t=e.t;exports.QueryAdapter=r.QueryAdapter;exports.Mutation=t.Mutation;exports.getMutation=t.getMutation;exports.mutationKeyForClass=t.mutationKeyForClass;
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- "use strict";const g=require("signalium"),o=require("./QueryClient-YzaJT_2g.js");class y{static adapter;params;result;optimisticUpdates;config;effects;constructor(){return o.createDefinitionProxy(this)}}const c=new WeakMap,h=t=>{const e=c.get(t);if(e===void 0)throw new Error("Mutation definition not found");return e().id};function D(t){let e=c.get(t);if(e!==void 0)return e;let n;const f=()=>{if(n!==void 0)return n;const d=new t,r=o.extractDefinition(d),{fields:i}=r,p=`mutation:${String(r.methods.getIdentityKey.call(i))}`,a=i.params??{},l=a instanceof o.ValidatorDef?a:o.t.object(a),s=i.result,m=s!==void 0?s instanceof o.ValidatorDef?s:o.t.object(s):void 0,u=t.adapter;if(!u)throw new Error(`Mutation class "${t.name}" must define a static \`adapter\` property. Extend RESTMutation (from fetchium/rest) or set \`static adapter = MyAdapter\` on your mutation class.`);return n={id:p,requestShape:l,responseShape:m,captured:r,optimisticUpdates:i.optimisticUpdates??!1,config:i.config,effects:i.effects,hasGetEffects:typeof r.methods.getEffects=="function",adapterClass:u},n};return c.set(t,f),f}function M(t){const e=D(t),n=g.getContext(o.QueryClientContext);if(n===void 0)throw new Error("QueryClient not found");return n.getMutation(e())}exports.Mutation=y;exports.getMutation=M;exports.mutationKeyForClass=h;
2
- //# sourceMappingURL=mutation-LrsiDsl7.js.map
1
+ "use strict";const g=require("signalium"),o=require("./QueryClient-QKhS8mhg.js");class y{static adapter;params;result;optimisticUpdates;config;effects;constructor(){return o.createDefinitionProxy(this)}}const c=new WeakMap,h=t=>{const e=c.get(t);if(e===void 0)throw new Error("Mutation definition not found");return e().id};function D(t){let e=c.get(t);if(e!==void 0)return e;let n;const f=()=>{if(n!==void 0)return n;const d=new t,r=o.extractDefinition(d),{fields:i}=r,p=`mutation:${String(r.methods.getIdentityKey.call(i))}`,a=i.params??{},l=a instanceof o.ValidatorDef?a:o.t.object(a),s=i.result,m=s!==void 0?s instanceof o.ValidatorDef?s:o.t.object(s):void 0,u=t.adapter;if(!u)throw new Error(`Mutation class "${t.name}" must define a static \`adapter\` property. Extend RESTMutation (from fetchium/rest) or set \`static adapter = MyAdapter\` on your mutation class.`);return n={id:p,requestShape:l,responseShape:m,captured:r,optimisticUpdates:i.optimisticUpdates??!1,config:i.config,effects:i.effects,hasGetEffects:typeof r.methods.getEffects=="function",adapterClass:u},n};return c.set(t,f),f}function M(t){const e=D(t),n=g.getContext(o.QueryClientContext);if(n===void 0)throw new Error("QueryClient not found");return n.getMutation(e())}exports.Mutation=y;exports.getMutation=M;exports.mutationKeyForClass=h;
2
+ //# sourceMappingURL=mutation-w67Vpuvw.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mutation-LrsiDsl7.js","sources":["../../../src/mutation.ts"],"sourcesContent":["import { getContext, ReactiveTask } from 'signalium';\nimport { ExtractType, InternalTypeDef, MutationEffects, TypeDef, RetryConfig, TypeDefShape } from './types.js';\nimport { QueryClientContext, type QueryContext } from './QueryClient.js';\nimport { ValidatorDef, t } from './typeDefs.js';\nimport { createDefinitionProxy, extractDefinition, type CapturedDefinition } from './fieldRef.js';\nimport type { QueryAdapter, QueryAdapterClass } from './QueryAdapter.js';\n\n// ================================\n// Mutation Definition Types\n// ================================\n\nexport interface MutationConfigOptions {\n retry?: RetryConfig | number | false;\n}\n\nexport interface MutationDefinition<Request, Response> {\n id: string;\n requestShape: InternalTypeDef;\n responseShape: InternalTypeDef | undefined;\n captured: CapturedDefinition<Mutation>;\n optimisticUpdates: boolean;\n config?: MutationConfigOptions;\n effects?: MutationEffects;\n hasGetEffects: boolean;\n adapterClass: QueryAdapterClass;\n}\n\n// ================================\n// Mutation base class\n// ================================\n\nexport abstract class Mutation {\n static adapter?: QueryAdapterClass;\n\n readonly params?: TypeDefShape;\n readonly result?: TypeDefShape;\n readonly optimisticUpdates?: boolean;\n readonly config?: MutationConfigOptions;\n readonly effects?: Readonly<MutationEffects>;\n\n declare context: QueryContext;\n\n abstract getIdentityKey(): unknown;\n\n getEffects?(): MutationEffects;\n\n constructor() {\n return createDefinitionProxy(this);\n }\n}\n\n// ================================\n// Mutation definition cache and lookup\n// ================================\n\nconst mutationDefCache = new WeakMap<new () => Mutation, () => MutationDefinition<any, any>>();\n\nexport const mutationKeyForClass = (cls: new () => Mutation): string => {\n const getMutationDef = mutationDefCache.get(cls);\n\n if (getMutationDef === undefined) {\n throw new Error('Mutation definition not found');\n }\n\n return getMutationDef().id;\n};\n\n// ================================\n// Internal: build mutation definition from class\n// ================================\n\nfunction buildMutationDefinition(MutationClass: new () => Mutation): () => MutationDefinition<any, any> {\n let cached = mutationDefCache.get(MutationClass);\n\n if (cached !== undefined) {\n return cached;\n }\n\n let mutationDefinition: MutationDefinition<any, any> | undefined;\n\n const getter = (): MutationDefinition<any, any> => {\n if (mutationDefinition !== undefined) {\n return mutationDefinition;\n }\n\n const instance = new MutationClass();\n const captured = extractDefinition(instance);\n const { fields } = captured;\n\n const id = `mutation:${String(captured.methods.getIdentityKey.call(fields))}`;\n\n const requestDef = fields.params ?? {};\n const requestShape = (requestDef instanceof ValidatorDef\n ? requestDef\n : t.object(requestDef)) as unknown as InternalTypeDef;\n const responseDef = fields.result;\n const responseShape =\n responseDef !== undefined\n ? ((responseDef instanceof ValidatorDef ? responseDef : t.object(responseDef)) as unknown as InternalTypeDef)\n : undefined;\n\n const adapterClass = (MutationClass as typeof Mutation).adapter;\n if (!adapterClass) {\n throw new Error(\n `Mutation class \"${MutationClass.name}\" must define a static \\`adapter\\` property. ` +\n `Extend RESTMutation (from fetchium/rest) or set \\`static adapter = MyAdapter\\` on your mutation class.`,\n );\n }\n\n mutationDefinition = {\n id,\n requestShape,\n responseShape,\n captured,\n optimisticUpdates: fields.optimisticUpdates ?? false,\n config: fields.config,\n effects: fields.effects,\n hasGetEffects: typeof captured.methods.getEffects === 'function',\n adapterClass,\n };\n\n return mutationDefinition;\n };\n\n mutationDefCache.set(MutationClass, getter);\n return getter;\n}\n\n// ================================\n// Public API\n// ================================\n\nexport function getMutation<T extends Mutation>(\n MutationClass: new () => T,\n): ReactiveTask<Readonly<ExtractType<T['result']>>, [ExtractType<T['params']>]> {\n const getMutationDef = buildMutationDefinition(MutationClass);\n\n const queryClient = getContext(QueryClientContext);\n\n if (queryClient === undefined) {\n throw new Error('QueryClient not found');\n }\n\n return queryClient.getMutation<any, any>(getMutationDef());\n}\n"],"names":["Mutation","createDefinitionProxy","mutationDefCache","mutationKeyForClass","cls","getMutationDef","buildMutationDefinition","MutationClass","cached","mutationDefinition","getter","instance","captured","extractDefinition","fields","id","requestDef","requestShape","ValidatorDef","t","responseDef","responseShape","adapterClass","getMutation","queryClient","getContext","QueryClientContext"],"mappings":"iFA+BO,MAAeA,CAAS,CAC7B,OAAO,QAEE,OACA,OACA,kBACA,OACA,QAQT,aAAc,CACZ,OAAOC,EAAAA,sBAAsB,IAAI,CACnC,CACF,CAMA,MAAMC,MAAuB,QAEhBC,EAAuBC,GAAoC,CACtE,MAAMC,EAAiBH,EAAiB,IAAIE,CAAG,EAE/C,GAAIC,IAAmB,OACrB,MAAM,IAAI,MAAM,+BAA+B,EAGjD,OAAOA,IAAiB,EAC1B,EAMA,SAASC,EAAwBC,EAAuE,CACtG,IAAIC,EAASN,EAAiB,IAAIK,CAAa,EAE/C,GAAIC,IAAW,OACb,OAAOA,EAGT,IAAIC,EAEJ,MAAMC,EAAS,IAAoC,CACjD,GAAID,IAAuB,OACzB,OAAOA,EAGT,MAAME,EAAW,IAAIJ,EACfK,EAAWC,EAAAA,kBAAkBF,CAAQ,EACrC,CAAE,OAAAG,GAAWF,EAEbG,EAAK,YAAY,OAAOH,EAAS,QAAQ,eAAe,KAAKE,CAAM,CAAC,CAAC,GAErEE,EAAaF,EAAO,QAAU,CAAA,EAC9BG,EAAgBD,aAAsBE,EAAAA,aACxCF,EACAG,EAAAA,EAAE,OAAOH,CAAU,EACjBI,EAAcN,EAAO,OACrBO,EACJD,IAAgB,OACVA,aAAuBF,EAAAA,aAAeE,EAAcD,IAAE,OAAOC,CAAW,EAC1E,OAEAE,EAAgBf,EAAkC,QACxD,GAAI,CAACe,EACH,MAAM,IAAI,MACR,mBAAmBf,EAAc,IAAI,qJAAA,EAKzC,OAAAE,EAAqB,CACnB,GAAAM,EACA,aAAAE,EACA,cAAAI,EACA,SAAAT,EACA,kBAAmBE,EAAO,mBAAqB,GAC/C,OAAQA,EAAO,OACf,QAASA,EAAO,QAChB,cAAe,OAAOF,EAAS,QAAQ,YAAe,WACtD,aAAAU,CAAA,EAGKb,CACT,EAEA,OAAAP,EAAiB,IAAIK,EAAeG,CAAM,EACnCA,CACT,CAMO,SAASa,EACdhB,EAC8E,CAC9E,MAAMF,EAAiBC,EAAwBC,CAAa,EAEtDiB,EAAcC,EAAAA,WAAWC,oBAAkB,EAEjD,GAAIF,IAAgB,OAClB,MAAM,IAAI,MAAM,uBAAuB,EAGzC,OAAOA,EAAY,YAAsBnB,GAAgB,CAC3D"}
1
+ {"version":3,"file":"mutation-w67Vpuvw.js","sources":["../../../src/mutation.ts"],"sourcesContent":["import { getContext, ReactiveTask } from 'signalium';\nimport { ExtractType, InternalTypeDef, MutationEffects, TypeDef, RetryConfig, TypeDefShape } from './types.js';\nimport { QueryClientContext, type QueryContext } from './QueryClient.js';\nimport { ValidatorDef, t } from './typeDefs.js';\nimport { createDefinitionProxy, extractDefinition, type CapturedDefinition } from './fieldRef.js';\nimport type { QueryAdapter, QueryAdapterClass } from './QueryAdapter.js';\n\n// ================================\n// Mutation Definition Types\n// ================================\n\nexport interface MutationConfigOptions {\n retry?: RetryConfig | number | false;\n}\n\nexport interface MutationDefinition<Request, Response> {\n id: string;\n requestShape: InternalTypeDef;\n responseShape: InternalTypeDef | undefined;\n captured: CapturedDefinition<Mutation>;\n optimisticUpdates: boolean;\n config?: MutationConfigOptions;\n effects?: MutationEffects;\n hasGetEffects: boolean;\n adapterClass: QueryAdapterClass;\n}\n\n// ================================\n// Mutation base class\n// ================================\n\nexport abstract class Mutation {\n static adapter?: QueryAdapterClass;\n\n readonly params?: TypeDefShape;\n readonly result?: TypeDefShape;\n readonly optimisticUpdates?: boolean;\n readonly config?: MutationConfigOptions;\n readonly effects?: Readonly<MutationEffects>;\n\n declare context: QueryContext;\n\n abstract getIdentityKey(): unknown;\n\n getEffects?(): MutationEffects;\n\n constructor() {\n return createDefinitionProxy(this);\n }\n}\n\n// ================================\n// Mutation definition cache and lookup\n// ================================\n\nconst mutationDefCache = new WeakMap<new () => Mutation, () => MutationDefinition<any, any>>();\n\nexport const mutationKeyForClass = (cls: new () => Mutation): string => {\n const getMutationDef = mutationDefCache.get(cls);\n\n if (getMutationDef === undefined) {\n throw new Error('Mutation definition not found');\n }\n\n return getMutationDef().id;\n};\n\n// ================================\n// Internal: build mutation definition from class\n// ================================\n\nfunction buildMutationDefinition(MutationClass: new () => Mutation): () => MutationDefinition<any, any> {\n let cached = mutationDefCache.get(MutationClass);\n\n if (cached !== undefined) {\n return cached;\n }\n\n let mutationDefinition: MutationDefinition<any, any> | undefined;\n\n const getter = (): MutationDefinition<any, any> => {\n if (mutationDefinition !== undefined) {\n return mutationDefinition;\n }\n\n const instance = new MutationClass();\n const captured = extractDefinition(instance);\n const { fields } = captured;\n\n const id = `mutation:${String(captured.methods.getIdentityKey.call(fields))}`;\n\n const requestDef = fields.params ?? {};\n const requestShape = (requestDef instanceof ValidatorDef\n ? requestDef\n : t.object(requestDef)) as unknown as InternalTypeDef;\n const responseDef = fields.result;\n const responseShape =\n responseDef !== undefined\n ? ((responseDef instanceof ValidatorDef ? responseDef : t.object(responseDef)) as unknown as InternalTypeDef)\n : undefined;\n\n const adapterClass = (MutationClass as typeof Mutation).adapter;\n if (!adapterClass) {\n throw new Error(\n `Mutation class \"${MutationClass.name}\" must define a static \\`adapter\\` property. ` +\n `Extend RESTMutation (from fetchium/rest) or set \\`static adapter = MyAdapter\\` on your mutation class.`,\n );\n }\n\n mutationDefinition = {\n id,\n requestShape,\n responseShape,\n captured,\n optimisticUpdates: fields.optimisticUpdates ?? false,\n config: fields.config,\n effects: fields.effects,\n hasGetEffects: typeof captured.methods.getEffects === 'function',\n adapterClass,\n };\n\n return mutationDefinition;\n };\n\n mutationDefCache.set(MutationClass, getter);\n return getter;\n}\n\n// ================================\n// Public API\n// ================================\n\nexport function getMutation<T extends Mutation>(\n MutationClass: new () => T,\n): ReactiveTask<Readonly<ExtractType<T['result']>>, [ExtractType<T['params']>]> {\n const getMutationDef = buildMutationDefinition(MutationClass);\n\n const queryClient = getContext(QueryClientContext);\n\n if (queryClient === undefined) {\n throw new Error('QueryClient not found');\n }\n\n return queryClient.getMutation<any, any>(getMutationDef());\n}\n"],"names":["Mutation","createDefinitionProxy","mutationDefCache","mutationKeyForClass","cls","getMutationDef","buildMutationDefinition","MutationClass","cached","mutationDefinition","getter","instance","captured","extractDefinition","fields","id","requestDef","requestShape","ValidatorDef","t","responseDef","responseShape","adapterClass","getMutation","queryClient","getContext","QueryClientContext"],"mappings":"iFA+BO,MAAeA,CAAS,CAC7B,OAAO,QAEE,OACA,OACA,kBACA,OACA,QAQT,aAAc,CACZ,OAAOC,EAAAA,sBAAsB,IAAI,CACnC,CACF,CAMA,MAAMC,MAAuB,QAEhBC,EAAuBC,GAAoC,CACtE,MAAMC,EAAiBH,EAAiB,IAAIE,CAAG,EAE/C,GAAIC,IAAmB,OACrB,MAAM,IAAI,MAAM,+BAA+B,EAGjD,OAAOA,IAAiB,EAC1B,EAMA,SAASC,EAAwBC,EAAuE,CACtG,IAAIC,EAASN,EAAiB,IAAIK,CAAa,EAE/C,GAAIC,IAAW,OACb,OAAOA,EAGT,IAAIC,EAEJ,MAAMC,EAAS,IAAoC,CACjD,GAAID,IAAuB,OACzB,OAAOA,EAGT,MAAME,EAAW,IAAIJ,EACfK,EAAWC,EAAAA,kBAAkBF,CAAQ,EACrC,CAAE,OAAAG,GAAWF,EAEbG,EAAK,YAAY,OAAOH,EAAS,QAAQ,eAAe,KAAKE,CAAM,CAAC,CAAC,GAErEE,EAAaF,EAAO,QAAU,CAAA,EAC9BG,EAAgBD,aAAsBE,EAAAA,aACxCF,EACAG,EAAAA,EAAE,OAAOH,CAAU,EACjBI,EAAcN,EAAO,OACrBO,EACJD,IAAgB,OACVA,aAAuBF,EAAAA,aAAeE,EAAcD,IAAE,OAAOC,CAAW,EAC1E,OAEAE,EAAgBf,EAAkC,QACxD,GAAI,CAACe,EACH,MAAM,IAAI,MACR,mBAAmBf,EAAc,IAAI,qJAAA,EAKzC,OAAAE,EAAqB,CACnB,GAAAM,EACA,aAAAE,EACA,cAAAI,EACA,SAAAT,EACA,kBAAmBE,EAAO,mBAAqB,GAC/C,OAAQA,EAAO,OACf,QAASA,EAAO,QAChB,cAAe,OAAOF,EAAS,QAAQ,YAAe,WACtD,aAAAU,CAAA,EAGKb,CACT,EAEA,OAAAP,EAAiB,IAAIK,EAAeG,CAAM,EACnCA,CACT,CAMO,SAASa,EACdhB,EAC8E,CAC9E,MAAMF,EAAiBC,EAAwBC,CAAa,EAEtDiB,EAAcC,EAAAA,WAAWC,oBAAkB,EAEjD,GAAIF,IAAgB,OAClB,MAAM,IAAI,MAAM,uBAAuB,EAGzC,OAAOA,EAAY,YAAsBnB,GAAgB,CAC3D"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("signalium/react"),i=require("signalium"),f=require("../QueryClient-DjKxdY2y.js");function n(e){if(Array.isArray(e))return e.map(n);if(e&&typeof e=="object"){if(e instanceof Date)return new Date(e);if(e instanceof RegExp)return new RegExp(e);if(e instanceof Map)return new Map(Array.from(e.entries()).map(([t,c])=>[n(t),n(c)]));if(e instanceof Set)return new Set(Array.from(e).map(n));const r=Object.create(Object.getPrototypeOf(e));for(const t of Object.keys(e))r[t]=n(e[t]);return r}return e}const y=i.reactive(e=>n(e.value)),a=i.reactive((e,...r)=>{const t=f.fetchQuery(e,...r);return new Proxy(t,{get(c,o,u){return o==="value"?y(c):Reflect.get(c,o,u)}})}),p=i.reactive(e=>e.value);function g(e,...r){const t=s.useReactive(a,e,...r);return s.useReactive(p,t),t}exports.useQuery=g;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("signalium/react"),u=require("../QueryClient-QKhS8mhg.js");function c(e,...r){return t.useReactive(()=>u.fetchQuery(e,...r))}exports.useQuery=c;
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/react/use-query.ts"],"sourcesContent":["import { useReactive } from 'signalium/react';\nimport { reactive } from 'signalium';\nimport { ExtractType, QueryPromise } from '../types.js';\nimport { ExtractQueryParams, fetchQuery, Query } from '../query.js';\nimport { HasRequiredKeys, Optionalize, Signalize } from '../type-utils.js';\n\nfunction cloneDeep<T>(value: T): T {\n if (Array.isArray(value)) {\n return value.map(cloneDeep) as unknown as T;\n }\n if (value && typeof value === 'object') {\n if (value instanceof Date) {\n return new Date(value) as unknown as T;\n }\n if (value instanceof RegExp) {\n return new RegExp(value) as unknown as T;\n }\n if (value instanceof Map) {\n return new Map(Array.from(value.entries()).map(([k, v]) => [cloneDeep(k), cloneDeep(v)])) as unknown as T;\n }\n if (value instanceof Set) {\n return new Set(Array.from(value).map(cloneDeep)) as unknown as T;\n }\n const result: any = Object.create(Object.getPrototypeOf(value));\n for (const key of Object.keys(value)) {\n result[key] = cloneDeep((value as any)[key]);\n }\n return result as T;\n }\n return value;\n}\n\nconst clonedResult = reactive((result: QueryPromise<Query>) => cloneDeep(result.value));\n\nconst reifiedQuery = reactive(\n <T extends Query>(\n QueryClass: new () => T,\n ...args: HasRequiredKeys<ExtractType<T['params']>> extends true\n ? [params: Optionalize<Signalize<ExtractType<T['params']>>>]\n : [params?: Optionalize<Signalize<ExtractType<T['params']>>> | undefined]\n ): QueryPromise<T> => {\n const queryResult = fetchQuery(QueryClass, ...args);\n\n return new Proxy(queryResult, {\n get(target, prop, receiver) {\n if (prop === 'value') {\n return clonedResult(target);\n }\n\n return Reflect.get(target, prop, receiver);\n },\n });\n },\n);\n\nconst resultValue = reactive((result: QueryPromise<Query>) => result.value);\n\nexport function useQuery<T extends Query>(\n QueryClass: new () => T,\n ...args: HasRequiredKeys<ExtractType<T['params']>> extends true\n ? [params: Optionalize<Signalize<ExtractType<T['params']>>>]\n : [params?: Optionalize<Signalize<ExtractType<T['params']>>> | undefined]\n): QueryPromise<T> {\n const result = useReactive(reifiedQuery, QueryClass, ...args);\n\n useReactive(resultValue, result);\n\n return result;\n}\n"],"names":["cloneDeep","value","k","v","result","key","clonedResult","reactive","reifiedQuery","QueryClass","args","queryResult","fetchQuery","target","prop","receiver","resultValue","useQuery","useReactive"],"mappings":"kLAMA,SAASA,EAAaC,EAAa,CACjC,GAAI,MAAM,QAAQA,CAAK,EACrB,OAAOA,EAAM,IAAID,CAAS,EAE5B,GAAIC,GAAS,OAAOA,GAAU,SAAU,CACtC,GAAIA,aAAiB,KACnB,OAAO,IAAI,KAAKA,CAAK,EAEvB,GAAIA,aAAiB,OACnB,OAAO,IAAI,OAAOA,CAAK,EAEzB,GAAIA,aAAiB,IACnB,OAAO,IAAI,IAAI,MAAM,KAAKA,EAAM,QAAA,CAAS,EAAE,IAAI,CAAC,CAACC,EAAGC,CAAC,IAAM,CAACH,EAAUE,CAAC,EAAGF,EAAUG,CAAC,CAAC,CAAC,CAAC,EAE1F,GAAIF,aAAiB,IACnB,OAAO,IAAI,IAAI,MAAM,KAAKA,CAAK,EAAE,IAAID,CAAS,CAAC,EAEjD,MAAMI,EAAc,OAAO,OAAO,OAAO,eAAeH,CAAK,CAAC,EAC9D,UAAWI,KAAO,OAAO,KAAKJ,CAAK,EACjCG,EAAOC,CAAG,EAAIL,EAAWC,EAAcI,CAAG,CAAC,EAE7C,OAAOD,CACT,CACA,OAAOH,CACT,CAEA,MAAMK,EAAeC,EAAAA,SAAUH,GAAgCJ,EAAUI,EAAO,KAAK,CAAC,EAEhFI,EAAeD,EAAAA,SACnB,CACEE,KACGC,IAGiB,CACpB,MAAMC,EAAcC,EAAAA,WAAWH,EAAY,GAAGC,CAAI,EAElD,OAAO,IAAI,MAAMC,EAAa,CAC5B,IAAIE,EAAQC,EAAMC,EAAU,CAC1B,OAAID,IAAS,QACJR,EAAaO,CAAM,EAGrB,QAAQ,IAAIA,EAAQC,EAAMC,CAAQ,CAC3C,CAAA,CACD,CACH,CACF,EAEMC,EAAcT,EAAAA,SAAUH,GAAgCA,EAAO,KAAK,EAEnE,SAASa,EACdR,KACGC,EAGc,CACjB,MAAMN,EAASc,EAAAA,YAAYV,EAAcC,EAAY,GAAGC,CAAI,EAE5DQ,OAAAA,EAAAA,YAAYF,EAAaZ,CAAM,EAExBA,CACT"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/react/use-query.ts"],"sourcesContent":["import { useReactive } from 'signalium/react';\nimport { ExtractType, QueryPromise } from '../types.js';\nimport { fetchQuery, Query } from '../query.js';\nimport { HasRequiredKeys, Optionalize, Signalize } from '../type-utils.js';\n\n/**\n * React hook for fetching a query.\n *\n * Returns a structurally-shared deep snapshot of the query's `ReactivePromise`,\n * so memoized children that receive subtrees as props keep stable references\n * when the underlying data is unchanged. Implemented as a thin wrapper around\n * Signalium v3's `useReactive`, which is deep-by-default.\n */\nexport function useQuery<T extends Query>(\n QueryClass: new () => T,\n ...args: HasRequiredKeys<ExtractType<T['params']>> extends true\n ? [params: Optionalize<Signalize<ExtractType<T['params']>>>]\n : [params?: Optionalize<Signalize<ExtractType<T['params']>>> | undefined]\n): QueryPromise<T> {\n return useReactive(() => fetchQuery(QueryClass, ...args)) as QueryPromise<T>;\n}\n"],"names":["useQuery","QueryClass","args","useReactive","fetchQuery"],"mappings":"2JAaO,SAASA,EACdC,KACGC,EAGc,CACjB,OAAOC,EAAAA,YAAY,IAAMC,EAAAA,WAAWH,EAAY,GAAGC,CAAI,CAAC,CAC1D"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../QueryClient-DjKxdY2y.js"),q=require("../QueryAdapter-DUo338ga.js"),T=require("../mutation-CUV5TC93.js");class f extends q.QueryAdapter{_fetch;_baseUrl;constructor(e){super(),this._fetch=e?.fetch??globalThis.fetch,this._baseUrl=e?.baseUrl}async send(e,s){return this.executeRequest(e,s)}async sendNext(e,s){const t=this.resolveFetchNext(e);if(t===void 0)throw new Error("fetchNext is not configured for this query");return this.executeRequest(e,s,t)}hasNext(e){const s=this.resolveFetchNext(e);if(s===void 0)return!1;if(s.url!==void 0&&s.url!==null)return!0;if(s.searchParams!==void 0){const t=Object.keys(s.searchParams);if(t.length===0)return!1;for(const r of t)if(s.searchParams[r]===void 0||s.searchParams[r]===null)return!1;return!0}return!1}resolveFetchNext(e){const t=(e.getFetchNext?e.getFetchNext():void 0)??e.rawFetchNext;if(t===void 0)return;const r={params:e.params??{},result:e.resultData};return{url:t.url!==void 0?i.reifyValue(t.url,r):void 0,searchParams:t.searchParams!==void 0?i.reifyValue(t.searchParams,r):void 0}}buildUrl(e,s){if(e.startsWith("http://")||e.startsWith("https://")||e.startsWith("//"))return e;if(e.startsWith("/")){const t=i.resolveBaseUrl(s)??i.resolveBaseUrl(this._baseUrl)??globalThis.location?.origin;if(!t)throw new Error(`RESTQueryAdapter: cannot resolve URL for path "${e}". Set \`baseUrl\` on the query/mutation, pass it to \`new RESTQueryAdapter({ baseUrl })\`, or use an absolute URL.`);return`${t}${e}`}return e}async executeRequest(e,s,t){const r=t?.url??(e.getPath?e.getPath():e.path),u=e.getMethod?e.getMethod():e.method,a=e.getSearchParams?e.getSearchParams():e.searchParams,o=t?.searchParams?{...a,...t.searchParams}:a,n=e.getBody?e.getBody():e.body,h=e.getRequestOptions?e.getRequestOptions():e.requestOptions;if(!r)throw new Error("RESTQuery requires a path. Define `path` as a field or override `getPath()`.");let l=r;if(o){const m=new URLSearchParams;for(const U in o){const c=o[U];c!=null&&m.append(U,String(c))}const v=m.toString();v&&(l+="?"+v)}const p=h?.baseUrl??e.baseUrl,d=this.buildUrl(l,p),{baseUrl:g,signal:P,...R}=h??{},S=n||e.headers?{...n?{"Content-Type":"application/json"}:void 0,...e.headers}:void 0,b=await this._fetch(d,{method:u,headers:S,body:n?JSON.stringify(n):void 0,signal:s,...R});return e.response=b,b.json()}async sendMutation(e,s){const t=e,r=t.getPath?t.getPath():t.path,u=t.getMethod?t.getMethod():t.method,a=t.getBody?t.getBody():t.body,o=t.getRequestOptions?t.getRequestOptions():t.requestOptions;if(!r)throw new Error("RESTMutation requires a path. Define `path` as a field or override `getPath()`.");const n=o?.baseUrl??t.baseUrl,h=this.buildUrl(r,n),{baseUrl:l,signal:p,...d}=o??{},g={...a!==void 0?{"Content-Type":"application/json"}:{},...t.headers};return(await this._fetch(h,{method:u,headers:g,...a!==void 0?{body:JSON.stringify(a)}:{},signal:s,...d})).json()}}class O extends i.Query{static adapter=f;method="GET";path;baseUrl;searchParams;body;headers;requestOptions;fetchNext;getIdentityKey(){return`${this.method??"GET"}:${this.path??""}`}}class E extends T.Mutation{static adapter=f;path;baseUrl;method="POST";body;headers;requestOptions;getIdentityKey(){return`${this.method??"POST"}:${this.path??""}`}}exports.RESTMutation=E;exports.RESTQuery=O;exports.RESTQueryAdapter=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../QueryClient-QKhS8mhg.js"),q=require("../QueryAdapter-DUo338ga.js"),T=require("../mutation-w67Vpuvw.js");class f extends q.QueryAdapter{_fetch;_baseUrl;constructor(e){super(),this._fetch=e?.fetch??globalThis.fetch,this._baseUrl=e?.baseUrl}async send(e,s){return this.executeRequest(e,s)}async sendNext(e,s){const t=this.resolveFetchNext(e);if(t===void 0)throw new Error("fetchNext is not configured for this query");return this.executeRequest(e,s,t)}hasNext(e){const s=this.resolveFetchNext(e);if(s===void 0)return!1;if(s.url!==void 0&&s.url!==null)return!0;if(s.searchParams!==void 0){const t=Object.keys(s.searchParams);if(t.length===0)return!1;for(const r of t)if(s.searchParams[r]===void 0||s.searchParams[r]===null)return!1;return!0}return!1}resolveFetchNext(e){const t=(e.getFetchNext?e.getFetchNext():void 0)??e.rawFetchNext;if(t===void 0)return;const r={params:e.params??{},result:e.resultData};return{url:t.url!==void 0?i.reifyValue(t.url,r):void 0,searchParams:t.searchParams!==void 0?i.reifyValue(t.searchParams,r):void 0}}buildUrl(e,s){if(e.startsWith("http://")||e.startsWith("https://")||e.startsWith("//"))return e;if(e.startsWith("/")){const t=i.resolveBaseUrl(s)??i.resolveBaseUrl(this._baseUrl)??globalThis.location?.origin;if(!t)throw new Error(`RESTQueryAdapter: cannot resolve URL for path "${e}". Set \`baseUrl\` on the query/mutation, pass it to \`new RESTQueryAdapter({ baseUrl })\`, or use an absolute URL.`);return`${t}${e}`}return e}async executeRequest(e,s,t){const r=t?.url??(e.getPath?e.getPath():e.path),u=e.getMethod?e.getMethod():e.method,a=e.getSearchParams?e.getSearchParams():e.searchParams,o=t?.searchParams?{...a,...t.searchParams}:a,n=e.getBody?e.getBody():e.body,h=e.getRequestOptions?e.getRequestOptions():e.requestOptions;if(!r)throw new Error("RESTQuery requires a path. Define `path` as a field or override `getPath()`.");let l=r;if(o){const m=new URLSearchParams;for(const U in o){const c=o[U];c!=null&&m.append(U,String(c))}const v=m.toString();v&&(l+="?"+v)}const p=h?.baseUrl??e.baseUrl,d=this.buildUrl(l,p),{baseUrl:g,signal:P,...R}=h??{},S=n||e.headers?{...n?{"Content-Type":"application/json"}:void 0,...e.headers}:void 0,b=await this._fetch(d,{method:u,headers:S,body:n?JSON.stringify(n):void 0,signal:s,...R});return e.response=b,b.json()}async sendMutation(e,s){const t=e,r=t.getPath?t.getPath():t.path,u=t.getMethod?t.getMethod():t.method,a=t.getBody?t.getBody():t.body,o=t.getRequestOptions?t.getRequestOptions():t.requestOptions;if(!r)throw new Error("RESTMutation requires a path. Define `path` as a field or override `getPath()`.");const n=o?.baseUrl??t.baseUrl,h=this.buildUrl(r,n),{baseUrl:l,signal:p,...d}=o??{},g={...a!==void 0?{"Content-Type":"application/json"}:{},...t.headers};return(await this._fetch(h,{method:u,headers:g,...a!==void 0?{body:JSON.stringify(a)}:{},signal:s,...d})).json()}}class O extends i.Query{static adapter=f;method="GET";path;baseUrl;searchParams;body;headers;requestOptions;fetchNext;getIdentityKey(){return`${this.method??"GET"}:${this.path??""}`}}class E extends T.Mutation{static adapter=f;path;baseUrl;method="POST";body;headers;requestOptions;getIdentityKey(){return`${this.method??"POST"}:${this.path??""}`}}exports.RESTMutation=E;exports.RESTQuery=O;exports.RESTQueryAdapter=f;
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("../QueryClient-DjKxdY2y.js"),h=require("../QueryAdapter-DUo338ga.js");class p extends h.QueryAdapter{_topics=new Map;fulfillTopic(e,s){const t=this._topics.get(e);if(t===void 0){this._topics.set(e,{status:"fulfilled",data:s});return}t.status==="pending"&&(t.status="fulfilled",t.data=s,t.resolve(s))}rejectTopic(e,s){const t=this._topics.get(e);if(t===void 0){this._topics.set(e,{status:"rejected",error:s});return}t.status==="pending"&&(t.status="rejected",t.error=s,t.reject(s))}clearTopic(e){this._topics.delete(e)}clearAll(){this._topics.clear()}async send(e,s){const t=e;t._topicAdapter=this;const r=t.topic,i=this._topics.get(r);if(i)switch(i.status){case"fulfilled":return i.data;case"rejected":throw i.error;case"pending":return i.promise}let c,o;const n=new Promise((u,l)=>{c=u,o=l});return this._topics.set(r,{status:"pending",promise:n,resolve:c,reject:o}),this.subscribe(r),n}sendMutationEvent(e){this.queryClient.applyMutationEvent(e)}}class f extends d.Query{static adapter=p;getIdentityKey(){return`topic:${this.topic}`}getConfig(){return{staleTime:0,subscribe:()=>()=>{this._topicAdapter?.unsubscribe(this.topic)}}}}exports.TopicQuery=f;exports.TopicQueryAdapter=p;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("../QueryClient-QKhS8mhg.js"),h=require("../QueryAdapter-DUo338ga.js");class p extends h.QueryAdapter{_topics=new Map;fulfillTopic(e,s){const t=this._topics.get(e);if(t===void 0){this._topics.set(e,{status:"fulfilled",data:s});return}t.status==="pending"&&(t.status="fulfilled",t.data=s,t.resolve(s))}rejectTopic(e,s){const t=this._topics.get(e);if(t===void 0){this._topics.set(e,{status:"rejected",error:s});return}t.status==="pending"&&(t.status="rejected",t.error=s,t.reject(s))}clearTopic(e){this._topics.delete(e)}clearAll(){this._topics.clear()}async send(e,s){const t=e;t._topicAdapter=this;const r=t.topic,i=this._topics.get(r);if(i)switch(i.status){case"fulfilled":return i.data;case"rejected":throw i.error;case"pending":return i.promise}let c,o;const n=new Promise((u,l)=>{c=u,o=l});return this._topics.set(r,{status:"pending",promise:n,resolve:c,reject:o}),this.subscribe(r),n}sendMutationEvent(e){this.queryClient.applyMutationEvent(e)}}class f extends d.Query{static adapter=p;getIdentityKey(){return`topic:${this.topic}`}getConfig(){return{staleTime:0,subscribe:()=>()=>{this._topicAdapter?.unsubscribe(this.topic)}}}}exports.TopicQuery=f;exports.TopicQueryAdapter=p;
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ "use strict";const C=require("signalium"),S=require("signalium/utils"),qt=require("./shared-Ct5zKrt4.js"),St=require("./stores/sync.js");var P=(e=>(e.Always="always",e.Online="online",e.OfflineFirst="offlineFirst",e))(P||{}),d=(e=>(e[e.UNDEFINED=1]="UNDEFINED",e[e.NULL=2]="NULL",e[e.NUMBER=4]="NUMBER",e[e.STRING=8]="STRING",e[e.BOOLEAN=16]="BOOLEAN",e[e.OBJECT=32]="OBJECT",e[e.ARRAY=64]="ARRAY",e[e.ID=128]="ID",e[e.RECORD=256]="RECORD",e[e.UNION=512]="UNION",e[e.ENTITY=1024]="ENTITY",e[e.HAS_FORMAT=4096]="HAS_FORMAT",e[e.IS_EAGER_FORMAT=8192]="IS_EAGER_FORMAT",e[e.PARSE_RESULT=16384]="PARSE_RESULT",e[e.LIVE=32768]="LIVE",e))(d||{});const U=Symbol("array"),V=Symbol("record"),dt=Symbol("QUERY_ID");var H=(e=>(e[e.Array=0]="Array",e[e.Value=1]="Value",e))(H||{});class j{type;entityDefs;constraintFieldRefs;sort;valueType;onCreate;onUpdate;onDelete;constructor(t,i,n,s,r,o,a,c){this.type=t,this.entityDefs=i,this.constraintFieldRefs=n,this.sort=s,this.valueType=r,this.onCreate=o,this.onUpdate=a,this.onDelete=c}static array(t,i,n){return new j(0,t,i,n,void 0,void 0,void 0,void 0)}static value(t,i,n,s,r,o){return new j(1,t,i,void 0,n,s,r,o)}}const O=new WeakMap;function F(e){return O.get(e)}var J=(e=>(e[e.Query=0]="Query",e[e.Entity=1]="Entity",e))(J||{});class Ee{constructor(t,i,n){this._onEvict=i,this._intervalId=setInterval(this._tick,t*6e4*n)}_currentFlush=new Map;_nextFlush=new Map;_intervalId;schedule(t,i){this._nextFlush.set(t,i)}cancel(t){this._currentFlush.delete(t),this._nextFlush.delete(t)}_tick=()=>{const{_currentFlush:t,_nextFlush:i,_onEvict:n}=this;for(const[s,r]of t)n(s,r);this._currentFlush=i,this._nextFlush=new Map};destroy(){clearInterval(this._intervalId)}}class Ut{_buckets=new Map;_nextTickEntries=new Map;_nextTickScheduled=!1;_onEvict;_multiplier;constructor(t,i=1){this._onEvict=t,this._multiplier=i}schedule(t,i,n){if(i===1/0)return;if(i===0){const{_nextTickEntries:o}=this;o.set(t,n),this._nextTickScheduled||(this._nextTickScheduled=!0,setTimeout(this._flushNextTick,0));return}const{_buckets:s}=this;let r=s.get(i);r||(r=new Ee(i,this._onEvict,this._multiplier),s.set(i,r)),r.schedule(t,n)}cancel(t,i){if(i!==1/0){if(i===0){this._nextTickEntries.delete(t);return}this._buckets.get(i)?.cancel(t)}}_flushNextTick=()=>{const{_nextTickEntries:t,_onEvict:i}=this;this._nextTickScheduled=!1;for(const[n,s]of t)i(n,s);t.clear()};destroy(){const{_buckets:t,_nextTickEntries:i}=this;for(const n of t.values())n.destroy();t.clear(),i.clear()}}class Vt{schedule(t,i,n){}cancel(t,i){}destroy(){}}const W=Symbol("fieldRef"),M=Symbol("fieldRefPath"),lt=Symbol("DEFINITION_TARGET"),z=Symbol("CANCEL_PROXY"),be=/\[([^\]]+)\]/g;function Kt(e){const t={[W]:!0,[M]:e};return new Proxy(t,Ce)}const Ce={get(e,t){if(t===W)return!0;if(t===M)return e[M];if(t===Symbol.toPrimitive||t==="toString"||t==="valueOf"){const n=e[M];return()=>`[${n.join(".")}]`}if(typeof t=="symbol")return;const i=e[M];return Kt([...i,t])},has(e,t){return t===W||t===M}};function $t(e){return typeof e=="object"&&e!==null&&e[W]===!0}function Qt(e){return e[M]}function ht(e){return new Proxy(e,{set(t,i,n){return t[i]=n,!0},get(t,i){return i===lt?t:i===z?()=>{}:typeof i=="symbol"?t[i]:Kt([i])}})}function Bt(e){const t=e[lt];e[z]();const i={};for(const r of Object.getOwnPropertyNames(t))i[r]=t[r];const n={};let s=Object.getPrototypeOf(t);for(;s&&s!==Object.prototype;){for(const r of Object.getOwnPropertyNames(s)){if(r==="constructor")continue;const o=Object.getOwnPropertyDescriptor(s,r);typeof o.value=="function"&&!(r in n)&&(n[r]=o.value)}s=Object.getPrototypeOf(s)}return{fields:i,methods:n}}function yt(e,t){let i=t;for(const n of e){if(i==null)return;i=i[n]}return i}function xe(e,t){return e.replace(be,(i,n)=>{const s=n.split("."),r=yt(s,t);return r!=null?encodeURIComponent(String(r)):""})}function K(e,t){if($t(e))return yt(Qt(e),t);if(typeof e=="string")return xe(e,t);if(Array.isArray(e))return e.map(i=>K(i,t));if(typeof e=="object"&&e!==null&&Object.getPrototypeOf(e)===Object.prototype){const i={};for(const n of Object.keys(e))i[n]=K(e[n],t);return i}return e}function st(e,t,i){const n=e.fields,s=e.methods,r={params:t},o={};for(const[a,c]of Object.entries(n))o[a]=K(c,r);o.params=t,o.context=i;for(const[a,c]of Object.entries(s))o[a]=c.bind(o);return o}class X{static cache;constructor(){return ht(this)}}const Yt=Object.entries,rt=Object.keys;function At(e){return typeof e=="number"?e|d.UNDEFINED:e instanceof _?(e.mask&d.UNDEFINED)!==0?e:_.cloneWith(e,d.UNDEFINED):e}function Oe(e){return e instanceof _&&(e.mask&d.OBJECT)!==0&&(e.mask&(d.ENTITY|d.ARRAY|d.UNION|d.RECORD|d.LIVE))===0}function Gt(e,t,i){const n=new Set;for(const r of e)if(r!==void 0)for(const o of Object.keys(r))n.add(o);const s={};for(const r of n){let o=0,a;const c=[];let f=!0;for(const l of e){const u=l?.[r];u!==void 0?(o++,a===void 0&&(a=u),Oe(u)?c.push(u.shape):(f=!1,c.push(void 0))):(f=!1,c.push(void 0))}if(f&&o>0){const l=Gt(c,t),u=new _(d.OBJECT,l);s[r]=o<t?At(u):u}else s[r]=o<t?At(a):a}return s}class _{mask;shape;typenameField=void 0;typenameValue=void 0;idField=void 0;values=void 0;_methods=void 0;_entityConfig=void 0;_entityClass=void 0;_entityCache=void 0;_liveConfig=void 0;constructor(t,i,n,s,r,o){this.mask=t,this.shape=i,this.values=n,this.typenameField=s,this.typenameValue=r,this.idField=o}static merge(t){if(t.length===1)return t[0];const i=t.length,n=t.map(c=>c.shape);t[0].typenameValue;const s=Gt(n,i);let r,o,a;for(const c of t){if(r===void 0&&c.idField!==void 0)r=c.idField;else if(r!==void 0&&c.idField!==void 0&&c.idField!==r)throw new Error(`[fetchium] Entity typename '${c.typenameValue}' has conflicting id fields: '${String(r)}' vs '${String(c.idField)}'`);o===void 0&&(o=c.typenameField),a===void 0&&(a=c.typenameValue)}return new _(d.ENTITY|d.OBJECT,s,void 0,o,a,r)}static cloneWith(t,i){const n=new _(i|t.mask,t.shape,t.values,t.typenameField,t.typenameValue,t.idField);return n._methods=t._methods,n._entityConfig=t._entityConfig,n._entityClass=t._entityClass,n._entityCache=t._entityCache,n._liveConfig=t._liveConfig,n}}class Z extends Set{lowercaseMap;constructor(t){super(t),this.lowercaseMap=new Map;for(const i of t)if(typeof i=="string"){const n=i.toLowerCase(),s=this.lowercaseMap.get(n);if(s!==void 0)throw new Error(`Case-insensitive enum cannot have multiple values with the same lowercase form: '${s}' and '${i}' both become '${n}'`);this.lowercaseMap.set(n,i)}}has(t){return this.get(t)!==void 0}get(t){if(typeof t=="string")return this.lowercaseMap.get(t.toLowerCase());if(super.has(t))return t}}const Re=1128875347;S.registerCustomHash(Z,e=>{let t=Re;for(const i of e)t+=S.hashValue(i);return t>>>0});function pt(e,t){return new _(e,t)}function Se(e){return pt(d.ARRAY,e)}function Ae(e){return pt(d.RECORD|d.OBJECT,e)}function De(e){return pt(d.PARSE_RESULT,e)}function Wt(e,t){let i=e,n,s,r;for(const[o,a]of Yt(t))switch(typeof a){case"number":if((a&d.ID)!==0){if(n!==void 0)throw new Error(`Duplicate id field: ${o}`);n=o}break;case"string":if(s!==void 0&&s!==o)throw new Error(`Duplicate typename field: ${o}`);s=o,r=a;break;case"object":if(a instanceof Z||a instanceof Set)break;a.mask&d.LIVE&&(i|=d.LIVE);break}return new _(i,t,void 0,s,r,n)}function Ne(e){return Wt(d.OBJECT,e)}function Dt(e,t,i){const n=e.mask;if((n&d.UNION)!==0){const s=e;if(s.typenameField!==void 0){if(i!==void 0&&i!==s.typenameField)throw new Error(`Union typename field conflict: Cannot merge unions with different typename fields ('${i}' vs '${s.typenameField}')`);i=s.typenameField}const r=s.shape;if(r!==void 0)for(const o of[...rt(r),U,V]){const a=r[o];if(t[o]!==void 0&&t[o]!==a)throw new Error(`Union merge conflict: Duplicate typename value '${String(o)}' found when merging nested unions (${String(t[o])} vs ${String(a)})`);t[o]=a}}else if((n&d.ARRAY)!==0){if(t[U]!==void 0)throw new Error("Array shape already defined");t[U]=e.shape}else if((n&d.RECORD)!==0){if(t[V]!==void 0)throw new Error("Record shape already defined");t[V]=e.shape}else{const s=e.typenameField,r=e.typenameValue;if(r===void 0)throw new Error("Object definitions must have a typename to be in a union with other objects, records, or arrays");if(i!==void 0&&s!==i)throw new Error("Object definitions must have the same typename field to be in the same union");i=s,t[r]=e}return i}function gt(...e){const t=e;let i=0,n=0,s,r,o,a,c=0;for(const l of t){if(typeof l=="number"){i|=l;continue}if(l instanceof Set){if(r===void 0)r=new Set(l);else for(const u of l)r.add(u);continue}if(n++,c|=l.mask,n===1){s=l;continue}n===2&&(o=Object.create(null),a=Dt(s,o,a)),a=Dt(l,o,a)}if(n===0)return r===void 0?i:i===0?r:new _(i|d.UNION,void 0,r);if(n===1)return _.cloneWith(s,i);const f=i|c|d.UNION;return new _(f,o,r,a)}function vt(e,t,i){const n=e;if(typeof n=="number")return n|t;if(n instanceof Set)return gt(e,t);let s=i.get(n);return s===void 0&&(s=_.cloneWith(n,t),i.set(n,s)),s}const Ie=new WeakMap,Me=new WeakMap,ke=new WeakMap;function Fe(e){return vt(e,d.UNDEFINED|d.NULL,ke)}function Te(e){return vt(e,d.UNDEFINED,Ie)}function Pe(e){return vt(e,d.NULL,Me)}function je(e){return e}function Le(e){return new Set([e])}const zt=((...e)=>new Set(e));zt.caseInsensitive=(...e)=>new Z(e);const Ht=16;let qe=0;const ot=[],Jt=[],Xt=new Map,tt=new WeakSet;class ${_raw;_formatted;_parsed;_formatId;constructor(t,i,n){this._raw=t,this._formatId=i,n?(this._formatted=ot[i](t),this._parsed=!0):this._parsed=!1,tt.add(this)}getValue(){return this._parsed||(this._formatted=ot[this._formatId](this._raw),this._parsed=!0),this._formatted}toJSON(){return this._parsed?Jt[this._formatId](this._formatted):this._raw}}function Ue(e){const t=Xt.get(e);if(t===void 0)throw new Error(`Format ${e} not registered`);return t}function _t(e,t,i,n,s){const r=qe++;ot[r]=i,Jt[r]=n;const o=s?.eager??!0,c=r<<Ht|t|d.HAS_FORMAT|(o?d.IS_EAGER_FORMAT:0);Xt.set(e,c)}_t("date",d.STRING,e=>{const t=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(!t)throw new Error(`Invalid date string: ${e}. Expected YYYY-MM-DD format.`);const[,i,n,s]=t,r=new Date(Date.UTC(parseInt(i,10),parseInt(n,10)-1,parseInt(s,10)));if(isNaN(r.getTime()))throw new Error(`Invalid date string: ${e}`);return r},e=>{const t=e.getUTCFullYear(),i=String(e.getUTCMonth()+1).padStart(2,"0"),n=String(e.getUTCDate()).padStart(2,"0");return`${t}-${i}-${n}`});_t("date-time",d.STRING,e=>{const t=new Date(e);if(isNaN(t.getTime()))throw new Error(`Invalid date-time string: ${e}`);return t},e=>e.toISOString());const Nt=new WeakMap;function L(e){let t=Nt.get(e);if(t===void 0){const i=new e,n=i[lt]??i;i[z]&&i[z]();const s={};for(const[f,l]of Yt(n))s[f]=l;const r=Object.getPrototypeOf(e.prototype);if(r!=null){const f=r.constructor;if(f!==X&&typeof f=="function"){const u=L(f).shape;for(const y of rt(u))if(y in s&&s[y]!==u[y])throw new Error(`Cannot extend: field '${y}' already exists in type definition`)}}const o={},a=e.prototype;for(const f of Object.getOwnPropertyNames(a))f!=="constructor"&&typeof a[f]=="function"&&(o[f]=a[f]);t=Wt(d.ENTITY|d.OBJECT,s),t._entityClass=e,rt(o).length>0&&(t._methods=o),typeof o.__subscribe=="function"&&(t._entityConfig={hasSubscribe:!0});const c=e;c.cache&&(t._entityCache=c.cache),Nt.set(e,t)}return t}function Ve(e){return L(e)}function Zt(e,t){if(t==null)return;const i=new Map;if(Array.isArray(t))for(const n of t){const[s,r]=n,a=L(s).typenameValue;if(a===void 0)continue;const c=[];for(const[f,l]of Object.entries(r))c.push([f,l]);c.length>0&&i.set(a,c)}else{const s=Object.entries(t);if(s.length===0)return;const r=s.map(([o,a])=>[o,a]);for(const o of e){const a=o.typenameValue;a!==void 0&&i.set(a,r)}}return i.size>0?i:void 0}function te(e){return Array.isArray(e)?e.map(t=>L(t)):[L(e)]}function Ke(e,t){const i=te(e),n=i.length===1?i[0]:gt(...i.map(o=>o)),s=d.ARRAY|d.LIVE,r=new _(s,n);return r._liveConfig=j.array(i,Zt(i,t?.constraints),t?.sort),r}function $e(e,t,i){const n=te(t),s=e,r=d.LIVE,o=new _(r,void 0);return o._liveConfig=j.value(n,Zt(n,i?.constraints),s,i.onCreate,i.onUpdate,i.onDelete),o}const ee={format:Ue,typename:je,const:Le,enum:zt,id:d.ID|d.STRING|d.NUMBER,string:d.STRING,number:d.NUMBER,boolean:d.BOOLEAN,null:d.NULL,undefined:d.UNDEFINED,array:Se,object:Ne,record:Ae,union:gt,nullish:Fe,optional:Te,nullable:Pe,result:De,entity:Ve,liveArray:Ke,liveValue:$e};function q(e,t,i){return new TypeError(`Validation error at ${e}`)}const ie=Array.isArray;function It(e){if(e===null)return d.NULL;switch(typeof e){case"number":return d.NUMBER;case"string":return d.STRING;case"boolean":return d.BOOLEAN;case"undefined":return d.UNDEFINED;case"object":return ie(e)?d.ARRAY:d.OBJECT;default:throw new Error(`Invalid type: ${typeof e}`)}}function Qe(e){return T(e)}function T(e){if(e===null||typeof e!="object")return e;if(ie(e))return e.map(i=>T(i));if(e instanceof Date)return new Date(e.getTime());if(e instanceof Map){const i=new Map;for(const[n,s]of e)i.set(T(n),T(s));return i}if(e instanceof Set){const i=new Set;for(const n of e)i.add(T(n));return i}const t={};for(const i of Object.keys(e))t[i]=T(e[i]);return t}const mt=Object.entries,Be=()=>{};class at{queryClient=void 0;preloadedEntities=void 0;warn=Be;isPartialEvent=!1;seen=void 0;seenByKey=void 0;reset(t,i,n,s=!1){this.queryClient=t,this.preloadedEntities=i,this.warn=n,this.isPartialEvent=s,t!==void 0&&(this.seen===void 0?(this.seen=new Map,this.seenByKey=new Map):(this.seen.clear(),this.seenByKey.clear()))}}function ne(e,t,i){return k(e,t,i,"")}function Ye(e,t,i){return wt(e,t,i)}function Mt(e,t,i,n){const s=e>>Ht;if((e&d.IS_EAGER_FORMAT)!==0)try{return new $(t,s,!0)}catch(o){if((e&d.UNDEFINED)!==0){i.warn("Invalid formatted value for optional type, defaulting to undefined",{value:t,path:n,error:o instanceof Error?o.message:String(o)});return}throw o}return new $(t,s,!1)}function k(e,t,i,n){const s=t;if(s instanceof Z){const c=s.get(e);if(c===void 0)throw q(n);return c}if(s instanceof Set){if(!s.has(e))throw q(n);return e}if(typeof s=="string"){if(e==null)return s;if(e!==s)throw q(n);return e}if(typeof s=="number"){const c=It(e);if((s&c)===0){if((s&d.UNDEFINED)!==0){i.warn("Invalid value for optional type, defaulting to undefined",{value:e,path:n});return}throw q(n)}return(s&d.HAS_FORMAT)!==0&&e!==null&&e!==void 0?Mt(s,e,i,n):e}const r=s.mask,o=s._liveConfig;if(o!==void 0&&o.type===H.Value)return o.valueType!==void 0?k(e,o.valueType,i,n):e;if((r&d.PARSE_RESULT)!==0)try{return{success:!0,value:k(e,s.shape,i,n)}}catch(c){return{success:!1,error:c instanceof Error?c:new Error(String(c))}}const a=It(e);if((r&a)===0&&!s.values?.has(e)){if((r&d.UNDEFINED)!==0){i.warn("Invalid value for optional type, defaulting to undefined",{value:e,path:n});return}throw q(n)}return a<d.OBJECT?(r&d.HAS_FORMAT)!==0&&e!==null&&e!==void 0?Mt(r,e,i,n):e:(r&d.UNION)!==0?Ge(a,e,s,i,n):a===d.ARRAY?se(e,s.shape,i,n):(r&d.RECORD)!==0?re(e,s.shape,i,n):(r&d.ENTITY)!==0&&i.queryClient!==void 0?wt(e,s,i):oe(e,s,i,n)}function Ge(e,t,i,n,s){if(e===d.ARRAY){const r=i.shape[U];return r===void 0||typeof r=="number"?t:se(t,r,n,s)}else{const r=i.typenameField,o=r?t[r]:void 0;if(o===void 0||typeof o!="string"){const c=i.shape[V];if(c===void 0)throw new Error(`Typename field '${r}' is required for union discrimination but was not found in the data`);return re(t,c,n,s)}const a=i.shape[o];if(a===void 0||typeof a=="number")throw new Error(`Unknown typename '${o}' in union`);return a.mask&d.ENTITY&&n.queryClient!==void 0?wt(t,a,n):oe(t,a,n,s)}}function se(e,t,i,n){const s=[];for(let r=0;r<e.length;r++)try{s.push(k(e[r],t,i,`${n}[${r}]`))}catch(o){i.warn("Failed to parse array item, filtering out",{index:r,value:e[r],error:o instanceof Error?o.message:String(o)})}return s}function re(e,t,i,n){for(const[s,r]of mt(e))e[s]=k(r,t,i,`${n}["${s}"]`);return e}function oe(e,t,i,n){if(O.has(e))return e;const s=t.shape;for(const[r,o]of mt(s))e[r]=k(e[r],o,i,`${n}.${r}`);return e}function wt(e,t,i){const n=i.queryClient,s=i.preloadedEntities;let r,o;if(s!==void 0)r=e.__entityRef,o=r;else{const p=e[t.idField];if(p==null||typeof p!="string"&&typeof p!="number")throw new Error(`Entity id must be a string or number: ${t.typenameValue} (got ${typeof p})`);o=p,r=S.hashValue([t.typenameValue,o])}const a=i.seenByKey.get(r);if(a!==void 0)return a.data;if(s!==void 0){const g=n.entityMap.getEntity(r)?.data??s.get(r);if(g===void 0)throw new Error(`Cached entity ${r} not found in preloaded map`);e=g}const c={};typeof t.idField=="symbol"&&(c[t.idField]=o);const f=n.entityMap.getEntity(r),l=i.isPartialEvent&&f!==void 0,u={key:r,shape:t,data:c,rawKeys:l?new Set(Object.keys(e)):void 0};i.seen.set(c,u),i.seenByKey.set(r,u);const y=`[[${t.typenameValue}:${o}]]`,v=t.shape;for(const[p,g]of mt(v))l&&!(p in e)||(c[p]=k(e[p],g,i,`${y}.${p}`));return c}function We(e,t){return ze(e,t.shape,t.typenameField)}function ze(e,t,i){if(t===void 0)return!0;for(const n of Object.keys(t)){if(n===i)continue;const s=t[n];if(s instanceof _){if((s.mask&d.UNDEFINED)!==0)continue;if(!(n in e)||e[n]===void 0)return!1}else if(typeof s=="number"){if((s&d.UNDEFINED)!==0)continue;if(!(n in e)||e[n]===void 0)return!1}else if(!(n in e)||e[n]===void 0)return!1}return!0}const He=Object.prototype,G=new WeakMap;function N(e){if(typeof e!="object"||e===null)return e;if(tt.has(e))return N(e.getValue());if(O.has(e))return e;if(Array.isArray(e)){let t=G.get(e);return t===void 0&&(t=new Proxy(e,Je),G.set(e,t)),t}if(Object.getPrototypeOf(e)===He){let t=G.get(e);return t===void 0&&(t=new Proxy(e,Xe),G.set(e,t)),t}return e}const Je={get(e,t,i){if(typeof t=="string"){const n=Number(t);if(Number.isInteger(n)&&n>=0&&n<e.length)return N(e[n])}return Reflect.get(e,t,i)},set(){return!1},deleteProperty(){return!1}},Xe={get(e,t,i){return typeof t=="string"?N(e[t]):Reflect.get(e,t,i)},set(){return!1},deleteProperty(){return!1},has(e,t){return t in e},ownKeys(e){return Reflect.ownKeys(e)},getOwnPropertyDescriptor(e,t){return Object.getOwnPropertyDescriptor(e,t)}},Ze=(e,t,i)=>{const n=e,s=Object.keys(n),r=t!==null&&typeof t=="object"&&!Array.isArray(t)?t:void 0;let o=!r||Object.keys(r).length!==s.length;const a={};for(let c=0;c<s.length;c++){const f=s[c],l=n[f];let u;typeof l=="function"?u=l:u=i(l,r?.[f]),a[f]=u,!o&&u!==r?.[f]&&(o=!0)}return o?a:r},kt=new WeakSet;function ae(e){const t=e.prototype;kt.has(t)||(kt.add(t),S.registerCustomSnapshot(e,Ze))}ae(X);class ti{_notifier;_queryClient;_proxies=new Map;key;typename;id;idField;data;refCount=0;entityRefs;liveCollections=[];satisfiedDefs=new WeakSet;parseId=-1;_entityCache;_extraMethods;_extraGetters;constructor(t,i,n,s,r,o){this._notifier=C.notifier(),this._queryClient=o,this.key=t,this.typename=i,this.id=n,this.idField=s,this.data=r,this.entityRefs=void 0}retain(){this.refCount++;const t=this._entityCache?.gcTime;t!==void 0&&this._queryClient.gcManager.cancel(this.key,t)}release(){if(--this.refCount>0||this.refCount<0)return;const t=this._entityCache?.gcTime;t!==void 0?this._queryClient.gcManager.schedule(this.key,t,J.Entity):this.evict()}evict(){const t=this.liveCollections.slice();this.liveCollections.length=0;for(const n of t)n.destroy();this._queryClient.entityMap.remove(this.key);const i=this.entityRefs;if(this.entityRefs=void 0,i)for(const n of i.keys())n.release()}setChildRefs(t,i){const n=this.entityRefs;if(t!==void 0&&t.size>0)for(const s of t.keys())(n===void 0||!n.has(s))&&s.retain();if(n!==void 0&&n.size>0)for(const s of n.keys())(t===void 0||!t.has(s))&&s.release();this.entityRefs=t,i&&this.save()}addChildRef(t){this.entityRefs===void 0&&(this.entityRefs=new Map);const i=this.entityRefs.get(t)??0;this.entityRefs.set(t,i+1),i===0&&t.retain(),this.save()}removeChildRef(t){if(this.entityRefs===void 0)return;const i=this.entityRefs.get(t);i!==void 0&&(i<=1?(this.entityRefs.delete(t),t.release()):this.entityRefs.set(t,i-1),this.save())}getProxy(t){const i=t;let n=this._proxies.get(i);return n===void 0&&(n=ii(this,this.key,t,this._notifier,this._queryClient),this._proxies.set(i,n)),n}get proxy(){return this._proxies.values().next().value}satisfiesDef(t){return this.satisfiedDefs.has(t)?!0:We(this.data,t)?(this.satisfiedDefs.add(t),!0):!1}save(){this._queryClient.entityMap.save(this)}notify(){this._notifier.notify()}consume(){this._notifier.consume()}}function ei(e,t,i){const n=[];for(const s of e){if(typeof s!="object"||s===null)continue;const r=O.get(s);if(r===void 0)continue;const o=i.entityMap.getEntity(r);o!==void 0&&o.satisfiesDef(t)&&n.push(s)}return n}function ii(e,t,i,n,s){const r=i.shape??{},o=i,a=o._methods,c=o._entityClass,f=o._entityConfig,l=c?c.prototype:X.prototype;c!==void 0&&ae(c),i.typenameField;const u=new Map,y=new Map,v=()=>({__entityRef:t});let p;f?.hasSubscribe&&a&&"__subscribe"in a&&(p=C.relay(E=>{const h=b=>{b.__eventSource=t,s.applyMutationEvent(b)},m=a.__subscribe.call(g,h);return E.value=g,m}));let g;const w=Object.keys(r);if(w.includes("__typename")||w.push("__typename"),a)for(const E of Object.keys(a))w.includes(E)||w.push(E);let I,R=w;function Y(){const E=e._extraMethods;if(E!==I){if(I=E,R=w.slice(),E!==void 0)for(const m of Object.keys(E))R.includes(m)||R.push(m);const h=e._extraGetters;if(h!==void 0)for(const m of Object.keys(h))R.includes(m)||R.push(m)}return R}const A={getPrototypeOf(){return l},get(E,h){if(typeof h=="symbol")return;if(h==="toJSON")return v;if(h==="__context")return s.getContext();if(h==="__typename")return e.typename;if(p?.value,n.consume(),typeof h=="string"){const b=e._extraGetters;if(b!==void 0&&h in b)return b[h]();const D=e._extraMethods;if(D!==void 0&&h in D){let x=u.get(h);return x||(x=D[h].bind(g),u.set(h,x)),x}if(a&&h in a){let x=u.get(h);return x||(x=C.reactiveMethod(g,a[h].bind(g)),u.set(h,x)),x}}const m=e.data[h];if(typeof m=="object"&&m!==null&&tt.has(m))return N(m.getValue());if(Array.isArray(m)&&typeof h=="string"){const b=r[h];if(b instanceof _&&(b.mask&d.ARRAY)!==0){const D=b.shape;if(D instanceof _&&(D.mask&d.ENTITY)!==0){const x=D.typenameValue;if(x!==void 0){const Ot=s.getEntityDefsForTypename(x);if(Ot!==void 0&&Ot.length>1){const et=y.get(h);if(et!==void 0&&et.source===m)return N(et.filtered);const Rt=ei(m,D,s);return y.set(h,{source:m,filtered:Rt}),N(Rt)}}}}return N(m)}return N(m)},set(){return!1},has(E,h){if(h==="__typename")return!0;if(typeof h=="string"){const m=e._extraGetters;if(m&&h in m)return!0;const b=e._extraMethods;if(b&&h in b||a&&h in a)return!0}return h in r},ownKeys(){return Y()},getOwnPropertyDescriptor(E,h){if(h==="__typename")return{enumerable:!0,configurable:!0,value:e.typename,writable:!1};if(h in r)return{enumerable:!0,configurable:!0,value:A.get(E,h,g),writable:!1};if(typeof h=="string"){const m=e._extraGetters;if(m&&h in m)return{enumerable:!0,configurable:!0,value:A.get(E,h,g),writable:!1};const b=e._extraMethods;if(b&&h in b)return{enumerable:!0,configurable:!0,value:A.get(E,h,g),writable:!1};if(a&&h in a)return{enumerable:!1,configurable:!0,value:A.get(E,h,g),writable:!1}}}};return g=new Proxy({},A),O.set(g,t),C.setScopeOwner(g,s),g}class ni{instances=new Map;persistEntity;constructor(t){this.persistEntity=t}hasEntity(t){return this.instances.has(t)}getEntity(t){return this.instances.get(t)}getOrCreateEntity(t,i,n,s){let r=this.instances.get(t);if(r===void 0){const o=n.idField;if(o===void 0)throw new Error(`Entity id field is required ${n.typenameValue}`);const a=i[o];if(typeof a!="string"&&typeof a!="number")throw new Error(`Entity id must be string or number: ${n.typenameValue}`);const c=n;r=new ti(t,n.typenameValue,a,o,i,s),r._entityCache=c._entityCache,this.instances.set(t,r)}return r.parseId=s.currentParseId,r}remove(t){this.instances.delete(t)}save(t){let i;if(t.entityRefs){i=new Set;for(const n of t.entityRefs.keys())i.add(n.key)}this.persistEntity(t.key,t.data,i)}}class Et{onlineSignal;manualOverride=void 0;eventListenersAttached=!1;constructor(t){const i=t??this.detectOnlineStatus();this.onlineSignal=C.signal(i),this.canAttachListeners()&&this.attachEventListeners()}get isOnline(){return this.manualOverride!==void 0?this.manualOverride:this.onlineSignal.value}setNetworkStatus(t){this.manualOverride=t,this.onlineSignal.value=t}clearManualOverride(){this.manualOverride=void 0,this.onlineSignal.value=this.detectOnlineStatus()}getOnlineSignal(){return this.onlineSignal}detectOnlineStatus(){return typeof navigator<"u"&&"onLine"in navigator?navigator.onLine:!0}canAttachListeners(){return typeof window<"u"&&typeof window.addEventListener=="function"}destroy(){this.eventListenersAttached&&this.handleOnline&&this.handleOffline&&(window.removeEventListener("online",this.handleOnline),window.removeEventListener("offline",this.handleOffline),this.eventListenersAttached=!1)}handleOnline=void 0;handleOffline=void 0;attachEventListeners(){this.eventListenersAttached||(this.handleOnline=()=>{this.manualOverride===void 0&&(this.onlineSignal.value=!0)},this.handleOffline=()=>{this.manualOverride===void 0&&(this.onlineSignal.value=!1)},window.addEventListener("online",this.handleOnline),window.addEventListener("offline",this.handleOffline),this.eventListenersAttached=!0)}}class bt{static onlineSignal=C.signal(!0);get isOnline(){return!0}setNetworkStatus(t){}clearManualOverride(){}getOnlineSignal(){return bt.onlineSignal}destroy(){}}const ce=new Et,si=C.context(ce);function Ct(e,t=typeof window>"u"){let i;e===!1?i=0:e===void 0||e===!0?i=t?0:3:typeof e=="number"?i=e:i=e.retries;const n=typeof e=="object"&&e.retryDelay?e.retryDelay:s=>1e3*Math.pow(2,s);return{retries:i,retryDelay:n}}class ri{static cache;static adapter;params;config;constructor(){return ht(this)}}const Ft=new WeakMap;class B{constructor(t,i){this.captured=i,this.statics=t}statics;createExecutionContext(t,i){return st(this.captured,t,i)}resolveOptions(t){const{methods:i}=this.captured,n=i.getConfig?i.getConfig.call(t):t.config,s=Ct(n?.retry);return{config:n,retryConfig:s}}static for(t){let i=Ft.get(t);if(i!==void 0)return i;const n=new t,s=Bt(n),r=String(s.methods.getIdentityKey.call(s.fields)),o=s.fields.result,a=o instanceof _?o:ee.object(o),c=(a.mask&d.ENTITY)!==0,f=t.cache,l=s.fields.fetchNext,u=t.adapter;if(!u)throw new Error(`Query class "${t.name}" must define a static \`adapter\` property. Extend RESTQuery (from fetchium/rest) or set \`static adapter = MyAdapter\` on your query class.`);const y=typeof u.prototype.sendNext=="function",v=c?a:new _(d.ENTITY|d.OBJECT,a.shape,void 0,void 0,r,dt);return i=new B({id:r,shape:v,cache:f,rawFetchNext:l,hasSendNext:y,isEntityResult:c,adapterClass:u},s),Ft.set(t,i),i}}const oi=(e,t)=>{const i=B.for(e);return xt(i,t)};function ai(e,...t){const i=B.for(e),n=C.getContext(we);if(n===void 0)throw new Error("QueryClient not found");const s=t[0];return n.getQuery(i,s)}function ct(e){if(e.reason!==void 0)return e.reason;if(typeof DOMException<"u")return new DOMException("The operation was aborted","AbortError");const t=new Error("The operation was aborted");return t.name="AbortError",t}function fe(e,t){return new Promise((i,n)=>{if(t?.aborted){n(ct(t));return}const s=setTimeout(i,e);t?.addEventListener("abort",()=>{clearTimeout(s),n(ct(t))},{once:!0})})}async function ft(e,t,i){const n=Math.max(0,t.retries);let s;for(let r=0;r<=n;r++){if(i?.aborted)throw ct(i);try{return await e()}catch(o){if(s=o,r>=n)throw o;await fe(t.retryDelay(r),i)}}throw s}class ci{def;queryKey;storageKey=-1;relay;queryClient;initialized=!1;updatedAt=void 0;params=void 0;unsubscribe=void 0;_relayState=void 0;_isActive=!1;wasPaused=!1;currentParams=void 0;debounceTimer=void 0;config=void 0;retryConfig=Ct(void 0);_abortController=void 0;_executionCtx=void 0;_executionCtxKey=-1;rootEntity;_extraMethods={};_queryId=0;get key(){return this.queryKey}get relayState(){return this._relayState}constructor(t,i,n,s){this.def=t,this.queryClient=i,this.queryKey=n,this.params=s,this._extraMethods={__refetch:this.refetch},t.statics.hasSendNext&&(this._extraMethods.__fetchNext=this.fetchNext);const r=Lt(s);this._queryId=r!==void 0?S.hashValue(r):0,this.relay=C.relay(o=>{this._relayState=o;const a=()=>{this._isActive=!1,clearTimeout(this.debounceTimer),this.debounceTimer=void 0,this._abortController?.abort(),this._abortController=void 0,this._fetchNextAbort?.abort(),this._fetchNextAbort=void 0,this._fetchNextPromise=void 0,this.unsubscribe?.(),this.unsubscribe=void 0;const f=this.config?.gcTime??qt.DEFAULT_GC_TIME;this.queryClient.gcManager.schedule(this.queryKey,f,J.Query)},c=(f=!1)=>{const{wasPaused:l,isPaused:u,initialized:y}=this;if(this.wasPaused=u,u&&!l&&y){a();return}this._isActive=!0;const v=Lt(this.params),p=xt(this.def,v),g=p!==this.storageKey;g&&(this.currentParams=v,this.storageKey=p),this.getOrCreateExecutionContext(),this.initialized?l||f?(this.queryClient.activateQuery(this),f&&this.updatedAt!==void 0&&this.setupSubscription(),this.relayState.isPending&&this._abortController===void 0?this.runQueryImmediately():(this.config?.refreshStaleOnReconnect??!0)&&this.isStale&&this.runDebounced()):g&&(this.setupSubscription(),this.runDebounced()):(this.queryClient.activateQuery(this),this.initialize())};return c(!0),{update:c,deactivate:a}},{desc:`Query(${t.statics.id})`})}applyData(t,i,n=!1,s){const r=this.def;return this.rootEntity=this.queryClient.parseAndApplyRootEntity(t,this._queryId,r.statics.shape,i,n,s),this.rootEntity._extraMethods===void 0&&(this.rootEntity._extraMethods=this._extraMethods,this.rootEntity._extraGetters={__hasNext:()=>this.hasNext,__isFetchingNext:()=>this._fetchNextPromise!==void 0}),this.rootEntity.getProxy(r.statics.shape)}saveQueryMetadata(){if(this.rootEntity===void 0||this.updatedAt===void 0)return;const t=new Map(this.rootEntity.entityRefs??[]);t.set(this.rootEntity,1),this.queryClient.saveQueryData(this.def,this.storageKey,{__entityRef:this.rootEntity.key},this.updatedAt,t)}async initialize(){const t=this.queryClient,i=this.relayState;this.initialized=!0;let n;try{n=await t.loadCachedQuery(this.def,this.storageKey),n!==void 0&&(this.updatedAt=n.updatedAt,i.value=this.applyData(n.value,!1,!1,n.preloadedEntities))}catch(s){t.store.deleteQuery(this.storageKey),t.getContext().log?.warn?.("Failed to initialize query, the query cache may be corrupted or invalid",s)}if(!this.isPaused)try{if(n!==void 0&&this.setupSubscription(),n===void 0||this.isStale){if(await fe(0),this.isPaused)return;this.runQueryImmediately()}}catch(s){i.setError(s)}}setupSubscription(){this.unsubscribe?.(),this.unsubscribe=void 0;const t=this.config?.subscribe;if(!t)return;const i=this._executionCtx;this.unsubscribe=t.call(i,n=>{n.__eventSource=this.queryKey,this.queryClient.applyMutationEvent(n)})}getOrCreateExecutionContext(){return(this._executionCtx===void 0||this._executionCtxKey!==this.storageKey)&&(this._executionCtxKey=this.storageKey,this._executionCtx=this.def.createExecutionContext(this.currentParams??{},this.queryClient.getContext()),this._executionCtx.refetch=()=>this.refetch(),this._executionCtx.rawFetchNext=this.def.statics.rawFetchNext),this.resolveAndApplyOptions(),this._executionCtx}resolveAndApplyOptions(){const t=this.def.resolveOptions(this._executionCtx);this.config=t.config,this.retryConfig=t.retryConfig}async runQuery(){const t=this.def;if(this.isPaused)throw new Error("Query is paused due to network status");const i=this.getOrCreateExecutionContext(),n=this.queryClient.getAdapter(t.statics.adapterClass),s=this._abortController?.signal??new AbortController().signal;return ft(async()=>{const r=await n.send(i,s);this.updatedAt=Date.now();const o=this.applyData(r,!0);return this.saveQueryMetadata(),this.unsubscribe===void 0&&this.setupSubscription(),o},this.retryConfig,s)}runQueryImmediately(){this._abortController?.abort(),this._abortController=new AbortController,this._fetchNextAbort?.abort(),this._fetchNextAbort=void 0,this._fetchNextPromise=void 0,this.relayState.setPromise(this.runQuery())}runDebounced(){if(this.relayState.isPending)return;const t=this.config?.debounce??0;clearTimeout(this.debounceTimer),this.debounceTimer=setTimeout(()=>{this.debounceTimer=void 0,this.runQueryImmediately()},t)}refetch=()=>this.relayState.isPending?this.relay:(this.runQueryImmediately(),this.relay);markStale(){this.updatedAt=0,this._isActive&&!this.isPaused&&this.runDebounced()}get resolvedParams(){return this.currentParams}_fetchNextPromise=void 0;_fetchNextAbort=void 0;fetchNext=()=>{if(this.updatedAt===void 0)throw new Error("Cannot call __fetchNext before initial data has loaded");return this._fetchNextPromise!==void 0?this._fetchNextPromise:(queueMicrotask(()=>this.rootEntity?.notify()),this._fetchNextPromise=this.runFetchNext().then(t=>(this._fetchNextPromise=void 0,this.rootEntity?.notify(),t),t=>{throw this._fetchNextPromise=void 0,this.rootEntity?.notify(),t}),this._fetchNextPromise)};get hasNext(){if(this.rootEntity===void 0||!this._executionCtx)return!1;const t=this.queryClient.getAdapter(this.def.statics.adapterClass);return t.hasNext?(this._executionCtx.resultData=this.rootEntity.data,t.hasNext(this._executionCtx)):!1}async runFetchNext(){const t=this.def;this._fetchNextAbort=new AbortController;const i=this._fetchNextAbort.signal,n=this.getOrCreateExecutionContext();n.resultData=this.rootEntity.data;const s=this.queryClient.getAdapter(t.statics.adapterClass);return ft(async()=>{const r=await s.sendNext(n,i);this.updatedAt=Date.now();const o=this.applyData(r,!0,!0);return this.saveQueryMetadata(),o},this.retryConfig,i)}get isStale(){if(this.updatedAt===void 0)return!0;const t=this.config?.staleTime??0;return Date.now()-this.updatedAt>=t}get isPaused(){const t=this.config?.networkMode??P.Online;if(t===P.Always)return!1;const i=this.queryClient.networkManager.getOnlineSignal().value;switch(t){case P.Online:return!i;case P.OfflineFirst:return!i&&this.updatedAt===void 0;default:return!1}}}class fi{def;queryClient;_inFlight=!1;task;constructor(t,i){this.def=t,this.queryClient=i,this.task=this.createTask()}createTask(){return C.task(async t=>{if(this._inFlight)throw new Error("A mutation is already in progress. Await the previous call before starting a new one.");this._inFlight=!0;try{const i=await this.executeWithRetry(t),n=this.validateResponse(i);return this.processEffects(t,n),n}finally{this._inFlight=!1}},{desc:`Mutation(${this.def.id})`})}validateResponse(t){const i=this.def.responseShape;if(!(i instanceof _))return t;const n=this.queryClient.getContext().log?.warn??(()=>{}),s=new at;return s.reset(void 0,void 0,n),ne(t,i,s)}processEffects(t,i){let n;if(this.def.hasGetEffects){const r=st(this.def.captured,t??{},this.queryClient.getContext());r.result=i,n=r.getEffects()}else if(this.def.effects!==void 0){const r={params:t,result:i};n=K(this.def.effects,r)}if(n===void 0)return;const s=this.queryClient;it(n.creates,"create",s),it(n.updates,"update",s),it(n.deletes,"delete",s),n.invalidates&&s.invalidateQueries(n.invalidates)}executeWithRetry(t){const i=Ct(this.def.config?.retry,!0),n=this.queryClient.getAdapter(this.def.adapterClass);if(!n.sendMutation)throw new Error(`Adapter "${this.def.adapterClass.name}" does not implement sendMutation(). Add a sendMutation() method to handle mutations.`);return ft(async()=>{const s=new AbortController,r=st(this.def.captured,t??{},this.queryClient.getContext());return await n.sendMutation(r,s.signal)},i)}}function ui(e){return typeof e=="string"?e:L(e).typenameValue}function it(e,t,i){if(e)for(const[n,s]of e){const r=ui(n);r!==void 0&&i.applyMutationEvent({type:t,typename:r,data:s})}}const ue="__eventSource";function de(e){return{field:e,segments:e.indexOf(".")!==-1?e.split("."):void 0}}function di(e){return e.map(de)}function li(e,t){if(t.segments===void 0)return e[t.field];let i=e;for(const n of t.segments){if(i==null)return;i=i[n]}return i}function le(e,t){const i=[];for(let n=0;n<t.length;n++){const s=t[n],r=li(e,s);if(r===void 0)return;i.push(s.field,r)}return S.hashValue(i)}function hi(e,t){if(e===void 0)return;const i=new Map;for(const[n,s]of e){const r=s.slice().sort((c,f)=>c[0]<f[0]?-1:c[0]>f[0]?1:0),o=[];let a=!0;for(const[c,f]of r){let l;if($t(f)){const u=Qt(f);l=yt(u,t)}else l=f;if(l===void 0){a=!1;break}o.push(c,l)}a&&i.set(n,S.hashValue(o))}return i.size>0?i:void 0}function Tt(e,t){const i=e.get(t);if(i!==void 0)return i.map(([n])=>n).sort()}class yi{fields;fieldPaths;_bindings=new Map;constructor(t){this.fields=t,this.fieldPaths=t.map(de)}register(t,i){let n=this._bindings.get(t);n===void 0&&(n=new Set,this._bindings.set(t,n)),n.add(i)}unregister(t,i){const n=this._bindings.get(t);n!==void 0&&(n.delete(i),n.size===0&&this._bindings.delete(t))}getMatching(t){return this._bindings.get(t)}get isEmpty(){return this._bindings.size===0}}function Pt(e){return S.hashValue(e)}class pi{_groups=new Map;getOrCreateGroup(t){const i=Pt(t);let n=this._groups.get(i);return n===void 0&&(n=new yi(t),this._groups.set(i,n)),n}register(t,i,n){this.getOrCreateGroup(i).register(t,n)}unregister(t,i,n){const s=Pt(i),r=this._groups.get(s);r!==void 0&&(r.unregister(t,n),r.isEmpty&&this._groups.delete(s))}registerBinding(t,i){const n=t._constraintHashes.get(i);if(n===void 0)return;const s=Tt(t._constraintFieldRefs,i);s!==void 0&&this.register(n,s,t)}unregisterBinding(t,i){const n=t._constraintHashes.get(i);if(n===void 0)return;const s=Tt(t._constraintFieldRefs,i);s!==void 0&&this.unregister(n,s,t)}routeEvent(t,i,n,s,r,o){for(const a of this._groups.values()){const c=le(i,a.fieldPaths);if(c===void 0)continue;const f=a.getMatching(c);if(f!==void 0)for(const l of f)l.onEvent(t,n,s,r,o)}}}function jt(e){const t=new Set;for(const i of e)if(typeof i=="object"&&i!==null){const n=F(i);n!==void 0&&t.add(n)}return t}class he{_queryClient;_parent;_constraintHashes;_entityDefsByTypename;_constraintFieldRefs;instance;constructor(t,i,n,s,r,o){this._queryClient=n,this._parent=s,this._constraintHashes=r,this._constraintFieldRefs=i,this.instance=o,this._entityDefsByTypename=new Map;for(const a of t)a.typenameValue!==void 0&&this._entityDefsByTypename.set(a.typenameValue,a);tt.add(this)}getValue(){return this.instance.getValue()}toJSON(){return this.instance.getRawValue()}reset(t){this.instance.reset(t)}append(t){this.instance.append(t)}onEvent(t,i,n,s,r){const o=this._entityDefsByTypename.get(t);if(o===void 0)return;const a=this._queryClient.entityMap.getEntity(i);if(n==="delete"){const f=a!==void 0?a.getProxy(o):r;f!==void 0&&(this.instance.onEvent(i,f,r??a?.data??{},"delete"),s?.());return}if(a===void 0||!a.satisfiesDef(o))return;s?.();const c=a.getProxy(o);this.instance.onEvent(i,c,a.data,n)}destroy(){this._queryClient.unregisterLiveCollection(this);const t=this._parent.liveCollections,i=t.indexOf(this);i!==-1&&t.splice(i,1)}}class gi{_notifier;_items;_keys;_outputSignal;_queryClient;_parent;constructor(t,i,n,s,r,o){this._notifier=C.notifier(),this._items=n,this._keys=jt(n),this._queryClient=t,this._parent=i;const a=s!==void 0&&r!==void 0,c=o!==void 0;(a||c)&&(this._outputSignal=C.reactiveSignal(()=>{this._notifier.consume();let f=this._items;if(a){const l=[];for(const u of f){if(typeof u!="object"||u===null){l.push(u);continue}const y=F(u);if(y===void 0){l.push(u);continue}const v=t.entityMap.getEntity(y);if(v===void 0){l.push(u);continue}v.consume(),le(v.data,s)===r&&l.push(u)}f=l}return c&&(f=(f===this._items?f.slice():f).sort(o)),f}))}onEvent(t,i,n,s){switch(s){case"create":this.add(t,i);break;case"update":!this.has(t)&&i!==void 0&&this.add(t,i);break;case"delete":this.remove(t);break}}getValue(){return this._outputSignal!==void 0?this._outputSignal.value:(this._notifier.consume(),this._items)}getRawValue(){return this._items}add(t,i){if(this._keys.has(t))return!1;this._keys.add(t),this._items.push(i);const n=this._queryClient.entityMap.getEntity(t);return n!==void 0&&(this._parent.addChildRef(n),n.save()),this._notifier.notify(),!0}remove(t){if(!this._keys.has(t))return!1;this._keys.delete(t);const i=this._findIndex(t);i!==-1&&this._items.splice(i,1);const n=this._queryClient.entityMap.getEntity(t);return n!==void 0&&this._parent.removeChildRef(n),this._notifier.notify(),!0}has(t){return this._keys.has(t)}reset(t){const i=this._items,n=Array.isArray(t)?t:[];this._items=n,this._keys=jt(n);for(const s of n)if(typeof s=="object"&&s!==null){const r=F(s);if(r!==void 0){const o=this._queryClient.entityMap.getEntity(r);o!==void 0&&this._parent.addChildRef(o)}}for(const s of i)if(typeof s=="object"&&s!==null){const r=F(s);if(r!==void 0){const o=this._queryClient.entityMap.getEntity(r);o!==void 0&&this._parent.removeChildRef(o)}}this._notifier.notify()}append(t){if(Array.isArray(t))for(const i of t){if(typeof i!="object"||i===null)continue;const n=F(i);n!==void 0&&this.add(n,i)}}_findIndex(t){for(let i=0;i<this._items.length;i++){const n=this._items[i];if(typeof n=="object"&&n!==null&&F(n)===t)return i}return-1}}class vi{_notifier;_value;_createdKeys;_deletedKeys;_queryClient;_parent;_onCreate;_onUpdate;_onDelete;constructor(t,i,n,s,r,o){this._notifier=C.notifier(),this._value=n,this._createdKeys=new Set,this._deletedKeys=new Set,this._queryClient=t,this._parent=i,this._onCreate=s,this._onUpdate=r,this._onDelete=o}onEvent(t,i,n,s){switch(s){case"create":if(this._createdKeys.has(t))return;this._createdKeys.add(t),this._value=this._onCreate(this._value,i);break;case"update":this._value=this._onUpdate(this._value,i??n);break;case"delete":if(this._deletedKeys.has(t))return;this._deletedKeys.add(t),this._value=this._onDelete(this._value,i??n);break}this._notifier.notify()}getValue(){return this._notifier.consume(),this._value}getRawValue(){return this._value}reset(t){this._value=t,this._createdKeys.clear(),this._deletedKeys.clear(),this._notifier.notify()}append(t){}}function ye(e,t,i,n,s){let r=e.constraintFieldRefs;if(r===void 0){r=new Map;for(const f of e.entityDefs){const l=f.typenameValue;l!==void 0&&r.set(l,[[ue,i.key]])}}const o=hi(r,n)??new Map;let a;if(e.type===H.Array){let f,l;if(e.constraintFieldRefs!==void 0&&o.size>0&&o.size===1)for(const[u]of e.constraintFieldRefs){const y=o.get(u);if(y!==void 0){l=y;const v=e.constraintFieldRefs.get(u);v!==void 0&&(f=di(v.map(([p])=>p)));break}}a=new gi(s,i,Array.isArray(t)?t:[],f,l,e.sort)}else a=new vi(s,i,t,e.onCreate,e.onUpdate,e.onDelete);const c=new he(e.entityDefs,r,s,i,o,a);return i.liveCollections.push(c),s.registerLiveCollection(c),c}const pe=Object.entries,ge=Object.prototype;function nt(e,t,i,n=!1){const s=e.queryClient;s.currentParseId++;const r=e.seen,o=new Map;return{data:Q(t,r,s,i,o,n),entityRefs:o}}function Q(e,t,i,n,s,r){if(typeof e!="object"||e===null)return e;const o=t.get(e);if(o!==void 0)return _i(o,t,i,n,s,r);if(Array.isArray(e)){for(let a=0;a<e.length;a++){const c=e[a];typeof c=="object"&&c!==null&&!(c instanceof $)&&!O.has(c)&&(e[a]=Q(c,t,i,n,s,r))}return e}if(Object.getPrototypeOf(e)===ge&&!O.has(e)){const a=e;for(const c of Object.keys(a)){const f=a[c];typeof f=="object"&&f!==null&&!(f instanceof $)&&!O.has(f)&&(a[c]=Q(f,t,i,n,s,r))}}return e}function ve(e){return typeof e=="object"&&e!==null&&!(e instanceof $)&&!O.has(e)}function _i(e,t,i,n,s,r){const{key:o,data:a,shape:c,rawKeys:f}=e,l=c.shape,u=i.prepareEntity(o,a,c),y=u.data,v=y!==a,p=v&&f!==void 0&&u.entityRefs!==void 0?new Map(u.entityRefs):new Map;if(v?(_e(l,a,y,f,u,y,t,i,n,p,r),u.notify()):me(l,a,u,a,t,i,n,p,r),r&&u.liveCollections.length>0)for(const w of u.liveCollections){const I=w.instance.getRawValue();if(Array.isArray(I))for(const R of I){if(typeof R!="object"||R===null)continue;const Y=O.get(R);if(Y===void 0)continue;const A=i.entityMap.getEntity(Y);A!==void 0&&p.set(A,(p.get(A)??0)+1)}}u.setChildRefs(p.size>0?p:void 0,n);const g=u.getProxy(c);return s.set(u,(s.get(u)??0)+1),g}function _e(e,t,i,n,s,r,o,a,c,f,l){for(const[u,y]of pe(e))if(!(n!==void 0&&!n.has(u)))if(ve(t[u])&&(t[u]=Q(t[u],o,a,c,f,l)),y instanceof _&&y._liveConfig!==void 0){const v=i[u];v instanceof he?l?v.append(t[u]):v.reset(t[u]):i[u]=ye(y._liveConfig,t[u],s,r,a)}else{const v=t[u],p=i[u];if(ut(v)&&ut(p)){const g=y instanceof _&&y.shape!==void 0?y.shape:void 0;if(g!==void 0)_e(g,v,p,void 0,s,r,o,a,c,f,l);else for(const w of Object.keys(v))p[w]=v[w];i[u]=p}else i[u]=v}}function me(e,t,i,n,s,r,o,a,c){for(const[f,l]of pe(e))if(f in t)if(ve(t[f])&&(t[f]=Q(t[f],s,r,o,a,c)),l instanceof _&&l._liveConfig!==void 0)t[f]=ye(l._liveConfig,t[f],i,n,r);else{const u=t[f];if(ut(u)){const y=l instanceof _&&l.shape!==void 0?l.shape:void 0;y!==void 0&&me(y,u,i,n,s,r,o,a,c)}}}function ut(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.getPrototypeOf(e)===ge&&!O.has(e)}function mi(e){if(e!==void 0)return typeof e=="string"?e:typeof e=="function"?e():e.value}function wi(e){return C.isSignal(e)}function Lt(e){if(e===void 0)return;const t={};for(const[i,n]of Object.entries(e))wi(n)?t[i]=n.value:t[i]=n;return t}const xt=(e,t)=>S.hashValue([e.statics.id,t]);class Ei{entityMap;queryInstances=new Map;mutationInstances=new Map;gcManager;networkManager;isServer;store;currentParseId=0;context;typenameRegistry=new Map;constraintRegistry=new Map;mergedDefCache=new Map;adapters=new Map;networkUnsubscribe;constructor(t={}){const{store:i=new St.SyncQueryStore(new St.MemoryPersistentStore),log:n,evictionMultiplier:s,adapters:r,networkManager:o,gcManager:a,...c}=t;this.isServer=typeof window>"u",this.store=i,this.context={...c,log:n??console,evictionMultiplier:s},this.gcManager=t.gcManager??(this.isServer?new Vt:new Ut(this.handleEviction,s)),this.networkManager=t.networkManager??new Et,this.entityMap=new ni((u,y,v)=>this.store.saveEntity(u,y,v));for(const u of t.adapters??[])this.adapters.set(u.constructor,u),u.register(this);const f=this.networkManager.getOnlineSignal(),l=C.watcher(()=>f.value);this.networkUnsubscribe=l.addListener(()=>{const u=f.value;for(const y of this.adapters.values())y.onNetworkStatusChange?.(u)},{skipInitial:!0}),this.store.purgeStaleQueries?.()}getAdapter(t){const i=this.adapters.get(t);if(i)return i;let n;for(const r of this.adapters.values())r instanceof t&&(n??=r);if(n!==void 0)return this.adapters.set(t,n),n;let s;try{s=new t}catch{throw new Error(`No adapter registered for ${t.name} and auto-instantiation failed. Pass an instance via QueryClient config: new QueryClient({ store, adapters: [new ${t.name}(...)] })`)}return this.adapters.set(t,s),s.register(this),s}getContext(){return this.context}registerEntityDef(t){const i=t.typenameValue;if(i===void 0||t._entityClass===void 0)return;const n=this.typenameRegistry.get(i);if(n!==void 0){if(n.indexOf(t)!==-1)return;n.push(t),this.mergedDefCache.delete(i),this.getMergedDef(i)}else this.typenameRegistry.set(i,[t])}getEntityDefsForTypename(t){return this.typenameRegistry.get(t)}getMergedDef(t){let i=this.mergedDefCache.get(t);if(i!==void 0)return i;const n=this.typenameRegistry.get(t);if(n!==void 0)return i=_.merge(n),this.mergedDefCache.set(t,i),i}saveQueryData(t,i,n,s,r){const o=r!==void 0&&r.size>0?new Set([...r.keys()].map(a=>a.key)):void 0;this.store.saveQuery(t,i,n,s,o)}activateQuery(t){const{def:i,queryKey:n,storageKey:s,config:r}=t;this.store.activateQuery(i,s);const o=r?.gcTime??qt.DEFAULT_GC_TIME;this.gcManager.cancel(n,o)}loadCachedQuery(t,i){return this.store.loadQuery(t,i)}getQuery(t,i){const n=xt(t,i);let s=this.queryInstances.get(n);return s===void 0&&(s=new ci(t,this,n,i),this.queryInstances.set(n,s)),s.relay}getMutation(t){const i=t.id;let n=this.mutationInstances.get(i);return n===void 0&&(n=new fi(t,this),this.mutationInstances.set(i,n)),n.task}parseData(t,i,n){const s=this.context.log?.warn??(()=>{}),r=new at;return r.reset(this,n,s),{data:ne(t,i,r),ctx:r}}applyRefs(t,i=!0,n=!1){return nt(t.ctx,t.data,i,n)}parseAndApplyRootEntity(t,i,n,s,r=!1,o){typeof n.idField=="symbol"&&typeof t=="object"&&t!==null&&!("__entityRef"in t)&&(t[dt]=i);const a=this.parseData(t,n,o),c=nt(a.ctx,a.data,s,r),f=O.get(c.data);return this.entityMap.getEntity(f)}prepareEntity(t,i,n){return this.registerEntityDef(n),this.entityMap.getOrCreateEntity(t,i,n,this)}applyMutationEvent(t){const{type:i,typename:n}=t,s=this.getMergedDef(n);if(s===void 0)return;const r=s.idField;if(r===void 0||typeof r=="symbol")return;const o=t.data,a=t.id!==void 0?t.id:i==="delete"&&(typeof o=="string"||typeof o=="number")?o:o[r];if(a===void 0)return;const c=S.hashValue([n,a]),f=t.__eventSource,l=typeof o=="object"&&o!==null?o:{},u=this.entityMap.getEntity(c);if(i==="delete"){const g=u!==void 0?u.data:l;this.routeEvent(n,g,c,i,f,void 0,g);return}try{const g=this.context.log?.warn??(()=>{}),w=new at;w.reset(this,void 0,g,!0);const I=Ye(l,s,w);nt(w,I,!0)}catch(g){if(this.context.log?.warn?.("Failed to apply mutation event",g),u===void 0){const w=this.entityMap.getEntity(c);w!==void 0&&w.evict()}return}const y=this.entityMap.getEntity(c);if(y===void 0)return;this.entityMap.save(y);const v=u===void 0;let p=!1;this.routeEvent(n,y.data,c,i,f,()=>{p=!0}),v&&!p&&y.evict()}invalidateQueries(t){for(const i of t){const n=Array.isArray(i),s=n?i[0]:i,r=n?i[1]:void 0,a=B.for(s).statics.id;for(const[,c]of this.queryInstances)c.def.statics.id===a&&(r===void 0||bi(c.resolvedParams,r))&&c.markStale()}}handleEviction=(t,i)=>{if(i===J.Query){const s=this.queryInstances.get(t);if(s===void 0)return;s.rootEntity?.evict(),this.queryInstances.delete(t);return}const n=this.entityMap.getEntity(t);n!==void 0&&n.evict()};getOrCreateMatcher(t){let i=this.constraintRegistry.get(t);return i===void 0&&(i=new pi,this.constraintRegistry.set(t,i)),i}registerLiveCollection(t){for(const[i,n]of t._entityDefsByTypename)this.registerEntityDef(n),this.getOrCreateMatcher(i).registerBinding(t,i)}unregisterLiveCollection(t){for(const i of t._entityDefsByTypename.keys()){const n=this.constraintRegistry.get(i);n!==void 0&&n.unregisterBinding(t,i)}}routeEvent(t,i,n,s,r,o,a){const c=this.constraintRegistry.get(t);if(c===void 0)return;const f=r!==void 0?{...i,[ue]:r}:i;c.routeEvent(t,f,n,s,o,a)}destroy(){this.networkUnsubscribe?.(),this.gcManager.destroy(),this.networkManager.destroy();for(const t of this.adapters.values())t.destroy?.();this.adapters.clear(),this.queryInstances.clear(),this.mutationInstances.clear(),this.constraintRegistry.clear(),this.typenameRegistry.clear(),this.mergedDefCache.clear()}}const we=C.context(void 0);function bi(e,t){if(e===void 0)return!1;for(const i in t)if(e[i]!==t[i])return!1;return!0}exports.ARRAY_KEY=U;exports.Entity=X;exports.GcManager=Ut;exports.LiveFieldConfig=j;exports.LiveFieldType=H;exports.Mask=d;exports.NetworkManager=Et;exports.NetworkManagerContext=si;exports.NetworkMode=P;exports.NoOpGcManager=Vt;exports.NoOpNetworkManager=bt;exports.QUERY_ID=dt;exports.Query=ri;exports.QueryClient=Ei;exports.QueryClientContext=we;exports.RECORD_KEY=V;exports.ValidatorDef=_;exports.createDefinitionProxy=ht;exports.defaultNetworkManager=ce;exports.draft=Qe;exports.extractDefinition=Bt;exports.fetchQuery=ai;exports.queryKeyForClass=oi;exports.registerFormat=_t;exports.reifyValue=K;exports.resolveBaseUrl=mi;exports.t=ee;
2
+ //# sourceMappingURL=QueryClient-DIAqDTHF.js.map