@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
@@ -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`);
@@ -81,6 +81,7 @@ var MiddlewareFactory = class {
81
81
  };
82
82
 
83
83
  // ../neko-router/dist/CompiledRoute.mjs
84
+ var import_neko_helper = require("@devbro/neko-helper");
84
85
  var CompiledRoute = class {
85
86
  static {
86
87
  __name(this, "CompiledRoute");
@@ -101,7 +102,7 @@ var CompiledRoute = class {
101
102
  for (const middleware of [...this.globalMiddlewares, ...this.route.getMiddlewares()]) {
102
103
  if (middleware instanceof Middleware) {
103
104
  this.middlewares.push(middleware);
104
- } else if (this.isClass(middleware)) {
105
+ } else if ((0, import_neko_helper.isClass)(middleware)) {
105
106
  this.middlewares.push(middleware.getInstance({}));
106
107
  } else if (typeof middleware === "function") {
107
108
  this.middlewares.push(MiddlewareFactory.create(middleware));
@@ -110,13 +111,8 @@ var CompiledRoute = class {
110
111
  }
111
112
  }
112
113
  }
113
- isClass(func) {
114
- return typeof func === "function" && /^class\s/.test(Function.prototype.toString.call(func));
115
- }
116
114
  async run() {
117
- let rc = await this.runMiddlewares(this.middlewares, this.request, this.response);
118
- this.response.end();
119
- return rc;
115
+ return await this.runMiddlewares(this.middlewares, this.request, this.response);
120
116
  }
121
117
  prepareOutputJsonFormat(obj) {
122
118
  function traverse(value) {
@@ -250,7 +246,7 @@ var Route = class {
250
246
  i = start;
251
247
  } else if (char === "*") {
252
248
  let start = i + 1;
253
- while (start < path3.length && /[a-zA-Z0-9_\.]/.test(path3[start])) {
249
+ while (start < path3.length && /[a-zA-Z0-9_]/.test(path3[start])) {
254
250
  start++;
255
251
  }
256
252
  tokens.push({ type: "WILDCARD", value: path3.slice(i + 1, start) });
@@ -461,7 +457,7 @@ var Router = class {
461
457
 
462
458
  // src/facades.mts
463
459
  var import_neko_scheduler = require("@devbro/neko-scheduler");
464
- var import_neko_helper2 = require("@devbro/neko-helper");
460
+ var import_neko_helper3 = require("@devbro/neko-helper");
465
461
  var import_neko_context3 = require("@devbro/neko-context");
466
462
  var import_neko_storage2 = require("@devbro/neko-storage");
467
463
  var import_neko_mailer2 = require("@devbro/neko-mailer");
@@ -470,7 +466,24 @@ var import_clipanion = require("clipanion");
470
466
 
471
467
  // src/http.mts
472
468
  var http_exports = {};
469
+ __export(http_exports, {
470
+ handleHttpErrors: () => handleHttpErrors
471
+ });
472
+ var import_neko_http = require("@devbro/neko-http");
473
473
  __reExport(http_exports, require("@devbro/neko-http"));
474
+ async function handleHttpErrors(err, req, res) {
475
+ if (err instanceof import_neko_http.HttpError) {
476
+ res.writeHead(err.statusCode, { "Content-Type": "application/json" });
477
+ res.write(JSON.stringify({ message: err.message, error: err.code }));
478
+ logger().warn({ msg: "HttpError: " + err.message, err });
479
+ return;
480
+ } else {
481
+ logger().error({ msg: "Error: " + err.message, err });
482
+ }
483
+ res.writeHead(500, { "Content-Type": "application/json" });
484
+ res.write(JSON.stringify({ error: "Internal Server Error" }));
485
+ }
486
+ __name(handleHttpErrors, "handleHttpErrors");
474
487
 
475
488
  // src/facades.mts
476
489
  var import_neko_logger = require("@devbro/neko-logger");
@@ -485,7 +498,7 @@ __export(queue_exports, {
485
498
  DatabaseTransport: () => DatabaseTransport
486
499
  });
487
500
  __reExport(queue_exports, require("@devbro/neko-queue"));
488
- var import_neko_helper = require("@devbro/neko-helper");
501
+ var import_neko_helper2 = require("@devbro/neko-helper");
489
502
  var import_neko_context2 = require("@devbro/neko-context");
490
503
  var DatabaseTransport = class {
491
504
  static {
@@ -546,7 +559,7 @@ var DatabaseTransport = class {
546
559
  }, "processMessage");
547
560
  constructor(config2 = {}) {
548
561
  this.config = { ...this.config, ...config2 };
549
- this.repeater = (0, import_neko_helper.createRepeater)(
562
+ this.repeater = (0, import_neko_helper2.createRepeater)(
550
563
  this.processMessage,
551
564
  this.config.listen_interval * 1e3
552
565
  );
@@ -614,6 +627,24 @@ import_neko_queue.QueueTransportFactory.register("database", (opt) => {
614
627
  import_neko_queue.QueueTransportFactory.register("memory", (opt) => {
615
628
  return new import_neko_queue.MemoryTransport(opt);
616
629
  });
630
+ import_neko_queue.QueueTransportFactory.register("sqs", (opt) => {
631
+ return new import_neko_queue.AwsSqsTransport(opt);
632
+ });
633
+ import_neko_queue.QueueTransportFactory.register("amqp", (opt) => {
634
+ return new import_neko_queue.AmqpTransport(opt);
635
+ });
636
+ import_neko_queue.QueueTransportFactory.register("redis", (opt) => {
637
+ return new import_neko_queue.RedisTransport(opt);
638
+ });
639
+ import_neko_queue.QueueTransportFactory.register("async", (opt) => {
640
+ return new import_neko_queue.AsyncTransport();
641
+ });
642
+ import_neko_queue.QueueTransportFactory.register("azure_service_bus", (opt) => {
643
+ return new import_neko_queue.AzureServiceBusTransport(opt);
644
+ });
645
+ import_neko_queue.QueueTransportFactory.register("google_pubsub", (opt) => {
646
+ return new import_neko_queue.GooglePubSubTransport(opt);
647
+ });
617
648
  var CacheProviderFactory = class _CacheProviderFactory {
618
649
  static {
619
650
  __name(this, "CacheProviderFactory");
@@ -644,12 +675,24 @@ import_neko_storage.StorageProviderFactory.register("local", (opt) => {
644
675
  import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
645
676
  return new import_neko_storage.AWSS3StorageProvider(opt);
646
677
  });
678
+ import_neko_storage.StorageProviderFactory.register("gcp", (opt) => {
679
+ return new import_neko_storage.GCPStorageProvider(opt);
680
+ });
681
+ import_neko_storage.StorageProviderFactory.register("azure", (opt) => {
682
+ return new import_neko_storage.AzureBlobStorageProvider(opt);
683
+ });
684
+ import_neko_storage.StorageProviderFactory.register("ftp", (opt) => {
685
+ return new import_neko_storage.FTPStorageProvider(opt);
686
+ });
687
+ import_neko_storage.StorageProviderFactory.register("sftp", (opt) => {
688
+ return new import_neko_storage.SFTPStorageProvider(opt);
689
+ });
647
690
 
648
691
  // src/facades.mts
649
692
  var import_neko_cache2 = require("@devbro/neko-cache");
650
693
  var import_neko_queue2 = require("@devbro/neko-queue");
651
- var router = (0, import_neko_helper2.createSingleton)(() => new Router());
652
- var scheduler = (0, import_neko_helper2.createSingleton)(() => {
694
+ var router = (0, import_neko_helper3.createSingleton)(() => new Router());
695
+ var scheduler = (0, import_neko_helper3.createSingleton)(() => {
653
696
  const rc = new import_neko_scheduler.Scheduler();
654
697
  rc.setErrorHandler((err, job) => {
655
698
  logger().error({
@@ -661,7 +704,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
661
704
  return rc;
662
705
  });
663
706
  var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
664
- var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
707
+ var storage = (0, import_neko_helper3.createSingleton)((label = "default") => {
665
708
  let storage_config = import_neko_config.config.get(["storages", label].join("."));
666
709
  const provider = import_neko_storage2.StorageProviderFactory.create(
667
710
  storage_config.provider,
@@ -669,7 +712,7 @@ var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
669
712
  );
670
713
  return new import_neko_storage2.Storage(provider);
671
714
  });
672
- var cli = (0, import_neko_helper2.createSingleton)(() => {
715
+ var cli = (0, import_neko_helper3.createSingleton)(() => {
673
716
  const [node, app, ...args] = process.argv;
674
717
  return new import_clipanion.Cli({
675
718
  binaryLabel: `My Application`,
@@ -677,24 +720,13 @@ var cli = (0, import_neko_helper2.createSingleton)(() => {
677
720
  binaryVersion: `1.0.0`
678
721
  });
679
722
  });
680
- var httpServer = (0, import_neko_helper2.createSingleton)(() => {
723
+ var httpServer = (0, import_neko_helper3.createSingleton)(() => {
681
724
  const server = new http_exports.HttpServer();
682
- server.setErrorHandler(async (err, req, res) => {
683
- if (err instanceof http_exports.HttpError) {
684
- res.writeHead(err.statusCode, { "Content-Type": "application/json" });
685
- res.end(JSON.stringify({ message: err.message, error: err.code }));
686
- logger().warn({ msg: "HttpError: " + err.message, err });
687
- return;
688
- } else {
689
- logger().error({ msg: "Error: " + err.message, err });
690
- }
691
- res.writeHead(500, { "Content-Type": "" });
692
- res.end(JSON.stringify({ error: "Internal Server Error" }));
693
- });
725
+ server.setErrorHandler(handleHttpErrors);
694
726
  server.setRouter(router());
695
727
  return server;
696
728
  });
697
- var logger = (0, import_neko_helper2.createSingleton)((label) => {
729
+ var logger = (0, import_neko_helper3.createSingleton)((label) => {
698
730
  const logger_config = import_neko_config.config.get(["loggers", label].join("."));
699
731
  const rc = new import_neko_logger.Logger(logger_config);
700
732
  rc.setExtrasFunction((message) => {
@@ -703,7 +735,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
703
735
  });
704
736
  return rc;
705
737
  });
706
- var mailer = (0, import_neko_helper2.createSingleton)((label) => {
738
+ var mailer = (0, import_neko_helper3.createSingleton)((label) => {
707
739
  const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
708
740
  const provider = import_neko_mailer2.MailerProviderFactory.create(
709
741
  mailer_config.provider,
@@ -712,7 +744,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
712
744
  const rc = new import_neko_mailer2.Mailer(provider);
713
745
  return rc;
714
746
  });
715
- var queue = (0, import_neko_helper2.createSingleton)((label) => {
747
+ var queue = (0, import_neko_helper3.createSingleton)((label) => {
716
748
  const queue_config = import_neko_config.config.get(["queues", label].join("."));
717
749
  if (!queue_config) {
718
750
  throw new Error(`Queue configuration for '${label}' not found`);
@@ -723,7 +755,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
723
755
  );
724
756
  return new import_neko_queue2.QueueConnection(provider);
725
757
  });
726
- var cache = (0, import_neko_helper2.createSingleton)((label) => {
758
+ var cache = (0, import_neko_helper3.createSingleton)((label) => {
727
759
  const cache_config = import_neko_config.config.get(["caches", label].join("."));
728
760
  if (!cache_config) {
729
761
  throw new Error(`Cache configuration for '${label}' not found`);
@@ -79,6 +79,7 @@ var MiddlewareFactory = class {
79
79
  };
80
80
 
81
81
  // ../neko-router/dist/CompiledRoute.mjs
82
+ var import_neko_helper = require("@devbro/neko-helper");
82
83
  var CompiledRoute = class {
83
84
  static {
84
85
  __name(this, "CompiledRoute");
@@ -99,7 +100,7 @@ var CompiledRoute = class {
99
100
  for (const middleware of [...this.globalMiddlewares, ...this.route.getMiddlewares()]) {
100
101
  if (middleware instanceof Middleware) {
101
102
  this.middlewares.push(middleware);
102
- } else if (this.isClass(middleware)) {
103
+ } else if ((0, import_neko_helper.isClass)(middleware)) {
103
104
  this.middlewares.push(middleware.getInstance({}));
104
105
  } else if (typeof middleware === "function") {
105
106
  this.middlewares.push(MiddlewareFactory.create(middleware));
@@ -108,13 +109,8 @@ var CompiledRoute = class {
108
109
  }
109
110
  }
110
111
  }
111
- isClass(func) {
112
- return typeof func === "function" && /^class\s/.test(Function.prototype.toString.call(func));
113
- }
114
112
  async run() {
115
- let rc = await this.runMiddlewares(this.middlewares, this.request, this.response);
116
- this.response.end();
117
- return rc;
113
+ return await this.runMiddlewares(this.middlewares, this.request, this.response);
118
114
  }
119
115
  prepareOutputJsonFormat(obj) {
120
116
  function traverse(value) {
@@ -248,7 +244,7 @@ var Route = class {
248
244
  i = start;
249
245
  } else if (char === "*") {
250
246
  let start = i + 1;
251
- while (start < path2.length && /[a-zA-Z0-9_\.]/.test(path2[start])) {
247
+ while (start < path2.length && /[a-zA-Z0-9_]/.test(path2[start])) {
252
248
  start++;
253
249
  }
254
250
  tokens.push({ type: "WILDCARD", value: path2.slice(i + 1, start) });
@@ -459,7 +455,7 @@ var Router = class {
459
455
 
460
456
  // src/facades.mts
461
457
  var import_neko_scheduler = require("@devbro/neko-scheduler");
462
- var import_neko_helper2 = require("@devbro/neko-helper");
458
+ var import_neko_helper3 = require("@devbro/neko-helper");
463
459
  var import_neko_context3 = require("@devbro/neko-context");
464
460
  var import_neko_storage2 = require("@devbro/neko-storage");
465
461
  var import_neko_mailer2 = require("@devbro/neko-mailer");
@@ -468,7 +464,24 @@ var import_clipanion = require("clipanion");
468
464
 
469
465
  // src/http.mts
470
466
  var http_exports = {};
467
+ __export(http_exports, {
468
+ handleHttpErrors: () => handleHttpErrors
469
+ });
470
+ var import_neko_http = require("@devbro/neko-http");
471
471
  __reExport(http_exports, require("@devbro/neko-http"));
472
+ async function handleHttpErrors(err, req, res) {
473
+ if (err instanceof import_neko_http.HttpError) {
474
+ res.writeHead(err.statusCode, { "Content-Type": "application/json" });
475
+ res.write(JSON.stringify({ message: err.message, error: err.code }));
476
+ logger().warn({ msg: "HttpError: " + err.message, err });
477
+ return;
478
+ } else {
479
+ logger().error({ msg: "Error: " + err.message, err });
480
+ }
481
+ res.writeHead(500, { "Content-Type": "application/json" });
482
+ res.write(JSON.stringify({ error: "Internal Server Error" }));
483
+ }
484
+ __name(handleHttpErrors, "handleHttpErrors");
472
485
 
473
486
  // src/facades.mts
474
487
  var import_neko_logger = require("@devbro/neko-logger");
@@ -483,7 +496,7 @@ __export(queue_exports, {
483
496
  DatabaseTransport: () => DatabaseTransport
484
497
  });
485
498
  __reExport(queue_exports, require("@devbro/neko-queue"));
486
- var import_neko_helper = require("@devbro/neko-helper");
499
+ var import_neko_helper2 = require("@devbro/neko-helper");
487
500
  var import_neko_context2 = require("@devbro/neko-context");
488
501
  var DatabaseTransport = class {
489
502
  static {
@@ -544,7 +557,7 @@ var DatabaseTransport = class {
544
557
  }, "processMessage");
545
558
  constructor(config3 = {}) {
546
559
  this.config = { ...this.config, ...config3 };
547
- this.repeater = (0, import_neko_helper.createRepeater)(
560
+ this.repeater = (0, import_neko_helper2.createRepeater)(
548
561
  this.processMessage,
549
562
  this.config.listen_interval * 1e3
550
563
  );
@@ -612,6 +625,24 @@ import_neko_queue.QueueTransportFactory.register("database", (opt) => {
612
625
  import_neko_queue.QueueTransportFactory.register("memory", (opt) => {
613
626
  return new import_neko_queue.MemoryTransport(opt);
614
627
  });
628
+ import_neko_queue.QueueTransportFactory.register("sqs", (opt) => {
629
+ return new import_neko_queue.AwsSqsTransport(opt);
630
+ });
631
+ import_neko_queue.QueueTransportFactory.register("amqp", (opt) => {
632
+ return new import_neko_queue.AmqpTransport(opt);
633
+ });
634
+ import_neko_queue.QueueTransportFactory.register("redis", (opt) => {
635
+ return new import_neko_queue.RedisTransport(opt);
636
+ });
637
+ import_neko_queue.QueueTransportFactory.register("async", (opt) => {
638
+ return new import_neko_queue.AsyncTransport();
639
+ });
640
+ import_neko_queue.QueueTransportFactory.register("azure_service_bus", (opt) => {
641
+ return new import_neko_queue.AzureServiceBusTransport(opt);
642
+ });
643
+ import_neko_queue.QueueTransportFactory.register("google_pubsub", (opt) => {
644
+ return new import_neko_queue.GooglePubSubTransport(opt);
645
+ });
615
646
  var CacheProviderFactory = class _CacheProviderFactory {
616
647
  static {
617
648
  __name(this, "CacheProviderFactory");
@@ -642,12 +673,24 @@ import_neko_storage.StorageProviderFactory.register("local", (opt) => {
642
673
  import_neko_storage.StorageProviderFactory.register("s3", (opt) => {
643
674
  return new import_neko_storage.AWSS3StorageProvider(opt);
644
675
  });
676
+ import_neko_storage.StorageProviderFactory.register("gcp", (opt) => {
677
+ return new import_neko_storage.GCPStorageProvider(opt);
678
+ });
679
+ import_neko_storage.StorageProviderFactory.register("azure", (opt) => {
680
+ return new import_neko_storage.AzureBlobStorageProvider(opt);
681
+ });
682
+ import_neko_storage.StorageProviderFactory.register("ftp", (opt) => {
683
+ return new import_neko_storage.FTPStorageProvider(opt);
684
+ });
685
+ import_neko_storage.StorageProviderFactory.register("sftp", (opt) => {
686
+ return new import_neko_storage.SFTPStorageProvider(opt);
687
+ });
645
688
 
646
689
  // src/facades.mts
647
690
  var import_neko_cache2 = require("@devbro/neko-cache");
648
691
  var import_neko_queue2 = require("@devbro/neko-queue");
649
- var router = (0, import_neko_helper2.createSingleton)(() => new Router());
650
- var scheduler = (0, import_neko_helper2.createSingleton)(() => {
692
+ var router = (0, import_neko_helper3.createSingleton)(() => new Router());
693
+ var scheduler = (0, import_neko_helper3.createSingleton)(() => {
651
694
  const rc = new import_neko_scheduler.Scheduler();
652
695
  rc.setErrorHandler((err, job) => {
653
696
  logger().error({
@@ -659,7 +702,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
659
702
  return rc;
660
703
  });
661
704
  var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
662
- var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
705
+ var storage = (0, import_neko_helper3.createSingleton)((label = "default") => {
663
706
  let storage_config = import_neko_config.config.get(["storages", label].join("."));
664
707
  const provider = import_neko_storage2.StorageProviderFactory.create(
665
708
  storage_config.provider,
@@ -667,7 +710,7 @@ var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
667
710
  );
668
711
  return new import_neko_storage2.Storage(provider);
669
712
  });
670
- var cli = (0, import_neko_helper2.createSingleton)(() => {
713
+ var cli = (0, import_neko_helper3.createSingleton)(() => {
671
714
  const [node, app, ...args] = process.argv;
672
715
  return new import_clipanion.Cli({
673
716
  binaryLabel: `My Application`,
@@ -675,24 +718,13 @@ var cli = (0, import_neko_helper2.createSingleton)(() => {
675
718
  binaryVersion: `1.0.0`
676
719
  });
677
720
  });
678
- var httpServer = (0, import_neko_helper2.createSingleton)(() => {
721
+ var httpServer = (0, import_neko_helper3.createSingleton)(() => {
679
722
  const server = new http_exports.HttpServer();
680
- server.setErrorHandler(async (err, req, res) => {
681
- if (err instanceof http_exports.HttpError) {
682
- res.writeHead(err.statusCode, { "Content-Type": "application/json" });
683
- res.end(JSON.stringify({ message: err.message, error: err.code }));
684
- logger().warn({ msg: "HttpError: " + err.message, err });
685
- return;
686
- } else {
687
- logger().error({ msg: "Error: " + err.message, err });
688
- }
689
- res.writeHead(500, { "Content-Type": "" });
690
- res.end(JSON.stringify({ error: "Internal Server Error" }));
691
- });
723
+ server.setErrorHandler(handleHttpErrors);
692
724
  server.setRouter(router());
693
725
  return server;
694
726
  });
695
- var logger = (0, import_neko_helper2.createSingleton)((label) => {
727
+ var logger = (0, import_neko_helper3.createSingleton)((label) => {
696
728
  const logger_config = import_neko_config.config.get(["loggers", label].join("."));
697
729
  const rc = new import_neko_logger.Logger(logger_config);
698
730
  rc.setExtrasFunction((message) => {
@@ -701,7 +733,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
701
733
  });
702
734
  return rc;
703
735
  });
704
- var mailer = (0, import_neko_helper2.createSingleton)((label) => {
736
+ var mailer = (0, import_neko_helper3.createSingleton)((label) => {
705
737
  const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
706
738
  const provider = import_neko_mailer2.MailerProviderFactory.create(
707
739
  mailer_config.provider,
@@ -710,7 +742,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
710
742
  const rc = new import_neko_mailer2.Mailer(provider);
711
743
  return rc;
712
744
  });
713
- var queue = (0, import_neko_helper2.createSingleton)((label) => {
745
+ var queue = (0, import_neko_helper3.createSingleton)((label) => {
714
746
  const queue_config = import_neko_config.config.get(["queues", label].join("."));
715
747
  if (!queue_config) {
716
748
  throw new Error(`Queue configuration for '${label}' not found`);
@@ -721,7 +753,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
721
753
  );
722
754
  return new import_neko_queue2.QueueConnection(provider);
723
755
  });
724
- var cache = (0, import_neko_helper2.createSingleton)((label) => {
756
+ var cache = (0, import_neko_helper3.createSingleton)((label) => {
725
757
  const cache_config = import_neko_config.config.get(["caches", label].join("."));
726
758
  if (!cache_config) {
727
759
  throw new Error(`Cache configuration for '${label}' not found`);
@@ -740,12 +772,15 @@ var StartCommand = class extends import_clipanion2.Command {
740
772
  __name(this, "StartCommand");
741
773
  }
742
774
  scheduler = import_clipanion2.Option.Boolean(`--scheduler`, false);
775
+ cron = import_clipanion2.Option.Boolean(`--cron`, false);
743
776
  http = import_clipanion2.Option.Boolean(`--http`, false);
744
777
  queue = import_clipanion2.Option.Boolean(`--queue`, false);
745
778
  all = import_clipanion2.Option.Boolean("--all", false);
746
779
  static paths = [[`start`]];
747
780
  async execute() {
748
- if ([this.all, this.http, this.scheduler, this.queue].filter((x) => x).length == 0) {
781
+ if ([this.all, this.http, this.scheduler || this.cron, this.queue].filter(
782
+ (x) => x
783
+ ).length == 0) {
749
784
  this.context.stdout.write(
750
785
  `No service was selected. please check -h for details
751
786
  `
@@ -755,7 +790,7 @@ var StartCommand = class extends import_clipanion2.Command {
755
790
  logger().info(`Starting Server
756
791
  `);
757
792
  import_neko_sql.PostgresqlConnection.defaults.idleTimeoutMillis = 1e4;
758
- if (this.scheduler || this.all) {
793
+ if (this.scheduler || this.cron || this.all) {
759
794
  logger().info(`starting scheduler
760
795
  `);
761
796
  scheduler().start();