@devbro/pashmak 0.1.47 → 0.1.49

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 (42) hide show
  1. package/dist/DatabaseServiceProvider.d.mts +4 -1
  2. package/dist/DatabaseServiceProvider.mjs +5 -2
  3. package/dist/DatabaseServiceProvider.mjs.map +1 -1
  4. package/dist/app/console/StartCommand.d.mts +1 -0
  5. package/dist/app/console/StartCommand.mjs +5 -2
  6. package/dist/app/console/StartCommand.mjs.map +1 -1
  7. package/dist/app/console/generate/GenerateApiDocsCommand.d.mts +34 -2
  8. package/dist/app/console/generate/GenerateApiDocsCommand.mjs +183 -100
  9. package/dist/app/console/generate/GenerateApiDocsCommand.mjs.map +1 -1
  10. package/dist/app/console/project/base_project/src/config/storages.ts.tpl +2 -2
  11. package/dist/bin/DatabaseServiceProvider.cjs +8 -2
  12. package/dist/bin/app/console/DefaultCommand.cjs +64 -32
  13. package/dist/bin/app/console/KeyGenerateCommand.cjs +64 -32
  14. package/dist/bin/app/console/StartCommand.cjs +69 -34
  15. package/dist/bin/app/console/generate/GenerateApiDocsCommand.cjs +248 -133
  16. package/dist/bin/app/console/generate/GenerateControllerCommand.cjs +64 -32
  17. package/dist/bin/app/console/generate/index.cjs +248 -133
  18. package/dist/bin/app/console/index.cjs +253 -135
  19. package/dist/bin/app/console/migrate/GenerateMigrateCommand.cjs +64 -32
  20. package/dist/bin/app/console/migrate/MigrateCommand.cjs +64 -32
  21. package/dist/bin/app/console/migrate/MigrateRollbackCommand.cjs +64 -32
  22. package/dist/bin/app/console/migrate/index.cjs +64 -32
  23. package/dist/bin/app/console/queue/GenerateQueueMigrateCommand.cjs +64 -32
  24. package/dist/bin/cache.cjs +64 -32
  25. package/dist/bin/facades.cjs +64 -32
  26. package/dist/bin/factories.cjs +64 -32
  27. package/dist/bin/http.cjs +739 -0
  28. package/dist/bin/index.cjs +264 -141
  29. package/dist/bin/middlewares.cjs +66 -34
  30. package/dist/bin/queue.cjs +64 -32
  31. package/dist/bin/router.cjs +4 -8
  32. package/dist/config.d.mts +0 -1
  33. package/dist/facades.mjs +2 -13
  34. package/dist/facades.mjs.map +1 -1
  35. package/dist/factories.mjs +45 -2
  36. package/dist/factories.mjs.map +1 -1
  37. package/dist/http.d.mts +4 -0
  38. package/dist/http.mjs +20 -0
  39. package/dist/http.mjs.map +1 -1
  40. package/dist/queue.d.mts +1 -1
  41. package/dist/queue.mjs.map +1 -1
  42. package/package.json +1 -1
@@ -1234,6 +1234,7 @@ var MiddlewareFactory = class {
1234
1234
  };
1235
1235
 
1236
1236
  // ../neko-router/dist/CompiledRoute.mjs
