fetchium 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/CHANGELOG.md +6 -5
  2. package/dist/cjs/development/QueryClient-CLi3ONNM.js +2 -0
  3. package/dist/cjs/development/QueryClient-CLi3ONNM.js.map +1 -0
  4. package/dist/cjs/development/QueryController-BQA49OYU.js +2 -0
  5. package/dist/cjs/development/QueryController-BQA49OYU.js.map +1 -0
  6. package/dist/cjs/development/index.js +1 -1
  7. package/dist/cjs/development/index.js.map +1 -1
  8. package/dist/cjs/development/mutation-CikIl_6k.js +2 -0
  9. package/dist/cjs/development/mutation-CikIl_6k.js.map +1 -0
  10. package/dist/cjs/development/react/index.js +1 -1
  11. package/dist/cjs/development/rest/index.js +2 -0
  12. package/dist/cjs/development/rest/index.js.map +1 -0
  13. package/dist/cjs/development/topic/index.js +2 -0
  14. package/dist/cjs/development/topic/index.js.map +1 -0
  15. package/dist/cjs/production/QueryClient-N0MJmuHW.js +2 -0
  16. package/dist/cjs/production/QueryClient-N0MJmuHW.js.map +1 -0
  17. package/dist/cjs/production/QueryController-BQA49OYU.js +2 -0
  18. package/dist/cjs/production/QueryController-BQA49OYU.js.map +1 -0
  19. package/dist/cjs/production/index.js +1 -1
  20. package/dist/cjs/production/index.js.map +1 -1
  21. package/dist/cjs/production/mutation-P_Yb4LI9.js +2 -0
  22. package/dist/cjs/production/mutation-P_Yb4LI9.js.map +1 -0
  23. package/dist/cjs/production/react/index.js +1 -1
  24. package/dist/cjs/production/rest/index.js +2 -0
  25. package/dist/cjs/production/rest/index.js.map +1 -0
  26. package/dist/cjs/production/topic/index.js +2 -0
  27. package/dist/cjs/production/topic/index.js.map +1 -0
  28. package/dist/esm/MutationResult.d.ts +0 -1
  29. package/dist/esm/MutationResult.d.ts.map +1 -1
  30. package/dist/esm/QueryClient.d.ts +26 -4
  31. package/dist/esm/QueryClient.d.ts.map +1 -1
  32. package/dist/esm/QueryController.d.ts +49 -0
  33. package/dist/esm/QueryController.d.ts.map +1 -0
  34. package/dist/esm/QueryResult.d.ts +10 -10
  35. package/dist/esm/QueryResult.d.ts.map +1 -1
  36. package/dist/esm/development/QueryClient-Dtde3pss.js +2572 -0
  37. package/dist/esm/development/QueryClient-Dtde3pss.js.map +1 -0
  38. package/dist/esm/development/QueryController-Ch_ncxiI.js +14 -0
  39. package/dist/esm/development/QueryController-Ch_ncxiI.js.map +1 -0
  40. package/dist/esm/development/index.js +29 -100
  41. package/dist/esm/development/index.js.map +1 -1
  42. package/dist/esm/development/mutation-UZshUQAf.js +58 -0
  43. package/dist/esm/development/mutation-UZshUQAf.js.map +1 -0
  44. package/dist/esm/development/react/index.js +1 -1
  45. package/dist/esm/development/rest/index.js +142 -0
  46. package/dist/esm/development/rest/index.js.map +1 -0
  47. package/dist/esm/development/{shared-Dq2yW78d.js → shared-DcuVH8Pf.js} +5 -5
  48. package/dist/esm/development/{shared-Dq2yW78d.js.map → shared-DcuVH8Pf.js.map} +1 -1
  49. package/dist/esm/development/stores/async.js +6 -6
  50. package/dist/esm/development/stores/sync.js +5 -5
  51. package/dist/esm/development/topic/index.js +86 -0
  52. package/dist/esm/development/topic/index.js.map +1 -0
  53. package/dist/esm/index.d.ts +5 -4
  54. package/dist/esm/index.d.ts.map +1 -1
  55. package/dist/esm/mutation.d.ts +6 -19
  56. package/dist/esm/mutation.d.ts.map +1 -1
  57. package/dist/esm/production/{QueryClient-BP0Z1rQV.js → QueryClient-YqnBxFy1.js} +972 -968
  58. package/dist/esm/production/QueryClient-YqnBxFy1.js.map +1 -0
  59. package/dist/esm/production/QueryController-Ch_ncxiI.js +14 -0
  60. package/dist/esm/production/QueryController-Ch_ncxiI.js.map +1 -0
  61. package/dist/esm/production/index.js +29 -100
  62. package/dist/esm/production/index.js.map +1 -1
  63. package/dist/esm/production/mutation-pgFl1uIY.js +58 -0
  64. package/dist/esm/production/mutation-pgFl1uIY.js.map +1 -0
  65. package/dist/esm/production/react/index.js +1 -1
  66. package/dist/esm/production/rest/index.js +142 -0
  67. package/dist/esm/production/rest/index.js.map +1 -0
  68. package/dist/esm/production/{shared-Dq2yW78d.js → shared-DcuVH8Pf.js} +5 -5
  69. package/dist/esm/production/{shared-Dq2yW78d.js.map → shared-DcuVH8Pf.js.map} +1 -1
  70. package/dist/esm/production/stores/async.js +6 -6
  71. package/dist/esm/production/stores/sync.js +5 -5
  72. package/dist/esm/production/topic/index.js +86 -0
  73. package/dist/esm/production/topic/index.js.map +1 -0
  74. package/dist/esm/query-types.d.ts +2 -4
  75. package/dist/esm/query-types.d.ts.map +1 -1
  76. package/dist/esm/query.d.ts +17 -39
  77. package/dist/esm/query.d.ts.map +1 -1
  78. package/dist/esm/rest/RESTMutation.d.ts +18 -0
  79. package/dist/esm/rest/RESTMutation.d.ts.map +1 -0
  80. package/dist/esm/rest/RESTQuery.d.ts +24 -0
  81. package/dist/esm/rest/RESTQuery.d.ts.map +1 -0
  82. package/dist/esm/rest/RESTQueryController.d.ts +34 -0
  83. package/dist/esm/rest/RESTQueryController.d.ts.map +1 -0
  84. package/dist/esm/rest/index.d.ts +5 -0
  85. package/dist/esm/rest/index.d.ts.map +1 -0
  86. package/dist/esm/stores/shared.d.ts.map +1 -1
  87. package/dist/esm/testing/MockClient.d.ts +64 -0
  88. package/dist/esm/testing/MockClient.d.ts.map +1 -0
  89. package/dist/esm/testing/auto-generate.d.ts +20 -0
  90. package/dist/esm/testing/auto-generate.d.ts.map +1 -0
  91. package/dist/esm/testing/entity-factory.d.ts +13 -0
  92. package/dist/esm/testing/entity-factory.d.ts.map +1 -0
  93. package/dist/esm/testing/index.d.ts +6 -0
  94. package/dist/esm/testing/index.d.ts.map +1 -0
  95. package/dist/esm/testing/types.d.ts +37 -0
  96. package/dist/esm/testing/types.d.ts.map +1 -0
  97. package/dist/esm/topic/TopicQuery.d.ts +10 -0
  98. package/dist/esm/topic/TopicQuery.d.ts.map +1 -0
  99. package/dist/esm/topic/TopicQueryController.d.ts +43 -0
  100. package/dist/esm/topic/TopicQueryController.d.ts.map +1 -0
  101. package/dist/esm/topic/index.d.ts +3 -0
  102. package/dist/esm/topic/index.d.ts.map +1 -0
  103. package/dist/esm/typeDefs.d.ts +1 -1
  104. package/dist/esm/types.d.ts +9 -4
  105. package/dist/esm/types.d.ts.map +1 -1
  106. package/package.json +51 -4
  107. package/plugin/.claude-plugin/plugin.json +10 -0
  108. package/plugin/agents/fetchium.md +168 -0
  109. package/plugin/docs/api/fetchium-react.md +135 -0
  110. package/plugin/docs/api/fetchium.md +674 -0
  111. package/plugin/docs/api/stores-async.md +219 -0
  112. package/plugin/docs/api/stores-sync.md +133 -0
  113. package/plugin/docs/core/entities.md +351 -0
  114. package/plugin/docs/core/queries.md +600 -0
  115. package/plugin/docs/core/streaming.md +550 -0
  116. package/plugin/docs/core/types.md +374 -0
  117. package/plugin/docs/data/caching.md +298 -0
  118. package/plugin/docs/data/live-data.md +435 -0
  119. package/plugin/docs/data/mutations.md +465 -0
  120. package/plugin/docs/guides/auth.md +318 -0
  121. package/plugin/docs/guides/error-handling.md +351 -0
  122. package/plugin/docs/guides/offline.md +270 -0
  123. package/plugin/docs/guides/testing.md +301 -0
  124. package/plugin/docs/quickstart.md +170 -0
  125. package/plugin/docs/reference/pagination.md +519 -0
  126. package/plugin/docs/reference/rest-queries.md +107 -0
  127. package/plugin/docs/reference/why-signalium.md +364 -0
  128. package/plugin/docs/setup/project-setup.md +319 -0
  129. package/plugin/install.mjs +88 -0
  130. package/plugin/skills/design/SKILL.md +140 -0
  131. package/plugin/skills/teach/SKILL.md +105 -0
  132. package/dist/cjs/development/QueryClient-CpmwggOn.js +0 -2
  133. package/dist/cjs/development/QueryClient-CpmwggOn.js.map +0 -1
  134. package/dist/cjs/production/QueryClient-qi3bR0eD.js +0 -2
  135. package/dist/cjs/production/QueryClient-qi3bR0eD.js.map +0 -1
  136. package/dist/esm/development/QueryClient-DRZtPKFD.js +0 -2568
  137. package/dist/esm/development/QueryClient-DRZtPKFD.js.map +0 -1
  138. package/dist/esm/production/QueryClient-BP0Z1rQV.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/topic/TopicQuery.ts","../../../../src/topic/TopicQueryController.ts"],"sourcesContent":["import { Query } from '../query.js';\nimport type { TopicQueryController } from './TopicQueryController.js';\nimport type { QueryConfigOptions } from '../query-types.js';\n\n// ================================\n// TopicQuery — declarative topic-based query definition\n// ================================\n\nexport abstract class TopicQuery extends Query {\n static override controller: typeof TopicQueryController;\n\n abstract topic: string;\n\n getIdentityKey(): string {\n return `topic:${this.topic}`;\n }\n\n getConfig(): QueryConfigOptions {\n return {\n staleTime: 0,\n subscribe: () => {\n return () => {\n const controller = (this as Record<string, any>)._topicController as TopicQueryController | undefined;\n controller?.unsubscribe(this.topic);\n };\n },\n };\n }\n}\n","import { QueryController } from '../QueryController.js';\nimport type { Query } from '../query.js';\nimport type { MutationEvent } from '../types.js';\n\n// ================================\n// TopicQueryController — abstract controller for topic-based subscriptions\n// ================================\n\ninterface TopicCtx extends Query {\n topic: string;\n _topicController?: TopicQueryController;\n}\n\ninterface TopicState {\n status: 'pending' | 'fulfilled' | 'rejected';\n promise?: Promise<unknown>;\n resolve?: (data: unknown) => void;\n reject?: (error: unknown) => void;\n data?: unknown;\n error?: unknown;\n}\n\nexport abstract class TopicQueryController extends QueryController {\n private _topics = new Map<string, TopicState>();\n\n /**\n * Called when a query activates for a given topic.\n * Implementations should start delivering data for this topic,\n * calling `fulfillTopic()` when initial data is available and\n * `sendMutationEvent()` for ongoing updates.\n */\n abstract subscribe(topic: string): void;\n\n /**\n * Called when the query deactivates. Implementations should\n * tear down any resources for this topic.\n */\n abstract unsubscribe(topic: string): void;\n\n /**\n * Resolve the pending promise for a topic with initial data.\n * Can be called before `send()` — the data will be picked up\n * when the query activates.\n */\n protected fulfillTopic(topic: string, data: unknown): void {\n const state = this._topics.get(topic);\n\n if (state === undefined) {\n this._topics.set(topic, { status: 'fulfilled', data });\n return;\n }\n\n if (state.status === 'pending') {\n state.status = 'fulfilled';\n state.data = data;\n state.resolve!(data);\n }\n }\n\n /**\n * Reject the pending promise for a topic.\n * Can be called before `send()` — the error will be propagated\n * when the query activates.\n */\n protected rejectTopic(topic: string, error: unknown): void {\n const state = this._topics.get(topic);\n\n if (state === undefined) {\n this._topics.set(topic, { status: 'rejected', error });\n return;\n }\n\n if (state.status === 'pending') {\n state.status = 'rejected';\n state.error = error;\n state.reject!(error);\n }\n }\n\n /**\n * Clears internal state for a topic. Called automatically by\n * `unsubscribe` — subclasses generally don't need to call this.\n */\n protected clearTopic(topic: string): void {\n this._topics.delete(topic);\n }\n\n protected clearAll(): void {\n this._topics.clear();\n }\n\n override async send(ctx: Query, _signal: AbortSignal): Promise<unknown> {\n const topicCtx = ctx as TopicCtx;\n topicCtx._topicController = this;\n const topic = topicCtx.topic;\n\n const existing = this._topics.get(topic);\n\n if (existing) {\n switch (existing.status) {\n case 'fulfilled':\n return existing.data;\n case 'rejected':\n throw existing.error;\n case 'pending':\n return existing.promise;\n }\n }\n\n // No state yet — create a deferred and subscribe\n let resolve!: (data: unknown) => void;\n let reject!: (error: unknown) => void;\n const promise = new Promise<unknown>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n this._topics.set(topic, { status: 'pending', promise, resolve, reject });\n this.subscribe(topic);\n\n return promise;\n }\n\n /**\n * Convenience wrapper — pushes a mutation event through the QueryClient\n * so that entities and live collections are updated reactively.\n */\n protected sendMutationEvent(event: MutationEvent): void {\n this.queryClient!.applyMutationEvent(event);\n }\n}\n"],"names":["TopicQuery","Query","TopicQueryController","QueryController","topic","data","state","error","ctx","_signal","topicCtx","existing","resolve","reject","promise","res","rej","event"],"mappings":";;AAQO,MAAeA,UAAmBC,EAAM;AAAA,EAC7C,OAAgB;AAAA,EAIhB,iBAAyB;AACvB,WAAO,SAAS,KAAK,KAAK;AAAA,EAC5B;AAAA,EAEA,YAAgC;AAC9B,WAAO;AAAA,MACL,WAAW;AAAA,MACX,WAAW,MACF,MAAM;AAEX,QADoB,KAA6B,kBACrC,YAAY,KAAK,KAAK;AAAA,MACpC;AAAA,IACF;AAAA,EAEJ;AACF;ACNO,MAAeC,UAA6BC,EAAgB;AAAA,EACzD,8BAAc,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBZ,aAAaC,GAAeC,GAAqB;AACzD,UAAMC,IAAQ,KAAK,QAAQ,IAAIF,CAAK;AAEpC,QAAIE,MAAU,QAAW;AACvB,WAAK,QAAQ,IAAIF,GAAO,EAAE,QAAQ,aAAa,MAAAC,GAAM;AACrD;AAAA,IACF;AAEA,IAAIC,EAAM,WAAW,cACnBA,EAAM,SAAS,aACfA,EAAM,OAAOD,GACbC,EAAM,QAASD,CAAI;AAAA,EAEvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOU,YAAYD,GAAeG,GAAsB;AACzD,UAAMD,IAAQ,KAAK,QAAQ,IAAIF,CAAK;AAEpC,QAAIE,MAAU,QAAW;AACvB,WAAK,QAAQ,IAAIF,GAAO,EAAE,QAAQ,YAAY,OAAAG,GAAO;AACrD;AAAA,IACF;AAEA,IAAID,EAAM,WAAW,cACnBA,EAAM,SAAS,YACfA,EAAM,QAAQC,GACdD,EAAM,OAAQC,CAAK;AAAA,EAEvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMU,WAAWH,GAAqB;AACxC,SAAK,QAAQ,OAAOA,CAAK;AAAA,EAC3B;AAAA,EAEU,WAAiB;AACzB,SAAK,QAAQ,MAAA;AAAA,EACf;AAAA,EAEA,MAAe,KAAKI,GAAYC,GAAwC;AACtE,UAAMC,IAAWF;AACjB,IAAAE,EAAS,mBAAmB;AAC5B,UAAMN,IAAQM,EAAS,OAEjBC,IAAW,KAAK,QAAQ,IAAIP,CAAK;AAEvC,QAAIO;AACF,cAAQA,EAAS,QAAA;AAAA,QACf,KAAK;AACH,iBAAOA,EAAS;AAAA,QAClB,KAAK;AACH,gBAAMA,EAAS;AAAA,QACjB,KAAK;AACH,iBAAOA,EAAS;AAAA,MAAA;AAKtB,QAAIC,GACAC;AACJ,UAAMC,IAAU,IAAI,QAAiB,CAACC,GAAKC,MAAQ;AACjD,MAAAJ,IAAUG,GACVF,IAASG;AAAA,IACX,CAAC;AAED,gBAAK,QAAQ,IAAIZ,GAAO,EAAE,QAAQ,WAAW,SAAAU,GAAS,SAAAF,GAAS,QAAAC,GAAQ,GACvE,KAAK,UAAUT,CAAK,GAEbU;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMU,kBAAkBG,GAA4B;AACtD,SAAK,YAAa,mBAAmBA,CAAK;AAAA,EAC5C;AACF;"}
