@jskit-ai/create-app 0.1.66 → 0.1.68
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/package.json +1 -1
- package/templates/base-shell/packages/main/package.descriptor.mjs +19 -6
- package/templates/base-shell/packages/main/package.json +1 -1
- package/templates/base-shell/packages/main/src/server/MainServiceProvider.js +20 -0
- package/templates/base-shell/packages/main/src/server/index.js +1 -1
- package/templates/base-shell/packages/main/src/shared/index.js +2 -0
- package/templates/base-shell/packages/main/src/shared/schemas/index.js +2 -1
- package/templates/base-shell/tests/server/minimalShell.validator.test.js +8 -0
- package/templates/base-shell/packages/main/src/server/controllers/index.js +0 -9
- package/templates/base-shell/packages/main/src/server/providers/MainServiceProvider.js +0 -22
- package/templates/base-shell/packages/main/src/server/routes/index.js +0 -9
- package/templates/base-shell/packages/main/src/server/services/index.js +0 -9
- /package/templates/base-shell/packages/main/src/server/{support/loadAppConfig.js → loadAppConfig.js} +0 -0
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@ export default Object.freeze({
|
|
|
3
3
|
packageId: "@local/main",
|
|
4
4
|
version: "0.1.0",
|
|
5
5
|
kind: "runtime",
|
|
6
|
-
description: "App-local main
|
|
6
|
+
description: "App-local main composition and glue scaffold.",
|
|
7
7
|
dependsOn: [],
|
|
8
8
|
capabilities: {
|
|
9
9
|
provides: [],
|
|
@@ -12,13 +12,11 @@ export default Object.freeze({
|
|
|
12
12
|
options: {},
|
|
13
13
|
runtime: {
|
|
14
14
|
server: {
|
|
15
|
-
providerEntrypoint: "src/server/
|
|
15
|
+
providerEntrypoint: "src/server/MainServiceProvider.js",
|
|
16
16
|
providers: [
|
|
17
17
|
{
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
pattern: "*Provider.js"
|
|
21
|
-
}
|
|
18
|
+
entrypoint: "src/server/MainServiceProvider.js",
|
|
19
|
+
export: "MainServiceProvider"
|
|
22
20
|
}
|
|
23
21
|
]
|
|
24
22
|
},
|
|
@@ -32,6 +30,21 @@ export default Object.freeze({
|
|
|
32
30
|
}
|
|
33
31
|
},
|
|
34
32
|
metadata: {
|
|
33
|
+
jskit: {
|
|
34
|
+
ownershipGuidance: {
|
|
35
|
+
title: "App-local main lane",
|
|
36
|
+
summary: "Keep @local/main focused on app composition and lightweight glue. Substantial server features should become dedicated packages instead of growing inside packages/main.",
|
|
37
|
+
responsibilities: [
|
|
38
|
+
"packages/main server code: bootstraps app-local configuration and lightweight wiring only",
|
|
39
|
+
"substantial non-CRUD server features: scaffold a dedicated package with feature-server-generator",
|
|
40
|
+
"packages/main: do not add service/controller/route/repository feature trees here"
|
|
41
|
+
],
|
|
42
|
+
examples: [
|
|
43
|
+
"jskit generate feature-server-generator scaffold booking-engine",
|
|
44
|
+
"jskit generate feature-server-generator scaffold availability-engine --mode orchestrator"
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
},
|
|
35
48
|
server: {
|
|
36
49
|
routes: []
|
|
37
50
|
},
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"exports": {
|
|
7
7
|
"./client": "./src/client/index.js",
|
|
8
8
|
"./server": "./src/server/index.js",
|
|
9
|
-
"./server/
|
|
9
|
+
"./server/MainServiceProvider": "./src/server/MainServiceProvider.js",
|
|
10
10
|
"./shared": "./src/shared/index.js"
|
|
11
11
|
}
|
|
12
12
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { loadAppConfig } from "./loadAppConfig.js";
|
|
2
|
+
|
|
3
|
+
class MainServiceProvider {
|
|
4
|
+
static id = "local.main";
|
|
5
|
+
|
|
6
|
+
// Register only lightweight app-local composition bindings here.
|
|
7
|
+
async register(app) {
|
|
8
|
+
const appConfig = await loadAppConfig({
|
|
9
|
+
moduleUrl: import.meta.url
|
|
10
|
+
});
|
|
11
|
+
app.instance("appConfig", appConfig);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// Keep packages/main as app glue only.
|
|
15
|
+
// When backend behavior becomes substantial, scaffold a dedicated package:
|
|
16
|
+
// jskit generate feature-server-generator scaffold <feature-name>
|
|
17
|
+
boot() {}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { MainServiceProvider };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { MainServiceProvider } from "./
|
|
1
|
+
export { MainServiceProvider } from "./MainServiceProvider.js";
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* App-local shared transport validators/resources live here.
|
|
3
|
+
* Dedicated feature packages should keep their own schemas with the feature.
|
|
3
4
|
*
|
|
4
5
|
* Example:
|
|
5
6
|
* import { createSchema } from "json-rest-schema";
|
|
@@ -101,6 +101,14 @@ test("latest JSKIT scaffold files are present at the app root", async () => {
|
|
|
101
101
|
}
|
|
102
102
|
});
|
|
103
103
|
|
|
104
|
+
test("starter shell keeps the default hosted CI workflow simple", async () => {
|
|
105
|
+
const workflowSource = await readFile(path.join(APP_ROOT, ".github", "workflows", "verify.yml"), "utf8");
|
|
106
|
+
|
|
107
|
+
assert.match(workflowSource, /run: npm run verify/);
|
|
108
|
+
assert.doesNotMatch(workflowSource, /jskit app verify --against/);
|
|
109
|
+
assert.doesNotMatch(workflowSource, /jskit app verify-ui/);
|
|
110
|
+
});
|
|
111
|
+
|
|
104
112
|
test("starter shell does not include the app.manifest scaffold", async () => {
|
|
105
113
|
await assert.rejects(access(path.join(APP_ROOT, "framework/app.manifest.mjs")), /ENOENT/);
|
|
106
114
|
});
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { loadAppConfig } from "../support/loadAppConfig.js";
|
|
2
|
-
|
|
3
|
-
class MainServiceProvider {
|
|
4
|
-
static id = "local.main";
|
|
5
|
-
|
|
6
|
-
// Optional: register container bindings here (services/singletons).
|
|
7
|
-
async register(app) {
|
|
8
|
-
const appConfig = await loadAppConfig({
|
|
9
|
-
moduleUrl: import.meta.url
|
|
10
|
-
});
|
|
11
|
-
app.instance("appConfig", appConfig);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
// Start backend features here:
|
|
15
|
-
// 1) define shared validators/resources in `src/shared/schemas`
|
|
16
|
-
// 2) resolve router with `app.make("jskit.http.router")`
|
|
17
|
-
// 3) register routes and handlers
|
|
18
|
-
// 4) extract to services/controllers/routes as the feature grows
|
|
19
|
-
boot() {}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export { MainServiceProvider };
|
/package/templates/base-shell/packages/main/src/server/{support/loadAppConfig.js → loadAppConfig.js}
RENAMED
|
File without changes
|