├── .github
└── workflows
│ └── azure-static-web-apps.yml
├── .gitignore
├── .npmrc-production
├── .vscode
├── extensions.json
├── launch.json
├── settings.json
└── tasks.json
├── README.md
├── app
├── entry.client.tsx
├── entry.server.tsx
├── root.tsx
├── routes
│ ├── 404.tsx
│ └── index.tsx
├── styles
│ ├── global.css
│ └── index.css
└── tsconfig.json
├── function
├── function.json
└── server
│ ├── handler.ts
│ └── server.ts
├── host.json
├── local.settings.json
├── package-lock.json
├── package.json
├── public
├── azure-static-web-apps.png
├── azure-static-web-apps.png:Zone.Identifier
├── azure.svg
├── azure.svg:Zone.Identifier
├── favicon.ico
├── favicon.png
├── fist-bump.png
├── fist-bump.png:Zone.Identifier
├── placeholder.html
├── remix.png
├── remix.png:Zone.Identifier
└── staticwebapp.config.json
├── remix.config.js
└── server.tsconfig.json
/.github/workflows/azure-static-web-apps.yml:
--------------------------------------------------------------------------------
1 | name: Azure Static Web Apps CI/CD
2 |
3 | on:
4 | push:
5 | branches:
6 | - master
7 | pull_request:
8 | types: [opened, synchronize, reopened, closed]
9 | branches:
10 | - master
11 |
12 | jobs:
13 | build_and_deploy_job:
14 | if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed')
15 | runs-on: ubuntu-latest
16 | name: Build and Deploy Job
17 | steps:
18 | - uses: actions/checkout@v2
19 | with:
20 | submodules: true
21 | - name: Move npmrc
22 | run: mv ./.npmrc-production ./.npmrc
23 | - name: Move placeholder.html
24 | run: mv ./public/placeholder.html ./public/index.html
25 | - name: Build And Deploy
26 | id: builddeploy
27 | uses: Azure/static-web-apps-deploy@v1
28 | env:
29 | REMIX_LICENSE_KEY: ${{ secrets.REMIX_LICENSE_KEY }}
30 | with:
31 | azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_TOKEN }}
32 | repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments)
33 | action: "upload"
34 | ###### Repository/Build Configurations - These values can be configured to match your app requirements. ######
35 | # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig
36 | app_location: "/" # App source code path
37 | api_location: "/" # Api source code path - optional
38 | output_location: "/public" # Built app content directory - optional
39 | app_build_command: npx remix build
40 | api_build_command: npx tsc -p ./server.tsconfig.json
41 | ###### End of Repository/Build Configurations ######
42 |
43 | close_pull_request_job:
44 | if: github.event_name == 'pull_request' && github.event.action == 'closed'
45 | runs-on: ubuntu-latest
46 | name: Close Pull Request Job
47 | steps:
48 | - name: Close Pull Request
49 | id: closepullrequest
50 | uses: Azure/static-web-apps-deploy@v1
51 | with:
52 | azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_TOKEN }}
53 | action: "close"
54 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
3 | /.cache
4 | /build
5 | /public/build
6 | function/**/*.js
7 | function/server/build
--------------------------------------------------------------------------------
/.npmrc-production:
--------------------------------------------------------------------------------
1 | //npm.remix.run/:_authToken=${REMIX_LICENSE_KEY}
2 | @remix-run:registry=https://npm.remix.run
--------------------------------------------------------------------------------
/.vscode/extensions.json:
--------------------------------------------------------------------------------
1 | {
2 | "recommendations": [
3 | "ms-azuretools.vscode-azurefunctions"
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.2.0",
3 | "configurations": [
4 | {
5 | "name": "Attach to Node Functions",
6 | "type": "node",
7 | "request": "attach",
8 | "port": 9229,
9 | "preLaunchTask": "func: host start"
10 | }
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "azureFunctions.deploySubpath": ".",
3 | "azureFunctions.postDeployTask": "npm install",
4 | "azureFunctions.projectLanguage": "TypeScript",
5 | "azureFunctions.projectRuntime": "~3",
6 | "debug.internalConsoleOptions": "neverOpen",
7 | "azureFunctions.preDeployTask": "npm prune"
8 | }
9 |
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0.0",
3 | "tasks": [
4 | {
5 | "type": "func",
6 | "command": "host start",
7 | "problemMatcher": "$func-node-watch",
8 | "isBackground": true,
9 | "dependsOn": "npm build"
10 | },
11 | {
12 | "type": "shell",
13 | "label": "npm build",
14 | "command": "npm run build",
15 | "dependsOn": "npm install",
16 | "problemMatcher": "$tsc"
17 | },
18 | {
19 | "type": "shell",
20 | "label": "npm install",
21 | "command": "npm install"
22 | },
23 | {
24 | "type": "shell",
25 | "label": "npm prune",
26 | "command": "npm prune --production",
27 | "dependsOn": "npm build",
28 | "problemMatcher": []
29 | }
30 | ]
31 | }
32 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Welcome to Remix!
2 |
3 | #### Hat tip to [@ascorbic](https://github.com/ascorbic/remix-on-netlify/) for his Netlify Template and to [@anthonychu](https://github.com/anthonychu) for his support getting this to work on Azure Static Web Apps.
4 |
5 | ## Documents
6 |
7 | - [Remix Docs](https://docs.remix.run)
8 | - [Customer Dashboard](https://remix.run/dashboard)
9 |
10 | ## Publishing
11 |
12 | You will need to set the following secrets in your repo:
13 |
14 | - REMIX_LICENSE_KEY: Get this from your [Remix Dashboard](https://remix.run/dashboard)
15 | - AZURE_STATIC_WEB_APPS_TOKEN: Get this from your [Azure Portal](https://portal.azure.com). On the overview screen for your static web app, there is a button at the top that says **Manage Token**. That should be your secret value.
16 |
17 | ## Future
18 |
19 | In the future, I would like to add a **Deploy to Azure** button to this page, but that requires an Azure Resource Management (ARM) template and right now Static Web Apps with functions aren't supported for ARM templates.
20 |
--------------------------------------------------------------------------------
/app/entry.client.tsx:
--------------------------------------------------------------------------------
1 | import ReactDOM from "react-dom";
2 | import { RemixBrowser } from "remix";
3 |
4 | ReactDOM.hydrate(, document);
5 |
--------------------------------------------------------------------------------
/app/entry.server.tsx:
--------------------------------------------------------------------------------
1 | import ReactDOMServer from "react-dom/server";
2 | import type { EntryContext } from "remix";
3 | import { RemixServer } from "remix";
4 |
5 | export default function handleRequest(
6 | request: Request,
7 | responseStatusCode: number,
8 | responseHeaders: Headers,
9 | remixContext: EntryContext
10 | ) {
11 | let markup = ReactDOMServer.renderToString(
12 |
13 | );
14 |
15 | return new Response("" + markup, {
16 | status: responseStatusCode,
17 | headers: {
18 | ...Object.fromEntries(responseHeaders),
19 | "Content-Type": "text/html"
20 | }
21 | });
22 | }
23 |
--------------------------------------------------------------------------------
/app/root.tsx:
--------------------------------------------------------------------------------
1 | import type { LinksFunction, LoaderFunction } from "remix";
2 | import { Meta, Links, Scripts, useRouteData, LiveReload } from "remix";
3 | import { Outlet } from "react-router-dom";
4 |
5 | import stylesUrl from "./styles/global.css";
6 |
7 | export let links: LinksFunction = () => {
8 | return [{ rel: "stylesheet", href: stylesUrl }];
9 | };
10 |
11 | export let loader: LoaderFunction = async () => {
12 | return { date: new Date() };
13 | };
14 |
15 | function Document({ children }: { children: React.ReactNode }) {
16 | return (
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | {children}
26 |
27 |
28 | {process.env.NODE_ENV === "development" && }
29 |
30 |
31 | );
32 | }
33 |
34 | export default function App() {
35 | let data = useRouteData();
36 | return (
37 |
38 |
39 |
44 |
45 | );
46 | }
47 |
48 | export function ErrorBoundary({ error }: { error: Error }) {
49 | return (
50 |
51 | App Error
52 | {error.message}
53 |
54 | Replace this UI with what you want users to see when your app throws
55 | uncaught errors.
56 |
57 |
58 | );
59 | }
60 |
--------------------------------------------------------------------------------
/app/routes/404.tsx:
--------------------------------------------------------------------------------
1 | import type { MetaFunction } from "remix";
2 |
3 | export let meta: MetaFunction = () => {
4 | return { title: "Ain't nothing here" };
5 | };
6 |
7 | export default function FourOhFour() {
8 | return (
9 |
10 |
404
11 |
12 | );
13 | }
14 |
--------------------------------------------------------------------------------
/app/routes/index.tsx:
--------------------------------------------------------------------------------
1 | import type { MetaFunction, LinksFunction, LoaderFunction } from "remix";
2 | import { useRouteData } from "remix";
3 |
4 | import stylesUrl from "../styles/index.css";
5 |
6 | export let meta: MetaFunction = () => {
7 | return {
8 | title: "Remix Starter",
9 | description: "Welcome to remix!",
10 | };
11 | };
12 |
13 | export let links: LinksFunction = () => {
14 | return [{ rel: "stylesheet", href: stylesUrl }];
15 | };
16 |
17 | export let loader: LoaderFunction = async () => {
18 | return { message: "Azure Static Web Apps + Remix = Awesome 😎" };
19 | };
20 |
21 | export default function Index() {
22 | let data = useRouteData();
23 |
24 | return (
25 |
26 |
Welcome to Remix on Azure Static Web Apps!
27 |
40 |
41 | Check out the Remix docs to get
42 | started.
43 |
44 |
45 | If you want to deploy your Remix site on Azure Static Web Apps{" "}
46 |
47 | check out this repo
48 |
49 | .
50 |
51 |
52 |
Message from the loader: {data.message}
53 |
54 | );
55 | }
56 |
--------------------------------------------------------------------------------
/app/styles/global.css:
--------------------------------------------------------------------------------
1 | :focus:not(:focus-visible) {
2 | outline: none;
3 | }
4 |
5 | body {
6 | font-family: sans-serif;
7 | }
8 |
9 | footer {
10 | text-align: center;
11 | color: #ccc;
12 | padding-top: 80px;
13 | }
14 |
--------------------------------------------------------------------------------
/app/styles/index.css:
--------------------------------------------------------------------------------
1 | /*
2 | * when the user visits this page, this style will apply, when they leave, it
3 | * will get unloaded, so don't worry so much about conflicting styles between
4 | * pages!
5 | */
6 |
--------------------------------------------------------------------------------
/app/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "lib": ["DOM", "DOM.Iterable", "ES2019"],
4 | "esModuleInterop": true,
5 | "jsx": "react-jsx",
6 | "moduleResolution": "node",
7 | "target": "es2019",
8 | "strict": true,
9 | "skipLibCheck": true
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/function/function.json:
--------------------------------------------------------------------------------
1 | {
2 | "bindings": [
3 | {
4 | "authLevel": "Anonymous",
5 | "type": "httpTrigger",
6 | "direction": "in",
7 | "name": "req",
8 | "methods": ["get", "post", "put", "delete"]
9 | },
10 | {
11 | "type": "http",
12 | "direction": "out",
13 | "name": "res"
14 | }
15 | ],
16 |
17 | "scriptFile": "./server/server.js"
18 | }
19 |
--------------------------------------------------------------------------------
/function/server/handler.ts:
--------------------------------------------------------------------------------
1 | import {
2 | Request,
3 | createRequestHandler as createNodeRequestHandler,
4 | installGlobals,
5 | } from "@remix-run/node";
6 |
7 | import { Context } from "@azure/functions";
8 |
9 | installGlobals();
10 |
11 | function createRemixRequest(req) {
12 | let body;
13 | if (req.body && req.httpMethod !== "get" && req.httpMethod !== "head") {
14 | body = req.isBase64Encoded
15 | ? Buffer.from(req.body, "base64").toString()
16 | : req.body;
17 | }
18 |
19 | if (req.cookies) {
20 | req.headers.cookie = req.cookies.join(";");
21 | }
22 |
23 | const originalUrl = req.headers["x-ms-original-url"];
24 | return new Request(originalUrl, {
25 | method: req.httpMethod,
26 | headers: req.headers,
27 | body,
28 | });
29 | }
30 |
31 | export function createRequestHandler({ build, mode = process.env.NODE_ENV }) {
32 | const handleRequest = createNodeRequestHandler(build, mode);
33 |
34 | return async (context: Context) => {
35 | const response = await handleRequest(createRemixRequest(context.req));
36 | const text = await response.text();
37 |
38 | context.res = {
39 | status: response.status,
40 | headers: Object.fromEntries(response.headers),
41 | body: text,
42 | };
43 | };
44 | }
45 |
--------------------------------------------------------------------------------
/function/server/server.ts:
--------------------------------------------------------------------------------
1 | import { createRequestHandler } from "./handler";
2 |
3 | const handleRequest = createRequestHandler({ build: require("./build") });
4 |
5 | module.exports = handleRequest;
6 |
--------------------------------------------------------------------------------
/host.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0",
3 | "logging": {
4 | "applicationInsights": {
5 | "samplingSettings": {
6 | "isEnabled": true,
7 | "excludedTypes": "Request"
8 | }
9 | }
10 | },
11 | "extensions": {
12 | "http": {
13 | "routePrefix": "api"
14 | }
15 | },
16 | "extensionBundle": {
17 | "id": "Microsoft.Azure.Functions.ExtensionBundle",
18 | "version": "[2.*, 3.0.0)"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/local.settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "IsEncrypted": false,
3 | "Values": {
4 | "FUNCTIONS_WORKER_RUNTIME": "node",
5 | "AzureWebJobsStorage": "UseDevelopmentStorage=true"
6 | }
7 | }
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "remix-azure-function-template",
3 | "requires": true,
4 | "lockfileVersion": 1,
5 | "dependencies": {
6 | "@azure/functions": {
7 | "version": "1.2.3",
8 | "resolved": "https://registry.npmjs.org/@azure/functions/-/functions-1.2.3.tgz",
9 | "integrity": "sha512-dZITbYPNg6ay6ngcCOjRUh1wDhlFITS0zIkqplyH5KfKEAVPooaoaye5mUFnR+WP9WdGRjlNXyl/y2tgWKHcRg==",
10 | "dev": true
11 | },
12 | "@babel/code-frame": {
13 | "version": "7.14.5",
14 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz",
15 | "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
16 | "dev": true,
17 | "requires": {
18 | "@babel/highlight": "^7.14.5"
19 | }
20 | },
21 | "@babel/helper-validator-identifier": {
22 | "version": "7.14.5",
23 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz",
24 | "integrity": "sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==",
25 | "dev": true
26 | },
27 | "@babel/highlight": {
28 | "version": "7.14.5",
29 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz",
30 | "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
31 | "dev": true,
32 | "requires": {
33 | "@babel/helper-validator-identifier": "^7.14.5",
34 | "chalk": "^2.0.0",
35 | "js-tokens": "^4.0.0"
36 | }
37 | },
38 | "@babel/runtime": {
39 | "version": "7.14.6",
40 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.6.tgz",
41 | "integrity": "sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==",
42 | "requires": {
43 | "regenerator-runtime": "^0.13.4"
44 | }
45 | },
46 | "@npmcli/move-file": {
47 | "version": "1.1.2",
48 | "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz",
49 | "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==",
50 | "dev": true,
51 | "requires": {
52 | "mkdirp": "^1.0.4",
53 | "rimraf": "^3.0.2"
54 | }
55 | },
56 | "@remix-run/dev": {
57 | "version": "0.17.5",
58 | "resolved": "https://npm.remix.run/download/@remix-run/dev/0.17.5/1aae747e19458de4c7c89fe528ee3211e4c687fab851b31aa98f66dd757a488e",
59 | "integrity": "sha512-CrBFvYTgdbU8ETdSkKdLkmVyO6gl6IJ2uMbr/GDUKbJ2FXdtizNPMdZA79raSl/xj/csPg+lH2BaAmNuIUhB4g==",
60 | "dev": true,
61 | "requires": {
62 | "cacache": "^15.0.5",
63 | "chokidar": "^3.5.1",
64 | "esbuild": "0.11.16",
65 | "lodash.debounce": "^4.0.8",
66 | "meow": "^7.1.1",
67 | "pretty-ms": "^7.0.1",
68 | "read-package-json-fast": "^2.0.2",
69 | "signal-exit": "^3.0.3",
70 | "ws": "^7.4.5"
71 | }
72 | },
73 | "@remix-run/express": {
74 | "version": "0.17.5",
75 | "resolved": "https://npm.remix.run/download/@remix-run/express/0.17.5/e19b9cb0c2b977e872175d622a135708ab447781b207b563412a917e6f7d8d3a",
76 | "integrity": "sha512-wEHiCoPhxaKJbVdAYxpmLXY8sY7el/LVOPB39LL9U3oP2JJeCbXzanyF/KZM3gfR9yUhR92UOX71Eh+gy5gZfw==",
77 | "requires": {
78 | "@remix-run/node": "0.17.5"
79 | }
80 | },
81 | "@remix-run/node": {
82 | "version": "0.17.5",
83 | "resolved": "https://npm.remix.run/download/@remix-run/node/0.17.5/aa46f22b848493a2d62bac3ae6f4b1c372512a3100a381205d1b5ee15ebcc708",
84 | "integrity": "sha512-9psZEQjtjHdU0t2wz+m5fd+BFUB8SveQe5DPmnXhRg3w3+q3bdJL+zFNmD/4d5pCtCD1AXSJthsJuPKR2p+G8w==",
85 | "requires": {
86 | "@types/cookie": "^0.4.0",
87 | "@types/node-fetch": "^2.5.7",
88 | "cookie": "^0.4.1",
89 | "cookie-signature": "^1.1.0",
90 | "history": "^5.0.0",
91 | "jsesc": "^3.0.1",
92 | "node-fetch": "^2.6.1",
93 | "react-router-dom": "^6.0.0-beta.0"
94 | }
95 | },
96 | "@remix-run/react": {
97 | "version": "0.17.5",
98 | "resolved": "https://npm.remix.run/download/@remix-run/react/0.17.5/02ccb3944097e1b35052f2d0acc0010a9e8c8758b20fa87fee9a8898018ccc51",
99 | "integrity": "sha512-o4aAHSt+FDVkyUl9I2UOnh4vboUgDaRrvwQ+py5BcrylYIAz6CVkQPH2Nhmqi6GEcO+k001V6XiwbZvnw9tTHA==",
100 | "requires": {
101 | "history": "^5.0.0",
102 | "react-router-dom": "^6.0.0-beta.0"
103 | }
104 | },
105 | "@remix-run/serve": {
106 | "version": "0.17.5",
107 | "resolved": "https://npm.remix.run/download/@remix-run/serve/0.17.5/f393a37d4f25fe4ab906696f55580b15adc04c0c08e727e07631db5da1ef8c24",
108 | "integrity": "sha512-3M2ez3vDWmY8eG9dGAAtRbaAbK244Mk5bMwAEzXvGJRSIG1atOryrezNyP5FRvqKYKg1c09VOPYCt0id1uGODQ==",
109 | "requires": {
110 | "@remix-run/express": "0.17.5",
111 | "compression": "^1.7.4",
112 | "express": "^4.17.1",
113 | "morgan": "^1.10.0"
114 | }
115 | },
116 | "@types/cookie": {
117 | "version": "0.4.1",
118 | "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
119 | "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
120 | },
121 | "@types/minimist": {
122 | "version": "1.2.2",
123 | "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
124 | "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
125 | "dev": true
126 | },
127 | "@types/node": {
128 | "version": "16.3.1",
129 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.3.1.tgz",
130 | "integrity": "sha512-N87VuQi7HEeRJkhzovao/JviiqKjDKMVKxKMfUvSKw+MbkbW8R0nA3fi/MQhhlxV2fQ+2ReM+/Nt4efdrJx3zA=="
131 | },
132 | "@types/node-fetch": {
133 | "version": "2.5.11",
134 | "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.11.tgz",
135 | "integrity": "sha512-2upCKaqVZETDRb8A2VTaRymqFBEgH8u6yr96b/u3+1uQEPDRo3mJLEiPk7vdXBHRtjwkjqzFYMJXrt0Z9QsYjQ==",
136 | "requires": {
137 | "@types/node": "*",
138 | "form-data": "^3.0.0"
139 | }
140 | },
141 | "@types/normalize-package-data": {
142 | "version": "2.4.1",
143 | "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
144 | "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
145 | "dev": true
146 | },
147 | "@types/prop-types": {
148 | "version": "15.7.4",
149 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz",
150 | "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==",
151 | "dev": true
152 | },
153 | "@types/react": {
154 | "version": "17.0.14",
155 | "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.14.tgz",
156 | "integrity": "sha512-0WwKHUbWuQWOce61UexYuWTGuGY/8JvtUe/dtQ6lR4sZ3UiylHotJeWpf3ArP9+DSGUoLY3wbU59VyMrJps5VQ==",
157 | "dev": true,
158 | "requires": {
159 | "@types/prop-types": "*",
160 | "@types/scheduler": "*",
161 | "csstype": "^3.0.2"
162 | }
163 | },
164 | "@types/react-dom": {
165 | "version": "17.0.9",
166 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.9.tgz",
167 | "integrity": "sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg==",
168 | "dev": true,
169 | "requires": {
170 | "@types/react": "*"
171 | }
172 | },
173 | "@types/scheduler": {
174 | "version": "0.16.2",
175 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
176 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
177 | "dev": true
178 | },
179 | "accepts": {
180 | "version": "1.3.7",
181 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
182 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
183 | "requires": {
184 | "mime-types": "~2.1.24",
185 | "negotiator": "0.6.2"
186 | }
187 | },
188 | "aggregate-error": {
189 | "version": "3.1.0",
190 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
191 | "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
192 | "dev": true,
193 | "requires": {
194 | "clean-stack": "^2.0.0",
195 | "indent-string": "^4.0.0"
196 | }
197 | },
198 | "ansi-styles": {
199 | "version": "3.2.1",
200 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
201 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
202 | "dev": true,
203 | "requires": {
204 | "color-convert": "^1.9.0"
205 | }
206 | },
207 | "anymatch": {
208 | "version": "3.1.2",
209 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
210 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
211 | "dev": true,
212 | "requires": {
213 | "normalize-path": "^3.0.0",
214 | "picomatch": "^2.0.4"
215 | }
216 | },
217 | "array-flatten": {
218 | "version": "1.1.1",
219 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
220 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
221 | },
222 | "arrify": {
223 | "version": "1.0.1",
224 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
225 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
226 | "dev": true
227 | },
228 | "asynckit": {
229 | "version": "0.4.0",
230 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
231 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
232 | },
233 | "balanced-match": {
234 | "version": "1.0.2",
235 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
236 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
237 | "dev": true
238 | },
239 | "basic-auth": {
240 | "version": "2.0.1",
241 | "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
242 | "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
243 | "requires": {
244 | "safe-buffer": "5.1.2"
245 | }
246 | },
247 | "binary-extensions": {
248 | "version": "2.2.0",
249 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
250 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
251 | "dev": true
252 | },
253 | "body-parser": {
254 | "version": "1.19.0",
255 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
256 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
257 | "requires": {
258 | "bytes": "3.1.0",
259 | "content-type": "~1.0.4",
260 | "debug": "2.6.9",
261 | "depd": "~1.1.2",
262 | "http-errors": "1.7.2",
263 | "iconv-lite": "0.4.24",
264 | "on-finished": "~2.3.0",
265 | "qs": "6.7.0",
266 | "raw-body": "2.4.0",
267 | "type-is": "~1.6.17"
268 | },
269 | "dependencies": {
270 | "bytes": {
271 | "version": "3.1.0",
272 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
273 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
274 | }
275 | }
276 | },
277 | "brace-expansion": {
278 | "version": "1.1.11",
279 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
280 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
281 | "dev": true,
282 | "requires": {
283 | "balanced-match": "^1.0.0",
284 | "concat-map": "0.0.1"
285 | }
286 | },
287 | "braces": {
288 | "version": "3.0.2",
289 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
290 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
291 | "dev": true,
292 | "requires": {
293 | "fill-range": "^7.0.1"
294 | }
295 | },
296 | "bytes": {
297 | "version": "3.0.0",
298 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
299 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
300 | },
301 | "cacache": {
302 | "version": "15.2.0",
303 | "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.2.0.tgz",
304 | "integrity": "sha512-uKoJSHmnrqXgthDFx/IU6ED/5xd+NNGe+Bb+kLZy7Ku4P+BaiWEUflAKPZ7eAzsYGcsAGASJZsybXp+quEcHTw==",
305 | "dev": true,
306 | "requires": {
307 | "@npmcli/move-file": "^1.0.1",
308 | "chownr": "^2.0.0",
309 | "fs-minipass": "^2.0.0",
310 | "glob": "^7.1.4",
311 | "infer-owner": "^1.0.4",
312 | "lru-cache": "^6.0.0",
313 | "minipass": "^3.1.1",
314 | "minipass-collect": "^1.0.2",
315 | "minipass-flush": "^1.0.5",
316 | "minipass-pipeline": "^1.2.2",
317 | "mkdirp": "^1.0.3",
318 | "p-map": "^4.0.0",
319 | "promise-inflight": "^1.0.1",
320 | "rimraf": "^3.0.2",
321 | "ssri": "^8.0.1",
322 | "tar": "^6.0.2",
323 | "unique-filename": "^1.1.1"
324 | }
325 | },
326 | "camelcase": {
327 | "version": "5.3.1",
328 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
329 | "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
330 | "dev": true
331 | },
332 | "camelcase-keys": {
333 | "version": "6.2.2",
334 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
335 | "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
336 | "dev": true,
337 | "requires": {
338 | "camelcase": "^5.3.1",
339 | "map-obj": "^4.0.0",
340 | "quick-lru": "^4.0.1"
341 | }
342 | },
343 | "chalk": {
344 | "version": "2.4.2",
345 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
346 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
347 | "dev": true,
348 | "requires": {
349 | "ansi-styles": "^3.2.1",
350 | "escape-string-regexp": "^1.0.5",
351 | "supports-color": "^5.3.0"
352 | }
353 | },
354 | "chokidar": {
355 | "version": "3.5.2",
356 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
357 | "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
358 | "dev": true,
359 | "requires": {
360 | "anymatch": "~3.1.2",
361 | "braces": "~3.0.2",
362 | "fsevents": "~2.3.2",
363 | "glob-parent": "~5.1.2",
364 | "is-binary-path": "~2.1.0",
365 | "is-glob": "~4.0.1",
366 | "normalize-path": "~3.0.0",
367 | "readdirp": "~3.6.0"
368 | }
369 | },
370 | "chownr": {
371 | "version": "2.0.0",
372 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
373 | "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
374 | "dev": true
375 | },
376 | "clean-stack": {
377 | "version": "2.2.0",
378 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
379 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
380 | "dev": true
381 | },
382 | "color-convert": {
383 | "version": "1.9.3",
384 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
385 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
386 | "dev": true,
387 | "requires": {
388 | "color-name": "1.1.3"
389 | }
390 | },
391 | "color-name": {
392 | "version": "1.1.3",
393 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
394 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
395 | "dev": true
396 | },
397 | "combined-stream": {
398 | "version": "1.0.8",
399 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
400 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
401 | "requires": {
402 | "delayed-stream": "~1.0.0"
403 | }
404 | },
405 | "compressible": {
406 | "version": "2.0.18",
407 | "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
408 | "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
409 | "requires": {
410 | "mime-db": ">= 1.43.0 < 2"
411 | }
412 | },
413 | "compression": {
414 | "version": "1.7.4",
415 | "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
416 | "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
417 | "requires": {
418 | "accepts": "~1.3.5",
419 | "bytes": "3.0.0",
420 | "compressible": "~2.0.16",
421 | "debug": "2.6.9",
422 | "on-headers": "~1.0.2",
423 | "safe-buffer": "5.1.2",
424 | "vary": "~1.1.2"
425 | }
426 | },
427 | "concat-map": {
428 | "version": "0.0.1",
429 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
430 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
431 | "dev": true
432 | },
433 | "content-disposition": {
434 | "version": "0.5.3",
435 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
436 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
437 | "requires": {
438 | "safe-buffer": "5.1.2"
439 | }
440 | },
441 | "content-type": {
442 | "version": "1.0.4",
443 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
444 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
445 | },
446 | "cookie": {
447 | "version": "0.4.1",
448 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
449 | "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
450 | },
451 | "cookie-signature": {
452 | "version": "1.1.0",
453 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.1.0.tgz",
454 | "integrity": "sha512-Alvs19Vgq07eunykd3Xy2jF0/qSNv2u7KDbAek9H5liV1UMijbqFs5cycZvv5dVsvseT/U4H8/7/w8Koh35C4A=="
455 | },
456 | "csstype": {
457 | "version": "3.0.8",
458 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz",
459 | "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==",
460 | "dev": true
461 | },
462 | "debug": {
463 | "version": "2.6.9",
464 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
465 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
466 | "requires": {
467 | "ms": "2.0.0"
468 | }
469 | },
470 | "decamelize": {
471 | "version": "1.2.0",
472 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
473 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
474 | "dev": true
475 | },
476 | "decamelize-keys": {
477 | "version": "1.1.0",
478 | "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
479 | "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
480 | "dev": true,
481 | "requires": {
482 | "decamelize": "^1.1.0",
483 | "map-obj": "^1.0.0"
484 | },
485 | "dependencies": {
486 | "map-obj": {
487 | "version": "1.0.1",
488 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
489 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
490 | "dev": true
491 | }
492 | }
493 | },
494 | "delayed-stream": {
495 | "version": "1.0.0",
496 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
497 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
498 | },
499 | "depd": {
500 | "version": "1.1.2",
501 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
502 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
503 | },
504 | "destroy": {
505 | "version": "1.0.4",
506 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
507 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
508 | },
509 | "ee-first": {
510 | "version": "1.1.1",
511 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
512 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
513 | },
514 | "encodeurl": {
515 | "version": "1.0.2",
516 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
517 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
518 | },
519 | "error-ex": {
520 | "version": "1.3.2",
521 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
522 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
523 | "dev": true,
524 | "requires": {
525 | "is-arrayish": "^0.2.1"
526 | }
527 | },
528 | "esbuild": {
529 | "version": "0.11.16",
530 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.11.16.tgz",
531 | "integrity": "sha512-34ZWjo4ouvM5cDe7uRoM9GFuMyEmpH9fnVYmomvS1cq9ED9d/0ZG1r+p4P2VbX7ihjv36zA2SWTmP8Zmt/EANA==",
532 | "dev": true
533 | },
534 | "escape-html": {
535 | "version": "1.0.3",
536 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
537 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
538 | },
539 | "escape-string-regexp": {
540 | "version": "1.0.5",
541 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
542 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
543 | "dev": true
544 | },
545 | "etag": {
546 | "version": "1.8.1",
547 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
548 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
549 | },
550 | "express": {
551 | "version": "4.17.1",
552 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
553 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
554 | "requires": {
555 | "accepts": "~1.3.7",
556 | "array-flatten": "1.1.1",
557 | "body-parser": "1.19.0",
558 | "content-disposition": "0.5.3",
559 | "content-type": "~1.0.4",
560 | "cookie": "0.4.0",
561 | "cookie-signature": "1.0.6",
562 | "debug": "2.6.9",
563 | "depd": "~1.1.2",
564 | "encodeurl": "~1.0.2",
565 | "escape-html": "~1.0.3",
566 | "etag": "~1.8.1",
567 | "finalhandler": "~1.1.2",
568 | "fresh": "0.5.2",
569 | "merge-descriptors": "1.0.1",
570 | "methods": "~1.1.2",
571 | "on-finished": "~2.3.0",
572 | "parseurl": "~1.3.3",
573 | "path-to-regexp": "0.1.7",
574 | "proxy-addr": "~2.0.5",
575 | "qs": "6.7.0",
576 | "range-parser": "~1.2.1",
577 | "safe-buffer": "5.1.2",
578 | "send": "0.17.1",
579 | "serve-static": "1.14.1",
580 | "setprototypeof": "1.1.1",
581 | "statuses": "~1.5.0",
582 | "type-is": "~1.6.18",
583 | "utils-merge": "1.0.1",
584 | "vary": "~1.1.2"
585 | },
586 | "dependencies": {
587 | "cookie": {
588 | "version": "0.4.0",
589 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
590 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
591 | },
592 | "cookie-signature": {
593 | "version": "1.0.6",
594 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
595 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
596 | }
597 | }
598 | },
599 | "fill-range": {
600 | "version": "7.0.1",
601 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
602 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
603 | "dev": true,
604 | "requires": {
605 | "to-regex-range": "^5.0.1"
606 | }
607 | },
608 | "finalhandler": {
609 | "version": "1.1.2",
610 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
611 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
612 | "requires": {
613 | "debug": "2.6.9",
614 | "encodeurl": "~1.0.2",
615 | "escape-html": "~1.0.3",
616 | "on-finished": "~2.3.0",
617 | "parseurl": "~1.3.3",
618 | "statuses": "~1.5.0",
619 | "unpipe": "~1.0.0"
620 | }
621 | },
622 | "find-up": {
623 | "version": "4.1.0",
624 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
625 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
626 | "dev": true,
627 | "requires": {
628 | "locate-path": "^5.0.0",
629 | "path-exists": "^4.0.0"
630 | }
631 | },
632 | "form-data": {
633 | "version": "3.0.1",
634 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
635 | "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
636 | "requires": {
637 | "asynckit": "^0.4.0",
638 | "combined-stream": "^1.0.8",
639 | "mime-types": "^2.1.12"
640 | }
641 | },
642 | "forwarded": {
643 | "version": "0.2.0",
644 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
645 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
646 | },
647 | "fresh": {
648 | "version": "0.5.2",
649 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
650 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
651 | },
652 | "fs-extra": {
653 | "version": "10.0.0",
654 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz",
655 | "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==",
656 | "requires": {
657 | "graceful-fs": "^4.2.0",
658 | "jsonfile": "^6.0.1",
659 | "universalify": "^2.0.0"
660 | }
661 | },
662 | "fs-minipass": {
663 | "version": "2.1.0",
664 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
665 | "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
666 | "dev": true,
667 | "requires": {
668 | "minipass": "^3.0.0"
669 | }
670 | },
671 | "fs.realpath": {
672 | "version": "1.0.0",
673 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
674 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
675 | "dev": true
676 | },
677 | "fsevents": {
678 | "version": "2.3.2",
679 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
680 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
681 | "dev": true,
682 | "optional": true
683 | },
684 | "function-bind": {
685 | "version": "1.1.1",
686 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
687 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
688 | "dev": true
689 | },
690 | "glob": {
691 | "version": "7.1.7",
692 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
693 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
694 | "dev": true,
695 | "requires": {
696 | "fs.realpath": "^1.0.0",
697 | "inflight": "^1.0.4",
698 | "inherits": "2",
699 | "minimatch": "^3.0.4",
700 | "once": "^1.3.0",
701 | "path-is-absolute": "^1.0.0"
702 | }
703 | },
704 | "glob-parent": {
705 | "version": "5.1.2",
706 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
707 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
708 | "dev": true,
709 | "requires": {
710 | "is-glob": "^4.0.1"
711 | }
712 | },
713 | "graceful-fs": {
714 | "version": "4.2.6",
715 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
716 | "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
717 | },
718 | "hard-rejection": {
719 | "version": "2.1.0",
720 | "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
721 | "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
722 | "dev": true
723 | },
724 | "has": {
725 | "version": "1.0.3",
726 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
727 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
728 | "dev": true,
729 | "requires": {
730 | "function-bind": "^1.1.1"
731 | }
732 | },
733 | "has-flag": {
734 | "version": "3.0.0",
735 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
736 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
737 | "dev": true
738 | },
739 | "history": {
740 | "version": "5.0.0",
741 | "resolved": "https://registry.npmjs.org/history/-/history-5.0.0.tgz",
742 | "integrity": "sha512-3NyRMKIiFSJmIPdq7FxkNMJkQ7ZEtVblOQ38VtKaA0zZMW1Eo6Q6W8oDKEflr1kNNTItSnk4JMCO1deeSgbLLg==",
743 | "requires": {
744 | "@babel/runtime": "^7.7.6"
745 | }
746 | },
747 | "hosted-git-info": {
748 | "version": "2.8.9",
749 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
750 | "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
751 | "dev": true
752 | },
753 | "http-errors": {
754 | "version": "1.7.2",
755 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
756 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
757 | "requires": {
758 | "depd": "~1.1.2",
759 | "inherits": "2.0.3",
760 | "setprototypeof": "1.1.1",
761 | "statuses": ">= 1.5.0 < 2",
762 | "toidentifier": "1.0.0"
763 | },
764 | "dependencies": {
765 | "inherits": {
766 | "version": "2.0.3",
767 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
768 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
769 | }
770 | }
771 | },
772 | "iconv-lite": {
773 | "version": "0.4.24",
774 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
775 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
776 | "requires": {
777 | "safer-buffer": ">= 2.1.2 < 3"
778 | }
779 | },
780 | "imurmurhash": {
781 | "version": "0.1.4",
782 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
783 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
784 | "dev": true
785 | },
786 | "indent-string": {
787 | "version": "4.0.0",
788 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
789 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
790 | "dev": true
791 | },
792 | "infer-owner": {
793 | "version": "1.0.4",
794 | "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
795 | "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
796 | "dev": true
797 | },
798 | "inflight": {
799 | "version": "1.0.6",
800 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
801 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
802 | "dev": true,
803 | "requires": {
804 | "once": "^1.3.0",
805 | "wrappy": "1"
806 | }
807 | },
808 | "inherits": {
809 | "version": "2.0.4",
810 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
811 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
812 | "dev": true
813 | },
814 | "ipaddr.js": {
815 | "version": "1.9.1",
816 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
817 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
818 | },
819 | "is-arrayish": {
820 | "version": "0.2.1",
821 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
822 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
823 | "dev": true
824 | },
825 | "is-binary-path": {
826 | "version": "2.1.0",
827 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
828 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
829 | "dev": true,
830 | "requires": {
831 | "binary-extensions": "^2.0.0"
832 | }
833 | },
834 | "is-core-module": {
835 | "version": "2.5.0",
836 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz",
837 | "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==",
838 | "dev": true,
839 | "requires": {
840 | "has": "^1.0.3"
841 | }
842 | },
843 | "is-extglob": {
844 | "version": "2.1.1",
845 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
846 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
847 | "dev": true
848 | },
849 | "is-glob": {
850 | "version": "4.0.1",
851 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
852 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
853 | "dev": true,
854 | "requires": {
855 | "is-extglob": "^2.1.1"
856 | }
857 | },
858 | "is-number": {
859 | "version": "7.0.0",
860 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
861 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
862 | "dev": true
863 | },
864 | "is-plain-obj": {
865 | "version": "1.1.0",
866 | "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
867 | "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
868 | "dev": true
869 | },
870 | "js-tokens": {
871 | "version": "4.0.0",
872 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
873 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
874 | },
875 | "jsesc": {
876 | "version": "3.0.2",
877 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz",
878 | "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g=="
879 | },
880 | "json-parse-even-better-errors": {
881 | "version": "2.3.1",
882 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
883 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
884 | "dev": true
885 | },
886 | "jsonfile": {
887 | "version": "6.1.0",
888 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
889 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
890 | "requires": {
891 | "graceful-fs": "^4.1.6",
892 | "universalify": "^2.0.0"
893 | }
894 | },
895 | "kind-of": {
896 | "version": "6.0.3",
897 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
898 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
899 | "dev": true
900 | },
901 | "lines-and-columns": {
902 | "version": "1.1.6",
903 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
904 | "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
905 | "dev": true
906 | },
907 | "locate-path": {
908 | "version": "5.0.0",
909 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
910 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
911 | "dev": true,
912 | "requires": {
913 | "p-locate": "^4.1.0"
914 | }
915 | },
916 | "lodash.debounce": {
917 | "version": "4.0.8",
918 | "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
919 | "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
920 | "dev": true
921 | },
922 | "loose-envify": {
923 | "version": "1.4.0",
924 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
925 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
926 | "requires": {
927 | "js-tokens": "^3.0.0 || ^4.0.0"
928 | }
929 | },
930 | "lru-cache": {
931 | "version": "6.0.0",
932 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
933 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
934 | "dev": true,
935 | "requires": {
936 | "yallist": "^4.0.0"
937 | }
938 | },
939 | "map-obj": {
940 | "version": "4.2.1",
941 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz",
942 | "integrity": "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==",
943 | "dev": true
944 | },
945 | "media-typer": {
946 | "version": "0.3.0",
947 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
948 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
949 | },
950 | "meow": {
951 | "version": "7.1.1",
952 | "resolved": "https://registry.npmjs.org/meow/-/meow-7.1.1.tgz",
953 | "integrity": "sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==",
954 | "dev": true,
955 | "requires": {
956 | "@types/minimist": "^1.2.0",
957 | "camelcase-keys": "^6.2.2",
958 | "decamelize-keys": "^1.1.0",
959 | "hard-rejection": "^2.1.0",
960 | "minimist-options": "4.1.0",
961 | "normalize-package-data": "^2.5.0",
962 | "read-pkg-up": "^7.0.1",
963 | "redent": "^3.0.0",
964 | "trim-newlines": "^3.0.0",
965 | "type-fest": "^0.13.1",
966 | "yargs-parser": "^18.1.3"
967 | }
968 | },
969 | "merge-descriptors": {
970 | "version": "1.0.1",
971 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
972 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
973 | },
974 | "methods": {
975 | "version": "1.1.2",
976 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
977 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
978 | },
979 | "mime": {
980 | "version": "1.6.0",
981 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
982 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
983 | },
984 | "mime-db": {
985 | "version": "1.48.0",
986 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz",
987 | "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ=="
988 | },
989 | "mime-types": {
990 | "version": "2.1.31",
991 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz",
992 | "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==",
993 | "requires": {
994 | "mime-db": "1.48.0"
995 | }
996 | },
997 | "min-indent": {
998 | "version": "1.0.1",
999 | "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
1000 | "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
1001 | "dev": true
1002 | },
1003 | "minimatch": {
1004 | "version": "3.0.4",
1005 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1006 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1007 | "dev": true,
1008 | "requires": {
1009 | "brace-expansion": "^1.1.7"
1010 | }
1011 | },
1012 | "minimist-options": {
1013 | "version": "4.1.0",
1014 | "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
1015 | "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
1016 | "dev": true,
1017 | "requires": {
1018 | "arrify": "^1.0.1",
1019 | "is-plain-obj": "^1.1.0",
1020 | "kind-of": "^6.0.3"
1021 | }
1022 | },
1023 | "minipass": {
1024 | "version": "3.1.3",
1025 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz",
1026 | "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==",
1027 | "dev": true,
1028 | "requires": {
1029 | "yallist": "^4.0.0"
1030 | }
1031 | },
1032 | "minipass-collect": {
1033 | "version": "1.0.2",
1034 | "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
1035 | "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
1036 | "dev": true,
1037 | "requires": {
1038 | "minipass": "^3.0.0"
1039 | }
1040 | },
1041 | "minipass-flush": {
1042 | "version": "1.0.5",
1043 | "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
1044 | "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
1045 | "dev": true,
1046 | "requires": {
1047 | "minipass": "^3.0.0"
1048 | }
1049 | },
1050 | "minipass-pipeline": {
1051 | "version": "1.2.4",
1052 | "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz",
1053 | "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==",
1054 | "dev": true,
1055 | "requires": {
1056 | "minipass": "^3.0.0"
1057 | }
1058 | },
1059 | "minizlib": {
1060 | "version": "2.1.2",
1061 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
1062 | "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
1063 | "dev": true,
1064 | "requires": {
1065 | "minipass": "^3.0.0",
1066 | "yallist": "^4.0.0"
1067 | }
1068 | },
1069 | "mkdirp": {
1070 | "version": "1.0.4",
1071 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
1072 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
1073 | "dev": true
1074 | },
1075 | "morgan": {
1076 | "version": "1.10.0",
1077 | "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
1078 | "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
1079 | "requires": {
1080 | "basic-auth": "~2.0.1",
1081 | "debug": "2.6.9",
1082 | "depd": "~2.0.0",
1083 | "on-finished": "~2.3.0",
1084 | "on-headers": "~1.0.2"
1085 | },
1086 | "dependencies": {
1087 | "depd": {
1088 | "version": "2.0.0",
1089 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
1090 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
1091 | }
1092 | }
1093 | },
1094 | "ms": {
1095 | "version": "2.0.0",
1096 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1097 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
1098 | },
1099 | "negotiator": {
1100 | "version": "0.6.2",
1101 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
1102 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
1103 | },
1104 | "node-fetch": {
1105 | "version": "2.6.1",
1106 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
1107 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
1108 | },
1109 | "normalize-package-data": {
1110 | "version": "2.5.0",
1111 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
1112 | "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
1113 | "dev": true,
1114 | "requires": {
1115 | "hosted-git-info": "^2.1.4",
1116 | "resolve": "^1.10.0",
1117 | "semver": "2 || 3 || 4 || 5",
1118 | "validate-npm-package-license": "^3.0.1"
1119 | }
1120 | },
1121 | "normalize-path": {
1122 | "version": "3.0.0",
1123 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1124 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1125 | "dev": true
1126 | },
1127 | "npm-normalize-package-bin": {
1128 | "version": "1.0.1",
1129 | "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
1130 | "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==",
1131 | "dev": true
1132 | },
1133 | "object-assign": {
1134 | "version": "4.1.1",
1135 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1136 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
1137 | },
1138 | "on-finished": {
1139 | "version": "2.3.0",
1140 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
1141 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
1142 | "requires": {
1143 | "ee-first": "1.1.1"
1144 | }
1145 | },
1146 | "on-headers": {
1147 | "version": "1.0.2",
1148 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
1149 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
1150 | },
1151 | "once": {
1152 | "version": "1.4.0",
1153 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1154 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1155 | "dev": true,
1156 | "requires": {
1157 | "wrappy": "1"
1158 | }
1159 | },
1160 | "p-limit": {
1161 | "version": "2.3.0",
1162 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
1163 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
1164 | "dev": true,
1165 | "requires": {
1166 | "p-try": "^2.0.0"
1167 | }
1168 | },
1169 | "p-locate": {
1170 | "version": "4.1.0",
1171 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
1172 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
1173 | "dev": true,
1174 | "requires": {
1175 | "p-limit": "^2.2.0"
1176 | }
1177 | },
1178 | "p-map": {
1179 | "version": "4.0.0",
1180 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
1181 | "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
1182 | "dev": true,
1183 | "requires": {
1184 | "aggregate-error": "^3.0.0"
1185 | }
1186 | },
1187 | "p-try": {
1188 | "version": "2.2.0",
1189 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
1190 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
1191 | "dev": true
1192 | },
1193 | "parse-json": {
1194 | "version": "5.2.0",
1195 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
1196 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
1197 | "dev": true,
1198 | "requires": {
1199 | "@babel/code-frame": "^7.0.0",
1200 | "error-ex": "^1.3.1",
1201 | "json-parse-even-better-errors": "^2.3.0",
1202 | "lines-and-columns": "^1.1.6"
1203 | }
1204 | },
1205 | "parse-ms": {
1206 | "version": "2.1.0",
1207 | "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz",
1208 | "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==",
1209 | "dev": true
1210 | },
1211 | "parseurl": {
1212 | "version": "1.3.3",
1213 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1214 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
1215 | },
1216 | "path-exists": {
1217 | "version": "4.0.0",
1218 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
1219 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
1220 | "dev": true
1221 | },
1222 | "path-is-absolute": {
1223 | "version": "1.0.1",
1224 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1225 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1226 | "dev": true
1227 | },
1228 | "path-parse": {
1229 | "version": "1.0.7",
1230 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1231 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1232 | "dev": true
1233 | },
1234 | "path-to-regexp": {
1235 | "version": "0.1.7",
1236 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
1237 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
1238 | },
1239 | "picomatch": {
1240 | "version": "2.3.0",
1241 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
1242 | "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
1243 | "dev": true
1244 | },
1245 | "pretty-ms": {
1246 | "version": "7.0.1",
1247 | "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz",
1248 | "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==",
1249 | "dev": true,
1250 | "requires": {
1251 | "parse-ms": "^2.1.0"
1252 | }
1253 | },
1254 | "promise-inflight": {
1255 | "version": "1.0.1",
1256 | "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
1257 | "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
1258 | "dev": true
1259 | },
1260 | "prop-types": {
1261 | "version": "15.7.2",
1262 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
1263 | "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
1264 | "requires": {
1265 | "loose-envify": "^1.4.0",
1266 | "object-assign": "^4.1.1",
1267 | "react-is": "^16.8.1"
1268 | }
1269 | },
1270 | "proxy-addr": {
1271 | "version": "2.0.7",
1272 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
1273 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
1274 | "requires": {
1275 | "forwarded": "0.2.0",
1276 | "ipaddr.js": "1.9.1"
1277 | }
1278 | },
1279 | "qs": {
1280 | "version": "6.7.0",
1281 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
1282 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
1283 | },
1284 | "quick-lru": {
1285 | "version": "4.0.1",
1286 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
1287 | "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
1288 | "dev": true
1289 | },
1290 | "range-parser": {
1291 | "version": "1.2.1",
1292 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1293 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
1294 | },
1295 | "raw-body": {
1296 | "version": "2.4.0",
1297 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
1298 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
1299 | "requires": {
1300 | "bytes": "3.1.0",
1301 | "http-errors": "1.7.2",
1302 | "iconv-lite": "0.4.24",
1303 | "unpipe": "1.0.0"
1304 | },
1305 | "dependencies": {
1306 | "bytes": {
1307 | "version": "3.1.0",
1308 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
1309 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
1310 | }
1311 | }
1312 | },
1313 | "react": {
1314 | "version": "17.0.2",
1315 | "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz",
1316 | "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==",
1317 | "requires": {
1318 | "loose-envify": "^1.1.0",
1319 | "object-assign": "^4.1.1"
1320 | }
1321 | },
1322 | "react-dom": {
1323 | "version": "17.0.2",
1324 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz",
1325 | "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==",
1326 | "requires": {
1327 | "loose-envify": "^1.1.0",
1328 | "object-assign": "^4.1.1",
1329 | "scheduler": "^0.20.2"
1330 | }
1331 | },
1332 | "react-is": {
1333 | "version": "16.13.1",
1334 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
1335 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
1336 | },
1337 | "react-router": {
1338 | "version": "6.0.0-beta.0",
1339 | "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.0.0-beta.0.tgz",
1340 | "integrity": "sha512-VgMdfpVcmFQki/LZuLh8E/MNACekDetz4xqft+a6fBZvvJnVqKbLqebF7hyoawGrV1HcO5tVaUang2Og4W2j1Q==",
1341 | "requires": {
1342 | "prop-types": "^15.7.2"
1343 | }
1344 | },
1345 | "react-router-dom": {
1346 | "version": "6.0.0-beta.0",
1347 | "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.0.0-beta.0.tgz",
1348 | "integrity": "sha512-36yNNGMT8RB9FRPL9nKJi6HKDkgOakU+o/2hHpSzR6e37gN70MpOU6QQlmif4oAWWBwjyGc3ZNOMFCsFuHUY5w==",
1349 | "requires": {
1350 | "prop-types": "^15.7.2",
1351 | "react-router": "6.0.0-beta.0"
1352 | }
1353 | },
1354 | "read-package-json-fast": {
1355 | "version": "2.0.2",
1356 | "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.2.tgz",
1357 | "integrity": "sha512-5fyFUyO9B799foVk4n6ylcoAktG/FbE3jwRKxvwaeSrIunaoMc0u81dzXxjeAFKOce7O5KncdfwpGvvs6r5PsQ==",
1358 | "dev": true,
1359 | "requires": {
1360 | "json-parse-even-better-errors": "^2.3.0",
1361 | "npm-normalize-package-bin": "^1.0.1"
1362 | }
1363 | },
1364 | "read-pkg": {
1365 | "version": "5.2.0",
1366 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
1367 | "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
1368 | "dev": true,
1369 | "requires": {
1370 | "@types/normalize-package-data": "^2.4.0",
1371 | "normalize-package-data": "^2.5.0",
1372 | "parse-json": "^5.0.0",
1373 | "type-fest": "^0.6.0"
1374 | },
1375 | "dependencies": {
1376 | "type-fest": {
1377 | "version": "0.6.0",
1378 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
1379 | "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
1380 | "dev": true
1381 | }
1382 | }
1383 | },
1384 | "read-pkg-up": {
1385 | "version": "7.0.1",
1386 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
1387 | "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
1388 | "dev": true,
1389 | "requires": {
1390 | "find-up": "^4.1.0",
1391 | "read-pkg": "^5.2.0",
1392 | "type-fest": "^0.8.1"
1393 | },
1394 | "dependencies": {
1395 | "type-fest": {
1396 | "version": "0.8.1",
1397 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
1398 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
1399 | "dev": true
1400 | }
1401 | }
1402 | },
1403 | "readdirp": {
1404 | "version": "3.6.0",
1405 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1406 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1407 | "dev": true,
1408 | "requires": {
1409 | "picomatch": "^2.2.1"
1410 | }
1411 | },
1412 | "redent": {
1413 | "version": "3.0.0",
1414 | "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
1415 | "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
1416 | "dev": true,
1417 | "requires": {
1418 | "indent-string": "^4.0.0",
1419 | "strip-indent": "^3.0.0"
1420 | }
1421 | },
1422 | "regenerator-runtime": {
1423 | "version": "0.13.7",
1424 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
1425 | "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
1426 | },
1427 | "remix": {
1428 | "version": "0.17.5",
1429 | "resolved": "https://registry.npmjs.org/remix/-/remix-0.17.5.tgz",
1430 | "integrity": "sha512-S/h5gI6YRjb6iDWTjvAmyf9oQrUbVcCFEzxf6s5uD+L3YacateAtmcri6rPuDVs+aqacNH0iBy04z7qIK+o5VA==",
1431 | "requires": {
1432 | "@remix-run/node": "0.17.5",
1433 | "@remix-run/react": "0.17.5",
1434 | "fs-extra": "^10.0.0"
1435 | }
1436 | },
1437 | "resolve": {
1438 | "version": "1.20.0",
1439 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
1440 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
1441 | "dev": true,
1442 | "requires": {
1443 | "is-core-module": "^2.2.0",
1444 | "path-parse": "^1.0.6"
1445 | }
1446 | },
1447 | "rimraf": {
1448 | "version": "3.0.2",
1449 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
1450 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
1451 | "dev": true,
1452 | "requires": {
1453 | "glob": "^7.1.3"
1454 | }
1455 | },
1456 | "safe-buffer": {
1457 | "version": "5.1.2",
1458 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1459 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
1460 | },
1461 | "safer-buffer": {
1462 | "version": "2.1.2",
1463 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1464 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1465 | },
1466 | "scheduler": {
1467 | "version": "0.20.2",
1468 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz",
1469 | "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==",
1470 | "requires": {
1471 | "loose-envify": "^1.1.0",
1472 | "object-assign": "^4.1.1"
1473 | }
1474 | },
1475 | "semver": {
1476 | "version": "5.7.1",
1477 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
1478 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
1479 | "dev": true
1480 | },
1481 | "send": {
1482 | "version": "0.17.1",
1483 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
1484 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
1485 | "requires": {
1486 | "debug": "2.6.9",
1487 | "depd": "~1.1.2",
1488 | "destroy": "~1.0.4",
1489 | "encodeurl": "~1.0.2",
1490 | "escape-html": "~1.0.3",
1491 | "etag": "~1.8.1",
1492 | "fresh": "0.5.2",
1493 | "http-errors": "~1.7.2",
1494 | "mime": "1.6.0",
1495 | "ms": "2.1.1",
1496 | "on-finished": "~2.3.0",
1497 | "range-parser": "~1.2.1",
1498 | "statuses": "~1.5.0"
1499 | },
1500 | "dependencies": {
1501 | "ms": {
1502 | "version": "2.1.1",
1503 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
1504 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
1505 | }
1506 | }
1507 | },
1508 | "serve-static": {
1509 | "version": "1.14.1",
1510 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
1511 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
1512 | "requires": {
1513 | "encodeurl": "~1.0.2",
1514 | "escape-html": "~1.0.3",
1515 | "parseurl": "~1.3.3",
1516 | "send": "0.17.1"
1517 | }
1518 | },
1519 | "setprototypeof": {
1520 | "version": "1.1.1",
1521 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
1522 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
1523 | },
1524 | "signal-exit": {
1525 | "version": "3.0.3",
1526 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
1527 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
1528 | "dev": true
1529 | },
1530 | "spdx-correct": {
1531 | "version": "3.1.1",
1532 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
1533 | "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
1534 | "dev": true,
1535 | "requires": {
1536 | "spdx-expression-parse": "^3.0.0",
1537 | "spdx-license-ids": "^3.0.0"
1538 | }
1539 | },
1540 | "spdx-exceptions": {
1541 | "version": "2.3.0",
1542 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
1543 | "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
1544 | "dev": true
1545 | },
1546 | "spdx-expression-parse": {
1547 | "version": "3.0.1",
1548 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
1549 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
1550 | "dev": true,
1551 | "requires": {
1552 | "spdx-exceptions": "^2.1.0",
1553 | "spdx-license-ids": "^3.0.0"
1554 | }
1555 | },
1556 | "spdx-license-ids": {
1557 | "version": "3.0.9",
1558 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz",
1559 | "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==",
1560 | "dev": true
1561 | },
1562 | "ssri": {
1563 | "version": "8.0.1",
1564 | "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz",
1565 | "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
1566 | "dev": true,
1567 | "requires": {
1568 | "minipass": "^3.1.1"
1569 | }
1570 | },
1571 | "statuses": {
1572 | "version": "1.5.0",
1573 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
1574 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
1575 | },
1576 | "strip-indent": {
1577 | "version": "3.0.0",
1578 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
1579 | "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
1580 | "dev": true,
1581 | "requires": {
1582 | "min-indent": "^1.0.0"
1583 | }
1584 | },
1585 | "supports-color": {
1586 | "version": "5.5.0",
1587 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1588 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1589 | "dev": true,
1590 | "requires": {
1591 | "has-flag": "^3.0.0"
1592 | }
1593 | },
1594 | "tar": {
1595 | "version": "6.1.0",
1596 | "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz",
1597 | "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==",
1598 | "dev": true,
1599 | "requires": {
1600 | "chownr": "^2.0.0",
1601 | "fs-minipass": "^2.0.0",
1602 | "minipass": "^3.0.0",
1603 | "minizlib": "^2.1.1",
1604 | "mkdirp": "^1.0.3",
1605 | "yallist": "^4.0.0"
1606 | }
1607 | },
1608 | "to-regex-range": {
1609 | "version": "5.0.1",
1610 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1611 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1612 | "dev": true,
1613 | "requires": {
1614 | "is-number": "^7.0.0"
1615 | }
1616 | },
1617 | "toidentifier": {
1618 | "version": "1.0.0",
1619 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
1620 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
1621 | },
1622 | "trim-newlines": {
1623 | "version": "3.0.1",
1624 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
1625 | "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
1626 | "dev": true
1627 | },
1628 | "type-fest": {
1629 | "version": "0.13.1",
1630 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
1631 | "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
1632 | "dev": true
1633 | },
1634 | "type-is": {
1635 | "version": "1.6.18",
1636 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1637 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1638 | "requires": {
1639 | "media-typer": "0.3.0",
1640 | "mime-types": "~2.1.24"
1641 | }
1642 | },
1643 | "typescript": {
1644 | "version": "4.3.5",
1645 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz",
1646 | "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==",
1647 | "dev": true
1648 | },
1649 | "unique-filename": {
1650 | "version": "1.1.1",
1651 | "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
1652 | "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
1653 | "dev": true,
1654 | "requires": {
1655 | "unique-slug": "^2.0.0"
1656 | }
1657 | },
1658 | "unique-slug": {
1659 | "version": "2.0.2",
1660 | "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
1661 | "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
1662 | "dev": true,
1663 | "requires": {
1664 | "imurmurhash": "^0.1.4"
1665 | }
1666 | },
1667 | "universalify": {
1668 | "version": "2.0.0",
1669 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
1670 | "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
1671 | },
1672 | "unpipe": {
1673 | "version": "1.0.0",
1674 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1675 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
1676 | },
1677 | "utils-merge": {
1678 | "version": "1.0.1",
1679 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1680 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
1681 | },
1682 | "validate-npm-package-license": {
1683 | "version": "3.0.4",
1684 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
1685 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
1686 | "dev": true,
1687 | "requires": {
1688 | "spdx-correct": "^3.0.0",
1689 | "spdx-expression-parse": "^3.0.0"
1690 | }
1691 | },
1692 | "vary": {
1693 | "version": "1.1.2",
1694 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1695 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
1696 | },
1697 | "wrappy": {
1698 | "version": "1.0.2",
1699 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1700 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
1701 | "dev": true
1702 | },
1703 | "ws": {
1704 | "version": "7.5.3",
1705 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz",
1706 | "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==",
1707 | "dev": true
1708 | },
1709 | "yallist": {
1710 | "version": "4.0.0",
1711 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
1712 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
1713 | "dev": true
1714 | },
1715 | "yargs-parser": {
1716 | "version": "18.1.3",
1717 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
1718 | "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
1719 | "dev": true,
1720 | "requires": {
1721 | "camelcase": "^5.0.0",
1722 | "decamelize": "^1.2.0"
1723 | }
1724 | }
1725 | }
1726 | }
1727 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "name": "remix-azure-function-template",
4 | "description": "",
5 | "license": "",
6 | "scripts": {
7 | "build": "remix build && npm run predeploy",
8 | "predeploy": "tsc -p ./server.tsconfig.json",
9 | "dev": "remix run",
10 | "azurelocal": "swa start ./public --api ./",
11 | "preazurelocal": "npm run build",
12 | "start": "remix-serve function/server/build"
13 | },
14 | "dependencies": {
15 | "@remix-run/node": "^0.17.5",
16 | "@remix-run/react": "^0.17.5",
17 | "@remix-run/serve": "^0.17.5",
18 | "react": "^17.0.1",
19 | "react-dom": "^17.0.1",
20 | "react-router-dom": "^6.0.0-beta.0",
21 | "remix": "^0.17.5"
22 | },
23 | "devDependencies": {
24 | "@azure/functions": "^1.0.1-beta1",
25 | "@remix-run/dev": "^0.17.5",
26 | "@types/react": "^17.0.4",
27 | "@types/react-dom": "^17.0.4",
28 | "typescript": "^4.1.2"
29 | },
30 | "engines": {
31 | "node": ">=14"
32 | },
33 | "sideEffects": false
34 | }
35 |
--------------------------------------------------------------------------------
/public/azure-static-web-apps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danielgary/remix-azure-template/373f67fe2eae5f8fac1e466001e9a143244d4eb2/public/azure-static-web-apps.png
--------------------------------------------------------------------------------
/public/azure-static-web-apps.png:Zone.Identifier:
--------------------------------------------------------------------------------
1 | [ZoneTransfer]
2 | ZoneId=3
3 | ReferrerUrl=https://res.cloudinary.com/apideck/image/upload/w_196,f_auto/v1594075913/icons/azure-static-web-apps.png
4 | HostUrl=https://res.cloudinary.com/apideck/image/upload/w_196,f_auto/v1594075913/icons/azure-static-web-apps.png
5 |
--------------------------------------------------------------------------------
/public/azure.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/azure.svg:Zone.Identifier:
--------------------------------------------------------------------------------
1 | [ZoneTransfer]
2 | ZoneId=3
3 | HostUrl=https://swimburger.net/media/fbqnp2ie/azure.svg
4 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danielgary/remix-azure-template/373f67fe2eae5f8fac1e466001e9a143244d4eb2/public/favicon.ico
--------------------------------------------------------------------------------
/public/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danielgary/remix-azure-template/373f67fe2eae5f8fac1e466001e9a143244d4eb2/public/favicon.png
--------------------------------------------------------------------------------
/public/fist-bump.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danielgary/remix-azure-template/373f67fe2eae5f8fac1e466001e9a143244d4eb2/public/fist-bump.png
--------------------------------------------------------------------------------
/public/fist-bump.png:Zone.Identifier:
--------------------------------------------------------------------------------
1 | [ZoneTransfer]
2 | ZoneId=3
3 | ReferrerUrl=C:\Users\DanielGary\Downloads\vecteezy_two-fist-punching-in-flat-line-blue-and-white-design-with-editable-strokes-isolated-on-round-label_669865.zip
4 |
--------------------------------------------------------------------------------
/public/placeholder.html:
--------------------------------------------------------------------------------
1 | Placeholder
--------------------------------------------------------------------------------
/public/remix.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danielgary/remix-azure-template/373f67fe2eae5f8fac1e466001e9a143244d4eb2/public/remix.png
--------------------------------------------------------------------------------
/public/remix.png:Zone.Identifier:
--------------------------------------------------------------------------------
1 | [ZoneTransfer]
2 | ZoneId=3
3 | ReferrerUrl=https://avatars.githubusercontent.com/u/64235328?s=200&v=4
4 | HostUrl=https://avatars.githubusercontent.com/u/64235328?s=200&v=4
5 |
--------------------------------------------------------------------------------
/public/staticwebapp.config.json:
--------------------------------------------------------------------------------
1 | {
2 | "routes": [
3 | {
4 | "route": "/",
5 | "rewrite": "/api/function"
6 | },
7 | {
8 | "route": "/index.html",
9 | "rewrite": "/api/function"
10 | }
11 | ],
12 | "navigationFallback": {
13 | "rewrite": "/api/function"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/remix.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | appDirectory: "app",
3 | browserBuildDirectory: "public/build",
4 | publicPath: "/build/",
5 | serverBuildDirectory: "function/server/build",
6 | devServerPort: 7071,
7 | };
8 |
--------------------------------------------------------------------------------
/server.tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */
4 |
5 | /* Basic Options */
6 | // "incremental": true, /* Enable incremental compilation */
7 | "target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 'ES2021', or 'ESNEXT'. */,
8 | "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,
9 | "lib": ["DOM", "DOM.Iterable", "ES2019"],
10 | // "allowJs": true, /* Allow javascript files to be compiled. */
11 | // "checkJs": true, /* Report errors in .js files. */
12 | // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */
13 | // "declaration": true, /* Generates corresponding '.d.ts' file. */
14 | // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
15 | // "sourceMap": true, /* Generates corresponding '.map' file. */
16 | // "outFile": "./", /* Concatenate and emit output to single file. */
17 | // "outDir": "./", /* Redirect output structure to the directory. */
18 | "rootDir": "./function/server" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */,
19 | // "composite": true, /* Enable project compilation */
20 | // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
21 | // "removeComments": true, /* Do not emit comments to output. */
22 | // "noEmit": true, /* Do not emit outputs. */
23 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */
24 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
25 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
26 |
27 | /* Strict Type-Checking Options */
28 | "strict": true /* Enable all strict type-checking options. */,
29 | "noImplicitAny": false /* Raise error on expressions and declarations with an implied 'any' type. */,
30 | // "strictNullChecks": true, /* Enable strict null checks. */
31 | // "strictFunctionTypes": true, /* Enable strict checking of function types. */
32 | // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
33 | // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
34 | // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
35 | // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
36 |
37 | /* Additional Checks */
38 | // "noUnusedLocals": true, /* Report errors on unused locals. */
39 | // "noUnusedParameters": true, /* Report errors on unused parameters. */
40 | // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
41 | // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
42 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
43 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an 'override' modifier. */
44 | // "noPropertyAccessFromIndexSignature": true, /* Require undeclared properties from index signatures to use element accesses. */
45 |
46 | /* Module Resolution Options */
47 | // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
48 | // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
49 | // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
50 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
51 | // "typeRoots": [], /* List of folders to include type definitions from. */
52 | // "types": [], /* Type declaration files to be included in compilation. */
53 | // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
54 | "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,
55 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
56 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
57 |
58 | /* Source Map Options */
59 | // "sourceRoot": "azure/functions/server", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
60 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
61 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
62 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
63 |
64 | /* Experimental Options */
65 | // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
66 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
67 |
68 | /* Advanced Options */
69 | "skipLibCheck": true /* Skip type checking of declaration files. */,
70 | "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */
71 | },
72 | "exclude": ["function/server/build", "app/"]
73 | }
74 |
--------------------------------------------------------------------------------