@antelopejs/dms-mailing 0.5.1 → 0.6.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.
- package/README.md +1 -1
- package/dist/db/models/send-events.model.d.ts +1 -0
- package/dist/db/models/send-events.model.js +11 -0
- package/dist/db/models/send-events.model.js.map +1 -1
- package/dist/db/models/sends.model.d.ts +2 -0
- package/dist/db/models/sends.model.js +13 -0
- package/dist/db/models/sends.model.js.map +1 -1
- package/dist/db/models/template-versions.model.d.ts +3 -1
- package/dist/db/models/template-versions.model.js +35 -2
- package/dist/db/models/template-versions.model.js.map +1 -1
- package/dist/db/models/templates.model.d.ts +1 -0
- package/dist/db/models/templates.model.js +22 -0
- package/dist/db/models/templates.model.js.map +1 -1
- package/dist/db/tables/settings.table.d.ts +1 -0
- package/dist/db/tables/settings.table.js +4 -0
- package/dist/db/tables/settings.table.js.map +1 -1
- package/dist/db/tables/templates.table.d.ts +5 -0
- package/dist/db/tables/templates.table.js +27 -0
- package/dist/db/tables/templates.table.js.map +1 -1
- package/dist/hooks/database-ready.d.ts +7 -0
- package/dist/hooks/database-ready.js +26 -0
- package/dist/hooks/database-ready.js.map +1 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/implementations/dms-mailing/index.d.ts +3 -0
- package/dist/implementations/dms-mailing/index.js +7 -1
- package/dist/implementations/dms-mailing/index.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/services/declaration-error.d.ts +6 -0
- package/dist/services/declaration-error.js +26 -0
- package/dist/services/declaration-error.js.map +1 -0
- package/dist/services/declarations.d.ts +3 -0
- package/dist/services/declarations.js +244 -0
- package/dist/services/declarations.js.map +1 -0
- package/dist/services/events.d.ts +4 -1
- package/dist/services/events.js.map +1 -1
- package/dist/services/fingerprint.d.ts +1 -0
- package/dist/services/fingerprint.js +20 -0
- package/dist/services/fingerprint.js.map +1 -0
- package/dist/services/send-import.d.ts +2 -0
- package/dist/services/send-import.js +136 -0
- package/dist/services/send-import.js.map +1 -0
- package/dist/services/templates.d.ts +1 -0
- package/dist/services/templates.js +49 -48
- package/dist/services/templates.js.map +1 -1
- package/dist/validation/declarations.schema.d.ts +299 -0
- package/dist/validation/declarations.schema.js +55 -0
- package/dist/validation/declarations.schema.js.map +1 -0
- package/frontend-vue/package.json +1 -1
- package/package.json +2 -2
- package/skills/dms-mailing/SKILL.md +41 -3
- package/src/db/models/send-events.model.ts +13 -0
- package/src/db/models/sends.model.ts +22 -0
- package/src/db/models/template-versions.model.ts +48 -2
- package/src/db/models/templates.model.ts +31 -0
- package/src/db/tables/settings.table.ts +8 -0
- package/src/db/tables/templates.table.ts +38 -0
- package/src/hooks/database-ready.ts +47 -0
- package/src/hooks/index.ts +1 -0
- package/src/implementations/dms-mailing/index.ts +17 -0
- package/src/index.ts +6 -1
- package/src/services/declaration-error.ts +39 -0
- package/src/services/declarations.ts +450 -0
- package/src/services/events.ts +8 -2
- package/src/services/fingerprint.ts +22 -0
- package/src/services/send-import.ts +235 -0
- package/src/services/templates.ts +64 -72
- package/src/validation/declarations.schema.ts +77 -0
- package/frontend-vue/pnpm-workspace.yaml +0 -2
package/README.md
CHANGED
|
@@ -61,7 +61,7 @@ await SendTemplate("order-confirmation", {
|
|
|
61
61
|
| `@antelopejs/dms` | `>=0.9.0 <1.0.0` |
|
|
62
62
|
| `@antelopejs/interface-dms` | `>=0.7.1 <1.0.0` |
|
|
63
63
|
| `@antelopejs/dms-frontend` (renderer, playground range) | `>=0.6.1 <0.7.0` |
|
|
64
|
-
| `@antelopejs/interface-dms-mailing` | `>=0.
|
|
64
|
+
| `@antelopejs/interface-dms-mailing` | `>=0.8.0 <0.9.0` |
|
|
65
65
|
| E-mail provider | an `@antelopejs/interface-email` implementation, such as `@antelopejs/nodemailer` |
|
|
66
66
|
|
|
67
67
|
On DMS 0.8, use `@antelopejs/dms-mailing` 0.4.
|
|
@@ -22,6 +22,7 @@ declare const SendEventModel_base: {
|
|
|
22
22
|
export declare class SendEventModel extends SendEventModel_base {
|
|
23
23
|
getBySend(sendId: string): Promise<MailingSendEvent[]>;
|
|
24
24
|
insertForActiveSend(event: NewSendEvent): Promise<boolean>;
|
|
25
|
+
insertImported(event: MailingSendEvent): Promise<void>;
|
|
25
26
|
listAfter(after: string, size: number): Promise<MailingSendEvent[]>;
|
|
26
27
|
deleteBySend(sendId: string): Promise<number>;
|
|
27
28
|
}
|
|
@@ -17,6 +17,17 @@ class SendEventModel extends (0, interface_database_decorators_1.BasicDataModel)
|
|
|
17
17
|
await this.delete(id);
|
|
18
18
|
return false;
|
|
19
19
|
}
|
|
20
|
+
async insertImported(event) {
|
|
21
|
+
if (await this.get(event._id))
|
|
22
|
+
return;
|
|
23
|
+
try {
|
|
24
|
+
await this.insert(event);
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
if (!(await this.get(event._id)))
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
20
31
|
listAfter(after, size) {
|
|
21
32
|
return this.table
|
|
22
33
|
.filter((row) => row.key("_id").gt(after))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-events.model.js","sourceRoot":"","sources":["../../../src/db/models/send-events.model.ts"],"names":[],"mappings":";;;AAAA,6FAA2E;AAC3E,sCAA6E;AAC7E,+CAA0C;AAI1C,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B,MAAa,cAAe,SAAQ,IAAA,8CAAc,EAChD,yBAAgB,EAChB,uCAA8B,CAC/B;IACC,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAGD,KAAK,CAAC,mBAAmB,CAAC,KAAmB;QAC3C,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,IAAI,uBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAGD,SAAS,CAAC,KAAa,EAAE,IAAY;QACnC,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;aACzC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;aACrB,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC;aAC7B,GAAG,EAAE,CAAC;IACX,CAAC;IAOD,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;aAC7C,MAAM,EAAE;aACR,GAAG,EAAE,CAAC;IACX,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"send-events.model.js","sourceRoot":"","sources":["../../../src/db/models/send-events.model.ts"],"names":[],"mappings":";;;AAAA,6FAA2E;AAC3E,sCAA6E;AAC7E,+CAA0C;AAI1C,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B,MAAa,cAAe,SAAQ,IAAA,8CAAc,EAChD,yBAAgB,EAChB,uCAA8B,CAC/B;IACC,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAGD,KAAK,CAAC,mBAAmB,CAAC,KAAmB;QAC3C,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,IAAI,uBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAC1C,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAMD,KAAK,CAAC,cAAc,CAAC,KAAuB;QAC1C,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;YAAE,OAAO;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAAE,MAAM,KAAK,CAAC;QAChD,CAAC;IACH,CAAC;IAGD,SAAS,CAAC,KAAa,EAAE,IAAY;QACnC,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;aACzC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;aACrB,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC;aAC7B,GAAG,EAAE,CAAC;IACX,CAAC;IAOD,YAAY,CAAC,MAAc;QACzB,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;aAC7C,MAAM,EAAE;aACR,GAAG,EAAE,CAAC;IACX,CAAC;CACF;AAlDD,wCAkDC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { MailingSend } from "../tables";
|
|
2
2
|
type NewSend = Omit<MailingSend, "_id" | "createdAt" | "revision" | "isRetiring" | "lastActivityAt">;
|
|
3
|
+
export type ImportedSendRow = Omit<MailingSend, "revision" | "isRetiring" | "lastActivityAt">;
|
|
3
4
|
export type SendSummary = Omit<MailingSend, "json_variables">;
|
|
4
5
|
type SendActivity = Pick<MailingSend, "status" | "opens" | "clicks" | "lastEventAt" | "provider" | "error" | "isSoftBounce">;
|
|
5
6
|
export interface SendReplay {
|
|
@@ -27,6 +28,7 @@ declare const SendModel_base: {
|
|
|
27
28
|
};
|
|
28
29
|
export declare class SendModel extends SendModel_base {
|
|
29
30
|
insertSend(send: NewSend): Promise<string[]>;
|
|
31
|
+
insertImported(send: ImportedSendRow): Promise<boolean>;
|
|
30
32
|
getSnapshot(sendId: string): Promise<MailingSend | undefined>;
|
|
31
33
|
getByProviderMessageId(messageId: string): Promise<MailingSend | undefined>;
|
|
32
34
|
listBetween(from: Date, to: Date): Promise<SendSummary[]>;
|
|
@@ -38,6 +38,19 @@ class SendModel extends (0, interface_database_decorators_1.BasicDataModel)(tabl
|
|
|
38
38
|
})
|
|
39
39
|
.run();
|
|
40
40
|
}
|
|
41
|
+
async insertImported(send) {
|
|
42
|
+
if (await this.get(send._id))
|
|
43
|
+
return false;
|
|
44
|
+
try {
|
|
45
|
+
await this.table.insert({ ...send, revision: (0, node_crypto_1.randomUUID)() }).run();
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
if (await this.get(send._id))
|
|
50
|
+
return false;
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
41
54
|
getSnapshot(sendId) {
|
|
42
55
|
return this.table.get(sendId).run();
|
|
43
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sends.model.js","sourceRoot":"","sources":["../../../src/db/models/sends.model.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AACzC,6FAA2E;AAK3E,uCAAuD;AACvD,sCAAkE;AAElE,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,UAAU,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sends.model.js","sourceRoot":"","sources":["../../../src/db/models/sends.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { MailingTemplateVersion } from "../tables";
|
|
1
|
+
import { type MailingTemplate, MailingTemplateVersion } from "../tables";
|
|
2
|
+
export declare function committedVersionOf(template: Pick<MailingTemplate, "json_published_version">): MailingTemplateVersion | undefined;
|
|
2
3
|
declare const TemplateVersionModel_base: {
|
|
3
4
|
new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
|
|
4
5
|
readonly table: import("@antelopejs/interface-database").Table<MailingTemplateVersion>;
|
|
@@ -19,6 +20,7 @@ declare const TemplateVersionModel_base: {
|
|
|
19
20
|
validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
|
|
20
21
|
};
|
|
21
22
|
export declare class TemplateVersionModel extends TemplateVersionModel_base {
|
|
23
|
+
materialize(template: Pick<MailingTemplate, "json_published_version">): Promise<void>;
|
|
22
24
|
listForTemplate(templateId: string): Promise<MailingTemplateVersion[]>;
|
|
23
25
|
getVersion(templateId: string, version: number): Promise<MailingTemplateVersion | undefined>;
|
|
24
26
|
}
|
|
@@ -1,15 +1,48 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TemplateVersionModel = void 0;
|
|
4
|
+
exports.committedVersionOf = committedVersionOf;
|
|
4
5
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
5
6
|
const tables_1 = require("../tables");
|
|
7
|
+
const templates_model_1 = require("./templates.model");
|
|
8
|
+
function committedVersionOf(template) {
|
|
9
|
+
if (!template.json_published_version)
|
|
10
|
+
return undefined;
|
|
11
|
+
const row = JSON.parse(template.json_published_version);
|
|
12
|
+
row.publishedAt = new Date(row.publishedAt);
|
|
13
|
+
return row;
|
|
14
|
+
}
|
|
6
15
|
class TemplateVersionModel extends (0, interface_database_decorators_1.BasicDataModel)(tables_1.MailingTemplateVersion, tables_1.MAILING_TEMPLATE_VERSIONS_TABLE_NAME) {
|
|
16
|
+
async materialize(template) {
|
|
17
|
+
const version = committedVersionOf(template);
|
|
18
|
+
if (!version)
|
|
19
|
+
return;
|
|
20
|
+
if (await this.get(version._id))
|
|
21
|
+
return;
|
|
22
|
+
try {
|
|
23
|
+
await this.insert(version);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
const stored = await this.get(version._id);
|
|
27
|
+
if (!stored ||
|
|
28
|
+
Object.entries(version).some(([key, value]) => JSON.stringify(stored[key]) !==
|
|
29
|
+
JSON.stringify(value)))
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
7
33
|
async listForTemplate(templateId) {
|
|
34
|
+
const template = await new templates_model_1.TemplateModel(this.database).get(templateId);
|
|
35
|
+
if (!template)
|
|
36
|
+
return [];
|
|
8
37
|
const rows = await this.getBy("templateId", templateId);
|
|
9
|
-
|
|
38
|
+
const current = committedVersionOf(template);
|
|
39
|
+
const history = rows.filter((row) => row.version <= template.publishedVersion);
|
|
40
|
+
if (current && !history.some((row) => row.version === current.version))
|
|
41
|
+
history.push(current);
|
|
42
|
+
return history.sort((left, right) => right.version - left.version);
|
|
10
43
|
}
|
|
11
44
|
async getVersion(templateId, version) {
|
|
12
|
-
const rows = await this.
|
|
45
|
+
const rows = await this.listForTemplate(templateId);
|
|
13
46
|
return rows.find((row) => row.version === version);
|
|
14
47
|
}
|
|
15
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-versions.model.js","sourceRoot":"","sources":["../../../src/db/models/template-versions.model.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"template-versions.model.js","sourceRoot":"","sources":["../../../src/db/models/template-versions.model.ts"],"names":[],"mappings":";;;AASA,gDASC;AAlBD,6FAA2E;AAC3E,sCAImB;AACnB,uDAAkD;AAGlD,SAAgB,kBAAkB,CAChC,QAAyD;IAEzD,IAAI,CAAC,QAAQ,CAAC,sBAAsB;QAAE,OAAO,SAAS,CAAC;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,QAAQ,CAAC,sBAAsB,CACN,CAAC;IAC5B,GAAG,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAa,oBAAqB,SAAQ,IAAA,8CAAc,EACtD,+BAAsB,EACtB,6CAAoC,CACrC;IAEC,KAAK,CAAC,WAAW,CACf,QAAyD;QAEzD,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3C,IACE,CAAC,MAAM;gBACP,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAC1B,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACf,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAmC,CAAC,CAAC;oBAC3D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACxB;gBAED,MAAM,KAAK,CAAC;QAChB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,UAAkB;QAEtC,MAAM,QAAQ,GAAG,MAAM,IAAI,+BAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CACzB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,QAAQ,CAAC,gBAAgB,CAClD,CAAC;QACF,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC;YACpE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,UAAU,CACd,UAAkB,EAClB,OAAe;QAEf,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IACrD,CAAC;CACF;AAhDD,oDAgDC"}
|
|
@@ -20,6 +20,7 @@ declare const TemplateModel_base: {
|
|
|
20
20
|
validate(obj: unknown, options?: import("@antelopejs/interface-database-decorators").ValidateInputOptions): import("@antelopejs/interface-database-decorators").ValidationResult;
|
|
21
21
|
};
|
|
22
22
|
export declare class TemplateModel extends TemplateModel_base {
|
|
23
|
+
publishIfCurrent(template: MailingTemplate, patch: Partial<MailingTemplate>): Promise<boolean>;
|
|
23
24
|
getBySlug(slug: string): Promise<MailingTemplate | undefined>;
|
|
24
25
|
writeAttention(id: string, fields: TemplateAttentionFields): Promise<void>;
|
|
25
26
|
}
|
|
@@ -1,11 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TemplateModel = void 0;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
4
5
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
5
6
|
const tables_1 = require("../tables");
|
|
7
|
+
const template_slugs_model_1 = require("./template-slugs.model");
|
|
6
8
|
class TemplateModel extends (0, interface_database_decorators_1.BasicDataModel)(tables_1.MailingTemplate, tables_1.MAILING_TEMPLATES_TABLE_NAME) {
|
|
9
|
+
async publishIfCurrent(template, patch) {
|
|
10
|
+
const outcome = await this.table
|
|
11
|
+
.atomicMutation(template._id, {
|
|
12
|
+
type: "update",
|
|
13
|
+
revisionField: "revision",
|
|
14
|
+
expectedRevision: template.revision ?? { kind: "missing" },
|
|
15
|
+
nextRevision: (0, node_crypto_1.randomUUID)(),
|
|
16
|
+
patch: { ...patch, updatedAt: new Date() },
|
|
17
|
+
})
|
|
18
|
+
.run();
|
|
19
|
+
if (outcome === "unknown")
|
|
20
|
+
throw new Error("Mailing publication outcome is unknown; not retrying");
|
|
21
|
+
return outcome === "applied";
|
|
22
|
+
}
|
|
7
23
|
async getBySlug(slug) {
|
|
8
24
|
const rows = await this.getBy("slug", slug);
|
|
25
|
+
if (rows.length > 1) {
|
|
26
|
+
const claims = await new template_slugs_model_1.TemplateSlugModel(this.database).getBy("templateId", ...rows.map((row) => row._id));
|
|
27
|
+
const claim = claims.find((candidate) => candidate.slug === slug);
|
|
28
|
+
if (claim)
|
|
29
|
+
return rows.find((row) => row._id === claim.templateId);
|
|
30
|
+
}
|
|
9
31
|
return rows[0];
|
|
10
32
|
}
|
|
11
33
|
async writeAttention(id, fields) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.model.js","sourceRoot":"","sources":["../../../src/db/models/templates.model.ts"],"names":[],"mappings":";;;AAAA,6FAA2E;AAC3E,sCAA0E;
|
|
1
|
+
{"version":3,"file":"templates.model.js","sourceRoot":"","sources":["../../../src/db/models/templates.model.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AACzC,6FAA2E;AAC3E,sCAA0E;AAC1E,iEAA2D;AAQ3D,MAAa,aAAc,SAAQ,IAAA,8CAAc,EAC/C,wBAAe,EACf,qCAA4B,CAC7B;IAEC,KAAK,CAAC,gBAAgB,CACpB,QAAyB,EACzB,KAA+B;QAE/B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK;aAC7B,cAAc,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC5B,IAAI,EAAE,QAAQ;YACd,aAAa,EAAE,UAAU;YACzB,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1D,YAAY,EAAE,IAAA,wBAAU,GAAE;YAC1B,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE;SAC3C,CAAC;aACD,GAAG,EAAE,CAAC;QACT,IAAI,OAAO,KAAK,SAAS;YACvB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,OAAO,OAAO,KAAK,SAAS,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAG5C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,MAAM,IAAI,wCAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAC7D,YAAY,EACZ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAC9B,CAAC;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAClE,IAAI,KAAK;gBAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAMD,KAAK,CAAC,cAAc,CAClB,EAAU,EACV,MAA+B;QAE/B,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;IAChD,CAAC;CACF;AAhDD,sCAgDC"}
|
|
@@ -62,6 +62,10 @@ __decorate([
|
|
|
62
62
|
(0, interface_database_decorators_1.Field)("string"),
|
|
63
63
|
__metadata("design:type", String)
|
|
64
64
|
], MailingSettings.prototype, "webhookSecret", void 0);
|
|
65
|
+
__decorate([
|
|
66
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
67
|
+
__metadata("design:type", String)
|
|
68
|
+
], MailingSettings.prototype, "json_declared_categories", void 0);
|
|
65
69
|
exports.MailingSettings = MailingSettings = __decorate([
|
|
66
70
|
(0, interface_database_decorators_1.RegisterTable)(exports.MAILING_SETTINGS_TABLE_NAME, constants_1.TENANT_SCHEMA_NAME)
|
|
67
71
|
], MailingSettings);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.table.js","sourceRoot":"","sources":["../../../src/db/tables/settings.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FAMmD;AACnD,mEAAyE;AAE5D,QAAA,2BAA2B,GAAG,kBAAkB,CAAC;AAGvD,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,qCAAK;
|
|
1
|
+
{"version":3,"file":"settings.table.js","sourceRoot":"","sources":["../../../src/db/tables/settings.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FAMmD;AACnD,mEAAyE;AAE5D,QAAA,2BAA2B,GAAG,kBAAkB,CAAC;AAGvD,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,qCAAK;CA4CzC,CAAA;AA5CY,0CAAe;AAElB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;4CACI;AAIZ;IAFP,IAAA,4CAAY,GAAE;IACd,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;kDAAC;AAIhB;IAFP,IAAA,0CAAU,GAAE;IACZ,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;kDAAC;AAGhB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;uDACe;AAGvB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;yDACiB;AAGzB;IADP,IAAA,qCAAK,EAAC,SAAS,CAAC;;gEACwB;AAGjC;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mDACW;AAGnB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;oDACY;AAGpB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;gDACQ;AAIhB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;wDACgB;AAGxB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;sDACc;AAQtB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iEAC0B;0BA3C/B,eAAe;IAD3B,IAAA,6CAAa,EAAC,mCAA2B,EAAE,8BAAkB,CAAC;GAClD,eAAe,CA4C3B"}
|
|
@@ -26,4 +26,9 @@ export declare class MailingTemplate extends Table {
|
|
|
26
26
|
attention: string;
|
|
27
27
|
needsAttention: boolean;
|
|
28
28
|
unpublishedAt?: Date;
|
|
29
|
+
declaredHash?: string;
|
|
30
|
+
revision?: string;
|
|
31
|
+
declarationSeedRevision?: string;
|
|
32
|
+
pendingDeclaredHash?: string;
|
|
33
|
+
json_published_version?: string;
|
|
29
34
|
}
|
|
@@ -10,6 +10,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.MailingTemplate = exports.MAILING_TEMPLATES_TABLE_NAME = void 0;
|
|
13
|
+
const node_crypto_1 = require("node:crypto");
|
|
13
14
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
14
15
|
const constants_1 = require("@antelopejs/interface-dms/constants");
|
|
15
16
|
exports.MAILING_TEMPLATES_TABLE_NAME = "mailing_templates";
|
|
@@ -119,7 +120,33 @@ __decorate([
|
|
|
119
120
|
(0, interface_database_decorators_1.Field)("date"),
|
|
120
121
|
__metadata("design:type", Date)
|
|
121
122
|
], MailingTemplate.prototype, "unpublishedAt", void 0);
|
|
123
|
+
__decorate([
|
|
124
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
125
|
+
__metadata("design:type", String)
|
|
126
|
+
], MailingTemplate.prototype, "declaredHash", void 0);
|
|
127
|
+
__decorate([
|
|
128
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
129
|
+
__metadata("design:type", String)
|
|
130
|
+
], MailingTemplate.prototype, "revision", void 0);
|
|
131
|
+
__decorate([
|
|
132
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
133
|
+
__metadata("design:type", String)
|
|
134
|
+
], MailingTemplate.prototype, "declarationSeedRevision", void 0);
|
|
135
|
+
__decorate([
|
|
136
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
137
|
+
__metadata("design:type", String)
|
|
138
|
+
], MailingTemplate.prototype, "pendingDeclaredHash", void 0);
|
|
139
|
+
__decorate([
|
|
140
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
141
|
+
__metadata("design:type", String)
|
|
142
|
+
], MailingTemplate.prototype, "json_published_version", void 0);
|
|
122
143
|
exports.MailingTemplate = MailingTemplate = __decorate([
|
|
123
144
|
(0, interface_database_decorators_1.RegisterTable)(exports.MAILING_TEMPLATES_TABLE_NAME, constants_1.TENANT_SCHEMA_NAME)
|
|
124
145
|
], MailingTemplate);
|
|
146
|
+
class TemplateRevisionModifier extends interface_database_decorators_1.Modifier {
|
|
147
|
+
update(object, field) {
|
|
148
|
+
object[field] = (0, node_crypto_1.randomUUID)();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
(0, interface_database_decorators_1.attachModifier)(MailingTemplate, TemplateRevisionModifier, "revision", {});
|
|
125
152
|
//# sourceMappingURL=templates.table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.table.js","sourceRoot":"","sources":["../../../src/db/tables/templates.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"templates.table.js","sourceRoot":"","sources":["../../../src/db/tables/templates.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAAyC;AACzC,6FASmD;AACnD,mEAAyE;AAG5D,QAAA,4BAA4B,GAAG,mBAAmB,CAAC;AAGzD,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,qCAAK;CA8IzC,CAAA;AA9IY,0CAAe;AAElB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;4CACI;AAIZ;IAFP,IAAA,4CAAY,GAAE;IACd,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;kDAAC;AAKhB;IAHP,IAAA,qCAAK,GAAE;IACP,IAAA,0CAAU,GAAE;IACZ,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;kDAAC;AAIhB;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;6CACK;AAGb;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;6CACK;AAIb;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iDACS;AAIjB;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;+CACe;AAOvB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;qDACa;AAOrB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;mDACY;AAIpB;IADP,IAAA,qCAAK,EAAC,SAAS,CAAC;;uDACgB;AAGzB;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACW,IAAI;uDAAC;AAGtB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;uDACgB;AAOxB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;sDACc;AAItB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;yDACiB;AAGzB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;oDACa;AAQrB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;uDACe;AAOvB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;6DACsB;AAI9B;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;uDACe;AASvB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;gDACQ;AAGhB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;kDACU;AAGlB;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACQ,IAAI;oDAAC;AAQnB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;kDACU;AAKlB;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,SAAS,CAAC;;uDACe;AAIxB;IADP,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACU,IAAI;sDAAC;AAQrB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;qDACc;AAItB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;iDACU;AAIlB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;gEACyB;AAGjC;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;4DACqB;AAO7B;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;+DACwB;0BA7I7B,eAAe;IAD3B,IAAA,6CAAa,EAAC,oCAA4B,EAAE,8BAAkB,CAAC;GACnD,eAAe,CA8I3B;AAGD,MAAM,wBAAyB,SAAQ,wCAAQ;IAC7C,MAAM,CAAC,MAA+B,EAAE,KAAa;QACnD,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,wBAAU,GAAE,CAAC;IAC/B,CAAC;CACF;AAED,IAAA,8CAAc,EAAC,eAAe,EAAE,wBAAwB,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface ReadyGate {
|
|
2
|
+
open(): void;
|
|
3
|
+
after<Args extends unknown[], Result>(task: (...args: Args) => Promise<Result>): (...args: Args) => Promise<Result>;
|
|
4
|
+
}
|
|
5
|
+
export declare function createReadyGate(): ReadyGate;
|
|
6
|
+
export declare function registerDatabaseReady(): void;
|
|
7
|
+
export declare const afterDatabaseReady: ReadyGate["after"];
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.afterDatabaseReady = void 0;
|
|
4
|
+
exports.createReadyGate = createReadyGate;
|
|
5
|
+
exports.registerDatabaseReady = registerDatabaseReady;
|
|
6
|
+
const hooks_1 = require("@antelopejs/interface-dms/hooks");
|
|
7
|
+
function createReadyGate() {
|
|
8
|
+
let open = () => undefined;
|
|
9
|
+
const opened = new Promise((resolve) => {
|
|
10
|
+
open = resolve;
|
|
11
|
+
});
|
|
12
|
+
return {
|
|
13
|
+
open: () => open(),
|
|
14
|
+
after: (task) => async (...args) => {
|
|
15
|
+
await opened;
|
|
16
|
+
return task(...args);
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
const databaseGate = createReadyGate();
|
|
21
|
+
function registerDatabaseReady() {
|
|
22
|
+
(0, hooks_1.RegisterHook)(hooks_1.Hook.DATABASE_INITIALIZED, () => databaseGate.open());
|
|
23
|
+
}
|
|
24
|
+
const afterDatabaseReady = (task) => databaseGate.after(task);
|
|
25
|
+
exports.afterDatabaseReady = afterDatabaseReady;
|
|
26
|
+
//# sourceMappingURL=database-ready.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-ready.js","sourceRoot":"","sources":["../../src/hooks/database-ready.ts"],"names":[],"mappings":";;;AAWA,0CAcC;AAeD,sDAEC;AA1CD,2DAAqE;AAWrE,SAAgB,eAAe;IAC7B,IAAI,IAAI,GAAe,GAAG,EAAE,CAAC,SAAS,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAC3C,IAAI,GAAG,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,OAAO;QACL,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;QAClB,KAAK,EACH,CAAC,IAAI,EAAE,EAAE,CACT,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE;YAChB,MAAM,MAAM,CAAC;YACb,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACvB,CAAC;KACJ,CAAC;AACJ,CAAC;AAOD,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;AAQvC,SAAgB,qBAAqB;IACnC,IAAA,oBAAY,EAAC,YAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;AACrE,CAAC;AAGM,MAAM,kBAAkB,GAAuB,CAAC,IAAI,EAAE,EAAE,CAC7D,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AADd,QAAA,kBAAkB,sBACJ"}
|
package/dist/hooks/index.d.ts
CHANGED
package/dist/hooks/index.js
CHANGED
|
@@ -14,5 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./database-ready"), exports);
|
|
17
18
|
__exportStar(require("./tenant-export"), exports);
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,kDAAgC"}
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
export { recordEmailEvent as RecordEmailEvent } from "../../services/events";
|
|
2
2
|
export { sendUnlessSuppressed as SendTemplate } from "../../services/checked-send";
|
|
3
|
+
export declare const DeclareTemplate: (input: import("@antelopejs/interface-dms-mailing").TemplateDeclaration) => Promise<import("@antelopejs/interface-dms-mailing").DeclareTemplateResult>;
|
|
4
|
+
export declare const DeclareTemplateCategory: (input: import("@antelopejs/interface-dms-mailing").TemplateCategoryDeclaration) => Promise<import("@antelopejs/interface-dms-mailing").DeclareTemplateCategoryResult>;
|
|
5
|
+
export declare const ImportSends: (input: import("@antelopejs/interface-dms-mailing").SendImport) => Promise<import("@antelopejs/interface-dms-mailing").ImportSendsResult>;
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SendTemplate = exports.RecordEmailEvent = void 0;
|
|
3
|
+
exports.ImportSends = exports.DeclareTemplateCategory = exports.DeclareTemplate = exports.SendTemplate = exports.RecordEmailEvent = void 0;
|
|
4
|
+
const database_ready_1 = require("../../hooks/database-ready");
|
|
5
|
+
const declarations_1 = require("../../services/declarations");
|
|
6
|
+
const send_import_1 = require("../../services/send-import");
|
|
4
7
|
var events_1 = require("../../services/events");
|
|
5
8
|
Object.defineProperty(exports, "RecordEmailEvent", { enumerable: true, get: function () { return events_1.recordEmailEvent; } });
|
|
6
9
|
var checked_send_1 = require("../../services/checked-send");
|
|
7
10
|
Object.defineProperty(exports, "SendTemplate", { enumerable: true, get: function () { return checked_send_1.sendUnlessSuppressed; } });
|
|
11
|
+
exports.DeclareTemplate = (0, database_ready_1.afterDatabaseReady)(declarations_1.declareTemplate);
|
|
12
|
+
exports.DeclareTemplateCategory = (0, database_ready_1.afterDatabaseReady)(declarations_1.declareTemplateCategory);
|
|
13
|
+
exports.ImportSends = (0, database_ready_1.afterDatabaseReady)(send_import_1.importSends);
|
|
8
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/implementations/dms-mailing/index.ts"],"names":[],"mappings":";;;AAAA,gDAA6E;AAApE,0GAAA,gBAAgB,OAAoB;AAC7C,4DAAmF;AAA1E,4GAAA,oBAAoB,OAAgB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/implementations/dms-mailing/index.ts"],"names":[],"mappings":";;;AAAA,+DAAgE;AAChE,8DAGqC;AACrC,4DAAyD;AAEzD,gDAA6E;AAApE,0GAAA,gBAAgB,OAAoB;AAC7C,4DAAmF;AAA1E,4GAAA,oBAAoB,OAAgB;AAMhC,QAAA,eAAe,GAAG,IAAA,mCAAkB,EAAC,8BAAe,CAAC,CAAC;AACtD,QAAA,uBAAuB,GAAG,IAAA,mCAAkB,EACvD,sCAAuB,CACxB,CAAC;AACW,QAAA,WAAW,GAAG,IAAA,mCAAkB,EAAC,yBAAW,CAAC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -68,6 +68,7 @@ const PROVIDER_WEBHOOK_ENDPOINT = {
|
|
|
68
68
|
};
|
|
69
69
|
let scheduledJobs = [];
|
|
70
70
|
async function construct(config = {}) {
|
|
71
|
+
(0, hooks_1.registerDatabaseReady)();
|
|
71
72
|
(0, config_1.setConfig)(config);
|
|
72
73
|
(0, interface_core_1.ImplementInterface)(await Promise.resolve().then(() => __importStar(require("@antelopejs/interface-dms-mailing"))), await Promise.resolve().then(() => __importStar(require("./implementations/dms-mailing"))));
|
|
73
74
|
(0, automation_1.registerAutomationNodes)();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDA,8BAkBC;AAED,0BAGC;AAED,sBAEC;AAED,oBAIC;AAlFD,yBAAuB;AACvB,gBAAc;AACd,0DAA6B;AAC7B,+DAAgE;AAChE,yDAAmE;AACnE,6CAGsB;AACtB,qCAA4D;AAC5D,2CAAkE;AAClE,mCAMiB;AACjB,mCAIiB;AACjB,yCAAoD;AACpD,8DAAkE;AAElE,yCAAuB;AACvB,+CAA6B;AAC7B,0CAAwB;AACxB,kDAAgC;AAChC,2CAAyB;AAGzB,MAAM,SAAS,GAAG,CAAC,qBAAa,EAAE,qBAAa,CAAC,CAAC;AAQjD,MAAM,yBAAyB,GAAG;IAChC,IAAI,EAAE,GAAG,yBAAa,aAAa;IACnC,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,OAAO,EAAE,CAAC,sCAAqB,CAAC;CACjC,CAAC;AAEF,IAAI,aAAa,GAAmB,EAAE,CAAC;AAEhC,KAAK,UAAU,SAAS,CAAC,SAA2B,EAAE;IAC3D,IAAA,6BAAqB,GAAE,CAAC;IACxB,IAAA,kBAAS,EAAC,MAAM,CAAC,CAAC;IAClB,IAAA,mCAAkB,EAChB,wDAAa,mCAAmC,GAAC,EACjD,wDAAa,+BAA+B,GAAC,CAC9C,CAAC;IACF,IAAA,oCAAuB,GAAE,CAAC;IAC1B,IAAA,4BAAoB,GAAE,CAAC;IACvB,IAAA,iCAAsB,GAAE,CAAC;IACzB,MAAM,IAAA,wBAAiB,EAAC;QACtB,IAAI,EAAE,gCAAoB;QAC1B,UAAU,EAAE,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;QACnD,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE;QACvC,OAAO,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QAC3B,QAAQ,EAAE,CAAC;QACX,eAAe,EAAE,CAAC,yBAAyB,CAAC;KAC7C,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,OAAO;IACrB,IAAA,sCAAyB,GAAE,CAAC;IAC5B,IAAA,8BAAsB,GAAE,CAAC;AAC3B,CAAC;AAED,SAAgB,KAAK;IACnB,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,mBAAW,CAAC,CAAC;AAC7C,CAAC;AAEM,KAAK,UAAU,IAAI;IACxB,MAAM,IAAI,GAAG,aAAa,CAAC;IAC3B,aAAa,GAAG,EAAE,CAAC;IACnB,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,eAAO,CAAC,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ZodType, ZodTypeDef } from "zod";
|
|
2
|
+
export declare class DeclarationError extends Error {
|
|
3
|
+
readonly code: string;
|
|
4
|
+
constructor(code: string, message: string);
|
|
5
|
+
}
|
|
6
|
+
export declare function parseDeclared<Output, Input>(schema: ZodType<Output, ZodTypeDef, Input>, input: unknown, code: string, subject: string): Output;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeclarationError = void 0;
|
|
4
|
+
exports.parseDeclared = parseDeclared;
|
|
5
|
+
class DeclarationError extends Error {
|
|
6
|
+
code;
|
|
7
|
+
constructor(code, message) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.code = code;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.DeclarationError = DeclarationError;
|
|
13
|
+
const ISSUE_SEPARATOR = "; ";
|
|
14
|
+
const ROOT_PATH = "(root)";
|
|
15
|
+
function describeIssues(error) {
|
|
16
|
+
return error.issues
|
|
17
|
+
.map((issue) => `${issue.path.join(".") || ROOT_PATH}: ${issue.message}`)
|
|
18
|
+
.join(ISSUE_SEPARATOR);
|
|
19
|
+
}
|
|
20
|
+
function parseDeclared(schema, input, code, subject) {
|
|
21
|
+
const parsed = schema.safeParse(input);
|
|
22
|
+
if (parsed.success)
|
|
23
|
+
return parsed.data;
|
|
24
|
+
throw new DeclarationError(code, `Invalid ${subject}: ${describeIssues(parsed.error)}`);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=declaration-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declaration-error.js","sourceRoot":"","sources":["../../src/services/declaration-error.ts"],"names":[],"mappings":";;;AA0BA,sCAYC;AA/BD,MAAa,gBAAiB,SAAQ,KAAK;IAEvB;IADlB,YACkB,IAAY,EAC5B,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAQ;IAI9B,CAAC;CACF;AAPD,4CAOC;AAED,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,SAAS,GAAG,QAAQ,CAAC;AAE3B,SAAS,cAAc,CAAC,KAAe;IACrC,OAAO,KAAK,CAAC,MAAM;SAChB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;SACxE,IAAI,CAAC,eAAe,CAAC,CAAC;AAC3B,CAAC;AAGD,SAAgB,aAAa,CAC3B,MAA0C,EAC1C,KAAc,EACd,IAAY,EACZ,OAAe;IAEf,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IACvC,MAAM,IAAI,gBAAgB,CACxB,IAAI,EACJ,WAAW,OAAO,KAAK,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACtD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { DeclareTemplateCategoryResult, DeclareTemplateResult, TemplateCategoryDeclaration, TemplateDeclaration } from "@antelopejs/interface-dms-mailing";
|
|
2
|
+
export declare function declareTemplate(input: TemplateDeclaration): Promise<DeclareTemplateResult>;
|
|
3
|
+
export declare function declareTemplateCategory(input: TemplateCategoryDeclaration): Promise<DeclareTemplateCategoryResult>;
|