@marinoscar/platform-api 0.1.0-next.18 → 0.1.0-next.19
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 +12 -0
- package/dist/ai/runtime/ai-limits.service.d.ts.map +1 -1
- package/dist/ai/runtime/ai-limits.service.js +8 -1
- package/dist/ai/runtime/ai-limits.service.js.map +1 -1
- package/dist/ai/usage/ai-usage-admin.controller.d.ts +6 -3
- package/dist/ai/usage/ai-usage-admin.controller.d.ts.map +1 -1
- package/dist/ai/usage/ai-usage-admin.controller.js +31 -17
- package/dist/ai/usage/ai-usage-admin.controller.js.map +1 -1
- package/dist/ai/usage/ai-usage.controller.d.ts +5 -2
- package/dist/ai/usage/ai-usage.controller.d.ts.map +1 -1
- package/dist/ai/usage/ai-usage.controller.js +18 -11
- package/dist/ai/usage/ai-usage.controller.js.map +1 -1
- package/dist/ai/usage/ai-usage.service.d.ts +19 -4
- package/dist/ai/usage/ai-usage.service.d.ts.map +1 -1
- package/dist/ai/usage/ai-usage.service.js +84 -43
- package/dist/ai/usage/ai-usage.service.js.map +1 -1
- package/dist/ai/usage/dto/ai-usage.dto.d.ts +8 -0
- package/dist/ai/usage/dto/ai-usage.dto.d.ts.map +1 -1
- package/dist/ai/usage/dto/ai-usage.dto.js +16 -5
- package/dist/ai/usage/dto/ai-usage.dto.js.map +1 -1
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +7 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/timezone/request-time-zone.d.ts +61 -0
- package/dist/core/timezone/request-time-zone.d.ts.map +1 -0
- package/dist/core/timezone/request-time-zone.js +71 -0
- package/dist/core/timezone/request-time-zone.js.map +1 -0
- package/dist/email/email-settings.controller.d.ts +5 -2
- package/dist/email/email-settings.controller.d.ts.map +1 -1
- package/dist/email/email-settings.controller.js +11 -5
- package/dist/email/email-settings.controller.js.map +1 -1
- package/dist/email/email-test-send.service.d.ts +11 -1
- package/dist/email/email-test-send.service.d.ts.map +1 -1
- package/dist/email/email-test-send.service.js +17 -3
- package/dist/email/email-test-send.service.js.map +1 -1
- package/dist/email/index.d.ts +2 -2
- package/dist/email/index.d.ts.map +1 -1
- package/dist/email/index.js +3 -1
- package/dist/email/index.js.map +1 -1
- package/dist/email/templates/backup-failed.email.d.ts.map +1 -1
- package/dist/email/templates/backup-failed.email.js +9 -5
- package/dist/email/templates/backup-failed.email.js.map +1 -1
- package/dist/email/templates/format-date.d.ts +39 -0
- package/dist/email/templates/format-date.d.ts.map +1 -0
- package/dist/email/templates/format-date.js +103 -0
- package/dist/email/templates/format-date.js.map +1 -0
- package/dist/email/templates/index.d.ts +2 -0
- package/dist/email/templates/index.d.ts.map +1 -1
- package/dist/email/templates/index.js +4 -1
- package/dist/email/templates/index.js.map +1 -1
- package/dist/email/templates/job-failed.email.d.ts +1 -1
- package/dist/email/templates/job-failed.email.d.ts.map +1 -1
- package/dist/email/templates/job-failed.email.js +6 -6
- package/dist/email/templates/job-failed.email.js.map +1 -1
- package/dist/email/templates/node-offline.email.d.ts.map +1 -1
- package/dist/email/templates/node-offline.email.js +11 -7
- package/dist/email/templates/node-offline.email.js.map +1 -1
- package/dist/email/templates/render-context.d.ts +5 -0
- package/dist/email/templates/render-context.d.ts.map +1 -1
- package/dist/email/templates/render-context.js.map +1 -1
- package/dist/email/templates/restore-completed.email.d.ts.map +1 -1
- package/dist/email/templates/restore-completed.email.js +9 -5
- package/dist/email/templates/restore-completed.email.js.map +1 -1
- package/dist/email/templates/role-changed.email.d.ts +1 -1
- package/dist/email/templates/role-changed.email.d.ts.map +1 -1
- package/dist/email/templates/role-changed.email.js +6 -7
- package/dist/email/templates/role-changed.email.js.map +1 -1
- package/dist/email/templates/test-email.email.d.ts +1 -1
- package/dist/email/templates/test-email.email.d.ts.map +1 -1
- package/dist/email/templates/test-email.email.js +6 -11
- package/dist/email/templates/test-email.email.js.map +1 -1
- package/dist/exports/export-job.d.ts +1 -0
- package/dist/exports/export-job.d.ts.map +1 -1
- package/dist/exports/export-job.js +2 -0
- package/dist/exports/export-job.js.map +1 -1
- package/dist/exports/export.types.d.ts +8 -0
- package/dist/exports/export.types.d.ts.map +1 -1
- package/dist/exports/exports.controller.d.ts +4 -2
- package/dist/exports/exports.controller.d.ts.map +1 -1
- package/dist/exports/exports.controller.js +15 -6
- package/dist/exports/exports.controller.js.map +1 -1
- package/dist/exports/exports.service.d.ts +5 -0
- package/dist/exports/exports.service.d.ts.map +1 -1
- package/dist/exports/exports.service.js +3 -0
- package/dist/exports/exports.service.js.map +1 -1
- package/dist/exports/handlers/export-run.handler.d.ts.map +1 -1
- package/dist/exports/handlers/export-run.handler.js +4 -1
- package/dist/exports/handlers/export-run.handler.js.map +1 -1
- package/dist/exports/index.d.ts +1 -0
- package/dist/exports/index.d.ts.map +1 -1
- package/dist/exports/index.js +7 -2
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/testing/conformance.d.ts.map +1 -1
- package/dist/exports/testing/conformance.js +1 -0
- package/dist/exports/testing/conformance.js.map +1 -1
- package/dist/host/http/cors-options.d.ts +5 -1
- package/dist/host/http/cors-options.d.ts.map +1 -1
- package/dist/host/http/cors-options.js.map +1 -1
- package/dist/identity/pat/pat.controller.d.ts +4 -3
- package/dist/identity/pat/pat.controller.d.ts.map +1 -1
- package/dist/identity/pat/pat.controller.js +19 -5
- package/dist/identity/pat/pat.controller.js.map +1 -1
- package/dist/identity/pat/pat.service.d.ts +21 -0
- package/dist/identity/pat/pat.service.d.ts.map +1 -1
- package/dist/identity/pat/pat.service.js +27 -10
- package/dist/identity/pat/pat.service.js.map +1 -1
- package/dist/notifications/channels/browser-notification.channel.js +1 -1
- package/dist/notifications/channels/browser-notification.channel.js.map +1 -1
- package/dist/notifications/channels/browser-templates.d.ts +12 -1
- package/dist/notifications/channels/browser-templates.d.ts.map +1 -1
- package/dist/notifications/channels/browser-templates.js +5 -4
- package/dist/notifications/channels/browser-templates.js.map +1 -1
- package/dist/notifications/channels/email-notification.channel.d.ts.map +1 -1
- package/dist/notifications/channels/email-notification.channel.js +3 -3
- package/dist/notifications/channels/email-notification.channel.js.map +1 -1
- package/dist/notifications/channels/push-notification.channel.js +1 -1
- package/dist/notifications/channels/push-notification.channel.js.map +1 -1
- package/dist/notifications/index.d.ts +1 -1
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/notification.types.d.ts +15 -0
- package/dist/notifications/notification.types.d.ts.map +1 -1
- package/dist/notifications/notification.types.js.map +1 -1
- package/dist/notifications/notifications.service.d.ts.map +1 -1
- package/dist/notifications/notifications.service.js +8 -0
- package/dist/notifications/notifications.service.js.map +1 -1
- package/dist/notifications/push-config.controller.d.ts +5 -2
- package/dist/notifications/push-config.controller.d.ts.map +1 -1
- package/dist/notifications/push-config.controller.js +11 -5
- package/dist/notifications/push-config.controller.js.map +1 -1
- package/dist/notifications/push-test.service.d.ts +1 -1
- package/dist/notifications/push-test.service.d.ts.map +1 -1
- package/dist/notifications/push-test.service.js +6 -4
- package/dist/notifications/push-test.service.js.map +1 -1
- package/dist/settings/settings-resolver.d.ts +28 -1
- package/dist/settings/settings-resolver.d.ts.map +1 -1
- package/dist/settings/settings-resolver.js +41 -0
- package/dist/settings/settings-resolver.js.map +1 -1
- package/dist/settings/settings.module.d.ts.map +1 -1
- package/dist/settings/settings.module.js +9 -4
- package/dist/settings/settings.module.js.map +1 -1
- package/dist/settings/user-settings/user-settings.service.d.ts.map +1 -1
- package/dist/settings/user-settings/user-settings.service.js +2 -4
- package/dist/settings/user-settings/user-settings.service.js.map +1 -1
- package/dist/sharing/grants/grants.service.js +2 -2
- package/dist/sharing/grants/grants.service.js.map +1 -1
- package/dist/sharing/groups/group-invites.service.js +1 -1
- package/dist/sharing/groups/group-invites.service.js.map +1 -1
- package/dist/sharing/groups/sharing-effects.d.ts +2 -1
- package/dist/sharing/groups/sharing-effects.d.ts.map +1 -1
- package/dist/sharing/groups/sharing-effects.js +4 -4
- package/dist/sharing/groups/sharing-effects.js.map +1 -1
- package/dist/sharing/index.d.ts +1 -1
- package/dist/sharing/index.d.ts.map +1 -1
- package/dist/sharing/index.js.map +1 -1
- package/dist/sharing/notifications/group-invitation.templates.d.ts +23 -0
- package/dist/sharing/notifications/group-invitation.templates.d.ts.map +1 -1
- package/dist/sharing/notifications/group-invitation.templates.js +17 -2
- package/dist/sharing/notifications/group-invitation.templates.js.map +1 -1
- package/dist/sharing/notifications/shared-with-you.templates.d.ts +1 -1
- package/dist/sharing/notifications/shared-with-you.templates.d.ts.map +1 -1
- package/dist/sharing/notifications/shared-with-you.templates.js +3 -2
- package/dist/sharing/notifications/shared-with-you.templates.js.map +1 -1
- package/dist/sharing/ports.d.ts +15 -2
- package/dist/sharing/ports.d.ts.map +1 -1
- package/dist/sharing/ports.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-time-zone.d.ts","sourceRoot":"","sources":["../../../src/core/timezone/request-time-zone.ts"],"names":[],"mappings":"AAkBA;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;CAC3E;AAED;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,eAAuC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;OAIG;IACH,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1G;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIhG;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAEpH;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,uBAAuB,GAAG,SAAS,GAAG,IAAI,EACpD,OAAO,EAAE,kBAAkB,GAAG,SAAS,EACvC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,MAAM,CAAC,CAGjB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// The request time zone: which zone a request-scoped date operation uses
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// Order: the user's stored `profile.timezone`, then a valid `X-Time-Zone`
|
|
7
|
+
// request header (the device zone a client sends for a user on "Automatic"),
|
|
8
|
+
// then `UTC`. Background work has no request, so it uses profile then UTC.
|
|
9
|
+
//
|
|
10
|
+
// `core` holds only the pure pieces and the port. The lookup of the stored
|
|
11
|
+
// zone needs the settings slice, which implements the port
|
|
12
|
+
// (`SettingsResolver.resolveRequestTimeZone`) and provides it globally; a slice
|
|
13
|
+
// below settings (identity, exports) injects it `@Optional()` and falls back to
|
|
14
|
+
// header-then-UTC when no settings slice is mounted.
|
|
15
|
+
// =============================================================================
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.REQUEST_TIME_ZONE_RESOLVER = void 0;
|
|
18
|
+
exports.readRequestTimeZoneHeader = readRequestTimeZoneHeader;
|
|
19
|
+
exports.chooseTimeZone = chooseTimeZone;
|
|
20
|
+
exports.resolveRequestTimeZoneWith = resolveRequestTimeZoneWith;
|
|
21
|
+
const settings_1 = require("@marinoscar/platform-contract/settings");
|
|
22
|
+
const timezone_1 = require("@marinoscar/platform-contract/timezone");
|
|
23
|
+
/**
|
|
24
|
+
* Injection token of the request time zone resolver. Provided globally by
|
|
25
|
+
* `SettingsModule`; inject it `@Optional()` from a slice that cannot import settings.
|
|
26
|
+
*
|
|
27
|
+
* @stability experimental
|
|
28
|
+
*/
|
|
29
|
+
exports.REQUEST_TIME_ZONE_RESOLVER = Symbol('REQUEST_TIME_ZONE_RESOLVER');
|
|
30
|
+
/**
|
|
31
|
+
* The valid `X-Time-Zone` header of a request, or `null` when absent or not an IANA zone.
|
|
32
|
+
*
|
|
33
|
+
* @param request - the request, or `undefined`.
|
|
34
|
+
* @returns the zone id, or `null`.
|
|
35
|
+
*
|
|
36
|
+
* @stability experimental
|
|
37
|
+
*/
|
|
38
|
+
function readRequestTimeZoneHeader(request) {
|
|
39
|
+
const raw = request?.headers?.[timezone_1.TIME_ZONE_HEADER];
|
|
40
|
+
const value = (Array.isArray(raw) ? raw[0] : raw)?.trim();
|
|
41
|
+
return value && (0, settings_1.isValidTimeZone)(value) ? value : null;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The pure ordering: stored profile zone, then header zone, then `UTC`.
|
|
45
|
+
*
|
|
46
|
+
* @param profileZone - the stored `profile.timezone`, if any.
|
|
47
|
+
* @param headerZone - the validated `X-Time-Zone`, if any.
|
|
48
|
+
* @returns the zone to use.
|
|
49
|
+
*
|
|
50
|
+
* @stability experimental
|
|
51
|
+
*/
|
|
52
|
+
function chooseTimeZone(profileZone, headerZone) {
|
|
53
|
+
return profileZone ?? headerZone ?? timezone_1.DEFAULT_SERVER_TIME_ZONE;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Resolves a request's zone through an optional resolver. With no resolver
|
|
57
|
+
* (no settings slice mounted) the header and then `UTC` decide.
|
|
58
|
+
*
|
|
59
|
+
* @param resolver - the injected {@link RequestTimeZoneResolver}, if any.
|
|
60
|
+
* @param request - the incoming request.
|
|
61
|
+
* @param userId - the requester.
|
|
62
|
+
* @returns a valid IANA zone id.
|
|
63
|
+
*
|
|
64
|
+
* @stability experimental
|
|
65
|
+
*/
|
|
66
|
+
async function resolveRequestTimeZoneWith(resolver, request, userId) {
|
|
67
|
+
if (resolver)
|
|
68
|
+
return resolver.resolveRequestTimeZone(request, userId);
|
|
69
|
+
return chooseTimeZone(null, readRequestTimeZoneHeader(request));
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=request-time-zone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-time-zone.js","sourceRoot":"","sources":["../../../src/core/timezone/request-time-zone.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yEAAyE;AACzE,gFAAgF;AAChF,EAAE;AACF,0EAA0E;AAC1E,6EAA6E;AAC7E,2EAA2E;AAC3E,EAAE;AACF,2EAA2E;AAC3E,2DAA2D;AAC3D,gFAAgF;AAChF,gFAAgF;AAChF,qDAAqD;AACrD,gFAAgF;;;AA6ChF,8DAIC;AAWD,wCAEC;AAaD,gEAOC;AAhFD,qEAAyE;AACzE,qEAAoG;AAYpG;;;;;GAKG;AACU,QAAA,0BAA0B,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAgB/E;;;;;;;GAOG;AACH,SAAgB,yBAAyB,CAAC,OAAuC;IAC/E,MAAM,GAAG,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,2BAAgB,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;IAC1D,OAAO,KAAK,IAAI,IAAA,0BAAe,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACxD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAAC,WAAsC,EAAE,UAAqC;IAC1G,OAAO,WAAW,IAAI,UAAU,IAAI,mCAAwB,CAAC;AAC/D,CAAC;AAED;;;;;;;;;;GAUG;AACI,KAAK,UAAU,0BAA0B,CAC9C,QAAoD,EACpD,OAAuC,EACvC,MAAsB;IAEtB,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtE,OAAO,cAAc,CAAC,IAAI,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type { RequestWithHeaders } from '../core/index';
|
|
1
2
|
import { type RequestUser } from '../identity/index';
|
|
3
|
+
import { SettingsResolver } from '../settings/index';
|
|
2
4
|
import { EmailSettingsService } from './email-settings.service';
|
|
3
5
|
import { EmailTestSendService } from './email-test-send.service';
|
|
4
6
|
import { UpdateEmailSettingsDto } from './dto/update-email-settings.dto';
|
|
@@ -11,7 +13,8 @@ import { UpdateEmailSettingsDto } from './dto/update-email-settings.dto';
|
|
|
11
13
|
export declare class EmailSettingsController {
|
|
12
14
|
private readonly emailSettings;
|
|
13
15
|
private readonly testSend;
|
|
14
|
-
|
|
16
|
+
private readonly settings;
|
|
17
|
+
constructor(emailSettings: EmailSettingsService, testSend: EmailTestSendService, settings: SettingsResolver);
|
|
15
18
|
/**
|
|
16
19
|
* `GET /api/email-settings`: the settings and the masked secret statuses.
|
|
17
20
|
*
|
|
@@ -33,7 +36,7 @@ export declare class EmailSettingsController {
|
|
|
33
36
|
* @param user - the caller, the only recipient.
|
|
34
37
|
* @returns the attempt's outcome (HTTP 200 either way).
|
|
35
38
|
*/
|
|
36
|
-
sendTestEmail(user: RequestUser): Promise<{
|
|
39
|
+
sendTestEmail(user: RequestUser, request: RequestWithHeaders): Promise<{
|
|
37
40
|
success: boolean;
|
|
38
41
|
sentTo: string;
|
|
39
42
|
providerKind: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-settings.controller.d.ts","sourceRoot":"","sources":["../../src/email/email-settings.controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"email-settings.controller.d.ts","sourceRoot":"","sources":["../../src/email/email-settings.controller.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAwB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAuCzE;;;;;GAKG;AACH,qBAEa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAFR,aAAa,EAAE,oBAAoB,EACnC,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,EAAE,gBAAgB;IAG7C;;;;OAIG;IAiBG,WAAW;IAIjB;;;;;;;OAOG;IAwBG,eAAe,CACX,GAAG,EAAE,sBAAsB,EAChB,MAAM,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM;IAavC;;;;;OAKG;IAwBG,aAAa,CAAgB,IAAI,EAAE,WAAW,EAAS,OAAO,EAAE,kBAAkB;;;;;;;;CAOzF"}
|
|
@@ -67,9 +67,11 @@ const update_email_settings_dto_1 = require("./dto/update-email-settings.dto");
|
|
|
67
67
|
let EmailSettingsController = class EmailSettingsController {
|
|
68
68
|
emailSettings;
|
|
69
69
|
testSend;
|
|
70
|
-
|
|
70
|
+
settings;
|
|
71
|
+
constructor(emailSettings, testSend, settings) {
|
|
71
72
|
this.emailSettings = emailSettings;
|
|
72
73
|
this.testSend = testSend;
|
|
74
|
+
this.settings = settings;
|
|
73
75
|
}
|
|
74
76
|
/**
|
|
75
77
|
* `GET /api/email-settings`: the settings and the masked secret statuses.
|
|
@@ -103,10 +105,12 @@ let EmailSettingsController = class EmailSettingsController {
|
|
|
103
105
|
* @param user - the caller, the only recipient.
|
|
104
106
|
* @returns the attempt's outcome (HTTP 200 either way).
|
|
105
107
|
*/
|
|
106
|
-
async sendTestEmail(user) {
|
|
108
|
+
async sendTestEmail(user, request) {
|
|
107
109
|
// The recipient is the session's own address. Nothing from the request
|
|
108
110
|
// body reaches the transport — there is no body, and no parameter for one.
|
|
109
|
-
|
|
111
|
+
// Timestamps render in the caller's zone: profile, then X-Time-Zone, then UTC.
|
|
112
|
+
const timeZone = await this.settings.resolveRequestTimeZone(request, user.id);
|
|
113
|
+
return this.testSend.sendTest({ id: user.id, email: user.email, timeZone });
|
|
110
114
|
}
|
|
111
115
|
};
|
|
112
116
|
exports.EmailSettingsController = EmailSettingsController;
|
|
@@ -182,14 +186,16 @@ __decorate([
|
|
|
182
186
|
type: test_email_result_dto_1.TestEmailResultDto,
|
|
183
187
|
}),
|
|
184
188
|
__param(0, (0, index_1.CurrentUser)()),
|
|
189
|
+
__param(1, (0, common_1.Req)()),
|
|
185
190
|
__metadata("design:type", Function),
|
|
186
|
-
__metadata("design:paramtypes", [Object]),
|
|
191
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
187
192
|
__metadata("design:returntype", Promise)
|
|
188
193
|
], EmailSettingsController.prototype, "sendTestEmail", null);
|
|
189
194
|
exports.EmailSettingsController = EmailSettingsController = __decorate([
|
|
190
195
|
(0, swagger_1.ApiTags)('Email Settings'),
|
|
191
196
|
(0, common_1.Controller)('email-settings'),
|
|
192
197
|
__metadata("design:paramtypes", [email_settings_service_1.EmailSettingsService,
|
|
193
|
-
email_test_send_service_1.EmailTestSendService
|
|
198
|
+
email_test_send_service_1.EmailTestSendService,
|
|
199
|
+
index_2.SettingsResolver])
|
|
194
200
|
], EmailSettingsController);
|
|
195
201
|
//# sourceMappingURL=email-settings.controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-settings.controller.js","sourceRoot":"","sources":["../../src/email/email-settings.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"email-settings.controller.js","sourceRoot":"","sources":["../../src/email/email-settings.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAUwB;AACxB,6CAAgF;AAGhF,6CAAwE;AACxE,6CAA2E;AAC3E,qEAAgE;AAChE,uEAAiE;AACjE,mFAA6E;AAC7E,uEAAiE;AACjE,+EAAyE;AAEzE,gFAAgF;AAChF,kDAAkD;AAClD,gFAAgF;AAChF,EAAE;AACF,8EAA8E;AAC9E,sCAAsC;AACtC,EAAE;AACF,yDAAyD;AACzD,0DAA0D;AAC1D,0DAA0D;AAC1D,EAAE;AACF,+EAA+E;AAC/E,yFAAyF;AACzF,+EAA+E;AAC/E,4EAA4E;AAC5E,mEAAmE;AACnE,EAAE;AACF,wEAAwE;AACxE,yEAAyE;AACzE,+DAA+D;AAC/D,EAAE;AACF,gFAAgF;AAChF,iEAAiE;AACjE,gFAAgF;AAChF,EAAE;AACF,4DAA4D;AAC5D,6EAA6E;AAC7E,wEAAwE;AACxE,+EAA+E;AAC/E,8EAA8E;AAC9E,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,8EAA8E;AAC9E,qDAAqD;AACrD,gFAAgF;AAEhF;;;;;GAKG;AAGI,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAEf;IACA;IACA;IAHnB,YACmB,aAAmC,EACnC,QAA8B,EAC9B,QAA0B;QAF1B,kBAAa,GAAb,aAAa,CAAsB;QACnC,aAAQ,GAAR,QAAQ,CAAsB;QAC9B,aAAQ,GAAR,QAAQ,CAAkB;IAC1C,CAAC;IAEJ;;;;OAIG;IAiBG,AAAN,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;IAC/C,CAAC;IAED;;;;;;;OAOG;IAwBG,AAAN,KAAK,CAAC,eAAe,CACX,GAA2B,EAChB,MAAc,EACZ,OAAgB;QAErC,yEAAyE;QACzE,0EAA0E;QAC1E,yEAAyE;QACzE,kEAAkE;QAClE,8DAA8D;QAC9D,MAAM,MAAM,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1E,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtE,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;IACjE,CAAC;IAED;;;;;OAKG;IAwBG,AAAN,KAAK,CAAC,aAAa,CAAgB,IAAiB,EAAS,OAA2B;QACtF,uEAAuE;QACvE,2EAA2E;QAC3E,+EAA+E;QAC/E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9E,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9E,CAAC;CACF,CAAA;AAnHY,0DAAuB;AA4B5B;IAhBL,IAAA,YAAG,GAAE;IACL,IAAA,YAAI,EAAC,EAAE,WAAW,EAAE,CAAC,4BAAoB,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC;IACrE,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,iCAAiC;QAC1C,WAAW,EACT,gFAAgF;YAChF,+EAA+E;YAC/E,+EAA+E;YAC/E,+EAA+E;YAC/E,2DAA2D;KAC9D,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,2CAA2C;QACxD,IAAI,EAAE,sDAAwB;KAC/B,CAAC;;;;0DAGD;AAiCK;IAvBL,IAAA,YAAG,GAAE;IACL,IAAA,YAAI,EAAC,EAAE,WAAW,EAAE,CAAC,4BAAoB,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAAE,CAAC;IACtE,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,qCAAqC;QAC9C,WAAW,EACT,iFAAiF;YACjF,8EAA8E;YAC9E,iFAAiF;KACpF,CAAC;IACD,IAAA,mBAAS,EAAC;QACT,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,gFAAgF;YAChF,mDAAmD;QACrD,QAAQ,EAAE,KAAK;KAChB,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,wBAAwB;QACrC,IAAI,EAAE,sDAAwB;KAC/B,CAAC;IACD,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAC7D,IAAA,qBAAW,EAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAE3D,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAA;IACjB,WAAA,IAAA,gBAAO,EAAC,UAAU,CAAC,CAAA;;qCAFP,kDAAsB;;8DAapC;AA+BK;IAvBL,IAAA,aAAI,EAAC,MAAM,CAAC;IACZ,IAAA,YAAI,EAAC,EAAE,WAAW,EAAE,CAAC,4BAAoB,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAAE,CAAC;IACtE,IAAA,iBAAQ,EAAC,mBAAU,CAAC,EAAE,CAAC;IACvB,IAAA,sBAAY,EAAC;QACZ,OAAO,EAAE,4CAA4C;QACrD,WAAW,EACT,gFAAgF;YAChF,iFAAiF;YACjF,qDAAqD;YACrD,2EAA2E;YAC3E,6EAA6E;YAC7E,iFAAiF;YACjF,kFAAkF;YAClF,kFAAkF;YAClF,kCAAkC;KACrC,CAAC;IACD,IAAA,qBAAW,EAAC;QACX,MAAM,EAAE,GAAG;QACX,WAAW,EACT,4EAA4E;YAC5E,8BAA8B;QAChC,IAAI,EAAE,0CAAkB;KACzB,CAAC;IACmB,WAAA,IAAA,mBAAW,GAAE,CAAA;IAAqB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;4DAM3D;kCAlHU,uBAAuB;IAFnC,IAAA,iBAAO,EAAC,gBAAgB,CAAC;IACzB,IAAA,mBAAU,EAAC,gBAAgB,CAAC;qCAGO,6CAAoB;QACzB,8CAAoB;QACpB,wBAAgB;GAJlC,uBAAuB,CAmHnC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type AuditSink } from '../core/index';
|
|
2
|
+
import { SettingsResolver } from '../settings/index';
|
|
2
3
|
import { type ResolvedEmailModuleOptions } from './email.options';
|
|
3
4
|
import { EmailSettingsService } from './email-settings.service';
|
|
4
5
|
import { EmailTransportResolver } from './transports/email-transport.resolver';
|
|
@@ -42,6 +43,12 @@ export interface TestSendActor {
|
|
|
42
43
|
id: string;
|
|
43
44
|
/** The caller's own address: the only recipient a test send can have. */
|
|
44
45
|
email: string;
|
|
46
|
+
/**
|
|
47
|
+
* The zone the message's timestamps render in: the controller resolves it
|
|
48
|
+
* for the request (profile, then `X-Time-Zone`, then UTC). Absent, the
|
|
49
|
+
* service reads the caller's `profile.timezone`, else UTC.
|
|
50
|
+
*/
|
|
51
|
+
timeZone?: string | null;
|
|
45
52
|
}
|
|
46
53
|
/**
|
|
47
54
|
* Sends the test message to the caller's own address and audits the attempt.
|
|
@@ -53,9 +60,10 @@ export declare class EmailTestSendService {
|
|
|
53
60
|
private readonly auditSink;
|
|
54
61
|
private readonly emailSettings;
|
|
55
62
|
private readonly transports;
|
|
63
|
+
private readonly settings?;
|
|
56
64
|
private readonly logger;
|
|
57
65
|
private readonly options;
|
|
58
|
-
constructor(auditSink: AuditSink, emailSettings: EmailSettingsService, transports: EmailTransportResolver, options?: Pick<ResolvedEmailModuleOptions, 'appUrl'
|
|
66
|
+
constructor(auditSink: AuditSink, emailSettings: EmailSettingsService, transports: EmailTransportResolver, options?: Pick<ResolvedEmailModuleOptions, 'appUrl'>, settings?: SettingsResolver | undefined);
|
|
59
67
|
/**
|
|
60
68
|
* Render the `test-email` template and send it to the caller's own address.
|
|
61
69
|
*
|
|
@@ -75,6 +83,8 @@ export declare class EmailTestSendService {
|
|
|
75
83
|
* trail with the same fields. A second, hand-rolled failure literal is how
|
|
76
84
|
* one of them ends up without an audit row.
|
|
77
85
|
*/
|
|
86
|
+
/** The caller's stored `profile.timezone`, or `null` (UTC, labelled) when none or unreadable. */
|
|
87
|
+
private actorTimeZone;
|
|
78
88
|
private failure;
|
|
79
89
|
/**
|
|
80
90
|
* Record the attempt.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-test-send.service.d.ts","sourceRoot":"","sources":["../../src/email/email-test-send.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAA6C,KAAK,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7G,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAE/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAkEnE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAavE;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"email-test-send.service.d.ts","sourceRoot":"","sources":["../../src/email/email-test-send.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAA6C,KAAK,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC7G,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAE/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAkEnE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAavE;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;;;;GAKG;AACH,qBACa,oBAAoB;IAQT,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,aAAa;IAG9B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAEf,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAbxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;IAEhE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;gBAK9B,SAAS,EAAE,SAAS,EACxC,aAAa,EAAE,oBAAoB,EAGnC,UAAU,EAAE,sBAAsB,EAChB,OAAO,CAAC,EAAE,IAAI,CAAC,0BAA0B,EAAE,QAAQ,CAAC,EAC1D,QAAQ,CAAC,EAAE,gBAAgB,YAAA;IAK1D;;;;;;;;;OASG;IACG,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC;IA6I9D;;;;;;;OAOG;IACH,iGAAiG;YACnF,aAAa;YAQb,OAAO;IA0BrB;;;;;;;;;;;OAWG;YACW,KAAK;IAsBnB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;CAIpB"}
|
|
@@ -17,6 +17,7 @@ exports.EmailTestSendService = void 0;
|
|
|
17
17
|
exports.formatFromHeader = formatFromHeader;
|
|
18
18
|
const common_1 = require("@nestjs/common");
|
|
19
19
|
const index_1 = require("../core/index");
|
|
20
|
+
const index_2 = require("../settings/index");
|
|
20
21
|
const email_options_1 = require("./email.options");
|
|
21
22
|
const email_settings_service_1 = require("./email-settings.service");
|
|
22
23
|
const email_transport_resolver_1 = require("./transports/email-transport.resolver");
|
|
@@ -128,15 +129,17 @@ let EmailTestSendService = EmailTestSendService_1 = class EmailTestSendService {
|
|
|
128
129
|
auditSink;
|
|
129
130
|
emailSettings;
|
|
130
131
|
transports;
|
|
132
|
+
settings;
|
|
131
133
|
logger = new common_1.Logger(EmailTestSendService_1.name);
|
|
132
134
|
options;
|
|
133
135
|
constructor(auditSink, emailSettings,
|
|
134
136
|
// The configured transport, resolved from the registry by the settings'
|
|
135
137
|
// `provider`: an app's transport is used here exactly as `ses` and `smtp` are.
|
|
136
|
-
transports, options) {
|
|
138
|
+
transports, options, settings) {
|
|
137
139
|
this.auditSink = auditSink;
|
|
138
140
|
this.emailSettings = emailSettings;
|
|
139
141
|
this.transports = transports;
|
|
142
|
+
this.settings = settings;
|
|
140
143
|
this.options = options ?? email_options_1.UNCONFIGURED_EMAIL_OPTIONS;
|
|
141
144
|
}
|
|
142
145
|
/**
|
|
@@ -202,6 +205,7 @@ let EmailTestSendService = EmailTestSendService_1 = class EmailTestSendService {
|
|
|
202
205
|
return this.failure(actor, providerKind, attemptedAt, verdict.message);
|
|
203
206
|
}
|
|
204
207
|
}
|
|
208
|
+
const timeZone = actor.timeZone !== undefined ? actor.timeZone : await this.actorTimeZone(actor.id);
|
|
205
209
|
const rendered = (0, templates_1.renderEmailTemplate)('test-email', {
|
|
206
210
|
recipientEmail: actor.email,
|
|
207
211
|
providerKind,
|
|
@@ -210,7 +214,7 @@ let EmailTestSendService = EmailTestSendService_1 = class EmailTestSendService {
|
|
|
210
214
|
// difference between a test and an unexplained message in an inbox.
|
|
211
215
|
triggeredBy: actor.email,
|
|
212
216
|
settingsUrl: this.settingsUrl(),
|
|
213
|
-
});
|
|
217
|
+
}, { ...(0, templates_1.currentEmailRenderContext)(), timeZone });
|
|
214
218
|
const message = {
|
|
215
219
|
to: actor.email,
|
|
216
220
|
from: formatFromHeader(settings.fromAddress, settings.fromName),
|
|
@@ -257,6 +261,15 @@ let EmailTestSendService = EmailTestSendService_1 = class EmailTestSendService {
|
|
|
257
261
|
* trail with the same fields. A second, hand-rolled failure literal is how
|
|
258
262
|
* one of them ends up without an audit row.
|
|
259
263
|
*/
|
|
264
|
+
/** The caller's stored `profile.timezone`, or `null` (UTC, labelled) when none or unreadable. */
|
|
265
|
+
async actorTimeZone(userId) {
|
|
266
|
+
try {
|
|
267
|
+
return (await this.settings?.resolveUserTimeZone(userId)) ?? null;
|
|
268
|
+
}
|
|
269
|
+
catch {
|
|
270
|
+
return null;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
260
273
|
async failure(actor, providerKind, attemptedAt, error) {
|
|
261
274
|
// `warn`, not `error`: a misconfigured mail server is an operator problem
|
|
262
275
|
// the operator is actively looking at, not a fault of this service. The
|
|
@@ -319,7 +332,8 @@ exports.EmailTestSendService = EmailTestSendService = EmailTestSendService_1 = _
|
|
|
319
332
|
__param(0, (0, common_1.Inject)(index_1.AUDIT_SINK)),
|
|
320
333
|
__param(3, (0, common_1.Optional)()),
|
|
321
334
|
__param(3, (0, common_1.Inject)(email_options_1.EMAIL_OPTIONS)),
|
|
335
|
+
__param(4, (0, common_1.Optional)()),
|
|
322
336
|
__metadata("design:paramtypes", [Object, email_settings_service_1.EmailSettingsService,
|
|
323
|
-
email_transport_resolver_1.EmailTransportResolver, Object])
|
|
337
|
+
email_transport_resolver_1.EmailTransportResolver, Object, index_2.SettingsResolver])
|
|
324
338
|
], EmailTestSendService);
|
|
325
339
|
//# sourceMappingURL=email-test-send.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-test-send.service.js","sourceRoot":"","sources":["../../src/email/email-test-send.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"email-test-send.service.js","sourceRoot":"","sources":["../../src/email/email-test-send.service.ts"],"names":[],"mappings":"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"}
|
package/dist/email/index.d.ts
CHANGED
|
@@ -33,8 +33,8 @@ export { classifyEmailRateLimit } from './email-rate-limit';
|
|
|
33
33
|
export type { EmailRateLimitClassification, GenericRateLimitClassifier } from './email-rate-limit';
|
|
34
34
|
export { EMAIL_SETTINGS_PATH, EmailConfigDoctorCheck, decideEmailConfig } from './doctor/email-config.doctor-check';
|
|
35
35
|
export { EmailEgressContributor } from './doctor/egress/email.egress.contributor';
|
|
36
|
-
export { DEFAULT_EMAIL_LAYOUT_THEME, DEFAULT_EMAIL_TONES, EMAIL_TEMPLATE_NAME_PATTERN, PLATFORM_EMAIL_TEMPLATES, RENDERED_EMAIL_MATCHES_MESSAGE, SafeHtml, TRANSACTIONAL_EMAIL_HEADERS, allowlistInvitationEmail, backupFailedEmail, broadcastEmail, configureEmailRendering, createEmailRenderContext, currentEmailRenderContext, emailTemplateOverrideRegistry, emailTemplateRegistry, escapeHtml, findEmailTemplate, html, isEmailRenderingConfigured, isEmailTemplateName, jobFailedEmail, listEmailTemplateOverrides, nodeOfflineEmail, plainText, registerEmailTemplate, registerEmailTemplates, registerPlatformEmailTemplates, renderCallout, renderEmailTemplate, renderLayout, resolveEmailLayout, resolveEmailRenderContext, restoreCompletedEmail, roleChangedEmail, safeUrl, testEmail, userWelcomeEmail, withLayoutAttachments, } from './templates/index';
|
|
37
|
-
export type { AllowlistInvitationEmailData, BackupFailedEmailData, BackupFailureOutcome, BroadcastEmailData, EmailBrandMark, EmailLayoutOptions, EmailLayoutTheme, EmailRenderContext, EmailRenderingOptions, EmailTemplate, EmailTemplateEntry, EmailTemplateName, EmailTemplateOverride, EmailTone, EmailToneStyle, JobFailedEmailData, MessageRenderedPartFitsRendered, NodeOfflineEmailData, PlainTextOptions, PlatformEmailTemplateDataMap, PlatformEmailTemplateName, RegisterEmailTemplateOptions, RenderCalloutOptions, RenderLayoutOptions, RenderedEmail, RenderedEmailFitsMessage, ResolvedEmailLayout, RestoreCompletedEmailData, RoleChangedEmailData, TestEmailData, UserWelcomeEmailData, } from './templates/index';
|
|
36
|
+
export { DEFAULT_EMAIL_LAYOUT_THEME, DEFAULT_EMAIL_TONES, EMAIL_TEMPLATE_NAME_PATTERN, PLATFORM_EMAIL_TEMPLATES, RENDERED_EMAIL_MATCHES_MESSAGE, SafeHtml, TRANSACTIONAL_EMAIL_HEADERS, allowlistInvitationEmail, backupFailedEmail, broadcastEmail, configureEmailRendering, createEmailRenderContext, currentEmailRenderContext, emailTemplateOverrideRegistry, emailTemplateRegistry, escapeHtml, findEmailTemplate, formatEmailDate, formatEmailDateTime, html, isEmailRenderingConfigured, isEmailTemplateName, jobFailedEmail, listEmailTemplateOverrides, nodeOfflineEmail, plainText, registerEmailTemplate, registerEmailTemplates, registerPlatformEmailTemplates, renderCallout, renderEmailTemplate, renderLayout, resolveEmailLayout, resolveEmailRenderContext, restoreCompletedEmail, roleChangedEmail, safeUrl, testEmail, userWelcomeEmail, withLayoutAttachments, } from './templates/index';
|
|
37
|
+
export type { EmailDateContext, EmailDateInput, AllowlistInvitationEmailData, BackupFailedEmailData, BackupFailureOutcome, BroadcastEmailData, EmailBrandMark, EmailLayoutOptions, EmailLayoutTheme, EmailRenderContext, EmailRenderingOptions, EmailTemplate, EmailTemplateEntry, EmailTemplateName, EmailTemplateOverride, EmailTone, EmailToneStyle, JobFailedEmailData, MessageRenderedPartFitsRendered, NodeOfflineEmailData, PlainTextOptions, PlatformEmailTemplateDataMap, PlatformEmailTemplateName, RegisterEmailTemplateOptions, RenderCalloutOptions, RenderLayoutOptions, RenderedEmail, RenderedEmailFitsMessage, ResolvedEmailLayout, RestoreCompletedEmailData, RoleChangedEmailData, TestEmailData, UserWelcomeEmailData, } from './templates/index';
|
|
38
38
|
/**
|
|
39
39
|
* Every template, mapped to the data it renders from: the platform's nine,
|
|
40
40
|
* plus whatever an app declares by module augmentation, next to its
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/email/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/email/index.ts"],"names":[],"mappings":"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"}
|
package/dist/email/index.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// implementing `EmailProvider` directly is how that guarantee gets lost.
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.SmtpEmailProvider = exports.SesEmailProvider = exports.SecretRedactor = exports.BaseEmailProvider = exports.smtpEmailTransport = exports.sesEmailTransport = exports.registerBuiltinEmailTransports = exports.BUILTIN_EMAIL_TRANSPORT_IDS = exports.EmailTransportResolver = exports.requireEmailTransport = exports.registerEmailTransport = exports.missingEmailTransportFields = exports.labelOfEmailTransport = exports.getEmailTransport = exports.emailTransportSecretAddress = exports.emailTransportKind = exports.emailTransportIds = exports.emailTransportDefinitions = exports.emailTransportCredentialPurpose = exports.describeEmailTransports = exports.emailSettingsSchema = exports.IMPLICIT_TLS_SMTP_PORT = exports.EMAIL_TRANSPORT_ID_PATTERN = exports.EMAIL_PROVIDER_KINDS = exports.DEFAULT_SMTP_PORT = exports.DEFAULT_EMAIL_SETTINGS = exports.BUILTIN_EMAIL_PROVIDER_KINDS = exports.testEmailResultSchema = exports.TestEmailResultDto = exports.emailSettingsResponseSchema = exports.EmailSettingsResponseDto = exports.updateEmailSettingsSchema = exports.UpdateEmailSettingsDto = exports.SES_CREDENTIAL_PURPOSE_DEF = exports.SES_CREDENTIAL_PURPOSE = exports.SES_CREDENTIAL_NAME = exports.SES_CREDENTIAL_LABEL = exports.SMTP_CREDENTIAL_PURPOSE_DEF = exports.SMTP_CREDENTIAL_PURPOSE = exports.SMTP_CREDENTIAL_NAME = exports.SMTP_CREDENTIAL_LABEL = exports.formatFromHeader = exports.EmailTestSendService = exports.EmailSettingsController = exports.EMAIL_SETTINGS_KEY = exports.EmailSettingsService = exports.resolveEmailModuleOptions = exports.EMAIL_OPTIONS = exports.EmailTemplateOverrideReporter = exports.EmailModule = void 0;
|
|
18
|
-
exports.withLayoutAttachments = exports.userWelcomeEmail = exports.testEmail = exports.safeUrl = exports.roleChangedEmail = exports.restoreCompletedEmail = exports.resolveEmailRenderContext = exports.resolveEmailLayout = exports.renderLayout = exports.renderEmailTemplate = exports.renderCallout = exports.registerPlatformEmailTemplates = exports.registerEmailTemplates = exports.registerEmailTemplate = exports.plainText = exports.nodeOfflineEmail = exports.listEmailTemplateOverrides = exports.jobFailedEmail = exports.isEmailTemplateName = exports.isEmailRenderingConfigured = exports.html = exports.findEmailTemplate = exports.escapeHtml = exports.emailTemplateRegistry = exports.emailTemplateOverrideRegistry = exports.currentEmailRenderContext = exports.createEmailRenderContext = exports.configureEmailRendering = exports.broadcastEmail = exports.backupFailedEmail = exports.allowlistInvitationEmail = exports.TRANSACTIONAL_EMAIL_HEADERS = exports.SafeHtml = exports.RENDERED_EMAIL_MATCHES_MESSAGE = exports.PLATFORM_EMAIL_TEMPLATES = exports.EMAIL_TEMPLATE_NAME_PATTERN = exports.DEFAULT_EMAIL_TONES = exports.DEFAULT_EMAIL_LAYOUT_THEME = exports.EmailEgressContributor = exports.decideEmailConfig = exports.EmailConfigDoctorCheck = exports.EMAIL_SETTINGS_PATH = exports.classifyEmailRateLimit = void 0;
|
|
18
|
+
exports.withLayoutAttachments = exports.userWelcomeEmail = exports.testEmail = exports.safeUrl = exports.roleChangedEmail = exports.restoreCompletedEmail = exports.resolveEmailRenderContext = exports.resolveEmailLayout = exports.renderLayout = exports.renderEmailTemplate = exports.renderCallout = exports.registerPlatformEmailTemplates = exports.registerEmailTemplates = exports.registerEmailTemplate = exports.plainText = exports.nodeOfflineEmail = exports.listEmailTemplateOverrides = exports.jobFailedEmail = exports.isEmailTemplateName = exports.isEmailRenderingConfigured = exports.html = exports.formatEmailDateTime = exports.formatEmailDate = exports.findEmailTemplate = exports.escapeHtml = exports.emailTemplateRegistry = exports.emailTemplateOverrideRegistry = exports.currentEmailRenderContext = exports.createEmailRenderContext = exports.configureEmailRendering = exports.broadcastEmail = exports.backupFailedEmail = exports.allowlistInvitationEmail = exports.TRANSACTIONAL_EMAIL_HEADERS = exports.SafeHtml = exports.RENDERED_EMAIL_MATCHES_MESSAGE = exports.PLATFORM_EMAIL_TEMPLATES = exports.EMAIL_TEMPLATE_NAME_PATTERN = exports.DEFAULT_EMAIL_TONES = exports.DEFAULT_EMAIL_LAYOUT_THEME = exports.EmailEgressContributor = exports.decideEmailConfig = exports.EmailConfigDoctorCheck = exports.EMAIL_SETTINGS_PATH = exports.classifyEmailRateLimit = void 0;
|
|
19
19
|
var email_module_1 = require("./email.module");
|
|
20
20
|
Object.defineProperty(exports, "EmailModule", { enumerable: true, get: function () { return email_module_1.EmailModule; } });
|
|
21
21
|
Object.defineProperty(exports, "EmailTemplateOverrideReporter", { enumerable: true, get: function () { return email_module_1.EmailTemplateOverrideReporter; } });
|
|
@@ -114,6 +114,8 @@ Object.defineProperty(exports, "emailTemplateOverrideRegistry", { enumerable: tr
|
|
|
114
114
|
Object.defineProperty(exports, "emailTemplateRegistry", { enumerable: true, get: function () { return index_1.emailTemplateRegistry; } });
|
|
115
115
|
Object.defineProperty(exports, "escapeHtml", { enumerable: true, get: function () { return index_1.escapeHtml; } });
|
|
116
116
|
Object.defineProperty(exports, "findEmailTemplate", { enumerable: true, get: function () { return index_1.findEmailTemplate; } });
|
|
117
|
+
Object.defineProperty(exports, "formatEmailDate", { enumerable: true, get: function () { return index_1.formatEmailDate; } });
|
|
118
|
+
Object.defineProperty(exports, "formatEmailDateTime", { enumerable: true, get: function () { return index_1.formatEmailDateTime; } });
|
|
117
119
|
Object.defineProperty(exports, "html", { enumerable: true, get: function () { return index_1.html; } });
|
|
118
120
|
Object.defineProperty(exports, "isEmailRenderingConfigured", { enumerable: true, get: function () { return index_1.isEmailRenderingConfigured; } });
|
|
119
121
|
Object.defineProperty(exports, "isEmailTemplateName", { enumerable: true, get: function () { return index_1.isEmailTemplateName; } });
|
package/dist/email/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/email/index.ts"],"names":[],"mappings":";AAAA,yEAAyE;AACzE,8EAA8E;AAC9E,+EAA+E;AAC/E,6EAA6E;AAC7E,wEAAwE;AACxE,EAAE;AACF,2EAA2E;AAC3E,qEAAqE;AACrE,wEAAwE;AACxE,8DAA8D;AAC9D,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,yEAAyE;;;;AAKzE,+CAA4E;AAAnE,2GAAA,WAAW,OAAA;AAAE,6HAAA,6BAA6B,OAAA;AACnD,iDAA2E;AAAlE,8GAAA,aAAa,OAAA;AAAE,0HAAA,yBAAyB,OAAA;AAGjD,4FAA4F;AAC5F,mEAAoF;AAA3E,8HAAA,oBAAoB,OAAA;AAAE,4HAAA,kBAAkB,OAAA;AAQjD,yEAAsE;AAA7D,oIAAA,uBAAuB,OAAA;AAEhC,qEAAmF;AAA1E,+HAAA,oBAAoB,OAAA;AAAE,2HAAA,gBAAgB,OAAA;AAE/C,yEAKqC;AAJnC,kIAAA,qBAAqB,OAAA;AACrB,iIAAA,oBAAoB,OAAA;AACpB,oIAAA,uBAAuB,OAAA;AACvB,wIAAA,2BAA2B,OAAA;AAE7B,uEAKoC;AAJlC,gIAAA,oBAAoB,OAAA;AACpB,+HAAA,mBAAmB,OAAA;AACnB,kIAAA,sBAAsB,OAAA;AACtB,sIAAA,0BAA0B,OAAA;AAE5B,6EAAoG;AAA3F,mIAAA,sBAAsB,OAAA;AAAE,sIAAA,yBAAyB,OAAA;AAE1D,iFAA0G;AAAjG,uIAAA,wBAAwB,OAAA;AAAE,0IAAA,2BAA2B,OAAA;AAE9D,qEAAwF;AAA/E,2HAAA,kBAAkB,OAAA;AAAE,8HAAA,qBAAqB,OAAA;AAElD,iEAQiC;AAP/B,qIAAA,4BAA4B,OAAA;AAC5B,+HAAA,sBAAsB,OAAA;AACtB,0HAAA,iBAAiB,OAAA;AACjB,6HAAA,oBAAoB,OAAA;AACpB,mIAAA,0BAA0B,OAAA;AAC1B,+HAAA,sBAAsB,OAAA;AACtB,4HAAA,mBAAmB,OAAA;AAIrB,gGAAgG;AAChG,gEAYsC;AAXpC,0HAAA,uBAAuB,OAAA;AACvB,kIAAA,+BAA+B,OAAA;AAC/B,4HAAA,yBAAyB,OAAA;AACzB,oHAAA,iBAAiB,OAAA;AACjB,qHAAA,kBAAkB,OAAA;AAClB,8HAAA,2BAA2B,OAAA;AAC3B,oHAAA,iBAAiB,OAAA;AACjB,wHAAA,qBAAqB,OAAA;AACrB,8HAAA,2BAA2B,OAAA;AAC3B,yHAAA,sBAAsB,OAAA;AACtB,wHAAA,qBAAqB,OAAA;AAYvB,kFAA+E;AAAtE,kIAAA,sBAAsB,OAAA;AAE/B,kFAK+C;AAJ7C,uIAAA,2BAA2B,OAAA;AAC3B,0IAAA,8BAA8B,OAAA;AAC9B,6HAAA,iBAAiB,OAAA;AACjB,8HAAA,kBAAkB,OAAA;AAIpB,2FAA2F;AAC3F,6DAA0E;AAAjE,wHAAA,iBAAiB,OAAA;AAAE,qHAAA,cAAc,OAAA;AAC1C,qEAAkE;AAAzD,sHAAA,gBAAgB,OAAA;AACzB,uEAAoE;AAA3D,wHAAA,iBAAiB,OAAA;AAG1B,uDAA4D;AAAnD,0HAAA,sBAAsB,OAAA;AAG/B,2FAA2F;AAC3F,gFAAoH;AAA3G,gIAAA,mBAAmB,OAAA;AAAE,mIAAA,sBAAsB,OAAA;AAAE,8HAAA,iBAAiB,OAAA;AACvE,qFAAkF;AAAzE,kIAAA,sBAAsB,OAAA;AAE/B,4FAA4F;AAC5F,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/email/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup-failed.email.d.ts","sourceRoot":"","sources":["../../../src/email/templates/backup-failed.email.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"backup-failed.email.d.ts","sourceRoot":"","sources":["../../../src/email/templates/backup-failed.email.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AA4BhC;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtD;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IAEd,qEAAqE;IACrE,OAAO,EAAE,oBAAoB,CAAC;IAE9B;;;;OAIG;IACH,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,sEAAsE;IACtE,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IAEvB,qEAAqE;IACrE,QAAQ,EAAE,IAAI,CAAC;IAEf,yEAAyE;IACzE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAuCD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,EAAE,GAAG,CAAC,EAAE,kBAAkB,GAAG,aAAa,CAsFtG"}
|
|
@@ -2,13 +2,17 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.backupFailedEmail = backupFailedEmail;
|
|
4
4
|
const layout_1 = require("./layout");
|
|
5
|
+
const format_date_1 = require("./format-date");
|
|
5
6
|
const render_context_1 = require("./render-context");
|
|
6
7
|
const email_template_types_1 = require("./email-template.types");
|
|
7
8
|
/** Where the CTA points, appended to `appUrl`. Matches `adminSections.tsx`. */
|
|
8
9
|
const DB_BACKUP_ADMIN_PATH = '/admin/settings/db-backup';
|
|
9
|
-
/**
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
/**
|
|
11
|
+
* The recipient's local time with the zone label and, outside UTC, the UTC time
|
|
12
|
+
* in parentheses (matchable against log lines). See `formatEmailDateTime`.
|
|
13
|
+
*/
|
|
14
|
+
function formatTimestamp(value, ctx) {
|
|
15
|
+
return (0, format_date_1.formatEmailDateTime)(value, ctx);
|
|
12
16
|
}
|
|
13
17
|
/** `null` is a fact about the row, not a blank. Give it words. */
|
|
14
18
|
function orNone(value) {
|
|
@@ -41,8 +45,8 @@ function detailRow(label, value) {
|
|
|
41
45
|
function backupFailedEmail(data, ctx) {
|
|
42
46
|
const context = (0, render_context_1.resolveEmailRenderContext)(ctx);
|
|
43
47
|
const appName = context.appName;
|
|
44
|
-
const failedAt = formatTimestamp(data.failedAt);
|
|
45
|
-
const startedAt = data.startedAt === null ? 'Not recorded' : formatTimestamp(data.startedAt);
|
|
48
|
+
const failedAt = formatTimestamp(data.failedAt, context);
|
|
49
|
+
const startedAt = data.startedAt === null ? 'Not recorded' : formatTimestamp(data.startedAt, context);
|
|
46
50
|
const error = orNone(data.error);
|
|
47
51
|
const trigger = orNone(data.trigger);
|
|
48
52
|
const sentence = outcomeSentence(data.outcome);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup-failed.email.js","sourceRoot":"","sources":["../../../src/email/templates/backup-failed.email.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"backup-failed.email.js","sourceRoot":"","sources":["../../../src/email/templates/backup-failed.email.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the formatters read from the render context.
|
|
3
|
+
*
|
|
4
|
+
* @stability experimental
|
|
5
|
+
*/
|
|
6
|
+
export interface EmailDateContext {
|
|
7
|
+
/** IANA zone to render in; absent, `null` or invalid means UTC. */
|
|
8
|
+
readonly timeZone?: string | null;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* A value a template may format: a `Date`, epoch milliseconds or an ISO string.
|
|
12
|
+
*
|
|
13
|
+
* @stability experimental
|
|
14
|
+
*/
|
|
15
|
+
export type EmailDateInput = Date | number | string;
|
|
16
|
+
/**
|
|
17
|
+
* Formats an instant for an email: medium date, short time and the zone's short
|
|
18
|
+
* name, in `ctx.timeZone` (UTC when absent or invalid). Outside UTC the UTC time
|
|
19
|
+
* is appended in parentheses.
|
|
20
|
+
*
|
|
21
|
+
* @param value - the instant (a `Date`, epoch milliseconds or an ISO string).
|
|
22
|
+
* @param ctx - the render context (only `timeZone` is read).
|
|
23
|
+
* @returns e.g. `Oct 26, 2026, 9:42 PM CDT (Oct 27, 02:42 UTC)`, with the UTC date added when it differs from the local one, or `Unknown time` for an unparseable value.
|
|
24
|
+
*
|
|
25
|
+
* @stability experimental
|
|
26
|
+
*/
|
|
27
|
+
export declare function formatEmailDateTime(value: EmailDateInput, ctx?: EmailDateContext): string;
|
|
28
|
+
/**
|
|
29
|
+
* Formats the calendar day of an instant in `ctx.timeZone` (UTC when absent or
|
|
30
|
+
* invalid), with the zone's short name: `Oct 26, 2026 (CDT)`.
|
|
31
|
+
*
|
|
32
|
+
* @param value - the instant.
|
|
33
|
+
* @param ctx - the render context (only `timeZone` is read).
|
|
34
|
+
* @returns the day and zone label, or `Unknown date` for an unparseable value.
|
|
35
|
+
*
|
|
36
|
+
* @stability experimental
|
|
37
|
+
*/
|
|
38
|
+
export declare function formatEmailDate(value: EmailDateInput, ctx?: EmailDateContext): string;
|
|
39
|
+
//# sourceMappingURL=format-date.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-date.d.ts","sourceRoot":"","sources":["../../../src/email/templates/format-date.ts"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AA+BpD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAiBzF;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAcrF"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// Date rendering for email templates (follows the recipient's time zone)
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// A message is rendered in the RECIPIENT's zone (`EmailRenderContext.timeZone`,
|
|
7
|
+
// from the recipient's `profile.timezone`), with the zone's short name always
|
|
8
|
+
// printed. When the zone is not UTC, the UTC time follows in parentheses,
|
|
9
|
+
// because these timestamps are matched against log lines and delivery records,
|
|
10
|
+
// which are UTC:
|
|
11
|
+
//
|
|
12
|
+
// Oct 26, 2026, 9:42 PM CDT (Oct 27, 02:42 UTC)
|
|
13
|
+
//
|
|
14
|
+
// Pure and framework-free. No clock: the value is passed in.
|
|
15
|
+
// =============================================================================
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.formatEmailDateTime = formatEmailDateTime;
|
|
18
|
+
exports.formatEmailDate = formatEmailDate;
|
|
19
|
+
const timezone_1 = require("@marinoscar/platform-contract/timezone");
|
|
20
|
+
function toDate(value) {
|
|
21
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
22
|
+
return Number.isNaN(date.getTime()) ? null : date;
|
|
23
|
+
}
|
|
24
|
+
/** The zone to render in: the context's when the runtime knows it, else UTC. */
|
|
25
|
+
function effectiveZone(ctx) {
|
|
26
|
+
const zone = ctx?.timeZone;
|
|
27
|
+
if (!zone)
|
|
28
|
+
return timezone_1.DEFAULT_SERVER_TIME_ZONE;
|
|
29
|
+
try {
|
|
30
|
+
new Intl.DateTimeFormat('en-US', { timeZone: zone });
|
|
31
|
+
return zone;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return timezone_1.DEFAULT_SERVER_TIME_ZONE;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
|
38
|
+
function utcDay(date) {
|
|
39
|
+
return `${MONTHS[date.getUTCMonth()]} ${date.getUTCDate()}`;
|
|
40
|
+
}
|
|
41
|
+
function utcClock(date) {
|
|
42
|
+
const hh = String(date.getUTCHours()).padStart(2, '0');
|
|
43
|
+
const mm = String(date.getUTCMinutes()).padStart(2, '0');
|
|
44
|
+
return `${hh}:${mm} UTC`;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Formats an instant for an email: medium date, short time and the zone's short
|
|
48
|
+
* name, in `ctx.timeZone` (UTC when absent or invalid). Outside UTC the UTC time
|
|
49
|
+
* is appended in parentheses.
|
|
50
|
+
*
|
|
51
|
+
* @param value - the instant (a `Date`, epoch milliseconds or an ISO string).
|
|
52
|
+
* @param ctx - the render context (only `timeZone` is read).
|
|
53
|
+
* @returns e.g. `Oct 26, 2026, 9:42 PM CDT (Oct 27, 02:42 UTC)`, with the UTC date added when it differs from the local one, or `Unknown time` for an unparseable value.
|
|
54
|
+
*
|
|
55
|
+
* @stability experimental
|
|
56
|
+
*/
|
|
57
|
+
function formatEmailDateTime(value, ctx) {
|
|
58
|
+
const date = toDate(value);
|
|
59
|
+
if (!date)
|
|
60
|
+
return 'Unknown time';
|
|
61
|
+
const timeZone = effectiveZone(ctx);
|
|
62
|
+
const local = new Intl.DateTimeFormat('en-US', {
|
|
63
|
+
timeZone,
|
|
64
|
+
year: 'numeric',
|
|
65
|
+
month: 'short',
|
|
66
|
+
day: 'numeric',
|
|
67
|
+
hour: 'numeric',
|
|
68
|
+
minute: '2-digit',
|
|
69
|
+
timeZoneName: 'short',
|
|
70
|
+
}).format(date).replace(/[\u202f\u00a0]/g, ' '); // newer ICU puts a narrow no-break space before AM/PM
|
|
71
|
+
if (timeZone === timezone_1.DEFAULT_SERVER_TIME_ZONE || local.endsWith(' UTC'))
|
|
72
|
+
return local;
|
|
73
|
+
// When the UTC calendar day differs from the local one, name it, or the suffix misleads.
|
|
74
|
+
const sameDay = (0, timezone_1.zonedDateKey)(date, timeZone) === (0, timezone_1.zonedDateKey)(date, timezone_1.DEFAULT_SERVER_TIME_ZONE);
|
|
75
|
+
return `${local} (${sameDay ? '' : `${utcDay(date)}, `}${utcClock(date)})`;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Formats the calendar day of an instant in `ctx.timeZone` (UTC when absent or
|
|
79
|
+
* invalid), with the zone's short name: `Oct 26, 2026 (CDT)`.
|
|
80
|
+
*
|
|
81
|
+
* @param value - the instant.
|
|
82
|
+
* @param ctx - the render context (only `timeZone` is read).
|
|
83
|
+
* @returns the day and zone label, or `Unknown date` for an unparseable value.
|
|
84
|
+
*
|
|
85
|
+
* @stability experimental
|
|
86
|
+
*/
|
|
87
|
+
function formatEmailDate(value, ctx) {
|
|
88
|
+
const date = toDate(value);
|
|
89
|
+
if (!date)
|
|
90
|
+
return 'Unknown date';
|
|
91
|
+
const timeZone = effectiveZone(ctx);
|
|
92
|
+
const parts = new Intl.DateTimeFormat('en-US', {
|
|
93
|
+
timeZone,
|
|
94
|
+
year: 'numeric',
|
|
95
|
+
month: 'short',
|
|
96
|
+
day: 'numeric',
|
|
97
|
+
timeZoneName: 'short',
|
|
98
|
+
}).formatToParts(date);
|
|
99
|
+
const pick = (type) => parts.find((p) => p.type === type)?.value ?? '';
|
|
100
|
+
// Same normalisation as above.
|
|
101
|
+
return `${pick('month')} ${pick('day')}, ${pick('year')} (${pick('timeZoneName')})`;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=format-date.js.map
|