hazo_notify 6.1.2 → 6.1.4
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/components/notification_banner/index.d.ts +1 -1
- package/dist/components/notification_banner/index.d.ts.map +1 -1
- package/dist/components/notification_bell/index.d.ts +1 -1
- package/dist/components/notification_bell/index.d.ts.map +1 -1
- package/dist/components/template_manager/category_dialog.d.ts +1 -1
- package/dist/components/template_manager/category_dialog.d.ts.map +1 -1
- package/dist/components/template_manager/category_tree.d.ts +1 -1
- package/dist/components/template_manager/category_tree.d.ts.map +1 -1
- package/dist/components/template_manager/preview_dialog.d.ts +1 -1
- package/dist/components/template_manager/preview_dialog.d.ts.map +1 -1
- package/dist/components/template_manager/template_dialog.d.ts +1 -1
- package/dist/components/template_manager/template_dialog.d.ts.map +1 -1
- package/dist/components/template_manager/template_editor.d.ts +1 -1
- package/dist/components/template_manager/template_editor.d.ts.map +1 -1
- package/dist/components/template_manager/template_globals_admin.d.ts +1 -1
- package/dist/components/template_manager/template_globals_admin.d.ts.map +1 -1
- package/dist/components/template_manager/template_manager_admin.d.ts +1 -1
- package/dist/components/template_manager/template_manager_admin.d.ts.map +1 -1
- package/dist/lib/template_manager/handlers/index.d.ts.map +1 -1
- package/dist/lib/template_manager/handlers/index.js +10 -6
- package/dist/lib/template_manager/handlers/index.js.map +1 -1
- package/package.json +10 -10
- package/dist/lib/adapters/email/send_email.d.ts +0 -18
- package/dist/lib/adapters/email/send_email.d.ts.map +0 -1
- package/dist/lib/adapters/email/send_email.js +0 -122
- package/dist/lib/adapters/email/send_email.js.map +0 -1
- package/dist/lib/inbox/dialects/index.d.ts +0 -10
- package/dist/lib/inbox/dialects/index.d.ts.map +0 -1
- package/dist/lib/inbox/dialects/index.js +0 -13
- package/dist/lib/inbox/dialects/index.js.map +0 -1
- package/dist/lib/inbox/dialects/postgres.d.ts +0 -3
- package/dist/lib/inbox/dialects/postgres.d.ts.map +0 -1
- package/dist/lib/inbox/dialects/postgres.js +0 -110
- package/dist/lib/inbox/dialects/postgres.js.map +0 -1
- package/dist/lib/inbox/dialects/sqlite.d.ts +0 -3
- package/dist/lib/inbox/dialects/sqlite.d.ts.map +0 -1
- package/dist/lib/inbox/dialects/sqlite.js +0 -120
- package/dist/lib/inbox/dialects/sqlite.js.map +0 -1
- package/dist/lib/inbox/dialects/types.d.ts +0 -53
- package/dist/lib/inbox/dialects/types.d.ts.map +0 -1
- package/dist/lib/inbox/dialects/types.js +0 -2
- package/dist/lib/inbox/dialects/types.js.map +0 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
A reusable component library for sending email notifications with scope-aware template management. Implements Zeptomail API integration with support for text and HTML emails, Handlebars-based email templates with multi-tenant resolution, multiple attachments, and comprehensive security features.
|
|
4
4
|
|
|
5
|
-
**Version**: 6.1.
|
|
5
|
+
**Version**: 6.1.4
|
|
6
6
|
|
|
7
7
|
> **⚠ Readers on older versions:** Many examples below still show the v3.x API surface (`send_email`, `hazo_notify/emailer`, `channels: { in_app, email, banner }`, direct `template_html` / `template_text` access). **v4.0.0 introduced a channel-pluggable architecture** — outbound sends go through `dispatch()` → inbox row + per-channel delivery row → `EmailChannel`/`TelegramChannel` adapter, with a multi-channel worker fleet. For the current API see:
|
|
8
8
|
>
|
|
@@ -23,5 +23,5 @@ export interface NotificationBannerProps {
|
|
|
23
23
|
fallbackInboxHref?: string;
|
|
24
24
|
className?: string;
|
|
25
25
|
}
|
|
26
|
-
export declare function NotificationBanner({ apiBasePath, code, pollIntervalMs, onView, fallbackInboxHref, className, }: NotificationBannerProps): import("react
|
|
26
|
+
export declare function NotificationBanner({ apiBasePath, code, pollIntervalMs, onView, fallbackInboxHref, className, }: NotificationBannerProps): import("react").JSX.Element | null;
|
|
27
27
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/notification_banner/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC3F;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,IAAI,EACJ,cAAgC,EAChC,MAAM,EACN,iBAAiB,EACjB,SAAS,GACV,EAAE,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/notification_banner/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC3F;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,WAAW,EACX,IAAI,EACJ,cAAgC,EAChC,MAAM,EACN,iBAAiB,EACjB,SAAS,GACV,EAAE,uBAAuB,sCA4CzB"}
|
|
@@ -62,5 +62,5 @@ export interface NotificationBellProps {
|
|
|
62
62
|
eventSourceUrl?: string;
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
|
-
export declare function NotificationBell({ apiBasePath, pollIntervalMs, components: C, onItemClick, bellIcon, realtime, }: NotificationBellProps): import("react
|
|
65
|
+
export declare function NotificationBell({ apiBasePath, pollIntervalMs, components: C, onItemClick, bellIcon, realtime, }: NotificationBellProps): import("react").JSX.Element;
|
|
66
66
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/notification_bell/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAoC,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI7F,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IAC5F,YAAY,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;KAAE,CAAC,CAAC;IAC3G,mBAAmB,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChF,mBAAmB,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjG,gBAAgB,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAC;IAChF,KAAK,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,0BAA0B,CAAC;IACvC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,uEAAuE;QACvE,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,WAAkC,EAClC,cAAgC,EAChC,UAAU,EAAE,CAAC,EACb,WAAW,EACX,QAAQ,EACR,QAAQ,GACT,EAAE,qBAAqB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/notification_bell/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAoC,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI7F,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IAC5F,YAAY,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;KAAE,CAAC,CAAC;IAC3G,mBAAmB,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChF,mBAAmB,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjG,gBAAgB,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAC;IAChF,KAAK,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,0BAA0B,CAAC;IACvC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,uEAAuE;QACvE,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,WAAkC,EAClC,cAAgC,EAChC,UAAU,EAAE,CAAC,EACb,WAAW,EACX,QAAQ,EACR,QAAQ,GACT,EAAE,qBAAqB,+BAoHvB"}
|
|
@@ -6,6 +6,6 @@ interface CategoryDialogProps {
|
|
|
6
6
|
category?: TemplateCategory | null;
|
|
7
7
|
loading?: boolean;
|
|
8
8
|
}
|
|
9
|
-
export declare function CategoryDialog({ open, on_close, on_save, category, loading, }: CategoryDialogProps): import("react
|
|
9
|
+
export declare function CategoryDialog({ open, on_close, on_save, category, loading, }: CategoryDialogProps): import("react").JSX.Element;
|
|
10
10
|
export default CategoryDialog;
|
|
11
11
|
//# sourceMappingURL=category_dialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"category_dialog.d.ts","sourceRoot":"","sources":["../../../src/components/template_manager/category_dialog.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,UAAU,mBAAmB;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,OAAe,GAChB,EAAE,mBAAmB
|
|
1
|
+
{"version":3,"file":"category_dialog.d.ts","sourceRoot":"","sources":["../../../src/components/template_manager/category_dialog.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,UAAU,mBAAmB;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,OAAe,GAChB,EAAE,mBAAmB,+BAoFrB;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -8,6 +8,6 @@ interface CategoryTreeProps {
|
|
|
8
8
|
on_create_template: (category: TemplateCategory) => void;
|
|
9
9
|
loading?: boolean;
|
|
10
10
|
}
|
|
11
|
-
export declare function CategoryTree({ categories, selected_template_id, on_select_template, on_create_category, on_delete_category, on_create_template, loading, }: CategoryTreeProps): import("react
|
|
11
|
+
export declare function CategoryTree({ categories, selected_template_id, on_select_template, on_create_category, on_delete_category, on_create_template, loading, }: CategoryTreeProps): import("react").JSX.Element;
|
|
12
12
|
export default CategoryTree;
|
|
13
13
|
//# sourceMappingURL=category_tree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"category_tree.d.ts","sourceRoot":"","sources":["../../../src/components/template_manager/category_tree.tsx"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EACjB,MAAM,qCAAqC,CAAC;AAE7C,UAAU,iBAAiB;IACzB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;IACtD,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,kBAAkB,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,kBAAkB,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,YAAY,CAAC,EAC3B,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,OAAe,GAChB,EAAE,iBAAiB
|
|
1
|
+
{"version":3,"file":"category_tree.d.ts","sourceRoot":"","sources":["../../../src/components/template_manager/category_tree.tsx"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EACjB,MAAM,qCAAqC,CAAC;AAE7C,UAAU,iBAAiB;IACzB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;IACtD,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,kBAAkB,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,kBAAkB,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,YAAY,CAAC,EAC3B,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,OAAe,GAChB,EAAE,iBAAiB,+BAiFnB;AAwHD,eAAe,YAAY,CAAC"}
|
|
@@ -6,6 +6,6 @@ interface PreviewDialogProps {
|
|
|
6
6
|
loading?: boolean;
|
|
7
7
|
error?: string;
|
|
8
8
|
}
|
|
9
|
-
export declare function PreviewDialog({ open, on_close, rendered_html, rendered_text, loading, error, }: PreviewDialogProps): import("react
|
|
9
|
+
export declare function PreviewDialog({ open, on_close, rendered_html, rendered_text, loading, error, }: PreviewDialogProps): import("react").JSX.Element;
|
|
10
10
|
export default PreviewDialog;
|
|
11
11
|
//# sourceMappingURL=preview_dialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview_dialog.d.ts","sourceRoot":"","sources":["../../../src/components/template_manager/preview_dialog.tsx"],"names":[],"mappings":"AAmBA,UAAU,kBAAkB;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,aAAa,EACb,OAAe,EACf,KAAK,GACN,EAAE,kBAAkB
|
|
1
|
+
{"version":3,"file":"preview_dialog.d.ts","sourceRoot":"","sources":["../../../src/components/template_manager/preview_dialog.tsx"],"names":[],"mappings":"AAmBA,UAAU,kBAAkB;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,aAAa,EACb,OAAe,EACf,KAAK,GACN,EAAE,kBAAkB,+BAwEpB;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -7,6 +7,6 @@ interface TemplateDialogProps {
|
|
|
7
7
|
template_types: TemplateTypeDefinition[];
|
|
8
8
|
loading?: boolean;
|
|
9
9
|
}
|
|
10
|
-
export declare function TemplateDialog({ open, on_close, on_save, category, template_types, loading, }: TemplateDialogProps): import("react
|
|
10
|
+
export declare function TemplateDialog({ open, on_close, on_save, category, template_types, loading, }: TemplateDialogProps): import("react").JSX.Element;
|
|
11
11
|
export default TemplateDialog;
|
|
12
12
|
//# sourceMappingURL=template_dialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template_dialog.d.ts","sourceRoot":"","sources":["../../../src/components/template_manager/template_dialog.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAEpG,UAAU,mBAAmB;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,sBAAsB,EAAE,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,cAAc,EACd,OAAe,GAChB,EAAE,mBAAmB
|
|
1
|
+
{"version":3,"file":"template_dialog.d.ts","sourceRoot":"","sources":["../../../src/components/template_manager/template_dialog.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAEpG,UAAU,mBAAmB;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,sBAAsB,EAAE,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,cAAc,EACd,OAAe,GAChB,EAAE,mBAAmB,+BAiHrB;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -7,6 +7,6 @@ interface TemplateEditorProps {
|
|
|
7
7
|
on_preview: (html: string, text: string) => void;
|
|
8
8
|
loading?: boolean;
|
|
9
9
|
}
|
|
10
|
-
export declare function TemplateEditor({ template, template_types, on_save, on_delete, on_preview, loading, }: TemplateEditorProps): import("react
|
|
10
|
+
export declare function TemplateEditor({ template, template_types, on_save, on_delete, on_preview, loading, }: TemplateEditorProps): import("react").JSX.Element;
|
|
11
11
|
export default TemplateEditor;
|
|
12
12
|
//# sourceMappingURL=template_editor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template_editor.d.ts","sourceRoot":"","sources":["../../../src/components/template_manager/template_editor.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EACV,aAAa,EACb,sBAAsB,EACvB,MAAM,qCAAqC,CAAC;AAG7C,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,cAAc,EAAE,sBAAsB,EAAE,CAAC;IACzC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,cAAc,EACd,OAAO,EACP,SAAS,EACT,UAAU,EACV,OAAe,GAChB,EAAE,mBAAmB
|
|
1
|
+
{"version":3,"file":"template_editor.d.ts","sourceRoot":"","sources":["../../../src/components/template_manager/template_editor.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EACV,aAAa,EACb,sBAAsB,EACvB,MAAM,qCAAqC,CAAC;AAG7C,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,cAAc,EAAE,sBAAsB,EAAE,CAAC;IACzC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,cAAc,EACd,OAAO,EACP,SAAS,EACT,UAAU,EACV,OAAe,GAChB,EAAE,mBAAmB,+BAoJrB;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -3,6 +3,6 @@ export interface TemplateGlobalsAdminProps {
|
|
|
3
3
|
on_error?: (error: string) => void;
|
|
4
4
|
class_name?: string;
|
|
5
5
|
}
|
|
6
|
-
export declare function TemplateGlobalsAdmin({ api_base, on_error, class_name, }: TemplateGlobalsAdminProps): import("react
|
|
6
|
+
export declare function TemplateGlobalsAdmin({ api_base, on_error, class_name, }: TemplateGlobalsAdminProps): import("react").JSX.Element;
|
|
7
7
|
export default TemplateGlobalsAdmin;
|
|
8
8
|
//# sourceMappingURL=template_globals_admin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template_globals_admin.d.ts","sourceRoot":"","sources":["../../../src/components/template_manager/template_globals_admin.tsx"],"names":[],"mappings":"AAUA,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,QAAQ,EACR,UAAU,GACX,EAAE,yBAAyB
|
|
1
|
+
{"version":3,"file":"template_globals_admin.d.ts","sourceRoot":"","sources":["../../../src/components/template_manager/template_globals_admin.tsx"],"names":[],"mappings":"AAUA,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,QAAQ,EACR,UAAU,GACX,EAAE,yBAAyB,+BAyF3B;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -39,6 +39,6 @@ export declare function use_template_manager(api_base: string, view_global: bool
|
|
|
39
39
|
* @example
|
|
40
40
|
* <TemplateManagerAdmin api_base="/api/hazo_notify/template_manager" />
|
|
41
41
|
*/
|
|
42
|
-
export declare function TemplateManagerAdmin({ api_base, on_error, class_name, }: TemplateManagerAdminProps): import("react
|
|
42
|
+
export declare function TemplateManagerAdmin({ api_base, on_error, class_name, }: TemplateManagerAdminProps): import("react").JSX.Element;
|
|
43
43
|
export default TemplateManagerAdmin;
|
|
44
44
|
//# sourceMappingURL=template_manager_admin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template_manager_admin.d.ts","sourceRoot":"","sources":["../../../src/components/template_manager/template_manager_admin.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,qCAAqC,CAAC;AAW7C,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;;;;;;;;;;;;;;;;;;iCAqE9F,MAAM;uCA8BF,gBAAgB;4CA4BX,MAAM;iCAoCf,MAAM,QAAQ,MAAM;;2BAsDO,MAAM,QAAQ,MAAM;EAkC/D;AAMD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,QAAQ,EACR,UAAU,GACX,EAAE,yBAAyB
|
|
1
|
+
{"version":3,"file":"template_manager_admin.d.ts","sourceRoot":"","sources":["../../../src/components/template_manager/template_manager_admin.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,qCAAqC,CAAC;AAW7C,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;;;;;;;;;;;;;;;;;;iCAqE9F,MAAM;uCA8BF,gBAAgB;4CA4BX,MAAM;iCAoCf,MAAM,QAAQ,MAAM;;2BAsDO,MAAM,QAAQ,MAAM;EAkC/D;AAMD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,QAAQ,EACR,QAAQ,EACR,UAAU,GACX,EAAE,yBAAyB,+BA4F3B;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/template_manager/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAkBxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,WAAW,CAAC;AAEnB,YAAY,EACV,mBAAmB,EACnB,0BAA0B,EAC1B,gCAAgC,EAChC,sBAAsB,GACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAKtD,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,oBAAoB,EAAE,MAClB,OAAO,CAAC,mBAAmB,CAAC,GAC5B,mBAAmB,CAAC;IACxB,+EAA+E;IAC/E,IAAI,EAAE,0BAA0B,CAAC;IACjC;;;;OAIG;IACH,YAAY,CAAC,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACpE,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACrE,GAAG,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACpE,KAAK,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACtE,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACvE,OAAO,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;CACtC;AAmCD,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,8BAA8B,GACtC,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/template_manager/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAkBxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,WAAW,CAAC;AAEnB,YAAY,EACV,mBAAmB,EACnB,0BAA0B,EAC1B,gCAAgC,EAChC,sBAAsB,GACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAKtD,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,oBAAoB,EAAE,MAClB,OAAO,CAAC,mBAAmB,CAAC,GAC5B,mBAAmB,CAAC;IACxB,+EAA+E;IAC/E,IAAI,EAAE,0BAA0B,CAAC;IACjC;;;;OAIG;IACH,YAAY,CAAC,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACpE,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACrE,GAAG,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACpE,KAAK,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACtE,MAAM,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACvE,OAAO,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;CACtC;AAmCD,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,8BAA8B,GACtC,uBAAuB,CAoRzB"}
|
|
@@ -206,12 +206,16 @@ export function create_template_manager_handlers(options) {
|
|
|
206
206
|
const [resource, id] = segments;
|
|
207
207
|
if (!resource || !KNOWN_RESOURCES.has(resource))
|
|
208
208
|
return not_found();
|
|
209
|
-
// Synthesise a Next-style RouteContext so wrapped handlers receive `id
|
|
210
|
-
//
|
|
211
|
-
//
|
|
212
|
-
//
|
|
213
|
-
|
|
214
|
-
|
|
209
|
+
// Synthesise a Next-style RouteContext so wrapped handlers receive `id`.
|
|
210
|
+
// The `id` extracted from the pathname is the source of truth — it works
|
|
211
|
+
// for both a catch-all `[...path]/route.ts` mount (where Next passes
|
|
212
|
+
// `{ params: { path: [...] } }`, carrying no `id`) and a resource-specific
|
|
213
|
+
// `[id]/route.ts` mount (where the pathname still contains the id segment).
|
|
214
|
+
// Only fall back to the caller-supplied `params` when the pathname yields
|
|
215
|
+
// no id (e.g. collection routes like `/categories`).
|
|
216
|
+
const ctx_params = id
|
|
217
|
+
? { id }
|
|
218
|
+
: (raw_ctx?.params ?? {});
|
|
215
219
|
// The wrappers each have their own `RouteContext<P>` generic; cast at the
|
|
216
220
|
// call site so the dispatcher can route through them uniformly. Wrappers
|
|
217
221
|
// re-resolve params safely at runtime.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/template_manager/handlers/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/template_manager/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,aAAa,CAAC;AACrB,OAAO,EAAe,YAAY,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,EACf,eAAe,GAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,YAAY,EACZ,eAAe,EACf,eAAe,EACf,eAAe,GAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EACL,yBAAyB,GAG1B,MAAM,WAAW,CAAC;AAQnB,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAEtD,4EAA4E;AAC5E,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;AA8BtE,SAAS,oBAAoB;IAC3B,IAAI,eAAe,GAAa,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;QACtC,eAAe,GAAG,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,eAAe,GAAG,EAAE,CAAC;IACvB,CAAC;IACD,MAAM,MAAM,GACV,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAChE,OAAO;QACL,6BAA6B,EAAE,MAAM;QACrC,8BAA8B,EAAE,wCAAwC;QACxE,8BAA8B,EAAE,6BAA6B;KAC9D,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,YAA4D;IAE5D,IAAI,CAAC,YAAY;QAAE,OAAO,oBAAoB,EAAE,CAAC;IACjD,IAAI,OAAO,YAAY,KAAK,UAAU;QAAE,OAAO,YAAY,EAAE,CAAC;IAC9D,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,8EAA8E;AAC9E,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC7B,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,OAAuC;IAEvC,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAChE,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAEtD,yEAAyE;IACzE,wEAAwE;IACxE,uEAAuE;IACvE,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3E,MAAM,IAAI,GAAG,CACX,IAAa,EACb,MAAc,EACd,UAAuB,IAAI,EAAE,EAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAElD,MAAM,SAAS,GAAG,GAAG,EAAE,CACrB,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,CAAC;IAEvE,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAC9B,IAAI,CACF;QACE,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,oBAAoB;KAC3B,EACD,GAAG,CACJ,CAAC;IAEJ,wEAAwE;IAExE,kBAAkB;IAClB,MAAM,eAAe,GAAG,kBAAkB,CACxC,KAAK,EAAE,IAAiB,EAAE,EAAE,QAAQ,EAAuB,EAAE,EAAE;QAC7D,MAAM,EAAE,GAAG,MAAM,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;IAEF,mBAAmB;IACnB,MAAM,iBAAiB,GAAG,kBAAkB,CAC1C,KAAK,EAAE,GAAgB,EAAE,EAAE,QAAQ,EAAuB,EAAE,EAAE;QAC5D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,EAAE,sBAAsB,EAAE,GAAG,IAAI,CAAC;QACxC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC5B,OAAO,IAAI,CACT;gBACE,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,oCAAoC;aAC5C,EACD,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE;YACvC,QAAQ;YACR,sBAAsB;SACvB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;IAEF,sBAAsB;IACtB,MAAM,cAAc,GAAG,kBAAkB,CACvC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5B,MAAM,EAAE,GAAG,MAAM,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;IAEF,4BAA4B;IAC5B,MAAM,iBAAiB,GAAG,kBAAkB,CAC1C,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,MAAM,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO;YAC3B,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC;gBACrC,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,GAAG,CAAC;QACR,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC,CACF,CAAC;IAEF,yBAAyB;IACzB,MAAM,iBAAiB,GAAG,kBAAkB,CAC1C,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5B,MAAM,EAAE,GAAG,MAAM,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;IAEF,iBAAiB;IACjB,MAAM,cAAc,GAAG,kBAAkB,CACvC,KAAK,EAAE,GAAgB,EAAE,EAAE,QAAQ,EAAuB,EAAE,EAAE;QAC5D,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,EAAE,GAAG,MAAM,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,WAAW;YACxB,CAAC,CAAC,MAAM,0BAA0B,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,CAAC;YAC7D,CAAC,CAAC,MAAM,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;IAEF,kBAAkB;IAClB,MAAM,gBAAgB,GAAG,kBAAkB,CACzC,KAAK,EAAE,GAAgB,EAAE,EAAE,QAAQ,EAAuB,EAAE,EAAE;QAC5D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG;YACf,sBAAsB;YACtB,eAAe;YACf,QAAQ;SACT,CAAC;QACF,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QACxD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CACT,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAC3D,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE;YACvC,QAAQ;YACR,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;YACzB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,EAAE;SAClD,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;IAEF,qBAAqB;IACrB,MAAM,aAAa,GAAG,kBAAkB,CACtC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5B,MAAM,EAAE,GAAG,MAAM,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;IAEF,2BAA2B;IAC3B,MAAM,gBAAgB,GAAG,kBAAkB,CACzC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,MAAM,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO;YAC3B,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC;gBACrC,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,GAAG,CAAC;QACR,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC,CACF,CAAC;IAEF,wBAAwB;IACxB,MAAM,gBAAgB,GAAG,kBAAkB,CACzC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5B,MAAM,EAAE,GAAG,MAAM,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;IAEF,aAAa;IACb,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,IAAI,EAAE;QAC/C,MAAM,KAAK,GAAG,6BAA6B,EAAE,CAAC;QAC9C,OAAO,IAAI,CACT;YACE,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,SAAS,KAAK,CAAC,MAAM,iBAAiB;SAChD,EACD,GAAG,CACJ,CAAC;IACJ,CAAC,CAAC,CAAC;IAMH,KAAK,UAAU,QAAQ,CACrB,OAAoB,EACpB,MAAc,EACd,OAAiB;QAEjB,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC;QAEhC,IAAI,CAAC,QAAQ,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,SAAS,EAAE,CAAC;QAEpE,yEAAyE;QACzE,yEAAyE;QACzE,qEAAqE;QACrE,2EAA2E;QAC3E,4EAA4E;QAC5E,0EAA0E;QAC1E,qDAAqD;QACrD,MAAM,UAAU,GAAG,EAAE;YACnB,CAAC,CAAC,EAAE,EAAE,EAAE;YACR,CAAC,CAAC,CAAE,OAA4C,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;QAClE,0EAA0E;QAC1E,yEAAyE;QACzE,uCAAuC;QACvC,8DAA8D;QAC9D,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,UAAU,EAAS,CAAC;QAE1C,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC9B,IAAI,EAAE,EAAE,CAAC;gBACP,QAAQ,MAAM,EAAE,CAAC;oBACf,KAAK,KAAK;wBACR,OAAO,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBACtC,KAAK,KAAK,CAAC;oBACX,KAAK,OAAO;wBACV,OAAO,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBACzC,KAAK,QAAQ;wBACX,OAAO,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBACzC;wBACE,OAAO,kBAAkB,EAAE,CAAC;gBAChC,CAAC;YACH,CAAC;YACD,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,KAAK;oBACR,OAAO,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBACvC,KAAK,MAAM;oBACT,OAAO,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBACzC;oBACE,OAAO,kBAAkB,EAAE,CAAC;YAChC,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YAC7B,IAAI,EAAE,EAAE,CAAC;gBACP,QAAQ,MAAM,EAAE,CAAC;oBACf,KAAK,KAAK;wBACR,OAAO,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBACrC,KAAK,KAAK,CAAC;oBACX,KAAK,OAAO;wBACV,OAAO,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBACxC,KAAK,QAAQ;wBACX,OAAO,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;oBACxC;wBACE,OAAO,kBAAkB,EAAE,CAAC;gBAChC,CAAC;YACH,CAAC;YACD,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,KAAK;oBACR,OAAO,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBACtC,KAAK,MAAM;oBACT,OAAO,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBACxC;oBACE,OAAO,kBAAkB,EAAE,CAAC;YAChC,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,IAAI,EAAE,IAAI,MAAM,KAAK,KAAK;gBAAE,OAAO,kBAAkB,EAAE,CAAC;YACxD,OAAO,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,SAAS,EAAE,CAAC;IACrB,CAAC;IAED,OAAO;QACL,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC;QAC5C,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC;QAC9C,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC;QAC5C,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC;QAChD,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC;QAClD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;KAC9E,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hazo_notify",
|
|
3
|
-
"version": "6.1.
|
|
3
|
+
"version": "6.1.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Email notification system with scope-aware template management",
|
|
6
6
|
"main": "./dist/lib/index.js",
|
|
@@ -129,13 +129,13 @@
|
|
|
129
129
|
"tailwind-merge": "^3.5.0"
|
|
130
130
|
},
|
|
131
131
|
"peerDependencies": {
|
|
132
|
-
"hazo_api": "^2.1
|
|
133
|
-
"hazo_config": "^2.
|
|
134
|
-
"hazo_connect": "^3.
|
|
135
|
-
"hazo_core": "^1.
|
|
132
|
+
"hazo_api": "^2.3.1",
|
|
133
|
+
"hazo_config": "^2.2.0",
|
|
134
|
+
"hazo_connect": "^3.8.0",
|
|
135
|
+
"hazo_core": "^1.2.0",
|
|
136
136
|
"hazo_jobs": "^0.12.0",
|
|
137
|
-
"hazo_logs": "^2.0.
|
|
138
|
-
"hazo_ui": "^
|
|
137
|
+
"hazo_logs": "^2.0.3",
|
|
138
|
+
"hazo_ui": "^4.4.0"
|
|
139
139
|
},
|
|
140
140
|
"peerDependenciesMeta": {
|
|
141
141
|
"hazo_api": {
|
|
@@ -212,9 +212,9 @@
|
|
|
212
212
|
"class-variance-authority": "^0.7.0",
|
|
213
213
|
"clsx": "^2.1.1",
|
|
214
214
|
"cmdk": "^1.1.1",
|
|
215
|
-
"hazo_auth": "^
|
|
216
|
-
"hazo_connect": "^3.
|
|
217
|
-
"hazo_ui": "^
|
|
215
|
+
"hazo_auth": "^10.3.0",
|
|
216
|
+
"hazo_connect": "^3.8.0",
|
|
217
|
+
"hazo_ui": "^4.4.0",
|
|
218
218
|
"jest": "^30.2.0",
|
|
219
219
|
"jest-environment-jsdom": "^30.4.1",
|
|
220
220
|
"lexical": "^0.39.0",
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Internal send_email function.
|
|
3
|
-
*
|
|
4
|
-
* Preserved from v3's src/lib/emailer/emailer.ts for internal use by template_manager.
|
|
5
|
-
* NOT exported from the public barrel (src/lib/adapters/email/index.ts) — callers
|
|
6
|
-
* should migrate to dispatch() or EmailChannel (Task 6.2).
|
|
7
|
-
*
|
|
8
|
-
* @packageDocumentation
|
|
9
|
-
*/
|
|
10
|
-
import type { EmailerConfig, SendEmailOptions, EmailSendResponse } from './types.js';
|
|
11
|
-
/**
|
|
12
|
-
* Send email using the configured provider.
|
|
13
|
-
* @param options - Email send options (includes optional logger)
|
|
14
|
-
* @param config - Optional emailer configuration (if not provided, loads from config file)
|
|
15
|
-
* @returns Promise with email send response
|
|
16
|
-
*/
|
|
17
|
-
export declare function send_email(options: SendEmailOptions, config?: EmailerConfig): Promise<EmailSendResponse>;
|
|
18
|
-
//# sourceMappingURL=send_email.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"send_email.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/email/send_email.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgBH,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGrF;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,gBAAgB,EACzB,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,iBAAiB,CAAC,CA0H5B"}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Internal send_email function.
|
|
3
|
-
*
|
|
4
|
-
* Preserved from v3's src/lib/emailer/emailer.ts for internal use by template_manager.
|
|
5
|
-
* NOT exported from the public barrel (src/lib/adapters/email/index.ts) — callers
|
|
6
|
-
* should migrate to dispatch() or EmailChannel (Task 6.2).
|
|
7
|
-
*
|
|
8
|
-
* @packageDocumentation
|
|
9
|
-
*/
|
|
10
|
-
import { get_email_provider } from './providers/index.js';
|
|
11
|
-
import { DEFAULT_MAX_ATTACHMENT_SIZE, DEFAULT_MAX_ATTACHMENTS, MAX_SUBJECT_LENGTH, MAX_BODY_LENGTH, } from './utils/constants.js';
|
|
12
|
-
import { get_logger } from './utils/logger.js';
|
|
13
|
-
import { validate_email_address, validate_subject_length, validate_body_length, validate_attachment_size, } from './utils/validation.js';
|
|
14
|
-
import { load_emailer_config } from './config.js';
|
|
15
|
-
/**
|
|
16
|
-
* Send email using the configured provider.
|
|
17
|
-
* @param options - Email send options (includes optional logger)
|
|
18
|
-
* @param config - Optional emailer configuration (if not provided, loads from config file)
|
|
19
|
-
* @returns Promise with email send response
|
|
20
|
-
*/
|
|
21
|
-
export async function send_email(options, config) {
|
|
22
|
-
// Get logger from options or use fallback
|
|
23
|
-
const logger = get_logger(options.logger);
|
|
24
|
-
const filename = 'send_email.ts';
|
|
25
|
-
const function_name = 'send_email';
|
|
26
|
-
try {
|
|
27
|
-
// Load configuration if not provided
|
|
28
|
-
const emailer_config = config || load_emailer_config();
|
|
29
|
-
// Validate email options
|
|
30
|
-
if (!options.to || (Array.isArray(options.to) && options.to.length === 0)) {
|
|
31
|
-
throw new Error('Recipient email address(es) are required');
|
|
32
|
-
}
|
|
33
|
-
// Validate email addresses
|
|
34
|
-
const to_emails = Array.isArray(options.to) ? options.to : [options.to];
|
|
35
|
-
for (const email of to_emails) {
|
|
36
|
-
if (!validate_email_address(email)) {
|
|
37
|
-
throw new Error(`Invalid recipient email address: ${email}`);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
if (!options.subject) {
|
|
41
|
-
throw new Error('Email subject is required');
|
|
42
|
-
}
|
|
43
|
-
// Validate subject length
|
|
44
|
-
if (!validate_subject_length(options.subject)) {
|
|
45
|
-
throw new Error(`Email subject exceeds maximum length of ${emailer_config.max_subject_length || MAX_SUBJECT_LENGTH} characters`);
|
|
46
|
-
}
|
|
47
|
-
if (!options.content.text && !options.content.html) {
|
|
48
|
-
throw new Error('Email content (text or html) is required');
|
|
49
|
-
}
|
|
50
|
-
// Validate body length
|
|
51
|
-
if (options.content.text && !validate_body_length(options.content.text)) {
|
|
52
|
-
throw new Error(`Email text body exceeds maximum size of ${emailer_config.max_body_length || MAX_BODY_LENGTH} bytes`);
|
|
53
|
-
}
|
|
54
|
-
if (options.content.html && !validate_body_length(options.content.html)) {
|
|
55
|
-
throw new Error(`Email HTML body exceeds maximum size of ${emailer_config.max_body_length || MAX_BODY_LENGTH} bytes`);
|
|
56
|
-
}
|
|
57
|
-
// Validate attachments
|
|
58
|
-
if (options.attachments) {
|
|
59
|
-
const max_attachments = emailer_config.max_attachments || DEFAULT_MAX_ATTACHMENTS;
|
|
60
|
-
if (options.attachments.length > max_attachments) {
|
|
61
|
-
throw new Error(`Maximum ${max_attachments} attachments allowed`);
|
|
62
|
-
}
|
|
63
|
-
const max_size = emailer_config.max_attachment_size || DEFAULT_MAX_ATTACHMENT_SIZE;
|
|
64
|
-
for (const attachment of options.attachments) {
|
|
65
|
-
if (!validate_attachment_size(attachment.content, max_size)) {
|
|
66
|
-
throw new Error(`Attachment "${attachment.filename}" exceeds maximum size of ${max_size} bytes`);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
// Get appropriate provider
|
|
71
|
-
const provider = get_email_provider(emailer_config);
|
|
72
|
-
// Send email - pass logger to provider
|
|
73
|
-
const response = await provider.send_email(options, emailer_config, logger);
|
|
74
|
-
// Log error if email sending failed
|
|
75
|
-
if (!response.success) {
|
|
76
|
-
logger.error(response.error || 'Failed to send email', {
|
|
77
|
-
filename,
|
|
78
|
-
function_name,
|
|
79
|
-
options: {
|
|
80
|
-
to: options.to,
|
|
81
|
-
subject: options.subject,
|
|
82
|
-
has_text: !!options.content.text,
|
|
83
|
-
has_html: !!options.content.html,
|
|
84
|
-
attachments_count: options.attachments?.length || 0,
|
|
85
|
-
},
|
|
86
|
-
response: response.raw_response,
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
return response;
|
|
90
|
-
}
|
|
91
|
-
catch (error) {
|
|
92
|
-
const error_message = error instanceof Error ? error.message : 'Failed to send email';
|
|
93
|
-
const error_string = error instanceof Error ? error.toString() : String(error);
|
|
94
|
-
const stack = error instanceof Error ? error.stack : undefined;
|
|
95
|
-
const is_production = process.env.NODE_ENV === 'production';
|
|
96
|
-
logger.error(error_message, {
|
|
97
|
-
filename,
|
|
98
|
-
function_name,
|
|
99
|
-
line_number: stack || 'unknown',
|
|
100
|
-
error: error_string,
|
|
101
|
-
options: {
|
|
102
|
-
to: options.to,
|
|
103
|
-
subject: options.subject,
|
|
104
|
-
has_text: !!options.content.text,
|
|
105
|
-
has_html: !!options.content.html,
|
|
106
|
-
attachments_count: options.attachments?.length || 0,
|
|
107
|
-
},
|
|
108
|
-
});
|
|
109
|
-
return {
|
|
110
|
-
success: false,
|
|
111
|
-
error: error_message,
|
|
112
|
-
message: error_message,
|
|
113
|
-
raw_response: is_production
|
|
114
|
-
? undefined
|
|
115
|
-
: {
|
|
116
|
-
error: error_string,
|
|
117
|
-
stack: stack,
|
|
118
|
-
},
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=send_email.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"send_email.js","sourceRoot":"","sources":["../../../../src/lib/adapters/email/send_email.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { PostgresDialect } from "./postgres.js";
|
|
2
|
-
import { SqliteDialect } from "./sqlite.js";
|
|
3
|
-
import type { InboxDialect } from "./types.js";
|
|
4
|
-
import type { HazoConnectInstance } from "../../template_manager/types.js";
|
|
5
|
-
export type DialectId = "postgres" | "sqlite";
|
|
6
|
-
export declare function pickDialect(conn: HazoConnectInstance): InboxDialect;
|
|
7
|
-
export { PostgresDialect, SqliteDialect };
|
|
8
|
-
export type { InboxDialect } from "./types.js";
|
|
9
|
-
export * from "./types.js";
|
|
10
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/inbox/dialects/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE9C,wBAAgB,WAAW,CAAC,IAAI,EAAE,mBAAmB,GAAG,YAAY,CAMnE;AAED,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,cAAc,YAAY,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { PostgresDialect } from "./postgres.js";
|
|
2
|
-
import { SqliteDialect } from "./sqlite.js";
|
|
3
|
-
export function pickDialect(conn) {
|
|
4
|
-
// hazo_connect instances expose .type (added in hazo_connect v2.x).
|
|
5
|
-
// Fall back to Postgres if missing (legacy instances).
|
|
6
|
-
const t = conn.type;
|
|
7
|
-
if (t === "sqlite")
|
|
8
|
-
return SqliteDialect;
|
|
9
|
-
return PostgresDialect;
|
|
10
|
-
}
|
|
11
|
-
export { PostgresDialect, SqliteDialect };
|
|
12
|
-
export * from "./types.js";
|
|
13
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/inbox/dialects/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAM5C,MAAM,UAAU,WAAW,CAAC,IAAyB;IACnD,oEAAoE;IACpE,uDAAuD;IACvD,MAAM,CAAC,GAAI,IAAwC,CAAC,IAAI,CAAC;IACzD,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,aAAa,CAAC;IACzC,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC;AAE1C,cAAc,YAAY,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../../src/lib/inbox/dialects/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAMb,MAAM,YAAY,CAAC;AAyDpB,eAAO,MAAM,eAAe,EAAE,YAsF7B,CAAC"}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
const UPSERT_INBOX_SQL = `
|
|
2
|
-
INSERT INTO hazo_notify_inbox (
|
|
3
|
-
scope_id, user_id, event_type, subject_id, batch_key,
|
|
4
|
-
in_app_text, deep_link, payload, surfaces, batch_closed_at
|
|
5
|
-
) VALUES (
|
|
6
|
-
$1, $2, $3, $4, $5,
|
|
7
|
-
$6, $7, $8::jsonb, $9::jsonb, $10
|
|
8
|
-
)
|
|
9
|
-
ON CONFLICT (batch_key) WHERE batch_closed_at IS NULL DO UPDATE SET
|
|
10
|
-
aggregate_count = hazo_notify_inbox.aggregate_count + 1,
|
|
11
|
-
in_app_text = EXCLUDED.in_app_text,
|
|
12
|
-
payload = EXCLUDED.payload,
|
|
13
|
-
updated_at = now()
|
|
14
|
-
RETURNING id, (xmax = 0) AS inserted
|
|
15
|
-
`;
|
|
16
|
-
const UPSERT_DELIVERY_SQL = `
|
|
17
|
-
INSERT INTO hazo_notify_channel_deliveries (
|
|
18
|
-
inbox_id, channel_id, payload, flush_after
|
|
19
|
-
) VALUES (
|
|
20
|
-
$1, $2, $3::jsonb, $4
|
|
21
|
-
)
|
|
22
|
-
ON CONFLICT (inbox_id, channel_id) DO UPDATE SET
|
|
23
|
-
payload = EXCLUDED.payload,
|
|
24
|
-
flush_after = CASE WHEN hazo_notify_channel_deliveries.attempt_count = 0
|
|
25
|
-
THEN EXCLUDED.flush_after
|
|
26
|
-
ELSE hazo_notify_channel_deliveries.flush_after END,
|
|
27
|
-
updated_at = now()
|
|
28
|
-
RETURNING id, (xmax = 0) AS inserted, (attempt_count > 0) AS attempt_in_flight
|
|
29
|
-
`;
|
|
30
|
-
const CLAIM_SQL = `
|
|
31
|
-
WITH claimed AS (
|
|
32
|
-
SELECT id FROM hazo_notify_channel_deliveries
|
|
33
|
-
WHERE channel_id = $1 AND status = 'pending' AND flush_after <= now()
|
|
34
|
-
ORDER BY flush_after ASC
|
|
35
|
-
LIMIT $2
|
|
36
|
-
FOR UPDATE SKIP LOCKED
|
|
37
|
-
)
|
|
38
|
-
UPDATE hazo_notify_channel_deliveries d
|
|
39
|
-
SET attempt_count = d.attempt_count + 1,
|
|
40
|
-
updated_at = now()
|
|
41
|
-
FROM claimed
|
|
42
|
-
WHERE d.id = claimed.id
|
|
43
|
-
RETURNING
|
|
44
|
-
d.id AS delivery_id,
|
|
45
|
-
d.inbox_id,
|
|
46
|
-
d.channel_id,
|
|
47
|
-
d.payload,
|
|
48
|
-
d.attempt_count,
|
|
49
|
-
(SELECT user_id FROM hazo_notify_inbox WHERE id = d.inbox_id) AS user_id,
|
|
50
|
-
(SELECT scope_id FROM hazo_notify_inbox WHERE id = d.inbox_id) AS scope_id
|
|
51
|
-
`;
|
|
52
|
-
export const PostgresDialect = {
|
|
53
|
-
async upsertInboxRow(conn, i) {
|
|
54
|
-
const rows = await conn.raw(UPSERT_INBOX_SQL, [
|
|
55
|
-
i.scope_id, i.user_id, i.event_type, i.subject_id, i.batch_key,
|
|
56
|
-
i.in_app_text, i.deep_link,
|
|
57
|
-
JSON.stringify(i.payload),
|
|
58
|
-
JSON.stringify(i.surfaces),
|
|
59
|
-
i.batch_closed_at,
|
|
60
|
-
]);
|
|
61
|
-
return { id: rows[0].id, inserted: rows[0].inserted === true };
|
|
62
|
-
},
|
|
63
|
-
async upsertDelivery(conn, i) {
|
|
64
|
-
const rows = await conn.raw(UPSERT_DELIVERY_SQL, [i.inbox_id, i.channel_id, JSON.stringify(i.payload), i.flush_after]);
|
|
65
|
-
return {
|
|
66
|
-
id: rows[0].id,
|
|
67
|
-
inserted: rows[0].inserted === true,
|
|
68
|
-
attempt_in_flight: rows[0].attempt_in_flight === true,
|
|
69
|
-
};
|
|
70
|
-
},
|
|
71
|
-
async claimDueDeliveries(conn, channel_id, batch_size) {
|
|
72
|
-
return await conn.raw(CLAIM_SQL, [channel_id, batch_size]);
|
|
73
|
-
},
|
|
74
|
-
async markDeliverySent(conn, id, message_id) {
|
|
75
|
-
await conn.raw(`UPDATE hazo_notify_channel_deliveries
|
|
76
|
-
SET status='sent', message_id=$2, finalized_at=now(), updated_at=now()
|
|
77
|
-
WHERE id=$1`, [id, message_id]);
|
|
78
|
-
},
|
|
79
|
-
async markDeliveryFailed(conn, id, error) {
|
|
80
|
-
await conn.raw(`UPDATE hazo_notify_channel_deliveries
|
|
81
|
-
SET status='failed', last_error=$2, finalized_at=now(), updated_at=now()
|
|
82
|
-
WHERE id=$1`, [id, error.slice(0, 1000)]);
|
|
83
|
-
},
|
|
84
|
-
async rescheduleDelivery(conn, id, flush_after, error) {
|
|
85
|
-
await conn.raw(`UPDATE hazo_notify_channel_deliveries
|
|
86
|
-
SET flush_after=$2, last_error=$3, updated_at=now()
|
|
87
|
-
WHERE id=$1`, [id, flush_after, error.slice(0, 1000)]);
|
|
88
|
-
},
|
|
89
|
-
async closeStaleBatches(conn, window_ms) {
|
|
90
|
-
const rows = await conn.raw(`UPDATE hazo_notify_inbox
|
|
91
|
-
SET batch_closed_at = now()
|
|
92
|
-
WHERE batch_closed_at IS NULL
|
|
93
|
-
AND created_at + interval '1 millisecond' * $1 < now()
|
|
94
|
-
RETURNING id`, [window_ms]);
|
|
95
|
-
return rows.length;
|
|
96
|
-
},
|
|
97
|
-
async purgeReadInbox(conn, older_than) {
|
|
98
|
-
const rows = await conn.raw(`DELETE FROM hazo_notify_inbox
|
|
99
|
-
WHERE read_at IS NOT NULL AND read_at < $1
|
|
100
|
-
RETURNING id`, [older_than]);
|
|
101
|
-
return rows.length;
|
|
102
|
-
},
|
|
103
|
-
async purgeFinalizedDeliveries(conn, older_than) {
|
|
104
|
-
const rows = await conn.raw(`DELETE FROM hazo_notify_channel_deliveries
|
|
105
|
-
WHERE finalized_at IS NOT NULL AND finalized_at < $1
|
|
106
|
-
RETURNING id`, [older_than]);
|
|
107
|
-
return rows.length;
|
|
108
|
-
},
|
|
109
|
-
};
|
|
110
|
-
//# sourceMappingURL=postgres.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../../../src/lib/inbox/dialects/postgres.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../../src/lib/inbox/dialects/sqlite.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,YAAY,EAMb,MAAM,YAAY,CAAC;AAGpB,eAAO,MAAM,aAAa,EAAE,YAqI3B,CAAC"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
// src/lib/inbox/dialects/sqlite.ts
|
|
2
|
-
// SQLite uses ? params (not $1), no jsonb cast, app-supplied UUIDs,
|
|
3
|
-
// and SELECT ... RETURNING (3.35+).
|
|
4
|
-
//
|
|
5
|
-
// Concurrent claim: SQLite is single-writer; a BEGIN IMMEDIATE transaction
|
|
6
|
-
// serialises the claim+update step. SKIP LOCKED is not needed.
|
|
7
|
-
//
|
|
8
|
-
// Insert-vs-update detection:
|
|
9
|
-
// `rowid = last_insert_rowid()` is unreliable for ON CONFLICT DO UPDATE —
|
|
10
|
-
// SQLite sets last_insert_rowid() to the existing row's rowid on conflict,
|
|
11
|
-
// so the expression is always 1 (true). Instead:
|
|
12
|
-
// - inbox rows: check `aggregate_count = 1` (1 means freshly inserted)
|
|
13
|
-
// - deliveries: check `id = ?` with the candidate new_id (true on fresh insert)
|
|
14
|
-
//
|
|
15
|
-
// Datetime format:
|
|
16
|
-
// The dispatcher stores flush_after as a JS ISO 8601 string ("2026-05-16T13:00:00.000Z").
|
|
17
|
-
// SQLite's datetime('now') returns "2026-05-16 13:00:00" (space-separated, no ms/Z).
|
|
18
|
-
// Comparing them lexicographically always treats ISO as "greater", so `<= datetime('now')`
|
|
19
|
-
// is never true. Use strftime('%Y-%m-%dT%H:%M:%SZ','now') to match ISO format.
|
|
20
|
-
import { randomUUID } from "crypto";
|
|
21
|
-
export const SqliteDialect = {
|
|
22
|
-
async upsertInboxRow(conn, i) {
|
|
23
|
-
// Try INSERT; on conflict UPDATE; detect which path ran via aggregate_count.
|
|
24
|
-
// aggregate_count = 1 means freshly inserted (default value); > 1 means aggregated.
|
|
25
|
-
// (rowid = last_insert_rowid() is unreliable for ON CONFLICT DO UPDATE — see file header.)
|
|
26
|
-
const new_id = randomUUID();
|
|
27
|
-
const rows = await conn.raw(`INSERT INTO hazo_notify_inbox (
|
|
28
|
-
id, scope_id, user_id, event_type, subject_id, batch_key,
|
|
29
|
-
in_app_text, deep_link, payload, surfaces, batch_closed_at
|
|
30
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
31
|
-
ON CONFLICT (batch_key) WHERE batch_closed_at IS NULL DO UPDATE SET
|
|
32
|
-
aggregate_count = aggregate_count + 1,
|
|
33
|
-
in_app_text = excluded.in_app_text,
|
|
34
|
-
payload = excluded.payload,
|
|
35
|
-
updated_at = datetime('now')
|
|
36
|
-
RETURNING id, aggregate_count`, [
|
|
37
|
-
new_id, i.scope_id, i.user_id, i.event_type, i.subject_id, i.batch_key,
|
|
38
|
-
i.in_app_text, i.deep_link,
|
|
39
|
-
JSON.stringify(i.payload), JSON.stringify(i.surfaces),
|
|
40
|
-
i.batch_closed_at,
|
|
41
|
-
]);
|
|
42
|
-
return { id: rows[0].id, inserted: rows[0].aggregate_count === 1 };
|
|
43
|
-
},
|
|
44
|
-
async upsertDelivery(conn, i) {
|
|
45
|
-
// Detect insert-vs-update by comparing the returned id against the candidate new_id.
|
|
46
|
-
// On a fresh INSERT the returned id == new_id; on conflict the existing id is returned.
|
|
47
|
-
// (rowid = last_insert_rowid() is unreliable for ON CONFLICT DO UPDATE — see file header.)
|
|
48
|
-
const new_id = randomUUID();
|
|
49
|
-
const rows = await conn.raw(`INSERT INTO hazo_notify_channel_deliveries (
|
|
50
|
-
id, inbox_id, channel_id, payload, flush_after
|
|
51
|
-
) VALUES (?, ?, ?, ?, ?)
|
|
52
|
-
ON CONFLICT (inbox_id, channel_id) DO UPDATE SET
|
|
53
|
-
payload = excluded.payload,
|
|
54
|
-
flush_after = CASE WHEN attempt_count = 0 THEN excluded.flush_after ELSE flush_after END,
|
|
55
|
-
updated_at = datetime('now')
|
|
56
|
-
RETURNING id, attempt_count`, [new_id, i.inbox_id, i.channel_id, JSON.stringify(i.payload), i.flush_after]);
|
|
57
|
-
return {
|
|
58
|
-
id: rows[0].id,
|
|
59
|
-
inserted: rows[0].id === new_id,
|
|
60
|
-
attempt_in_flight: rows[0].attempt_count > 0,
|
|
61
|
-
};
|
|
62
|
-
},
|
|
63
|
-
async claimDueDeliveries(conn, channel_id, batch_size) {
|
|
64
|
-
// Two-step under BEGIN IMMEDIATE: select candidate ids, then UPDATE+RETURNING.
|
|
65
|
-
//
|
|
66
|
-
// flush_after is stored as ISO 8601 ("2026-05-16T13:00:00.000Z").
|
|
67
|
-
// SQLite's datetime('now') returns "2026-05-16 13:00:00" (space-separated, no Z).
|
|
68
|
-
// These are lexicographically incompatible, so we use strftime('%Y-%m-%dT%H:%M:%SZ','now')
|
|
69
|
-
// to match the ISO format stored in flush_after. See file header for full explanation.
|
|
70
|
-
return await conn.raw(`WITH claimed AS (
|
|
71
|
-
SELECT id FROM hazo_notify_channel_deliveries
|
|
72
|
-
WHERE channel_id = ? AND status = 'pending'
|
|
73
|
-
AND flush_after <= strftime('%Y-%m-%dT%H:%M:%SZ', 'now')
|
|
74
|
-
ORDER BY flush_after ASC LIMIT ?
|
|
75
|
-
)
|
|
76
|
-
UPDATE hazo_notify_channel_deliveries
|
|
77
|
-
SET attempt_count = attempt_count + 1, updated_at = datetime('now')
|
|
78
|
-
WHERE id IN (SELECT id FROM claimed)
|
|
79
|
-
RETURNING
|
|
80
|
-
id AS delivery_id, inbox_id, channel_id, payload, attempt_count,
|
|
81
|
-
(SELECT user_id FROM hazo_notify_inbox WHERE id = inbox_id) AS user_id,
|
|
82
|
-
(SELECT scope_id FROM hazo_notify_inbox WHERE id = inbox_id) AS scope_id`, [channel_id, batch_size]);
|
|
83
|
-
},
|
|
84
|
-
async markDeliverySent(conn, id, message_id) {
|
|
85
|
-
await conn.raw(`UPDATE hazo_notify_channel_deliveries
|
|
86
|
-
SET status='sent', message_id=?, finalized_at=datetime('now'), updated_at=datetime('now')
|
|
87
|
-
WHERE id=?`, [message_id, id]);
|
|
88
|
-
},
|
|
89
|
-
async markDeliveryFailed(conn, id, error) {
|
|
90
|
-
await conn.raw(`UPDATE hazo_notify_channel_deliveries
|
|
91
|
-
SET status='failed', last_error=?, finalized_at=datetime('now'), updated_at=datetime('now')
|
|
92
|
-
WHERE id=?`, [error.slice(0, 1000), id]);
|
|
93
|
-
},
|
|
94
|
-
async rescheduleDelivery(conn, id, flush_after, error) {
|
|
95
|
-
await conn.raw(`UPDATE hazo_notify_channel_deliveries
|
|
96
|
-
SET flush_after=?, last_error=?, updated_at=datetime('now')
|
|
97
|
-
WHERE id=?`, [flush_after, error.slice(0, 1000), id]);
|
|
98
|
-
},
|
|
99
|
-
async closeStaleBatches(conn, window_ms) {
|
|
100
|
-
const rows = await conn.raw(`UPDATE hazo_notify_inbox
|
|
101
|
-
SET batch_closed_at = datetime('now')
|
|
102
|
-
WHERE batch_closed_at IS NULL
|
|
103
|
-
AND datetime(created_at, '+' || ? || ' seconds') < datetime('now')
|
|
104
|
-
RETURNING id`, [Math.floor(window_ms / 1000)]);
|
|
105
|
-
return rows.length;
|
|
106
|
-
},
|
|
107
|
-
async purgeReadInbox(conn, older_than) {
|
|
108
|
-
const rows = await conn.raw(`DELETE FROM hazo_notify_inbox
|
|
109
|
-
WHERE read_at IS NOT NULL AND read_at < ?
|
|
110
|
-
RETURNING id`, [older_than]);
|
|
111
|
-
return rows.length;
|
|
112
|
-
},
|
|
113
|
-
async purgeFinalizedDeliveries(conn, older_than) {
|
|
114
|
-
const rows = await conn.raw(`DELETE FROM hazo_notify_channel_deliveries
|
|
115
|
-
WHERE finalized_at IS NOT NULL AND finalized_at < ?
|
|
116
|
-
RETURNING id`, [older_than]);
|
|
117
|
-
return rows.length;
|
|
118
|
-
},
|
|
119
|
-
};
|
|
120
|
-
//# sourceMappingURL=sqlite.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../../src/lib/inbox/dialects/sqlite.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,oEAAoE;AACpE,oCAAoC;AACpC,EAAE;AACF,2EAA2E;AAC3E,+DAA+D;AAC/D,EAAE;AACF,8BAA8B;AAC9B,4EAA4E;AAC5E,6EAA6E;AAC7E,mDAAmD;AACnD,yEAAyE;AACzE,kFAAkF;AAClF,EAAE;AACF,mBAAmB;AACnB,4FAA4F;AAC5F,uFAAuF;AACvF,6FAA6F;AAC7F,iFAAiF;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAWpC,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,KAAK,CAAC,cAAc,CAAC,IAAyB,EAAE,CAAsB;QACpE,6EAA6E;QAC7E,oFAAoF;QACpF,2FAA2F;QAC3F,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAI,CAC1B;;;;;;;;;qCAS+B,EAC/B;YACE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,SAAS;YACtE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS;YAC1B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;YACrD,CAAC,CAAC,eAAe;SAClB,CACF,CAAC;QACF,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,EAAE,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAyB,EAAE,CAAsB;QACpE,qFAAqF;QACrF,wFAAwF;QACxF,2FAA2F;QAC3F,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAI,CAC1B;;;;;;;mCAO6B,EAC7B,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAC7E,CAAC;QACF,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YACd,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM;YAC/B,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC;SAC7C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAyB,EAAE,UAAkB,EAAE,UAAkB;QACxF,+EAA+E;QAC/E,EAAE;QACF,kEAAkE;QAClE,kFAAkF;QAClF,2FAA2F;QAC3F,uFAAuF;QACvF,OAAO,MAAM,IAAI,CAAC,GAAI,CACpB;;;;;;;;;;;;kFAY4E,EAC5E,CAAC,UAAU,EAAE,UAAU,CAAC,CACzB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAyB,EAAE,EAAU,EAAE,UAAkB;QAC9E,MAAM,IAAI,CAAC,GAAI,CACb;;mBAEa,EACb,CAAC,UAAU,EAAE,EAAE,CAAC,CACjB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAyB,EAAE,EAAU,EAAE,KAAa;QAC3E,MAAM,IAAI,CAAC,GAAI,CACb;;mBAEa,EACb,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAC3B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAyB,EAAE,EAAU,EAAE,WAAmB,EAAE,KAAa;QAChG,MAAM,IAAI,CAAC,GAAI,CACb;;mBAEa,EACb,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CACxC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAyB,EAAE,SAAiB;QAClE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAI,CAC1B;;;;qBAIe,EACf,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAC/B,CAAC;QACF,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAyB,EAAE,UAAkB;QAChE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAI,CAC1B;;qBAEe,EACf,CAAC,UAAU,CAAC,CACb,CAAC;QACF,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,IAAyB,EAAE,UAAkB;QAC1E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAI,CAC1B;;qBAEe,EACf,CAAC,UAAU,CAAC,CACb,CAAC;QACF,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF,CAAC"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import type { HazoConnectInstance } from "../../template_manager/types.js";
|
|
2
|
-
export interface UpsertInboxRowInput {
|
|
3
|
-
scope_id: string;
|
|
4
|
-
user_id: string;
|
|
5
|
-
event_type: string;
|
|
6
|
-
subject_id: string | null;
|
|
7
|
-
batch_key: string;
|
|
8
|
-
in_app_text: string;
|
|
9
|
-
deep_link: string;
|
|
10
|
-
payload: Record<string, unknown>;
|
|
11
|
-
surfaces: {
|
|
12
|
-
in_app: boolean;
|
|
13
|
-
banner: boolean;
|
|
14
|
-
};
|
|
15
|
-
batch_closed_at: string | null;
|
|
16
|
-
}
|
|
17
|
-
export interface UpsertInboxRowResult {
|
|
18
|
-
id: string;
|
|
19
|
-
inserted: boolean;
|
|
20
|
-
}
|
|
21
|
-
export interface UpsertDeliveryInput {
|
|
22
|
-
inbox_id: string;
|
|
23
|
-
channel_id: string;
|
|
24
|
-
payload: Record<string, unknown>;
|
|
25
|
-
flush_after: string;
|
|
26
|
-
}
|
|
27
|
-
export interface UpsertDeliveryResult {
|
|
28
|
-
id: string;
|
|
29
|
-
inserted: boolean;
|
|
30
|
-
/** True if the worker has already started attempts on this row. */
|
|
31
|
-
attempt_in_flight: boolean;
|
|
32
|
-
}
|
|
33
|
-
export interface ClaimedDelivery {
|
|
34
|
-
delivery_id: string;
|
|
35
|
-
inbox_id: string;
|
|
36
|
-
channel_id: string;
|
|
37
|
-
payload: Record<string, unknown>;
|
|
38
|
-
attempt_count: number;
|
|
39
|
-
user_id: string;
|
|
40
|
-
scope_id: string;
|
|
41
|
-
}
|
|
42
|
-
export interface InboxDialect {
|
|
43
|
-
upsertInboxRow(conn: HazoConnectInstance, input: UpsertInboxRowInput): Promise<UpsertInboxRowResult>;
|
|
44
|
-
upsertDelivery(conn: HazoConnectInstance, input: UpsertDeliveryInput): Promise<UpsertDeliveryResult>;
|
|
45
|
-
claimDueDeliveries(conn: HazoConnectInstance, channel_id: string, batch_size: number): Promise<ClaimedDelivery[]>;
|
|
46
|
-
markDeliverySent(conn: HazoConnectInstance, delivery_id: string, message_id: string): Promise<void>;
|
|
47
|
-
markDeliveryFailed(conn: HazoConnectInstance, delivery_id: string, error: string): Promise<void>;
|
|
48
|
-
rescheduleDelivery(conn: HazoConnectInstance, delivery_id: string, flush_after: string, error: string): Promise<void>;
|
|
49
|
-
closeStaleBatches(conn: HazoConnectInstance, window_ms: number): Promise<number>;
|
|
50
|
-
purgeReadInbox(conn: HazoConnectInstance, older_than: string): Promise<number>;
|
|
51
|
-
purgeFinalizedDeliveries(conn: HazoConnectInstance, older_than: string): Promise<number>;
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/inbox/dialects/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAC/C,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;IAClB,mEAAmE;IACnE,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,cAAc,CAAC,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrG,cAAc,CAAC,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrG,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAClH,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpG,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjG,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtH,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACjF,cAAc,CAAC,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/E,wBAAwB,CAAC,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1F"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/lib/inbox/dialects/types.ts"],"names":[],"mappings":""}
|