@voyantjs/db 0.19.0 → 0.21.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/dist/lib/typeid-prefixes.d.ts +21 -0
- package/dist/lib/typeid-prefixes.d.ts.map +1 -1
- package/dist/lib/typeid-prefixes.js +44 -0
- package/dist/lib/typeid-prefixes.js.map +1 -1
- package/dist/schema/infra/index.d.ts +2 -0
- package/dist/schema/infra/index.d.ts.map +1 -1
- package/dist/schema/infra/index.js +2 -0
- package/dist/schema/infra/index.js.map +1 -1
- package/dist/schema/infra/rate_limit_buckets.d.ts +138 -0
- package/dist/schema/infra/rate_limit_buckets.d.ts.map +1 -0
- package/dist/schema/infra/rate_limit_buckets.js +52 -0
- package/dist/schema/infra/rate_limit_buckets.js.map +1 -0
- package/dist/schema/infra/webhook_deliveries.d.ts +572 -0
- package/dist/schema/infra/webhook_deliveries.d.ts.map +1 -0
- package/dist/schema/infra/webhook_deliveries.js +136 -0
- package/dist/schema/infra/webhook_deliveries.js.map +1 -0
- package/package.json +2 -2
|
@@ -15,6 +15,7 @@ export declare const PREFIXES: {
|
|
|
15
15
|
readonly connection_secrets: "secr";
|
|
16
16
|
readonly webhook_subscriptions: "hksub";
|
|
17
17
|
readonly webhook_deliveries: "whde";
|
|
18
|
+
readonly rate_limit_buckets: "rlbk";
|
|
18
19
|
readonly domains: "dom";
|
|
19
20
|
readonly email_domain_records: "emdr";
|
|
20
21
|
readonly idempotency_keys: "ikey";
|
|
@@ -93,6 +94,7 @@ export declare const PREFIXES: {
|
|
|
93
94
|
readonly activity_participants: "actp";
|
|
94
95
|
readonly custom_field_definitions: "cfdf";
|
|
95
96
|
readonly custom_field_values: "cfvl";
|
|
97
|
+
readonly person_payment_methods: "pmth";
|
|
96
98
|
readonly invoices: "inv";
|
|
97
99
|
readonly payment_instruments: "pmin";
|
|
98
100
|
readonly vouchers: "vch";
|
|
@@ -147,6 +149,8 @@ export declare const PREFIXES: {
|
|
|
147
149
|
readonly channel_release_schedules: "chrs";
|
|
148
150
|
readonly channel_remittance_exceptions: "chre";
|
|
149
151
|
readonly channel_settlement_approvals: "chap";
|
|
152
|
+
readonly channel_availability_push_intents: "cavi";
|
|
153
|
+
readonly channel_content_push_intents: "ccpi";
|
|
150
154
|
readonly facilities: "fac";
|
|
151
155
|
readonly facility_contacts: "fcon";
|
|
152
156
|
readonly facility_features: "ffea";
|
|
@@ -285,6 +289,23 @@ export declare const PREFIXES: {
|
|
|
285
289
|
readonly charter_yachts: "chry";
|
|
286
290
|
readonly charter_suites: "chst";
|
|
287
291
|
readonly charter_schedule_days: "chrd";
|
|
292
|
+
readonly catalog_overlay: "ovly";
|
|
293
|
+
readonly booking_catalog_snapshot: "bcsn";
|
|
294
|
+
readonly catalog_drift_event: "cdrf";
|
|
295
|
+
readonly catalog_quotes: "cquo";
|
|
296
|
+
readonly catalog_sourced_entries: "cse";
|
|
297
|
+
readonly catalog_content_drift_event: "cnde";
|
|
298
|
+
readonly catalog_demo_inventory: "cdmi";
|
|
299
|
+
readonly catalog_demo_orders: "cdmo";
|
|
300
|
+
readonly booking_drafts: "bdrf";
|
|
301
|
+
readonly tax_classes: "txcl";
|
|
302
|
+
readonly tax_policy_profiles: "txpp";
|
|
303
|
+
readonly tax_policy_rules: "txpr";
|
|
304
|
+
readonly product_pax_pricing_tiers: "ppt";
|
|
305
|
+
readonly availability_holds: "avhd";
|
|
306
|
+
readonly workflow_runs: "wfrn";
|
|
307
|
+
readonly workflow_run_steps: "wfrs";
|
|
308
|
+
readonly operator_settings: "opset";
|
|
288
309
|
};
|
|
289
310
|
export type PrefixKey = keyof typeof PREFIXES;
|
|
290
311
|
export type PrefixValue = (typeof PREFIXES)[PrefixKey];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeid-prefixes.d.ts","sourceRoot":"","sources":["../../src/lib/typeid-prefixes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ
|
|
1
|
+
{"version":3,"file":"typeid-prefixes.d.ts","sourceRoot":"","sources":["../../src/lib/typeid-prefixes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyVX,CAAA;AAEV,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,QAAQ,CAAA;AAC7C,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAA"}
|
|
@@ -17,6 +17,7 @@ export const PREFIXES = {
|
|
|
17
17
|
// --- INFRA ---
|
|
18
18
|
webhook_subscriptions: "hksub",
|
|
19
19
|
webhook_deliveries: "whde",
|
|
20
|
+
rate_limit_buckets: "rlbk",
|
|
20
21
|
domains: "dom",
|
|
21
22
|
email_domain_records: "emdr",
|
|
22
23
|
idempotency_keys: "ikey",
|
|
@@ -96,6 +97,7 @@ export const PREFIXES = {
|
|
|
96
97
|
activity_participants: "actp",
|
|
97
98
|
custom_field_definitions: "cfdf",
|
|
98
99
|
custom_field_values: "cfvl",
|
|
100
|
+
person_payment_methods: "pmth",
|
|
99
101
|
invoices: "inv",
|
|
100
102
|
payment_instruments: "pmin",
|
|
101
103
|
vouchers: "vch",
|
|
@@ -150,6 +152,8 @@ export const PREFIXES = {
|
|
|
150
152
|
channel_release_schedules: "chrs",
|
|
151
153
|
channel_remittance_exceptions: "chre",
|
|
152
154
|
channel_settlement_approvals: "chap",
|
|
155
|
+
channel_availability_push_intents: "cavi",
|
|
156
|
+
channel_content_push_intents: "ccpi",
|
|
153
157
|
facilities: "fac",
|
|
154
158
|
facility_contacts: "fcon",
|
|
155
159
|
facility_features: "ffea",
|
|
@@ -296,5 +300,45 @@ export const PREFIXES = {
|
|
|
296
300
|
charter_yachts: "chry",
|
|
297
301
|
charter_suites: "chst",
|
|
298
302
|
charter_schedule_days: "chrd",
|
|
303
|
+
// --- CATALOG (cross-vertical infrastructure) ---
|
|
304
|
+
catalog_overlay: "ovly",
|
|
305
|
+
booking_catalog_snapshot: "bcsn",
|
|
306
|
+
catalog_drift_event: "cdrf",
|
|
307
|
+
catalog_quotes: "cquo",
|
|
308
|
+
catalog_sourced_entries: "cse",
|
|
309
|
+
catalog_content_drift_event: "cnde",
|
|
310
|
+
catalog_demo_inventory: "cdmi",
|
|
311
|
+
catalog_demo_orders: "cdmo",
|
|
312
|
+
// Resumable session-bound draft for the unified booking journey.
|
|
313
|
+
// Per docs/architecture/booking-journey-architecture.md §5.7 +
|
|
314
|
+
// §12.10 (chose option B: ship as a sibling table to
|
|
315
|
+
// booking_session_states).
|
|
316
|
+
booking_drafts: "bdrf",
|
|
317
|
+
// --- FINANCE (extensions for journey tax computation) ---
|
|
318
|
+
// Per booking-journey-architecture §9. The classes are the per-
|
|
319
|
+
// product treatment decision; tax_regimes remains the
|
|
320
|
+
// jurisdictional rate catalog and is unchanged.
|
|
321
|
+
tax_classes: "txcl",
|
|
322
|
+
tax_policy_profiles: "txpp",
|
|
323
|
+
tax_policy_rules: "txpr",
|
|
324
|
+
// Per-product per-occupancy rate tier table for non-cruise
|
|
325
|
+
// verticals. Cruises keep their specialized cruise_prices table.
|
|
326
|
+
product_pax_pricing_tiers: "ppt",
|
|
327
|
+
// --- AVAILABILITY (extension for booking-journey holds) ---
|
|
328
|
+
// Soft holds against availability_slots tied to booking_drafts.
|
|
329
|
+
// Per booking-journey-architecture §5.7 + §6 — the doc proposes
|
|
330
|
+
// bookingAllocations for owned holds, but those require a
|
|
331
|
+
// booking_id FK and journey holds are pre-booking. A dedicated
|
|
332
|
+
// table is the cleanest fit.
|
|
333
|
+
availability_holds: "avhd",
|
|
334
|
+
// Workflow runs — observability for in-process workflows (the
|
|
335
|
+
// catalog-checkout finalize spine, follow-up scheduled jobs, etc).
|
|
336
|
+
// Lives outside the durable @voyantjs/workflows orchestrator so
|
|
337
|
+
// edge-compatible templates can record runs without spinning up
|
|
338
|
+
// a separate Node process.
|
|
339
|
+
workflow_runs: "wfrn",
|
|
340
|
+
workflow_run_steps: "wfrs",
|
|
341
|
+
// --- Operator-template-local settings ---
|
|
342
|
+
operator_settings: "opset",
|
|
299
343
|
};
|
|
300
344
|
//# sourceMappingURL=typeid-prefixes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeid-prefixes.js","sourceRoot":"","sources":["../../src/lib/typeid-prefixes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"typeid-prefixes.js","sourceRoot":"","sources":["../../src/lib/typeid-prefixes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schema/infra/index.ts"],"names":[],"mappings":"AACA,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schema/infra/index.ts"],"names":[],"mappings":"AACA,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// audit_log: REMOVED - migrated to Tinybird (audit_log.datasource)
|
|
2
2
|
export * from "./domains.js";
|
|
3
3
|
export * from "./idempotency_keys.js";
|
|
4
|
+
export * from "./rate_limit_buckets.js";
|
|
5
|
+
export * from "./webhook_deliveries.js";
|
|
4
6
|
export * from "./webhook_subscriptions.js";
|
|
5
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schema/infra/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schema/infra/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Generic token-bucket rate-limit primitive.
|
|
4
|
+
*
|
|
5
|
+
* Any module that needs token-bucket rate limiting (channel push,
|
|
6
|
+
* operator-configured webhooks, third-party integrations, future use
|
|
7
|
+
* cases) uses this table with its own scope key. Channel push wraps it
|
|
8
|
+
* with channel-specific scope construction:
|
|
9
|
+
*
|
|
10
|
+
* "channel:" + channelId + ":" + connectionId
|
|
11
|
+
*
|
|
12
|
+
* The `acquireToken(scope, config, priority)` helper does the atomic
|
|
13
|
+
* refill + decrement in one round-trip; see distribution's rate-limit
|
|
14
|
+
* service for the canonical implementation.
|
|
15
|
+
*
|
|
16
|
+
* Per docs/architecture/channel-push-architecture.md §14.2.
|
|
17
|
+
*/
|
|
18
|
+
export declare const infraRateLimitBucketsTable: Omit<import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
19
|
+
name: "rate_limit_buckets";
|
|
20
|
+
schema: undefined;
|
|
21
|
+
columns: {
|
|
22
|
+
scope: import("drizzle-orm/pg-core").PgColumn<{
|
|
23
|
+
name: "scope";
|
|
24
|
+
tableName: "rate_limit_buckets";
|
|
25
|
+
dataType: "string";
|
|
26
|
+
columnType: "PgText";
|
|
27
|
+
data: string;
|
|
28
|
+
driverParam: string;
|
|
29
|
+
notNull: true;
|
|
30
|
+
hasDefault: false;
|
|
31
|
+
isPrimaryKey: true;
|
|
32
|
+
isAutoincrement: false;
|
|
33
|
+
hasRuntimeDefault: false;
|
|
34
|
+
enumValues: [string, ...string[]];
|
|
35
|
+
baseColumn: never;
|
|
36
|
+
identity: undefined;
|
|
37
|
+
generated: undefined;
|
|
38
|
+
}, {}, {}>;
|
|
39
|
+
tokensAvailable: import("drizzle-orm/pg-core").PgColumn<{
|
|
40
|
+
name: "tokens_available";
|
|
41
|
+
tableName: "rate_limit_buckets";
|
|
42
|
+
dataType: "string";
|
|
43
|
+
columnType: "PgNumeric";
|
|
44
|
+
data: string;
|
|
45
|
+
driverParam: string;
|
|
46
|
+
notNull: true;
|
|
47
|
+
hasDefault: false;
|
|
48
|
+
isPrimaryKey: false;
|
|
49
|
+
isAutoincrement: false;
|
|
50
|
+
hasRuntimeDefault: false;
|
|
51
|
+
enumValues: undefined;
|
|
52
|
+
baseColumn: never;
|
|
53
|
+
identity: undefined;
|
|
54
|
+
generated: undefined;
|
|
55
|
+
}, {}, {}>;
|
|
56
|
+
capacity: import("drizzle-orm/pg-core").PgColumn<{
|
|
57
|
+
name: "capacity";
|
|
58
|
+
tableName: "rate_limit_buckets";
|
|
59
|
+
dataType: "string";
|
|
60
|
+
columnType: "PgNumeric";
|
|
61
|
+
data: string;
|
|
62
|
+
driverParam: string;
|
|
63
|
+
notNull: true;
|
|
64
|
+
hasDefault: false;
|
|
65
|
+
isPrimaryKey: false;
|
|
66
|
+
isAutoincrement: false;
|
|
67
|
+
hasRuntimeDefault: false;
|
|
68
|
+
enumValues: undefined;
|
|
69
|
+
baseColumn: never;
|
|
70
|
+
identity: undefined;
|
|
71
|
+
generated: undefined;
|
|
72
|
+
}, {}, {}>;
|
|
73
|
+
refillRatePerSec: import("drizzle-orm/pg-core").PgColumn<{
|
|
74
|
+
name: "refill_rate_per_sec";
|
|
75
|
+
tableName: "rate_limit_buckets";
|
|
76
|
+
dataType: "string";
|
|
77
|
+
columnType: "PgNumeric";
|
|
78
|
+
data: string;
|
|
79
|
+
driverParam: string;
|
|
80
|
+
notNull: true;
|
|
81
|
+
hasDefault: false;
|
|
82
|
+
isPrimaryKey: false;
|
|
83
|
+
isAutoincrement: false;
|
|
84
|
+
hasRuntimeDefault: false;
|
|
85
|
+
enumValues: undefined;
|
|
86
|
+
baseColumn: never;
|
|
87
|
+
identity: undefined;
|
|
88
|
+
generated: undefined;
|
|
89
|
+
}, {}, {}>;
|
|
90
|
+
lastRefillAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
91
|
+
name: "last_refill_at";
|
|
92
|
+
tableName: "rate_limit_buckets";
|
|
93
|
+
dataType: "date";
|
|
94
|
+
columnType: "PgTimestamp";
|
|
95
|
+
data: Date;
|
|
96
|
+
driverParam: string;
|
|
97
|
+
notNull: true;
|
|
98
|
+
hasDefault: true;
|
|
99
|
+
isPrimaryKey: false;
|
|
100
|
+
isAutoincrement: false;
|
|
101
|
+
hasRuntimeDefault: false;
|
|
102
|
+
enumValues: undefined;
|
|
103
|
+
baseColumn: never;
|
|
104
|
+
identity: undefined;
|
|
105
|
+
generated: undefined;
|
|
106
|
+
}, {}, {}>;
|
|
107
|
+
updatedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
108
|
+
name: "updated_at";
|
|
109
|
+
tableName: "rate_limit_buckets";
|
|
110
|
+
dataType: "date";
|
|
111
|
+
columnType: "PgTimestamp";
|
|
112
|
+
data: Date;
|
|
113
|
+
driverParam: string;
|
|
114
|
+
notNull: true;
|
|
115
|
+
hasDefault: true;
|
|
116
|
+
isPrimaryKey: false;
|
|
117
|
+
isAutoincrement: false;
|
|
118
|
+
hasRuntimeDefault: false;
|
|
119
|
+
enumValues: undefined;
|
|
120
|
+
baseColumn: never;
|
|
121
|
+
identity: undefined;
|
|
122
|
+
generated: undefined;
|
|
123
|
+
}, {}, {}>;
|
|
124
|
+
};
|
|
125
|
+
dialect: "pg";
|
|
126
|
+
}>, "enableRLS">;
|
|
127
|
+
export type InsertInfraRateLimitBucket = typeof infraRateLimitBucketsTable.$inferInsert;
|
|
128
|
+
export type SelectInfraRateLimitBucket = typeof infraRateLimitBucketsTable.$inferSelect;
|
|
129
|
+
export declare const infraRateLimitBucketSelectSchema: z.ZodObject<{
|
|
130
|
+
scope: z.ZodString;
|
|
131
|
+
tokensAvailable: z.ZodString;
|
|
132
|
+
capacity: z.ZodString;
|
|
133
|
+
refillRatePerSec: z.ZodString;
|
|
134
|
+
lastRefillAt: z.ZodDate;
|
|
135
|
+
updatedAt: z.ZodDate;
|
|
136
|
+
}, z.core.$strip>;
|
|
137
|
+
export type InfraRateLimitBucket = z.infer<typeof infraRateLimitBucketSelectSchema>;
|
|
138
|
+
//# sourceMappingURL=rate_limit_buckets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate_limit_buckets.d.ts","sourceRoot":"","sources":["../../../src/schema/infra/rate_limit_buckets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAwBzB,CAAA;AAEd,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAC,YAAY,CAAA;AACvF,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAC,YAAY,CAAA;AAEvF,eAAO,MAAM,gCAAgC;;;;;;;iBAO3C,CAAA;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { numeric, pgTable, text, timestamp } from "drizzle-orm/pg-core";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
/**
|
|
4
|
+
* Generic token-bucket rate-limit primitive.
|
|
5
|
+
*
|
|
6
|
+
* Any module that needs token-bucket rate limiting (channel push,
|
|
7
|
+
* operator-configured webhooks, third-party integrations, future use
|
|
8
|
+
* cases) uses this table with its own scope key. Channel push wraps it
|
|
9
|
+
* with channel-specific scope construction:
|
|
10
|
+
*
|
|
11
|
+
* "channel:" + channelId + ":" + connectionId
|
|
12
|
+
*
|
|
13
|
+
* The `acquireToken(scope, config, priority)` helper does the atomic
|
|
14
|
+
* refill + decrement in one round-trip; see distribution's rate-limit
|
|
15
|
+
* service for the canonical implementation.
|
|
16
|
+
*
|
|
17
|
+
* Per docs/architecture/channel-push-architecture.md §14.2.
|
|
18
|
+
*/
|
|
19
|
+
export const infraRateLimitBucketsTable = pgTable("rate_limit_buckets", {
|
|
20
|
+
/**
|
|
21
|
+
* Caller-defined scope. NOT a typeid — bucket scopes are application
|
|
22
|
+
* level (e.g. `"channel:ch_xxx:conn_yyy"`). The PK doubles as the
|
|
23
|
+
* lookup key.
|
|
24
|
+
*/
|
|
25
|
+
scope: text("scope").primaryKey(),
|
|
26
|
+
/**
|
|
27
|
+
* Current token balance. `numeric` (not `integer`) so partial-token
|
|
28
|
+
* priority gates work cleanly (e.g. "dispatch when bucket >= 0.3 *
|
|
29
|
+
* capacity"). Drizzle returns this as a string; callers parse to
|
|
30
|
+
* number.
|
|
31
|
+
*/
|
|
32
|
+
tokensAvailable: numeric("tokens_available").notNull(),
|
|
33
|
+
capacity: numeric("capacity").notNull(),
|
|
34
|
+
/** Tokens added per second since `last_refill_at`. */
|
|
35
|
+
refillRatePerSec: numeric("refill_rate_per_sec").notNull(),
|
|
36
|
+
/**
|
|
37
|
+
* Last time the bucket was refilled. Atomic UPDATE in `acquireToken`
|
|
38
|
+
* computes `(now - last_refill_at) * refill_rate`, caps at capacity,
|
|
39
|
+
* sets the new value, and stamps `last_refill_at = now()`.
|
|
40
|
+
*/
|
|
41
|
+
lastRefillAt: timestamp("last_refill_at", { withTimezone: true }).notNull().defaultNow(),
|
|
42
|
+
updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
|
|
43
|
+
}).enableRLS();
|
|
44
|
+
export const infraRateLimitBucketSelectSchema = z.object({
|
|
45
|
+
scope: z.string(),
|
|
46
|
+
tokensAvailable: z.string(),
|
|
47
|
+
capacity: z.string(),
|
|
48
|
+
refillRatePerSec: z.string(),
|
|
49
|
+
lastRefillAt: z.date(),
|
|
50
|
+
updatedAt: z.date(),
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=rate_limit_buckets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate_limit_buckets.js","sourceRoot":"","sources":["../../../src/schema/infra/rate_limit_buckets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACvE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,OAAO,CAAC,oBAAoB,EAAE;IACtE;;;;OAIG;IACH,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE;IACjC;;;;;OAKG;IACH,eAAe,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE;IACtD,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IACvC,sDAAsD;IACtD,gBAAgB,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC,OAAO,EAAE;IAC1D;;;;OAIG;IACH,YAAY,EAAE,SAAS,CAAC,gBAAgB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACxF,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;CAClF,CAAC,CAAC,SAAS,EAAE,CAAA;AAKd,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC,MAAM,CAAC;IACvD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5B,YAAY,EAAE,CAAC,CAAC,IAAI,EAAE;IACtB,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE;CACpB,CAAC,CAAA"}
|
|
@@ -0,0 +1,572 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Generic outbound HTTP delivery log.
|
|
4
|
+
*
|
|
5
|
+
* Every outbound HTTP call from any module writes a row per attempt for
|
|
6
|
+
* observability, retry-chain history, and (eventually) durable
|
|
7
|
+
* scheduling. Channel push is the first concrete consumer; future
|
|
8
|
+
* consumers include operator-configured webhooks (delivering Voyant
|
|
9
|
+
* events to operator-supplied URLs), third-party integrations (CRM
|
|
10
|
+
* sync, accounting exports), and any other real-time outbound system
|
|
11
|
+
* that needs the same observability surface.
|
|
12
|
+
*
|
|
13
|
+
* Distinct from `channel_webhook_events` (in distribution), which logs
|
|
14
|
+
* events received FROM channels — opposite direction.
|
|
15
|
+
*
|
|
16
|
+
* Per docs/architecture/channel-push-architecture.md §11.
|
|
17
|
+
*
|
|
18
|
+
* IMPORTANT: callers MUST NOT INSERT directly. Use the
|
|
19
|
+
* `prepareOutboundEnvelope` helper (in `@voyantjs/voyant-distribution` or
|
|
20
|
+
* a future shared infra package) — it enforces auth-header redaction,
|
|
21
|
+
* PII redaction, and excerpt-bounding. Direct inserts are a lint
|
|
22
|
+
* violation per §11.3.
|
|
23
|
+
*/
|
|
24
|
+
export declare const infraWebhookDeliveriesTable: Omit<import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
25
|
+
name: "webhook_deliveries";
|
|
26
|
+
schema: undefined;
|
|
27
|
+
columns: {
|
|
28
|
+
id: import("drizzle-orm/pg-core").PgColumn<{
|
|
29
|
+
name: string;
|
|
30
|
+
tableName: "webhook_deliveries";
|
|
31
|
+
dataType: "string";
|
|
32
|
+
columnType: "PgText";
|
|
33
|
+
data: string;
|
|
34
|
+
driverParam: string;
|
|
35
|
+
notNull: true;
|
|
36
|
+
hasDefault: true;
|
|
37
|
+
isPrimaryKey: true;
|
|
38
|
+
isAutoincrement: false;
|
|
39
|
+
hasRuntimeDefault: true;
|
|
40
|
+
enumValues: [string, ...string[]];
|
|
41
|
+
baseColumn: never;
|
|
42
|
+
identity: undefined;
|
|
43
|
+
generated: undefined;
|
|
44
|
+
}, {}, {}>;
|
|
45
|
+
sourceModule: import("drizzle-orm/pg-core").PgColumn<{
|
|
46
|
+
name: "source_module";
|
|
47
|
+
tableName: "webhook_deliveries";
|
|
48
|
+
dataType: "string";
|
|
49
|
+
columnType: "PgText";
|
|
50
|
+
data: string;
|
|
51
|
+
driverParam: string;
|
|
52
|
+
notNull: true;
|
|
53
|
+
hasDefault: false;
|
|
54
|
+
isPrimaryKey: false;
|
|
55
|
+
isAutoincrement: false;
|
|
56
|
+
hasRuntimeDefault: false;
|
|
57
|
+
enumValues: [string, ...string[]];
|
|
58
|
+
baseColumn: never;
|
|
59
|
+
identity: undefined;
|
|
60
|
+
generated: undefined;
|
|
61
|
+
}, {}, {}>;
|
|
62
|
+
sourceEvent: import("drizzle-orm/pg-core").PgColumn<{
|
|
63
|
+
name: "source_event";
|
|
64
|
+
tableName: "webhook_deliveries";
|
|
65
|
+
dataType: "string";
|
|
66
|
+
columnType: "PgText";
|
|
67
|
+
data: string;
|
|
68
|
+
driverParam: string;
|
|
69
|
+
notNull: true;
|
|
70
|
+
hasDefault: false;
|
|
71
|
+
isPrimaryKey: false;
|
|
72
|
+
isAutoincrement: false;
|
|
73
|
+
hasRuntimeDefault: false;
|
|
74
|
+
enumValues: [string, ...string[]];
|
|
75
|
+
baseColumn: never;
|
|
76
|
+
identity: undefined;
|
|
77
|
+
generated: undefined;
|
|
78
|
+
}, {}, {}>;
|
|
79
|
+
sourceEntityModule: import("drizzle-orm/pg-core").PgColumn<{
|
|
80
|
+
name: "source_entity_module";
|
|
81
|
+
tableName: "webhook_deliveries";
|
|
82
|
+
dataType: "string";
|
|
83
|
+
columnType: "PgText";
|
|
84
|
+
data: string;
|
|
85
|
+
driverParam: string;
|
|
86
|
+
notNull: false;
|
|
87
|
+
hasDefault: false;
|
|
88
|
+
isPrimaryKey: false;
|
|
89
|
+
isAutoincrement: false;
|
|
90
|
+
hasRuntimeDefault: false;
|
|
91
|
+
enumValues: [string, ...string[]];
|
|
92
|
+
baseColumn: never;
|
|
93
|
+
identity: undefined;
|
|
94
|
+
generated: undefined;
|
|
95
|
+
}, {}, {}>;
|
|
96
|
+
sourceEntityId: import("drizzle-orm/pg-core").PgColumn<{
|
|
97
|
+
name: "source_entity_id";
|
|
98
|
+
tableName: "webhook_deliveries";
|
|
99
|
+
dataType: "string";
|
|
100
|
+
columnType: "PgText";
|
|
101
|
+
data: string;
|
|
102
|
+
driverParam: string;
|
|
103
|
+
notNull: false;
|
|
104
|
+
hasDefault: false;
|
|
105
|
+
isPrimaryKey: false;
|
|
106
|
+
isAutoincrement: false;
|
|
107
|
+
hasRuntimeDefault: false;
|
|
108
|
+
enumValues: [string, ...string[]];
|
|
109
|
+
baseColumn: never;
|
|
110
|
+
identity: undefined;
|
|
111
|
+
generated: undefined;
|
|
112
|
+
}, {}, {}>;
|
|
113
|
+
subscriptionId: import("drizzle-orm/pg-core").PgColumn<{
|
|
114
|
+
name: "subscription_id";
|
|
115
|
+
tableName: "webhook_deliveries";
|
|
116
|
+
dataType: "string";
|
|
117
|
+
columnType: "PgText";
|
|
118
|
+
data: string;
|
|
119
|
+
driverParam: string;
|
|
120
|
+
notNull: false;
|
|
121
|
+
hasDefault: false;
|
|
122
|
+
isPrimaryKey: false;
|
|
123
|
+
isAutoincrement: false;
|
|
124
|
+
hasRuntimeDefault: false;
|
|
125
|
+
enumValues: [string, ...string[]];
|
|
126
|
+
baseColumn: never;
|
|
127
|
+
identity: undefined;
|
|
128
|
+
generated: undefined;
|
|
129
|
+
}, {}, {}>;
|
|
130
|
+
targetUrl: import("drizzle-orm/pg-core").PgColumn<{
|
|
131
|
+
name: "target_url";
|
|
132
|
+
tableName: "webhook_deliveries";
|
|
133
|
+
dataType: "string";
|
|
134
|
+
columnType: "PgText";
|
|
135
|
+
data: string;
|
|
136
|
+
driverParam: string;
|
|
137
|
+
notNull: true;
|
|
138
|
+
hasDefault: false;
|
|
139
|
+
isPrimaryKey: false;
|
|
140
|
+
isAutoincrement: false;
|
|
141
|
+
hasRuntimeDefault: false;
|
|
142
|
+
enumValues: [string, ...string[]];
|
|
143
|
+
baseColumn: never;
|
|
144
|
+
identity: undefined;
|
|
145
|
+
generated: undefined;
|
|
146
|
+
}, {}, {}>;
|
|
147
|
+
targetKind: import("drizzle-orm/pg-core").PgColumn<{
|
|
148
|
+
name: "target_kind";
|
|
149
|
+
tableName: "webhook_deliveries";
|
|
150
|
+
dataType: "string";
|
|
151
|
+
columnType: "PgText";
|
|
152
|
+
data: string;
|
|
153
|
+
driverParam: string;
|
|
154
|
+
notNull: false;
|
|
155
|
+
hasDefault: false;
|
|
156
|
+
isPrimaryKey: false;
|
|
157
|
+
isAutoincrement: false;
|
|
158
|
+
hasRuntimeDefault: false;
|
|
159
|
+
enumValues: [string, ...string[]];
|
|
160
|
+
baseColumn: never;
|
|
161
|
+
identity: undefined;
|
|
162
|
+
generated: undefined;
|
|
163
|
+
}, {}, {}>;
|
|
164
|
+
targetRef: import("drizzle-orm/pg-core").PgColumn<{
|
|
165
|
+
name: "target_ref";
|
|
166
|
+
tableName: "webhook_deliveries";
|
|
167
|
+
dataType: "string";
|
|
168
|
+
columnType: "PgText";
|
|
169
|
+
data: string;
|
|
170
|
+
driverParam: string;
|
|
171
|
+
notNull: false;
|
|
172
|
+
hasDefault: false;
|
|
173
|
+
isPrimaryKey: false;
|
|
174
|
+
isAutoincrement: false;
|
|
175
|
+
hasRuntimeDefault: false;
|
|
176
|
+
enumValues: [string, ...string[]];
|
|
177
|
+
baseColumn: never;
|
|
178
|
+
identity: undefined;
|
|
179
|
+
generated: undefined;
|
|
180
|
+
}, {}, {}>;
|
|
181
|
+
requestMethod: import("drizzle-orm/pg-core").PgColumn<{
|
|
182
|
+
name: "request_method";
|
|
183
|
+
tableName: "webhook_deliveries";
|
|
184
|
+
dataType: "string";
|
|
185
|
+
columnType: "PgText";
|
|
186
|
+
data: string;
|
|
187
|
+
driverParam: string;
|
|
188
|
+
notNull: true;
|
|
189
|
+
hasDefault: false;
|
|
190
|
+
isPrimaryKey: false;
|
|
191
|
+
isAutoincrement: false;
|
|
192
|
+
hasRuntimeDefault: false;
|
|
193
|
+
enumValues: [string, ...string[]];
|
|
194
|
+
baseColumn: never;
|
|
195
|
+
identity: undefined;
|
|
196
|
+
generated: undefined;
|
|
197
|
+
}, {}, {}>;
|
|
198
|
+
requestHeaders: import("drizzle-orm/pg-core").PgColumn<{
|
|
199
|
+
name: "request_headers";
|
|
200
|
+
tableName: "webhook_deliveries";
|
|
201
|
+
dataType: "json";
|
|
202
|
+
columnType: "PgJsonb";
|
|
203
|
+
data: Record<string, string>;
|
|
204
|
+
driverParam: unknown;
|
|
205
|
+
notNull: false;
|
|
206
|
+
hasDefault: false;
|
|
207
|
+
isPrimaryKey: false;
|
|
208
|
+
isAutoincrement: false;
|
|
209
|
+
hasRuntimeDefault: false;
|
|
210
|
+
enumValues: undefined;
|
|
211
|
+
baseColumn: never;
|
|
212
|
+
identity: undefined;
|
|
213
|
+
generated: undefined;
|
|
214
|
+
}, {}, {
|
|
215
|
+
$type: Record<string, string>;
|
|
216
|
+
}>;
|
|
217
|
+
requestBodyHash: import("drizzle-orm/pg-core").PgColumn<{
|
|
218
|
+
name: "request_body_hash";
|
|
219
|
+
tableName: "webhook_deliveries";
|
|
220
|
+
dataType: "string";
|
|
221
|
+
columnType: "PgText";
|
|
222
|
+
data: string;
|
|
223
|
+
driverParam: string;
|
|
224
|
+
notNull: false;
|
|
225
|
+
hasDefault: false;
|
|
226
|
+
isPrimaryKey: false;
|
|
227
|
+
isAutoincrement: false;
|
|
228
|
+
hasRuntimeDefault: false;
|
|
229
|
+
enumValues: [string, ...string[]];
|
|
230
|
+
baseColumn: never;
|
|
231
|
+
identity: undefined;
|
|
232
|
+
generated: undefined;
|
|
233
|
+
}, {}, {}>;
|
|
234
|
+
requestBodyExcerpt: import("drizzle-orm/pg-core").PgColumn<{
|
|
235
|
+
name: "request_body_excerpt";
|
|
236
|
+
tableName: "webhook_deliveries";
|
|
237
|
+
dataType: "string";
|
|
238
|
+
columnType: "PgText";
|
|
239
|
+
data: string;
|
|
240
|
+
driverParam: string;
|
|
241
|
+
notNull: false;
|
|
242
|
+
hasDefault: false;
|
|
243
|
+
isPrimaryKey: false;
|
|
244
|
+
isAutoincrement: false;
|
|
245
|
+
hasRuntimeDefault: false;
|
|
246
|
+
enumValues: [string, ...string[]];
|
|
247
|
+
baseColumn: never;
|
|
248
|
+
identity: undefined;
|
|
249
|
+
generated: undefined;
|
|
250
|
+
}, {}, {}>;
|
|
251
|
+
responseStatus: import("drizzle-orm/pg-core").PgColumn<{
|
|
252
|
+
name: "response_status";
|
|
253
|
+
tableName: "webhook_deliveries";
|
|
254
|
+
dataType: "number";
|
|
255
|
+
columnType: "PgInteger";
|
|
256
|
+
data: number;
|
|
257
|
+
driverParam: string | number;
|
|
258
|
+
notNull: false;
|
|
259
|
+
hasDefault: false;
|
|
260
|
+
isPrimaryKey: false;
|
|
261
|
+
isAutoincrement: false;
|
|
262
|
+
hasRuntimeDefault: false;
|
|
263
|
+
enumValues: undefined;
|
|
264
|
+
baseColumn: never;
|
|
265
|
+
identity: undefined;
|
|
266
|
+
generated: undefined;
|
|
267
|
+
}, {}, {}>;
|
|
268
|
+
responseHeaders: import("drizzle-orm/pg-core").PgColumn<{
|
|
269
|
+
name: "response_headers";
|
|
270
|
+
tableName: "webhook_deliveries";
|
|
271
|
+
dataType: "json";
|
|
272
|
+
columnType: "PgJsonb";
|
|
273
|
+
data: Record<string, string>;
|
|
274
|
+
driverParam: unknown;
|
|
275
|
+
notNull: false;
|
|
276
|
+
hasDefault: false;
|
|
277
|
+
isPrimaryKey: false;
|
|
278
|
+
isAutoincrement: false;
|
|
279
|
+
hasRuntimeDefault: false;
|
|
280
|
+
enumValues: undefined;
|
|
281
|
+
baseColumn: never;
|
|
282
|
+
identity: undefined;
|
|
283
|
+
generated: undefined;
|
|
284
|
+
}, {}, {
|
|
285
|
+
$type: Record<string, string>;
|
|
286
|
+
}>;
|
|
287
|
+
responseBodyExcerpt: import("drizzle-orm/pg-core").PgColumn<{
|
|
288
|
+
name: "response_body_excerpt";
|
|
289
|
+
tableName: "webhook_deliveries";
|
|
290
|
+
dataType: "string";
|
|
291
|
+
columnType: "PgText";
|
|
292
|
+
data: string;
|
|
293
|
+
driverParam: string;
|
|
294
|
+
notNull: false;
|
|
295
|
+
hasDefault: false;
|
|
296
|
+
isPrimaryKey: false;
|
|
297
|
+
isAutoincrement: false;
|
|
298
|
+
hasRuntimeDefault: false;
|
|
299
|
+
enumValues: [string, ...string[]];
|
|
300
|
+
baseColumn: never;
|
|
301
|
+
identity: undefined;
|
|
302
|
+
generated: undefined;
|
|
303
|
+
}, {}, {}>;
|
|
304
|
+
attemptNumber: import("drizzle-orm/pg-core").PgColumn<{
|
|
305
|
+
name: "attempt_number";
|
|
306
|
+
tableName: "webhook_deliveries";
|
|
307
|
+
dataType: "number";
|
|
308
|
+
columnType: "PgInteger";
|
|
309
|
+
data: number;
|
|
310
|
+
driverParam: string | number;
|
|
311
|
+
notNull: true;
|
|
312
|
+
hasDefault: true;
|
|
313
|
+
isPrimaryKey: false;
|
|
314
|
+
isAutoincrement: false;
|
|
315
|
+
hasRuntimeDefault: false;
|
|
316
|
+
enumValues: undefined;
|
|
317
|
+
baseColumn: never;
|
|
318
|
+
identity: undefined;
|
|
319
|
+
generated: undefined;
|
|
320
|
+
}, {}, {}>;
|
|
321
|
+
parentDeliveryId: import("drizzle-orm/pg-core").PgColumn<{
|
|
322
|
+
name: "parent_delivery_id";
|
|
323
|
+
tableName: "webhook_deliveries";
|
|
324
|
+
dataType: "string";
|
|
325
|
+
columnType: "PgText";
|
|
326
|
+
data: string;
|
|
327
|
+
driverParam: string;
|
|
328
|
+
notNull: false;
|
|
329
|
+
hasDefault: false;
|
|
330
|
+
isPrimaryKey: false;
|
|
331
|
+
isAutoincrement: false;
|
|
332
|
+
hasRuntimeDefault: false;
|
|
333
|
+
enumValues: [string, ...string[]];
|
|
334
|
+
baseColumn: never;
|
|
335
|
+
identity: undefined;
|
|
336
|
+
generated: undefined;
|
|
337
|
+
}, {}, {}>;
|
|
338
|
+
idempotencyKey: import("drizzle-orm/pg-core").PgColumn<{
|
|
339
|
+
name: "idempotency_key";
|
|
340
|
+
tableName: "webhook_deliveries";
|
|
341
|
+
dataType: "string";
|
|
342
|
+
columnType: "PgText";
|
|
343
|
+
data: string;
|
|
344
|
+
driverParam: string;
|
|
345
|
+
notNull: false;
|
|
346
|
+
hasDefault: false;
|
|
347
|
+
isPrimaryKey: false;
|
|
348
|
+
isAutoincrement: false;
|
|
349
|
+
hasRuntimeDefault: false;
|
|
350
|
+
enumValues: [string, ...string[]];
|
|
351
|
+
baseColumn: never;
|
|
352
|
+
identity: undefined;
|
|
353
|
+
generated: undefined;
|
|
354
|
+
}, {}, {}>;
|
|
355
|
+
status: import("drizzle-orm/pg-core").PgColumn<{
|
|
356
|
+
name: "status";
|
|
357
|
+
tableName: "webhook_deliveries";
|
|
358
|
+
dataType: "string";
|
|
359
|
+
columnType: "PgText";
|
|
360
|
+
data: string;
|
|
361
|
+
driverParam: string;
|
|
362
|
+
notNull: true;
|
|
363
|
+
hasDefault: false;
|
|
364
|
+
isPrimaryKey: false;
|
|
365
|
+
isAutoincrement: false;
|
|
366
|
+
hasRuntimeDefault: false;
|
|
367
|
+
enumValues: [string, ...string[]];
|
|
368
|
+
baseColumn: never;
|
|
369
|
+
identity: undefined;
|
|
370
|
+
generated: undefined;
|
|
371
|
+
}, {}, {}>;
|
|
372
|
+
scheduledFor: import("drizzle-orm/pg-core").PgColumn<{
|
|
373
|
+
name: "scheduled_for";
|
|
374
|
+
tableName: "webhook_deliveries";
|
|
375
|
+
dataType: "date";
|
|
376
|
+
columnType: "PgTimestamp";
|
|
377
|
+
data: Date;
|
|
378
|
+
driverParam: string;
|
|
379
|
+
notNull: false;
|
|
380
|
+
hasDefault: false;
|
|
381
|
+
isPrimaryKey: false;
|
|
382
|
+
isAutoincrement: false;
|
|
383
|
+
hasRuntimeDefault: false;
|
|
384
|
+
enumValues: undefined;
|
|
385
|
+
baseColumn: never;
|
|
386
|
+
identity: undefined;
|
|
387
|
+
generated: undefined;
|
|
388
|
+
}, {}, {}>;
|
|
389
|
+
startedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
390
|
+
name: "started_at";
|
|
391
|
+
tableName: "webhook_deliveries";
|
|
392
|
+
dataType: "date";
|
|
393
|
+
columnType: "PgTimestamp";
|
|
394
|
+
data: Date;
|
|
395
|
+
driverParam: string;
|
|
396
|
+
notNull: false;
|
|
397
|
+
hasDefault: false;
|
|
398
|
+
isPrimaryKey: false;
|
|
399
|
+
isAutoincrement: false;
|
|
400
|
+
hasRuntimeDefault: false;
|
|
401
|
+
enumValues: undefined;
|
|
402
|
+
baseColumn: never;
|
|
403
|
+
identity: undefined;
|
|
404
|
+
generated: undefined;
|
|
405
|
+
}, {}, {}>;
|
|
406
|
+
finishedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
407
|
+
name: "finished_at";
|
|
408
|
+
tableName: "webhook_deliveries";
|
|
409
|
+
dataType: "date";
|
|
410
|
+
columnType: "PgTimestamp";
|
|
411
|
+
data: Date;
|
|
412
|
+
driverParam: string;
|
|
413
|
+
notNull: false;
|
|
414
|
+
hasDefault: false;
|
|
415
|
+
isPrimaryKey: false;
|
|
416
|
+
isAutoincrement: false;
|
|
417
|
+
hasRuntimeDefault: false;
|
|
418
|
+
enumValues: undefined;
|
|
419
|
+
baseColumn: never;
|
|
420
|
+
identity: undefined;
|
|
421
|
+
generated: undefined;
|
|
422
|
+
}, {}, {}>;
|
|
423
|
+
durationMs: import("drizzle-orm/pg-core").PgColumn<{
|
|
424
|
+
name: "duration_ms";
|
|
425
|
+
tableName: "webhook_deliveries";
|
|
426
|
+
dataType: "number";
|
|
427
|
+
columnType: "PgInteger";
|
|
428
|
+
data: number;
|
|
429
|
+
driverParam: string | number;
|
|
430
|
+
notNull: false;
|
|
431
|
+
hasDefault: false;
|
|
432
|
+
isPrimaryKey: false;
|
|
433
|
+
isAutoincrement: false;
|
|
434
|
+
hasRuntimeDefault: false;
|
|
435
|
+
enumValues: undefined;
|
|
436
|
+
baseColumn: never;
|
|
437
|
+
identity: undefined;
|
|
438
|
+
generated: undefined;
|
|
439
|
+
}, {}, {}>;
|
|
440
|
+
errorClass: import("drizzle-orm/pg-core").PgColumn<{
|
|
441
|
+
name: "error_class";
|
|
442
|
+
tableName: "webhook_deliveries";
|
|
443
|
+
dataType: "string";
|
|
444
|
+
columnType: "PgText";
|
|
445
|
+
data: string;
|
|
446
|
+
driverParam: string;
|
|
447
|
+
notNull: false;
|
|
448
|
+
hasDefault: false;
|
|
449
|
+
isPrimaryKey: false;
|
|
450
|
+
isAutoincrement: false;
|
|
451
|
+
hasRuntimeDefault: false;
|
|
452
|
+
enumValues: [string, ...string[]];
|
|
453
|
+
baseColumn: never;
|
|
454
|
+
identity: undefined;
|
|
455
|
+
generated: undefined;
|
|
456
|
+
}, {}, {}>;
|
|
457
|
+
errorMessage: import("drizzle-orm/pg-core").PgColumn<{
|
|
458
|
+
name: "error_message";
|
|
459
|
+
tableName: "webhook_deliveries";
|
|
460
|
+
dataType: "string";
|
|
461
|
+
columnType: "PgText";
|
|
462
|
+
data: string;
|
|
463
|
+
driverParam: string;
|
|
464
|
+
notNull: false;
|
|
465
|
+
hasDefault: false;
|
|
466
|
+
isPrimaryKey: false;
|
|
467
|
+
isAutoincrement: false;
|
|
468
|
+
hasRuntimeDefault: false;
|
|
469
|
+
enumValues: [string, ...string[]];
|
|
470
|
+
baseColumn: never;
|
|
471
|
+
identity: undefined;
|
|
472
|
+
generated: undefined;
|
|
473
|
+
}, {}, {}>;
|
|
474
|
+
createdAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
475
|
+
name: "created_at";
|
|
476
|
+
tableName: "webhook_deliveries";
|
|
477
|
+
dataType: "date";
|
|
478
|
+
columnType: "PgTimestamp";
|
|
479
|
+
data: Date;
|
|
480
|
+
driverParam: string;
|
|
481
|
+
notNull: true;
|
|
482
|
+
hasDefault: true;
|
|
483
|
+
isPrimaryKey: false;
|
|
484
|
+
isAutoincrement: false;
|
|
485
|
+
hasRuntimeDefault: false;
|
|
486
|
+
enumValues: undefined;
|
|
487
|
+
baseColumn: never;
|
|
488
|
+
identity: undefined;
|
|
489
|
+
generated: undefined;
|
|
490
|
+
}, {}, {}>;
|
|
491
|
+
updatedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
492
|
+
name: "updated_at";
|
|
493
|
+
tableName: "webhook_deliveries";
|
|
494
|
+
dataType: "date";
|
|
495
|
+
columnType: "PgTimestamp";
|
|
496
|
+
data: Date;
|
|
497
|
+
driverParam: string;
|
|
498
|
+
notNull: true;
|
|
499
|
+
hasDefault: true;
|
|
500
|
+
isPrimaryKey: false;
|
|
501
|
+
isAutoincrement: false;
|
|
502
|
+
hasRuntimeDefault: false;
|
|
503
|
+
enumValues: undefined;
|
|
504
|
+
baseColumn: never;
|
|
505
|
+
identity: undefined;
|
|
506
|
+
generated: undefined;
|
|
507
|
+
}, {}, {}>;
|
|
508
|
+
};
|
|
509
|
+
dialect: "pg";
|
|
510
|
+
}>, "enableRLS">;
|
|
511
|
+
export type InsertInfraWebhookDelivery = typeof infraWebhookDeliveriesTable.$inferInsert;
|
|
512
|
+
export type SelectInfraWebhookDelivery = typeof infraWebhookDeliveriesTable.$inferSelect;
|
|
513
|
+
export declare const webhookDeliveryStatusSchema: z.ZodEnum<{
|
|
514
|
+
pending: "pending";
|
|
515
|
+
in_flight: "in_flight";
|
|
516
|
+
succeeded: "succeeded";
|
|
517
|
+
failed: "failed";
|
|
518
|
+
abandoned: "abandoned";
|
|
519
|
+
}>;
|
|
520
|
+
export declare const webhookDeliveryErrorClassSchema: z.ZodEnum<{
|
|
521
|
+
timeout: "timeout";
|
|
522
|
+
network: "network";
|
|
523
|
+
"4xx": "4xx";
|
|
524
|
+
"5xx": "5xx";
|
|
525
|
+
adapter_error: "adapter_error";
|
|
526
|
+
rate_limited: "rate_limited";
|
|
527
|
+
}>;
|
|
528
|
+
export declare const infraWebhookDeliverySelectSchema: z.ZodObject<{
|
|
529
|
+
id: z.ZodString;
|
|
530
|
+
sourceModule: z.ZodString;
|
|
531
|
+
sourceEvent: z.ZodString;
|
|
532
|
+
sourceEntityModule: z.ZodNullable<z.ZodString>;
|
|
533
|
+
sourceEntityId: z.ZodNullable<z.ZodString>;
|
|
534
|
+
subscriptionId: z.ZodNullable<z.ZodString>;
|
|
535
|
+
targetUrl: z.ZodString;
|
|
536
|
+
targetKind: z.ZodNullable<z.ZodString>;
|
|
537
|
+
targetRef: z.ZodNullable<z.ZodString>;
|
|
538
|
+
requestMethod: z.ZodString;
|
|
539
|
+
requestHeaders: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
540
|
+
requestBodyHash: z.ZodNullable<z.ZodString>;
|
|
541
|
+
requestBodyExcerpt: z.ZodNullable<z.ZodString>;
|
|
542
|
+
responseStatus: z.ZodNullable<z.ZodNumber>;
|
|
543
|
+
responseHeaders: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
544
|
+
responseBodyExcerpt: z.ZodNullable<z.ZodString>;
|
|
545
|
+
attemptNumber: z.ZodNumber;
|
|
546
|
+
parentDeliveryId: z.ZodNullable<z.ZodString>;
|
|
547
|
+
idempotencyKey: z.ZodNullable<z.ZodString>;
|
|
548
|
+
status: z.ZodEnum<{
|
|
549
|
+
pending: "pending";
|
|
550
|
+
in_flight: "in_flight";
|
|
551
|
+
succeeded: "succeeded";
|
|
552
|
+
failed: "failed";
|
|
553
|
+
abandoned: "abandoned";
|
|
554
|
+
}>;
|
|
555
|
+
scheduledFor: z.ZodNullable<z.ZodDate>;
|
|
556
|
+
startedAt: z.ZodNullable<z.ZodDate>;
|
|
557
|
+
finishedAt: z.ZodNullable<z.ZodDate>;
|
|
558
|
+
durationMs: z.ZodNullable<z.ZodNumber>;
|
|
559
|
+
errorClass: z.ZodNullable<z.ZodEnum<{
|
|
560
|
+
timeout: "timeout";
|
|
561
|
+
network: "network";
|
|
562
|
+
"4xx": "4xx";
|
|
563
|
+
"5xx": "5xx";
|
|
564
|
+
adapter_error: "adapter_error";
|
|
565
|
+
rate_limited: "rate_limited";
|
|
566
|
+
}>>;
|
|
567
|
+
errorMessage: z.ZodNullable<z.ZodString>;
|
|
568
|
+
createdAt: z.ZodDate;
|
|
569
|
+
updatedAt: z.ZodDate;
|
|
570
|
+
}, z.core.$strip>;
|
|
571
|
+
export type InfraWebhookDelivery = z.infer<typeof infraWebhookDeliverySelectSchema>;
|
|
572
|
+
//# sourceMappingURL=webhook_deliveries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook_deliveries.d.ts","sourceRoot":"","sources":["../../../src/schema/infra/webhook_deliveries.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAgF3B,CAAA;AAEb,MAAM,MAAM,0BAA0B,GAAG,OAAO,2BAA2B,CAAC,YAAY,CAAA;AACxF,MAAM,MAAM,0BAA0B,GAAG,OAAO,2BAA2B,CAAC,YAAY,CAAA;AAExF,eAAO,MAAM,2BAA2B;;;;;;EAMtC,CAAA;AAEF,eAAO,MAAM,+BAA+B;;;;;;;EAO1C,CAAA;AAEF,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6B3C,CAAA;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAA"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { index, integer, jsonb, pgTable, text, timestamp } from "drizzle-orm/pg-core";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { typeId, typeIdSchema } from "../../lib/index.js";
|
|
4
|
+
/**
|
|
5
|
+
* Generic outbound HTTP delivery log.
|
|
6
|
+
*
|
|
7
|
+
* Every outbound HTTP call from any module writes a row per attempt for
|
|
8
|
+
* observability, retry-chain history, and (eventually) durable
|
|
9
|
+
* scheduling. Channel push is the first concrete consumer; future
|
|
10
|
+
* consumers include operator-configured webhooks (delivering Voyant
|
|
11
|
+
* events to operator-supplied URLs), third-party integrations (CRM
|
|
12
|
+
* sync, accounting exports), and any other real-time outbound system
|
|
13
|
+
* that needs the same observability surface.
|
|
14
|
+
*
|
|
15
|
+
* Distinct from `channel_webhook_events` (in distribution), which logs
|
|
16
|
+
* events received FROM channels — opposite direction.
|
|
17
|
+
*
|
|
18
|
+
* Per docs/architecture/channel-push-architecture.md §11.
|
|
19
|
+
*
|
|
20
|
+
* IMPORTANT: callers MUST NOT INSERT directly. Use the
|
|
21
|
+
* `prepareOutboundEnvelope` helper (in `@voyantjs/voyant-distribution` or
|
|
22
|
+
* a future shared infra package) — it enforces auth-header redaction,
|
|
23
|
+
* PII redaction, and excerpt-bounding. Direct inserts are a lint
|
|
24
|
+
* violation per §11.3.
|
|
25
|
+
*/
|
|
26
|
+
export const infraWebhookDeliveriesTable = pgTable("webhook_deliveries", {
|
|
27
|
+
id: typeId("webhook_deliveries"),
|
|
28
|
+
// ── Provenance: who issued this call and why ──────────────────────
|
|
29
|
+
/** "distribution", "iam", "operator-webhooks", … */
|
|
30
|
+
sourceModule: text("source_module").notNull(),
|
|
31
|
+
/** "channel.booking.push", "channel.availability.push", … */
|
|
32
|
+
sourceEvent: text("source_event").notNull(),
|
|
33
|
+
/** e.g. "bookings", "products" — for entity-scoped queries. */
|
|
34
|
+
sourceEntityModule: text("source_entity_module"),
|
|
35
|
+
/** e.g. "book_xxx" — for entity-scoped queries. */
|
|
36
|
+
sourceEntityId: text("source_entity_id"),
|
|
37
|
+
/** References webhook_subscriptions.id when applicable. */
|
|
38
|
+
subscriptionId: text("subscription_id"),
|
|
39
|
+
// ── Target ────────────────────────────────────────────────────────
|
|
40
|
+
targetUrl: text("target_url").notNull(),
|
|
41
|
+
/** "channel:tui", "subscription", "internal", … */
|
|
42
|
+
targetKind: text("target_kind"),
|
|
43
|
+
/** e.g. channel_id when target_kind = "channel:*". */
|
|
44
|
+
targetRef: text("target_ref"),
|
|
45
|
+
// ── Request (sensitive headers redacted before write) ─────────────
|
|
46
|
+
requestMethod: text("request_method").notNull(),
|
|
47
|
+
/** Auth headers (Authorization, Cookie, X-Api-Key, …) MUST be redacted. */
|
|
48
|
+
requestHeaders: jsonb("request_headers").$type(),
|
|
49
|
+
/** SHA-256 of the canonical request body — for idempotency / drift. */
|
|
50
|
+
requestBodyHash: text("request_body_hash"),
|
|
51
|
+
/** First N chars (bounded to 4 KB) for debugging. */
|
|
52
|
+
requestBodyExcerpt: text("request_body_excerpt"),
|
|
53
|
+
// ── Response ──────────────────────────────────────────────────────
|
|
54
|
+
responseStatus: integer("response_status"),
|
|
55
|
+
responseHeaders: jsonb("response_headers").$type(),
|
|
56
|
+
responseBodyExcerpt: text("response_body_excerpt"),
|
|
57
|
+
// ── Retry chain ──────────────────────────────────────────────────
|
|
58
|
+
attemptNumber: integer("attempt_number").notNull().default(1),
|
|
59
|
+
/** Previous attempt in the retry chain. */
|
|
60
|
+
parentDeliveryId: text("parent_delivery_id"),
|
|
61
|
+
/** Stable across retries; supplied by the caller. */
|
|
62
|
+
idempotencyKey: text("idempotency_key"),
|
|
63
|
+
// ── Lifecycle ────────────────────────────────────────────────────
|
|
64
|
+
/** "pending" | "in_flight" | "succeeded" | "failed" | "abandoned" */
|
|
65
|
+
status: text("status").notNull(),
|
|
66
|
+
/** When set, a future scheduler picks the row up at this time; v1 dispatches inline. */
|
|
67
|
+
scheduledFor: timestamp("scheduled_for", { withTimezone: true }),
|
|
68
|
+
startedAt: timestamp("started_at", { withTimezone: true }),
|
|
69
|
+
finishedAt: timestamp("finished_at", { withTimezone: true }),
|
|
70
|
+
durationMs: integer("duration_ms"),
|
|
71
|
+
// ── Error detail ─────────────────────────────────────────────────
|
|
72
|
+
/** "network" | "timeout" | "4xx" | "5xx" | "adapter_error" | "rate_limited" */
|
|
73
|
+
errorClass: text("error_class"),
|
|
74
|
+
errorMessage: text("error_message"),
|
|
75
|
+
createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
|
|
76
|
+
updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
|
|
77
|
+
}, (table) => [
|
|
78
|
+
// Forward-compatible scheduler index (v1 doesn't run a worker yet).
|
|
79
|
+
index("idx_webhook_deliveries_pending").on(table.status, table.scheduledFor),
|
|
80
|
+
// Module-scoped logs for the operator dashboard.
|
|
81
|
+
index("idx_webhook_deliveries_module").on(table.sourceModule, table.createdAt),
|
|
82
|
+
// Entity-scoped logs ("show me all deliveries for this booking").
|
|
83
|
+
index("idx_webhook_deliveries_entity").on(table.sourceEntityModule, table.sourceEntityId, table.createdAt),
|
|
84
|
+
// Retry-chain queries.
|
|
85
|
+
index("idx_webhook_deliveries_idempotency").on(table.idempotencyKey, table.attemptNumber),
|
|
86
|
+
// Per-subscription history.
|
|
87
|
+
index("idx_webhook_deliveries_subscription").on(table.subscriptionId, table.createdAt),
|
|
88
|
+
// Per-channel history (target_kind = "channel:*", target_ref = channel id).
|
|
89
|
+
index("idx_webhook_deliveries_target").on(table.targetKind, table.targetRef, table.createdAt),
|
|
90
|
+
]).enableRLS();
|
|
91
|
+
export const webhookDeliveryStatusSchema = z.enum([
|
|
92
|
+
"pending",
|
|
93
|
+
"in_flight",
|
|
94
|
+
"succeeded",
|
|
95
|
+
"failed",
|
|
96
|
+
"abandoned",
|
|
97
|
+
]);
|
|
98
|
+
export const webhookDeliveryErrorClassSchema = z.enum([
|
|
99
|
+
"network",
|
|
100
|
+
"timeout",
|
|
101
|
+
"4xx",
|
|
102
|
+
"5xx",
|
|
103
|
+
"adapter_error",
|
|
104
|
+
"rate_limited",
|
|
105
|
+
]);
|
|
106
|
+
export const infraWebhookDeliverySelectSchema = z.object({
|
|
107
|
+
id: typeIdSchema("webhook_deliveries"),
|
|
108
|
+
sourceModule: z.string(),
|
|
109
|
+
sourceEvent: z.string(),
|
|
110
|
+
sourceEntityModule: z.string().nullable(),
|
|
111
|
+
sourceEntityId: z.string().nullable(),
|
|
112
|
+
subscriptionId: z.string().nullable(),
|
|
113
|
+
targetUrl: z.string(),
|
|
114
|
+
targetKind: z.string().nullable(),
|
|
115
|
+
targetRef: z.string().nullable(),
|
|
116
|
+
requestMethod: z.string(),
|
|
117
|
+
requestHeaders: z.record(z.string(), z.string()).nullable(),
|
|
118
|
+
requestBodyHash: z.string().nullable(),
|
|
119
|
+
requestBodyExcerpt: z.string().nullable(),
|
|
120
|
+
responseStatus: z.number().int().nullable(),
|
|
121
|
+
responseHeaders: z.record(z.string(), z.string()).nullable(),
|
|
122
|
+
responseBodyExcerpt: z.string().nullable(),
|
|
123
|
+
attemptNumber: z.number().int(),
|
|
124
|
+
parentDeliveryId: z.string().nullable(),
|
|
125
|
+
idempotencyKey: z.string().nullable(),
|
|
126
|
+
status: webhookDeliveryStatusSchema,
|
|
127
|
+
scheduledFor: z.date().nullable(),
|
|
128
|
+
startedAt: z.date().nullable(),
|
|
129
|
+
finishedAt: z.date().nullable(),
|
|
130
|
+
durationMs: z.number().int().nullable(),
|
|
131
|
+
errorClass: webhookDeliveryErrorClassSchema.nullable(),
|
|
132
|
+
errorMessage: z.string().nullable(),
|
|
133
|
+
createdAt: z.date(),
|
|
134
|
+
updatedAt: z.date(),
|
|
135
|
+
});
|
|
136
|
+
//# sourceMappingURL=webhook_deliveries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook_deliveries.js","sourceRoot":"","sources":["../../../src/schema/infra/webhook_deliveries.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voyantjs/db",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -157,7 +157,7 @@
|
|
|
157
157
|
"postgres": "^3.4.8",
|
|
158
158
|
"typeid-js": "^1.2.0",
|
|
159
159
|
"zod": "^4.3.6",
|
|
160
|
-
"@voyantjs/core": "0.
|
|
160
|
+
"@voyantjs/core": "0.21.0"
|
|
161
161
|
},
|
|
162
162
|
"devDependencies": {
|
|
163
163
|
"typescript": "^6.0.2",
|