pipework 0.108.0 → 0.109.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 CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.109.0
4
+
5
+ - **New: the dead-letter alert source can be limited to, or leave out, job types** (#583). `alerts.source.deadLetter({ types })` raises `job-dead-letter:<type>` only for those types, `{ excludeTypes }` for every other type (not both; neither empty), so an app that already alerts on some job types is not told twice. Each filter keeps its own position in `pipework_alert_source_state`; an unfiltered source keeps its existing one. It also takes `owner` and `runbook`, and its conditions carry a context `{ count, lastError }`.
6
+
3
7
  ## 0.108.0
4
8
 
5
9
  - **New: `alerts.clientFaults(handle, { path, apps, key?, cors?, rateLimit? })`, an intake for failures browser code reports** (#579). One POST route that answers 204, needs no session (and uses the tenant and user when there is one), and takes a strict, capped body: `app` (a key of `apps`), `where`, `kind` (`error`, `rejection`, `render` or `request`), `severity` (`warning` or `error`, default `error`), `code`, `message` (≤ 500), `stack` (≤ 4 KB), `route` (a route pattern, never a page URL), `release`, `traceId`. A body that breaks it is a 400 and raises nothing. Each report is a trace step `pipework/alerts:client-fault` capturing it, and raises `client-fault:<app>:<where>` (or `key(report)`) with the app's owner and runbook; repeats group like any alert. The stack stays in the step, not the alert. A failed raise is logged and still answers 204.
package/REFERENCE.md CHANGED
@@ -1503,7 +1503,7 @@ Each step is an audit record under the open trace step, `entity_id` the key: `Al
1503
1503
 
1504
1504
  Pass in `sources`; each raises with a fixed key on a tick and, where it can tell, resolves when the condition is gone.
1505
1505
 
1506
- - `alerts.source.deadLetter({ table?, severity? = 'error' })` — `job-dead-letter:<jobType>` for jobs dead-lettered since the previous evaluation (the first evaluation starts from now). It cannot tell when the trouble ends, so set `resolveAfterQuietMs`.
1506
+ - `alerts.source.deadLetter({ table?, severity? = 'error', types?, excludeTypes?, owner?, runbook? })` — `job-dead-letter:<jobType>` for jobs dead-lettered since the previous evaluation (the first evaluation starts from now), limited to `types` or without `excludeTypes` (not both, neither empty; each filter keeps its own position). Conditions carry `owner`, `runbook` and a context of `count` and `lastError`. It cannot tell when the trouble ends, so set `resolveAfterQuietMs`.
1507
1507
  - `alerts.source.longRunning({ olderThanMs, table?, severity? = 'warning' })` — `job-long-running:<jobType>` while a job has been claimed longer; resolves when none is.
1508
1508
  - `alerts.source.backlog({ maxPending?, maxOldestAgeMs?, table?, severity? = 'warning', owner?, runbook? })` — `queue-backlog:<jobType>` while that type has more jobs ready to claim than `maxPending`, or the oldest has waited longer than `maxOldestAgeMs`; resolves when under both. The alert carries `owner`, `runbook` and a context `{ ready, running, oldestReadyWaitMs }`. A custom `AlertSource` condition may set `owner`, `runbook` and `context` too.
1509
1509
  - `queue.totals(db)` — `{ overall, byType }`, each `{ ready, running, oldestReadyWaitMs }` (ready: pending and not waiting on a retry time; running: claimed or running; wait from `queued_at`, null when none is ready); `byType` omits a type with neither.
@@ -32,10 +32,16 @@ interface TableOption {
32
32
  * Raises `job-dead-letter:<jobType>` for jobs that exhausted their attempts since the last
33
33
  * evaluation (any process: the position is kept in `pipework_alert_source_state`; the first
34
34
  * evaluation starts from now, so history is not replayed). The condition clears only by the
35
- * handle's quiet period, so set `resolveAfterQuietMs` on `alerts.create`.
35
+ * handle's quiet period, so set `resolveAfterQuietMs` on `alerts.create`. `types` limits it to those job
36
+ * types and `excludeTypes` leaves them out (not both, neither empty); each filter keeps its own position.
37
+ * Conditions carry `owner`, `runbook` and a context of `count` and `lastError`.
36
38
  */
37
39
  export declare function deadLetterSource(options?: TableOption & {
38
40
  severity?: AlertSeverity;
41
+ types?: readonly string[];
42
+ excludeTypes?: readonly string[];
43
+ owner?: string;
44
+ runbook?: string;
39
45
  }): AlertSource;
40
46
  /** Raises `job-long-running:<jobType>` while a job of that type has been claimed for longer than `olderThanMs`; resolves when none is. */
41
47
  export declare function longRunningSource(options: TableOption & {
@@ -1 +1 @@
1
- {"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../../src/infra/alerts/sources.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE3D,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5E,gHAAgH;IAChH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;CACvD;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IAC3B,QAAQ,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;CACtC;AAED,UAAU,WAAW;IAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;AAQ7E;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,WAAW,GAAG;IAAE,QAAQ,CAAC,EAAE,aAAa,CAAA;CAAO,GAAG,WAAW,CAiCtG;AAED,0IAA0I;AAC1I,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;CAAE,GAAG,WAAW,CAqBvH;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAsC9K;AAED,oIAAoI;AACpI,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,aAAa,CAAA;CAAO,GAAG,WAAW,CAqBpH"}
1
+ {"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../../src/infra/alerts/sources.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE3D,iDAAiD;AACjD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC5E,gHAAgH;IAChH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;CACvD;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IAC3B,QAAQ,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;CACtC;AAED,UAAU,WAAW;IAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE;AAQ7E;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,WAAW,GAAG;IAAE,QAAQ,CAAC,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,WAAW,CAqDrM;AAED,0IAA0I;AAC1I,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,CAAA;CAAE,GAAG,WAAW,CAqBvH;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,CAsC9K;AAED,oIAAoI;AACpI,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,aAAa,CAAA;CAAO,GAAG,WAAW,CAqBpH"}
@@ -1,3 +1,4 @@
1
+ import { createHash } from 'node:crypto';
1
2
  import { sql } from '../../data/db/sql.js';
2
3
  import { pipeSystem } from '../../data/db/db.js';
3
4
  import { assertValidIdentifier, quoteIdentifier } from '../../data/db/identifiers.js';
@@ -10,32 +11,51 @@ function jobsTable(table) {
10
11
  * Raises `job-dead-letter:<jobType>` for jobs that exhausted their attempts since the last
11
12
  * evaluation (any process: the position is kept in `pipework_alert_source_state`; the first
12
13
  * evaluation starts from now, so history is not replayed). The condition clears only by the
13
- * handle's quiet period, so set `resolveAfterQuietMs` on `alerts.create`.
14
+ * handle's quiet period, so set `resolveAfterQuietMs` on `alerts.create`. `types` limits it to those job
15
+ * types and `excludeTypes` leaves them out (not both, neither empty); each filter keeps its own position.
16
+ * Conditions carry `owner`, `runbook` and a context of `count` and `lastError`.
14
17
  */
15
18
  export function deadLetterSource(options = {}) {
19
+ if (options.types !== undefined && options.excludeTypes !== undefined) {
20
+ throw new Error('[pipework] alerts.source.deadLetter takes types or excludeTypes, not both.');
21
+ }
22
+ for (const opt of ['types', 'excludeTypes']) {
23
+ if (options[opt] !== undefined && options[opt].length === 0) {
24
+ throw new Error(`[pipework] alerts.source.deadLetter ${opt} must not be empty; omit it to include every job type.`);
25
+ }
26
+ }
16
27
  const jobs = jobsTable(options.table);
17
28
  const severity = options.severity ?? 'error';
18
29
  const name = 'job-dead-letter';
30
+ const mode = options.types !== undefined ? 'only' : options.excludeTypes !== undefined ? 'except' : null;
31
+ const listed = [...new Set(options.types ?? options.excludeTypes ?? [])].sort();
32
+ const joined = listed.join(',');
33
+ const stateKey = mode === null ? name
34
+ : `${name}:${mode}:${joined.length > 200 ? createHash('sha256').update(joined).digest('hex') : joined}`;
35
+ const listJson = JSON.stringify(listed);
36
+ const typeFilter = mode === 'only' ? sql `AND j.job_type IN (SELECT jsonb_array_elements_text(${listJson}::jsonb))`
37
+ : mode === 'except' ? sql `AND j.job_type NOT IN (SELECT jsonb_array_elements_text(${listJson}::jsonb))`
38
+ : sql ``;
19
39
  return {
20
40
  name,
21
41
  async evaluate() {
22
42
  const db = pipeSystem(options.database);
23
43
  const first = await db.execute(sql `
24
- INSERT INTO pipework_alert_source_state (name, cursor_at) VALUES (${name}, clock_timestamp())
44
+ INSERT INTO pipework_alert_source_state (name, cursor_at) VALUES (${stateKey}, clock_timestamp())
25
45
  ON CONFLICT (name) DO NOTHING RETURNING name`);
26
46
  if (first.length > 0)
27
47
  return [];
28
48
  const rows = await db.execute(sql `
29
- WITH cur AS (SELECT cursor_at FROM pipework_alert_source_state WHERE name = ${name} FOR UPDATE),
49
+ WITH cur AS (SELECT cursor_at FROM pipework_alert_source_state WHERE name = ${stateKey} FOR UPDATE),
30
50
  found AS (
31
51
  SELECT j.job_type, count(*)::int AS n, max(j.completed_at) AS hi,
32
52
  (array_agg(j.error_payload->>'message' ORDER BY j.completed_at DESC))[1] AS last_error
33
53
  FROM ${sql.raw(jobs)} j, cur
34
- WHERE j.status = 'dead_letter' AND j.completed_at > cur.cursor_at
54
+ WHERE j.status = 'dead_letter' AND j.completed_at > cur.cursor_at ${typeFilter}
35
55
  GROUP BY j.job_type),
36
56
  moved AS (
37
57
  UPDATE pipework_alert_source_state s SET cursor_at = GREATEST(s.cursor_at, (SELECT max(hi) FROM found))
38
- WHERE s.name = ${name} AND EXISTS (SELECT 1 FROM found) RETURNING 1)
58
+ WHERE s.name = ${stateKey} AND EXISTS (SELECT 1 FROM found) RETURNING 1)
39
59
  SELECT job_type, n, last_error, (SELECT count(*) FROM moved) AS moved FROM found ORDER BY job_type`);
40
60
  return rows.map(r => ({
41
61
  key: `job-dead-letter:${String(r['job_type'])}`,
@@ -43,6 +63,9 @@ export function deadLetterSource(options = {}) {
43
63
  message: `${String(r['n'])} ${String(r['job_type'])} job(s) dead-lettered`
44
64
  + (r['last_error'] !== null && r['last_error'] !== undefined ? `; last error: ${String(r['last_error'])}` : ''),
45
65
  subject: { entity: 'job', entityId: String(r['job_type']) },
66
+ ...(options.owner !== undefined ? { owner: options.owner } : {}),
67
+ ...(options.runbook !== undefined ? { runbook: options.runbook } : {}),
68
+ context: { count: Number(r['n']), lastError: r['last_error'] === null || r['last_error'] === undefined ? null : String(r['last_error']) },
46
69
  }));
47
70
  },
48
71
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../../src/infra/alerts/sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AA4BrF,SAAS,SAAS,CAAC,KAAyB;IAC1C,MAAM,IAAI,GAAG,KAAK,IAAI,eAAe,CAAA;IACrC,qBAAqB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;IAC1C,OAAO,eAAe,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;AAC7C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAsD,EAAE;IACvF,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAA;IAC5C,MAAM,IAAI,GAAG,iBAAiB,CAAA;IAC9B,OAAO;QACL,IAAI;QACJ,KAAK,CAAC,QAAQ;YACZ,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YACvC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;4EACoC,IAAI;qDAC3B,CAAC,CAAA;YAChD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,EAAE,CAAA;YAC/B,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;sFAC+C,IAAI;;;;iBAIzE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;;;;;2BAKH,IAAI;2GAC4E,CAAC,CAAA;YACtG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,GAAG,EAAE,mBAAmB,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;gBAC/C,QAAQ;gBACR,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,uBAAuB;sBACtE,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjH,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;aAC5D,CAAC,CAAC,CAAA;QACL,CAAC;KACF,CAAA;AACH,CAAC;AAED,0IAA0I;AAC1I,MAAM,UAAU,iBAAiB,CAAC,OAAwE;IACxG,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAA;IAC9C,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAChD,KAAK,CAAC,QAAQ;YACZ,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAA;;eAElD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;;iDAEqB,OAAO,CAAC,WAAW;4CACxB,CAAC,CAAA;YACvC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpB,GAAG,EAAE,oBAAoB,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;gBAChD,QAAQ;gBACR,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,iCAAiC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM;gBAC1J,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;aAC5D,CAAC,CAAC,CAAA;QACL,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAmI;IAC/J,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAA;IAC/F,CAAC;IACD,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAA;IAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAA;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAA;IAC7C,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAC7C,KAAK,CAAC,QAAQ;YACZ,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,CAAA;;;;;;iBAMhD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;;;iBAGb,UAAU,6BAA6B,UAAU;iBACjD,MAAM,wCAAwC,MAAM;0BAC3C,CAAC,CAAA;YACrB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBAClB,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;gBACrC,OAAO;oBACL,GAAG,EAAE,iBAAiB,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;oBAC7C,QAAQ;oBACR,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,oBAAoB,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,6BAA6B,MAAM,CAAC,MAAM,CAAC,KAAK;oBAC3I,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE;oBAC3D,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChE,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,EAAE;iBAC7F,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC;AAED,oIAAoI;AACpI,MAAM,UAAU,YAAY,CAAC,MAA8B,EAAE,UAAwC,EAAE;IACrG,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAA;IAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACzD,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;QAC1B,KAAK,CAAC,QAAQ;YACZ,MAAM,KAAK,GAAqB,EAAE,CAAA;YAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,OAAO,GAAkB,IAAI,CAAA;gBACjC,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;oBAClC,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;wBAAE,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,gBAAgB,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;gBACvI,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,iBAAiB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAA;gBAC5F,CAAC;gBACD,IAAI,OAAO,KAAK,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,KAAK,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;YAC3I,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../../src/infra/alerts/sources.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pipework",
3
- "version": "0.108.0",
3
+ "version": "0.109.0",
4
4
  "description": "TypeScript framework for multi-tenant SaaS applications. PostgreSQL-only.",
5
5
  "type": "module",
6
6
  "license": "MIT",