@chidchanun/bcp 0.2.17 → 0.2.19
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 +113 -384
- package/docs/README.md +39 -55
- package/docs/api-freeze-snapshot.json +232 -0
- package/docs/api-manifest.json +24 -16
- package/docs/api-reference.md +150 -140
- package/docs/deployment-platform-v2.md +449 -0
- package/docs/docs-web-manifest.json +8 -4
- package/docs/migration-0.2.md +79 -80
- package/docs/platform-contract.md +64 -79
- package/docs/platform-manifest.json +26 -4
- package/docs/releases/0.2.18.md +136 -0
- package/docs/releases/0.2.19.md +125 -0
- package/docs/releasing.md +104 -179
- package/docs/stability-api-freeze.md +179 -0
- package/package.json +10 -5
- package/packages/bundler/src/client-boundary.ts +1 -0
- package/packages/client/src/auth.mjs +1391 -0
- package/packages/client/src/config.mjs +1132 -0
- package/packages/client/src/deployment.mjs +609 -0
- package/packages/client/src/deployment.ts +20 -0
- package/packages/client/src/server.mjs +5615 -0
- package/packages/server/src/deployment.ts +936 -0
- package/packages/server/src/middleware.mjs +631 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# Stability & API Freeze — 0.2.19
|
|
2
|
+
|
|
3
|
+
BCP Framework `0.2.19` is the final stabilization milestone for the `0.2.x` platform before the next `0.3.0` application-platform baseline.
|
|
4
|
+
|
|
5
|
+
This release intentionally does **not** add a new application subsystem. Its purpose is to freeze the supported public package/CLI contract, strengthen release gates and catch accidental compatibility regressions before publication.
|
|
6
|
+
|
|
7
|
+
## Frozen contract
|
|
8
|
+
|
|
9
|
+
The committed source of truth is:
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
docs/api-freeze-snapshot.json
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
It records:
|
|
16
|
+
|
|
17
|
+
- the supported `bcp/*` public entrypoint set;
|
|
18
|
+
- the supported CLI command set;
|
|
19
|
+
- prepared npm `exports` including `types`, `default` and `browser` targets;
|
|
20
|
+
- API source/environment ownership from `docs/api-manifest.json`;
|
|
21
|
+
- the compatibility baseline (`0.2.18`);
|
|
22
|
+
- the no-intentional-breaking-change policy for `0.2.19`.
|
|
23
|
+
|
|
24
|
+
The frozen public package entrypoints are:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
bcp
|
|
28
|
+
bcp/island
|
|
29
|
+
bcp/cache
|
|
30
|
+
bcp/config
|
|
31
|
+
bcp/validation
|
|
32
|
+
bcp/error
|
|
33
|
+
bcp/database
|
|
34
|
+
bcp/auth
|
|
35
|
+
bcp/jobs
|
|
36
|
+
bcp/workflow
|
|
37
|
+
bcp/events
|
|
38
|
+
bcp/realtime
|
|
39
|
+
bcp/testing
|
|
40
|
+
bcp/plugins
|
|
41
|
+
bcp/observability
|
|
42
|
+
bcp/deployment
|
|
43
|
+
bcp/server
|
|
44
|
+
bcp/server-only
|
|
45
|
+
bcp/middleware
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
`./package.json` is also frozen as a package export, although it is not an application API entrypoint.
|
|
49
|
+
|
|
50
|
+
## API compatibility gate
|
|
51
|
+
|
|
52
|
+
Run:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npm run api:check
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The compatibility checker prepares the exact npm staging package, generates the current contract and compares it to `docs/api-freeze-snapshot.json`.
|
|
59
|
+
|
|
60
|
+
The check fails when, for example:
|
|
61
|
+
|
|
62
|
+
- a public entrypoint is removed or added;
|
|
63
|
+
- a CLI command changes without an explicit new platform baseline;
|
|
64
|
+
- `bcp/server` stops resolving to `server.mjs` in the prepared package;
|
|
65
|
+
- a server-only browser poison target disappears;
|
|
66
|
+
- an entrypoint changes API source/environment ownership;
|
|
67
|
+
- the current version/baseline no longer matches the committed freeze.
|
|
68
|
+
|
|
69
|
+
This prevents source metadata, prepared npm metadata and documentation metadata from drifting independently.
|
|
70
|
+
|
|
71
|
+
## Snapshot regeneration
|
|
72
|
+
|
|
73
|
+
To intentionally regenerate the contract:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
npm run api:snapshot
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
That command rewrites:
|
|
80
|
+
|
|
81
|
+
```text
|
|
82
|
+
docs/api-freeze-snapshot.json
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
For `0.2.19`, snapshot changes require explicit review because the milestone promises no intentional breaking changes from `0.2.18`.
|
|
86
|
+
|
|
87
|
+
Large or breaking public-surface changes should normally be deferred to `0.3.0` rather than silently updating the `0.2.19` snapshot.
|
|
88
|
+
|
|
89
|
+
## Release readiness
|
|
90
|
+
|
|
91
|
+
Run:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
npm run release:readiness
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
The readiness report checks:
|
|
98
|
+
|
|
99
|
+
- root/client/create-app version parity;
|
|
100
|
+
- `package-lock.json` version parity;
|
|
101
|
+
- platform/API/docs-web version parity;
|
|
102
|
+
- `unreleased` release state;
|
|
103
|
+
- `0.2.18` previous-baseline metadata;
|
|
104
|
+
- no intentional breaking changes;
|
|
105
|
+
- API freeze snapshot version/baseline;
|
|
106
|
+
- public entrypoint parity;
|
|
107
|
+
- CLI freeze parity;
|
|
108
|
+
- current release notes and docs route;
|
|
109
|
+
- stability capability flags.
|
|
110
|
+
|
|
111
|
+
To also persist a local machine-readable report:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
npm run release:readiness:report
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
The report is written to:
|
|
118
|
+
|
|
119
|
+
```text
|
|
120
|
+
.bcp-framework/release-readiness.json
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
It is a local build artifact and is not the release source of truth.
|
|
124
|
+
|
|
125
|
+
## RC integration
|
|
126
|
+
|
|
127
|
+
`0.2.19` strengthens the release pipeline:
|
|
128
|
+
|
|
129
|
+
```text
|
|
130
|
+
npm run typecheck
|
|
131
|
+
npm test
|
|
132
|
+
-> unit
|
|
133
|
+
-> integration
|
|
134
|
+
-> e2e
|
|
135
|
+
-> prepared-package smoke
|
|
136
|
+
-> Stability & API Freeze smoke
|
|
137
|
+
npm run api:check
|
|
138
|
+
npm run release:readiness
|
|
139
|
+
release metadata check
|
|
140
|
+
npm name/version checks
|
|
141
|
+
npm publish dry-run
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
`npm run rc:check` must pass on the exact commit that will be tagged.
|
|
145
|
+
|
|
146
|
+
## Lifecycle stabilization
|
|
147
|
+
|
|
148
|
+
The stability suite adds explicit idempotency coverage for Deployment Platform v2:
|
|
149
|
+
|
|
150
|
+
- concurrent/repeated `start()` calls must start a resource once;
|
|
151
|
+
- concurrent/repeated `shutdown()` calls must stop a resource once;
|
|
152
|
+
- shutdown remains reverse ordered;
|
|
153
|
+
- a stopped runtime cannot be restarted.
|
|
154
|
+
|
|
155
|
+
Existing subsystem-specific suites remain authoritative for jobs, workflows, outbox/events, realtime, cache, plugins and deployment behavior.
|
|
156
|
+
|
|
157
|
+
## Compatibility policy
|
|
158
|
+
|
|
159
|
+
`0.2.19` declares:
|
|
160
|
+
|
|
161
|
+
```text
|
|
162
|
+
previous baseline: 0.2.18
|
|
163
|
+
intentional breaking changes: false
|
|
164
|
+
freeze state: frozen
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Bug fixes may still change incorrect implementation behavior, but they must not silently remove documented public entrypoints or change their package-resolution contract.
|
|
168
|
+
|
|
169
|
+
## Moving to 0.3.0
|
|
170
|
+
|
|
171
|
+
`0.3.0` is the next platform baseline. That milestone may intentionally revise the frozen surface, but changes should be accompanied by:
|
|
172
|
+
|
|
173
|
+
1. a reviewed API snapshot update;
|
|
174
|
+
2. explicit compatibility/breaking-change metadata;
|
|
175
|
+
3. migration documentation;
|
|
176
|
+
4. updated package/docs manifests;
|
|
177
|
+
5. regression and prepared-package coverage.
|
|
178
|
+
|
|
179
|
+
The `0.2.19` snapshot therefore becomes the comparison point for the next platform-generation work.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chidchanun/bcp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.19",
|
|
4
4
|
"description": "BCP Framework - a React full-stack framework with file-based routing, SSR, APIs, middleware, islands, caching and standalone production builds.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
},
|
|
43
43
|
"./config": {
|
|
44
44
|
"types": "./packages/client/src/config.ts",
|
|
45
|
-
"default": "./packages/client/src/config.
|
|
45
|
+
"default": "./packages/client/src/config.mjs"
|
|
46
46
|
},
|
|
47
47
|
"./validation": {
|
|
48
48
|
"types": "./packages/client/src/validation.ts",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"./auth": {
|
|
61
61
|
"types": "./packages/client/src/auth.ts",
|
|
62
62
|
"browser": "./packages/client/src/server-only.browser.mjs",
|
|
63
|
-
"default": "./packages/client/src/auth.
|
|
63
|
+
"default": "./packages/client/src/auth.mjs"
|
|
64
64
|
},
|
|
65
65
|
"./jobs": {
|
|
66
66
|
"types": "./packages/client/src/jobs.ts",
|
|
@@ -97,10 +97,15 @@
|
|
|
97
97
|
"browser": "./packages/client/src/server-only.browser.mjs",
|
|
98
98
|
"default": "./packages/client/src/observability.mjs"
|
|
99
99
|
},
|
|
100
|
+
"./deployment": {
|
|
101
|
+
"types": "./packages/client/src/deployment.ts",
|
|
102
|
+
"browser": "./packages/client/src/server-only.browser.mjs",
|
|
103
|
+
"default": "./packages/client/src/deployment.mjs"
|
|
104
|
+
},
|
|
100
105
|
"./server": {
|
|
101
106
|
"types": "./packages/client/src/server.ts",
|
|
102
107
|
"browser": "./packages/client/src/server-only.browser.mjs",
|
|
103
|
-
"default": "./packages/client/src/server.
|
|
108
|
+
"default": "./packages/client/src/server.mjs"
|
|
104
109
|
},
|
|
105
110
|
"./server-only": {
|
|
106
111
|
"types": "./packages/client/src/server-only.d.ts",
|
|
@@ -109,7 +114,7 @@
|
|
|
109
114
|
},
|
|
110
115
|
"./middleware": {
|
|
111
116
|
"types": "./packages/server/src/middleware.ts",
|
|
112
|
-
"default": "./packages/server/src/middleware.
|
|
117
|
+
"default": "./packages/server/src/middleware.mjs"
|
|
113
118
|
},
|
|
114
119
|
"./package.json": "./package.json"
|
|
115
120
|
},
|