opinionated-machine 12.0.0 → 13.0.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/CHANGELOG.md +28 -0
- package/README.md +850 -2024
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/AbstractModule.d.ts +7 -9
- package/dist/lib/AbstractModule.js +7 -9
- package/dist/lib/AbstractModule.js.map +1 -1
- package/dist/lib/DIContext.d.ts +18 -77
- package/dist/lib/DIContext.js +59 -226
- package/dist/lib/DIContext.js.map +1 -1
- package/dist/lib/api-contracts/AbstractApiController.d.ts +3 -1
- package/dist/lib/api-contracts/AbstractApiController.js +3 -1
- package/dist/lib/api-contracts/AbstractApiController.js.map +1 -1
- package/dist/lib/api-contracts/apiRouteBuilder.js.map +1 -1
- package/dist/lib/api-contracts/apiSseConnectionRegistry.d.ts +3 -4
- package/dist/lib/api-contracts/apiSseConnectionRegistry.js +1 -2
- package/dist/lib/api-contracts/apiSseConnectionRegistry.js.map +1 -1
- package/dist/lib/api-contracts/asApiControllerClass.d.ts +1 -2
- package/dist/lib/api-contracts/asApiControllerClass.js +1 -2
- package/dist/lib/api-contracts/asApiControllerClass.js.map +1 -1
- package/dist/lib/gateway/manifest/buildManifest.d.ts +3 -28
- package/dist/lib/gateway/manifest/buildManifest.js +1 -19
- package/dist/lib/gateway/manifest/buildManifest.js.map +1 -1
- package/dist/lib/gateway/manifest/manifestSchema.js +1 -1
- package/dist/lib/gateway/manifest/manifestSchema.js.map +1 -1
- package/dist/lib/gateway/routeStreaming.d.ts +3 -4
- package/dist/lib/gateway/routeStreaming.js.map +1 -1
- package/dist/lib/gateway/withGatewayMetadata.d.ts +18 -20
- package/dist/lib/gateway/withGatewayMetadata.js +16 -16
- package/dist/lib/gateway/withGatewayMetadata.js.map +1 -1
- package/dist/lib/resolverFunctions.d.ts +0 -58
- package/dist/lib/resolverFunctions.js +0 -92
- package/dist/lib/resolverFunctions.js.map +1 -1
- package/dist/lib/sse/SSESessionSpy.d.ts +8 -11
- package/dist/lib/sse/SSESessionSpy.js +3 -4
- package/dist/lib/sse/SSESessionSpy.js.map +1 -1
- package/dist/lib/sse/index.d.ts +1 -3
- package/dist/lib/sse/index.js +0 -3
- package/dist/lib/sse/index.js.map +1 -1
- package/dist/lib/sse/rooms/SSERoomBroadcaster.d.ts +8 -7
- package/dist/lib/sse/rooms/SSERoomBroadcaster.js +8 -7
- package/dist/lib/sse/rooms/SSERoomBroadcaster.js.map +1 -1
- package/dist/lib/sse/rooms/SSERoomManager.d.ts +1 -1
- package/dist/lib/sse/rooms/SSERoomManager.js +1 -1
- package/dist/lib/sse/rooms/defineRoom.d.ts +2 -2
- package/dist/lib/sse/rooms/defineRoom.js +2 -2
- package/dist/lib/sse/rooms/types.d.ts +3 -3
- package/dist/lib/sse/sseSendDiagnostics.d.ts +13 -2
- package/dist/lib/sse/sseSendDiagnostics.js +17 -0
- package/dist/lib/sse/sseSendDiagnostics.js.map +1 -1
- package/dist/lib/sse/sseTypes.d.ts +2 -55
- package/dist/lib/testing/apiSseEventValidation.d.ts +3 -3
- package/dist/lib/testing/apiSseEventValidation.js.map +1 -1
- package/dist/lib/testing/apiSseHttpHelpers.js +7 -2
- package/dist/lib/testing/apiSseHttpHelpers.js.map +1 -1
- package/dist/lib/testing/apiSseInjectHelpers.d.ts +2 -4
- package/dist/lib/testing/apiSseInjectHelpers.js +11 -6
- package/dist/lib/testing/apiSseInjectHelpers.js.map +1 -1
- package/dist/lib/testing/apiSseTestTypes.d.ts +3 -3
- package/dist/lib/testing/index.d.ts +2 -3
- package/dist/lib/testing/index.js +0 -1
- package/dist/lib/testing/index.js.map +1 -1
- package/dist/lib/testing/sseHttpClient.d.ts +5 -41
- package/dist/lib/testing/sseHttpClient.js +2 -6
- package/dist/lib/testing/sseHttpClient.js.map +1 -1
- package/dist/lib/testing/sseInjectShared.d.ts +1 -2
- package/dist/lib/testing/sseInjectShared.js +1 -2
- package/dist/lib/testing/sseInjectShared.js.map +1 -1
- package/dist/lib/testing/sseSessionSpyFactory.d.ts +8 -11
- package/dist/lib/testing/sseSessionSpyFactory.js +6 -8
- package/dist/lib/testing/sseSessionSpyFactory.js.map +1 -1
- package/dist/lib/testing/sseTestTypes.d.ts +0 -77
- package/package.json +7 -7
- package/dist/lib/AbstractController.d.ts +0 -35
- package/dist/lib/AbstractController.js +0 -23
- package/dist/lib/AbstractController.js.map +0 -1
- package/dist/lib/dualmode/AbstractDualModeController.d.ts +0 -95
- package/dist/lib/dualmode/AbstractDualModeController.js +0 -79
- package/dist/lib/dualmode/AbstractDualModeController.js.map +0 -1
- package/dist/lib/dualmode/dualModeTypes.d.ts +0 -24
- package/dist/lib/dualmode/dualModeTypes.js +0 -2
- package/dist/lib/dualmode/dualModeTypes.js.map +0 -1
- package/dist/lib/dualmode/index.d.ts +0 -4
- package/dist/lib/dualmode/index.js +0 -4
- package/dist/lib/dualmode/index.js.map +0 -1
- package/dist/lib/routes/fastifyRouteBuilder.d.ts +0 -29
- package/dist/lib/routes/fastifyRouteBuilder.js +0 -519
- package/dist/lib/routes/fastifyRouteBuilder.js.map +0 -1
- package/dist/lib/routes/fastifyRouteTypes.d.ts +0 -905
- package/dist/lib/routes/fastifyRouteTypes.js +0 -20
- package/dist/lib/routes/fastifyRouteTypes.js.map +0 -1
- package/dist/lib/routes/fastifyRouteUtils.d.ts +0 -190
- package/dist/lib/routes/fastifyRouteUtils.js +0 -528
- package/dist/lib/routes/fastifyRouteUtils.js.map +0 -1
- package/dist/lib/routes/index.d.ts +0 -4
- package/dist/lib/routes/index.js +0 -11
- package/dist/lib/routes/index.js.map +0 -1
- package/dist/lib/routes/sseResponseSchema.d.ts +0 -35
- package/dist/lib/routes/sseResponseSchema.js +0 -115
- package/dist/lib/routes/sseResponseSchema.js.map +0 -1
- package/dist/lib/sse/AbstractSSEController.d.ts +0 -343
- package/dist/lib/sse/AbstractSSEController.js +0 -457
- package/dist/lib/sse/AbstractSSEController.js.map +0 -1
- package/dist/lib/testing/sseInjectHelpers.d.ts +0 -64
- package/dist/lib/testing/sseInjectHelpers.js +0 -154
- package/dist/lib/testing/sseInjectHelpers.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# opinionated-machine
|
|
2
2
|
|
|
3
|
+
## 13.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- 23c93fe: Drop support for legacy contracts, following `@lokalise/api-contracts@9` and `@lokalise/fastify-api-contracts@8`, which removed them. Contracts are defined with `defineApiContract`, and `AbstractApiController` + `asApiControllerClass` + `buildApiRoute` is the only controller type. It serves sync JSON, SSE and dual-mode routes, all registered by `DIContext.registerRoutes()`.
|
|
8
|
+
|
|
9
|
+
The peer dependencies are raised to `@lokalise/api-contracts@>=9.0.0` and `@lokalise/fastify-api-contracts@>=8.0.0`. With `@lokalise/fastify-api-contracts@8`, an error thrown after `sse.start()` reaches the app's global error handler with the stream still open, so an app serving SSE routes must register an SSE-aware `setErrorHandler` (one that sends a terminal `error` event and closes the stream once headers are sent, like the `fastify-extras` error handler). Fastify's default handler cannot write to a started stream and leaves it open. When a handler loses a send and the error handler then ends the stream with an `error` event the contract does not declare, `injectApiSSE(...).stream()` and `connectApiSSE(...).events()` report the lost send instead of the undeclared event.
|
|
10
|
+
|
|
11
|
+
`opinionated-machine` removes:
|
|
12
|
+
|
|
13
|
+
- `AbstractController` and `BuildRoutesReturnType`, `AbstractSSEController`, `AbstractDualModeController`, and `asControllerClass`, `asSSEControllerClass` and `asDualModeControllerClass`. Use `AbstractApiController` with `asApiControllerClass`. `DIContext` now throws when `resolveControllers()` returns a controller that was not registered with `asApiControllerClass`.
|
|
14
|
+
- The legacy route builder and its types: `buildFastifyRoute`, `buildHandler`, `SSEContext`, `FastifySSERouteOptions`, `FastifyDualModeRouteOptions`, `RegisterSSERoutesOptions`, `RegisterDualModeRoutesOptions`, `buildSseEventSchema`, `buildSseResponseSchemas`, `determineMode` and the rest of the former `routes` and `dualmode` exports. Use `buildApiRoute`.
|
|
15
|
+
- `DIContext.registerSSERoutes()`, `registerDualModeRoutes()`, `hasSSEControllers()` and `hasDualModeControllers()`. `registerRoutes()` registers SSE and dual-mode routes too; register `@fastify/sse` on the app first. Open keepAlive streams are closed by the `preClose` hook `registerRoutes()` installs, which replaces the legacy controllers' `closeAllConnections` dispose.
|
|
16
|
+
- `DependencyInjectionOptions.isTestMode`, and `awaitServerConnection: { controller }` / `HasSessionSpy` / `SSEHttpConnectWithSpyOptions` in `SSEHttpClient.connect`. Wire a spy into the route with `createSSESessionSpy()` and pass `awaitServerConnection: { spy }`.
|
|
17
|
+
- `injectSSE`, `injectPayloadSSE`, `InjectSSEOptions`, `InjectPayloadSSEOptions` and `InjectSSEResult`. Use `injectApiSSE`.
|
|
18
|
+
- `SSEEventSender`, `SSEControllerConfig`, and the re-exports of the legacy `@lokalise/api-contracts` types (`SSEContractDefinition`, `AnySSEContractDefinition`, `DualModeContractDefinition`, `AnyDualModeContractDefinition`, `SSEEventSchemas`, `SSEMethod`, `AllContractEventNames`, `ExtractEventSchema`, `AllContractEvents`). `SseSchemaByEventName` from `@lokalise/api-contracts` replaces `SSEEventSchemas`.
|
|
19
|
+
- `BuildGatewayManifestOptions.includeStreamingControllers` and the `kind` field of `CollectedController`, which is now `{ name, controller }`. `withGatewayMetadata` accepts only `ApiContract` contracts.
|
|
20
|
+
|
|
21
|
+
`@opinionated-machine/sse-fallback` removes `fromLegacyDualModeContract` and the `InferLegacyEvents` / `InferLegacySnapshot` types. `defineFallbackBinding` and `bindFallbackContracts` no longer accept contracts built with `buildSseContract`.
|
|
22
|
+
|
|
23
|
+
## 12.0.1
|
|
24
|
+
|
|
25
|
+
### Patch Changes
|
|
26
|
+
|
|
27
|
+
- e462ae4: `DIContext.registerRoutes` now lets `app.close()` finish while SSE streams are open. Fastify closes its HTTP server in an `onClose` hook that runs before any the app registers, and the server waits for every open connection, so an open keepAlive stream held `app.close()` until the process was killed: no `onClose` hook registered after it ran, including the DI container dispose that lets message queue consumers leave their group.
|
|
28
|
+
|
|
29
|
+
For `buildApiRoute` routes, a `preClose` hook closes the keepAlive streams still open, while autoClose streams still being generated are left to finish. Once the server is closing, idle keep-alive connections are also closed as requests complete, since a response that finishes during shutdown otherwise keeps its socket open until `keepAliveTimeout`. No change is needed in the app.
|
|
30
|
+
|
|
3
31
|
## 12.0.0
|
|
4
32
|
|
|
5
33
|
### Major Changes
|