@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@svadmin/supabase",
3
- "version": "0.10.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.24.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';
@@ -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([{ id: 'task-1', status: 'queued' }]);
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 { LiveEvent, LiveProvider } from '@svadmin/core';
2
-
3
- export interface SupaCloudTaskSubmitOptions {
4
- body?: Record<string, unknown>;
5
- idempotencyKey?: string;
6
- headers?: Record<string, string>;
7
- }
8
-
9
- export interface SupaCloudTaskRecord {
10
- id: string;
11
- status?: string;
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?: SupaCloudTaskSubmitOptions): Promise<SupaCloudTaskHandle<TTask>>;
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
- ): SupaCloudTaskSubscription | (() => void) | void;
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: SupaCloudTaskSubscription | (() => void) | void,
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
- return Array.isArray(value) ? value : (value.data ?? []);
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>): SupaCloudTaskProvider<TTask> {
77
+ >(options: CreateSupaCloudTaskProviderOptions<TTask>): TaskProvider<TTask> {
98
78
  const { supacloud } = options;
99
79
 
100
80
  return {