@marinoscar/platform-api 0.1.0-next.17 → 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 +26 -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/testing/conformance/ai-no-sdk-leak.suite.js +4 -4
- package/dist/ai/testing/conformance/ai-no-sdk-leak.suite.js.map +1 -1
- package/dist/ai/testing/conformance/ai-secret-egress.suite.js +1 -1
- package/dist/ai/testing/conformance/ai-secret-egress.suite.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/credentials/testing/with-credential-purposes.d.ts +2 -2
- package/dist/credentials/testing/with-credential-purposes.js +2 -2
- package/dist/doctor/egress/classify-host.d.ts +1 -1
- package/dist/doctor/egress/classify-host.js +1 -1
- 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/layout-theme.d.ts +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/auth/dto/auth-user.dto.js +4 -4
- package/dist/identity/auth/dto/auth-user.dto.js.map +1 -1
- package/dist/identity/auth/sign-in-policy.d.ts +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/jobs/provider-throttle.service.js +2 -2
- package/dist/jobs/provider-throttle.service.js.map +1 -1
- package/dist/manifest/permission-sets.d.ts +2 -2
- package/dist/manifest/permission-sets.js +4 -4
- package/dist/manifest/permission-sets.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/index.d.ts +1 -1
- package/dist/settings/registry/assemble.d.ts +3 -3
- package/dist/settings/registry/assemble.js +4 -4
- package/dist/settings/registry/assemble.js.map +1 -1
- package/dist/settings/registry/compose.d.ts +3 -1
- package/dist/settings/registry/compose.d.ts.map +1 -1
- package/dist/settings/registry/compose.js.map +1 -1
- package/dist/settings/registry/core-user-fields.d.ts +4 -4
- package/dist/settings/registry/core-user-fields.d.ts.map +1 -1
- package/dist/settings/registry/core-user-fields.js +5 -4
- package/dist/settings/registry/core-user-fields.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 +14 -0
- 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/dist/telemetry/testing/stub-ports.d.ts +1 -1
- package/package.json +3 -3
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AiUsageReportDto = exports.aiUsageReportSchema = exports.aiUsageSeriesItemSchema = exports.aiUsageBucketSchema = exports.AiUsageAdminQueryDto = exports.AiUsageMeQueryDto = exports.AiUsageOrgQueryDto = exports.aiUsageOrgQuerySchema = exports.aiUsageAdminQuerySchema = exports.aiUsageMeQuerySchema = exports.AI_USAGE_ME_GROUP_BY = exports.AI_USAGE_ORG_GROUP_BY = exports.AI_USAGE_ADMIN_GROUP_BY = exports.DEFAULT_AI_USAGE_RANGE_DAYS = exports.MAX_AI_USAGE_RANGE_DAYS = void 0;
|
|
4
4
|
const ai_1 = require("@marinoscar/platform-contract/ai");
|
|
5
|
+
const settings_1 = require("@marinoscar/platform-contract/settings");
|
|
5
6
|
const nestjs_zod_1 = require("nestjs-zod");
|
|
6
7
|
const zod_1 = require("zod");
|
|
7
8
|
// =============================================================================
|
|
@@ -15,8 +16,10 @@ const zod_1 = require("zod");
|
|
|
15
16
|
// renders either. Aggregated in SQL over `ai_usage_events` (the `created_at`
|
|
16
17
|
// and `(user_id, created_at)` indexes); see `ai-usage.service.ts`.
|
|
17
18
|
//
|
|
18
|
-
// DATES ARE
|
|
19
|
-
//
|
|
19
|
+
// DATES ARE CALENDAR DAYS IN THE REPORT'S TIME ZONE, BOTH ENDS INCLUSIVE.
|
|
20
|
+
// `tz` (an IANA id) defaults to the caller's `profile.timezone`, then the
|
|
21
|
+
// `X-Time-Zone` header, then UTC; the report echoes the zone used as
|
|
22
|
+
// `timeZone`. `from=2026-09-01&to=2026-09-30` is thirty whole days there. Default: the last 30 days ending today;
|
|
20
23
|
// the span is at most `MAX_AI_USAGE_RANGE_DAYS` (the job-insights bound).
|
|
21
24
|
// =============================================================================
|
|
22
25
|
/** Largest window a report may cover, in days (inclusive). Same bound as job insights. */
|
|
@@ -41,15 +44,19 @@ exports.AI_USAGE_ORG_GROUP_BY = ['day', 'user', 'model', 'provider', 'keySource'
|
|
|
41
44
|
exports.AI_USAGE_ME_GROUP_BY = ['day', 'model'];
|
|
42
45
|
const isoDay = zod_1.z.iso.date();
|
|
43
46
|
exports.aiUsageMeQuerySchema = zod_1.z.object({
|
|
44
|
-
/** First
|
|
47
|
+
/** First day included (`YYYY-MM-DD`, in `tz`). Default: 29 days before `to`. */
|
|
45
48
|
from: isoDay.optional(),
|
|
46
|
-
/** Last
|
|
49
|
+
/** Last day included (`YYYY-MM-DD`, in `tz`). Default: today in `tz`. */
|
|
47
50
|
to: isoDay.optional(),
|
|
51
|
+
/** IANA time zone the days are cut in. Default: your profile zone, then `X-Time-Zone`, then UTC. */
|
|
52
|
+
tz: settings_1.timeZoneIdSchema.optional(),
|
|
48
53
|
groupBy: zod_1.z.enum(exports.AI_USAGE_ME_GROUP_BY).default('day'),
|
|
49
54
|
});
|
|
50
55
|
exports.aiUsageAdminQuerySchema = zod_1.z.object({
|
|
51
56
|
from: isoDay.optional(),
|
|
52
57
|
to: isoDay.optional(),
|
|
58
|
+
/** IANA time zone the days are cut in. Default: the caller's profile zone, then `X-Time-Zone`, then UTC. */
|
|
59
|
+
tz: settings_1.timeZoneIdSchema.optional(),
|
|
53
60
|
groupBy: zod_1.z.enum(exports.AI_USAGE_ADMIN_GROUP_BY).default('day'),
|
|
54
61
|
/** Only this user's events. */
|
|
55
62
|
userId: zod_1.z.uuid().optional(),
|
|
@@ -69,6 +76,8 @@ exports.aiUsageAdminQuerySchema = zod_1.z.object({
|
|
|
69
76
|
exports.aiUsageOrgQuerySchema = zod_1.z.object({
|
|
70
77
|
from: isoDay.optional(),
|
|
71
78
|
to: isoDay.optional(),
|
|
79
|
+
/** IANA time zone the days are cut in. Default: the caller's profile zone, then `X-Time-Zone`, then UTC. */
|
|
80
|
+
tz: settings_1.timeZoneIdSchema.optional(),
|
|
72
81
|
groupBy: zod_1.z.enum(exports.AI_USAGE_ORG_GROUP_BY).default('day'),
|
|
73
82
|
userId: zod_1.z.uuid().optional(),
|
|
74
83
|
provider: zod_1.z.string().min(1).max(64).optional(),
|
|
@@ -141,8 +150,10 @@ exports.aiUsageSeriesItemSchema = exports.aiUsageBucketSchema.extend({
|
|
|
141
150
|
label: zod_1.z.string(),
|
|
142
151
|
});
|
|
143
152
|
exports.aiUsageReportSchema = zod_1.z.object({
|
|
144
|
-
/** The window actually reported
|
|
153
|
+
/** The window actually reported: calendar days in `timeZone`, both inclusive. */
|
|
145
154
|
range: zod_1.z.object({ from: isoDay, to: isoDay }),
|
|
155
|
+
/** The IANA zone the days were cut in (the request's `tz`, else the caller's zone, else `UTC`). */
|
|
156
|
+
timeZone: settings_1.timeZoneIdSchema,
|
|
146
157
|
groupBy: zod_1.z.enum(exports.AI_USAGE_ADMIN_GROUP_BY),
|
|
147
158
|
/** Whether a pricing port is bound, so buckets carry a `cost` (PP-14.17). */
|
|
148
159
|
priced: zod_1.z.boolean().optional(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-usage.dto.js","sourceRoot":"","sources":["../../../../src/ai/usage/dto/ai-usage.dto.ts"],"names":[],"mappings":";;;AAAA,yDAAwF;AACxF,2CAA0C;AAC1C,6BAAwB;AAExB,gFAAgF;AAChF,wEAAwE;AACxE,gFAAgF;AAChF,EAAE;AACF,+EAA+E;AAC/E,wEAAwE;AACxE,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,mEAAmE;AACnE,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"ai-usage.dto.js","sourceRoot":"","sources":["../../../../src/ai/usage/dto/ai-usage.dto.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ export * from './registry/index';
|
|
|
2
2
|
export { RegistryFreezeService } from './registry/registry-freeze.service';
|
|
3
3
|
export * from './pluggable/index';
|
|
4
4
|
export * from './host/index';
|
|
5
|
+
export { REQUEST_TIME_ZONE_RESOLVER, chooseTimeZone, readRequestTimeZoneHeader, resolveRequestTimeZoneWith, } from './timezone/request-time-zone';
|
|
6
|
+
export type { RequestTimeZoneResolver, RequestWithHeaders } from './timezone/request-time-zone';
|
|
5
7
|
export { buildPermissionCatalog, catalogGrants, composePermissionCatalog, grantPermissions, permissionIds, permissionRegistry, registerPermissions, registerRoles, roleGrantRegistry, roleIds, roleRegistry, } from './permissions/index';
|
|
6
8
|
export type { CatalogGrant, DeclarationList, Declarations, IdentifiedDeclaration, PermissionCatalog, PermissionCatalogDeclarations, PermissionCatalogEntry, PermissionCatalogSource, PermissionDeclaration, PermissionDeclarationMap, PermissionScope, RoleDeclaration, RoleDeclarationMap, RoleGrantDeclaration, RoleGrantEntry, } from './permissions/index';
|
|
7
9
|
export type { BuiltinCredentialKind, BuiltinPrincipalKind, CredentialKindDef, GroupMembership, NodePrincipal, OrgMembership, Principal, PrincipalKindDef, Scope, SystemActor, TenancyMode, UserPrincipal, } from './principal/index';
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AASA,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAM3E,cAAc,mBAAmB,CAAC;AAKlC,cAAc,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
|
package/dist/core/index.js
CHANGED
|
@@ -22,8 +22,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
22
22
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
23
23
|
};
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.
|
|
26
|
-
exports.buildDatabaseUrl = exports.ApiDataResponse = exports.AllowDuringMaintenance = exports.ALLOW_DURING_MAINTENANCE_KEY = exports.systemScopeExtension = exports.systemAccessReasonRegistry = exports.runInScope = exports.runInOrg = exports.runAsSystem = exports.registerSystemAccessReason = exports.registerModelOwnership = exports.orgScopeExtension = exports.orgFieldOf = exports.orgColumnOf = exports.modelsOfKind = exports.modelOwnershipRegistry = exports.isSystemAccessReason = exports.forSystem = exports.forScope = exports.forOrg = exports.SYSTEM_ACCESS_REASON_ID_PATTERN = exports.SYSTEM_ACCESS_REASONS = exports.RLS_SETTINGS = exports.BUILTIN_SYSTEM_ACCESS_REASONS = exports.userScopeExtension = exports.userOwnedModelRegistry = exports.registerUserOwnedModels = exports.ownerRelationOf = void 0;
|
|
25
|
+
exports.openApiTags = exports.openApiTagGroups = exports.OPENAPI_TAG_NAME_PATTERN = exports.verifyEncryptionKeyAtStartup = exports.userCredentialPurpose = exports.orgCredentialPurpose = exports.isCanonicalUuid = exports.encryptSecret = exports.deriveSigningKey = exports.decryptSecret = exports.assertEncryptionKeyConfigured = exports.USER_CREDENTIAL_DOMAIN_PREFIX = exports.ORG_CREDENTIAL_DOMAIN_PREFIX = exports.ErrorDto = exports.DatabaseSeedException = exports.hasVerbatimErrorBody = exports.withVerbatimErrorBody = exports.registerErrorCode = exports.isErrorCodeForStatus = exports.errorCodeRegistry = exports.defaultErrorCodeForStatus = exports.FALLBACK_ERROR_CODE = exports.ERROR_CODE_PATTERN = exports.BUILTIN_ERROR_CODES = exports.HttpExceptionFilter = exports.HTTP_EXCEPTION_FILTER_OPTIONS = exports.requireCredentialKind = exports.registerPrincipalKind = exports.registerCredentialKind = exports.principalKindRegistry = exports.isCredentialKind = exports.credentialKindRegistry = exports.UnknownCredentialKindError = exports.KIND_ID_PATTERN = exports.roleRegistry = exports.roleIds = exports.roleGrantRegistry = exports.registerRoles = exports.registerPermissions = exports.permissionRegistry = exports.permissionIds = exports.grantPermissions = exports.composePermissionCatalog = exports.catalogGrants = exports.buildPermissionCatalog = exports.resolveRequestTimeZoneWith = exports.readRequestTimeZoneHeader = exports.chooseTimeZone = exports.REQUEST_TIME_ZONE_RESOLVER = exports.RegistryFreezeService = void 0;
|
|
26
|
+
exports.buildDatabaseUrl = exports.ApiDataResponse = exports.AllowDuringMaintenance = exports.ALLOW_DURING_MAINTENANCE_KEY = exports.systemScopeExtension = exports.systemAccessReasonRegistry = exports.runInScope = exports.runInOrg = exports.runAsSystem = exports.registerSystemAccessReason = exports.registerModelOwnership = exports.orgScopeExtension = exports.orgFieldOf = exports.orgColumnOf = exports.modelsOfKind = exports.modelOwnershipRegistry = exports.isSystemAccessReason = exports.forSystem = exports.forScope = exports.forOrg = exports.SYSTEM_ACCESS_REASON_ID_PATTERN = exports.SYSTEM_ACCESS_REASONS = exports.RLS_SETTINGS = exports.BUILTIN_SYSTEM_ACCESS_REASONS = exports.userScopeExtension = exports.userOwnedModelRegistry = exports.registerUserOwnedModels = exports.ownerRelationOf = exports.ownerFieldOf = exports.forUser = exports.asSystem = exports.ScopedAccessError = void 0;
|
|
27
27
|
__exportStar(require("./registry/index"), exports);
|
|
28
28
|
var registry_freeze_service_1 = require("./registry/registry-freeze.service");
|
|
29
29
|
Object.defineProperty(exports, "RegistryFreezeService", { enumerable: true, get: function () { return registry_freeze_service_1.RegistryFreezeService; } });
|
|
@@ -36,6 +36,11 @@ __exportStar(require("./pluggable/index"), exports);
|
|
|
36
36
|
// DI-time ports (`AUDIT_SINK`, `SYSTEM_SETTINGS_STORE`, `PLATFORM_PRISMA`) and
|
|
37
37
|
// `PlatformHostModule`, which binds them. Every packaged slice reuses them.
|
|
38
38
|
__exportStar(require("./host/index"), exports);
|
|
39
|
+
var request_time_zone_1 = require("./timezone/request-time-zone");
|
|
40
|
+
Object.defineProperty(exports, "REQUEST_TIME_ZONE_RESOLVER", { enumerable: true, get: function () { return request_time_zone_1.REQUEST_TIME_ZONE_RESOLVER; } });
|
|
41
|
+
Object.defineProperty(exports, "chooseTimeZone", { enumerable: true, get: function () { return request_time_zone_1.chooseTimeZone; } });
|
|
42
|
+
Object.defineProperty(exports, "readRequestTimeZoneHeader", { enumerable: true, get: function () { return request_time_zone_1.readRequestTimeZoneHeader; } });
|
|
43
|
+
Object.defineProperty(exports, "resolveRequestTimeZoneWith", { enumerable: true, get: function () { return request_time_zone_1.resolveRequestTimeZoneWith; } });
|
|
39
44
|
// Roles and permissions (issue #676, packaged by #866): the role and
|
|
40
45
|
// permission registries every slice declares into, the declaration types, and
|
|
41
46
|
// the seed catalog built from them. Framework-free, like the registry
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,8EAA8E;AAC9E,uEAAuE;AACvE,iEAAiE;AACjE,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;AAChF,0DAA0D;;;;;;;;;;;;;;;;;;AAE1D,mDAAiC;AACjC,8EAA2E;AAAlE,gIAAA,qBAAqB,OAAA;AAE9B,sEAAsE;AACtE,4EAA4E;AAC5E,8EAA8E;AAC9E,0FAA0F;AAC1F,oDAAkC;AAElC,2EAA2E;AAC3E,+EAA+E;AAC/E,4EAA4E;AAC5E,+CAA6B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The minimal request shape the header reader needs (a Fastify request fits).
|
|
3
|
+
*
|
|
4
|
+
* @stability experimental
|
|
5
|
+
*/
|
|
6
|
+
export interface RequestWithHeaders {
|
|
7
|
+
/** The request headers, lower-cased names as Node and Fastify deliver them. */
|
|
8
|
+
readonly headers: Readonly<Record<string, string | string[] | undefined>>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Injection token of the request time zone resolver. Provided globally by
|
|
12
|
+
* `SettingsModule`; inject it `@Optional()` from a slice that cannot import settings.
|
|
13
|
+
*
|
|
14
|
+
* @stability experimental
|
|
15
|
+
*/
|
|
16
|
+
export declare const REQUEST_TIME_ZONE_RESOLVER: unique symbol;
|
|
17
|
+
/**
|
|
18
|
+
* Resolves the zone for a request: profile, then header, then UTC.
|
|
19
|
+
*
|
|
20
|
+
* @stability experimental
|
|
21
|
+
*/
|
|
22
|
+
export interface RequestTimeZoneResolver {
|
|
23
|
+
/**
|
|
24
|
+
* @param request - the incoming request (its `X-Time-Zone` header is the second choice).
|
|
25
|
+
* @param userId - the requester, when signed in.
|
|
26
|
+
* @returns a valid IANA zone id; never throws.
|
|
27
|
+
*/
|
|
28
|
+
resolveRequestTimeZone(request: RequestWithHeaders | undefined, userId?: string | null): Promise<string>;
|
|
29
|
+
}
|
|
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
|
+
export declare function readRequestTimeZoneHeader(request: RequestWithHeaders | undefined): string | null;
|
|
39
|
+
/**
|
|
40
|
+
* The pure ordering: stored profile zone, then header zone, then `UTC`.
|
|
41
|
+
*
|
|
42
|
+
* @param profileZone - the stored `profile.timezone`, if any.
|
|
43
|
+
* @param headerZone - the validated `X-Time-Zone`, if any.
|
|
44
|
+
* @returns the zone to use.
|
|
45
|
+
*
|
|
46
|
+
* @stability experimental
|
|
47
|
+
*/
|
|
48
|
+
export declare function chooseTimeZone(profileZone: string | null | undefined, headerZone: string | null | undefined): string;
|
|
49
|
+
/**
|
|
50
|
+
* Resolves a request's zone through an optional resolver. With no resolver
|
|
51
|
+
* (no settings slice mounted) the header and then `UTC` decide.
|
|
52
|
+
*
|
|
53
|
+
* @param resolver - the injected {@link RequestTimeZoneResolver}, if any.
|
|
54
|
+
* @param request - the incoming request.
|
|
55
|
+
* @param userId - the requester.
|
|
56
|
+
* @returns a valid IANA zone id.
|
|
57
|
+
*
|
|
58
|
+
* @stability experimental
|
|
59
|
+
*/
|
|
60
|
+
export declare function resolveRequestTimeZoneWith(resolver: RequestTimeZoneResolver | undefined | null, request: RequestWithHeaders | undefined, userId?: string | null): Promise<string>;
|
|
61
|
+
//# sourceMappingURL=request-time-zone.d.ts.map
|
|
@@ -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"}
|
|
@@ -22,8 +22,8 @@ export interface TemporaryCredentialPurposes {
|
|
|
22
22
|
*
|
|
23
23
|
* @example
|
|
24
24
|
* ```ts
|
|
25
|
-
* await withCredentialPurposes({ purposes: [{ purpose: '
|
|
26
|
-
* await orgCredentials.setSecret(orgId, '
|
|
25
|
+
* await withCredentialPurposes({ purposes: [{ purpose: 'kappa', owner: 'app', label: 'Org Kappa key', tiers: ['org'] }] }, async () => {
|
|
26
|
+
* await orgCredentials.setSecret(orgId, 'kappa', 'default', 'k-123');
|
|
27
27
|
* });
|
|
28
28
|
* ```
|
|
29
29
|
*
|
|
@@ -15,8 +15,8 @@ const registry_1 = require("../registry");
|
|
|
15
15
|
*
|
|
16
16
|
* @example
|
|
17
17
|
* ```ts
|
|
18
|
-
* await withCredentialPurposes({ purposes: [{ purpose: '
|
|
19
|
-
* await orgCredentials.setSecret(orgId, '
|
|
18
|
+
* await withCredentialPurposes({ purposes: [{ purpose: 'kappa', owner: 'app', label: 'Org Kappa key', tiers: ['org'] }] }, async () => {
|
|
19
|
+
* await orgCredentials.setSecret(orgId, 'kappa', 'default', 'k-123');
|
|
20
20
|
* });
|
|
21
21
|
* ```
|
|
22
22
|
*
|
|
@@ -31,7 +31,7 @@ export declare function hostnameOf(value: string | null | undefined): string | n
|
|
|
31
31
|
* @example
|
|
32
32
|
* ```ts
|
|
33
33
|
* classifyHost('minio:9000'); // 'private'
|
|
34
|
-
* classifyHost('
|
|
34
|
+
* classifyHost('theta.openai.azure.com'); // 'public'
|
|
35
35
|
* classifyHost(''); // 'unknown'
|
|
36
36
|
* ```
|
|
37
37
|
*
|
|
@@ -135,7 +135,7 @@ function hostnameOf(value) {
|
|
|
135
135
|
* @example
|
|
136
136
|
* ```ts
|
|
137
137
|
* classifyHost('minio:9000'); // 'private'
|
|
138
|
-
* classifyHost('
|
|
138
|
+
* classifyHost('theta.openai.azure.com'); // 'public'
|
|
139
139
|
* classifyHost(''); // 'unknown'
|
|
140
140
|
* ```
|
|
141
141
|
*
|
|
@@ -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":"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"}
|
|
@@ -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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"}
|