fetchium 0.0.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/CHANGELOG.md +249 -0
  2. package/README.md +287 -0
  3. package/dist/cjs/development/QueryClient-CpmwggOn.js +2 -0
  4. package/dist/cjs/development/QueryClient-CpmwggOn.js.map +1 -0
  5. package/dist/cjs/development/index.js +2 -0
  6. package/dist/cjs/development/index.js.map +1 -0
  7. package/dist/cjs/development/package.json +3 -0
  8. package/dist/cjs/development/react/index.js +2 -0
  9. package/dist/cjs/development/react/index.js.map +1 -0
  10. package/dist/cjs/development/shared-Ct5zKrt4.js +2 -0
  11. package/dist/cjs/development/shared-Ct5zKrt4.js.map +1 -0
  12. package/dist/cjs/development/stores/async.js +2 -0
  13. package/dist/cjs/development/stores/async.js.map +1 -0
  14. package/dist/cjs/development/stores/sync.js +2 -0
  15. package/dist/cjs/development/stores/sync.js.map +1 -0
  16. package/dist/cjs/development/subscriptions/polling.js +2 -0
  17. package/dist/cjs/development/subscriptions/polling.js.map +1 -0
  18. package/dist/cjs/production/QueryClient-qi3bR0eD.js +2 -0
  19. package/dist/cjs/production/QueryClient-qi3bR0eD.js.map +1 -0
  20. package/dist/cjs/production/index.js +2 -0
  21. package/dist/cjs/production/index.js.map +1 -0
  22. package/dist/cjs/production/package.json +3 -0
  23. package/dist/cjs/production/react/index.js +2 -0
  24. package/dist/cjs/production/react/index.js.map +1 -0
  25. package/dist/cjs/production/shared-Ct5zKrt4.js +2 -0
  26. package/dist/cjs/production/shared-Ct5zKrt4.js.map +1 -0
  27. package/dist/cjs/production/stores/async.js +2 -0
  28. package/dist/cjs/production/stores/async.js.map +1 -0
  29. package/dist/cjs/production/stores/sync.js +2 -0
  30. package/dist/cjs/production/stores/sync.js.map +1 -0
  31. package/dist/cjs/production/subscriptions/polling.js +2 -0
  32. package/dist/cjs/production/subscriptions/polling.js.map +1 -0
  33. package/dist/esm/ConstraintMatcher.d.ts +42 -0
  34. package/dist/esm/ConstraintMatcher.d.ts.map +1 -0
  35. package/dist/esm/EntityInstance.d.ts +38 -0
  36. package/dist/esm/EntityInstance.d.ts.map +1 -0
  37. package/dist/esm/EntityStore.d.ts +14 -0
  38. package/dist/esm/EntityStore.d.ts.map +1 -0
  39. package/dist/esm/GcManager.d.ts +38 -0
  40. package/dist/esm/GcManager.d.ts.map +1 -0
  41. package/dist/esm/LiveCollection.d.ts +86 -0
  42. package/dist/esm/LiveCollection.d.ts.map +1 -0
  43. package/dist/esm/MutationResult.d.ts +23 -0
  44. package/dist/esm/MutationResult.d.ts.map +1 -0
  45. package/dist/esm/NetworkManager.d.ts +62 -0
  46. package/dist/esm/NetworkManager.d.ts.map +1 -0
  47. package/dist/esm/QueryClient.d.ts +76 -0
  48. package/dist/esm/QueryClient.d.ts.map +1 -0
  49. package/dist/esm/QueryResult.d.ts +67 -0
  50. package/dist/esm/QueryResult.d.ts.map +1 -0
  51. package/dist/esm/applyEntities.d.ts +12 -0
  52. package/dist/esm/applyEntities.d.ts.map +1 -0
  53. package/dist/esm/development/QueryClient-DRZtPKFD.js +2568 -0
  54. package/dist/esm/development/QueryClient-DRZtPKFD.js.map +1 -0
  55. package/dist/esm/development/index.js +103 -0
  56. package/dist/esm/development/index.js.map +1 -0
  57. package/dist/esm/development/react/index.js +40 -0
  58. package/dist/esm/development/react/index.js.map +1 -0
  59. package/dist/esm/development/shared-Dq2yW78d.js +15 -0
  60. package/dist/esm/development/shared-Dq2yW78d.js.map +1 -0
  61. package/dist/esm/development/stores/async.js +214 -0
  62. package/dist/esm/development/stores/async.js.map +1 -0
  63. package/dist/esm/development/stores/sync.js +149 -0
  64. package/dist/esm/development/stores/sync.js.map +1 -0
  65. package/dist/esm/development/subscriptions/polling.js +25 -0
  66. package/dist/esm/development/subscriptions/polling.js.map +1 -0
  67. package/dist/esm/errors.d.ts +4 -0
  68. package/dist/esm/errors.d.ts.map +1 -0
  69. package/dist/esm/fieldRef.d.ts +15 -0
  70. package/dist/esm/fieldRef.d.ts.map +1 -0
  71. package/dist/esm/index.d.ts +14 -0
  72. package/dist/esm/index.d.ts.map +1 -0
  73. package/dist/esm/mutation.d.ts +47 -0
  74. package/dist/esm/mutation.d.ts.map +1 -0
  75. package/dist/esm/parseEntities.d.ts +44 -0
  76. package/dist/esm/parseEntities.d.ts.map +1 -0
  77. package/dist/esm/production/QueryClient-BP0Z1rQV.js +2453 -0
  78. package/dist/esm/production/QueryClient-BP0Z1rQV.js.map +1 -0
  79. package/dist/esm/production/index.js +103 -0
  80. package/dist/esm/production/index.js.map +1 -0
  81. package/dist/esm/production/react/index.js +40 -0
  82. package/dist/esm/production/react/index.js.map +1 -0
  83. package/dist/esm/production/shared-Dq2yW78d.js +15 -0
  84. package/dist/esm/production/shared-Dq2yW78d.js.map +1 -0
  85. package/dist/esm/production/stores/async.js +214 -0
  86. package/dist/esm/production/stores/async.js.map +1 -0
  87. package/dist/esm/production/stores/sync.js +149 -0
  88. package/dist/esm/production/stores/sync.js.map +1 -0
  89. package/dist/esm/production/subscriptions/polling.js +25 -0
  90. package/dist/esm/production/subscriptions/polling.js.map +1 -0
  91. package/dist/esm/proxy.d.ts +20 -0
  92. package/dist/esm/proxy.d.ts.map +1 -0
  93. package/dist/esm/proxyId.d.ts +8 -0
  94. package/dist/esm/proxyId.d.ts.map +1 -0
  95. package/dist/esm/query-types.d.ts +62 -0
  96. package/dist/esm/query-types.d.ts.map +1 -0
  97. package/dist/esm/query.d.ts +86 -0
  98. package/dist/esm/query.d.ts.map +1 -0
  99. package/dist/esm/react/index.d.ts +2 -0
  100. package/dist/esm/react/index.d.ts.map +1 -0
  101. package/dist/esm/react/use-query.d.ts +5 -0
  102. package/dist/esm/react/use-query.d.ts.map +1 -0
  103. package/dist/esm/retry.d.ts +4 -0
  104. package/dist/esm/retry.d.ts.map +1 -0
  105. package/dist/esm/stores/async.d.ts +80 -0
  106. package/dist/esm/stores/async.d.ts.map +1 -0
  107. package/dist/esm/stores/shared.d.ts +12 -0
  108. package/dist/esm/stores/shared.d.ts.map +1 -0
  109. package/dist/esm/stores/sync.d.ts +41 -0
  110. package/dist/esm/stores/sync.d.ts.map +1 -0
  111. package/dist/esm/subscriptions/polling.d.ts +6 -0
  112. package/dist/esm/subscriptions/polling.d.ts.map +1 -0
  113. package/dist/esm/type-utils.d.ts +16 -0
  114. package/dist/esm/type-utils.d.ts.map +1 -0
  115. package/dist/esm/typeDefs.d.ts +86 -0
  116. package/dist/esm/typeDefs.d.ts.map +1 -0
  117. package/dist/esm/types.d.ts +272 -0
  118. package/dist/esm/types.d.ts.map +1 -0
  119. package/dist/esm/utils.d.ts +38 -0
  120. package/dist/esm/utils.d.ts.map +1 -0
  121. package/index.d.ts +1 -0
  122. package/package.json +134 -5
  123. package/stores/async.d.ts +1 -0
  124. package/stores/async.js +15 -0
  125. package/stores/sync.d.ts +1 -0
  126. package/stores/sync.js +15 -0
  127. package/index.js +0 -1
