hazo_notify 1.0.2 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/README.md +30 -10
  2. package/config/hazo_logs_config.ini +21 -0
  3. package/{hazo_notify_config.ini → config/hazo_notify_config.ini} +39 -0
  4. package/data/templates/email_signature.html +11 -0
  5. package/data/templates/email_signature.txt +4 -0
  6. package/data/templates/email_verification.html +64 -0
  7. package/data/templates/email_verification.txt +11 -0
  8. package/data/templates/forgot_password.html +64 -0
  9. package/data/templates/forgot_password.txt +11 -0
  10. package/data/templates/manifest.json +86 -0
  11. package/data/templates/welcome_email.html +54 -0
  12. package/data/templates/welcome_email.txt +8 -0
  13. package/dist/emailer/emailer.d.ts +3 -3
  14. package/dist/emailer/emailer.d.ts.map +1 -1
  15. package/dist/emailer/emailer.js +25 -15
  16. package/dist/emailer/emailer.js.map +1 -1
  17. package/dist/emailer/index.d.ts +1 -0
  18. package/dist/emailer/index.d.ts.map +1 -1
  19. package/dist/emailer/index.js +5 -1
  20. package/dist/emailer/index.js.map +1 -1
  21. package/dist/emailer/providers/pop3_provider.d.ts +3 -2
  22. package/dist/emailer/providers/pop3_provider.d.ts.map +1 -1
  23. package/dist/emailer/providers/pop3_provider.js +2 -1
  24. package/dist/emailer/providers/pop3_provider.js.map +1 -1
  25. package/dist/emailer/providers/smtp_provider.d.ts +3 -2
  26. package/dist/emailer/providers/smtp_provider.d.ts.map +1 -1
  27. package/dist/emailer/providers/smtp_provider.js +2 -1
  28. package/dist/emailer/providers/smtp_provider.js.map +1 -1
  29. package/dist/emailer/providers/zeptomail_provider.d.ts +3 -2
  30. package/dist/emailer/providers/zeptomail_provider.d.ts.map +1 -1
  31. package/dist/emailer/providers/zeptomail_provider.js +24 -11
  32. package/dist/emailer/providers/zeptomail_provider.js.map +1 -1
  33. package/dist/emailer/types.d.ts +13 -1
  34. package/dist/emailer/types.d.ts.map +1 -1
  35. package/dist/emailer/utils/logger.d.ts +22 -14
  36. package/dist/emailer/utils/logger.d.ts.map +1 -1
  37. package/dist/emailer/utils/logger.js +51 -13
  38. package/dist/emailer/utils/logger.js.map +1 -1
  39. package/dist/index.d.ts +2 -1
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +2 -1
  42. package/dist/index.js.map +1 -1
  43. package/dist/template_manager/config/config_loader.d.ts +48 -0
  44. package/dist/template_manager/config/config_loader.d.ts.map +1 -0
  45. package/dist/template_manager/config/config_loader.js +161 -0
  46. package/dist/template_manager/config/config_loader.js.map +1 -0
  47. package/dist/template_manager/config/constants.d.ts +101 -0
  48. package/dist/template_manager/config/constants.d.ts.map +1 -0
  49. package/dist/template_manager/config/constants.js +163 -0
  50. package/dist/template_manager/config/constants.js.map +1 -0
  51. package/dist/template_manager/config/index.d.ts +6 -0
  52. package/dist/template_manager/config/index.d.ts.map +1 -0
  53. package/dist/{lib/emailer/utils → template_manager/config}/index.js +4 -4
  54. package/dist/template_manager/config/index.js.map +1 -0
  55. package/dist/template_manager/db/category_repository.d.ts +57 -0
  56. package/dist/template_manager/db/category_repository.d.ts.map +1 -0
  57. package/dist/template_manager/db/category_repository.js +326 -0
  58. package/dist/template_manager/db/category_repository.js.map +1 -0
  59. package/dist/template_manager/db/index.d.ts +6 -0
  60. package/dist/template_manager/db/index.d.ts.map +1 -0
  61. package/dist/template_manager/db/index.js +23 -0
  62. package/dist/template_manager/db/index.js.map +1 -0
  63. package/dist/template_manager/db/template_repository.d.ts +76 -0
  64. package/dist/template_manager/db/template_repository.d.ts.map +1 -0
  65. package/dist/template_manager/db/template_repository.js +684 -0
  66. package/dist/template_manager/db/template_repository.js.map +1 -0
  67. package/dist/template_manager/engine/handlebars_engine.d.ts +52 -0
  68. package/dist/template_manager/engine/handlebars_engine.d.ts.map +1 -0
  69. package/dist/template_manager/engine/handlebars_engine.js +175 -0
  70. package/dist/template_manager/engine/handlebars_engine.js.map +1 -0
  71. package/dist/template_manager/engine/index.d.ts +6 -0
  72. package/dist/template_manager/engine/index.d.ts.map +1 -0
  73. package/dist/template_manager/engine/index.js +19 -0
  74. package/dist/template_manager/engine/index.js.map +1 -0
  75. package/dist/template_manager/engine/variable_resolver.d.ts +48 -0
  76. package/dist/template_manager/engine/variable_resolver.d.ts.map +1 -0
  77. package/dist/template_manager/engine/variable_resolver.js +223 -0
  78. package/dist/template_manager/engine/variable_resolver.js.map +1 -0
  79. package/dist/template_manager/index.d.ts +32 -0
  80. package/dist/template_manager/index.d.ts.map +1 -0
  81. package/dist/template_manager/index.js +88 -0
  82. package/dist/template_manager/index.js.map +1 -0
  83. package/dist/template_manager/template_manager.d.ts +69 -0
  84. package/dist/template_manager/template_manager.d.ts.map +1 -0
  85. package/dist/template_manager/template_manager.js +335 -0
  86. package/dist/template_manager/template_manager.js.map +1 -0
  87. package/dist/template_manager/types.d.ts +255 -0
  88. package/dist/template_manager/types.d.ts.map +1 -0
  89. package/dist/template_manager/types.js +12 -0
  90. package/dist/template_manager/types.js.map +1 -0
  91. package/dist/template_manager/utils/index.d.ts +6 -0
  92. package/dist/template_manager/utils/index.d.ts.map +1 -0
  93. package/dist/template_manager/utils/index.js +21 -0
  94. package/dist/template_manager/utils/index.js.map +1 -0
  95. package/dist/template_manager/utils/system_variables.d.ts +28 -0
  96. package/dist/template_manager/utils/system_variables.d.ts.map +1 -0
  97. package/dist/template_manager/utils/system_variables.js +209 -0
  98. package/dist/template_manager/utils/system_variables.js.map +1 -0
  99. package/dist/template_manager/utils/validation.d.ts +74 -0
  100. package/dist/template_manager/utils/validation.d.ts.map +1 -0
  101. package/dist/template_manager/utils/validation.js +163 -0
  102. package/dist/template_manager/utils/validation.js.map +1 -0
  103. package/package.json +70 -22
  104. package/dist/lib/emailer/emailer.d.ts +0 -19
  105. package/dist/lib/emailer/emailer.d.ts.map +0 -1
  106. package/dist/lib/emailer/emailer.js +0 -220
  107. package/dist/lib/emailer/emailer.js.map +0 -1
  108. package/dist/lib/emailer/index.d.ts +0 -11
  109. package/dist/lib/emailer/index.d.ts.map +0 -1
  110. package/dist/lib/emailer/index.js +0 -34
  111. package/dist/lib/emailer/index.js.map +0 -1
  112. package/dist/lib/emailer/providers/index.d.ts +0 -15
  113. package/dist/lib/emailer/providers/index.d.ts.map +0 -1
  114. package/dist/lib/emailer/providers/index.js +0 -36
  115. package/dist/lib/emailer/providers/index.js.map +0 -1
  116. package/dist/lib/emailer/providers/pop3_provider.d.ts +0 -15
  117. package/dist/lib/emailer/providers/pop3_provider.d.ts.map +0 -1
  118. package/dist/lib/emailer/providers/pop3_provider.js +0 -29
  119. package/dist/lib/emailer/providers/pop3_provider.js.map +0 -1
  120. package/dist/lib/emailer/providers/smtp_provider.d.ts +0 -15
  121. package/dist/lib/emailer/providers/smtp_provider.d.ts.map +0 -1
  122. package/dist/lib/emailer/providers/smtp_provider.js +0 -29
  123. package/dist/lib/emailer/providers/smtp_provider.js.map +0 -1
  124. package/dist/lib/emailer/providers/zeptomail_provider.d.ts +0 -15
  125. package/dist/lib/emailer/providers/zeptomail_provider.d.ts.map +0 -1
  126. package/dist/lib/emailer/providers/zeptomail_provider.js +0 -250
  127. package/dist/lib/emailer/providers/zeptomail_provider.js.map +0 -1
  128. package/dist/lib/emailer/types.d.ts +0 -94
  129. package/dist/lib/emailer/types.d.ts.map +0 -1
  130. package/dist/lib/emailer/types.js +0 -6
  131. package/dist/lib/emailer/types.js.map +0 -1
  132. package/dist/lib/emailer/utils/constants.d.ts +0 -14
  133. package/dist/lib/emailer/utils/constants.d.ts.map +0 -1
  134. package/dist/lib/emailer/utils/constants.js +0 -22
  135. package/dist/lib/emailer/utils/constants.js.map +0 -1
  136. package/dist/lib/emailer/utils/index.d.ts +0 -8
  137. package/dist/lib/emailer/utils/index.d.ts.map +0 -1
  138. package/dist/lib/emailer/utils/index.js.map +0 -1
  139. package/dist/lib/emailer/utils/logger.d.ts +0 -37
  140. package/dist/lib/emailer/utils/logger.d.ts.map +0 -1
  141. package/dist/lib/emailer/utils/logger.js +0 -60
  142. package/dist/lib/emailer/utils/logger.js.map +0 -1
  143. package/dist/lib/emailer/utils/validation.d.ts +0 -37
  144. package/dist/lib/emailer/utils/validation.d.ts.map +0 -1
  145. package/dist/lib/emailer/utils/validation.js +0 -81
  146. package/dist/lib/emailer/utils/validation.js.map +0 -1
  147. package/dist/lib/index.d.ts +0 -6
  148. package/dist/lib/index.d.ts.map +0 -1
  149. package/dist/lib/index.js +0 -22
  150. package/dist/lib/index.js.map +0 -1
  151. package/dist/lib/utils.d.ts +0 -3
  152. package/dist/lib/utils.d.ts.map +0 -1
  153. package/dist/lib/utils.js +0 -9
  154. package/dist/lib/utils.js.map +0 -1
