@devbro/pashmak 0.1.27 → 0.1.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/console/generate/GenerateApiDocsCommand.d.mts +9 -0
- package/dist/app/console/generate/GenerateApiDocsCommand.mjs +117 -0
- package/dist/app/console/generate/GenerateApiDocsCommand.mjs.map +1 -0
- package/dist/app/console/generate/index.d.mts +1 -0
- package/dist/app/console/generate/index.mjs +1 -0
- package/dist/app/console/generate/index.mjs.map +1 -1
- package/dist/app/console/index.d.mts +1 -0
- package/dist/bin/app/console/DefaultCommand.cjs +11 -8
- package/dist/bin/app/console/KeyGenerateCommand.cjs +11 -8
- package/dist/bin/app/console/StartCommand.cjs +15 -12
- package/dist/bin/app/console/generate/GenerateApiDocsCommand.cjs +871 -0
- package/dist/bin/app/console/generate/GenerateControllerCommand.cjs +13 -10
- package/dist/bin/app/console/generate/index.cjs +141 -24
- package/dist/bin/app/console/index.cjs +186 -69
- package/dist/bin/app/console/migrate/GenerateMigrateCommand.cjs +14 -11
- package/dist/bin/app/console/migrate/MigrateCommand.cjs +14 -11
- package/dist/bin/app/console/migrate/MigrateRollbackCommand.cjs +13 -10
- package/dist/bin/app/console/migrate/index.cjs +19 -16
- package/dist/bin/app/console/queue/GenerateQueueMigrateCommand.cjs +14 -11
- package/dist/bin/cache.cjs +11 -8
- package/dist/bin/facades.cjs +11 -8
- package/dist/bin/factories.cjs +11 -8
- package/dist/bin/index.cjs +207 -85
- package/dist/bin/middlewares.cjs +11 -8
- package/dist/bin/queue.cjs +11 -8
- package/dist/bin/router.cjs +33 -0
- package/dist/router.d.mts +4 -2
- package/dist/router.mjs +32 -0
- package/dist/router.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
import { cli, router } from "../../../facades.mjs";
|
|
4
|
+
import { Command } from "clipanion";
|
|
5
|
+
import path from "path";
|
|
6
|
+
import * as fs from "fs/promises";
|
|
7
|
+
class GenerateApiDocsCommand extends Command {
|
|
8
|
+
static {
|
|
9
|
+
__name(this, "GenerateApiDocsCommand");
|
|
10
|
+
}
|
|
11
|
+
static paths = [
|
|
12
|
+
[`make`, `apidocs`],
|
|
13
|
+
[`generate`, `apidocs`]
|
|
14
|
+
];
|
|
15
|
+
async execute() {
|
|
16
|
+
const rootDir = process.cwd();
|
|
17
|
+
this.context.stdout.write(`Generating OpenAPI documentation...
|
|
18
|
+
`);
|
|
19
|
+
const routes = router().routes;
|
|
20
|
+
const openApiSpec = {
|
|
21
|
+
openapi: "3.0.0",
|
|
22
|
+
info: {
|
|
23
|
+
title: "API Documentation",
|
|
24
|
+
version: "1.0.0",
|
|
25
|
+
description: "Auto-generated API documentation"
|
|
26
|
+
},
|
|
27
|
+
servers: [
|
|
28
|
+
{
|
|
29
|
+
url: "/",
|
|
30
|
+
description: "Local server"
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
paths: {}
|
|
34
|
+
};
|
|
35
|
+
for (const route of routes) {
|
|
36
|
+
const routePath = route.path;
|
|
37
|
+
const openApiPath = routePath.replace(/:([a-zA-Z0-9_]+)/g, "{$1}");
|
|
38
|
+
if (!openApiSpec.paths[openApiPath]) {
|
|
39
|
+
openApiSpec.paths[openApiPath] = {};
|
|
40
|
+
}
|
|
41
|
+
for (const method of route.methods) {
|
|
42
|
+
const lowerMethod = method.toLowerCase();
|
|
43
|
+
if (lowerMethod === "head") {
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
openApiSpec.paths[openApiPath][lowerMethod] = {
|
|
47
|
+
summary: `${method} ${routePath}`,
|
|
48
|
+
description: `Endpoint for ${method} ${routePath}`,
|
|
49
|
+
parameters: this.extractParameters(routePath),
|
|
50
|
+
responses: {
|
|
51
|
+
"200": {
|
|
52
|
+
description: "Successful response",
|
|
53
|
+
content: {
|
|
54
|
+
"application/json": {
|
|
55
|
+
schema: {
|
|
56
|
+
type: "object"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"500": {
|
|
62
|
+
description: "Internal server error"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
if (["post", "put", "patch"].includes(lowerMethod)) {
|
|
67
|
+
openApiSpec.paths[openApiPath][lowerMethod].requestBody = {
|
|
68
|
+
required: true,
|
|
69
|
+
content: {
|
|
70
|
+
"application/json": {
|
|
71
|
+
schema: {
|
|
72
|
+
type: "object"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const publicDir = path.join(rootDir, "public");
|
|
81
|
+
await fs.mkdir(publicDir, { recursive: true });
|
|
82
|
+
const outputPath = path.join(publicDir, "openapi.json");
|
|
83
|
+
await fs.writeFile(
|
|
84
|
+
outputPath,
|
|
85
|
+
JSON.stringify(openApiSpec, null, 2),
|
|
86
|
+
"utf-8"
|
|
87
|
+
);
|
|
88
|
+
this.context.stdout.write(
|
|
89
|
+
`OpenAPI documentation generated at: ${outputPath}
|
|
90
|
+
`
|
|
91
|
+
);
|
|
92
|
+
this.context.stdout.write(`Total routes documented: ${routes.length}
|
|
93
|
+
`);
|
|
94
|
+
}
|
|
95
|
+
extractParameters(routePath) {
|
|
96
|
+
const paramRegex = /:([a-zA-Z0-9_]+)/g;
|
|
97
|
+
const parameters = [];
|
|
98
|
+
let match;
|
|
99
|
+
while ((match = paramRegex.exec(routePath)) !== null) {
|
|
100
|
+
parameters.push({
|
|
101
|
+
name: match[1],
|
|
102
|
+
in: "path",
|
|
103
|
+
required: true,
|
|
104
|
+
schema: {
|
|
105
|
+
type: "string"
|
|
106
|
+
},
|
|
107
|
+
description: `Path parameter ${match[1]}`
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
return parameters;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
cli().register(GenerateApiDocsCommand);
|
|
114
|
+
export {
|
|
115
|
+
GenerateApiDocsCommand
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=GenerateApiDocsCommand.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/app/console/generate/GenerateApiDocsCommand.mts"],"sourcesContent":["import { cli, router } from \"../../../facades.mjs\";\nimport { Command } from \"clipanion\";\nimport path from \"path\";\nimport * as fs from \"fs/promises\";\n\nexport class GenerateApiDocsCommand extends Command {\n static paths = [\n [`make`, `apidocs`],\n [`generate`, `apidocs`],\n ];\n\n async execute() {\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 const publicDir = path.join(rootDir, \"public\");\n await fs.mkdir(publicDir, { recursive: true });\n\n // Write the OpenAPI spec to public/openapi.json\n const outputPath = path.join(publicDir, \"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\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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/app/console/generate/index.mts"],"sourcesContent":["export * from \"./GenerateControllerCommand.mjs\";\n"],"mappings":"AAAA,cAAc;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/app/console/generate/index.mts"],"sourcesContent":["export * from \"./GenerateControllerCommand.mjs\";\nexport * from \"./GenerateApiDocsCommand.mjs\";\n"],"mappings":"AAAA,cAAc;AACd,cAAc;","names":[]}
|
|
@@ -5,6 +5,7 @@ export { StartCommand } from './StartCommand.mjs';
|
|
|
5
5
|
export { DefaultCommand } from './DefaultCommand.mjs';
|
|
6
6
|
export { KeyGenerateCommand } from './KeyGenerateCommand.mjs';
|
|
7
7
|
export { GenerateControllerCommand } from './generate/GenerateControllerCommand.mjs';
|
|
8
|
+
export { GenerateApiDocsCommand } from './generate/GenerateApiDocsCommand.mjs';
|
|
8
9
|
export { CreateProjectCommand } from './project/CreateProjectCommand.mjs';
|
|
9
10
|
export { GenerateQueueMigrateCommand } from './queue/GenerateQueueMigrateCommand.mjs';
|
|
10
11
|
import 'clipanion';
|
|
@@ -456,13 +456,16 @@ var Router = class {
|
|
|
456
456
|
}
|
|
457
457
|
};
|
|
458
458
|
|
|
459
|
+
// src/router.mts
|
|
460
|
+
var import_neko_config = require("@devbro/neko-config");
|
|
461
|
+
|
|
459
462
|
// src/facades.mts
|
|
460
463
|
var import_neko_scheduler = require("@devbro/neko-scheduler");
|
|
461
464
|
var import_neko_helper2 = require("@devbro/neko-helper");
|
|
462
465
|
var import_neko_context3 = require("@devbro/neko-context");
|
|
463
466
|
var import_neko_storage2 = require("@devbro/neko-storage");
|
|
464
467
|
var import_neko_mailer2 = require("@devbro/neko-mailer");
|
|
465
|
-
var
|
|
468
|
+
var import_neko_config2 = require("@devbro/neko-config");
|
|
466
469
|
var import_clipanion = require("clipanion");
|
|
467
470
|
|
|
468
471
|
// src/http.mts
|
|
@@ -542,8 +545,8 @@ var DatabaseTransport = class {
|
|
|
542
545
|
}
|
|
543
546
|
});
|
|
544
547
|
}, "processMessage");
|
|
545
|
-
constructor(
|
|
546
|
-
this.config = { ...this.config, ...
|
|
548
|
+
constructor(config3 = {}) {
|
|
549
|
+
this.config = { ...this.config, ...config3 };
|
|
547
550
|
this.repeater = (0, import_neko_helper.createRepeater)(
|
|
548
551
|
this.processMessage,
|
|
549
552
|
this.config.listen_interval * 1e3
|
|
@@ -660,7 +663,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
|
660
663
|
});
|
|
661
664
|
var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
|
|
662
665
|
var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
|
|
663
|
-
let storage_config =
|
|
666
|
+
let storage_config = import_neko_config2.config.get(["storages", label].join("."));
|
|
664
667
|
const provider = import_neko_storage2.StorageProviderFactory.create(
|
|
665
668
|
storage_config.provider,
|
|
666
669
|
storage_config.config
|
|
@@ -711,7 +714,7 @@ var httpServer = (0, import_neko_helper2.createSingleton)(() => {
|
|
|
711
714
|
return server;
|
|
712
715
|
});
|
|
713
716
|
var logger = (0, import_neko_helper2.createSingleton)((label) => {
|
|
714
|
-
const logger_config =
|
|
717
|
+
const logger_config = import_neko_config2.config.get(["loggers", label].join("."));
|
|
715
718
|
const rc = new import_neko_logger.Logger(logger_config);
|
|
716
719
|
rc.setExtrasFunction((message) => {
|
|
717
720
|
message.requestId = (0, import_neko_context3.ctxSafe)()?.get("requestId") || "N/A";
|
|
@@ -720,7 +723,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
720
723
|
return rc;
|
|
721
724
|
});
|
|
722
725
|
var mailer = (0, import_neko_helper2.createSingleton)((label) => {
|
|
723
|
-
const mailer_config =
|
|
726
|
+
const mailer_config = import_neko_config2.config.get(["mailer", label].join("."));
|
|
724
727
|
const provider = import_neko_mailer2.MailerProviderFactory.create(
|
|
725
728
|
mailer_config.provider,
|
|
726
729
|
mailer_config.config
|
|
@@ -729,7 +732,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
729
732
|
return rc;
|
|
730
733
|
});
|
|
731
734
|
var queue = (0, import_neko_helper2.createSingleton)((label) => {
|
|
732
|
-
const queue_config =
|
|
735
|
+
const queue_config = import_neko_config2.config.get(["queues", label].join("."));
|
|
733
736
|
if (!queue_config) {
|
|
734
737
|
throw new Error(`Queue configuration for '${label}' not found`);
|
|
735
738
|
}
|
|
@@ -741,7 +744,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
741
744
|
return rc;
|
|
742
745
|
});
|
|
743
746
|
var cache = (0, import_neko_helper2.createSingleton)((label) => {
|
|
744
|
-
const cache_config =
|
|
747
|
+
const cache_config = import_neko_config2.config.get(["caches", label].join("."));
|
|
745
748
|
if (!cache_config) {
|
|
746
749
|
throw new Error(`Cache configuration for '${label}' not found`);
|
|
747
750
|
}
|
|
@@ -459,13 +459,16 @@ var Router = class {
|
|
|
459
459
|
}
|
|
460
460
|
};
|
|
461
461
|
|
|
462
|
+
// src/router.mts
|
|
463
|
+
var import_neko_config = require("@devbro/neko-config");
|
|
464
|
+
|
|
462
465
|
// src/facades.mts
|
|
463
466
|
var import_neko_scheduler = require("@devbro/neko-scheduler");
|
|
464
467
|
var import_neko_helper2 = require("@devbro/neko-helper");
|
|
465
468
|
var import_neko_context3 = require("@devbro/neko-context");
|
|
466
469
|
var import_neko_storage2 = require("@devbro/neko-storage");
|
|
467
470
|
var import_neko_mailer2 = require("@devbro/neko-mailer");
|
|
468
|
-
var
|
|
471
|
+
var import_neko_config2 = require("@devbro/neko-config");
|
|
469
472
|
var import_clipanion = require("clipanion");
|
|
470
473
|
|
|
471
474
|
// src/http.mts
|
|
@@ -545,8 +548,8 @@ var DatabaseTransport = class {
|
|
|
545
548
|
}
|
|
546
549
|
});
|
|
547
550
|
}, "processMessage");
|
|
548
|
-
constructor(
|
|
549
|
-
this.config = { ...this.config, ...
|
|
551
|
+
constructor(config3 = {}) {
|
|
552
|
+
this.config = { ...this.config, ...config3 };
|
|
550
553
|
this.repeater = (0, import_neko_helper.createRepeater)(
|
|
551
554
|
this.processMessage,
|
|
552
555
|
this.config.listen_interval * 1e3
|
|
@@ -663,7 +666,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
|
663
666
|
});
|
|
664
667
|
var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
|
|
665
668
|
var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
|
|
666
|
-
let storage_config =
|
|
669
|
+
let storage_config = import_neko_config2.config.get(["storages", label].join("."));
|
|
667
670
|
const provider = import_neko_storage2.StorageProviderFactory.create(
|
|
668
671
|
storage_config.provider,
|
|
669
672
|
storage_config.config
|
|
@@ -714,7 +717,7 @@ var httpServer = (0, import_neko_helper2.createSingleton)(() => {
|
|
|
714
717
|
return server;
|
|
715
718
|
});
|
|
716
719
|
var logger = (0, import_neko_helper2.createSingleton)((label) => {
|
|
717
|
-
const logger_config =
|
|
720
|
+
const logger_config = import_neko_config2.config.get(["loggers", label].join("."));
|
|
718
721
|
const rc = new import_neko_logger.Logger(logger_config);
|
|
719
722
|
rc.setExtrasFunction((message) => {
|
|
720
723
|
message.requestId = (0, import_neko_context3.ctxSafe)()?.get("requestId") || "N/A";
|
|
@@ -723,7 +726,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
723
726
|
return rc;
|
|
724
727
|
});
|
|
725
728
|
var mailer = (0, import_neko_helper2.createSingleton)((label) => {
|
|
726
|
-
const mailer_config =
|
|
729
|
+
const mailer_config = import_neko_config2.config.get(["mailer", label].join("."));
|
|
727
730
|
const provider = import_neko_mailer2.MailerProviderFactory.create(
|
|
728
731
|
mailer_config.provider,
|
|
729
732
|
mailer_config.config
|
|
@@ -732,7 +735,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
732
735
|
return rc;
|
|
733
736
|
});
|
|
734
737
|
var queue = (0, import_neko_helper2.createSingleton)((label) => {
|
|
735
|
-
const queue_config =
|
|
738
|
+
const queue_config = import_neko_config2.config.get(["queues", label].join("."));
|
|
736
739
|
if (!queue_config) {
|
|
737
740
|
throw new Error(`Queue configuration for '${label}' not found`);
|
|
738
741
|
}
|
|
@@ -744,7 +747,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
744
747
|
return rc;
|
|
745
748
|
});
|
|
746
749
|
var cache = (0, import_neko_helper2.createSingleton)((label) => {
|
|
747
|
-
const cache_config =
|
|
750
|
+
const cache_config = import_neko_config2.config.get(["caches", label].join("."));
|
|
748
751
|
if (!cache_config) {
|
|
749
752
|
throw new Error(`Cache configuration for '${label}' not found`);
|
|
750
753
|
}
|
|
@@ -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
|
|
39
|
+
var import_neko_config3 = require("@devbro/neko-config");
|
|
40
40
|
|
|
41
41
|
// src/router.mts
|
|
42
42
|
var import_neko_context = require("@devbro/neko-context");
|
|
@@ -457,13 +457,16 @@ var Router = class {
|
|
|
457
457
|
}
|
|
458
458
|
};
|
|
459
459
|
|
|
460
|
+
// src/router.mts
|
|
461
|
+
var import_neko_config = require("@devbro/neko-config");
|
|
462
|
+
|
|
460
463
|
// src/facades.mts
|
|
461
464
|
var import_neko_scheduler = require("@devbro/neko-scheduler");
|
|
462
465
|
var import_neko_helper2 = require("@devbro/neko-helper");
|
|
463
466
|
var import_neko_context3 = require("@devbro/neko-context");
|
|
464
467
|
var import_neko_storage2 = require("@devbro/neko-storage");
|
|
465
468
|
var import_neko_mailer2 = require("@devbro/neko-mailer");
|
|
466
|
-
var
|
|
469
|
+
var import_neko_config2 = require("@devbro/neko-config");
|
|
467
470
|
var import_clipanion = require("clipanion");
|
|
468
471
|
|
|
469
472
|
// src/http.mts
|
|
@@ -543,8 +546,8 @@ var DatabaseTransport = class {
|
|
|
543
546
|
}
|
|
544
547
|
});
|
|
545
548
|
}, "processMessage");
|
|
546
|
-
constructor(
|
|
547
|
-
this.config = { ...this.config, ...
|
|
549
|
+
constructor(config4 = {}) {
|
|
550
|
+
this.config = { ...this.config, ...config4 };
|
|
548
551
|
this.repeater = (0, import_neko_helper.createRepeater)(
|
|
549
552
|
this.processMessage,
|
|
550
553
|
this.config.listen_interval * 1e3
|
|
@@ -661,7 +664,7 @@ var scheduler = (0, import_neko_helper2.createSingleton)(() => {
|
|
|
661
664
|
});
|
|
662
665
|
var db = /* @__PURE__ */ __name((label = "default") => (0, import_neko_context3.ctx)().getOrThrow(["database", label]), "db");
|
|
663
666
|
var storage = (0, import_neko_helper2.createSingleton)((label = "default") => {
|
|
664
|
-
let storage_config =
|
|
667
|
+
let storage_config = import_neko_config2.config.get(["storages", label].join("."));
|
|
665
668
|
const provider = import_neko_storage2.StorageProviderFactory.create(
|
|
666
669
|
storage_config.provider,
|
|
667
670
|
storage_config.config
|
|
@@ -712,7 +715,7 @@ var httpServer = (0, import_neko_helper2.createSingleton)(() => {
|
|
|
712
715
|
return server;
|
|
713
716
|
});
|
|
714
717
|
var logger = (0, import_neko_helper2.createSingleton)((label) => {
|
|
715
|
-
const logger_config =
|
|
718
|
+
const logger_config = import_neko_config2.config.get(["loggers", label].join("."));
|
|
716
719
|
const rc = new import_neko_logger.Logger(logger_config);
|
|
717
720
|
rc.setExtrasFunction((message) => {
|
|
718
721
|
message.requestId = (0, import_neko_context3.ctxSafe)()?.get("requestId") || "N/A";
|
|
@@ -721,7 +724,7 @@ var logger = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
721
724
|
return rc;
|
|
722
725
|
});
|
|
723
726
|
var mailer = (0, import_neko_helper2.createSingleton)((label) => {
|
|
724
|
-
const mailer_config =
|
|
727
|
+
const mailer_config = import_neko_config2.config.get(["mailer", label].join("."));
|
|
725
728
|
const provider = import_neko_mailer2.MailerProviderFactory.create(
|
|
726
729
|
mailer_config.provider,
|
|
727
730
|
mailer_config.config
|
|
@@ -730,7 +733,7 @@ var mailer = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
730
733
|
return rc;
|
|
731
734
|
});
|
|
732
735
|
var queue = (0, import_neko_helper2.createSingleton)((label) => {
|
|
733
|
-
const queue_config =
|
|
736
|
+
const queue_config = import_neko_config2.config.get(["queues", label].join("."));
|
|
734
737
|
if (!queue_config) {
|
|
735
738
|
throw new Error(`Queue configuration for '${label}' not found`);
|
|
736
739
|
}
|
|
@@ -742,7 +745,7 @@ var queue = (0, import_neko_helper2.createSingleton)((label) => {
|
|
|
742
745
|
return rc;
|
|
743
746
|
});
|
|
744
747
|
var cache = (0, import_neko_helper2.createSingleton)((label) => {
|
|
745
|
-
const cache_config =
|
|
748
|
+
const cache_config = import_neko_config2.config.get(["caches", label].join("."));
|
|
746
749
|
if (!cache_config) {
|
|
747
750
|
throw new Error(`Cache configuration for '${label}' not found`);
|
|
748
751
|
}
|
|
@@ -781,16 +784,16 @@ var StartCommand = class extends import_clipanion2.Command {
|
|
|
781
784
|
scheduler().start();
|
|
782
785
|
}
|
|
783
786
|
if (this.queue || this.all) {
|
|
784
|
-
const config_queues =
|
|
787
|
+
const config_queues = import_neko_config3.config.get("queues");
|
|
785
788
|
for (const [name, conf] of Object.entries(config_queues)) {
|
|
786
789
|
queue(name).start();
|
|
787
790
|
}
|
|
788
791
|
}
|
|
789
792
|
if (this.http || this.all) {
|
|
790
793
|
const server = httpServer();
|
|
791
|
-
await server.listen(
|
|
794
|
+
await server.listen(import_neko_config3.config.get("port"), () => {
|
|
792
795
|
logger().info(
|
|
793
|
-
"Server is running on http://localhost:" +
|
|
796
|
+
"Server is running on http://localhost:" + import_neko_config3.config.get("port")
|
|
794
797
|
);
|
|
795
798
|
});
|
|
796
799
|
}
|