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.
- package/CHANGELOG.md +250 -0
- package/README.md +287 -0
- package/dist/cjs/development/QueryClient-CLi3ONNM.js +2 -0
- package/dist/cjs/development/QueryClient-CLi3ONNM.js.map +1 -0
- package/dist/cjs/development/QueryController-BQA49OYU.js +2 -0
- package/dist/cjs/development/QueryController-BQA49OYU.js.map +1 -0
- package/dist/cjs/development/index.js +2 -0
- package/dist/cjs/development/index.js.map +1 -0
- package/dist/cjs/development/mutation-CikIl_6k.js +2 -0
- package/dist/cjs/development/mutation-CikIl_6k.js.map +1 -0
- package/dist/cjs/development/package.json +3 -0
- package/dist/cjs/development/react/index.js +2 -0
- package/dist/cjs/development/react/index.js.map +1 -0
- package/dist/cjs/development/rest/index.js +2 -0
- package/dist/cjs/development/rest/index.js.map +1 -0
- package/dist/cjs/development/shared-Ct5zKrt4.js +2 -0
- package/dist/cjs/development/shared-Ct5zKrt4.js.map +1 -0
- package/dist/cjs/development/stores/async.js +2 -0
- package/dist/cjs/development/stores/async.js.map +1 -0
- package/dist/cjs/development/stores/sync.js +2 -0
- package/dist/cjs/development/stores/sync.js.map +1 -0
- package/dist/cjs/development/subscriptions/polling.js +2 -0
- package/dist/cjs/development/subscriptions/polling.js.map +1 -0
- package/dist/cjs/development/topic/index.js +2 -0
- package/dist/cjs/development/topic/index.js.map +1 -0
- package/dist/cjs/production/QueryClient-N0MJmuHW.js +2 -0
- package/dist/cjs/production/QueryClient-N0MJmuHW.js.map +1 -0
- package/dist/cjs/production/QueryController-BQA49OYU.js +2 -0
- package/dist/cjs/production/QueryController-BQA49OYU.js.map +1 -0
- package/dist/cjs/production/index.js +2 -0
- package/dist/cjs/production/index.js.map +1 -0
- package/dist/cjs/production/mutation-P_Yb4LI9.js +2 -0
- package/dist/cjs/production/mutation-P_Yb4LI9.js.map +1 -0
- package/dist/cjs/production/package.json +3 -0
- package/dist/cjs/production/react/index.js +2 -0
- package/dist/cjs/production/react/index.js.map +1 -0
- package/dist/cjs/production/rest/index.js +2 -0
- package/dist/cjs/production/rest/index.js.map +1 -0
- package/dist/cjs/production/shared-Ct5zKrt4.js +2 -0
- package/dist/cjs/production/shared-Ct5zKrt4.js.map +1 -0
- package/dist/cjs/production/stores/async.js +2 -0
- package/dist/cjs/production/stores/async.js.map +1 -0
- package/dist/cjs/production/stores/sync.js +2 -0
- package/dist/cjs/production/stores/sync.js.map +1 -0
- package/dist/cjs/production/subscriptions/polling.js +2 -0
- package/dist/cjs/production/subscriptions/polling.js.map +1 -0
- package/dist/cjs/production/topic/index.js +2 -0
- package/dist/cjs/production/topic/index.js.map +1 -0
- package/dist/esm/ConstraintMatcher.d.ts +42 -0
- package/dist/esm/ConstraintMatcher.d.ts.map +1 -0
- package/dist/esm/EntityInstance.d.ts +38 -0
- package/dist/esm/EntityInstance.d.ts.map +1 -0
- package/dist/esm/EntityStore.d.ts +14 -0
- package/dist/esm/EntityStore.d.ts.map +1 -0
- package/dist/esm/GcManager.d.ts +38 -0
- package/dist/esm/GcManager.d.ts.map +1 -0
- package/dist/esm/LiveCollection.d.ts +86 -0
- package/dist/esm/LiveCollection.d.ts.map +1 -0
- package/dist/esm/MutationResult.d.ts +22 -0
- package/dist/esm/MutationResult.d.ts.map +1 -0
- package/dist/esm/NetworkManager.d.ts +62 -0
- package/dist/esm/NetworkManager.d.ts.map +1 -0
- package/dist/esm/QueryClient.d.ts +98 -0
- package/dist/esm/QueryClient.d.ts.map +1 -0
- package/dist/esm/QueryController.d.ts +49 -0
- package/dist/esm/QueryController.d.ts.map +1 -0
- package/dist/esm/QueryResult.d.ts +67 -0
- package/dist/esm/QueryResult.d.ts.map +1 -0
- package/dist/esm/applyEntities.d.ts +12 -0
- package/dist/esm/applyEntities.d.ts.map +1 -0
- package/dist/esm/development/QueryClient-Dtde3pss.js +2572 -0
- package/dist/esm/development/QueryClient-Dtde3pss.js.map +1 -0
- package/dist/esm/development/QueryController-Ch_ncxiI.js +14 -0
- package/dist/esm/development/QueryController-Ch_ncxiI.js.map +1 -0
- package/dist/esm/development/index.js +32 -0
- package/dist/esm/development/index.js.map +1 -0
- package/dist/esm/development/mutation-UZshUQAf.js +58 -0
- package/dist/esm/development/mutation-UZshUQAf.js.map +1 -0
- package/dist/esm/development/react/index.js +40 -0
- package/dist/esm/development/react/index.js.map +1 -0
- package/dist/esm/development/rest/index.js +142 -0
- package/dist/esm/development/rest/index.js.map +1 -0
- package/dist/esm/development/shared-DcuVH8Pf.js +15 -0
- package/dist/esm/development/shared-DcuVH8Pf.js.map +1 -0
- package/dist/esm/development/stores/async.js +214 -0
- package/dist/esm/development/stores/async.js.map +1 -0
- package/dist/esm/development/stores/sync.js +149 -0
- package/dist/esm/development/stores/sync.js.map +1 -0
- package/dist/esm/development/subscriptions/polling.js +25 -0
- package/dist/esm/development/subscriptions/polling.js.map +1 -0
- package/dist/esm/development/topic/index.js +86 -0
- package/dist/esm/development/topic/index.js.map +1 -0
- package/dist/esm/errors.d.ts +4 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/fieldRef.d.ts +15 -0
- package/dist/esm/fieldRef.d.ts.map +1 -0
- package/dist/esm/index.d.ts +15 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/mutation.d.ts +34 -0
- package/dist/esm/mutation.d.ts.map +1 -0
- package/dist/esm/parseEntities.d.ts +44 -0
- package/dist/esm/parseEntities.d.ts.map +1 -0
- package/dist/esm/production/QueryClient-YqnBxFy1.js +2457 -0
- package/dist/esm/production/QueryClient-YqnBxFy1.js.map +1 -0
- package/dist/esm/production/QueryController-Ch_ncxiI.js +14 -0
- package/dist/esm/production/QueryController-Ch_ncxiI.js.map +1 -0
- package/dist/esm/production/index.js +32 -0
- package/dist/esm/production/index.js.map +1 -0
- package/dist/esm/production/mutation-pgFl1uIY.js +58 -0
- package/dist/esm/production/mutation-pgFl1uIY.js.map +1 -0
- package/dist/esm/production/react/index.js +40 -0
- package/dist/esm/production/react/index.js.map +1 -0
- package/dist/esm/production/rest/index.js +142 -0
- package/dist/esm/production/rest/index.js.map +1 -0
- package/dist/esm/production/shared-DcuVH8Pf.js +15 -0
- package/dist/esm/production/shared-DcuVH8Pf.js.map +1 -0
- package/dist/esm/production/stores/async.js +214 -0
- package/dist/esm/production/stores/async.js.map +1 -0
- package/dist/esm/production/stores/sync.js +149 -0
- package/dist/esm/production/stores/sync.js.map +1 -0
- package/dist/esm/production/subscriptions/polling.js +25 -0
- package/dist/esm/production/subscriptions/polling.js.map +1 -0
- package/dist/esm/production/topic/index.js +86 -0
- package/dist/esm/production/topic/index.js.map +1 -0
- package/dist/esm/proxy.d.ts +20 -0
- package/dist/esm/proxy.d.ts.map +1 -0
- package/dist/esm/proxyId.d.ts +8 -0
- package/dist/esm/proxyId.d.ts.map +1 -0
- package/dist/esm/query-types.d.ts +60 -0
- package/dist/esm/query-types.d.ts.map +1 -0
- package/dist/esm/query.d.ts +64 -0
- package/dist/esm/query.d.ts.map +1 -0
- package/dist/esm/react/index.d.ts +2 -0
- package/dist/esm/react/index.d.ts.map +1 -0
- package/dist/esm/react/use-query.d.ts +5 -0
- package/dist/esm/react/use-query.d.ts.map +1 -0
- package/dist/esm/rest/RESTMutation.d.ts +18 -0
- package/dist/esm/rest/RESTMutation.d.ts.map +1 -0
- package/dist/esm/rest/RESTQuery.d.ts +24 -0
- package/dist/esm/rest/RESTQuery.d.ts.map +1 -0
- package/dist/esm/rest/RESTQueryController.d.ts +34 -0
- package/dist/esm/rest/RESTQueryController.d.ts.map +1 -0
- package/dist/esm/rest/index.d.ts +5 -0
- package/dist/esm/rest/index.d.ts.map +1 -0
- package/dist/esm/retry.d.ts +4 -0
- package/dist/esm/retry.d.ts.map +1 -0
- package/dist/esm/stores/async.d.ts +80 -0
- package/dist/esm/stores/async.d.ts.map +1 -0
- package/dist/esm/stores/shared.d.ts +12 -0
- package/dist/esm/stores/shared.d.ts.map +1 -0
- package/dist/esm/stores/sync.d.ts +41 -0
- package/dist/esm/stores/sync.d.ts.map +1 -0
- package/dist/esm/subscriptions/polling.d.ts +6 -0
- package/dist/esm/subscriptions/polling.d.ts.map +1 -0
- package/dist/esm/testing/MockClient.d.ts +64 -0
- package/dist/esm/testing/MockClient.d.ts.map +1 -0
- package/dist/esm/testing/auto-generate.d.ts +20 -0
- package/dist/esm/testing/auto-generate.d.ts.map +1 -0
- package/dist/esm/testing/entity-factory.d.ts +13 -0
- package/dist/esm/testing/entity-factory.d.ts.map +1 -0
- package/dist/esm/testing/index.d.ts +6 -0
- package/dist/esm/testing/index.d.ts.map +1 -0
- package/dist/esm/testing/types.d.ts +37 -0
- package/dist/esm/testing/types.d.ts.map +1 -0
- package/dist/esm/topic/TopicQuery.d.ts +10 -0
- package/dist/esm/topic/TopicQuery.d.ts.map +1 -0
- package/dist/esm/topic/TopicQueryController.d.ts +43 -0
- package/dist/esm/topic/TopicQueryController.d.ts.map +1 -0
- package/dist/esm/topic/index.d.ts +3 -0
- package/dist/esm/topic/index.d.ts.map +1 -0
- package/dist/esm/type-utils.d.ts +16 -0
- package/dist/esm/type-utils.d.ts.map +1 -0
- package/dist/esm/typeDefs.d.ts +86 -0
- package/dist/esm/typeDefs.d.ts.map +1 -0
- package/dist/esm/types.d.ts +277 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/utils.d.ts +38 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/index.d.ts +1 -0
- package/package.json +181 -5
- package/plugin/.claude-plugin/plugin.json +10 -0
- package/plugin/agents/fetchium.md +168 -0
- package/plugin/docs/api/fetchium-react.md +135 -0
- package/plugin/docs/api/fetchium.md +674 -0
- package/plugin/docs/api/stores-async.md +219 -0
- package/plugin/docs/api/stores-sync.md +133 -0
- package/plugin/docs/core/entities.md +351 -0
- package/plugin/docs/core/queries.md +600 -0
- package/plugin/docs/core/streaming.md +550 -0
- package/plugin/docs/core/types.md +374 -0
- package/plugin/docs/data/caching.md +298 -0
- package/plugin/docs/data/live-data.md +435 -0
- package/plugin/docs/data/mutations.md +465 -0
- package/plugin/docs/guides/auth.md +318 -0
- package/plugin/docs/guides/error-handling.md +351 -0
- package/plugin/docs/guides/offline.md +270 -0
- package/plugin/docs/guides/testing.md +301 -0
- package/plugin/docs/quickstart.md +170 -0
- package/plugin/docs/reference/pagination.md +519 -0
- package/plugin/docs/reference/rest-queries.md +107 -0
- package/plugin/docs/reference/why-signalium.md +364 -0
- package/plugin/docs/setup/project-setup.md +319 -0
- package/plugin/install.mjs +88 -0
- package/plugin/skills/design/SKILL.md +140 -0
- package/plugin/skills/teach/SKILL.md +105 -0
- package/stores/async.d.ts +1 -0
- package/stores/async.js +15 -0
- package/stores/sync.d.ts +1 -0
- package/stores/sync.js +15 -0
- package/index.js +0 -1
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import { DiscriminatedReactivePromise, type Signal } from 'signalium';
|
|
2
|
+
import type { Query } from './query.js';
|
|
3
|
+
/**
|
|
4
|
+
* Flexible base URL value - can be a static string, a Signal, or a function.
|
|
5
|
+
* Functions are wrapped in reactiveSignal internally for memoization.
|
|
6
|
+
*/
|
|
7
|
+
export type BaseUrlValue = string | Signal<string> | (() => string);
|
|
8
|
+
/**
|
|
9
|
+
* Extended RequestInit with additional query-specific options.
|
|
10
|
+
* This is what gets passed to the fetch function.
|
|
11
|
+
*/
|
|
12
|
+
export interface QueryRequestInit extends RequestInit {
|
|
13
|
+
baseUrl?: string;
|
|
14
|
+
searchParams?: URLSearchParams;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Request options that can be specified at the query definition level.
|
|
18
|
+
* These can override context-level settings.
|
|
19
|
+
*/
|
|
20
|
+
export interface QueryRequestOptions {
|
|
21
|
+
baseUrl?: BaseUrlValue;
|
|
22
|
+
credentials?: RequestCredentials;
|
|
23
|
+
mode?: RequestMode;
|
|
24
|
+
cache?: RequestCache;
|
|
25
|
+
redirect?: RequestRedirect;
|
|
26
|
+
referrer?: string;
|
|
27
|
+
referrerPolicy?: ReferrerPolicy;
|
|
28
|
+
integrity?: string;
|
|
29
|
+
keepalive?: boolean;
|
|
30
|
+
signal?: AbortSignal;
|
|
31
|
+
}
|
|
32
|
+
export declare enum NetworkMode {
|
|
33
|
+
/**
|
|
34
|
+
* Always fetch regardless of network status
|
|
35
|
+
*/
|
|
36
|
+
Always = "always",
|
|
37
|
+
/**
|
|
38
|
+
* Only fetch when online (default)
|
|
39
|
+
*/
|
|
40
|
+
Online = "online",
|
|
41
|
+
/**
|
|
42
|
+
* Fetch if cached data exists, even when offline
|
|
43
|
+
*/
|
|
44
|
+
OfflineFirst = "offlineFirst"
|
|
45
|
+
}
|
|
46
|
+
export interface RetryConfig {
|
|
47
|
+
/**
|
|
48
|
+
* Number of retry attempts
|
|
49
|
+
*/
|
|
50
|
+
retries: number;
|
|
51
|
+
/**
|
|
52
|
+
* Optional custom delay function (receives attempt index starting at 0)
|
|
53
|
+
* Default: exponential backoff (1000ms * 2^attempt)
|
|
54
|
+
*/
|
|
55
|
+
retryDelay?: (attemptIndex: number) => number;
|
|
56
|
+
}
|
|
57
|
+
export declare const enum Mask {
|
|
58
|
+
UNDEFINED = 1,
|
|
59
|
+
NULL = 2,
|
|
60
|
+
NUMBER = 4,
|
|
61
|
+
STRING = 8,
|
|
62
|
+
BOOLEAN = 16,
|
|
63
|
+
OBJECT = 32,
|
|
64
|
+
ARRAY = 64,
|
|
65
|
+
ID = 128,
|
|
66
|
+
RECORD = 256,
|
|
67
|
+
UNION = 512,
|
|
68
|
+
ENTITY = 1024,
|
|
69
|
+
HAS_FORMAT = 4096,
|
|
70
|
+
IS_EAGER_FORMAT = 8192,
|
|
71
|
+
PARSE_RESULT = 16384,
|
|
72
|
+
LIVE = 32768
|
|
73
|
+
}
|
|
74
|
+
export type ParseSuccess<T> = {
|
|
75
|
+
success: true;
|
|
76
|
+
value: T;
|
|
77
|
+
};
|
|
78
|
+
export type ParseError = {
|
|
79
|
+
success: false;
|
|
80
|
+
error: Error;
|
|
81
|
+
};
|
|
82
|
+
export type ParseResult<T> = ParseSuccess<T> | ParseError;
|
|
83
|
+
/**
|
|
84
|
+
* Interface for case-insensitive enum sets.
|
|
85
|
+
* String values are matched case-insensitively during parsing,
|
|
86
|
+
* but always return the canonical (originally defined) casing.
|
|
87
|
+
*/
|
|
88
|
+
export interface CaseInsensitiveEnumSet<T extends string | boolean | number> extends Set<T> {
|
|
89
|
+
/**
|
|
90
|
+
* Check if a value exists in the set (case-insensitively for strings).
|
|
91
|
+
*/
|
|
92
|
+
has(value: unknown): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Get the canonical value for a given input.
|
|
95
|
+
* For strings, performs case-insensitive lookup and returns the canonical casing.
|
|
96
|
+
* For numbers/booleans, performs exact match.
|
|
97
|
+
* Returns undefined if no match is found.
|
|
98
|
+
*/
|
|
99
|
+
get(value: unknown): T | undefined;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Branded phantom type representing a type definition in the public API.
|
|
103
|
+
* At runtime, values are Masks, Sets, ValidatorDefs, etc. but the type system
|
|
104
|
+
* sees them as TypeDef<T> where T is the extracted TypeScript type.
|
|
105
|
+
*
|
|
106
|
+
* Uses a string brand instead of unique symbol to avoid TS4029 errors
|
|
107
|
+
* during declaration emit in downstream packages.
|
|
108
|
+
* See: https://github.com/microsoft/TypeScript/issues/56107
|
|
109
|
+
*/
|
|
110
|
+
export type TypeDef<T = unknown> = T & {
|
|
111
|
+
readonly __fetchiumTypeDef: T;
|
|
112
|
+
};
|
|
113
|
+
export type SimpleTypeDef = Set<string | boolean | number> | CaseInsensitiveEnumSet<string | boolean | number> | Mask;
|
|
114
|
+
export type ComplexTypeDef = ObjectDef | EntityDef | ArrayDef | RecordDef | UnionDef | ParseResultDef;
|
|
115
|
+
export type InternalTypeDef = SimpleTypeDef | ComplexTypeDef;
|
|
116
|
+
export type InternalObjectFieldTypeDef = InternalTypeDef | string;
|
|
117
|
+
export type InternalObjectShape = Record<string, InternalObjectFieldTypeDef>;
|
|
118
|
+
export declare const ARRAY_KEY: unique symbol;
|
|
119
|
+
export declare const RECORD_KEY: unique symbol;
|
|
120
|
+
export declare const QUERY_ID: unique symbol;
|
|
121
|
+
export interface UnionTypeDefs {
|
|
122
|
+
[ARRAY_KEY]?: InternalTypeDef;
|
|
123
|
+
[RECORD_KEY]?: InternalTypeDef;
|
|
124
|
+
[key: string]: ObjectDef | EntityDef;
|
|
125
|
+
}
|
|
126
|
+
export interface BaseTypeDef {
|
|
127
|
+
mask: Mask;
|
|
128
|
+
typenameField: string;
|
|
129
|
+
typenameValue: string;
|
|
130
|
+
idField: string | symbol;
|
|
131
|
+
values: Set<string | boolean | number> | undefined;
|
|
132
|
+
}
|
|
133
|
+
export type EntityMethods = Record<string, (...args: any[]) => any>;
|
|
134
|
+
export interface EntityConfig {
|
|
135
|
+
hasSubscribe: boolean;
|
|
136
|
+
}
|
|
137
|
+
export interface EntityDef<T extends InternalObjectShape = InternalObjectShape> extends BaseTypeDef {
|
|
138
|
+
mask: Mask.ENTITY;
|
|
139
|
+
shape: T;
|
|
140
|
+
}
|
|
141
|
+
export interface ObjectDef<T extends InternalObjectShape = InternalObjectShape> extends BaseTypeDef {
|
|
142
|
+
mask: Mask.OBJECT;
|
|
143
|
+
shape: T;
|
|
144
|
+
}
|
|
145
|
+
export interface ArrayDef<T extends InternalTypeDef = InternalTypeDef> extends BaseTypeDef {
|
|
146
|
+
mask: Mask.ARRAY;
|
|
147
|
+
shape: T;
|
|
148
|
+
}
|
|
149
|
+
export interface UnionDef<_T extends readonly InternalTypeDef[] = readonly InternalTypeDef[]> extends BaseTypeDef {
|
|
150
|
+
mask: Mask.UNION;
|
|
151
|
+
shape: UnionTypeDefs | undefined;
|
|
152
|
+
}
|
|
153
|
+
export interface RecordDef<T extends InternalTypeDef = InternalTypeDef> extends BaseTypeDef {
|
|
154
|
+
mask: Mask.RECORD;
|
|
155
|
+
shape: T;
|
|
156
|
+
}
|
|
157
|
+
export interface ParseResultDef<T extends InternalTypeDef = InternalTypeDef> extends BaseTypeDef {
|
|
158
|
+
mask: Mask.PARSE_RESULT;
|
|
159
|
+
shape: T;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Global format registry interface that maps format names to their TypeScript types.
|
|
163
|
+
* This can be extended via module augmentation using the SignaliumQuery namespace.
|
|
164
|
+
*/
|
|
165
|
+
declare global {
|
|
166
|
+
namespace SignaliumQuery {
|
|
167
|
+
interface FormatRegistry {
|
|
168
|
+
date: Date;
|
|
169
|
+
'date-time': Date;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
export interface APITypes {
|
|
174
|
+
format: <K extends keyof SignaliumQuery.FormatRegistry>(format: K) => TypeDef<SignaliumQuery.FormatRegistry[K]>;
|
|
175
|
+
typename: <T extends string>(value: T) => TypeDef<T>;
|
|
176
|
+
const: <T extends string | boolean | number>(value: T) => TypeDef<T>;
|
|
177
|
+
enum: {
|
|
178
|
+
<T extends readonly (string | boolean | number)[]>(...values: T): TypeDef<T[number]>;
|
|
179
|
+
caseInsensitive<T extends readonly (string | boolean | number)[]>(...values: T): TypeDef<T[number]>;
|
|
180
|
+
};
|
|
181
|
+
id: TypeDef<string | number>;
|
|
182
|
+
string: TypeDef<string>;
|
|
183
|
+
number: TypeDef<number>;
|
|
184
|
+
boolean: TypeDef<boolean>;
|
|
185
|
+
null: TypeDef<null>;
|
|
186
|
+
undefined: TypeDef<undefined>;
|
|
187
|
+
array: <T extends TypeDef>(shape: T) => TypeDef<ExtractType<T>[]>;
|
|
188
|
+
object: <T extends TypeDefShape>(shape: T) => TypeDef<ExtractType<T>>;
|
|
189
|
+
record: <T extends TypeDef>(shape: T) => TypeDef<Record<string, ExtractType<T>>>;
|
|
190
|
+
union: <VS extends readonly TypeDef[]>(...types: VS) => TypeDef<ExtractType<VS[number]>>;
|
|
191
|
+
nullish: <T extends TypeDef>(type: T) => TypeDef<ExtractType<T> | undefined | null>;
|
|
192
|
+
optional: <T extends TypeDef>(type: T) => TypeDef<ExtractType<T> | undefined>;
|
|
193
|
+
nullable: <T extends TypeDef>(type: T) => TypeDef<ExtractType<T> | null>;
|
|
194
|
+
result: <T extends TypeDef>(type: T) => TypeDef<ParseResult<ExtractType<T>>>;
|
|
195
|
+
entity: <T extends import('./proxy.js').Entity>(cls: new () => T) => TypeDef<T>;
|
|
196
|
+
liveArray: {
|
|
197
|
+
<E extends import('./proxy.js').Entity>(entity: new () => E, opts?: LiveArrayOptions<E>): TypeDef<E[]>;
|
|
198
|
+
<E extends import('./proxy.js').Entity>(entities: (new () => E)[], opts?: LiveArrayOptions<E>): TypeDef<E[]>;
|
|
199
|
+
};
|
|
200
|
+
liveValue: {
|
|
201
|
+
<V, E extends import('./proxy.js').Entity>(type: TypeDef<V>, entity: new () => E, opts: LiveValueOptions<V, E>): TypeDef<V>;
|
|
202
|
+
<V, E extends import('./proxy.js').Entity>(type: TypeDef<V>, entities: (new () => E)[], opts: LiveValueOptions<V, E>): TypeDef<V>;
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
206
|
+
export type ExtractType<T> = IsAny<T> extends true ? any : T extends TypeDef<infer U> ? ExtractType<U> : T extends (...args: infer V) => infer Q ? (...args: V) => ExtractType<Q> : T extends object ? {
|
|
207
|
+
[K in keyof T]: ExtractType<T[K]>;
|
|
208
|
+
} : T;
|
|
209
|
+
export type TypeDefShape = Record<string, TypeDef> | TypeDef;
|
|
210
|
+
export type QueryResult<T extends Query> = ExtractType<T['result']> & {
|
|
211
|
+
__refetch(): DiscriminatedReactivePromise<QueryResult<T>>;
|
|
212
|
+
__fetchNext(): Promise<QueryResult<T>>;
|
|
213
|
+
__hasNext: boolean;
|
|
214
|
+
__isFetchingNext: boolean;
|
|
215
|
+
};
|
|
216
|
+
export type QueryPromise<T extends Query> = DiscriminatedReactivePromise<QueryResult<T>>;
|
|
217
|
+
export interface CreateEvent {
|
|
218
|
+
type: 'create';
|
|
219
|
+
typename: string;
|
|
220
|
+
data: Record<string, unknown>;
|
|
221
|
+
id?: unknown;
|
|
222
|
+
__eventSource?: number;
|
|
223
|
+
}
|
|
224
|
+
export interface UpdateEvent {
|
|
225
|
+
type: 'update';
|
|
226
|
+
typename: string;
|
|
227
|
+
data: Record<string, unknown>;
|
|
228
|
+
id?: unknown;
|
|
229
|
+
__eventSource?: number;
|
|
230
|
+
}
|
|
231
|
+
export interface DeleteEvent {
|
|
232
|
+
type: 'delete';
|
|
233
|
+
typename: string;
|
|
234
|
+
data: string | number | Record<string, unknown>;
|
|
235
|
+
id?: unknown;
|
|
236
|
+
__eventSource?: number;
|
|
237
|
+
}
|
|
238
|
+
export type MutationEvent = CreateEvent | UpdateEvent | DeleteEvent;
|
|
239
|
+
export type ConstraintMap = Record<string, unknown>;
|
|
240
|
+
export type ConstraintDef<E extends import('./proxy.js').Entity> = ConstraintMap | Array<[new () => E, ConstraintMap]>;
|
|
241
|
+
export interface LiveArrayOptions<E extends import('./proxy.js').Entity> {
|
|
242
|
+
constraints?: ConstraintDef<E>;
|
|
243
|
+
sort?: (a: E, b: E) => number;
|
|
244
|
+
}
|
|
245
|
+
export interface LiveValueOptions<V, E extends import('./proxy.js').Entity> {
|
|
246
|
+
constraints?: ConstraintDef<E>;
|
|
247
|
+
onCreate: (value: V, entity: E) => V;
|
|
248
|
+
onUpdate: (value: V, entity: E) => V;
|
|
249
|
+
onDelete: (value: V, entity: E) => V;
|
|
250
|
+
}
|
|
251
|
+
export declare const enum LiveFieldType {
|
|
252
|
+
Array = 0,
|
|
253
|
+
Value = 1
|
|
254
|
+
}
|
|
255
|
+
export declare class LiveFieldConfig {
|
|
256
|
+
type: LiveFieldType;
|
|
257
|
+
entityDefs: import('./typeDefs.js').ValidatorDef<any>[];
|
|
258
|
+
constraintFieldRefs: Map<string, Array<[string, unknown]>> | undefined;
|
|
259
|
+
sort: ((a: unknown, b: unknown) => number) | undefined;
|
|
260
|
+
valueType: InternalTypeDef | undefined;
|
|
261
|
+
onCreate: ((value: unknown, entity: unknown) => unknown) | undefined;
|
|
262
|
+
onUpdate: ((value: unknown, entity: unknown) => unknown) | undefined;
|
|
263
|
+
onDelete: ((value: unknown, entity: unknown) => unknown) | undefined;
|
|
264
|
+
constructor(type: LiveFieldType, entityDefs: import('./typeDefs.js').ValidatorDef<any>[], constraintFieldRefs: Map<string, Array<[string, unknown]>> | undefined, sort: ((a: unknown, b: unknown) => number) | undefined, valueType: InternalTypeDef | undefined, onCreate: ((value: unknown, entity: unknown) => unknown) | undefined, onUpdate: ((value: unknown, entity: unknown) => unknown) | undefined, onDelete: ((value: unknown, entity: unknown) => unknown) | undefined);
|
|
265
|
+
static array(entityDefs: import('./typeDefs.js').ValidatorDef<any>[], constraintFieldRefs: Map<string, Array<[string, unknown]>> | undefined, sort?: (a: unknown, b: unknown) => number): LiveFieldConfig;
|
|
266
|
+
static value(entityDefs: import('./typeDefs.js').ValidatorDef<any>[], constraintFieldRefs: Map<string, Array<[string, unknown]>> | undefined, valueType: InternalTypeDef, onCreate: (value: unknown, entity: unknown) => unknown, onUpdate: (value: unknown, entity: unknown) => unknown, onDelete: (value: unknown, entity: unknown) => unknown): LiveFieldConfig;
|
|
267
|
+
}
|
|
268
|
+
export type EntityClassOrTypename = string | (new () => import('./proxy.js').Entity);
|
|
269
|
+
export type InvalidateTarget = (new () => import('./query.js').Query) | readonly [new () => import('./query.js').Query, Record<string, unknown>];
|
|
270
|
+
export interface MutationEffects {
|
|
271
|
+
readonly creates?: ReadonlyArray<readonly [EntityClassOrTypename, unknown]>;
|
|
272
|
+
readonly updates?: ReadonlyArray<readonly [EntityClassOrTypename, unknown]>;
|
|
273
|
+
readonly deletes?: ReadonlyArray<readonly [EntityClassOrTypename, unknown]>;
|
|
274
|
+
readonly invalidates?: ReadonlyArray<InvalidateTarget>;
|
|
275
|
+
}
|
|
276
|
+
export {};
|
|
277
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Mask } from './types.js';
|
|
2
|
+
export declare function typeMaskOf(value: unknown): Mask;
|
|
3
|
+
/**
|
|
4
|
+
* Recursively makes all properties of T mutable (removes readonly).
|
|
5
|
+
* This is the return type of the draft() function.
|
|
6
|
+
*/
|
|
7
|
+
export type Draft<T> = T extends readonly (infer U)[] ? Draft<U>[] : T extends Date ? Date : T extends Map<infer K, infer V> ? Map<Draft<K>, Draft<V>> : T extends Set<infer U> ? Set<Draft<U>> : T extends object ? {
|
|
8
|
+
-readonly [K in keyof T]: Draft<T[K]>;
|
|
9
|
+
} : T;
|
|
10
|
+
/**
|
|
11
|
+
* Deep clones an entity or object, returning a plain mutable copy.
|
|
12
|
+
* This is useful for creating a "draft" version of an entity that can be modified
|
|
13
|
+
* before being passed to a mutation.
|
|
14
|
+
*
|
|
15
|
+
* The draft is a plain JavaScript object (not an entity proxy), so:
|
|
16
|
+
* - All fields are mutable via property assignment
|
|
17
|
+
* - Changes don't affect the original entity
|
|
18
|
+
* - When passed to a mutation, it's serialized as a normal object
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* // Get an entity from a query
|
|
23
|
+
* const user = await getUser({ id: '123' });
|
|
24
|
+
*
|
|
25
|
+
* // Create a draft to modify
|
|
26
|
+
* const updatedUser = draft(user);
|
|
27
|
+
* updatedUser.name = 'New Name';
|
|
28
|
+
* updatedUser.email = 'new@example.com';
|
|
29
|
+
*
|
|
30
|
+
* // Pass to mutation
|
|
31
|
+
* await updateUser().run(updatedUser);
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @param entity - The entity or object to clone
|
|
35
|
+
* @returns A deep clone of the entity as a plain mutable object
|
|
36
|
+
*/
|
|
37
|
+
export declare function draft<T>(entity: T): Draft<T>;
|
|
38
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIlC,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAiB/C;AAMD;;;GAGG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACjD,KAAK,CAAC,CAAC,CAAC,EAAE,GACV,CAAC,SAAS,IAAI,GACZ,IAAI,GACJ,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAC7B,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GACvB,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,CAAC,GACpB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GACb,CAAC,SAAS,MAAM,GACd;IAAE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACzC,CAAC,CAAC;AAEd;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAE5C"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './dist/esm/index.js';
|
package/package.json
CHANGED
|
@@ -1,11 +1,187 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fetchium",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/Signalium/fetchium.git"
|
|
8
|
+
},
|
|
9
|
+
"description": "Reactive data fetching built on Signalium",
|
|
10
|
+
"main": "./dist/cjs/production/index.js",
|
|
11
|
+
"module": "./dist/esm/production/index.js",
|
|
12
|
+
"types": "./dist/esm/index.d.ts",
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/esm/index.d.ts",
|
|
16
|
+
"development": {
|
|
17
|
+
"import": "./dist/esm/development/index.js",
|
|
18
|
+
"require": "./dist/cjs/development/index.js"
|
|
19
|
+
},
|
|
20
|
+
"production": {
|
|
21
|
+
"import": "./dist/esm/production/index.js",
|
|
22
|
+
"require": "./dist/cjs/production/index.js"
|
|
23
|
+
},
|
|
24
|
+
"import": "./dist/esm/production/index.js",
|
|
25
|
+
"require": "./dist/cjs/production/index.js",
|
|
26
|
+
"default": "./dist/esm/production/index.js"
|
|
27
|
+
},
|
|
28
|
+
"./react": {
|
|
29
|
+
"types": "./dist/esm/react/index.d.ts",
|
|
30
|
+
"development": {
|
|
31
|
+
"import": "./dist/esm/development/react/index.js",
|
|
32
|
+
"require": "./dist/cjs/development/react/index.js"
|
|
33
|
+
},
|
|
34
|
+
"production": {
|
|
35
|
+
"import": "./dist/esm/production/react/index.js",
|
|
36
|
+
"require": "./dist/cjs/production/react/index.js"
|
|
37
|
+
},
|
|
38
|
+
"import": "./dist/esm/production/react/index.js",
|
|
39
|
+
"require": "./dist/cjs/production/react/index.js",
|
|
40
|
+
"default": "./dist/esm/production/react/index.js"
|
|
41
|
+
},
|
|
42
|
+
"./stores/async": {
|
|
43
|
+
"types": "./dist/esm/stores/async.d.ts",
|
|
44
|
+
"development": {
|
|
45
|
+
"import": "./dist/esm/development/stores/async.js",
|
|
46
|
+
"require": "./dist/cjs/development/stores/async.js"
|
|
47
|
+
},
|
|
48
|
+
"production": {
|
|
49
|
+
"import": "./dist/esm/production/stores/async.js",
|
|
50
|
+
"require": "./dist/cjs/production/stores/async.js"
|
|
51
|
+
},
|
|
52
|
+
"import": "./dist/esm/production/stores/async.js",
|
|
53
|
+
"require": "./dist/cjs/production/stores/async.js",
|
|
54
|
+
"default": "./dist/esm/production/stores/async.js"
|
|
55
|
+
},
|
|
56
|
+
"./stores/sync": {
|
|
57
|
+
"types": "./dist/esm/stores/sync.d.ts",
|
|
58
|
+
"development": {
|
|
59
|
+
"import": "./dist/esm/development/stores/sync.js",
|
|
60
|
+
"require": "./dist/cjs/development/stores/sync.js"
|
|
61
|
+
},
|
|
62
|
+
"production": {
|
|
63
|
+
"import": "./dist/esm/production/stores/sync.js",
|
|
64
|
+
"require": "./dist/cjs/production/stores/sync.js"
|
|
65
|
+
},
|
|
66
|
+
"import": "./dist/esm/production/stores/sync.js",
|
|
67
|
+
"require": "./dist/cjs/production/stores/sync.js",
|
|
68
|
+
"default": "./dist/esm/production/stores/sync.js"
|
|
69
|
+
},
|
|
70
|
+
"./subscriptions/polling": {
|
|
71
|
+
"types": "./dist/esm/subscriptions/polling.d.ts",
|
|
72
|
+
"development": {
|
|
73
|
+
"import": "./dist/esm/development/subscriptions/polling.js",
|
|
74
|
+
"require": "./dist/cjs/development/subscriptions/polling.js"
|
|
75
|
+
},
|
|
76
|
+
"production": {
|
|
77
|
+
"import": "./dist/esm/production/subscriptions/polling.js",
|
|
78
|
+
"require": "./dist/cjs/production/subscriptions/polling.js"
|
|
79
|
+
},
|
|
80
|
+
"import": "./dist/esm/production/subscriptions/polling.js",
|
|
81
|
+
"require": "./dist/cjs/production/subscriptions/polling.js",
|
|
82
|
+
"default": "./dist/esm/production/subscriptions/polling.js"
|
|
83
|
+
},
|
|
84
|
+
"./rest": {
|
|
85
|
+
"types": "./dist/esm/rest/index.d.ts",
|
|
86
|
+
"development": {
|
|
87
|
+
"import": "./dist/esm/development/rest/index.js",
|
|
88
|
+
"require": "./dist/cjs/development/rest/index.js"
|
|
89
|
+
},
|
|
90
|
+
"production": {
|
|
91
|
+
"import": "./dist/esm/production/rest/index.js",
|
|
92
|
+
"require": "./dist/cjs/production/rest/index.js"
|
|
93
|
+
},
|
|
94
|
+
"import": "./dist/esm/production/rest/index.js",
|
|
95
|
+
"require": "./dist/cjs/production/rest/index.js",
|
|
96
|
+
"default": "./dist/esm/production/rest/index.js"
|
|
97
|
+
},
|
|
98
|
+
"./topic": {
|
|
99
|
+
"types": "./dist/esm/topic/index.d.ts",
|
|
100
|
+
"development": {
|
|
101
|
+
"import": "./dist/esm/development/topic/index.js",
|
|
102
|
+
"require": "./dist/cjs/development/topic/index.js"
|
|
103
|
+
},
|
|
104
|
+
"production": {
|
|
105
|
+
"import": "./dist/esm/production/topic/index.js",
|
|
106
|
+
"require": "./dist/cjs/production/topic/index.js"
|
|
107
|
+
},
|
|
108
|
+
"import": "./dist/esm/production/topic/index.js",
|
|
109
|
+
"require": "./dist/cjs/production/topic/index.js",
|
|
110
|
+
"default": "./dist/esm/production/topic/index.js"
|
|
111
|
+
},
|
|
112
|
+
"./testing": {
|
|
113
|
+
"types": "./dist/esm/testing/index.d.ts",
|
|
114
|
+
"development": {
|
|
115
|
+
"import": "./dist/esm/development/testing/index.js",
|
|
116
|
+
"require": "./dist/cjs/development/testing/index.js"
|
|
117
|
+
},
|
|
118
|
+
"production": {
|
|
119
|
+
"import": "./dist/esm/production/testing/index.js",
|
|
120
|
+
"require": "./dist/cjs/production/testing/index.js"
|
|
121
|
+
},
|
|
122
|
+
"import": "./dist/esm/production/testing/index.js",
|
|
123
|
+
"require": "./dist/cjs/production/testing/index.js",
|
|
124
|
+
"default": "./dist/esm/production/testing/index.js"
|
|
125
|
+
},
|
|
126
|
+
"./package.json": "./package.json"
|
|
127
|
+
},
|
|
128
|
+
"files": [
|
|
129
|
+
"dist/esm/**",
|
|
130
|
+
"dist/cjs/**",
|
|
131
|
+
"stores/**",
|
|
132
|
+
"plugin/**",
|
|
133
|
+
"index.d.ts",
|
|
134
|
+
"README.md",
|
|
135
|
+
"CHANGELOG.md",
|
|
136
|
+
"LICENSE*"
|
|
137
|
+
],
|
|
138
|
+
"bin": {
|
|
139
|
+
"fetchium-agents": "./plugin/install.mjs"
|
|
140
|
+
},
|
|
141
|
+
"peerDependencies": {
|
|
142
|
+
"react": ">=18.3.1",
|
|
143
|
+
"signalium": ">=2.1.7"
|
|
144
|
+
},
|
|
145
|
+
"peerDependenciesMeta": {
|
|
146
|
+
"react": {
|
|
147
|
+
"optional": true
|
|
148
|
+
}
|
|
149
|
+
},
|
|
5
150
|
"scripts": {
|
|
6
|
-
"
|
|
151
|
+
"dev": "vitest dev",
|
|
152
|
+
"dev:unit": "vitest dev --project unit",
|
|
153
|
+
"dev:transform": "vitest dev --project transform",
|
|
154
|
+
"dev:react": "vitest dev --project react",
|
|
155
|
+
"test": "vitest run",
|
|
156
|
+
"test:unit": "vitest run --project unit",
|
|
157
|
+
"test:transform": "vitest run --project transform",
|
|
158
|
+
"test:react": "vitest run --project react",
|
|
159
|
+
"check-types": "tsc --noEmit",
|
|
160
|
+
"copy-docs": "node scripts/copy-docs.mjs",
|
|
161
|
+
"build": "npm run copy-docs && npm run build:clean && npm run build:types && npm run build:dev && npm run build:prod && node scripts/generate-legacy-entries.cjs",
|
|
162
|
+
"build:clean": "rm -rf dist",
|
|
163
|
+
"build:types": "tsc --emitDeclarationOnly --outDir dist/esm --project tsconfig.esm.json",
|
|
164
|
+
"build:dev": "BUILD_MODE=development vite build",
|
|
165
|
+
"build:prod": "BUILD_MODE=production vite build"
|
|
7
166
|
},
|
|
8
|
-
"author": "
|
|
167
|
+
"author": "",
|
|
9
168
|
"license": "ISC",
|
|
10
|
-
"
|
|
169
|
+
"devDependencies": {
|
|
170
|
+
"@babel/core": "^7.23.6",
|
|
171
|
+
"@types/node": "^25.5.0",
|
|
172
|
+
"@babel/preset-react": "^7.23.3",
|
|
173
|
+
"@vitejs/plugin-react": "^5.0.0",
|
|
174
|
+
"@vitest/browser": "^3.0.6",
|
|
175
|
+
"playwright": "^1.50.1",
|
|
176
|
+
"react": "^18.3.1",
|
|
177
|
+
"react-dom": "^18.3.1",
|
|
178
|
+
"rollup-plugin-const-enum": "^1.1.4",
|
|
179
|
+
"signalium": "2.3.1",
|
|
180
|
+
"vite": "^7.1.2",
|
|
181
|
+
"vite-plugin-babel": "^1.3.0",
|
|
182
|
+
"vite-plugin-dts": "^4.5.4",
|
|
183
|
+
"vite-tsconfig-paths": "^5.1.4",
|
|
184
|
+
"vitest": "^3.2.4",
|
|
185
|
+
"vitest-browser-react": "^1.0.1"
|
|
186
|
+
}
|
|
11
187
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "fetchium",
|
|
3
|
+
"description": "Fetchium conventions, design skills, and teaching mode for reactive data fetching",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Signalium"
|
|
7
|
+
},
|
|
8
|
+
"repository": "https://github.com/Signalium/fetchium",
|
|
9
|
+
"keywords": ["fetchium", "data-fetching", "signalium", "react"]
|
|
10
|
+
}
|