@signalium/query 0.0.0 → 0.0.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 (78) hide show
  1. package/.turbo/turbo-build.log +12 -0
  2. package/CHANGELOG.md +9 -0
  3. package/dist/cjs/EntityMap.js +46 -0
  4. package/dist/cjs/EntityMap.js.map +1 -0
  5. package/dist/cjs/QueryClient.js +180 -0
  6. package/dist/cjs/QueryClient.js.map +1 -0
  7. package/dist/cjs/QueryStore.js +219 -0
  8. package/dist/cjs/QueryStore.js.map +1 -0
  9. package/dist/cjs/errors.js +105 -0
  10. package/dist/cjs/errors.js.map +1 -0
  11. package/dist/cjs/index.js +24 -0
  12. package/dist/cjs/index.js.map +1 -0
  13. package/dist/cjs/parseEntities.js +127 -0
  14. package/dist/cjs/parseEntities.js.map +1 -0
  15. package/dist/cjs/pathInterpolator.js +69 -0
  16. package/dist/cjs/pathInterpolator.js.map +1 -0
  17. package/dist/cjs/proxy.js +187 -0
  18. package/dist/cjs/proxy.js.map +1 -0
  19. package/dist/cjs/query.js +41 -0
  20. package/dist/cjs/query.js.map +1 -0
  21. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  22. package/dist/cjs/typeDefs.js +249 -0
  23. package/dist/cjs/typeDefs.js.map +1 -0
  24. package/dist/cjs/types.js +6 -0
  25. package/dist/cjs/types.js.map +1 -0
  26. package/dist/cjs/utils.js +65 -0
  27. package/dist/cjs/utils.js.map +1 -0
  28. package/dist/esm/EntityMap.d.ts +18 -0
  29. package/dist/esm/EntityMap.d.ts.map +1 -0
  30. package/dist/esm/EntityMap.js +42 -0
  31. package/dist/esm/EntityMap.js.map +1 -0
  32. package/dist/esm/QueryClient.d.ts +82 -0
  33. package/dist/esm/QueryClient.d.ts.map +1 -0
  34. package/dist/esm/QueryClient.js +175 -0
  35. package/dist/esm/QueryClient.js.map +1 -0
  36. package/dist/esm/QueryStore.d.ts +73 -0
  37. package/dist/esm/QueryStore.d.ts.map +1 -0
  38. package/dist/esm/QueryStore.js +209 -0
  39. package/dist/esm/QueryStore.js.map +1 -0
  40. package/dist/esm/errors.d.ts +4 -0
  41. package/dist/esm/errors.d.ts.map +1 -0
  42. package/dist/esm/errors.js +101 -0
  43. package/dist/esm/errors.js.map +1 -0
  44. package/dist/esm/index.d.ts +7 -0
  45. package/dist/esm/index.d.ts.map +1 -0
  46. package/dist/esm/index.js +4 -0
  47. package/dist/esm/index.js.map +1 -0
  48. package/dist/esm/parseEntities.d.ts +8 -0
  49. package/dist/esm/parseEntities.d.ts.map +1 -0
  50. package/dist/esm/parseEntities.js +120 -0
  51. package/dist/esm/parseEntities.js.map +1 -0
  52. package/dist/esm/pathInterpolator.d.ts +29 -0
  53. package/dist/esm/pathInterpolator.d.ts.map +1 -0
  54. package/dist/esm/pathInterpolator.js +66 -0
  55. package/dist/esm/pathInterpolator.js.map +1 -0
  56. package/dist/esm/proxy.d.ts +8 -0
  57. package/dist/esm/proxy.d.ts.map +1 -0
  58. package/dist/esm/proxy.js +180 -0
  59. package/dist/esm/proxy.js.map +1 -0
  60. package/dist/esm/query.d.ts +40 -0
  61. package/dist/esm/query.d.ts.map +1 -0
  62. package/dist/esm/query.js +38 -0
  63. package/dist/esm/query.js.map +1 -0
  64. package/dist/esm/typeDefs.d.ts +25 -0
  65. package/dist/esm/typeDefs.d.ts.map +1 -0
  66. package/dist/esm/typeDefs.js +239 -0
  67. package/dist/esm/typeDefs.js.map +1 -0
  68. package/dist/esm/types.d.ts +86 -0
  69. package/dist/esm/types.d.ts.map +1 -0
  70. package/dist/esm/types.js +3 -0
  71. package/dist/esm/types.js.map +1 -0
  72. package/dist/esm/utils.d.ts +6 -0
  73. package/dist/esm/utils.d.ts.map +1 -0
  74. package/dist/esm/utils.js +60 -0
  75. package/dist/esm/utils.js.map +1 -0
  76. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  77. package/package.json +3 -3
  78. package/vitest.config.ts +4 -10
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Query Client with Entity Caching and Deduplication
3
+ *
4
+ * Features:
5
+ * - Global entity map for deduplication
6
+ * - Entity definitions with cached sub-entity paths
7
+ * - Eager entity discovery and caching
8
+ * - Permanent proxy cache for entities
9
+ * - Response caching for offline access
10
+ * - Signalium-based reactivity for entity updates
11
+ * - Self-contained validator (no external dependencies except Signalium)
12
+ */
13
+ import { relay, context, notifier, } from 'signalium';
14
+ import { hashValue, setReactivePromise } from 'signalium/utils';
15
+ import { parseValue } from './proxy.js';
16
+ import { parseEntities } from './parseEntities.js';
17
+ import { EntityStore } from './EntityMap.js';
18
+ import { ValidatorDef } from './typeDefs.js';
19
+ const queryKeyFor = (queryDef, params) => {
20
+ return hashValue([queryDef.id, params]);
21
+ };
22
+ /**
23
+ * QueryResult wraps a DiscriminatedReactivePromise and adds additional functionality
24
+ * like refetch, while forwarding all the base relay properties.
25
+ */
26
+ export class QueryResultImpl {
27
+ relay;
28
+ instance;
29
+ constructor(relay, instance) {
30
+ this.relay = relay;
31
+ this.instance = instance;
32
+ setReactivePromise(this);
33
+ }
34
+ // Forward all ReactivePromise properties through getters
35
+ get value() {
36
+ return this.relay.value;
37
+ }
38
+ get error() {
39
+ return this.relay.error;
40
+ }
41
+ get isPending() {
42
+ return this.relay.isPending;
43
+ }
44
+ get isRejected() {
45
+ return this.relay.isRejected;
46
+ }
47
+ get isResolved() {
48
+ return this.relay.isResolved;
49
+ }
50
+ get isSettled() {
51
+ return this.relay.isSettled;
52
+ }
53
+ get isReady() {
54
+ return this.relay.isReady;
55
+ }
56
+ // TODO: Intimate APIs needed for `useReactive`, this is a code smell and
57
+ // we should find a better way to entangle these more generically
58
+ get _version() {
59
+ return this.relay._version;
60
+ }
61
+ get _signal() {
62
+ return this.relay._signal;
63
+ }
64
+ get _flags() {
65
+ return this.relay._flags;
66
+ }
67
+ // Forward Promise methods
68
+ then(onfulfilled, onrejected) {
69
+ return this.relay.then(onfulfilled, onrejected);
70
+ }
71
+ catch(onrejected) {
72
+ return this.relay.catch(onrejected);
73
+ }
74
+ finally(onfinally) {
75
+ return this.relay.finally(onfinally);
76
+ }
77
+ // Additional methods
78
+ refetch() {
79
+ this.instance.notifier.notify();
80
+ // pull the value to make sure the relay is activated
81
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
82
+ this.instance.relay.value;
83
+ return this.relay;
84
+ }
85
+ // Make it work with Symbol.toStringTag for Promise detection
86
+ get [Symbol.toStringTag]() {
87
+ return 'QueryResult';
88
+ }
89
+ }
90
+ export class QueryClient {
91
+ store;
92
+ context;
93
+ entityMap = new EntityStore();
94
+ queryInstances = new Map();
95
+ constructor(store, context = { fetch }) {
96
+ this.store = store;
97
+ this.context = context;
98
+ }
99
+ /**
100
+ * Loads a query from the document store and returns a QueryResult
101
+ * that triggers fetches and prepopulates with cached data
102
+ */
103
+ getQuery(queryDef, params) {
104
+ const queryKey = queryKeyFor(queryDef, params);
105
+ let queryInstance = this.queryInstances.get(queryKey);
106
+ // Create a new relay if it doesn't exist
107
+ if (queryInstance === undefined) {
108
+ queryInstance = {
109
+ relay: undefined,
110
+ initialized: false,
111
+ notifier: notifier(),
112
+ };
113
+ const queryRelay = relay(state => {
114
+ // Load from cache first, then fetch fresh data
115
+ queryInstance.notifier.consume();
116
+ this.store.activateQuery(queryDef, queryKey);
117
+ if (queryInstance.initialized) {
118
+ state.setPromise(this.runQuery(queryDef, queryKey, params));
119
+ }
120
+ else {
121
+ this.initializeQuery(queryDef, params, state, queryInstance);
122
+ }
123
+ });
124
+ queryInstance.relay = new QueryResultImpl(queryRelay, queryInstance);
125
+ // Store the relay for future use
126
+ this.queryInstances.set(queryKey, queryInstance);
127
+ }
128
+ return queryInstance.relay;
129
+ }
130
+ async initializeQuery(queryDef, params, state, instance) {
131
+ try {
132
+ instance.initialized = true;
133
+ const queryKey = queryKeyFor(queryDef, params);
134
+ // Load from cache first
135
+ const query = this.store.loadQuery(queryDef, queryKey, this.entityMap);
136
+ if (query !== undefined) {
137
+ const shape = queryDef.shape;
138
+ state.value =
139
+ shape instanceof ValidatorDef
140
+ ? parseEntities(query, shape, this, new Set())
141
+ : parseValue(query, shape, queryDef.id);
142
+ }
143
+ state.setPromise(this.runQuery(queryDef, queryKey, params));
144
+ }
145
+ catch (error) {
146
+ // Relay will handle the error state automatically
147
+ state.setError(error);
148
+ }
149
+ }
150
+ /**
151
+ * Fetches fresh data and updates the cache
152
+ */
153
+ async runQuery(queryDef, queryKey, params) {
154
+ const freshData = await queryDef.fetchFn(this.context, params);
155
+ // Parse and cache the fresh data
156
+ const entityRefs = new Set();
157
+ const shape = queryDef.shape;
158
+ const parsedData = shape instanceof ValidatorDef
159
+ ? parseEntities(freshData, shape, this, entityRefs)
160
+ : parseValue(freshData, shape, queryDef.id);
161
+ // Cache the data (synchronous, fire-and-forget)
162
+ this.store.saveQuery(queryDef, queryKey, freshData, entityRefs);
163
+ return parsedData;
164
+ }
165
+ hydrateEntity(key, shape) {
166
+ return this.entityMap.hydratePreloadedEntity(key, shape);
167
+ }
168
+ saveEntity(key, obj, shape, entityRefs) {
169
+ const record = this.entityMap.setEntity(key, obj, shape);
170
+ this.store.saveEntity(key, obj, entityRefs);
171
+ return record;
172
+ }
173
+ }
174
+ export const QueryClientContext = context(undefined);
175
+ //# sourceMappingURL=QueryClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryClient.js","sourceRoot":"","sources":["../../src/QueryClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * QueryStore - Minimal interface for query persistence
3
+ *
4
+ * Provides a clean abstraction over document storage, reference counting,
5
+ * and LRU cache management. Supports both synchronous (in-memory) and
6
+ * asynchronous (writer-backed) implementations.
7
+ */
8
+ import { EntityStore } from './EntityMap.js';
9
+ import { QueryDefinition } from './QueryClient.js';
10
+ export interface QueryStore {
11
+ /**
12
+ * Asynchronously retrieves a document by key.
13
+ * May return undefined if the document is not in the store.
14
+ */
15
+ loadQuery(queryDef: QueryDefinition<any, any>, queryKey: number, entityMap: EntityStore): MaybePromise<unknown | undefined>;
16
+ /**
17
+ * Synchronously stores a document with optional reference IDs.
18
+ * This is fire-and-forget for async implementations.
19
+ */
20
+ saveQuery(queryDef: QueryDefinition<any, any>, queryKey: number, value: unknown, refIds?: Set<number>): void;
21
+ /**
22
+ * Synchronously stores an entity with optional reference IDs.
23
+ * This is fire-and-forget for async implementations.
24
+ */
25
+ saveEntity(entityKey: number, value: unknown, refIds?: Set<number>): void;
26
+ /**
27
+ * Marks a query as accessed, updating the LRU queue.
28
+ * Handles eviction internally when the cache is full.
29
+ */
30
+ activateQuery(queryDef: QueryDefinition<any, any>, queryKey: number): void;
31
+ }
32
+ export type MaybePromise<T> = T | Promise<T>;
33
+ export interface SyncPersistentStore {
34
+ has(key: string): boolean;
35
+ getString(key: string): string | undefined;
36
+ setString(key: string, value: string): void;
37
+ getNumber(key: string): number | undefined;
38
+ setNumber(key: string, value: number): void;
39
+ getBuffer(key: string): Uint32Array | undefined;
40
+ setBuffer(key: string, value: Uint32Array): void;
41
+ delete(key: string): void;
42
+ }
43
+ export declare class MemoryPersistentStore implements SyncPersistentStore {
44
+ private readonly kv;
45
+ has(key: string): boolean;
46
+ getString(key: string): string | undefined;
47
+ setString(key: string, value: string): void;
48
+ getNumber(key: string): number | undefined;
49
+ setNumber(key: string, value: number): void;
50
+ getBuffer(key: string): Uint32Array | undefined;
51
+ setBuffer(key: string, value: Uint32Array): void;
52
+ delete(key: string): void;
53
+ }
54
+ export declare const valueKeyFor: (id: number) => string;
55
+ export declare const refCountKeyFor: (id: number) => string;
56
+ export declare const refIdsKeyFor: (id: number) => string;
57
+ export declare const updatedAtKeyFor: (id: number) => string;
58
+ export declare const queueKeyFor: (queryDefId: string) => string;
59
+ export declare class SyncQueryStore implements QueryStore {
60
+ private readonly kv;
61
+ queues: Map<string, Uint32Array>;
62
+ constructor(kv: SyncPersistentStore);
63
+ loadQuery(queryDef: QueryDefinition<any, any>, queryKey: number, entityMap: EntityStore): unknown | undefined;
64
+ private preloadEntities;
65
+ saveQuery(queryDef: QueryDefinition<any, any>, queryKey: number, value: unknown, refIds?: Set<number>): void;
66
+ saveEntity(entityKey: number, value: unknown, refIds?: Set<number>): void;
67
+ activateQuery(queryDef: QueryDefinition<any, any>, queryKey: number): void;
68
+ private setValue;
69
+ private deleteValue;
70
+ private incrementRefCount;
71
+ private decrementRefCount;
72
+ }
73
+ //# sourceMappingURL=QueryStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryStore.d.ts","sourceRoot":"","sources":["../../src/QueryStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,209 @@
1
+ /**
2
+ * QueryStore - Minimal interface for query persistence
3
+ *
4
+ * Provides a clean abstraction over document storage, reference counting,
5
+ * and LRU cache management. Supports both synchronous (in-memory) and
6
+ * asynchronous (writer-backed) implementations.
7
+ */
8
+ const DEFAULT_MAX_COUNT = 50;
9
+ const DEFAULT_MAX_AGE = 1000 * 60 * 60 * 24; // 24 hours
10
+ export class MemoryPersistentStore {
11
+ kv = Object.create(null);
12
+ has(key) {
13
+ return key in this.kv;
14
+ }
15
+ getString(key) {
16
+ return this.kv[key];
17
+ }
18
+ setString(key, value) {
19
+ this.kv[key] = value;
20
+ }
21
+ getNumber(key) {
22
+ return this.kv[key];
23
+ }
24
+ setNumber(key, value) {
25
+ this.kv[key] = value;
26
+ }
27
+ getBuffer(key) {
28
+ return this.kv[key];
29
+ }
30
+ setBuffer(key, value) {
31
+ this.kv[key] = value;
32
+ }
33
+ delete(key) {
34
+ delete this.kv[key];
35
+ }
36
+ }
37
+ // Query Instance keys
38
+ export const valueKeyFor = (id) => `sq:doc:value:${id}`;
39
+ export const refCountKeyFor = (id) => `sq:doc:refCount:${id}`;
40
+ export const refIdsKeyFor = (id) => `sq:doc:refIds:${id}`;
41
+ export const updatedAtKeyFor = (id) => `sq:doc:updatedAt:${id}`;
42
+ // Query Type keys
43
+ export const queueKeyFor = (queryDefId) => `sq:doc:queue:${queryDefId}`;
44
+ export class SyncQueryStore {
45
+ kv;
46
+ queues = new Map();
47
+ constructor(kv) {
48
+ this.kv = kv;
49
+ }
50
+ loadQuery(queryDef, queryKey, entityMap) {
51
+ const updatedAt = this.kv.getNumber(updatedAtKeyFor(queryKey));
52
+ if (updatedAt === undefined || updatedAt < Date.now() - (queryDef.cache?.maxAge ?? DEFAULT_MAX_AGE)) {
53
+ return;
54
+ }
55
+ const value = this.kv.getString(valueKeyFor(queryKey));
56
+ if (value === undefined) {
57
+ return;
58
+ }
59
+ const entityIds = this.kv.getBuffer(refIdsKeyFor(queryKey));
60
+ if (entityIds !== undefined) {
61
+ this.preloadEntities(entityIds, entityMap);
62
+ }
63
+ this.activateQuery(queryDef, queryKey);
64
+ return JSON.parse(value);
65
+ }
66
+ preloadEntities(entityIds, entityMap) {
67
+ for (const entityId of entityIds) {
68
+ const entityValue = this.kv.getString(valueKeyFor(entityId));
69
+ if (entityValue === undefined) {
70
+ continue;
71
+ }
72
+ const entity = JSON.parse(entityValue);
73
+ entityMap.setPreloadedEntity(entityId, entity);
74
+ const childIds = this.kv.getBuffer(refIdsKeyFor(entityId));
75
+ if (childIds === undefined) {
76
+ continue;
77
+ }
78
+ this.preloadEntities(childIds, entityMap);
79
+ }
80
+ }
81
+ saveQuery(queryDef, queryKey, value, refIds) {
82
+ this.setValue(queryKey, value, refIds);
83
+ this.kv.setNumber(updatedAtKeyFor(queryKey), Date.now());
84
+ this.activateQuery(queryDef, queryKey);
85
+ }
86
+ saveEntity(entityKey, value, refIds) {
87
+ this.setValue(entityKey, value, refIds);
88
+ }
89
+ activateQuery(queryDef, queryKey) {
90
+ if (!this.kv.has(valueKeyFor(queryKey))) {
91
+ // Query not in store, nothing to do. This can happen if the query has
92
+ // been evicted from the cache, but is still active in memory.
93
+ return;
94
+ }
95
+ let queue = this.queues.get(queryDef.id);
96
+ if (queue === undefined) {
97
+ const maxCount = queryDef.cache?.maxCount ?? DEFAULT_MAX_COUNT;
98
+ queue = this.kv.getBuffer(queueKeyFor(queryDef.id));
99
+ if (queue === undefined) {
100
+ queue = new Uint32Array(maxCount);
101
+ this.kv.setBuffer(queueKeyFor(queryDef.id), queue);
102
+ }
103
+ else if (queue.length !== maxCount) {
104
+ const newQueue = new Uint32Array(maxCount);
105
+ newQueue.set(queue);
106
+ queue = newQueue;
107
+ this.kv.setBuffer(queueKeyFor(queryDef.id), queue);
108
+ }
109
+ this.queues.set(queryDef.id, queue);
110
+ }
111
+ const indexOfKey = queue.indexOf(queryKey);
112
+ // Item already in queue, move to front
113
+ if (indexOfKey >= 0) {
114
+ if (indexOfKey === 0) {
115
+ // Already at front, nothing to do
116
+ return;
117
+ }
118
+ // Shift items right to make space at front
119
+ queue.copyWithin(1, 0, indexOfKey);
120
+ queue[0] = queryKey;
121
+ return;
122
+ }
123
+ // Item not in queue, add to front and evict tail
124
+ const evicted = queue[queue.length - 1];
125
+ queue.copyWithin(1, 0, queue.length - 1);
126
+ queue[0] = queryKey;
127
+ if (evicted !== 0) {
128
+ this.deleteValue(evicted);
129
+ this.kv.delete(updatedAtKeyFor(evicted));
130
+ }
131
+ }
132
+ setValue(id, value, refIds) {
133
+ const kv = this.kv;
134
+ kv.setString(valueKeyFor(id), JSON.stringify(value));
135
+ const refIdsKey = refIdsKeyFor(id);
136
+ const prevRefIds = kv.getBuffer(refIdsKey);
137
+ if (refIds === undefined || refIds.size === 0) {
138
+ kv.delete(refIdsKey);
139
+ // Decrement all previous refs
140
+ if (prevRefIds !== undefined) {
141
+ for (let i = 0; i < prevRefIds.length; i++) {
142
+ const refId = prevRefIds[i];
143
+ this.decrementRefCount(refId);
144
+ }
145
+ }
146
+ }
147
+ else {
148
+ // Convert the set to a Uint32Array and capture all the refIds before we
149
+ // delete previous ones from the set
150
+ const newRefIds = new Uint32Array(refIds);
151
+ if (prevRefIds !== undefined) {
152
+ // Process new refs: increment if not in old
153
+ for (let i = 0; i < prevRefIds.length; i++) {
154
+ const refId = prevRefIds[i];
155
+ if (refIds.has(refId)) {
156
+ refIds.delete(refId);
157
+ }
158
+ else {
159
+ this.decrementRefCount(refId);
160
+ }
161
+ }
162
+ }
163
+ // No previous refs, increment all unique new refs
164
+ for (const refId of refIds) {
165
+ this.incrementRefCount(refId);
166
+ }
167
+ kv.setBuffer(refIdsKey, newRefIds);
168
+ }
169
+ }
170
+ deleteValue(id) {
171
+ const kv = this.kv;
172
+ kv.delete(valueKeyFor(id));
173
+ kv.delete(refCountKeyFor(id));
174
+ const refIds = kv.getBuffer(refIdsKeyFor(id));
175
+ kv.delete(refIdsKeyFor(id)); // Clean up the refIds key
176
+ if (refIds === undefined) {
177
+ return;
178
+ }
179
+ // Decrement ref counts for all referenced entities
180
+ for (const refId of refIds) {
181
+ if (refId !== 0) {
182
+ this.decrementRefCount(refId);
183
+ }
184
+ }
185
+ }
186
+ incrementRefCount(refId) {
187
+ const refCountKey = refCountKeyFor(refId);
188
+ const currentCount = this.kv.getNumber(refCountKey) ?? 0;
189
+ const newCount = currentCount + 1;
190
+ this.kv.setNumber(refCountKey, newCount);
191
+ }
192
+ decrementRefCount(refId) {
193
+ const refCountKey = refCountKeyFor(refId);
194
+ const currentCount = this.kv.getNumber(refCountKey);
195
+ if (currentCount === undefined) {
196
+ // Already deleted or never existed
197
+ return;
198
+ }
199
+ const newCount = currentCount - 1;
200
+ if (newCount === 0) {
201
+ // Entity exists, cascade delete it
202
+ this.deleteValue(refId);
203
+ }
204
+ else {
205
+ this.kv.setNumber(refCountKey, newCount);
206
+ }
207
+ }
208
+ }
209
+ //# sourceMappingURL=QueryStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryStore.js","sourceRoot":"","sources":["../../src/QueryStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { ObjectFieldTypeDef } from './types.js';
2
+ export declare function typeToString(type: ObjectFieldTypeDef): string;
3
+ export declare function typeError(path: string, expectedType: ObjectFieldTypeDef, value: unknown): Error;
4
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAEpB,wBAAgB,YAAY,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAuG7D;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,CAM/F"}
@@ -0,0 +1,101 @@
1
+ import { ARRAY_KEY, RECORD_KEY, } from './types.js';
2
+ export function typeToString(type) {
3
+ // Handle Set-based constants/enums
4
+ if (type instanceof Set) {
5
+ const values = Array.from(type).map(v => (typeof v === 'string' ? `"${v}"` : String(v)));
6
+ return values.join(' | ');
7
+ }
8
+ // Handle constants
9
+ if (typeof type === 'string') {
10
+ return `"${type}"`;
11
+ }
12
+ if (typeof type === 'boolean') {
13
+ return String(type);
14
+ }
15
+ // Handle primitive masks
16
+ if (typeof type === 'number') {
17
+ const types = [];
18
+ if (type & 1 /* Mask.UNDEFINED */)
19
+ types.push('undefined');
20
+ if (type & 2 /* Mask.NULL */)
21
+ types.push('null');
22
+ if (type & 4 /* Mask.NUMBER */)
23
+ types.push('number');
24
+ if (type & 8 /* Mask.STRING */)
25
+ types.push('string');
26
+ if (type & 16 /* Mask.BOOLEAN */)
27
+ types.push('boolean');
28
+ if (type & 32 /* Mask.OBJECT */)
29
+ types.push('object');
30
+ if (type & 64 /* Mask.ARRAY */)
31
+ types.push('array');
32
+ if (types.length === 0) {
33
+ return 'unknown';
34
+ }
35
+ return types.length === 1 ? types[0] : types.join(' | ');
36
+ }
37
+ // Handle complex types - CHECK UNION FIRST since it contains other types
38
+ const mask = type.mask;
39
+ if (mask & 512 /* Mask.UNION */) {
40
+ const unionType = type;
41
+ const parts = [];
42
+ // Add primitive types from the mask
43
+ if (mask & 1 /* Mask.UNDEFINED */)
44
+ parts.push('undefined');
45
+ if (mask & 2 /* Mask.NULL */)
46
+ parts.push('null');
47
+ if (mask & 4 /* Mask.NUMBER */)
48
+ parts.push('number');
49
+ if (mask & 8 /* Mask.STRING */)
50
+ parts.push('string');
51
+ if (mask & 16 /* Mask.BOOLEAN */)
52
+ parts.push('boolean');
53
+ // Add const/enum values from the values Set
54
+ if (unionType.values !== undefined && unionType.values.size > 0) {
55
+ for (const val of unionType.values) {
56
+ const valStr = typeof val === 'string' ? `"${val}"` : String(val);
57
+ parts.push(valStr);
58
+ }
59
+ }
60
+ // Add complex types from the shape object
61
+ if (unionType.shape !== undefined) {
62
+ if (unionType.shape[ARRAY_KEY] !== undefined) {
63
+ parts.push(`Array<${typeToString(unionType.shape[ARRAY_KEY])}>`);
64
+ }
65
+ if (unionType.shape[RECORD_KEY] !== undefined) {
66
+ parts.push(`Record<string, ${typeToString(unionType.shape[RECORD_KEY])}>`);
67
+ }
68
+ // Add entity/object types by typename
69
+ for (const [key, value] of Object.entries(unionType.shape)) {
70
+ if (key !== ARRAY_KEY && key !== RECORD_KEY) {
71
+ // key is the typename value (e.g., "User", "Post")
72
+ parts.push(key);
73
+ }
74
+ }
75
+ }
76
+ if (parts.length === 0) {
77
+ return 'union';
78
+ }
79
+ return parts.join(' | ');
80
+ }
81
+ if (mask & 1024 /* Mask.ENTITY */) {
82
+ return `Entity<${type.typenameValue}>`;
83
+ }
84
+ if (mask & 64 /* Mask.ARRAY */) {
85
+ const shape = type.shape;
86
+ return `Array<${typeToString(shape)}>`;
87
+ }
88
+ if (mask & 256 /* Mask.RECORD */) {
89
+ const shape = type.shape;
90
+ return `Record<string, ${typeToString(shape)}>`;
91
+ }
92
+ if (mask & 32 /* Mask.OBJECT */) {
93
+ const typename = type.typenameValue;
94
+ return typename ? `Object<${typename}>` : 'object';
95
+ }
96
+ return 'unknown';
97
+ }
98
+ export function typeError(path, expectedType, value) {
99
+ return new TypeError(`Validation error at ${path}: expected ${typeToString(expectedType)}, got ${typeof value === 'object' ? (value === null ? 'null' : Array.isArray(value) ? 'array' : 'object') : typeof value}`);
100
+ }
101
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export * from './types.js';
2
+ export { QueryClient, QueryResultImpl as QueryResult } from './QueryClient.js';
3
+ export type { QueryContext } from './QueryClient.js';
4
+ export type { QueryStore } from './QueryStore.js';
5
+ export { query } from './query.js';
6
+ export type { ExtractType } from './query.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,eAAe,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/E,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './types.js';
2
+ export { QueryClient, QueryResultImpl as QueryResult } from './QueryClient.js';
3
+ export { query } from './query.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,WAAW,EAAE,eAAe,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/E,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { QueryClient } from './QueryClient.js';
2
+ import { ComplexTypeDef, EntityDef, ObjectDef, UnionDef } from './types.js';
3
+ export declare function parseUnionEntities(valueType: number, value: object | unknown[], unionDef: UnionDef, queryClient: QueryClient, entityRefs?: Set<number>): unknown;
4
+ export declare function parseArrayEntities(array: unknown[], arrayShape: ComplexTypeDef, queryClient: QueryClient, entityRefs?: Set<number>): unknown[];
5
+ export declare function parseRecordEntities(record: Record<string, unknown>, recordShape: ComplexTypeDef, queryClient: QueryClient, entityRefs?: Set<number>): Record<string, unknown>;
6
+ export declare function parseObjectEntities(obj: Record<string, unknown>, objectShape: ObjectDef | EntityDef, queryClient: QueryClient, entityRefs?: Set<number>): Record<string, unknown>;
7
+ export declare function parseEntities(value: unknown, def: ComplexTypeDef, queryClient: QueryClient, entityRefs?: Set<number>): unknown;
8
+ //# sourceMappingURL=parseEntities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseEntities.d.ts","sourceRoot":"","sources":["../../src/parseEntities.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAGL,cAAc,EACd,SAAS,EAET,SAAS,EAGT,QAAQ,EACT,MAAM,YAAY,CAAC;AAKpB,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,EACzB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACvB,OAAO,CA+CT;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EAAE,EAChB,UAAU,EAAE,cAAc,EAC1B,WAAW,EAAE,WAAW,EACxB,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACvB,OAAO,EAAE,CAMX;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,WAAW,EAAE,cAAc,EAC3B,WAAW,EAAE,WAAW,EACxB,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,WAAW,EAAE,SAAS,GAAG,SAAS,EAClC,WAAW,EAAE,WAAW,EACxB,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkDzB;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,cAAc,EACnB,WAAW,EAAE,WAAW,EACxB,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GACvB,OAAO,CA4CT"}