fetchium 0.0.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 (210) hide show
  1. package/CHANGELOG.md +250 -0
  2. package/README.md +287 -0
  3. package/dist/cjs/development/QueryClient-CLi3ONNM.js +2 -0
  4. package/dist/cjs/development/QueryClient-CLi3ONNM.js.map +1 -0
  5. package/dist/cjs/development/QueryController-BQA49OYU.js +2 -0
  6. package/dist/cjs/development/QueryController-BQA49OYU.js.map +1 -0
  7. package/dist/cjs/development/index.js +2 -0
  8. package/dist/cjs/development/index.js.map +1 -0
  9. package/dist/cjs/development/mutation-CikIl_6k.js +2 -0
  10. package/dist/cjs/development/mutation-CikIl_6k.js.map +1 -0
  11. package/dist/cjs/development/package.json +3 -0
  12. package/dist/cjs/development/react/index.js +2 -0
  13. package/dist/cjs/development/react/index.js.map +1 -0
  14. package/dist/cjs/development/rest/index.js +2 -0
  15. package/dist/cjs/development/rest/index.js.map +1 -0
  16. package/dist/cjs/development/shared-Ct5zKrt4.js +2 -0
  17. package/dist/cjs/development/shared-Ct5zKrt4.js.map +1 -0
  18. package/dist/cjs/development/stores/async.js +2 -0
  19. package/dist/cjs/development/stores/async.js.map +1 -0
  20. package/dist/cjs/development/stores/sync.js +2 -0
  21. package/dist/cjs/development/stores/sync.js.map +1 -0
  22. package/dist/cjs/development/subscriptions/polling.js +2 -0
  23. package/dist/cjs/development/subscriptions/polling.js.map +1 -0
  24. package/dist/cjs/development/topic/index.js +2 -0
  25. package/dist/cjs/development/topic/index.js.map +1 -0
  26. package/dist/cjs/production/QueryClient-N0MJmuHW.js +2 -0
  27. package/dist/cjs/production/QueryClient-N0MJmuHW.js.map +1 -0
  28. package/dist/cjs/production/QueryController-BQA49OYU.js +2 -0
  29. package/dist/cjs/production/QueryController-BQA49OYU.js.map +1 -0
  30. package/dist/cjs/production/index.js +2 -0
  31. package/dist/cjs/production/index.js.map +1 -0
  32. package/dist/cjs/production/mutation-P_Yb4LI9.js +2 -0
  33. package/dist/cjs/production/mutation-P_Yb4LI9.js.map +1 -0
  34. package/dist/cjs/production/package.json +3 -0
  35. package/dist/cjs/production/react/index.js +2 -0
  36. package/dist/cjs/production/react/index.js.map +1 -0
  37. package/dist/cjs/production/rest/index.js +2 -0
  38. package/dist/cjs/production/rest/index.js.map +1 -0
  39. package/dist/cjs/production/shared-Ct5zKrt4.js +2 -0
  40. package/dist/cjs/production/shared-Ct5zKrt4.js.map +1 -0
  41. package/dist/cjs/production/stores/async.js +2 -0
  42. package/dist/cjs/production/stores/async.js.map +1 -0
  43. package/dist/cjs/production/stores/sync.js +2 -0
  44. package/dist/cjs/production/stores/sync.js.map +1 -0
  45. package/dist/cjs/production/subscriptions/polling.js +2 -0
  46. package/dist/cjs/production/subscriptions/polling.js.map +1 -0
  47. package/dist/cjs/production/topic/index.js +2 -0
  48. package/dist/cjs/production/topic/index.js.map +1 -0
  49. package/dist/esm/ConstraintMatcher.d.ts +42 -0
  50. package/dist/esm/ConstraintMatcher.d.ts.map +1 -0
  51. package/dist/esm/EntityInstance.d.ts +38 -0
  52. package/dist/esm/EntityInstance.d.ts.map +1 -0
  53. package/dist/esm/EntityStore.d.ts +14 -0
  54. package/dist/esm/EntityStore.d.ts.map +1 -0
  55. package/dist/esm/GcManager.d.ts +38 -0
  56. package/dist/esm/GcManager.d.ts.map +1 -0
  57. package/dist/esm/LiveCollection.d.ts +86 -0
  58. package/dist/esm/LiveCollection.d.ts.map +1 -0
  59. package/dist/esm/MutationResult.d.ts +22 -0
  60. package/dist/esm/MutationResult.d.ts.map +1 -0
  61. package/dist/esm/NetworkManager.d.ts +62 -0
  62. package/dist/esm/NetworkManager.d.ts.map +1 -0
  63. package/dist/esm/QueryClient.d.ts +98 -0
  64. package/dist/esm/QueryClient.d.ts.map +1 -0
  65. package/dist/esm/QueryController.d.ts +49 -0
  66. package/dist/esm/QueryController.d.ts.map +1 -0
  67. package/dist/esm/QueryResult.d.ts +67 -0
  68. package/dist/esm/QueryResult.d.ts.map +1 -0
  69. package/dist/esm/applyEntities.d.ts +12 -0
  70. package/dist/esm/applyEntities.d.ts.map +1 -0
  71. package/dist/esm/development/QueryClient-Dtde3pss.js +2572 -0
  72. package/dist/esm/development/QueryClient-Dtde3pss.js.map +1 -0
  73. package/dist/esm/development/QueryController-Ch_ncxiI.js +14 -0
  74. package/dist/esm/development/QueryController-Ch_ncxiI.js.map +1 -0
  75. package/dist/esm/development/index.js +32 -0
  76. package/dist/esm/development/index.js.map +1 -0
  77. package/dist/esm/development/mutation-UZshUQAf.js +58 -0
  78. package/dist/esm/development/mutation-UZshUQAf.js.map +1 -0
  79. package/dist/esm/development/react/index.js +40 -0
  80. package/dist/esm/development/react/index.js.map +1 -0
  81. package/dist/esm/development/rest/index.js +142 -0
  82. package/dist/esm/development/rest/index.js.map +1 -0
  83. package/dist/esm/development/shared-DcuVH8Pf.js +15 -0
  84. package/dist/esm/development/shared-DcuVH8Pf.js.map +1 -0
  85. package/dist/esm/development/stores/async.js +214 -0
  86. package/dist/esm/development/stores/async.js.map +1 -0
  87. package/dist/esm/development/stores/sync.js +149 -0
  88. package/dist/esm/development/stores/sync.js.map +1 -0
  89. package/dist/esm/development/subscriptions/polling.js +25 -0
  90. package/dist/esm/development/subscriptions/polling.js.map +1 -0
  91. package/dist/esm/development/topic/index.js +86 -0
  92. package/dist/esm/development/topic/index.js.map +1 -0
  93. package/dist/esm/errors.d.ts +4 -0
  94. package/dist/esm/errors.d.ts.map +1 -0
  95. package/dist/esm/fieldRef.d.ts +15 -0
  96. package/dist/esm/fieldRef.d.ts.map +1 -0
  97. package/dist/esm/index.d.ts +15 -0
  98. package/dist/esm/index.d.ts.map +1 -0
  99. package/dist/esm/mutation.d.ts +34 -0
  100. package/dist/esm/mutation.d.ts.map +1 -0
  101. package/dist/esm/parseEntities.d.ts +44 -0
  102. package/dist/esm/parseEntities.d.ts.map +1 -0
  103. package/dist/esm/production/QueryClient-YqnBxFy1.js +2457 -0
  104. package/dist/esm/production/QueryClient-YqnBxFy1.js.map +1 -0
  105. package/dist/esm/production/QueryController-Ch_ncxiI.js +14 -0
  106. package/dist/esm/production/QueryController-Ch_ncxiI.js.map +1 -0
  107. package/dist/esm/production/index.js +32 -0
  108. package/dist/esm/production/index.js.map +1 -0
  109. package/dist/esm/production/mutation-pgFl1uIY.js +58 -0
  110. package/dist/esm/production/mutation-pgFl1uIY.js.map +1 -0
  111. package/dist/esm/production/react/index.js +40 -0
  112. package/dist/esm/production/react/index.js.map +1 -0
  113. package/dist/esm/production/rest/index.js +142 -0
  114. package/dist/esm/production/rest/index.js.map +1 -0
  115. package/dist/esm/production/shared-DcuVH8Pf.js +15 -0
  116. package/dist/esm/production/shared-DcuVH8Pf.js.map +1 -0
  117. package/dist/esm/production/stores/async.js +214 -0
  118. package/dist/esm/production/stores/async.js.map +1 -0
  119. package/dist/esm/production/stores/sync.js +149 -0
  120. package/dist/esm/production/stores/sync.js.map +1 -0
  121. package/dist/esm/production/subscriptions/polling.js +25 -0
  122. package/dist/esm/production/subscriptions/polling.js.map +1 -0
  123. package/dist/esm/production/topic/index.js +86 -0
  124. package/dist/esm/production/topic/index.js.map +1 -0
  125. package/dist/esm/proxy.d.ts +20 -0
  126. package/dist/esm/proxy.d.ts.map +1 -0
  127. package/dist/esm/proxyId.d.ts +8 -0
  128. package/dist/esm/proxyId.d.ts.map +1 -0
  129. package/dist/esm/query-types.d.ts +60 -0
  130. package/dist/esm/query-types.d.ts.map +1 -0
  131. package/dist/esm/query.d.ts +64 -0
  132. package/dist/esm/query.d.ts.map +1 -0
  133. package/dist/esm/react/index.d.ts +2 -0
  134. package/dist/esm/react/index.d.ts.map +1 -0
  135. package/dist/esm/react/use-query.d.ts +5 -0
  136. package/dist/esm/react/use-query.d.ts.map +1 -0
  137. package/dist/esm/rest/RESTMutation.d.ts +18 -0
  138. package/dist/esm/rest/RESTMutation.d.ts.map +1 -0
  139. package/dist/esm/rest/RESTQuery.d.ts +24 -0
  140. package/dist/esm/rest/RESTQuery.d.ts.map +1 -0
  141. package/dist/esm/rest/RESTQueryController.d.ts +34 -0
  142. package/dist/esm/rest/RESTQueryController.d.ts.map +1 -0
  143. package/dist/esm/rest/index.d.ts +5 -0
  144. package/dist/esm/rest/index.d.ts.map +1 -0
  145. package/dist/esm/retry.d.ts +4 -0
  146. package/dist/esm/retry.d.ts.map +1 -0
  147. package/dist/esm/stores/async.d.ts +80 -0
  148. package/dist/esm/stores/async.d.ts.map +1 -0
  149. package/dist/esm/stores/shared.d.ts +12 -0
  150. package/dist/esm/stores/shared.d.ts.map +1 -0
  151. package/dist/esm/stores/sync.d.ts +41 -0
  152. package/dist/esm/stores/sync.d.ts.map +1 -0
  153. package/dist/esm/subscriptions/polling.d.ts +6 -0
  154. package/dist/esm/subscriptions/polling.d.ts.map +1 -0
  155. package/dist/esm/testing/MockClient.d.ts +64 -0
  156. package/dist/esm/testing/MockClient.d.ts.map +1 -0
  157. package/dist/esm/testing/auto-generate.d.ts +20 -0
  158. package/dist/esm/testing/auto-generate.d.ts.map +1 -0
  159. package/dist/esm/testing/entity-factory.d.ts +13 -0
  160. package/dist/esm/testing/entity-factory.d.ts.map +1 -0
  161. package/dist/esm/testing/index.d.ts +6 -0
  162. package/dist/esm/testing/index.d.ts.map +1 -0
  163. package/dist/esm/testing/types.d.ts +37 -0
  164. package/dist/esm/testing/types.d.ts.map +1 -0
  165. package/dist/esm/topic/TopicQuery.d.ts +10 -0
  166. package/dist/esm/topic/TopicQuery.d.ts.map +1 -0
  167. package/dist/esm/topic/TopicQueryController.d.ts +43 -0
  168. package/dist/esm/topic/TopicQueryController.d.ts.map +1 -0
  169. package/dist/esm/topic/index.d.ts +3 -0
  170. package/dist/esm/topic/index.d.ts.map +1 -0
  171. package/dist/esm/type-utils.d.ts +16 -0
  172. package/dist/esm/type-utils.d.ts.map +1 -0
  173. package/dist/esm/typeDefs.d.ts +86 -0
  174. package/dist/esm/typeDefs.d.ts.map +1 -0
  175. package/dist/esm/types.d.ts +277 -0
  176. package/dist/esm/types.d.ts.map +1 -0
  177. package/dist/esm/utils.d.ts +38 -0
  178. package/dist/esm/utils.d.ts.map +1 -0
  179. package/index.d.ts +1 -0
  180. package/package.json +181 -5
  181. package/plugin/.claude-plugin/plugin.json +10 -0
  182. package/plugin/agents/fetchium.md +168 -0
  183. package/plugin/docs/api/fetchium-react.md +135 -0
  184. package/plugin/docs/api/fetchium.md +674 -0
  185. package/plugin/docs/api/stores-async.md +219 -0
  186. package/plugin/docs/api/stores-sync.md +133 -0
  187. package/plugin/docs/core/entities.md +351 -0
  188. package/plugin/docs/core/queries.md +600 -0
  189. package/plugin/docs/core/streaming.md +550 -0
  190. package/plugin/docs/core/types.md +374 -0
  191. package/plugin/docs/data/caching.md +298 -0
  192. package/plugin/docs/data/live-data.md +435 -0
  193. package/plugin/docs/data/mutations.md +465 -0
  194. package/plugin/docs/guides/auth.md +318 -0
  195. package/plugin/docs/guides/error-handling.md +351 -0
  196. package/plugin/docs/guides/offline.md +270 -0
  197. package/plugin/docs/guides/testing.md +301 -0
  198. package/plugin/docs/quickstart.md +170 -0
  199. package/plugin/docs/reference/pagination.md +519 -0
  200. package/plugin/docs/reference/rest-queries.md +107 -0
  201. package/plugin/docs/reference/why-signalium.md +364 -0
  202. package/plugin/docs/setup/project-setup.md +319 -0
  203. package/plugin/install.mjs +88 -0
  204. package/plugin/skills/design/SKILL.md +140 -0
  205. package/plugin/skills/teach/SKILL.md +105 -0
  206. package/stores/async.d.ts +1 -0
  207. package/stores/async.js +15 -0
  208. package/stores/sync.d.ts +1 -0
  209. package/stores/sync.js +15 -0
  210. package/index.js +0 -1
