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.
Files changed (236) hide show
  1. package/README.md +163 -41
  2. package/dist/components/template_manager/category_dialog.d.ts +11 -0
  3. package/dist/components/template_manager/category_dialog.d.ts.map +1 -0
  4. package/dist/components/template_manager/category_dialog.js +41 -0
  5. package/dist/components/template_manager/category_dialog.js.map +1 -0
  6. package/dist/components/template_manager/category_tree.d.ts +13 -0
  7. package/dist/components/template_manager/category_tree.d.ts.map +1 -0
  8. package/dist/components/template_manager/category_tree.js +45 -0
  9. package/dist/components/template_manager/category_tree.js.map +1 -0
  10. package/dist/components/template_manager/index.d.ts +10 -0
  11. package/dist/components/template_manager/index.d.ts.map +1 -0
  12. package/dist/components/template_manager/index.js +8 -0
  13. package/dist/components/template_manager/index.js.map +1 -0
  14. package/dist/components/template_manager/preview_dialog.d.ts +11 -0
  15. package/dist/components/template_manager/preview_dialog.d.ts.map +1 -0
  16. package/dist/components/template_manager/preview_dialog.js +15 -0
  17. package/dist/components/template_manager/preview_dialog.js.map +1 -0
  18. package/dist/components/template_manager/template_dialog.d.ts +12 -0
  19. package/dist/components/template_manager/template_dialog.d.ts.map +1 -0
  20. package/dist/components/template_manager/template_dialog.js +46 -0
  21. package/dist/components/template_manager/template_dialog.js.map +1 -0
  22. package/dist/components/template_manager/template_editor.d.ts +12 -0
  23. package/dist/components/template_manager/template_editor.d.ts.map +1 -0
  24. package/dist/components/template_manager/template_editor.js +57 -0
  25. package/dist/components/template_manager/template_editor.js.map +1 -0
  26. package/dist/components/template_manager/template_globals_admin.d.ts +8 -0
  27. package/dist/components/template_manager/template_globals_admin.d.ts.map +1 -0
  28. package/dist/components/template_manager/template_globals_admin.js +27 -0
  29. package/dist/components/template_manager/template_globals_admin.js.map +1 -0
  30. package/dist/components/template_manager/template_manager_admin.d.ts +44 -0
  31. package/dist/components/template_manager/template_manager_admin.d.ts.map +1 -0
  32. package/dist/components/template_manager/template_manager_admin.js +272 -0
  33. package/dist/components/template_manager/template_manager_admin.js.map +1 -0
  34. package/dist/lib/emailer/emailer.d.ts.map +1 -0
  35. package/dist/lib/emailer/emailer.js.map +1 -0
  36. package/dist/lib/emailer/index.d.ts.map +1 -0
  37. package/dist/lib/emailer/index.js.map +1 -0
  38. package/dist/lib/emailer/providers/index.d.ts.map +1 -0
  39. package/dist/lib/emailer/providers/index.js.map +1 -0
  40. package/dist/lib/emailer/providers/pop3_provider.d.ts.map +1 -0
  41. package/dist/lib/emailer/providers/pop3_provider.js.map +1 -0
  42. package/dist/lib/emailer/providers/smtp_provider.d.ts.map +1 -0
  43. package/dist/lib/emailer/providers/smtp_provider.js.map +1 -0
  44. package/dist/lib/emailer/providers/zeptomail_provider.d.ts.map +1 -0
  45. package/dist/{emailer → lib/emailer}/providers/zeptomail_provider.js +9 -6
  46. package/dist/lib/emailer/providers/zeptomail_provider.js.map +1 -0
  47. package/dist/lib/emailer/types.d.ts.map +1 -0
  48. package/dist/lib/emailer/types.js.map +1 -0
  49. package/dist/lib/emailer/utils/constants.d.ts.map +1 -0
  50. package/dist/lib/emailer/utils/constants.js.map +1 -0
  51. package/dist/lib/emailer/utils/index.d.ts.map +1 -0
  52. package/dist/lib/emailer/utils/index.js.map +1 -0
  53. package/dist/lib/emailer/utils/logger.d.ts.map +1 -0
  54. package/dist/lib/emailer/utils/logger.js.map +1 -0
  55. package/dist/lib/emailer/utils/validation.d.ts.map +1 -0
  56. package/dist/lib/emailer/utils/validation.js.map +1 -0
  57. package/dist/lib/index.d.ts.map +1 -0
  58. package/dist/lib/index.js.map +1 -0
  59. package/dist/lib/template_manager/cache/scope_chain_cache.d.ts +26 -0
  60. package/dist/lib/template_manager/cache/scope_chain_cache.d.ts.map +1 -0
  61. package/dist/lib/template_manager/cache/scope_chain_cache.js +60 -0
  62. package/dist/lib/template_manager/cache/scope_chain_cache.js.map +1 -0
  63. package/dist/{template_manager → lib/template_manager}/config/config_loader.d.ts +16 -15
  64. package/dist/lib/template_manager/config/config_loader.d.ts.map +1 -0
  65. package/dist/lib/template_manager/config/config_loader.js +98 -0
  66. package/dist/lib/template_manager/config/config_loader.js.map +1 -0
  67. package/dist/{template_manager → lib/template_manager}/config/constants.d.ts +4 -54
  68. package/dist/lib/template_manager/config/constants.d.ts.map +1 -0
  69. package/dist/{template_manager → lib/template_manager}/config/constants.js +4 -84
  70. package/dist/lib/template_manager/config/constants.js.map +1 -0
  71. package/dist/lib/template_manager/config/index.d.ts.map +1 -0
  72. package/dist/lib/template_manager/config/index.js.map +1 -0
  73. package/dist/{template_manager → lib/template_manager}/db/category_repository.d.ts +22 -14
  74. package/dist/lib/template_manager/db/category_repository.d.ts.map +1 -0
  75. package/dist/{template_manager → lib/template_manager}/db/category_repository.js +127 -83
  76. package/dist/lib/template_manager/db/category_repository.js.map +1 -0
  77. package/dist/lib/template_manager/db/index.d.ts +6 -0
  78. package/dist/lib/template_manager/db/index.d.ts.map +1 -0
  79. package/dist/lib/template_manager/db/index.js +6 -0
  80. package/dist/lib/template_manager/db/index.js.map +1 -0
  81. package/dist/{template_manager → lib/template_manager}/db/template_repository.d.ts +25 -28
  82. package/dist/lib/template_manager/db/template_repository.d.ts.map +1 -0
  83. package/dist/lib/template_manager/db/template_repository.js +507 -0
  84. package/dist/lib/template_manager/db/template_repository.js.map +1 -0
  85. package/dist/lib/template_manager/engine/handlebars_engine.d.ts.map +1 -0
  86. package/dist/lib/template_manager/engine/handlebars_engine.js.map +1 -0
  87. package/dist/lib/template_manager/engine/index.d.ts.map +1 -0
  88. package/dist/lib/template_manager/engine/index.js.map +1 -0
  89. package/dist/{template_manager → lib/template_manager}/engine/variable_resolver.d.ts +13 -14
  90. package/dist/lib/template_manager/engine/variable_resolver.d.ts.map +1 -0
  91. package/dist/{template_manager → lib/template_manager}/engine/variable_resolver.js +25 -33
  92. package/dist/lib/template_manager/engine/variable_resolver.js.map +1 -0
  93. package/dist/lib/template_manager/handlers/adapters/hazo_auth.d.ts +20 -0
  94. package/dist/lib/template_manager/handlers/adapters/hazo_auth.d.ts.map +1 -0
  95. package/dist/lib/template_manager/handlers/adapters/hazo_auth.js +46 -0
  96. package/dist/lib/template_manager/handlers/adapters/hazo_auth.js.map +1 -0
  97. package/dist/lib/template_manager/handlers/auth.d.ts +47 -0
  98. package/dist/lib/template_manager/handlers/auth.d.ts.map +1 -0
  99. package/dist/lib/template_manager/handlers/auth.js +67 -0
  100. package/dist/lib/template_manager/handlers/auth.js.map +1 -0
  101. package/dist/lib/template_manager/handlers/index.d.ts +67 -0
  102. package/dist/lib/template_manager/handlers/index.d.ts.map +1 -0
  103. package/dist/lib/template_manager/handlers/index.js +284 -0
  104. package/dist/lib/template_manager/handlers/index.js.map +1 -0
  105. package/dist/lib/template_manager/index.d.ts +56 -0
  106. package/dist/lib/template_manager/index.d.ts.map +1 -0
  107. package/dist/lib/template_manager/index.js +68 -0
  108. package/dist/lib/template_manager/index.js.map +1 -0
  109. package/dist/lib/template_manager/init.d.ts +54 -0
  110. package/dist/lib/template_manager/init.d.ts.map +1 -0
  111. package/dist/lib/template_manager/init.js +85 -0
  112. package/dist/lib/template_manager/init.js.map +1 -0
  113. package/dist/lib/template_manager/registry.d.ts +23 -0
  114. package/dist/lib/template_manager/registry.d.ts.map +1 -0
  115. package/dist/lib/template_manager/registry.js +33 -0
  116. package/dist/lib/template_manager/registry.js.map +1 -0
  117. package/dist/lib/template_manager/seed/sync.d.ts +8 -0
  118. package/dist/lib/template_manager/seed/sync.d.ts.map +1 -0
  119. package/dist/lib/template_manager/seed/sync.js +77 -0
  120. package/dist/lib/template_manager/seed/sync.js.map +1 -0
  121. package/dist/{template_manager → lib/template_manager}/template_manager.d.ts +25 -27
  122. package/dist/lib/template_manager/template_manager.d.ts.map +1 -0
  123. package/dist/{template_manager → lib/template_manager}/template_manager.js +41 -55
  124. package/dist/lib/template_manager/template_manager.js.map +1 -0
  125. package/dist/{template_manager → lib/template_manager}/types.d.ts +32 -125
  126. package/dist/lib/template_manager/types.d.ts.map +1 -0
  127. package/dist/lib/template_manager/types.js +12 -0
  128. package/dist/lib/template_manager/types.js.map +1 -0
  129. package/dist/lib/template_manager/utils/index.d.ts.map +1 -0
  130. package/dist/lib/template_manager/utils/index.js.map +1 -0
  131. package/dist/lib/template_manager/utils/system_variables.d.ts.map +1 -0
  132. package/dist/lib/template_manager/utils/system_variables.js.map +1 -0
  133. package/dist/lib/template_manager/utils/validation.d.ts.map +1 -0
  134. package/dist/lib/template_manager/utils/validation.js.map +1 -0
  135. package/dist/lib/utils.d.ts +3 -0
  136. package/dist/lib/utils.d.ts.map +1 -0
  137. package/dist/lib/utils.js +6 -0
  138. package/dist/lib/utils.js.map +1 -0
  139. package/migrations/002_scope_migration.sql +93 -0
  140. package/package.json +65 -37
  141. package/dist/emailer/emailer.d.ts.map +0 -1
  142. package/dist/emailer/emailer.js.map +0 -1
  143. package/dist/emailer/index.d.ts.map +0 -1
  144. package/dist/emailer/index.js.map +0 -1
  145. package/dist/emailer/providers/index.d.ts.map +0 -1
  146. package/dist/emailer/providers/index.js.map +0 -1
  147. package/dist/emailer/providers/pop3_provider.d.ts.map +0 -1
  148. package/dist/emailer/providers/pop3_provider.js.map +0 -1
  149. package/dist/emailer/providers/smtp_provider.d.ts.map +0 -1
  150. package/dist/emailer/providers/smtp_provider.js.map +0 -1
  151. package/dist/emailer/providers/zeptomail_provider.d.ts.map +0 -1
  152. package/dist/emailer/providers/zeptomail_provider.js.map +0 -1
  153. package/dist/emailer/types.d.ts.map +0 -1
  154. package/dist/emailer/types.js.map +0 -1
  155. package/dist/emailer/utils/constants.d.ts.map +0 -1
  156. package/dist/emailer/utils/constants.js.map +0 -1
  157. package/dist/emailer/utils/index.d.ts.map +0 -1
  158. package/dist/emailer/utils/index.js.map +0 -1
  159. package/dist/emailer/utils/logger.d.ts.map +0 -1
  160. package/dist/emailer/utils/logger.js.map +0 -1
  161. package/dist/emailer/utils/validation.d.ts.map +0 -1
  162. package/dist/emailer/utils/validation.js.map +0 -1
  163. package/dist/index.d.ts.map +0 -1
  164. package/dist/index.js.map +0 -1
  165. package/dist/template_manager/config/config_loader.d.ts.map +0 -1
  166. package/dist/template_manager/config/config_loader.js +0 -154
  167. package/dist/template_manager/config/config_loader.js.map +0 -1
  168. package/dist/template_manager/config/constants.d.ts.map +0 -1
  169. package/dist/template_manager/config/constants.js.map +0 -1
  170. package/dist/template_manager/config/index.d.ts.map +0 -1
  171. package/dist/template_manager/config/index.js.map +0 -1
  172. package/dist/template_manager/db/category_repository.d.ts.map +0 -1
  173. package/dist/template_manager/db/category_repository.js.map +0 -1
  174. package/dist/template_manager/db/index.d.ts +0 -6
  175. package/dist/template_manager/db/index.d.ts.map +0 -1
  176. package/dist/template_manager/db/index.js +0 -6
  177. package/dist/template_manager/db/index.js.map +0 -1
  178. package/dist/template_manager/db/template_repository.d.ts.map +0 -1
  179. package/dist/template_manager/db/template_repository.js +0 -674
  180. package/dist/template_manager/db/template_repository.js.map +0 -1
  181. package/dist/template_manager/engine/handlebars_engine.d.ts.map +0 -1
  182. package/dist/template_manager/engine/handlebars_engine.js.map +0 -1
  183. package/dist/template_manager/engine/index.d.ts.map +0 -1
  184. package/dist/template_manager/engine/index.js.map +0 -1
  185. package/dist/template_manager/engine/variable_resolver.d.ts.map +0 -1
  186. package/dist/template_manager/engine/variable_resolver.js.map +0 -1
  187. package/dist/template_manager/index.d.ts +0 -32
  188. package/dist/template_manager/index.d.ts.map +0 -1
  189. package/dist/template_manager/index.js +0 -41
  190. package/dist/template_manager/index.js.map +0 -1
  191. package/dist/template_manager/template_manager.d.ts.map +0 -1
  192. package/dist/template_manager/template_manager.js.map +0 -1
  193. package/dist/template_manager/types.d.ts.map +0 -1
  194. package/dist/template_manager/types.js +0 -11
  195. package/dist/template_manager/types.js.map +0 -1
  196. package/dist/template_manager/utils/index.d.ts.map +0 -1
  197. package/dist/template_manager/utils/index.js.map +0 -1
  198. package/dist/template_manager/utils/system_variables.d.ts.map +0 -1
  199. package/dist/template_manager/utils/system_variables.js.map +0 -1
  200. package/dist/template_manager/utils/validation.d.ts.map +0 -1
  201. package/dist/template_manager/utils/validation.js.map +0 -1
  202. /package/dist/{emailer → lib/emailer}/emailer.d.ts +0 -0
  203. /package/dist/{emailer → lib/emailer}/emailer.js +0 -0
  204. /package/dist/{emailer → lib/emailer}/index.d.ts +0 -0
  205. /package/dist/{emailer → lib/emailer}/index.js +0 -0
  206. /package/dist/{emailer → lib/emailer}/providers/index.d.ts +0 -0
  207. /package/dist/{emailer → lib/emailer}/providers/index.js +0 -0
  208. /package/dist/{emailer → lib/emailer}/providers/pop3_provider.d.ts +0 -0
  209. /package/dist/{emailer → lib/emailer}/providers/pop3_provider.js +0 -0
  210. /package/dist/{emailer → lib/emailer}/providers/smtp_provider.d.ts +0 -0
  211. /package/dist/{emailer → lib/emailer}/providers/smtp_provider.js +0 -0
  212. /package/dist/{emailer → lib/emailer}/providers/zeptomail_provider.d.ts +0 -0
  213. /package/dist/{emailer → lib/emailer}/types.d.ts +0 -0
  214. /package/dist/{emailer → lib/emailer}/types.js +0 -0
  215. /package/dist/{emailer → lib/emailer}/utils/constants.d.ts +0 -0
  216. /package/dist/{emailer → lib/emailer}/utils/constants.js +0 -0
  217. /package/dist/{emailer → lib/emailer}/utils/index.d.ts +0 -0
  218. /package/dist/{emailer → lib/emailer}/utils/index.js +0 -0
  219. /package/dist/{emailer → lib/emailer}/utils/logger.d.ts +0 -0
  220. /package/dist/{emailer → lib/emailer}/utils/logger.js +0 -0
  221. /package/dist/{emailer → lib/emailer}/utils/validation.d.ts +0 -0
  222. /package/dist/{emailer → lib/emailer}/utils/validation.js +0 -0
  223. /package/dist/{index.d.ts → lib/index.d.ts} +0 -0
  224. /package/dist/{index.js → lib/index.js} +0 -0
  225. /package/dist/{template_manager → lib/template_manager}/config/index.d.ts +0 -0
  226. /package/dist/{template_manager → lib/template_manager}/config/index.js +0 -0
  227. /package/dist/{template_manager → lib/template_manager}/engine/handlebars_engine.d.ts +0 -0
  228. /package/dist/{template_manager → lib/template_manager}/engine/handlebars_engine.js +0 -0
  229. /package/dist/{template_manager → lib/template_manager}/engine/index.d.ts +0 -0
  230. /package/dist/{template_manager → lib/template_manager}/engine/index.js +0 -0
  231. /package/dist/{template_manager → lib/template_manager}/utils/index.d.ts +0 -0
  232. /package/dist/{template_manager → lib/template_manager}/utils/index.js +0 -0
  233. /package/dist/{template_manager → lib/template_manager}/utils/system_variables.d.ts +0 -0
  234. /package/dist/{template_manager → lib/template_manager}/utils/system_variables.js +0 -0
  235. /package/dist/{template_manager → lib/template_manager}/utils/validation.d.ts +0 -0
  236. /package/dist/{template_manager → lib/template_manager}/utils/validation.js +0 -0
