@secondlayer/shared 11.4.3 → 11.5.1
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 +4 -4
- package/dist/src/archive/derived-stage-report.d.ts +2 -2
- package/dist/src/archive/derived-stage-report.js.map +1 -1
- package/dist/src/archive/instance-diagnosis.js +2 -2
- package/dist/src/archive/instance-diagnosis.js.map +2 -2
- package/dist/src/archive/range-digest.d.ts +25 -25
- package/dist/src/archive/semantic-digest-builder.d.ts +25 -25
- package/dist/src/coverage/index.d.ts +25 -25
- package/dist/src/coverage/index.js.map +1 -1
- package/dist/src/crypto/secondlayer-webhook.d.ts +2 -2
- package/dist/src/crypto/secondlayer-webhook.js.map +1 -1
- package/dist/src/crypto/secrets.js.map +1 -1
- package/dist/src/db/index.d.ts +37 -37
- package/dist/src/db/index.js +4 -4
- package/dist/src/db/index.js.map +3 -3
- package/dist/src/db/queries/chain-reorgs.d.ts +25 -25
- package/dist/src/db/queries/chain-reorgs.js +4 -4
- package/dist/src/db/queries/chain-reorgs.js.map +3 -3
- package/dist/src/db/queries/contracts.d.ts +25 -25
- package/dist/src/db/queries/instance.d.ts +25 -25
- package/dist/src/db/queries/integrity.d.ts +25 -25
- package/dist/src/db/queries/subgraph-gaps.d.ts +25 -25
- package/dist/src/db/queries/subgraph-operations.d.ts +25 -25
- package/dist/src/db/queries/subgraphs.d.ts +25 -25
- package/dist/src/db/queries/subgraphs.js +4 -4
- package/dist/src/db/queries/subgraphs.js.map +3 -3
- package/dist/src/db/queries/sync-scope.d.ts +25 -25
- package/dist/src/db/queries/{subscriptions.d.ts → webhooks.d.ts} +58 -58
- package/dist/src/db/queries/{subscriptions.js → webhooks.js} +38 -38
- package/dist/src/db/queries/webhooks.js.map +13 -0
- package/dist/src/db/schema.d.ts +34 -34
- package/dist/src/index.d.ts +107 -107
- package/dist/src/index.js +51 -54
- package/dist/src/index.js.map +6 -6
- package/dist/src/leader.d.ts +4 -4
- package/dist/src/leader.js +3 -3
- package/dist/src/leader.js.map +3 -3
- package/dist/src/node/local-client.d.ts +25 -25
- package/dist/src/queue/listener.d.ts +2 -2
- package/dist/src/queue/listener.js.map +1 -1
- package/dist/src/runtime/index.js +2 -6
- package/dist/src/runtime/index.js.map +4 -4
- package/dist/src/schemas/index.d.ts +61 -61
- package/dist/src/schemas/index.js +48 -51
- package/dist/src/schemas/index.js.map +5 -5
- package/dist/src/schemas/subgraphs.d.ts +2 -2
- package/dist/src/schemas/subgraphs.js.map +1 -1
- package/dist/src/schemas/{subscriptions.d.ts → webhooks.d.ts} +63 -63
- package/dist/src/schemas/{subscriptions.js → webhooks.js} +49 -52
- package/dist/src/schemas/webhooks.js.map +10 -0
- package/migrations/0126_rename_subscriptions_to_webhooks.ts +96 -0
- package/migrations/0127_rename_webhook_catalog_names.ts +55 -0
- package/package.json +8 -8
- package/dist/src/db/queries/subscriptions.js.map +0 -13
- package/dist/src/schemas/subscriptions.js.map +0 -10
package/dist/src/index.js
CHANGED
|
@@ -778,9 +778,9 @@ var TABLE_TO_DB = {
|
|
|
778
778
|
play_provisions: "target",
|
|
779
779
|
account_spend_caps: "target",
|
|
780
780
|
processed_stripe_events: "target",
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
781
|
+
webhooks: "target",
|
|
782
|
+
webhook_outbox: "target",
|
|
783
|
+
webhook_deliveries: "target",
|
|
784
784
|
trigger_evaluator_state: "target",
|
|
785
785
|
subgraphs: "target",
|
|
786
786
|
subgraph_operations: "target",
|
|
@@ -1118,9 +1118,9 @@ var DeploySubgraphRequestSchema = z2.object({
|
|
|
1118
1118
|
dryRun: z2.boolean().optional()
|
|
1119
1119
|
});
|
|
1120
1120
|
|
|
1121
|
-
// src/schemas/
|
|
1121
|
+
// src/schemas/webhooks.ts
|
|
1122
1122
|
import { z as z3 } from "zod";
|
|
1123
|
-
var
|
|
1123
|
+
var WEBHOOK_FORMATS = [
|
|
1124
1124
|
"standard-webhooks",
|
|
1125
1125
|
"inngest",
|
|
1126
1126
|
"trigger",
|
|
@@ -1128,14 +1128,14 @@ var SUBSCRIPTION_FORMATS = [
|
|
|
1128
1128
|
"cloudevents",
|
|
1129
1129
|
"raw"
|
|
1130
1130
|
];
|
|
1131
|
-
var
|
|
1131
|
+
var WEBHOOK_RUNTIMES = [
|
|
1132
1132
|
"inngest",
|
|
1133
1133
|
"trigger",
|
|
1134
1134
|
"cloudflare",
|
|
1135
1135
|
"node"
|
|
1136
1136
|
];
|
|
1137
|
-
var
|
|
1138
|
-
var
|
|
1137
|
+
var WEBHOOK_STATUSES = ["active", "paused", "error"];
|
|
1138
|
+
var WEBHOOK_FILTER_OPERATORS = [
|
|
1139
1139
|
"eq",
|
|
1140
1140
|
"neq",
|
|
1141
1141
|
"gt",
|
|
@@ -1147,26 +1147,23 @@ var SUBSCRIPTION_FILTER_OPERATORS = [
|
|
|
1147
1147
|
var webhookUrl = z3.string().trim().min(1).refine((value) => value.startsWith("http://") || value.startsWith("https://"), "must be an http(s) URL");
|
|
1148
1148
|
var name = z3.string().trim().min(1).max(128);
|
|
1149
1149
|
var resourceName = z3.string().trim().min(1).max(128);
|
|
1150
|
-
var
|
|
1151
|
-
var
|
|
1152
|
-
var
|
|
1153
|
-
var
|
|
1154
|
-
var
|
|
1155
|
-
z3.object({ eq:
|
|
1156
|
-
z3.object({ neq:
|
|
1150
|
+
var WebhookStatusSchema = z3.enum(WEBHOOK_STATUSES);
|
|
1151
|
+
var WebhookFormatSchema = z3.enum(WEBHOOK_FORMATS);
|
|
1152
|
+
var WebhookRuntimeSchema = z3.enum(WEBHOOK_RUNTIMES);
|
|
1153
|
+
var WebhookFilterPrimitiveSchema = z3.union([z3.string(), z3.number().finite(), z3.boolean()]);
|
|
1154
|
+
var WebhookFilterOperatorSchema = z3.union([
|
|
1155
|
+
z3.object({ eq: WebhookFilterPrimitiveSchema }).strict(),
|
|
1156
|
+
z3.object({ neq: WebhookFilterPrimitiveSchema }).strict(),
|
|
1157
1157
|
z3.object({ gt: z3.union([z3.string(), z3.number().finite()]) }).strict(),
|
|
1158
1158
|
z3.object({ gte: z3.union([z3.string(), z3.number().finite()]) }).strict(),
|
|
1159
1159
|
z3.object({ lt: z3.union([z3.string(), z3.number().finite()]) }).strict(),
|
|
1160
1160
|
z3.object({ lte: z3.union([z3.string(), z3.number().finite()]) }).strict(),
|
|
1161
1161
|
z3.object({
|
|
1162
|
-
in: z3.array(
|
|
1162
|
+
in: z3.array(WebhookFilterPrimitiveSchema).min(1)
|
|
1163
1163
|
}).strict()
|
|
1164
1164
|
]);
|
|
1165
|
-
var
|
|
1166
|
-
|
|
1167
|
-
SubscriptionFilterOperatorSchema
|
|
1168
|
-
]);
|
|
1169
|
-
var SubscriptionFilterSchema = z3.record(z3.string().min(1), SubscriptionFilterClauseSchema);
|
|
1165
|
+
var WebhookFilterClauseSchema = z3.union([WebhookFilterPrimitiveSchema, WebhookFilterOperatorSchema]);
|
|
1166
|
+
var WebhookFilterSchema = z3.record(z3.string().min(1), WebhookFilterClauseSchema);
|
|
1170
1167
|
var CHAIN_TRIGGER_TYPES = [
|
|
1171
1168
|
"stx_transfer",
|
|
1172
1169
|
"stx_mint",
|
|
@@ -1311,15 +1308,15 @@ var CHAIN_TRIGGER_FIELDS = Object.fromEntries(ChainTriggerSchema._zod.def.option
|
|
|
1311
1308
|
const type = shape.type._zod.def.values[0];
|
|
1312
1309
|
return [type, Object.keys(shape).filter((k) => k !== "type")];
|
|
1313
1310
|
}));
|
|
1314
|
-
var
|
|
1311
|
+
var CreateWebhookRequestSchema = z3.object({
|
|
1315
1312
|
name,
|
|
1316
1313
|
subgraphName: resourceName.optional(),
|
|
1317
1314
|
tableName: resourceName.optional(),
|
|
1318
|
-
filter:
|
|
1315
|
+
filter: WebhookFilterSchema.optional(),
|
|
1319
1316
|
triggers: ChainTriggersSchema.optional(),
|
|
1320
1317
|
url: webhookUrl,
|
|
1321
|
-
format:
|
|
1322
|
-
runtime:
|
|
1318
|
+
format: WebhookFormatSchema.default("standard-webhooks"),
|
|
1319
|
+
runtime: WebhookRuntimeSchema.nullable().optional(),
|
|
1323
1320
|
authConfig: z3.record(z3.string(), z3.unknown()).optional(),
|
|
1324
1321
|
maxRetries: z3.number().int().min(0).max(100).optional(),
|
|
1325
1322
|
timeoutMs: z3.number().int().min(100).max(300000).optional(),
|
|
@@ -1333,17 +1330,17 @@ var CreateSubscriptionRequestSchema = z3.object({
|
|
|
1333
1330
|
return true;
|
|
1334
1331
|
return v.subgraphName !== undefined && v.tableName !== undefined;
|
|
1335
1332
|
}, {
|
|
1336
|
-
message: "provide either { subgraphName, tableName } for a subgraph
|
|
1333
|
+
message: "provide either { subgraphName, tableName } for a subgraph webhook OR { triggers } for a chain webhook — not both"
|
|
1337
1334
|
}).refine((v) => v.filter === undefined || v.triggers === undefined, {
|
|
1338
|
-
message: "`filter` applies to subgraph
|
|
1335
|
+
message: "`filter` applies to subgraph webhooks; chain webhooks use `triggers`",
|
|
1339
1336
|
path: ["filter"]
|
|
1340
1337
|
});
|
|
1341
|
-
var
|
|
1338
|
+
var UpdateWebhookRequestSchema = z3.object({
|
|
1342
1339
|
name: name.optional(),
|
|
1343
1340
|
url: webhookUrl.optional(),
|
|
1344
|
-
filter:
|
|
1345
|
-
format:
|
|
1346
|
-
runtime:
|
|
1341
|
+
filter: WebhookFilterSchema.optional(),
|
|
1342
|
+
format: WebhookFormatSchema.optional(),
|
|
1343
|
+
runtime: WebhookRuntimeSchema.nullable().optional(),
|
|
1347
1344
|
authConfig: z3.record(z3.string(), z3.unknown()).optional(),
|
|
1348
1345
|
maxRetries: z3.number().int().min(0).max(100).optional(),
|
|
1349
1346
|
timeoutMs: z3.number().int().min(100).max(300000).optional(),
|
|
@@ -1351,7 +1348,7 @@ var UpdateSubscriptionRequestSchema = z3.object({
|
|
|
1351
1348
|
}).refine((value) => Object.keys(value).length > 0, {
|
|
1352
1349
|
message: "At least one field must be provided"
|
|
1353
1350
|
});
|
|
1354
|
-
var
|
|
1351
|
+
var ReplayWebhookRequestSchema = z3.object({
|
|
1355
1352
|
fromBlock: z3.number().int().nonnegative(),
|
|
1356
1353
|
toBlock: z3.number().int().nonnegative(),
|
|
1357
1354
|
force: z3.string().trim().min(1).max(64).optional()
|
|
@@ -1445,7 +1442,7 @@ var COMPARISON_COLUMN_TYPES = new Set(["uint", "int", "timestamp"]);
|
|
|
1445
1442
|
function formatIssuePath(path) {
|
|
1446
1443
|
return path.length > 0 ? `${path.map(String).join(".")}: ` : "";
|
|
1447
1444
|
}
|
|
1448
|
-
function
|
|
1445
|
+
function formatWebhookSchemaErrors(error) {
|
|
1449
1446
|
return error.issues.map((issue) => `${formatIssuePath(issue.path)}${issue.message}`);
|
|
1450
1447
|
}
|
|
1451
1448
|
function operatorForClause(clause) {
|
|
@@ -1454,7 +1451,7 @@ function operatorForClause(clause) {
|
|
|
1454
1451
|
}
|
|
1455
1452
|
return Object.keys(clause)[0] ?? "eq";
|
|
1456
1453
|
}
|
|
1457
|
-
function
|
|
1454
|
+
function validateWebhookFilterForTable(input) {
|
|
1458
1455
|
const errors = [];
|
|
1459
1456
|
const table = input.tables[input.tableName];
|
|
1460
1457
|
if (!table) {
|
|
@@ -1464,9 +1461,9 @@ function validateSubscriptionFilterForTable(input) {
|
|
|
1464
1461
|
}
|
|
1465
1462
|
if (input.filter === undefined)
|
|
1466
1463
|
return errors;
|
|
1467
|
-
const parsed =
|
|
1464
|
+
const parsed = WebhookFilterSchema.safeParse(input.filter);
|
|
1468
1465
|
if (!parsed.success) {
|
|
1469
|
-
return
|
|
1466
|
+
return formatWebhookSchemaErrors(parsed.error);
|
|
1470
1467
|
}
|
|
1471
1468
|
for (const [field, clause] of Object.entries(parsed.data)) {
|
|
1472
1469
|
const column = table.columns[field];
|
|
@@ -1476,7 +1473,7 @@ function validateSubscriptionFilterForTable(input) {
|
|
|
1476
1473
|
}
|
|
1477
1474
|
const columnType = typeof column.type === "string" ? column.type.toLowerCase() : "";
|
|
1478
1475
|
if (!SCALAR_COLUMN_TYPES.has(columnType)) {
|
|
1479
|
-
errors.push(`Filter field "${field}" has unsupported type "${columnType || "unknown"}";
|
|
1476
|
+
errors.push(`Filter field "${field}" has unsupported type "${columnType || "unknown"}"; webhook filters require scalar columns.`);
|
|
1480
1477
|
continue;
|
|
1481
1478
|
}
|
|
1482
1479
|
const operator = operatorForClause(clause);
|
|
@@ -2078,7 +2075,7 @@ function blockEndCursor(height) {
|
|
|
2078
2075
|
};
|
|
2079
2076
|
}
|
|
2080
2077
|
export {
|
|
2081
|
-
|
|
2078
|
+
validateWebhookFilterForTable,
|
|
2082
2079
|
sql2 as sql,
|
|
2083
2080
|
setMigrationRole,
|
|
2084
2081
|
parseJsonb,
|
|
@@ -2104,7 +2101,7 @@ export {
|
|
|
2104
2101
|
generateSubgraphOpenApi,
|
|
2105
2102
|
generateSubgraphMarkdown,
|
|
2106
2103
|
generateSubgraphAgentSchema,
|
|
2107
|
-
|
|
2104
|
+
formatWebhookSchemaErrors,
|
|
2108
2105
|
finalizedBurnHeight,
|
|
2109
2106
|
encodeStreamsCursor,
|
|
2110
2107
|
exports_ed25519 as ed25519,
|
|
@@ -2115,30 +2112,30 @@ export {
|
|
|
2115
2112
|
blockEndCursor,
|
|
2116
2113
|
assertDbSplit,
|
|
2117
2114
|
applicationDatabaseUrl,
|
|
2115
|
+
WebhookStatusSchema,
|
|
2116
|
+
WebhookRuntimeSchema,
|
|
2117
|
+
WebhookFormatSchema,
|
|
2118
|
+
WebhookFilterSchema,
|
|
2119
|
+
WebhookFilterPrimitiveSchema,
|
|
2120
|
+
WebhookFilterOperatorSchema,
|
|
2121
|
+
WebhookFilterClauseSchema,
|
|
2122
|
+
WEBHOOK_STATUSES,
|
|
2123
|
+
WEBHOOK_RUNTIMES,
|
|
2124
|
+
WEBHOOK_FORMATS,
|
|
2125
|
+
WEBHOOK_FILTER_OPERATORS,
|
|
2118
2126
|
VersionConflictError,
|
|
2119
2127
|
ValidationError,
|
|
2120
|
-
|
|
2128
|
+
UpdateWebhookRequestSchema,
|
|
2121
2129
|
TenantSuspendedError,
|
|
2122
2130
|
TABLE_TO_DB,
|
|
2123
|
-
SubscriptionStatusSchema,
|
|
2124
|
-
SubscriptionRuntimeSchema,
|
|
2125
|
-
SubscriptionFormatSchema,
|
|
2126
|
-
SubscriptionFilterSchema,
|
|
2127
|
-
SubscriptionFilterPrimitiveSchema,
|
|
2128
|
-
SubscriptionFilterOperatorSchema,
|
|
2129
|
-
SubscriptionFilterClauseSchema,
|
|
2130
2131
|
SecondLayerError,
|
|
2131
|
-
SUBSCRIPTION_STATUSES,
|
|
2132
|
-
SUBSCRIPTION_RUNTIMES,
|
|
2133
|
-
SUBSCRIPTION_FORMATS,
|
|
2134
|
-
SUBSCRIPTION_FILTER_OPERATORS,
|
|
2135
2132
|
STREAMS_TO_DB_EVENT_TYPES,
|
|
2136
2133
|
STREAMS_EVENT_TYPES,
|
|
2137
2134
|
STREAMS_DB_EVENT_TYPES,
|
|
2138
2135
|
SOURCE_READ_TYPES,
|
|
2139
2136
|
SOURCE_READ_PKS,
|
|
2140
2137
|
SOURCE_READ_COLUMNS,
|
|
2141
|
-
|
|
2138
|
+
ReplayWebhookRequestSchema,
|
|
2142
2139
|
RateLimitError,
|
|
2143
2140
|
PaymentRequiredError,
|
|
2144
2141
|
NotFoundError,
|
|
@@ -2151,7 +2148,7 @@ export {
|
|
|
2151
2148
|
DEFAULT_BTC_CONFIRMATIONS,
|
|
2152
2149
|
DECODED_EVENT_TYPES2 as DECODED_EVENT_TYPES,
|
|
2153
2150
|
DB_TO_STREAMS_EVENT_TYPE,
|
|
2154
|
-
|
|
2151
|
+
CreateWebhookRequestSchema,
|
|
2155
2152
|
CODE_TO_STATUS,
|
|
2156
2153
|
CHAIN_TRIGGER_TYPES,
|
|
2157
2154
|
CHAIN_TRIGGER_FIELDS,
|
|
@@ -2159,5 +2156,5 @@ export {
|
|
|
2159
2156
|
AuthenticationError
|
|
2160
2157
|
};
|
|
2161
2158
|
|
|
2162
|
-
//# debugId=
|
|
2159
|
+
//# debugId=D3AB339890A27E2964756E2164756E21
|
|
2163
2160
|
//# sourceMappingURL=index.js.map
|