@spooky-sync/client-solid 0.0.1-canary.11 → 0.0.1-canary.110
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/AGENTS.md +66 -0
- package/dist/index.cjs +220 -65
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +99 -21
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +99 -21
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +218 -66
- package/dist/index.js.map +1 -1
- package/package.json +8 -7
- package/skills/sp00ky-solid/SKILL.md +264 -0
- package/skills/sp00ky-solid/references/file-hooks.md +112 -0
- package/src/cache/index.ts +1 -1
- package/src/cache/surrealdb-wasm-factory.ts +4 -1
- package/src/index.ts +103 -55
- package/src/lib/{SpookyProvider.ts → Sp00kyProvider.ts} +9 -7
- package/src/lib/context.ts +3 -3
- package/src/lib/models.ts +1 -1
- package/src/lib/use-crdt-field.ts +68 -0
- package/src/lib/use-download-file.ts +2 -2
- package/src/lib/use-feature-flag.ts +50 -0
- package/src/lib/use-file-upload.ts +2 -1
- package/src/lib/use-query.ts +143 -28
- package/src/lib/use-sync-status.ts +50 -0
- package/src/types/index.ts +3 -4
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AuthService, BucketHandle, RunOptions,
|
|
1
|
+
import { AuthService, BucketHandle, CrdtField, FeatureFlagOptions, RunOptions, Sp00kyClient, Sp00kyConfig, Sp00kyQueryResultPromise, SyncHealth, SyncHealth as SyncHealth$1, SyncHealthConfig, SyncHealthStatus, SyncHealthStatus as SyncHealthStatus$1, UpdateOptions } from "@spooky-sync/core";
|
|
2
2
|
import { RecordId, RecordId as RecordId$1, Surreal, Uuid } from "surrealdb";
|
|
3
3
|
import { Accessor, JSX } from "solid-js";
|
|
4
4
|
import { GenericModel, GenericSchema, SchemaStructure } from "@spooky/query-builder";
|
|
@@ -37,14 +37,22 @@ type InferRelationshipsFromConst<S extends SchemaStructure$1, Schema extends Gen
|
|
|
37
37
|
cardinality: Rel['cardinality'];
|
|
38
38
|
} } };
|
|
39
39
|
type Prettify<T> = { [K in keyof T]: T[K] } & {};
|
|
40
|
-
type SyncedDbConfig<S extends SchemaStructure$1> = Prettify<
|
|
40
|
+
type SyncedDbConfig<S extends SchemaStructure$1> = Prettify<Sp00kyConfig<S>>;
|
|
41
41
|
//#endregion
|
|
42
42
|
//#region src/lib/use-query.d.ts
|
|
43
43
|
type QueryArg<S extends SchemaStructure$1, TableName extends TableNames$1<S>, T extends {
|
|
44
44
|
columns: Record<string, ColumnSchema>;
|
|
45
|
-
}, RelatedFields extends Record<string, any>, IsOne extends boolean> = FinalQuery<S, TableName, T, RelatedFields, IsOne,
|
|
45
|
+
}, RelatedFields extends Record<string, any>, IsOne extends boolean> = FinalQuery<S, TableName, T, RelatedFields, IsOne, Sp00kyQueryResultPromise> | (() => FinalQuery<S, TableName, T, RelatedFields, IsOne, Sp00kyQueryResultPromise> | null | undefined);
|
|
46
46
|
type QueryOptions = {
|
|
47
47
|
enabled?: () => boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Tear down the query (remote `_00_query` view + local WASM view) when this
|
|
50
|
+
* hook is disposed and no other subscriber remains, instead of keeping it
|
|
51
|
+
* resident for cheap re-subscription. Use for viewport-windowed lists that
|
|
52
|
+
* mount/unmount a query per scroll window and want off-screen windows
|
|
53
|
+
* cancelled. Trade-off: scrolling back to a torn-down window re-registers it.
|
|
54
|
+
*/
|
|
55
|
+
deregisterOnCleanup?: boolean;
|
|
48
56
|
};
|
|
49
57
|
declare function useQuery<S extends SchemaStructure$1, TableName extends TableNames$1<S>, T extends {
|
|
50
58
|
columns: Record<string, ColumnSchema>;
|
|
@@ -52,6 +60,8 @@ declare function useQuery<S extends SchemaStructure$1, TableName extends TableNa
|
|
|
52
60
|
data: () => TData | undefined;
|
|
53
61
|
error: () => Error | undefined;
|
|
54
62
|
isLoading: () => boolean;
|
|
63
|
+
isFetching: () => boolean;
|
|
64
|
+
isSettled: () => boolean;
|
|
55
65
|
};
|
|
56
66
|
declare function useQuery<S extends SchemaStructure$1, TableName extends TableNames$1<S>, T extends {
|
|
57
67
|
columns: Record<string, ColumnSchema>;
|
|
@@ -59,8 +69,66 @@ declare function useQuery<S extends SchemaStructure$1, TableName extends TableNa
|
|
|
59
69
|
data: () => TData | undefined;
|
|
60
70
|
error: () => Error | undefined;
|
|
61
71
|
isLoading: () => boolean;
|
|
72
|
+
isFetching: () => boolean;
|
|
73
|
+
isSettled: () => boolean;
|
|
62
74
|
};
|
|
63
75
|
//#endregion
|
|
76
|
+
//#region src/lib/use-sync-status.d.ts
|
|
77
|
+
interface UseSyncStatus {
|
|
78
|
+
/** Full health snapshot; updates reactively on every transition. */
|
|
79
|
+
health: Accessor<SyncHealth$1>;
|
|
80
|
+
/** `'healthy'` | `'degraded'`. */
|
|
81
|
+
status: Accessor<SyncHealthStatus$1>;
|
|
82
|
+
isHealthy: Accessor<boolean>;
|
|
83
|
+
/** `true` once sync has failed for a sustained run — drive a banner off this. */
|
|
84
|
+
isDegraded: Accessor<boolean>;
|
|
85
|
+
/** `true` once at least one sync round has succeeded this session. */
|
|
86
|
+
everConnected: Accessor<boolean>;
|
|
87
|
+
/**
|
|
88
|
+
* `true` only for a real lost connection: degraded AFTER a first successful
|
|
89
|
+
* sync. Stays `false` during the initial "connecting" phase (degraded but
|
|
90
|
+
* never reached the server yet), so an indicator can show nothing until the
|
|
91
|
+
* app has actually connected once.
|
|
92
|
+
*/
|
|
93
|
+
isOffline: Accessor<boolean>;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Observe sync health for a "can't reach the server" banner / indicator.
|
|
97
|
+
*
|
|
98
|
+
* Backed by `db.subscribeToSyncHealth`. Individual sync failures (a transient
|
|
99
|
+
* remote 500 on query registration, a dropped socket) are absorbed by the
|
|
100
|
+
* retry and never flip this; `isDegraded()` only goes true once failures
|
|
101
|
+
* persist for the configured number of consecutive rounds (sp00ky core config
|
|
102
|
+
* `syncHealth.degradeAfterConsecutiveFailures`, default 3), and flips back on
|
|
103
|
+
* the next successful round. Must be used within a `<Sp00kyProvider>`.
|
|
104
|
+
*/
|
|
105
|
+
declare function useSyncStatus(): UseSyncStatus;
|
|
106
|
+
//# sourceMappingURL=use-sync-status.d.ts.map
|
|
107
|
+
//#endregion
|
|
108
|
+
//#region src/lib/use-crdt-field.d.ts
|
|
109
|
+
declare function useCrdtField(table: string, recordId: () => string | undefined, field: string, fallbackText?: () => string | undefined): Accessor<CrdtField | null>;
|
|
110
|
+
//# sourceMappingURL=use-crdt-field.d.ts.map
|
|
111
|
+
//#endregion
|
|
112
|
+
//#region src/lib/use-feature-flag.d.ts
|
|
113
|
+
interface UseFeatureFlag {
|
|
114
|
+
variant: Accessor<string | undefined>;
|
|
115
|
+
payload: Accessor<unknown | undefined>;
|
|
116
|
+
enabled: Accessor<boolean>;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Subscribe to a feature flag for the currently authenticated user.
|
|
120
|
+
*
|
|
121
|
+
* Returns three Solid accessors that update reactively whenever the
|
|
122
|
+
* server-materialized assignment in `_00_user_feature` changes. Backed by
|
|
123
|
+
* the same SSP + sync pipeline that powers `useQuery`, so toggling a flag
|
|
124
|
+
* via `spky flag enable <key>` propagates to the UI without a refresh.
|
|
125
|
+
*
|
|
126
|
+
* `enabled()` is `true` when the resolved variant exists and is not 'off'.
|
|
127
|
+
* For multi-variant flags, prefer `variant()` directly.
|
|
128
|
+
*/
|
|
129
|
+
declare function useFeatureFlag(key: string, options?: FeatureFlagOptions): UseFeatureFlag;
|
|
130
|
+
//# sourceMappingURL=use-feature-flag.d.ts.map
|
|
131
|
+
//#endregion
|
|
64
132
|
//#region src/lib/use-file-upload.d.ts
|
|
65
133
|
interface FileUploadResult {
|
|
66
134
|
isUploading: () => boolean;
|
|
@@ -89,16 +157,16 @@ declare function useDownloadFile<S extends SchemaStructure$1>(bucketName: Bucket
|
|
|
89
157
|
declare function useDownloadFile<S extends SchemaStructure$1>(db: SyncedDb<S>, bucketName: BucketNames<S>, path: Accessor<string | null | undefined>, options?: UseDownloadFileOptions): UseDownloadFileResult;
|
|
90
158
|
//# sourceMappingURL=use-download-file.d.ts.map
|
|
91
159
|
//#endregion
|
|
92
|
-
//#region src/lib/
|
|
93
|
-
interface
|
|
160
|
+
//#region src/lib/Sp00kyProvider.d.ts
|
|
161
|
+
interface Sp00kyProviderProps<S extends SchemaStructure> {
|
|
94
162
|
config: SyncedDbConfig<S>;
|
|
95
163
|
fallback?: JSX.Element;
|
|
96
164
|
onError?: (error: Error) => void;
|
|
97
165
|
onReady?: (db: SyncedDb<S>) => void;
|
|
98
166
|
children: JSX.Element;
|
|
99
167
|
}
|
|
100
|
-
declare function
|
|
101
|
-
//# sourceMappingURL=
|
|
168
|
+
declare function Sp00kyProvider<S extends SchemaStructure>(props: Sp00kyProviderProps<S>): JSX.Element;
|
|
169
|
+
//# sourceMappingURL=Sp00kyProvider.d.ts.map
|
|
102
170
|
//#endregion
|
|
103
171
|
//#region src/lib/context.d.ts
|
|
104
172
|
declare function useDb<S extends SchemaStructure>(): SyncedDb<S>;
|
|
@@ -106,13 +174,13 @@ declare function useDb<S extends SchemaStructure>(): SyncedDb<S>;
|
|
|
106
174
|
|
|
107
175
|
//#endregion
|
|
108
176
|
//#region src/index.d.ts
|
|
109
|
-
type RelationshipField<Schema extends SchemaStructure$1, TableName extends TableNames
|
|
110
|
-
type RelatedFieldsTableScoped<Schema extends SchemaStructure$1, TableName extends TableNames
|
|
177
|
+
type RelationshipField<Schema extends SchemaStructure$1, TableName extends TableNames<Schema>, Field extends RelationshipFieldsFromSchema<Schema, TableName>> = GetRelationship<Schema, TableName, Field>;
|
|
178
|
+
type RelatedFieldsTableScoped<Schema extends SchemaStructure$1, TableName extends TableNames<Schema>, RelatedFields extends RelationshipFieldsFromSchema<Schema, TableName> = RelationshipFieldsFromSchema<Schema, TableName>> = { [K in RelatedFields]: {
|
|
111
179
|
to: RelationshipField<Schema, TableName, K>['to'];
|
|
112
180
|
relatedFields: RelatedFieldsMap;
|
|
113
181
|
cardinality: RelationshipField<Schema, TableName, K>['cardinality'];
|
|
114
182
|
} };
|
|
115
|
-
type InferModel<Schema extends SchemaStructure$1, TableName extends TableNames
|
|
183
|
+
type InferModel<Schema extends SchemaStructure$1, TableName extends TableNames<Schema>, RelatedFields extends RelatedFieldsTableScoped<Schema, TableName>> = QueryResult<Schema, TableName, RelatedFields, true>;
|
|
116
184
|
type WithRelated<Field extends string, RelatedFields extends RelatedFieldsMap = {}> = { [K in Field]: Omit<RelatedFieldMapEntry, 'relatedFields'> & {
|
|
117
185
|
relatedFields: RelatedFields;
|
|
118
186
|
} };
|
|
@@ -122,17 +190,17 @@ type WithRelatedMany<Field extends string, RelatedFields extends RelatedFieldsMa
|
|
|
122
190
|
cardinality: 'many';
|
|
123
191
|
} };
|
|
124
192
|
/**
|
|
125
|
-
* SyncedDb - A thin wrapper around
|
|
126
|
-
* Delegates all logic to the underlying
|
|
193
|
+
* SyncedDb - A thin wrapper around sp00ky-ts for Solid.js integration
|
|
194
|
+
* Delegates all logic to the underlying sp00ky-ts instance
|
|
127
195
|
*/
|
|
128
196
|
declare class SyncedDb<S extends SchemaStructure$1> {
|
|
129
197
|
private config;
|
|
130
|
-
private
|
|
198
|
+
private sp00ky;
|
|
131
199
|
private _initialized;
|
|
132
200
|
constructor(config: SyncedDbConfig<S>);
|
|
133
|
-
|
|
201
|
+
getSp00ky(): Sp00kyClient<S>;
|
|
134
202
|
/**
|
|
135
|
-
* Initialize the
|
|
203
|
+
* Initialize the sp00ky-ts instance
|
|
136
204
|
*/
|
|
137
205
|
init(): Promise<void>;
|
|
138
206
|
/**
|
|
@@ -142,15 +210,15 @@ declare class SyncedDb<S extends SchemaStructure$1> {
|
|
|
142
210
|
/**
|
|
143
211
|
* Update an existing record in the database
|
|
144
212
|
*/
|
|
145
|
-
update<TName extends TableNames
|
|
213
|
+
update<TName extends TableNames<S>>(tableName: TName, recordId: string, payload: Partial<TableModel<GetTable<S, TName>>>, options?: UpdateOptions): Promise<void>;
|
|
146
214
|
/**
|
|
147
215
|
* Delete an existing record in the database
|
|
148
216
|
*/
|
|
149
|
-
delete<TName extends TableNames
|
|
217
|
+
delete<TName extends TableNames<S>>(tableName: TName, selector: string | RecordId | InnerQuery<GetTable<S, TName>, boolean>): Promise<void>;
|
|
150
218
|
/**
|
|
151
219
|
* Query data from the database
|
|
152
220
|
*/
|
|
153
|
-
query<TName extends TableNames
|
|
221
|
+
query<TName extends TableNames<S>>(table: TName): QueryBuilder<S, TName, Sp00kyQueryResultPromise, {}, false>;
|
|
154
222
|
/**
|
|
155
223
|
* Run a backend operation
|
|
156
224
|
*/
|
|
@@ -175,20 +243,30 @@ declare class SyncedDb<S extends SchemaStructure$1> {
|
|
|
175
243
|
/**
|
|
176
244
|
* Access the remote database service directly
|
|
177
245
|
*/
|
|
178
|
-
get remote():
|
|
246
|
+
get remote(): Sp00kyClient<S>['remoteClient'];
|
|
179
247
|
/**
|
|
180
248
|
* Access the local database service directly
|
|
181
249
|
*/
|
|
182
|
-
get local():
|
|
250
|
+
get local(): Sp00kyClient<S>['localClient'];
|
|
183
251
|
/**
|
|
184
252
|
* Access the auth service
|
|
185
253
|
*/
|
|
186
254
|
get auth(): AuthService<S>;
|
|
187
255
|
get pendingMutationCount(): number;
|
|
256
|
+
/** Diagnostic — see `Sp00kyClient.liveRetryCount`. */
|
|
257
|
+
get liveRetryCount(): number;
|
|
188
258
|
subscribeToPendingMutations(cb: (count: number) => void): () => void;
|
|
259
|
+
/** Current sync-health snapshot. See {@link useSyncStatus}. */
|
|
260
|
+
get syncHealth(): SyncHealth$1;
|
|
261
|
+
/**
|
|
262
|
+
* Observe sync health. Fires immediately with the current status and again
|
|
263
|
+
* on every healthy↔degraded transition. Prefer the `useSyncStatus` hook in
|
|
264
|
+
* components; this is the imperative escape hatch.
|
|
265
|
+
*/
|
|
266
|
+
subscribeToSyncHealth(cb: (health: SyncHealth$1) => void): () => void;
|
|
189
267
|
bucket<B extends BucketNames<S>>(name: B): BucketHandle;
|
|
190
268
|
getBucketConfig(name: string): BucketDefinitionSchema | undefined;
|
|
191
269
|
}
|
|
192
270
|
//#endregion
|
|
193
|
-
export { CacheStrategy, type FileUploadResult, type GenericModel, type GenericSchema, type GetCardinality, type GetTable, InferModel, type InferRelatedModelFromMetadata, InferRelationshipsFromConst, InferSchemaFromConst, type Model, type ModelPayload, ProvisionOptions, type QueryInfo, type QueryModifier, type QueryModifierBuilder, type QueryResult, RecordId, RelatedFieldsTableScoped, type RelationshipDefinition, RelationshipField, type RelationshipsMetadata,
|
|
271
|
+
export { CacheStrategy, type FileUploadResult, type GenericModel, type GenericSchema, type GetCardinality, type GetTable, InferModel, type InferRelatedModelFromMetadata, InferRelationshipsFromConst, InferSchemaFromConst, type Model, type ModelPayload, ProvisionOptions, type QueryInfo, type QueryModifier, type QueryModifierBuilder, type QueryResult, RecordId, RelatedFieldsTableScoped, type RelationshipDefinition, RelationshipField, type RelationshipsMetadata, Sp00kyProvider, type Sp00kyProviderProps, type SyncHealth, type SyncHealthConfig, type SyncHealthStatus, SyncedDb, SyncedDbConfig, type TableModel, type TableNames, type UseDownloadFileOptions, type UseDownloadFileResult, type UseFeatureFlag, type UseSyncStatus, Uuid, WithRelated, WithRelatedMany, useCrdtField, useDb, useDownloadFile, useFeatureFlag, useFileUpload, useQuery, useSyncStatus };
|
|
194
272
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/lib/models.ts","../../../src/types/index.ts","../../../src/lib/use-query.ts","../../../src/lib/use-file-upload.ts","../../../src/lib/use-download-file.ts","../../../src/lib/
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/lib/models.ts","../../../src/types/index.ts","../../../src/lib/use-query.ts","../../../src/lib/use-sync-status.ts","../../../src/lib/use-crdt-field.ts","../../../src/lib/use-feature-flag.ts","../../../src/lib/use-file-upload.ts","../../../src/lib/use-download-file.ts","../../../src/lib/Sp00kyProvider.ts","../../../src/lib/context.ts","../../../src/index.ts"],"sourcesContent":[],"mappings":"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A8B;UACrC,eAAe;aACZ,GAAA,CAAI;ERHL,OAAA,CAAK,EAAA,CAAA,KAAA,EQIG,KRJI,EAAA,GAAA,IAAA;EACZ,OAAA,CAAA,EAAA,CAAA,EAAA,EQIK,QRJO,CQIE,CRJF,CAAA,EAAA,GAAA,IAAA;EAAA,QAAA,EQKZ,GAAA,CAAI,ORLQ;;AAAgB,iBQQxB,cRRwB,CAAA,UQQC,eRRD,CAAA,CAAA,KAAA,EQS/B,mBRT+B,CQSX,CRTW,CAAA,CAAA,EQUrC,GAAA,CAAI,ORViC;;;;iBSDxB,gBAAgB,oBAAoB,SAAS;;;;;ARE5C,KS4DL,iBT5DqB,CAAA,eS6DhB,iBT7DgB,EAAA,kBS8Db,UT9Da,CS8DF,MT9DE,CAAA,EAAA,cS+DjB,4BT/DiB,CS+DY,MT/DZ,ES+DoB,ST/DpB,CAAA,CAAA,GSgE7B,eThE6B,CSgEb,MThEa,ESgEL,SThEK,ESgEM,KThEN,CAAA;AAOhB,KS2DL,wBT3DK,CAAA,eS4DA,iBT5DA,EAAA,kBS6DG,UT7DH,CS6Dc,MT7Dd,CAAA,EAAA,sBS8DO,4BT9DP,CS8DoC,MT9DpC,ES8D4C,ST9D5C,CAAA,GS+Db,4BT/Da,CS+DgB,MT/DhB,ES+DwB,ST/DxB,CAAA,CAAA,GAAA,QSiET,aT7DiB,GAAA;EAKb,EAAA,ESyDJ,iBTzDwB,CSyDN,MTzDM,ESyDE,STzDF,ESyDa,CTzDb,CAAA,CAAA,IAAA,CAAA;EAAA,aAAA,ES0Db,gBT1Da;EAAW,WAAA,ES2D1B,iBT3D0B,CS2DR,MT3DQ,ES2DA,ST3DA,ES2DW,CT3DX,CAAA,CAAA,aAAA,CAAA;;AACC,KS8DhC,UT9DgC,CAAA,eS+D3B,iBT/D2B,EAAA,kBSgExB,UThEwB,CSgEb,MThEa,CAAA,EAAA,sBSiEpB,wBTjEoB,CSiEK,MTjEL,ESiEa,STjEb,CAAA,CAAA,GSkExC,WTlEwC,CSkE5B,MTlE4B,ESkEpB,STlEoB,ESkET,aTlES,EAAA,IAAA,CAAA;AAAG,KSoEnC,WTpEmC,CAAA,cAAA,MAAA,EAAA,sBSoEqB,gBTpErB,GAAA,CAAA,CAAA,CAAA,GAAA,QSqEvC,KTrE2B,GSqEnB,ITrEmB,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"}
|