hazo_notify 1.1.4 → 3.1.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 +163 -41
- package/dist/components/template_manager/category_dialog.d.ts +11 -0
- package/dist/components/template_manager/category_dialog.d.ts.map +1 -0
- package/dist/components/template_manager/category_dialog.js +41 -0
- package/dist/components/template_manager/category_dialog.js.map +1 -0
- package/dist/components/template_manager/category_tree.d.ts +13 -0
- package/dist/components/template_manager/category_tree.d.ts.map +1 -0
- package/dist/components/template_manager/category_tree.js +45 -0
- package/dist/components/template_manager/category_tree.js.map +1 -0
- package/dist/components/template_manager/index.d.ts +10 -0
- package/dist/components/template_manager/index.d.ts.map +1 -0
- package/dist/components/template_manager/index.js +8 -0
- package/dist/components/template_manager/index.js.map +1 -0
- package/dist/components/template_manager/preview_dialog.d.ts +11 -0
- package/dist/components/template_manager/preview_dialog.d.ts.map +1 -0
- package/dist/components/template_manager/preview_dialog.js +15 -0
- package/dist/components/template_manager/preview_dialog.js.map +1 -0
- package/dist/components/template_manager/template_dialog.d.ts +12 -0
- package/dist/components/template_manager/template_dialog.d.ts.map +1 -0
- package/dist/components/template_manager/template_dialog.js +46 -0
- package/dist/components/template_manager/template_dialog.js.map +1 -0
- package/dist/components/template_manager/template_editor.d.ts +12 -0
- package/dist/components/template_manager/template_editor.d.ts.map +1 -0
- package/dist/components/template_manager/template_editor.js +57 -0
- package/dist/components/template_manager/template_editor.js.map +1 -0
- package/dist/components/template_manager/template_globals_admin.d.ts +8 -0
- package/dist/components/template_manager/template_globals_admin.d.ts.map +1 -0
- package/dist/components/template_manager/template_globals_admin.js +27 -0
- package/dist/components/template_manager/template_globals_admin.js.map +1 -0
- package/dist/components/template_manager/template_manager_admin.d.ts +44 -0
- package/dist/components/template_manager/template_manager_admin.d.ts.map +1 -0
- package/dist/components/template_manager/template_manager_admin.js +272 -0
- package/dist/components/template_manager/template_manager_admin.js.map +1 -0
- package/dist/lib/emailer/emailer.d.ts.map +1 -0
- package/dist/lib/emailer/emailer.js.map +1 -0
- package/dist/lib/emailer/index.d.ts.map +1 -0
- package/dist/lib/emailer/index.js.map +1 -0
- package/dist/lib/emailer/providers/index.d.ts.map +1 -0
- package/dist/lib/emailer/providers/index.js.map +1 -0
- package/dist/lib/emailer/providers/pop3_provider.d.ts.map +1 -0
- package/dist/lib/emailer/providers/pop3_provider.js.map +1 -0
- package/dist/lib/emailer/providers/smtp_provider.d.ts.map +1 -0
- package/dist/lib/emailer/providers/smtp_provider.js.map +1 -0
- package/dist/lib/emailer/providers/zeptomail_provider.d.ts.map +1 -0
- package/dist/{emailer → lib/emailer}/providers/zeptomail_provider.js +9 -6
- package/dist/lib/emailer/providers/zeptomail_provider.js.map +1 -0
- package/dist/lib/emailer/types.d.ts.map +1 -0
- package/dist/lib/emailer/types.js.map +1 -0
- package/dist/lib/emailer/utils/constants.d.ts.map +1 -0
- package/dist/lib/emailer/utils/constants.js.map +1 -0
- package/dist/lib/emailer/utils/index.d.ts.map +1 -0
- package/dist/lib/emailer/utils/index.js.map +1 -0
- package/dist/lib/emailer/utils/logger.d.ts.map +1 -0
- package/dist/lib/emailer/utils/logger.js.map +1 -0
- package/dist/lib/emailer/utils/validation.d.ts.map +1 -0
- package/dist/lib/emailer/utils/validation.js.map +1 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/template_manager/cache/scope_chain_cache.d.ts +26 -0
- package/dist/lib/template_manager/cache/scope_chain_cache.d.ts.map +1 -0
- package/dist/lib/template_manager/cache/scope_chain_cache.js +60 -0
- package/dist/lib/template_manager/cache/scope_chain_cache.js.map +1 -0
- package/dist/{template_manager → lib/template_manager}/config/config_loader.d.ts +16 -15
- package/dist/lib/template_manager/config/config_loader.d.ts.map +1 -0
- package/dist/lib/template_manager/config/config_loader.js +98 -0
- package/dist/lib/template_manager/config/config_loader.js.map +1 -0
- package/dist/{template_manager → lib/template_manager}/config/constants.d.ts +4 -54
- package/dist/lib/template_manager/config/constants.d.ts.map +1 -0
- package/dist/{template_manager → lib/template_manager}/config/constants.js +4 -84
- package/dist/lib/template_manager/config/constants.js.map +1 -0
- package/dist/lib/template_manager/config/index.d.ts.map +1 -0
- package/dist/lib/template_manager/config/index.js.map +1 -0
- package/dist/{template_manager → lib/template_manager}/db/category_repository.d.ts +22 -14
- package/dist/lib/template_manager/db/category_repository.d.ts.map +1 -0
- package/dist/{template_manager → lib/template_manager}/db/category_repository.js +127 -83
- package/dist/lib/template_manager/db/category_repository.js.map +1 -0
- package/dist/lib/template_manager/db/index.d.ts +6 -0
- package/dist/lib/template_manager/db/index.d.ts.map +1 -0
- package/dist/lib/template_manager/db/index.js +6 -0
- package/dist/lib/template_manager/db/index.js.map +1 -0
- package/dist/{template_manager → lib/template_manager}/db/template_repository.d.ts +25 -28
- package/dist/lib/template_manager/db/template_repository.d.ts.map +1 -0
- package/dist/lib/template_manager/db/template_repository.js +507 -0
- package/dist/lib/template_manager/db/template_repository.js.map +1 -0
- package/dist/lib/template_manager/engine/handlebars_engine.d.ts.map +1 -0
- package/dist/lib/template_manager/engine/handlebars_engine.js.map +1 -0
- package/dist/lib/template_manager/engine/index.d.ts.map +1 -0
- package/dist/lib/template_manager/engine/index.js.map +1 -0
- package/dist/{template_manager → lib/template_manager}/engine/variable_resolver.d.ts +13 -14
- package/dist/lib/template_manager/engine/variable_resolver.d.ts.map +1 -0
- package/dist/{template_manager → lib/template_manager}/engine/variable_resolver.js +25 -33
- package/dist/lib/template_manager/engine/variable_resolver.js.map +1 -0
- package/dist/lib/template_manager/handlers/adapters/hazo_auth.d.ts +20 -0
- package/dist/lib/template_manager/handlers/adapters/hazo_auth.d.ts.map +1 -0
- package/dist/lib/template_manager/handlers/adapters/hazo_auth.js +46 -0
- package/dist/lib/template_manager/handlers/adapters/hazo_auth.js.map +1 -0
- package/dist/lib/template_manager/handlers/auth.d.ts +47 -0
- package/dist/lib/template_manager/handlers/auth.d.ts.map +1 -0
- package/dist/lib/template_manager/handlers/auth.js +67 -0
- package/dist/lib/template_manager/handlers/auth.js.map +1 -0
- package/dist/lib/template_manager/handlers/index.d.ts +67 -0
- package/dist/lib/template_manager/handlers/index.d.ts.map +1 -0
- package/dist/lib/template_manager/handlers/index.js +284 -0
- package/dist/lib/template_manager/handlers/index.js.map +1 -0
- package/dist/lib/template_manager/index.d.ts +56 -0
- package/dist/lib/template_manager/index.d.ts.map +1 -0
- package/dist/lib/template_manager/index.js +68 -0
- package/dist/lib/template_manager/index.js.map +1 -0
- package/dist/lib/template_manager/init.d.ts +54 -0
- package/dist/lib/template_manager/init.d.ts.map +1 -0
- package/dist/lib/template_manager/init.js +85 -0
- package/dist/lib/template_manager/init.js.map +1 -0
- package/dist/lib/template_manager/registry.d.ts +23 -0
- package/dist/lib/template_manager/registry.d.ts.map +1 -0
- package/dist/lib/template_manager/registry.js +33 -0
- package/dist/lib/template_manager/registry.js.map +1 -0
- package/dist/lib/template_manager/seed/sync.d.ts +8 -0
- package/dist/lib/template_manager/seed/sync.d.ts.map +1 -0
- package/dist/lib/template_manager/seed/sync.js +77 -0
- package/dist/lib/template_manager/seed/sync.js.map +1 -0
- package/dist/{template_manager → lib/template_manager}/template_manager.d.ts +25 -27
- package/dist/lib/template_manager/template_manager.d.ts.map +1 -0
- package/dist/{template_manager → lib/template_manager}/template_manager.js +41 -55
- package/dist/lib/template_manager/template_manager.js.map +1 -0
- package/dist/{template_manager → lib/template_manager}/types.d.ts +32 -125
- package/dist/lib/template_manager/types.d.ts.map +1 -0
- package/dist/lib/template_manager/types.js +12 -0
- package/dist/lib/template_manager/types.js.map +1 -0
- package/dist/lib/template_manager/utils/index.d.ts.map +1 -0
- package/dist/lib/template_manager/utils/index.js.map +1 -0
- package/dist/lib/template_manager/utils/system_variables.d.ts.map +1 -0
- package/dist/lib/template_manager/utils/system_variables.js.map +1 -0
- package/dist/lib/template_manager/utils/validation.d.ts.map +1 -0
- package/dist/lib/template_manager/utils/validation.js.map +1 -0
- package/dist/lib/utils.d.ts +3 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +6 -0
- package/dist/lib/utils.js.map +1 -0
- package/migrations/002_scope_migration.sql +93 -0
- package/package.json +65 -37
- package/dist/emailer/emailer.d.ts.map +0 -1
- package/dist/emailer/emailer.js.map +0 -1
- package/dist/emailer/index.d.ts.map +0 -1
- package/dist/emailer/index.js.map +0 -1
- package/dist/emailer/providers/index.d.ts.map +0 -1
- package/dist/emailer/providers/index.js.map +0 -1
- package/dist/emailer/providers/pop3_provider.d.ts.map +0 -1
- package/dist/emailer/providers/pop3_provider.js.map +0 -1
- package/dist/emailer/providers/smtp_provider.d.ts.map +0 -1
- package/dist/emailer/providers/smtp_provider.js.map +0 -1
- package/dist/emailer/providers/zeptomail_provider.d.ts.map +0 -1
- package/dist/emailer/providers/zeptomail_provider.js.map +0 -1
- package/dist/emailer/types.d.ts.map +0 -1
- package/dist/emailer/types.js.map +0 -1
- package/dist/emailer/utils/constants.d.ts.map +0 -1
- package/dist/emailer/utils/constants.js.map +0 -1
- package/dist/emailer/utils/index.d.ts.map +0 -1
- package/dist/emailer/utils/index.js.map +0 -1
- package/dist/emailer/utils/logger.d.ts.map +0 -1
- package/dist/emailer/utils/logger.js.map +0 -1
- package/dist/emailer/utils/validation.d.ts.map +0 -1
- package/dist/emailer/utils/validation.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/template_manager/config/config_loader.d.ts.map +0 -1
- package/dist/template_manager/config/config_loader.js +0 -154
- package/dist/template_manager/config/config_loader.js.map +0 -1
- package/dist/template_manager/config/constants.d.ts.map +0 -1
- package/dist/template_manager/config/constants.js.map +0 -1
- package/dist/template_manager/config/index.d.ts.map +0 -1
- package/dist/template_manager/config/index.js.map +0 -1
- package/dist/template_manager/db/category_repository.d.ts.map +0 -1
- package/dist/template_manager/db/category_repository.js.map +0 -1
- package/dist/template_manager/db/index.d.ts +0 -6
- package/dist/template_manager/db/index.d.ts.map +0 -1
- package/dist/template_manager/db/index.js +0 -6
- package/dist/template_manager/db/index.js.map +0 -1
- package/dist/template_manager/db/template_repository.d.ts.map +0 -1
- package/dist/template_manager/db/template_repository.js +0 -674
- package/dist/template_manager/db/template_repository.js.map +0 -1
- package/dist/template_manager/engine/handlebars_engine.d.ts.map +0 -1
- package/dist/template_manager/engine/handlebars_engine.js.map +0 -1
- package/dist/template_manager/engine/index.d.ts.map +0 -1
- package/dist/template_manager/engine/index.js.map +0 -1
- package/dist/template_manager/engine/variable_resolver.d.ts.map +0 -1
- package/dist/template_manager/engine/variable_resolver.js.map +0 -1
- package/dist/template_manager/index.d.ts +0 -32
- package/dist/template_manager/index.d.ts.map +0 -1
- package/dist/template_manager/index.js +0 -41
- package/dist/template_manager/index.js.map +0 -1
- package/dist/template_manager/template_manager.d.ts.map +0 -1
- package/dist/template_manager/template_manager.js.map +0 -1
- package/dist/template_manager/types.d.ts.map +0 -1
- package/dist/template_manager/types.js +0 -11
- package/dist/template_manager/types.js.map +0 -1
- package/dist/template_manager/utils/index.d.ts.map +0 -1
- package/dist/template_manager/utils/index.js.map +0 -1
- package/dist/template_manager/utils/system_variables.d.ts.map +0 -1
- package/dist/template_manager/utils/system_variables.js.map +0 -1
- package/dist/template_manager/utils/validation.d.ts.map +0 -1
- package/dist/template_manager/utils/validation.js.map +0 -1
- /package/dist/{emailer → lib/emailer}/emailer.d.ts +0 -0
- /package/dist/{emailer → lib/emailer}/emailer.js +0 -0
- /package/dist/{emailer → lib/emailer}/index.d.ts +0 -0
- /package/dist/{emailer → lib/emailer}/index.js +0 -0
- /package/dist/{emailer → lib/emailer}/providers/index.d.ts +0 -0
- /package/dist/{emailer → lib/emailer}/providers/index.js +0 -0
- /package/dist/{emailer → lib/emailer}/providers/pop3_provider.d.ts +0 -0
- /package/dist/{emailer → lib/emailer}/providers/pop3_provider.js +0 -0
- /package/dist/{emailer → lib/emailer}/providers/smtp_provider.d.ts +0 -0
- /package/dist/{emailer → lib/emailer}/providers/smtp_provider.js +0 -0
- /package/dist/{emailer → lib/emailer}/providers/zeptomail_provider.d.ts +0 -0
- /package/dist/{emailer → lib/emailer}/types.d.ts +0 -0
- /package/dist/{emailer → lib/emailer}/types.js +0 -0
- /package/dist/{emailer → lib/emailer}/utils/constants.d.ts +0 -0
- /package/dist/{emailer → lib/emailer}/utils/constants.js +0 -0
- /package/dist/{emailer → lib/emailer}/utils/index.d.ts +0 -0
- /package/dist/{emailer → lib/emailer}/utils/index.js +0 -0
- /package/dist/{emailer → lib/emailer}/utils/logger.d.ts +0 -0
- /package/dist/{emailer → lib/emailer}/utils/logger.js +0 -0
- /package/dist/{emailer → lib/emailer}/utils/validation.d.ts +0 -0
- /package/dist/{emailer → lib/emailer}/utils/validation.js +0 -0
- /package/dist/{index.d.ts → lib/index.d.ts} +0 -0
- /package/dist/{index.js → lib/index.js} +0 -0
- /package/dist/{template_manager → lib/template_manager}/config/index.d.ts +0 -0
- /package/dist/{template_manager → lib/template_manager}/config/index.js +0 -0
- /package/dist/{template_manager → lib/template_manager}/engine/handlebars_engine.d.ts +0 -0
- /package/dist/{template_manager → lib/template_manager}/engine/handlebars_engine.js +0 -0
- /package/dist/{template_manager → lib/template_manager}/engine/index.d.ts +0 -0
- /package/dist/{template_manager → lib/template_manager}/engine/index.js +0 -0
- /package/dist/{template_manager → lib/template_manager}/utils/index.d.ts +0 -0
- /package/dist/{template_manager → lib/template_manager}/utils/index.js +0 -0
- /package/dist/{template_manager → lib/template_manager}/utils/system_variables.d.ts +0 -0
- /package/dist/{template_manager → lib/template_manager}/utils/system_variables.js +0 -0
- /package/dist/{template_manager → lib/template_manager}/utils/validation.d.ts +0 -0
- /package/dist/{template_manager → lib/template_manager}/utils/validation.js +0 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { HazoConnectInstance, SystemTemplateManifest } from '../types.js';
|
|
2
|
+
export declare function sync_system_templates(hazo_connect: HazoConnectInstance, manifests: SystemTemplateManifest[]): Promise<{
|
|
3
|
+
synced: number;
|
|
4
|
+
updated: number;
|
|
5
|
+
skipped: number;
|
|
6
|
+
errors: string[];
|
|
7
|
+
}>;
|
|
8
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../../src/lib/template_manager/seed/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EAGvB,MAAM,aAAa,CAAC;AAOrB,wBAAsB,qBAAqB,CACzC,YAAY,EAAE,mBAAmB,EACjC,SAAS,EAAE,sBAAsB,EAAE,GAClC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAuFjF"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { TABLE_TEMPLATES, TABLE_TEMPLATE_CATEGORY, ERROR_MESSAGES, } from '../config/constants.js';
|
|
2
|
+
export async function sync_system_templates(hazo_connect, manifests) {
|
|
3
|
+
if (!hazo_connect) {
|
|
4
|
+
throw new Error(ERROR_MESSAGES.DB_CONNECTION_REQUIRED);
|
|
5
|
+
}
|
|
6
|
+
let synced = 0;
|
|
7
|
+
let updated = 0;
|
|
8
|
+
let skipped = 0;
|
|
9
|
+
const errors = [];
|
|
10
|
+
for (const manifest of manifests) {
|
|
11
|
+
try {
|
|
12
|
+
// 1. Find or create the global category by name
|
|
13
|
+
const cat_q = hazo_connect
|
|
14
|
+
.query()
|
|
15
|
+
.from(TABLE_TEMPLATE_CATEGORY)
|
|
16
|
+
.select('*')
|
|
17
|
+
.where('template_category_name', 'eq', manifest.category)
|
|
18
|
+
.where('scope_id', 'is', null);
|
|
19
|
+
const cat_rows = await hazo_connect.list(cat_q);
|
|
20
|
+
let category;
|
|
21
|
+
if (cat_rows.length === 0) {
|
|
22
|
+
category = await hazo_connect.insert(TABLE_TEMPLATE_CATEGORY, {
|
|
23
|
+
scope_id: null,
|
|
24
|
+
template_category_name: manifest.category,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
category = cat_rows[0];
|
|
29
|
+
}
|
|
30
|
+
// 2. Look up the global template by name
|
|
31
|
+
const tpl_q = hazo_connect
|
|
32
|
+
.query()
|
|
33
|
+
.from(TABLE_TEMPLATES)
|
|
34
|
+
.select('*')
|
|
35
|
+
.where('template_name', 'eq', manifest.template_name)
|
|
36
|
+
.where('scope_id', 'is', null);
|
|
37
|
+
const tpl_rows = await hazo_connect.list(tpl_q);
|
|
38
|
+
if (tpl_rows.length === 0) {
|
|
39
|
+
// 3a. NOT found — insert new global template
|
|
40
|
+
await hazo_connect.insert(TABLE_TEMPLATES, {
|
|
41
|
+
scope_id: null,
|
|
42
|
+
template_category_id: category.id,
|
|
43
|
+
template_name: manifest.template_name,
|
|
44
|
+
template_html: manifest.html,
|
|
45
|
+
template_text: manifest.text,
|
|
46
|
+
template_variables: manifest.variables,
|
|
47
|
+
is_modified: false,
|
|
48
|
+
});
|
|
49
|
+
synced++;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
const existing = tpl_rows[0];
|
|
53
|
+
if (existing.is_modified) {
|
|
54
|
+
// 3c. User has customized this template — leave it alone
|
|
55
|
+
skipped++;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// 3b. Found and unmodified — update content
|
|
59
|
+
await hazo_connect.updateById(TABLE_TEMPLATES, existing.id, {
|
|
60
|
+
template_html: manifest.html,
|
|
61
|
+
template_text: manifest.text,
|
|
62
|
+
template_variables: manifest.variables,
|
|
63
|
+
template_category_id: category.id,
|
|
64
|
+
changed_at: new Date().toISOString(),
|
|
65
|
+
});
|
|
66
|
+
updated++;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
72
|
+
errors.push(`${manifest.template_name}: ${msg}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return { synced, updated, skipped, errors };
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/lib/template_manager/seed/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,67 +1,65 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Template Manager Core Service
|
|
2
|
+
* Template Manager Core Service (v2.0.0)
|
|
3
3
|
*
|
|
4
|
-
* Core functions for rendering and sending templated emails
|
|
4
|
+
* Core functions for rendering and sending templated emails.
|
|
5
|
+
* Uses scope_chain for hierarchical template resolution.
|
|
5
6
|
*/
|
|
6
7
|
import type { HazoConnectInstance, TemplateManagerConfig, SendTemplateEmailOptions, SendTemplateEmailResponse, TemplateRenderResult, Logger } from './types.js';
|
|
7
8
|
/**
|
|
8
|
-
* Render a template with variables (without sending)
|
|
9
|
+
* Render a template with variables (without sending).
|
|
9
10
|
*
|
|
10
|
-
*
|
|
11
|
-
* (including system variables), processes @template
|
|
12
|
-
* the final content using Handlebars.
|
|
11
|
+
* Fetches a template from the database using hierarchical scope resolution,
|
|
12
|
+
* resolves all variables (including system variables), processes @template
|
|
13
|
+
* references, and renders the final content using Handlebars.
|
|
13
14
|
*
|
|
14
15
|
* @param template_name - Name of the template to render
|
|
15
16
|
* @param variables - User-provided variables to substitute
|
|
16
17
|
* @param hazo_connect - Database connection instance
|
|
17
|
-
* @param
|
|
18
|
+
* @param scope_id - Scope ID for hierarchical lookup (null = global only)
|
|
18
19
|
* @param config - Optional config override (loads from file if not provided)
|
|
19
20
|
* @param logger - Optional logger instance
|
|
20
21
|
* @returns Render result with HTML and text content
|
|
21
22
|
*/
|
|
22
|
-
export declare function render_template(template_name: string, variables: Record<string, string>, hazo_connect: HazoConnectInstance,
|
|
23
|
+
export declare function render_template(template_name: string, variables: Record<string, string>, hazo_connect: HazoConnectInstance, scope_id: string | null, config?: TemplateManagerConfig, logger?: Logger): Promise<TemplateRenderResult>;
|
|
23
24
|
/**
|
|
24
|
-
* Send an email using a named template
|
|
25
|
+
* Send an email using a named template.
|
|
25
26
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
27
|
+
* 1. Resolves scope chain from options.scope_id
|
|
28
|
+
* 2. Fetches the template from the database
|
|
29
|
+
* 3. Resolves all variables (user + system)
|
|
30
|
+
* 4. Processes @template references
|
|
31
|
+
* 5. Renders with Handlebars
|
|
32
|
+
* 6. Sends via the emailer module
|
|
32
33
|
*
|
|
33
34
|
* @param options - Template email options
|
|
34
35
|
* @param hazo_connect - Database connection instance
|
|
35
|
-
* @param org_id - Organization ID
|
|
36
36
|
* @param config - Optional config override
|
|
37
37
|
* @returns Email send response
|
|
38
38
|
*/
|
|
39
|
-
export declare function send_template_email(options: SendTemplateEmailOptions, hazo_connect: HazoConnectInstance,
|
|
39
|
+
export declare function send_template_email(options: SendTemplateEmailOptions, hazo_connect: HazoConnectInstance, config?: TemplateManagerConfig): Promise<SendTemplateEmailResponse>;
|
|
40
40
|
/**
|
|
41
|
-
* Preview a template render without saving or sending
|
|
42
|
-
*
|
|
43
|
-
* Useful for the UI to show a preview of what the email will look like
|
|
41
|
+
* Preview a template render without saving or sending.
|
|
42
|
+
* Useful for the UI to show a preview of what the email will look like.
|
|
44
43
|
*
|
|
45
44
|
* @param html_content - Raw HTML template content
|
|
46
45
|
* @param text_content - Raw text template content
|
|
47
46
|
* @param variables - Variables to substitute
|
|
48
47
|
* @param hazo_connect - Database connection (for @template resolution)
|
|
49
|
-
* @param
|
|
48
|
+
* @param scope_id - Scope ID for hierarchical @template resolution
|
|
50
49
|
* @returns Render result
|
|
51
50
|
*/
|
|
52
|
-
export declare function preview_template(html_content: string, text_content: string, variables: Record<string, string>, hazo_connect?: HazoConnectInstance,
|
|
51
|
+
export declare function preview_template(html_content: string, text_content: string, variables: Record<string, string>, hazo_connect?: HazoConnectInstance, scope_id?: string | null): Promise<TemplateRenderResult>;
|
|
53
52
|
/**
|
|
54
|
-
* Validate template variables before rendering
|
|
55
|
-
*
|
|
56
|
-
* Checks that all required variables are provided
|
|
53
|
+
* Validate template variables before rendering.
|
|
54
|
+
* Checks that all required variables are provided.
|
|
57
55
|
*
|
|
58
56
|
* @param template_name - Name of the template
|
|
59
57
|
* @param variables - Variables to validate
|
|
60
58
|
* @param hazo_connect - Database connection
|
|
61
|
-
* @param
|
|
59
|
+
* @param scope_id - Scope ID for hierarchical lookup
|
|
62
60
|
* @returns Validation result
|
|
63
61
|
*/
|
|
64
|
-
export declare function validate_template_variables(template_name: string, variables: Record<string, string>, hazo_connect: HazoConnectInstance,
|
|
62
|
+
export declare function validate_template_variables(template_name: string, variables: Record<string, string>, hazo_connect: HazoConnectInstance, scope_id: string | null): Promise<{
|
|
65
63
|
valid: boolean;
|
|
66
64
|
missing: string[];
|
|
67
65
|
message: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template_manager.d.ts","sourceRoot":"","sources":["../../../src/lib/template_manager/template_manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,EACpB,MAAM,EACP,MAAM,YAAY,CAAC;AAiBpB;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CACnC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,YAAY,EAAE,mBAAmB,EACjC,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,MAAM,CAAC,EAAE,qBAAqB,EAC9B,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC,CAkH/B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,wBAAwB,EACjC,YAAY,EAAE,mBAAmB,EACjC,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,yBAAyB,CAAC,CAyHpC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,YAAY,CAAC,EAAE,mBAAmB,EAClC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAmC/B;AAED;;;;;;;;;GASG;AACH,wBAAsB,2BAA2B,CAC/C,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,YAAY,EAAE,mBAAmB,EACjC,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAsDjE"}
|
|
@@ -1,31 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Template Manager Core Service
|
|
2
|
+
* Template Manager Core Service (v2.0.0)
|
|
3
3
|
*
|
|
4
|
-
* Core functions for rendering and sending templated emails
|
|
4
|
+
* Core functions for rendering and sending templated emails.
|
|
5
|
+
* Uses scope_chain for hierarchical template resolution.
|
|
5
6
|
*/
|
|
6
7
|
import { send_email } from '../emailer/emailer.js';
|
|
7
8
|
import { get_logger, create_fallback_logger } from '../emailer/utils/logger.js';
|
|
8
|
-
import { load_template_config } from './config/config_loader.js';
|
|
9
9
|
import { ERROR_MESSAGES } from './config/constants.js';
|
|
10
10
|
import { get_template_by_name } from './db/template_repository.js';
|
|
11
|
+
import { get_scope_chain } from './cache/scope_chain_cache.js';
|
|
11
12
|
import { render_handlebars, resolve_variables, resolve_all_template_references, } from './engine/index.js';
|
|
12
13
|
import { validate_provided_variables, } from './utils/validation.js';
|
|
14
|
+
import { get_system_variables } from './utils/system_variables.js';
|
|
13
15
|
/**
|
|
14
|
-
* Render a template with variables (without sending)
|
|
16
|
+
* Render a template with variables (without sending).
|
|
15
17
|
*
|
|
16
|
-
*
|
|
17
|
-
* (including system variables), processes @template
|
|
18
|
-
* the final content using Handlebars.
|
|
18
|
+
* Fetches a template from the database using hierarchical scope resolution,
|
|
19
|
+
* resolves all variables (including system variables), processes @template
|
|
20
|
+
* references, and renders the final content using Handlebars.
|
|
19
21
|
*
|
|
20
22
|
* @param template_name - Name of the template to render
|
|
21
23
|
* @param variables - User-provided variables to substitute
|
|
22
24
|
* @param hazo_connect - Database connection instance
|
|
23
|
-
* @param
|
|
25
|
+
* @param scope_id - Scope ID for hierarchical lookup (null = global only)
|
|
24
26
|
* @param config - Optional config override (loads from file if not provided)
|
|
25
27
|
* @param logger - Optional logger instance
|
|
26
28
|
* @returns Render result with HTML and text content
|
|
27
29
|
*/
|
|
28
|
-
export async function render_template(template_name, variables, hazo_connect,
|
|
30
|
+
export async function render_template(template_name, variables, hazo_connect, scope_id, config, logger) {
|
|
29
31
|
const log = logger || create_fallback_logger('template_manager');
|
|
30
32
|
const filename = 'template_manager.ts';
|
|
31
33
|
const function_name = 'render_template';
|
|
@@ -34,9 +36,8 @@ export async function render_template(template_name, variables, hazo_connect, or
|
|
|
34
36
|
filename,
|
|
35
37
|
function_name,
|
|
36
38
|
template_name,
|
|
37
|
-
|
|
39
|
+
scope_id,
|
|
38
40
|
});
|
|
39
|
-
// Validate inputs
|
|
40
41
|
if (!hazo_connect) {
|
|
41
42
|
return {
|
|
42
43
|
success: false,
|
|
@@ -44,10 +45,10 @@ export async function render_template(template_name, variables, hazo_connect, or
|
|
|
44
45
|
message: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
|
|
45
46
|
};
|
|
46
47
|
}
|
|
47
|
-
//
|
|
48
|
-
const
|
|
48
|
+
// Resolve scope chain for hierarchical lookup
|
|
49
|
+
const scope_chain = scope_id ? await get_scope_chain(scope_id) : [];
|
|
49
50
|
// Fetch template from database
|
|
50
|
-
const template_result = await get_template_by_name(hazo_connect,
|
|
51
|
+
const template_result = await get_template_by_name(hazo_connect, scope_chain, template_name);
|
|
51
52
|
if (!template_result.success || !template_result.data) {
|
|
52
53
|
log.warn('Template not found', {
|
|
53
54
|
filename,
|
|
@@ -65,7 +66,7 @@ export async function render_template(template_name, variables, hazo_connect, or
|
|
|
65
66
|
// Merge user variables with system variables
|
|
66
67
|
const all_variables = resolve_variables(variables);
|
|
67
68
|
// Resolve @template references in both HTML and text
|
|
68
|
-
const resolved_result = await resolve_all_template_references(template.template_html, template.template_text, all_variables, hazo_connect,
|
|
69
|
+
const resolved_result = await resolve_all_template_references(template.template_html, template.template_text, all_variables, hazo_connect, scope_chain);
|
|
69
70
|
if (!resolved_result.success) {
|
|
70
71
|
log.warn('Failed to resolve template references', {
|
|
71
72
|
filename,
|
|
@@ -114,22 +115,21 @@ export async function render_template(template_name, variables, hazo_connect, or
|
|
|
114
115
|
}
|
|
115
116
|
}
|
|
116
117
|
/**
|
|
117
|
-
* Send an email using a named template
|
|
118
|
+
* Send an email using a named template.
|
|
118
119
|
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
120
|
+
* 1. Resolves scope chain from options.scope_id
|
|
121
|
+
* 2. Fetches the template from the database
|
|
122
|
+
* 3. Resolves all variables (user + system)
|
|
123
|
+
* 4. Processes @template references
|
|
124
|
+
* 5. Renders with Handlebars
|
|
125
|
+
* 6. Sends via the emailer module
|
|
125
126
|
*
|
|
126
127
|
* @param options - Template email options
|
|
127
128
|
* @param hazo_connect - Database connection instance
|
|
128
|
-
* @param org_id - Organization ID
|
|
129
129
|
* @param config - Optional config override
|
|
130
130
|
* @returns Email send response
|
|
131
131
|
*/
|
|
132
|
-
export async function send_template_email(options, hazo_connect,
|
|
132
|
+
export async function send_template_email(options, hazo_connect, config) {
|
|
133
133
|
const log = options.logger
|
|
134
134
|
? get_logger(options.logger)
|
|
135
135
|
: create_fallback_logger('template_manager');
|
|
@@ -141,9 +141,8 @@ export async function send_template_email(options, hazo_connect, org_id, config)
|
|
|
141
141
|
function_name,
|
|
142
142
|
template_name: options.template_name,
|
|
143
143
|
to: options.to,
|
|
144
|
-
|
|
144
|
+
scope_id: options.scope_id,
|
|
145
145
|
});
|
|
146
|
-
// Validate inputs
|
|
147
146
|
if (!hazo_connect) {
|
|
148
147
|
return {
|
|
149
148
|
success: false,
|
|
@@ -151,8 +150,7 @@ export async function send_template_email(options, hazo_connect, org_id, config)
|
|
|
151
150
|
message: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
|
|
152
151
|
};
|
|
153
152
|
}
|
|
154
|
-
|
|
155
|
-
const render_result = await render_template(options.template_name, options.variables, hazo_connect, org_id, config, log);
|
|
153
|
+
const render_result = await render_template(options.template_name, options.variables, hazo_connect, options.scope_id, config, log);
|
|
156
154
|
if (!render_result.success) {
|
|
157
155
|
return {
|
|
158
156
|
success: false,
|
|
@@ -160,12 +158,10 @@ export async function send_template_email(options, hazo_connect, org_id, config)
|
|
|
160
158
|
message: render_result.message,
|
|
161
159
|
};
|
|
162
160
|
}
|
|
163
|
-
// Build subject - use provided subject or template name as fallback
|
|
164
161
|
const subject = options.subject ||
|
|
165
162
|
options.template_name
|
|
166
163
|
.replace(/_/g, ' ')
|
|
167
164
|
.replace(/\b\w/g, (l) => l.toUpperCase());
|
|
168
|
-
// Send the email using the emailer module
|
|
169
165
|
const email_response = await send_email({
|
|
170
166
|
to: options.to,
|
|
171
167
|
subject,
|
|
@@ -237,34 +233,30 @@ export async function send_template_email(options, hazo_connect, org_id, config)
|
|
|
237
233
|
}
|
|
238
234
|
}
|
|
239
235
|
/**
|
|
240
|
-
* Preview a template render without saving or sending
|
|
241
|
-
*
|
|
242
|
-
* Useful for the UI to show a preview of what the email will look like
|
|
236
|
+
* Preview a template render without saving or sending.
|
|
237
|
+
* Useful for the UI to show a preview of what the email will look like.
|
|
243
238
|
*
|
|
244
239
|
* @param html_content - Raw HTML template content
|
|
245
240
|
* @param text_content - Raw text template content
|
|
246
241
|
* @param variables - Variables to substitute
|
|
247
242
|
* @param hazo_connect - Database connection (for @template resolution)
|
|
248
|
-
* @param
|
|
243
|
+
* @param scope_id - Scope ID for hierarchical @template resolution
|
|
249
244
|
* @returns Render result
|
|
250
245
|
*/
|
|
251
|
-
export async function preview_template(html_content, text_content, variables, hazo_connect,
|
|
246
|
+
export async function preview_template(html_content, text_content, variables, hazo_connect, scope_id) {
|
|
252
247
|
try {
|
|
253
|
-
// Merge with system variables
|
|
254
248
|
const all_variables = resolve_variables(variables);
|
|
255
|
-
// If hazo_connect is provided, resolve @template references
|
|
256
249
|
let resolved_html = html_content;
|
|
257
250
|
let resolved_text = text_content;
|
|
258
|
-
if (hazo_connect
|
|
259
|
-
const
|
|
251
|
+
if (hazo_connect) {
|
|
252
|
+
const scope_chain = scope_id ? await get_scope_chain(scope_id) : [];
|
|
253
|
+
const resolved_result = await resolve_all_template_references(html_content, text_content, all_variables, hazo_connect, scope_chain);
|
|
260
254
|
if (resolved_result.success) {
|
|
261
255
|
resolved_html = resolved_result.rendered_html || html_content;
|
|
262
256
|
resolved_text = resolved_result.rendered_text || text_content;
|
|
263
257
|
}
|
|
264
258
|
}
|
|
265
|
-
|
|
266
|
-
const render_result = render_handlebars(resolved_html, resolved_text, all_variables);
|
|
267
|
-
return render_result;
|
|
259
|
+
return render_handlebars(resolved_html, resolved_text, all_variables);
|
|
268
260
|
}
|
|
269
261
|
catch (error) {
|
|
270
262
|
const error_message = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
@@ -276,20 +268,19 @@ export async function preview_template(html_content, text_content, variables, ha
|
|
|
276
268
|
}
|
|
277
269
|
}
|
|
278
270
|
/**
|
|
279
|
-
* Validate template variables before rendering
|
|
280
|
-
*
|
|
281
|
-
* Checks that all required variables are provided
|
|
271
|
+
* Validate template variables before rendering.
|
|
272
|
+
* Checks that all required variables are provided.
|
|
282
273
|
*
|
|
283
274
|
* @param template_name - Name of the template
|
|
284
275
|
* @param variables - Variables to validate
|
|
285
276
|
* @param hazo_connect - Database connection
|
|
286
|
-
* @param
|
|
277
|
+
* @param scope_id - Scope ID for hierarchical lookup
|
|
287
278
|
* @returns Validation result
|
|
288
279
|
*/
|
|
289
|
-
export async function validate_template_variables(template_name, variables, hazo_connect,
|
|
280
|
+
export async function validate_template_variables(template_name, variables, hazo_connect, scope_id) {
|
|
290
281
|
try {
|
|
291
|
-
|
|
292
|
-
const template_result = await get_template_by_name(hazo_connect,
|
|
282
|
+
const scope_chain = scope_id ? await get_scope_chain(scope_id) : [];
|
|
283
|
+
const template_result = await get_template_by_name(hazo_connect, scope_chain, template_name);
|
|
293
284
|
if (!template_result.success || !template_result.data) {
|
|
294
285
|
return {
|
|
295
286
|
valid: false,
|
|
@@ -298,14 +289,9 @@ export async function validate_template_variables(template_name, variables, hazo
|
|
|
298
289
|
};
|
|
299
290
|
}
|
|
300
291
|
const template = template_result.data;
|
|
301
|
-
const
|
|
302
|
-
// Get system variable names
|
|
303
|
-
const system_var_names = config.system_email_template_variables.map((v) => v.variable_name);
|
|
304
|
-
// Validate HTML content
|
|
292
|
+
const system_var_names = get_system_variables().map((v) => v.variable_name);
|
|
305
293
|
const html_validation = validate_provided_variables(template.template_html, variables, system_var_names);
|
|
306
|
-
// Validate text content
|
|
307
294
|
const text_validation = validate_provided_variables(template.template_text, variables, system_var_names);
|
|
308
|
-
// Combine missing variables
|
|
309
295
|
const all_missing = [
|
|
310
296
|
...new Set([...html_validation.missing, ...text_validation.missing]),
|
|
311
297
|
];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template_manager.js","sourceRoot":"","sources":["../../../src/lib/template_manager/template_manager.ts"],"names":[],"mappings":"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"}
|