create-daloy 1.0.0-rc.1 → 1.0.0-rc.3
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/README.md +1 -1
- package/package.json +1 -1
- package/sbom.cdx.json +9 -9
- package/sbom.spdx.json +5 -5
- package/templates/bun-basic/package.json +2 -2
- package/templates/cloudflare-worker/package.json +5 -3
- package/templates/cloudflare-worker/tsconfig.json +3 -1
- package/templates/deno-basic/deno.json +5 -5
- package/templates/node-basic/AGENTS.md +1 -1
- package/templates/node-basic/_agents/skills/daloyjs-best-practices/SKILL.md +2 -1
- package/templates/node-basic/package.json +5 -6
- package/templates/node-basic/tsconfig.json +3 -1
- package/templates/vercel/AGENTS.md +1 -1
- package/templates/vercel/README.md +1 -1
- package/templates/vercel/package.json +7 -5
- package/templates/vercel/tsconfig.json +3 -1
package/README.md
CHANGED
|
@@ -75,7 +75,7 @@ Use `create-daloy --list-templates` to inspect available templates without creat
|
|
|
75
75
|
|
|
76
76
|
A production-ready Node.js HTTP server using `@daloyjs/core` with:
|
|
77
77
|
|
|
78
|
-
- Strict TypeScript
|
|
78
|
+
- Strict TypeScript run natively by Node.js (built-in type stripping) — no transpiler needed for dev runs.
|
|
79
79
|
- Hardened `.npmrc` for safer installs.
|
|
80
80
|
- `secureHeaders`, `requestId`, and `rateLimit` enabled by default (`rateLimit` is global until you configure `keyGenerator` or trusted proxy headers).
|
|
81
81
|
- A sample `GET /healthz` and contract-first `GET /books/:id` route with Zod validation.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-daloy",
|
|
3
|
-
"version": "1.0.0-rc.
|
|
3
|
+
"version": "1.0.0-rc.3",
|
|
4
4
|
"description": "Scaffold a new DaloyJS project. Run with `pnpm create daloy`, `npm create daloy@latest`, `yarn create daloy`, or `bun create daloy`.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
package/sbom.cdx.json
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bomFormat": "CycloneDX",
|
|
3
3
|
"specVersion": "1.5",
|
|
4
|
-
"serialNumber": "urn:uuid:
|
|
4
|
+
"serialNumber": "urn:uuid:837a492d-6f26-5ff8-b1e0-689b969309f7",
|
|
5
5
|
"version": 1,
|
|
6
6
|
"metadata": {
|
|
7
|
-
"timestamp": "2026-07-
|
|
7
|
+
"timestamp": "2026-07-09T19:29:37.132Z",
|
|
8
8
|
"tools": [
|
|
9
9
|
{
|
|
10
10
|
"vendor": "DaloyJS",
|
|
11
11
|
"name": "daloy-generate-sbom",
|
|
12
|
-
"version": "1.0.0-rc.
|
|
12
|
+
"version": "1.0.0-rc.3"
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
15
|
"authors": [],
|
|
16
16
|
"component": {
|
|
17
17
|
"type": "library",
|
|
18
|
-
"bom-ref": "pkg:npm/create-daloy@1.0.0-rc.
|
|
18
|
+
"bom-ref": "pkg:npm/create-daloy@1.0.0-rc.3",
|
|
19
19
|
"name": "create-daloy",
|
|
20
|
-
"version": "1.0.0-rc.
|
|
20
|
+
"version": "1.0.0-rc.3",
|
|
21
21
|
"description": "Scaffold a new DaloyJS project. Run with `pnpm create daloy`, `npm create daloy@latest`, `yarn create daloy`, or `bun create daloy`.",
|
|
22
|
-
"purl": "pkg:npm/create-daloy@1.0.0-rc.
|
|
22
|
+
"purl": "pkg:npm/create-daloy@1.0.0-rc.3",
|
|
23
23
|
"licenses": [
|
|
24
24
|
{
|
|
25
25
|
"license": {
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
}
|
|
43
43
|
],
|
|
44
44
|
"swid": {
|
|
45
|
-
"tagId": "swidtag-create-daloy-1.0.0-rc.
|
|
45
|
+
"tagId": "swidtag-create-daloy-1.0.0-rc.3",
|
|
46
46
|
"name": "create-daloy",
|
|
47
|
-
"version": "1.0.0-rc.
|
|
47
|
+
"version": "1.0.0-rc.3",
|
|
48
48
|
"tagVersion": 0,
|
|
49
49
|
"patch": false
|
|
50
50
|
}
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"components": [],
|
|
54
54
|
"dependencies": [
|
|
55
55
|
{
|
|
56
|
-
"ref": "pkg:npm/create-daloy@1.0.0-rc.
|
|
56
|
+
"ref": "pkg:npm/create-daloy@1.0.0-rc.3",
|
|
57
57
|
"dependsOn": []
|
|
58
58
|
}
|
|
59
59
|
]
|
package/sbom.spdx.json
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"spdxVersion": "SPDX-2.3",
|
|
3
3
|
"dataLicense": "CC0-1.0",
|
|
4
4
|
"SPDXID": "SPDXRef-DOCUMENT",
|
|
5
|
-
"name": "create-daloy-1.0.0-rc.
|
|
6
|
-
"documentNamespace": "https://github.com/daloyjs/daloy/sbom/create-daloy-1.0.0-rc.
|
|
5
|
+
"name": "create-daloy-1.0.0-rc.3",
|
|
6
|
+
"documentNamespace": "https://github.com/daloyjs/daloy/sbom/create-daloy-1.0.0-rc.3-837a492d-6f26-5ff8-b1e0-689b969309f7",
|
|
7
7
|
"creationInfo": {
|
|
8
|
-
"created": "2026-07-
|
|
8
|
+
"created": "2026-07-09T19:29:37.132Z",
|
|
9
9
|
"creators": [
|
|
10
10
|
"Tool: daloy-generate-sbom",
|
|
11
11
|
"Organization: DaloyJS"
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
{
|
|
17
17
|
"SPDXID": "SPDXRef-Package-create-daloy",
|
|
18
18
|
"name": "create-daloy",
|
|
19
|
-
"versionInfo": "1.0.0-rc.
|
|
19
|
+
"versionInfo": "1.0.0-rc.3",
|
|
20
20
|
"downloadLocation": "https://github.com/daloyjs/daloy",
|
|
21
21
|
"filesAnalyzed": false,
|
|
22
22
|
"licenseConcluded": "MIT",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
{
|
|
28
28
|
"referenceCategory": "PACKAGE-MANAGER",
|
|
29
29
|
"referenceType": "purl",
|
|
30
|
-
"referenceLocator": "pkg:npm/create-daloy@1.0.0-rc.
|
|
30
|
+
"referenceLocator": "pkg:npm/create-daloy@1.0.0-rc.3"
|
|
31
31
|
}
|
|
32
32
|
]
|
|
33
33
|
}
|
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
"hooks:install": "git config core.hooksPath .githooks"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@daloyjs/core": "^1.0.0-rc.
|
|
22
|
+
"@daloyjs/core": "^1.0.0-rc.3",
|
|
23
23
|
"zod": "^4.4.3"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@hey-api/openapi-ts": "^0.
|
|
26
|
+
"@hey-api/openapi-ts": "^0.99.0",
|
|
27
27
|
"@types/bun": "^1.1.0",
|
|
28
28
|
"typescript": "^6.0.3"
|
|
29
29
|
}
|
|
@@ -3,22 +3,24 @@
|
|
|
3
3
|
"version": "0.0.1",
|
|
4
4
|
"private": true,
|
|
5
5
|
"type": "module",
|
|
6
|
+
"engines": {
|
|
7
|
+
"node": "^24.0.0 || >=26.0.0"
|
|
8
|
+
},
|
|
6
9
|
"scripts": {
|
|
7
10
|
"dev": "wrangler dev",
|
|
8
11
|
"deploy": "wrangler deploy",
|
|
9
12
|
"typecheck": "tsc --noEmit",
|
|
10
|
-
"test": "node --
|
|
13
|
+
"test": "node --test tests/**/*.test.ts",
|
|
11
14
|
"contract": "daloy inspect --check src/index.ts",
|
|
12
15
|
"audit": "pnpm audit --prod",
|
|
13
16
|
"hooks:install": "git config core.hooksPath .githooks"
|
|
14
17
|
},
|
|
15
18
|
"dependencies": {
|
|
16
|
-
"@daloyjs/core": "^1.0.0-rc.
|
|
19
|
+
"@daloyjs/core": "^1.0.0-rc.3",
|
|
17
20
|
"zod": "^4.4.3"
|
|
18
21
|
},
|
|
19
22
|
"devDependencies": {
|
|
20
23
|
"@cloudflare/workers-types": "^4.20240909.0",
|
|
21
|
-
"tsx": "^4.22.3",
|
|
22
24
|
"typescript": "^6.0.3",
|
|
23
25
|
"wrangler": "^4.0.0"
|
|
24
26
|
}
|
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
"hooks:install": "git config core.hooksPath .githooks"
|
|
11
11
|
},
|
|
12
12
|
"imports": {
|
|
13
|
-
"@daloyjs/core": "jsr:@daloyjs/daloy@^1.0.0-rc.
|
|
14
|
-
"@daloyjs/core/banner": "jsr:@daloyjs/daloy@^1.0.0-rc.
|
|
15
|
-
"@daloyjs/core/contract": "jsr:@daloyjs/daloy@^1.0.0-rc.
|
|
16
|
-
"@daloyjs/core/deno": "jsr:@daloyjs/daloy@^1.0.0-rc.
|
|
17
|
-
"@daloyjs/core/openapi": "jsr:@daloyjs/daloy@^1.0.0-rc.
|
|
13
|
+
"@daloyjs/core": "jsr:@daloyjs/daloy@^1.0.0-rc.3",
|
|
14
|
+
"@daloyjs/core/banner": "jsr:@daloyjs/daloy@^1.0.0-rc.3/banner",
|
|
15
|
+
"@daloyjs/core/contract": "jsr:@daloyjs/daloy@^1.0.0-rc.3/contract",
|
|
16
|
+
"@daloyjs/core/deno": "jsr:@daloyjs/daloy@^1.0.0-rc.3/deno",
|
|
17
|
+
"@daloyjs/core/openapi": "jsr:@daloyjs/daloy@^1.0.0-rc.3/openapi",
|
|
18
18
|
"zod": "npm:zod@^4.4.3"
|
|
19
19
|
},
|
|
20
20
|
"compilerOptions": {
|
|
@@ -34,7 +34,7 @@ When `docs: true` is set in `new App({...})`, three routes are auto-mounted:
|
|
|
34
34
|
- `src/index.ts` — calls `buildApp()` and starts the listener via `@daloyjs/core/node`. The only file that opens a port.
|
|
35
35
|
- `scripts/dump-openapi.ts` — imports `buildApp()` and writes `generated/openapi.json`. Codegen reads from `buildApp()` only — never import `src/index.ts` from scripts.
|
|
36
36
|
- `generated/` — machine-written by `pnpm gen`. Do not edit by hand.
|
|
37
|
-
- `tests/` — `*.test.ts` files run with `node --test` (
|
|
37
|
+
- `tests/` — `*.test.ts` files run with `node --test` (Node.js strips TypeScript types natively).
|
|
38
38
|
|
|
39
39
|
## Imports
|
|
40
40
|
|
|
@@ -243,7 +243,8 @@ needs to run code after the handler.
|
|
|
243
243
|
## Testing best practices
|
|
244
244
|
|
|
245
245
|
Tests live under `tests/` and run with `node --test` (Node's built-in
|
|
246
|
-
runner
|
|
246
|
+
runner; Node.js strips TypeScript types natively). Use **in-process**
|
|
247
|
+
requests through `app.request()` —
|
|
247
248
|
no HTTP server, no port flakiness, no teardown.
|
|
248
249
|
|
|
249
250
|
```ts
|
|
@@ -11,22 +11,21 @@
|
|
|
11
11
|
"start": "node dist/index.js",
|
|
12
12
|
"build": "tsc -p tsconfig.build.json",
|
|
13
13
|
"typecheck": "tsc --noEmit",
|
|
14
|
-
"test": "node --
|
|
14
|
+
"test": "node --test tests/**/*.test.ts",
|
|
15
15
|
"contract": "daloy inspect --check src/build-app.ts",
|
|
16
|
-
"gen:openapi": "node
|
|
16
|
+
"gen:openapi": "node scripts/dump-openapi.ts",
|
|
17
17
|
"gen:client": "openapi-ts",
|
|
18
18
|
"gen": "pnpm gen:openapi && pnpm gen:client",
|
|
19
19
|
"audit": "pnpm audit --prod",
|
|
20
20
|
"hooks:install": "git config core.hooksPath .githooks"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@daloyjs/core": "^1.0.0-rc.
|
|
23
|
+
"@daloyjs/core": "^1.0.0-rc.3",
|
|
24
24
|
"zod": "^4.4.3"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@hey-api/openapi-ts": "^0.
|
|
28
|
-
"@types/node": "^
|
|
29
|
-
"tsx": "^4.22.3",
|
|
27
|
+
"@hey-api/openapi-ts": "^0.99.0",
|
|
28
|
+
"@types/node": "^26.1.0",
|
|
30
29
|
"typescript": "^6.0.3"
|
|
31
30
|
}
|
|
32
31
|
}
|
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
"forceConsistentCasingInFileNames": true,
|
|
14
14
|
"resolveJsonModule": true,
|
|
15
15
|
"allowImportingTsExtensions": true,
|
|
16
|
-
"rewriteRelativeImportExtensions": true
|
|
16
|
+
"rewriteRelativeImportExtensions": true,
|
|
17
|
+
"erasableSyntaxOnly": true,
|
|
18
|
+
"verbatimModuleSyntax": true
|
|
17
19
|
},
|
|
18
20
|
"include": ["src/**/*", "scripts/**/*", "tests/**/*"],
|
|
19
21
|
"exclude": ["node_modules", "dist"]
|
|
@@ -38,7 +38,7 @@ This project uses TypeScript with `"allowImportingTsExtensions"`, so relative im
|
|
|
38
38
|
import handler from "../api/index.ts";
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
-
You import the file you see. Vercel
|
|
41
|
+
You import the file you see. Vercel resolves `.ts` at deploy time; Node runs it natively (type stripping). Bare package imports (`@daloyjs/core`, `zod`, ...) need no extension.
|
|
42
42
|
|
|
43
43
|
## Core rules
|
|
44
44
|
|
|
@@ -93,7 +93,7 @@ This project uses TypeScript with `"allowImportingTsExtensions"`. Relative impor
|
|
|
93
93
|
import handler from "../api/index.ts";
|
|
94
94
|
```
|
|
95
95
|
|
|
96
|
-
Vercel bundles the `api/` functions at deploy time and resolves `.ts` directly, and the
|
|
96
|
+
Vercel bundles the `api/` functions at deploy time and resolves `.ts` directly, and Node.js (>= 22.18) runs the tests and dev server directly via native type stripping.
|
|
97
97
|
|
|
98
98
|
## What's included
|
|
99
99
|
|
|
@@ -3,22 +3,24 @@
|
|
|
3
3
|
"version": "0.0.1",
|
|
4
4
|
"private": true,
|
|
5
5
|
"type": "module",
|
|
6
|
+
"engines": {
|
|
7
|
+
"node": "^24.0.0 || >=26.0.0"
|
|
8
|
+
},
|
|
6
9
|
"scripts": {
|
|
7
|
-
"dev": "node --
|
|
10
|
+
"dev": "node --watch src/dev.ts",
|
|
8
11
|
"deploy": "vercel deploy",
|
|
9
12
|
"typecheck": "tsc --noEmit",
|
|
10
|
-
"test": "node --
|
|
13
|
+
"test": "node --test tests/**/*.test.ts",
|
|
11
14
|
"contract": "daloy inspect --check api/index.ts",
|
|
12
15
|
"audit": "pnpm audit --prod",
|
|
13
16
|
"hooks:install": "git config core.hooksPath .githooks"
|
|
14
17
|
},
|
|
15
18
|
"dependencies": {
|
|
16
|
-
"@daloyjs/core": "^1.0.0-rc.
|
|
19
|
+
"@daloyjs/core": "^1.0.0-rc.3",
|
|
17
20
|
"zod": "^4.4.3"
|
|
18
21
|
},
|
|
19
22
|
"devDependencies": {
|
|
20
|
-
"@types/node": "^
|
|
21
|
-
"tsx": "^4.22.3",
|
|
23
|
+
"@types/node": "^26.1.0",
|
|
22
24
|
"typescript": "^6.0.3",
|
|
23
25
|
"vercel": "^48.0.0"
|
|
24
26
|
}
|
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
"resolveJsonModule": true,
|
|
14
14
|
"isolatedModules": true,
|
|
15
15
|
"noEmit": true,
|
|
16
|
-
"allowImportingTsExtensions": true
|
|
16
|
+
"allowImportingTsExtensions": true,
|
|
17
|
+
"erasableSyntaxOnly": true,
|
|
18
|
+
"verbatimModuleSyntax": true
|
|
17
19
|
},
|
|
18
20
|
"include": ["api/**/*.ts", "src/**/*.ts", "tests/**/*.ts"]
|
|
19
21
|
}
|