@spooky-sync/client-solid 0.0.1-canary.6 → 0.0.1-canary.61
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/dist/index.cjs +87 -54
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +25 -21
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +25 -21
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +87 -55
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
- 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 +60 -52
- 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 +54 -0
- package/src/lib/use-download-file.ts +2 -2
- package/src/lib/use-file-upload.ts +2 -1
- package/src/lib/use-query.ts +14 -14
- package/src/types/index.ts +3 -4
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","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.cts","names":[],"sources":["../../../src/lib/models.ts","../../../src/types/index.ts","../../../src/lib/use-query.ts","../../../src/lib/use-crdt-field.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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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AuthService, BucketHandle, RunOptions,
|
|
1
|
+
import { AuthService, BucketHandle, CrdtField, RunOptions, Sp00kyClient, Sp00kyConfig, Sp00kyQueryResultPromise, 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,12 +37,12 @@ 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
48
|
};
|
|
@@ -61,6 +61,10 @@ declare function useQuery<S extends SchemaStructure$1, TableName extends TableNa
|
|
|
61
61
|
isLoading: () => boolean;
|
|
62
62
|
};
|
|
63
63
|
//#endregion
|
|
64
|
+
//#region src/lib/use-crdt-field.d.ts
|
|
65
|
+
declare function useCrdtField(table: string, recordId: () => string | undefined, field: string, fallbackText?: () => string | undefined): Accessor<CrdtField | null>;
|
|
66
|
+
//# sourceMappingURL=use-crdt-field.d.ts.map
|
|
67
|
+
//#endregion
|
|
64
68
|
//#region src/lib/use-file-upload.d.ts
|
|
65
69
|
interface FileUploadResult {
|
|
66
70
|
isUploading: () => boolean;
|
|
@@ -89,16 +93,16 @@ declare function useDownloadFile<S extends SchemaStructure$1>(bucketName: Bucket
|
|
|
89
93
|
declare function useDownloadFile<S extends SchemaStructure$1>(db: SyncedDb<S>, bucketName: BucketNames<S>, path: Accessor<string | null | undefined>, options?: UseDownloadFileOptions): UseDownloadFileResult;
|
|
90
94
|
//# sourceMappingURL=use-download-file.d.ts.map
|
|
91
95
|
//#endregion
|
|
92
|
-
//#region src/lib/
|
|
93
|
-
interface
|
|
96
|
+
//#region src/lib/Sp00kyProvider.d.ts
|
|
97
|
+
interface Sp00kyProviderProps<S extends SchemaStructure> {
|
|
94
98
|
config: SyncedDbConfig<S>;
|
|
95
99
|
fallback?: JSX.Element;
|
|
96
100
|
onError?: (error: Error) => void;
|
|
97
101
|
onReady?: (db: SyncedDb<S>) => void;
|
|
98
102
|
children: JSX.Element;
|
|
99
103
|
}
|
|
100
|
-
declare function
|
|
101
|
-
//# sourceMappingURL=
|
|
104
|
+
declare function Sp00kyProvider<S extends SchemaStructure>(props: Sp00kyProviderProps<S>): JSX.Element;
|
|
105
|
+
//# sourceMappingURL=Sp00kyProvider.d.ts.map
|
|
102
106
|
//#endregion
|
|
103
107
|
//#region src/lib/context.d.ts
|
|
104
108
|
declare function useDb<S extends SchemaStructure>(): SyncedDb<S>;
|
|
@@ -106,13 +110,13 @@ declare function useDb<S extends SchemaStructure>(): SyncedDb<S>;
|
|
|
106
110
|
|
|
107
111
|
//#endregion
|
|
108
112
|
//#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
|
|
113
|
+
type RelationshipField<Schema extends SchemaStructure$1, TableName extends TableNames<Schema>, Field extends RelationshipFieldsFromSchema<Schema, TableName>> = GetRelationship<Schema, TableName, Field>;
|
|
114
|
+
type RelatedFieldsTableScoped<Schema extends SchemaStructure$1, TableName extends TableNames<Schema>, RelatedFields extends RelationshipFieldsFromSchema<Schema, TableName> = RelationshipFieldsFromSchema<Schema, TableName>> = { [K in RelatedFields]: {
|
|
111
115
|
to: RelationshipField<Schema, TableName, K>['to'];
|
|
112
116
|
relatedFields: RelatedFieldsMap;
|
|
113
117
|
cardinality: RelationshipField<Schema, TableName, K>['cardinality'];
|
|
114
118
|
} };
|
|
115
|
-
type InferModel<Schema extends SchemaStructure$1, TableName extends TableNames
|
|
119
|
+
type InferModel<Schema extends SchemaStructure$1, TableName extends TableNames<Schema>, RelatedFields extends RelatedFieldsTableScoped<Schema, TableName>> = QueryResult<Schema, TableName, RelatedFields, true>;
|
|
116
120
|
type WithRelated<Field extends string, RelatedFields extends RelatedFieldsMap = {}> = { [K in Field]: Omit<RelatedFieldMapEntry, 'relatedFields'> & {
|
|
117
121
|
relatedFields: RelatedFields;
|
|
118
122
|
} };
|
|
@@ -122,17 +126,17 @@ type WithRelatedMany<Field extends string, RelatedFields extends RelatedFieldsMa
|
|
|
122
126
|
cardinality: 'many';
|
|
123
127
|
} };
|
|
124
128
|
/**
|
|
125
|
-
* SyncedDb - A thin wrapper around
|
|
126
|
-
* Delegates all logic to the underlying
|
|
129
|
+
* SyncedDb - A thin wrapper around sp00ky-ts for Solid.js integration
|
|
130
|
+
* Delegates all logic to the underlying sp00ky-ts instance
|
|
127
131
|
*/
|
|
128
132
|
declare class SyncedDb<S extends SchemaStructure$1> {
|
|
129
133
|
private config;
|
|
130
|
-
private
|
|
134
|
+
private sp00ky;
|
|
131
135
|
private _initialized;
|
|
132
136
|
constructor(config: SyncedDbConfig<S>);
|
|
133
|
-
|
|
137
|
+
getSp00ky(): Sp00kyClient<S>;
|
|
134
138
|
/**
|
|
135
|
-
* Initialize the
|
|
139
|
+
* Initialize the sp00ky-ts instance
|
|
136
140
|
*/
|
|
137
141
|
init(): Promise<void>;
|
|
138
142
|
/**
|
|
@@ -142,15 +146,15 @@ declare class SyncedDb<S extends SchemaStructure$1> {
|
|
|
142
146
|
/**
|
|
143
147
|
* Update an existing record in the database
|
|
144
148
|
*/
|
|
145
|
-
update<TName extends TableNames
|
|
149
|
+
update<TName extends TableNames<S>>(tableName: TName, recordId: string, payload: Partial<TableModel<GetTable<S, TName>>>, options?: UpdateOptions): Promise<void>;
|
|
146
150
|
/**
|
|
147
151
|
* Delete an existing record in the database
|
|
148
152
|
*/
|
|
149
|
-
delete<TName extends TableNames
|
|
153
|
+
delete<TName extends TableNames<S>>(tableName: TName, selector: string | InnerQuery<GetTable<S, TName>, boolean>): Promise<void>;
|
|
150
154
|
/**
|
|
151
155
|
* Query data from the database
|
|
152
156
|
*/
|
|
153
|
-
query<TName extends TableNames
|
|
157
|
+
query<TName extends TableNames<S>>(table: TName): QueryBuilder<S, TName, Sp00kyQueryResultPromise, {}, false>;
|
|
154
158
|
/**
|
|
155
159
|
* Run a backend operation
|
|
156
160
|
*/
|
|
@@ -175,11 +179,11 @@ declare class SyncedDb<S extends SchemaStructure$1> {
|
|
|
175
179
|
/**
|
|
176
180
|
* Access the remote database service directly
|
|
177
181
|
*/
|
|
178
|
-
get remote():
|
|
182
|
+
get remote(): Sp00kyClient<S>['remoteClient'];
|
|
179
183
|
/**
|
|
180
184
|
* Access the local database service directly
|
|
181
185
|
*/
|
|
182
|
-
get local():
|
|
186
|
+
get local(): Sp00kyClient<S>['localClient'];
|
|
183
187
|
/**
|
|
184
188
|
* Access the auth service
|
|
185
189
|
*/
|
|
@@ -190,5 +194,5 @@ declare class SyncedDb<S extends SchemaStructure$1> {
|
|
|
190
194
|
getBucketConfig(name: string): BucketDefinitionSchema | undefined;
|
|
191
195
|
}
|
|
192
196
|
//#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,
|
|
197
|
+
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, SyncedDb, SyncedDbConfig, type TableModel, type TableNames, type UseDownloadFileOptions, type UseDownloadFileResult, Uuid, WithRelated, WithRelatedMany, useCrdtField, useDb, useDownloadFile, useFileUpload, useQuery };
|
|
194
198
|
//# 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-crdt-field.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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"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Sp00kyClient, fileToUint8Array } from "@spooky-sync/core";
|
|
2
2
|
import { RecordId, Uuid } from "surrealdb";
|
|
3
3
|
import { createComponent, createContext, createEffect, createMemo, createSignal, mergeProps, onCleanup, onMount, useContext } from "solid-js";
|
|
4
4
|
|
|
5
5
|
//#region src/lib/context.ts
|
|
6
|
-
const
|
|
6
|
+
const Sp00kyContext = createContext();
|
|
7
7
|
function useDb() {
|
|
8
|
-
const db = useContext(
|
|
9
|
-
if (!db) throw new Error("useDb must be used within a <
|
|
8
|
+
const db = useContext(Sp00kyContext);
|
|
9
|
+
if (!db) throw new Error("useDb must be used within a <Sp00kyProvider>. Wrap your app in <Sp00kyProvider config={...}>.");
|
|
10
10
|
return db;
|
|
11
11
|
}
|
|
12
12
|
|
|
@@ -21,8 +21,8 @@ function useQuery(dbOrQuery, queryOrOptions, maybeOptions) {
|
|
|
21
21
|
finalQuery = queryOrOptions;
|
|
22
22
|
options = maybeOptions;
|
|
23
23
|
} else {
|
|
24
|
-
const contextDb = useContext(
|
|
25
|
-
if (!contextDb) throw new Error("useQuery: No db argument provided and no
|
|
24
|
+
const contextDb = useContext(Sp00kyContext);
|
|
25
|
+
if (!contextDb) throw new Error("useQuery: No db argument provided and no Sp00kyContext found. Either pass a SyncedDb instance or wrap your app in <Sp00kyProvider>.");
|
|
26
26
|
db = contextDb;
|
|
27
27
|
finalQuery = dbOrQuery;
|
|
28
28
|
options = queryOrOptions;
|
|
@@ -32,15 +32,15 @@ function useQuery(dbOrQuery, queryOrOptions, maybeOptions) {
|
|
|
32
32
|
const [isFetched, setIsFetched] = createSignal(false);
|
|
33
33
|
const [unsubscribe, setUnsubscribe] = createSignal(void 0);
|
|
34
34
|
let prevQueryString;
|
|
35
|
-
const
|
|
35
|
+
const sp00ky = db.getSp00ky();
|
|
36
36
|
const initQuery = async (query) => {
|
|
37
37
|
const { hash } = await query.run();
|
|
38
38
|
setError(void 0);
|
|
39
39
|
let isFirstCall = true;
|
|
40
|
-
const unsub = await
|
|
41
|
-
const
|
|
42
|
-
setData(() =>
|
|
43
|
-
const hasData = query.isOne ?
|
|
40
|
+
const unsub = await sp00ky.subscribe(hash, (e) => {
|
|
41
|
+
const queryData = query.isOne ? e[0] : e;
|
|
42
|
+
setData(() => queryData);
|
|
43
|
+
const hasData = query.isOne ? queryData !== null && queryData !== void 0 : e.length > 0;
|
|
44
44
|
if (!isFirstCall || hasData) setIsFetched(true);
|
|
45
45
|
isFirstCall = false;
|
|
46
46
|
}, { immediate: true });
|
|
@@ -72,6 +72,39 @@ function useQuery(dbOrQuery, queryOrOptions, maybeOptions) {
|
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
+
//#endregion
|
|
76
|
+
//#region src/lib/use-crdt-field.ts
|
|
77
|
+
function useCrdtField(table, recordId, field, fallbackText) {
|
|
78
|
+
const db = useContext(Sp00kyContext);
|
|
79
|
+
if (!db) throw new Error("useCrdtField must be used within a <Sp00kyProvider>");
|
|
80
|
+
const [crdtField, setCrdtField] = createSignal(null);
|
|
81
|
+
let currentId;
|
|
82
|
+
let initialized = false;
|
|
83
|
+
createEffect(() => {
|
|
84
|
+
const id = recordId();
|
|
85
|
+
if (initialized && id === currentId) return;
|
|
86
|
+
if (currentId && crdtField()) {
|
|
87
|
+
db.getSp00ky().closeCrdtField(table, currentId, field);
|
|
88
|
+
setCrdtField(null);
|
|
89
|
+
}
|
|
90
|
+
currentId = id;
|
|
91
|
+
initialized = true;
|
|
92
|
+
if (!id) return;
|
|
93
|
+
const sp00ky = db.getSp00ky();
|
|
94
|
+
const text = fallbackText?.();
|
|
95
|
+
sp00ky.openCrdtField(table, id, field, text).then((cf) => {
|
|
96
|
+
if (currentId === id) setCrdtField(cf);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
onCleanup(() => {
|
|
100
|
+
if (currentId && crdtField()) {
|
|
101
|
+
db.getSp00ky().closeCrdtField(table, currentId, field);
|
|
102
|
+
setCrdtField(null);
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
return crdtField;
|
|
106
|
+
}
|
|
107
|
+
|
|
75
108
|
//#endregion
|
|
76
109
|
//#region src/lib/use-file-upload.ts
|
|
77
110
|
function useFileUpload(dbOrBucketName, maybeBucketName) {
|
|
@@ -94,7 +127,7 @@ function useFileUpload(dbOrBucketName, maybeBucketName) {
|
|
|
94
127
|
const validate = (file) => {
|
|
95
128
|
const config = db.getBucketConfig(bucketName);
|
|
96
129
|
if (!config) return;
|
|
97
|
-
if (config.maxSize
|
|
130
|
+
if (config.maxSize !== null && config.maxSize !== void 0 && file.size > config.maxSize) {
|
|
98
131
|
const maxMB = (config.maxSize / (1024 * 1024)).toFixed(1);
|
|
99
132
|
throw new Error(`File exceeds maximum size of ${maxMB} MB.`);
|
|
100
133
|
}
|
|
@@ -203,9 +236,8 @@ function useDownloadFile(dbOrBucketName, bucketNameOrPath, pathOrOptions, maybeO
|
|
|
203
236
|
const [error, setError] = createSignal(null);
|
|
204
237
|
let currentKey = null;
|
|
205
238
|
let privateUrl = null;
|
|
206
|
-
let refetchTrigger;
|
|
207
239
|
const [refetchSignal, setRefetchSignal] = createSignal(0);
|
|
208
|
-
refetchTrigger = () => setRefetchSignal((n) => n + 1);
|
|
240
|
+
const refetchTrigger = () => setRefetchSignal((n) => n + 1);
|
|
209
241
|
async function doDownload(key, filePath) {
|
|
210
242
|
if (useCache) {
|
|
211
243
|
const cached = downloadCache.get(key);
|
|
@@ -325,8 +357,8 @@ function useDownloadFile(dbOrBucketName, bucketNameOrPath, pathOrOptions, maybeO
|
|
|
325
357
|
}
|
|
326
358
|
|
|
327
359
|
//#endregion
|
|
328
|
-
//#region src/lib/
|
|
329
|
-
function
|
|
360
|
+
//#region src/lib/Sp00kyProvider.ts
|
|
361
|
+
function Sp00kyProvider(props) {
|
|
330
362
|
const merged = mergeProps({ fallback: void 0 }, props);
|
|
331
363
|
const [db, setDb] = createSignal(void 0);
|
|
332
364
|
onMount(async () => {
|
|
@@ -338,13 +370,13 @@ function SpookyProvider(props) {
|
|
|
338
370
|
} catch (e) {
|
|
339
371
|
const error = e instanceof Error ? e : new Error(String(e));
|
|
340
372
|
if (merged.onError) merged.onError(error);
|
|
341
|
-
else console.error("
|
|
373
|
+
else console.error("Sp00kyProvider: Failed to initialize database", error);
|
|
342
374
|
}
|
|
343
375
|
});
|
|
344
376
|
return createMemo(() => {
|
|
345
377
|
const instance = db();
|
|
346
378
|
if (!instance) return merged.fallback;
|
|
347
|
-
return createComponent(
|
|
379
|
+
return createComponent(Sp00kyContext.Provider, {
|
|
348
380
|
value: instance,
|
|
349
381
|
get children() {
|
|
350
382
|
return merged.children;
|
|
@@ -356,69 +388,69 @@ function SpookyProvider(props) {
|
|
|
356
388
|
//#endregion
|
|
357
389
|
//#region src/index.ts
|
|
358
390
|
/**
|
|
359
|
-
* SyncedDb - A thin wrapper around
|
|
360
|
-
* Delegates all logic to the underlying
|
|
391
|
+
* SyncedDb - A thin wrapper around sp00ky-ts for Solid.js integration
|
|
392
|
+
* Delegates all logic to the underlying sp00ky-ts instance
|
|
361
393
|
*/
|
|
362
394
|
var SyncedDb = class {
|
|
363
395
|
constructor(config) {
|
|
364
|
-
this.
|
|
396
|
+
this.sp00ky = null;
|
|
365
397
|
this._initialized = false;
|
|
366
398
|
this.config = config;
|
|
367
399
|
}
|
|
368
|
-
|
|
369
|
-
if (!this.
|
|
370
|
-
return this.
|
|
400
|
+
getSp00ky() {
|
|
401
|
+
if (!this.sp00ky) throw new Error("SyncedDb not initialized");
|
|
402
|
+
return this.sp00ky;
|
|
371
403
|
}
|
|
372
404
|
/**
|
|
373
|
-
* Initialize the
|
|
405
|
+
* Initialize the sp00ky-ts instance
|
|
374
406
|
*/
|
|
375
407
|
async init() {
|
|
376
408
|
if (this._initialized) return;
|
|
377
|
-
this.
|
|
378
|
-
await this.
|
|
409
|
+
this.sp00ky = new Sp00kyClient(this.config);
|
|
410
|
+
await this.sp00ky.init();
|
|
379
411
|
this._initialized = true;
|
|
380
412
|
}
|
|
381
413
|
/**
|
|
382
414
|
* Create a new record in the database
|
|
383
415
|
*/
|
|
384
416
|
async create(id, payload) {
|
|
385
|
-
if (!this.
|
|
386
|
-
await this.
|
|
417
|
+
if (!this.sp00ky) throw new Error("SyncedDb not initialized");
|
|
418
|
+
await this.sp00ky.create(id, payload);
|
|
387
419
|
}
|
|
388
420
|
/**
|
|
389
421
|
* Update an existing record in the database
|
|
390
422
|
*/
|
|
391
423
|
async update(tableName, recordId, payload, options) {
|
|
392
|
-
if (!this.
|
|
393
|
-
await this.
|
|
424
|
+
if (!this.sp00ky) throw new Error("SyncedDb not initialized");
|
|
425
|
+
await this.sp00ky.update(tableName, recordId, payload, options);
|
|
394
426
|
}
|
|
395
427
|
/**
|
|
396
428
|
* Delete an existing record in the database
|
|
397
429
|
*/
|
|
398
430
|
async delete(tableName, selector) {
|
|
399
|
-
if (!this.
|
|
431
|
+
if (!this.sp00ky) throw new Error("SyncedDb not initialized");
|
|
400
432
|
if (typeof selector !== "string") throw new Error("Only string ID selectors are supported currently with core");
|
|
401
|
-
await this.
|
|
433
|
+
await this.sp00ky.delete(tableName, selector);
|
|
402
434
|
}
|
|
403
435
|
/**
|
|
404
436
|
* Query data from the database
|
|
405
437
|
*/
|
|
406
438
|
query(table) {
|
|
407
|
-
if (!this.
|
|
408
|
-
return this.
|
|
439
|
+
if (!this.sp00ky) throw new Error("SyncedDb not initialized");
|
|
440
|
+
return this.sp00ky.query(table, {});
|
|
409
441
|
}
|
|
410
442
|
/**
|
|
411
443
|
* Run a backend operation
|
|
412
444
|
*/
|
|
413
445
|
async run(backend, path, payload, options) {
|
|
414
|
-
if (!this.
|
|
415
|
-
await this.
|
|
446
|
+
if (!this.sp00ky) throw new Error("SyncedDb not initialized");
|
|
447
|
+
await this.sp00ky.run(backend, path, payload, options);
|
|
416
448
|
}
|
|
417
449
|
/**
|
|
418
450
|
* Authenticate with the database
|
|
419
451
|
*/
|
|
420
452
|
async authenticate(token) {
|
|
421
|
-
await this.
|
|
453
|
+
await this.sp00ky?.authenticate(token);
|
|
422
454
|
return new RecordId("user", "me");
|
|
423
455
|
}
|
|
424
456
|
/**
|
|
@@ -432,48 +464,48 @@ var SyncedDb = class {
|
|
|
432
464
|
* Sign out, clear session and local storage
|
|
433
465
|
*/
|
|
434
466
|
async signOut() {
|
|
435
|
-
if (!this.
|
|
436
|
-
await this.
|
|
467
|
+
if (!this.sp00ky) throw new Error("SyncedDb not initialized");
|
|
468
|
+
await this.sp00ky.auth.signOut();
|
|
437
469
|
}
|
|
438
470
|
/**
|
|
439
471
|
* Execute a function with direct access to the remote database connection
|
|
440
472
|
*/
|
|
441
473
|
async useRemote(fn) {
|
|
442
|
-
if (!this.
|
|
443
|
-
return await this.
|
|
474
|
+
if (!this.sp00ky) throw new Error("SyncedDb not initialized");
|
|
475
|
+
return await this.sp00ky.useRemote(fn);
|
|
444
476
|
}
|
|
445
477
|
/**
|
|
446
478
|
* Access the remote database service directly
|
|
447
479
|
*/
|
|
448
480
|
get remote() {
|
|
449
|
-
if (!this.
|
|
450
|
-
return this.
|
|
481
|
+
if (!this.sp00ky) throw new Error("SyncedDb not initialized");
|
|
482
|
+
return this.sp00ky.remoteClient;
|
|
451
483
|
}
|
|
452
484
|
/**
|
|
453
485
|
* Access the local database service directly
|
|
454
486
|
*/
|
|
455
487
|
get local() {
|
|
456
|
-
if (!this.
|
|
457
|
-
return this.
|
|
488
|
+
if (!this.sp00ky) throw new Error("SyncedDb not initialized");
|
|
489
|
+
return this.sp00ky.localClient;
|
|
458
490
|
}
|
|
459
491
|
/**
|
|
460
492
|
* Access the auth service
|
|
461
493
|
*/
|
|
462
494
|
get auth() {
|
|
463
|
-
if (!this.
|
|
464
|
-
return this.
|
|
495
|
+
if (!this.sp00ky) throw new Error("SyncedDb not initialized");
|
|
496
|
+
return this.sp00ky.auth;
|
|
465
497
|
}
|
|
466
498
|
get pendingMutationCount() {
|
|
467
|
-
if (!this.
|
|
468
|
-
return this.
|
|
499
|
+
if (!this.sp00ky) throw new Error("SyncedDb not initialized");
|
|
500
|
+
return this.sp00ky.pendingMutationCount;
|
|
469
501
|
}
|
|
470
502
|
subscribeToPendingMutations(cb) {
|
|
471
|
-
if (!this.
|
|
472
|
-
return this.
|
|
503
|
+
if (!this.sp00ky) throw new Error("SyncedDb not initialized");
|
|
504
|
+
return this.sp00ky.subscribeToPendingMutations(cb);
|
|
473
505
|
}
|
|
474
506
|
bucket(name) {
|
|
475
|
-
if (!this.
|
|
476
|
-
return this.
|
|
507
|
+
if (!this.sp00ky) throw new Error("SyncedDb not initialized");
|
|
508
|
+
return this.sp00ky.bucket(name);
|
|
477
509
|
}
|
|
478
510
|
getBucketConfig(name) {
|
|
479
511
|
return this.config.schema.buckets?.find((b) => b.name === name);
|
|
@@ -481,5 +513,5 @@ var SyncedDb = class {
|
|
|
481
513
|
};
|
|
482
514
|
|
|
483
515
|
//#endregion
|
|
484
|
-
export { RecordId,
|
|
516
|
+
export { RecordId, Sp00kyProvider, SyncedDb, Uuid, useCrdtField, useDb, useDownloadFile, useFileUpload, useQuery };
|
|
485
517
|
//# sourceMappingURL=index.js.map
|