@antelopejs/dms-mailing 0.7.0 → 0.7.1

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.
Files changed (88) hide show
  1. package/README.md +8 -7
  2. package/dist/constants.d.ts +0 -2
  3. package/dist/constants.js +1 -3
  4. package/dist/constants.js.map +1 -1
  5. package/dist/data/templates-table.js +1 -8
  6. package/dist/data/templates-table.js.map +1 -1
  7. package/dist/db/models/index.d.ts +0 -1
  8. package/dist/db/models/index.js +0 -1
  9. package/dist/db/models/index.js.map +1 -1
  10. package/dist/db/models/send-events.model.js +2 -3
  11. package/dist/db/models/send-events.model.js.map +1 -1
  12. package/dist/db/models/sends.model.js +2 -3
  13. package/dist/db/models/sends.model.js.map +1 -1
  14. package/dist/db/models/templates.model.js +2 -9
  15. package/dist/db/models/templates.model.js.map +1 -1
  16. package/dist/db/tables/index.d.ts +0 -1
  17. package/dist/db/tables/index.js +0 -1
  18. package/dist/db/tables/index.js.map +1 -1
  19. package/dist/db/tables/settings.table.d.ts +0 -1
  20. package/dist/db/tables/settings.table.js +0 -4
  21. package/dist/db/tables/settings.table.js.map +1 -1
  22. package/dist/db/tables/templates.table.d.ts +0 -3
  23. package/dist/db/tables/templates.table.js +1 -13
  24. package/dist/db/tables/templates.table.js.map +1 -1
  25. package/dist/hooks/index.d.ts +0 -1
  26. package/dist/hooks/index.js +0 -1
  27. package/dist/hooks/index.js.map +1 -1
  28. package/dist/implementations/dms-mailing/index.d.ts +3 -4
  29. package/dist/implementations/dms-mailing/index.js +8 -9
  30. package/dist/implementations/dms-mailing/index.js.map +1 -1
  31. package/dist/index.js +0 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/pages/settings/form.js +8 -0
  34. package/dist/pages/settings/form.js.map +1 -1
  35. package/dist/routes/templates.js +2 -6
  36. package/dist/routes/templates.js.map +1 -1
  37. package/dist/services/declarations.js +42 -184
  38. package/dist/services/declarations.js.map +1 -1
  39. package/dist/services/send-import.js +0 -2
  40. package/dist/services/send-import.js.map +1 -1
  41. package/dist/services/settings.d.ts +1 -1
  42. package/dist/services/settings.js +1 -5
  43. package/dist/services/settings.js.map +1 -1
  44. package/dist/services/templates.d.ts +2 -2
  45. package/dist/services/templates.js +48 -27
  46. package/dist/services/templates.js.map +1 -1
  47. package/dist/types/settings.d.ts +2 -0
  48. package/dist/types/settings.js +8 -1
  49. package/dist/types/settings.js.map +1 -1
  50. package/dist/validation/settings.schema.d.ts +16 -16
  51. package/frontend-vue/package.json +1 -1
  52. package/package.json +6 -6
  53. package/skills/dms-mailing/SKILL.md +8 -14
  54. package/src/constants.ts +0 -2
  55. package/src/data/templates-table.ts +3 -15
  56. package/src/db/models/index.ts +0 -1
  57. package/src/db/models/send-events.model.ts +2 -2
  58. package/src/db/models/sends.model.ts +7 -8
  59. package/src/db/models/templates.model.ts +3 -13
  60. package/src/db/tables/index.ts +0 -1
  61. package/src/db/tables/settings.table.ts +0 -8
  62. package/src/db/tables/templates.table.ts +2 -16
  63. package/src/hooks/index.ts +0 -1
  64. package/src/implementations/dms-mailing/index.ts +5 -18
  65. package/src/index.ts +1 -6
  66. package/src/pages/settings/form.ts +16 -0
  67. package/src/routes/templates.ts +11 -13
  68. package/src/services/declarations.ts +64 -318
  69. package/src/services/send-import.ts +2 -2
  70. package/src/services/settings.ts +3 -10
  71. package/src/services/templates.ts +59 -44
  72. package/src/types/settings.ts +20 -0
  73. package/dist/db/models/template-slugs.model.d.ts +0 -27
  74. package/dist/db/models/template-slugs.model.js +0 -43
  75. package/dist/db/models/template-slugs.model.js.map +0 -1
  76. package/dist/db/tables/template-slugs.table.d.ts +0 -7
  77. package/dist/db/tables/template-slugs.table.js +0 -35
  78. package/dist/db/tables/template-slugs.table.js.map +0 -1
  79. package/dist/hooks/database-ready.d.ts +0 -7
  80. package/dist/hooks/database-ready.js +0 -26
  81. package/dist/hooks/database-ready.js.map +0 -1
  82. package/dist/services/fingerprint.d.ts +0 -1
  83. package/dist/services/fingerprint.js +0 -20
  84. package/dist/services/fingerprint.js.map +0 -1
  85. package/src/db/models/template-slugs.model.ts +0 -61
  86. package/src/db/tables/template-slugs.table.ts +0 -29
  87. package/src/hooks/database-ready.ts +0 -47
  88. package/src/services/fingerprint.ts +0 -22
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/services/templates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/services/templates.ts"],"names":[],"mappings":"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"}
@@ -20,3 +20,5 @@ export interface MailingSettingsValues {
20
20
  categories: TemplateCategory[];
21
21
  }
