fetchium 0.3.0 → 0.4.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 (54) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/development/QueryClient-CbG-qdpt.js +2 -0
  3. package/dist/cjs/development/QueryClient-CbG-qdpt.js.map +1 -0
  4. package/dist/cjs/development/index.js +1 -1
  5. package/dist/cjs/{production/mutation-CgS9gXW7.js → development/mutation-CFkoRirO.js} +2 -2
  6. package/dist/cjs/{production/mutation-CgS9gXW7.js.map → development/mutation-CFkoRirO.js.map} +1 -1
  7. package/dist/cjs/development/react/index.js +1 -1
  8. package/dist/cjs/development/rest/index.js +1 -1
  9. package/dist/cjs/development/rest/index.js.map +1 -1
  10. package/dist/cjs/development/topic/index.js +1 -1
  11. package/dist/cjs/production/QueryClient-DGCBmyPp.js +2 -0
  12. package/dist/cjs/production/QueryClient-DGCBmyPp.js.map +1 -0
  13. package/dist/cjs/production/index.js +1 -1
  14. package/dist/cjs/{development/mutation-w67Vpuvw.js → production/mutation-B0wMYfHP.js} +2 -2
  15. package/dist/cjs/{development/mutation-w67Vpuvw.js.map → production/mutation-B0wMYfHP.js.map} +1 -1
  16. package/dist/cjs/production/react/index.js +1 -1
  17. package/dist/cjs/production/rest/index.js +1 -1
  18. package/dist/cjs/production/rest/index.js.map +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 +5 -5
  22. package/dist/esm/QueryResult.d.ts.map +1 -1
  23. package/dist/esm/development/{QueryClient-C9tBdK1Z.js → QueryClient-BZY2FTv3.js} +594 -592
  24. package/dist/esm/development/QueryClient-BZY2FTv3.js.map +1 -0
  25. package/dist/esm/development/index.js +2 -2
  26. package/dist/esm/development/{mutation-Dx63NCGk.js → mutation-Dot2Ejg6.js} +2 -2
  27. package/dist/esm/development/{mutation-Dx63NCGk.js.map → mutation-Dot2Ejg6.js.map} +1 -1
  28. package/dist/esm/development/react/index.js +1 -1
  29. package/dist/esm/development/rest/index.js +8 -8
  30. package/dist/esm/development/rest/index.js.map +1 -1
  31. package/dist/esm/development/topic/index.js +1 -1
  32. package/dist/esm/fieldRef.d.ts.map +1 -1
  33. package/dist/esm/production/{QueryClient-D64xo0EA.js → QueryClient-WtzRneAd.js} +469 -465
  34. package/dist/esm/production/QueryClient-WtzRneAd.js.map +1 -0
  35. package/dist/esm/production/index.js +2 -2
  36. package/dist/esm/production/{mutation-Aw1JE7VO.js → mutation-AXg513Dg.js} +2 -2
  37. package/dist/esm/production/{mutation-Aw1JE7VO.js.map → mutation-AXg513Dg.js.map} +1 -1
  38. package/dist/esm/production/react/index.js +1 -1
  39. package/dist/esm/production/rest/index.js +8 -8
  40. package/dist/esm/production/rest/index.js.map +1 -1
  41. package/dist/esm/production/topic/index.js +1 -1
  42. package/dist/esm/rest/RESTQuery.d.ts +2 -0
  43. package/dist/esm/rest/RESTQuery.d.ts.map +1 -1
  44. package/dist/esm/rest/RESTQueryAdapter.d.ts.map +1 -1
  45. package/package.json +3 -3
  46. package/plugin/docs/api/fetchium.md +16 -15
  47. package/plugin/docs/core/queries.md +10 -3
  48. package/plugin/docs/reference/rest-queries.md +1 -1
  49. package/dist/cjs/development/QueryClient-QKhS8mhg.js +0 -2
  50. package/dist/cjs/development/QueryClient-QKhS8mhg.js.map +0 -1
  51. package/dist/cjs/production/QueryClient-DIAqDTHF.js +0 -2
  52. package/dist/cjs/production/QueryClient-DIAqDTHF.js.map +0 -1
  53. package/dist/esm/development/QueryClient-C9tBdK1Z.js.map +0 -1
  54. package/dist/esm/production/QueryClient-D64xo0EA.js.map +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./QueryClient-DIAqDTHF.js"),r=require("./QueryAdapter-DUo338ga.js"),t=require("./mutation-CgS9gXW7.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-DGCBmyPp.js"),r=require("./QueryAdapter-DUo338ga.js"),t=require("./mutation-B0wMYfHP.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-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
