@chidchanun/bcp 0.2.13 → 0.2.14
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 +144 -98
- package/docs/README.md +46 -36
- package/docs/api-manifest.json +18 -10
- package/docs/api-reference.md +127 -29
- package/docs/docs-web-manifest.json +6 -4
- package/docs/platform-manifest.json +22 -4
- package/docs/releases/0.2.14.md +241 -0
- package/docs/testing-platform.md +602 -0
- package/package.json +6 -1
- package/packages/bundler/src/client-boundary.ts +1 -0
- package/packages/client/src/realtime.mjs +67 -30
- package/packages/client/src/testing.mjs +2357 -0
- package/packages/client/src/testing.ts +52 -0
- package/packages/server/src/realtime.ts +95 -41
- package/packages/server/src/testing-page.ts +274 -0
- package/packages/server/src/testing.ts +1884 -0
package/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# BCP Framework
|
|
2
2
|
|
|
3
|
-
BCP Framework is a React full-stack framework for file-based routing, SSR, SPA navigation, server data loading, API routes, authentication, authorization, SQL databases, background jobs, scheduling, workflow orchestration, transactional events, realtime delivery, observability, uploads, storage and standalone Node.js deployment.
|
|
3
|
+
BCP Framework is a React full-stack framework for file-based routing, SSR, SPA navigation, server data loading, API routes, authentication, authorization, SQL databases, background jobs, scheduling, workflow orchestration, transactional events, realtime delivery, framework-native testing, observability, uploads, storage and standalone Node.js deployment.
|
|
4
4
|
|
|
5
|
-
> **Development target:** `0.2.
|
|
5
|
+
> **Development target:** `0.2.14 — Testing Platform`
|
|
6
6
|
>
|
|
7
|
-
> `0.2.
|
|
7
|
+
> `0.2.14` remains unreleased until local validation, RC checks, tagging and npm publication complete.
|
|
8
8
|
|
|
9
9
|
## Current platform
|
|
10
10
|
|
|
@@ -25,6 +25,7 @@ BCP Framework is a React full-stack framework for file-based routing, SSR, SPA n
|
|
|
25
25
|
| Workflows | Sequential/parallel steps, retries, persisted delays, compensation and run leases |
|
|
26
26
|
| Events | Transactional outbox, SQL persistence, dispatcher leases, retries, event bus and durable queue handoff |
|
|
27
27
|
| Realtime | Channels/rooms, presence, broker delivery, WebSocket adapter contract, SSE and heartbeat |
|
|
28
|
+
| Testing | Request/route/auth/database/middleware/jobs/workflow/outbox/realtime/SSE test harnesses |
|
|
28
29
|
| Observability | Structured logs, metrics, Prometheus output and health/readiness checks |
|
|
29
30
|
| Uploads & storage | Multipart streaming, Local/S3-compatible storage and signed URLs |
|
|
30
31
|
| Caching | Response cache and revalidation primitives |
|
|
@@ -73,6 +74,7 @@ import { createJobQueue } from "bcp/jobs";
|
|
|
73
74
|
import { createWorkflow } from "bcp/workflow";
|
|
74
75
|
import { createTransactionalOutbox } from "bcp/events";
|
|
75
76
|
import { createRealtime } from "bcp/realtime";
|
|
77
|
+
import { createTestApp } from "bcp/testing";
|
|
76
78
|
import { createMetricsRegistry } from "bcp/observability";
|
|
77
79
|
```
|
|
78
80
|
|
|
@@ -165,10 +167,6 @@ Read more: [Transactional Outbox & Events](docs/transactional-outbox-events.md)
|
|
|
165
167
|
|
|
166
168
|
## Realtime Platform — 0.2.13
|
|
167
169
|
|
|
168
|
-
`0.2.13` adds the server-only `bcp/realtime` public entrypoint.
|
|
169
|
-
|
|
170
|
-
Create a hub:
|
|
171
|
-
|
|
172
170
|
```ts
|
|
173
171
|
import {
|
|
174
172
|
createRealtime,
|
|
@@ -178,7 +176,7 @@ export const realtime =
|
|
|
178
176
|
createRealtime();
|
|
179
177
|
```
|
|
180
178
|
|
|
181
|
-
|
|
179
|
+
Join a channel and broadcast:
|
|
182
180
|
|
|
183
181
|
```ts
|
|
184
182
|
const connection =
|
|
@@ -197,135 +195,179 @@ await realtime.broadcast(
|
|
|
197
195
|
);
|
|
198
196
|
```
|
|
199
197
|
|
|
200
|
-
|
|
198
|
+
BCP intentionally does not install a WebSocket server library. Applications adapt `ws`, uWebSockets.js or another transport to `RealtimeSocket`. SSE is built in through Web `Response`.
|
|
199
|
+
|
|
200
|
+
Read more: [Realtime Platform](docs/realtime-platform.md)
|
|
201
|
+
|
|
202
|
+
## Testing Platform — 0.2.14
|
|
201
203
|
|
|
202
|
-
|
|
204
|
+
`0.2.14` adds the server-only `bcp/testing` entrypoint. It is test-runner neutral and does not add Jest or Vitest as framework dependencies.
|
|
205
|
+
|
|
206
|
+
### Request and route tests
|
|
203
207
|
|
|
204
208
|
```ts
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
209
|
+
import {
|
|
210
|
+
createRouteTestHandler,
|
|
211
|
+
createTestApp,
|
|
212
|
+
expectResponse,
|
|
213
|
+
} from "bcp/testing";
|
|
214
|
+
|
|
215
|
+
const handler =
|
|
216
|
+
createRouteTestHandler({
|
|
217
|
+
GET() {
|
|
218
|
+
return {
|
|
219
|
+
ok: true,
|
|
220
|
+
};
|
|
210
221
|
},
|
|
211
|
-
}
|
|
212
|
-
);
|
|
213
|
-
|
|
214
|
-
const members =
|
|
215
|
-
await realtime.members(
|
|
216
|
-
"project:7"
|
|
217
|
-
);
|
|
218
|
-
```
|
|
222
|
+
});
|
|
219
223
|
|
|
220
|
-
|
|
224
|
+
const app =
|
|
225
|
+
createTestApp({
|
|
226
|
+
handler,
|
|
227
|
+
});
|
|
221
228
|
|
|
222
|
-
|
|
229
|
+
const response =
|
|
230
|
+
await app.get(
|
|
231
|
+
"/api/health"
|
|
232
|
+
);
|
|
223
233
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
async ({ request }) =>
|
|
229
|
-
request
|
|
230
|
-
? loadRealtimeUser(
|
|
231
|
-
request
|
|
232
|
-
)
|
|
233
|
-
: null,
|
|
234
|
-
|
|
235
|
-
getUserId:
|
|
236
|
-
user => user.id,
|
|
237
|
-
|
|
238
|
-
authorizeChannel:
|
|
239
|
-
({ connection, channel }) =>
|
|
240
|
-
!channel.startsWith(
|
|
241
|
-
"private:"
|
|
242
|
-
) ||
|
|
243
|
-
Boolean(
|
|
244
|
-
connection.user
|
|
245
|
-
),
|
|
234
|
+
await expectResponse(response)
|
|
235
|
+
.status(200)
|
|
236
|
+
.json({
|
|
237
|
+
ok: true,
|
|
246
238
|
});
|
|
247
239
|
```
|
|
248
240
|
|
|
249
|
-
|
|
241
|
+
`createTestApp()` keeps an in-memory cookie jar, supports default headers and can send JSON bodies directly.
|
|
250
242
|
|
|
251
|
-
|
|
243
|
+
### Authentication tests
|
|
252
244
|
|
|
253
|
-
|
|
245
|
+
Create a real signed BCP session token instead of a fake test-only user header:
|
|
254
246
|
|
|
255
247
|
```ts
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
248
|
+
import {
|
|
249
|
+
createTestAuthSession,
|
|
250
|
+
} from "bcp/testing";
|
|
251
|
+
|
|
252
|
+
const session =
|
|
253
|
+
await createTestAuthSession(
|
|
259
254
|
{
|
|
260
|
-
|
|
255
|
+
id: 42,
|
|
256
|
+
role: "admin",
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
secret:
|
|
260
|
+
process.env.BCP_SESSION_SECRET,
|
|
261
|
+
store:
|
|
262
|
+
authSessionStore,
|
|
261
263
|
}
|
|
262
264
|
);
|
|
263
|
-
```
|
|
264
265
|
|
|
265
|
-
|
|
266
|
+
app.setCookie(
|
|
267
|
+
session.cookieName,
|
|
268
|
+
session.token
|
|
269
|
+
);
|
|
270
|
+
```
|
|
266
271
|
|
|
267
|
-
|
|
272
|
+
When `store` is provided, the matching server-side auth session record is inserted as well.
|
|
268
273
|
|
|
269
|
-
|
|
274
|
+
### Rollback database tests
|
|
270
275
|
|
|
271
276
|
```ts
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
277
|
+
import {
|
|
278
|
+
withTestTransaction,
|
|
279
|
+
} from "bcp/testing";
|
|
280
|
+
|
|
281
|
+
await withTestTransaction(
|
|
282
|
+
db,
|
|
283
|
+
async tx => {
|
|
284
|
+
await tx.execute(
|
|
285
|
+
"INSERT INTO users ..."
|
|
286
|
+
);
|
|
287
|
+
|
|
288
|
+
// assertions run here
|
|
289
|
+
}
|
|
290
|
+
);
|
|
283
291
|
```
|
|
284
292
|
|
|
285
|
-
|
|
293
|
+
The callback uses the real BCP transaction and is deliberately rolled back after the test callback succeeds.
|
|
286
294
|
|
|
287
|
-
|
|
295
|
+
### Infrastructure harnesses
|
|
288
296
|
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
297
|
+
```ts
|
|
298
|
+
import {
|
|
299
|
+
createJobTestHarness,
|
|
300
|
+
createOutboxTestHarness,
|
|
301
|
+
createRealtimeTestHarness,
|
|
302
|
+
createWorkflowTestHarness,
|
|
303
|
+
} from "bcp/testing";
|
|
295
304
|
```
|
|
296
305
|
|
|
297
|
-
|
|
306
|
+
These harnesses use the real platform contracts rather than separate mock implementations.
|
|
307
|
+
|
|
308
|
+
Background jobs:
|
|
298
309
|
|
|
299
310
|
```ts
|
|
300
|
-
const
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
311
|
+
const jobTest =
|
|
312
|
+
createJobTestHarness(
|
|
313
|
+
jobs
|
|
314
|
+
);
|
|
315
|
+
|
|
316
|
+
await jobTest.drain();
|
|
304
317
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
318
|
+
await jobTest.expectCount(
|
|
319
|
+
1,
|
|
320
|
+
{
|
|
321
|
+
name: "email.welcome",
|
|
322
|
+
state: "succeeded",
|
|
323
|
+
}
|
|
324
|
+
);
|
|
308
325
|
```
|
|
309
326
|
|
|
310
|
-
|
|
327
|
+
Realtime:
|
|
311
328
|
|
|
312
|
-
|
|
329
|
+
```ts
|
|
330
|
+
const realtimeTest =
|
|
331
|
+
createRealtimeTestHarness(
|
|
332
|
+
realtime
|
|
333
|
+
);
|
|
313
334
|
|
|
314
|
-
|
|
335
|
+
const {
|
|
336
|
+
socket,
|
|
337
|
+
connection,
|
|
338
|
+
} =
|
|
339
|
+
await realtimeTest.connect();
|
|
340
|
+
|
|
341
|
+
await connection.join(
|
|
342
|
+
"orders:42"
|
|
343
|
+
);
|
|
315
344
|
|
|
316
|
-
```ts
|
|
317
345
|
await realtime.broadcast(
|
|
318
|
-
|
|
319
|
-
"
|
|
346
|
+
"orders:42",
|
|
347
|
+
"order.updated",
|
|
320
348
|
{
|
|
321
|
-
|
|
349
|
+
status: "paid",
|
|
322
350
|
}
|
|
323
351
|
);
|
|
352
|
+
|
|
353
|
+
realtimeTest.expectEvent(
|
|
354
|
+
socket,
|
|
355
|
+
"order.updated",
|
|
356
|
+
"orders:42"
|
|
357
|
+
);
|
|
324
358
|
```
|
|
325
359
|
|
|
326
|
-
|
|
360
|
+
Other testing primitives include:
|
|
327
361
|
|
|
328
|
-
|
|
362
|
+
```text
|
|
363
|
+
createFakeClock()
|
|
364
|
+
createSequenceIdFactory()
|
|
365
|
+
runTestMiddleware()
|
|
366
|
+
createRealtimeTestSocket()
|
|
367
|
+
readSseEvents()
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
Read more: [Testing Platform](docs/testing-platform.md)
|
|
329
371
|
|
|
330
372
|
## Public entrypoints
|
|
331
373
|
|
|
@@ -342,6 +384,7 @@ bcp/jobs
|
|
|
342
384
|
bcp/workflow
|
|
343
385
|
bcp/events
|
|
344
386
|
bcp/realtime
|
|
387
|
+
bcp/testing
|
|
345
388
|
bcp/observability
|
|
346
389
|
bcp/server
|
|
347
390
|
bcp/server-only
|
|
@@ -397,6 +440,8 @@ Browser / API / Realtime clients
|
|
|
397
440
|
outbox jobs |
|
|
398
441
|
\__________|_________/
|
|
399
442
|
durable state
|
|
443
|
+
|
|
444
|
+
Testing Platform exercises these server contracts without becoming part of browser runtime.
|
|
400
445
|
```
|
|
401
446
|
|
|
402
447
|
## Packaging
|
|
@@ -424,7 +469,7 @@ docs/api-manifest.json
|
|
|
424
469
|
|
|
425
470
|
## Release validation
|
|
426
471
|
|
|
427
|
-
Before publishing `0.2.
|
|
472
|
+
Before publishing `0.2.14`:
|
|
428
473
|
|
|
429
474
|
```bash
|
|
430
475
|
npm run typecheck
|
|
@@ -435,7 +480,7 @@ npm run test:package
|
|
|
435
480
|
npm run rc:check
|
|
436
481
|
```
|
|
437
482
|
|
|
438
|
-
`0.2.
|
|
483
|
+
`0.2.14` adds unit and prepared-package smoke coverage for request/route handling, cookies, signed auth sessions, rollback transactions, middleware execution, jobs, workflows, outbox delivery, realtime sockets, SSE parsing, public runtime compilation and browser boundary enforcement.
|
|
439
484
|
|
|
440
485
|
Do not tag or publish until the exact final release commit passes the full RC sequence.
|
|
441
486
|
|
|
@@ -463,12 +508,13 @@ Do not tag or publish until the exact final release commit passes the full RC se
|
|
|
463
508
|
| `0.2.11` | Workflow Orchestration |
|
|
464
509
|
| `0.2.12` | Transactional Outbox & Events |
|
|
465
510
|
| `0.2.13` | Realtime Platform |
|
|
511
|
+
| `0.2.14` | Testing Platform |
|
|
466
512
|
|
|
467
513
|
## Roadmap
|
|
468
514
|
|
|
469
|
-
`0.2.
|
|
515
|
+
`0.2.14` establishes framework-native testing for the current BCP application/runtime stack without coupling the framework to a specific test runner.
|
|
470
516
|
|
|
471
|
-
The next logical milestone is **`0.2.
|
|
517
|
+
The next logical milestone is **`0.2.15 — Plugin & Module Platform`**, focused on reusable framework modules, lifecycle hooks, configuration extension, package metadata and plugin discovery/registration while keeping the current public entrypoints stable.
|
|
472
518
|
|
|
473
519
|
Native desktop/mobile compilation remains later roadmap work.
|
|
474
520
|
|
package/docs/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
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.2.
|
|
5
|
+
> **Documentation target:** BCP Framework `0.2.14 — Testing Platform`
|
|
6
6
|
>
|
|
7
7
|
> **Release state:** unreleased development target until RC validation, tagging and npm publication complete.
|
|
8
8
|
|
|
@@ -39,56 +39,64 @@ Framework source and tests remain authoritative for runtime behavior.
|
|
|
39
39
|
| `0.2.11` | Workflow Orchestration |
|
|
40
40
|
| `0.2.12` | Transactional Outbox & Events |
|
|
41
41
|
| `0.2.13` | Realtime Platform |
|
|
42
|
+
| `0.2.14` | Testing Platform |
|
|
42
43
|
|
|
43
|
-
## 0.2.
|
|
44
|
+
## 0.2.14 — Testing Platform
|
|
44
45
|
|
|
45
|
-
`0.2.
|
|
46
|
+
`0.2.14` adds the server-only `bcp/testing` public entrypoint.
|
|
46
47
|
|
|
47
48
|
Primary APIs:
|
|
48
49
|
|
|
49
50
|
```ts
|
|
50
51
|
import {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
createFakeClock,
|
|
53
|
+
createJobTestHarness,
|
|
54
|
+
createOutboxTestHarness,
|
|
55
|
+
createRealtimeTestHarness,
|
|
56
|
+
createRealtimeTestSocket,
|
|
57
|
+
createRouteTestHandler,
|
|
58
|
+
createSequenceIdFactory,
|
|
59
|
+
createTestApp,
|
|
60
|
+
createTestAuthSession,
|
|
61
|
+
createWorkflowTestHarness,
|
|
62
|
+
expectResponse,
|
|
63
|
+
readSseEvents,
|
|
64
|
+
runTestMiddleware,
|
|
65
|
+
withTestTransaction,
|
|
66
|
+
} from "bcp/testing";
|
|
56
67
|
```
|
|
57
68
|
|
|
58
|
-
|
|
69
|
+
Testing model:
|
|
59
70
|
|
|
60
71
|
```text
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
|
74
|
-
+-- RealtimeSocket
|
|
75
|
-
| -> WebSocket provider adapter
|
|
76
|
-
|
|
|
77
|
-
+-- SSE Response
|
|
72
|
+
node:test / Vitest / Jest / other runner
|
|
73
|
+
|
|
|
74
|
+
v
|
|
75
|
+
bcp/testing
|
|
76
|
+
|
|
|
77
|
+
+----------+-----------+
|
|
78
|
+
| | |
|
|
79
|
+
Request Database Infrastructure
|
|
80
|
+
Route rollback jobs/workflow
|
|
81
|
+
Response tx outbox/realtime
|
|
82
|
+
Auth SSE/socket
|
|
83
|
+
Middleware
|
|
78
84
|
```
|
|
79
85
|
|
|
80
|
-
The
|
|
86
|
+
The helpers use existing BCP runtime contracts rather than defining a parallel mock framework. Signed auth sessions use the production session token implementation; middleware tests execute the real onion pipeline; job/workflow/outbox/realtime harnesses wrap their actual platform APIs.
|
|
87
|
+
|
|
88
|
+
BCP does not add a Jest or Vitest dependency.
|
|
81
89
|
|
|
82
90
|
New/updated sources:
|
|
83
91
|
|
|
84
92
|
| Source | Purpose |
|
|
85
93
|
| --- | --- |
|
|
86
|
-
| `
|
|
87
|
-
| `api-reference.md` | `bcp/
|
|
88
|
-
| `platform-manifest.json` |
|
|
89
|
-
| `api-manifest.json` | `bcp/
|
|
90
|
-
| `docs-web-manifest.json` |
|
|
91
|
-
| `releases/0.2.
|
|
94
|
+
| `testing-platform.md` | Request, auth, database, middleware, jobs, workflow, outbox, realtime and SSE testing |
|
|
95
|
+
| `api-reference.md` | `bcp/testing` public APIs |
|
|
96
|
+
| `platform-manifest.json` | Testing capability flags and public entrypoint |
|
|
97
|
+
| `api-manifest.json` | `bcp/testing` source/guide ownership |
|
|
98
|
+
| `docs-web-manifest.json` | Testing docs navigation and `0.2.14` release route |
|
|
99
|
+
| `releases/0.2.14.md` | Testing Platform release notes |
|
|
92
100
|
|
|
93
101
|
## Update rule
|
|
94
102
|
|
|
@@ -114,8 +122,9 @@ When framework behavior or public surface changes:
|
|
|
114
122
|
| `/docs/workflow-orchestration` | `workflow-orchestration.md` |
|
|
115
123
|
| `/docs/transactional-outbox-events` | `transactional-outbox-events.md` |
|
|
116
124
|
| `/docs/realtime-platform` | `realtime-platform.md` |
|
|
125
|
+
| `/docs/testing-platform` | `testing-platform.md` |
|
|
117
126
|
| `/docs/api-reference` | `api-reference.md` |
|
|
118
|
-
| `/releases/0.2.
|
|
127
|
+
| `/releases/0.2.14` | `releases/0.2.14.md` |
|
|
119
128
|
|
|
120
129
|
Every route/source pair is validated by unit tests.
|
|
121
130
|
|
|
@@ -134,6 +143,7 @@ bcp/jobs
|
|
|
134
143
|
bcp/workflow
|
|
135
144
|
bcp/events
|
|
136
145
|
bcp/realtime
|
|
146
|
+
bcp/testing
|
|
137
147
|
bcp/observability
|
|
138
148
|
bcp/server
|
|
139
149
|
bcp/server-only
|
|
@@ -144,7 +154,7 @@ The API-manifest entrypoint set must match the platform public-entrypoint set ex
|
|
|
144
154
|
|
|
145
155
|
## Release validation
|
|
146
156
|
|
|
147
|
-
Before publishing `0.2.
|
|
157
|
+
Before publishing `0.2.14`:
|
|
148
158
|
|
|
149
159
|
```bash
|
|
150
160
|
npm run typecheck
|
|
@@ -155,6 +165,6 @@ npm run test:package
|
|
|
155
165
|
npm run rc:check
|
|
156
166
|
```
|
|
157
167
|
|
|
158
|
-
|
|
168
|
+
Testing Platform validation covers request/route behavior, cookie persistence, signed auth sessions, rollback transactions, middleware execution, deterministic clocks/IDs, job/workflow/outbox/realtime harnesses, SSE parsing, server-only boundaries, compiled `testing.mjs` execution and docs/platform/API parity.
|
|
159
169
|
|
|
160
170
|
The final release tag must point to the exact commit that passed the complete RC sequence.
|
package/docs/api-manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"framework": "bcp",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.14",
|
|
5
5
|
"releaseState": "unreleased",
|
|
6
6
|
"coverage": "public-entrypoints",
|
|
7
7
|
"entrypoints": [
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"environment": "universal",
|
|
12
12
|
"route": "/docs/api-reference#bcp",
|
|
13
13
|
"summary": "React application APIs for routing, links, forms, loader/guard data, islands, metadata and route error handling.",
|
|
14
|
-
"guides": ["/docs/routing", "/docs/server-data-loaders", "/docs/route-guards", "/docs/form-actions"]
|
|
14
|
+
"guides": ["/docs/routing", "/docs/server-data-loaders", "/docs/route-guards", "/docs/form-actions", "/docs/testing-platform"]
|
|
15
15
|
},
|
|
16
16
|
{
|
|
17
17
|
"package": "bcp/island",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"environment": "server",
|
|
60
60
|
"route": "/docs/api-reference#bcp-database",
|
|
61
61
|
"summary": "Provider-neutral MySQL, PostgreSQL and SQLite query, transaction, lifecycle and migration primitives.",
|
|
62
|
-
"guides": ["/docs/database", "/docs/database-migrations", "/docs/transactional-outbox-events"]
|
|
62
|
+
"guides": ["/docs/database", "/docs/database-migrations", "/docs/transactional-outbox-events", "/docs/testing-platform"]
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
65
|
"package": "bcp/auth",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"environment": "server",
|
|
68
68
|
"route": "/docs/api-reference#bcp-auth",
|
|
69
69
|
"summary": "Authentication Platform v2 plus permission checks, authorization policies and auth/guest/role/permission route guards.",
|
|
70
|
-
"guides": ["/docs/authentication", "/docs/auth-session-store", "/docs/auth-route-guards", "/docs/authorization-security", "/docs/session-auth"]
|
|
70
|
+
"guides": ["/docs/authentication", "/docs/auth-session-store", "/docs/auth-route-guards", "/docs/authorization-security", "/docs/session-auth", "/docs/testing-platform"]
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
73
|
"package": "bcp/jobs",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"environment": "server",
|
|
76
76
|
"route": "/docs/api-reference#bcp-jobs",
|
|
77
77
|
"summary": "Background queues and schedules with visibility leases, heartbeats, stale recovery, DLQ maintenance and Redis-compatible durable adapters.",
|
|
78
|
-
"guides": ["/docs/background-jobs", "/docs/job-scheduling", "/docs/durable-jobs", "/docs/transactional-outbox-events", "/docs/realtime-platform", "/docs/observability"]
|
|
78
|
+
"guides": ["/docs/background-jobs", "/docs/job-scheduling", "/docs/durable-jobs", "/docs/transactional-outbox-events", "/docs/realtime-platform", "/docs/testing-platform", "/docs/observability"]
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
"package": "bcp/workflow",
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
"environment": "server",
|
|
84
84
|
"route": "/docs/api-reference#bcp-workflow",
|
|
85
85
|
"summary": "Persistent workflow orchestration with sequential and parallel steps, retries, delays, compensation, run leases and optional durable queue execution.",
|
|
86
|
-
"guides": ["/docs/workflow-orchestration", "/docs/durable-jobs", "/docs/realtime-platform", "/docs/observability"]
|
|
86
|
+
"guides": ["/docs/workflow-orchestration", "/docs/durable-jobs", "/docs/realtime-platform", "/docs/testing-platform", "/docs/observability"]
|
|
87
87
|
},
|
|
88
88
|
{
|
|
89
89
|
"package": "bcp/events",
|
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
"environment": "server",
|
|
92
92
|
"route": "/docs/api-reference#bcp-events",
|
|
93
93
|
"summary": "Transactional outbox and event delivery APIs with SQL persistence, dispatcher leases, retries, stale recovery, queue handoff and in-process event bus delivery.",
|
|
94
|
-
"guides": ["/docs/transactional-outbox-events", "/docs/database", "/docs/durable-jobs", "/docs/realtime-platform", "/docs/observability"]
|
|
94
|
+
"guides": ["/docs/transactional-outbox-events", "/docs/database", "/docs/durable-jobs", "/docs/realtime-platform", "/docs/testing-platform", "/docs/observability"]
|
|
95
95
|
},
|
|
96
96
|
{
|
|
97
97
|
"package": "bcp/realtime",
|
|
@@ -99,7 +99,15 @@
|
|
|
99
99
|
"environment": "server",
|
|
100
100
|
"route": "/docs/api-reference#bcp-realtime",
|
|
101
101
|
"summary": "Realtime channels, cross-hub broker delivery, presence, channel authorization, WebSocket adapter integration, heartbeat handling and built-in Server-Sent Events responses.",
|
|
102
|
-
"guides": ["/docs/realtime-platform", "/docs/authentication", "/docs/observability"]
|
|
102
|
+
"guides": ["/docs/realtime-platform", "/docs/authentication", "/docs/testing-platform", "/docs/observability"]
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"package": "bcp/testing",
|
|
106
|
+
"source": "packages/client/src/testing.ts",
|
|
107
|
+
"environment": "server",
|
|
108
|
+
"route": "/docs/api-reference#bcp-testing",
|
|
109
|
+
"summary": "Framework-native testing utilities for Request/Response handlers, signed auth sessions, rollback transactions, middleware, jobs, workflows, outbox delivery, realtime sockets and SSE.",
|
|
110
|
+
"guides": ["/docs/testing-platform", "/docs/authentication", "/docs/database", "/docs/durable-jobs", "/docs/workflow-orchestration", "/docs/transactional-outbox-events", "/docs/realtime-platform"]
|
|
103
111
|
},
|
|
104
112
|
{
|
|
105
113
|
"package": "bcp/observability",
|
|
@@ -115,7 +123,7 @@
|
|
|
115
123
|
"environment": "server",
|
|
116
124
|
"route": "/docs/api-reference#bcp-server",
|
|
117
125
|
"summary": "Request context, cookies, CSRF/same-origin protection, logging, production hardening, upload, storage, response and session APIs.",
|
|
118
|
-
"guides": ["/docs/server-request-apis", "/docs/authorization-security", "/docs/file-upload", "/docs/storage", "/docs/storage-ecosystem", "/docs/production-hardening"]
|
|
126
|
+
"guides": ["/docs/server-request-apis", "/docs/authorization-security", "/docs/file-upload", "/docs/storage", "/docs/storage-ecosystem", "/docs/production-hardening", "/docs/testing-platform"]
|
|
119
127
|
},
|
|
120
128
|
{
|
|
121
129
|
"package": "bcp/server-only",
|
|
@@ -131,7 +139,7 @@
|
|
|
131
139
|
"environment": "server",
|
|
132
140
|
"route": "/docs/api-reference#bcp-middleware",
|
|
133
141
|
"summary": "Middleware System v2 request/response pipeline types and helpers.",
|
|
134
|
-
"guides": ["/docs/middleware"]
|
|
142
|
+
"guides": ["/docs/middleware", "/docs/testing-platform"]
|
|
135
143
|
}
|
|
136
144
|
]
|
|
137
145
|
}
|