@svadmin/supabase 0.10.0 → 0.11.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.
- package/package.json +2 -2
- package/src/index.ts +0 -4
- package/src/supabase.test.ts +10 -5
- package/src/supacloud.ts +22 -42
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@svadmin/supabase",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Supabase adapters — DataProvider, AuthProvider, LiveProvider, AuditHandler",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
|
-
"@svadmin/core": "^0.
|
|
23
|
+
"@svadmin/core": "^0.25.0",
|
|
24
24
|
"@supabase/supabase-js": "^2.0.0",
|
|
25
25
|
"@refinedev/supabase": "^5.0.0",
|
|
26
26
|
"@supacloud/js": "^0.10.0"
|
package/src/index.ts
CHANGED
|
@@ -10,11 +10,7 @@ export {
|
|
|
10
10
|
} from './supacloud';
|
|
11
11
|
export type {
|
|
12
12
|
SupaCloudTaskClient,
|
|
13
|
-
SupaCloudTaskHandle,
|
|
14
|
-
SupaCloudTaskProvider,
|
|
15
13
|
SupaCloudTaskRecord,
|
|
16
|
-
SupaCloudTaskSubmitOptions,
|
|
17
|
-
SupaCloudTaskSubscription,
|
|
18
14
|
CreateSupaCloudTaskProviderOptions,
|
|
19
15
|
CreateSupaCloudTaskLiveProviderOptions,
|
|
20
16
|
} from './supacloud';
|
package/src/supabase.test.ts
CHANGED
|
@@ -242,26 +242,31 @@ describe('SupaCloud Task Provider', () => {
|
|
|
242
242
|
|
|
243
243
|
test('list normalizes object payload with data field', async () => {
|
|
244
244
|
const { createSupaCloudTaskProvider } = await import('./supacloud');
|
|
245
|
-
const supacloud = {
|
|
246
|
-
submit: mock(async () => ({ wait: async () => ({ id: 'task-1' }) })),
|
|
247
|
-
get: mock(async () => ({ id: 'task-1' })),
|
|
245
|
+
const supacloud: import('@svadmin/core').TaskProvider<{ id: string; status: string }> = {
|
|
246
|
+
submit: mock(async () => ({ wait: async () => ({ id: 'task-1', status: 'queued' }) })),
|
|
247
|
+
get: mock(async () => ({ id: 'task-1', status: 'queued' })),
|
|
248
248
|
list: mock(async () => ({ data: [{ id: 'task-1', status: 'queued' }] })),
|
|
249
249
|
};
|
|
250
250
|
|
|
251
251
|
const provider = createSupaCloudTaskProvider({ supacloud });
|
|
252
|
+
if (!provider.list) throw new Error('provider.list should exist');
|
|
252
253
|
const tasks = await provider.list();
|
|
253
254
|
|
|
254
|
-
expect(tasks).toEqual(
|
|
255
|
+
expect(tasks).toEqual({
|
|
256
|
+
data: [{ id: 'task-1', status: 'queued' }],
|
|
257
|
+
total: 1,
|
|
258
|
+
});
|
|
255
259
|
});
|
|
256
260
|
|
|
257
261
|
test('listDlq throws clear error when capability is missing', async () => {
|
|
258
262
|
const { createSupaCloudTaskProvider } = await import('./supacloud');
|
|
259
|
-
const supacloud = {
|
|
263
|
+
const supacloud: import('@svadmin/core').TaskProvider<{ id: string }> = {
|
|
260
264
|
submit: mock(async () => ({ wait: async () => ({ id: 'task-1' }) })),
|
|
261
265
|
get: mock(async () => ({ id: 'task-1' })),
|
|
262
266
|
};
|
|
263
267
|
|
|
264
268
|
const provider = createSupaCloudTaskProvider({ supacloud });
|
|
269
|
+
if (!provider.listDlq) throw new Error('provider.listDlq should exist');
|
|
265
270
|
|
|
266
271
|
await expect(provider.listDlq()).rejects.toThrow('tasks.listDlq');
|
|
267
272
|
});
|
package/src/supacloud.ts
CHANGED
|
@@ -1,31 +1,20 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import type {
|
|
2
|
+
LiveEvent,
|
|
3
|
+
LiveProvider,
|
|
4
|
+
SubmitTaskOptions,
|
|
5
|
+
TaskHandle,
|
|
6
|
+
TaskListResult,
|
|
7
|
+
TaskProvider,
|
|
8
|
+
TaskRecord,
|
|
9
|
+
TaskSubscription,
|
|
10
|
+
} from '@svadmin/core';
|
|
11
|
+
|
|
12
|
+
export interface SupaCloudTaskRecord extends TaskRecord {
|
|
12
13
|
[key: string]: unknown;
|
|
13
14
|
}
|
|
14
15
|
|
|
15
|
-
export interface SupaCloudTaskSubscription {
|
|
16
|
-
unsubscribe(): void;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface SupaCloudTaskHandle<TTask extends SupaCloudTaskRecord = SupaCloudTaskRecord> {
|
|
20
|
-
id?: string;
|
|
21
|
-
wait(): Promise<TTask>;
|
|
22
|
-
subscribe?(callback: (task: TTask) => void): SupaCloudTaskSubscription | (() => void) | void;
|
|
23
|
-
cancel?(): Promise<unknown>;
|
|
24
|
-
retry?(): Promise<unknown>;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
16
|
export interface SupaCloudTaskClient<TTask extends SupaCloudTaskRecord = SupaCloudTaskRecord> {
|
|
28
|
-
submit(taskName: string, options?:
|
|
17
|
+
submit(taskName: string, options?: SubmitTaskOptions): Promise<TaskHandle<TTask>>;
|
|
29
18
|
get(taskId: string): Promise<TTask>;
|
|
30
19
|
list?(params?: Record<string, unknown>): Promise<TTask[] | { data?: TTask[] }>;
|
|
31
20
|
listDlq?(params?: Record<string, unknown>): Promise<TTask[] | { data?: TTask[] }>;
|
|
@@ -34,20 +23,7 @@ export interface SupaCloudTaskClient<TTask extends SupaCloudTaskRecord = SupaClo
|
|
|
34
23
|
subscribe?(
|
|
35
24
|
taskId: string,
|
|
36
25
|
callback: (task: TTask) => void
|
|
37
|
-
):
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export interface SupaCloudTaskProvider<TTask extends SupaCloudTaskRecord = SupaCloudTaskRecord> {
|
|
41
|
-
submit(taskName: string, options?: SupaCloudTaskSubmitOptions): Promise<SupaCloudTaskHandle<TTask>>;
|
|
42
|
-
get(taskId: string): Promise<TTask>;
|
|
43
|
-
list(params?: Record<string, unknown>): Promise<TTask[] | { data?: TTask[] }>;
|
|
44
|
-
listDlq(params?: Record<string, unknown>): Promise<TTask[] | { data?: TTask[] }>;
|
|
45
|
-
cancel(taskId: string): Promise<unknown>;
|
|
46
|
-
retry(taskId: string): Promise<unknown>;
|
|
47
|
-
subscribe(
|
|
48
|
-
taskId: string,
|
|
49
|
-
callback: (task: TTask) => void
|
|
50
|
-
): SupaCloudTaskSubscription | (() => void) | void;
|
|
26
|
+
): TaskSubscription | (() => void) | void;
|
|
51
27
|
}
|
|
52
28
|
|
|
53
29
|
export interface CreateSupaCloudTaskProviderOptions<
|
|
@@ -65,7 +41,7 @@ export interface CreateSupaCloudTaskLiveProviderOptions<
|
|
|
65
41
|
}
|
|
66
42
|
|
|
67
43
|
function normalizeTaskSubscription(
|
|
68
|
-
subscription:
|
|
44
|
+
subscription: TaskSubscription | (() => void) | void,
|
|
69
45
|
): (() => void) | undefined {
|
|
70
46
|
if (!subscription) return undefined;
|
|
71
47
|
if (typeof subscription === 'function') return subscription;
|
|
@@ -77,8 +53,12 @@ function normalizeTaskSubscription(
|
|
|
77
53
|
|
|
78
54
|
function normalizeTaskList<TTask extends SupaCloudTaskRecord>(
|
|
79
55
|
value: TTask[] | { data?: TTask[] },
|
|
80
|
-
): TTask
|
|
81
|
-
|
|
56
|
+
): TaskListResult<TTask> {
|
|
57
|
+
const data = Array.isArray(value) ? value : (value.data ?? []);
|
|
58
|
+
return {
|
|
59
|
+
data,
|
|
60
|
+
total: data.length,
|
|
61
|
+
};
|
|
82
62
|
}
|
|
83
63
|
|
|
84
64
|
function defaultMapTaskToEvent<TTask extends SupaCloudTaskRecord>(
|
|
@@ -94,7 +74,7 @@ function defaultMapTaskToEvent<TTask extends SupaCloudTaskRecord>(
|
|
|
94
74
|
|
|
95
75
|
export function createSupaCloudTaskProvider<
|
|
96
76
|
TTask extends SupaCloudTaskRecord = SupaCloudTaskRecord,
|
|
97
|
-
>(options: CreateSupaCloudTaskProviderOptions<TTask>):
|
|
77
|
+
>(options: CreateSupaCloudTaskProviderOptions<TTask>): TaskProvider<TTask> {
|
|
98
78
|
const { supacloud } = options;
|
|
99
79
|
|
|
100
80
|
return {
|