s3db.js 19.1.0-next.09ea7a2f → 19.1.0-next.e2e31a9a
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/dist/plugins/smtp/template-engine.js +45 -181
- package/dist/plugins/smtp/template-engine.js.map +1 -1
- package/dist/plugins/smtp.plugin.js +2 -3
- package/dist/plugins/smtp.plugin.js.map +1 -1
- package/dist/s3db.cjs +47 -185
- package/dist/s3db.cjs.map +1 -1
- package/dist/s3db.es.js +48 -186
- package/dist/s3db.es.js.map +1 -1
- package/dist/types/plugins/smtp/template-engine.d.ts +5 -11
- package/dist/types/plugins/smtp/template-engine.d.ts.map +1 -1
- package/dist/types/plugins/smtp.plugin.d.ts.map +1 -1
- package/package.json +2 -3
- package/src/plugins/smtp/template-engine.ts +53 -212
- package/src/plugins/smtp.plugin.ts +3 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export interface SMTPTemplateEngineOptions {
|
|
2
|
-
type?: 'handlebars' | CustomTemplateFunction;
|
|
2
|
+
type?: 'recker' | 'handlebars' | CustomTemplateFunction;
|
|
3
3
|
templateDir?: string | null;
|
|
4
4
|
cacheTemplates?: boolean;
|
|
5
5
|
helpers?: Record<string, HelperFunction>;
|
|
@@ -21,31 +21,25 @@ export interface CacheStats {
|
|
|
21
21
|
}
|
|
22
22
|
export declare class SMTPTemplateEngine {
|
|
23
23
|
options: SMTPTemplateEngineOptions;
|
|
24
|
-
type: 'handlebars' | CustomTemplateFunction;
|
|
24
|
+
type: 'recker' | 'handlebars' | CustomTemplateFunction;
|
|
25
25
|
templateDir: string | null;
|
|
26
26
|
cacheTemplates: boolean;
|
|
27
27
|
helpers: Record<string, HelperFunction>;
|
|
28
28
|
partials: Record<string, string>;
|
|
29
29
|
private _templateCache;
|
|
30
|
-
private
|
|
31
|
-
private _asyncPlaceholderIndex;
|
|
30
|
+
private _reckerEngine;
|
|
32
31
|
constructor(options?: SMTPTemplateEngineOptions);
|
|
33
32
|
render(templateName: string | CustomTemplateFunction, data?: Record<string, unknown>, options?: RenderOptions): Promise<RenderedOutput>;
|
|
34
|
-
private
|
|
33
|
+
private _getReckerEngine;
|
|
34
|
+
private _renderRecker;
|
|
35
35
|
private _renderCustom;
|
|
36
36
|
private _loadTemplate;
|
|
37
37
|
private _parseRenderedOutput;
|
|
38
38
|
private _parseYaml;
|
|
39
|
-
private _wrapHelper;
|
|
40
|
-
private _resolveAsyncPlaceholders;
|
|
41
39
|
registerHelper(name: string, fn: HelperFunction): void;
|
|
42
40
|
registerPartial(name: string, template: string): void;
|
|
43
41
|
clearCache(): void;
|
|
44
42
|
getCacheStats(): CacheStats;
|
|
45
43
|
precompile(templateName: string): Promise<boolean>;
|
|
46
44
|
}
|
|
47
|
-
export interface HandlebarsOptions {
|
|
48
|
-
hash: Record<string, unknown>;
|
|
49
|
-
}
|
|
50
|
-
export declare const defaultHandlebarsHelpers: Record<string, HelperFunction>;
|
|
51
45
|
//# sourceMappingURL=template-engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-engine.d.ts","sourceRoot":"","sources":["../../../../src/plugins/smtp/template-engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"template-engine.d.ts","sourceRoot":"","sources":["../../../../src/plugins/smtp/template-engine.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,sBAAsB,CAAC;IACxD,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC;AACvD,MAAM,MAAM,sBAAsB,GAAG,CACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC7B,MAAM,GAAG,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC;AAEhE,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAQD,qBAAa,kBAAkB;IACtB,OAAO,EAAE,yBAAyB,CAAC;IACnC,IAAI,EAAE,QAAQ,GAAG,YAAY,GAAG,sBAAsB,CAAC;IACvD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,aAAa,CAA8B;gBAEvC,OAAO,GAAE,yBAA8B;IAc7C,MAAM,CACV,YAAY,EAAE,MAAM,GAAG,sBAAsB,EAC7C,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAClC,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,cAAc,CAAC;IAmB1B,OAAO,CAAC,gBAAgB;YAkBV,aAAa;YAuCb,aAAa;YAoCb,aAAa;IAsB3B,OAAO,CAAC,oBAAoB;IAmC5B,OAAO,CAAC,UAAU;IAkBlB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,GAAG,IAAI;IAOtD,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUrD,UAAU,IAAI,IAAI;IAIlB,aAAa,IAAI,UAAU;IAOrB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAUzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smtp.plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/smtp.plugin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"smtp.plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/smtp.plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAgB3C,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAC1C,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAC3F,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,aAAa,GAAG,cAAc,CAAC;AACxE,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,QAAQ,CAAC;AACzD,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AACvF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC1G,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AACzC,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;AAEvE,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACrC,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,EAAE,EAAE,MAAM,EAAE,CAAC;IACb,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACjD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,CAAC,OAAO,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,EAAE,CAAC;QACb,EAAE,EAAE,MAAM,EAAE,CAAC;QACb,GAAG,EAAE,MAAM,EAAE,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,eAAe,EAAE,CAAC;KAChC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1B,OAAO,EAAE,MAAM,OAAO,CAAC;CACxB;AAED,UAAU,yBAAyB;IACjC,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,SAAS,EAAE,CAAC,OAAO,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,EAAE,CAAC;QACb,EAAE,EAAE,MAAM,EAAE,CAAC;QACb,GAAG,EAAE,MAAM,EAAE,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,eAAe,EAAE,CAAC;KAChC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1B,SAAS,EAAE,MAAM,OAAO,CAAC;CAC1B;AAED,UAAU,6BAA6B;IACrC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,SAAS,EAAE,CAAC,OAAO,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,eAAe,EAAE,CAAC;KAChC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,0BAA0B;IAClC,MAAM,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7H,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAC;IACrD,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,OAAO,CAAC;CAC9B;AAED,UAAU,uBAAuB;IAC/B,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClG,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IACjF,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;IAC3C,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,MAAM,CAAC;CAC/B;AAED,qBAAa,UAAW,SAAQ,MAAM;IAEpC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC;IAC7B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,eAAe,CAAC;IAC3B,iBAAiB,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACxD,cAAc,EAAE,0BAA0B,CAAC;IAC3C,eAAe,EAAE,uBAAuB,CAAC;IACzC,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;IAC9C,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEnC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,eAAe,CAAS;gBAEpB,OAAO,GAAE,iBAAsB;IAsFrC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAqBnB,qBAAqB;YAgBrB,qBAAqB;YAcrB,qBAAqB;YAYrB,oBAAoB;IAmD5B,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IA6FhE,OAAO,CAAC,qBAAqB;IAmC7B,OAAO,CAAC,oBAAoB;YAmBd,eAAe;IAiB7B,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,GAAG,IAAI;IAIxD,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI7D,kBAAkB,IAAI,IAAI;IAI1B,qBAAqB,IAAI,OAAO;IAI1B,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAWxG,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;YAY3E,mBAAmB;IA+DjC,kBAAkB,CAAC,KAAK,GAAE,MAAY,GAAG,OAAO,EAAE;IAIlD,oBAAoB,IAAI,IAAI;IAI5B,sBAAsB,IAAI,MAAM;YAIlB,eAAe;YA6Bf,kBAAkB;YAyBlB,kBAAkB;YAUlB,gBAAgB;IA4B9B,OAAO,CAAC,iBAAiB;IAUnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,SAAS,IAAI,YAAY;IAuBzB,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;CAGvC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "s3db.js",
|
|
3
|
-
"version": "19.1.0-next.
|
|
3
|
+
"version": "19.1.0-next.e2e31a9a",
|
|
4
4
|
"description": "Use AWS S3, the world's most reliable document storage, as a database with this ORM.",
|
|
5
5
|
"main": "dist/s3db.cjs",
|
|
6
6
|
"module": "dist/s3db.es.js",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"nanoid": "5.1.6",
|
|
85
85
|
"pino": "^10.1.0",
|
|
86
86
|
"pino-pretty": "^13.1.3",
|
|
87
|
-
"recker": "^1.0.
|
|
87
|
+
"recker": "^1.0.55"
|
|
88
88
|
},
|
|
89
89
|
"optionalDependencies": {
|
|
90
90
|
"@modelcontextprotocol/sdk": "^1.25.1",
|
|
@@ -140,7 +140,6 @@
|
|
|
140
140
|
"express": "^4.0.0 || ^5.0.0",
|
|
141
141
|
"ghost-cursor": "^1.0.0",
|
|
142
142
|
"google-auth-library": "^9.0.0 || ^10.0.0",
|
|
143
|
-
"handlebars": "^4.0.0",
|
|
144
143
|
"hono": "^4.0.0",
|
|
145
144
|
"ioredis": "^5.4.1",
|
|
146
145
|
"jose": "^5.0.0 || ^6.0.0",
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { TemplateEngine as ReckerTemplateEngine } from 'recker';
|
|
1
2
|
import { TemplateError } from './errors.js';
|
|
2
3
|
|
|
3
4
|
export interface SMTPTemplateEngineOptions {
|
|
4
|
-
type?: 'handlebars' | CustomTemplateFunction;
|
|
5
|
+
type?: 'recker' | 'handlebars' | CustomTemplateFunction;
|
|
5
6
|
templateDir?: string | null;
|
|
6
7
|
cacheTemplates?: boolean;
|
|
7
8
|
helpers?: Record<string, HelperFunction>;
|
|
@@ -30,40 +31,34 @@ export interface CacheStats {
|
|
|
30
31
|
entries: string[];
|
|
31
32
|
}
|
|
32
33
|
|
|
33
|
-
interface AsyncPlaceholder {
|
|
34
|
-
placeholder: string;
|
|
35
|
-
promise: Promise<unknown>;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
34
|
interface YamlMetadata {
|
|
39
35
|
subject?: string;
|
|
40
36
|
html?: string;
|
|
41
37
|
[key: string]: unknown;
|
|
42
38
|
}
|
|
43
39
|
|
|
44
|
-
type CompiledTemplate = (data: Record<string, unknown>) => string;
|
|
45
|
-
|
|
46
40
|
export class SMTPTemplateEngine {
|
|
47
41
|
public options: SMTPTemplateEngineOptions;
|
|
48
|
-
public type: 'handlebars' | CustomTemplateFunction;
|
|
42
|
+
public type: 'recker' | 'handlebars' | CustomTemplateFunction;
|
|
49
43
|
public templateDir: string | null;
|
|
50
44
|
public cacheTemplates: boolean;
|
|
51
45
|
public helpers: Record<string, HelperFunction>;
|
|
52
46
|
public partials: Record<string, string>;
|
|
53
|
-
private _templateCache: Map<string,
|
|
54
|
-
private
|
|
55
|
-
private _asyncPlaceholderIndex: number;
|
|
47
|
+
private _templateCache: Map<string, string>;
|
|
48
|
+
private _reckerEngine: ReckerTemplateEngine | null;
|
|
56
49
|
|
|
57
50
|
constructor(options: SMTPTemplateEngineOptions = {}) {
|
|
58
51
|
this.options = options;
|
|
59
|
-
this.type = options.type || '
|
|
52
|
+
this.type = options.type || 'recker';
|
|
53
|
+
if (this.type === 'handlebars') {
|
|
54
|
+
this.type = 'recker';
|
|
55
|
+
}
|
|
60
56
|
this.templateDir = options.templateDir || null;
|
|
61
57
|
this.cacheTemplates = options.cacheTemplates !== false;
|
|
62
58
|
this.helpers = options.helpers || {};
|
|
63
59
|
this.partials = options.partials || {};
|
|
64
60
|
this._templateCache = new Map();
|
|
65
|
-
this.
|
|
66
|
-
this._asyncPlaceholderIndex = 0;
|
|
61
|
+
this._reckerEngine = null;
|
|
67
62
|
}
|
|
68
63
|
|
|
69
64
|
async render(
|
|
@@ -72,8 +67,8 @@ export class SMTPTemplateEngine {
|
|
|
72
67
|
options: RenderOptions = {}
|
|
73
68
|
): Promise<RenderedOutput> {
|
|
74
69
|
try {
|
|
75
|
-
if (this.type === '
|
|
76
|
-
return await this.
|
|
70
|
+
if (this.type === 'recker') {
|
|
71
|
+
return await this._renderRecker(templateName as string, data, options);
|
|
77
72
|
} else if (typeof this.type === 'function') {
|
|
78
73
|
return await this._renderCustom(templateName, data, options);
|
|
79
74
|
} else {
|
|
@@ -89,89 +84,58 @@ export class SMTPTemplateEngine {
|
|
|
89
84
|
}
|
|
90
85
|
}
|
|
91
86
|
|
|
92
|
-
private
|
|
87
|
+
private _getReckerEngine(): ReckerTemplateEngine {
|
|
88
|
+
if (this._reckerEngine) {
|
|
89
|
+
return this._reckerEngine;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
this._reckerEngine = new ReckerTemplateEngine();
|
|
93
|
+
|
|
94
|
+
for (const [name, fn] of Object.entries(this.helpers)) {
|
|
95
|
+
this._reckerEngine.registerHelper(name, fn);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
for (const [name, partial] of Object.entries(this.partials)) {
|
|
99
|
+
this._reckerEngine.registerPartial(name, partial);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
return this._reckerEngine;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
private async _renderRecker(
|
|
93
106
|
templateName: string,
|
|
94
107
|
data: Record<string, unknown> = {},
|
|
95
108
|
_options: RenderOptions = {}
|
|
96
109
|
): Promise<RenderedOutput> {
|
|
97
110
|
try {
|
|
98
|
-
const
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
for (const [name, fn] of Object.entries(this.helpers)) {
|
|
102
|
-
hbs.registerHelper(name, this._wrapHelper(fn));
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
for (const [name, partial] of Object.entries(this.partials)) {
|
|
106
|
-
hbs.registerPartial(name, partial);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
let template: CompiledTemplate;
|
|
110
|
-
const cacheKey = `hbs:${templateName}`;
|
|
111
|
+
const engine = await this._getReckerEngine();
|
|
112
|
+
const cacheKey = `recker:${templateName}`;
|
|
111
113
|
|
|
114
|
+
let templateSource: string;
|
|
112
115
|
if (this.cacheTemplates && this._templateCache.has(cacheKey)) {
|
|
113
|
-
|
|
116
|
+
templateSource = this._templateCache.get(cacheKey)!;
|
|
114
117
|
} else {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
template = hbs.compile(templateSource, {
|
|
119
|
-
strict: false,
|
|
120
|
-
noEscape: false,
|
|
121
|
-
preventIndent: false
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
if (this.cacheTemplates) {
|
|
125
|
-
this._templateCache.set(cacheKey, template);
|
|
126
|
-
}
|
|
127
|
-
} catch (err) {
|
|
128
|
-
const error = err as Error & { line?: number; column?: number };
|
|
129
|
-
throw new TemplateError(`Handlebars compilation error: ${error.message}`, {
|
|
130
|
-
originalError: error,
|
|
131
|
-
template: templateName,
|
|
132
|
-
line: error.line,
|
|
133
|
-
column: error.column,
|
|
134
|
-
suggestion: 'Check template syntax for invalid expressions'
|
|
135
|
-
});
|
|
118
|
+
templateSource = await this._loadTemplate(templateName);
|
|
119
|
+
if (this.cacheTemplates) {
|
|
120
|
+
this._templateCache.set(cacheKey, templateSource);
|
|
136
121
|
}
|
|
137
122
|
}
|
|
138
123
|
|
|
139
124
|
try {
|
|
140
|
-
const rendered =
|
|
141
|
-
|
|
142
|
-
return this._parseRenderedOutput(finalOutput);
|
|
125
|
+
const rendered = await engine.render(templateSource, data);
|
|
126
|
+
return this._parseRenderedOutput(rendered);
|
|
143
127
|
} catch (err) {
|
|
144
128
|
const error = err as Error;
|
|
145
|
-
|
|
146
|
-
throw new TemplateError(`Handlebars compilation error: ${error.message}`, {
|
|
147
|
-
originalError: error,
|
|
148
|
-
template: templateName
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
throw new TemplateError(`Handlebars render error: ${error.message}`, {
|
|
129
|
+
throw new TemplateError(`Template render error: ${error.message}`, {
|
|
152
130
|
originalError: error,
|
|
153
131
|
template: templateName,
|
|
154
132
|
suggestion: 'Check that all template variables are provided in data'
|
|
155
133
|
});
|
|
156
|
-
} finally {
|
|
157
|
-
this._pendingAsyncHelpers = [];
|
|
158
134
|
}
|
|
159
135
|
} catch (err) {
|
|
160
136
|
if (err instanceof TemplateError) throw err;
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
throw new TemplateError(`Handlebars compilation error: ${error.message}`, {
|
|
164
|
-
originalError: error,
|
|
165
|
-
template: templateName
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
if (error.code === 'MODULE_NOT_FOUND') {
|
|
169
|
-
throw new TemplateError('Handlebars library not installed', {
|
|
170
|
-
suggestion: 'npm install handlebars'
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
throw new TemplateError(`Handlebars error: ${error.message}`, {
|
|
174
|
-
originalError: error,
|
|
137
|
+
throw new TemplateError(`Recker error: ${(err as Error).message}`, {
|
|
138
|
+
originalError: err as Error,
|
|
175
139
|
template: templateName
|
|
176
140
|
});
|
|
177
141
|
}
|
|
@@ -288,58 +252,20 @@ export class SMTPTemplateEngine {
|
|
|
288
252
|
return result;
|
|
289
253
|
}
|
|
290
254
|
|
|
291
|
-
private _wrapHelper(fn: HelperFunction): HelperFunction {
|
|
292
|
-
return (...args: unknown[]) => {
|
|
293
|
-
try {
|
|
294
|
-
const result = fn(...args);
|
|
295
|
-
if (result && typeof (result as Promise<unknown>).then === 'function') {
|
|
296
|
-
const placeholder = `__S3DB_TMPL_ASYNC_${this._asyncPlaceholderIndex++}__`;
|
|
297
|
-
this._pendingAsyncHelpers.push({
|
|
298
|
-
placeholder,
|
|
299
|
-
promise: Promise.resolve(result)
|
|
300
|
-
});
|
|
301
|
-
return placeholder;
|
|
302
|
-
}
|
|
303
|
-
return result;
|
|
304
|
-
} catch (err) {
|
|
305
|
-
throw err;
|
|
306
|
-
}
|
|
307
|
-
};
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
private async _resolveAsyncPlaceholders(rendered: string): Promise<string> {
|
|
311
|
-
if (typeof rendered !== 'string' || this._pendingAsyncHelpers.length === 0) {
|
|
312
|
-
return rendered;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
let finalOutput = rendered;
|
|
316
|
-
for (const { placeholder, promise } of this._pendingAsyncHelpers) {
|
|
317
|
-
try {
|
|
318
|
-
const value = await promise;
|
|
319
|
-
const replacement = value == null ? '' : String(value);
|
|
320
|
-
finalOutput = finalOutput.split(placeholder).join(replacement);
|
|
321
|
-
} catch (err) {
|
|
322
|
-
throw new TemplateError(`Async helper error: ${(err as Error).message}`, {
|
|
323
|
-
originalError: err as Error
|
|
324
|
-
});
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
return finalOutput;
|
|
329
|
-
}
|
|
330
|
-
|
|
331
255
|
registerHelper(name: string, fn: HelperFunction): void {
|
|
332
256
|
this.helpers[name] = fn;
|
|
257
|
+
if (this._reckerEngine) {
|
|
258
|
+
this._reckerEngine.registerHelper(name, fn);
|
|
259
|
+
}
|
|
333
260
|
}
|
|
334
261
|
|
|
335
262
|
registerPartial(name: string, template: string): void {
|
|
336
263
|
this.partials[name] = template;
|
|
337
|
-
if (this.
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
}
|
|
264
|
+
if (this._reckerEngine) {
|
|
265
|
+
this._reckerEngine.registerPartial(name, template);
|
|
266
|
+
}
|
|
267
|
+
for (const key of this._templateCache.keys()) {
|
|
268
|
+
this._templateCache.delete(key);
|
|
343
269
|
}
|
|
344
270
|
}
|
|
345
271
|
|
|
@@ -357,96 +283,11 @@ export class SMTPTemplateEngine {
|
|
|
357
283
|
async precompile(templateName: string): Promise<boolean> {
|
|
358
284
|
try {
|
|
359
285
|
const source = await this._loadTemplate(templateName);
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
const Handlebars = await import('handlebars');
|
|
363
|
-
const compiled = Handlebars.default.compile(source, {
|
|
364
|
-
strict: false
|
|
365
|
-
});
|
|
366
|
-
compiled({});
|
|
367
|
-
return true;
|
|
368
|
-
}
|
|
369
|
-
|
|
286
|
+
const engine = this._getReckerEngine();
|
|
287
|
+
await engine.render(source, {});
|
|
370
288
|
return true;
|
|
371
289
|
} catch (_err) {
|
|
372
290
|
return false;
|
|
373
291
|
}
|
|
374
292
|
}
|
|
375
293
|
}
|
|
376
|
-
|
|
377
|
-
export interface HandlebarsOptions {
|
|
378
|
-
hash: Record<string, unknown>;
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
export const defaultHandlebarsHelpers: Record<string, HelperFunction> = {
|
|
382
|
-
formatDate: (date: unknown, options: HandlebarsOptions): string => {
|
|
383
|
-
const format = (options.hash.format as string) || 'YYYY-MM-DD';
|
|
384
|
-
if (!date) return '';
|
|
385
|
-
|
|
386
|
-
const d = new Date(date as string | number | Date);
|
|
387
|
-
const year = String(d.getFullYear());
|
|
388
|
-
const month = String(d.getMonth() + 1).padStart(2, '0');
|
|
389
|
-
const day = String(d.getDate()).padStart(2, '0');
|
|
390
|
-
const hour = String(d.getHours()).padStart(2, '0');
|
|
391
|
-
const minute = String(d.getMinutes()).padStart(2, '0');
|
|
392
|
-
const second = String(d.getSeconds()).padStart(2, '0');
|
|
393
|
-
|
|
394
|
-
return format
|
|
395
|
-
.replace('YYYY', year)
|
|
396
|
-
.replace('MM', month)
|
|
397
|
-
.replace('DD', day)
|
|
398
|
-
.replace('HH', hour)
|
|
399
|
-
.replace('mm', minute)
|
|
400
|
-
.replace('ss', second);
|
|
401
|
-
},
|
|
402
|
-
|
|
403
|
-
uppercase: (str: unknown): string => (str ? String(str).toUpperCase() : ''),
|
|
404
|
-
|
|
405
|
-
lowercase: (str: unknown): string => (str ? String(str).toLowerCase() : ''),
|
|
406
|
-
|
|
407
|
-
titlecase: (str: unknown): string => {
|
|
408
|
-
if (!str) return '';
|
|
409
|
-
return String(str)
|
|
410
|
-
.toLowerCase()
|
|
411
|
-
.split(' ')
|
|
412
|
-
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
|
|
413
|
-
.join(' ');
|
|
414
|
-
},
|
|
415
|
-
|
|
416
|
-
eq: (a: unknown, b: unknown): boolean => a === b,
|
|
417
|
-
|
|
418
|
-
default: (value: unknown, fallback: unknown): unknown => (value ? value : fallback),
|
|
419
|
-
|
|
420
|
-
pluralize: (count: number, singular: string, plural: string): string => {
|
|
421
|
-
return count === 1 ? singular : plural;
|
|
422
|
-
},
|
|
423
|
-
|
|
424
|
-
truncate: (text: unknown, options: HandlebarsOptions): string => {
|
|
425
|
-
const length = (options.hash.length as number) || 100;
|
|
426
|
-
const str = String(text || '');
|
|
427
|
-
if (!str || str.length <= length) return str;
|
|
428
|
-
return str.substring(0, length) + '...';
|
|
429
|
-
},
|
|
430
|
-
|
|
431
|
-
currency: (amount: unknown, options: HandlebarsOptions): string => {
|
|
432
|
-
const locale = (options.hash.locale as string) || 'en-US';
|
|
433
|
-
const currency = (options.hash.currency as string) || 'USD';
|
|
434
|
-
|
|
435
|
-
if (amount == null) return '';
|
|
436
|
-
|
|
437
|
-
try {
|
|
438
|
-
return new Intl.NumberFormat(locale, {
|
|
439
|
-
style: 'currency',
|
|
440
|
-
currency
|
|
441
|
-
}).format(amount as number);
|
|
442
|
-
} catch (_err) {
|
|
443
|
-
return `${currency} ${amount}`;
|
|
444
|
-
}
|
|
445
|
-
},
|
|
446
|
-
|
|
447
|
-
json: (obj: unknown): string => JSON.stringify(obj, null, 2),
|
|
448
|
-
|
|
449
|
-
range: function(n: number): number[] {
|
|
450
|
-
return Array.from({ length: n }, (_, i) => i + 1);
|
|
451
|
-
}
|
|
452
|
-
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Plugin } from './plugin.class.js';
|
|
2
2
|
import { SMTPConnectionManager } from './smtp/connection-manager.js';
|
|
3
|
-
import { SMTPTemplateEngine,
|
|
3
|
+
import { SMTPTemplateEngine, type CustomTemplateFunction } from './smtp/template-engine.js';
|
|
4
4
|
import { WebhookReceiver, type WebhookProvider as InternalWebhookProvider } from './smtp/webhook-receiver.js';
|
|
5
5
|
import { createDriver, getAvailableDrivers, MultiRelayManager } from './smtp/drivers/index.js';
|
|
6
6
|
import {
|
|
@@ -323,10 +323,9 @@ export class SMTPPlugin extends Plugin {
|
|
|
323
323
|
this.connectionManager = null;
|
|
324
324
|
|
|
325
325
|
this.templateEngine = new SMTPTemplateEngine({
|
|
326
|
-
type: templateEngine as '
|
|
326
|
+
type: templateEngine as 'recker' | CustomTemplateFunction | undefined,
|
|
327
327
|
templateDir: templateDir ?? undefined,
|
|
328
|
-
cacheTemplates: true
|
|
329
|
-
helpers: defaultHandlebarsHelpers
|
|
328
|
+
cacheTemplates: true
|
|
330
329
|
}) as unknown as SMTPTemplateEngineInstance;
|
|
331
330
|
|
|
332
331
|
this.webhookReceiver = new WebhookReceiver({
|