@@ -0,0 +1,326 @@
1
+ "use strict";
2
+ /**
3
+ * Category repository for template manager
4
+ *
5
+ * CRUD operations for template categories using hazo_connect
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.list_categories = list_categories;
9
+ exports.get_category = get_category;
10
+ exports.create_category = create_category;
11
+ exports.update_category = update_category;
12
+ exports.delete_category = delete_category;
13
+ exports.find_category_by_name = find_category_by_name;
14
+ const constants_1 = require("../config/constants");
15
+ const validation_1 = require("../utils/validation");
16
+ /**
17
+ * List all template categories for an organization
18
+ *
19
+ * @param hazo_connect - Database connection instance
20
+ * @param org_id - Organization ID
21
+ * @returns Response with array of categories
22
+ */
23
+ async function list_categories(hazo_connect, org_id) {
24
+ try {
25
+ if (!hazo_connect) {
26
+ return {
27
+ success: false,
28
+ error: constants_1.ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
29
+ message: constants_1.ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
30
+ };
31
+ }
32
+ if (!(0, validation_1.validate_uuid)(org_id)) {
33
+ return {
34
+ success: false,
35
+ error: 'Invalid organization ID',
36
+ message: 'Invalid organization ID format',
37
+ };
38
+ }
39
+ const query = hazo_connect
40
+ .query()
41
+ .from(constants_1.TABLE_TEMPLATE_CATEGORY)
42
+ .select('*')
43
+ .where('org_id', 'eq', org_id)
44
+ .order('template_category_name', 'asc');
45
+ const categories = await hazo_connect.list(query);
46
+ return {
47
+ success: true,
48
+ data: categories,
49
+ message: `Found ${categories.length} categories`,
50
+ };
51
+ }
52
+ catch (error) {
53
+ const error_message = error instanceof Error ? error.message : 'Unknown error occurred';
54
+ return {
55
+ success: false,
56
+ error: error_message,
57
+ message: `Failed to list categories: ${error_message}`,
58
+ };
59
+ }
60
+ }
61
+ /**
62
+ * Get a single template category by ID
63
+ *
64
+ * @param hazo_connect - Database connection instance
65
+ * @param id - Category ID
66
+ * @returns Response with category data
67
+ */
68
+ async function get_category(hazo_connect, id) {
69
+ try {
70
+ if (!hazo_connect) {
71
+ return {
72
+ success: false,
73
+ error: constants_1.ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
74
+ message: constants_1.ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
75
+ };
76
+ }
77
+ if (!(0, validation_1.validate_uuid)(id)) {
78
+ return {
79
+ success: false,
80
+ error: 'Invalid category ID',
81
+ message: 'Invalid category ID format',
82
+ };
83
+ }
84
+ const category = await hazo_connect.findById(constants_1.TABLE_TEMPLATE_CATEGORY, id);
85
+ if (!category) {
86
+ return {
87
+ success: false,
88
+ error: constants_1.ERROR_MESSAGES.CATEGORY_NOT_FOUND,
89
+ message: constants_1.ERROR_MESSAGES.CATEGORY_NOT_FOUND,
90
+ };
91
+ }
92
+ return {
93
+ success: true,
94
+ data: category,
95
+ message: 'Category found',
96
+ };
97
+ }
98
+ catch (error) {
99
+ const error_message = error instanceof Error ? error.message : 'Unknown error occurred';
100
+ return {
101
+ success: false,
102
+ error: error_message,
103
+ message: `Failed to get category: ${error_message}`,
104
+ };
105
+ }
106
+ }
107
+ /**
108
+ * Create a new template category
109
+ *
110
+ * @param hazo_connect - Database connection instance
111
+ * @param data - Category input data
112
+ * @returns Response with created category
113
+ */
114
+ async function create_category(hazo_connect, data) {
115
+ try {
116
+ if (!hazo_connect) {
117
+ return {
118
+ success: false,
119
+ error: constants_1.ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
120
+ message: constants_1.ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
121
+ };
122
+ }
123
+ if (!(0, validation_1.validate_category_name)(data.template_category_name)) {
124
+ return {
125
+ success: false,
126
+ error: constants_1.ERROR_MESSAGES.INVALID_CATEGORY_NAME,
127
+ message: constants_1.ERROR_MESSAGES.INVALID_CATEGORY_NAME,
128
+ };
129
+ }
130
+ if (!(0, validation_1.validate_uuid)(data.org_id)) {
131
+ return {
132
+ success: false,
133
+ error: 'Invalid organization ID',
134
+ message: 'Invalid organization ID format',
135
+ };
136
+ }
137
+ if (!(0, validation_1.validate_uuid)(data.root_org_id)) {
138
+ return {
139
+ success: false,
140
+ error: 'Invalid root organization ID',
141
+ message: 'Invalid root organization ID format',
142
+ };
143
+ }
144
+ const category = await hazo_connect.insert(constants_1.TABLE_TEMPLATE_CATEGORY, {
145
+ org_id: data.org_id,
146
+ root_org_id: data.root_org_id,
147
+ template_category_name: data.template_category_name.trim(),
148
+ });
149
+ return {
150
+ success: true,
151
+ data: category,
152
+ message: 'Category created successfully',
153
+ };
154
+ }
155
+ catch (error) {
156
+ const error_message = error instanceof Error ? error.message : 'Unknown error occurred';
157
+ return {
158
+ success: false,
159
+ error: error_message,
160
+ message: `Failed to create category: ${error_message}`,
161
+ };
162
+ }
163
+ }
164
+ /**
165
+ * Update an existing template category
166
+ *
167
+ * @param hazo_connect - Database connection instance
168
+ * @param id - Category ID
169
+ * @param data - Update data
170
+ * @returns Response with updated category
171
+ */
172
+ async function update_category(hazo_connect, id, data) {
173
+ try {
174
+ if (!hazo_connect) {
175
+ return {
176
+ success: false,
177
+ error: constants_1.ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
178
+ message: constants_1.ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
179
+ };
180
+ }
181
+ if (!(0, validation_1.validate_uuid)(id)) {
182
+ return {
183
+ success: false,
184
+ error: 'Invalid category ID',
185
+ message: 'Invalid category ID format',
186
+ };
187
+ }
188
+ if (data.template_category_name !== undefined &&
189
+ !(0, validation_1.validate_category_name)(data.template_category_name)) {
190
+ return {
191
+ success: false,
192
+ error: constants_1.ERROR_MESSAGES.INVALID_CATEGORY_NAME,
193
+ message: constants_1.ERROR_MESSAGES.INVALID_CATEGORY_NAME,
194
+ };
195
+ }
196
+ // Check if category exists
197
+ const existing = await hazo_connect.findById(constants_1.TABLE_TEMPLATE_CATEGORY, id);
198
+ if (!existing) {
199
+ return {
200
+ success: false,
201
+ error: constants_1.ERROR_MESSAGES.CATEGORY_NOT_FOUND,
202
+ message: constants_1.ERROR_MESSAGES.CATEGORY_NOT_FOUND,
203
+ };
204
+ }
205
+ const update_data = {
206
+ changed_at: new Date().toISOString(),
207
+ };
208
+ if (data.template_category_name !== undefined) {
209
+ update_data.template_category_name = data.template_category_name.trim();
210
+ }
211
+ const category = await hazo_connect.updateById(constants_1.TABLE_TEMPLATE_CATEGORY, id, update_data);
212
+ return {
213
+ success: true,
214
+ data: category,
215
+ message: 'Category updated successfully',
216
+ };
217
+ }
218
+ catch (error) {
219
+ const error_message = error instanceof Error ? error.message : 'Unknown error occurred';
220
+ return {
221
+ success: false,
222
+ error: error_message,
223
+ message: `Failed to update category: ${error_message}`,
224
+ };
225
+ }
226
+ }
227
+ /**
228
+ * Delete a template category and all its templates
229
+ *
230
+ * @param hazo_connect - Database connection instance
231
+ * @param id - Category ID
232
+ * @returns Response with deletion result
233
+ */
234
+ async function delete_category(hazo_connect, id) {
235
+ try {
236
+ if (!hazo_connect) {
237
+ return {
238
+ success: false,
239
+ error: constants_1.ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
240
+ message: constants_1.ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
241
+ };
242
+ }
243
+ if (!(0, validation_1.validate_uuid)(id)) {
244
+ return {
245
+ success: false,
246
+ error: 'Invalid category ID',
247
+ message: 'Invalid category ID format',
248
+ };
249
+ }
250
+ // Check if category exists
251
+ const existing = await hazo_connect.findById(constants_1.TABLE_TEMPLATE_CATEGORY, id);
252
+ if (!existing) {
253
+ return {
254
+ success: false,
255
+ error: constants_1.ERROR_MESSAGES.CATEGORY_NOT_FOUND,
256
+ message: constants_1.ERROR_MESSAGES.CATEGORY_NOT_FOUND,
257
+ };
258
+ }
259
+ // First delete all templates in this category
260
+ // Note: This could be handled by DB cascade, but we do it explicitly
261
+ const templates_query = hazo_connect
262
+ .query()
263
+ .from(constants_1.TABLE_TEMPLATES)
264
+ .select('id')
265
+ .where('template_category_id', 'eq', id);
266
+ const templates = await hazo_connect.list(templates_query);
267
+ for (const template of templates) {
268
+ await hazo_connect.deleteById(constants_1.TABLE_TEMPLATES, template.id);
269
+ }
270
+ // Delete the category
271
+ await hazo_connect.deleteById(constants_1.TABLE_TEMPLATE_CATEGORY, id);
272
+ return {
273
+ success: true,
274
+ data: true,
275
+ message: `Category deleted along with ${templates.length} templates`,
276
+ };
277
+ }
278
+ catch (error) {
279
+ const error_message = error instanceof Error ? error.message : 'Unknown error occurred';
280
+ return {
281
+ success: false,
282
+ error: error_message,
283
+ message: `Failed to delete category: ${error_message}`,
284
+ };
285
+ }
286
+ }
287
+ /**
288
+ * Find a category by name within an organization
289
+ *
290
+ * @param hazo_connect - Database connection instance
291
+ * @param org_id - Organization ID
292
+ * @param name - Category name
293
+ * @returns Response with category if found
294
+ */
295
+ async function find_category_by_name(hazo_connect, org_id, name) {
296
+ try {
297
+ if (!hazo_connect) {
298
+ return {
299
+ success: false,
300
+ error: constants_1.ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
301
+ message: constants_1.ERROR_MESSAGES.DB_CONNECTION_REQUIRED,
302
+ };
303
+ }
304
+ const query = hazo_connect
305
+ .query()
306
+ .from(constants_1.TABLE_TEMPLATE_CATEGORY)
307
+ .select('*')
308
+ .where('org_id', 'eq', org_id)
309
+ .where('template_category_name', 'eq', name.trim());
310
+ const categories = await hazo_connect.list(query);
311
+ return {
312
+ success: true,
313
+ data: categories.length > 0 ? categories[0] : null,
314
+ message: categories.length > 0 ? 'Category found' : 'Category not found',
315
+ };
316
+ }
317
+ catch (error) {
318
+ const error_message = error instanceof Error ? error.message : 'Unknown error occurred';
319
+ return {
320
+ success: false,
321
+ error: error_message,
322
+ message: `Failed to find category: ${error_message}`,
323
+ };
324
+ }
325
+ }
326
+ //# sourceMappingURL=category_repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"category_repository.js","sourceRoot":"","sources":["../../../src/lib/template_manager/db/category_repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Database barrel export for template manager
3
+ */
4
+ export { list_categories, get_category, create_category, update_category, delete_category, find_category_by_name, } from './category_repository';
5
+ export { list_templates, list_templates_by_category, get_template, get_template_by_name, create_template, update_template, delete_template, seed_default_templates, } from './template_repository';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/template_manager/db/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,EACf,eAAe,EACf,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,EACf,sBAAsB,GACvB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /**
3
+ * Database barrel export for template manager
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.seed_default_templates = exports.delete_template = exports.update_template = exports.create_template = exports.get_template_by_name = exports.get_template = exports.list_templates_by_category = exports.list_templates = exports.find_category_by_name = exports.delete_category = exports.update_category = exports.create_category = exports.get_category = exports.list_categories = void 0;
7
+ var category_repository_1 = require("./category_repository");
8
+ Object.defineProperty(exports, "list_categories", { enumerable: true, get: function () { return category_repository_1.list_categories; } });
9
+ Object.defineProperty(exports, "get_category", { enumerable: true, get: function () { return category_repository_1.get_category; } });
10
+ Object.defineProperty(exports, "create_category", { enumerable: true, get: function () { return category_repository_1.create_category; } });
11
+ Object.defineProperty(exports, "update_category", { enumerable: true, get: function () { return category_repository_1.update_category; } });
12
+ Object.defineProperty(exports, "delete_category", { enumerable: true, get: function () { return category_repository_1.delete_category; } });
13
+ Object.defineProperty(exports, "find_category_by_name", { enumerable: true, get: function () { return category_repository_1.find_category_by_name; } });
14
+ var template_repository_1 = require("./template_repository");
15
+ Object.defineProperty(exports, "list_templates", { enumerable: true, get: function () { return template_repository_1.list_templates; } });
16
+ Object.defineProperty(exports, "list_templates_by_category", { enumerable: true, get: function () { return template_repository_1.list_templates_by_category; } });
17
+ Object.defineProperty(exports, "get_template", { enumerable: true, get: function () { return template_repository_1.get_template; } });
18
+ Object.defineProperty(exports, "get_template_by_name", { enumerable: true, get: function () { return template_repository_1.get_template_by_name; } });
19
+ Object.defineProperty(exports, "create_template", { enumerable: true, get: function () { return template_repository_1.create_template; } });
20
+ Object.defineProperty(exports, "update_template", { enumerable: true, get: function () { return template_repository_1.update_template; } });
21
+ Object.defineProperty(exports, "delete_template", { enumerable: true, get: function () { return template_repository_1.delete_template; } });
22
+ Object.defineProperty(exports, "seed_default_templates", { enumerable: true, get: function () { return template_repository_1.seed_default_templates; } });
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/template_manager/db/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,6DAO+B;AAN7B,sHAAA,eAAe,OAAA;AACf,mHAAA,YAAY,OAAA;AACZ,sHAAA,eAAe,OAAA;AACf,sHAAA,eAAe,OAAA;AACf,sHAAA,eAAe,OAAA;AACf,4HAAA,qBAAqB,OAAA;AAGvB,6DAS+B;AAR7B,qHAAA,cAAc,OAAA;AACd,iIAAA,0BAA0B,OAAA;AAC1B,mHAAA,YAAY,OAAA;AACZ,2HAAA,oBAAoB,OAAA;AACpB,sHAAA,eAAe,OAAA;AACf,sHAAA,eAAe,OAAA;AACf,sHAAA,eAAe,OAAA;AACf,6HAAA,sBAAsB,OAAA"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Template repository for template manager
3
+ *
4
+ * CRUD operations for email templates using hazo_connect
5
+ */
6
+ import type { HazoConnectInstance, EmailTemplate, EmailTemplateInput, EmailTemplateUpdate, TemplateOperationResponse } from '../types';
7
+ /**
8
+ * List all email templates for an organization
9
+ *
10
+ * @param hazo_connect - Database connection instance
11
+ * @param org_id - Organization ID
12
+ * @returns Response with array of templates
13
+ */
14
+ export declare function list_templates(hazo_connect: HazoConnectInstance, org_id: string): Promise<TemplateOperationResponse<EmailTemplate[]>>;
15
+ /**
16
+ * List templates by category
17
+ *
18
+ * @param hazo_connect - Database connection instance
19
+ * @param category_id - Category ID
20
+ * @returns Response with array of templates
21
+ */
22
+ export declare function list_templates_by_category(hazo_connect: HazoConnectInstance, category_id: string): Promise<TemplateOperationResponse<EmailTemplate[]>>;
23
+ /**
24
+ * Get a single email template by ID
25
+ *
26
+ * @param hazo_connect - Database connection instance
27
+ * @param id - Template ID
28
+ * @returns Response with template data
29
+ */
30
+ export declare function get_template(hazo_connect: HazoConnectInstance, id: string): Promise<TemplateOperationResponse<EmailTemplate>>;
31
+ /**
32
+ * Get a template by name within an organization
33
+ *
34
+ * @param hazo_connect - Database connection instance
35
+ * @param org_id - Organization ID
36
+ * @param template_name - Template name
37
+ * @returns Response with template if found
38
+ */
39
+ export declare function get_template_by_name(hazo_connect: HazoConnectInstance, org_id: string, template_name: string): Promise<TemplateOperationResponse<EmailTemplate>>;
40
+ /**
41
+ * Create a new email template
42
+ *
43
+ * @param hazo_connect - Database connection instance
44
+ * @param data - Template input data
45
+ * @returns Response with created template
46
+ */
47
+ export declare function create_template(hazo_connect: HazoConnectInstance, data: EmailTemplateInput): Promise<TemplateOperationResponse<EmailTemplate>>;
48
+ /**
49
+ * Update an existing email template
50
+ *
51
+ * @param hazo_connect - Database connection instance
52
+ * @param id - Template ID
53
+ * @param data - Update data
54
+ * @returns Response with updated template
55
+ */
56
+ export declare function update_template(hazo_connect: HazoConnectInstance, id: string, data: EmailTemplateUpdate): Promise<TemplateOperationResponse<EmailTemplate>>;
57
+ /**
58
+ * Delete an email template
59
+ *
60
+ * @param hazo_connect - Database connection instance
61
+ * @param id - Template ID
62
+ * @returns Response with deletion result
63
+ */
64
+ export declare function delete_template(hazo_connect: HazoConnectInstance, id: string): Promise<TemplateOperationResponse<boolean>>;
65
+ /**
66
+ * Seed default templates for an organization
67
+ *
68
+ * Creates a "System" category and populates it with default templates
69
+ *
70
+ * @param hazo_connect - Database connection instance
71
+ * @param org_id - Organization ID
72
+ * @param root_org_id - Root organization ID
73
+ * @returns Response with seeded templates
74
+ */
75
+ export declare function seed_default_templates(hazo_connect: HazoConnectInstance, org_id: string, root_org_id: string): Promise<TemplateOperationResponse<EmailTemplate[]>>;
76
+ //# sourceMappingURL=template_repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template_repository.d.ts","sourceRoot":"","sources":["../../../src/lib/template_manager/db/template_repository.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EAE1B,MAAM,UAAU,CAAC;AAelB;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,YAAY,EAAE,mBAAmB,EACjC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,yBAAyB,CAAC,aAAa,EAAE,CAAC,CAAC,CAyCrD;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,YAAY,EAAE,mBAAmB,EACjC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,yBAAyB,CAAC,aAAa,EAAE,CAAC,CAAC,CAyCrD;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,mBAAmB,EACjC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,CA6CnD;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,mBAAmB,EACjC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,CAiDnD;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,mBAAmB,EACjC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,CAiGnD;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,mBAAmB,EACjC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC,CAqHnD;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,mBAAmB,EACjC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAyD7C;AAyJD;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,mBAAmB,EACjC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,yBAAyB,CAAC,aAAa,EAAE,CAAC,CAAC,CAgGrD"}