22
22
  export declare const DEFAULT_CATEGORIES: TemplateCategory[];
23
+ export declare const DEFAULT_FALLBACK_LOCALE = "en";
24
+ export declare const MODULE_DEFAULT_SETTINGS: Pick<MailingSettingsValues, "fallbackLocale" | "logRetentionDays" | "blockOnMissingVariables" | "categories">;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_CATEGORIES = void 0;
3
+ exports.MODULE_DEFAULT_SETTINGS = exports.DEFAULT_FALLBACK_LOCALE = exports.DEFAULT_CATEGORIES = void 0;
4
4
  exports.DEFAULT_CATEGORIES = [
5
5
  {
6
6
  id: "orders",
@@ -28,4 +28,11 @@ exports.DEFAULT_CATEGORIES = [
28
28
  icon: "i-ph-textbox",
29
29
  },
30
30
  ];
31
+ exports.DEFAULT_FALLBACK_LOCALE = "en";
32
+ exports.MODULE_DEFAULT_SETTINGS = {
33
+ fallbackLocale: exports.DEFAULT_FALLBACK_LOCALE,
34
+ logRetentionDays: 90,
35
+ blockOnMissingVariables: false,
36
+ categories: exports.DEFAULT_CATEGORIES,
37
+ };
31
38
  //# sourceMappingURL=settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/types/settings.ts"],"names":[],"mappings":";;;AA2Ba,QAAA,kBAAkB,GAAuB;IACpD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE;QACxC,IAAI,EAAE,cAAc;KACrB;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,iBAAiB,EAAE;QACxD,IAAI,EAAE,WAAW;KAClB;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE;QAC3C,IAAI,EAAE,gBAAgB;KACvB;IACD;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE;QAC3C,IAAI,EAAE,cAAc;KACrB;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE;QACzC,IAAI,EAAE,cAAc;KACrB;CACF,CAAC"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/types/settings.ts"],"names":[],"mappings":";;;AA2Ba,QAAA,kBAAkB,GAAuB;IACpD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE;QACxC,IAAI,EAAE,cAAc;KACrB;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,iBAAiB,EAAE;QACxD,IAAI,EAAE,WAAW;KAClB;IACD;QACE,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE;QAC3C,IAAI,EAAE,gBAAgB;KACvB;IACD;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE;QAC3C,IAAI,EAAE,cAAc;KACrB;IACD;QACE,EAAE,EAAE,OAAO;QACX,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE;QACzC,IAAI,EAAE,cAAc;KACrB;CACF,CAAC;AAEW,QAAA,uBAAuB,GAAG,IAAI,CAAC;AAO/B,QAAA,uBAAuB,GAMhC;IACF,cAAc,EAAE,+BAAuB;IACvC,gBAAgB,EAAE,EAAE;IACpB,uBAAuB,EAAE,KAAK;IAC9B,UAAU,EAAE,0BAAkB;CAC/B,CAAC"}
@@ -100,30 +100,30 @@ export declare const settingsSchema: z.ZodObject<{
100
100
  fallbackLocale: string;
101
101
  logRetentionDays: number;
102
102
  blockOnMissingVariables: boolean;
103
- senderName: string;
104
- senderEmail: string;
105
- replyTo: string;
106
- webhookSecret: string;
107
103
  categories: {
108
104
  id: string;
109
105
  label: Record<string, string>;
110
106
  icon: string;
111
107
  moveTo?: string | undefined;
112
108
  }[];
113
- }, {
114
- fallbackLocale: string;
115
- logRetentionDays: number;
116
- blockOnMissingVariables: boolean;
117
109
  senderName: string;
118
110
  senderEmail: string;
119
111
  replyTo: string;
120
112
  webhookSecret: string;
113
+ }, {
114
+ fallbackLocale: string;
115
+ logRetentionDays: number;
116
+ blockOnMissingVariables: boolean;
121
117
  categories: {
122
118
  id: string;
123
119
  label: Record<string, string>;
124
120
  icon: string;
125
121
  moveTo?: string | undefined;
126
122
  }[];
123
+ senderName: string;
124
+ senderEmail: string;
125
+ replyTo: string;
126
+ webhookSecret: string;
127
127
  }>;
128
128
  export declare const settingsPatchSchema: z.ZodObject<{
129
129
  fallbackLocale: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
@@ -166,31 +166,31 @@ export declare const settingsPatchSchema: z.ZodObject<{
166
166
  fallbackLocale?: string | undefined;
167
167
  logRetentionDays?: number | undefined;
168
168
  blockOnMissingVariables?: boolean | undefined;
169
- senderName?: string | undefined;
170
- senderEmail?: string | undefined;
171
- replyTo?: string | undefined;
172
- webhookSecret?: string | undefined;
173
169
  categories?: {
174
170
  id: string;
175
171
  label: Record<string, string>;
176
172
  icon: string;
177
173
  moveTo?: string | undefined;
178
174
  }[] | undefined;
175
+ senderName?: string | undefined;
176
+ senderEmail?: string | undefined;
177
+ replyTo?: string | undefined;
178
+ webhookSecret?: string | undefined;
179
179
  missingVariables?: "send" | "refuse" | undefined;
180
180
  }, {
181
181
  fallbackLocale?: string | undefined;
182
182
  logRetentionDays?: number | undefined;
183
183
  blockOnMissingVariables?: boolean | undefined;
184
- senderName?: string | undefined;
185
- senderEmail?: string | undefined;
186
- replyTo?: string | undefined;
187
- webhookSecret?: string | undefined;
188
184
  categories?: {
189
185
  id: string;
190
186
  label: Record<string, string>;
191
187
  icon: string;
192
188
  moveTo?: string | undefined;
193
189
  }[] | undefined;
190
+ senderName?: string | undefined;
191
+ senderEmail?: string | undefined;
192
+ replyTo?: string | undefined;
193
+ webhookSecret?: string | undefined;
194
194
  missingVariables?: "send" | "refuse" | undefined;
195
195
  }>;
196
196
  export type SettingsPatch = z.infer<typeof settingsPatchSchema>;
@@ -6,7 +6,7 @@
6
6
  "license": "Apache-2.0",
7
7
  "packageManager": "pnpm@10.2.0",
8
8
  "engines": {
9
- "@antelopejs/dms-frontend": ">=0.8.0 <0.9.0"
9
+ "@antelopejs/dms-frontend": ">=0.9.0 <0.10.0"
10
10
  },
11
11
  "scripts": {
12
12
  "format": "prettier --write .",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antelopejs/dms-mailing",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "E-mail templates for the AntelopeJS DMS: a block editor with drafts and versions, a send log, delivery metrics and a suppression list.",
5
5
  "keywords": [
6
6
  "antelopejs",
@@ -49,17 +49,17 @@
49
49
  "@antelopejs/interface-api": ">=0.0.15 <1.0.0",
50
50
  "@antelopejs/interface-api-util": ">=0.1.3 <1.0.0",
51
51
  "@antelopejs/interface-core": ">=0.2.4 <1.0.0",
52
- "@antelopejs/interface-data-api": ">=0.3.0 <1.0.0",
53
- "@antelopejs/interface-database": ">=0.1.10 <1.0.0",
54
- "@antelopejs/interface-database-decorators": ">=0.1.9 <1.0.0",
55
- "@antelopejs/interface-dms": ">=0.8.0 <1.0.0",
52
+ "@antelopejs/interface-data-api": ">=0.4.0 <1.0.0",
53
+ "@antelopejs/interface-database": ">=0.1.11 <1.0.0",
54
+ "@antelopejs/interface-database-decorators": ">=0.1.10 <1.0.0",
55
+ "@antelopejs/interface-dms": ">=0.9.0 <1.0.0",
56
56
  "@antelopejs/interface-dms-mailing": ">=0.9.0 <0.10.0",
57
57
  "@antelopejs/interface-email": ">=0.0.6 <1.0.0",
58
58
  "node-cron": "^4.2.1",
59
59
  "zod": "~3.24.2"
60
60
  },
61
61
  "devDependencies": {
62
- "@antelopejs/core": ">=1.17.0 <2",
62
+ "@antelopejs/core": ">=1.17.1 <2",
63
63
  "@antelopejs/tooling-configs": ">=0.0.9 <1.0.0",
64
64
  "@types/chai": "^4.3.20",
65
65
  "@types/mocha": "^10",
@@ -68,23 +68,17 @@ export async function declareMailingContent(tenantId: string) {
68
68
  content: { locales: { en: { subject: "Your {{plan.name}} plan is renewed", preheader: "", blocks: [] } } },
69
69
  variables: [{ path: "plan.name", type: "string", required: true }],
70
70
  testData: { plan: { name: "Pro" } },
71
- }); // created | updated | unchanged | kept
71
+ }); // created | kept
72
72
  }