@@ -1,674 +0,0 @@
1
- /**
2
- * Template repository for template manager
3
- *
4
- * CRUD operations for email templates using hazo_connect
5
- */
6
- import { TABLE_TEMPLATES, TABLE_TEMPLATE_CATEGORY, ERROR_MESSAGES, DEFAULT_CATEGORY_NAMES, } from '../config/constants.js';
7
- import { validate_template_name, validate_uuid, validate_template_html_size, validate_template_text_size, } from '../utils/validation.js';
8
- import { find_category_by_name, create_category } from './category_repository.js';
9
- /**
10
- * List all email templates for an organization
11
- *
12
- * @param hazo_connect - Database connection instance
13
- * @param org_id - Organization ID
14
- * @returns Response with array of templates
15
- */
16
- export async function list_templates(hazo_connect, org_id) {
17
- try {
18
- if (!hazo_connect) {
19
- return {
20
- success: false,
21
- error: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
22
- message: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
23
- };
24
- }
25
- if (!validate_uuid(org_id)) {
26
- return {
27
- success: false,
28
- error: 'Invalid organization ID',
29
- message: 'Invalid organization ID format',
30
- };
31
- }
32
- const query = hazo_connect
33
- .query()
34
- .from(TABLE_TEMPLATES)
35
- .select('*')
36
- .where('org_id', 'eq', org_id)
37
- .order('template_name', 'asc');
38
- const templates = await hazo_connect.list(query);
39
- return {
40
- success: true,
41
- data: templates,
42
- message: `Found ${templates.length} templates`,
43
- };
44
- }
45
- catch (error) {
46
- const error_message = error instanceof Error ? error.message : 'Unknown error occurred';
47
- return {
48
- success: false,
49
- error: error_message,
50
- message: `Failed to list templates: ${error_message}`,
51
- };
52
- }
53
- }
54
- /**
55
- * List templates by category
56
- *
57
- * @param hazo_connect - Database connection instance
58
- * @param category_id - Category ID
59
- * @returns Response with array of templates
60
- */
61
- export async function list_templates_by_category(hazo_connect, category_id) {
62
- try {
63
- if (!hazo_connect) {
64
- return {
65
- success: false,
66
- error: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
67
- message: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
68
- };
69
- }
70
- if (!validate_uuid(category_id)) {
71
- return {
72
- success: false,
73
- error: 'Invalid category ID',
74
- message: 'Invalid category ID format',
75
- };
76
- }
77
- const query = hazo_connect
78
- .query()
79
- .from(TABLE_TEMPLATES)
80
- .select('*')
81
- .where('template_category_id', 'eq', category_id)
82
- .order('template_name', 'asc');
83
- const templates = await hazo_connect.list(query);
84
- return {
85
- success: true,
86
- data: templates,
87
- message: `Found ${templates.length} templates in category`,
88
- };
89
- }
90
- catch (error) {
91
- const error_message = error instanceof Error ? error.message : 'Unknown error occurred';
92
- return {
93
- success: false,
94
- error: error_message,
95
- message: `Failed to list templates: ${error_message}`,
96
- };
97
- }
98
- }
99
- /**
100
- * Get a single email template by ID
101
- *
102
- * @param hazo_connect - Database connection instance
103
- * @param id - Template ID
104
- * @returns Response with template data
105
- */
106
- export async function get_template(hazo_connect, id) {
107
- try {
108
- if (!hazo_connect) {
109
- return {
110
- success: false,
111
- error: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
112
- message: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
113
- };
114
- }
115
- if (!validate_uuid(id)) {
116
- return {
117
- success: false,
118
- error: 'Invalid template ID',
119
- message: 'Invalid template ID format',
120
- };
121
- }
122
- const template = await hazo_connect.findById(TABLE_TEMPLATES, id);
123
- if (!template) {
124
- return {
125
- success: false,
126
- error: ERROR_MESSAGES.TEMPLATE_NOT_FOUND,
127
- message: ERROR_MESSAGES.TEMPLATE_NOT_FOUND,
128
- };
129
- }
130
- return {
131
- success: true,
132
- data: template,
133
- message: 'Template found',
134
- };
135
- }
136
- catch (error) {
137
- const error_message = error instanceof Error ? error.message : 'Unknown error occurred';
138
- return {
139
- success: false,
140
- error: error_message,
141
- message: `Failed to get template: ${error_message}`,
142
- };
143
- }
144
- }
145
- /**
146
- * Get a template by name within an organization
147
- *
148
- * @param hazo_connect - Database connection instance
149
- * @param org_id - Organization ID
150
- * @param template_name - Template name
151
- * @returns Response with template if found
152
- */
153
- export async function get_template_by_name(hazo_connect, org_id, template_name) {
154
- try {
155
- if (!hazo_connect) {
156
- return {
157
- success: false,
158
- error: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
159
- message: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
160
- };
161
- }
162
- if (!validate_uuid(org_id)) {
163
- return {
164
- success: false,
165
- error: 'Invalid organization ID',
166
- message: 'Invalid organization ID format',
167
- };
168
- }
169
- const query = hazo_connect
170
- .query()
171
- .from(TABLE_TEMPLATES)
172
- .select('*')
173
- .where('org_id', 'eq', org_id)
174
- .where('template_name', 'eq', template_name);
175
- const templates = await hazo_connect.list(query);
176
- if (templates.length === 0) {
177
- return {
178
- success: false,
179
- error: ERROR_MESSAGES.TEMPLATE_NOT_FOUND,
180
- message: `Template '${template_name}' not found`,
181
- };
182
- }
183
- return {
184
- success: true,
185
- data: templates[0],
186
- message: 'Template found',
187
- };
188
- }
189
- catch (error) {
190
- const error_message = error instanceof Error ? error.message : 'Unknown error occurred';
191
- return {
192
- success: false,
193
- error: error_message,
194
- message: `Failed to get template: ${error_message}`,
195
- };
196
- }
197
- }
198
- /**
199
- * Create a new email template
200
- *
201
- * @param hazo_connect - Database connection instance
202
- * @param data - Template input data
203
- * @returns Response with created template
204
- */
205
- export async function create_template(hazo_connect, data) {
206
- try {
207
- if (!hazo_connect) {
208
- return {
209
- success: false,
210
- error: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
211
- message: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
212
- };
213
- }
214
- if (!validate_template_name(data.template_name)) {
215
- return {
216
- success: false,
217
- error: ERROR_MESSAGES.INVALID_TEMPLATE_NAME,
218
- message: ERROR_MESSAGES.INVALID_TEMPLATE_NAME,
219
- };
220
- }
221
- if (!validate_uuid(data.org_id)) {
222
- return {
223
- success: false,
224
- error: 'Invalid organization ID',
225
- message: 'Invalid organization ID format',
226
- };
227
- }
228
- if (!validate_uuid(data.root_org_id)) {
229
- return {
230
- success: false,
231
- error: 'Invalid root organization ID',
232
- message: 'Invalid root organization ID format',
233
- };
234
- }
235
- if (!validate_uuid(data.template_category_id)) {
236
- return {
237
- success: false,
238
- error: 'Invalid category ID',
239
- message: 'Invalid category ID format',
240
- };
241
- }
242
- if (!validate_template_html_size(data.template_html)) {
243
- return {
244
- success: false,
245
- error: ERROR_MESSAGES.TEMPLATE_HTML_TOO_LARGE,
246
- message: ERROR_MESSAGES.TEMPLATE_HTML_TOO_LARGE,
247
- };
248
- }
249
- if (!validate_template_text_size(data.template_text)) {
250
- return {
251
- success: false,
252
- error: ERROR_MESSAGES.TEMPLATE_TEXT_TOO_LARGE,
253
- message: ERROR_MESSAGES.TEMPLATE_TEXT_TOO_LARGE,
254
- };
255
- }
256
- // Check if category exists
257
- const category = await hazo_connect.findById(TABLE_TEMPLATE_CATEGORY, data.template_category_id);
258
- if (!category) {
259
- return {
260
- success: false,
261
- error: ERROR_MESSAGES.CATEGORY_NOT_FOUND,
262
- message: 'Template category does not exist',
263
- };
264
- }
265
- const template = await hazo_connect.insert(TABLE_TEMPLATES, {
266
- org_id: data.org_id,
267
- root_org_id: data.root_org_id,
268
- template_category_id: data.template_category_id,
269
- template_variables: data.template_variables || {},
270
- template_name: data.template_name.trim(),
271
- template_html: data.template_html,
272
- template_text: data.template_text,
273
- email_type: data.email_type || 'user',
274
- });
275
- return {
276
- success: true,
277
- data: template,
278
- message: 'Template created successfully',
279
- };
280
- }
281
- catch (error) {
282
- const error_message = error instanceof Error ? error.message : 'Unknown error occurred';
283
- return {
284
- success: false,
285
- error: error_message,
286
- message: `Failed to create template: ${error_message}`,
287
- };
288
- }
289
- }
290
- /**
291
- * Update an existing email template
292
- *
293
- * @param hazo_connect - Database connection instance
294
- * @param id - Template ID
295
- * @param data - Update data
296
- * @returns Response with updated template
297
- */
298
- export async function update_template(hazo_connect, id, data) {
299
- try {
300
- if (!hazo_connect) {
301
- return {
302
- success: false,
303
- error: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
304
- message: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
305
- };
306
- }
307
- if (!validate_uuid(id)) {
308
- return {
309
- success: false,
310
- error: 'Invalid template ID',
311
- message: 'Invalid template ID format',
312
- };
313
- }
314
- // Check if template exists
315
- const existing = await hazo_connect.findById(TABLE_TEMPLATES, id);
316
- if (!existing) {
317
- return {
318
- success: false,
319
- error: ERROR_MESSAGES.TEMPLATE_NOT_FOUND,
320
- message: ERROR_MESSAGES.TEMPLATE_NOT_FOUND,
321
- };
322
- }
323
- // Validate update data
324
- if (data.template_name !== undefined &&
325
- !validate_template_name(data.template_name)) {
326
- return {
327
- success: false,
328
- error: ERROR_MESSAGES.INVALID_TEMPLATE_NAME,
329
- message: ERROR_MESSAGES.INVALID_TEMPLATE_NAME,
330
- };
331
- }
332
- if (data.template_category_id !== undefined &&
333
- !validate_uuid(data.template_category_id)) {
334
- return {
335
- success: false,
336
- error: 'Invalid category ID',
337
- message: 'Invalid category ID format',
338
- };
339
- }
340
- if (data.template_html !== undefined &&
341
- !validate_template_html_size(data.template_html)) {
342
- return {
343
- success: false,
344
- error: ERROR_MESSAGES.TEMPLATE_HTML_TOO_LARGE,
345
- message: ERROR_MESSAGES.TEMPLATE_HTML_TOO_LARGE,
346
- };
347
- }
348
- if (data.template_text !== undefined &&
349
- !validate_template_text_size(data.template_text)) {
350
- return {
351
- success: false,
352
- error: ERROR_MESSAGES.TEMPLATE_TEXT_TOO_LARGE,
353
- message: ERROR_MESSAGES.TEMPLATE_TEXT_TOO_LARGE,
354
- };
355
- }
356
- const update_data = {
357
- changed_at: new Date().toISOString(),
358
- };
359
- if (data.template_name !== undefined) {
360
- update_data.template_name = data.template_name.trim();
361
- }
362
- if (data.template_category_id !== undefined) {
363
- update_data.template_category_id = data.template_category_id;
364
- }
365
- if (data.template_variables !== undefined) {
366
- update_data.template_variables = data.template_variables;
367
- }
368
- if (data.template_html !== undefined) {
369
- update_data.template_html = data.template_html;
370
- }
371
- if (data.template_text !== undefined) {
372
- update_data.template_text = data.template_text;
373
- }
374
- const template = await hazo_connect.updateById(TABLE_TEMPLATES, id, update_data);
375
- return {
376
- success: true,
377
- data: template,
378
- message: 'Template updated successfully',
379
- };
380
- }
381
- catch (error) {
382
- const error_message = error instanceof Error ? error.message : 'Unknown error occurred';
383
- return {
384
- success: false,
385
- error: error_message,
386
- message: `Failed to update template: ${error_message}`,
387
- };
388
- }
389
- }
390
- /**
391
- * Delete an email template
392
- *
393
- * @param hazo_connect - Database connection instance
394
- * @param id - Template ID
395
- * @returns Response with deletion result
396
- */
397
- export async function delete_template(hazo_connect, id) {
398
- try {
399
- if (!hazo_connect) {
400
- return {
401
- success: false,
402
- error: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
403
- message: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
404
- };
405
- }
406
- if (!validate_uuid(id)) {
407
- return {
408
- success: false,
409
- error: 'Invalid template ID',
410
- message: 'Invalid template ID format',
411
- };
412
- }
413
- // Check if template exists
414
- const existing = await hazo_connect.findById(TABLE_TEMPLATES, id);
415
- if (!existing) {
416
- return {
417
- success: false,
418
- error: ERROR_MESSAGES.TEMPLATE_NOT_FOUND,
419
- message: ERROR_MESSAGES.TEMPLATE_NOT_FOUND,
420
- };
421
- }
422
- // Cannot delete system templates
423
- if (existing.email_type === 'system') {
424
- return {
425
- success: false,
426
- error: ERROR_MESSAGES.CANNOT_DELETE_SYSTEM_TEMPLATE,
427
- message: ERROR_MESSAGES.CANNOT_DELETE_SYSTEM_TEMPLATE,
428
- };
429
- }
430
- await hazo_connect.deleteById(TABLE_TEMPLATES, id);
431
- return {
432
- success: true,
433
- data: true,
434
- message: 'Template deleted successfully',
435
- };
436
- }
437
- catch (error) {
438
- const error_message = error instanceof Error ? error.message : 'Unknown error occurred';
439
- return {
440
- success: false,
441
- error: error_message,
442
- message: `Failed to delete template: ${error_message}`,
443
- };
444
- }
445
- }
446
- const DEFAULT_TEMPLATES = [
447
- {
448
- template_name: 'welcome_email',
449
- template_html: `<!DOCTYPE html>
450
- <html>
451
- <head>
452
- <meta charset="utf-8">
453
- <title>Welcome</title>
454
- </head>
455
- <body style="font-family: Arial, sans-serif; line-height: 1.6; color: #333;">
456
- <div style="max-width: 600px; margin: 0 auto; padding: 20px;">
457
- <h1 style="color: #2563eb;">Welcome, {{user_name}}!</h1>
458
- <p>Thank you for joining us. We're excited to have you on board.</p>
459
- <p>To get started, please visit your account:</p>
460
- <p style="margin: 20px 0;">
461
- <a href="{{login_url}}" style="background-color: #2563eb; color: white; padding: 12px 24px; text-decoration: none; border-radius: 4px;">
462
- Login to Your Account
463
- </a>
464
- </p>
465
- <p>If you have any questions, feel free to reach out to our support team.</p>
466
- <p>Best regards,<br>The Team</p>
467
- </div>
468
- </body>
469
- </html>`,
470
- template_text: `Welcome, {{user_name}}!
471
-
472
- Thank you for joining us. We're excited to have you on board.
473
-
474
- To get started, please visit your account:
475
- {{login_url}}
476
-
477
- If you have any questions, feel free to reach out to our support team.
478
-
479
- Best regards,
480
- The Team`,
481
- variables: {
482
- user_name: 'Recipient name',
483
- login_url: 'Login URL',
484
- },
485
- },
486
- {
487
- template_name: 'email_verification',
488
- template_html: `<!DOCTYPE html>
489
- <html>
490
- <head>
491
- <meta charset="utf-8">
492
- <title>Verify Your Email</title>
493
- </head>
494
- <body style="font-family: Arial, sans-serif; line-height: 1.6; color: #333;">
495
- <div style="max-width: 600px; margin: 0 auto; padding: 20px;">
496
- <h1 style="color: #2563eb;">Verify Your Email Address</h1>
497
- <p>Hi {{user_name}},</p>
498
- <p>Please click the button below to verify your email address:</p>
499
- <p style="margin: 20px 0;">
500
- <a href="{{verification_link}}" style="background-color: #16a34a; color: white; padding: 12px 24px; text-decoration: none; border-radius: 4px;">
501
- Verify Email
502
- </a>
503
- </p>
504
- <p style="color: #666; font-size: 14px;">
505
- This link will expire in {{expiry_hours}} hours.
506
- </p>
507
- <p>If you didn't create an account, you can safely ignore this email.</p>
508
- </div>
509
- </body>
510
- </html>`,
511
- template_text: `Verify Your Email Address
512
-
513
- Hi {{user_name}},
514
-
515
- Please click the link below to verify your email address:
516
- {{verification_link}}
517
-
518
- This link will expire in {{expiry_hours}} hours.
519
-
520
- If you didn't create an account, you can safely ignore this email.`,
521
- variables: {
522
- user_name: 'Recipient name',
523
- verification_link: 'Verification URL',
524
- expiry_hours: 'Hours until expiry',
525
- },
526
- },
527
- {
528
- template_name: 'forgot_password',
529
- template_html: `<!DOCTYPE html>
530
- <html>
531
- <head>
532
- <meta charset="utf-8">
533
- <title>Reset Your Password</title>
534
- </head>
535
- <body style="font-family: Arial, sans-serif; line-height: 1.6; color: #333;">
536
- <div style="max-width: 600px; margin: 0 auto; padding: 20px;">
537
- <h1 style="color: #dc2626;">Reset Your Password</h1>
538
- <p>Hi {{user_name}},</p>
539
- <p>We received a request to reset your password. Click the button below to create a new password:</p>
540
- <p style="margin: 20px 0;">
541
- <a href="{{reset_link}}" style="background-color: #dc2626; color: white; padding: 12px 24px; text-decoration: none; border-radius: 4px;">
542
- Reset Password
543
- </a>
544
- </p>
545
- <p style="color: #666; font-size: 14px;">
546
- This link will expire in {{expiry_minutes}} minutes.
547
- </p>
548
- <p>If you didn't request a password reset, please ignore this email or contact support if you have concerns.</p>
549
- </div>
550
- </body>
551
- </html>`,
552
- template_text: `Reset Your Password
553
-
554
- Hi {{user_name}},
555
-
556
- We received a request to reset your password. Click the link below to create a new password:
557
- {{reset_link}}
558
-
559
- This link will expire in {{expiry_minutes}} minutes.
560
-
561
- If you didn't request a password reset, please ignore this email or contact support if you have concerns.`,
562
- variables: {
563
- user_name: 'Recipient name',
564
- reset_link: 'Password reset URL',
565
- expiry_minutes: 'Minutes until expiry',
566
- },
567
- },
568
- {
569
- template_name: 'email_signature',
570
- template_html: `<div style="font-family: Arial, sans-serif; margin-top: 20px; padding-top: 20px; border-top: 1px solid #e5e7eb;">
571
- <p style="margin: 0; font-weight: bold; color: #333;">{{sender_name}}</p>
572
- <p style="margin: 4px 0; color: #666;">{{sender_title}}</p>
573
- <p style="margin: 4px 0; color: #2563eb;">{{company_name}}</p>
574
- </div>`,
575
- template_text: `--
576
- {{sender_name}}
577
- {{sender_title}}
578
- {{company_name}}`,
579
- variables: {
580
- sender_name: 'Sender name',
581
- sender_title: 'Job title',
582
- company_name: 'Company name',
583
- },
584
- },
585
- ];
586
- /**
587
- * Seed default templates for an organization
588
- *
589
- * Creates a "System" category and populates it with default templates
590
- *
591
- * @param hazo_connect - Database connection instance
592
- * @param org_id - Organization ID
593
- * @param root_org_id - Root organization ID
594
- * @returns Response with seeded templates
595
- */
596
- export async function seed_default_templates(hazo_connect, org_id, root_org_id) {
597
- try {
598
- if (!hazo_connect) {
599
- return {
600
- success: false,
601
- error: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
602
- message: ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
603
- };
604
- }
605
- if (!validate_uuid(org_id) || !validate_uuid(root_org_id)) {
606
- return {
607
- success: false,
608
- error: 'Invalid organization ID',
609
- message: 'Invalid organization ID format',
610
- };
611
- }
612
- // Find or create "System" category
613
- const category_result = await find_category_by_name(hazo_connect, org_id, DEFAULT_CATEGORY_NAMES.SYSTEM);
614
- let category_id;
615
- if (category_result.success && category_result.data) {
616
- category_id = category_result.data.id;
617
- }
618
- else {
619
- // Create the System category
620
- const create_result = await create_category(hazo_connect, {
621
- org_id,
622
- root_org_id,
623
- template_category_name: DEFAULT_CATEGORY_NAMES.SYSTEM,
624
- });
625
- if (!create_result.success || !create_result.data) {
626
- return {
627
- success: false,
628
- error: 'Failed to create system category',
629
- message: create_result.message || 'Failed to create system category',
630
- };
631
- }
632
- category_id = create_result.data.id;
633
- }
634
- // Seed default templates
635
- const seeded_templates = [];
636
- for (const default_template of DEFAULT_TEMPLATES) {
637
- // Check if template already exists
638
- const existing_result = await get_template_by_name(hazo_connect, org_id, default_template.template_name);
639
- if (existing_result.success && existing_result.data) {
640
- // Template already exists, skip
641
- seeded_templates.push(existing_result.data);
642
- continue;
643
- }
644
- // Create the template
645
- const create_result = await create_template(hazo_connect, {
646
- org_id,
647
- root_org_id,
648
- template_category_id: category_id,
649
- template_name: default_template.template_name,
650
- template_html: default_template.template_html,
651
- template_text: default_template.template_text,
652
- template_variables: default_template.variables,
653
- email_type: 'system',
654
- });
655
- if (create_result.success && create_result.data) {
656
- seeded_templates.push(create_result.data);
657
- }
658
- }
659
- return {
660
- success: true,
661
- data: seeded_templates,
662
- message: `Seeded ${seeded_templates.length} default templates`,
663
- };
664
- }
665
- catch (error) {
666
- const error_message = error instanceof Error ? error.message : 'Unknown error occurred';
667
- return {
668
- success: false,
669
- error: error_message,
670
- message: `Failed to seed templates: ${error_message}`,
671
- };
672
- }
673
- }
674
- //# sourceMappingURL=template_repository.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"template_repository.js","sourceRoot":"","sources":["../../../src/lib/template_manager/db/template_repository.ts"],"names":[],"mappings":"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"}