@@ -1,9 +1,7 @@
1
1
  import { type Signal } from 'signalium';
2
- import { NetworkMode, RetryConfig, BaseUrlValue, QueryRequestInit } from './types.js';
2
+ import { NetworkMode, RetryConfig, BaseUrlValue } from './types.js';
3
3
  import { QueryDefinition } from './query.js';
4
4
  export interface QueryContext {
5
- fetch: (url: string, init?: QueryRequestInit) => Promise<Response>;
6
- baseUrl?: BaseUrlValue;
7
5
  log?: {
8
6
  error?: (message: string, error?: unknown) => void;
9
7
  warn?: (message: string, error?: unknown) => void;
@@ -21,7 +19,7 @@ export interface QueryCacheOptions {
21
19
  maxCount?: number;
22
20
  cacheTime?: number;
23
21
  }
24
- export interface LoadNextConfig {
22
+ export interface FetchNextConfig {
25
23
  /** Override the URL/path for the next page request. Can be a FieldRef (e.g. this.result.nextUrl). */
26
24
  url?: unknown;
27
25
  /** Search params for the next page. Values can be FieldRefs (e.g. this.result.nextCursor). */
@@ -1 +1 @@
1
- {"version":3,"file":"query-types.d.ts","sourceRoot":"","sources":["../../src/query-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-types.d.ts","sourceRoot":"","sources":["../../src/query-types.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,9 @@
1
- import { ExtractType, TypeDef, QueryRequestOptions, TypeDefShape, RetryConfig, QueryPromise } from './types.js';
2
- import { QueryCacheOptions, QueryConfigOptions, LoadNextConfig, QueryContext, QueryParams } from './QueryClient.js';
1
+ import { ExtractType, TypeDef, TypeDefShape, RetryConfig, QueryPromise } from './types.js';
2
+ import { QueryCacheOptions, QueryConfigOptions, FetchNextConfig, QueryParams } from './QueryClient.js';
3
3
  import { ValidatorDef } from './typeDefs.js';
4
4
  import { HasRequiredKeys, Optionalize, Signalize } from './type-utils.js';
5
5
  import { type CapturedDefinition } from './fieldRef.js';
6
- export interface ResolvedLoadNext {
7
- url?: string;
8
- searchParams?: Record<string, unknown>;
9
- }
6
+ import type { QueryController } from './QueryController.js';
10
7
  export interface ResolvedRetryConfig {
11
8
  retries: number;
12
9
  retryDelay: (attempt: number) => number;
@@ -14,43 +11,22 @@ export interface ResolvedRetryConfig {
14
11
  export declare function resolveRetryConfig(retryOption: RetryConfig | number | boolean | undefined, isServer?: boolean): ResolvedRetryConfig;
15
12
  export declare abstract class Query {
16
13
  static cache?: QueryCacheOptions;
14
+ /**
15
+ * The controller class responsible for sending requests for this query type.
16
+ * Must be set on each concrete Query subclass (or inherited from a base like RESTQuery).
17
+ */
18
+ static controller?: typeof QueryController;
17
19
  params?: Record<string, TypeDef>;
18
20
  abstract result: TypeDefShape;
19
21
  config?: QueryConfigOptions;
20
- context: QueryContext;
21
- response: Response | undefined;
22
- signal: AbortSignal;
22
+ context: import('./query-types.js').QueryContext;
23
23
  refetch: () => void;
24
24
  resultData: Record<string, unknown>;
25
- rawLoadNext: LoadNextConfig | undefined;
26
- abstract getStorageKey(): unknown;
27
- abstract send(): Promise<unknown>;
25
+ rawFetchNext: FetchNextConfig | undefined;
26
+ abstract getIdentityKey(): unknown;
28
27
  getConfig?(): QueryConfigOptions | undefined;
29
- sendNext?(): Promise<unknown>;
30
- hasNext?(): boolean;
31
28
  constructor();
32
29
  }
33
- export declare abstract class RESTQuery extends Query {
34
- method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
35
- path?: string;
36
- searchParams?: Record<string, unknown>;
37
- body?: Record<string, unknown>;
38
- headers?: HeadersInit;
39
- requestOptions?: QueryRequestOptions;
40
- loadNext?: LoadNextConfig;
41
- getStorageKey(): string;
42
- getPath?(): string | undefined;
43
- getMethod?(): string;
44
- getSearchParams?(): Record<string, unknown> | undefined;
45
- getBody?(): Record<string, unknown> | undefined;
46
- getRequestOptions?(): QueryRequestOptions | undefined;
47
- getLoadNext?(): LoadNextConfig | undefined;
48
- send(): Promise<unknown>;
49
- private resolveLoadNext;
50
- hasNext(): boolean;
51
- sendNext(): Promise<unknown>;
52
- private executeRequest;
53
- }
54
30
  export interface ResolvedQueryOptions {
55
31
  config: QueryConfigOptions | undefined;
56
32
  retryConfig: ResolvedRetryConfig;
@@ -62,18 +38,20 @@ export interface QueryDefinitionStatics {
62
38
  * ValidatorDef. */
63
39
  readonly shape: ValidatorDef<unknown>;
64
40
  readonly cache: QueryCacheOptions | undefined;
65
- /** Raw loadNext config with unresolved FieldRefs, extracted before reification. */
66
- readonly rawLoadNext: LoadNextConfig | undefined;
67
- /** Whether the query class implements sendNext(). */
41
+ /** Raw fetchNext config with unresolved FieldRefs, extracted before reification. */
42
+ readonly rawFetchNext: FetchNextConfig | undefined;
43
+ /** Whether the controller implements sendNext(). */
68
44
  readonly hasSendNext: boolean;
69
45
  /** Whether the result shape is already an entity (vs synthetic wrapper). */
70
46
  readonly isEntityResult: boolean;
47
+ /** The controller class responsible for sending requests. */
48
+ readonly controllerClass: typeof QueryController;
71
49
  }
72
50
  export declare class QueryDefinition<Params extends QueryParams | undefined, Result, StreamType> {
73
51
  readonly captured: CapturedDefinition<Query>;
74
52
  readonly statics: QueryDefinitionStatics;
75
53
  constructor(statics: QueryDefinitionStatics, captured: CapturedDefinition<Query>);
76
- createExecutionContext(actualParams: Record<string, unknown>, queryContext: QueryContext): Query;
54
+ createExecutionContext(actualParams: Record<string, unknown>, queryContext: import('./query-types.js').QueryContext): Query;
77
55
  resolveOptions(ctx: Query): ResolvedQueryOptions;
78
56
  static for(QueryClass: new () => Query): QueryDefinition<any, any, any>;
79
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Mutation } from '../mutation.js';
2
+ import type { BaseUrlValue, QueryRequestOptions } from '../types.js';
3
+ import { RESTQueryController } from './RESTQueryController.js';
4
+ export declare abstract class RESTMutation extends Mutation {
5
+ static controller: typeof RESTQueryController;
6
+ path?: string;
7
+ baseUrl?: BaseUrlValue;
8
+ method: 'POST' | 'PUT' | 'DELETE' | 'PATCH';
9
+ body?: Record<string, unknown>;
10
+ headers?: HeadersInit;
11
+ requestOptions?: QueryRequestOptions;
12
+ getIdentityKey(): string;
13
+ getPath?(): string | undefined;
14
+ getMethod?(): string;
15
+ getBody?(): Record<string, unknown> | undefined;
16
+ getRequestOptions?(): QueryRequestOptions | undefined;
17
+ }
18
+ //# sourceMappingURL=RESTMutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RESTMutation.d.ts","sourceRoot":"","sources":["../../../src/rest/RESTMutation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,8BAAsB,YAAa,SAAQ,QAAQ;IACjD,OAAgB,UAAU,6BAAuB;IAEjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAU;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,cAAc,CAAC,EAAE,mBAAmB,CAAC;IAErC,cAAc,IAAI,MAAM;IAIxB,OAAO,CAAC,IAAI,MAAM,GAAG,SAAS;IAC9B,SAAS,CAAC,IAAI,MAAM;IACpB,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAC/C,iBAAiB,CAAC,IAAI,mBAAmB,GAAG,SAAS;CACtD"}
@@ -0,0 +1,24 @@
1
+ import { Query } from '../query.js';
2
+ import { RESTQueryController } from './RESTQueryController.js';
3
+ import type { FetchNextConfig } from '../query-types.js';
4
+ import type { BaseUrlValue, QueryRequestOptions } from '../types.js';
5
+ export declare abstract class RESTQuery extends Query {
6
+ static controller: typeof RESTQueryController;
7
+ method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
8
+ path?: string;
9
+ baseUrl?: BaseUrlValue;
10
+ searchParams?: Record<string, unknown>;
11
+ body?: Record<string, unknown>;
12
+ headers?: HeadersInit;
13
+ requestOptions?: QueryRequestOptions;
14
+ fetchNext?: FetchNextConfig;
15
+ response: Response | undefined;
16
+ getIdentityKey(): string;
17
+ getPath?(): string | undefined;
18
+ getMethod?(): string;
19
+ getSearchParams?(): Record<string, unknown> | undefined;
20
+ getBody?(): Record<string, unknown> | undefined;
21
+ getRequestOptions?(): QueryRequestOptions | undefined;
22
+ getFetchNext?(): FetchNextConfig | undefined;
23
+ }
24
+ //# sourceMappingURL=RESTQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RESTQuery.d.ts","sourceRoot":"","sources":["../../../src/rest/RESTQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAMrE,8BAAsB,SAAU,SAAQ,KAAK;IAC3C,OAAgB,UAAU,6BAAuB;IAEjD,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAS;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,cAAc,CAAC,EAAE,mBAAmB,CAAC;IACrC,SAAS,CAAC,EAAE,eAAe,CAAC;IAEpB,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC;IAEvC,cAAc,IAAI,MAAM;IAKxB,OAAO,CAAC,IAAI,MAAM,GAAG,SAAS;IAC9B,SAAS,CAAC,IAAI,MAAM;IACpB,eAAe,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IACvD,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAC/C,iBAAiB,CAAC,IAAI,mBAAmB,GAAG,SAAS;IACrD,YAAY,CAAC,IAAI,eAAe,GAAG,SAAS;CAC7C"}
@@ -0,0 +1,34 @@
1
+ import { QueryController } from '../QueryController.js';
2
+ import type { Query } from '../query.js';
3
+ import type { Mutation } from '../mutation.js';
4
+ import type { QueryRequestInit, BaseUrlValue } from '../types.js';
5
+ export interface ResolvedFetchNext {
6
+ url?: string;
7
+ searchParams?: Record<string, unknown>;
8
+ }
9
+ export interface RESTQueryControllerOptions {
10
+ fetch?: (url: string, init?: QueryRequestInit) => Promise<Response>;
11
+ baseUrl?: BaseUrlValue;
12
+ }
13
+ export declare class RESTQueryController extends QueryController {
14
+ private readonly _fetch;
15
+ private readonly _baseUrl;
16
+ constructor(options?: RESTQueryControllerOptions);
17
+ send(ctx: Query, signal: AbortSignal): Promise<unknown>;
18
+ sendNext(ctx: Query, signal: AbortSignal): Promise<unknown>;
19
+ hasNext(ctx: Query): boolean;
20
+ private resolveFetchNext;
21
+ /**
22
+ * Resolves a path to a full URL.
23
+ *
24
+ * - Absolute URLs (`https://...`, `//...`) are returned as-is.
25
+ * - Root-relative paths (`/foo`) are prepended with the resolved baseUrl.
26
+ * The baseUrl priority is: per-query/mutation > controller-level > `location.origin`.
27
+ * If none is available and the path is root-relative, an error is thrown.
28
+ * - Other paths (e.g. `example.com/foo`) are returned as-is.
29
+ */
30
+ private buildUrl;
31
+ private executeRequest;
32
+ sendMutation(ctx: Mutation, signal: AbortSignal): Promise<unknown>;
33
+ }
34
+ //# sourceMappingURL=RESTQueryController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RESTQueryController.d.ts","sourceRoot":"","sources":["../../../src/rest/RESTQueryController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAuB,MAAM,aAAa,CAAC;AAMvF,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAMD,MAAM,WAAW,0BAA0B;IACzC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpE,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAMD,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA8D;IACrF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;gBAExC,OAAO,CAAC,EAAE,0BAA0B;IAOjC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvD,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAQjE,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO;IAsBrC,OAAO,CAAC,gBAAgB;IAmBxB;;;;;;;;OAQG;IACH,OAAO,CAAC,QAAQ;YAyBF,cAAc;IA0Db,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;CA+BlF"}
@@ -0,0 +1,5 @@
1
+ export { RESTQuery } from './RESTQuery.js';
2
+ export { RESTMutation } from './RESTMutation.js';
3
+ export { RESTQueryController } from './RESTQueryController.js';
4
+ export type { ResolvedFetchNext, RESTQueryControllerOptions } from './RESTQueryController.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rest/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/stores/shared.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW,OAAQ,MAAM,WAAyB,CAAC;AAChE,eAAO,MAAM,cAAc,OAAQ,MAAM,WAA4B,CAAC;AACtE,eAAO,MAAM,YAAY,OAAQ,MAAM,WAA0B,CAAC;AAClE,eAAO,MAAM,eAAe,OAAQ,MAAM,WAA6B,CAAC;AAExE,eAAO,MAAM,WAAW,eAAgB,MAAM,WAAiC,CAAC;AAEhF,eAAO,MAAM,cAAc,eAAgB,MAAM,WAAoC,CAAC;AACtF,eAAO,MAAM,eAAe,eAAgB,MAAM,WAAqC,CAAC;AAExF,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAGnD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,kBAAkB,QAAU,CAAC;AAC1C,eAAO,MAAM,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/stores/shared.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,WAAW,GAAI,IAAI,MAAM,WAAyB,CAAC;AAChE,eAAO,MAAM,cAAc,GAAI,IAAI,MAAM,WAA4B,CAAC;AACtE,eAAO,MAAM,YAAY,GAAI,IAAI,MAAM,WAA0B,CAAC;AAClE,eAAO,MAAM,eAAe,GAAI,IAAI,MAAM,WAA6B,CAAC;AAExE,eAAO,MAAM,WAAW,GAAI,YAAY,MAAM,WAAiC,CAAC;AAEhF,eAAO,MAAM,cAAc,GAAI,YAAY,MAAM,WAAoC,CAAC;AACtF,eAAO,MAAM,eAAe,GAAI,YAAY,MAAM,WAAqC,CAAC;AAExF,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAGnD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,kBAAkB,QAAU,CAAC;AAC1C,eAAO,MAAM,eAAe,IAAI,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { QueryClient } from '../QueryClient.js';
2
+ import { Query } from '../query.js';
3
+ import { Mutation } from '../mutation.js';
4
+ import type { Entity } from '../proxy.js';
5
+ import type { MockFetchCall, EntityGenerators, ResponseTransform } from './types.js';
6
+ import { GeneratorContext } from './auto-generate.js';
7
+ interface MockRoute {
8
+ method: string;
9
+ url: string;
10
+ responses: MockRouteResponse[];
11
+ currentIndex: number;
12
+ }
13
+ interface MockRouteResponse {
14
+ data?: unknown;
15
+ status: number;
16
+ headers: Record<string, string>;
17
+ delay: number;
18
+ error?: Error;
19
+ networkError?: string;
20
+ }
21
+ export declare class MockQueryBuilder<T extends Query | Mutation = Query> {
22
+ private route;
23
+ private mockClient;
24
+ constructor(mockClient: MockClient, method: string, url: string);
25
+ respond(data: unknown): this;
26
+ thenRespond(data: unknown): this;
27
+ auto(overrides?: Record<string, unknown>): this;
28
+ error(status?: number, body?: unknown): this;
29
+ networkError(message?: string): this;
30
+ raw(data: unknown): this;
31
+ delay(ms: number): this;
32
+ private _pendingDelay;
33
+ private applyPendingDelay;
34
+ }
35
+ export declare class MockClient {
36
+ private _client;
37
+ private routes;
38
+ private _calls;
39
+ private queryClassMap;
40
+ private _responseTransforms;
41
+ /** @internal */
42
+ _generatorCtx: GeneratorContext;
43
+ constructor();
44
+ get client(): QueryClient;
45
+ get calls(): readonly MockFetchCall[];
46
+ when<T extends Query>(queryClass: new () => T, params?: Record<string, unknown>): MockQueryBuilder<T>;
47
+ entity<T extends Entity>(cls: new () => T, overrides?: Record<string, unknown>): Record<string, unknown>;
48
+ define<T extends Entity>(cls: new () => T, generators: EntityGenerators<T>): void;
49
+ wasCalled(queryClass: new () => Query | Mutation, params?: Record<string, unknown>): boolean;
50
+ lastCall(queryClass: new () => Query | Mutation): MockFetchCall | undefined;
51
+ _setResponseTransform(key: string, transform: ResponseTransform): void;
52
+ _clearResponseTransform(key: string): void;
53
+ _clearAllResponseTransforms(): void;
54
+ reset(): void;
55
+ destroy(): void;
56
+ /** @internal */
57
+ _registerRoute(route: MockRoute): void;
58
+ /** @internal */
59
+ _getQueryClassForRoute(route: MockRoute): (new () => Query | Mutation) | undefined;
60
+ private _mockFetch;
61
+ private _findRoute;
62
+ }
63
+ export {};
64
+ //# sourceMappingURL=MockClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockClient.d.ts","sourceRoot":"","sources":["../../../src/testing/MockClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { type InternalTypeDef, type InternalObjectShape } from '../types.js';
2
+ import type { Entity } from '../proxy.js';
3
+ import type { FieldGenerator } from './types.js';
4
+ export declare class GeneratorContext {
5
+ private idCounters;
6
+ private seqCounters;
7
+ private visiting;
8
+ private factories;
9
+ registerFactory(cls: new () => Entity, generators: Record<string, FieldGenerator | unknown>): void;
10
+ nextId(typename?: string): string;
11
+ nextSeq(typename?: string): number;
12
+ getFactory(cls: new () => Entity): Record<string, FieldGenerator | unknown> | undefined;
13
+ enterEntity(typename: string): boolean;
14
+ leaveEntity(typename: string): void;
15
+ reset(): void;
16
+ }
17
+ export declare function generateFromTypeDef(typeDef: InternalTypeDef, fieldName: string, ctx: GeneratorContext): unknown;
18
+ export declare function generateEntityData(cls: new () => Entity, overrides?: Record<string, unknown>, ctx?: GeneratorContext): Record<string, unknown>;
19
+ export declare function generateQueryResponse(resultDef: InternalTypeDef | InternalObjectShape, ctx: GeneratorContext, overrides?: Record<string, unknown>): unknown;
20
+ //# sourceMappingURL=auto-generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-generate.d.ts","sourceRoot":"","sources":["../../../src/testing/auto-generate.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,eAAe,EAAE,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,SAAS,CAAyE;IAE1F,eAAe,CAAC,GAAG,EAAE,UAAU,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,IAAI;IAIlG,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAQjC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAQlC,UAAU,CAAC,GAAG,EAAE,UAAU,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,SAAS;IAIvF,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAMtC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAInC,KAAK,IAAI,IAAI;CAKd;AAMD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAe/G;AAoKD,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,UAAU,MAAM,EACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,GAAG,CAAC,EAAE,gBAAgB,GACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,eAAe,GAAG,mBAAmB,EAChD,GAAG,EAAE,gBAAgB,EACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAgBT"}
@@ -0,0 +1,13 @@
1
+ import type { Entity } from '../proxy.js';
2
+ import type { EntityGenerators } from './types.js';
3
+ import { GeneratorContext } from './auto-generate.js';
4
+ export declare class EntityFactory<T extends Entity> {
5
+ private cls;
6
+ private generators;
7
+ private ctx;
8
+ constructor(cls: new () => T, generators: EntityGenerators<T>, ctx?: GeneratorContext);
9
+ build(overrides?: Partial<Record<string, unknown>>): Record<string, unknown>;
10
+ buildMany(count: number, overrides?: Partial<Record<string, unknown>>): Record<string, unknown>[];
11
+ }
12
+ export declare function defineFactory<T extends Entity>(cls: new () => T, generators: EntityGenerators<T>): EntityFactory<T>;
13
+ //# sourceMappingURL=entity-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-factory.d.ts","sourceRoot":"","sources":["../../../src/testing/entity-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAkB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAsB,MAAM,oBAAoB,CAAC;AAE1E,qBAAa,aAAa,CAAC,CAAC,SAAS,MAAM;IACzC,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,GAAG,CAAmB;gBAElB,GAAG,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,gBAAgB;IAOrF,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI5E,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;CAOlG;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAEnH"}
@@ -0,0 +1,6 @@
1
+ export { MockClient, MockQueryBuilder } from './MockClient.js';
2
+ export { generateEntityData as entity } from './auto-generate.js';
3
+ export { GeneratorContext } from './auto-generate.js';
4
+ export { defineFactory, EntityFactory } from './entity-factory.js';
5
+ export type { DotPaths, VaryableFields, MockFetchCall, FieldGenerator, EntityGenerators, ResponseTransform, } from './types.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAG/D,OAAO,EAAE,kBAAkB,IAAI,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGnE,YAAY,EACV,QAAQ,EACR,cAAc,EACd,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { Query } from '../query.js';
2
+ import type { Entity } from '../proxy.js';
3
+ import type { ExtractType, TypeDefShape } from '../types.js';
4
+ type Primitive = string | number | boolean | null | undefined | Date;
5
+ type DataKeys<T> = {
6
+ [K in keyof T & string]: K extends `__${string}` ? never : T[K] extends (...args: any[]) => any ? never : K;
7
+ }[keyof T & string];
8
+ export type DotPaths<T, Depth extends unknown[] = []> = Depth['length'] extends 5 ? never : T extends Primitive ? never : T extends (infer U)[] ? DotPaths<U, Depth> : T extends object ? {
9
+ [K in DataKeys<T>]: K | `${K}.${DotPaths<NonNullable<T[K]>, [...Depth, unknown]>}`;
10
+ }[DataKeys<T>] : never;
11
+ export type VaryableFields<T extends Query> = DotPaths<ExtractType<T['result']>>;
12
+ export type MockQueryResponse<T extends Query> = T['result'] extends TypeDefShape ? RawResponseData<ExtractType<T['result']>> : unknown;
13
+ export type RawResponseData<T> = T extends Entity ? RawEntityData<T> : T extends (infer U)[] ? RawResponseData<U>[] : T extends object ? {
14
+ [K in keyof T]?: RawResponseData<T[K]>;
15
+ } : T;
16
+ export type RawEntityData<T extends Entity> = {
17
+ [K in keyof T as K extends `__${string}` ? K : K]?: T[K] extends Entity ? RawEntityData<T[K]> : T[K] extends Entity[] ? RawEntityData<T[K][number]>[] : T[K];
18
+ };
19
+ export type FieldGenerator<T = unknown> = (seq: number, fields: Record<string, unknown>) => T;
20
+ export type EntityGenerators<T extends Entity> = {
21
+ [K in keyof T as K extends `__${string}` ? never : K]?: unknown | FieldGenerator;
22
+ };
23
+ export interface MockFetchCall {
24
+ url: string;
25
+ method: string;
26
+ body?: unknown;
27
+ options: RequestInit;
28
+ }
29
+ export interface MockFetchOptions {
30
+ status?: number;
31
+ headers?: Record<string, string>;
32
+ delay?: number;
33
+ error?: Error;
34
+ }
35
+ export type ResponseTransform = (data: unknown) => unknown;
36
+ export {};
37
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/testing/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Query } from '../query.js';
2
+ import type { TopicQueryController } from './TopicQueryController.js';
3
+ import type { QueryConfigOptions } from '../query-types.js';
4
+ export declare abstract class TopicQuery extends Query {
5
+ static controller: typeof TopicQueryController;
6
+ abstract topic: string;
7
+ getIdentityKey(): string;
8
+ getConfig(): QueryConfigOptions;
9
+ }
10
+ //# sourceMappingURL=TopicQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TopicQuery.d.ts","sourceRoot":"","sources":["../../../src/topic/TopicQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAM5D,8BAAsB,UAAW,SAAQ,KAAK;IAC5C,OAAgB,UAAU,EAAE,OAAO,oBAAoB,CAAC;IAExD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,cAAc,IAAI,MAAM;IAIxB,SAAS,IAAI,kBAAkB;CAWhC"}
@@ -0,0 +1,43 @@
1
+ import { QueryController } from '../QueryController.js';
2
+ import type { Query } from '../query.js';
3
+ import type { MutationEvent } from '../types.js';
4
+ export declare abstract class TopicQueryController extends QueryController {
5
+ private _topics;
6
+ /**
7
+ * Called when a query activates for a given topic.
8
+ * Implementations should start delivering data for this topic,
9
+ * calling `fulfillTopic()` when initial data is available and
10
+ * `sendMutationEvent()` for ongoing updates.
11
+ */
12
+ abstract subscribe(topic: string): void;
13
+ /**
14
+ * Called when the query deactivates. Implementations should
15
+ * tear down any resources for this topic.
16
+ */
17
+ abstract unsubscribe(topic: string): void;
18
+ /**
19
+ * Resolve the pending promise for a topic with initial data.
20
+ * Can be called before `send()` — the data will be picked up
21
+ * when the query activates.
22
+ */
23
+ protected fulfillTopic(topic: string, data: unknown): void;
24
+ /**
25
+ * Reject the pending promise for a topic.
26
+ * Can be called before `send()` — the error will be propagated
27
+ * when the query activates.
28
+ */
29
+ protected rejectTopic(topic: string, error: unknown): void;
30
+ /**
31
+ * Clears internal state for a topic. Called automatically by
32
+ * `unsubscribe` — subclasses generally don't need to call this.
33
+ */
34
+ protected clearTopic(topic: string): void;
35
+ protected clearAll(): void;
36
+ send(ctx: Query, _signal: AbortSignal): Promise<unknown>;
37
+ /**
38
+ * Convenience wrapper — pushes a mutation event through the QueryClient
39
+ * so that entities and live collections are updated reactively.
40
+ */
41
+ protected sendMutationEvent(event: MutationEvent): void;
42
+ }
43
+ //# sourceMappingURL=TopicQueryController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TopicQueryController.d.ts","sourceRoot":"","sources":["../../../src/topic/TopicQueryController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAoBjD,8BAAsB,oBAAqB,SAAQ,eAAe;IAChE,OAAO,CAAC,OAAO,CAAiC;IAEhD;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAEvC;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAEzC;;;;OAIG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAe1D;;;;OAIG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAe1D;;;OAGG;IACH,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIzC,SAAS,CAAC,QAAQ,IAAI,IAAI;IAIX,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAgCvE;;;OAGG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;CAGxD"}
@@ -0,0 +1,3 @@
1
+ export { TopicQuery } from './TopicQuery.js';
2
+ export { TopicQueryController } from './TopicQueryController.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/topic/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -27,7 +27,7 @@ export declare class ValidatorDef<T> {
27
27
  gcTime?: number;
28
28
  } | undefined;
29
29
  /**
30
- * Live collection configuration (shared by LiveArray and LiveValue).
30
+ * Live data configuration (shared by LiveArray and LiveValue).
31
31
  */
32
32
  _liveConfig: LiveFieldConfig | undefined;
33
33
  constructor(mask: Mask, shape: InternalTypeDef | InternalObjectShape | UnionTypeDefs | ComplexTypeDef[] | undefined, values?: Set<string | boolean | number>, typenameField?: string, typenameValue?: string, idField?: string | symbol);
@@ -98,14 +98,17 @@ export interface CaseInsensitiveEnumSet<T extends string | boolean | number> ext
98
98
  */
99
99
  get(value: unknown): T | undefined;
100
100
  }
101
- declare const TypeDefSymbol: unique symbol;
102
101
  /**
103
102
  * Branded phantom type representing a type definition in the public API.
104
103
  * At runtime, values are Masks, Sets, ValidatorDefs, etc. but the type system
105
104
  * sees them as TypeDef<T> where T is the extracted TypeScript type.
105
+ *
106
+ * Uses a string brand instead of unique symbol to avoid TS4029 errors
107
+ * during declaration emit in downstream packages.
108
+ * See: https://github.com/microsoft/TypeScript/issues/56107
106
109
  */
107
110
  export type TypeDef<T = unknown> = T & {
108
- readonly [TypeDefSymbol]: T;
111
+ readonly __fetchiumTypeDef: T;
109
112
  };
110
113
  export type SimpleTypeDef = Set<string | boolean | number> | CaseInsensitiveEnumSet<string | boolean | number> | Mask;
111
114
  export type ComplexTypeDef = ObjectDef | EntityDef | ArrayDef | RecordDef | UnionDef | ParseResultDef;
@@ -206,9 +209,9 @@ export type ExtractType<T> = IsAny<T> extends true ? any : T extends TypeDef<inf
206
209
  export type TypeDefShape = Record<string, TypeDef> | TypeDef;
207
210
  export type QueryResult<T extends Query> = ExtractType<T['result']> & {
208
211
  __refetch(): DiscriminatedReactivePromise<QueryResult<T>>;
209
- __loadNext(): Promise<QueryResult<T>>;
212
+ __fetchNext(): Promise<QueryResult<T>>;
210
213
  __hasNext: boolean;
211
- __isLoadingNext: boolean;
214
+ __isFetchingNext: boolean;
212
215
  };
213
216
  export type QueryPromise<T extends Query> = DiscriminatedReactivePromise<QueryResult<T>>;
214
217
  export interface CreateEvent {
@@ -263,10 +266,12 @@ export declare class LiveFieldConfig {
263
266
  static value(entityDefs: import('./typeDefs.js').ValidatorDef<any>[], constraintFieldRefs: Map<string, Array<[string, unknown]>> | undefined, valueType: InternalTypeDef, onCreate: (value: unknown, entity: unknown) => unknown, onUpdate: (value: unknown, entity: unknown) => unknown, onDelete: (value: unknown, entity: unknown) => unknown): LiveFieldConfig;
264
267
  }
265
268
  export type EntityClassOrTypename = string | (new () => import('./proxy.js').Entity);
269
+ export type InvalidateTarget = (new () => import('./query.js').Query) | readonly [new () => import('./query.js').Query, Record<string, unknown>];
266
270
  export interface MutationEffects {
267
271
  readonly creates?: ReadonlyArray<readonly [EntityClassOrTypename, unknown]>;
268
272
  readonly updates?: ReadonlyArray<readonly [EntityClassOrTypename, unknown]>;
269
273
  readonly deletes?: ReadonlyArray<readonly [EntityClassOrTypename, unknown]>;
274
+ readonly invalidates?: ReadonlyArray<InvalidateTarget>;
270
275
  }
271
276
  export {};
272
277
  //# sourceMappingURL=types.d.ts.map