+ "use strict";const g=require("signalium"),o=require("./QueryClient-DGCBmyPp.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-B0wMYfHP.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"mutation-B0wMYfHP.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 t=require("signalium/react"),u=require("../QueryClient-DIAqDTHF.js");function c(e,...r){return t.useReactive(()=>u.fetchQuery(e,...r))}exports.useQuery=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("signalium/react"),u=require("../QueryClient-DGCBmyPp.js");function c(e,...r){return t.useReactive(()=>u.fetchQuery(e,...r))}exports.useQuery=c;
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../QueryClient-DIAqDTHF.js"),q=require("../QueryAdapter-DUo338ga.js"),T=require("../mutation-CgS9gXW7.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-DGCBmyPp.js"),q=require("../QueryAdapter-DUo338ga.js"),T=require("../mutation-B0wMYfHP.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,e.responseNotifier.notify(),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 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/rest/RESTQueryAdapter.ts","../../../../src/rest/RESTQuery.ts","../../../../src/rest/RESTMutation.ts"],"sourcesContent":["import { QueryAdapter } from '../QueryAdapter.js';\nimport { resolveBaseUrl } from '../query-types.js';\nimport { reifyValue } from '../fieldRef.js';\nimport type { Query } from '../query.js';\nimport type { Mutation } from '../mutation.js';\nimport type { FetchNextConfig } from '../query-types.js';\nimport type { RESTQuery } from './RESTQuery.js';\nimport type { RESTMutation } from './RESTMutation.js';\nimport type { QueryRequestInit, BaseUrlValue, QueryRequestOptions } from '../types.js';\n\n// ================================\n// ResolvedFetchNext\n// ================================\n\nexport interface ResolvedFetchNext {\n url?: string;\n searchParams?: Record<string, unknown>;\n}\n\n// ================================\n// RESTQueryAdapter options\n// ================================\n\nexport interface RESTQueryAdapterOptions {\n fetch?: (url: string, init?: QueryRequestInit) => Promise<Response>;\n baseUrl?: BaseUrlValue;\n}\n\n// ================================\n// RESTQueryAdapter\n// ================================\n\nexport class RESTQueryAdapter extends QueryAdapter {\n private readonly _fetch: (url: string, init?: QueryRequestInit) => Promise<Response>;\n private readonly _baseUrl: BaseUrlValue | undefined;\n\n constructor(options?: RESTQueryAdapterOptions) {\n super();\n this._fetch =\n options?.fetch ?? (globalThis.fetch as unknown as (url: string, init?: QueryRequestInit) => Promise<Response>);\n this._baseUrl = options?.baseUrl;\n }\n\n override async send(ctx: Query, signal: AbortSignal): Promise<unknown> {\n return this.executeRequest(ctx as RESTQuery, signal);\n }\n\n override async sendNext(ctx: Query, signal: AbortSignal): Promise<unknown> {\n const resolved = this.resolveFetchNext(ctx as RESTQuery);\n if (resolved === undefined) {\n throw new Error('fetchNext is not configured for this query');\n }\n return this.executeRequest(ctx as RESTQuery, signal, resolved);\n }\n\n override hasNext(ctx: Query): boolean {\n const resolved = this.resolveFetchNext(ctx as RESTQuery);\n if (resolved === undefined) return false;\n\n if (resolved.url !== undefined && resolved.url !== null) {\n return true;\n }\n\n if (resolved.searchParams !== undefined) {\n const keys = Object.keys(resolved.searchParams);\n if (keys.length === 0) return false;\n for (const key of keys) {\n if (resolved.searchParams[key] === undefined || resolved.searchParams[key] === null) {\n return false;\n }\n }\n return true;\n }\n\n return false;\n }\n\n private resolveFetchNext(ctx: RESTQuery): ResolvedFetchNext | undefined {\n const dynamicConfig = ctx.getFetchNext ? ctx.getFetchNext() : undefined;\n const fetchNextConfig: FetchNextConfig | undefined = dynamicConfig ?? ctx.rawFetchNext;\n if (fetchNextConfig === undefined) return undefined;\n\n const resolveRoot: Record<string, unknown> = {\n params: ctx.params ?? {},\n result: ctx.resultData,\n };\n\n return {\n url: fetchNextConfig.url !== undefined ? (reifyValue(fetchNextConfig.url, resolveRoot) as string) : undefined,\n searchParams:\n fetchNextConfig.searchParams !== undefined\n ? (reifyValue(fetchNextConfig.searchParams, resolveRoot) as Record<string, unknown>)\n : undefined,\n };\n }\n\n /**\n * Resolves a path to a full URL.\n *\n * - Absolute URLs (`https://...`, `//...`) are returned as-is.\n * - Root-relative paths (`/foo`) are prepended with the resolved baseUrl.\n * The baseUrl priority is: per-query/mutation > adapter-level > `location.origin`.\n * If none is available and the path is root-relative, an error is thrown.\n * - Other paths (e.g. `example.com/foo`) are returned as-is.\n */\n private buildUrl(path: string, ctxBaseUrl: BaseUrlValue | undefined): string {\n // Absolute URL — use as-is regardless of any configured baseUrl\n if (path.startsWith('http://') || path.startsWith('https://') || path.startsWith('//')) {\n return path;\n }\n\n // Root-relative path — needs a base\n if (path.startsWith('/')) {\n const base = resolveBaseUrl(ctxBaseUrl) ?? resolveBaseUrl(this._baseUrl) ?? globalThis.location?.origin;\n\n if (!base) {\n throw new Error(\n `RESTQueryAdapter: cannot resolve URL for path \"${path}\". ` +\n `Set \\`baseUrl\\` on the query/mutation, pass it to \\`new RESTQueryAdapter({ baseUrl })\\`, ` +\n `or use an absolute URL.`,\n );\n }\n\n return `${base}${path}`;\n }\n\n // Relative path — use as-is\n return path;\n }\n\n private async executeRequest(\n ctx: RESTQuery,\n signal: AbortSignal,\n next?: { url?: string; searchParams?: Record<string, unknown> },\n ): Promise<unknown> {\n const path = next?.url ?? (ctx.getPath ? ctx.getPath() : ctx.path);\n const method = ctx.getMethod ? ctx.getMethod() : ctx.method;\n const baseSearchParams = ctx.getSearchParams ? ctx.getSearchParams() : ctx.searchParams;\n const searchParams = next?.searchParams ? { ...baseSearchParams, ...next.searchParams } : baseSearchParams;\n const body = ctx.getBody ? ctx.getBody() : ctx.body;\n const requestOptions = ctx.getRequestOptions ? ctx.getRequestOptions() : ctx.requestOptions;\n\n if (!path) {\n throw new Error('RESTQuery requires a path. Define `path` as a field or override `getPath()`.');\n }\n\n let url = path;\n\n if (searchParams) {\n const sp = new URLSearchParams();\n for (const key in searchParams) {\n const val = searchParams[key];\n if (val !== undefined && val !== null) {\n sp.append(key, String(val));\n }\n }\n const qs = sp.toString();\n if (qs) {\n url += '?' + qs;\n }\n }\n\n const ctxBaseUrl = requestOptions?.baseUrl ?? ctx.baseUrl;\n const fullUrl = this.buildUrl(url, ctxBaseUrl);\n\n const { baseUrl: _baseUrl, signal: _signal, ...fetchOptions } = requestOptions ?? ({} as Record<string, unknown>);\n\n const hasHeaders = body || ctx.headers;\n const headers: HeadersInit | undefined = hasHeaders\n ? {\n ...(body ? { 'Content-Type': 'application/json' } : undefined),\n ...(ctx.headers as Record<string, string>),\n }\n : undefined;\n\n const fetchResponse = await this._fetch(fullUrl, {\n method,\n headers,\n body: body ? JSON.stringify(body) : undefined,\n signal,\n ...fetchOptions,\n });\n\n ctx.response = fetchResponse as unknown as Response;\n\n return fetchResponse.json();\n }\n\n override async sendMutation(ctx: Mutation, signal: AbortSignal): Promise<unknown> {\n const restCtx = ctx as RESTMutation;\n const path = restCtx.getPath ? restCtx.getPath() : restCtx.path;\n const method = restCtx.getMethod ? restCtx.getMethod() : restCtx.method;\n const body = restCtx.getBody ? restCtx.getBody() : restCtx.body;\n const requestOptions = restCtx.getRequestOptions ? restCtx.getRequestOptions() : restCtx.requestOptions;\n\n if (!path) {\n throw new Error('RESTMutation requires a path. Define `path` as a field or override `getPath()`.');\n }\n\n const ctxBaseUrl = (requestOptions as QueryRequestOptions | undefined)?.baseUrl ?? restCtx.baseUrl;\n const fullUrl = this.buildUrl(path, ctxBaseUrl);\n\n const { baseUrl: _baseUrl, signal: _signal, ...fetchOptions } = (requestOptions ?? {}) as Record<string, unknown>;\n\n const headers: HeadersInit = {\n ...(body !== undefined ? { 'Content-Type': 'application/json' } : {}),\n ...(restCtx.headers as Record<string, string>),\n };\n\n const fetchResponse = await this._fetch(fullUrl, {\n method,\n headers,\n ...(body !== undefined ? { body: JSON.stringify(body) } : {}),\n signal,\n ...fetchOptions,\n });\n\n return fetchResponse.json();\n }\n}\n","import { Query } from '../query.js';\nimport { RESTQueryAdapter } from './RESTQueryAdapter.js';\nimport type { FetchNextConfig } from '../query-types.js';\nimport type { BaseUrlValue, QueryRequestOptions } from '../types.js';\n\n// ================================\n// RESTQuery — declarative HTTP query definition\n// ================================\n\nexport abstract class RESTQuery extends Query {\n static override adapter = RESTQueryAdapter;\n\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' = 'GET';\n path?: string;\n baseUrl?: BaseUrlValue;\n searchParams?: Record<string, unknown>;\n body?: Record<string, unknown>;\n headers?: HeadersInit;\n requestOptions?: QueryRequestOptions;\n fetchNext?: FetchNextConfig;\n\n declare response: Response | undefined;\n\n getIdentityKey(): string {\n return `${this.method ?? 'GET'}:${this.path ?? ''}`;\n }\n\n // User-overridable getters — the adapter reads these from the execution context\n getPath?(): string | undefined;\n getMethod?(): string;\n getSearchParams?(): Record<string, unknown> | undefined;\n getBody?(): Record<string, unknown> | undefined;\n getRequestOptions?(): QueryRequestOptions | undefined;\n getFetchNext?(): FetchNextConfig | undefined;\n}\n","import { Mutation } from '../mutation.js';\nimport type { BaseUrlValue, QueryRequestOptions } from '../types.js';\nimport { RESTQueryAdapter } from './RESTQueryAdapter.js';\n\nexport abstract class RESTMutation extends Mutation {\n static override adapter = RESTQueryAdapter;\n\n path?: string;\n baseUrl?: BaseUrlValue;\n method: 'POST' | 'PUT' | 'DELETE' | 'PATCH' = 'POST';\n body?: Record<string, unknown>;\n headers?: HeadersInit;\n requestOptions?: QueryRequestOptions;\n\n getIdentityKey(): string {\n return `${this.method ?? 'POST'}:${this.path ?? ''}`;\n }\n\n getPath?(): string | undefined;\n getMethod?(): string;\n getBody?(): Record<string, unknown> | undefined;\n getRequestOptions?(): QueryRequestOptions | undefined;\n}\n"],"names":["RESTQueryAdapter","QueryAdapter","options","ctx","signal","resolved","keys","key","fetchNextConfig","resolveRoot","reifyValue","path","ctxBaseUrl","base","resolveBaseUrl","next","method","baseSearchParams","searchParams","body","requestOptions","url","sp","val","qs","fullUrl","_baseUrl","_signal","fetchOptions","headers","fetchResponse","restCtx","RESTQuery","Query","RESTMutation","Mutation"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/rest/RESTQueryAdapter.ts","../../../../src/rest/RESTQuery.ts","../../../../src/rest/RESTMutation.ts"],"sourcesContent":["import { QueryAdapter } from '../QueryAdapter.js';\nimport { resolveBaseUrl } from '../query-types.js';\nimport { reifyValue } from '../fieldRef.js';\nimport type { Query } from '../query.js';\nimport type { Mutation } from '../mutation.js';\nimport type { FetchNextConfig } from '../query-types.js';\nimport type { RESTQuery } from './RESTQuery.js';\nimport type { RESTMutation } from './RESTMutation.js';\nimport type { QueryRequestInit, BaseUrlValue, QueryRequestOptions } from '../types.js';\n\n// ================================\n// ResolvedFetchNext\n// ================================\n\nexport interface ResolvedFetchNext {\n url?: string;\n searchParams?: Record<string, unknown>;\n}\n\n// ================================\n// RESTQueryAdapter options\n// ================================\n\nexport interface RESTQueryAdapterOptions {\n fetch?: (url: string, init?: QueryRequestInit) => Promise<Response>;\n baseUrl?: BaseUrlValue;\n}\n\n// ================================\n// RESTQueryAdapter\n// ================================\n\nexport class RESTQueryAdapter extends QueryAdapter {\n private readonly _fetch: (url: string, init?: QueryRequestInit) => Promise<Response>;\n private readonly _baseUrl: BaseUrlValue | undefined;\n\n constructor(options?: RESTQueryAdapterOptions) {\n super();\n this._fetch =\n options?.fetch ?? (globalThis.fetch as unknown as (url: string, init?: QueryRequestInit) => Promise<Response>);\n this._baseUrl = options?.baseUrl;\n }\n\n override async send(ctx: Query, signal: AbortSignal): Promise<unknown> {\n return this.executeRequest(ctx as RESTQuery, signal);\n }\n\n override async sendNext(ctx: Query, signal: AbortSignal): Promise<unknown> {\n const resolved = this.resolveFetchNext(ctx as RESTQuery);\n if (resolved === undefined) {\n throw new Error('fetchNext is not configured for this query');\n }\n return this.executeRequest(ctx as RESTQuery, signal, resolved);\n }\n\n override hasNext(ctx: Query): boolean {\n const resolved = this.resolveFetchNext(ctx as RESTQuery);\n if (resolved === undefined) return false;\n\n if (resolved.url !== undefined && resolved.url !== null) {\n return true;\n }\n\n if (resolved.searchParams !== undefined) {\n const keys = Object.keys(resolved.searchParams);\n if (keys.length === 0) return false;\n for (const key of keys) {\n if (resolved.searchParams[key] === undefined || resolved.searchParams[key] === null) {\n return false;\n }\n }\n return true;\n }\n\n return false;\n }\n\n private resolveFetchNext(ctx: RESTQuery): ResolvedFetchNext | undefined {\n const dynamicConfig = ctx.getFetchNext ? ctx.getFetchNext() : undefined;\n const fetchNextConfig: FetchNextConfig | undefined = dynamicConfig ?? ctx.rawFetchNext;\n if (fetchNextConfig === undefined) return undefined;\n\n const resolveRoot: Record<string, unknown> = {\n params: ctx.params ?? {},\n result: ctx.resultData,\n };\n\n return {\n url: fetchNextConfig.url !== undefined ? (reifyValue(fetchNextConfig.url, resolveRoot) as string) : undefined,\n searchParams:\n fetchNextConfig.searchParams !== undefined\n ? (reifyValue(fetchNextConfig.searchParams, resolveRoot) as Record<string, unknown>)\n : undefined,\n };\n }\n\n /**\n * Resolves a path to a full URL.\n *\n * - Absolute URLs (`https://...`, `//...`) are returned as-is.\n * - Root-relative paths (`/foo`) are prepended with the resolved baseUrl.\n * The baseUrl priority is: per-query/mutation > adapter-level > `location.origin`.\n * If none is available and the path is root-relative, an error is thrown.\n * - Other paths (e.g. `example.com/foo`) are returned as-is.\n */\n private buildUrl(path: string, ctxBaseUrl: BaseUrlValue | undefined): string {\n // Absolute URL — use as-is regardless of any configured baseUrl\n if (path.startsWith('http://') || path.startsWith('https://') || path.startsWith('//')) {\n return path;\n }\n\n // Root-relative path — needs a base\n if (path.startsWith('/')) {\n const base = resolveBaseUrl(ctxBaseUrl) ?? resolveBaseUrl(this._baseUrl) ?? globalThis.location?.origin;\n\n if (!base) {\n throw new Error(\n `RESTQueryAdapter: cannot resolve URL for path \"${path}\". ` +\n `Set \\`baseUrl\\` on the query/mutation, pass it to \\`new RESTQueryAdapter({ baseUrl })\\`, ` +\n `or use an absolute URL.`,\n );\n }\n\n return `${base}${path}`;\n }\n\n // Relative path — use as-is\n return path;\n }\n\n private async executeRequest(\n ctx: RESTQuery,\n signal: AbortSignal,\n next?: { url?: string; searchParams?: Record<string, unknown> },\n ): Promise<unknown> {\n const path = next?.url ?? (ctx.getPath ? ctx.getPath() : ctx.path);\n const method = ctx.getMethod ? ctx.getMethod() : ctx.method;\n const baseSearchParams = ctx.getSearchParams ? ctx.getSearchParams() : ctx.searchParams;\n const searchParams = next?.searchParams ? { ...baseSearchParams, ...next.searchParams } : baseSearchParams;\n const body = ctx.getBody ? ctx.getBody() : ctx.body;\n const requestOptions = ctx.getRequestOptions ? ctx.getRequestOptions() : ctx.requestOptions;\n\n if (!path) {\n throw new Error('RESTQuery requires a path. Define `path` as a field or override `getPath()`.');\n }\n\n let url = path;\n\n if (searchParams) {\n const sp = new URLSearchParams();\n for (const key in searchParams) {\n const val = searchParams[key];\n if (val !== undefined && val !== null) {\n sp.append(key, String(val));\n }\n }\n const qs = sp.toString();\n if (qs) {\n url += '?' + qs;\n }\n }\n\n const ctxBaseUrl = requestOptions?.baseUrl ?? ctx.baseUrl;\n const fullUrl = this.buildUrl(url, ctxBaseUrl);\n\n const { baseUrl: _baseUrl, signal: _signal, ...fetchOptions } = requestOptions ?? ({} as Record<string, unknown>);\n\n const hasHeaders = body || ctx.headers;\n const headers: HeadersInit | undefined = hasHeaders\n ? {\n ...(body ? { 'Content-Type': 'application/json' } : undefined),\n ...(ctx.headers as Record<string, string>),\n }\n : undefined;\n\n const fetchResponse = await this._fetch(fullUrl, {\n method,\n headers,\n body: body ? JSON.stringify(body) : undefined,\n signal,\n ...fetchOptions,\n });\n\n ctx.response = fetchResponse as unknown as Response;\n ctx.responseNotifier.notify();\n\n return fetchResponse.json();\n }\n\n override async sendMutation(ctx: Mutation, signal: AbortSignal): Promise<unknown> {\n const restCtx = ctx as RESTMutation;\n const path = restCtx.getPath ? restCtx.getPath() : restCtx.path;\n const method = restCtx.getMethod ? restCtx.getMethod() : restCtx.method;\n const body = restCtx.getBody ? restCtx.getBody() : restCtx.body;\n const requestOptions = restCtx.getRequestOptions ? restCtx.getRequestOptions() : restCtx.requestOptions;\n\n if (!path) {\n throw new Error('RESTMutation requires a path. Define `path` as a field or override `getPath()`.');\n }\n\n const ctxBaseUrl = (requestOptions as QueryRequestOptions | undefined)?.baseUrl ?? restCtx.baseUrl;\n const fullUrl = this.buildUrl(path, ctxBaseUrl);\n\n const { baseUrl: _baseUrl, signal: _signal, ...fetchOptions } = (requestOptions ?? {}) as Record<string, unknown>;\n\n const headers: HeadersInit = {\n ...(body !== undefined ? { 'Content-Type': 'application/json' } : {}),\n ...(restCtx.headers as Record<string, string>),\n };\n\n const fetchResponse = await this._fetch(fullUrl, {\n method,\n headers,\n ...(body !== undefined ? { body: JSON.stringify(body) } : {}),\n signal,\n ...fetchOptions,\n });\n\n return fetchResponse.json();\n }\n}\n","import type { Notifier } from 'signalium';\nimport { Query } from '../query.js';\nimport { RESTQueryAdapter } from './RESTQueryAdapter.js';\nimport type { FetchNextConfig } from '../query-types.js';\nimport type { BaseUrlValue, QueryRequestOptions } from '../types.js';\n\n// ================================\n// RESTQuery — declarative HTTP query definition\n// ================================\n\nexport abstract class RESTQuery extends Query {\n static override adapter = RESTQueryAdapter;\n\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' = 'GET';\n path?: string;\n baseUrl?: BaseUrlValue;\n searchParams?: Record<string, unknown>;\n body?: Record<string, unknown>;\n headers?: HeadersInit;\n requestOptions?: QueryRequestOptions;\n fetchNext?: FetchNextConfig;\n\n declare response: Response | undefined;\n declare responseNotifier: Notifier;\n\n getIdentityKey(): string {\n return `${this.method ?? 'GET'}:${this.path ?? ''}`;\n }\n\n // User-overridable getters — the adapter reads these from the execution context\n getPath?(): string | undefined;\n getMethod?(): string;\n getSearchParams?(): Record<string, unknown> | undefined;\n getBody?(): Record<string, unknown> | undefined;\n getRequestOptions?(): QueryRequestOptions | undefined;\n getFetchNext?(): FetchNextConfig | undefined;\n}\n","import { Mutation } from '../mutation.js';\nimport type { BaseUrlValue, QueryRequestOptions } from '../types.js';\nimport { RESTQueryAdapter } from './RESTQueryAdapter.js';\n\nexport abstract class RESTMutation extends Mutation {\n static override adapter = RESTQueryAdapter;\n\n path?: string;\n baseUrl?: BaseUrlValue;\n method: 'POST' | 'PUT' | 'DELETE' | 'PATCH' = 'POST';\n body?: Record<string, unknown>;\n headers?: HeadersInit;\n requestOptions?: QueryRequestOptions;\n\n getIdentityKey(): string {\n return `${this.method ?? 'POST'}:${this.path ?? ''}`;\n }\n\n getPath?(): string | undefined;\n getMethod?(): string;\n getBody?(): Record<string, unknown> | undefined;\n getRequestOptions?(): QueryRequestOptions | undefined;\n}\n"],"names":["RESTQueryAdapter","QueryAdapter","options","ctx","signal","resolved","keys","key","fetchNextConfig","resolveRoot","reifyValue","path","ctxBaseUrl","base","resolveBaseUrl","next","method","baseSearchParams","searchParams","body","requestOptions","url","sp","val","qs","fullUrl","_baseUrl","_signal","fetchOptions","headers","fetchResponse","restCtx","RESTQuery","Query","RESTMutation","Mutation"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("../QueryClient-DIAqDTHF.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-DGCBmyPp.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
@@ -1 +1 @@
1
- {"version":3,"file":"EntityInstance.d.ts","sourceRoot":"","sources":["../../src/EntityInstance.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAQ,MAAM,YAAY,CAAC;AAIlD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAiB,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAoIjE,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAW;IAC5B,YAAY,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAA6D;IAE7E,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAK;IACrB,UAAU,EAAE,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACpD,eAAe,EAAE,qBAAqB,EAAE,CAAM;IAC9C,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAiB;IAC9D,OAAO,EAAE,MAAM,CAAM;IACrB,YAAY,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC9C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAC3E,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,GAAG,SAAS,CAAC;gBAGvD,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,EAAE,WAAW;IAY1B,MAAM,IAAI,IAAI;IAQd,OAAO,IAAI,IAAI;IAcf,KAAK,IAAI,IAAI;IAYb,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAgBvF,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAQxC,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAa3C,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAUnD,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAE/C;IAED,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO;IASjD,IAAI,IAAI,IAAI;IAIZ,MAAM,IAAI,IAAI;IAId,OAAO,IAAI,IAAI;CAGhB"}
1
+ {"version":3,"file":"EntityInstance.d.ts","sourceRoot":"","sources":["../../src/EntityInstance.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAQ,MAAM,YAAY,CAAC;AAIlD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAiB,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAkIjE,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAW;IAC5B,YAAY,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAA6D;IAE7E,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAK;IACrB,UAAU,EAAE,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACpD,eAAe,EAAE,qBAAqB,EAAE,CAAM;IAC9C,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAiB;IAC9D,OAAO,EAAE,MAAM,CAAM;IACrB,YAAY,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC9C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAC3E,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,GAAG,SAAS,CAAC;gBAGvD,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,GAAG,MAAM,EACnB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,EAAE,WAAW;IAY1B,MAAM,IAAI,IAAI;IAQd,OAAO,IAAI,IAAI;IAcf,KAAK,IAAI,IAAI;IAYb,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAgBvF,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAQxC,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAa3C,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAUnD,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAE/C;IAED,YAAY,CAAC,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO;IASjD,IAAI,IAAI,IAAI;IAIZ,MAAM,IAAI,IAAI;IAId,OAAO,IAAI,IAAI;CAGhB"}
@@ -18,14 +18,15 @@ export declare class QueryInstance<T extends Query> {
18
18
  private updatedAt;
19
19
  private params;
20
20
  private unsubscribe?;
21
+ private lastSubscribeFn;
21
22
  private _relayState;
22
23
  private _isActive;
23
24
  private wasPaused;
24
25
  private currentParams;
25
26
  private debounceTimer;
26
- /** Resolved per-instance options (depend on actual params). */
27
- config: QueryConfigOptions | undefined;
28
- retryConfig: ResolvedRetryConfig;
27
+ private _resolvedOptions;
28
+ get config(): QueryConfigOptions | undefined;
29
+ get retryConfig(): ResolvedRetryConfig;
29
30
  /** Cancels in-flight fetches and retry waits. */
30
31
  private _abortController;
31
32
  /** Cached execution context, recreated only when storageKey (params) changes. */
@@ -46,9 +47,8 @@ export declare class QueryInstance<T extends Query> {
46
47
  /** Save query metadata (the __entityRef pointer, updatedAt, ref set). */
47
48
  private saveQueryMetadata;
48
49
  private initialize;
49
- private setupSubscription;
50
+ private reconcileSubscription;
50
51
  private getOrCreateExecutionContext;
51
- private resolveAndApplyOptions;
52
52
  private runQuery;
53
53
  private runQueryImmediately;
54
54
  private runDebounced;
@@ -1 +1 @@
1
- {"version":3,"file":"QueryResult.d.ts","sourceRoot":"","sources":["../../src/QueryResult.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,eAAe,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAe,KAAK,WAAW,EAAkB,MAAM,YAAY,CAAC;AAC3E,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EAIxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,mBAAmB,EAAsB,MAAM,YAAY,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD;;;GAGG;AACH,qBAAa,aAAa,CAAC,CAAC,SAAS,KAAK;IACxC,GAAG,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAM;IAExB,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,MAAM,CAAsC;IAEpD,OAAO,CAAC,WAAW,CAAC,CAAyB;IAE7C,OAAO,CAAC,WAAW,CAAqD;IACxE,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,aAAa,CAAwD;IAE7E,+DAA+D;IAC/D,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAa;IACnD,WAAW,EAAE,mBAAmB,CAAiC;IAEjE,iDAAiD;IACjD,OAAO,CAAC,gBAAgB,CAA0C;IAElE,iFAAiF;IACjF,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,gBAAgB,CAAc;IAEtC;oFACgF;IAChF,UAAU,EAAE,cAAc,GAAG,SAAS,CAAC;IAEvC,gFAAgF;IAChF,OAAO,CAAC,aAAa,CAAuD;IAE5E,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAa;IAE7B,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,OAAO,KAAK,UAAU,GAKrB;gBAGC,GAAG,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACnC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,GAAG,SAAS;IAyGjC,gFAAgF;IAChF,OAAO,CAAC,SAAS;IA4BjB,yEAAyE;IACzE,OAAO,CAAC,iBAAiB;YAaX,UAAU;IAuCxB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,2BAA2B;IAgBnC,OAAO,CAAC,sBAAsB;YAMhB,QAAQ;IA8BtB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,YAAY;IAiBpB,OAAO,QAAO,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAI3C;IAEF,SAAS,IAAI,IAAI;IAOjB,IAAI,cAAc,IAAI,WAAW,GAAG,SAAS,CAE5C;IAED,qDAAqD;IACrD,OAAO,CAAC,iBAAiB,CAAkD;IAE3E,4CAA4C;IAC5C,OAAO,CAAC,eAAe,CAA0C;IAEjE,SAAS,QAAO,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CA4BrC;IAEF,OAAO,KAAK,OAAO,GAMlB;YAEa,YAAY;IA2B1B,OAAO,KAAK,OAAO,GAOlB;IAED,OAAO,KAAK,QAAQ,GAiBnB;CACF"}
1
+ {"version":3,"file":"QueryResult.d.ts","sourceRoot":"","sources":["../../src/QueryResult.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,eAAe,EAAuB,MAAM,WAAW,CAAC;AACzG,OAAO,EAAe,KAAK,WAAW,EAAkB,MAAM,YAAY,CAAC;AAC3E,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EAIxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,mBAAmB,EAAsB,MAAM,YAAY,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD;;;GAGG;AACH,qBAAa,aAAa,CAAC,CAAC,SAAS,KAAK;IACxC,GAAG,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAM;IAExB,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,MAAM,CAAsC;IAEpD,OAAO,CAAC,WAAW,CAAC,CAAyB;IAC7C,OAAO,CAAC,eAAe,CAA8C;IAErE,OAAO,CAAC,WAAW,CAAqD;IACxE,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,aAAa,CAAwD;IAM7E,OAAO,CAAC,gBAAgB,CAGgD;IAExE,IAAI,MAAM,IAAI,kBAAkB,GAAG,SAAS,CAG3C;IAED,IAAI,WAAW,IAAI,mBAAmB,CAGrC;IAED,iDAAiD;IACjD,OAAO,CAAC,gBAAgB,CAA0C;IAElE,iFAAiF;IACjF,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,gBAAgB,CAAc;IAEtC;oFACgF;IAChF,UAAU,EAAE,cAAc,GAAG,SAAS,CAAC;IAEvC,gFAAgF;IAChF,OAAO,CAAC,aAAa,CAAuD;IAE5E,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAa;IAE7B,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,OAAO,KAAK,UAAU,GAKrB;gBAGC,GAAG,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACnC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,GAAG,SAAS;IA4GjC,gFAAgF;IAChF,OAAO,CAAC,SAAS;IA4BjB,yEAAyE;IACzE,OAAO,CAAC,iBAAiB;YAaX,UAAU;IAuCxB,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,2BAA2B;YAgBrB,QAAQ;IA4BtB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,YAAY;IAiBpB,OAAO,QAAO,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAI3C;IAEF,SAAS,IAAI,IAAI;IAOjB,IAAI,cAAc,IAAI,WAAW,GAAG,SAAS,CAE5C;IAED,qDAAqD;IACrD,OAAO,CAAC,iBAAiB,CAAkD;IAE3E,4CAA4C;IAC5C,OAAO,CAAC,eAAe,CAA0C;IAEjE,SAAS,QAAO,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CA4BrC;IAEF,OAAO,KAAK,OAAO,GAMlB;YAEa,YAAY;IA2B1B,OAAO,KAAK,OAAO,GAOlB;IAED,OAAO,KAAK,QAAQ,GAiBnB;CACF"}