@dbx-tools/tunnel 0.6.63 → 0.6.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -6
- package/lib/src/send-code.js +6 -2
- package/package.json +6 -6
- package/src/send-code.ts +6 -2
package/README.md
CHANGED
|
@@ -42,8 +42,9 @@ gating middleware on the app's OWN Express server (no separate proxy process).
|
|
|
42
42
|
snippet - nothing else - so a code that lives only in the body is unreachable
|
|
43
43
|
however cleanly the body is shaped. See
|
|
44
44
|
[Why the code is in the subject](#why-the-code-is-in-the-subject).
|
|
45
|
-
- The two MIME parts are built separately, on purpose. The HTML
|
|
46
|
-
|
|
45
|
+
- The two MIME parts are built separately, on purpose. The HTML card uses the
|
|
46
|
+
configured subject template as its neutral title and shows the code once as a
|
|
47
|
+
large styled body heading; the `text/plain` part
|
|
47
48
|
is authored directly, keeping the prompt and the code on ONE line
|
|
48
49
|
(`Your verification code is: 123456`) because that is the shape client code
|
|
49
50
|
detection reads most reliably. A generated text part cannot hold it - the text
|
|
@@ -231,10 +232,10 @@ So the code goes in both strings a notification actually shows:
|
|
|
231
232
|
in the notification body, repeating the prompt with the code
|
|
232
233
|
(`Your verification code is: 123456`).
|
|
233
234
|
|
|
234
|
-
The
|
|
235
|
-
|
|
236
|
-
domain-bound `@domain #code` trailer, which binds a code to a single
|
|
237
|
-
subject + preheader works across clients and needs no origin.
|
|
235
|
+
The opened card keeps the configured subject template as a code-free title and
|
|
236
|
+
shows the code once as a large styled body heading. This is deliberately NOT
|
|
237
|
+
Apple's domain-bound `@domain #code` trailer, which binds a code to a single
|
|
238
|
+
origin; subject + preheader works across clients and needs no origin.
|
|
238
239
|
|
|
239
240
|
### Signing everyone out
|
|
240
241
|
|
package/lib/src/send-code.js
CHANGED
|
@@ -63,6 +63,10 @@ function sendEmailWith(transport, to, code, opts, from) {
|
|
|
63
63
|
to: [to],
|
|
64
64
|
subject: codeEmailSubject(code, opts.subject),
|
|
65
65
|
body: codeEmailHtmlBody(code, opts),
|
|
66
|
-
}, from, undefined, {
|
|
66
|
+
}, from, undefined, {
|
|
67
|
+
heading: opts.subject,
|
|
68
|
+
text: codeEmailTextBody(code, opts),
|
|
69
|
+
preview: codeEmailPreview(code, opts),
|
|
70
|
+
});
|
|
67
71
|
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZC1jb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlbmQtY29kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7O0dBWUc7QUFFSCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDN0MsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNsQixNQUFNLGlCQUFpQixDQUFDO0FBR3pCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQWdCOUMsSUFBSSxNQUErQixDQUFDO0FBRXBDOzs7O0dBSUc7QUFDSCxLQUFLLFVBQVUsU0FBUztJQUN0QixJQUFJLE1BQU07UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUMxQixJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQTJCLENBQUM7UUFDekUsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNiLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUNiLDhFQUE4RTtZQUM1RSw0RkFBNEYsRUFDOUYsRUFBRSxLQUFLLEVBQUUsQ0FDVixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLG9CQUFvQjtJQUN4QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxTQUFTLEVBQUUsQ0FBQztJQUN4QyxJQUFJLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQ3ZELE1BQU0sSUFBSSxLQUFLLENBQ2IsOEVBQThFO1lBQzVFLG1GQUFtRixDQUN0RixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUE0QyxLQUFLLEVBQ3BFLEVBQVUsRUFDVixJQUFZLEVBQ1osSUFBcUIsRUFDTixFQUFFO0lBQ2pCLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxTQUFTLEVBQUUsQ0FBQztJQUNoRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25GLE1BQU0sYUFBYSxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2RCxDQUFDLENBQUM7QUFFRixTQUFTLGFBQWEsQ0FDcEIsU0FBbUMsRUFDbkMsRUFBVSxFQUNWLElBQVksRUFDWixJQUFxQixFQUNyQixJQUFZO0lBRVosTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0MsT0FBTyxTQUFTLENBQUMsU0FBUyxDQUN4QjtRQUNFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNSLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM3QyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztLQUNwQyxFQUNELElBQUksRUFDSixTQUFTLEVBQ1Q7UUFDRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87UUFDckIsSUFBSSxFQUFFLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7UUFDbkMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7S0FDdEMsQ0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhlIGRlZmF1bHQgYHNlbmRDb2RlYCBmb3IgdGhlIHtAbGluayBBdXRoR2F0ZVBsdWdpbn06IGRlbGl2ZXIgdGhlIE9UUCB0aHJvdWdoXG4gKiB0aGUgaG9zdCBhcHAncyBBTFJFQURZLVBSSU1FRCBgQGRieC10b29scy9lbWFpbGAgdHJhbnNwb3J0LCBhcyB0aGUgc3lzdGVtXG4gKiBzZW5kZXIgKGEgdmVyaWZpY2F0aW9uIGNvZGUgaXMgbWFjaGluZS1nZW5lcmF0ZWQgYW5kIHVuYW5zd2VyYWJsZSwgc28gaXQgbXVzdFxuICogbm90IGFycml2ZSBmcm9tIGEgcGVyc29uJ3MgYWRkcmVzcyBpbnZpdGluZyBhIHJlcGx5KS5cbiAqXG4gKiBgQGRieC10b29scy9lbWFpbGAgaXMgYW4gT1BUSU9OQUwgZGVwZW5kZW5jeSBvZiB0aGUgdHVubmVsIC0gYSB0dW5uZWwgdXNlZFxuICogd2l0aG91dCB0aGUgZ2F0ZSBuZWVkcyBubyBtYWlsLiBTbyBpdCBpcyBpbXBvcnRlZCBMQVpJTFkgaGVyZTsgYSBtaXNzaW5nIG1vZHVsZVxuICogc3VyZmFjZXMgb25seSB3aGVuIGEgZ2F0ZSBhY3R1YWxseSB0cmllcyB0byBzZW5kIGEgY29kZSwgYW5kXG4gKiB7QGxpbmsgZW5zdXJlRW1haWxBdmFpbGFibGV9IHR1cm5zIHRoYXQgaW50byBhIGNsZWFyIGZhaWwtZmFzdCBhdCBib290LlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHtcbiAgY29kZUVtYWlsSHRtbEJvZHksXG4gIGNvZGVFbWFpbFByZXZpZXcsXG4gIGNvZGVFbWFpbFN1YmplY3QsXG4gIGNvZGVFbWFpbFRleHRCb2R5LFxufSBmcm9tIFwiLi9jb2RlLWVtYWlsLnRzXCI7XG5pbXBvcnQgdHlwZSB7IEF1dGhHYXRlQ29uZmlnLCBTZW5kQ29kZU9wdGlvbnMgfSBmcm9tIFwiLi9wbHVnaW4udHNcIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcInR1bm5lbDpzZW5kLWNvZGVcIik7XG5cbi8qKiBUaGUgc2xpY2Ugb2YgYEBkYngtdG9vbHMvZW1haWxgIHRoZSBnYXRlIHVzZXMsIHJlc29sdmVkIGxhemlseS4gKi9cbmludGVyZmFjZSBFbWFpbE1vZHVsZSB7XG4gIHNlbmRlcjogeyByZXNvbHZlU3lzdGVtU2VuZGVyQWRkcmVzczogKGNvbmZpZzogdW5rbm93bikgPT4gc3RyaW5nIH07XG4gIHRyYW5zcG9ydDoge1xuICAgIGdldEVtYWlsUnVudGltZTogKCkgPT4geyBjb25maWc6IHsgbW9kZTogc3RyaW5nIH0gfTtcbiAgICBzZW5kRW1haWw6IChcbiAgICAgIG1lc3NhZ2U6IHsgdG86IHN0cmluZ1tdOyBzdWJqZWN0OiBzdHJpbmc7IGJvZHk6IHN0cmluZyB9LFxuICAgICAgZnJvbTogc3RyaW5nLFxuICAgICAgb25CZWhhbGZPZjogdW5kZWZpbmVkLFxuICAgICAgZXh0cmE6IHsgaGVhZGluZzogc3RyaW5nOyB0ZXh0OiBzdHJpbmc7IHByZXZpZXc6IHN0cmluZyB9LFxuICAgICkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgfTtcbn1cblxubGV0IGNhY2hlZDogRW1haWxNb2R1bGUgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogSW1wb3J0IGBAZGJ4LXRvb2xzL2VtYWlsYCBsYXppbHkuIFRocm93cyBhIGNsZWFyLCBhY3Rpb25hYmxlIGVycm9yIHdoZW4gdGhlXG4gKiBvcHRpb25hbCBkZXBlbmRlbmN5IGlzIGFic2VudCAtIHRoZSBjYWxsZXIgKGEgZ2F0ZSB0aGF0IGlzIE5PVCBpbnNlY3VyZSkgdHJlYXRzXG4gKiB0aGF0IGFzIGZhdGFsLCBzaW5jZSBhIGdhdGUgdGhhdCBjYW5ub3QgZW1haWwgYSBjb2RlIGxldHMgbm9ib2R5IGluLlxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkRW1haWwoKTogUHJvbWlzZTxFbWFpbE1vZHVsZT4ge1xuICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuICB0cnkge1xuICAgIGNvbnN0IG1vZCA9IChhd2FpdCBpbXBvcnQoXCJAZGJ4LXRvb2xzL2VtYWlsXCIpKSBhcyB1bmtub3duIGFzIEVtYWlsTW9kdWxlO1xuICAgIGNhY2hlZCA9IG1vZDtcbiAgICByZXR1cm4gbW9kO1xuICB9IGNhdGNoIChjYXVzZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwidGhlIE9UUCBnYXRlIG5lZWRzIEBkYngtdG9vbHMvZW1haWwgdG8gc2VuZCBjb2RlcywgYnV0IGl0IGlzIG5vdCBpbnN0YWxsZWQuIFwiICtcbiAgICAgICAgXCJBZGQgQGRieC10b29scy9lbWFpbCB0byB0aGUgYXBwLCBvciBydW4gdGhlIHR1bm5lbCB3aXRoIC0taW5zZWN1cmUgLyBUVU5ORUxfSU5TRUNVUkU9dHJ1ZS5cIixcbiAgICAgIHsgY2F1c2UgfSxcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogRmFpbCBmYXN0IHdoZW4gdGhlIGdhdGUgY2Fubm90IGRlbGl2ZXIgY29kZXM6IHRoZSBvcHRpb25hbCBlbWFpbCBtb2R1bGUgbXVzdCBiZVxuICogaW1wb3J0YWJsZSBBTkQgY29uZmlndXJlZCBmb3IgU01UUCAocmVhbCBkZWxpdmVyeSkuIGBtb2RlOiBcImZpbGVcImAgKG91dGJveCkgb3IgYVxuICogdGhyb3dpbmcgcnVudGltZSBtZWFucyBubyBjb2RlIHJlYWNoZXMgYSByZWFsIGluYm94LCBzbyBhIGdhdGUgb24gdGhhdCBjb25maWdcbiAqIHdvdWxkIHNpbGVudGx5IGFkbWl0IG5vYm9keS4gQ2FsbGVkIGZyb20gdGhlIHBsdWdpbidzIGBzZXR1cDpjb21wbGV0ZWAgdW5sZXNzXG4gKiBpbnNlY3VyZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZUVtYWlsQXZhaWxhYmxlKCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IHRyYW5zcG9ydCB9ID0gYXdhaXQgbG9hZEVtYWlsKCk7XG4gIGlmICh0cmFuc3BvcnQuZ2V0RW1haWxSdW50aW1lKCkuY29uZmlnLm1vZGUgIT09IFwic210cFwiKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJlbWFpbCBpcyBub3QgY29uZmlndXJlZCBmb3IgU01UUCBkZWxpdmVyeSAtIHRoZSBPVFAgZ2F0ZSBjYW5ub3Qgc2VuZCBjb2Rlcy4gXCIgK1xuICAgICAgICBcIlNldCBTTVRQX0hPU1QvU01UUF9VU0VSL1NNVFBfUEFTU1dPUkQsIG9yIHBhc3MgLS1pbnNlY3VyZSAvIFRVTk5FTF9JTlNFQ1VSRT10cnVlLlwiLFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBjb2RlIHNlbmRlcjogcmVuZGVyIHRoZSBPVFAgZW1haWwgKGNvZGUgaW4gdGhlIHN1YmplY3QgKyBwcmVoZWFkZXJcbiAqIGZvciBtb2JpbGUgYXV0b2ZpbGw7IHNlZSBgY29kZUVtYWlsU3ViamVjdGApIGFuZCBzZW5kIGl0IHRocm91Z2ggdGhlIHNoYXJlZFxuICogdHJhbnNwb3J0IGFzIHRoZSBzeXN0ZW0gc2VuZGVyLlxuICovXG5leHBvcnQgY29uc3Qgc2VuZENvZGU6IE5vbk51bGxhYmxlPEF1dGhHYXRlQ29uZmlnW1wic2VuZENvZGVcIl0+ID0gYXN5bmMgKFxuICB0bzogc3RyaW5nLFxuICBjb2RlOiBzdHJpbmcsXG4gIG9wdHM6IFNlbmRDb2RlT3B0aW9ucyxcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCB7IHNlbmRlciwgdHJhbnNwb3J0IH0gPSBhd2FpdCBsb2FkRW1haWwoKTtcbiAgY29uc3QgZnJvbSA9IHNlbmRlci5yZXNvbHZlU3lzdGVtU2VuZGVyQWRkcmVzcyh0cmFuc3BvcnQuZ2V0RW1haWxSdW50aW1lKCkuY29uZmlnKTtcbiAgYXdhaXQgc2VuZEVtYWlsV2l0aCh0cmFuc3BvcnQsIHRvLCBjb2RlLCBvcHRzLCBmcm9tKTtcbn07XG5cbmZ1bmN0aW9uIHNlbmRFbWFpbFdpdGgoXG4gIHRyYW5zcG9ydDogRW1haWxNb2R1bGVbXCJ0cmFuc3BvcnRcIl0sXG4gIHRvOiBzdHJpbmcsXG4gIGNvZGU6IHN0cmluZyxcbiAgb3B0czogU2VuZENvZGVPcHRpb25zLFxuICBmcm9tOiBzdHJpbmcsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgbG9nZ2VyLmRlYnVnKFwic2VuZGluZyBjb2RlIGVtYWlsXCIsIHsgdG8gfSk7XG4gIHJldHVybiB0cmFuc3BvcnQuc2VuZEVtYWlsKFxuICAgIHtcbiAgICAgIHRvOiBbdG9dLFxuICAgICAgc3ViamVjdDogY29kZUVtYWlsU3ViamVjdChjb2RlLCBvcHRzLnN1YmplY3QpLFxuICAgICAgYm9keTogY29kZUVtYWlsSHRtbEJvZHkoY29kZSwgb3B0cyksXG4gICAgfSxcbiAgICBmcm9tLFxuICAgIHVuZGVmaW5lZCxcbiAgICB7XG4gICAgICBoZWFkaW5nOiBvcHRzLnN1YmplY3QsXG4gICAgICB0ZXh0OiBjb2RlRW1haWxUZXh0Qm9keShjb2RlLCBvcHRzKSxcbiAgICAgIHByZXZpZXc6IGNvZGVFbWFpbFByZXZpZXcoY29kZSwgb3B0cyksXG4gICAgfSxcbiAgKTtcbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -18,19 +18,19 @@
|
|
|
18
18
|
"projen": "projen"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
|
-
"@dbx-tools/email": "0.6.
|
|
21
|
+
"@dbx-tools/email": "0.6.64",
|
|
22
22
|
"@types/bun": "^1.3.14",
|
|
23
23
|
"@types/node": "^24.6.0",
|
|
24
24
|
"typescript": "^5.9.3"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
|
-
"@dbx-tools/email": "0.6.
|
|
27
|
+
"@dbx-tools/email": "0.6.64"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@databricks/appkit": "^0.43.0",
|
|
31
|
-
"@dbx-tools/appkit": "0.6.
|
|
32
|
-
"@dbx-tools/shared-core": "0.6.
|
|
33
|
-
"@dbx-tools/shared-email": "0.6.
|
|
31
|
+
"@dbx-tools/appkit": "0.6.64",
|
|
32
|
+
"@dbx-tools/shared-core": "0.6.64",
|
|
33
|
+
"@dbx-tools/shared-email": "0.6.64",
|
|
34
34
|
"jose": "^6.2.3"
|
|
35
35
|
},
|
|
36
36
|
"main": "./lib/index.js",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"./package.json": "./package.json"
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
|
-
"version": "0.6.
|
|
50
|
+
"version": "0.6.64",
|
|
51
51
|
"types": "./lib/index.d.ts",
|
|
52
52
|
"type": "module",
|
|
53
53
|
"exports": {
|
package/src/send-code.ts
CHANGED
|
@@ -32,7 +32,7 @@ interface EmailModule {
|
|
|
32
32
|
message: { to: string[]; subject: string; body: string },
|
|
33
33
|
from: string,
|
|
34
34
|
onBehalfOf: undefined,
|
|
35
|
-
extra: { text: string; preview: string },
|
|
35
|
+
extra: { heading: string; text: string; preview: string },
|
|
36
36
|
) => Promise<void>;
|
|
37
37
|
};
|
|
38
38
|
}
|
|
@@ -107,6 +107,10 @@ function sendEmailWith(
|
|
|
107
107
|
},
|
|
108
108
|
from,
|
|
109
109
|
undefined,
|
|
110
|
-
{
|
|
110
|
+
{
|
|
111
|
+
heading: opts.subject,
|
|
112
|
+
text: codeEmailTextBody(code, opts),
|
|
113
|
+
preview: codeEmailPreview(code, opts),
|
|
114
|
+
},
|
|
111
115
|
);
|
|
112
116
|
}
|