pipework 0.260.0 → 0.261.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 +8 -0
- package/dist/infra/email/mail.d.ts +10 -5
- package/dist/infra/email/mail.d.ts.map +1 -1
- package/dist/infra/email/mail.js +21 -2
- package/dist/infra/email/mail.js.map +1 -1
- package/dist/request/context/guard.d.ts +1 -1
- package/dist/request/context/guard.d.ts.map +1 -1
- package/dist/request/context/guard.js +4 -2
- package/dist/request/context/guard.js.map +1 -1
- package/dist/request/context/run-in-transaction.d.ts +3 -0
- package/dist/request/context/run-in-transaction.d.ts.map +1 -1
- package/dist/request/context/run-in-transaction.js +10 -3
- package/dist/request/context/run-in-transaction.js.map +1 -1
- package/dist/request/context/types.d.ts +2 -0
- package/dist/request/context/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/infra/email/mail.ts +33 -6
- package/src/request/context/guard.ts +5 -1
- package/src/request/context/run-in-transaction.ts +10 -3
- package/src/request/context/types.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.261.0
|
|
4
|
+
|
|
5
|
+
- **Added: `MailConfig.unsubscribe.lists` names a list on the unsubscribe pages** (#916). `lists: { 'notice-digest': { name: 'emails about notices you haven’t read' } }` shows the name, escaped, in place of the list id on the confirm and done pages of `unsubscribeHttp()`. A list with no entry shows its id as before; `mail.create` refuses a key that is not a valid list name or an empty name, naming the key.
|
|
6
|
+
|
|
7
|
+
## 0.260.1
|
|
8
|
+
|
|
9
|
+
- **Fixed: an aborted `executeInTransaction` no longer commits when its transaction was idle at the abort** (#914). Aborting only cancelled a running query, so a handler awaiting a timer or an HTTP call resumed and committed. Now, when the run returns after its signal aborted, every transaction rolls back and the run rejects with `signal.reason`; `pipe()` refuses a statement on the aborted transaction with the same reason. Covers `jobs.execute(…, { signal })` and `checkpoint`.
|
|
10
|
+
|
|
3
11
|
## 0.260.0
|
|
4
12
|
|
|
5
13
|
- **Added: `idempotentRetry` retries transient socket faults on reads** (#912). `idempotentRetry.fetch(input, init, opts)` (GET, HEAD, OPTIONS only) retries the connect faults plus `UND_ERR_SOCKET` / `SocketError` ("other side closed"), `ECONNRESET`, `EPIPE` and `ETIMEDOUT`, three tries (250 ms, then 1 s); the body is read inside each try and returned buffered, so a fault mid-body is retried too. `idempotentRetry.call(send)` applies the same rule to any read the caller declares idempotent; `isTransientFault(err)` exposes the test. Never retried: a response of any status, a decode error, the caller's abort or timeout; the last fault is thrown unchanged. `connectRetry` is unchanged.
|
|
@@ -15,6 +15,13 @@ export interface EmailRenderMeta {
|
|
|
15
15
|
}
|
|
16
16
|
/** The app's templates: a function per name from the data (and the render meta) to the rendered message. */
|
|
17
17
|
export type EmailTemplates = Record<string, (data: any, meta: EmailRenderMeta) => RenderedEmail>;
|
|
18
|
+
export interface UnsubscribeOptions {
|
|
19
|
+
readonly url: string;
|
|
20
|
+
readonly secret: string;
|
|
21
|
+
readonly lists?: Readonly<Record<string, {
|
|
22
|
+
readonly name: string;
|
|
23
|
+
}>>;
|
|
24
|
+
}
|
|
18
25
|
export interface MailConfig<T extends EmailTemplates> {
|
|
19
26
|
readonly provider: MailProvider;
|
|
20
27
|
readonly templates: T;
|
|
@@ -32,12 +39,10 @@ export interface MailConfig<T extends EmailTemplates> {
|
|
|
32
39
|
/**
|
|
33
40
|
* One-click unsubscribe for mail sent with a `list`. `url` is the absolute https URL of the route `unsubscribeHttp()`
|
|
34
41
|
* serves (http is allowed outside production); `secret` signs the links, at least 32 characters and the same in every
|
|
35
|
-
* process. A `send` with a `list` throws when this is unset.
|
|
42
|
+
* process. A `send` with a `list` throws when this is unset. `lists` names a list on the unsubscribe pages, the name
|
|
43
|
+
* shown in place of the list id; a list with no entry shows its id.
|
|
36
44
|
*/
|
|
37
|
-
readonly unsubscribe?:
|
|
38
|
-
readonly url: string;
|
|
39
|
-
readonly secret: string;
|
|
40
|
-
};
|
|
45
|
+
readonly unsubscribe?: UnsubscribeOptions;
|
|
41
46
|
}
|
|
42
47
|
export interface SendInput<T extends EmailTemplates, K extends keyof T & string> {
|
|
43
48
|
readonly to: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../../src/infra/email/mail.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAUhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAGxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAMlD,uFAAuF;AACvF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,mFAAmF;AACnF,MAAM,WAAW,eAAe;IAC9B,wIAAwI;IACxI,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CACvC;AAED,4GAA4G;AAE5G,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,KAAK,aAAa,CAAC,CAAA;AAEhG,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,cAAc;IAClD,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAA;IACrB,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,oEAAoE;IACpE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,gFAAgF;IAChF,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,oGAAoG;IACpG,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC,4GAA4G;IAC5G,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B
|
|
1
|
+
{"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../../src/infra/email/mail.ts"],"names":[],"mappings":"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"}
|
package/dist/infra/email/mail.js
CHANGED
|
@@ -332,6 +332,24 @@ function validateUnsubscribe(options, environment) {
|
|
|
332
332
|
if (typeof options.secret !== 'string' || options.secret.length < MIN_UNSUBSCRIBE_SECRET) {
|
|
333
333
|
throw new Error(`[pipework] mail.create: unsubscribe.secret must be at least ${String(MIN_UNSUBSCRIBE_SECRET)} characters; use a long random value, the same in every process.`);
|
|
334
334
|
}
|
|
335
|
+
if (options.lists !== undefined) {
|
|
336
|
+
const lists = options.lists;
|
|
337
|
+
if (typeof lists !== 'object' || lists === null || Array.isArray(lists)) {
|
|
338
|
+
throw new Error('[pipework] mail.create: unsubscribe.lists must be an object of list id to { name }.');
|
|
339
|
+
}
|
|
340
|
+
for (const [key, entry] of Object.entries(lists)) {
|
|
341
|
+
if (!LIST_RE.test(key)) {
|
|
342
|
+
throw new Error(`[pipework] mail.create: unsubscribe.lists key ${JSON.stringify(key)} is not a valid list name.`);
|
|
343
|
+
}
|
|
344
|
+
if (typeof entry !== 'object' || entry === null || Array.isArray(entry)) {
|
|
345
|
+
throw new Error(`[pipework] mail.create: unsubscribe.lists.${key} must be an object { name }.`);
|
|
346
|
+
}
|
|
347
|
+
const name = entry.name;
|
|
348
|
+
if (typeof name !== 'string' || name.trim() === '') {
|
|
349
|
+
throw new Error(`[pipework] mail.create: unsubscribe.lists.${key}.name must be a non-empty string.`);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
335
353
|
}
|
|
336
354
|
const escapeHtml = (text) => text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, ''');
|
|
337
355
|
function htmlPage(title, body) {
|
|
@@ -343,6 +361,7 @@ function htmlPage(title, body) {
|
|
|
343
361
|
const INVALID_PAGE = htmlPage('Link not valid', '<p>This unsubscribe link is not valid. Use the link in the most recent email.</p>');
|
|
344
362
|
function unsubscribeRoutes(options, record) {
|
|
345
363
|
const path = new URL(options.url).pathname;
|
|
364
|
+
const shownList = (list) => options.lists !== undefined && Object.hasOwn(options.lists, list) ? (options.lists[list]?.name ?? list) : list;
|
|
346
365
|
const any = schema.check.unknown();
|
|
347
366
|
const tokenOf = (query) => query?.['t'];
|
|
348
367
|
const base = () => new Builder().public().request().response().query(any).params(any);
|
|
@@ -357,7 +376,7 @@ function unsubscribeRoutes(options, record) {
|
|
|
357
376
|
const named = verifyUnsubscribeToken(options.secret, tokenOf(query));
|
|
358
377
|
if (named === null)
|
|
359
378
|
return Promise.resolve(answer(response, 400, INVALID_PAGE));
|
|
360
|
-
return Promise.resolve(answer(response, 200, htmlPage('Unsubscribe', `<p>Stop receiving <strong>${escapeHtml(named.list)}</strong> email at <strong>${escapeHtml(named.address)}</strong>?</p>` +
|
|
379
|
+
return Promise.resolve(answer(response, 200, htmlPage('Unsubscribe', `<p>Stop receiving <strong>${escapeHtml(shownList(named.list))}</strong> email at <strong>${escapeHtml(named.address)}</strong>?</p>` +
|
|
361
380
|
`<form method="post" action="${escapeHtml(path)}?t=${escapeHtml(encodeURIComponent(String(tokenOf(query))))}">` +
|
|
362
381
|
`<input type="hidden" name="List-Unsubscribe" value="One-Click"><button type="submit">Unsubscribe</button></form>`)));
|
|
363
382
|
});
|
|
@@ -366,7 +385,7 @@ function unsubscribeRoutes(options, record) {
|
|
|
366
385
|
if (named === null)
|
|
367
386
|
return answer(response, 400, INVALID_PAGE);
|
|
368
387
|
await record(named.address, named.list);
|
|
369
|
-
return answer(response, 200, htmlPage('Unsubscribed', `<p>You will no longer receive <strong>${escapeHtml(named.list)}</strong> email at <strong>${escapeHtml(named.address)}</strong>.</p>`));
|
|
388
|
+
return answer(response, 200, htmlPage('Unsubscribed', `<p>You will no longer receive <strong>${escapeHtml(shownList(named.list))}</strong> email at <strong>${escapeHtml(named.address)}</strong>.</p>`));
|
|
370
389
|
});
|
|
371
390
|
return [get, post];
|
|
372
391
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mail.js","sourceRoot":"","sources":["../../../src/infra/email/mail.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mail.js","sourceRoot":"","sources":["../../../src/infra/email/mail.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Flow, BoundTransaction } from './types.js';
|
|
2
2
|
import type { DB } from '../../data/db/index.js';
|
|
3
3
|
export declare function verifyTransactionBinding(ctx: Flow, bound: BoundTransaction, dbName: string): void;
|
|
4
|
-
export declare function bindTransaction(ctx: Flow, dbName: string, drizzle: DB): BoundTransaction;
|
|
4
|
+
export declare function bindTransaction(ctx: Flow, dbName: string, drizzle: DB, signal?: AbortSignal): BoundTransaction;
|
|
5
5
|
//# sourceMappingURL=guard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../../src/request/context/guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAGhD,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,IAAI,EACT,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,MAAM,GACb,IAAI,
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../../src/request/context/guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAGhD,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,IAAI,EACT,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,MAAM,GACb,IAAI,CAkCN;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,IAAI,EACT,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,EAAE,EACX,MAAM,CAAC,EAAE,WAAW,GACnB,gBAAgB,CAGlB"}
|
|
@@ -28,8 +28,10 @@ export function verifyTransactionBinding(ctx, bound, dbName) {
|
|
|
28
28
|
requestId: ctx.requestId,
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
|
+
bound.signal?.throwIfAborted();
|
|
31
32
|
}
|
|
32
|
-
export function bindTransaction(ctx, dbName, drizzle) {
|
|
33
|
-
|
|
33
|
+
export function bindTransaction(ctx, dbName, drizzle, signal) {
|
|
34
|
+
const bound = { drizzle, nonce: ctx._nonce, tenant: ctx.tenant };
|
|
35
|
+
return signal === undefined ? bound : { ...bound, signal };
|
|
34
36
|
}
|
|
35
37
|
//# sourceMappingURL=guard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../../src/request/context/guard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAE/D,MAAM,UAAU,wBAAwB,CACtC,GAAS,EACT,KAAuB,EACvB,MAAc;IAEd,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,IAAI,kBAAkB,CAAC,wBAAwB,EAAE;YACrD,OAAO,EACL,iCAAiC,MAAM,iDAAiD;gBACxF,2FAA2F;gBAC3F,uFAAuF;YACzF,gBAAgB,EAAE,KAAK,CAAC,KAAK;YAC7B,YAAY,EAAE,GAAG,CAAC,MAAM;YACxB,QAAQ,EAAE,MAAM;YAChB,aAAa,EAAE,GAAG,CAAC,MAAM;YACzB,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,kBAAkB,CAAC,yBAAyB,EAAE;YACtD,OAAO,EACL,iCAAiC,MAAM,6BAA6B,KAAK,CAAC,MAAM,IAAI;gBACpF,uCAAuC,GAAG,CAAC,MAAM,yCAAyC;gBAC1F,qEAAqE;gBACrE,yEAAyE;gBACzE,4DAA4D;gBAC5D,kFAAkF;gBAClF,uDAAuD;gBACvD,QAAQ;YACV,iBAAiB,EAAE,KAAK,CAAC,MAAM;YAC/B,aAAa,EAAE,GAAG,CAAC,MAAM;YACzB,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAC,CAAA;IACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"guard.js","sourceRoot":"","sources":["../../../src/request/context/guard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAE/D,MAAM,UAAU,wBAAwB,CACtC,GAAS,EACT,KAAuB,EACvB,MAAc;IAEd,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,IAAI,kBAAkB,CAAC,wBAAwB,EAAE;YACrD,OAAO,EACL,iCAAiC,MAAM,iDAAiD;gBACxF,2FAA2F;gBAC3F,uFAAuF;YACzF,gBAAgB,EAAE,KAAK,CAAC,KAAK;YAC7B,YAAY,EAAE,GAAG,CAAC,MAAM;YACxB,QAAQ,EAAE,MAAM;YAChB,aAAa,EAAE,GAAG,CAAC,MAAM;YACzB,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,kBAAkB,CAAC,yBAAyB,EAAE;YACtD,OAAO,EACL,iCAAiC,MAAM,6BAA6B,KAAK,CAAC,MAAM,IAAI;gBACpF,uCAAuC,GAAG,CAAC,MAAM,yCAAyC;gBAC1F,qEAAqE;gBACrE,yEAAyE;gBACzE,4DAA4D;gBAC5D,kFAAkF;gBAClF,uDAAuD;gBACvD,QAAQ;YACV,iBAAiB,EAAE,KAAK,CAAC,MAAM;YAC/B,aAAa,EAAE,GAAG,CAAC,MAAM;YACzB,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,GAAS,EACT,MAAc,EACd,OAAW,EACX,MAAoB;IAEpB,MAAM,KAAK,GAAqB,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAA;IAClF,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAA;AAC5D,CAAC"}
|
|
@@ -15,6 +15,9 @@ import type { TenantConfig } from '../../auth/tenant/types.js';
|
|
|
15
15
|
* With a `signal`, aborting cancels each transaction's in-flight query on the
|
|
16
16
|
* server (`pg_cancel_backend`), so the query fails, the transaction rolls back
|
|
17
17
|
* and the connection returns to the pool instead of being held to completion.
|
|
18
|
+
* Aborting also rolls back a transaction that was idle at the abort: the run
|
|
19
|
+
* rejects with `signal.reason` instead of committing, and `pipe()` refuses the
|
|
20
|
+
* aborted transaction.
|
|
18
21
|
*/
|
|
19
22
|
export declare function executeInTransaction<T>(ctx: Flow, databases: readonly string[], tenant: TenantConfig | null, timeoutMs: number, run: () => Promise<T>, signal?: AbortSignal): Promise<T>;
|
|
20
23
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-in-transaction.d.ts","sourceRoot":"","sources":["../../../src/request/context/run-in-transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,EAAE,EAAqB,MAAM,wBAAwB,CAAA;AACnE,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,4BAA4B,CAAA;AAM7E
|
|
1
|
+
{"version":3,"file":"run-in-transaction.d.ts","sourceRoot":"","sources":["../../../src/request/context/run-in-transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,EAAE,EAAE,EAAqB,MAAM,wBAAwB,CAAA;AACnE,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,4BAA4B,CAAA;AAM7E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,GAAG,EAAE,IAAI,EACT,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,MAAM,EAAE,YAAY,GAAG,IAAI,EAC3B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACrB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,CAAC,CAAC,CAyGZ;AAoCD;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,GAAG,EAAE,IAAI,EACT,MAAM,EAAE,YAAY,GAAG,IAAI,GAC1B,OAAO,CAAC,IAAI,CAAC,CAuBf"}
|
|
@@ -16,6 +16,9 @@ import { runInContext } from './store.js';
|
|
|
16
16
|
* With a `signal`, aborting cancels each transaction's in-flight query on the
|
|
17
17
|
* server (`pg_cancel_backend`), so the query fails, the transaction rolls back
|
|
18
18
|
* and the connection returns to the pool instead of being held to completion.
|
|
19
|
+
* Aborting also rolls back a transaction that was idle at the abort: the run
|
|
20
|
+
* rejects with `signal.reason` instead of committing, and `pipe()` refuses the
|
|
21
|
+
* aborted transaction.
|
|
19
22
|
*/
|
|
20
23
|
export async function executeInTransaction(ctx, databases, tenant, timeoutMs, run, signal) {
|
|
21
24
|
const instance = ctx.instance;
|
|
@@ -28,11 +31,14 @@ export async function executeInTransaction(ctx, databases, tenant, timeoutMs, ru
|
|
|
28
31
|
...ctx,
|
|
29
32
|
transactions: new Map(ctx.transactions),
|
|
30
33
|
};
|
|
31
|
-
childCtx.transactions.set(dbName, bindTransaction(ctx, dbName, tx));
|
|
34
|
+
childCtx.transactions.set(dbName, bindTransaction(ctx, dbName, tx, signal));
|
|
32
35
|
await propagateLocals(tx, ctx, tenant);
|
|
33
36
|
const disarm = await armCancellation(conn, tx, signal);
|
|
34
37
|
try {
|
|
35
|
-
|
|
38
|
+
const result = await runInContext(childCtx, run);
|
|
39
|
+
// Idle at the abort, nothing failed: throwing here rolls back instead of committing.
|
|
40
|
+
signal?.throwIfAborted();
|
|
41
|
+
return result;
|
|
36
42
|
}
|
|
37
43
|
finally {
|
|
38
44
|
disarm();
|
|
@@ -61,7 +67,7 @@ export async function executeInTransaction(ctx, databases, tenant, timeoutMs, ru
|
|
|
61
67
|
let signalReady;
|
|
62
68
|
readyPromises.push(new Promise(r => { signalReady = r; }));
|
|
63
69
|
txPromises.push(conn.drizzle.transaction(async (tx) => {
|
|
64
|
-
childCtx.transactions.set(dbName, bindTransaction(ctx, dbName, tx));
|
|
70
|
+
childCtx.transactions.set(dbName, bindTransaction(ctx, dbName, tx, signal));
|
|
65
71
|
await propagateLocals(tx, ctx, tenant);
|
|
66
72
|
disarms.push(await armCancellation(conn, tx, signal));
|
|
67
73
|
readyDatabases.add(dbName);
|
|
@@ -93,6 +99,7 @@ export async function executeInTransaction(ctx, databases, tenant, timeoutMs, ru
|
|
|
93
99
|
}
|
|
94
100
|
try {
|
|
95
101
|
const result = await runInContext(childCtx, run);
|
|
102
|
+
signal?.throwIfAborted();
|
|
96
103
|
releaseAll();
|
|
97
104
|
await Promise.all(txPromises);
|
|
98
105
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-in-transaction.js","sourceRoot":"","sources":["../../../src/request/context/run-in-transaction.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC
|
|
1
|
+
{"version":3,"file":"run-in-transaction.js","sourceRoot":"","sources":["../../../src/request/context/run-in-transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ export interface BoundTransaction {
|
|
|
7
7
|
readonly drizzle: DB;
|
|
8
8
|
readonly nonce: string;
|
|
9
9
|
readonly tenant: string | null;
|
|
10
|
+
/** Aborts the transaction: `pipe()` refuses it once aborted. */
|
|
11
|
+
readonly signal?: AbortSignal;
|
|
10
12
|
}
|
|
11
13
|
/** The AsyncLocalStorage context — carries requestId, auth, tenant, active transactions, and a nonce for integrity checks. */
|
|
12
14
|
export interface Flow<TAuth = unknown> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/request/context/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AAEtE,+GAA+G;AAC/G,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/request/context/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAA;AAEtE,+GAA+G;AAC/G,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,gEAAgE;IAChE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAC9B;AAED,8HAA8H;AAC9H,MAAM,WAAW,IAAI,CAAC,KAAK,GAAG,OAAO;IACnC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,4FAA4F;IAC5F,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,sHAAsH;IACtH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAA;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,0HAA0H;IAC1H,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,kFAAkF;IAClF,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAA;IAC1C,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACpD,6EAA6E;IAC7E,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;CACpC;AAED,mFAAmF;AACnF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC"}
|
package/package.json
CHANGED
package/src/infra/email/mail.ts
CHANGED
|
@@ -36,6 +36,12 @@ export interface EmailRenderMeta {
|
|
|
36
36
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- each template has its own data type; `send` checks it per name
|
|
37
37
|
export type EmailTemplates = Record<string, (data: any, meta: EmailRenderMeta) => RenderedEmail>
|
|
38
38
|
|
|
39
|
+
export interface UnsubscribeOptions {
|
|
40
|
+
readonly url: string
|
|
41
|
+
readonly secret: string
|
|
42
|
+
readonly lists?: Readonly<Record<string, { readonly name: string }>>
|
|
43
|
+
}
|
|
44
|
+
|
|
39
45
|
export interface MailConfig<T extends EmailTemplates> {
|
|
40
46
|
readonly provider: MailProvider
|
|
41
47
|
readonly templates: T
|
|
@@ -53,9 +59,10 @@ export interface MailConfig<T extends EmailTemplates> {
|
|
|
53
59
|
/**
|
|
54
60
|
* One-click unsubscribe for mail sent with a `list`. `url` is the absolute https URL of the route `unsubscribeHttp()`
|
|
55
61
|
* serves (http is allowed outside production); `secret` signs the links, at least 32 characters and the same in every
|
|
56
|
-
* process. A `send` with a `list` throws when this is unset.
|
|
62
|
+
* process. A `send` with a `list` throws when this is unset. `lists` names a list on the unsubscribe pages, the name
|
|
63
|
+
* shown in place of the list id; a list with no entry shows its id.
|
|
57
64
|
*/
|
|
58
|
-
readonly unsubscribe?:
|
|
65
|
+
readonly unsubscribe?: UnsubscribeOptions
|
|
59
66
|
}
|
|
60
67
|
|
|
61
68
|
export interface SendInput<T extends EmailTemplates, K extends keyof T & string> {
|
|
@@ -459,7 +466,7 @@ function requireList(list: string): void {
|
|
|
459
466
|
}
|
|
460
467
|
}
|
|
461
468
|
|
|
462
|
-
function validateUnsubscribe(options:
|
|
469
|
+
function validateUnsubscribe(options: UnsubscribeOptions, environment: string | undefined): void {
|
|
463
470
|
let parsed: URL | null = null
|
|
464
471
|
try { parsed = new URL(options.url) } catch { /* reported below */ }
|
|
465
472
|
const allowed = environment === 'production' ? ['https:'] : ['https:', 'http:']
|
|
@@ -469,6 +476,24 @@ function validateUnsubscribe(options: { readonly url: string; readonly secret: s
|
|
|
469
476
|
if (typeof options.secret !== 'string' || options.secret.length < MIN_UNSUBSCRIBE_SECRET) {
|
|
470
477
|
throw new Error(`[pipework] mail.create: unsubscribe.secret must be at least ${String(MIN_UNSUBSCRIBE_SECRET)} characters; use a long random value, the same in every process.`)
|
|
471
478
|
}
|
|
479
|
+
if (options.lists !== undefined) {
|
|
480
|
+
const lists: unknown = options.lists
|
|
481
|
+
if (typeof lists !== 'object' || lists === null || Array.isArray(lists)) {
|
|
482
|
+
throw new Error('[pipework] mail.create: unsubscribe.lists must be an object of list id to { name }.')
|
|
483
|
+
}
|
|
484
|
+
for (const [key, entry] of Object.entries(lists)) {
|
|
485
|
+
if (!LIST_RE.test(key)) {
|
|
486
|
+
throw new Error(`[pipework] mail.create: unsubscribe.lists key ${JSON.stringify(key)} is not a valid list name.`)
|
|
487
|
+
}
|
|
488
|
+
if (typeof entry !== 'object' || entry === null || Array.isArray(entry)) {
|
|
489
|
+
throw new Error(`[pipework] mail.create: unsubscribe.lists.${key} must be an object { name }.`)
|
|
490
|
+
}
|
|
491
|
+
const name: unknown = (entry as { name?: unknown }).name
|
|
492
|
+
if (typeof name !== 'string' || name.trim() === '') {
|
|
493
|
+
throw new Error(`[pipework] mail.create: unsubscribe.lists.${key}.name must be a non-empty string.`)
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
}
|
|
472
497
|
}
|
|
473
498
|
|
|
474
499
|
const escapeHtml = (text: string): string =>
|
|
@@ -484,10 +509,12 @@ function htmlPage(title: string, body: string): string {
|
|
|
484
509
|
const INVALID_PAGE = htmlPage('Link not valid', '<p>This unsubscribe link is not valid. Use the link in the most recent email.</p>')
|
|
485
510
|
|
|
486
511
|
function unsubscribeRoutes(
|
|
487
|
-
options:
|
|
512
|
+
options: UnsubscribeOptions,
|
|
488
513
|
record: (address: string, list: string) => Promise<void>,
|
|
489
514
|
): Handler<Record<string, unknown>, unknown>[] {
|
|
490
515
|
const path = new URL(options.url).pathname
|
|
516
|
+
const shownList = (list: string): string =>
|
|
517
|
+
options.lists !== undefined && Object.hasOwn(options.lists, list) ? (options.lists[list]?.name ?? list) : list
|
|
491
518
|
const any = schema.check.unknown()
|
|
492
519
|
const tokenOf = (query: unknown): unknown => (query as Record<string, unknown> | null | undefined)?.['t']
|
|
493
520
|
const base = () => new Builder().public().request().response().query(any).params(any)
|
|
@@ -502,7 +529,7 @@ function unsubscribeRoutes(
|
|
|
502
529
|
const named = verifyUnsubscribeToken(options.secret, tokenOf(query))
|
|
503
530
|
if (named === null) return Promise.resolve(answer(response, 400, INVALID_PAGE))
|
|
504
531
|
return Promise.resolve(answer(response, 200, htmlPage('Unsubscribe',
|
|
505
|
-
`<p>Stop receiving <strong>${escapeHtml(named.list)}</strong> email at <strong>${escapeHtml(named.address)}</strong>?</p>` +
|
|
532
|
+
`<p>Stop receiving <strong>${escapeHtml(shownList(named.list))}</strong> email at <strong>${escapeHtml(named.address)}</strong>?</p>` +
|
|
506
533
|
`<form method="post" action="${escapeHtml(path)}?t=${escapeHtml(encodeURIComponent(String(tokenOf(query))))}">` +
|
|
507
534
|
`<input type="hidden" name="List-Unsubscribe" value="One-Click"><button type="submit">Unsubscribe</button></form>`)))
|
|
508
535
|
})
|
|
@@ -511,7 +538,7 @@ function unsubscribeRoutes(
|
|
|
511
538
|
if (named === null) return answer(response, 400, INVALID_PAGE)
|
|
512
539
|
await record(named.address, named.list)
|
|
513
540
|
return answer(response, 200, htmlPage('Unsubscribed',
|
|
514
|
-
`<p>You will no longer receive <strong>${escapeHtml(named.list)}</strong> email at <strong>${escapeHtml(named.address)}</strong>.</p>`))
|
|
541
|
+
`<p>You will no longer receive <strong>${escapeHtml(shownList(named.list))}</strong> email at <strong>${escapeHtml(named.address)}</strong>.</p>`))
|
|
515
542
|
})
|
|
516
543
|
return [get, post] as unknown as Handler<Record<string, unknown>, unknown>[]
|
|
517
544
|
}
|
|
@@ -38,12 +38,16 @@ export function verifyTransactionBinding(
|
|
|
38
38
|
requestId: ctx.requestId,
|
|
39
39
|
})
|
|
40
40
|
}
|
|
41
|
+
|
|
42
|
+
bound.signal?.throwIfAborted()
|
|
41
43
|
}
|
|
42
44
|
|
|
43
45
|
export function bindTransaction(
|
|
44
46
|
ctx: Flow,
|
|
45
47
|
dbName: string,
|
|
46
48
|
drizzle: DB,
|
|
49
|
+
signal?: AbortSignal,
|
|
47
50
|
): BoundTransaction {
|
|
48
|
-
|
|
51
|
+
const bound: BoundTransaction = { drizzle, nonce: ctx._nonce, tenant: ctx.tenant }
|
|
52
|
+
return signal === undefined ? bound : { ...bound, signal }
|
|
49
53
|
}
|
|
@@ -20,6 +20,9 @@ import { runInContext } from './store.js'
|
|
|
20
20
|
* With a `signal`, aborting cancels each transaction's in-flight query on the
|
|
21
21
|
* server (`pg_cancel_backend`), so the query fails, the transaction rolls back
|
|
22
22
|
* and the connection returns to the pool instead of being held to completion.
|
|
23
|
+
* Aborting also rolls back a transaction that was idle at the abort: the run
|
|
24
|
+
* rejects with `signal.reason` instead of committing, and `pipe()` refuses the
|
|
25
|
+
* aborted transaction.
|
|
23
26
|
*/
|
|
24
27
|
export async function executeInTransaction<T>(
|
|
25
28
|
ctx: Flow,
|
|
@@ -41,13 +44,16 @@ export async function executeInTransaction<T>(
|
|
|
41
44
|
...ctx,
|
|
42
45
|
transactions: new Map(ctx.transactions),
|
|
43
46
|
}
|
|
44
|
-
childCtx.transactions.set(dbName, bindTransaction(ctx, dbName, tx))
|
|
47
|
+
childCtx.transactions.set(dbName, bindTransaction(ctx, dbName, tx, signal))
|
|
45
48
|
|
|
46
49
|
await propagateLocals(tx, ctx, tenant)
|
|
47
50
|
|
|
48
51
|
const disarm = await armCancellation(conn, tx, signal)
|
|
49
52
|
try {
|
|
50
|
-
|
|
53
|
+
const result = await runInContext(childCtx, run)
|
|
54
|
+
// Idle at the abort, nothing failed: throwing here rolls back instead of committing.
|
|
55
|
+
signal?.throwIfAborted()
|
|
56
|
+
return result
|
|
51
57
|
} finally {
|
|
52
58
|
disarm()
|
|
53
59
|
}
|
|
@@ -82,7 +88,7 @@ export async function executeInTransaction<T>(
|
|
|
82
88
|
|
|
83
89
|
txPromises.push(
|
|
84
90
|
conn.drizzle.transaction(async (tx) => {
|
|
85
|
-
childCtx.transactions.set(dbName, bindTransaction(ctx, dbName, tx))
|
|
91
|
+
childCtx.transactions.set(dbName, bindTransaction(ctx, dbName, tx, signal))
|
|
86
92
|
await propagateLocals(tx, ctx, tenant)
|
|
87
93
|
disarms.push(await armCancellation(conn, tx, signal))
|
|
88
94
|
readyDatabases.add(dbName)
|
|
@@ -119,6 +125,7 @@ export async function executeInTransaction<T>(
|
|
|
119
125
|
|
|
120
126
|
try {
|
|
121
127
|
const result = await runInContext(childCtx, run)
|
|
128
|
+
signal?.throwIfAborted()
|
|
122
129
|
releaseAll()
|
|
123
130
|
await Promise.all(txPromises)
|
|
124
131
|
return result
|
|
@@ -8,6 +8,8 @@ export interface BoundTransaction {
|
|
|
8
8
|
readonly drizzle: DB
|
|
9
9
|
readonly nonce: string
|
|
10
10
|
readonly tenant: string | null
|
|
11
|
+
/** Aborts the transaction: `pipe()` refuses it once aborted. */
|
|
12
|
+
readonly signal?: AbortSignal
|
|
11
13
|
}
|
|
12
14
|
|
|
13
15
|
/** The AsyncLocalStorage context — carries requestId, auth, tenant, active transactions, and a nonce for integrity checks. */
|