@devbro/pashmak 0.1.44 → 0.1.46

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.
@@ -133,7 +133,7 @@ class GenerateApiDocsCommand extends Command {
133
133
  let final_api_docs = {};
134
134
  for (let file_path of files_to_merge) {
135
135
  let file_json = JSON.parse(await fs.readFile(file_path, "utf8"));
136
- Arr.deepMerge(final_api_docs, file_json);
136
+ final_api_docs = Arr.deepMerge(final_api_docs, file_json);
137
137
  }
138
138
  await fs.writeFile(
139
139
  config.get("api_docs.output"),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/app/console/generate/GenerateApiDocsCommand.mts"],"sourcesContent":["import { cli, router } from \"../../../facades.mjs\";\nimport { Command, Option } from \"clipanion\";\nimport path from \"path\";\nimport * as fs from \"fs/promises\";\nimport { config } from \"../../../config.mjs\";\nimport { Arr } from \"@devbro/neko-helper\";\n\nexport class GenerateApiDocsCommand extends Command {\n static paths = [\n [`make`, `apidocs`],\n [`generate`, `apidocs`],\n ];\n\n static usage = Command.Usage({\n category: `Generate`,\n description: `Generate OpenAPI documentation from routes`,\n details: `\n This command generates OpenAPI 3.0 specification documentation by analyzing\n your application's routes and merging with example files.\n \n The generated documentation includes:\n - All registered routes with their HTTP methods\n - Path parameters extracted from route definitions\n - Request body schemas for POST, PUT, and PATCH methods\n - Response schemas\n \n The command will merge files specified in config.api_docs.merge_files\n and output the final documentation to config.api_docs.output.\n\n This command depends on config data. make sure your default config contains the following:\n api_docs: {\n merge_files: [\n path.join(__dirname, '../..', 'private', 'openapi_examples.json'),\n path.join(__dirname, '../..', 'private', 'openapi_base.json'),\n path.join(__dirname, '../..', 'private', 'openapi_user_changes.json'),\n ],\n output: path.join(__dirname, '../..', 'private', 'openapi.json'),\n }\n `,\n examples: [[`Generate API documentation`, `$0 generate apidocs`]],\n });\n\n help = Option.Boolean(`--help,-h`, false, {\n description: `Show help message for this command`,\n });\n\n async execute() {\n if (this.help) {\n this.context.stdout.write(\n this.constructor.usage?.toString() || \"No help available\\n\",\n );\n return 0;\n }\n\n const rootDir = process.cwd();\n\n this.context.stdout.write(`Generating OpenAPI documentation...\\n`);\n\n // Get all routes from the router\n const routes = router().routes;\n\n // Generate OpenAPI 3.0 specification\n const openApiSpec = {\n openapi: \"3.0.0\",\n info: {\n title: \"API Documentation\",\n version: \"1.0.0\",\n description: \"Auto-generated API documentation\",\n },\n servers: [\n {\n url: \"/\",\n description: \"Local server\",\n },\n ],\n paths: {} as Record<string, any>,\n };\n\n // Process each route\n for (const route of routes) {\n const routePath = route.path;\n // Convert route path to OpenAPI format (e.g., /api/:id -> /api/{id})\n const openApiPath = routePath.replace(/:([a-zA-Z0-9_]+)/g, \"{$1}\");\n\n if (!openApiSpec.paths[openApiPath]) {\n openApiSpec.paths[openApiPath] = {};\n }\n\n // Add each HTTP method for this route\n for (const method of route.methods) {\n const lowerMethod = method.toLowerCase();\n\n // Skip HEAD as it's usually auto-generated\n if (lowerMethod === \"head\") {\n continue;\n }\n\n openApiSpec.paths[openApiPath][lowerMethod] = {\n summary: `${method} ${routePath}`,\n description: `Endpoint for ${method} ${routePath}`,\n parameters: this.extractParameters(routePath),\n responses: {\n \"200\": {\n description: \"Successful response\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n },\n },\n },\n },\n \"500\": {\n description: \"Internal server error\",\n },\n },\n };\n\n // Add request body for POST, PUT, PATCH\n if ([\"post\", \"put\", \"patch\"].includes(lowerMethod)) {\n openApiSpec.paths[openApiPath][lowerMethod].requestBody = {\n required: true,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n },\n },\n },\n };\n }\n }\n }\n\n // Ensure public directory exists\n await fs.mkdir(config.get(\"private_path\"), { recursive: true });\n\n // Write the OpenAPI spec to public/openapi.json\n const outputPath = path.join(config.get(\"private_path\"), \"openapi.json\");\n await fs.writeFile(\n outputPath,\n JSON.stringify(openApiSpec, null, 2),\n \"utf-8\",\n );\n\n this.context.stdout.write(\n `OpenAPI documentation generated at: ${outputPath}\\n`,\n );\n this.context.stdout.write(`Total routes documented: ${routes.length}\\n`);\n\n let files_to_merge: string[] = config.get(\"api_docs.merge_files\");\n let final_api_docs = {};\n for (let file_path of files_to_merge) {\n let file_json = JSON.parse(await fs.readFile(file_path, \"utf8\"));\n Arr.deepMerge(final_api_docs, file_json);\n }\n\n await fs.writeFile(\n config.get(\"api_docs.output\"),\n JSON.stringify(final_api_docs, null, 2),\n );\n\n this.context.stdout.write(\n `wrote final open api document to : ${config.get(\"api_docs.output\")}\\n`,\n );\n }\n\n private extractParameters(routePath: string): any[] {\n const paramRegex = /:([a-zA-Z0-9_]+)/g;\n const parameters: any[] = [];\n let match;\n\n while ((match = paramRegex.exec(routePath)) !== null) {\n parameters.push({\n name: match[1],\n in: \"path\",\n required: true,\n schema: {\n type: \"string\",\n },\n description: `Path parameter ${match[1]}`,\n });\n }\n\n return parameters;\n }\n}\n\ncli().register(GenerateApiDocsCommand);\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/app/console/generate/GenerateApiDocsCommand.mts"],"sourcesContent":["import { cli, router } from \"../../../facades.mjs\";\nimport { Command, Option } from \"clipanion\";\nimport path from \"path\";\nimport * as fs from \"fs/promises\";\nimport { config } from \"../../../config.mjs\";\nimport { Arr } from \"@devbro/neko-helper\";\n\nexport class GenerateApiDocsCommand extends Command {\n static paths = [\n [`make`, `apidocs`],\n [`generate`, `apidocs`],\n ];\n\n static usage = Command.Usage({\n category: `Generate`,\n description: `Generate OpenAPI documentation from routes`,\n details: `\n This command generates OpenAPI 3.0 specification documentation by analyzing\n your application's routes and merging with example files.\n \n The generated documentation includes:\n - All registered routes with their HTTP methods\n - Path parameters extracted from route definitions\n - Request body schemas for POST, PUT, and PATCH methods\n - Response schemas\n \n The command will merge files specified in config.api_docs.merge_files\n and output the final documentation to config.api_docs.output.\n\n This command depends on config data. make sure your default config contains the following:\n api_docs: {\n merge_files: [\n path.join(__dirname, '../..', 'private', 'openapi_examples.json'),\n path.join(__dirname, '../..', 'private', 'openapi_base.json'),\n path.join(__dirname, '../..', 'private', 'openapi_user_changes.json'),\n ],\n output: path.join(__dirname, '../..', 'private', 'openapi.json'),\n }\n `,\n examples: [[`Generate API documentation`, `$0 generate apidocs`]],\n });\n\n help = Option.Boolean(`--help,-h`, false, {\n description: `Show help message for this command`,\n });\n\n async execute() {\n if (this.help) {\n this.context.stdout.write(\n this.constructor.usage?.toString() || \"No help available\\n\",\n );\n return 0;\n }\n\n const rootDir = process.cwd();\n\n this.context.stdout.write(`Generating OpenAPI documentation...\\n`);\n\n // Get all routes from the router\n const routes = router().routes;\n\n // Generate OpenAPI 3.0 specification\n const openApiSpec = {\n openapi: \"3.0.0\",\n info: {\n title: \"API Documentation\",\n version: \"1.0.0\",\n description: \"Auto-generated API documentation\",\n },\n servers: [\n {\n url: \"/\",\n description: \"Local server\",\n },\n ],\n paths: {} as Record<string, any>,\n };\n\n // Process each route\n for (const route of routes) {\n const routePath = route.path;\n // Convert route path to OpenAPI format (e.g., /api/:id -> /api/{id})\n const openApiPath = routePath.replace(/:([a-zA-Z0-9_]+)/g, \"{$1}\");\n\n if (!openApiSpec.paths[openApiPath]) {\n openApiSpec.paths[openApiPath] = {};\n }\n\n // Add each HTTP method for this route\n for (const method of route.methods) {\n const lowerMethod = method.toLowerCase();\n\n // Skip HEAD as it's usually auto-generated\n if (lowerMethod === \"head\") {\n continue;\n }\n\n openApiSpec.paths[openApiPath][lowerMethod] = {\n summary: `${method} ${routePath}`,\n description: `Endpoint for ${method} ${routePath}`,\n parameters: this.extractParameters(routePath),\n responses: {\n \"200\": {\n description: \"Successful response\",\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n },\n },\n },\n },\n \"500\": {\n description: \"Internal server error\",\n },\n },\n };\n\n // Add request body for POST, PUT, PATCH\n if ([\"post\", \"put\", \"patch\"].includes(lowerMethod)) {\n openApiSpec.paths[openApiPath][lowerMethod].requestBody = {\n required: true,\n content: {\n \"application/json\": {\n schema: {\n type: \"object\",\n },\n },\n },\n };\n }\n }\n }\n\n // Ensure public directory exists\n await fs.mkdir(config.get(\"private_path\"), { recursive: true });\n\n // Write the OpenAPI spec to public/openapi.json\n const outputPath = path.join(config.get(\"private_path\"), \"openapi.json\");\n await fs.writeFile(\n outputPath,\n JSON.stringify(openApiSpec, null, 2),\n \"utf-8\",\n );\n\n this.context.stdout.write(\n `OpenAPI documentation generated at: ${outputPath}\\n`,\n );\n this.context.stdout.write(`Total routes documented: ${routes.length}\\n`);\n\n let files_to_merge: string[] = config.get(\"api_docs.merge_files\");\n let final_api_docs = {};\n for (let file_path of files_to_merge) {\n let file_json = JSON.parse(await fs.readFile(file_path, \"utf8\"));\n final_api_docs = Arr.deepMerge(final_api_docs, file_json);\n }\n\n await fs.writeFile(\n config.get(\"api_docs.output\"),\n JSON.stringify(final_api_docs, null, 2),\n );\n\n this.context.stdout.write(\n `wrote final open api document to : ${config.get(\"api_docs.output\")}\\n`,\n );\n }\n\n private extractParameters(routePath: string): any[] {\n const paramRegex = /:([a-zA-Z0-9_]+)/g;\n const parameters: any[] = [];\n let match;\n\n while ((match = paramRegex.exec(routePath)) !== null) {\n parameters.push({\n name: match[1],\n in: \"path\",\n required: true,\n schema: {\n type: \"string\",\n },\n description: `Path parameter ${match[1]}`,\n });\n }\n\n return parameters;\n }\n}\n\ncli().register(GenerateApiDocsCommand);\n"],"mappings":";;AAAA,SAAS,KAAK,cAAc;AAC5B,SAAS,SAAS,cAAc;AAChC,OAAO,UAAU;AACjB,YAAY,QAAQ;AACpB,SAAS,cAAc;AACvB,SAAS,WAAW;AAEb,MAAM,+BAA+B,QAAQ;AAAA,EAPpD,OAOoD;AAAA;AAAA;AAAA,EAClD,OAAO,QAAQ;AAAA,IACb,CAAC,QAAQ,SAAS;AAAA,IAClB,CAAC,YAAY,SAAS;AAAA,EACxB;AAAA,EAEA,OAAO,QAAQ,QAAQ,MAAM;AAAA,IAC3B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAuBT,UAAU,CAAC,CAAC,8BAA8B,qBAAqB,CAAC;AAAA,EAClE,CAAC;AAAA,EAED,OAAO,OAAO,QAAQ,aAAa,OAAO;AAAA,IACxC,aAAa;AAAA,EACf,CAAC;AAAA,EAED,MAAM,UAAU;AACd,QAAI,KAAK,MAAM;AACb,WAAK,QAAQ,OAAO;AAAA,QAClB,KAAK,YAAY,OAAO,SAAS,KAAK;AAAA,MACxC;AACA,aAAO;AAAA,IACT;AAEA,UAAM,UAAU,QAAQ,IAAI;AAE5B,SAAK,QAAQ,OAAO,MAAM;AAAA,CAAuC;AAGjE,UAAM,SAAS,OAAO,EAAE;AAGxB,UAAM,cAAc;AAAA,MAClB,SAAS;AAAA,MACT,MAAM;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,aAAa;AAAA,MACf;AAAA,MACA,SAAS;AAAA,QACP;AAAA,UACE,KAAK;AAAA,UACL,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,OAAO,CAAC;AAAA,IACV;AAGA,eAAW,SAAS,QAAQ;AAC1B,YAAM,YAAY,MAAM;AAExB,YAAM,cAAc,UAAU,QAAQ,qBAAqB,MAAM;AAEjE,UAAI,CAAC,YAAY,MAAM,WAAW,GAAG;AACnC,oBAAY,MAAM,WAAW,IAAI,CAAC;AAAA,MACpC;AAGA,iBAAW,UAAU,MAAM,SAAS;AAClC,cAAM,cAAc,OAAO,YAAY;AAGvC,YAAI,gBAAgB,QAAQ;AAC1B;AAAA,QACF;AAEA,oBAAY,MAAM,WAAW,EAAE,WAAW,IAAI;AAAA,UAC5C,SAAS,GAAG,MAAM,IAAI,SAAS;AAAA,UAC/B,aAAa,gBAAgB,MAAM,IAAI,SAAS;AAAA,UAChD,YAAY,KAAK,kBAAkB,SAAS;AAAA,UAC5C,WAAW;AAAA,YACT,OAAO;AAAA,cACL,aAAa;AAAA,cACb,SAAS;AAAA,gBACP,oBAAoB;AAAA,kBAClB,QAAQ;AAAA,oBACN,MAAM;AAAA,kBACR;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,YACA,OAAO;AAAA,cACL,aAAa;AAAA,YACf;AAAA,UACF;AAAA,QACF;AAGA,YAAI,CAAC,QAAQ,OAAO,OAAO,EAAE,SAAS,WAAW,GAAG;AAClD,sBAAY,MAAM,WAAW,EAAE,WAAW,EAAE,cAAc;AAAA,YACxD,UAAU;AAAA,YACV,SAAS;AAAA,cACP,oBAAoB;AAAA,gBAClB,QAAQ;AAAA,kBACN,MAAM;AAAA,gBACR;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAGA,UAAM,GAAG,MAAM,OAAO,IAAI,cAAc,GAAG,EAAE,WAAW,KAAK,CAAC;AAG9D,UAAM,aAAa,KAAK,KAAK,OAAO,IAAI,cAAc,GAAG,cAAc;AACvE,UAAM,GAAG;AAAA,MACP;AAAA,MACA,KAAK,UAAU,aAAa,MAAM,CAAC;AAAA,MACnC;AAAA,IACF;AAEA,SAAK,QAAQ,OAAO;AAAA,MAClB,uCAAuC,UAAU;AAAA;AAAA,IACnD;AACA,SAAK,QAAQ,OAAO,MAAM,4BAA4B,OAAO,MAAM;AAAA,CAAI;AAEvE,QAAI,iBAA2B,OAAO,IAAI,sBAAsB;AAChE,QAAI,iBAAiB,CAAC;AACtB,aAAS,aAAa,gBAAgB;AACpC,UAAI,YAAY,KAAK,MAAM,MAAM,GAAG,SAAS,WAAW,MAAM,CAAC;AAC/D,uBAAiB,IAAI,UAAU,gBAAgB,SAAS;AAAA,IAC1D;AAEA,UAAM,GAAG;AAAA,MACP,OAAO,IAAI,iBAAiB;AAAA,MAC5B,KAAK,UAAU,gBAAgB,MAAM,CAAC;AAAA,IACxC;AAEA,SAAK,QAAQ,OAAO;AAAA,MAClB,sCAAsC,OAAO,IAAI,iBAAiB,CAAC;AAAA;AAAA,IACrE;AAAA,EACF;AAAA,EAEQ,kBAAkB,WAA0B;AAClD,UAAM,aAAa;AACnB,UAAM,aAAoB,CAAC;AAC3B,QAAI;AAEJ,YAAQ,QAAQ,WAAW,KAAK,SAAS,OAAO,MAAM;AACpD,iBAAW,KAAK;AAAA,QACd,MAAM,MAAM,CAAC;AAAA,QACb,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,QAAQ;AAAA,UACN,MAAM;AAAA,QACR;AAAA,QACA,aAAa,kBAAkB,MAAM,CAAC,CAAC;AAAA,MACzC,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,EACT;AACF;AAEA,IAAI,EAAE,SAAS,sBAAsB;","names":[]}
