elseware-nodejs 1.5.3 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1 +1 @@
1
- # elseware-nodejs
1
+ # elseware-nodejs
package/dist/index.cjs CHANGED
@@ -5,7 +5,11 @@ var dotenv = require('dotenv');
5
5
  var storageBlob = require('@azure/storage-blob');
6
6
  var fs = require('fs');
7
7
  var cloudinaryModule = require('cloudinary');
8
+ var nodemailer = require('nodemailer');
9
+ var path = require('path');
10
+ var Handlebars = require('handlebars');
8
11
  var jwt = require('jsonwebtoken');
12
+ var multer = require('multer');
9
13
 
10
14
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
15
 
@@ -13,7 +17,11 @@ var mongoose__default = /*#__PURE__*/_interopDefault(mongoose);
13
17
  var dotenv__default = /*#__PURE__*/_interopDefault(dotenv);
14
18
  var fs__default = /*#__PURE__*/_interopDefault(fs);
15
19
  var cloudinaryModule__default = /*#__PURE__*/_interopDefault(cloudinaryModule);
20
+ var nodemailer__default = /*#__PURE__*/_interopDefault(nodemailer);
21
+ var path__default = /*#__PURE__*/_interopDefault(path);
22
+ var Handlebars__default = /*#__PURE__*/_interopDefault(Handlebars);
16
23
  var jwt__default = /*#__PURE__*/_interopDefault(jwt);
24
+ var multer__default = /*#__PURE__*/_interopDefault(multer);
17
25
 
18
26
  // src/errors/appError.ts
19
27
  var AppError = class extends Error {
@@ -5297,6 +5305,65 @@ var CloudinaryService = class {
5297
5305
  return this.rootFolder || subFolder;
5298
5306
  }
5299
5307
  };
5308
+ var SMTPProvider = class {
5309
+ transporter;
5310
+ constructor(config) {
5311
+ this.transporter = nodemailer__default.default.createTransport({
5312
+ host: config.host,
5313
+ port: config.port,
5314
+ secure: config.port === 465,
5315
+ auth: {
5316
+ user: config.user,
5317
+ pass: config.pass
5318
+ }
5319
+ });
5320
+ }
5321
+ async sendMail({ to, subject, html, from }) {
5322
+ await this.transporter.sendMail({
5323
+ from,
5324
+ to,
5325
+ subject,
5326
+ html
5327
+ });
5328
+ }
5329
+ };
5330
+ var TemplateEngine = class {
5331
+ static cache = {};
5332
+ static render(templateName, data, templateDir) {
5333
+ const cacheKey = `${templateDir}:${templateName}`;
5334
+ if (!this.cache[cacheKey]) {
5335
+ const filePath = path__default.default.join(templateDir, `${templateName}.hbs`);
5336
+ const source = fs__default.default.readFileSync(filePath, "utf-8");
5337
+ this.cache[cacheKey] = Handlebars__default.default.compile(source);
5338
+ }
5339
+ return this.cache[cacheKey](data);
5340
+ }
5341
+ };
5342
+
5343
+ // src/services/email/email.service.ts
5344
+ var EmailService = class {
5345
+ provider;
5346
+ from;
5347
+ templateDir;
5348
+ constructor(provider, from, templateDir) {
5349
+ this.provider = provider;
5350
+ this.from = from;
5351
+ this.templateDir = templateDir;
5352
+ }
5353
+ async send(options) {
5354
+ const html = TemplateEngine.render(
5355
+ options.template,
5356
+ options.data,
5357
+ this.templateDir
5358
+ );
5359
+ await this.provider.sendMail({
5360
+ to: options.to,
5361
+ subject: options.subject,
5362
+ html,
5363
+ from: this.from
5364
+ });
5365
+ }
5366
+ };
5300
5367
  var JWTService = class {
5301
5368
  accessSecret;
5302
5369
  refreshSecret;
@@ -5412,6 +5479,61 @@ var JWTService = class {
5412
5479
  return value;
5413
5480
  }
5414
5481
  };
