opinionated-machine 12.0.1 → 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.
Files changed (107) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +846 -2027
  3. package/dist/index.d.ts +0 -3
  4. package/dist/index.js +0 -5
  5. package/dist/index.js.map +1 -1
  6. package/dist/lib/AbstractModule.d.ts +7 -9
  7. package/dist/lib/AbstractModule.js +7 -9
  8. package/dist/lib/AbstractModule.js.map +1 -1
  9. package/dist/lib/DIContext.d.ts +4 -80
  10. package/dist/lib/DIContext.js +14 -232
  11. package/dist/lib/DIContext.js.map +1 -1
  12. package/dist/lib/api-contracts/AbstractApiController.d.ts +3 -1
  13. package/dist/lib/api-contracts/AbstractApiController.js +3 -1
  14. package/dist/lib/api-contracts/AbstractApiController.js.map +1 -1
  15. package/dist/lib/api-contracts/apiRouteBuilder.js.map +1 -1
  16. package/dist/lib/api-contracts/apiSseConnectionRegistry.d.ts +3 -4
  17. package/dist/lib/api-contracts/apiSseConnectionRegistry.js +1 -2
  18. package/dist/lib/api-contracts/apiSseConnectionRegistry.js.map +1 -1
  19. package/dist/lib/api-contracts/asApiControllerClass.d.ts +1 -2
  20. package/dist/lib/api-contracts/asApiControllerClass.js +1 -2
  21. package/dist/lib/api-contracts/asApiControllerClass.js.map +1 -1
  22. package/dist/lib/gateway/manifest/buildManifest.d.ts +3 -28
  23. package/dist/lib/gateway/manifest/buildManifest.js +1 -19
  24. package/dist/lib/gateway/manifest/buildManifest.js.map +1 -1
  25. package/dist/lib/gateway/manifest/manifestSchema.js +1 -1
  26. package/dist/lib/gateway/manifest/manifestSchema.js.map +1 -1
  27. package/dist/lib/gateway/routeStreaming.d.ts +3 -4
  28. package/dist/lib/gateway/routeStreaming.js.map +1 -1
  29. package/dist/lib/gateway/withGatewayMetadata.d.ts +18 -20
  30. package/dist/lib/gateway/withGatewayMetadata.js +16 -16
  31. package/dist/lib/gateway/withGatewayMetadata.js.map +1 -1
  32. package/dist/lib/resolverFunctions.d.ts +0 -58
  33. package/dist/lib/resolverFunctions.js +0 -92
  34. package/dist/lib/resolverFunctions.js.map +1 -1
  35. package/dist/lib/sse/SSESessionSpy.d.ts +8 -11
  36. package/dist/lib/sse/SSESessionSpy.js +3 -4
  37. package/dist/lib/sse/SSESessionSpy.js.map +1 -1
  38. package/dist/lib/sse/index.d.ts +1 -3
  39. package/dist/lib/sse/index.js +0 -3
  40. package/dist/lib/sse/index.js.map +1 -1
  41. package/dist/lib/sse/rooms/SSERoomBroadcaster.d.ts +8 -7
  42. package/dist/lib/sse/rooms/SSERoomBroadcaster.js +8 -7
  43. package/dist/lib/sse/rooms/SSERoomBroadcaster.js.map +1 -1
  44. package/dist/lib/sse/rooms/SSERoomManager.d.ts +1 -1
  45. package/dist/lib/sse/rooms/SSERoomManager.js +1 -1
  46. package/dist/lib/sse/rooms/defineRoom.d.ts +2 -2
  47. package/dist/lib/sse/rooms/defineRoom.js +2 -2
  48. package/dist/lib/sse/rooms/types.d.ts +3 -3
  49. package/dist/lib/sse/sseSendDiagnostics.d.ts +13 -2
  50. package/dist/lib/sse/sseSendDiagnostics.js +17 -0
  51. package/dist/lib/sse/sseSendDiagnostics.js.map +1 -1
  52. package/dist/lib/sse/sseTypes.d.ts +2 -55
  53. package/dist/lib/testing/apiSseEventValidation.d.ts +3 -3
  54. package/dist/lib/testing/apiSseEventValidation.js.map +1 -1
  55. package/dist/lib/testing/apiSseHttpHelpers.js +7 -2
  56. package/dist/lib/testing/apiSseHttpHelpers.js.map +1 -1
  57. package/dist/lib/testing/apiSseInjectHelpers.d.ts +2 -4
  58. package/dist/lib/testing/apiSseInjectHelpers.js +11 -6
  59. package/dist/lib/testing/apiSseInjectHelpers.js.map +1 -1
  60. package/dist/lib/testing/apiSseTestTypes.d.ts +3 -3
  61. package/dist/lib/testing/index.d.ts +2 -3
  62. package/dist/lib/testing/index.js +0 -1
  63. package/dist/lib/testing/index.js.map +1 -1
  64. package/dist/lib/testing/sseHttpClient.d.ts +5 -41
  65. package/dist/lib/testing/sseHttpClient.js +2 -6
  66. package/dist/lib/testing/sseHttpClient.js.map +1 -1
  67. package/dist/lib/testing/sseInjectShared.d.ts +1 -2
  68. package/dist/lib/testing/sseInjectShared.js +1 -2
  69. package/dist/lib/testing/sseInjectShared.js.map +1 -1
  70. package/dist/lib/testing/sseSessionSpyFactory.d.ts +8 -11
  71. package/dist/lib/testing/sseSessionSpyFactory.js +6 -8
  72. package/dist/lib/testing/sseSessionSpyFactory.js.map +1 -1
  73. package/dist/lib/testing/sseTestTypes.d.ts +0 -77
  74. package/package.json +6 -6
  75. package/dist/lib/AbstractController.d.ts +0 -35
  76. package/dist/lib/AbstractController.js +0 -23
  77. package/dist/lib/AbstractController.js.map +0 -1
  78. package/dist/lib/dualmode/AbstractDualModeController.d.ts +0 -95
  79. package/dist/lib/dualmode/AbstractDualModeController.js +0 -79
  80. package/dist/lib/dualmode/AbstractDualModeController.js.map +0 -1
  81. package/dist/lib/dualmode/dualModeTypes.d.ts +0 -24
  82. package/dist/lib/dualmode/dualModeTypes.js +0 -2
  83. package/dist/lib/dualmode/dualModeTypes.js.map +0 -1
  84. package/dist/lib/dualmode/index.d.ts +0 -4
  85. package/dist/lib/dualmode/index.js +0 -4
  86. package/dist/lib/dualmode/index.js.map +0 -1
  87. package/dist/lib/routes/fastifyRouteBuilder.d.ts +0 -29
  88. package/dist/lib/routes/fastifyRouteBuilder.js +0 -519
  89. package/dist/lib/routes/fastifyRouteBuilder.js.map +0 -1
  90. package/dist/lib/routes/fastifyRouteTypes.d.ts +0 -905
  91. package/dist/lib/routes/fastifyRouteTypes.js +0 -20
  92. package/dist/lib/routes/fastifyRouteTypes.js.map +0 -1
  93. package/dist/lib/routes/fastifyRouteUtils.d.ts +0 -190
  94. package/dist/lib/routes/fastifyRouteUtils.js +0 -528
  95. package/dist/lib/routes/fastifyRouteUtils.js.map +0 -1
  96. package/dist/lib/routes/index.d.ts +0 -4
  97. package/dist/lib/routes/index.js +0 -11
  98. package/dist/lib/routes/index.js.map +0 -1
  99. package/dist/lib/routes/sseResponseSchema.d.ts +0 -35
  100. package/dist/lib/routes/sseResponseSchema.js +0 -115
  101. package/dist/lib/routes/sseResponseSchema.js.map +0 -1
  102. package/dist/lib/sse/AbstractSSEController.d.ts +0 -343
  103. package/dist/lib/sse/AbstractSSEController.js +0 -457
  104. package/dist/lib/sse/AbstractSSEController.js.map +0 -1
  105. package/dist/lib/testing/sseInjectHelpers.d.ts +0 -64
  106. package/dist/lib/testing/sseInjectHelpers.js +0 -154
  107. package/dist/lib/testing/sseInjectHelpers.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
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
+
3
23
  ## 12.0.1
4
24
 
5
25
  ### Patch Changes