target-supabase-sdk 0.1.8 → 0.1.9
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/README.md +8 -6
- package/dist/auth/auth.api.d.ts.map +1 -1
- package/dist/auth/auth.api.js +2 -1
- package/dist/auth/auth.api.js.map +1 -1
- package/dist/command/command.api.d.ts +43 -0
- package/dist/command/command.api.d.ts.map +1 -0
- package/dist/command/command.api.js +58 -0
- package/dist/command/command.api.js.map +1 -0
- package/dist/command/command.interface.d.ts +14 -0
- package/dist/command/command.interface.d.ts.map +1 -0
- package/dist/command/command.interface.js +9 -0
- package/dist/command/command.interface.js.map +1 -0
- package/dist/core.api.d.ts +70 -6
- package/dist/core.api.d.ts.map +1 -1
- package/dist/core.api.js +191 -13
- package/dist/core.api.js.map +1 -1
- package/dist/file/file-manager.d.ts +1 -1
- package/dist/file/file-manager.d.ts.map +1 -1
- package/dist/file/file-manager.js +1 -1
- package/dist/file/file-manager.js.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/node/node-manager.d.ts +48 -0
- package/dist/node/node-manager.d.ts.map +1 -0
- package/dist/node/node-manager.js +619 -0
- package/dist/node/node-manager.js.map +1 -0
- package/dist/node/node-task.preset.d.ts +1 -0
- package/dist/node/node-task.preset.d.ts.map +1 -0
- package/dist/node/node-task.preset.js +14 -0
- package/dist/node/node-task.preset.js.map +1 -0
- package/dist/node/node.api.d.ts +67 -31
- package/dist/node/node.api.d.ts.map +1 -1
- package/dist/node/node.api.js +65 -102
- package/dist/node/node.api.js.map +1 -1
- package/dist/node/node.interface.d.ts +7 -0
- package/dist/node/node.interface.d.ts.map +1 -1
- package/dist/node/node.interface.js +2 -0
- package/dist/node/node.interface.js.map +1 -1
- package/dist/node/node.utils.d.ts +5 -0
- package/dist/node/node.utils.d.ts.map +1 -0
- package/dist/node/node.utils.js +36 -0
- package/dist/node/node.utils.js.map +1 -0
- package/dist/parcel/parcel-manager.d.ts +1 -1
- package/dist/parcel/parcel-manager.d.ts.map +1 -1
- package/dist/parcel/parcel-manager.js +1 -1
- package/dist/parcel/parcel-manager.js.map +1 -1
- package/dist/repo/repo-context.utils.d.ts +24 -0
- package/dist/repo/repo-context.utils.d.ts.map +1 -0
- package/dist/repo/repo-context.utils.js +81 -0
- package/dist/repo/repo-context.utils.js.map +1 -0
- package/dist/repo/repo-manager.d.ts +31 -0
- package/dist/repo/repo-manager.d.ts.map +1 -0
- package/dist/repo/repo-manager.js +156 -0
- package/dist/repo/repo-manager.js.map +1 -0
- package/dist/repo/repo.api.d.ts +16 -0
- package/dist/repo/repo.api.d.ts.map +1 -0
- package/dist/repo/repo.api.js +40 -0
- package/dist/repo/repo.api.js.map +1 -0
- package/dist/repo/repo.interface.d.ts +12 -5
- package/dist/repo/repo.interface.d.ts.map +1 -1
- package/dist/repo/repo.interface.js +2 -2
- package/dist/repo/repo.interface.js.map +1 -1
- package/dist/repo/repo.script-loader.d.ts +19 -0
- package/dist/repo/repo.script-loader.d.ts.map +1 -0
- package/dist/repo/repo.script-loader.js +108 -0
- package/dist/repo/repo.script-loader.js.map +1 -0
- package/dist/shared/log/create-api-logger.d.ts +17 -0
- package/dist/shared/log/create-api-logger.d.ts.map +1 -0
- package/dist/shared/log/create-api-logger.js +15 -0
- package/dist/shared/log/create-api-logger.js.map +1 -0
- package/dist/shared/log/log-manager.d.ts +114 -0
- package/dist/shared/log/log-manager.d.ts.map +1 -0
- package/dist/shared/log/log-manager.js +218 -0
- package/dist/shared/log/log-manager.js.map +1 -0
- package/dist/shared/utils/config-path.utils.d.ts +38 -0
- package/dist/shared/utils/config-path.utils.d.ts.map +1 -0
- package/dist/shared/utils/config-path.utils.js +85 -0
- package/dist/shared/utils/config-path.utils.js.map +1 -0
- package/dist/shared/utils/error.utils.d.ts +11 -0
- package/dist/shared/utils/error.utils.d.ts.map +1 -0
- package/dist/shared/utils/error.utils.js +15 -0
- package/dist/shared/utils/error.utils.js.map +1 -0
- package/dist/shared/utils/id.utils.d.ts +3 -0
- package/dist/shared/utils/id.utils.d.ts.map +1 -0
- package/dist/shared/utils/id.utils.js +5 -0
- package/dist/shared/utils/id.utils.js.map +1 -0
- package/dist/supabase.js +1 -1
- package/dist/supabase.js.map +1 -1
- package/dist/task/local-task-registry.d.ts +27 -0
- package/dist/task/local-task-registry.d.ts.map +1 -0
- package/dist/task/local-task-registry.js +153 -0
- package/dist/task/local-task-registry.js.map +1 -0
- package/dist/task/task-manager.d.ts +52 -0
- package/dist/task/task-manager.d.ts.map +1 -0
- package/dist/task/task-manager.js +217 -0
- package/dist/task/task-manager.js.map +1 -0
- package/dist/task/task-repo-context.d.ts +95 -0
- package/dist/task/task-repo-context.d.ts.map +1 -0
- package/dist/task/task-repo-context.js +12 -0
- package/dist/task/task-repo-context.js.map +1 -0
- package/dist/task/task.api.d.ts +240 -0
- package/dist/task/task.api.d.ts.map +1 -1
- package/dist/task/task.api.js +350 -1
- package/dist/task/task.api.js.map +1 -1
- package/dist/task/task.interface.d.ts +9 -2
- package/dist/task/task.interface.d.ts.map +1 -1
- package/dist/task/task.interface.js +10 -0
- package/dist/task/task.interface.js.map +1 -1
- package/package.json +10 -3
- package/src/auth/auth.api.ts +3 -1
- package/src/command/command.api.ts +88 -0
- package/src/command/command.interface.ts +17 -0
- package/src/core.api.ts +305 -26
- package/src/file/file-manager.ts +1 -1
- package/src/index.ts +18 -3
- package/src/node/node-manager.ts +673 -0
- package/src/node/node-task.preset.ts +13 -0
- package/src/node/node.api.ts +95 -117
- package/src/node/node.interface.ts +8 -0
- package/src/node/node.utils.ts +36 -0
- package/src/parcel/parcel-manager.ts +1 -1
- package/src/repo/repo-context.utils.ts +111 -0
- package/src/repo/repo-manager.ts +217 -0
- package/src/repo/repo.api.ts +50 -0
- package/src/repo/repo.interface.ts +13 -5
- package/src/repo/repo.script-loader.ts +140 -0
- package/src/shared/log/create-api-logger.ts +25 -0
- package/src/shared/log/log-manager.ts +340 -0
- package/src/shared/utils/config-path.utils.ts +104 -0
- package/src/shared/utils/error.utils.ts +15 -0
- package/src/shared/utils/id.utils.ts +4 -0
- package/src/supabase.ts +1 -1
- package/src/task/local-task-registry.ts +195 -0
- package/src/task/task-manager.ts +312 -0
- package/src/task/task-repo-context.ts +103 -0
- package/src/task/task.api.ts +429 -0
- package/src/task/task.interface.ts +10 -2
- package/dist/task/task-node-manager.d.ts +0 -1
- package/dist/task/task-node-manager.d.ts.map +0 -1
- package/dist/task/task-node-manager.js +0 -2
- package/dist/task/task-node-manager.js.map +0 -1
- package/src/task/task-node-manager.ts +0 -0
package/README.md
CHANGED
|
@@ -30,15 +30,17 @@ cp .env.example .env.local
|
|
|
30
30
|
|
|
31
31
|
| Variable | Required | Description |
|
|
32
32
|
|----------|----------|-------------|
|
|
33
|
-
| `
|
|
34
|
-
| `
|
|
35
|
-
| `
|
|
36
|
-
| `
|
|
33
|
+
| `SUPABASE_URL` | Yes | Main Supabase project URL |
|
|
34
|
+
| `SUPABASE_ANON_KEY` | Yes | Main project anon (public) key |
|
|
35
|
+
| `SUPABASE_NEED_AUTH_URL` | No | Separate auth project URL |
|
|
36
|
+
| `SUPABASE_NEED_AUTH_ANON_KEY` | No | Separate auth project anon key |
|
|
37
|
+
|
|
38
|
+
Used by `scripts/` (`pnpm worker`, `pnpm post-task`) via `.env.local`. Browser apps pass the same values to `supabase.initialize()` (e.g. `import.meta.env.VITE_SUPABASE_URL` if your bundler uses a `VITE_` prefix).
|
|
37
39
|
|
|
38
40
|
### Security
|
|
39
41
|
|
|
40
|
-
-
|
|
41
|
-
- **Never** put the `service_role` key in
|
|
42
|
+
- Only use the **anon (public) key** in client or script env — it is designed to be public when protected by Row Level Security (RLS).
|
|
43
|
+
- **Never** put the `service_role` key in env files or frontend code. Use it only in trusted server-side environments.
|
|
42
44
|
- Do not commit `.env` or `.env.local`. They are gitignored; only `.env.example` (placeholders) should be tracked.
|
|
43
45
|
- Auth APIs return session tokens. Store them securely and never log them.
|
|
44
46
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.api.d.ts","sourceRoot":"","sources":["../../src/auth/auth.api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.api.d.ts","sourceRoot":"","sources":["../../src/auth/auth.api.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAGD,eAAO,MAAM,YAAY,wBAA+B,eAAe;;;GAWtE,CAAC;AAGF,eAAO,MAAM,SAAS,wBAA+B,YAAY;;;;GAWhE,CAAC;AAGF,eAAO,MAAM,UAAU,uDAQtB,CAAC;AAGF,eAAO,MAAM,cAAc,2DAW1B,CAAC;AAGF,eAAO,MAAM,aAAa,UAAiB,MAAM,oDAQhD,CAAC"}
|
package/dist/auth/auth.api.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SupabaseInitializer } from "../supabase";
|
|
2
2
|
import { generateResponse } from "../core.interface";
|
|
3
3
|
import { handleSupabaseError } from "../core.utils";
|
|
4
|
+
const supabase = SupabaseInitializer.getInstance();
|
|
4
5
|
// 用户注册
|
|
5
6
|
export const registerUser = async ({ email, password }) => {
|
|
6
7
|
const { data, error } = await supabase.authClient.auth.signUp({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.api.js","sourceRoot":"","sources":["../../src/auth/auth.api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"auth.api.js","sourceRoot":"","sources":["../../src/auth/auth.api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,WAAW,EAAE,CAAC;AAoBnD,OAAO;AACP,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAmB,EAAE,EAAE;IACzE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,UAAW,CAAC,IAAI,CAAC,MAAM,CAAC;QAC7D,KAAK;QACL,QAAQ;KACT,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE,CAAC;QACV,mBAAmB,CAAC,cAAc,EAAE,KAAK,EAAE,wCAAwC,CAAC,CAAC;IACvF,CAAC;IAED,OAAO,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,OAAO;AACP,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAgB,EAAE,EAAE;IACnE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,UAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACzE,KAAK;QACL,QAAQ;KACT,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE,CAAC;QACV,mBAAmB,CAAC,WAAW,EAAE,KAAK,EAAE,8CAA8C,CAAC,CAAC;IAC1F,CAAC;IAED,OAAO,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,OAAO;AACP,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;IACnC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,UAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAE5D,IAAI,KAAK,EAAE,CAAC;QACV,mBAAmB,CAAC,YAAY,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,gBAAgB,CAAC,OAAO,EAAE,CAAC;AACpC,CAAC,CAAC;AAEF,SAAS;AACT,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;IACvC,MAAM,EACJ,IAAI,EAAE,EAAE,IAAI,EAAE,EACd,KAAK,GACN,GAAG,MAAM,QAAQ,CAAC,UAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAE9C,IAAI,KAAK,EAAE,CAAC;QACV,mBAAmB,CAAC,gBAAgB,EAAE,KAAK,EAAE,6BAA6B,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,gBAAgB,CAAC,OAAO,CAAc,IAAmB,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,OAAO;AACP,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,KAAa,EAAE,EAAE;IACnD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ,CAAC,UAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAE/E,IAAI,KAAK,EAAE,CAAC;QACV,mBAAmB,CAAC,eAAe,EAAE,KAAK,EAAE,gCAAgC,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,gBAAgB,CAAC,OAAO,EAAE,CAAC;AACpC,CAAC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { Command, CommandType } from "./command.interface";
|
|
3
|
+
export declare const postCommandSchema: z.ZodObject<{
|
|
4
|
+
nodeId: z.ZodString;
|
|
5
|
+
command: z.ZodNativeEnum<typeof CommandType>;
|
|
6
|
+
traceId: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
nodeId: string;
|
|
9
|
+
command: CommandType;
|
|
10
|
+
traceId?: string | undefined;
|
|
11
|
+
}, {
|
|
12
|
+
nodeId: string;
|
|
13
|
+
command: CommandType;
|
|
14
|
+
traceId?: string | undefined;
|
|
15
|
+
}>;
|
|
16
|
+
export type PostCommandPayload = z.infer<typeof postCommandSchema>;
|
|
17
|
+
export declare const getPollCommandListSchema: z.ZodObject<{
|
|
18
|
+
nodeId: z.ZodString;
|
|
19
|
+
size: z.ZodOptional<z.ZodNumber>;
|
|
20
|
+
traceId: z.ZodOptional<z.ZodString>;
|
|
21
|
+
}, "strip", z.ZodTypeAny, {
|
|
22
|
+
nodeId: string;
|
|
23
|
+
size?: number | undefined;
|
|
24
|
+
traceId?: string | undefined;
|
|
25
|
+
}, {
|
|
26
|
+
nodeId: string;
|
|
27
|
+
size?: number | undefined;
|
|
28
|
+
traceId?: string | undefined;
|
|
29
|
+
}>;
|
|
30
|
+
export type GetPollCommandListPayload = z.infer<typeof getPollCommandListSchema>;
|
|
31
|
+
/** Enqueue a control command for `nodeId` (scheduler / admin). */
|
|
32
|
+
export declare const postCommand: (payload: {
|
|
33
|
+
nodeId: string;
|
|
34
|
+
command: CommandType;
|
|
35
|
+
traceId?: string | undefined;
|
|
36
|
+
}) => import("..").SupabaseResponse<Command> | Promise<import("..").SupabaseResponse<Command>>;
|
|
37
|
+
/** Dequeue control commands for `nodeId` (oldest first). */
|
|
38
|
+
export declare const getPollCommandList: (payload: {
|
|
39
|
+
nodeId: string;
|
|
40
|
+
size?: number | undefined;
|
|
41
|
+
traceId?: string | undefined;
|
|
42
|
+
}) => import("..").SupabaseResponse<Command[]> | Promise<import("..").SupabaseResponse<Command[]>>;
|
|
43
|
+
//# sourceMappingURL=command.api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.api.d.ts","sourceRoot":"","sources":["../../src/command/command.api.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAmB,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAO5E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAI5B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEnE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;EAInC,CAAC;AAEH,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAUjF,kEAAkE;AAClE,eAAO,MAAM,WAAW;;;;8FAsBtB,CAAC;AAIH,4DAA4D;AAC5D,eAAO,MAAM,kBAAkB;;;;kGAmB7B,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { createTarget, MAX_POLL_TARGET_LIST_SIZE, pollTargetList, validateWithSchema, } from "../core.api";
|
|
2
|
+
import { generateResponse } from "../core.interface";
|
|
3
|
+
import { createApiLogger } from "../shared/log/log-manager";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { CategoryCommand, CommandType } from "./command.interface";
|
|
6
|
+
const nodeIdSchema = z.string().trim().min(1);
|
|
7
|
+
const traceIdSchema = z.string().trim().min(1).optional();
|
|
8
|
+
// ─── Zod schemas ─────────────────────────────────────────────────────────────
|
|
9
|
+
export const postCommandSchema = z.object({
|
|
10
|
+
nodeId: nodeIdSchema,
|
|
11
|
+
command: z.nativeEnum(CommandType),
|
|
12
|
+
traceId: traceIdSchema,
|
|
13
|
+
});
|
|
14
|
+
export const getPollCommandListSchema = z.object({
|
|
15
|
+
nodeId: nodeIdSchema,
|
|
16
|
+
size: z.number().int().min(1).max(MAX_POLL_TARGET_LIST_SIZE).optional(),
|
|
17
|
+
traceId: traceIdSchema,
|
|
18
|
+
});
|
|
19
|
+
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
20
|
+
function commandNodeFilter(nodeId) {
|
|
21
|
+
return [{ field: "value", operator: "eq", value: nodeId }];
|
|
22
|
+
}
|
|
23
|
+
// ─── postCommand ─────────────────────────────────────────────────────────────
|
|
24
|
+
/** Enqueue a control command for `nodeId` (scheduler / admin). */
|
|
25
|
+
export const postCommand = validateWithSchema(postCommandSchema, "postCommandSchema")(async ({ nodeId, command, traceId }) => {
|
|
26
|
+
const logger = createApiLogger("postCommand", { traceId, nodeId });
|
|
27
|
+
const result = await createTarget({
|
|
28
|
+
payload: { nodeId, command, traceId },
|
|
29
|
+
createFn: () => ({
|
|
30
|
+
name: command,
|
|
31
|
+
value: nodeId,
|
|
32
|
+
category: CategoryCommand.COMMAND,
|
|
33
|
+
tagList: [],
|
|
34
|
+
}),
|
|
35
|
+
});
|
|
36
|
+
logger.info("Command已入隊", {
|
|
37
|
+
topic: "command",
|
|
38
|
+
context: { nodeId, command },
|
|
39
|
+
});
|
|
40
|
+
return result;
|
|
41
|
+
});
|
|
42
|
+
// ─── getPollCommandList ──────────────────────────────────────────────────────
|
|
43
|
+
/** Dequeue control commands for `nodeId` (oldest first). */
|
|
44
|
+
export const getPollCommandList = validateWithSchema(getPollCommandListSchema, "getPollCommandListSchema")(async ({ nodeId, size, traceId }) => {
|
|
45
|
+
const logger = createApiLogger("getPollCommandList", { traceId, nodeId });
|
|
46
|
+
const { data: dequeuedList = [] } = await pollTargetList({
|
|
47
|
+
category: CategoryCommand.COMMAND,
|
|
48
|
+
size: size ?? 50,
|
|
49
|
+
filterList: commandNodeFilter(nodeId),
|
|
50
|
+
ascending: true,
|
|
51
|
+
});
|
|
52
|
+
logger.info("Command", {
|
|
53
|
+
topic: "command",
|
|
54
|
+
context: { nodeId, dequeued: dequeuedList.length },
|
|
55
|
+
});
|
|
56
|
+
return generateResponse.success(dequeuedList);
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=command.api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.api.js","sourceRoot":"","sources":["../../src/command/command.api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Target } from "../core.interface";
|
|
2
|
+
export declare enum CategoryCommand {
|
|
3
|
+
COMMAND = "command"
|
|
4
|
+
}
|
|
5
|
+
export declare enum CommandType {
|
|
6
|
+
STOP_NODE = "stop-node"
|
|
7
|
+
}
|
|
8
|
+
export interface Command extends Target {
|
|
9
|
+
name: CommandType;
|
|
10
|
+
/** Node.id */
|
|
11
|
+
value: string;
|
|
12
|
+
category: CategoryCommand;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=command.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.interface.d.ts","sourceRoot":"","sources":["../../src/command/command.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,oBAAY,eAAe;IACvB,OAAO,YAAY;CACtB;AAED,oBAAY,WAAW;IACnB,SAAS,cAAc;CAC1B;AAED,MAAM,WAAW,OAAQ,SAAQ,MAAM;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,cAAc;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,eAAe,CAAC;CAC7B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export var CategoryCommand;
|
|
2
|
+
(function (CategoryCommand) {
|
|
3
|
+
CategoryCommand["COMMAND"] = "command";
|
|
4
|
+
})(CategoryCommand || (CategoryCommand = {}));
|
|
5
|
+
export var CommandType;
|
|
6
|
+
(function (CommandType) {
|
|
7
|
+
CommandType["STOP_NODE"] = "stop-node";
|
|
8
|
+
})(CommandType || (CommandType = {}));
|
|
9
|
+
//# sourceMappingURL=command.interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.interface.js","sourceRoot":"","sources":["../../src/command/command.interface.ts"],"names":[],"mappings":"AAGA,MAAM,CAAN,IAAY,eAEX;AAFD,WAAY,eAAe;IACvB,sCAAmB,CAAA;AACvB,CAAC,EAFW,eAAe,KAAf,eAAe,QAE1B;AAED,MAAM,CAAN,IAAY,WAEX;AAFD,WAAY,WAAW;IACnB,sCAAuB,CAAA;AAC3B,CAAC,EAFW,WAAW,KAAX,WAAW,QAEtB"}
|
package/dist/core.api.d.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { Target, TargetPayload } from "./core.interface";
|
|
2
2
|
import { BaseValidator } from "./core.utils";
|
|
3
3
|
import { PostgrestFilterBuilder } from "@supabase/postgrest-js";
|
|
4
|
+
import type { ZodType } from "zod";
|
|
4
5
|
export interface QueryFilter {
|
|
5
6
|
field: string;
|
|
6
7
|
operator: "eq" | "neq" | "in";
|
|
7
8
|
value: unknown;
|
|
8
9
|
}
|
|
10
|
+
export declare const MAX_TARGET_LIST_PAGE_SIZE = 100;
|
|
11
|
+
/** Alias for {@link pollTargetList} batch size cap. */
|
|
12
|
+
export declare const MAX_POLL_TARGET_LIST_SIZE = 100;
|
|
13
|
+
export type TargetFilterBuilder = PostgrestFilterBuilder<any, any, any[], "target", unknown>;
|
|
9
14
|
export interface QueryOrderBy {
|
|
10
15
|
field: string;
|
|
11
16
|
ascending: boolean;
|
|
@@ -22,18 +27,75 @@ export declare const getPossibleTarget: ({ filterList }: {
|
|
|
22
27
|
filterList: QueryFilter[];
|
|
23
28
|
}) => Promise<import("./core.interface").SupabaseResponse<Target | null>>;
|
|
24
29
|
export interface GetTargetListParams extends BaseQueryParams {
|
|
25
|
-
pageNum: number;
|
|
26
|
-
pageSize: number;
|
|
27
30
|
category: Target["category"];
|
|
31
|
+
/** 0-based page index. Required with pageSize unless `limit` is set. */
|
|
32
|
+
pageNum?: number;
|
|
33
|
+
pageSize?: number;
|
|
34
|
+
/** Shorthand for `{ pageNum: 0, pageSize: limit }`. Max {@link MAX_TARGET_LIST_PAGE_SIZE}. */
|
|
35
|
+
limit?: number;
|
|
36
|
+
/** PostgREST select clause; defaults to `"*"`. */
|
|
37
|
+
selectFields?: string;
|
|
38
|
+
/** Custom query builder; `category` and `filterList` are still applied. */
|
|
39
|
+
filterBuilder?: TargetFilterBuilder;
|
|
28
40
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Paginated target list by category. Failures throw via `handleSupabaseError` (no `{ error }` envelope).
|
|
43
|
+
*/
|
|
44
|
+
export declare const getTargetList: <T extends Target = Target>({ pageNum, pageSize, limit, category, filterList, orderBy, selectFields, filterBuilder, }: GetTargetListParams) => Promise<import("./core.interface").SupabaseResponse<T[]>>;
|
|
45
|
+
export interface ScanTargetListParams {
|
|
46
|
+
category: Target["category"];
|
|
47
|
+
filterList?: QueryFilter[];
|
|
48
|
+
orderBy?: QueryOrderBy;
|
|
49
|
+
selectFields?: string;
|
|
50
|
+
filterBuilder?: TargetFilterBuilder;
|
|
51
|
+
/** Stop after this many rows (optional guard against runaway scans). */
|
|
52
|
+
maxRows?: number;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Scan all rows matching `category` + `filterList` by paging until exhausted.
|
|
56
|
+
*
|
|
57
|
+
* Use for worker bootstrap / sync jobs that need the full matching set.
|
|
58
|
+
* For UI pagination, use {@link getTargetList} (single page, explicit pageNum).
|
|
59
|
+
*
|
|
60
|
+
* Internal batch size is fixed at {@link MAX_TARGET_LIST_PAGE_SIZE} (PostgREST max-rows).
|
|
61
|
+
* Callers receive the full merged result; they do not pass a per-request page size.
|
|
62
|
+
*
|
|
63
|
+
* Uses offset pagination (`.range`). Stable enough for small catalogs (e.g. Repo registry);
|
|
64
|
+
* for large tables under concurrent writes, consider a DB RPC or keyset pagination later.
|
|
65
|
+
*/
|
|
66
|
+
export declare const scanTargetList: <T extends Target = Target>({ category, filterList, orderBy, selectFields, filterBuilder, maxRows, }: ScanTargetListParams) => Promise<import("./core.interface").SupabaseResponse<T[]>>;
|
|
32
67
|
export interface GetTargetTotalCountParams extends BaseQueryParams {
|
|
33
68
|
category: Target["category"];
|
|
34
|
-
|
|
69
|
+
/** Custom query builder; `category` and `filterList` are still applied. */
|
|
70
|
+
filterBuilder?: TargetFilterBuilder;
|
|
35
71
|
}
|
|
36
72
|
export declare const getTargetTotalCount: ({ category, filterList, filterBuilder, }: GetTargetTotalCountParams) => Promise<import("./core.interface").SupabaseResponse<number>>;
|
|
73
|
+
export interface PollTargetListParams {
|
|
74
|
+
category: Target["category"];
|
|
75
|
+
/** Max rows to read and attempt dequeue (not offset pagination). */
|
|
76
|
+
size: number;
|
|
77
|
+
filterList?: QueryFilter[];
|
|
78
|
+
/** Order by `created_at`. Default `true` (oldest first). */
|
|
79
|
+
ascending?: boolean;
|
|
80
|
+
selectFields?: string;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Queue poll: SELECT up to `size` rows matching `category` + `filterList`, ordered by
|
|
84
|
+
* `created_at`, then DELETE each by `id`. Returns only dequeued rows (at-most-once).
|
|
85
|
+
*
|
|
86
|
+
* Delete failures (concurrent consumer) are skipped silently.
|
|
87
|
+
* Failures on the initial SELECT throw via `handleSupabaseError`.
|
|
88
|
+
*
|
|
89
|
+
* TODO(concurrency): 当前为 SELECT → 逐条 DELETE,非 DB 原子出队,多 consumer 并发时可能:
|
|
90
|
+
* - 重叠读取:两个 worker 同一批 SELECT 命中相同行,靠 DELETE 竞速,后者 skip(多数 at-most-once)
|
|
91
|
+
* - TOCTOU:SELECT 与 DELETE 之间无锁,极端情况下 DELETE 0 行仍不报错 → 可能重复计入 polled
|
|
92
|
+
* - 非 exactly-once:行已删但 worker 崩溃未处理 → 消息丢失
|
|
93
|
+
* 若同一 filter 多实例 poll(或多 worker 同 nodeId),需改为 DB 侧原子方案,例如:
|
|
94
|
+
* - RPC:`DELETE … WHERE id IN (SELECT … FOR UPDATE SKIP LOCKED) RETURNING *`
|
|
95
|
+
* - 或 claim 状态机:UPDATE … WHERE pending → DELETE/标记已消费(类似 patchClaimTask 乐观锁)
|
|
96
|
+
* - 短期加固:DELETE 后校验影响行数,0 行则不 push 到 polled
|
|
97
|
+
*/
|
|
98
|
+
export declare const pollTargetList: <T extends Target = Target>({ category, size, filterList, ascending, selectFields, }: PollTargetListParams) => Promise<import("./core.interface").SupabaseResponse<T[]>>;
|
|
37
99
|
export declare const deleteTarget: ({ id, filterList }: {
|
|
38
100
|
id: string;
|
|
39
101
|
filterList?: QueryFilter[];
|
|
@@ -105,4 +167,6 @@ export declare const createTarget: <T extends Target, P extends object>({ payloa
|
|
|
105
167
|
upsert?: boolean;
|
|
106
168
|
}) => Promise<import("./core.interface").SupabaseResponse<T>>;
|
|
107
169
|
export declare function validateWith<P extends object, V extends BaseValidator<P>>(ValidatorClass: new () => V): <R>(fn: (validPayload: P) => R) => (payload: P) => R;
|
|
170
|
+
/** Zod-based counterpart to {@link validateWith} — requires `zod` as a peer dependency. */
|
|
171
|
+
export declare function validateWithSchema<T extends ZodType>(schema: T, schemaName?: string): <R>(fn: (validPayload: T["_output"]) => R | Promise<R>) => (payload: T["_output"]) => R | Promise<R>;
|
|
108
172
|
//# sourceMappingURL=core.api.d.ts.map
|
package/dist/core.api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.api.d.ts","sourceRoot":"","sources":["../src/core.api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"core.api.d.ts","sourceRoot":"","sources":["../src/core.api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAI3E,OAAO,EAAE,aAAa,EAAuB,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAGnC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,uDAAuD;AACvD,eAAO,MAAM,yBAAyB,MAA4B,CAAC;AAKnE,MAAM,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAkG7F,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED,eAAO,MAAM,SAAS,uBAA8B;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,WAAW,EAAE,CAAA;CAAE,iEAW7F,CAAC;AAEF,eAAO,MAAM,iBAAiB,mBAA0B;IAAE,UAAU,EAAE,WAAW,EAAE,CAAA;CAAE,wEAQpF,CAAC;AAEF,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7B,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8FAA8F;IAC9F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,GAAU,CAAC,SAAS,MAAM,sGASjD,mBAAmB,8DAuBrB,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7B,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,cAAc,GAAU,CAAC,SAAS,MAAM,qFAOlD,oBAAoB,8DA8CtB,CAAC;AAEF,MAAM,WAAW,yBAA0B,SAAQ,eAAe;IAChE,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7B,2EAA2E;IAC3E,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AACD,eAAO,MAAM,mBAAmB,6CAI7B,yBAAyB,iEAe3B,CAAC;AAUF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7B,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC;IAC3B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,cAAc,GAAU,CAAC,SAAS,MAAM,qEAMlD,oBAAoB,8DA4BtB,CAAC;AAEF,eAAO,MAAM,YAAY,uBAA8B;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,WAAW,EAAE,CAAA;CAAE,kEAgBhG,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;CAC7B;AAeD,eAAO,MAAM,UAAU,YAAmB,iBAAiB,iEAa1D,CAAC;AAEF,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,eAAO,MAAM,WAAW,2BAAkC,kBAAkB,iEAsB3E,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB,CAAC,CAAC;IAC1C,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IACX;;;OAGG;IACH,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;IAC7B;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,MAAM,CAAC;IACxC;;;;;;;;OAQG;IACH,wBAAwB,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1C;AAED,eAAO,MAAM,mBAAmB,GAAU,CAAC,EAAE,CAAC,8DAK3C,yBAAyB,CAAC,CAAC,CAAC,eA+C9B,CAAC;AAEF,eAAO,MAAM,8BAA8B,2FAC+C,CAAC;AAE3F,eAAO,MAAM,oCAAoC,yCAAyC,CAAC;AAQ3F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE7D;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAExE;AAwBD;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAU,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,wEAMlE;IACD,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,CAAC,EAAE,UAAU,aAAa,CAAC,CAAC,CAAC,CAAC;IACvC,QAAQ,EAAE,CAAC,YAAY,EAAE,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC;IAChD,yFAAyF;IACzF,yBAAyB,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1C;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,4DA6CA,CAAC;AAEF,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,UAAU,CAAC,IAC5F,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,eAClB,CAAC,KAAG,CAAC,CAKzB;AAeD,2FAA2F;AAC3F,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,OAAO,EAClD,MAAM,EAAE,CAAC,EACT,UAAU,SAAW,IAGb,CAAC,MAAM,CAAC,YAAY,cAAQ,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,gCAC3B,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAQ3C"}
|
package/dist/core.api.js
CHANGED
|
@@ -1,6 +1,51 @@
|
|
|
1
1
|
import { generateResponse } from "./core.interface";
|
|
2
|
-
import {
|
|
2
|
+
import { SupabaseInitializer } from "./supabase";
|
|
3
|
+
const supabase = SupabaseInitializer.getInstance();
|
|
3
4
|
import { BaseValidator, handleSupabaseError } from "./core.utils";
|
|
5
|
+
export const MAX_TARGET_LIST_PAGE_SIZE = 100;
|
|
6
|
+
/** Alias for {@link pollTargetList} batch size cap. */
|
|
7
|
+
export const MAX_POLL_TARGET_LIST_SIZE = MAX_TARGET_LIST_PAGE_SIZE;
|
|
8
|
+
const TARGET_LIST_ORDER_FIELDS = new Set(["created_at", "name", "value", "category"]);
|
|
9
|
+
function validateTargetListPagination(pageNum, pageSize) {
|
|
10
|
+
if (!Number.isInteger(pageNum) || pageNum < 0) {
|
|
11
|
+
throw new Error(`[getTargetList] pageNum must be a non-negative integer, got ${pageNum}`);
|
|
12
|
+
}
|
|
13
|
+
if (!Number.isInteger(pageSize) || pageSize < 1 || pageSize > MAX_TARGET_LIST_PAGE_SIZE) {
|
|
14
|
+
throw new Error(`[getTargetList] pageSize must be an integer between 1 and ${MAX_TARGET_LIST_PAGE_SIZE}, got ${pageSize}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function resolveTargetListPagination(params) {
|
|
18
|
+
if (params.limit != null) {
|
|
19
|
+
validateTargetListPagination(0, params.limit);
|
|
20
|
+
return { pageNum: 0, pageSize: params.limit };
|
|
21
|
+
}
|
|
22
|
+
if (params.pageNum === undefined || params.pageSize === undefined) {
|
|
23
|
+
throw new Error("[getTargetList] Provide pageNum and pageSize, or limit.");
|
|
24
|
+
}
|
|
25
|
+
validateTargetListPagination(params.pageNum, params.pageSize);
|
|
26
|
+
return { pageNum: params.pageNum, pageSize: params.pageSize };
|
|
27
|
+
}
|
|
28
|
+
function validateTargetListOrderBy(orderBy) {
|
|
29
|
+
if (!TARGET_LIST_ORDER_FIELDS.has(orderBy.field)) {
|
|
30
|
+
throw new Error(`[getTargetList] Unsupported orderBy.field "${orderBy.field}"; allowed: ${[...TARGET_LIST_ORDER_FIELDS].join(", ")}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 构建带 category 作用域的 target 查询(供 getTargetList / getTargetTotalCount / pollTargetList 共用)。
|
|
35
|
+
*
|
|
36
|
+
* 必要性:
|
|
37
|
+
* 1. category 是 target 表的分区维度,所有列表/计数/出队都必须限定 category,避免跨类型扫表。
|
|
38
|
+
* 2. 传入 filterBuilder 时仍强制 `.eq("category", category)`,防止自定义 builder 漏加 category 导致误查或安全问题。
|
|
39
|
+
* 3. 统一 select 普通列表与 count head 两种查询形态,再叠加 filterList,避免三处复制分支逻辑。
|
|
40
|
+
*/
|
|
41
|
+
function buildCategoryScopedQuery({ category, filterList, filterBuilder, select, selectOptions, }) {
|
|
42
|
+
const base = filterBuilder != null
|
|
43
|
+
? filterBuilder.eq("category", category)
|
|
44
|
+
: selectOptions != null
|
|
45
|
+
? supabase.client.from("target").select(select, selectOptions).eq("category", category)
|
|
46
|
+
: supabase.client.from("target").select(select).eq("category", category);
|
|
47
|
+
return applyQueryFilters(base, filterList);
|
|
48
|
+
}
|
|
4
49
|
// biome-ignore lint/suspicious/noExplicitAny: PostgrestFilterBuilder is generic over schema
|
|
5
50
|
function applyQueryFilter(query, filter) {
|
|
6
51
|
switch (filter.operator) {
|
|
@@ -10,8 +55,10 @@ function applyQueryFilter(query, filter) {
|
|
|
10
55
|
return query.neq(filter.field, filter.value);
|
|
11
56
|
case "in":
|
|
12
57
|
return query.in(filter.field, filter.value);
|
|
13
|
-
default:
|
|
14
|
-
|
|
58
|
+
default: {
|
|
59
|
+
const unsupportedOperator = filter.operator;
|
|
60
|
+
throw new Error(`[applyQueryFilter] Unsupported operator: ${unsupportedOperator}`);
|
|
61
|
+
}
|
|
15
62
|
}
|
|
16
63
|
}
|
|
17
64
|
// biome-ignore lint/suspicious/noExplicitAny: PostgrestFilterBuilder is generic over schema
|
|
@@ -36,29 +83,138 @@ export const getPossibleTarget = async ({ filterList }) => {
|
|
|
36
83
|
}
|
|
37
84
|
return generateResponse.success(data);
|
|
38
85
|
};
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
86
|
+
/**
|
|
87
|
+
* Paginated target list by category. Failures throw via `handleSupabaseError` (no `{ error }` envelope).
|
|
88
|
+
*/
|
|
89
|
+
export const getTargetList = async ({ pageNum, pageSize, limit, category, filterList = [], orderBy = { field: "created_at", ascending: false }, selectFields = "*", filterBuilder, }) => {
|
|
90
|
+
const { pageNum: resolvedPageNum, pageSize: resolvedPageSize } = resolveTargetListPagination({
|
|
91
|
+
pageNum,
|
|
92
|
+
pageSize,
|
|
93
|
+
limit,
|
|
94
|
+
});
|
|
95
|
+
validateTargetListOrderBy(orderBy);
|
|
96
|
+
const query = buildCategoryScopedQuery({
|
|
97
|
+
category,
|
|
98
|
+
filterList,
|
|
99
|
+
filterBuilder,
|
|
100
|
+
select: selectFields,
|
|
101
|
+
});
|
|
42
102
|
const { data, error } = await query
|
|
43
103
|
.order(orderBy.field, { ascending: orderBy.ascending })
|
|
44
|
-
.range(
|
|
104
|
+
.range(resolvedPageNum * resolvedPageSize, (resolvedPageNum + 1) * resolvedPageSize - 1);
|
|
45
105
|
if (error) {
|
|
46
106
|
handleSupabaseError("getTargetList", error, "Failed to fetch target list.");
|
|
47
107
|
}
|
|
48
|
-
return generateResponse.success(data);
|
|
108
|
+
return generateResponse.success((data ?? []));
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Scan all rows matching `category` + `filterList` by paging until exhausted.
|
|
112
|
+
*
|
|
113
|
+
* Use for worker bootstrap / sync jobs that need the full matching set.
|
|
114
|
+
* For UI pagination, use {@link getTargetList} (single page, explicit pageNum).
|
|
115
|
+
*
|
|
116
|
+
* Internal batch size is fixed at {@link MAX_TARGET_LIST_PAGE_SIZE} (PostgREST max-rows).
|
|
117
|
+
* Callers receive the full merged result; they do not pass a per-request page size.
|
|
118
|
+
*
|
|
119
|
+
* Uses offset pagination (`.range`). Stable enough for small catalogs (e.g. Repo registry);
|
|
120
|
+
* for large tables under concurrent writes, consider a DB RPC or keyset pagination later.
|
|
121
|
+
*/
|
|
122
|
+
export const scanTargetList = async ({ category, filterList = [], orderBy = { field: "created_at", ascending: false }, selectFields = "*", filterBuilder, maxRows, }) => {
|
|
123
|
+
const batchSize = MAX_TARGET_LIST_PAGE_SIZE;
|
|
124
|
+
validateTargetListOrderBy(orderBy);
|
|
125
|
+
if (maxRows != null && (!Number.isInteger(maxRows) || maxRows < 1)) {
|
|
126
|
+
throw new Error(`[scanTargetList] maxRows must be a positive integer, got ${maxRows}`);
|
|
127
|
+
}
|
|
128
|
+
const rows = [];
|
|
129
|
+
let pageNum = 0;
|
|
130
|
+
while (true) {
|
|
131
|
+
const query = buildCategoryScopedQuery({
|
|
132
|
+
category,
|
|
133
|
+
filterList,
|
|
134
|
+
filterBuilder,
|
|
135
|
+
select: selectFields,
|
|
136
|
+
});
|
|
137
|
+
const { data, error } = await query
|
|
138
|
+
.order(orderBy.field, { ascending: orderBy.ascending })
|
|
139
|
+
.range(pageNum * batchSize, (pageNum + 1) * batchSize - 1);
|
|
140
|
+
if (error) {
|
|
141
|
+
handleSupabaseError("scanTargetList", error, "Failed to scan target list.");
|
|
142
|
+
}
|
|
143
|
+
const page = (data ?? []);
|
|
144
|
+
if (page.length === 0) {
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
rows.push(...page);
|
|
148
|
+
if (maxRows != null && rows.length >= maxRows) {
|
|
149
|
+
rows.length = maxRows;
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
if (page.length < batchSize) {
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
pageNum += 1;
|
|
156
|
+
}
|
|
157
|
+
return generateResponse.success(rows);
|
|
49
158
|
};
|
|
50
159
|
export const getTargetTotalCount = async ({ category, filterList = [], filterBuilder, }) => {
|
|
51
|
-
const query =
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
160
|
+
const query = buildCategoryScopedQuery({
|
|
161
|
+
category,
|
|
162
|
+
filterList,
|
|
163
|
+
filterBuilder,
|
|
164
|
+
select: "id",
|
|
165
|
+
selectOptions: { count: "exact", head: true },
|
|
166
|
+
});
|
|
56
167
|
const { count, error } = await query;
|
|
57
168
|
if (error) {
|
|
58
169
|
handleSupabaseError("getTargetTotalCount", error, "Failed to fetch target count.");
|
|
59
170
|
}
|
|
60
171
|
return generateResponse.success(count ?? 0);
|
|
61
172
|
};
|
|
173
|
+
function validatePollTargetListSize(size) {
|
|
174
|
+
if (!Number.isInteger(size) || size < 1 || size > MAX_POLL_TARGET_LIST_SIZE) {
|
|
175
|
+
throw new Error(`[pollTargetList] size must be an integer between 1 and ${MAX_POLL_TARGET_LIST_SIZE}, got ${size}`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Queue poll: SELECT up to `size` rows matching `category` + `filterList`, ordered by
|
|
180
|
+
* `created_at`, then DELETE each by `id`. Returns only dequeued rows (at-most-once).
|
|
181
|
+
*
|
|
182
|
+
* Delete failures (concurrent consumer) are skipped silently.
|
|
183
|
+
* Failures on the initial SELECT throw via `handleSupabaseError`.
|
|
184
|
+
*
|
|
185
|
+
* TODO(concurrency): 当前为 SELECT → 逐条 DELETE,非 DB 原子出队,多 consumer 并发时可能:
|
|
186
|
+
* - 重叠读取:两个 worker 同一批 SELECT 命中相同行,靠 DELETE 竞速,后者 skip(多数 at-most-once)
|
|
187
|
+
* - TOCTOU:SELECT 与 DELETE 之间无锁,极端情况下 DELETE 0 行仍不报错 → 可能重复计入 polled
|
|
188
|
+
* - 非 exactly-once:行已删但 worker 崩溃未处理 → 消息丢失
|
|
189
|
+
* 若同一 filter 多实例 poll(或多 worker 同 nodeId),需改为 DB 侧原子方案,例如:
|
|
190
|
+
* - RPC:`DELETE … WHERE id IN (SELECT … FOR UPDATE SKIP LOCKED) RETURNING *`
|
|
191
|
+
* - 或 claim 状态机:UPDATE … WHERE pending → DELETE/标记已消费(类似 patchClaimTask 乐观锁)
|
|
192
|
+
* - 短期加固:DELETE 后校验影响行数,0 行则不 push 到 polled
|
|
193
|
+
*/
|
|
194
|
+
export const pollTargetList = async ({ category, size, filterList = [], ascending = true, selectFields = "*", }) => {
|
|
195
|
+
validatePollTargetListSize(size);
|
|
196
|
+
const query = buildCategoryScopedQuery({
|
|
197
|
+
category,
|
|
198
|
+
filterList,
|
|
199
|
+
select: selectFields,
|
|
200
|
+
});
|
|
201
|
+
const { data, error } = await query.order("created_at", { ascending }).limit(size);
|
|
202
|
+
if (error) {
|
|
203
|
+
handleSupabaseError("pollTargetList", error, "Failed to fetch targets for poll.");
|
|
204
|
+
}
|
|
205
|
+
const candidates = (data ?? []);
|
|
206
|
+
const polled = [];
|
|
207
|
+
for (const row of candidates) {
|
|
208
|
+
try {
|
|
209
|
+
await deleteTarget({ id: row.id });
|
|
210
|
+
polled.push(row);
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
// Concurrent dequeue — row already removed
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return generateResponse.success(polled);
|
|
217
|
+
};
|
|
62
218
|
export const deleteTarget = async ({ id, filterList }) => {
|
|
63
219
|
// Check whether the target exists given filterList
|
|
64
220
|
if (filterList != null && filterList.length > 0) {
|
|
@@ -231,4 +387,26 @@ export function validateWith(ValidatorClass) {
|
|
|
231
387
|
};
|
|
232
388
|
};
|
|
233
389
|
}
|
|
390
|
+
function formatZodValidationError(schemaName, error) {
|
|
391
|
+
const errorList = error.issues
|
|
392
|
+
.map((issue, index) => {
|
|
393
|
+
const path = issue.path.length > 0 ? issue.path.join(".") : "(root)";
|
|
394
|
+
return ` ${index + 1}. ${path}: ${issue.message}`;
|
|
395
|
+
})
|
|
396
|
+
.join("\n");
|
|
397
|
+
const errorCount = error.issues.length;
|
|
398
|
+
return new Error(`[${schemaName}] Validation failed (${errorCount} error${errorCount > 1 ? "s" : ""}):\n${errorList}`);
|
|
399
|
+
}
|
|
400
|
+
/** Zod-based counterpart to {@link validateWith} — requires `zod` as a peer dependency. */
|
|
401
|
+
export function validateWithSchema(schema, schemaName = "Schema") {
|
|
402
|
+
return (fn) => {
|
|
403
|
+
return (payload) => {
|
|
404
|
+
const result = schema.safeParse(payload);
|
|
405
|
+
if (!result.success) {
|
|
406
|
+
throw formatZodValidationError(schemaName, result.error);
|
|
407
|
+
}
|
|
408
|
+
return fn(result.data);
|
|
409
|
+
};
|
|
410
|
+
};
|
|
411
|
+
}
|
|
234
412
|
//# sourceMappingURL=core.api.js.map
|
package/dist/core.api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.api.js","sourceRoot":"","sources":["../src/core.api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.api.js","sourceRoot":"","sources":["../src/core.api.ts"],"names":[],"mappings":"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"}
|