@@ -0,0 +1,80 @@
1
+ import { QueryDefinition } from '../query.js';
2
+ import { CachedQuery, QueryStore } from '../QueryClient.js';
3
+ export interface AsyncPersistentStore {
4
+ has(key: string): Promise<boolean>;
5
+ getString(key: string): Promise<string | undefined>;
6
+ setString(key: string, value: string): Promise<void>;
7
+ getNumber(key: string): Promise<number | undefined>;
8
+ setNumber(key: string, value: number): Promise<void>;
9
+ getBuffer(key: string): Promise<Uint32Array | undefined>;
10
+ setBuffer(key: string, value: Uint32Array): Promise<void>;
11
+ delete(key: string): Promise<void>;
12
+ getAllKeys(): Promise<string[]>;
13
+ }
14
+ declare const enum StoreMessageType {
15
+ SaveQuery = 0,
16
+ SaveEntity = 1,
17
+ ActivateQuery = 2,
18
+ DeleteQuery = 3
19
+ }
20
+ export type StoreMessage = {
21
+ type: StoreMessageType.SaveQuery;
22
+ queryDefId: string;
23
+ queryKey: number;
24
+ value: unknown;
25
+ updatedAt: number;
26
+ cacheTime: number;
27
+ refIds?: number[];
28
+ } | {
29
+ type: StoreMessageType.SaveEntity;
30
+ entityKey: number;
31
+ value: unknown;
32
+ refIds?: number[];
33
+ } | {
34
+ type: StoreMessageType.ActivateQuery;
35
+ queryDefId: string;
36
+ queryKey: number;
37
+ cacheTime: number;
38
+ } | {
39
+ type: StoreMessageType.DeleteQuery;
40
+ queryKey: number;
41
+ };
42
+ export interface AsyncQueryStoreConfig {
43
+ isWriter: boolean;
44
+ connect: (handleMessage: (msg: StoreMessage) => void) => {
45
+ sendMessage: (msg: StoreMessage) => void;
46
+ };
47
+ delegate?: AsyncPersistentStore;
48
+ }
49
+ export declare class AsyncQueryStore implements QueryStore {
50
+ private readonly isWriter;
51
+ private readonly delegate?;
52
+ private readonly sendMessage;
53
+ private readonly messageQueue;
54
+ private readonly queues;
55
+ private queueProcessorPromise?;
56
+ private resolveQueueWait?;
57
+ constructor(config: AsyncQueryStoreConfig);
58
+ private handleMessage;
59
+ private enqueueMessage;
60
+ private dispatch;
61
+ private startQueueProcessor;
62
+ private processQueue;
63
+ private processMessage;
64
+ loadQuery(queryDef: QueryDefinition<any, any, any>, queryKey: number): Promise<CachedQuery | undefined>;
65
+ private preloadEntities;
66
+ saveQuery(queryDef: QueryDefinition<any, any, any>, queryKey: number, value: unknown, updatedAt: number, refIds?: Set<number>): void;
67
+ saveEntity(entityKey: number, value: unknown, refIds?: Set<number>): void;
68
+ activateQuery(queryDef: QueryDefinition<any, any, any>, queryKey: number): void;
69
+ deleteQuery(queryKey: number): void;
70
+ private writerSaveQuery;
71
+ private writerSaveEntity;
72
+ private writerActivateQuery;
73
+ purgeStaleQueries(): Promise<void>;
74
+ private setValue;
75
+ private writerDeleteValue;
76
+ private incrementRefCount;
77
+ private decrementRefCount;
78
+ }
79
+ export {};
80
+ //# sourceMappingURL=async.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../../../src/stores/async.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare const valueKeyFor: (id: number) => string;
2
+ export declare const refCountKeyFor: (id: number) => string;
3
+ export declare const refIdsKeyFor: (id: number) => string;
4
+ export declare const updatedAtKeyFor: (id: number) => string;
5
+ export declare const queueKeyFor: (queryDefId: string) => string;
6
+ export declare const lastUsedKeyFor: (queryDefId: string) => string;
7
+ export declare const cacheTimeKeyFor: (queryDefId: string) => string;
8
+ export declare const LAST_USED_PREFIX = "sq:doc:lastUsed:";
9
+ export declare const DEFAULT_MAX_COUNT = 50;
10
+ export declare const DEFAULT_CACHE_TIME: number;
11
+ export declare const DEFAULT_GC_TIME = 5;
12
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
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,41 @@
1
+ import { CachedQuery, QueryStore } from '../QueryClient.js';
2
+ import { QueryDefinition } from '../query.js';
3
+ export interface SyncPersistentStore {
4
+ has(key: string): boolean;
5
+ getString(key: string): string | undefined;
6
+ setString(key: string, value: string): void;
7
+ getNumber(key: string): number | undefined;
8
+ setNumber(key: string, value: number): void;
9
+ getBuffer(key: string): Uint32Array | undefined;
10
+ setBuffer(key: string, value: Uint32Array): void;
11
+ delete(key: string): void;
12
+ getAllKeys(): string[];
13
+ }
14
+ export declare class MemoryPersistentStore implements SyncPersistentStore {
15
+ private readonly kv;
16
+ has(key: string): boolean;
17
+ getString(key: string): string | undefined;
18
+ setString(key: string, value: string): void;
19
+ getNumber(key: string): number | undefined;
20
+ setNumber(key: string, value: number): void;
21
+ getBuffer(key: string): Uint32Array | undefined;
22
+ setBuffer(key: string, value: Uint32Array): void;
23
+ delete(key: string): void;
24
+ getAllKeys(): string[];
25
+ }
26
+ export declare class SyncQueryStore implements QueryStore {
27
+ private readonly kv;
28
+ queues: Map<string, Uint32Array>;
29
+ constructor(kv: SyncPersistentStore);
30
+ loadQuery(queryDef: QueryDefinition<any, any, any>, queryKey: number): CachedQuery | undefined;
31
+ private preloadEntities;
32
+ saveQuery(queryDef: QueryDefinition<any, any, any>, queryKey: number, value: unknown, updatedAt: number, refIds?: Set<number>): void;
33
+ saveEntity(entityKey: number, value: unknown, refIds?: Set<number>): void;
34
+ activateQuery(queryDef: QueryDefinition<any, any, any>, queryKey: number): void;
35
+ purgeStaleQueries(): void;
36
+ private setValue;
37
+ deleteQuery(id: number): void;
38
+ private incrementRefCount;
39
+ private decrementRefCount;
40
+ }
41
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/stores/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAA2B,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAc9C,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAE1B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3C,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5C,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3C,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5C,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;IAChD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAEjD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAE1B,UAAU,IAAI,MAAM,EAAE,CAAC;CACxB;AAED,qBAAa,qBAAsB,YAAW,mBAAmB;IAC/D,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAgD;IAEnE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI1C,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI3C,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI1C,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI3C,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI/C,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI;IAIhD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB,UAAU,IAAI,MAAM,EAAE;CAGvB;AAED,qBAAa,cAAe,YAAW,UAAU;IAGnC,OAAO,CAAC,QAAQ,CAAC,EAAE;IAF/B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAa;gBAEhB,EAAE,EAAE,mBAAmB;IAEpD,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAgC9F,OAAO,CAAC,eAAe;IAoBvB,SAAS,CACP,QAAQ,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EACxC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACnB,IAAI;IAMP,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI;IAIzE,aAAa,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IA+C/E,iBAAiB,IAAI,IAAI;IAgCzB,OAAO,CAAC,QAAQ;IAgDhB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAqB7B,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,iBAAiB;CAkB1B"}
@@ -0,0 +1,6 @@
1
+ import type { MutationEvent } from '../types.js';
2
+ export interface PollConfig {
3
+ interval: number;
4
+ }
5
+ export declare function poll(config: PollConfig): (this: any, onEvent: (event: MutationEvent) => void) => () => void;
6
+ //# sourceMappingURL=polling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polling.d.ts","sourceRoot":"","sources":["../../../src/subscriptions/polling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAYD,wBAAgB,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,KAAK,MAAM,IAAI,CA+B3G"}
@@ -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"}
@@ -0,0 +1,16 @@
1
+ import { Signal } from 'signalium';
2
+ export type HasRequiredKeys<T> = {} extends T ? false : {
3
+ [K in keyof T]: undefined;
4
+ } extends T ? false : true;
5
+ export type Optionalize<T> = T extends object ? {
6
+ -readonly [K in keyof T as undefined extends T[K] ? never : K]: T[K];
7
+ } & {
8
+ -readonly [K in keyof T as undefined extends T[K] ? K : never]?: T[K];
9
+ } : T;
10
+ export type Signalize<T> = {
11
+ [K in keyof T]: T[K] | Signal<T[K]> | Signal<T[K] extends infer U ? U : never>;
12
+ };
13
+ export type Prettify<T> = T extends object ? {
14
+ -readonly [K in keyof T]: T[K];
15
+ } & {} : T;
16
+ //# sourceMappingURL=type-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-utils.d.ts","sourceRoot":"","sources":["../../src/type-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGnC,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS;CAAE,SAAS,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;AAG/G,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GACzC;IACE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrE,GAAG;IACF,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACtE,GACD,CAAC,CAAC;AAEN,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;KACxB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CAC/E,CAAC;AAIF,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GACtC;IACE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC/B,GAAG,EAAE,GACN,CAAC,CAAC"}
@@ -0,0 +1,86 @@
1
+ import { APITypes, ComplexTypeDef, EntityConfig, EntityMethods, ExtractType, InternalTypeDef, InternalObjectShape, LiveFieldConfig, Mask, TypeDef, UnionTypeDefs } from './types.js';
2
+ export declare class ValidatorDef<T> {
3
+ mask: Mask;
4
+ shape: InternalTypeDef | InternalObjectShape | UnionTypeDefs | ComplexTypeDef[] | undefined;
5
+ typenameField: string | undefined;
6
+ typenameValue: string | undefined;
7
+ idField: string | symbol | undefined;
8
+ values: Set<string | boolean | number> | undefined;
9
+ /**
10
+ * Methods object for entity definitions.
11
+ * Shared across all proxies, but each proxy binds its own reactive method wrappers.
12
+ */
13
+ _methods: EntityMethods | undefined;
14
+ /**
15
+ * Entity configuration including stream options.
16
+ */
17
+ _entityConfig: EntityConfig | undefined;
18
+ /**
19
+ * The original Entity class for this definition.
20
+ * Used by createEntityProxy to set the proxy prototype so `instanceof` works.
21
+ */
22
+ _entityClass: (new () => any) | undefined;
23
+ /**
24
+ * Entity cache options (e.g. gcTime for in-memory eviction).
25
+ */
26
+ _entityCache: {
27
+ gcTime?: number;
28
+ } | undefined;
29
+ /**
30
+ * Live data configuration (shared by LiveArray and LiveValue).
31
+ */
32
+ _liveConfig: LiveFieldConfig | undefined;
33
+ constructor(mask: Mask, shape: InternalTypeDef | InternalObjectShape | UnionTypeDefs | ComplexTypeDef[] | undefined, values?: Set<string | boolean | number>, typenameField?: string, typenameValue?: string, idField?: string | symbol);
34
+ static merge(defs: ValidatorDef<any>[]): ValidatorDef<any>;
35
+ static cloneWith(def: ValidatorDef<any>, mask: Mask): ValidatorDef<any>;
36
+ }
37
+ /**
38
+ * A Set-like class for enum values that matches string values case-insensitively.
39
+ * Non-string values (numbers, booleans) are matched exactly.
40
+ * Returns the canonical (originally defined) casing when a match is found.
41
+ */
42
+ export declare class CaseInsensitiveSet<T extends string | boolean | number> extends Set<T> {
43
+ private readonly lowercaseMap;
44
+ constructor(values: readonly T[]);
45
+ /**
46
+ * Check if a value exists in the set (case-insensitively for strings).
47
+ * Used for backwards compatibility with Set-based checks.
48
+ */
49
+ has(value: unknown): boolean;
50
+ /**
51
+ * Get the canonical value for a given input.
52
+ * For strings, performs case-insensitive lookup and returns the canonical casing.
53
+ * For numbers/booleans, performs exact match.
54
+ * Returns undefined if no match is found.
55
+ */
56
+ get(value: unknown): T | undefined;
57
+ }
58
+ export declare function defineArray<T extends TypeDef>(shape: T): TypeDef<ExtractType<T>[]>;
59
+ export declare function defineRecord<T extends TypeDef>(shape: T): TypeDef<Record<string, ExtractType<T>>>;
60
+ export declare function defineParseResult<T extends TypeDef>(innerType: T): TypeDef<import('./types.js').ParseResult<ExtractType<T>>>;
61
+ export declare function defineObject<T extends Record<string, TypeDef>>(shape: T): TypeDef<ExtractType<T>>;
62
+ export declare const FORMAT_MASK_SHIFT = 16;
63
+ export declare const WRAPPED_VALUE: WeakSet<WeakKey>;
64
+ export declare class FormattedValue {
65
+ _raw: unknown;
66
+ private _formatted;
67
+ private _parsed;
68
+ private _formatId;
69
+ constructor(raw: unknown, formatId: number, eager: boolean);
70
+ getValue(): unknown;
71
+ toJSON(): unknown;
72
+ }
73
+ export declare function getFormat(mask: number): (value: unknown) => unknown;
74
+ export declare function getSerializer(mask: number): (value: unknown) => unknown;
75
+ export declare function getFormatName(mask: number): string | undefined;
76
+ export declare function registerFormat<Input extends Mask.STRING | Mask.NUMBER, T>(name: string, type: Input, parse: (value: Input extends Mask.STRING ? string : number) => T, serialize: (value: T) => Input extends Mask.STRING ? string : number, options?: {
77
+ eager?: boolean;
78
+ }): void;
79
+ import { Entity } from './proxy.js';
80
+ /**
81
+ * Gets or creates a ValidatorDef for an Entity class. Instantiates the class once,
82
+ * extracts field values as the shape and prototype methods, then caches the result.
83
+ */
84
+ export declare function getEntityDef(cls: new () => Entity): ValidatorDef<any>;
85
+ export declare const t: APITypes;
86
+ //# sourceMappingURL=typeDefs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeDefs.d.ts","sourceRoot":"","sources":["../../src/typeDefs.ts"],"names":[],"mappings":"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"}