@@ -0,0 +1,25 @@
1
+ function o(t) {
2
+ return !Number.isFinite(t) || t < 100 ? 100 : t;
3
+ }
4
+ function f(t) {
5
+ const n = o(t.interval);
6
+ return function(s) {
7
+ let i = !0, e;
8
+ const c = this.refetch, r = async () => {
9
+ if (i) {
10
+ try {
11
+ await c();
12
+ } catch {
13
+ }
14
+ i && (e = setTimeout(r, n));
15
+ }
16
+ };
17
+ return e = setTimeout(r, n), () => {
18
+ i = !1, e !== void 0 && (clearTimeout(e), e = void 0);
19
+ };
20
+ };
21
+ }
22
+ export {
23
+ f as poll
24
+ };
25
+ //# sourceMappingURL=polling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polling.js","sources":["../../../../src/subscriptions/polling.ts"],"sourcesContent":["import type { MutationEvent } from '../types.js';\n\nconst MIN_INTERVAL = 100;\n\nexport interface PollConfig {\n interval: number;\n}\n\nfunction clampInterval(interval: number): number {\n if (!Number.isFinite(interval) || interval < MIN_INTERVAL) {\n if (IS_DEV && (Number.isNaN(interval) || interval < 0)) {\n console.warn(`poll: invalid interval ${interval}, clamping to ${MIN_INTERVAL}ms`);\n }\n return MIN_INTERVAL;\n }\n return interval;\n}\n\nexport function poll(config: PollConfig): (this: any, onEvent: (event: MutationEvent) => void) => () => void {\n const interval = clampInterval(config.interval);\n\n return function subscribe(this: any, _onEvent: (event: MutationEvent) => void): () => void {\n let active = true;\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n const refetch = this.refetch as () => Promise<unknown>;\n\n const tick = async () => {\n if (!active) return;\n try {\n await refetch();\n } catch {\n // Keep polling after errors\n }\n if (active) {\n timer = setTimeout(tick, interval);\n }\n };\n\n timer = setTimeout(tick, interval);\n\n return () => {\n active = false;\n if (timer !== undefined) {\n clearTimeout(timer);\n timer = undefined;\n }\n };\n };\n}\n"],"names":["clampInterval","interval","poll","config","_onEvent","active","timer","refetch","tick"],"mappings":"AAQA,SAASA,EAAcC,GAA0B;AAC/C,SAAI,CAAC,OAAO,SAASA,CAAQ,KAAKA,IAAW,MAIpC,MAEFA;AACT;AAEO,SAASC,EAAKC,GAAwF;AAC3G,QAAMF,IAAWD,EAAcG,EAAO,QAAQ;AAE9C,SAAO,SAA8BC,GAAsD;AACzF,QAAIC,IAAS,IACTC;AAEJ,UAAMC,IAAU,KAAK,SAEfC,IAAO,YAAY;AACvB,UAAKH,GACL;AAAA,YAAI;AACF,gBAAME,EAAA;AAAA,QACR,QAAQ;AAAA,QAER;AACA,QAAIF,MACFC,IAAQ,WAAWE,GAAMP,CAAQ;AAAA;AAAA,IAErC;AAEA,WAAAK,IAAQ,WAAWE,GAAMP,CAAQ,GAE1B,MAAM;AACX,MAAAI,IAAS,IACLC,MAAU,WACZ,aAAaA,CAAK,GAClBA,IAAQ;AAAA,IAEZ;AAAA,EACF;AACF;"}
@@ -0,0 +1,20 @@
1
+ export type WarnFn = (message: string, context?: Record<string, unknown>) => void;
2
+ /**
3
+ * Base class for entity definitions. Users extend this to define entity shapes.
4
+ * Also serves as the prototype for entity proxies, so `proxy instanceof Entity` works.
5
+ */
6
+ export declare class Entity {
7
+ static cache?: {
8
+ gcTime?: number;
9
+ };
10
+ __subscribe?(onEvent: (event: import('./types.js').MutationEvent) => void): (() => void) | undefined;
11
+ constructor();
12
+ }
13
+ /**
14
+ * Deep merge two objects, with the update object taking precedence.
15
+ * Arrays and non-plain objects (Date, etc.) are replaced, not merged.
16
+ * Only plain objects are recursively merged.
17
+ */
18
+ export declare function mergeValues<T extends Record<string, unknown>>(target: Record<string, unknown>, update: Record<string, unknown>): T;
19
+ export { PROXY_ID, getProxyId } from './proxyId.js';
20
+ //# sourceMappingURL=proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/proxy.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;AAKlF;;;GAGG;AACH,qBAAa,MAAM;IACjB,MAAM,CAAC,KAAK,CAAC,EAAE;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IAEF,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,YAAY,EAAE,aAAa,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS;;CAKrG;AAQD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,CAAC,CAWH;AAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * WeakMap that brands entity proxies with their numeric key.
3
+ * Shared between EntityInstance (writes) and proxy.ts (reads for
4
+ * parseObjectValue / mergeValues identity checks).
5
+ */
6
+ export declare const PROXY_ID: WeakMap<object, number>;
7
+ export declare function getProxyId(object: Record<string, unknown>): number | undefined;
8
+ //# sourceMappingURL=proxyId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxyId.d.ts","sourceRoot":"","sources":["../../src/proxyId.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,QAAQ,yBAAgC,CAAC;AAEtD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAE9E"}
@@ -0,0 +1,62 @@
1
+ import { type Signal } from 'signalium';
2
+ import { NetworkMode, RetryConfig, BaseUrlValue, QueryRequestInit } from './types.js';
3
+ import { QueryDefinition } from './query.js';
4
+ export interface QueryContext {
5
+ fetch: (url: string, init?: QueryRequestInit) => Promise<Response>;
6
+ baseUrl?: BaseUrlValue;
7
+ log?: {
8
+ error?: (message: string, error?: unknown) => void;
9
+ warn?: (message: string, error?: unknown) => void;
10
+ info?: (message: string) => void;
11
+ debug?: (message: string) => void;
12
+ };
13
+ evictionMultiplier?: number;
14
+ }
15
+ /**
16
+ * Resolves a BaseUrlValue to a string.
17
+ * Handles static strings, Signals, and functions.
18
+ */
19
+ export declare function resolveBaseUrl(baseUrl: BaseUrlValue | undefined): string | undefined;
20
+ export interface QueryCacheOptions {
21
+ maxCount?: number;
22
+ cacheTime?: number;
23
+ }
24
+ export interface LoadNextConfig {
25
+ /** Override the URL/path for the next page request. Can be a FieldRef (e.g. this.result.nextUrl). */
26
+ url?: unknown;
27
+ /** Search params for the next page. Values can be FieldRefs (e.g. this.result.nextCursor). */
28
+ searchParams?: Record<string, unknown>;
29
+ }
30
+ export interface QueryConfigOptions {
31
+ gcTime?: number;
32
+ staleTime?: number;
33
+ debounce?: number;
34
+ networkMode?: NetworkMode;
35
+ retry?: RetryConfig | number | boolean;
36
+ refreshStaleOnReconnect?: boolean;
37
+ subscribe?: (this: any, onEvent: (event: import('./types.js').MutationEvent) => void) => () => void;
38
+ }
39
+ export type QueryParams = Record<string, string | number | boolean | undefined | null | Signal<string | number | boolean | undefined | null> | unknown[] | Record<string, unknown>>;
40
+ export type PreloadedEntityMap = Map<number, Record<string, unknown>>;
41
+ export interface CachedQuery {
42
+ value: unknown;
43
+ refIds: Set<number> | undefined;
44
+ updatedAt: number;
45
+ preloadedEntities?: PreloadedEntityMap;
46
+ }
47
+ export interface QueryStore {
48
+ loadQuery(queryDef: QueryDefinition<any, any, any>, queryKey: number): MaybePromise<CachedQuery | undefined>;
49
+ saveQuery(queryDef: QueryDefinition<any, any, any>, queryKey: number, value: unknown, updatedAt: number, refIds?: Set<number>): void;
50
+ saveEntity(entityKey: number, value: unknown, refIds?: Set<number>): void;
51
+ activateQuery(queryDef: QueryDefinition<any, any, any>, storageKey: number): void;
52
+ deleteQuery(queryKey: number): void;
53
+ purgeStaleQueries?(): MaybePromise<void>;
54
+ }
55
+ export type MaybePromise<T> = T | Promise<T>;
56
+ export declare function extractParamsForKey(params: QueryParams | undefined): Record<string, unknown> | undefined;
57
+ /**
58
+ * Computes the query key for instance lookup. Instance keys use raw params
59
+ * (with Signals), storage keys use extracted params (Signal values read).
60
+ */
61
+ export declare const queryKeyFor: (queryDef: QueryDefinition<any, any, any>, params: unknown) => number;
62
+ //# sourceMappingURL=query-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-types.d.ts","sourceRoot":"","sources":["../../src/query-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import { ExtractType, TypeDef, QueryRequestOptions, TypeDefShape, RetryConfig, QueryPromise } from './types.js';
2
+ import { QueryCacheOptions, QueryConfigOptions, LoadNextConfig, QueryContext, QueryParams } from './QueryClient.js';
3
+ import { ValidatorDef } from './typeDefs.js';
4
+ import { HasRequiredKeys, Optionalize, Signalize } from './type-utils.js';
5
+ import { type CapturedDefinition } from './fieldRef.js';
6
+ export interface ResolvedLoadNext {
7
+ url?: string;
8
+ searchParams?: Record<string, unknown>;
9
+ }
10
+ export interface ResolvedRetryConfig {
11
+ retries: number;
12
+ retryDelay: (attempt: number) => number;
13
+ }
14
+ export declare function resolveRetryConfig(retryOption: RetryConfig | number | boolean | undefined, isServer?: boolean): ResolvedRetryConfig;
15
+ export declare abstract class Query {
16
+ static cache?: QueryCacheOptions;
17
+ params?: Record<string, TypeDef>;
18
+ abstract result: TypeDefShape;
19
+ config?: QueryConfigOptions;
20
+ context: QueryContext;
21
+ response: Response | undefined;
22
+ signal: AbortSignal;
23
+ refetch: () => void;
24
+ resultData: Record<string, unknown>;
25
+ rawLoadNext: LoadNextConfig | undefined;
26
+ abstract getStorageKey(): unknown;
27
+ abstract send(): Promise<unknown>;
28
+ getConfig?(): QueryConfigOptions | undefined;
29
+ sendNext?(): Promise<unknown>;
30
+ hasNext?(): boolean;
31
+ constructor();
32
+ }
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
+ export interface ResolvedQueryOptions {
55
+ config: QueryConfigOptions | undefined;
56
+ retryConfig: ResolvedRetryConfig;
57
+ }
58
+ export interface QueryDefinitionStatics {
59
+ readonly id: string;
60
+ /** Root entity shape. For non-entity results this is a synthetic EntityDef
61
+ * with QUERY_ID as idField. For entity results this is the entity's own
62
+ * ValidatorDef. */
63
+ readonly shape: ValidatorDef<unknown>;
64
+ 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(). */
68
+ readonly hasSendNext: boolean;
69
+ /** Whether the result shape is already an entity (vs synthetic wrapper). */
70
+ readonly isEntityResult: boolean;
71
+ }
72
+ export declare class QueryDefinition<Params extends QueryParams | undefined, Result, StreamType> {
73
+ readonly captured: CapturedDefinition<Query>;
74
+ readonly statics: QueryDefinitionStatics;
75
+ constructor(statics: QueryDefinitionStatics, captured: CapturedDefinition<Query>);
76
+ createExecutionContext(actualParams: Record<string, unknown>, queryContext: QueryContext): Query;
77
+ resolveOptions(ctx: Query): ResolvedQueryOptions;
78
+ static for(QueryClass: new () => Query): QueryDefinition<any, any, any>;
79
+ }
80
+ export type ExtractQueryParams<T extends Query> = T['params'] extends Record<string, TypeDef> ? {
81
+ [K in keyof T['params']]: ExtractType<T['params'][K]>;
82
+ } : {};
83
+ export declare const queryKeyForClass: (cls: new () => Query, params: unknown) => number;
84
+ export declare function getQueryDefinition(QueryClass: new () => Query): QueryDefinition<any, any, any>;
85
+ export declare function fetchQuery<T extends Query>(QueryClass: new () => T, ...args: HasRequiredKeys<ExtractType<T['params']>> extends true ? [params: Optionalize<Signalize<ExtractType<T['params']>>>] : [params?: Optionalize<Signalize<ExtractType<T['params']>>> | undefined]): QueryPromise<T>;
86
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { useQuery } from './use-query.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { ExtractType, QueryPromise } from '../types.js';
2
+ import { Query } from '../query.js';
3
+ import { HasRequiredKeys, Optionalize, Signalize } from '../type-utils.js';
4
+ export declare function useQuery<T extends Query>(QueryClass: new () => T, ...args: HasRequiredKeys<ExtractType<T['params']>> extends true ? [params: Optionalize<Signalize<ExtractType<T['params']>>>] : [params?: Optionalize<Signalize<ExtractType<T['params']>>> | undefined]): QueryPromise<T>;
5
+ //# sourceMappingURL=use-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-query.d.ts","sourceRoot":"","sources":["../../../src/react/use-query.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAkC,KAAK,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAqD3E,wBAAgB,QAAQ,CAAC,CAAC,SAAS,KAAK,EACtC,UAAU,EAAE,UAAU,CAAC,EACvB,GAAG,IAAI,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,IAAI,GAC3D,CAAC,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAC1D,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAC1E,YAAY,CAAC,CAAC,CAAC,CAMjB"}
@@ -0,0 +1,4 @@
1
+ import type { ResolvedRetryConfig } from './query.js';
2
+ export declare function sleep(ms: number, signal?: AbortSignal): Promise<void>;
3
+ export declare function withRetry<T>(fn: () => Promise<T>, config: ResolvedRetryConfig, signal?: AbortSignal): Promise<T>;
4
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/retry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBrE;AAED,wBAAsB,SAAS,CAAC,CAAC,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,MAAM,EAAE,mBAAmB,EAC3B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,CAAC,CAAC,CAiBZ"}
@@ -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,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"}
@@ -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,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 collection 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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"}