@tstdl/base 0.71.8 → 0.71.12

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 (118) hide show
  1. package/container/container.d.ts +1 -1
  2. package/container/container.js +20 -20
  3. package/container/container.js.map +1 -1
  4. package/container/decorators.d.ts +6 -6
  5. package/container/index.d.ts +1 -0
  6. package/container/index.js +1 -0
  7. package/container/index.js.map +1 -1
  8. package/container/provider.d.ts +2 -8
  9. package/container/provider.js +1 -9
  10. package/container/provider.js.map +1 -1
  11. package/container/utils.d.ts +3 -0
  12. package/container/utils.js +37 -0
  13. package/container/utils.js.map +1 -0
  14. package/database/mongo/module.js +3 -3
  15. package/database/mongo/module.js.map +1 -1
  16. package/image-service/image-service.d.ts +8 -8
  17. package/lock/mongo/lock.js +1 -1
  18. package/lock/mongo/lock.js.map +1 -1
  19. package/lock/mongo/module.d.ts +1 -1
  20. package/lock/mongo/module.js +1 -1
  21. package/lock/mongo/module.js.map +1 -1
  22. package/lock/mongo/mongo-lock-repository.d.ts +1 -1
  23. package/lock/mongo/provider.js +1 -1
  24. package/lock/mongo/provider.js.map +1 -1
  25. package/mail/clients/nodemailer.mail-client.d.ts +11 -0
  26. package/mail/clients/nodemailer.mail-client.js +79 -0
  27. package/mail/clients/nodemailer.mail-client.js.map +1 -0
  28. package/mail/index.d.ts +8 -0
  29. package/mail/index.js +25 -0
  30. package/mail/index.js.map +1 -0
  31. package/mail/mail-log.repository.d.ts +4 -0
  32. package/mail/mail-log.repository.js +8 -0
  33. package/mail/mail-log.repository.js.map +1 -0
  34. package/mail/mail-template-renderer.provider.d.ts +8 -0
  35. package/mail/mail-template-renderer.provider.js +60 -0
  36. package/mail/mail-template-renderer.provider.js.map +1 -0
  37. package/mail/mail-template.provider.d.ts +4 -0
  38. package/mail/mail-template.provider.js +7 -0
  39. package/mail/mail-template.provider.js.map +1 -0
  40. package/mail/mail-template.renderer.d.ts +10 -0
  41. package/mail/mail-template.renderer.js +7 -0
  42. package/mail/mail-template.renderer.js.map +1 -0
  43. package/mail/mail.client.d.ts +16 -0
  44. package/mail/mail.client.js +8 -0
  45. package/mail/mail.client.js.map +1 -0
  46. package/mail/mail.service.d.ts +17 -0
  47. package/mail/mail.service.js +82 -0
  48. package/mail/mail.service.js.map +1 -0
  49. package/mail/models/index.d.ts +6 -0
  50. package/mail/models/index.js +23 -0
  51. package/mail/models/index.js.map +1 -0
  52. package/mail/models/mail-address.model.d.ts +4 -0
  53. package/mail/models/mail-address.model.js +3 -0
  54. package/mail/models/mail-address.model.js.map +1 -0
  55. package/mail/models/mail-content.model.d.ts +4 -0
  56. package/mail/models/mail-content.model.js +3 -0
  57. package/mail/models/mail-content.model.js.map +1 -0
  58. package/mail/models/mail-data.model.d.ts +20 -0
  59. package/mail/models/mail-data.model.js +3 -0
  60. package/mail/models/mail-data.model.js.map +1 -0
  61. package/mail/models/mail-log.model.d.ts +11 -0
  62. package/mail/models/mail-log.model.js +3 -0
  63. package/mail/models/mail-log.model.js.map +1 -0
  64. package/mail/models/mail-send-result.model.d.ts +7 -0
  65. package/mail/models/mail-send-result.model.js +3 -0
  66. package/mail/models/mail-send-result.model.js.map +1 -0
  67. package/mail/models/mail-template.model.d.ts +11 -0
  68. package/mail/models/mail-template.model.js +3 -0
  69. package/mail/models/mail-template.model.js.map +1 -0
  70. package/mail/module.d.ts +18 -0
  71. package/mail/module.js +40 -0
  72. package/mail/module.js.map +1 -0
  73. package/mail/repositories/mongo-mail-log.repository.d.ts +16 -0
  74. package/mail/repositories/mongo-mail-log.repository.js +39 -0
  75. package/mail/repositories/mongo-mail-log.repository.js.map +1 -0
  76. package/mail/template-providers/file-mail-template.provider.d.ts +24 -0
  77. package/mail/template-providers/file-mail-template.provider.js +72 -0
  78. package/mail/template-providers/file-mail-template.provider.js.map +1 -0
  79. package/mail/template-providers/memory-mail-template.provider.d.ts +8 -0
  80. package/mail/template-providers/memory-mail-template.provider.js +37 -0
  81. package/mail/template-providers/memory-mail-template.provider.js.map +1 -0
  82. package/mail/template-renderers/handlebars.mail-template-renderer.d.ts +11 -0
  83. package/mail/template-renderers/handlebars.mail-template-renderer.js +34 -0
  84. package/mail/template-renderers/handlebars.mail-template-renderer.js.map +1 -0
  85. package/mail/template-renderers/mjml.mail-template-renderer.d.ts +15 -0
  86. package/mail/template-renderers/mjml.mail-template-renderer.js +62 -0
  87. package/mail/template-renderers/mjml.mail-template-renderer.js.map +1 -0
  88. package/mail/tokens.d.ts +5 -0
  89. package/mail/tokens.js +7 -0
  90. package/mail/tokens.js.map +1 -0
  91. package/message-bus/local/local-message-bus-provider.d.ts +1 -1
  92. package/message-bus/local/local-message-bus-provider.js +1 -1
  93. package/message-bus/local/local-message-bus-provider.js.map +1 -1
  94. package/migration/migrator.js +2 -1
  95. package/migration/migrator.js.map +1 -1
  96. package/migration/mongo/migration-state-repository.d.ts +1 -1
  97. package/openid-connect/mongo-oidc-state.repository.d.ts +1 -1
  98. package/package.json +10 -5
  99. package/queue/mongo/queue.js +1 -1
  100. package/queue/mongo/queue.js.map +1 -1
  101. package/queue/mongo/queue.provider.d.ts +1 -1
  102. package/queue/mongo/queue.provider.js +1 -1
  103. package/queue/mongo/queue.provider.js.map +1 -1
  104. package/schema/schemas/object.js +9 -22
  105. package/schema/schemas/object.js.map +1 -1
  106. package/search-index/elastic/config.d.ts +9 -0
  107. package/search-index/elastic/config.js +29 -0
  108. package/search-index/elastic/config.js.map +1 -0
  109. package/search-index/elastic/index.d.ts +1 -0
  110. package/search-index/elastic/index.js +1 -0
  111. package/search-index/elastic/index.js.map +1 -1
  112. package/search-index/elastic/module.d.ts +4 -4
  113. package/search-index/elastic/module.js +5 -4
  114. package/search-index/elastic/module.js.map +1 -1
  115. package/search-index/elastic/search-index.d.ts +1 -6
  116. package/search-index/elastic/search-index.js +1 -8
  117. package/search-index/elastic/search-index.js.map +1 -1
  118. package/types.d.ts +2 -0
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.configureNodemailerMailClient = exports.NodemailerMailClient = void 0;
16
+ const container_1 = require("../../container");
17
+ const type_guards_1 = require("../../utils/type-guards");
18
+ const nodemailer_1 = require("nodemailer");
19
+ const mail_client_1 = require("../mail.client");
20
+ const tokens_1 = require("../tokens");
21
+ let NodemailerMailClient = class NodemailerMailClient extends mail_client_1.MailClient {
22
+ constructor(config) {
23
+ super();
24
+ const options = convertConfig(config);
25
+ this.transporter = (0, nodemailer_1.createTransport)(options);
26
+ }
27
+ async send(data) {
28
+ const result = await this.transporter.sendMail({
29
+ from: data.from,
30
+ sender: data.sender,
31
+ to: data.to,
32
+ cc: data.cc,
33
+ bcc: data.bcc,
34
+ replyTo: data.replyTo,
35
+ inReplyTo: data.inReplyTo,
36
+ references: data.references,
37
+ subject: data.subject,
38
+ text: data.content.text,
39
+ html: data.content.html,
40
+ headers: data.headers
41
+ });
42
+ return {
43
+ messageId: result.messageId,
44
+ accepted: result.accepted,
45
+ rejected: result.rejected,
46
+ pending: result.pending
47
+ };
48
+ }
49
+ };
50
+ NodemailerMailClient = __decorate([
51
+ (0, container_1.singleton)(),
52
+ __param(0, (0, container_1.inject)(tokens_1.MAIL_CLIENT_CONFIG)),
53
+ __param(0, (0, container_1.injectArg)()),
54
+ __metadata("design:paramtypes", [Object])
55
+ ], NodemailerMailClient);
56
+ exports.NodemailerMailClient = NodemailerMailClient;
57
+ function convertConfig(config) {
58
+ var _a;
59
+ return {
60
+ host: config.host,
61
+ port: config.port,
62
+ secure: (_a = config.secure) !== null && _a !== void 0 ? _a : (config.port == 465),
63
+ auth: (0, type_guards_1.isUndefined)(config.auth) ? undefined : {
64
+ type: 'login',
65
+ user: config.auth.user,
66
+ pass: config.auth.password
67
+ }
68
+ };
69
+ }
70
+ /**
71
+ * @param register whether to register for {@link MailClient}
72
+ */
73
+ function configureNodemailerMailClient(register) {
74
+ if (register) {
75
+ container_1.container.register(NodemailerMailClient, { useToken: mail_client_1.MailClient });
76
+ }
77
+ }
78
+ exports.configureNodemailerMailClient = configureNodemailerMailClient;
79
+ //# sourceMappingURL=nodemailer.mail-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodemailer.mail-client.js","sourceRoot":"","sources":["../../../source/mail/clients/nodemailer.mail-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+CAAsE;AAEtE,yDAAkD;AAElD,2CAA6C;AAC7C,gDAA8D;AAE9D,sCAA+C;AAI/C,IAAa,oBAAoB,GAAjC,MAAa,oBAAqB,SAAQ,wBAAU;IAGlD,YAAqD,MAAwB;QAC3E,KAAK,EAAE,CAAC;QAER,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,IAAA,4BAAe,EAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAc;QACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;YAC7C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,EAAE,EAAE,IAAI,CAAC,EAAoC;YAC7C,EAAE,EAAE,IAAI,CAAC,EAAoC;YAC7C,GAAG,EAAE,IAAI,CAAC,GAAqC;YAC/C,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI,CAAC,UAAuC;YACxD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QAEH,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;IACJ,CAAC;CACF,CAAA;AAjCY,oBAAoB;IADhC,IAAA,qBAAS,GAAE;IAIG,WAAA,IAAA,kBAAM,EAAC,2BAAkB,CAAC,CAAA;IAAE,WAAA,IAAA,qBAAS,GAAE,CAAA;;GAHzC,oBAAoB,CAiChC;AAjCY,oDAAoB;AAmCjC,SAAS,aAAa,CAAC,MAAwB;;IAC7C,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAA,MAAM,CAAC,MAAM,mCAAI,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC;QAC7C,IAAI,EAAE,IAAA,yBAAW,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YAC3C,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;YACtB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;SAC3B;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,6BAA6B,CAAC,QAAiB;IAC7D,IAAI,QAAQ,EAAE;QACZ,qBAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,wBAAU,EAAE,CAAC,CAAC;KACpE;AACH,CAAC;AAJD,sEAIC"}
@@ -0,0 +1,8 @@
1
+ export * from './mail-template-renderer.provider';
2
+ export * from './mail-template.provider';
3
+ export * from './mail-template.renderer';
4
+ export * from './mail.client';
5
+ export * from './mail.service';
6
+ export * from './models';
7
+ export * from './module';
8
+ export * from './tokens';
package/mail/index.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./mail-template-renderer.provider"), exports);
18
+ __exportStar(require("./mail-template.provider"), exports);
19
+ __exportStar(require("./mail-template.renderer"), exports);
20
+ __exportStar(require("./mail.client"), exports);
21
+ __exportStar(require("./mail.service"), exports);
22
+ __exportStar(require("./models"), exports);
23
+ __exportStar(require("./module"), exports);
24
+ __exportStar(require("./tokens"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/mail/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oEAAkD;AAClD,2DAAyC;AACzC,2DAAyC;AACzC,gDAA8B;AAC9B,iDAA+B;AAC/B,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB"}
@@ -0,0 +1,4 @@
1
+ import { EntityRepository } from "../database";
2
+ import type { MailLog } from './models';
3
+ export declare abstract class MailLogRepository extends EntityRepository<MailLog> {
4
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MailLogRepository = void 0;
4
+ const database_1 = require("../database");
5
+ class MailLogRepository extends database_1.EntityRepository {
6
+ }
7
+ exports.MailLogRepository = MailLogRepository;
8
+ //# sourceMappingURL=mail-log.repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-log.repository.js","sourceRoot":"","sources":["../../source/mail/mail-log.repository.ts"],"names":[],"mappings":";;;AAAA,0CAA8C;AAG9C,MAAsB,iBAAkB,SAAQ,2BAAyB;CAAI;AAA7E,8CAA6E"}
@@ -0,0 +1,8 @@
1
+ import type { MailTemplateRenderer } from './mail-template.renderer';
2
+ export declare class MailTemplateRendererProvider {
3
+ private readonly renderers;
4
+ constructor(renderers: MailTemplateRenderer[]);
5
+ register(renderer: MailTemplateRenderer): void;
6
+ has(type: string): boolean;
7
+ get(type: string): MailTemplateRenderer;
8
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var MailTemplateRendererProvider_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.MailTemplateRendererProvider = void 0;
14
+ const container_1 = require("../container");
15
+ const tokens_1 = require("./tokens");
16
+ let MailTemplateRendererProvider = MailTemplateRendererProvider_1 = class MailTemplateRendererProvider {
17
+ constructor(renderers) {
18
+ this.renderers = new Set(renderers);
19
+ }
20
+ register(renderer) {
21
+ this.renderers.add(renderer);
22
+ }
23
+ has(type) {
24
+ for (const renderer of this.renderers) {
25
+ if (renderer.canHandleType(type)) {
26
+ return true;
27
+ }
28
+ }
29
+ return false;
30
+ }
31
+ get(type) {
32
+ for (const renderer of this.renderers) {
33
+ if (renderer.canHandleType(type)) {
34
+ return renderer;
35
+ }
36
+ }
37
+ throw new Error(`No renderer for ${type} registered`);
38
+ }
39
+ };
40
+ MailTemplateRendererProvider = MailTemplateRendererProvider_1 = __decorate([
41
+ (0, container_1.singleton)({
42
+ provider: {
43
+ useFactory: (_, context) => {
44
+ if (context.isAsync) {
45
+ return (async () => {
46
+ const types = await context.resolveAsync(tokens_1.MAIL_TEMPLATE_RENDERERS);
47
+ const renderers = await Promise.all(types.map(async (type) => context.resolveAsync(type)));
48
+ return new MailTemplateRendererProvider_1(renderers);
49
+ })();
50
+ }
51
+ const types = context.resolve(tokens_1.MAIL_TEMPLATE_RENDERERS);
52
+ const renderers = types.map((type) => context.resolve(type));
53
+ return new MailTemplateRendererProvider_1(renderers);
54
+ }
55
+ }
56
+ }),
57
+ __metadata("design:paramtypes", [Array])
58
+ ], MailTemplateRendererProvider);
59
+ exports.MailTemplateRendererProvider = MailTemplateRendererProvider;
60
+ //# sourceMappingURL=mail-template-renderer.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-template-renderer.provider.js","sourceRoot":"","sources":["../../source/mail/mail-template-renderer.provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,4CAAwC;AAExC,qCAAmD;AAmBnD,IAAa,4BAA4B,oCAAzC,MAAa,4BAA4B;IAGvC,YAAY,SAAiC;QAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,QAAQ,CAAC,QAA8B;QACrC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAED,GAAG,CAAC,IAAY;QACd,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,IAAI,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;gBAChC,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,GAAG,CAAC,IAAY;QACd,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,IAAI,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;gBAChC,OAAO,QAAQ,CAAC;aACjB;SACF;QAED,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,aAAa,CAAC,CAAC;IACxD,CAAC;CACF,CAAA;AA9BY,4BAA4B;IAjBxC,IAAA,qBAAS,EAAC;QACT,QAAQ,EAAE;YACR,UAAU,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;gBACzB,IAAI,OAAO,CAAC,OAAO,EAAE;oBACnB,OAAO,CAAC,KAAK,IAAI,EAAE;wBACjB,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,gCAAuB,CAAC,CAAC;wBAClE,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBAC3F,OAAO,IAAI,8BAA4B,CAAC,SAAS,CAAC,CAAC;oBACrD,CAAC,CAAC,EAAE,CAAC;iBACN;gBAED,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,gCAAuB,CAAC,CAAC;gBACvD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7D,OAAO,IAAI,8BAA4B,CAAC,SAAS,CAAC,CAAC;YACrD,CAAC;SACF;KACF,CAAC;;GACW,4BAA4B,CA8BxC;AA9BY,oEAA4B"}
@@ -0,0 +1,4 @@
1
+ import type { MailTemplate } from './models';
2
+ export declare abstract class MailTemplateProvider {
3
+ abstract get(key: string): Promise<MailTemplate>;
4
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MailTemplateProvider = void 0;
4
+ class MailTemplateProvider {
5
+ }
6
+ exports.MailTemplateProvider = MailTemplateProvider;
7
+ //# sourceMappingURL=mail-template.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-template.provider.js","sourceRoot":"","sources":["../../source/mail/mail-template.provider.ts"],"names":[],"mappings":";;;AAEA,MAAsB,oBAAoB;CAEzC;AAFD,oDAEC"}
@@ -0,0 +1,10 @@
1
+ import type { MailTemplate } from './models';
2
+ export declare type MailTemplateRenderResult = {
3
+ subject: string | undefined;
4
+ html: string | undefined;
5
+ text: string | undefined;
6
+ };
7
+ export declare abstract class MailTemplateRenderer<T extends MailTemplate = MailTemplate> {
8
+ abstract canHandleType(type: string): boolean;
9
+ abstract render(template: T, context?: object): Promise<MailTemplateRenderResult>;
10
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MailTemplateRenderer = void 0;
4
+ class MailTemplateRenderer {
5
+ }
6
+ exports.MailTemplateRenderer = MailTemplateRenderer;
7
+ //# sourceMappingURL=mail-template.renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-template.renderer.js","sourceRoot":"","sources":["../../source/mail/mail-template.renderer.ts"],"names":[],"mappings":";;;AAQA,MAAsB,oBAAoB;CAIzC;AAJD,oDAIC"}
@@ -0,0 +1,16 @@
1
+ import type { Injectable } from "../container";
2
+ import { resolveArgumentType } from "../container";
3
+ import type { MailData, MailSendResult } from './models';
4
+ export declare type MailClientConfig = {
5
+ host: string;
6
+ port: number;
7
+ secure?: boolean;
8
+ auth?: {
9
+ user: string;
10
+ password: string;
11
+ };
12
+ };
13
+ export declare abstract class MailClient implements Injectable<MailClientConfig> {
14
+ readonly [resolveArgumentType]: MailClientConfig;
15
+ abstract send(data: MailData): Promise<MailSendResult>;
16
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MailClient = void 0;
4
+ const container_1 = require("../container");
5
+ class MailClient {
6
+ }
7
+ exports.MailClient = MailClient;
8
+ //# sourceMappingURL=mail.client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail.client.js","sourceRoot":"","sources":["../../source/mail/mail.client.ts"],"names":[],"mappings":";;;AACA,4CAAkD;AAgBlD,MAAsB,UAAU;CAI/B;AAJD,gCAIC"}
@@ -0,0 +1,17 @@
1
+ import { Logger } from "../logger";
2
+ import type { TypedOmit } from "../types";
3
+ import { MailLogRepository } from './mail-log.repository';
4
+ import { MailTemplateRendererProvider } from './mail-template-renderer.provider';
5
+ import { MailTemplateProvider } from './mail-template.provider';
6
+ import { MailClient } from './mail.client';
7
+ import type { MailData, MailSendResult } from './models';
8
+ export declare class MailService {
9
+ private readonly mailClient;
10
+ private readonly mailTemplateProvider;
11
+ private readonly mailTemplateRendererProvider;
12
+ private readonly mailQueue;
13
+ private readonly mailLogRepository;
14
+ private readonly logger;
15
+ constructor(mailClient: MailClient, mailTemplateProvider: MailTemplateProvider, mailTemplateRendererProvider: MailTemplateRendererProvider, mailLogRepository: MailLogRepository | undefined, logger: Logger);
16
+ sendTemplate(key: string, mailData: TypedOmit<MailData, 'content' | 'subject'>, templateContext?: object): Promise<MailSendResult>;
17
+ }
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var MailService_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.MailService = void 0;
17
+ const container_1 = require("../container");
18
+ const logger_1 = require("../logger");
19
+ const date_time_1 = require("../utils/date-time");
20
+ const helpers_1 = require("../utils/helpers");
21
+ const type_guards_1 = require("../utils/type-guards");
22
+ const mail_log_repository_1 = require("./mail-log.repository");
23
+ const mail_template_renderer_provider_1 = require("./mail-template-renderer.provider");
24
+ const mail_template_provider_1 = require("./mail-template.provider");
25
+ const mail_client_1 = require("./mail.client");
26
+ let MailService = MailService_1 = class MailService {
27
+ constructor(mailClient, mailTemplateProvider, mailTemplateRendererProvider,
28
+ // @inject(Queue) @resolveArgProvider(() => mailModuleConfig.queueKey) @optional() mailQueue: Queue<unknown> | undefined,
29
+ mailLogRepository, logger) {
30
+ this.mailClient = mailClient;
31
+ this.mailTemplateProvider = mailTemplateProvider;
32
+ this.mailTemplateRendererProvider = mailTemplateRendererProvider;
33
+ // this.mailQueue = mailQueue;
34
+ this.mailLogRepository = mailLogRepository;
35
+ this.logger = logger;
36
+ }
37
+ async sendTemplate(key, mailData, templateContext) {
38
+ const template = await this.mailTemplateProvider.get(key);
39
+ const renderer = this.mailTemplateRendererProvider.get(template.type);
40
+ const { subject, html, text } = await renderer.render(template, templateContext);
41
+ const fullMailData = Object.assign(Object.assign({}, mailData), { subject, content: { html, text } });
42
+ let mailLog;
43
+ if ((0, type_guards_1.isDefined)(this.mailLogRepository)) {
44
+ const log = {
45
+ timestamp: (0, date_time_1.currentTimestamp)(),
46
+ templateKey: key,
47
+ data: fullMailData
48
+ };
49
+ mailLog = await this.mailLogRepository.insert(log);
50
+ }
51
+ try {
52
+ const result = await this.mailClient.send(fullMailData);
53
+ if ((0, type_guards_1.isDefined)(mailLog)) {
54
+ await this.mailLogRepository.patch(mailLog, { sendResult: result });
55
+ }
56
+ return result;
57
+ }
58
+ catch (error) {
59
+ try {
60
+ if ((0, type_guards_1.isDefined)(mailLog)) {
61
+ await this.mailLogRepository.patch(mailLog, { errors: [(0, helpers_1.formatError)(error)] });
62
+ }
63
+ }
64
+ catch (logError) {
65
+ this.logger.error(logError);
66
+ }
67
+ throw error;
68
+ }
69
+ }
70
+ };
71
+ MailService = MailService_1 = __decorate([
72
+ (0, container_1.singleton)(),
73
+ __param(1, (0, container_1.optional)()),
74
+ __param(3, (0, container_1.inject)(mail_log_repository_1.MailLogRepository)),
75
+ __param(3, (0, container_1.optional)()),
76
+ __param(4, (0, container_1.resolveArg)(MailService_1.name)),
77
+ __metadata("design:paramtypes", [mail_client_1.MailClient,
78
+ mail_template_provider_1.MailTemplateProvider,
79
+ mail_template_renderer_provider_1.MailTemplateRendererProvider, Object, logger_1.Logger])
80
+ ], MailService);
81
+ exports.MailService = MailService;
82
+ //# sourceMappingURL=mail.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail.service.js","sourceRoot":"","sources":["../../source/mail/mail.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAsE;AAEtE,sCAAkC;AAGlC,kDAAqD;AACrD,8CAA8C;AAC9C,sDAAgD;AAChD,+DAA0D;AAC1D,uFAAiF;AACjF,qEAAgE;AAChE,+CAA2C;AAI3C,IAAa,WAAW,mBAAxB,MAAa,WAAW;IAQtB,YACE,UAAsB,EACV,oBAA0C,EACtD,4BAA0D;IAC1D,yHAAyH;IAClF,iBAAgD,EACzC,MAAc;QAE5D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,4BAA4B,GAAG,4BAA4B,CAAC;QACjE,8BAA8B;QAC9B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,QAAoD,EAAE,eAAwB;QAC5G,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;QAEjF,MAAM,YAAY,mCAAQ,QAAQ,KAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAE,CAAC;QAEvE,IAAI,OAA4B,CAAC;QAEjC,IAAI,IAAA,uBAAS,EAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;YACrC,MAAM,GAAG,GAAe;gBACtB,SAAS,EAAE,IAAA,4BAAgB,GAAE;gBAC7B,WAAW,EAAE,GAAG;gBAChB,IAAI,EAAE,YAAY;aACnB,CAAC;YAEF,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACpD;QAED,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAExD,IAAI,IAAA,uBAAS,EAAC,OAAO,CAAC,EAAE;gBACtB,MAAM,IAAI,CAAC,iBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;aACtE;YAED,OAAO,MAAM,CAAC;SACf;QACD,OAAO,KAAK,EAAE;YACZ,IAAI;gBACF,IAAI,IAAA,uBAAS,EAAC,OAAO,CAAC,EAAE;oBACtB,MAAM,IAAI,CAAC,iBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,IAAA,qBAAW,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;iBAChF;aACF;YACD,OAAO,QAAQ,EAAE;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAiB,CAAC,CAAC;aACtC;YAED,MAAM,KAAK,CAAC;SACb;IACH,CAAC;CACF,CAAA;AAjEY,WAAW;IADvB,IAAA,qBAAS,GAAE;IAWP,WAAA,IAAA,oBAAQ,GAAE,CAAA;IAGV,WAAA,IAAA,kBAAM,EAAC,uCAAiB,CAAC,CAAA;IAAE,WAAA,IAAA,oBAAQ,GAAE,CAAA;IACrC,WAAA,IAAA,sBAAU,EAAiB,aAAW,CAAC,IAAI,CAAC,CAAA;qCALjC,wBAAU;QACY,6CAAoB;QACxB,8DAA4B,UAGJ,eAAM;GAdnD,WAAW,CAiEvB;AAjEY,kCAAW"}
@@ -0,0 +1,6 @@
1
+ export * from './mail-address.model';
2
+ export * from './mail-content.model';
3
+ export * from './mail-data.model';
4
+ export * from './mail-log.model';
5
+ export * from './mail-send-result.model';
6
+ export * from './mail-template.model';
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./mail-address.model"), exports);
18
+ __exportStar(require("./mail-content.model"), exports);
19
+ __exportStar(require("./mail-data.model"), exports);
20
+ __exportStar(require("./mail-log.model"), exports);
21
+ __exportStar(require("./mail-send-result.model"), exports);
22
+ __exportStar(require("./mail-template.model"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/mail/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,uDAAqC;AACrC,oDAAkC;AAClC,mDAAiC;AACjC,2DAAyC;AACzC,wDAAsC"}
@@ -0,0 +1,4 @@
1
+ export declare type MailAddress = string | {
2
+ name: string;
3
+ address: string;
4
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=mail-address.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-address.model.js","sourceRoot":"","sources":["../../../source/mail/models/mail-address.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export declare type MailContent = {
2
+ text?: string;
3
+ html?: string;
4
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=mail-content.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-content.model.js","sourceRoot":"","sources":["../../../source/mail/models/mail-content.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import type { OneOrMany } from "../../types";
2
+ import type { MailAddress } from './mail-address.model';
3
+ import type { MailContent } from './mail-content.model';
4
+ export declare type MailData = {
5
+ content: MailContent;
6
+ from?: MailAddress;
7
+ to?: OneOrMany<MailAddress>;
8
+ subject?: string;
9
+ sender?: MailAddress;
10
+ cc?: OneOrMany<MailAddress>;
11
+ bcc?: OneOrMany<MailAddress>;
12
+ replyTo?: MailAddress;
13
+ inReplyTo?: MailAddress;
14
+ returnPath?: MailAddress;
15
+ references?: OneOrMany<string>;
16
+ /**
17
+ * If a header has an string array as its value, the header is added multiple times.
18
+ */
19
+ headers?: Record<string, string | string[]>;
20
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=mail-data.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-data.model.js","sourceRoot":"","sources":["../../../source/mail/models/mail-data.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import type { Entity, NewEntity } from "../../database";
2
+ import type { MailData } from './mail-data.model';
3
+ import type { MailSendResult } from './mail-send-result.model';
4
+ export declare type MailLog = Entity & {
5
+ timestamp: number;
6
+ templateKey?: string;
7
+ data: MailData;
8
+ sendResult?: MailSendResult;
9
+ errors?: string[];
10
+ };
11
+ export declare type NewMailLog = NewEntity<MailLog>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=mail-log.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-log.model.js","sourceRoot":"","sources":["../../../source/mail/models/mail-log.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { MailAddress } from './mail-address.model';
2
+ export declare type MailSendResult = {
3
+ messageId: string;
4
+ accepted: MailAddress[];
5
+ rejected: MailAddress[];
6
+ pending: MailAddress[];
7
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=mail-send-result.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-send-result.model.js","sourceRoot":"","sources":["../../../source/mail/models/mail-send-result.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ export declare type MailTemplate<Type extends string = string, Options = any> = {
2
+ key: string;
3
+ type: Type;
4
+ /** subject template */
5
+ subject?: string;
6
+ /** html template */
7
+ html?: string;
8
+ /** text template */
9
+ text?: string;
10
+ options?: Options;
11
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=mail-template.model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-template.model.js","sourceRoot":"","sources":["../../../source/mail/models/mail-template.model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import type { Type } from "../types";
2
+ import { MailLogRepository } from './mail-log.repository';
3
+ import { MailTemplateProvider } from './mail-template.provider';
4
+ import type { MailTemplateRenderer } from './mail-template.renderer';
5
+ import type { MailClientConfig } from './mail.client';
6
+ import { MailClient } from './mail.client';
7
+ export declare type MailModuleConfig = {
8
+ clientConfig: MailClientConfig;
9
+ client: Type<MailClient>;
10
+ logRepository: Type<MailLogRepository> | undefined;
11
+ templateProvider: Type<MailTemplateProvider>;
12
+ templateRenderers: Type<MailTemplateRenderer>[];
13
+ };
14
+ export declare const mailModuleConfig: MailModuleConfig;
15
+ /**
16
+ * configure mail module
17
+ */
18
+ export declare function configureMail({ clientConfig, client, logRepository, templateProvider, templateRenderers }: Partial<MailModuleConfig>): void;
package/mail/module.js ADDED
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.configureMail = exports.mailModuleConfig = void 0;
4
+ const container_1 = require("../container");
5
+ const type_guards_1 = require("../utils/type-guards");
6
+ const mail_log_repository_1 = require("./mail-log.repository");
7
+ const mail_template_provider_1 = require("./mail-template.provider");
8
+ const mail_client_1 = require("./mail.client");
9
+ const tokens_1 = require("./tokens");
10
+ exports.mailModuleConfig = {
11
+ clientConfig: { host: '127.0.0.1', port: 25 },
12
+ client: (0, container_1.stubClass)(mail_client_1.MailClient),
13
+ logRepository: (0, container_1.stubClass)(mail_log_repository_1.MailLogRepository),
14
+ templateProvider: (0, container_1.stubClass)(mail_template_provider_1.MailTemplateProvider),
15
+ templateRenderers: []
16
+ // queueKey: undefined
17
+ };
18
+ /**
19
+ * configure mail module
20
+ */
21
+ function configureMail({ clientConfig, client, logRepository, templateProvider, templateRenderers /* , queueKey */ }) {
22
+ // mailModuleConfig.queueKey = queueKey ?? mailModuleConfig.queueKey;
23
+ if ((0, type_guards_1.isDefined)(clientConfig)) {
24
+ container_1.container.registerSingleton(tokens_1.MAIL_CLIENT_CONFIG, { useValue: clientConfig });
25
+ }
26
+ if ((0, type_guards_1.isDefined)(client)) {
27
+ container_1.container.registerSingleton(mail_client_1.MailClient, { useToken: client });
28
+ }
29
+ if ((0, type_guards_1.isDefined)(logRepository)) {
30
+ container_1.container.registerSingleton(mail_log_repository_1.MailLogRepository, { useToken: logRepository });
31
+ }
32
+ if ((0, type_guards_1.isDefined)(templateRenderers)) {
33
+ container_1.container.registerSingleton(tokens_1.MAIL_TEMPLATE_RENDERERS, { useValue: templateRenderers });
34
+ }
35
+ if ((0, type_guards_1.isDefined)(templateProvider)) {
36
+ container_1.container.registerSingleton(mail_template_provider_1.MailTemplateProvider, { useToken: templateProvider });
37
+ }
38
+ }
39
+ exports.configureMail = configureMail;
40
+ //# sourceMappingURL=module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../source/mail/module.ts"],"names":[],"mappings":";;;AAAA,4CAAmD;AAEnD,sDAAgD;AAChD,+DAA0D;AAC1D,qEAAgE;AAGhE,+CAA2C;AAC3C,qCAAuE;AAW1D,QAAA,gBAAgB,GAAqB;IAChD,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE;IAC7C,MAAM,EAAE,IAAA,qBAAS,EAAC,wBAAU,CAAC;IAC7B,aAAa,EAAE,IAAA,qBAAS,EAAC,uCAAiB,CAAC;IAC3C,gBAAgB,EAAE,IAAA,qBAAS,EAAC,6CAAoB,CAAC;IACjD,iBAAiB,EAAE,EAAE;IACrB,sBAAsB;CACvB,CAAC;AAEF;;GAEG;AACH,SAAgB,aAAa,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,gBAAgB,EAA6B;IACpJ,qEAAqE;IAErE,IAAI,IAAA,uBAAS,EAAC,YAAY,CAAC,EAAE;QAC3B,qBAAS,CAAC,iBAAiB,CAAC,2BAAkB,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;KAC7E;IAED,IAAI,IAAA,uBAAS,EAAC,MAAM,CAAC,EAAE;QACrB,qBAAS,CAAC,iBAAiB,CAAC,wBAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;KAC/D;IAED,IAAI,IAAA,uBAAS,EAAC,aAAa,CAAC,EAAE;QAC5B,qBAAS,CAAC,iBAAiB,CAAC,uCAAiB,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;KAC7E;IAED,IAAI,IAAA,uBAAS,EAAC,iBAAiB,CAAC,EAAE;QAChC,qBAAS,CAAC,iBAAiB,CAAC,gCAAuB,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;KACvF;IAED,IAAI,IAAA,uBAAS,EAAC,gBAAgB,CAAC,EAAE;QAC/B,qBAAS,CAAC,iBAAiB,CAAC,6CAAoB,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,CAAC;KACnF;AACH,CAAC;AAtBD,sCAsBC"}