5482
+ var MulterFileHandlerService = class {
5483
+ storage;
5484
+ options;
5485
+ constructor(options = {}) {
5486
+ this.options = options;
5487
+ this.storage = options.storage === "memory" ? multer__default.default.memoryStorage() : multer__default.default.diskStorage({});
5488
+ }
5489
+ // File Filter
5490
+ fileFilter = (req, file, cb) => {
5491
+ const { allowedMimeTypes, allowedExtensions } = this.options;
5492
+ const mimeType = file.mimetype;
5493
+ const extFromMime = mimeType.split("/")[1]?.toLowerCase();
5494
+ if (allowedMimeTypes?.length) {
5495
+ if (!allowedMimeTypes.includes(mimeType)) {
5496
+ return cb(
5497
+ new AppError(
5498
+ `Invalid file type! Allowed: ${allowedMimeTypes.join(", ")}`,
5499
+ 400
5500
+ ),
5501
+ false
5502
+ );
5503
+ }
5504
+ }
5505
+ if (allowedExtensions?.length) {
5506
+ if (!extFromMime || !allowedExtensions.includes(extFromMime)) {
5507
+ return cb(
5508
+ new AppError(
5509
+ `Invalid file extension! Allowed: ${allowedExtensions.join(", ")}`,
5510
+ 400
5511
+ ),
5512
+ false
5513
+ );
5514
+ }
5515
+ }
5516
+ cb(null, true);
5517
+ };
5518
+ // Build multer instance
5519
+ buildUploader() {
5520
+ return multer__default.default({
5521
+ storage: this.storage,
5522
+ fileFilter: this.fileFilter,
5523
+ limits: this.options.fileSizeLimit ? { fileSize: this.options.fileSizeLimit } : void 0
5524
+ });
5525
+ }
5526
+ // Public API
5527
+ single(fieldName) {
5528
+ return this.buildUploader().single(fieldName);
5529
+ }
5530
+ array(fieldName, maxCount) {
5531
+ return this.buildUploader().array(fieldName, maxCount);
5532
+ }
5533
+ fields(fields) {
5534
+ return this.buildUploader().fields(fields);
5535
+ }
5536
+ };
5415
5537
 
5416
5538
  // src/utils/time.ts
5417
5539
  function milliseconds(value) {
@@ -5467,6 +5589,7 @@ exports.DirectedGraph = DirectedGraph;
5467
5589
  exports.DisjointSetUnion = DisjointSetUnion;
5468
5590
  exports.DoublyLinkedList = DoublyLinkedList;
5469
5591
  exports.DynamicArray = DynamicArray;
5592
+ exports.EmailService = EmailService;
5470
5593
  exports.FenwickTree = FenwickTree;
5471
5594
  exports.FibNode = FibNode;
5472
5595
  exports.FibonacciHeap = FibonacciHeap;
@@ -5484,6 +5607,7 @@ exports.MaxHeap = MaxHeap;
5484
5607
  exports.MaxStack = MaxStack;
5485
5608
  exports.MinHeap = MinHeap;
5486
5609
  exports.MinStack = MinStack;
5610
+ exports.MulterFileHandlerService = MulterFileHandlerService;
5487
5611
  exports.MultiSet = MultiSet;
5488
5612
  exports.Node = Node;
5489
5613
  exports.OrderedSet = OrderedSet;
@@ -5494,6 +5618,7 @@ exports.QuadTree = QuadTree;
5494
5618
  exports.Queue = Queue;
5495
5619
  exports.RadixTree = RadixTree;
5496
5620
  exports.RedBlackTree = RedBlackTree;
5621
+ exports.SMTPProvider = SMTPProvider;
5497
5622
  exports.SegmentTree = SegmentTree;
5498
5623
  exports.Set = Set2;
5499
5624
  exports.SinglyLinkedList = SinglyLinkedList;
@@ -5503,6 +5628,7 @@ exports.Stack = Stack;
5503
5628
  exports.StaticArray = StaticArray;
5504
5629
  exports.SuffixArray = SuffixArray;
5505
5630
  exports.SuffixTree = SuffixTree;
5631
+ exports.TemplateEngine = TemplateEngine;
5506
5632
  exports.TernarySearchTree = TernarySearchTree;
5507
5633
  exports.TreeNode = TreeNode;
5508
5634
  exports.Trie = Trie;