pipework 0.173.0 → 0.175.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/CHANGELOG.md +16 -0
- package/REFERENCE.md +23 -0
- package/dist/REFERENCE.md +195 -7
- package/dist/async/jobs/scheduler.js +1 -1
- package/dist/async/jobs/scheduler.js.map +1 -1
- package/dist/async/steps/graph.js +9 -9
- package/dist/async/steps/graph.js.map +1 -1
- package/dist/data/query/sql/sql.d.ts +10 -0
- package/dist/data/query/sql/sql.d.ts.map +1 -1
- package/dist/data/query/sql/sql.js +21 -0
- package/dist/data/query/sql/sql.js.map +1 -1
- package/dist/data/write/audit/verb-upsert.d.ts.map +1 -1
- package/dist/data/write/audit/verb-upsert.js +1 -0
- package/dist/data/write/audit/verb-upsert.js.map +1 -1
- package/dist/infra/access-links/handle.js +4 -4
- package/dist/infra/access-links/handle.js.map +1 -1
- package/dist/infra/alerts/namespace.d.ts +12 -1
- package/dist/infra/alerts/namespace.d.ts.map +1 -1
- package/dist/infra/alerts/namespace.js +12 -1
- package/dist/infra/alerts/namespace.js.map +1 -1
- package/dist/infra/alerts/sources.d.ts +64 -0
- package/dist/infra/alerts/sources.d.ts.map +1 -1
- package/dist/infra/alerts/sources.js +246 -161
- package/dist/infra/alerts/sources.js.map +1 -1
- package/dist/infra/alerts/subsystem-sources.d.ts +42 -0
- package/dist/infra/alerts/subsystem-sources.d.ts.map +1 -0
- package/dist/infra/alerts/subsystem-sources.js +152 -0
- package/dist/infra/alerts/subsystem-sources.js.map +1 -0
- package/dist/infra/webhook/outbound.d.ts +2 -0
- package/dist/infra/webhook/outbound.d.ts.map +1 -1
- package/dist/infra/webhook/outbound.js +3 -1
- package/dist/infra/webhook/outbound.js.map +1 -1
- package/dist/trace/partition/sync.js +2 -4
- package/dist/trace/partition/sync.js.map +1 -1
- package/package.json +1 -1
- package/dist/infra/email/sigv4.d.ts +0 -24
- package/dist/infra/email/sigv4.d.ts.map +0 -1
- package/dist/infra/email/sigv4.js +0 -55
- package/dist/infra/email/sigv4.js.map +0 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
// Sources over the failures pipework's own subsystems already record: outboxes that gave up, webhook deliveries,
|
|
2
|
+
// credit settlements. Each is a composition of `querySource` and `newRowsSource`.
|
|
3
|
+
import { sql } from '../../data/db/sql.js';
|
|
4
|
+
import { assertValidIdentifier, quoteIdentifier } from '../../data/db/identifiers.js';
|
|
5
|
+
import { DEFAULT_WEBHOOK_DELIVERY_TABLE } from '../webhook/outbound.js';
|
|
6
|
+
import { composeSources, newRowsSource, querySource } from './sources.js';
|
|
7
|
+
const FIFTEEN_MIN = 15 * 60_000;
|
|
8
|
+
const HOUR = 3_600_000;
|
|
9
|
+
function positive(value, label, who) {
|
|
10
|
+
if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0) {
|
|
11
|
+
throw new Error(`[pipework] ${who} ${label} must be a positive number of milliseconds, got ${String(value)}.`);
|
|
12
|
+
}
|
|
13
|
+
return Math.trunc(value);
|
|
14
|
+
}
|
|
15
|
+
function common(options) {
|
|
16
|
+
return {
|
|
17
|
+
...(options.owner !== undefined ? { owner: options.owner } : {}),
|
|
18
|
+
...(options.runbook !== undefined ? { runbook: options.runbook } : {}),
|
|
19
|
+
...(options.severity !== undefined ? { severity: options.severity } : {}),
|
|
20
|
+
...(options.database !== undefined ? { database: options.database } : {}),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const text = (v) => v === null || v === undefined ? 'none' : String(v);
|
|
24
|
+
/**
|
|
25
|
+
* Raises `delivery-failed:<table>:<sink>` for outbox rows that gave up (`failed_at`) since the last tick, and
|
|
26
|
+
* `delivery-stuck:<table>:<sink>` while rows are still pending more than `stuckAfterMs` (default 15 min) past
|
|
27
|
+
* `next_attempt_at`. `tables` defaults to `['pipework_alert_deliveries']`; name `support_event_delivery` to add the support outbox.
|
|
28
|
+
* The failed condition clears by the handle's quiet period; the stuck one resolves when the rows drain.
|
|
29
|
+
*/
|
|
30
|
+
export function deliveryFailedSource(options = {}) {
|
|
31
|
+
const tables = [...new Set(options.tables ?? ['pipework_alert_deliveries'])];
|
|
32
|
+
if (tables.length === 0)
|
|
33
|
+
throw new Error('[pipework] alerts.source.deliveryFailed tables must not be empty; omit it to watch the alert outbox.');
|
|
34
|
+
for (const t of tables)
|
|
35
|
+
assertValidIdentifier(t, 'deliveryFailed table');
|
|
36
|
+
const stuckAfter = positive(options.stuckAfterMs ?? FIFTEEN_MIN, 'stuckAfterMs', 'alerts.source.deliveryFailed');
|
|
37
|
+
const failed = tables.map(table => newRowsSource({
|
|
38
|
+
...common(options),
|
|
39
|
+
name: 'delivery-failed',
|
|
40
|
+
stateKey: `delivery-failed:${table}`,
|
|
41
|
+
table,
|
|
42
|
+
at: 'failed_at',
|
|
43
|
+
groupBy: sql.raw(`'${table}:' || t."sink"`),
|
|
44
|
+
...(options.settleMs !== undefined ? { settleMs: options.settleMs } : {}),
|
|
45
|
+
message: g => `${String(g.count)} delivery(ies) to ${String(g.last['sink'])} gave up; last error: ${text(g.last['last_error'])}`,
|
|
46
|
+
subject: g => ({ entity: 'sink', entityId: String(g.last['sink']) }),
|
|
47
|
+
context: g => ({ table, sink: String(g.last['sink']), count: g.count, lastError: g.last['last_error'] === null ? null : String(g.last['last_error']) }),
|
|
48
|
+
}));
|
|
49
|
+
const pending = tables.map(table => `
|
|
50
|
+
SELECT '${table}' AS tbl, sink, count(*)::int AS n,
|
|
51
|
+
(extract(epoch FROM clock_timestamp() - min(next_attempt_at)) * 1000)::bigint AS oldest_ms
|
|
52
|
+
FROM ${quoteIdentifier(table, 'deliveryFailed table')}
|
|
53
|
+
WHERE delivered_at IS NULL AND failed_at IS NULL
|
|
54
|
+
AND next_attempt_at < clock_timestamp() - ${String(stuckAfter)} * interval '1 millisecond'
|
|
55
|
+
GROUP BY sink`).join(' UNION ALL ');
|
|
56
|
+
const stuck = querySource({
|
|
57
|
+
...common(options),
|
|
58
|
+
name: 'delivery-stuck',
|
|
59
|
+
query: sql `SELECT * FROM (${sql.raw(pending)}) p ORDER BY tbl, sink`,
|
|
60
|
+
id: r => `${String(r['tbl'])}:${String(r['sink'])}`,
|
|
61
|
+
message: r => `${String(r['n'])} delivery(ies) to ${String(r['sink'])} pending more than ${String(stuckAfter)} ms past their retry time (oldest ${String(r['oldest_ms'])} ms)`,
|
|
62
|
+
subject: r => ({ entity: 'sink', entityId: String(r['sink']) }),
|
|
63
|
+
context: r => ({ table: String(r['tbl']), sink: String(r['sink']), count: Number(r['n']), oldestMs: Number(r['oldest_ms']) }),
|
|
64
|
+
});
|
|
65
|
+
return composeSources('delivery-failed', [...failed, stuck]);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Raises `webhook-failed:<endpointId>` for outbound webhook deliveries that gave up (completed with no 2xx status)
|
|
69
|
+
* since the last tick, and `webhook-stalled:<endpointId>` while deliveries are more than `stalledAfterMs`
|
|
70
|
+
* (default 15 min) past their `next_retry_at`. `table` is the delivery table (default the outbound webhook's).
|
|
71
|
+
*/
|
|
72
|
+
export function webhookFailedSource(options = {}) {
|
|
73
|
+
const table = options.table ?? DEFAULT_WEBHOOK_DELIVERY_TABLE;
|
|
74
|
+
assertValidIdentifier(table, 'webhookFailed table');
|
|
75
|
+
const stalledAfter = positive(options.stalledAfterMs ?? FIFTEEN_MIN, 'stalledAfterMs', 'alerts.source.webhookFailed');
|
|
76
|
+
const failed = newRowsSource({
|
|
77
|
+
...common(options),
|
|
78
|
+
name: 'webhook-failed',
|
|
79
|
+
stateKey: `webhook-failed:${table}`,
|
|
80
|
+
table,
|
|
81
|
+
at: 'completed_at',
|
|
82
|
+
where: sql `(t.status_code IS NULL OR t.status_code < 200 OR t.status_code >= 300)`,
|
|
83
|
+
groupBy: 'endpoint_id',
|
|
84
|
+
...(options.settleMs !== undefined ? { settleMs: options.settleMs } : {}),
|
|
85
|
+
message: g => `${String(g.count)} webhook delivery(ies) to endpoint ${g.id} gave up; last status ${text(g.last['status_code'])}`,
|
|
86
|
+
subject: g => ({ tenantId: String(g.last['tenant_id']), entity: 'webhook-endpoint', entityId: g.id }),
|
|
87
|
+
context: g => ({ endpointId: g.id, count: g.count, lastStatus: g.last['status_code'] === null ? null : Number(g.last['status_code']) }),
|
|
88
|
+
});
|
|
89
|
+
const stalled = querySource({
|
|
90
|
+
...common(options),
|
|
91
|
+
name: 'webhook-stalled',
|
|
92
|
+
query: sql `
|
|
93
|
+
SELECT endpoint_id, count(*)::int AS n, (extract(epoch FROM clock_timestamp() - min(next_retry_at)) * 1000)::bigint AS oldest_ms
|
|
94
|
+
FROM ${sql.raw(quoteIdentifier(table, 'webhookFailed table'))}
|
|
95
|
+
WHERE completed_at IS NULL AND next_retry_at < clock_timestamp() - ${stalledAfter} * interval '1 millisecond'
|
|
96
|
+
GROUP BY endpoint_id ORDER BY endpoint_id`,
|
|
97
|
+
id: r => String(r['endpoint_id']),
|
|
98
|
+
message: r => `${String(r['n'])} webhook delivery(ies) to endpoint ${String(r['endpoint_id'])} more than ${String(stalledAfter)} ms past their retry time (oldest ${String(r['oldest_ms'])} ms)`,
|
|
99
|
+
subject: r => ({ entity: 'webhook-endpoint', entityId: String(r['endpoint_id']) }),
|
|
100
|
+
context: r => ({ endpointId: String(r['endpoint_id']), count: Number(r['n']), oldestMs: Number(r['oldest_ms']) }),
|
|
101
|
+
});
|
|
102
|
+
return composeSources('webhook-failed', [failed, stalled]);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Raises `credit-overdraft:<tenantId>` for settlements that overdrew a tenant since the last tick,
|
|
106
|
+
* `credit-held:<tenantId>` while a reservation has been held longer than `heldOlderThanMs` (default 1 h), and
|
|
107
|
+
* `credit-expiry-undrained:all` while grants expired more than `expiryGraceMs` (default 1 h) ago still have credit left,
|
|
108
|
+
* which means nothing is running the credits expiry job.
|
|
109
|
+
*/
|
|
110
|
+
export function creditsSource(options = {}) {
|
|
111
|
+
const held = positive(options.heldOlderThanMs ?? HOUR, 'heldOlderThanMs', 'alerts.source.credits');
|
|
112
|
+
const grace = positive(options.expiryGraceMs ?? HOUR, 'expiryGraceMs', 'alerts.source.credits');
|
|
113
|
+
const overdraft = newRowsSource({
|
|
114
|
+
...common(options),
|
|
115
|
+
name: 'credit-overdraft',
|
|
116
|
+
table: 'credit_reservation',
|
|
117
|
+
at: 'settled_at',
|
|
118
|
+
where: sql `t.overdraft > 0`,
|
|
119
|
+
groupBy: 'tenant_id',
|
|
120
|
+
sum: 'overdraft',
|
|
121
|
+
...(options.settleMs !== undefined ? { settleMs: options.settleMs } : {}),
|
|
122
|
+
message: g => `${String(g.count)} settlement(s) overdrew ${g.id} by ${String(g.sum)}`,
|
|
123
|
+
subject: g => ({ tenantId: g.id }),
|
|
124
|
+
context: g => ({ count: g.count, overdraft: g.sum }),
|
|
125
|
+
});
|
|
126
|
+
const stale = querySource({
|
|
127
|
+
...common(options),
|
|
128
|
+
name: 'credit-held',
|
|
129
|
+
query: sql `
|
|
130
|
+
SELECT tenant_id, count(*)::int AS n, (extract(epoch FROM clock_timestamp() - min(created_at)) * 1000)::bigint AS oldest_ms
|
|
131
|
+
FROM credit_reservation
|
|
132
|
+
WHERE status = 'held' AND created_at < clock_timestamp() - ${held} * interval '1 millisecond'
|
|
133
|
+
GROUP BY tenant_id ORDER BY tenant_id`,
|
|
134
|
+
id: r => String(r['tenant_id']),
|
|
135
|
+
message: r => `${String(r['n'])} credit hold(s) for ${String(r['tenant_id'])} older than ${String(held)} ms (oldest ${String(r['oldest_ms'])} ms)`,
|
|
136
|
+
subject: r => ({ tenantId: String(r['tenant_id']) }),
|
|
137
|
+
context: r => ({ count: Number(r['n']), oldestMs: Number(r['oldest_ms']) }),
|
|
138
|
+
});
|
|
139
|
+
const expiry = querySource({
|
|
140
|
+
...common(options),
|
|
141
|
+
name: 'credit-expiry-undrained',
|
|
142
|
+
query: sql `
|
|
143
|
+
SELECT count(*)::int AS n FROM credit_grant
|
|
144
|
+
WHERE remaining > 0 AND expires_at <= clock_timestamp() - ${grace} * interval '1 millisecond'
|
|
145
|
+
HAVING count(*) > 0`,
|
|
146
|
+
id: () => 'all',
|
|
147
|
+
message: r => `${String(r['n'])} expired grant(s) not drained; is the credits expiry job scheduled?`,
|
|
148
|
+
context: r => ({ count: Number(r['n']) }),
|
|
149
|
+
});
|
|
150
|
+
return composeSources('credits', [overdraft, stale, expiry]);
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=subsystem-sources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subsystem-sources.js","sourceRoot":"","sources":["../../../src/infra/alerts/subsystem-sources.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,5 +46,7 @@ export interface OutboundWebhook {
|
|
|
46
46
|
listEndpoints(db: DB, tenantId: string): Promise<WebhookEndpoint[]>;
|
|
47
47
|
removeEndpoint(db: DB, tenantId: string, endpointId: string): Promise<boolean>;
|
|
48
48
|
}
|
|
49
|
+
/** The delivery table `createOutboundWebhook` uses unless `deliveryTable` is set. */
|
|
50
|
+
export declare const DEFAULT_WEBHOOK_DELIVERY_TABLE = "__pipework_webhook_deliveries";
|
|
49
51
|
export declare function createOutboundWebhook(config?: OutboundWebhookConfig): OutboundWebhook;
|
|
50
52
|
//# sourceMappingURL=outbound.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbound.d.ts","sourceRoot":"","sources":["../../../src/infra/webhook/outbound.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAe,KAAK,uBAAuB,EAAE,MAAM,WAAW,CAAA;AAErE,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,uBAAuB,CAAA;IACjC,KAAK,CAAC,EAAE;QACN,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAA;IACxB,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACtF,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAA;IAC7F,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACvC,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,QAAQ,CAAC,GAAG;QAAE,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3H,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAA;IACnE,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC/E;
|
|
1
|
+
{"version":3,"file":"outbound.d.ts","sourceRoot":"","sources":["../../../src/infra/webhook/outbound.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAe,KAAK,uBAAuB,EAAE,MAAM,WAAW,CAAA;AAErE,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,uBAAuB,CAAA;IACjC,KAAK,CAAC,EAAE;QACN,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAA;IACxB,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACtF,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAA;IAC7F,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACvC,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,GAAG,QAAQ,CAAC,GAAG;QAAE,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3H,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAA;IACnE,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC/E;AAED,qFAAqF;AACrF,eAAO,MAAM,8BAA8B,kCAAkC,CAAA;AAW7E,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,qBAA0B,GAAG,eAAe,CAqLzF"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { sql } from '../../data/db/sql.js';
|
|
2
2
|
import { signPayload } from './sign.js';
|
|
3
|
+
/** The delivery table `createOutboundWebhook` uses unless `deliveryTable` is set. */
|
|
4
|
+
export const DEFAULT_WEBHOOK_DELIVERY_TABLE = '__pipework_webhook_deliveries';
|
|
3
5
|
const DEFAULTS = {
|
|
4
6
|
table: '__pipework_webhook_endpoints',
|
|
5
|
-
deliveryTable:
|
|
7
|
+
deliveryTable: DEFAULT_WEBHOOK_DELIVERY_TABLE,
|
|
6
8
|
maxAttempts: 5,
|
|
7
9
|
initialDelayMs: 1000,
|
|
8
10
|
maxDelayMs: 3_600_000,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbound.js","sourceRoot":"","sources":["../../../src/infra/webhook/outbound.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAE1C,OAAO,EAAE,WAAW,EAAgC,MAAM,WAAW,CAAA;AA+CrE,MAAM,QAAQ,GAAG;IACf,KAAK,EAAE,8BAA8B;IACrC,aAAa,EAAE
|
|
1
|
+
{"version":3,"file":"outbound.js","sourceRoot":"","sources":["../../../src/infra/webhook/outbound.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,22 +92,20 @@ export async function syncTracePartitions(db, config, now = new Date()) {
|
|
|
92
92
|
*/
|
|
93
93
|
async function readExistingParents(db) {
|
|
94
94
|
const parents = PARTITIONED_TRACE_TABLES.map(t => t.parent);
|
|
95
|
-
const parentList = sql.join(parents.map(p => sql `${p}`), sql `, `);
|
|
96
95
|
const rows = await db.execute(sql `
|
|
97
96
|
SELECT relname FROM pg_class
|
|
98
|
-
WHERE relkind = 'p' AND relname
|
|
97
|
+
WHERE relkind = 'p' AND relname ${sql.inList(parents)}
|
|
99
98
|
`);
|
|
100
99
|
return new Set(rows.map(row => row['relname']));
|
|
101
100
|
}
|
|
102
101
|
async function readExistingPartitions(db) {
|
|
103
102
|
const parents = PARTITIONED_TRACE_TABLES.map(t => t.parent);
|
|
104
|
-
const parentList = sql.join(parents.map(p => sql `${p}`), sql `, `);
|
|
105
103
|
const rows = await db.execute(sql `
|
|
106
104
|
SELECT p.relname AS parent, c.relname AS child
|
|
107
105
|
FROM pg_inherits i
|
|
108
106
|
JOIN pg_class c ON c.oid = i.inhrelid
|
|
109
107
|
JOIN pg_class p ON p.oid = i.inhparent
|
|
110
|
-
WHERE p.relname
|
|
108
|
+
WHERE p.relname ${sql.inList(parents)}
|
|
111
109
|
`);
|
|
112
110
|
const byParent = new Map();
|
|
113
111
|
for (const parent of parents)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/trace/partition/sync.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/trace/partition/sync.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export interface AwsCredentials {
|
|
2
|
-
readonly accessKeyId: string;
|
|
3
|
-
readonly secretAccessKey: string;
|
|
4
|
-
readonly sessionToken?: string;
|
|
5
|
-
}
|
|
6
|
-
export interface SigV4Request {
|
|
7
|
-
readonly method: string;
|
|
8
|
-
readonly url: string;
|
|
9
|
-
/** Headers to sign and send, other than host and x-amz-date, which are added. */
|
|
10
|
-
readonly headers: Readonly<Record<string, string>>;
|
|
11
|
-
readonly body: string | Buffer;
|
|
12
|
-
readonly region: string;
|
|
13
|
-
readonly service: string;
|
|
14
|
-
readonly credentials: AwsCredentials;
|
|
15
|
-
readonly now?: Date;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Signs a request with AWS Signature Version 4 and returns the headers to send:
|
|
19
|
-
* the given ones, `x-amz-date`, `x-amz-security-token` when the credentials carry
|
|
20
|
-
* a session token, and `authorization`. `host` is signed but not returned; the
|
|
21
|
-
* HTTP client sets it from the URL.
|
|
22
|
-
*/
|
|
23
|
-
export declare function signV4(req: SigV4Request): Record<string, string>;
|
|
24
|
-
//# sourceMappingURL=sigv4.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sigv4.d.ts","sourceRoot":"","sources":["../../../src/infra/email/sigv4.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAA;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CACpB;AAkBD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwChE"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { createHash, createHmac } from 'node:crypto';
|
|
2
|
-
function sha256Hex(data) {
|
|
3
|
-
return createHash('sha256').update(data).digest('hex');
|
|
4
|
-
}
|
|
5
|
-
function hmac(key, data) {
|
|
6
|
-
return createHmac('sha256', key).update(data).digest();
|
|
7
|
-
}
|
|
8
|
-
function uriEncode(s) {
|
|
9
|
-
return encodeURIComponent(s).replace(/[!'()*]/g, c => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);
|
|
10
|
-
}
|
|
11
|
-
function amzDate(d) {
|
|
12
|
-
return d.toISOString().replace(/[-:]/g, '').replace(/\.\d{3}/, '');
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Signs a request with AWS Signature Version 4 and returns the headers to send:
|
|
16
|
-
* the given ones, `x-amz-date`, `x-amz-security-token` when the credentials carry
|
|
17
|
-
* a session token, and `authorization`. `host` is signed but not returned; the
|
|
18
|
-
* HTTP client sets it from the URL.
|
|
19
|
-
*/
|
|
20
|
-
export function signV4(req) {
|
|
21
|
-
const url = new URL(req.url);
|
|
22
|
-
const stamp = amzDate(req.now ?? new Date());
|
|
23
|
-
const day = stamp.slice(0, 8);
|
|
24
|
-
const headers = {};
|
|
25
|
-
for (const [name, value] of Object.entries(req.headers))
|
|
26
|
-
headers[name.toLowerCase()] = value.trim().replace(/\s+/g, ' ');
|
|
27
|
-
headers['x-amz-date'] = stamp;
|
|
28
|
-
if (req.credentials.sessionToken !== undefined)
|
|
29
|
-
headers['x-amz-security-token'] = req.credentials.sessionToken;
|
|
30
|
-
const signed = { ...headers, host: url.host };
|
|
31
|
-
const names = Object.keys(signed).sort();
|
|
32
|
-
const canonicalHeaders = names.map(n => `${n}:${signed[n]}\n`).join('');
|
|
33
|
-
const signedHeaders = names.join(';');
|
|
34
|
-
const canonicalPath = url.pathname.split('/').map(uriEncode).join('/');
|
|
35
|
-
const canonicalQuery = [...url.searchParams.entries()]
|
|
36
|
-
.map(([k, v]) => [uriEncode(k), uriEncode(v)])
|
|
37
|
-
.sort((a, b) => (a[0] === b[0] ? (a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : 0) : (a[0] < b[0] ? -1 : 1)))
|
|
38
|
-
.map(([k, v]) => `${k}=${v}`)
|
|
39
|
-
.join('&');
|
|
40
|
-
const canonicalRequest = [
|
|
41
|
-
req.method.toUpperCase(), canonicalPath, canonicalQuery, canonicalHeaders, signedHeaders, sha256Hex(req.body),
|
|
42
|
-
].join('\n');
|
|
43
|
-
const scope = `${day}/${req.region}/${req.service}/aws4_request`;
|
|
44
|
-
const stringToSign = ['AWS4-HMAC-SHA256', stamp, scope, sha256Hex(canonicalRequest)].join('\n');
|
|
45
|
-
const kDate = hmac(`AWS4${req.credentials.secretAccessKey}`, day);
|
|
46
|
-
const kRegion = hmac(kDate, req.region);
|
|
47
|
-
const kService = hmac(kRegion, req.service);
|
|
48
|
-
const kSigning = hmac(kService, 'aws4_request');
|
|
49
|
-
const signature = createHmac('sha256', kSigning).update(stringToSign).digest('hex');
|
|
50
|
-
return {
|
|
51
|
-
...headers,
|
|
52
|
-
authorization: `AWS4-HMAC-SHA256 Credential=${req.credentials.accessKeyId}/${scope}, SignedHeaders=${signedHeaders}, Signature=${signature}`,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=sigv4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sigv4.js","sourceRoot":"","sources":["../../../src/infra/email/sigv4.ts"],"names":[],"mappings":"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"}
|