73
73
  ```
74
74
 
75
- - Require explicit non-blank `tenantId` for declarations and imports, including an explicitly selected default tenant.
76
- The application must authorize the target and establish provisioning readiness.
77
- - For SaaS initialization, follow the consumer reference's **Initialize new SaaS workspaces** section:
78
- register the durable `created` consumer synchronously in `construct()`, without awaiting declarations,
79
- before startup reconciliation; deduplicate `operationId`, bind resources
80
- durably, then return a receipt. Mailing registers no consumer. `start()` is process-global, not per tenant;
81
- `TENANT_BEING_PROVISIONED` is prepayment and is not the durable `created` transition.
82
- Deployment updates/backfills require an authorized inventory and `IsWorkspaceProvisioningCommitted`, failing closed.
83
- - Idempotent on the tenant's slug, published at once (v1, version rows, slug claim, attention refresh: a normal template).
84
- - Rule: same declaration → `unchanged`; changed declaration → `updated` only if the template is live, has no
85
- draft and still holds exactly the last declaration (fingerprint on `declaredHash`); otherwise `kept`.
86
- A dashboard-made template under that slug is never taken over. Deleted → recreated next boot; archive instead.
87
- - Categories: added once; a category a user relabelled/removed, or a default one, is `kept`.
75
+ - Require explicit non-blank `tenantId` for declarations and imports. Call them once per tenant, from a
76
+ `Hook.TENANT_BEING_PROVISIONED` handler (the DMS fires it for `default` on the start that creates it, after
77
+ `DATABASE_INITIALIZED`; dms-saas for each workspace). Never from `start()` or `DATABASE_INITIALIZED`.
78
+ - Written once: a missing slug is created and published (v1, version rows, unique slug, attention refresh: a normal
79
+ template) → `created`; a slug the tenant already has (declared or made in the dashboard) is left as it is → `kept`.
80
+ No fingerprint, no refresh: from its creation on, the template belongs to the tenant.
81
+ - Categories: a missing id is added → `created`; an existing one, a default included, is `kept`.
88
82
  - `name` / `label` are localized texts `{ en, fr, … }` (stored `@Localized`, `en` required as fallback), never `$`
89
83
  i18n keys; each user reads, searches and sorts them in their language (`x-content-language`).
90
84
  - `DeclareSender({ tenantId, email, name?, replyTo? })` writes the settings' sender (resolves `void`); call it once
package/src/constants.ts CHANGED
@@ -23,8 +23,6 @@ export const GALLERY_DISPLAY_ID = `${MODULE_ID}:gallery`;
23
23
  export const TEMPLATE_CATEGORIES_TYPE_ID = "mailing_template_categories";
24
24
  export const TEMPLATE_CATEGORY_TYPE_ID = "mailing_template_category";
25
25
 
26
- export const DEFAULT_FALLBACK_LOCALE = "en";
27
- export const DEFAULT_LOG_RETENTION_DAYS = 90;
28
26
  export const MAX_SLUG_LENGTH = 64;
29
27
  export const MAX_NAME_LENGTH = 120;
30
28
  export const SLUG_PATTERN = /^[a-z0-9][a-z0-9-]*$/;
@@ -71,13 +71,12 @@ import { findCategory, getSettings } from "../services/settings";
71
71
  import { findStarter, starterFields } from "../services/starters";
72
72
  import { refreshTemplateAttention } from "../services/template-attention";
73
73
  import {
74
- assertSlugClaimed,
75
74
  blankContent,
76
75
  blankFields,
77
76
  contentFieldsOf,
78
77
  displayName,
79
78
  initializeTemplate,
80
- releaseTemplateSlugs,
79
+ refuseTakenSlug,
81
80
  } from "../services/templates";
82
81
  import type { TemplateCategory } from "../types";
83
82
 
@@ -88,7 +87,6 @@ import {
88
87
  import { parseBody } from "./body";
89
88
  import { CategoryDisplay, LocaleChipsDisplay } from "./displays";
90
89
 
91
- const DUPLICATE_SLUG = "$dms_mailing.errors.duplicate_slug";
92
90
  const SLUG_IMMUTABLE = "$dms_mailing.errors.slug_immutable";
93
91
  const SOURCE_NOT_FOUND = "$dms_mailing.errors.template_not_found";
94
92
  const STARTER_NOT_FOUND = "$dms_mailing.errors.starter_not_found";
@@ -212,25 +210,16 @@ function withSeeding(base: DataControllerCallback): DataControllerCallback {
212
210
  ) {
213
211
  const { seed, normalized } = parseCreation(body, localeOfRequest(ctx));
214
212
  const tenantId = getRequestTenantId(ctx);
215
- const model = GetModel(TemplateModel, tenantId);
216
- if (await model.getBySlug(seed.slug)) {
217
- throw new HTTPResult(HTTP_CONFLICT, DUPLICATE_SLUG);
218
- }
219
213
  const settings = await getSettings(tenantId);
220
214
  assertKnownCategory(settings.categories, seed.category);
221
215
  const fields = await seedFields(tenantId, seed, settings.fallbackLocale);
222
216
  // The module's creation dialogs send one typed name; the stored name
223
217
  // holds every language, written at once.
224
218
  (this as LocalizedController).language = ALL_LANGUAGES;
225
- const created = (await base.func.call(
226
- this,
227
- ctx,
228
- params,
229
- normalized,
230
- ...rest,
219
+ const created = (await refuseTakenSlug(
220
+ base.func.call(this, ctx, params, normalized, ...rest),
231
221
  )) as CreatedRow;
232
222
  const templateId = created._id;
233
- await assertSlugClaimed(tenantId, seed.slug, templateId);
234
223
  const user = await authenticateTenantRequest(ctx);
235
224
  await initializeTemplate(tenantId, templateId, displayName(user), fields);
236
225
  return created;
@@ -291,7 +280,6 @@ export function afterDelete(tenantId: string, ids: string[]): AfterWrite {
291
280
  await Promise.all(
292
281
  ids.map((id) => versions.getAll(id, "templateId").delete().run()),
293
282
  );
294
- await releaseTemplateSlugs(tenantId, ids);
295
283
  await refreshTemplateAttention(tenantId);
296
284
  };
297
285
  }
@@ -2,7 +2,6 @@ export * from "./send-events.model";
2
2
  export * from "./sends.model";
3
3
  export * from "./settings.model";
4
4
  export * from "./suppressions.model";
5
- export * from "./template-slugs.model";
6
5
  export * from "./template-versions.model";
7
6
  export * from "./templates.model";
8
7
  export * from "./webhook-status.model";
@@ -1,3 +1,4 @@
1
+ import { IsDuplicateKeyError } from "@antelopejs/interface-database";
1
2
  import { BasicDataModel } from "@antelopejs/interface-database-decorators";
2
3
  import { MAILING_SEND_EVENTS_TABLE_NAME, MailingSendEvent } from "../tables";
3
4
  import { SendModel } from "./sends.model";
@@ -28,11 +29,10 @@ export class SendEventModel extends BasicDataModel(
28
29
  * the same import already did.
29
30
  */
30
31
  async insertImported(event: MailingSendEvent): Promise<void> {
31
- if (await this.get(event._id)) return;
32
32
  try {
33
33
  await this.insert(event);
34
34
  } catch (error) {
35
- if (!(await this.get(event._id))) throw error;
35
+ if (!IsDuplicateKeyError(error)) throw error;
36
36
  }
37
37
  }
38
38
 
@@ -1,8 +1,9 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { BasicDataModel } from "@antelopejs/interface-database-decorators";
3
- import type {
4
- AtomicMutationOutcome,
5
- ValueProxy,
3
+ import {
4
+ type AtomicMutationOutcome,
5
+ IsDuplicateKeyError,
6
+ type ValueProxy,
6
7
  } from "@antelopejs/interface-database";
7
8
  import { isResolvedStage, stageOf } from "../../types";
8
9
  import { MAILING_SENDS_TABLE_NAME, MailingSend } from "../tables";
@@ -89,17 +90,15 @@ export class SendModel extends BasicDataModel(
89
90
  }
90
91
 
91
92
  /**
92
- * Writes an imported send under its own id; false when that id is already
93
- * taken, by an earlier run of the same import. Probed by state like the
94
- * slug claims, since the database exposes no typed conflict error.
93
+ * Writes an imported send under its own id; false when an earlier run of
94
+ * the same import already wrote it (its id is derived from the import's).
95
95
  */
96
96
  async insertImported(send: ImportedSendRow): Promise<boolean> {
97
- if (await this.get(send._id)) return false;
98
97
  try {
99
98
  await this.table.insert({ ...send, revision: randomUUID() }).run();
100
99
  return true;
101
100
  } catch (error) {
102
- if (await this.get(send._id)) return false;
101
+ if (IsDuplicateKeyError(error)) return false;
103
102
  throw error;
104
103
  }
105
104
  }
@@ -5,7 +5,6 @@ import {
5
5
  } from "@antelopejs/interface-database-decorators";
6
6
  import type { LocalizedText } from "@antelopejs/interface-dms-mailing";
7
7
  import { MAILING_TEMPLATES_TABLE_NAME, MailingTemplate } from "../tables";
8
- import { TemplateSlugModel } from "./template-slugs.model";
9
8
 
10
9
  /** The attention fields of a template, as the refresh writes them. */
11
10
  export type TemplateAttentionFields = Pick<
@@ -90,19 +89,10 @@ export class TemplateModel extends BasicDataModel(
90
89
  return outcome === "applied";
91
90
  }
92
91
 
92
+ /** The template holding `slug`: the unique index keeps it to one. */
93
93
  async getBySlug(slug: string): Promise<MailingTemplate | undefined> {
94
- const rows = await this.getBy("slug", slug);
95
- // A losing creation can still be cleaning up (or its process can crash).
96
- // Senders must see the claimed template, not an earlier draft candidate.
97
- if (rows.length > 1) {
98
- const claims = await new TemplateSlugModel(this.database).getBy(
99
- "templateId",
100
- ...rows.map((row) => row._id),
101
- );
102
- const claim = claims.find((candidate) => candidate.slug === slug);
103
- if (claim) return rows.find((row) => row._id === claim.templateId);
104
- }
105
- return rows[0];
94
+ const [template] = await this.getBy("slug", slug);
95
+ return template;
106
96
  }
107
97
 
108
98
  /**
@@ -2,7 +2,6 @@ export * from "./send-events.table";
2
2
  export * from "./sends.table";
3
3
  export * from "./settings.table";
4
4
  export * from "./suppressions.table";
5
- export * from "./template-slugs.table";
6
5
  export * from "./template-versions.table";
7
6
  export * from "./templates.table";
8
7
  export * from "./webhook-status.table";
@@ -46,12 +46,4 @@ export class MailingSettings extends Table {
46
46
 
47
47
  @Field("string")
48
48
  declare webhookSecret: string;
49
-
50
- /**
51
- * JSON-serialized fingerprint of each category `DeclareTemplateCategory`
52
- * applied, by its id: what tells a category untouched since from one a
53
- * user relabelled or removed.
54
- */
55
- @Field("string")
56
- declare json_declared_categories?: string;
57
49
  }
@@ -31,7 +31,8 @@ export class MailingTemplate extends Table.with(LocalizationModifier) {
31
31
  @Field("date")
32
32
  declare updatedAt: Date;
33
33
 
34
- @Index()
34
+ /** What sends name the template by: one template per slug in a tenant. */
35
+ @Index({ unique: true })
35
36
  @Field("string")
36
37
  declare slug: string;
37
38
 
@@ -141,25 +142,10 @@ export class MailingTemplate extends Table.with(LocalizationModifier) {
141
142
  @Field("date")
142
143
  declare unpublishedAt?: Date;
143
144
 
144
- /**
145
- * Fingerprint of the last declaration `DeclareTemplate` applied; blank for
146
- * a template made in the dashboard. A template still matching it is
147
- * untouched since, and the next declaration may refresh it.
148
- */
149
- @Field("string")
150
- declare declaredHash?: string;
151
-
152
145
  /** Every semantic edit invalidates a publication's optimistic snapshot. */
153
146
  @Field("string")
154
147
  declare revision?: string;
155
148
 
156
- /** An unmodified declaration seed can be completed after a crashed creator. */
157
- @Field("string")
158
- declare declarationSeedRevision?: string;
159
-
160
- @Field("string")
161
- declare pendingDeclaredHash?: string;
162
-
163
149
  /**
164
150
  * Complete latest version row, committed atomically with its content. Its
165
151
  * history row can be recovered after an interrupted publication.
@@ -1,2 +1 @@
1
- export * from "./database-ready";
2
1
  export * from "./tenant-export";
@@ -1,21 +1,8 @@
1
- import { afterDatabaseReady } from "../../hooks/database-ready";
2
- import {
3
- declareTemplate,
4
- declareTemplateCategory,
1
+ export {
2
+ declareTemplate as DeclareTemplate,
3
+ declareTemplateCategory as DeclareTemplateCategory,
5
4
  } from "../../services/declarations";
6
- import { importSends } from "../../services/send-import";
7
- import { declareSender } from "../../services/sender-declaration";
8
-
5
+ export { importSends as ImportSends } from "../../services/send-import";
6
+ export { declareSender as DeclareSender } from "../../services/sender-declaration";
9
7
  export { recordEmailEvent as RecordEmailEvent } from "../../services/events";
10
8
  export { sendUnlessSuppressed as SendTemplate } from "../../services/checked-send";
11
-
12
- /*
13
- * Projects call these from their `start()`, which runs in parallel with the
14
- * DMS's: they wait for the database the DMS opens there rather than fail.
15
- */
16
- export const DeclareTemplate = afterDatabaseReady(declareTemplate);
17
- export const DeclareTemplateCategory = afterDatabaseReady(
18
- declareTemplateCategory,
19
- );
20
- export const DeclareSender = afterDatabaseReady(declareSender);
21
- export const ImportSends = afterDatabaseReady(importSends);
package/src/index.ts CHANGED
@@ -14,11 +14,7 @@ import {
14
14
  scheduleJob,
15
15
  stopJob,
16
16
  } from "./crons";
17
- import {
18
- registerDatabaseReady,
19
- registerTenantExport,
20
- unregisterTenantExport,
21
- } from "./hooks";
17
+ import { registerTenantExport, unregisterTenantExport } from "./hooks";
22
18
  import { registerRealtimeTopics } from "./realtime";
23
19
  import { frontendModule } from "./frontend-module";
24
20
 
@@ -34,7 +30,6 @@ const CRON_JOBS = [RETENTION_JOB, ATTENTION_JOB];
34
30
  let scheduledJobs: ScheduledJob[] = [];
35
31
 
36
32
  export async function construct(config: DmsMailingConfig = {}): Promise<void> {
37
- registerDatabaseReady();
38
33
  setConfig(config);
39
34
  ImplementInterface(
40
35
  await import("@antelopejs/interface-dms-mailing"),
@@ -7,6 +7,8 @@ import { ComponentBuilder } from "@antelopejs/interface-dms/component";
7
7
  import { z } from "zod";
8
8
  import { API_BASE_PATH } from "../../constants";
9
9
  import { TemplateCategoriesType } from "../../data-types";
10
+ import { missingVariablesPolicy } from "../../services/settings";
11
+ import { MODULE_DEFAULT_SETTINGS } from "../../types";
10
12
  import {
11
13
  MAX_RETENTION_DAYS,
12
14
  MIN_RETENTION_DAYS,
@@ -37,6 +39,18 @@ const field = (id: string) => ({
37
39
  description: key(`fields.${id}.description`),
38
40
  });
39
41
 
42
+ /**
43
+ * A field holding a module default offers it: "Module default · Use default"
44
+ * while it holds something else. The retention does not: one click there
45
+ * could shorten it, and lowering it deletes sends, which its input asks to
46
+ * confirm instead. Nor do the categories: putting the default list back
47
+ * would move every template of a custom category.
48
+ */
49
+ const moduleDefault = (defaultValue: string) => ({
50
+ defaultValue,
51
+ offersDefault: true,
52
+ });
53
+
40
54
  const section = (
41
55
  id: string,
42
56
  icon: string,
@@ -84,12 +98,14 @@ const guards = section("guards", "i-ph-shield-check", [
84
98
  ],
85
99
  }),
86
100
  required: true,
101
+ ...moduleDefault(missingVariablesPolicy(MODULE_DEFAULT_SETTINGS)),
87
102
  },
88
103
  {
89
104
  ...field("fallbackLocale"),
90
105
  type: new DefaultDataTypes.StringType({}),
91
106
  inputComponent: CustomComponent("MailingLocaleSelect").serializeSync(),
92
107
  required: true,
108
+ ...moduleDefault(MODULE_DEFAULT_SETTINGS.fallbackLocale),
93
109
  },
94
110
  ]);
95
111
 
@@ -47,7 +47,6 @@ import {
47
47
  type TemplateStats,
48
48
  } from "../services/template-stats";
49
49
  import {
50
- assertSlugClaimed,
51
50
  contentFieldsOf,
52
51
  discardDraft,
53
52
  displayName,
@@ -70,6 +69,7 @@ import {
70
69
  workingSnapshot,
71
70
  workingContent,
72
71
  workingVariables,
72
+ refuseTakenSlug,
73
73
  requireTemplate,
74
74
  } from "../services/templates";
75
75
  import {
@@ -89,7 +89,6 @@ import {
89
89
  } from "../validation/templates.schema";
90
90
 
91
91
  const STARTER_NOT_FOUND = "$dms_mailing.errors.starter_not_found";
92
- const DUPLICATE_SLUG = "$dms_mailing.errors.duplicate_slug";
93
92
  const INVALID_CONTENT = "$dms_mailing.errors.invalid_content";
94
93
  const INVALID_TRANSITION = "$dms_mailing.errors.invalid_transition";
95
94
  const NOTHING_TO_PUBLISH = "$dms_mailing.errors.nothing_to_publish";
@@ -573,17 +572,16 @@ export class TemplatesController extends Controller(
573
572
  duplicateSchema.parse(value),
574
573
  );
575
574
  const source = await requireTemplate(this.templates, id);
576
- const clash = await this.templates.getBySlug(slug);
577
- assert(!clash, HTTP_CONFLICT, DUPLICATE_SLUG);
578
- const [copyId] = await this.templates.insertFields({
579
- slug,
580
- name: withTextIn(undefined, this.locale, name),
581
- category: source.category,
582
- status: "draft",
583
- ...contentFieldsOf(source),
584
- updatedBy: this.author,
585
- });
586
- await assertSlugClaimed(this.tenantId, slug, copyId as string);
575
+ const [copyId] = await refuseTakenSlug(
576
+ this.templates.insertFields({
577
+ slug,
578
+ name: withTextIn(undefined, this.locale, name),
579
+ category: source.category,
580
+ status: "draft",
581
+ ...contentFieldsOf(source),
582
+ updatedBy: this.author,
583
+ }),
584
+ );
587
585
  await refreshTemplateAttention(this.tenantId);
588
586
  return { id: copyId };
589
587
  }