@chidchanun/bcp 0.1.28 → 0.2.0
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 +220 -256
- package/docs/README.md +257 -241
- package/docs/developer-tools.md +175 -78
- package/docs/docs-web-manifest.json +97 -0
- package/docs/generators.md +149 -0
- package/docs/migration-0.2.md +173 -0
- package/docs/platform-contract.md +159 -0
- package/docs/platform-manifest.json +75 -0
- package/docs/project-metadata.md +112 -0
- package/docs/releases/0.1.29.md +170 -0
- package/docs/releases/0.2.0.md +146 -0
- package/package.json +1 -1
- package/packages/cli/src/args.ts +96 -0
- package/packages/cli/src/developer-tools-v2.ts +629 -0
- package/packages/cli/src/developer-tools.ts +115 -0
- package/packages/cli/src/generate.ts +475 -0
- package/packages/cli/src/index.ts +69 -0
package/docs/README.md
CHANGED
|
@@ -1,34 +1,80 @@
|
|
|
1
1
|
# BCP Framework Documentation Source
|
|
2
2
|
|
|
3
|
-
The `docs/` directory is the documentation source of truth for BCP Framework and is
|
|
3
|
+
The `docs/` directory is the documentation source of truth for BCP Framework and is organized for **`bcp-docs-web`**.
|
|
4
4
|
|
|
5
|
-
> **Documentation target:** BCP Framework `0.
|
|
5
|
+
> **Documentation target:** BCP Framework `0.2.0`
|
|
6
6
|
>
|
|
7
|
-
> **Release state:** unreleased development target. Do not label `0.
|
|
7
|
+
> **Release state:** unreleased development target. Do not label `0.2.0` as published until RC validation, tagging and npm publication complete.
|
|
8
8
|
|
|
9
|
-
## Documentation
|
|
9
|
+
## Documentation architecture
|
|
10
|
+
|
|
11
|
+
BCP `0.2.0` uses two machine-readable manifests:
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
docs/docs-web-manifest.json
|
|
15
|
+
-> website navigation, routes, Markdown sources and release pages
|
|
16
|
+
|
|
17
|
+
docs/platform-manifest.json
|
|
18
|
+
-> framework version, runtime target, public entrypoints and capability metadata
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Markdown files under `docs/` remain the authored content source.
|
|
22
|
+
|
|
23
|
+
Recommended flow:
|
|
10
24
|
|
|
11
25
|
```text
|
|
12
|
-
|
|
26
|
+
framework source/tests
|
|
13
27
|
↓
|
|
14
28
|
docs/
|
|
29
|
+
├─ Markdown content
|
|
30
|
+
├─ docs-web-manifest.json
|
|
31
|
+
└─ platform-manifest.json
|
|
15
32
|
↓
|
|
16
|
-
|
|
33
|
+
bcp-docs-web
|
|
17
34
|
```
|
|
18
35
|
|
|
19
|
-
Framework source and tests
|
|
36
|
+
Framework source and tests remain authoritative for runtime behavior.
|
|
37
|
+
|
|
38
|
+
## 0.2.0 Framework Platform baseline
|
|
39
|
+
|
|
40
|
+
`0.2.0` establishes an explicit compatibility/platform contract rather than introducing a new runtime architecture.
|
|
41
|
+
|
|
42
|
+
New platform documents:
|
|
43
|
+
|
|
44
|
+
| Source | Purpose |
|
|
45
|
+
| --- | --- |
|
|
46
|
+
| `platform-manifest.json` | Machine-readable platform/version/public-entrypoint metadata |
|
|
47
|
+
| `platform-contract.md` | Human-readable public platform contract |
|
|
48
|
+
| `migration-0.2.md` | Upgrade guide from the `0.1.x` baseline |
|
|
49
|
+
| `releases/0.2.0.md` | Release notes for the milestone |
|
|
50
|
+
|
|
51
|
+
Compatibility intent from `0.1.29`:
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
intentional public-entrypoint removals: none
|
|
55
|
+
standalone runtime model change: none
|
|
56
|
+
supported production build target: standalone-node
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
BCP remains pre-1.0, so application upgrades should still be validated before production deployment.
|
|
20
60
|
|
|
21
61
|
## Update rule
|
|
22
62
|
|
|
23
|
-
When framework behavior changes:
|
|
63
|
+
When framework behavior or public surface changes:
|
|
24
64
|
|
|
25
65
|
1. Update framework source.
|
|
26
66
|
2. Add/update regression tests.
|
|
27
|
-
3. Update the matching
|
|
28
|
-
4. Update `
|
|
29
|
-
5.
|
|
67
|
+
3. Update the matching Markdown guide.
|
|
68
|
+
4. Update `platform-manifest.json` when public entrypoints/runtime/capability metadata changes.
|
|
69
|
+
5. Update `docs-web-manifest.json` when website navigation/routes change.
|
|
70
|
+
6. Update `docs/releases/<version>.md`.
|
|
71
|
+
7. Change release state to published only after npm publication succeeds.
|
|
72
|
+
|
|
73
|
+
## Current docs-web navigation
|
|
74
|
+
|
|
75
|
+
`docs/docs-web-manifest.json` is the authoritative ordered navigation contract.
|
|
30
76
|
|
|
31
|
-
|
|
77
|
+
Current sections:
|
|
32
78
|
|
|
33
79
|
```text
|
|
34
80
|
Getting Started
|
|
@@ -37,89 +83,131 @@ Authentication
|
|
|
37
83
|
Database
|
|
38
84
|
Runtime & Infrastructure
|
|
39
85
|
Storage & Uploads
|
|
40
|
-
|
|
86
|
+
Developer Experience
|
|
87
|
+
Platform & Compatibility
|
|
41
88
|
Releases
|
|
42
89
|
```
|
|
43
90
|
|
|
44
91
|
### Getting Started
|
|
45
92
|
|
|
46
|
-
| Website route | Markdown source |
|
|
47
|
-
| --- | --- |
|
|
48
|
-
| `/docs/getting-started` | `getting-started.md` |
|
|
49
|
-
| `/docs/configuration` | `configuration.md` |
|
|
50
|
-
| `/docs/application-modules` | `application-modules.md` |
|
|
51
|
-
| `/docs/
|
|
52
|
-
| `/docs/
|
|
93
|
+
| Website route | Markdown source |
|
|
94
|
+
| --- | --- |
|
|
95
|
+
| `/docs/getting-started` | `getting-started.md` |
|
|
96
|
+
| `/docs/configuration` | `configuration.md` |
|
|
97
|
+
| `/docs/application-modules` | `application-modules.md` |
|
|
98
|
+
| `/docs/project-metadata` | `project-metadata.md` |
|
|
99
|
+
| `/docs/deployment` | `deployment.md` |
|
|
100
|
+
| `/docs/updating` | `updating.md` |
|
|
53
101
|
|
|
54
102
|
### Routing & Data
|
|
55
103
|
|
|
56
|
-
| Website route | Markdown source |
|
|
57
|
-
| --- | --- |
|
|
58
|
-
| `/docs/routing` | `routing.md` |
|
|
59
|
-
| `/docs/server-data-loaders` | `server-data-loaders.md` |
|
|
60
|
-
| `/docs/route-guards` | `route-guards.md` |
|
|
61
|
-
| `/docs/form-actions` | `form-actions.md` |
|
|
62
|
-
| `/docs/server-request-apis` | `server-request-apis.md` |
|
|
63
|
-
| `/docs/validation` | `validation.md` |
|
|
64
|
-
| `/docs/error-handling` | `error-handling.md` |
|
|
104
|
+
| Website route | Markdown source |
|
|
105
|
+
| --- | --- |
|
|
106
|
+
| `/docs/routing` | `routing.md` |
|
|
107
|
+
| `/docs/server-data-loaders` | `server-data-loaders.md` |
|
|
108
|
+
| `/docs/route-guards` | `route-guards.md` |
|
|
109
|
+
| `/docs/form-actions` | `form-actions.md` |
|
|
110
|
+
| `/docs/server-request-apis` | `server-request-apis.md` |
|
|
111
|
+
| `/docs/validation` | `validation.md` |
|
|
112
|
+
| `/docs/error-handling` | `error-handling.md` |
|
|
65
113
|
|
|
66
114
|
### Authentication
|
|
67
115
|
|
|
68
|
-
| Website route | Markdown source |
|
|
69
|
-
| --- | --- |
|
|
70
|
-
| `/docs/authentication` | `authentication.md` |
|
|
71
|
-
| `/docs/auth-route-guards` | `auth-route-guards.md` |
|
|
72
|
-
| `/docs/session-auth` | `session-auth.md` |
|
|
116
|
+
| Website route | Markdown source |
|
|
117
|
+
| --- | --- |
|
|
118
|
+
| `/docs/authentication` | `authentication.md` |
|
|
119
|
+
| `/docs/auth-route-guards` | `auth-route-guards.md` |
|
|
120
|
+
| `/docs/session-auth` | `session-auth.md` |
|
|
73
121
|
|
|
74
122
|
### Database
|
|
75
123
|
|
|
76
|
-
| Website route | Markdown source |
|
|
77
|
-
| --- | --- |
|
|
78
|
-
| `/docs/database` | `database.md` |
|
|
79
|
-
| `/docs/database-migrations` | `database-migrations.md` |
|
|
124
|
+
| Website route | Markdown source |
|
|
125
|
+
| --- | --- |
|
|
126
|
+
| `/docs/database` | `database.md` |
|
|
127
|
+
| `/docs/database-migrations` | `database-migrations.md` |
|
|
80
128
|
|
|
81
129
|
### Runtime & Infrastructure
|
|
82
130
|
|
|
83
|
-
| Website route | Markdown source |
|
|
84
|
-
| --- | --- |
|
|
85
|
-
| `/docs/middleware` | `middleware.md` |
|
|
86
|
-
| `/docs/hydration` | `hydration.md` |
|
|
87
|
-
| `/docs/
|
|
88
|
-
| `/docs/
|
|
89
|
-
| `/docs/
|
|
90
|
-
| `/docs/
|
|
91
|
-
| `/docs/production-hardening` | `production-hardening.md` | Graceful shutdown, trusted proxy and production timeouts |
|
|
131
|
+
| Website route | Markdown source |
|
|
132
|
+
| --- | --- |
|
|
133
|
+
| `/docs/middleware` | `middleware.md` |
|
|
134
|
+
| `/docs/hydration` | `hydration.md` |
|
|
135
|
+
| `/docs/development-logging` | `development-logging.md` |
|
|
136
|
+
| `/docs/caching` | `caching.md` |
|
|
137
|
+
| `/docs/security` | `security.md` |
|
|
138
|
+
| `/docs/production-hardening` | `production-hardening.md` |
|
|
92
139
|
|
|
93
140
|
### Storage & Uploads
|
|
94
141
|
|
|
95
|
-
| Website route | Markdown source |
|
|
96
|
-
| --- | --- |
|
|
97
|
-
| `/docs/file-upload` | `file-upload.md` |
|
|
98
|
-
| `/docs/storage` | `storage.md` |
|
|
99
|
-
| `/docs/storage-ecosystem` | `storage-ecosystem.md` |
|
|
100
|
-
| `/docs/s3-storage` | `s3-storage.md` |
|
|
142
|
+
| Website route | Markdown source |
|
|
143
|
+
| --- | --- |
|
|
144
|
+
| `/docs/file-upload` | `file-upload.md` |
|
|
145
|
+
| `/docs/storage` | `storage.md` |
|
|
146
|
+
| `/docs/storage-ecosystem` | `storage-ecosystem.md` |
|
|
147
|
+
| `/docs/s3-storage` | `s3-storage.md` |
|
|
101
148
|
|
|
102
|
-
|
|
149
|
+
### Developer Experience
|
|
150
|
+
|
|
151
|
+
| Website route | Markdown source |
|
|
152
|
+
| --- | --- |
|
|
153
|
+
| `/docs/generators` | `generators.md` |
|
|
154
|
+
| `/docs/developer-tools` | `developer-tools.md` |
|
|
155
|
+
|
|
156
|
+
### Platform & Compatibility
|
|
157
|
+
|
|
158
|
+
| Website route | Markdown source |
|
|
159
|
+
| --- | --- |
|
|
160
|
+
| `/docs/platform-contract` | `platform-contract.md` |
|
|
161
|
+
| `/docs/migration-0.2` | `migration-0.2.md` |
|
|
162
|
+
|
|
163
|
+
## Platform manifest
|
|
164
|
+
|
|
165
|
+
`docs/platform-manifest.json` is intended for tooling and `bcp-docs-web` metadata displays.
|
|
166
|
+
|
|
167
|
+
It records:
|
|
168
|
+
|
|
169
|
+
```text
|
|
170
|
+
schema version
|
|
171
|
+
framework/version/release state
|
|
172
|
+
Node/React/runtime baseline
|
|
173
|
+
production build target
|
|
174
|
+
public package entrypoints
|
|
175
|
+
CLI command families
|
|
176
|
+
capability groups
|
|
177
|
+
storage-provider families
|
|
178
|
+
previous-baseline compatibility intent
|
|
179
|
+
documentation contract files
|
|
180
|
+
```
|
|
103
181
|
|
|
104
|
-
|
|
182
|
+
Do not treat the manifest as executable runtime configuration. It describes the supported platform surface; framework source/tests remain authoritative.
|
|
183
|
+
|
|
184
|
+
## Public entrypoint baseline
|
|
185
|
+
|
|
186
|
+
The `0.2.0` platform recognizes:
|
|
105
187
|
|
|
106
188
|
```text
|
|
107
189
|
bcp
|
|
108
|
-
bcp/
|
|
109
|
-
bcp/auth
|
|
110
|
-
bcp/database
|
|
111
|
-
bcp/validation
|
|
112
|
-
bcp/error
|
|
190
|
+
bcp/island
|
|
113
191
|
bcp/cache
|
|
114
192
|
bcp/config
|
|
193
|
+
bcp/validation
|
|
194
|
+
bcp/error
|
|
195
|
+
bcp/database
|
|
196
|
+
bcp/auth
|
|
197
|
+
bcp/server
|
|
198
|
+
bcp/server-only
|
|
115
199
|
bcp/middleware
|
|
116
200
|
```
|
|
117
201
|
|
|
118
|
-
|
|
202
|
+
`bcp-docs-web` can use this list to build an API-reference index without hard-coding a second entrypoint list.
|
|
203
|
+
|
|
204
|
+
## API guide ownership
|
|
205
|
+
|
|
206
|
+
| Entrypoint | Primary guides |
|
|
119
207
|
| --- | --- |
|
|
120
208
|
| `bcp` | `routing.md`, `server-data-loaders.md`, `form-actions.md` |
|
|
121
|
-
| `bcp/server` | `server-request-apis.md`, `file-upload.md`, `storage.md`, `storage-ecosystem.md`, `
|
|
122
|
-
| `bcp/auth` | `authentication.md`, `auth-route-guards.md` |
|
|
209
|
+
| `bcp/server` | `server-request-apis.md`, `file-upload.md`, `storage.md`, `storage-ecosystem.md`, `production-hardening.md` |
|
|
210
|
+
| `bcp/auth` | `authentication.md`, `auth-route-guards.md`, `session-auth.md` |
|
|
123
211
|
| `bcp/database` | `database.md`, `database-migrations.md` |
|
|
124
212
|
| `bcp/validation` | `validation.md` |
|
|
125
213
|
| `bcp/error` | `error-handling.md` |
|
|
@@ -133,163 +221,92 @@ bcp/middleware
|
|
|
133
221
|
|
|
134
222
|
- React SSR/hydration
|
|
135
223
|
- file-based page/API routing
|
|
136
|
-
-
|
|
137
|
-
- route groups
|
|
224
|
+
- dynamic/catch-all/optional catch-all routes
|
|
225
|
+
- layouts/metadata/route groups
|
|
138
226
|
- SPA navigation
|
|
139
227
|
- loaders/guards/form actions
|
|
140
228
|
- client islands / partial hydration
|
|
141
|
-
- Fast Refresh
|
|
142
229
|
|
|
143
|
-
### Server
|
|
230
|
+
### Server/runtime
|
|
144
231
|
|
|
145
|
-
- request-scoped APIs
|
|
146
|
-
- JWT sessions
|
|
232
|
+
- request-scoped server APIs
|
|
233
|
+
- JWT cookie sessions
|
|
147
234
|
- Middleware System v2
|
|
148
|
-
- validation
|
|
149
|
-
- structured logging
|
|
150
|
-
- response caching/
|
|
151
|
-
- production hardening
|
|
152
|
-
-
|
|
153
|
-
-
|
|
154
|
-
- application shutdown hooks
|
|
155
|
-
- trusted-proxy forwarding-header controls
|
|
156
|
-
|
|
157
|
-
### Storage & Uploads
|
|
158
|
-
|
|
159
|
-
- buffered multipart `FormData` upload APIs
|
|
160
|
-
- production streaming multipart upload (`storeMultipartFile()`)
|
|
161
|
-
- backward-compatible `StorageAdapter` contract
|
|
162
|
-
- local filesystem storage
|
|
163
|
-
- S3/R2/MinIO-compatible storage
|
|
164
|
-
- streaming reads/writes and byte ranges
|
|
165
|
-
- ETag/Last-Modified file delivery
|
|
166
|
-
- upload/storage limits and abort cleanup
|
|
167
|
-
- object listing with cursors
|
|
168
|
-
- native/fallback copy and move
|
|
169
|
-
- portable user metadata
|
|
170
|
-
- bulk deletion
|
|
171
|
-
- S3 presigned read/write URLs
|
|
172
|
-
- create-app Local Server / Amazon S3 / Cloudflare R2 presets
|
|
235
|
+
- validation and structured HTTP errors
|
|
236
|
+
- structured logging/request IDs
|
|
237
|
+
- response caching/revalidation
|
|
238
|
+
- production hardening/timeouts
|
|
239
|
+
- graceful shutdown and shutdown hooks
|
|
240
|
+
- trusted-proxy controls
|
|
173
241
|
|
|
174
242
|
### Database
|
|
175
243
|
|
|
176
|
-
-
|
|
177
|
-
-
|
|
178
|
-
- prepared execution/query helpers
|
|
244
|
+
- MySQL framework primitives
|
|
245
|
+
- prepared query/execute helpers
|
|
179
246
|
- transactions
|
|
180
247
|
- migrations/status/rollback
|
|
181
248
|
|
|
249
|
+
### Storage & uploads
|
|
250
|
+
|
|
251
|
+
- buffered multipart APIs
|
|
252
|
+
- streaming multipart upload
|
|
253
|
+
- local filesystem storage
|
|
254
|
+
- Amazon S3 / Cloudflare R2 / S3-compatible storage
|
|
255
|
+
- streaming reads/writes and byte ranges
|
|
256
|
+
- list/copy/move
|
|
257
|
+
- portable metadata
|
|
258
|
+
- bulk delete
|
|
259
|
+
- S3 signed read/write URLs
|
|
260
|
+
|
|
182
261
|
### Developer Experience
|
|
183
262
|
|
|
184
263
|
- `create-bcp-app`
|
|
185
|
-
-
|
|
186
|
-
- `bcp
|
|
187
|
-
-
|
|
264
|
+
- Local / Amazon S3 / Cloudflare R2 storage presets
|
|
265
|
+
- non-secret `bcp.project.json`
|
|
266
|
+
- page/API/middleware/migration generators
|
|
267
|
+
- Doctor/Inspect v2
|
|
268
|
+
- framework updater
|
|
188
269
|
- Windows-safe `bcp-framework` alias
|
|
189
|
-
- standalone production build
|
|
190
|
-
- unit/integration/E2E/package/RC checks
|
|
191
|
-
|
|
192
|
-
## BCP 0.1.28 documentation focus
|
|
193
270
|
|
|
194
|
-
|
|
271
|
+
## Build/runtime baseline
|
|
195
272
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
```ts
|
|
199
|
-
import {
|
|
200
|
-
getProductionHardeningConfig,
|
|
201
|
-
registerShutdownHook,
|
|
202
|
-
} from "bcp/server";
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
Production environment controls:
|
|
206
|
-
|
|
207
|
-
```dotenv
|
|
208
|
-
BCP_REQUEST_TIMEOUT_MS=120000
|
|
209
|
-
BCP_HEADERS_TIMEOUT_MS=66000
|
|
210
|
-
BCP_KEEP_ALIVE_TIMEOUT_MS=65000
|
|
211
|
-
BCP_SHUTDOWN_TIMEOUT_MS=10000
|
|
212
|
-
BCP_TRUST_PROXY=false
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
Document these boundaries clearly:
|
|
216
|
-
|
|
217
|
-
- trusted proxy mode is off by default,
|
|
218
|
-
- forwarding headers are sanitized when trust is disabled,
|
|
219
|
-
- enable trust only behind a trusted reverse proxy/load balancer,
|
|
220
|
-
- Docker/process-manager `SIGTERM` triggers graceful shutdown,
|
|
221
|
-
- shutdown hooks are process-lifetime resource cleanup, not request cleanup,
|
|
222
|
-
- shutdown force-closes remaining public connections after the configured timeout.
|
|
223
|
-
|
|
224
|
-
See `production-hardening.md`.
|
|
225
|
-
|
|
226
|
-
### Local Server generator fix
|
|
227
|
-
|
|
228
|
-
`create-bcp-app --storage local` now generates:
|
|
273
|
+
Supported `0.2.0` production target:
|
|
229
274
|
|
|
230
275
|
```text
|
|
231
|
-
|
|
232
|
-
storage/
|
|
233
|
-
├─ .gitkeep
|
|
234
|
-
└─ README.md
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
Runtime objects remain ignored while the scaffold stays visible/tracked.
|
|
238
|
-
|
|
239
|
-
### 0.1.27 storage ecosystem remains supported
|
|
240
|
-
|
|
241
|
-
The storage ecosystem continues to include listing, copy/move, portable metadata, bulk deletion and S3 signed URLs. `0.1.28` hardens deployment/runtime behavior rather than replacing those APIs.
|
|
242
|
-
|
|
243
|
-
## CLI commands
|
|
244
|
-
|
|
245
|
-
```bash
|
|
246
|
-
bcp dev
|
|
247
|
-
bcp routes
|
|
248
|
-
bcp build
|
|
249
|
-
bcp start
|
|
250
|
-
bcp doctor
|
|
251
|
-
bcp doctor --json
|
|
252
|
-
bcp inspect
|
|
253
|
-
bcp inspect --json
|
|
254
|
-
bcp update
|
|
255
|
-
bcp version
|
|
256
|
-
|
|
257
|
-
bcp db create create_users
|
|
258
|
-
bcp db migrate
|
|
259
|
-
bcp db status
|
|
260
|
-
bcp db rollback
|
|
276
|
+
standalone-node
|
|
261
277
|
```
|
|
262
278
|
|
|
263
|
-
|
|
279
|
+
Build output:
|
|
264
280
|
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
281
|
+
```text
|
|
282
|
+
.bcp-framework/build/
|
|
283
|
+
├─ client/
|
|
284
|
+
├─ public/
|
|
285
|
+
└─ server/
|
|
286
|
+
└─ server.mjs
|
|
270
287
|
```
|
|
271
288
|
|
|
272
|
-
|
|
289
|
+
Native executable, desktop and mobile compilation are not part of the `0.2.0` platform contract.
|
|
273
290
|
|
|
274
291
|
## Releases
|
|
275
292
|
|
|
276
|
-
Release notes live
|
|
293
|
+
Release notes live in:
|
|
277
294
|
|
|
278
295
|
```text
|
|
279
296
|
docs/releases/
|
|
280
297
|
```
|
|
281
298
|
|
|
282
|
-
|
|
299
|
+
Current manifest routes begin with:
|
|
283
300
|
|
|
284
301
|
```text
|
|
302
|
+
/releases/0.2.0
|
|
303
|
+
/releases/0.1.29
|
|
285
304
|
/releases/0.1.28
|
|
286
305
|
/releases/0.1.27
|
|
287
306
|
/releases/0.1.26
|
|
288
|
-
/releases/0.1.25
|
|
289
|
-
/releases/0.1.24
|
|
290
307
|
```
|
|
291
308
|
|
|
292
|
-
Use
|
|
309
|
+
Use release states consistently:
|
|
293
310
|
|
|
294
311
|
```text
|
|
295
312
|
published
|
|
@@ -297,97 +314,96 @@ release candidate
|
|
|
297
314
|
unreleased development target
|
|
298
315
|
```
|
|
299
316
|
|
|
300
|
-
The
|
|
301
|
-
|
|
302
|
-
## Suggested
|
|
303
|
-
|
|
304
|
-
```ts
|
|
305
|
-
interface DocPage {
|
|
306
|
-
title: string;
|
|
307
|
-
slug: string;
|
|
308
|
-
section: string;
|
|
309
|
-
sourceFile: string;
|
|
310
|
-
versionTarget?: string;
|
|
311
|
-
releaseState?:
|
|
312
|
-
| "published"
|
|
313
|
-
| "rc"
|
|
314
|
-
| "unreleased";
|
|
315
|
-
}
|
|
316
|
-
```
|
|
317
|
+
The presence of a release note does not mean the npm version is published.
|
|
318
|
+
|
|
319
|
+
## Suggested bcp-docs-web implementation
|
|
317
320
|
|
|
318
|
-
|
|
321
|
+
At build/startup:
|
|
319
322
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
323
|
+
```text
|
|
324
|
+
load docs-web-manifest.json
|
|
325
|
+
load platform-manifest.json
|
|
326
|
+
↓
|
|
327
|
+
validate schema/version relationship
|
|
328
|
+
↓
|
|
329
|
+
build sidebar + route map + release map
|
|
330
|
+
↓
|
|
331
|
+
load referenced Markdown
|
|
332
|
+
↓
|
|
333
|
+
render content + prev/next + search index
|
|
334
|
+
↓
|
|
335
|
+
show version/release/platform metadata
|
|
336
|
+
```
|
|
329
337
|
|
|
330
|
-
|
|
338
|
+
Recommended website behavior:
|
|
331
339
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
340
|
+
1. Build navigation in manifest order.
|
|
341
|
+
2. Resolve every website route to its Markdown source.
|
|
342
|
+
3. Generate previous/next links from manifest ordering.
|
|
343
|
+
4. Use `versionTarget` and `releaseState` for banners.
|
|
344
|
+
5. Use `platform-manifest.json` for runtime/public-entrypoint metadata.
|
|
345
|
+
6. Index Markdown headings/content for search.
|
|
346
|
+
7. Never ingest runtime `.env` files into public documentation output.
|
|
336
347
|
|
|
337
348
|
## Source conventions
|
|
338
349
|
|
|
339
|
-
- one H1 per page,
|
|
350
|
+
- one H1 per Markdown page,
|
|
340
351
|
- stable heading hierarchy,
|
|
341
352
|
- fenced code blocks with language tags,
|
|
342
353
|
- relative links between docs,
|
|
343
354
|
- exact public API names,
|
|
344
355
|
- clear stable/RC/roadmap labels,
|
|
345
356
|
- security limitations next to affected APIs,
|
|
346
|
-
-
|
|
347
|
-
- no private/internal modules presented as public API.
|
|
357
|
+
- no framework-internal module presented as public API.
|
|
348
358
|
|
|
349
359
|
## Release validation
|
|
350
360
|
|
|
351
|
-
Before publishing
|
|
361
|
+
Before publishing `0.2.0`:
|
|
352
362
|
|
|
353
363
|
```bash
|
|
354
364
|
npm run typecheck
|
|
355
365
|
npm run test:unit
|
|
356
366
|
npm run test:integration
|
|
357
|
-
npm run test:e2e
|
|
358
367
|
npm run test:package
|
|
368
|
+
npm run test:e2e
|
|
359
369
|
npm run rc:check
|
|
360
370
|
```
|
|
361
371
|
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
A representative Docker app should also be built and stopped with `docker stop` to verify graceful `SIGTERM` shutdown.
|
|
372
|
+
`0.2.0` adds a platform-contract package smoke check that verifies:
|
|
365
373
|
|
|
366
|
-
|
|
374
|
+
- prepared framework/create-app version parity,
|
|
375
|
+
- required public exports,
|
|
376
|
+
- both CLI executable aliases,
|
|
377
|
+
- Node.js engine baseline,
|
|
378
|
+
- inclusion of platform/docs contract files,
|
|
379
|
+
- docs-web target/version consistency.
|
|
367
380
|
|
|
368
|
-
|
|
369
|
-
- examples use public exports,
|
|
370
|
-
- version/release states are current,
|
|
371
|
-
- Windows direct CLI examples use `npm exec -- bcp-framework`,
|
|
372
|
-
- upload/storage/auth security caveats are present,
|
|
373
|
-
- release notes match the framework version,
|
|
374
|
-
- S3 credentials are never shown as public browser variables,
|
|
375
|
-
- signed URLs are documented as temporary credentials,
|
|
376
|
-
- proxy trust is documented as opt-in,
|
|
377
|
-
- roadmap APIs are not presented as published guarantees.
|
|
381
|
+
The final release tag must point to the commit that passed the complete RC sequence.
|
|
378
382
|
|
|
379
|
-
##
|
|
383
|
+
## Documentation QA checklist
|
|
380
384
|
|
|
381
|
-
|
|
385
|
+
- every manifest Markdown source exists,
|
|
386
|
+
- every website route is unique,
|
|
387
|
+
- docs-web target matches platform version,
|
|
388
|
+
- platform public entrypoints match package exports,
|
|
389
|
+
- examples use public APIs/commands,
|
|
390
|
+
- release states are accurate,
|
|
391
|
+
- secrets are never placed in project/docs metadata,
|
|
392
|
+
- proxy trust remains opt-in,
|
|
393
|
+
- roadmap features are not presented as release guarantees.
|
|
382
394
|
|
|
383
|
-
|
|
384
|
-
- richer `doctor` and `inspect`,
|
|
385
|
-
- improved build/runtime diagnostics,
|
|
386
|
-
- create-app preset improvements,
|
|
387
|
-
- production configuration diagnostics.
|
|
395
|
+
## Repository authority
|
|
388
396
|
|
|
389
|
-
|
|
397
|
+
The framework repository remains authoritative for:
|
|
390
398
|
|
|
391
|
-
|
|
399
|
+
```text
|
|
400
|
+
source
|
|
401
|
+
public exports
|
|
402
|
+
tests
|
|
403
|
+
Markdown docs
|
|
404
|
+
docs-web manifest
|
|
405
|
+
platform manifest
|
|
406
|
+
release notes
|
|
407
|
+
```
|
|
392
408
|
|
|
393
|
-
|
|
409
|
+
`bcp-docs-web` is the presentation/search/navigation layer for this content.
|