@zyno-io/dk-server-foundation 26.225.339 → 26.228.2231

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 (34) hide show
  1. package/README.md +1 -1
  2. package/dist/resources/proto/generated/devconsole/devconsole.js +1 -1
  3. package/dist/src/cli/dksf-create-app.d.ts +3 -0
  4. package/dist/src/cli/dksf-create-app.d.ts.map +1 -0
  5. package/dist/src/cli/dksf-create-app.js +105 -0
  6. package/dist/src/cli/dksf-create-app.js.map +1 -0
  7. package/dist/src/cli/dksf.d.ts +3 -0
  8. package/dist/src/cli/dksf.d.ts.map +1 -0
  9. package/dist/src/cli/dksf.js +17 -0
  10. package/dist/src/cli/dksf.js.map +1 -0
  11. package/dist/src/services/logger.d.ts.map +1 -1
  12. package/dist/src/services/logger.js +1 -2
  13. package/dist/src/services/logger.js.map +1 -1
  14. package/docs/content/README-DEV.md +1 -1
  15. package/docs/content/cli.md +39 -0
  16. package/docs/content/devconsole.md +1 -1
  17. package/docs/content/getting-started.md +15 -1
  18. package/docs/scripts/README-SCREENSHOTS.md +4 -4
  19. package/docs/scripts/capture-devconsole-screenshots.js +1 -1
  20. package/package.json +5 -2
  21. package/src/cli/dksf-create-app.ts +113 -0
  22. package/src/cli/dksf.ts +16 -0
  23. package/src/services/logger.ts +1 -3
  24. package/template-app/.env.development +8 -0
  25. package/template-app/package.json.tmpl +29 -0
  26. package/template-app/src/app.ts +13 -0
  27. package/template-app/src/config.ts +6 -0
  28. package/template-app/src/controllers/Example.controller.ts +18 -0
  29. package/template-app/src/database.ts +5 -0
  30. package/template-app/src/entities/Example.entity.ts +9 -0
  31. package/template-app/src/index.ts +9 -0
  32. package/template-app/src/migrations/.gitkeep +0 -0
  33. package/template-app/src/services/Example.service.ts +21 -0
  34. package/template-app/tsconfig.json +20 -0
package/README.md CHANGED
@@ -429,7 +429,7 @@ DevConsole is localhost-only and communicates over SRPC/WebSocket for real-time
429
429
  A demo app showcasing all features is included:
430
430
 
431
431
  ```bash
432
- yarn demoapp
432
+ yarn devconsole-demo
433
433
  # then open http://localhost:3000/_devconsole/
434
434
  ```
435
435
 