@@ -456,16 +456,13 @@ var Router = class {
456
456
  }
457
457
  };
458
458
 
459
- // src/router.mts
460
- var import_neko_config = require("@devbro/neko-config");
461
-
462
459
  // src/facades.mts
463
460
  var import_neko_scheduler = require("@devbro/neko-scheduler");
464
461
  var import_neko_helper2 = require("@devbro/neko-helper");
465
462
  var import_neko_context3 = require("@devbro/neko-context");
466
463
  var import_neko_storage2 = require("@devbro/neko-storage");
467
464
  var import_neko_mailer2 = require("@devbro/neko-mailer");
468
- var import_neko_config2 = require("@devbro/neko-config");
465
+ var import_neko_config = require("@devbro/neko-config");
469
466
  var import_clipanion = require("clipanion");
470
467
 
471
468
  // src/http.mts
@@ -544,8 +541,8 @@ var DatabaseTransport = class {
544
541
  }
545
542
  });
546
543
  }, "processMessage");
547
- constructor(config3 = {}) {
548
- this.config = { ...this.config, ...config3 };
544
+ constructor(config2 = {}) {
545
+ this.config = { ...this.config, ...config2 };
549
546
  this.repeater = (0, import_neko_helper.createRepeater)(
550
547
  this.processMessage,
551
548
  this.config.listen_interval * 1e3
@@ -662,7 +659,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
662
659
  });
663
660
  var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
664
661
  var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
665
- let storage_config = import_neko_config2.config.get(["storages", label].join("."));
662
+ let storage_config = import_neko_config.config.get(["storages", label].join("."));
666
663
  const provider = import_neko_storage2.StorageProviderFactory.create(
667
664
  storage_config.provider,
668
665
  storage_config.config
@@ -695,7 +692,7 @@ var httpServer = (0, import_neko_helper2.createSingleton)(() => {
695
692
  return server;
696
693
  });
697
694
  var logger = (0, import_neko_helper2.createSingleton)((label) => {
698
- const logger_config = import_neko_config2.config.get(["loggers", label].join("."));
695
+ const logger_config = import_neko_config.config.get(["loggers", label].join("."));
699
696
  const rc = new import_neko_logger.Logger(logger_config);
700
697
  rc.setExtrasFunction((message) => {
701
698
  message.requestId = (0, import_neko_context3.ctxSafe)()?.get("requestId") || "N/A";
@@ -704,7 +701,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
704
701
  return rc;
705
702
  });
706
703
  var mailer = (0, import_neko_helper2.createSingleton)((label) => {
707
- const mailer_config = import_neko_config2.config.get(["mailer", label].join("."));
704
+ const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
708
705
  const provider = import_neko_mailer2.MailerProviderFactory.create(
709
706
  mailer_config.provider,
710
707
  mailer_config.config
@@ -713,7 +710,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
713
710
  return rc;
714
711
  });
715
712
  var queue = (0, import_neko_helper2.createSingleton)((label) => {
716
- const queue_config = import_neko_config2.config.get(["queues", label].join("."));
713
+ const queue_config = import_neko_config.config.get(["queues", label].join("."));
717
714
  if (!queue_config) {
718
715
  throw new Error(`Queue configuration for '${label}' not found`);
719
716
  }
@@ -725,7 +722,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
725
722
  return rc;
726
723
  });
727
724
  var cache = (0, import_neko_helper2.createSingleton)((label) => {
728
- const cache_config = import_neko_config2.config.get(["caches", label].join("."));
725
+ const cache_config = import_neko_config.config.get(["caches", label].join("."));
729
726
  if (!cache_config) {
730
727
  throw new Error(`Cache configuration for '${label}' not found`);
731
728
  }
@@ -459,16 +459,13 @@ var Router = class {
459
459
  }
460
460
  };
461
461
 
462
- // src/router.mts
463
- var import_neko_config = require("@devbro/neko-config");
464
-
465
462
  // src/facades.mts
466
463
  var import_neko_scheduler = require("@devbro/neko-scheduler");
467
464
  var import_neko_helper2 = require("@devbro/neko-helper");
468
465
  var import_neko_context3 = require("@devbro/neko-context");
469
466
  var import_neko_storage2 = require("@devbro/neko-storage");
470
467
  var import_neko_mailer2 = require("@devbro/neko-mailer");
471
- var import_neko_config2 = require("@devbro/neko-config");
468
+ var import_neko_config = require("@devbro/neko-config");
472
469
  var import_clipanion = require("clipanion");
473
470
 
474
471
  // src/http.mts
@@ -547,8 +544,8 @@ var DatabaseTransport = class {
547
544
  }
548
545
  });
549
546
  }, "processMessage");
550
- constructor(config3 = {}) {
551
- this.config = { ...this.config, ...config3 };
547
+ constructor(config2 = {}) {
548
+ this.config = { ...this.config, ...config2 };
552
549
  this.repeater = (0, import_neko_helper.createRepeater)(
553
550
  this.processMessage,
554
551
  this.config.listen_interval * 1e3
@@ -665,7 +662,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
665
662
  });
666
663
  var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
667
664
  var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
668
- let storage_config = import_neko_config2.config.get(["storages", label].join("."));
665
+ let storage_config = import_neko_config.config.get(["storages", label].join("."));
669
666
  const provider = import_neko_storage2.StorageProviderFactory.create(
670
667
  storage_config.provider,
671
668
  storage_config.config
@@ -698,7 +695,7 @@ var httpServer = (0, import_neko_helper2.createSingleton)(() => {
698
695
  return server;
699
696
  });
700
697
  var logger = (0, import_neko_helper2.createSingleton)((label) => {
701
- const logger_config = import_neko_config2.config.get(["loggers", label].join("."));
698
+ const logger_config = import_neko_config.config.get(["loggers", label].join("."));
702
699
  const rc = new import_neko_logger.Logger(logger_config);
703
700
  rc.setExtrasFunction((message) => {
704
701
  message.requestId = (0, import_neko_context3.ctxSafe)()?.get("requestId") || "N/A";
@@ -707,7 +704,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
707
704
  return rc;
708
705
  });
709
706
  var mailer = (0, import_neko_helper2.createSingleton)((label) => {
710
- const mailer_config = import_neko_config2.config.get(["mailer", label].join("."));
707
+ const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
711
708
  const provider = import_neko_mailer2.MailerProviderFactory.create(
712
709
  mailer_config.provider,
713
710
  mailer_config.config
@@ -716,7 +713,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
716
713
  return rc;
717
714
  });
718
715
  var queue = (0, import_neko_helper2.createSingleton)((label) => {
719
- const queue_config = import_neko_config2.config.get(["queues", label].join("."));
716
+ const queue_config = import_neko_config.config.get(["queues", label].join("."));
720
717
  if (!queue_config) {
721
718
  throw new Error(`Queue configuration for '${label}' not found`);
722
719
  }
@@ -728,7 +725,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
728
725
  return rc;
729
726
  });
730
727
  var cache = (0, import_neko_helper2.createSingleton)((label) => {
731
- const cache_config = import_neko_config2.config.get(["caches", label].join("."));
728
+ const cache_config = import_neko_config.config.get(["caches", label].join("."));
732
729
  if (!cache_config) {
733
730
  throw new Error(`Cache configuration for '${label}' not found`);
734
731
  }
@@ -36,7 +36,7 @@ __export(StartCommand_exports, {
36
36
  });
37
37
  module.exports = __toCommonJS(StartCommand_exports);
38
38
  var import_clipanion2 = require("clipanion");
39
- var import_neko_config3 = require("@devbro/neko-config");
39
+ var import_neko_config2 = require("@devbro/neko-config");
40
40
 
41
41
  // src/router.mts
42
42
  var import_neko_context = require("@devbro/neko-context");
@@ -457,16 +457,13 @@ var Router = class {
457
457
  }
458
458
  };
459
459
 
460
- // src/router.mts
461
- var import_neko_config = require("@devbro/neko-config");
462
-
463
460
  // src/facades.mts
464
461
  var import_neko_scheduler = require("@devbro/neko-scheduler");
465
462
  var import_neko_helper2 = require("@devbro/neko-helper");
466
463
  var import_neko_context3 = require("@devbro/neko-context");
467
464
  var import_neko_storage2 = require("@devbro/neko-storage");
468
465
  var import_neko_mailer2 = require("@devbro/neko-mailer");
469
- var import_neko_config2 = require("@devbro/neko-config");
466
+ var import_neko_config = require("@devbro/neko-config");
470
467
  var import_clipanion = require("clipanion");
471
468
 
472
469
  // src/http.mts
@@ -545,8 +542,8 @@ var DatabaseTransport = class {
545
542
  }
546
543
  });
547
544
  }, "processMessage");
548
- constructor(config4 = {}) {
549
- this.config = { ...this.config, ...config4 };
545
+ constructor(config3 = {}) {
546
+ this.config = { ...this.config, ...config3 };
550
547
  this.repeater = (0, import_neko_helper.createRepeater)(
551
548
  this.processMessage,
552
549
  this.config.listen_interval * 1e3
@@ -663,7 +660,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
663
660
  });
664
661
  var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
665
662
  var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
666
- let storage_config = import_neko_config2.config.get(["storages", label].join("."));
663
+ let storage_config = import_neko_config.config.get(["storages", label].join("."));
667
664
  const provider = import_neko_storage2.StorageProviderFactory.create(
668
665
  storage_config.provider,
669
666
  storage_config.config
@@ -696,7 +693,7 @@ var httpServer = (0, import_neko_helper2.createSingleton)(() => {
696
693
  return server;
697
694
  });
698
695
  var logger = (0, import_neko_helper2.createSingleton)((label) => {
699
- const logger_config = import_neko_config2.config.get(["loggers", label].join("."));
696
+ const logger_config = import_neko_config.config.get(["loggers", label].join("."));
700
697
  const rc = new import_neko_logger.Logger(logger_config);
701
698
  rc.setExtrasFunction((message) => {
702
699
  message.requestId = (0, import_neko_context3.ctxSafe)()?.get("requestId") || "N/A";
@@ -705,7 +702,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
705
702
  return rc;
706
703
  });
707
704
  var mailer = (0, import_neko_helper2.createSingleton)((label) => {
708
- const mailer_config = import_neko_config2.config.get(["mailer", label].join("."));
705
+ const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
709
706
  const provider = import_neko_mailer2.MailerProviderFactory.create(
710
707
  mailer_config.provider,
711
708
  mailer_config.config
@@ -714,7 +711,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
714
711
  return rc;
715
712
  });
716
713
  var queue = (0, import_neko_helper2.createSingleton)((label) => {
717
- const queue_config = import_neko_config2.config.get(["queues", label].join("."));
714
+ const queue_config = import_neko_config.config.get(["queues", label].join("."));
718
715
  if (!queue_config) {
719
716
  throw new Error(`Queue configuration for '${label}' not found`);
720
717
  }
@@ -726,7 +723,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
726
723
  return rc;
727
724
  });
728
725
  var cache = (0, import_neko_helper2.createSingleton)((label) => {
729
- const cache_config = import_neko_config2.config.get(["caches", label].join("."));
726
+ const cache_config = import_neko_config.config.get(["caches", label].join("."));
730
727
  if (!cache_config) {
731
728
  throw new Error(`Cache configuration for '${label}' not found`);
732
729
  }
@@ -765,16 +762,16 @@ var StartCommand = class extends import_clipanion2.Command {
765
762
  scheduler().start();
766
763
  }
767
764
  if (this.queue || this.all) {
768
- const config_queues = import_neko_config3.config.get("queues");
765
+ const config_queues = import_neko_config2.config.get("queues");
769
766
  for (const [name, conf] of Object.entries(config_queues)) {
770
767
  queue(name).start();
771
768
  }
772
769
  }
773
770
  if (this.http || this.all) {
774
771
  const server = httpServer();
775
- await server.listen(import_neko_config3.config.get("port"), () => {
772
+ await server.listen(import_neko_config2.config.get("port"), () => {
776
773
  logger().info(
777
- "Server is running on http://localhost:" + import_neko_config3.config.get("port")
774
+ "Server is running on http://localhost:" + import_neko_config2.config.get("port")
778
775
  );
779
776
  });
780
777
  }
@@ -455,16 +455,13 @@ var Router = class {
455
455
  }
456
456
  };
457
457
 
458
- // src/router.mts
459
- var import_neko_config = require("@devbro/neko-config");
460
-
461
458
  // src/facades.mts
462
459
  var import_neko_scheduler = require("@devbro/neko-scheduler");
463
460
  var import_neko_helper2 = require("@devbro/neko-helper");
464
461
  var import_neko_context3 = require("@devbro/neko-context");
465
462
  var import_neko_storage2 = require("@devbro/neko-storage");
466
463
  var import_neko_mailer2 = require("@devbro/neko-mailer");
467
- var import_neko_config2 = require("@devbro/neko-config");
464
+ var import_neko_config = require("@devbro/neko-config");
468
465
  var import_clipanion = require("clipanion");
469
466
 
470
467
  // src/http.mts
@@ -543,8 +540,8 @@ var DatabaseTransport = class {
543
540
  }
544
541
  });
545
542
  }, "processMessage");
546
- constructor(config4 = {}) {
547
- this.config = { ...this.config, ...config4 };
543
+ constructor(config3 = {}) {
544
+ this.config = { ...this.config, ...config3 };
548
545
  this.repeater = (0, import_neko_helper.createRepeater)(
549
546
  this.processMessage,
550
547
  this.config.listen_interval * 1e3
@@ -661,7 +658,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
661
658
  });
662
659
  var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
663
660
  var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
664
- let storage_config = import_neko_config2.config.get(["storages", label].join("."));
661
+ let storage_config = import_neko_config.config.get(["storages", label].join("."));
665
662
  const provider = import_neko_storage2.StorageProviderFactory.create(
666
663
  storage_config.provider,
667
664
  storage_config.config
@@ -694,7 +691,7 @@ var httpServer = (0, import_neko_helper2.createSingleton)(() => {
694
691
  return server;
695
692
  });
696
693
  var logger = (0, import_neko_helper2.createSingleton)((label) => {
697
- const logger_config = import_neko_config2.config.get(["loggers", label].join("."));
694
+ const logger_config = import_neko_config.config.get(["loggers", label].join("."));
698
695
  const rc = new import_neko_logger.Logger(logger_config);
699
696
  rc.setExtrasFunction((message) => {
700
697
  message.requestId = (0, import_neko_context3.ctxSafe)()?.get("requestId") || "N/A";
@@ -703,7 +700,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
703
700
  return rc;
704
701
  });
705
702
  var mailer = (0, import_neko_helper2.createSingleton)((label) => {
706
- const mailer_config = import_neko_config2.config.get(["mailer", label].join("."));
703
+ const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
707
704
  const provider = import_neko_mailer2.MailerProviderFactory.create(
708
705
  mailer_config.provider,
709
706
  mailer_config.config
@@ -712,7 +709,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
712
709
  return rc;
713
710
  });
714
711
  var queue = (0, import_neko_helper2.createSingleton)((label) => {
715
- const queue_config = import_neko_config2.config.get(["queues", label].join("."));
712
+ const queue_config = import_neko_config.config.get(["queues", label].join("."));
716
713
  if (!queue_config) {
717
714
  throw new Error(`Queue configuration for '${label}' not found`);
718
715
  }
@@ -724,7 +721,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
724
721
  return rc;
725
722
  });
726
723
  var cache = (0, import_neko_helper2.createSingleton)((label) => {
727
- const cache_config = import_neko_config2.config.get(["caches", label].join("."));
724
+ const cache_config = import_neko_config.config.get(["caches", label].join("."));
728
725
  if (!cache_config) {
729
726
  throw new Error(`Cache configuration for '${label}' not found`);
730
727
  }
@@ -873,7 +870,7 @@ var GenerateApiDocsCommand = class extends import_clipanion2.Command {
873
870
  let final_api_docs = {};
874
871
  for (let file_path of files_to_merge) {
875
872
  let file_json = JSON.parse(await fs.readFile(file_path, "utf8"));
876
- import_neko_helper3.Arr.deepMerge(final_api_docs, file_json);
873
+ final_api_docs = import_neko_helper3.Arr.deepMerge(final_api_docs, file_json);
877
874
  }
878
875
  await fs.writeFile(
879
876
  config_exports.config.get("api_docs.output"),
@@ -455,16 +455,13 @@ var Router = class {
455
455
  }
456
456
  };
457
457
 
458
- // src/router.mts
459
- var import_neko_config = require("@devbro/neko-config");
460
-
461
458
  // src/facades.mts
462
459
  var import_neko_scheduler = require("@devbro/neko-scheduler");
463
460
  var import_neko_helper2 = require("@devbro/neko-helper");
464
461
  var import_neko_context3 = require("@devbro/neko-context");
465
462
  var import_neko_storage2 = require("@devbro/neko-storage");
466
463
  var import_neko_mailer2 = require("@devbro/neko-mailer");
467
- var import_neko_config2 = require("@devbro/neko-config");
464
+ var import_neko_config = require("@devbro/neko-config");
468
465
  var import_clipanion = require("clipanion");
469
466
 
470
467
  // src/http.mts
@@ -543,8 +540,8 @@ var DatabaseTransport = class {
543
540
  }
544
541
  });
545
542
  }, "processMessage");
546
- constructor(config4 = {}) {
547
- this.config = { ...this.config, ...config4 };
543
+ constructor(config3 = {}) {
544
+ this.config = { ...this.config, ...config3 };
548
545
  this.repeater = (0, import_neko_helper.createRepeater)(
549
546
  this.processMessage,
550
547
  this.config.listen_interval * 1e3
@@ -661,7 +658,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
661
658
  });
662
659
  var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
663
660
  var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
664
- let storage_config = import_neko_config2.config.get(["storages", label].join("."));
661
+ let storage_config = import_neko_config.config.get(["storages", label].join("."));
665
662
  const provider = import_neko_storage2.StorageProviderFactory.create(
666
663
  storage_config.provider,
667
664
  storage_config.config
@@ -694,7 +691,7 @@ var httpServer = (0, import_neko_helper2.createSingleton)(() => {
694
691
  return server;
695
692
  });
696
693
  var logger = (0, import_neko_helper2.createSingleton)((label) => {
697
- const logger_config = import_neko_config2.config.get(["loggers", label].join("."));
694
+ const logger_config = import_neko_config.config.get(["loggers", label].join("."));
698
695
  const rc = new import_neko_logger.Logger(logger_config);
699
696
  rc.setExtrasFunction((message) => {
700
697
  message.requestId = (0, import_neko_context3.ctxSafe)()?.get("requestId") || "N/A";
@@ -703,7 +700,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
703
700
  return rc;
704
701
  });
705
702
  var mailer = (0, import_neko_helper2.createSingleton)((label) => {
706
- const mailer_config = import_neko_config2.config.get(["mailer", label].join("."));
703
+ const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
707
704
  const provider = import_neko_mailer2.MailerProviderFactory.create(
708
705
  mailer_config.provider,
709
706
  mailer_config.config
@@ -712,7 +709,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
712
709
  return rc;
713
710
  });
714
711
  var queue = (0, import_neko_helper2.createSingleton)((label) => {
715
- const queue_config = import_neko_config2.config.get(["queues", label].join("."));
712
+ const queue_config = import_neko_config.config.get(["queues", label].join("."));
716
713
  if (!queue_config) {
717
714
  throw new Error(`Queue configuration for '${label}' not found`);
718
715
  }
@@ -724,7 +721,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
724
721
  return rc;
725
722
  });
726
723
  var cache = (0, import_neko_helper2.createSingleton)((label) => {
727
- const cache_config = import_neko_config2.config.get(["caches", label].join("."));
724
+ const cache_config = import_neko_config.config.get(["caches", label].join("."));
728
725
  if (!cache_config) {
729
726
  throw new Error(`Cache configuration for '${label}' not found`);
730
727
  }
@@ -740,7 +737,7 @@ var import_clipanion2 = require("clipanion");
740
737
  var import_change_case_all = require("change-case-all");
741
738
  var import_path2 = __toESM(require("path"), 1);
742
739
  var fs = __toESM(require("fs/promises"), 1);
743
- var import_neko_config3 = require("@devbro/neko-config");
740
+ var import_neko_config2 = require("@devbro/neko-config");
744
741
  var import_handlebars = __toESM(require("handlebars"), 1);
745
742
  var import_url = require("url");
746
743
  var import_pluralize = __toESM(require("pluralize"), 1);
@@ -767,7 +764,7 @@ var GenerateControllerCommand = class extends import_clipanion2.Command {
767
764
  const filename = `${import_change_case_all.Case.capital(this.name)}Controller.ts`;
768
765
  this.context.stdout.write(`creating migration file ${filename}
769
766
  `);
770
- await fs.mkdir(import_neko_config3.config.get("migration.path"), { recursive: true });
767
+ await fs.mkdir(import_neko_config2.config.get("migration.path"), { recursive: true });
771
768
  let dirname = typeof __dirname === "string" ? __dirname : void 0;
772
769
  if (!dirname) {
773
770
  dirname = import_path2.default.dirname((0, import_url.fileURLToPath)(import_meta.url));
@@ -456,16 +456,13 @@ var Router = class {
456
456
  }
457
457
  };
458
458
 
459
- // src/router.mts
460
- var import_neko_config = require("@devbro/neko-config");
461
-
462
459
  // src/facades.mts
463
460
  var import_neko_scheduler = require("@devbro/neko-scheduler");
464
461
  var import_neko_helper2 = require("@devbro/neko-helper");
465
462
  var import_neko_context3 = require("@devbro/neko-context");
466
463
  var import_neko_storage2 = require("@devbro/neko-storage");
467
464
  var import_neko_mailer2 = require("@devbro/neko-mailer");
468
- var import_neko_config2 = require("@devbro/neko-config");
465
+ var import_neko_config = require("@devbro/neko-config");
469
466
  var import_clipanion = require("clipanion");
470
467
 
471
468
  // src/http.mts
@@ -544,8 +541,8 @@ var DatabaseTransport = class {
544
541
  }
545
542
  });
546
543
  }, "processMessage");
547
- constructor(config5 = {}) {
548
- this.config = { ...this.config, ...config5 };
544
+ constructor(config4 = {}) {
545
+ this.config = { ...this.config, ...config4 };
549
546
  this.repeater = (0, import_neko_helper.createRepeater)(
550
547
  this.processMessage,
551
548
  this.config.listen_interval * 1e3
@@ -662,7 +659,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
662
659
  });
663
660
  var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
664
661
  var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
665
- let storage_config = import_neko_config2.config.get(["storages", label].join("."));
662
+ let storage_config = import_neko_config.config.get(["storages", label].join("."));
666
663
  const provider = import_neko_storage2.StorageProviderFactory.create(
667
664
  storage_config.provider,
668
665
  storage_config.config
@@ -695,7 +692,7 @@ var httpServer = (0, import_neko_helper2.createSingleton)(() => {
695
692
  return server;
696
693
  });
697
694
  var logger = (0, import_neko_helper2.createSingleton)((label) => {
698
- const logger_config = import_neko_config2.config.get(["loggers", label].join("."));
695
+ const logger_config = import_neko_config.config.get(["loggers", label].join("."));
699
696
  const rc = new import_neko_logger.Logger(logger_config);
700
697
  rc.setExtrasFunction((message) => {
701
698
  message.requestId = (0, import_neko_context3.ctxSafe)()?.get("requestId") || "N/A";
@@ -704,7 +701,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
704
701
  return rc;
705
702
  });
706
703
  var mailer = (0, import_neko_helper2.createSingleton)((label) => {
707
- const mailer_config = import_neko_config2.config.get(["mailer", label].join("."));
704
+ const mailer_config = import_neko_config.config.get(["mailer", label].join("."));
708
705
  const provider = import_neko_mailer2.MailerProviderFactory.create(
709
706
  mailer_config.provider,
710
707
  mailer_config.config
@@ -713,7 +710,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
713
710
  return rc;
714
711
  });
715
712
  var queue = (0, import_neko_helper2.createSingleton)((label) => {
716
- const queue_config = import_neko_config2.config.get(["queues", label].join("."));
713
+ const queue_config = import_neko_config.config.get(["queues", label].join("."));
717
714
  if (!queue_config) {
718
715
  throw new Error(`Queue configuration for '${label}' not found`);
719
716
  }
@@ -725,7 +722,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
725
722
  return rc;
726
723
  });
727
724
  var cache = (0, import_neko_helper2.createSingleton)((label) => {
728
- const cache_config = import_neko_config2.config.get(["caches", label].join("."));
725
+ const cache_config = import_neko_config.config.get(["caches", label].join("."));
729
726
  if (!cache_config) {
730
727
  throw new Error(`Cache configuration for '${label}' not found`);
731
728
  }
@@ -741,7 +738,7 @@ var import_clipanion2 = require("clipanion");
741
738
  var import_change_case_all = require("change-case-all");
742
739
  var import_path2 = __toESM(require("path"), 1);
743
740
  var fs = __toESM(require("fs/promises"), 1);
744
- var import_neko_config3 = require("@devbro/neko-config");
741
+ var import_neko_config2 = require("@devbro/neko-config");
745
742
  var import_handlebars = __toESM(require("handlebars"), 1);
746
743
  var import_url = require("url");
747
744
  var import_pluralize = __toESM(require("pluralize"), 1);
@@ -768,7 +765,7 @@ var GenerateControllerCommand = class extends import_clipanion2.Command {
768
765
  const filename = `${import_change_case_all.Case.capital(this.name)}Controller.ts`;
769
766
  this.context.stdout.write(`creating migration file ${filename}
770
767
  `);
771
- await fs.mkdir(import_neko_config3.config.get("migration.path"), { recursive: true });
768
+ await fs.mkdir(import_neko_config2.config.get("migration.path"), { recursive: true });
772
769
  let dirname = typeof __dirname === "string" ? __dirname : void 0;
773
770
  if (!dirname) {
774
771
  dirname = import_path2.default.dirname((0, import_url.fileURLToPath)(import_meta.url));
@@ -927,7 +924,7 @@ var GenerateApiDocsCommand = class extends import_clipanion3.Command {
927
924
  let final_api_docs = {};
928
925
  for (let file_path of files_to_merge) {
929
926
  let file_json = JSON.parse(await fs2.readFile(file_path, "utf8"));
930
- import_neko_helper3.Arr.deepMerge(final_api_docs, file_json);
927
+ final_api_docs = import_neko_helper3.Arr.deepMerge(final_api_docs, file_json);
931
928
  }
932
929
  await fs2.writeFile(
933
930
  config_exports.config.get("api_docs.output"),