@antelopejs/dms-mailing 0.9.1 → 0.10.0
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 +11 -11
- package/dist/data/read-only-routes.d.ts +14 -1
- package/dist/data/sends-table.d.ts +14 -1
- package/dist/data/suppressions-table.d.ts +14 -1
- package/dist/data/templates-table.d.ts +15 -2
- package/dist/db/models/send-events.model.d.ts +3 -3
- package/dist/db/models/sends.model.d.ts +6 -4
- package/dist/db/models/sends.model.js +26 -2
- package/dist/db/models/sends.model.js.map +1 -1
- package/dist/db/models/settings.model.d.ts +3 -3
- package/dist/db/models/suppressions.model.d.ts +3 -3
- package/dist/db/models/template-versions.model.d.ts +3 -3
- package/dist/db/models/template-versions.model.js +2 -3
- package/dist/db/models/template-versions.model.js.map +1 -1
- package/dist/db/models/templates.model.d.ts +4 -3
- package/dist/db/models/templates.model.js +14 -6
- package/dist/db/models/templates.model.js.map +1 -1
- package/dist/db/models/webhook-status.model.d.ts +3 -3
- package/dist/db/tables/templates.table.d.ts +4 -1
- package/dist/hooks/tenant-export.js +5 -1
- package/dist/hooks/tenant-export.js.map +1 -1
- package/dist/pages/editor.js +1 -1
- package/dist/pages/editor.js.map +1 -1
- package/dist/routes/metrics.js +1 -2
- package/dist/routes/metrics.js.map +1 -1
- package/dist/routes/sends.js +2 -1
- package/dist/routes/sends.js.map +1 -1
- package/dist/routes/templates.d.ts +2 -2
- package/dist/routes/templates.js +4 -4
- package/dist/routes/templates.js.map +1 -1
- package/dist/services/attention.d.ts +1 -1
- package/dist/services/attention.js +3 -3
- package/dist/services/attention.js.map +1 -1
- package/dist/services/metrics.js +5 -1
- package/dist/services/metrics.js.map +1 -1
- package/dist/services/settings.js +2 -1
- package/dist/services/settings.js.map +1 -1
- package/dist/services/template-attention.d.ts +1 -1
- package/dist/services/template-attention.js +2 -4
- package/dist/services/template-attention.js.map +1 -1
- package/dist/services/templates.js +10 -8
- package/dist/services/templates.js.map +1 -1
- package/dist/validation/declarations.schema.d.ts +1 -1
- package/dist/validation/stored.schema.d.ts +12 -0
- package/dist/validation/stored.schema.js +198 -0
- package/dist/validation/stored.schema.js.map +1 -0
- package/frontend-vue/app/composables/useEditorContext.ts +1 -1
- package/frontend-vue/build/backend-boundary.ts +7 -2
- package/frontend-vue/dms.frontend.ts +1 -4
- package/frontend-vue/eslint.config.mjs +9 -1
- package/frontend-vue/package.json +1 -1
- package/frontend-vue/pnpm-lock.yaml +24 -7
- package/frontend-vue/tests/backend-boundary.test.ts +4 -4
- package/frontend-vue/tests/column-displays.test.ts +13 -12
- package/frontend-vue/tests/footer-block.test.ts +1 -1
- package/frontend-vue/tests/template-gallery-display.test.ts +6 -5
- package/frontend-vue/tests/template-overlays.test.ts +4 -12
- package/frontend-vue/tsconfig.typecheck.json +1 -2
- package/package.json +16 -16
- package/src/db/models/sends.model.ts +34 -4
- package/src/db/models/template-versions.model.ts +8 -6
- package/src/db/models/templates.model.ts +25 -9
- package/src/hooks/tenant-export.ts +5 -2
- package/src/pages/editor.ts +1 -1
- package/src/routes/metrics.ts +1 -2
- package/src/routes/sends.ts +2 -3
- package/src/routes/templates.ts +9 -9
- package/src/services/attention.ts +6 -6
- package/src/services/metrics.ts +3 -1
- package/src/services/settings.ts +9 -3
- package/src/services/template-attention.ts +4 -5
- package/src/services/templates.ts +35 -16
- package/src/validation/stored.schema.ts +257 -0
- /package/frontend-vue/app/components/{Editor.vue → TemplateEditor.vue} +0 -0
- /package/frontend-vue/app/components/blocks/{Button.vue → BlockButton.vue} +0 -0
- /package/frontend-vue/app/components/blocks/{Code.vue → BlockCode.vue} +0 -0
- /package/frontend-vue/app/components/blocks/{Divider.vue → BlockDivider.vue} +0 -0
- /package/frontend-vue/app/components/blocks/{Footer.vue → BlockFooter.vue} +0 -0
- /package/frontend-vue/app/components/blocks/{Heading.vue → BlockHeading.vue} +0 -0
- /package/frontend-vue/app/components/blocks/{Hero.vue → BlockHero.vue} +0 -0
- /package/frontend-vue/app/components/blocks/{List.vue → BlockList.vue} +0 -0
- /package/frontend-vue/app/components/blocks/{Paragraph.vue → BlockParagraph.vue} +0 -0
- /package/frontend-vue/app/components/blocks/{Total.vue → BlockTotal.vue} +0 -0
package/README.md
CHANGED
|
@@ -37,7 +37,7 @@ In development, send to a throwaway Ethereal inbox:
|
|
|
37
37
|
```ts fragment
|
|
38
38
|
// antelope.config.ts
|
|
39
39
|
nodemailer: {
|
|
40
|
-
source: { type: "package", package: "@antelopejs/nodemailer", version: ">=0.0.
|
|
40
|
+
source: { type: "package", package: "@antelopejs/nodemailer", version: ">=0.0.12 <0.1.0" },
|
|
41
41
|
config: { ethereal: true },
|
|
42
42
|
},
|
|
43
43
|
```
|
|
@@ -68,16 +68,16 @@ await SendTemplate("order-confirmed", {
|
|
|
68
68
|
|
|
69
69
|
| Package | Supported | Tested with |
|
|
70
70
|
| ------------------------------------------- | ------------------ | ----------- |
|
|
71
|
-
| `@antelopejs/interface-api` | `>=0.3.
|
|
72
|
-
| `@antelopejs/interface-api-util` | `>=0.3.
|
|
73
|
-
| `@antelopejs/interface-core` | `>=0.
|
|
74
|
-
| `@antelopejs/interface-data-api` | `>=0.
|
|
75
|
-
| `@antelopejs/interface-database` | `>=0.
|
|
76
|
-
| `@antelopejs/interface-database-decorators` | `>=0.
|
|
77
|
-
| `@antelopejs/interface-dms` | `>=0.
|
|
78
|
-
| `@antelopejs/interface-dms-automation` | `>=0.6.0 <
|
|
79
|
-
| `@antelopejs/interface-dms-mailing` | `>=0.
|
|
80
|
-
| `@antelopejs/interface-email` | `>=0.0
|
|
71
|
+
| `@antelopejs/interface-api` | `>=0.3.3 <0.4.0` | `0.3.3` |
|
|
72
|
+
| `@antelopejs/interface-api-util` | `>=0.3.2 <0.4.0` | `0.3.2` |
|
|
73
|
+
| `@antelopejs/interface-core` | `>=0.5.0 <0.6.0` | `0.5.1` |
|
|
74
|
+
| `@antelopejs/interface-data-api` | `>=0.8.0 <0.9.0` | `0.8.0` |
|
|
75
|
+
| `@antelopejs/interface-database` | `>=0.4.0 <0.5.0` | `0.4.0` |
|
|
76
|
+
| `@antelopejs/interface-database-decorators` | `>=0.5.0 <0.6.0` | `0.5.2` |
|
|
77
|
+
| `@antelopejs/interface-dms` | `>=0.14.0 <0.15.0` | `0.14.0` |
|
|
78
|
+
| `@antelopejs/interface-dms-automation` | `>=0.6.0 <0.7.0` | `0.6.0` |
|
|
79
|
+
| `@antelopejs/interface-dms-mailing` | `>=0.11.0 <0.12.0` | `0.11.0` |
|
|
80
|
+
| `@antelopejs/interface-email` | `>=0.2.0 <0.3.0` | `0.2.1` |
|
|
81
81
|
|
|
82
82
|
<!-- antelopejs-docs-compat:end -->
|
|
83
83
|
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
export declare const READ_ONLY_ROUTES: {
|
|
2
|
-
|
|
2
|
+
exportStart: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<{
|
|
3
|
+
pluckMode: string;
|
|
4
|
+
}, {
|
|
5
|
+
jobId: string;
|
|
6
|
+
format: string;
|
|
7
|
+
extension: string;
|
|
8
|
+
}, [import("@antelopejs/interface-api").RequestContext, import("@antelopejs/interface-data-api/components").Parameters.ListParameters, string | undefined, string | undefined, string[], import("@antelopejs/interface-dms/auth/db").User, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
9
|
+
exportStatus: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<unknown, {
|
|
10
|
+
status: string;
|
|
11
|
+
progress: number;
|
|
12
|
+
error?: string;
|
|
13
|
+
}, [import("@antelopejs/interface-api").RequestContext, string, import("@antelopejs/interface-dms/auth/db").User, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
14
|
+
exportDownload: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<unknown, void, [import("@antelopejs/interface-api").RequestContext, string, import("@antelopejs/interface-dms/auth/db").User, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
15
|
+
get: import("@antelopejs/interface-data-api").DataControllerCallback<import("@antelopejs/interface-data-api/components").Parameters.GetParameters, import("@antelopejs/interface-data-api/metadata").StoredRow, [import("@antelopejs/interface-api").RequestContext, import("@antelopejs/interface-data-api/components").Parameters.GetParameters, import("@antelopejs/interface-dms/auth/db").User, import("@antelopejs/interface-api").RequestContext, string | undefined, string | undefined, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
3
16
|
list: import("@antelopejs/interface-data-api").DataControllerCallback<import("@antelopejs/interface-data-api/components").Parameters.ListParameters, import("@antelopejs/interface-dms/base").TableViewListPage, [import("@antelopejs/interface-api").RequestContext, import("@antelopejs/interface-data-api/components").Parameters.ListParameters, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
4
17
|
count: import("@antelopejs/interface-data-api").DataControllerCallback;
|
|
5
18
|
countBatch: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<any, unknown, [ctx: any, opts: any, ...args: any[]]>;
|
|
@@ -2,7 +2,20 @@ import { type CellSubline } from "@antelopejs/interface-dms/base/table-view";
|
|
|
2
2
|
import { MailingSend, SendModel, SuppressionModel } from "../db";
|
|
3
3
|
import { type SendStage, type SendStatus } from "../types";
|
|
4
4
|
declare const SendsTableAPI_base: import("@antelopejs/interface-core/decorators").Class<import("@antelopejs/interface-data-api").ExtractDefCallbacks<{
|
|
5
|
-
|
|
5
|
+
exportStart: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<{
|
|
6
|
+
pluckMode: string;
|
|
7
|
+
}, {
|
|
8
|
+
jobId: string;
|
|
9
|
+
format: string;
|
|
10
|
+
extension: string;
|
|
11
|
+
}, [import("@antelopejs/interface-api").RequestContext, import("@antelopejs/interface-data-api/components").Parameters.ListParameters, string | undefined, string | undefined, string[], import("@antelopejs/interface-dms/auth/db").User, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
12
|
+
exportStatus: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<unknown, {
|
|
13
|
+
status: string;
|
|
14
|
+
progress: number;
|
|
15
|
+
error?: string;
|
|
16
|
+
}, [import("@antelopejs/interface-api").RequestContext, string, import("@antelopejs/interface-dms/auth/db").User, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
17
|
+
exportDownload: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<unknown, void, [import("@antelopejs/interface-api").RequestContext, string, import("@antelopejs/interface-dms/auth/db").User, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
18
|
+
get: import("@antelopejs/interface-data-api").DataControllerCallback<import("@antelopejs/interface-data-api/components").Parameters.GetParameters, import("@antelopejs/interface-data-api/metadata").StoredRow, [import("@antelopejs/interface-api").RequestContext, import("@antelopejs/interface-data-api/components").Parameters.GetParameters, import("@antelopejs/interface-dms/auth/db").User, import("@antelopejs/interface-api").RequestContext, string | undefined, string | undefined, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
6
19
|
list: import("@antelopejs/interface-data-api").DataControllerCallback<import("@antelopejs/interface-data-api/components").Parameters.ListParameters, import("@antelopejs/interface-dms/base").TableViewListPage, [import("@antelopejs/interface-api").RequestContext, import("@antelopejs/interface-data-api/components").Parameters.ListParameters, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
7
20
|
count: import("@antelopejs/interface-data-api").DataControllerCallback;
|
|
8
21
|
countBatch: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<any, unknown, [ctx: any, opts: any, ...args: any[]]>;
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
import { MailingSuppression, SuppressionModel } from "../db";
|
|
2
2
|
import { type SuppressionReason } from "../types";
|
|
3
3
|
declare const SuppressionsTableAPI_base: import("@antelopejs/interface-core/decorators").Class<import("@antelopejs/interface-data-api").ExtractDefCallbacks<{
|
|
4
|
-
|
|
4
|
+
exportStart: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<{
|
|
5
|
+
pluckMode: string;
|
|
6
|
+
}, {
|
|
7
|
+
jobId: string;
|
|
8
|
+
format: string;
|
|
9
|
+
extension: string;
|
|
10
|
+
}, [import("@antelopejs/interface-api").RequestContext, import("@antelopejs/interface-data-api/components").Parameters.ListParameters, string | undefined, string | undefined, string[], import("@antelopejs/interface-dms/auth/db").User, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
11
|
+
exportStatus: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<unknown, {
|
|
12
|
+
status: string;
|
|
13
|
+
progress: number;
|
|
14
|
+
error?: string;
|
|
15
|
+
}, [import("@antelopejs/interface-api").RequestContext, string, import("@antelopejs/interface-dms/auth/db").User, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
16
|
+
exportDownload: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<unknown, void, [import("@antelopejs/interface-api").RequestContext, string, import("@antelopejs/interface-dms/auth/db").User, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
17
|
+
get: import("@antelopejs/interface-data-api").DataControllerCallback<import("@antelopejs/interface-data-api/components").Parameters.GetParameters, import("@antelopejs/interface-data-api/metadata").StoredRow, [import("@antelopejs/interface-api").RequestContext, import("@antelopejs/interface-data-api/components").Parameters.GetParameters, import("@antelopejs/interface-dms/auth/db").User, import("@antelopejs/interface-api").RequestContext, string | undefined, string | undefined, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
5
18
|
list: import("@antelopejs/interface-data-api").DataControllerCallback<import("@antelopejs/interface-data-api/components").Parameters.ListParameters, import("@antelopejs/interface-dms/base").TableViewListPage, [import("@antelopejs/interface-api").RequestContext, import("@antelopejs/interface-data-api/components").Parameters.ListParameters, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
6
19
|
count: import("@antelopejs/interface-data-api").DataControllerCallback;
|
|
7
20
|
countBatch: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<any, unknown, [ctx: any, opts: any, ...args: any[]]>;
|
|
@@ -18,13 +18,26 @@ export declare function saveDetails(ctx: RequestContext, template: MailingTempla
|
|
|
18
18
|
export declare function afterEdit(model: TemplateModel, id: string, locale: string): AfterWrite;
|
|
19
19
|
declare const TemplatesTableAPI_base: import("@antelopejs/interface-core/decorators").Class<import("@antelopejs/interface-data-api").ExtractDefCallbacks<{
|
|
20
20
|
new: DataControllerCallback;
|
|
21
|
-
|
|
21
|
+
exportStart: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<{
|
|
22
|
+
pluckMode: string;
|
|
23
|
+
}, {
|
|
24
|
+
jobId: string;
|
|
25
|
+
format: string;
|
|
26
|
+
extension: string;
|
|
27
|
+
}, [RequestContext, Parameters.ListParameters, string | undefined, string | undefined, string[], import("@antelopejs/interface-dms/auth/db").User, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
28
|
+
exportStatus: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<unknown, {
|
|
29
|
+
status: string;
|
|
30
|
+
progress: number;
|
|
31
|
+
error?: string;
|
|
32
|
+
}, [RequestContext, string, import("@antelopejs/interface-dms/auth/db").User, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
33
|
+
exportDownload: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<unknown, void, [RequestContext, string, import("@antelopejs/interface-dms/auth/db").User, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
34
|
+
get: DataControllerCallback<Parameters.GetParameters, import("@antelopejs/interface-data-api/metadata").StoredRow, [RequestContext, Parameters.GetParameters, import("@antelopejs/interface-dms/auth/db").User, RequestContext, string | undefined, string | undefined, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
22
35
|
list: DataControllerCallback<Parameters.ListParameters, import("@antelopejs/interface-dms/base").TableViewListPage, [RequestContext, Parameters.ListParameters, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
23
36
|
select: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<Parameters.ListParameters, import("@antelopejs/interface-dms/base").TableViewListPage, [RequestContext, Parameters.ListParameters, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
24
37
|
count: DataControllerCallback;
|
|
25
38
|
countBatch: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<any, unknown, [ctx: any, opts: any, ...args: any[]]>;
|
|
26
39
|
summary: import("@antelopejs/interface-data-api").DataControllerCallbackWithOptions<any, unknown, [ctx: any, opts: any, ...args: any[]]>;
|
|
27
|
-
edit: DataControllerCallback<Parameters.EditParameters, import("@antelopejs/interface-data-api/metadata").
|
|
40
|
+
edit: DataControllerCallback<Parameters.EditParameters, import("@antelopejs/interface-data-api/metadata").StoredRow, [RequestContext, Parameters.EditParameters, Validation.WrittenBody, import("@antelopejs/interface-dms/auth/db").User, RequestContext, string | undefined, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
28
41
|
delete: DataControllerCallback<Parameters.DeleteParameters, number | {
|
|
29
42
|
deleted: number;
|
|
30
43
|
}, [RequestContext, Parameters.DeleteParameters, Buffer<ArrayBufferLike>, import("@antelopejs/interface-dms/auth/db").User, RequestContext, string | undefined, import("@antelopejs/interface-dms/auth/db").User]>;
|
|
@@ -4,9 +4,9 @@ declare const SendEventModel_base: {
|
|
|
4
4
|
new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
|
|
5
5
|
readonly table: import("@antelopejs/interface-database").Table<MailingSendEvent>;
|
|
6
6
|
readonly database: import("@antelopejs/interface-database").SchemaInstance<any>;
|
|
7
|
-
get(id: string):
|
|
8
|
-
getBy(index: keyof MailingSendEvent, ...keys: import("@antelopejs/interface-database-decorators").IndexKey[]):
|
|
9
|
-
getAll():
|
|
7
|
+
get(id: string): Promise<MailingSendEvent | undefined>;
|
|
8
|
+
getBy(index: keyof MailingSendEvent, ...keys: import("@antelopejs/interface-database-decorators").IndexKey[]): Promise<MailingSendEvent[]>;
|
|
9
|
+
getAll(): Promise<MailingSendEvent[]>;
|
|
10
10
|
insert(obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingSendEvent> | import("@antelopejs/interface-database-decorators").DeepPartial<MailingSendEvent>[], options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<string[]>;
|
|
11
11
|
update(id: string, obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingSendEvent>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
|
|
12
12
|
update(obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingSendEvent> & {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { MailingSend } from "../tables";
|
|
2
2
|
type NewSend = Omit<MailingSend, "_id" | "createdAt" | "revision" | "isRetiring" | "lastActivityAt">;
|
|
3
3
|
export type ImportedSendRow = Omit<MailingSend, "revision" | "isRetiring" | "lastActivityAt">;
|
|
4
|
-
|
|
4
|
+
declare const SEND_SUMMARY_FIELDS: readonly ["_id", "createdAt", "templateSlug", "recipientEmail", "status", "stage", "latencyMs", "opens", "clicks", "isTest", "error", "source", "locale", "requestedLocale"];
|
|
5
|
+
export type SendSummary = Pick<MailingSend, (typeof SEND_SUMMARY_FIELDS)[number]>;
|
|
5
6
|
type SendActivity = Pick<MailingSend, "status" | "opens" | "clicks" | "lastEventAt" | "provider" | "error" | "isSoftBounce">;
|
|
6
7
|
export interface SendReplay {
|
|
7
8
|
replayedBy: string;
|
|
@@ -11,9 +12,9 @@ declare const SendModel_base: {
|
|
|
11
12
|
new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
|
|
12
13
|
readonly table: import("@antelopejs/interface-database").Table<MailingSend>;
|
|
13
14
|
readonly database: import("@antelopejs/interface-database").SchemaInstance<any>;
|
|
14
|
-
get(id: string):
|
|
15
|
-
getBy(index: keyof MailingSend, ...keys: import("@antelopejs/interface-database-decorators").IndexKey[]):
|
|
16
|
-
getAll():
|
|
15
|
+
get(id: string): Promise<MailingSend | undefined>;
|
|
16
|
+
getBy(index: keyof MailingSend, ...keys: import("@antelopejs/interface-database-decorators").IndexKey[]): Promise<MailingSend[]>;
|
|
17
|
+
getAll(): Promise<MailingSend[]>;
|
|
17
18
|
insert(obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingSend> | import("@antelopejs/interface-database-decorators").DeepPartial<MailingSend>[], options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<string[]>;
|
|
18
19
|
update(id: string, obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingSend>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
|
|
19
20
|
update(obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingSend> & {
|
|
@@ -45,5 +46,6 @@ export declare class SendModel extends SendModel_base {
|
|
|
45
46
|
private mutateLatest;
|
|
46
47
|
listForTemplate(templateSlug: string, from: Date): Promise<SendSummary[]>;
|
|
47
48
|
countOlderThan(limit: Date): Promise<number>;
|
|
49
|
+
listSentSlugs(from: Date, to: Date): Promise<string[]>;
|
|
48
50
|
}
|
|
49
51
|
export {};
|
|
@@ -9,6 +9,22 @@ const tables_1 = require("../tables");
|
|
|
9
9
|
const FIRST_ROW_OFFSET = 0;
|
|
10
10
|
const SINGLE_ROW = 1;
|
|
11
11
|
const MAX_MUTATION_ATTEMPTS = 5;
|
|
12
|
+
const SEND_SUMMARY_FIELDS = [
|
|
13
|
+
"_id",
|
|
14
|
+
"createdAt",
|
|
15
|
+
"templateSlug",
|
|
16
|
+
"recipientEmail",
|
|
17
|
+
"status",
|
|
18
|
+
"stage",
|
|
19
|
+
"latencyMs",
|
|
20
|
+
"opens",
|
|
21
|
+
"clicks",
|
|
22
|
+
"isTest",
|
|
23
|
+
"error",
|
|
24
|
+
"source",
|
|
25
|
+
"locale",
|
|
26
|
+
"requestedLocale",
|
|
27
|
+
];
|
|
12
28
|
function canRetire(row, limit) {
|
|
13
29
|
return row
|
|
14
30
|
.key("createdAt")
|
|
@@ -64,7 +80,7 @@ class SendModel extends (0, interface_database_decorators_1.BasicDataModel)(tabl
|
|
|
64
80
|
return this.table
|
|
65
81
|
.filter((row) => row.key("createdAt").ge(from))
|
|
66
82
|
.filter((row) => row.key("createdAt").lt(to))
|
|
67
|
-
.
|
|
83
|
+
.pluck(...SEND_SUMMARY_FIELDS)
|
|
68
84
|
.run();
|
|
69
85
|
}
|
|
70
86
|
listOlderThan(limit, pageSize) {
|
|
@@ -178,7 +194,7 @@ class SendModel extends (0, interface_database_decorators_1.BasicDataModel)(tabl
|
|
|
178
194
|
return this.table
|
|
179
195
|
.getAll(templateSlug, "templateSlug")
|
|
180
196
|
.filter((row) => row.key("createdAt").ge(from))
|
|
181
|
-
.
|
|
197
|
+
.pluck(...SEND_SUMMARY_FIELDS)
|
|
182
198
|
.run();
|
|
183
199
|
}
|
|
184
200
|
countOlderThan(limit) {
|
|
@@ -187,6 +203,14 @@ class SendModel extends (0, interface_database_decorators_1.BasicDataModel)(tabl
|
|
|
187
203
|
.count()
|
|
188
204
|
.run();
|
|
189
205
|
}
|
|
206
|
+
listSentSlugs(from, to) {
|
|
207
|
+
return this.table
|
|
208
|
+
.filter((row) => row.key("createdAt").ge(from))
|
|
209
|
+
.filter((row) => row.key("createdAt").lt(to))
|
|
210
|
+
.filter((row) => row.key("isTest").ne(true))
|
|
211
|
+
.distinct("templateSlug")
|
|
212
|
+
.run();
|
|
213
|
+
}
|
|
190
214
|
}
|
|
191
215
|
exports.SendModel = SendModel;
|
|
192
216
|
//# sourceMappingURL=sends.model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sends.model.js","sourceRoot":"","sources":["../../../src/db/models/sends.model.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AACzC,6FAA2E;AAC3E,uEAIwC;AACxC,uCAAuD;AACvD,sCAAkE;AAElE,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,UAAU,GAAG,CAAC,CAAC;AAarB,MAAM,qBAAqB,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sends.model.js","sourceRoot":"","sources":["../../../src/db/models/sends.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,9 @@ declare const SettingsModel_base: {
|
|
|
3
3
|
new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
|
|
4
4
|
readonly table: import("@antelopejs/interface-database").Table<MailingSettings>;
|
|
5
5
|
readonly database: import("@antelopejs/interface-database").SchemaInstance<any>;
|
|
6
|
-
get(id: string):
|
|
7
|
-
getBy(index: keyof MailingSettings, ...keys: import("@antelopejs/interface-database-decorators").IndexKey[]):
|
|
8
|
-
getAll():
|
|
6
|
+
get(id: string): Promise<MailingSettings | undefined>;
|
|
7
|
+
getBy(index: keyof MailingSettings, ...keys: import("@antelopejs/interface-database-decorators").IndexKey[]): Promise<MailingSettings[]>;
|
|
8
|
+
getAll(): Promise<MailingSettings[]>;
|
|
9
9
|
insert(obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingSettings> | import("@antelopejs/interface-database-decorators").DeepPartial<MailingSettings>[], options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<string[]>;
|
|
10
10
|
update(id: string, obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingSettings>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
|
|
11
11
|
update(obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingSettings> & {
|
|
@@ -6,9 +6,9 @@ declare const SuppressionModel_base: {
|
|
|
6
6
|
new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
|
|
7
7
|
readonly table: import("@antelopejs/interface-database").Table<MailingSuppression>;
|
|
8
8
|
readonly database: import("@antelopejs/interface-database").SchemaInstance<any>;
|
|
9
|
-
get(id: string):
|
|
10
|
-
getBy(index: keyof MailingSuppression, ...keys: import("@antelopejs/interface-database-decorators").IndexKey[]):
|
|
11
|
-
getAll():
|
|
9
|
+
get(id: string): Promise<MailingSuppression | undefined>;
|
|
10
|
+
getBy(index: keyof MailingSuppression, ...keys: import("@antelopejs/interface-database-decorators").IndexKey[]): Promise<MailingSuppression[]>;
|
|
11
|
+
getAll(): Promise<MailingSuppression[]>;
|
|
12
12
|
insert(obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingSuppression> | import("@antelopejs/interface-database-decorators").DeepPartial<MailingSuppression>[], options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<string[]>;
|
|
13
13
|
update(id: string, obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingSuppression>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
|
|
14
14
|
update(obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingSuppression> & {
|
|
@@ -4,9 +4,9 @@ declare const TemplateVersionModel_base: {
|
|
|
4
4
|
new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
|
|
5
5
|
readonly table: import("@antelopejs/interface-database").Table<MailingTemplateVersion>;
|
|
6
6
|
readonly database: import("@antelopejs/interface-database").SchemaInstance<any>;
|
|
7
|
-
get(id: string):
|
|
8
|
-
getBy(index: keyof MailingTemplateVersion, ...keys: import("@antelopejs/interface-database-decorators").IndexKey[]):
|
|
9
|
-
getAll():
|
|
7
|
+
get(id: string): Promise<MailingTemplateVersion | undefined>;
|
|
8
|
+
getBy(index: keyof MailingTemplateVersion, ...keys: import("@antelopejs/interface-database-decorators").IndexKey[]): Promise<MailingTemplateVersion[]>;
|
|
9
|
+
getAll(): Promise<MailingTemplateVersion[]>;
|
|
10
10
|
insert(obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingTemplateVersion> | import("@antelopejs/interface-database-decorators").DeepPartial<MailingTemplateVersion>[], options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<string[]>;
|
|
11
11
|
update(id: string, obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingTemplateVersion>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
|
|
12
12
|
update(obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingTemplateVersion> & {
|
|
@@ -4,13 +4,12 @@ exports.TemplateVersionModel = void 0;
|
|
|
4
4
|
exports.committedVersionOf = committedVersionOf;
|
|
5
5
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
6
6
|
const tables_1 = require("../tables");
|
|
7
|
+
const stored_schema_1 = require("../../validation/stored.schema");
|
|
7
8
|
const templates_model_1 = require("./templates.model");
|
|
8
9
|
function committedVersionOf(template) {
|
|
9
10
|
if (!template.json_published_version)
|
|
10
11
|
return undefined;
|
|
11
|
-
|
|
12
|
-
row.publishedAt = new Date(row.publishedAt);
|
|
13
|
-
return row;
|
|
12
|
+
return (0, stored_schema_1.parseStored)(template.json_published_version, stored_schema_1.storedVersionRowSchema, "a version row");
|
|
14
13
|
}
|
|
15
14
|
class TemplateVersionModel extends (0, interface_database_decorators_1.BasicDataModel)(tables_1.MailingTemplateVersion, tables_1.MAILING_TEMPLATE_VERSIONS_TABLE_NAME) {
|
|
16
15
|
async materialize(template) {
|
|
@@ -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":";;;AAaA,gDASC;AAtBD,6FAA2E;AAC3E,sCAImB;AACnB,kEAGwC;AACxC,uDAAkD;AAGlD,SAAgB,kBAAkB,CAChC,QAAyD;IAEzD,IAAI,CAAC,QAAQ,CAAC,sBAAsB;QAAE,OAAO,SAAS,CAAC;IACvD,OAAO,IAAA,2BAAW,EAChB,QAAQ,CAAC,sBAAsB,EAC/B,sCAAsB,EACtB,eAAe,CAChB,CAAC;AACJ,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,IAAI,CAAC,MAAM;gBAAE,MAAM,KAAK,CAAC;YACzB,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YACrD,IACE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAC1B,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACf,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAClE;gBAED,MAAM,KAAK,CAAC;QAChB,CAAC;IACH,CAAC;IAOD,KAAK,CAAC,eAAe,CAAC,UAAkB;QACtC,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;AApDD,oDAoDC"}
|
|
@@ -8,9 +8,9 @@ declare const TemplateModel_base: {
|
|
|
8
8
|
new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
|
|
9
9
|
readonly table: import("@antelopejs/interface-database").Table<MailingTemplate>;
|
|
10
10
|
readonly database: import("@antelopejs/interface-database").SchemaInstance<any>;
|
|
11
|
-
get(id: string):
|
|
12
|
-
getBy(index: "_id" | "
|
|
13
|
-
getAll():
|
|
11
|
+
get(id: string): Promise<MailingTemplate | undefined>;
|
|
12
|
+
getBy(index: "name" | "_id" | "localize" | "createdAt" | "updatedAt" | "attention" | "category" | "status" | "json_variables" | "revision" | "json_content" | "locales" | "publishedAt" | "publishedBy" | "slug" | "json_draft" | "isDraftPending" | "draftUpdatedAt" | "draftUpdatedBy" | "draftRevision" | "publishedVersion" | "json_variables_draft" | "json_test_data" | "updatedBy" | "needsAttention" | "unpublishedAt" | "json_published_version", ...keys: import("@antelopejs/interface-database-decorators").IndexKey[]): Promise<MailingTemplate[]>;
|
|
13
|
+
getAll(): Promise<MailingTemplate[]>;
|
|
14
14
|
insert(obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingTemplate> | import("@antelopejs/interface-database-decorators").DeepPartial<MailingTemplate>[], options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<string[]>;
|
|
15
15
|
update(id: string, obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingTemplate>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
|
|
16
16
|
update(obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingTemplate> & {
|
|
@@ -30,6 +30,7 @@ export declare class TemplateModel extends TemplateModel_base {
|
|
|
30
30
|
static namesOf(template: MailingTemplate): LocalizedText;
|
|
31
31
|
static nameIn(template: MailingTemplate, locale: string): string;
|
|
32
32
|
insertFields(fields: TemplateFields): Promise<string[]>;
|
|
33
|
+
private static storedPatch;
|
|
33
34
|
updateFields(id: string, fields: TemplateFields): Promise<number>;
|
|
34
35
|
publishIfCurrent(template: MailingTemplate, patch: TemplateFields): Promise<boolean>;
|
|
35
36
|
getBySlug(slug: string): Promise<MailingTemplate | undefined>;
|
|
@@ -11,7 +11,9 @@ const isLocalizedText = (value) => typeof value === "object" &&
|
|
|
11
11
|
const MODIFIER_CONTAINER = "_internal";
|
|
12
12
|
class TemplateModel extends (0, interface_database_decorators_1.BasicDataModel)(tables_1.MailingTemplate, tables_1.MAILING_TEMPLATES_TABLE_NAME) {
|
|
13
13
|
static fromFields(fields) {
|
|
14
|
-
|
|
14
|
+
const row = TemplateModel.fromPlainData(fields);
|
|
15
|
+
row.localize("*", ["name"]);
|
|
16
|
+
return row;
|
|
15
17
|
}
|
|
16
18
|
static namesOf(template) {
|
|
17
19
|
const names = template.localize("*", ["name"]).name;
|
|
@@ -23,16 +25,22 @@ class TemplateModel extends (0, interface_database_decorators_1.BasicDataModel)(
|
|
|
23
25
|
insertFields(fields) {
|
|
24
26
|
return this.insert(TemplateModel.fromFields(fields));
|
|
25
27
|
}
|
|
26
|
-
|
|
27
|
-
const row = TemplateModel.fromFields(fields);
|
|
28
|
-
(0, interface_database_decorators_1.triggerEvent)(row, "update");
|
|
28
|
+
static storedPatch(row, fields) {
|
|
29
29
|
const stored = TemplateModel.toDatabase(row);
|
|
30
30
|
if (fields.name === undefined)
|
|
31
31
|
delete stored[MODIFIER_CONTAINER];
|
|
32
|
-
return
|
|
32
|
+
return stored;
|
|
33
|
+
}
|
|
34
|
+
updateFields(id, fields) {
|
|
35
|
+
const row = TemplateModel.fromFields(fields);
|
|
36
|
+
(0, interface_database_decorators_1.triggerEvent)(row, "update");
|
|
37
|
+
return this.table
|
|
38
|
+
.get(id)
|
|
39
|
+
.update(TemplateModel.storedPatch(row, fields))
|
|
40
|
+
.run();
|
|
33
41
|
}
|
|
34
42
|
async publishIfCurrent(template, patch) {
|
|
35
|
-
const stored = TemplateModel.
|
|
43
|
+
const stored = TemplateModel.storedPatch(TemplateModel.fromFields(patch), patch);
|
|
36
44
|
const outcome = await this.table
|
|
37
45
|
.atomicMutation(template._id, {
|
|
38
46
|
type: "update",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.model.js","sourceRoot":"","sources":["../../../src/db/models/templates.model.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AACzC,6FAGmD;AAEnD,sCAA0E;AAC1E,oDAAiD;AAQjD,MAAM,eAAe,GAAG,CAAC,KAAc,EAA0B,EAAE,CACjE,OAAO,KAAK,KAAK,QAAQ;IACzB,KAAK,KAAK,IAAI;IACd,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,eAAM,CAAC,CAAC;AAGrC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAUvC,MAAa,aAAc,SAAQ,IAAA,8CAAc,EAC/C,wBAAe,EACf,qCAA4B,CAC7B;IAEC,MAAM,CAAC,UAAU,CAAC,MAAsB;QACtC,
|
|
1
|
+
{"version":3,"file":"templates.model.js","sourceRoot":"","sources":["../../../src/db/models/templates.model.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@ declare const WebhookStatusModel_base: {
|
|
|
4
4
|
new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
|
|
5
5
|
readonly table: import("@antelopejs/interface-database").Table<MailingWebhookStatus>;
|
|
6
6
|
readonly database: import("@antelopejs/interface-database").SchemaInstance<any>;
|
|
7
|
-
get(id: string):
|
|
8
|
-
getBy(index: keyof MailingWebhookStatus, ...keys: import("@antelopejs/interface-database-decorators").IndexKey[]):
|
|
9
|
-
getAll():
|
|
7
|
+
get(id: string): Promise<MailingWebhookStatus | undefined>;
|
|
8
|
+
getBy(index: keyof MailingWebhookStatus, ...keys: import("@antelopejs/interface-database-decorators").IndexKey[]): Promise<MailingWebhookStatus[]>;
|
|
9
|
+
getAll(): Promise<MailingWebhookStatus[]>;
|
|
10
10
|
insert(obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingWebhookStatus> | import("@antelopejs/interface-database-decorators").DeepPartial<MailingWebhookStatus>[], options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<string[]>;
|
|
11
11
|
update(id: string, obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingWebhookStatus>, options?: import("@antelopejs/interface-database-decorators").ValidateOptions): Promise<number>;
|
|
12
12
|
update(obj: import("@antelopejs/interface-database-decorators").DeepPartial<MailingWebhookStatus> & {
|
|
@@ -4,7 +4,10 @@ export declare const MAILING_TEMPLATES_TABLE_NAME = "mailing_templates";
|
|
|
4
4
|
declare const MailingTemplate_base: import("@antelopejs/interface-database-decorators").TableClass<Table & {
|
|
5
5
|
localize<This extends {
|
|
6
6
|
constructor: any;
|
|
7
|
-
}>(this: This, locale:
|
|
7
|
+
}, K extends keyof This>(this: This, locale: "*", fields: readonly K[]): import("@antelopejs/interface-database-decorators").LocalizedRecords<This, K>;
|
|
8
|
+
localize<This extends {
|
|
9
|
+
constructor: any;
|
|
10
|
+
}>(this: This, locale: string, fields?: ReadonlyArray<keyof This>): This;
|
|
8
11
|
}, [], object>;
|
|
9
12
|
export declare class MailingTemplate extends MailingTemplate_base {
|
|
10
13
|
_id: string;
|
|
@@ -59,7 +59,11 @@ async function loadPage(table, codec, offset, size) {
|
|
|
59
59
|
.filter((row) => row !== undefined);
|
|
60
60
|
}
|
|
61
61
|
const templateCodec = {
|
|
62
|
-
fromDatabase: (
|
|
62
|
+
fromDatabase: (stored) => {
|
|
63
|
+
const row = db_1.TemplateModel.fromDatabase(stored);
|
|
64
|
+
row?.localize("*", ["name"]);
|
|
65
|
+
return row;
|
|
66
|
+
},
|
|
63
67
|
};
|
|
64
68
|
function exportedCollections(tenantId) {
|
|
65
69
|
const templates = (0, interface_database_decorators_1.GetModel)(db_1.TemplateModel, tenantId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenant-export.js","sourceRoot":"","sources":["../../src/hooks/tenant-export.ts"],"names":[],"mappings":";;;AAqDA,0CAmBC;
|
|
1
|
+
{"version":3,"file":"tenant-export.js","sourceRoot":"","sources":["../../src/hooks/tenant-export.ts"],"names":[],"mappings":"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"}
|
package/dist/pages/editor.js
CHANGED
|
@@ -23,7 +23,7 @@ let MailingEditorController = class MailingEditorController extends (0, page_1.P
|
|
|
23
23
|
order: EDITOR_PAGE_ORDER,
|
|
24
24
|
hidden: true,
|
|
25
25
|
}, (0, layouts_1.DefaultLayout)({ fullWidth: true, hideHeader: true, fillHeight: true })) {
|
|
26
|
-
static editor = (0, custom_1.CustomComponent)("
|
|
26
|
+
static editor = (0, custom_1.CustomComponent)("MailingTemplateEditor").meta({
|
|
27
27
|
name: "$dms_mailing.permissions.editor.name",
|
|
28
28
|
description: "$dms_mailing.permissions.editor.description",
|
|
29
29
|
icon: "i-ph-pencil-simple",
|
package/dist/pages/editor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/pages/editor.ts"],"names":[],"mappings":";;;;;;;;;AAAA,yDAA8E;AAC9E,kEAAwE;AACxE,oEAAuE;AACvE,4CAAyC;AACzC,qCAA8C;AAE9C,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAOrB,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,IAAA,qBAAc,EACzD,QAAQ,EACR;IACE,WAAW,EAAE,2BAA2B;IACxC,WAAW,EAAE,iCAAiC;IAC9C,IAAI,EAAE,oBAAoB;IAC1B,MAAM,EAAE,qBAAS;IACjB,QAAQ,EAAE,2BAAkB;IAC5B,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,IAAI;CACb,EACD,IAAA,uBAAa,EAAC,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CACvE;IACC,MAAM,CAAC,MAAM,GAAG,IAAA,wBAAe,EAAC,
|
|
1
|
+
{"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/pages/editor.ts"],"names":[],"mappings":";;;;;;;;;AAAA,yDAA8E;AAC9E,kEAAwE;AACxE,oEAAuE;AACvE,4CAAyC;AACzC,qCAA8C;AAE9C,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAOrB,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,IAAA,qBAAc,EACzD,QAAQ,EACR;IACE,WAAW,EAAE,2BAA2B;IACxC,WAAW,EAAE,iCAAiC;IAC9C,IAAI,EAAE,oBAAoB;IAC1B,MAAM,EAAE,qBAAS;IACjB,QAAQ,EAAE,2BAAkB;IAC5B,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,IAAI;CACb,EACD,IAAA,uBAAa,EAAC,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CACvE;IACC,MAAM,CAAC,MAAM,GAAG,IAAA,wBAAe,EAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC;QAC5D,IAAI,EAAE,sCAAsC;QAC5C,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,oBAAoB;KAC3B,CAAC,CAAC;;AAlBQ,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,mBAAY,GAAE;GACF,uBAAuB,CAmBnC"}
|
package/dist/routes/metrics.js
CHANGED
|
@@ -213,11 +213,10 @@ class MetricsController extends (0, interface_api_1.Controller)(`${constants_1.A
|
|
|
213
213
|
(0, settings_1.findSettings)(this.tenantId),
|
|
214
214
|
]);
|
|
215
215
|
const sends = (0, metrics_1.forAudience)(rows, this.audience);
|
|
216
|
-
const excluded = rows.filter((row) => !sends.includes(row));
|
|
217
216
|
const items = (0, attention_1.buildAttentionItems)({
|
|
218
217
|
templates,
|
|
219
218
|
sends,
|
|
220
|
-
|
|
219
|
+
excludedCount: rows.length - sends.length,
|
|
221
220
|
windowEnd: range.to,
|
|
222
221
|
tracking,
|
|
223
222
|
isSenderSet: Boolean(settings?.senderEmail),
|