@scandinavianairlines/remix-azure-functions
Version:
A package that adapts requests between Azure Functions and Remix.run
119 lines (84 loc) • 4.51 kB
Markdown
[](https://github.com/feross/standard) [](https://github.com/prettier/prettier) [](https://www.npmjs.com/package/@scandinavianairlines/remix-azure-functions)
- [Remix Adapter for Azure Functions](
- [Usage](
- [Azure Static Web Apps](
- [Azure Functions](
- [Custom usage](
- [Examples](
- [Issues](
- [Contributing](
- [License](
An adapter that allows Azure Functions to work as a custom server for [Remix.run][remix]. This adapter package we have created is designed to be used with [Azure Static Web Apps][azure-staticwebapp] and [Azure Functions][azure-functions] using the new [Node.js][nodejs] [**v4 programming model**][model].
The package is available as an npm package and can be installed as follows:
```bash
yarn add @scandinavianairlines/remix-azure-functions
```
Once installed, you can use the adapter in your Azure Functions as follows:
```javascript
import { app } from '@azure/functions';
import { createRequestHandler } from '@scandinavianairlines/remix-azure-functions';
import * as build from './build/index.js';
app.http('ssr', {
methods: ['GET', 'POST', 'DELETE', 'HEAD', 'PATCH', 'PUT', 'OPTIONS', 'TRACE', 'CONNECT'],
authLevel: 'function',
handler: createRequestHandler({ build }),
});
```
It is important to note that the _Azure Functions_ runtime will index the handler based on the `package.json` `main` property, so make sure that you have set it to the function handler file.
When using the adapter with Azure Static Web Apps, you need to make sure that you have set a rewrite route to proxy all request to the Azure Functions. This should be defined in the `routes` property inside the `staticwebapp.config.json` file.
```json
{
"platform": {
"apiRuntime": "node:18"
},
"routes": [
{
"route": "/favicon.ico"
},
{
"route": "/build/*"
},
{
"route": "/*",
"rewrite": "/api/ssr"
}
],
"navigationFallback": {
"rewrite": "/api/ssr"
},
"trailingSlash": "never"
}
```
When using the adapter with Azure Functions, you need to make sure that you have set the `route` property in your registered HTTP trigger to `/{*path}`. This is used to know which route to render when using the adapter.
The adapter supports an optional `urlParser` function that can be used to parse a `URL` instance from the incoming request. This can be useful if you are using a custom routing solution in your Azure Functions or if you would like to parse the URL from a specific header.
```javascript
import { createRequestHandler } from '@scandinavianairlines/remix-azure-functions';
import * as build from './build/index.js';
const handler = createRequestHandler({
build,
urlParser: request => new URL(request.headers.get('x-forwarded-url')),
});
```
In the [examples](./examples) folder you can find a simple example of how to use the adapter with a simple Azure Functions or with Azure Static Web Apps.
If you encounter any non-security-related bug or unexpected behavior, please [file an issue][bug]
using the bug report template.
[]: https://github.com/scandinavianairlines/remix-azure-functions/issues/new?labels=bug
We welcome contributions to this project. Please read our [contributing guidelines](.github/CONTRIBUTING.md).
[](./LICENSE).
---
Created by the [Airline Digitalization Team](mailto:airlinedigitalization@flysas.com).

[]: https://learn.microsoft.com/en-us/azure/azure-functions/
[]: https://docs.microsoft.com/en-us/azure/static-web-apps/overview
[]: https://nodejs.org
[]: https://techcommunity.microsoft.com/t5/apps-on-azure-blog/azure-functions-node-js-v4-programming-model-is-generally/ba-p/3929217
[]: https://remix.run