@legendapp/state 2.2.0-next.77 → 2.2.0-next.78
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/package.json +1 -1
- package/src/sync-plugins/keel.ts +1 -1
- package/src/sync-plugins/supabase.ts +31 -11
- package/src/syncTypes.ts +5 -1
- package/sync-plugins/keel.d.ts +1 -1
- package/sync-plugins/supabase.d.ts +4 -3
- package/sync-plugins/supabase.js +24 -10
- package/sync-plugins/supabase.js.map +1 -1
- package/sync-plugins/supabase.mjs +24 -10
- package/sync-plugins/supabase.mjs.map +1 -1
package/package.json
CHANGED
package/src/sync-plugins/keel.ts
CHANGED
|
@@ -68,7 +68,7 @@ interface SyncedKeelConfiguration {
|
|
|
68
68
|
api: { queries: Record<string, (i: any) => Promise<any>> };
|
|
69
69
|
};
|
|
70
70
|
realtimePlugin?: KeelRealtimePlugin;
|
|
71
|
-
as?: CrudAsOption
|
|
71
|
+
as?: Exclude<CrudAsOption, 'first'>;
|
|
72
72
|
enabled?: boolean;
|
|
73
73
|
onError?: (params: APIResult<any>['error']) => void;
|
|
74
74
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Observable,
|
|
3
|
+
SyncedOptions,
|
|
3
4
|
SyncedOptionsGlobal,
|
|
4
5
|
computeSelector,
|
|
5
6
|
getNodeValue,
|
|
@@ -38,12 +39,14 @@ type RowOf<
|
|
|
38
39
|
|
|
39
40
|
export type SyncedSupabaseConfig<T extends { id: string }> = Omit<
|
|
40
41
|
SyncedCrudPropsBase<T>,
|
|
41
|
-
'create' | 'update' | 'delete' | 'onSaved' | 'transform' | '
|
|
42
|
+
'create' | 'update' | 'delete' | 'onSaved' | 'transform' | 'updatePartial' | 'subscribe'
|
|
42
43
|
>;
|
|
43
44
|
|
|
44
|
-
export interface SyncedSupabaseGlobalConfig
|
|
45
|
+
export interface SyncedSupabaseGlobalConfig
|
|
46
|
+
extends Omit<SyncedSupabaseConfig<{ id: string }>, 'persist' | keyof SyncedOptions> {
|
|
45
47
|
persist?: SyncedOptionsGlobal;
|
|
46
48
|
enabled?: Observable<boolean>;
|
|
49
|
+
as?: Exclude<CrudAsOption, 'first'>;
|
|
47
50
|
}
|
|
48
51
|
|
|
49
52
|
interface SyncedSupabaseProps<
|
|
@@ -97,6 +100,7 @@ export function syncedSupabase<
|
|
|
97
100
|
collection,
|
|
98
101
|
filter,
|
|
99
102
|
actions,
|
|
103
|
+
fieldCreatedAt,
|
|
100
104
|
fieldUpdatedAt,
|
|
101
105
|
realtime,
|
|
102
106
|
changesSince,
|
|
@@ -114,7 +118,10 @@ export function syncedSupabase<
|
|
|
114
118
|
if (lastSync) {
|
|
115
119
|
const date = new Date(lastSync).toISOString();
|
|
116
120
|
select = select.or(
|
|
117
|
-
|
|
121
|
+
[
|
|
122
|
+
fieldCreatedAt && `${fieldCreatedAt}.gt.${date}`,
|
|
123
|
+
fieldUpdatedAt && `${fieldUpdatedAt}.gt.${date}`,
|
|
124
|
+
].join(','),
|
|
118
125
|
);
|
|
119
126
|
}
|
|
120
127
|
}
|
|
@@ -175,8 +182,14 @@ export function syncedSupabase<
|
|
|
175
182
|
const { eventType, new: value, old } = payload;
|
|
176
183
|
if (eventType === 'INSERT' || eventType === 'UPDATE') {
|
|
177
184
|
const cur = getNodeValue(node)?.[value.id];
|
|
178
|
-
const curDateStr =
|
|
179
|
-
|
|
185
|
+
const curDateStr =
|
|
186
|
+
cur &&
|
|
187
|
+
((fieldUpdatedAt && cur[fieldUpdatedAt]) ||
|
|
188
|
+
fieldCreatedAt ||
|
|
189
|
+
cur[fieldCreatedAt as any]);
|
|
190
|
+
const valueDateStr =
|
|
191
|
+
(fieldUpdatedAt && value[fieldUpdatedAt]) ||
|
|
192
|
+
(fieldCreatedAt && value[fieldCreatedAt]);
|
|
180
193
|
const valueDate = +new Date(valueDateStr);
|
|
181
194
|
// Check if new or newer than last seen locally
|
|
182
195
|
if (valueDateStr && (!curDateStr || valueDate > +new Date(curDateStr))) {
|
|
@@ -209,14 +222,21 @@ export function syncedSupabase<
|
|
|
209
222
|
delete: deleteFn,
|
|
210
223
|
onSaved: (saved) => {
|
|
211
224
|
// Update the local timestamps with server response
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
225
|
+
if (fieldCreatedAt || fieldUpdatedAt) {
|
|
226
|
+
const ret: any = {
|
|
227
|
+
id: saved.id,
|
|
228
|
+
};
|
|
229
|
+
if (fieldCreatedAt) {
|
|
230
|
+
ret[fieldCreatedAt] = fieldCreatedAt;
|
|
231
|
+
}
|
|
232
|
+
if (fieldUpdatedAt) {
|
|
233
|
+
ret[fieldUpdatedAt] = fieldUpdatedAt;
|
|
234
|
+
}
|
|
235
|
+
return ret;
|
|
236
|
+
}
|
|
217
237
|
},
|
|
218
238
|
subscribe,
|
|
219
|
-
fieldCreatedAt
|
|
239
|
+
fieldCreatedAt,
|
|
220
240
|
fieldUpdatedAt,
|
|
221
241
|
updatePartial: true,
|
|
222
242
|
waitFor: () => isEnabled$.get() && (waitFor ? computeSelector(waitFor) : true),
|
package/src/syncTypes.ts
CHANGED
|
@@ -76,7 +76,11 @@ export interface SyncedOptions<T = any> extends Omit<LinkedOptions<T>, 'get' | '
|
|
|
76
76
|
allowSetIfGetError?: boolean;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
export interface SyncedOptionsGlobal<T = any>
|
|
79
|
+
export interface SyncedOptionsGlobal<T = any>
|
|
80
|
+
extends Omit<
|
|
81
|
+
SyncedOptions<T>,
|
|
82
|
+
'get' | 'set' | 'persist' | 'initial' | 'waitForSet' | 'waitFor' | 'transform' | 'subscribe'
|
|
83
|
+
> {
|
|
80
84
|
persist?: ObservablePersistPluginOptions & Omit<PersistOptions, 'name' | 'transform' | 'options'>;
|
|
81
85
|
}
|
|
82
86
|
|
package/sync-plugins/keel.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Observable, SyncedOptionsGlobal, type SyncedGetParams } from '@legendapp/state';
|
|
1
|
+
import { Observable, SyncedOptions, SyncedOptionsGlobal, type SyncedGetParams } from '@legendapp/state';
|
|
2
2
|
import { CrudAsOption, SyncedCrudPropsBase, SyncedCrudPropsMany, SyncedCrudReturnType } from '@legendapp/state/sync-plugins/crud';
|
|
3
3
|
import type { PostgrestFilterBuilder } from '@supabase/postgrest-js';
|
|
4
4
|
import type { SupabaseClient } from '@supabase/supabase-js';
|
|
@@ -8,12 +8,13 @@ type CollectionOf<TClient extends SupabaseClient> = keyof TableOf<TClient>;
|
|
|
8
8
|
type RowOf<TClient extends SupabaseClient, TCollection extends CollectionOf<TClient>> = TableOf<TClient>[TCollection]['Row'];
|
|
9
9
|
export type SyncedSupabaseConfig<T extends {
|
|
10
10
|
id: string;
|
|
11
|
-
}> = Omit<SyncedCrudPropsBase<T>, 'create' | 'update' | 'delete' | 'onSaved' | 'transform' | '
|
|
11
|
+
}> = Omit<SyncedCrudPropsBase<T>, 'create' | 'update' | 'delete' | 'onSaved' | 'transform' | 'updatePartial' | 'subscribe'>;
|
|
12
12
|
export interface SyncedSupabaseGlobalConfig extends Omit<SyncedSupabaseConfig<{
|
|
13
13
|
id: string;
|
|
14
|
-
}>, 'persist'> {
|
|
14
|
+
}>, 'persist' | keyof SyncedOptions> {
|
|
15
15
|
persist?: SyncedOptionsGlobal;
|
|
16
16
|
enabled?: Observable<boolean>;
|
|
17
|
+
as?: Exclude<CrudAsOption, 'first'>;
|
|
17
18
|
}
|
|
18
19
|
interface SyncedSupabaseProps<TClient extends SupabaseClient, TCollection extends CollectionOf<TClient>, TOption extends CrudAsOption = 'object'> extends SyncedSupabaseConfig<RowOf<TClient, TCollection>>, SyncedCrudPropsMany<RowOf<TClient, TCollection>, RowOf<TClient, TCollection>, TOption> {
|
|
19
20
|
supabase: TClient;
|
package/sync-plugins/supabase.js
CHANGED
|
@@ -15,7 +15,7 @@ function configureSyncedSupabase(config) {
|
|
|
15
15
|
}
|
|
16
16
|
function syncedSupabase(props) {
|
|
17
17
|
state.mergeIntoObservable(props, supabaseConfig);
|
|
18
|
-
const { supabase: client, collection, filter, actions, fieldUpdatedAt, realtime, changesSince, waitFor, waitForSet, ...rest } = props;
|
|
18
|
+
const { supabase: client, collection, filter, actions, fieldCreatedAt, fieldUpdatedAt, realtime, changesSince, waitFor, waitForSet, ...rest } = props;
|
|
19
19
|
const list = !actions || actions.includes('read')
|
|
20
20
|
? async (params) => {
|
|
21
21
|
const { lastSync } = params;
|
|
@@ -24,7 +24,10 @@ function syncedSupabase(props) {
|
|
|
24
24
|
select = select.neq('deleted', true);
|
|
25
25
|
if (lastSync) {
|
|
26
26
|
const date = new Date(lastSync).toISOString();
|
|
27
|
-
select = select.or(
|
|
27
|
+
select = select.or([
|
|
28
|
+
fieldCreatedAt && `${fieldCreatedAt}.gt.${date}`,
|
|
29
|
+
fieldUpdatedAt && `${fieldUpdatedAt}.gt.${date}`,
|
|
30
|
+
].join(','));
|
|
28
31
|
}
|
|
29
32
|
}
|
|
30
33
|
if (filter) {
|
|
@@ -82,8 +85,12 @@ function syncedSupabase(props) {
|
|
|
82
85
|
const { eventType, new: value, old } = payload;
|
|
83
86
|
if (eventType === 'INSERT' || eventType === 'UPDATE') {
|
|
84
87
|
const cur = (_a = state.getNodeValue(node)) === null || _a === void 0 ? void 0 : _a[value.id];
|
|
85
|
-
const curDateStr = cur &&
|
|
86
|
-
|
|
88
|
+
const curDateStr = cur &&
|
|
89
|
+
((fieldUpdatedAt && cur[fieldUpdatedAt]) ||
|
|
90
|
+
fieldCreatedAt ||
|
|
91
|
+
cur[fieldCreatedAt]);
|
|
92
|
+
const valueDateStr = (fieldUpdatedAt && value[fieldUpdatedAt]) ||
|
|
93
|
+
(fieldCreatedAt && value[fieldCreatedAt]);
|
|
87
94
|
const valueDate = +new Date(valueDateStr);
|
|
88
95
|
// Check if new or newer than last seen locally
|
|
89
96
|
if (valueDateStr && (!curDateStr || valueDate > +new Date(curDateStr))) {
|
|
@@ -114,14 +121,21 @@ function syncedSupabase(props) {
|
|
|
114
121
|
delete: deleteFn,
|
|
115
122
|
onSaved: (saved) => {
|
|
116
123
|
// Update the local timestamps with server response
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
124
|
+
if (fieldCreatedAt || fieldUpdatedAt) {
|
|
125
|
+
const ret = {
|
|
126
|
+
id: saved.id,
|
|
127
|
+
};
|
|
128
|
+
if (fieldCreatedAt) {
|
|
129
|
+
ret[fieldCreatedAt] = fieldCreatedAt;
|
|
130
|
+
}
|
|
131
|
+
if (fieldUpdatedAt) {
|
|
132
|
+
ret[fieldUpdatedAt] = fieldUpdatedAt;
|
|
133
|
+
}
|
|
134
|
+
return ret;
|
|
135
|
+
}
|
|
122
136
|
},
|
|
123
137
|
subscribe,
|
|
124
|
-
fieldCreatedAt
|
|
138
|
+
fieldCreatedAt,
|
|
125
139
|
fieldUpdatedAt,
|
|
126
140
|
updatePartial: true,
|
|
127
141
|
waitFor: () => isEnabled$.get() && (waitFor ? state.computeSelector(waitFor) : true),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supabase.js","sources":["../src/sync-plugins/supabase.ts"],"sourcesContent":[null],"names":["observable","mergeIntoObservable","getNodeValue","symbolDelete","syncedCrud","computeSelector"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"supabase.js","sources":["../src/sync-plugins/supabase.ts"],"sourcesContent":[null],"names":["observable","mergeIntoObservable","getNodeValue","symbolDelete","syncedCrud","computeSelector"],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ function configureSyncedSupabase(config) {
|
|
|
13
13
|
}
|
|
14
14
|
function syncedSupabase(props) {
|
|
15
15
|
mergeIntoObservable(props, supabaseConfig);
|
|
16
|
-
const { supabase: client, collection, filter, actions, fieldUpdatedAt, realtime, changesSince, waitFor, waitForSet, ...rest } = props;
|
|
16
|
+
const { supabase: client, collection, filter, actions, fieldCreatedAt, fieldUpdatedAt, realtime, changesSince, waitFor, waitForSet, ...rest } = props;
|
|
17
17
|
const list = !actions || actions.includes('read')
|
|
18
18
|
? async (params) => {
|
|
19
19
|
const { lastSync } = params;
|
|
@@ -22,7 +22,10 @@ function syncedSupabase(props) {
|
|
|
22
22
|
select = select.neq('deleted', true);
|
|
23
23
|
if (lastSync) {
|
|
24
24
|
const date = new Date(lastSync).toISOString();
|
|
25
|
-
select = select.or(
|
|
25
|
+
select = select.or([
|
|
26
|
+
fieldCreatedAt && `${fieldCreatedAt}.gt.${date}`,
|
|
27
|
+
fieldUpdatedAt && `${fieldUpdatedAt}.gt.${date}`,
|
|
28
|
+
].join(','));
|
|
26
29
|
}
|
|
27
30
|
}
|
|
28
31
|
if (filter) {
|
|
@@ -80,8 +83,12 @@ function syncedSupabase(props) {
|
|
|
80
83
|
const { eventType, new: value, old } = payload;
|
|
81
84
|
if (eventType === 'INSERT' || eventType === 'UPDATE') {
|
|
82
85
|
const cur = (_a = getNodeValue(node)) === null || _a === void 0 ? void 0 : _a[value.id];
|
|
83
|
-
const curDateStr = cur &&
|
|
84
|
-
|
|
86
|
+
const curDateStr = cur &&
|
|
87
|
+
((fieldUpdatedAt && cur[fieldUpdatedAt]) ||
|
|
88
|
+
fieldCreatedAt ||
|
|
89
|
+
cur[fieldCreatedAt]);
|
|
90
|
+
const valueDateStr = (fieldUpdatedAt && value[fieldUpdatedAt]) ||
|
|
91
|
+
(fieldCreatedAt && value[fieldCreatedAt]);
|
|
85
92
|
const valueDate = +new Date(valueDateStr);
|
|
86
93
|
// Check if new or newer than last seen locally
|
|
87
94
|
if (valueDateStr && (!curDateStr || valueDate > +new Date(curDateStr))) {
|
|
@@ -112,14 +119,21 @@ function syncedSupabase(props) {
|
|
|
112
119
|
delete: deleteFn,
|
|
113
120
|
onSaved: (saved) => {
|
|
114
121
|
// Update the local timestamps with server response
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
122
|
+
if (fieldCreatedAt || fieldUpdatedAt) {
|
|
123
|
+
const ret = {
|
|
124
|
+
id: saved.id,
|
|
125
|
+
};
|
|
126
|
+
if (fieldCreatedAt) {
|
|
127
|
+
ret[fieldCreatedAt] = fieldCreatedAt;
|
|
128
|
+
}
|
|
129
|
+
if (fieldUpdatedAt) {
|
|
130
|
+
ret[fieldUpdatedAt] = fieldUpdatedAt;
|
|
131
|
+
}
|
|
132
|
+
return ret;
|
|
133
|
+
}
|
|
120
134
|
},
|
|
121
135
|
subscribe,
|
|
122
|
-
fieldCreatedAt
|
|
136
|
+
fieldCreatedAt,
|
|
123
137
|
fieldUpdatedAt,
|
|
124
138
|
updatePartial: true,
|
|
125
139
|
waitFor: () => isEnabled$.get() && (waitFor ? computeSelector(waitFor) : true),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"supabase.mjs","sources":["../src/sync-plugins/supabase.ts"],"sourcesContent":[null],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"supabase.mjs","sources":["../src/sync-plugins/supabase.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|