@secondlayer/shared 0.12.3 → 1.0.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/README.md +5 -7
- package/dist/src/constants.d.ts +1 -1
- package/dist/src/constants.js.map +2 -2
- package/dist/src/db/index.d.ts +3 -64
- package/dist/src/db/index.js +2 -2
- package/dist/src/db/index.js.map +2 -2
- package/dist/src/db/queries/accounts.d.ts +2 -51
- package/dist/src/db/queries/integrity.d.ts +2 -51
- package/dist/src/db/queries/marketplace.d.ts +2 -51
- package/dist/src/db/queries/projects.d.ts +2 -51
- package/dist/src/db/queries/subgraph-gaps.d.ts +2 -51
- package/dist/src/db/queries/subgraphs.d.ts +3 -51
- package/dist/src/db/queries/subgraphs.js +3 -1
- package/dist/src/db/queries/subgraphs.js.map +3 -3
- package/dist/src/db/queries/usage.d.ts +3 -56
- package/dist/src/db/queries/usage.js +1 -19
- package/dist/src/db/queries/usage.js.map +4 -4
- package/dist/src/db/queries/workflows.d.ts +7 -53
- package/dist/src/db/queries/workflows.js +130 -13
- package/dist/src/db/queries/workflows.js.map +5 -4
- package/dist/src/db/schema.d.ts +3 -64
- package/dist/src/errors.d.ts +19 -50
- package/dist/src/errors.js +28 -45
- package/dist/src/errors.js.map +3 -3
- package/dist/src/index.d.ts +25 -256
- package/dist/src/index.js +32 -234
- package/dist/src/index.js.map +7 -9
- package/dist/src/lib/plans.d.ts +0 -1
- package/dist/src/lib/plans.js +1 -2
- package/dist/src/lib/plans.js.map +3 -3
- package/dist/src/node/local-client.d.ts +2 -51
- package/dist/src/queue/listener.d.ts +1 -18
- package/dist/src/queue/listener.js +2 -12
- package/dist/src/queue/listener.js.map +3 -3
- package/dist/src/schemas/filters.d.ts +3 -3
- package/dist/src/schemas/filters.js +3 -3
- package/dist/src/schemas/filters.js.map +3 -3
- package/dist/src/schemas/index.d.ts +5 -100
- package/dist/src/schemas/index.js +4 -88
- package/dist/src/schemas/index.js.map +5 -6
- package/dist/src/schemas/subgraphs.d.ts +2 -0
- package/dist/src/schemas/subgraphs.js +2 -1
- package/dist/src/schemas/subgraphs.js.map +3 -3
- package/dist/src/schemas/workflows.d.ts +4 -0
- package/dist/src/schemas/workflows.js +5 -1
- package/dist/src/schemas/workflows.js.map +3 -3
- package/dist/src/types.d.ts +1 -53
- package/migrations/0030_workflow_source_code.ts +21 -0
- package/migrations/0031_subgraph_source_code.ts +18 -0
- package/migrations/0032_drop_streams_tables.ts +43 -0
- package/package.json +2 -14
- package/dist/src/db/queries/metrics.d.ts +0 -419
- package/dist/src/db/queries/metrics.js +0 -55
- package/dist/src/db/queries/metrics.js.map +0 -10
- package/dist/src/queue/index.d.ts +0 -50
- package/dist/src/queue/index.js +0 -184
- package/dist/src/queue/index.js.map +0 -12
- package/dist/src/queue/recovery.d.ts +0 -14
- package/dist/src/queue/recovery.js +0 -108
- package/dist/src/queue/recovery.js.map +0 -12
|
@@ -31,7 +31,113 @@ function parseJsonb(value) {
|
|
|
31
31
|
return value ?? {};
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
// src/errors.ts
|
|
35
|
+
var ErrorCodes = {
|
|
36
|
+
VALIDATION_ERROR: "VALIDATION_ERROR",
|
|
37
|
+
DATABASE_ERROR: "DATABASE_ERROR",
|
|
38
|
+
AUTHENTICATION_ERROR: "AUTHENTICATION_ERROR",
|
|
39
|
+
AUTHORIZATION_ERROR: "AUTHORIZATION_ERROR",
|
|
40
|
+
RATE_LIMIT_ERROR: "RATE_LIMIT_ERROR",
|
|
41
|
+
FORBIDDEN: "FORBIDDEN",
|
|
42
|
+
VERSION_CONFLICT: "VERSION_CONFLICT",
|
|
43
|
+
NOT_FOUND: "NOT_FOUND"
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
class SecondLayerError extends Error {
|
|
47
|
+
code;
|
|
48
|
+
cause;
|
|
49
|
+
constructor(code, message, cause) {
|
|
50
|
+
super(message);
|
|
51
|
+
this.code = code;
|
|
52
|
+
this.cause = cause;
|
|
53
|
+
this.name = this.constructor.name;
|
|
54
|
+
Error.captureStackTrace?.(this, this.constructor);
|
|
55
|
+
}
|
|
56
|
+
toJSON() {
|
|
57
|
+
return {
|
|
58
|
+
name: this.name,
|
|
59
|
+
code: this.code,
|
|
60
|
+
message: this.message,
|
|
61
|
+
stack: this.stack,
|
|
62
|
+
cause: this.cause
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
class NotFoundError extends SecondLayerError {
|
|
68
|
+
constructor(message) {
|
|
69
|
+
super("NOT_FOUND", message);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
class ValidationError extends SecondLayerError {
|
|
74
|
+
constructor(message, cause) {
|
|
75
|
+
super("VALIDATION_ERROR", message, cause);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
class DatabaseError extends SecondLayerError {
|
|
80
|
+
constructor(message, cause) {
|
|
81
|
+
super("DATABASE_ERROR", message, cause);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
class AuthenticationError extends SecondLayerError {
|
|
86
|
+
constructor(message) {
|
|
87
|
+
super("AUTHENTICATION_ERROR", message);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
class AuthorizationError extends SecondLayerError {
|
|
92
|
+
constructor(message) {
|
|
93
|
+
super("AUTHORIZATION_ERROR", message);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
class RateLimitError extends SecondLayerError {
|
|
98
|
+
constructor(message) {
|
|
99
|
+
super("RATE_LIMIT_ERROR", message);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
class ForbiddenError extends SecondLayerError {
|
|
104
|
+
constructor(message = "Forbidden") {
|
|
105
|
+
super("FORBIDDEN", message);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
class VersionConflictError extends SecondLayerError {
|
|
110
|
+
currentVersion;
|
|
111
|
+
expectedVersion;
|
|
112
|
+
constructor(currentVersion, expectedVersion) {
|
|
113
|
+
super("VERSION_CONFLICT", `Version conflict: expected ${expectedVersion}, current ${currentVersion}`);
|
|
114
|
+
this.currentVersion = currentVersion;
|
|
115
|
+
this.expectedVersion = expectedVersion;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
var CODE_TO_STATUS = {
|
|
119
|
+
AUTHENTICATION_ERROR: 401,
|
|
120
|
+
AUTHORIZATION_ERROR: 403,
|
|
121
|
+
RATE_LIMIT_ERROR: 429,
|
|
122
|
+
FORBIDDEN: 403,
|
|
123
|
+
NOT_FOUND: 404,
|
|
124
|
+
VALIDATION_ERROR: 400
|
|
125
|
+
};
|
|
126
|
+
function getErrorMessage(err) {
|
|
127
|
+
return err instanceof Error ? err.message : String(err);
|
|
128
|
+
}
|
|
129
|
+
|
|
34
130
|
// src/db/queries/workflows.ts
|
|
131
|
+
function bumpPatch(version) {
|
|
132
|
+
const parts = version.split(".");
|
|
133
|
+
if (parts.length !== 3)
|
|
134
|
+
return "1.0.1";
|
|
135
|
+
const [major, minor, patch] = parts.map((p) => Number.parseInt(p, 10));
|
|
136
|
+
if (Number.isNaN(major) || Number.isNaN(minor) || Number.isNaN(patch) || major === undefined || minor === undefined || patch === undefined) {
|
|
137
|
+
return "1.0.1";
|
|
138
|
+
}
|
|
139
|
+
return `${major}.${minor}.${patch + 1}`;
|
|
140
|
+
}
|
|
35
141
|
async function listWorkflowDefinitions(db, apiKeyIds) {
|
|
36
142
|
let query = db.selectFrom("workflow_definitions").selectAll().where("status", "!=", "deleted").orderBy("created_at", "desc");
|
|
37
143
|
if (apiKeyIds?.length) {
|
|
@@ -47,26 +153,36 @@ async function getWorkflowDefinition(db, name, apiKeyIds) {
|
|
|
47
153
|
return await query.executeTakeFirst() ?? null;
|
|
48
154
|
}
|
|
49
155
|
async function upsertWorkflowDefinition(db, data) {
|
|
156
|
+
const existing = await db.selectFrom("workflow_definitions").selectAll().where("name", "=", data.name).where("api_key_id", "=", data.apiKeyId).executeTakeFirst();
|
|
157
|
+
if (existing) {
|
|
158
|
+
if (data.expectedVersion !== undefined && existing.version !== data.expectedVersion) {
|
|
159
|
+
throw new VersionConflictError(existing.version, data.expectedVersion);
|
|
160
|
+
}
|
|
161
|
+
const nextVersion = bumpPatch(existing.version);
|
|
162
|
+
return await db.updateTable("workflow_definitions").set({
|
|
163
|
+
trigger_type: data.triggerType,
|
|
164
|
+
trigger_config: jsonb(data.triggerConfig),
|
|
165
|
+
handler_path: data.handlerPath,
|
|
166
|
+
source_code: data.sourceCode ?? existing.source_code,
|
|
167
|
+
retries_config: data.retriesConfig ? jsonb(data.retriesConfig) : null,
|
|
168
|
+
timeout_ms: data.timeoutMs ?? null,
|
|
169
|
+
version: nextVersion,
|
|
170
|
+
status: "active",
|
|
171
|
+
updated_at: new Date
|
|
172
|
+
}).where("id", "=", existing.id).returningAll().executeTakeFirstOrThrow();
|
|
173
|
+
}
|
|
50
174
|
return await db.insertInto("workflow_definitions").values({
|
|
51
175
|
name: data.name,
|
|
52
176
|
trigger_type: data.triggerType,
|
|
53
177
|
trigger_config: jsonb(data.triggerConfig),
|
|
54
178
|
handler_path: data.handlerPath,
|
|
179
|
+
source_code: data.sourceCode ?? null,
|
|
55
180
|
api_key_id: data.apiKeyId,
|
|
56
181
|
project_id: data.projectId ?? null,
|
|
57
182
|
retries_config: data.retriesConfig ? jsonb(data.retriesConfig) : null,
|
|
58
183
|
timeout_ms: data.timeoutMs ?? null,
|
|
59
|
-
version:
|
|
60
|
-
}).
|
|
61
|
-
trigger_type: data.triggerType,
|
|
62
|
-
trigger_config: jsonb(data.triggerConfig),
|
|
63
|
-
handler_path: data.handlerPath,
|
|
64
|
-
retries_config: data.retriesConfig ? jsonb(data.retriesConfig) : null,
|
|
65
|
-
timeout_ms: data.timeoutMs ?? null,
|
|
66
|
-
version: data.version ?? "1.0.0",
|
|
67
|
-
status: "active",
|
|
68
|
-
updated_at: new Date
|
|
69
|
-
})).returningAll().executeTakeFirstOrThrow();
|
|
184
|
+
version: "1.0.0"
|
|
185
|
+
}).returningAll().executeTakeFirstOrThrow();
|
|
70
186
|
}
|
|
71
187
|
async function updateWorkflowStatus(db, name, apiKeyId, status) {
|
|
72
188
|
await db.updateTable("workflow_definitions").set({ status, updated_at: new Date }).where("name", "=", name).where("api_key_id", "=", apiKeyId).execute();
|
|
@@ -108,8 +224,9 @@ export {
|
|
|
108
224
|
getWorkflowRun,
|
|
109
225
|
getWorkflowDefinition,
|
|
110
226
|
deleteWorkflowDefinition,
|
|
111
|
-
createWorkflowRun
|
|
227
|
+
createWorkflowRun,
|
|
228
|
+
bumpPatch
|
|
112
229
|
};
|
|
113
230
|
|
|
114
|
-
//# debugId=
|
|
231
|
+
//# debugId=A3CE9B539936424A64756E2164756E21
|
|
115
232
|
//# sourceMappingURL=workflows.js.map
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/db/jsonb.ts", "../src/db/queries/workflows.ts"],
|
|
3
|
+
"sources": ["../src/db/jsonb.ts", "../src/errors.ts", "../src/db/queries/workflows.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { type RawBuilder, sql } from \"kysely\";\n\n/**\n * Safely encode a JS value as a JSONB literal for Kysely inserts/updates.\n * Kysely + postgres.js double-encodes JSON when using parameterized queries\n * with ::jsonb casts. This uses sql.raw to inline a properly escaped literal.\n */\nexport function jsonb(value: unknown): RawBuilder<unknown> {\n\tconst escaped = JSON.stringify(value, (_k, v) => (typeof v === \"bigint\" ? v.toString() : v)).replace(/'/g, \"''\");\n\treturn sql`${sql.raw(`'${escaped}'::jsonb`)}`;\n}\n\n/**\n * Safely parse a JSONB value from the database.\n * Handles double-encoded strings where postgres.js returns a JSON string\n * instead of a parsed object.\n */\nexport function parseJsonb<T = unknown>(value: unknown): T {\n\tif (typeof value === \"string\") {\n\t\ttry {\n\t\t\treturn JSON.parse(value) as T;\n\t\t} catch {\n\t\t\treturn value as T;\n\t\t}\n\t}\n\treturn (value ?? {}) as T;\n}\n",
|
|
6
|
-
"
|
|
6
|
+
"export const ErrorCodes = {\n\tVALIDATION_ERROR: \"VALIDATION_ERROR\",\n\tDATABASE_ERROR: \"DATABASE_ERROR\",\n\tAUTHENTICATION_ERROR: \"AUTHENTICATION_ERROR\",\n\tAUTHORIZATION_ERROR: \"AUTHORIZATION_ERROR\",\n\tRATE_LIMIT_ERROR: \"RATE_LIMIT_ERROR\",\n\tFORBIDDEN: \"FORBIDDEN\",\n\tVERSION_CONFLICT: \"VERSION_CONFLICT\",\n\tNOT_FOUND: \"NOT_FOUND\",\n} as const;\n\nexport type ErrorCode = (typeof ErrorCodes)[keyof typeof ErrorCodes];\n\n/** Base error class for all Secondlayer errors. */\nexport class SecondLayerError extends Error {\n\tpublic code: ErrorCode;\n\tpublic override cause?: unknown;\n\n\tconstructor(code: ErrorCode, message: string, cause?: unknown) {\n\t\tsuper(message);\n\t\tthis.code = code;\n\t\tthis.cause = cause;\n\t\tthis.name = this.constructor.name;\n\t\tError.captureStackTrace?.(this, this.constructor);\n\t}\n\n\ttoJSON(): {\n\t\tname: string;\n\t\tcode: string;\n\t\tmessage: string;\n\t\tstack: string | undefined;\n\t\tcause: unknown;\n\t} {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tcode: this.code,\n\t\t\tmessage: this.message,\n\t\t\tstack: this.stack,\n\t\t\tcause: this.cause,\n\t\t};\n\t}\n}\n\nexport class NotFoundError extends SecondLayerError {\n\tconstructor(message: string) {\n\t\tsuper(\"NOT_FOUND\", message);\n\t}\n}\n\nexport class ValidationError extends SecondLayerError {\n\tconstructor(message: string, cause?: unknown) {\n\t\tsuper(\"VALIDATION_ERROR\", message, cause);\n\t}\n}\n\nexport class DatabaseError extends SecondLayerError {\n\tconstructor(message: string, cause?: unknown) {\n\t\tsuper(\"DATABASE_ERROR\", message, cause);\n\t}\n}\n\nexport class AuthenticationError extends SecondLayerError {\n\tconstructor(message: string) {\n\t\tsuper(\"AUTHENTICATION_ERROR\", message);\n\t}\n}\n\nexport class AuthorizationError extends SecondLayerError {\n\tconstructor(message: string) {\n\t\tsuper(\"AUTHORIZATION_ERROR\", message);\n\t}\n}\n\nexport class RateLimitError extends SecondLayerError {\n\tconstructor(message: string) {\n\t\tsuper(\"RATE_LIMIT_ERROR\", message);\n\t}\n}\n\nexport class ForbiddenError extends SecondLayerError {\n\tconstructor(message = \"Forbidden\") {\n\t\tsuper(\"FORBIDDEN\", message);\n\t}\n}\n\nexport class VersionConflictError extends SecondLayerError {\n\tpublic currentVersion: string;\n\tpublic expectedVersion: string;\n\n\tconstructor(currentVersion: string, expectedVersion: string) {\n\t\tsuper(\n\t\t\t\"VERSION_CONFLICT\",\n\t\t\t`Version conflict: expected ${expectedVersion}, current ${currentVersion}`,\n\t\t);\n\t\tthis.currentVersion = currentVersion;\n\t\tthis.expectedVersion = expectedVersion;\n\t}\n}\n\n/** Error code → HTTP status. Used by API middleware for code-based matching\n * (avoids cross-bundle instanceof failures from bunup class duplication). */\ntype MappedCode = Extract<\n\tErrorCode,\n\t| \"AUTHENTICATION_ERROR\"\n\t| \"AUTHORIZATION_ERROR\"\n\t| \"RATE_LIMIT_ERROR\"\n\t| \"FORBIDDEN\"\n\t| \"NOT_FOUND\"\n\t| \"VALIDATION_ERROR\"\n>;\nexport const CODE_TO_STATUS: Record<MappedCode, 400 | 401 | 403 | 404 | 429> = {\n\tAUTHENTICATION_ERROR: 401,\n\tAUTHORIZATION_ERROR: 403,\n\tRATE_LIMIT_ERROR: 429,\n\tFORBIDDEN: 403,\n\tNOT_FOUND: 404,\n\tVALIDATION_ERROR: 400,\n} as const;\n\nexport function getErrorMessage(err: unknown): string {\n\treturn err instanceof Error ? err.message : String(err);\n}\n",
|
|
7
|
+
"import type { Kysely } from \"kysely\";\nimport { VersionConflictError } from \"../../errors.ts\";\nimport { jsonb } from \"../jsonb.ts\";\nimport type {\n\tDatabase,\n\tWorkflowDefinition,\n\tWorkflowRun,\n\tWorkflowStep,\n} from \"../types.ts\";\n\n/** Bump the patch digit of a semver string. Falls back to \"1.0.1\" on malformed input. */\nexport function bumpPatch(version: string): string {\n\tconst parts = version.split(\".\");\n\tif (parts.length !== 3) return \"1.0.1\";\n\tconst [major, minor, patch] = parts.map((p) => Number.parseInt(p, 10));\n\tif (\n\t\tNumber.isNaN(major) ||\n\t\tNumber.isNaN(minor) ||\n\t\tNumber.isNaN(patch) ||\n\t\tmajor === undefined ||\n\t\tminor === undefined ||\n\t\tpatch === undefined\n\t) {\n\t\treturn \"1.0.1\";\n\t}\n\treturn `${major}.${minor}.${patch + 1}`;\n}\n\n// ── Definitions ──────────────────────────────────────────────────────\n\nexport async function listWorkflowDefinitions(\n\tdb: Kysely<Database>,\n\tapiKeyIds?: string[],\n): Promise<WorkflowDefinition[]> {\n\tlet query = db\n\t\t.selectFrom(\"workflow_definitions\")\n\t\t.selectAll()\n\t\t.where(\"status\", \"!=\", \"deleted\")\n\t\t.orderBy(\"created_at\", \"desc\");\n\n\tif (apiKeyIds?.length) {\n\t\tquery = query.where(\"api_key_id\", \"in\", apiKeyIds);\n\t}\n\n\treturn await query.execute();\n}\n\nexport async function getWorkflowDefinition(\n\tdb: Kysely<Database>,\n\tname: string,\n\tapiKeyIds?: string[],\n): Promise<WorkflowDefinition | null> {\n\tlet query = db\n\t\t.selectFrom(\"workflow_definitions\")\n\t\t.selectAll()\n\t\t.where(\"name\", \"=\", name);\n\n\tif (apiKeyIds?.length) {\n\t\tquery = query.where(\"api_key_id\", \"in\", apiKeyIds);\n\t}\n\n\treturn (await query.executeTakeFirst()) ?? null;\n}\n\nexport async function upsertWorkflowDefinition(\n\tdb: Kysely<Database>,\n\tdata: {\n\t\tname: string;\n\t\ttriggerType: string;\n\t\ttriggerConfig: Record<string, unknown>;\n\t\thandlerPath: string;\n\t\tapiKeyId: string;\n\t\tprojectId?: string;\n\t\tretriesConfig?: Record<string, unknown>;\n\t\ttimeoutMs?: number;\n\t\tsourceCode?: string;\n\t\texpectedVersion?: string;\n\t},\n): Promise<WorkflowDefinition> {\n\tconst existing = await db\n\t\t.selectFrom(\"workflow_definitions\")\n\t\t.selectAll()\n\t\t.where(\"name\", \"=\", data.name)\n\t\t.where(\"api_key_id\", \"=\", data.apiKeyId)\n\t\t.executeTakeFirst();\n\n\tif (existing) {\n\t\tif (\n\t\t\tdata.expectedVersion !== undefined &&\n\t\t\texisting.version !== data.expectedVersion\n\t\t) {\n\t\t\tthrow new VersionConflictError(existing.version, data.expectedVersion);\n\t\t}\n\n\t\tconst nextVersion = bumpPatch(existing.version);\n\n\t\treturn await db\n\t\t\t.updateTable(\"workflow_definitions\")\n\t\t\t.set({\n\t\t\t\ttrigger_type: data.triggerType,\n\t\t\t\ttrigger_config: jsonb(data.triggerConfig) as unknown as string,\n\t\t\t\thandler_path: data.handlerPath,\n\t\t\t\tsource_code: data.sourceCode ?? existing.source_code,\n\t\t\t\tretries_config: data.retriesConfig\n\t\t\t\t\t? (jsonb(data.retriesConfig) as unknown as string)\n\t\t\t\t\t: null,\n\t\t\t\ttimeout_ms: data.timeoutMs ?? null,\n\t\t\t\tversion: nextVersion,\n\t\t\t\tstatus: \"active\",\n\t\t\t\tupdated_at: new Date(),\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", existing.id)\n\t\t\t.returningAll()\n\t\t\t.executeTakeFirstOrThrow();\n\t}\n\n\treturn await db\n\t\t.insertInto(\"workflow_definitions\")\n\t\t.values({\n\t\t\tname: data.name,\n\t\t\ttrigger_type: data.triggerType,\n\t\t\ttrigger_config: jsonb(data.triggerConfig) as unknown as string,\n\t\t\thandler_path: data.handlerPath,\n\t\t\tsource_code: data.sourceCode ?? null,\n\t\t\tapi_key_id: data.apiKeyId,\n\t\t\tproject_id: data.projectId ?? null,\n\t\t\tretries_config: data.retriesConfig\n\t\t\t\t? (jsonb(data.retriesConfig) as unknown as string)\n\t\t\t\t: null,\n\t\t\ttimeout_ms: data.timeoutMs ?? null,\n\t\t\tversion: \"1.0.0\",\n\t\t})\n\t\t.returningAll()\n\t\t.executeTakeFirstOrThrow();\n}\n\nexport async function updateWorkflowStatus(\n\tdb: Kysely<Database>,\n\tname: string,\n\tapiKeyId: string,\n\tstatus: string,\n): Promise<void> {\n\tawait db\n\t\t.updateTable(\"workflow_definitions\")\n\t\t.set({ status, updated_at: new Date() })\n\t\t.where(\"name\", \"=\", name)\n\t\t.where(\"api_key_id\", \"=\", apiKeyId)\n\t\t.execute();\n}\n\nexport async function deleteWorkflowDefinition(\n\tdb: Kysely<Database>,\n\tname: string,\n\tapiKeyId: string,\n): Promise<void> {\n\tawait db\n\t\t.updateTable(\"workflow_definitions\")\n\t\t.set({ status: \"deleted\", updated_at: new Date() })\n\t\t.where(\"name\", \"=\", name)\n\t\t.where(\"api_key_id\", \"=\", apiKeyId)\n\t\t.execute();\n}\n\n// ── Runs ─────────────────────────────────────────────────────────────\n\nexport async function createWorkflowRun(\n\tdb: Kysely<Database>,\n\tdata: {\n\t\tdefinitionId: string;\n\t\ttriggerType: string;\n\t\ttriggerData?: Record<string, unknown>;\n\t\tdedupKey?: string;\n\t},\n): Promise<WorkflowRun> {\n\treturn await db\n\t\t.insertInto(\"workflow_runs\")\n\t\t.values({\n\t\t\tdefinition_id: data.definitionId,\n\t\t\ttrigger_type: data.triggerType,\n\t\t\ttrigger_data: data.triggerData\n\t\t\t\t? (jsonb(data.triggerData) as unknown as string)\n\t\t\t\t: null,\n\t\t\tdedup_key: data.dedupKey ?? null,\n\t\t})\n\t\t.returningAll()\n\t\t.executeTakeFirstOrThrow();\n}\n\nexport async function getWorkflowRun(\n\tdb: Kysely<Database>,\n\trunId: string,\n): Promise<WorkflowRun | null> {\n\treturn (\n\t\t(await db\n\t\t\t.selectFrom(\"workflow_runs\")\n\t\t\t.selectAll()\n\t\t\t.where(\"id\", \"=\", runId)\n\t\t\t.executeTakeFirst()) ?? null\n\t);\n}\n\nexport async function listWorkflowRuns(\n\tdb: Kysely<Database>,\n\tdefinitionId: string,\n\tparams?: { status?: string; limit?: number; offset?: number },\n): Promise<WorkflowRun[]> {\n\tlet query = db\n\t\t.selectFrom(\"workflow_runs\")\n\t\t.selectAll()\n\t\t.where(\"definition_id\", \"=\", definitionId)\n\t\t.orderBy(\"created_at\", \"desc\");\n\n\tif (params?.status) {\n\t\tquery = query.where(\"status\", \"=\", params.status);\n\t}\n\n\tquery = query.limit(params?.limit ?? 20);\n\n\tif (params?.offset) {\n\t\tquery = query.offset(params.offset);\n\t}\n\n\treturn await query.execute();\n}\n\n// ── Steps ────────────────────────────────────────────────────────────\n\nexport async function getWorkflowSteps(\n\tdb: Kysely<Database>,\n\trunId: string,\n): Promise<WorkflowStep[]> {\n\treturn await db\n\t\t.selectFrom(\"workflow_steps\")\n\t\t.selectAll()\n\t\t.where(\"run_id\", \"=\", runId)\n\t\t.orderBy(\"step_index\", \"asc\")\n\t\t.execute();\n}\n"
|
|
7
8
|
],
|
|
8
|
-
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAOO,SAAS,KAAK,CAAC,OAAqC;AAAA,EAC1D,MAAM,UAAU,KAAK,UAAU,OAAO,CAAC,IAAI,MAAO,OAAO,MAAM,WAAW,EAAE,SAAS,IAAI,CAAE,EAAE,QAAQ,MAAM,IAAI;AAAA,EAC/G,OAAO,MAAM,IAAI,IAAI,IAAI,iBAAiB;AAAA;AAQpC,SAAS,UAAuB,CAAC,OAAmB;AAAA,EAC1D,IAAI,OAAO,UAAU,UAAU;AAAA,IAC9B,IAAI;AAAA,MACH,OAAO,KAAK,MAAM,KAAK;AAAA,MACtB,MAAM;AAAA,MACP,OAAO;AAAA;AAAA,EAET;AAAA,EACA,OAAQ,SAAS,CAAC;AAAA;;;
|
|
9
|
-
"debugId": "
|
|
9
|
+
"mappings": "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",
|
|
10
|
+
"debugId": "A3CE9B539936424A64756E2164756E21",
|
|
10
11
|
"names": []
|
|
11
12
|
}
|
package/dist/src/db/schema.d.ts
CHANGED
|
@@ -31,40 +31,6 @@ interface EventsTable {
|
|
|
31
31
|
data: unknown;
|
|
32
32
|
created_at: Generated<Date>;
|
|
33
33
|
}
|
|
34
|
-
interface StreamsTable {
|
|
35
|
-
id: Generated<string>;
|
|
36
|
-
name: string;
|
|
37
|
-
status: Generated<string>;
|
|
38
|
-
filters: unknown;
|
|
39
|
-
options: Generated<unknown>;
|
|
40
|
-
endpoint_url: string;
|
|
41
|
-
signing_secret: string | null;
|
|
42
|
-
api_key_id: string;
|
|
43
|
-
project_id: string | null;
|
|
44
|
-
created_at: Generated<Date>;
|
|
45
|
-
updated_at: Generated<Date>;
|
|
46
|
-
}
|
|
47
|
-
interface StreamMetricsTable {
|
|
48
|
-
stream_id: string;
|
|
49
|
-
last_triggered_at: Date | null;
|
|
50
|
-
last_triggered_block: number | null;
|
|
51
|
-
total_deliveries: Generated<number>;
|
|
52
|
-
failed_deliveries: Generated<number>;
|
|
53
|
-
error_message: string | null;
|
|
54
|
-
}
|
|
55
|
-
interface JobsTable {
|
|
56
|
-
id: Generated<string>;
|
|
57
|
-
stream_id: string;
|
|
58
|
-
block_height: number;
|
|
59
|
-
status: Generated<string>;
|
|
60
|
-
attempts: Generated<number>;
|
|
61
|
-
locked_at: Date | null;
|
|
62
|
-
locked_by: string | null;
|
|
63
|
-
error: string | null;
|
|
64
|
-
backfill: Generated<boolean>;
|
|
65
|
-
created_at: Generated<Date>;
|
|
66
|
-
completed_at: Date | null;
|
|
67
|
-
}
|
|
68
34
|
interface IndexProgressTable {
|
|
69
35
|
network: string;
|
|
70
36
|
last_indexed_block: Generated<number>;
|
|
@@ -72,19 +38,6 @@ interface IndexProgressTable {
|
|
|
72
38
|
highest_seen_block: Generated<number>;
|
|
73
39
|
updated_at: Generated<Date>;
|
|
74
40
|
}
|
|
75
|
-
interface DeliveriesTable {
|
|
76
|
-
id: Generated<string>;
|
|
77
|
-
stream_id: string;
|
|
78
|
-
job_id: string | null;
|
|
79
|
-
block_height: number;
|
|
80
|
-
status: string;
|
|
81
|
-
status_code: number | null;
|
|
82
|
-
response_time_ms: number | null;
|
|
83
|
-
attempts: Generated<number>;
|
|
84
|
-
error: string | null;
|
|
85
|
-
payload: unknown;
|
|
86
|
-
created_at: Generated<Date>;
|
|
87
|
-
}
|
|
88
41
|
interface SubgraphsTable {
|
|
89
42
|
id: Generated<string>;
|
|
90
43
|
name: string;
|
|
@@ -105,6 +58,7 @@ interface SubgraphsTable {
|
|
|
105
58
|
api_key_id: string | null;
|
|
106
59
|
account_id: string;
|
|
107
60
|
handler_code: string | null;
|
|
61
|
+
source_code: string | null;
|
|
108
62
|
project_id: string | null;
|
|
109
63
|
is_public: Generated<boolean>;
|
|
110
64
|
tags: Generated<string[]>;
|
|
@@ -303,6 +257,7 @@ interface WorkflowDefinitionsTable {
|
|
|
303
257
|
trigger_type: string;
|
|
304
258
|
trigger_config: unknown;
|
|
305
259
|
handler_path: string;
|
|
260
|
+
source_code: string | null;
|
|
306
261
|
retries_config: unknown | null;
|
|
307
262
|
timeout_ms: number | null;
|
|
308
263
|
api_key_id: string;
|
|
@@ -373,11 +328,7 @@ interface Database {
|
|
|
373
328
|
blocks: BlocksTable;
|
|
374
329
|
transactions: TransactionsTable;
|
|
375
330
|
events: EventsTable;
|
|
376
|
-
streams: StreamsTable;
|
|
377
|
-
stream_metrics: StreamMetricsTable;
|
|
378
|
-
jobs: JobsTable;
|
|
379
331
|
index_progress: IndexProgressTable;
|
|
380
|
-
deliveries: DeliveriesTable;
|
|
381
332
|
subgraphs: SubgraphsTable;
|
|
382
333
|
api_keys: ApiKeysTable;
|
|
383
334
|
accounts: AccountsTable;
|
|
@@ -414,21 +365,9 @@ type UpdateTransaction = Updateable<TransactionsTable>;
|
|
|
414
365
|
type Event = Selectable<EventsTable>;
|
|
415
366
|
type InsertEvent = Insertable<EventsTable>;
|
|
416
367
|
type UpdateEvent = Updateable<EventsTable>;
|
|
417
|
-
type Stream = Selectable<StreamsTable>;
|
|
418
|
-
type InsertStream = Insertable<StreamsTable>;
|
|
419
|
-
type UpdateStreamRow = Updateable<StreamsTable>;
|
|
420
|
-
type StreamMetrics = Selectable<StreamMetricsTable>;
|
|
421
|
-
type InsertStreamMetrics = Insertable<StreamMetricsTable>;
|
|
422
|
-
type UpdateStreamMetrics = Updateable<StreamMetricsTable>;
|
|
423
|
-
type Job = Selectable<JobsTable>;
|
|
424
|
-
type InsertJob = Insertable<JobsTable>;
|
|
425
|
-
type UpdateJob = Updateable<JobsTable>;
|
|
426
368
|
type IndexProgress = Selectable<IndexProgressTable>;
|
|
427
369
|
type InsertIndexProgress = Insertable<IndexProgressTable>;
|
|
428
370
|
type UpdateIndexProgress = Updateable<IndexProgressTable>;
|
|
429
|
-
type Delivery = Selectable<DeliveriesTable>;
|
|
430
|
-
type InsertDelivery = Insertable<DeliveriesTable>;
|
|
431
|
-
type UpdateDelivery = Updateable<DeliveriesTable>;
|
|
432
371
|
type Subgraph = Selectable<SubgraphsTable>;
|
|
433
372
|
type InsertSubgraph = Insertable<SubgraphsTable>;
|
|
434
373
|
type UpdateSubgraph = Updateable<SubgraphsTable>;
|
|
@@ -480,4 +419,4 @@ type InsertChatSession = Insertable<ChatSessionsTable>;
|
|
|
480
419
|
type UpdateChatSession = Updateable<ChatSessionsTable>;
|
|
481
420
|
type ChatMessage = Selectable<ChatMessagesTable>;
|
|
482
421
|
type InsertChatMessage = Insertable<ChatMessagesTable>;
|
|
483
|
-
export { WorkflowStepsTable, WorkflowStep, WorkflowSchedulesTable, WorkflowSchedule, WorkflowRunsTable, WorkflowRun, WorkflowQueueTable, WorkflowQueueItem, WorkflowDefinitionsTable, WorkflowDefinition, WorkflowCursorsTable, WorkflowCursor, WaitlistTable, UsageSnapshotsTable, UsageSnapshot, UsageDailyTable, UsageDaily, UpdateWorkflowStep, UpdateWorkflowSchedule, UpdateWorkflowRun, UpdateWorkflowDefinition, UpdateTransaction, UpdateSubgraph,
|
|
422
|
+
export { WorkflowStepsTable, WorkflowStep, WorkflowSchedulesTable, WorkflowSchedule, WorkflowRunsTable, WorkflowRun, WorkflowQueueTable, WorkflowQueueItem, WorkflowDefinitionsTable, WorkflowDefinition, WorkflowCursorsTable, WorkflowCursor, WaitlistTable, UsageSnapshotsTable, UsageSnapshot, UsageDailyTable, UsageDaily, UpdateWorkflowStep, UpdateWorkflowSchedule, UpdateWorkflowRun, UpdateWorkflowDefinition, UpdateTransaction, UpdateSubgraph, UpdateProject, UpdateIndexProgress, UpdateEvent, UpdateChatSession, UpdateBlock, UpdateApiKey, TransactionsTable, Transaction, TeamMembersTable, TeamMember, TeamInvitationsTable, TeamInvitation, SubgraphsTable, SubgraphUsageDailyTable, SubgraphUsageDaily, SubgraphTableSnapshotsTable, SubgraphProcessingStatsTable, SubgraphHealthSnapshotsTable, SubgraphHealthSnapshot, SubgraphGapsTable, SubgraphGap, Subgraph, SessionsTable, Session, ProjectsTable, Project, MagicLinksTable, MagicLink, InsertWorkflowStep, InsertWorkflowSchedule, InsertWorkflowRun, InsertWorkflowQueueItem, InsertWorkflowDefinition, InsertTransaction, InsertTeamMember, InsertTeamInvitation, InsertSubgraphUsageDaily, InsertSubgraphHealthSnapshot, InsertSubgraphGap, InsertSubgraph, InsertSession, InsertProject, InsertMagicLink, InsertIndexProgress, InsertEvent, InsertChatSession, InsertChatMessage, InsertBlock, InsertApiKey, InsertAccountInsight, InsertAccountAgentRun, InsertAccount, IndexProgressTable, IndexProgress, EventsTable, Event, Database, ChatSessionsTable, ChatSession, ChatMessagesTable, ChatMessage, BlocksTable, Block, ApiKeysTable, ApiKey, AccountsTable, AccountInsightsTable, AccountInsight, AccountAgentRunsTable, AccountAgentRun, Account };
|
package/dist/src/errors.d.ts
CHANGED
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
declare const ErrorCodes: {
|
|
2
|
-
readonly STREAM_NOT_FOUND: "STREAM_NOT_FOUND"
|
|
3
2
|
readonly VALIDATION_ERROR: "VALIDATION_ERROR"
|
|
4
3
|
readonly DATABASE_ERROR: "DATABASE_ERROR"
|
|
5
|
-
readonly DELIVERY_ERROR: "DELIVERY_ERROR"
|
|
6
|
-
readonly FILTER_EVALUATION_ERROR: "FILTER_EVALUATION_ERROR"
|
|
7
4
|
readonly AUTHENTICATION_ERROR: "AUTHENTICATION_ERROR"
|
|
8
5
|
readonly AUTHORIZATION_ERROR: "AUTHORIZATION_ERROR"
|
|
9
6
|
readonly RATE_LIMIT_ERROR: "RATE_LIMIT_ERROR"
|
|
10
7
|
readonly FORBIDDEN: "FORBIDDEN"
|
|
8
|
+
readonly VERSION_CONFLICT: "VERSION_CONFLICT"
|
|
9
|
+
readonly NOT_FOUND: "NOT_FOUND"
|
|
11
10
|
};
|
|
12
11
|
type ErrorCode = (typeof ErrorCodes)[keyof typeof ErrorCodes];
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
*/
|
|
16
|
-
declare class StreamsError extends Error {
|
|
12
|
+
/** Base error class for all Secondlayer errors. */
|
|
13
|
+
declare class SecondLayerError extends Error {
|
|
17
14
|
code: ErrorCode;
|
|
18
15
|
cause?: unknown;
|
|
19
16
|
constructor(code: ErrorCode, message: string, cause?: unknown);
|
|
@@ -25,63 +22,35 @@ declare class StreamsError extends Error {
|
|
|
25
22
|
cause: unknown
|
|
26
23
|
};
|
|
27
24
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
*/
|
|
31
|
-
declare class StreamNotFoundError extends StreamsError {
|
|
32
|
-
constructor(streamId: string);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Validation error for invalid input
|
|
36
|
-
*/
|
|
37
|
-
declare class ValidationError extends StreamsError {
|
|
38
|
-
constructor(message: string, cause?: unknown);
|
|
25
|
+
declare class NotFoundError extends SecondLayerError {
|
|
26
|
+
constructor(message: string);
|
|
39
27
|
}
|
|
40
|
-
|
|
41
|
-
* Database operation error
|
|
42
|
-
*/
|
|
43
|
-
declare class DatabaseError extends StreamsError {
|
|
28
|
+
declare class ValidationError extends SecondLayerError {
|
|
44
29
|
constructor(message: string, cause?: unknown);
|
|
45
30
|
}
|
|
46
|
-
|
|
47
|
-
* Delivery error
|
|
48
|
-
*/
|
|
49
|
-
declare class DeliveryError extends StreamsError {
|
|
50
|
-
statusCode?: number;
|
|
51
|
-
constructor(message: string, statusCode?: number, cause?: unknown);
|
|
52
|
-
toJSON(): {
|
|
53
|
-
name: string
|
|
54
|
-
code: string
|
|
55
|
-
message: string
|
|
56
|
-
stack: string | undefined
|
|
57
|
-
cause: unknown
|
|
58
|
-
statusCode: number | undefined
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Filter evaluation error
|
|
63
|
-
*/
|
|
64
|
-
declare class FilterEvaluationError extends StreamsError {
|
|
31
|
+
declare class DatabaseError extends SecondLayerError {
|
|
65
32
|
constructor(message: string, cause?: unknown);
|
|
66
33
|
}
|
|
67
|
-
declare class AuthenticationError extends
|
|
34
|
+
declare class AuthenticationError extends SecondLayerError {
|
|
68
35
|
constructor(message: string);
|
|
69
36
|
}
|
|
70
|
-
declare class AuthorizationError extends
|
|
37
|
+
declare class AuthorizationError extends SecondLayerError {
|
|
71
38
|
constructor(message: string);
|
|
72
39
|
}
|
|
73
|
-
declare class RateLimitError extends
|
|
40
|
+
declare class RateLimitError extends SecondLayerError {
|
|
74
41
|
constructor(message: string);
|
|
75
42
|
}
|
|
76
|
-
declare class ForbiddenError extends
|
|
43
|
+
declare class ForbiddenError extends SecondLayerError {
|
|
77
44
|
constructor(message?: string);
|
|
78
45
|
}
|
|
46
|
+
declare class VersionConflictError extends SecondLayerError {
|
|
47
|
+
currentVersion: string;
|
|
48
|
+
expectedVersion: string;
|
|
49
|
+
constructor(currentVersion: string, expectedVersion: string);
|
|
50
|
+
}
|
|
79
51
|
/** Error code → HTTP status. Used by API middleware for code-based matching
|
|
80
52
|
* (avoids cross-bundle instanceof failures from bunup class duplication). */
|
|
81
|
-
type MappedCode = Extract<ErrorCode, "AUTHENTICATION_ERROR" | "AUTHORIZATION_ERROR" | "RATE_LIMIT_ERROR" | "FORBIDDEN" | "
|
|
53
|
+
type MappedCode = Extract<ErrorCode, "AUTHENTICATION_ERROR" | "AUTHORIZATION_ERROR" | "RATE_LIMIT_ERROR" | "FORBIDDEN" | "NOT_FOUND" | "VALIDATION_ERROR">;
|
|
82
54
|
declare const CODE_TO_STATUS: Record<MappedCode, 400 | 401 | 403 | 404 | 429>;
|
|
83
|
-
/**
|
|
84
|
-
* Safely extract error message from unknown error value
|
|
85
|
-
*/
|
|
86
55
|
declare function getErrorMessage(err: unknown): string;
|
|
87
|
-
export { getErrorMessage,
|
|
56
|
+
export { getErrorMessage, VersionConflictError, ValidationError, SecondLayerError, RateLimitError, NotFoundError, ForbiddenError, ErrorCodes, ErrorCode, DatabaseError, CODE_TO_STATUS, AuthorizationError, AuthenticationError };
|
package/dist/src/errors.js
CHANGED
|
@@ -16,18 +16,17 @@ var __export = (target, all) => {
|
|
|
16
16
|
|
|
17
17
|
// src/errors.ts
|
|
18
18
|
var ErrorCodes = {
|
|
19
|
-
STREAM_NOT_FOUND: "STREAM_NOT_FOUND",
|
|
20
19
|
VALIDATION_ERROR: "VALIDATION_ERROR",
|
|
21
20
|
DATABASE_ERROR: "DATABASE_ERROR",
|
|
22
|
-
DELIVERY_ERROR: "DELIVERY_ERROR",
|
|
23
|
-
FILTER_EVALUATION_ERROR: "FILTER_EVALUATION_ERROR",
|
|
24
21
|
AUTHENTICATION_ERROR: "AUTHENTICATION_ERROR",
|
|
25
22
|
AUTHORIZATION_ERROR: "AUTHORIZATION_ERROR",
|
|
26
23
|
RATE_LIMIT_ERROR: "RATE_LIMIT_ERROR",
|
|
27
|
-
FORBIDDEN: "FORBIDDEN"
|
|
24
|
+
FORBIDDEN: "FORBIDDEN",
|
|
25
|
+
VERSION_CONFLICT: "VERSION_CONFLICT",
|
|
26
|
+
NOT_FOUND: "NOT_FOUND"
|
|
28
27
|
};
|
|
29
28
|
|
|
30
|
-
class
|
|
29
|
+
class SecondLayerError extends Error {
|
|
31
30
|
code;
|
|
32
31
|
cause;
|
|
33
32
|
constructor(code, message, cause) {
|
|
@@ -48,78 +47,63 @@ class StreamsError extends Error {
|
|
|
48
47
|
}
|
|
49
48
|
}
|
|
50
49
|
|
|
51
|
-
class
|
|
52
|
-
constructor(
|
|
53
|
-
super("
|
|
50
|
+
class NotFoundError extends SecondLayerError {
|
|
51
|
+
constructor(message) {
|
|
52
|
+
super("NOT_FOUND", message);
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
55
|
|
|
57
|
-
class ValidationError extends
|
|
56
|
+
class ValidationError extends SecondLayerError {
|
|
58
57
|
constructor(message, cause) {
|
|
59
58
|
super("VALIDATION_ERROR", message, cause);
|
|
60
59
|
}
|
|
61
60
|
}
|
|
62
61
|
|
|
63
|
-
class DatabaseError extends
|
|
62
|
+
class DatabaseError extends SecondLayerError {
|
|
64
63
|
constructor(message, cause) {
|
|
65
64
|
super("DATABASE_ERROR", message, cause);
|
|
66
65
|
}
|
|
67
66
|
}
|
|
68
67
|
|
|
69
|
-
class
|
|
70
|
-
statusCode;
|
|
71
|
-
constructor(message, statusCode, cause) {
|
|
72
|
-
super("DELIVERY_ERROR", message, cause);
|
|
73
|
-
this.statusCode = statusCode;
|
|
74
|
-
}
|
|
75
|
-
toJSON() {
|
|
76
|
-
const base = super.toJSON();
|
|
77
|
-
return {
|
|
78
|
-
name: base.name,
|
|
79
|
-
code: base.code,
|
|
80
|
-
message: base.message,
|
|
81
|
-
stack: base.stack,
|
|
82
|
-
cause: base.cause,
|
|
83
|
-
statusCode: this.statusCode
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
class FilterEvaluationError extends StreamsError {
|
|
89
|
-
constructor(message, cause) {
|
|
90
|
-
super("FILTER_EVALUATION_ERROR", message, cause);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
class AuthenticationError extends StreamsError {
|
|
68
|
+
class AuthenticationError extends SecondLayerError {
|
|
95
69
|
constructor(message) {
|
|
96
70
|
super("AUTHENTICATION_ERROR", message);
|
|
97
71
|
}
|
|
98
72
|
}
|
|
99
73
|
|
|
100
|
-
class AuthorizationError extends
|
|
74
|
+
class AuthorizationError extends SecondLayerError {
|
|
101
75
|
constructor(message) {
|
|
102
76
|
super("AUTHORIZATION_ERROR", message);
|
|
103
77
|
}
|
|
104
78
|
}
|
|
105
79
|
|
|
106
|
-
class RateLimitError extends
|
|
80
|
+
class RateLimitError extends SecondLayerError {
|
|
107
81
|
constructor(message) {
|
|
108
82
|
super("RATE_LIMIT_ERROR", message);
|
|
109
83
|
}
|
|
110
84
|
}
|
|
111
85
|
|
|
112
|
-
class ForbiddenError extends
|
|
86
|
+
class ForbiddenError extends SecondLayerError {
|
|
113
87
|
constructor(message = "Forbidden") {
|
|
114
88
|
super("FORBIDDEN", message);
|
|
115
89
|
}
|
|
116
90
|
}
|
|
91
|
+
|
|
92
|
+
class VersionConflictError extends SecondLayerError {
|
|
93
|
+
currentVersion;
|
|
94
|
+
expectedVersion;
|
|
95
|
+
constructor(currentVersion, expectedVersion) {
|
|
96
|
+
super("VERSION_CONFLICT", `Version conflict: expected ${expectedVersion}, current ${currentVersion}`);
|
|
97
|
+
this.currentVersion = currentVersion;
|
|
98
|
+
this.expectedVersion = expectedVersion;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
117
101
|
var CODE_TO_STATUS = {
|
|
118
102
|
AUTHENTICATION_ERROR: 401,
|
|
119
103
|
AUTHORIZATION_ERROR: 403,
|
|
120
104
|
RATE_LIMIT_ERROR: 429,
|
|
121
105
|
FORBIDDEN: 403,
|
|
122
|
-
|
|
106
|
+
NOT_FOUND: 404,
|
|
123
107
|
VALIDATION_ERROR: 400
|
|
124
108
|
};
|
|
125
109
|
function getErrorMessage(err) {
|
|
@@ -127,19 +111,18 @@ function getErrorMessage(err) {
|
|
|
127
111
|
}
|
|
128
112
|
export {
|
|
129
113
|
getErrorMessage,
|
|
114
|
+
VersionConflictError,
|
|
130
115
|
ValidationError,
|
|
131
|
-
|
|
132
|
-
StreamNotFoundError,
|
|
116
|
+
SecondLayerError,
|
|
133
117
|
RateLimitError,
|
|
118
|
+
NotFoundError,
|
|
134
119
|
ForbiddenError,
|
|
135
|
-
FilterEvaluationError,
|
|
136
120
|
ErrorCodes,
|
|
137
|
-
DeliveryError,
|
|
138
121
|
DatabaseError,
|
|
139
122
|
CODE_TO_STATUS,
|
|
140
123
|
AuthorizationError,
|
|
141
124
|
AuthenticationError
|
|
142
125
|
};
|
|
143
126
|
|
|
144
|
-
//# debugId=
|
|
127
|
+
//# debugId=49DAFCD22173A4BC64756E2164756E21
|
|
145
128
|
//# sourceMappingURL=errors.js.map
|