@@ -14,7 +14,7 @@ function __assignType(fn, args) {
14
14
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
15
15
  // versions:
16
16
  // protoc-gen-ts_proto v2.11.2
17
- // protoc v5.29.6
17
+ // protoc v7.34.0
18
18
  // source: devconsole.proto
19
19
  /* eslint-disable */
20
20
  const wire_1 = require("@bufbuild/protobuf/wire");
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=dksf-create-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dksf-create-app.d.ts","sourceRoot":"","sources":["../../../src/cli/dksf-create-app.ts"],"names":[],"mappings":""}
@@ -0,0 +1,105 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const tslib_1 = require("tslib");
5
+ const __ΩRecord = ['K', 'T', 'Record', 'l\'e#"Rb!b"Pde"!N#!w#y'];
6
+ const fs = tslib_1.__importStar(require("fs"));
7
+ const path = tslib_1.__importStar(require("path"));
8
+ function main() {
9
+ const args = process.argv.slice(2);
10
+ if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
11
+ printUsage();
12
+ process.exit(args.length === 0 ? 1 : 0);
13
+ }
14
+ const packageName = args[0];
15
+ const unscopedName = packageName.includes('/') ? packageName.split('/').pop() : packageName;
16
+ const targetDir = args[1] || unscopedName;
17
+ const absoluteTarget = path.resolve(targetDir);
18
+ if (!/^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(packageName)) {
19
+ console.error(`Error: Invalid package name: ${packageName}`);
20
+ process.exit(1);
21
+ }
22
+ if (fs.existsSync(absoluteTarget)) {
23
+ console.error(`Error: Directory already exists: ${absoluteTarget}`);
24
+ process.exit(1);
25
+ }
26
+ const packageDir = __dirname.substring(0, __dirname.lastIndexOf('dist') - 1);
27
+ const templateDir = path.join(packageDir, 'template-app');
28
+ if (!fs.existsSync(templateDir)) {
29
+ console.error('Error: Template directory not found. Ensure @zyno-io/dk-server-foundation is properly installed.');
30
+ process.exit(1);
31
+ }
32
+ const dbName = unscopedName.replace(/[^a-z0-9]/g, '_');
33
+ const redisPrefix = unscopedName.replace(/[-_.]/g, '');
34
+ const dksfVersion = getDksfVersion(packageDir);
35
+ const replacements = {
36
+ '%%PACKAGE_NAME%%': packageName,
37
+ '%%APP_DB_NAME%%': dbName,
38
+ '%%APP_REDIS_PREFIX%%': redisPrefix,
39
+ '%%DKSF_VERSION%%': dksfVersion
40
+ };
41
+ console.log(`Creating ${packageName} in ${absoluteTarget}...`);
42
+ console.log();
43
+ copyTemplate(templateDir, absoluteTarget, replacements);
44
+ console.log('Done! Next steps:');
45
+ console.log();
46
+ console.log(` cd ${targetDir}`);
47
+ console.log(' yarn install # or: npm install');
48
+ console.log();
49
+ console.log(' # Configure .env.development with your database credentials');
50
+ console.log(' # Then start developing:');
51
+ console.log(' yarn dev');
52
+ console.log();
53
+ }
54
+ main.__type = ['main', 'P"/!'];
55
+ function printUsage() {
56
+ console.log('Usage: dksf-create-app <package-name> [path]');
57
+ console.log();
58
+ console.log('Arguments:');
59
+ console.log(' <package-name> npm package name (e.g. @myorg/my-api or my-api)');
60
+ console.log(' [path] Output directory (defaults to the unscoped package name)');
61
+ console.log();
62
+ console.log('Examples:');
63
+ console.log(' npx @zyno-io/dk-server-foundation create-app @myorg/my-api');
64
+ console.log(' npx @zyno-io/dk-server-foundation create-app my-api ./custom-path');
65
+ console.log(' dksf-create-app @myorg/my-api');
66
+ console.log();
67
+ }
68
+ printUsage.__type = ['printUsage', 'P"/!'];
69
+ function getDksfVersion(packageDir) {
70
+ try {
71
+ const pkg = JSON.parse(fs.readFileSync(path.join(packageDir, 'package.json'), 'utf-8'));
72
+ if (pkg.version === '0.0.0-dev')
73
+ return '*';
74
+ return `^${pkg.version}`;
75
+ }
76
+ catch {
77
+ return '*';
78
+ }
79
+ }
80
+ getDksfVersion.__type = ['packageDir', 'getDksfVersion', 'P&2!&/"'];
81
+ function copyTemplate(src, dest, replacements) {
82
+ fs.mkdirSync(dest, { recursive: true });
83
+ for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
84
+ const srcPath = path.join(src, entry.name);
85
+ if (entry.isDirectory()) {
86
+ if (entry.name === 'dist')
87
+ continue;
88
+ copyTemplate(srcPath, path.join(dest, entry.name), replacements);
89
+ continue;
90
+ }
91
+ // Rename .tmpl files (e.g. package.json.tmpl -> package.json)
92
+ let destName = entry.name;
93
+ if (destName.endsWith('.tmpl')) {
94
+ destName = destName.slice(0, -5);
95
+ }
96
+ let content = fs.readFileSync(srcPath, 'utf-8');
97
+ for (const [key, value] of Object.entries(replacements)) {
98
+ content = content.split(key).join(value);
99
+ }
100
+ fs.writeFileSync(path.join(dest, destName), content);
101
+ }
102
+ }
103
+ copyTemplate.__type = ['src', 'dest', () => __ΩRecord, 'replacements', 'copyTemplate', 'P&2!&2"&&o##2$"/%'];
104
+ main();
105
+ //# sourceMappingURL=dksf-create-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dksf-create-app.js","sourceRoot":"","sources":["../../../src/cli/dksf-create-app.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ declare const cmd: string, rest: string[];
3
+ //# sourceMappingURL=dksf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dksf.d.ts","sourceRoot":"","sources":["../../../src/cli/dksf.ts"],"names":[],"mappings":";AAEA,QAAA,MAAO,GAAG,UAAK,IAAI,UAAyB,CAAC"}
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ const [cmd, ...rest] = process.argv.slice(2);
4
+ if (cmd === 'create-app') {
5
+ // Shift argv so dksf-create-app sees the right arguments
6
+ process.argv = [process.argv[0], process.argv[1], ...rest];
7
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
8
+ require('./dksf-create-app');
9
+ }
10
+ else {
11
+ console.error('Usage: npx @zyno-io/dk-server-foundation <command>');
12
+ console.error();
13
+ console.error('Commands:');
14
+ console.error(' create-app <package-name> [path] Scaffold a new application');
15
+ process.exit(1);
16
+ }
17
+ //# sourceMappingURL=dksf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dksf.js","sourceRoot":"","sources":["../../../src/cli/dksf.ts"],"names":[],"mappings":";;AAEA,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE7C,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;IACvB,yDAAyD;IACzD,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3D,iEAAiE;IACjE,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACjC,CAAC;KAAM,CAAC;IACJ,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACpE,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/services/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAoB,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAWlG,eAAO,MAAM,mBAAmB,SAAsD,CAAC;AACvF,eAAO,MAAM,mBAAmB,SAA2D,CAAC;AAC5F,eAAO,MAAM,kBAAkB,EAAE,MAAM,EAAoB,CAAC;AAC5D,eAAO,MAAM,mBAAmB,eAA0B,CAAC;AAE3D,QAAA,MAAM,eAAe;;;;;;;;;CASX,CAAC;AACX,KAAK,QAAQ,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAiCvE,eAAO,MAAM,UAAU,uCAatB,CAAC;AAEF,qBAAa,cAAe,SAAQ,MAAM;IACtC,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAE9B,YAAY,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAa9C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,cAAc;IA8BzD,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,OAAO;IAmDlE,KAAK,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI;IAK9B,eAAe;;;IAqBf,WAAW,CAAC,OAAO,EAAE,MAAM;IAI3B,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO;IAK3B,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,KAAK,GAAG,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI;CAUxH;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,OAAO,kBAM5F;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAWpF"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/services/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAoB,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAWlG,eAAO,MAAM,mBAAmB,SAAsD,CAAC;AACvF,eAAO,MAAM,mBAAmB,SAA2D,CAAC;AAC5F,eAAO,MAAM,kBAAkB,EAAE,MAAM,EAAoB,CAAC;AAC5D,eAAO,MAAM,mBAAmB,eAA0B,CAAC;AAE3D,QAAA,MAAM,eAAe;;;;;;;;;CASX,CAAC;AACX,KAAK,QAAQ,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAiCvE,eAAO,MAAM,UAAU,uCAatB,CAAC;AAEF,qBAAa,cAAe,SAAQ,MAAM;IACtC,SAAS,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAE9B,YAAY,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAa9C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,cAAc;IA8BzD,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,OAAO;IAmDlE,KAAK,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI;IAK9B,eAAe;;;IAqBf,WAAW,CAAC,OAAO,EAAE,MAAM;IAI3B,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO;IAK3B,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,KAAK,GAAG,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI;CAUxH;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,EAAE,OAAO,kBAI5F;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAWpF"}
@@ -209,8 +209,7 @@ ExtendedLogger.__type = [() => logger_1.Logger, () => __ΩLogData, 'scopeData',
209
209
  function createLogger(subject, defaultData) {
210
210
  const name = typeof subject === 'string' ? subject : subject.constructor.name;
211
211
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
212
- return (resolver_1.r.Ω = [[() => ExtendedLogger, 'P7!']], (0, resolver_1.r)(logger_1.Logger)).scoped(name)
213
- .setScopeData(defaultData);
212
+ return (resolver_1.r.Ω = [[() => ExtendedLogger, 'P7!']], (0, resolver_1.r)(logger_1.Logger)).scoped(name, defaultData);
214
213
  }
215
214
  createLogger.__type = [() => __ΩInstanceType, () => __ΩClassType, 'subject', () => __ΩLogData, 'defaultData', 'createLogger', 'PP&n"o!"J2#n$2%8"/&'];
216
215
  function withLoggerContext(data, fn) {
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/services/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/services/logger.ts"],"names":[],"mappings":"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"}
@@ -102,7 +102,7 @@ To update the DevConsole screenshots used in the documentation:
102
102
  1. In one terminal, start the demo app:
103
103
 
104
104
  ```bash
105
- yarn demoapp
105
+ yarn devconsole-demo
106
106
  ```
107
107
 
108
108
  2. Wait for the server to start (you'll see "Server started" message)
@@ -130,6 +130,45 @@ node app.js worker:queue SendEmailJob '{"to":"user@example.com","subject":"Hello
130
130
 
131
131
  These are installed as bin scripts by the package:
132
132
 
133
+ ### `dksf-create-app`
134
+
135
+ Scaffold a new application from the built-in template:
136
+
137
+ ```bash
138
+ # Using npx (no install required)
139
+ npx @zyno-io/dk-server-foundation create-app <package-name> [path]
140
+
141
+ # Or directly if dk-server-foundation is installed
142
+ dksf-create-app <package-name> [path]
143
+ ```
144
+
145
+ | Argument | Description |
146
+ | ---------------- | ---------------------------------------------------------------- |
147
+ | `<package-name>` | npm package name (e.g. `@myorg/my-api` or `my-api`) |
148
+ | `[path]` | Output directory (defaults to the unscoped package name) |
149
+
150
+ The generated project includes:
151
+
152
+ - OTEL telemetry setup
153
+ - A single controller, service, and database entity
154
+ - MySQL database configuration
155
+ - TypeScript config with Deepkit reflection enabled
156
+ - Development environment defaults (`.env.development`)
157
+ - Standard scripts: `dev`, `build`, `test`, `migrate`, `migrate:create`, `migrate:reset`
158
+
159
+ Examples:
160
+
161
+ ```bash
162
+ # Creates ./my-api/ with package name "my-api"
163
+ npx @zyno-io/dk-server-foundation create-app my-api
164
+
165
+ # Creates ./my-api/ with package name "@myorg/my-api"
166
+ npx @zyno-io/dk-server-foundation create-app @myorg/my-api
167
+
168
+ # Creates ./custom-path/ with package name "@myorg/my-api"
169
+ npx @zyno-io/dk-server-foundation create-app @myorg/my-api ./custom-path
170
+ ```
171
+
133
172
  ### `dksf-dev`
134
173
 
135
174
  All-in-one development workflow tool. Subcommands for cleaning, building, running dev servers, migrations, tests, and REPL.
@@ -143,7 +143,7 @@ In development, the frontend can be run standalone with `cd devconsole && npm ru
143
143
  A demo application is included to showcase all DevConsole features:
144
144
 
145
145
  ```bash
146
- yarn demoapp
146
+ yarn devconsole-demo
147
147
  ```
148
148
 
149
149
  This starts a server at `http://localhost:3000` with auto-generated HTTP traffic, SRPC client/server chatter, worker jobs, and mutex contention. Open `http://localhost:3000/_devconsole/` to see it all in action.
@@ -1,6 +1,20 @@
1
1
  # Getting Started
2
2
 
3
- ## Installation
3
+ ## Quick Start
4
+
5
+ Scaffold a new project with a single command:
6
+
7
+ ```bash
8
+ npx @zyno-io/dk-server-foundation create-app @myorg/my-api
9
+ cd my-api
10
+ yarn install
11
+ # Configure .env.development with your database credentials
12
+ yarn dev
13
+ ```
14
+
15
+ This generates a ready-to-run project with OTEL telemetry, a controller, a service, a database entity, and all config files. See [CLI Tools](./cli.md#dksf-create-app) for details.
16
+
17
+ ## Manual Installation
4
18
 
5
19
  ```bash
6
20
  npm install @zyno-io/dk-server-foundation
@@ -22,10 +22,10 @@ This directory contains a script to capture DevConsole screenshots for documenta
22
22
 
23
23
  ### Step 1: Start the Demo Application
24
24
 
25
- In one terminal window, start the demoapp:
25
+ In one terminal window, start the devconsole-demo:
26
26
 
27
27
  ```bash
28
- yarn demoapp
28
+ yarn devconsole-demo
29
29
  ```
30
30
 
31
31
  Wait for the output to show:
@@ -84,9 +84,9 @@ The script captures all DevConsole views in navigation order:
84
84
 
85
85
  ### "Connection refused" or "Navigation timeout"
86
86
 
87
- Make sure the demoapp is running:
87
+ Make sure the devconsole-demo is running:
88
88
  ```bash
89
- yarn demoapp
89
+ yarn devconsole-demo
90
90
  ```
91
91
 
92
92
  Check that you can access http://localhost:3000/_devconsole in your browser.
@@ -10,7 +10,7 @@
10
10
  * Prerequisites:
11
11
  * 1. Install dependencies: cd docs && yarn install
12
12
  * 2. Install browsers: cd docs && npx playwright install chromium
13
- * 3. Start the demoapp: yarn demoapp
13
+ * 3. Start the devconsole-demo: yarn devconsole-demo
14
14
  * 4. Wait for the server to be ready (check console output)
15
15
  *
16
16
  * Usage:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zyno-io/dk-server-foundation",
3
- "version": "26.225.339",
3
+ "version": "26.228.2231",
4
4
  "description": "TypeScript server foundation built on the Deepkit framework",
5
5
  "repository": {
6
6
  "type": "git",
@@ -11,6 +11,8 @@
11
11
  "url": "https://github.com/zyno-io/dk-server-foundation/issues"
12
12
  },
13
13
  "bin": {
14
+ "dk-server-foundation": "./dist/src/cli/dksf.js",
15
+ "dksf-create-app": "./dist/src/cli/dksf-create-app.js",
14
16
  "dksf-dev": "./dist/src/cli/dksf-dev.js",
15
17
  "dksf-gen-proto": "./dist/src/cli/dksf-gen-proto.js",
16
18
  "dksf-install": "./dist/src/cli/dksf-install.js",
@@ -27,7 +29,7 @@
27
29
  "postinstall": "dksf-install || yarn postinstall:alt",
28
30
  "postinstall:alt": "patch-package && deepkit-type-install",
29
31
  "testapp": "yarn clean && tsc -p tsconfig.testapp.json && node dist/testapp/bootstrap server:start",
30
- "demoapp": "yarn build:devconsole && dksf-dev run -p tsconfig.demoapp.json dist/demoapp/bootstrap",
32
+ "devconsole-demo": "yarn build:devconsole && dksf-dev run -p tsconfig.devconsole-demo.json dist/devconsole-demo/bootstrap",
31
33
  "gen:proto": "ts-node src/cli/dksf-gen-proto.ts resources/proto/test.proto resources/proto/generated/test && ts-node src/cli/dksf-gen-proto.ts resources/proto/devconsole.proto resources/proto/generated/devconsole"
32
34
  },
33
35
  "author": {
@@ -129,6 +131,7 @@
129
131
  "docs/",
130
132
  "patches/",
131
133
  "src/",
134
+ "template-app/",
132
135
  "types.d.ts",
133
136
  "!**/*.tsbuildinfo",
134
137
  "!**/CLAUDE.md",
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/env node
2
+
3
+ import * as fs from 'fs';
4
+ import * as path from 'path';
5
+
6
+ function main() {
7
+ const args = process.argv.slice(2);
8
+
9
+ if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
10
+ printUsage();
11
+ process.exit(args.length === 0 ? 1 : 0);
12
+ }
13
+
14
+ const packageName = args[0];
15
+ const unscopedName = packageName.includes('/') ? packageName.split('/').pop()! : packageName;
16
+ const targetDir = args[1] || unscopedName;
17
+ const absoluteTarget = path.resolve(targetDir);
18
+
19
+ if (!/^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(packageName)) {
20
+ console.error(`Error: Invalid package name: ${packageName}`);
21
+ process.exit(1);
22
+ }
23
+
24
+ if (fs.existsSync(absoluteTarget)) {
25
+ console.error(`Error: Directory already exists: ${absoluteTarget}`);
26
+ process.exit(1);
27
+ }
28
+
29
+ const packageDir = __dirname.substring(0, __dirname.lastIndexOf('dist') - 1);
30
+ const templateDir = path.join(packageDir, 'template-app');
31
+ if (!fs.existsSync(templateDir)) {
32
+ console.error('Error: Template directory not found. Ensure @zyno-io/dk-server-foundation is properly installed.');
33
+ process.exit(1);
34
+ }
35
+
36
+ const dbName = unscopedName.replace(/[^a-z0-9]/g, '_');
37
+ const redisPrefix = unscopedName.replace(/[-_.]/g, '');
38
+ const dksfVersion = getDksfVersion(packageDir);
39
+
40
+ const replacements: Record<string, string> = {
41
+ '%%PACKAGE_NAME%%': packageName,
42
+ '%%APP_DB_NAME%%': dbName,
43
+ '%%APP_REDIS_PREFIX%%': redisPrefix,
44
+ '%%DKSF_VERSION%%': dksfVersion
45
+ };
46
+
47
+ console.log(`Creating ${packageName} in ${absoluteTarget}...`);
48
+ console.log();
49
+
50
+ copyTemplate(templateDir, absoluteTarget, replacements);
51
+
52
+ console.log('Done! Next steps:');
53
+ console.log();
54
+ console.log(` cd ${targetDir}`);
55
+ console.log(' yarn install # or: npm install');
56
+ console.log();
57
+ console.log(' # Configure .env.development with your database credentials');
58
+ console.log(' # Then start developing:');
59
+ console.log(' yarn dev');
60
+ console.log();
61
+ }
62
+
63
+ function printUsage() {
64
+ console.log('Usage: dksf-create-app <package-name> [path]');
65
+ console.log();
66
+ console.log('Arguments:');
67
+ console.log(' <package-name> npm package name (e.g. @myorg/my-api or my-api)');
68
+ console.log(' [path] Output directory (defaults to the unscoped package name)');
69
+ console.log();
70
+ console.log('Examples:');
71
+ console.log(' npx @zyno-io/dk-server-foundation create-app @myorg/my-api');
72
+ console.log(' npx @zyno-io/dk-server-foundation create-app my-api ./custom-path');
73
+ console.log(' dksf-create-app @myorg/my-api');
74
+ console.log();
75
+ }
76
+
77
+ function getDksfVersion(packageDir: string): string {
78
+ try {
79
+ const pkg = JSON.parse(fs.readFileSync(path.join(packageDir, 'package.json'), 'utf-8'));
80
+ if (pkg.version === '0.0.0-dev') return '*';
81
+ return `^${pkg.version}`;
82
+ } catch {
83
+ return '*';
84
+ }
85
+ }
86
+
87
+ function copyTemplate(src: string, dest: string, replacements: Record<string, string>) {
88
+ fs.mkdirSync(dest, { recursive: true });
89
+
90
+ for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
91
+ const srcPath = path.join(src, entry.name);
92
+
93
+ if (entry.isDirectory()) {
94
+ if (entry.name === 'dist') continue;
95
+ copyTemplate(srcPath, path.join(dest, entry.name), replacements);
96
+ continue;
97
+ }
98
+
99
+ // Rename .tmpl files (e.g. package.json.tmpl -> package.json)
100
+ let destName = entry.name;
101
+ if (destName.endsWith('.tmpl')) {
102
+ destName = destName.slice(0, -5);
103
+ }
104
+
105
+ let content = fs.readFileSync(srcPath, 'utf-8');
106
+ for (const [key, value] of Object.entries(replacements)) {
107
+ content = content.split(key).join(value);
108
+ }
109
+ fs.writeFileSync(path.join(dest, destName), content);
110
+ }
111
+ }
112
+
113
+ main();
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+
3
+ const [cmd, ...rest] = process.argv.slice(2);
4
+
5
+ if (cmd === 'create-app') {
6
+ // Shift argv so dksf-create-app sees the right arguments
7
+ process.argv = [process.argv[0], process.argv[1], ...rest];
8
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
9
+ require('./dksf-create-app');
10
+ } else {
11
+ console.error('Usage: npx @zyno-io/dk-server-foundation <command>');
12
+ console.error();
13
+ console.error('Commands:');
14
+ console.error(' create-app <package-name> [path] Scaffold a new application');
15
+ process.exit(1);
16
+ }
@@ -220,9 +220,7 @@ export class ExtendedLogger extends Logger {
220
220
  export function createLogger(subject: string | InstanceType<ClassType>, defaultData?: LogData) {
221
221
  const name = typeof subject === 'string' ? subject : subject.constructor.name;
222
222
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
223
- return r<ExtendedLogger>(Logger as any)
224
- .scoped(name)
225
- .setScopeData(defaultData);
223
+ return r<ExtendedLogger>(Logger as any).scoped(name, defaultData);
226
224
  }
227
225
 
228
226
  export function withLoggerContext<T>(data: LogData, fn: () => Promise<T>): Promise<T> {
@@ -0,0 +1,8 @@
1
+ APP_ENV=development
2
+ MYSQL_HOST=127.0.0.1
3
+ MYSQL_PORT=3306
4
+ MYSQL_USER=root
5
+ MYSQL_PASSWORD_SECRET=secret
6
+ MYSQL_DATABASE=%%APP_DB_NAME%%
7
+ REDIS_HOST=127.0.0.1
8
+ REDIS_PREFIX=%%APP_REDIS_PREFIX%%
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "%%PACKAGE_NAME%%",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "main": "./dist/src/index.js",
6
+ "scripts": {
7
+ "build": "dksf-dev build",
8
+ "dev": "dksf-dev run",
9
+ "migrate": "dksf-dev migrate",
10
+ "migrate:create": "dksf-dev migrate:create",
11
+ "migrate:reset": "dksf-dev migrate:reset",
12
+ "test": "dksf-dev test",
13
+ "test:debug": "dksf-dev test --debug",
14
+ "format": "prettier --write .",
15
+ "postinstall": "dksf-install"
16
+ },
17
+ "dependencies": {
18
+ "@deepkit/http": "1.0.19",
19
+ "@deepkit/logger": "1.0.19",
20
+ "@deepkit/orm": "1.0.19",
21
+ "@deepkit/type": "1.0.19",
22
+ "@zyno-io/dk-server-foundation": "%%DKSF_VERSION%%"
23
+ },
24
+ "devDependencies": {
25
+ "@types/node": "^22",
26
+ "prettier": "^3",
27
+ "typescript": "~5.9"
28
+ }
29
+ }
@@ -0,0 +1,13 @@
1
+ import { createApp } from '@zyno-io/dk-server-foundation';
2
+
3
+ import { AppConfig } from './config';
4
+ import { ExampleController } from './controllers/Example.controller';
5
+ import { DB } from './database';
6
+ import { ExampleService } from './services/Example.service';
7
+
8
+ export const app = createApp({
9
+ config: AppConfig,
10
+ db: DB,
11
+ controllers: [ExampleController],
12
+ providers: [ExampleService]
13
+ });
@@ -0,0 +1,6 @@
1
+ import { BaseAppConfig } from '@zyno-io/dk-server-foundation';
2
+
3
+ export class AppConfig extends BaseAppConfig {
4
+ // Add application-specific configuration here.
5
+ // Properties are automatically populated from environment variables.
6
+ }
@@ -0,0 +1,18 @@
1
+ import { http, HttpBody } from '@deepkit/http';
2
+
3
+ import { ExampleService } from '../services/Example.service';
4
+
5
+ @http.controller('examples')
6
+ export class ExampleController {
7
+ constructor(private exampleService: ExampleService) {}
8
+
9
+ @http.GET()
10
+ async list() {
11
+ return this.exampleService.findAll();
12
+ }
13
+
14
+ @http.POST()
15
+ async create(body: HttpBody<{ name: string }>) {
16
+ return this.exampleService.create(body.name);
17
+ }
18
+ }
@@ -0,0 +1,5 @@
1
+ import { createMySQLDatabase } from '@zyno-io/dk-server-foundation';
2
+
3
+ import { ExampleEntity } from './entities/Example.entity';
4
+
5
+ export class DB extends createMySQLDatabase({}, [ExampleEntity]) {}
@@ -0,0 +1,9 @@
1
+ import { ActiveRecord } from '@deepkit/orm';
2
+ import { AutoIncrement, entity, PrimaryKey } from '@deepkit/type';
3
+
4
+ @entity.name('examples')
5
+ export class ExampleEntity extends ActiveRecord {
6
+ id!: number & AutoIncrement & PrimaryKey;
7
+ name!: string;
8
+ createdAt: Date = new Date();
9
+ }
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+
3
+ // OTEL must be initialized before all other imports
4
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
5
+ require('@zyno-io/dk-server-foundation/telemetry/otel/index.js').init();
6
+
7
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
8
+ const { app } = require('./app');
9
+ app.run();
File without changes
@@ -0,0 +1,21 @@
1
+ import { ScopedLogger } from '@deepkit/logger';
2
+ import { createPersistedEntity } from '@zyno-io/dk-server-foundation';
3
+
4
+ import { DB } from '../database';
5
+ import { ExampleEntity } from '../entities/Example.entity';
6
+
7
+ export class ExampleService {
8
+ constructor(
9
+ private db: DB,
10
+ private logger: ScopedLogger
11
+ ) {}
12
+
13
+ async findAll(): Promise<ExampleEntity[]> {
14
+ return ExampleEntity.query().find();
15
+ }
16
+
17
+ async create(name: string): Promise<ExampleEntity> {
18
+ this.logger.info(`Creating example: ${name}`);
19
+ return createPersistedEntity(ExampleEntity, { name });
20
+ }
21
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "compilerOptions": {
3
+ "strict": true,
4
+ "sourceMap": true,
5
+ "declaration": false,
6
+ "experimentalDecorators": true,
7
+ "moduleResolution": "nodenext",
8
+ "target": "ESNext",
9
+ "module": "NodeNext",
10
+ "esModuleInterop": true,
11
+ "rootDir": ".",
12
+ "outDir": "./dist",
13
+ "skipLibCheck": true,
14
+ "forceConsistentCasingInFileNames": true,
15
+ "isolatedModules": true
16
+ },
17
+ "include": ["src/**/*"],
18
+ "exclude": ["src/**/*.spec.ts"],
19
+ "reflection": true
20
+ }