Ensuring Correct Layer Application Order in TypeScript Code

How do you correctly chain to ensure an layer is applied after everything else?

tried:
    if ( filteredRoutes.length !== 0 ) {
        const routing = Layer.mergeAll( filteredRoutes.shift()!, ...filteredRoutes )
        return yield* Layer.launch(
            Layer.provide( context )(
                Layer.provide( yield* CatchAllHandler )(
                    Layer.provide( routing )(
                        server.run
                    )
                )
            )
        )
    }


also tried:
    if ( filteredRoutes.length !== 0 ) {
        const routing = Layer.mergeAll( filteredRoutes.shift()!, ...filteredRoutes )
        return yield* Layer.launch(
            server.run.pipe(
                Layer.provide( routing )
            ).pipe(
                Layer.provide( yield* CatchAllHandler ) // must be second to last to apply correctly
            ).pipe(
                Layer.provide( context ) // must be last to apply to all properly
            )
        )
    }


Both seem to result in the middleware first:
[20:36:31.463] DEBUG (#40): [backend:platform]: Setting Service Port to 5100
[20:36:31.464] DEBUG (#40): [backend:platform]: Running Server Default on port 5100
[20:36:31.467] DEBUG (#40): [backend:platform:express_manager]: Registering middleware:
  name: catchAllMiddleware
[20:36:31.469] DEBUG (#42): [backend:platform:express_manager]: Registering route:
  path: /
[20:36:31.471] DEBUG (#43): [backend:platform:express_manager]: Registering route:
  path: /health-check
[20:36:31.475] INFO (#44): [backend:default:server]: Listening on port 5100
Was this page helpful?