1237
+ var import_neko_helper = require("@devbro/neko-helper");
1237
1238
  var CompiledRoute = class {
1238
1239
  static {
1239
1240
  __name(this, "CompiledRoute");
@@ -1254,7 +1255,7 @@ var CompiledRoute = class {
1254
1255
  for (const middleware of [...this.globalMiddlewares, ...this.route.getMiddlewares()]) {
1255
1256
  if (middleware instanceof Middleware) {
1256
1257
  this.middlewares.push(middleware);
1257
- } else if (this.isClass(middleware)) {
1258
+ } else if ((0, import_neko_helper.isClass)(middleware)) {
1258
1259
  this.middlewares.push(middleware.getInstance({}));
1259
1260
  } else if (typeof middleware === "function") {
1260
1261
  this.middlewares.push(MiddlewareFactory.create(middleware));
@@ -1263,13 +1264,8 @@ var CompiledRoute = class {
1263
1264
  }
1264
1265
  }
1265
1266
  }
1266
- isClass(func) {
1267
- return typeof func === "function" && /^class\s/.test(Function.prototype.toString.call(func));
1268
- }
1269
1267
  async run() {
1270
- let rc = await this.runMiddlewares(this.middlewares, this.request, this.response);
1271
- this.response.end();
1272
- return rc;
1268
+ return await this.runMiddlewares(this.middlewares, this.request, this.response);
1273
1269
  }
1274
1270
  prepareOutputJsonFormat(obj) {
1275
1271
  function traverse(value) {
@@ -1403,7 +1399,7 @@ var Route = class {
1403
1399
  i = start;
1404
1400
  } else if (char === "*") {
1405
1401
  let start = i + 1;
1406
- while (start < path5.length && /[a-zA-Z0-9_\.]/.test(path5[start])) {
1402
+ while (start < path5.length && /[a-zA-Z0-9_]/.test(path5[start])) {
1407
1403
  start++;
1408
1404
  }
1409
1405
  tokens.push({ type: "WILDCARD", value: path5.slice(i + 1, start) });
@@ -1614,7 +1610,7 @@ var Router = class {
1614
1610
 
1615
1611
  // src/facades.mts
1616
1612
  var import_neko_scheduler = require("@devbro/neko-scheduler");
1617
- var import_neko_helper2 = require("@devbro/neko-helper");
1613
+ var import_neko_helper3 = require("@devbro/neko-helper");
1618
1614
  var import_neko_context3 = require("@devbro/neko-context");
1619
1615
  var import_neko_storage2 = require("@devbro/neko-storage");
1620
1616
  var import_neko_mailer2 = require("@devbro/neko-mailer");
@@ -1623,7 +1619,24 @@ var import_clipanion = require("clipanion");
1623
1619
 
1624
1620
  // src/http.mts
1625
1621
  var http_exports = {};
1622
+ __export(http_exports, {
1623
+ handleHttpErrors: () => handleHttpErrors
1624
+ });
1625
+ var import_neko_http = require("@devbro/neko-http");
1626
1626
  __reExport(http_exports, require("@devbro/neko-http"));
1627
+ async function handleHttpErrors(err, req, res) {
1628
+ if (err instanceof import_neko_http.HttpError) {
1629
+ res.writeHead(err.statusCode, { "Content-Type": "application/json" });
1630
+ res.write(JSON.stringify({ message: err.message, error: err.code }));
1631
+ logger().warn({ msg: "HttpError: " + err.message, err });
1632
+ return;
1633
+ } else {
1634
+ logger().error({ msg: "Error: " + err.message, err });
1635
+ }
1636
+ res.writeHead(500, { "Content-Type": "application/json" });
1637
+ res.write(JSON.stringify({ error: "Internal Server Error" }));
1638
+ }
1639
+ __name(handleHttpErrors, "handleHttpErrors");
1627
1640
 
1628
1641
  // src/facades.mts
1629
1642
  var import_neko_logger = require("@devbro/neko-logger");
@@ -1638,7 +1651,7 @@ __export(queue_exports, {
1638
1651
  DatabaseTransport: () => DatabaseTransport
1639
1652
  });
1640
1653
  __reExport(queue_exports, require("@devbro/neko-queue"));
1641
- var import_neko_helper = require("@devbro/neko-helper");
1654
+ var import_neko_helper2 = require("@devbro/neko-helper");
1642
1655
  var import_neko_context2 = require("@devbro/neko-context");
1643
1656
  var DatabaseTransport = class {
1644
1657
  static {
@@ -1699,7 +1712,7 @@ var DatabaseTransport = class {
1699
1712
  }, "processMessage");
1700
1713
  constructor(config5 = {}) {
1701
1714
  this.config = { ...this.config, ...config5 };
1702
- this.repeater = (0, import_neko_helper.createRepeater)(
1715
+ this.repeater = (0, import_neko_helper2.createRepeater)(
1703
1716
  this.processMessage,
1704
1717
  this.config.listen_interval * 1e3
1705
1718
  );
@@ -1767,6 +1780,24 @@ import_neko_queue.QueueTransportFactory.register("database", (opt) => {
1767
1780
  import_neko_queue.QueueTransportFactory.register("memory", (opt) => {
1768
1781
  return new import_neko_queue.MemoryTransport(opt);
1769
1782
  });
1783
+ import_neko_queue.QueueTransportFactory.register("sqs", (opt) => {
1784
+ return new import_neko_queue.AwsSqsTransport(opt);
1785
+ });
1786
+ import_neko_queue.QueueTransportFactory.register("amqp", (opt) => {
1787
+ return new import_neko_queue.AmqpTransport(opt);
1788
+ });
1789
+ import_neko_queue.QueueTransportFactory.register("redis", (opt) => {
1790
+ return new import_neko_queue.RedisTransport(opt);
1791
+ });
1792
+ import_neko_queue.QueueTransportFactory.register("async", (opt) => {
1793
+ return new import_neko_queue.AsyncTransport();
1794
+ });
1795
+ import_neko_queue.QueueTransportFactory.register("azure_service_bus", (opt) => {
1796
+ return new import_neko_queue.AzureServiceBusTransport(opt);
1797
+ });
1798
+ import_neko_queue.QueueTransportFactory.register("google_pubsub", (opt) => {
1799
+ return new import_neko_queue.GooglePubSubTransport(opt);
1800
+ });
1770
1801
  var CacheProviderFactory = class _CacheProviderFactory {
1771
1802
  static {
1772
1803
  __name(this, "CacheProviderFactory");
@@ -1797,12 +1828,24 @@ import_neko_storage.StorageProviderFactory.register("local", (opt) => {
1797
1828
  import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
1798
1829
  return new import_neko_storage.AWSS3StorageProvider(opt);
1799
1830
  });
1831
+ import_neko_storage.StorageProviderFactory.register("gcp", (opt) => {
1832
+ return new import_neko_storage.GCPStorageProvider(opt);
1833
+ });
1834
+ import_neko_storage.StorageProviderFactory.register("azure", (opt) => {
1835
+ return new import_neko_storage.AzureBlobStorageProvider(opt);
1836
+ });
1837
+ import_neko_storage.StorageProviderFactory.register("ftp", (opt) => {
1838
+ return new import_neko_storage.FTPStorageProvider(opt);
1839
+ });
1840
+ import_neko_storage.StorageProviderFactory.register("sftp", (opt) => {
1841
+ return new import_neko_storage.SFTPStorageProvider(opt);
1842
+ });
1800
1843
 
1801
1844
  // src/facades.mts
1802
1845
  var import_neko_cache2 = require("@devbro/neko-cache");
1803
1846
  var import_neko_queue2 = require("@devbro/neko-queue");
1804
- var router = (0, import_neko_helper2.createSingleton)(() => new Router());
1805
- var scheduler = (0, import_neko_helper2.createSingleton)(() => {
1847
+ var router = (0, import_neko_helper3.createSingleton)(() => new Router());
1848
+ var scheduler = (0, import_neko_helper3.createSingleton)(() => {
1806
1849
  const rc = new import_neko_scheduler.Scheduler();
1807
1850
  rc.setErrorHandler((err, job) => {
1808
1851
  logger().error({
@@ -1814,7 +1857,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
1814
1857
  return rc;
1815
1858
  });
1816
1859
  var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
1817
- var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
1860
+ var storage = (0, import_neko_helper3.createSingleton)((label = "default") => {
1818
1861
  let storage_config = import_neko_config.config.get(["storages", label].join("."));
1819
1862
  const provider = import_neko_storage2.StorageProviderFactory.create(
1820
1863
  storage_config.provider,
@@ -1822,7 +1865,7 @@ var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
1822
1865
  );
1823
1866
  return new import_neko_storage2.Storage(provider);
1824
1867
  });
1825
- var cli = (0, import_neko_helper2.createSingleton)(() => {
1868
+ var cli = (0, import_neko_helper3.createSingleton)(() => {
1826
1869
  const [node, app, ...args] = process.argv;
1827
1870
  return new import_clipanion.Cli({
1828
1871
  binaryLabel: `My Application`,
@@ -1830,24 +1873,13 @@ var cli = (0, import_neko_helper2.createSingleton)(() => {
1830
1873
  binaryVersion: `1.0.0`
1831
1874
  });
1832
1875
  });
1833
- var httpServer = (0, import_neko_helper2.createSingleton)(() => {
1876
+ var httpServer = (0, import_neko_helper3.createSingleton)(() => {
1834
1877
  const server = new http_exports.HttpServer();
1835
- server.setErrorHandler(async (err, req, res) => {
1836
- if (err instanceof http_exports.HttpError) {
1837
- res.writeHead(err.statusCode, { "Content-Type": "application/json" });
1838
- res.end(JSON.stringify({ message: err.message, error: err.code }));
1839
- logger().warn({ msg: "HttpError: " + err.message, err });
1840
- return;
1841
- } else {
1842
- logger().error({ msg: "Error: " + err.message, err });
1843
- }
1844
- res.writeHead(500, { "Content-Type": "" });
1845
- res.end(JSON.stringify({ error: "Internal Server Error" }));
1846
- });
1878
+ server.setErrorHandler(handleHttpErrors);
1847
1879
  server.setRouter(router());
1848
1880
  return server;
1849
1881
  });
1850
- var logger = (0, import_neko_helper2.createSingleton)((label) => {
1882
+ var logger = (0, import_neko_helper3.createSingleton)((label) => {
1851
1883
  const logger_config = import_neko_config.config.get(["loggers", label].join("."));
1852
1884
  const rc = new import_neko_logger.Logger(logger_config);
1853
1885
  rc.setExtrasFunction((message) => {
@@ -1856,7 +1888,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
1856
1888
  });
1857
1889
  return rc;
1858
1890
  });
1859
- var mailer = (0, import_neko_helper2.createSingleton)((label) => {
1891
+ var mailer = (0, import_neko_helper3.createSingleton)((label) => {
1860
1892
  const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
1861
1893
  const provider = import_neko_mailer2.MailerProviderFactory.create(
1862
1894
  mailer_config.provider,
@@ -1865,7 +1897,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
1865
1897
  const rc = new import_neko_mailer2.Mailer(provider);
1866
1898
  return rc;
1867
1899
  });
1868
- var queue = (0, import_neko_helper2.createSingleton)((label) => {
1900
+ var queue = (0, import_neko_helper3.createSingleton)((label) => {
1869
1901
  const queue_config = import_neko_config.config.get(["queues", label].join("."));
1870
1902
  if (!queue_config) {
1871
1903
  throw new Error(`Queue configuration for '${label}' not found`);
@@ -1876,7 +1908,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
1876
1908
  );
1877
1909
  return new import_neko_queue2.QueueConnection(provider);
1878
1910
  });
1879
- var cache = (0, import_neko_helper2.createSingleton)((label) => {
1911
+ var cache = (0, import_neko_helper3.createSingleton)((label) => {
1880
1912
  const cache_config = import_neko_config.config.get(["caches", label].join("."));
1881
1913
  if (!cache_config) {
1882
1914
  throw new Error(`Cache configuration for '${label}' not found`);
@@ -77,6 +77,7 @@ var MiddlewareFactory = class {
77
77
  };
78
78
 
79
79
  // ../neko-router/dist/CompiledRoute.mjs
80
+ var import_neko_helper = require("@devbro/neko-helper");
80
81
  var CompiledRoute = class {
81
82
  static {
82
83
  __name(this, "CompiledRoute");
@@ -97,7 +98,7 @@ var CompiledRoute = class {
97
98
  for (const middleware of [...this.globalMiddlewares, ...this.route.getMiddlewares()]) {
98
99
  if (middleware instanceof Middleware) {
99
100
  this.middlewares.push(middleware);
100
- } else if (this.isClass(middleware)) {
101
+ } else if ((0, import_neko_helper.isClass)(middleware)) {
101
102
  this.middlewares.push(middleware.getInstance({}));
102
103
  } else if (typeof middleware === "function") {
103
104
  this.middlewares.push(MiddlewareFactory.create(middleware));
@@ -106,13 +107,8 @@ var CompiledRoute = class {
106
107
  }
107
108
  }
108
109
  }
109
- isClass(func) {
110
- return typeof func === "function" && /^class\s/.test(Function.prototype.toString.call(func));
111
- }
112
110
  async run() {
113
- let rc = await this.runMiddlewares(this.middlewares, this.request, this.response);
114
- this.response.end();
115
- return rc;
111
+ return await this.runMiddlewares(this.middlewares, this.request, this.response);
116
112
  }
117
113
  prepareOutputJsonFormat(obj) {
118
114
  function traverse(value) {
@@ -246,7 +242,7 @@ var Route = class {
246
242
  i = start;
247
243
  } else if (char === "*") {
248
244
  let start = i + 1;
249
- while (start < path3.length && /[a-zA-Z0-9_\.]/.test(path3[start])) {
245
+ while (start < path3.length && /[a-zA-Z0-9_]/.test(path3[start])) {
250
246
  start++;
251
247
  }
252
248
  tokens.push({ type: "WILDCARD", value: path3.slice(i + 1, start) });
@@ -457,7 +453,7 @@ var Router = class {
457
453
 
458
454
  // src/facades.mts
459
455
  var import_neko_scheduler = require("@devbro/neko-scheduler");
460
- var import_neko_helper2 = require("@devbro/neko-helper");
456
+ var import_neko_helper3 = require("@devbro/neko-helper");
461
457
  var import_neko_context3 = require("@devbro/neko-context");
462
458
  var import_neko_storage2 = require("@devbro/neko-storage");
463
459
  var import_neko_mailer2 = require("@devbro/neko-mailer");
@@ -466,7 +462,24 @@ var import_clipanion = require("clipanion");
466
462
 
467
463
  // src/http.mts
468
464
  var http_exports = {};
465
+ __export(http_exports, {
466
+ handleHttpErrors: () => handleHttpErrors
467
+ });
468
+ var import_neko_http = require("@devbro/neko-http");
469
469
  __reExport(http_exports, require("@devbro/neko-http"));
470
+ async function handleHttpErrors(err, req, res) {
471
+ if (err instanceof import_neko_http.HttpError) {
472
+ res.writeHead(err.statusCode, { "Content-Type": "application/json" });
473
+ res.write(JSON.stringify({ message: err.message, error: err.code }));
474
+ logger().warn({ msg: "HttpError: " + err.message, err });
475
+ return;
476
+ } else {
477
+ logger().error({ msg: "Error: " + err.message, err });
478
+ }
479
+ res.writeHead(500, { "Content-Type": "application/json" });
480
+ res.write(JSON.stringify({ error: "Internal Server Error" }));
481
+ }
482
+ __name(handleHttpErrors, "handleHttpErrors");
470
483
 
471
484
  // src/facades.mts
472
485
  var import_neko_logger = require("@devbro/neko-logger");
@@ -481,7 +494,7 @@ __export(queue_exports, {
481
494
  DatabaseTransport: () => DatabaseTransport
482
495
  });
483
496
  __reExport(queue_exports, require("@devbro/neko-queue"));
484
- var import_neko_helper = require("@devbro/neko-helper");
497
+ var import_neko_helper2 = require("@devbro/neko-helper");
485
498
  var import_neko_context2 = require("@devbro/neko-context");
486
499
  var DatabaseTransport = class {
487
500
  static {
@@ -542,7 +555,7 @@ var DatabaseTransport = class {
542
555
  }, "processMessage");
543
556
  constructor(config3 = {}) {
544
557
  this.config = { ...this.config, ...config3 };
545
- this.repeater = (0, import_neko_helper.createRepeater)(
558
+ this.repeater = (0, import_neko_helper2.createRepeater)(
546
559
  this.processMessage,
547
560
  this.config.listen_interval * 1e3
548
561
  );
@@ -610,6 +623,24 @@ import_neko_queue.QueueTransportFactory.register("database", (opt) => {
610
623
  import_neko_queue.QueueTransportFactory.register("memory", (opt) => {
611
624
  return new import_neko_queue.MemoryTransport(opt);
612
625
  });
626
+ import_neko_queue.QueueTransportFactory.register("sqs", (opt) => {
627
+ return new import_neko_queue.AwsSqsTransport(opt);
628
+ });
629
+ import_neko_queue.QueueTransportFactory.register("amqp", (opt) => {
630
+ return new import_neko_queue.AmqpTransport(opt);
631
+ });
632
+ import_neko_queue.QueueTransportFactory.register("redis", (opt) => {
633
+ return new import_neko_queue.RedisTransport(opt);
634
+ });
635
+ import_neko_queue.QueueTransportFactory.register("async", (opt) => {
636
+ return new import_neko_queue.AsyncTransport();
637
+ });
638
+ import_neko_queue.QueueTransportFactory.register("azure_service_bus", (opt) => {
639
+ return new import_neko_queue.AzureServiceBusTransport(opt);
640
+ });
641
+ import_neko_queue.QueueTransportFactory.register("google_pubsub", (opt) => {
642
+ return new import_neko_queue.GooglePubSubTransport(opt);
643
+ });
613
644
  var CacheProviderFactory = class _CacheProviderFactory {
614
645
  static {
615
646
  __name(this, "CacheProviderFactory");
@@ -640,12 +671,24 @@ import_neko_storage.StorageProviderFactory.register("local", (opt) => {
640
671
  import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
641
672
  return new import_neko_storage.AWSS3StorageProvider(opt);
642
673
  });
674
+ import_neko_storage.StorageProviderFactory.register("gcp", (opt) => {
675
+ return new import_neko_storage.GCPStorageProvider(opt);
676
+ });
677
+ import_neko_storage.StorageProviderFactory.register("azure", (opt) => {
678
+ return new import_neko_storage.AzureBlobStorageProvider(opt);
679
+ });
680
+ import_neko_storage.StorageProviderFactory.register("ftp", (opt) => {
681
+ return new import_neko_storage.FTPStorageProvider(opt);
682
+ });
683
+ import_neko_storage.StorageProviderFactory.register("sftp", (opt) => {
684
+ return new import_neko_storage.SFTPStorageProvider(opt);
685
+ });
643
686
 
644
687
  // src/facades.mts
645
688
  var import_neko_cache2 = require("@devbro/neko-cache");
646
689
  var import_neko_queue2 = require("@devbro/neko-queue");
647
- var router = (0, import_neko_helper2.createSingleton)(() => new Router());
648
- var scheduler = (0, import_neko_helper2.createSingleton)(() => {
690
+ var router = (0, import_neko_helper3.createSingleton)(() => new Router());
691
+ var scheduler = (0, import_neko_helper3.createSingleton)(() => {
649
692
  const rc = new import_neko_scheduler.Scheduler();
650
693
  rc.setErrorHandler((err, job) => {
651
694
  logger().error({
@@ -657,7 +700,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
657
700
  return rc;
658
701
  });
659
702
  var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
660
- var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
703
+ var storage = (0, import_neko_helper3.createSingleton)((label = "default") => {
661
704
  let storage_config = import_neko_config.config.get(["storages", label].join("."));
662
705
  const provider = import_neko_storage2.StorageProviderFactory.create(
663
706
  storage_config.provider,
@@ -665,7 +708,7 @@ var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
665
708
  );
666
709
  return new import_neko_storage2.Storage(provider);
667
710
  });
668
- var cli = (0, import_neko_helper2.createSingleton)(() => {
711
+ var cli = (0, import_neko_helper3.createSingleton)(() => {
669
712
  const [node, app, ...args] = process.argv;
670
713
  return new import_clipanion.Cli({
671
714
  binaryLabel: `My Application`,
@@ -673,24 +716,13 @@ var cli = (0, import_neko_helper2.createSingleton)(() => {
673
716
  binaryVersion: `1.0.0`
674
717
  });
675
718
  });
676
- var httpServer = (0, import_neko_helper2.createSingleton)(() => {
719
+ var httpServer = (0, import_neko_helper3.createSingleton)(() => {
677
720
  const server = new http_exports.HttpServer();
678
- server.setErrorHandler(async (err, req, res) => {
679
- if (err instanceof http_exports.HttpError) {
680
- res.writeHead(err.statusCode, { "Content-Type": "application/json" });
681
- res.end(JSON.stringify({ message: err.message, error: err.code }));
682
- logger().warn({ msg: "HttpError: " + err.message, err });
683
- return;
684
- } else {
685
- logger().error({ msg: "Error: " + err.message, err });
686
- }
687
- res.writeHead(500, { "Content-Type": "" });
688
- res.end(JSON.stringify({ error: "Internal Server Error" }));
689
- });
721
+ server.setErrorHandler(handleHttpErrors);
690
722
  server.setRouter(router());
691
723
  return server;
692
724
  });
693
- var logger = (0, import_neko_helper2.createSingleton)((label) => {
725
+ var logger = (0, import_neko_helper3.createSingleton)((label) => {
694
726
  const logger_config = import_neko_config.config.get(["loggers", label].join("."));
695
727
  const rc = new import_neko_logger.Logger(logger_config);
696
728
  rc.setExtrasFunction((message) => {
@@ -699,7 +731,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
699
731
  });
700
732
  return rc;
701
733
  });
702
- var mailer = (0, import_neko_helper2.createSingleton)((label) => {
734
+ var mailer = (0, import_neko_helper3.createSingleton)((label) => {
703
735
  const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
704
736
  const provider = import_neko_mailer2.MailerProviderFactory.create(
705
737
  mailer_config.provider,
@@ -708,7 +740,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
708
740
  const rc = new import_neko_mailer2.Mailer(provider);
709
741
  return rc;
710
742
  });
711
- var queue = (0, import_neko_helper2.createSingleton)((label) => {
743
+ var queue = (0, import_neko_helper3.createSingleton)((label) => {
712
744
  const queue_config = import_neko_config.config.get(["queues", label].join("."));
713
745
  if (!queue_config) {
714
746
  throw new Error(`Queue configuration for '${label}' not found`);
@@ -719,7 +751,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
719
751
  );
720
752
  return new import_neko_queue2.QueueConnection(provider);
721
753
  });
722
- var cache = (0, import_neko_helper2.createSingleton)((label) => {
754
+ var cache = (0, import_neko_helper3.createSingleton)((label) => {
723
755
  const cache_config = import_neko_config.config.get(["caches", label].join("."));
724
756
  if (!cache_config) {
725
757
  throw new Error(`Cache configuration for '${label}' not found`);
@@ -78,6 +78,7 @@ var MiddlewareFactory = class {
78
78
  };
79
79
 
80
80
  // ../neko-router/dist/CompiledRoute.mjs
81
+ var import_neko_helper = require("@devbro/neko-helper");
81
82
  var CompiledRoute = class {
82
83
  static {
83
84
  __name(this, "CompiledRoute");
@@ -98,7 +99,7 @@ var CompiledRoute = class {
98
99
  for (const middleware of [...this.globalMiddlewares, ...this.route.getMiddlewares()]) {
99
100
  if (middleware instanceof Middleware) {
100
101
  this.middlewares.push(middleware);
101
- } else if (this.isClass(middleware)) {
102
+ } else if ((0, import_neko_helper.isClass)(middleware)) {
102
103
  this.middlewares.push(middleware.getInstance({}));
103
104
  } else if (typeof middleware === "function") {
104
105
  this.middlewares.push(MiddlewareFactory.create(middleware));
@@ -107,13 +108,8 @@ var CompiledRoute = class {
107
108
  }
108
109
  }
109
110
  }
110
- isClass(func) {
111
- return typeof func === "function" && /^class\s/.test(Function.prototype.toString.call(func));
112
- }
113
111
  async run() {
114
- let rc = await this.runMiddlewares(this.middlewares, this.request, this.response);
115
- this.response.end();
116
- return rc;
112
+ return await this.runMiddlewares(this.middlewares, this.request, this.response);
117
113
  }
118
114
  prepareOutputJsonFormat(obj) {
119
115
  function traverse(value) {
@@ -247,7 +243,7 @@ var Route = class {
247
243
  i = start;
248
244
  } else if (char === "*") {
249
245
  let start = i + 1;
250
- while (start < path2.length && /[a-zA-Z0-9_\.]/.test(path2[start])) {
246
+ while (start < path2.length && /[a-zA-Z0-9_]/.test(path2[start])) {
251
247
  start++;
252
248
  }
253
249
  tokens.push({ type: "WILDCARD", value: path2.slice(i + 1, start) });
@@ -458,7 +454,7 @@ var Router = class {
458
454
 
459
455
  // src/facades.mts
460
456
  var import_neko_scheduler = require("@devbro/neko-scheduler");
461
- var import_neko_helper2 = require("@devbro/neko-helper");
457
+ var import_neko_helper3 = require("@devbro/neko-helper");
462
458
  var import_neko_context3 = require("@devbro/neko-context");
463
459
  var import_neko_storage2 = require("@devbro/neko-storage");
464
460
  var import_neko_mailer2 = require("@devbro/neko-mailer");
@@ -467,7 +463,24 @@ var import_clipanion = require("clipanion");
467
463
 
468
464
  // src/http.mts
469
465
  var http_exports = {};
466
+ __export(http_exports, {
467
+ handleHttpErrors: () => handleHttpErrors
468
+ });
469
+ var import_neko_http = require("@devbro/neko-http");
470
470
  __reExport(http_exports, require("@devbro/neko-http"));
471
+ async function handleHttpErrors(err, req, res) {
472
+ if (err instanceof import_neko_http.HttpError) {
473
+ res.writeHead(err.statusCode, { "Content-Type": "application/json" });
474
+ res.write(JSON.stringify({ message: err.message, error: err.code }));
475
+ logger().warn({ msg: "HttpError: " + err.message, err });
476
+ return;
477
+ } else {
478
+ logger().error({ msg: "Error: " + err.message, err });
479
+ }
480
+ res.writeHead(500, { "Content-Type": "application/json" });
481
+ res.write(JSON.stringify({ error: "Internal Server Error" }));
482
+ }
483
+ __name(handleHttpErrors, "handleHttpErrors");
471
484
 
472
485
  // src/facades.mts
473
486
  var import_neko_logger = require("@devbro/neko-logger");
@@ -482,7 +495,7 @@ __export(queue_exports, {
482
495
  DatabaseTransport: () => DatabaseTransport
483
496
  });
484
497
  __reExport(queue_exports, require("@devbro/neko-queue"));
485
- var import_neko_helper = require("@devbro/neko-helper");
498
+ var import_neko_helper2 = require("@devbro/neko-helper");
486
499
  var import_neko_context2 = require("@devbro/neko-context");
487
500
  var DatabaseTransport = class {
488
501
  static {
@@ -543,7 +556,7 @@ var DatabaseTransport = class {
543
556
  }, "processMessage");
544
557
  constructor(config2 = {}) {
545
558
  this.config = { ...this.config, ...config2 };
546
- this.repeater = (0, import_neko_helper.createRepeater)(
559
+ this.repeater = (0, import_neko_helper2.createRepeater)(
547
560
  this.processMessage,
548
561
  this.config.listen_interval * 1e3
549
562
  );
@@ -611,6 +624,24 @@ import_neko_queue.QueueTransportFactory.register("database", (opt) => {
611
624
  import_neko_queue.QueueTransportFactory.register("memory", (opt) => {
612
625
  return new import_neko_queue.MemoryTransport(opt);
613
626
  });
627
+ import_neko_queue.QueueTransportFactory.register("sqs", (opt) => {
628
+ return new import_neko_queue.AwsSqsTransport(opt);
629
+ });
630
+ import_neko_queue.QueueTransportFactory.register("amqp", (opt) => {
631
+ return new import_neko_queue.AmqpTransport(opt);
632
+ });
633
+ import_neko_queue.QueueTransportFactory.register("redis", (opt) => {
634
+ return new import_neko_queue.RedisTransport(opt);
635
+ });
636
+ import_neko_queue.QueueTransportFactory.register("async", (opt) => {
637
+ return new import_neko_queue.AsyncTransport();
638
+ });
639
+ import_neko_queue.QueueTransportFactory.register("azure_service_bus", (opt) => {
640
+ return new import_neko_queue.AzureServiceBusTransport(opt);
641
+ });
642
+ import_neko_queue.QueueTransportFactory.register("google_pubsub", (opt) => {
643
+ return new import_neko_queue.GooglePubSubTransport(opt);
644
+ });
614
645
  var CacheProviderFactory = class _CacheProviderFactory {
615
646
  static {
616
647
  __name(this, "CacheProviderFactory");
@@ -641,12 +672,24 @@ import_neko_storage.StorageProviderFactory.register("local", (opt) => {
641
672
  import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
642
673
  return new import_neko_storage.AWSS3StorageProvider(opt);
643
674
  });
675
+ import_neko_storage.StorageProviderFactory.register("gcp", (opt) => {
676
+ return new import_neko_storage.GCPStorageProvider(opt);
677
+ });
678
+ import_neko_storage.StorageProviderFactory.register("azure", (opt) => {
679
+ return new import_neko_storage.AzureBlobStorageProvider(opt);
680
+ });
681
+ import_neko_storage.StorageProviderFactory.register("ftp", (opt) => {
682
+ return new import_neko_storage.FTPStorageProvider(opt);
683
+ });
684
+ import_neko_storage.StorageProviderFactory.register("sftp", (opt) => {
685
+ return new import_neko_storage.SFTPStorageProvider(opt);
686
+ });
644
687
 
645
688
  // src/facades.mts
646
689
  var import_neko_cache2 = require("@devbro/neko-cache");
647
690
  var import_neko_queue2 = require("@devbro/neko-queue");
648
- var router = (0, import_neko_helper2.createSingleton)(() => new Router());
649
- var scheduler = (0, import_neko_helper2.createSingleton)(() => {
691
+ var router = (0, import_neko_helper3.createSingleton)(() => new Router());
692
+ var scheduler = (0, import_neko_helper3.createSingleton)(() => {
650
693
  const rc = new import_neko_scheduler.Scheduler();
651
694
  rc.setErrorHandler((err, job) => {
652
695
  logger().error({
@@ -658,7 +701,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
658
701
  return rc;
659
702
  });
660
703
  var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
661
- var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
704
+ var storage = (0, import_neko_helper3.createSingleton)((label = "default") => {
662
705
  let storage_config = import_neko_config.config.get(["storages", label].join("."));
663
706
  const provider = import_neko_storage2.StorageProviderFactory.create(
664
707
  storage_config.provider,
@@ -666,7 +709,7 @@ var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
666
709
  );
667
710
  return new import_neko_storage2.Storage(provider);
668
711
  });
669
- var cli = (0, import_neko_helper2.createSingleton)(() => {
712
+ var cli = (0, import_neko_helper3.createSingleton)(() => {
670
713
  const [node, app, ...args] = process.argv;
671
714
  return new import_clipanion.Cli({
672
715
  binaryLabel: `My Application`,
@@ -674,24 +717,13 @@ var cli = (0, import_neko_helper2.createSingleton)(() => {
674
717
  binaryVersion: `1.0.0`
675
718
  });
676
719
  });
677
- var httpServer = (0, import_neko_helper2.createSingleton)(() => {
720
+ var httpServer = (0, import_neko_helper3.createSingleton)(() => {
678
721
  const server = new http_exports.HttpServer();
679
- server.setErrorHandler(async (err, req, res) => {
680
- if (err instanceof http_exports.HttpError) {
681
- res.writeHead(err.statusCode, { "Content-Type": "application/json" });
682
- res.end(JSON.stringify({ message: err.message, error: err.code }));
683
- logger().warn({ msg: "HttpError: " + err.message, err });
684
- return;
685
- } else {
686
- logger().error({ msg: "Error: " + err.message, err });
687
- }
688
- res.writeHead(500, { "Content-Type": "" });
689
- res.end(JSON.stringify({ error: "Internal Server Error" }));
690
- });
722
+ server.setErrorHandler(handleHttpErrors);
691
723
  server.setRouter(router());
692
724
  return server;
693
725
  });
694
- var logger = (0, import_neko_helper2.createSingleton)((label) => {
726
+ var logger = (0, import_neko_helper3.createSingleton)((label) => {
695
727
  const logger_config = import_neko_config.config.get(["loggers", label].join("."));
696
728
  const rc = new import_neko_logger.Logger(logger_config);
697
729
  rc.setExtrasFunction((message) => {
@@ -700,7 +732,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
700
732
  });
701
733
  return rc;
702
734
  });
703
- var mailer = (0, import_neko_helper2.createSingleton)((label) => {
735
+ var mailer = (0, import_neko_helper3.createSingleton)((label) => {
704
736
  const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
705
737
  const provider = import_neko_mailer2.MailerProviderFactory.create(
706
738
  mailer_config.provider,
@@ -709,7 +741,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
709
741
  const rc = new import_neko_mailer2.Mailer(provider);
710
742
  return rc;
711
743
  });
712
- var queue = (0, import_neko_helper2.createSingleton)((label) => {
744
+ var queue = (0, import_neko_helper3.createSingleton)((label) => {
713
745
  const queue_config = import_neko_config.config.get(["queues", label].join("."));
714
746
  if (!queue_config) {
715
747
  throw new Error(`Queue configuration for '${label}' not found`);
@@ -720,7 +752,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
720
752
  );
721
753
  return new import_neko_queue2.QueueConnection(provider);
722
754
  });
723
- var cache = (0, import_neko_helper2.createSingleton)((label) => {
755
+ var cache = (0, import_neko_helper3.createSingleton)((label) => {
724
756
  const cache_config = import_neko_config.config.get(["caches", label].join("."));
725
757
  if (!cache_config) {
726
758
  throw new Error(`Cache configuration for '${label}' not found`);