diff --git a/.github/workflows/deployments.yml b/.github/workflows/deployments.yml index 558e1789ed0..ab67fb15f19 100644 --- a/.github/workflows/deployments.yml +++ b/.github/workflows/deployments.yml @@ -1,8 +1,32 @@ name: ๐Ÿš€ Deployment Tests on: - repository_dispatch: - types: [release] + workflow_call: + secrets: + TEST_AWS_ACCESS_KEY_ID: + required: true + TEST_AWS_SECRET_ACCESS_KEY: + required: true + TEST_CF_ACCOUNT_ID: + required: true + TEST_CF_GLOBAL_API_KEY: + required: true + TEST_CF_EMAIL: + required: true + TEST_CF_PAGES_API_TOKEN: + required: true + TEST_CF_API_TOKEN: + required: true + TEST_DENO_DEPLOY_TOKEN: + required: true + TEST_FLY_TOKEN: + required: true + TEST_NETLIFY_TOKEN: + required: true + TEST_VERCEL_TOKEN: + required: true + TEST_VERCEL_USER_ID: + required: true jobs: arc_deploy: diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index b2d4b0d66ac..7ba663ad9e7 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -15,7 +15,7 @@ jobs: if: github.repository == 'remix-run/remix' runs-on: ubuntu-latest outputs: - # allows this to be used in the `comment` job below + # allows this to be used in the `comment` job below - will be undefined if there's no release necessary NEXT_VERSION: ${{ steps.version.outputs.NEXT_VERSION }} steps: - name: ๐Ÿ›‘ Cancel Previous Runs @@ -40,63 +40,91 @@ jobs: # because we have a yarn.lock and caches efficiently. uses: bahmutov/npm-install@v1 - - name: โคด๏ธ Update Version + - name: โคด๏ธ Update Version if needed id: version run: | - git config --local user.email "hello@remix.run" - git config --local user.name "Remix Run Bot" - + # get latest commit sha SHA=$(git rev-parse HEAD) SHORT_SHA=${SHA::7} - DATE=$(date '+%Y%m%d') - NEXT_VERSION=0.0.0-nightly-${SHORT_SHA}-${DATE} - echo ::set-output name=NEXT_VERSION::${NEXT_VERSION} - git checkout -b nightly/${NEXT_VERSION} + # get latest nightly tag + LATEST_NIGHTLY_TAG=$(git tag -l v0.0.0-nightly-\* --sort=-taggerdate | head -n 1) - if [ -z "$(git status --porcelain)" ]; then - echo "โœจ" + # check if last commit to dev starts would be the nightly tag we're about to create (minus the date) + # if it is, we'll skip the nightly creation + # if not, we'll create a new nightly tag + if [[ ${LATEST_NIGHTLY_TAG} == v0.0.0-nightly-${SHORT_SHA}-* ]]; then + echo "๐Ÿ›‘ Latest nightly tag is the same as the latest commit sha, skipping nightly release" else - echo "dirty working directory..." - git add . - git commit -m "dirty working directory..." - fi + git config --local user.email "hello@remix.run" + git config --local user.name "Remix Run Bot" + + DATE=$(date '+%Y%m%d') + NEXT_VERSION=0.0.0-nightly-${SHORT_SHA}-${DATE} + echo ::set-output name=NEXT_VERSION::${NEXT_VERSION} + + git checkout -b nightly/${NEXT_VERSION} - yarn run version ${NEXT_VERSION} --skip-prompt + if [ -z "$(git status --porcelain)" ]; then + echo "โœจ" + else + echo "dirty working directory..." + git add . + git commit -m "dirty working directory..." + fi + + yarn run version ${NEXT_VERSION} --skip-prompt + fi - name: ๐Ÿ— Build + if: steps.version.outputs.NEXT_VERSION run: yarn build - name: ๐Ÿท Push Tag + if: steps.version.outputs.NEXT_VERSION run: git push origin --tags - name: ๐Ÿ” Setup npm auth + if: steps.version.outputs.NEXT_VERSION run: | echo "registry=https://registry.npmjs.org" >> ~/.npmrc echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" >> ~/.npmrc - name: ๐Ÿš€ Publish + if: steps.version.outputs.NEXT_VERSION run: npm run publish - - name: ๐Ÿฑ Create GitHub release - uses: actions/create-release@v1 - with: - draft: false - prerelease: true - release_name: v${{ steps.version.outputs.NEXT_VERSION }} - tag_name: v${{ steps.version.outputs.NEXT_VERSION }} - env: - # need this token in order to have it trigger the comment and deployment test workflows - GITHUB_TOKEN: ${{ secrets.NIGHTLY_PAT }} - comment: needs: [nightly] - name: ๐Ÿ›ด Kick off comment and deployment test workflows - if: github.repository == 'remix-run/remix' - runs-on: ubuntu-latest - steps: - - uses: peter-evans/repository-dispatch@v2 - with: - token: ${{ secrets.NIGHTLY_PAT }} - event-type: release - client-payload: '{ "ref": "refs/tags/v${{ needs.nightly.outputs.NEXT_VERSION }}", "version": "${{ needs.nightly.outputs.NEXT_VERSION }}" }' + name: ๐Ÿ“ Comment on related issues and pull requests + if: github.repository == 'remix-run/remix' && needs.nightly.outputs.NEXT_VERSION + uses: remix-run/remix/.github/workflows/release-comments.yml@main + with: + ref: "refs/tags/v${{ needs.nightly.outputs.NEXT_VERSION }}" + + deployments: + needs: [nightly] + name: ๐Ÿš€ Deployment Tests + if: github.repository == 'remix-run/remix' && needs.nightly.outputs.NEXT_VERSION + uses: remix-run/remix/.github/workflows/deployments.yml@main + secrets: + TEST_AWS_ACCESS_KEY_ID: ${{ secrets.TEST_AWS_ACCESS_KEY_ID }} + TEST_AWS_SECRET_ACCESS_KEY: ${{ secrets.TEST_AWS_SECRET_ACCESS_KEY }} + TEST_CF_ACCOUNT_ID: ${{ secrets.TEST_CF_ACCOUNT_ID }} + TEST_CF_GLOBAL_API_KEY: ${{ secrets.TEST_CF_GLOBAL_API_KEY }} + TEST_CF_EMAIL: ${{ secrets.TEST_CF_EMAIL }} + TEST_CF_PAGES_API_TOKEN: ${{ secrets.TEST_CF_PAGES_API_TOKEN }} + TEST_CF_API_TOKEN: ${{ secrets.TEST_CF_API_TOKEN }} + TEST_DENO_DEPLOY_TOKEN: ${{ secrets.TEST_DENO_DEPLOY_TOKEN }} + TEST_FLY_TOKEN: ${{ secrets.TEST_FLY_TOKEN }} + TEST_NETLIFY_TOKEN: ${{ secrets.TEST_NETLIFY_TOKEN }} + TEST_VERCEL_TOKEN: ${{ secrets.TEST_VERCEL_TOKEN }} + TEST_VERCEL_USER_ID: ${{ secrets.TEST_VERCEL_USER_ID }} + + stacks: + needs: [nightly] + name: ๐Ÿฅž Remix Stacks Test + if: github.repository == 'remix-run/remix' && needs.nightly.outputs.NEXT_VERSION + uses: remix-run/remix/.github/workflows/stacks.yml@main + with: + version: "${{ needs.nightly.outputs.NEXT_VERSION }}" diff --git a/.github/workflows/release-comments.yml b/.github/workflows/release-comments.yml index d918d4cccd3..d79705f5142 100644 --- a/.github/workflows/release-comments.yml +++ b/.github/workflows/release-comments.yml @@ -1,8 +1,11 @@ name: ๐Ÿ“ Comment on Release on: - repository_dispatch: - types: [release] + workflow_call: + inputs: + ref: + required: true + type: string jobs: comment: @@ -23,10 +26,15 @@ jobs: # even though this is called "npm-install" it does use yarn to install # because we have a yarn.lock and caches efficiently. uses: bahmutov/npm-install@v1 + with: + working-directory: ./scripts/release - name: ๐Ÿ“ Comment on issues - run: node ./scripts/release/comment.mjs + working-directory: ./scripts/release + run: node -r esbuild-register ./comment.ts env: GITHUB_REPOSITORY: ${{ github.repository }} GITHUB_TOKEN: ${{ github.token }} - VERSION: ${{ github.event.client_payload.ref }} + VERSION: ${{ inputs.ref }} + DEFAULT_BRANCH: "main" + NIGHTLY_BRANCH: "dev" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d79cb61885b..c9747e5beb6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -46,12 +46,35 @@ jobs: comment: needs: [manual] - name: ๐Ÿ›ด Kick off comment and deployment test workflows + name: ๐Ÿ“ Comment on related issues and pull requests if: github.repository == 'remix-run/remix' - runs-on: ubuntu-latest - steps: - - uses: peter-evans/repository-dispatch@v2 - with: - token: ${{ secrets.NIGHTLY_PAT }} - event-type: release - client-payload: '{ "ref": "${{ github.ref }}", "version": "${{ github.ref_name }}" }' + uses: remix-run/remix/.github/workflows/release-comments.yml@main + with: + ref: ${{ github.ref }} + + # deployments: + # needs: [manual] + # name: ๐Ÿš€ Deployment Tests + # if: github.repository == 'remix-run/remix' + # uses: remix-run/remix/.github/workflows/deployments.yml@main + # secrets: + # TEST_AWS_ACCESS_KEY_ID: ${{ secrets.TEST_AWS_ACCESS_KEY_ID }} + # TEST_AWS_SECRET_ACCESS_KEY: ${{ secrets.TEST_AWS_SECRET_ACCESS_KEY }} + # TEST_CF_ACCOUNT_ID: ${{ secrets.TEST_CF_ACCOUNT_ID }} + # TEST_CF_GLOBAL_API_KEY: ${{ secrets.TEST_CF_GLOBAL_API_KEY }} + # TEST_CF_EMAIL: ${{ secrets.TEST_CF_EMAIL }} + # TEST_CF_PAGES_API_TOKEN: ${{ secrets.TEST_CF_PAGES_API_TOKEN }} + # TEST_CF_API_TOKEN: ${{ secrets.TEST_CF_API_TOKEN }} + # TEST_DENO_DEPLOY_TOKEN: ${{ secrets.TEST_DENO_DEPLOY_TOKEN }} + # TEST_FLY_TOKEN: ${{ secrets.TEST_FLY_TOKEN }} + # TEST_NETLIFY_TOKEN: ${{ secrets.TEST_NETLIFY_TOKEN }} + # TEST_VERCEL_TOKEN: ${{ secrets.TEST_VERCEL_TOKEN }} + # TEST_VERCEL_USER_ID: ${{ secrets.TEST_VERCEL_USER_ID }} + + stacks: + needs: [manual] + name: ๐Ÿฅž Remix Stacks Test + if: github.repository == 'remix-run/remix' + uses: remix-run/remix/.github/workflows/stacks.yml@main + with: + version: ${{ github.ref_name }} diff --git a/.github/workflows/stacks.yml b/.github/workflows/stacks.yml index 5e5e4a73d1d..58df4eea92b 100644 --- a/.github/workflows/stacks.yml +++ b/.github/workflows/stacks.yml @@ -1,8 +1,11 @@ name: ๐Ÿฅž Remix Stacks Test on: - repository_dispatch: - types: [release] + workflow_call: + inputs: + version: + required: true + type: string jobs: setup: @@ -27,9 +30,9 @@ jobs: with: node-version: 16 - - name: โš’๏ธ Create new ${{ matrix.stack.name }} app with ${{ github.event.client_payload.version }} + - name: โš’๏ธ Create new ${{ matrix.stack.name }} app with ${{ inputs.version }} run: | - npx -y create-remix@${{ github.event.client_payload.version }} ${{ matrix.stack.name }} --template ${{ matrix.stack.repo }} --typescript --no-install + npx -y create-remix@${{ inputs.version }} ${{ matrix.stack.name }} --template ${{ matrix.stack.repo }} --typescript --no-install - name: ๐Ÿ“ฅ Download deps uses: bahmutov/npm-install@v1 diff --git a/.vscode/deno_resolve_npm_imports.json b/.vscode/deno_resolve_npm_imports.json index 582e98e18eb..3576776f832 100644 --- a/.vscode/deno_resolve_npm_imports.json +++ b/.vscode/deno_resolve_npm_imports.json @@ -5,7 +5,7 @@ "// Dependency management is done through `npm` and `node_modules/` instead.": "", "// Deno-only dependencies may be imported via URL imports (without using import maps).": "", "imports": { - "@remix-run/server-runtime": "https://esm.sh/@remix-run/server-runtime@1.6.0", + "@remix-run/server-runtime": "https://esm.sh/@remix-run/server-runtime@1.6.1", "mime": "https://esm.sh/mime@3.0.0" } } diff --git a/contributors.yml b/contributors.yml index 402c09c54f3..b736d052c1b 100644 --- a/contributors.yml +++ b/contributors.yml @@ -75,6 +75,7 @@ - dan-gamble - danielweinmann - davecalnan +- davecranwell-vocovo - DavidHollins6 - davongit - denissb @@ -155,6 +156,7 @@ - jaydiablo - jca41 - jdeniau +- JeffBeltran - jenseng - jeremyjfleming - jesse-deboer @@ -263,10 +265,12 @@ - mskoroglu - msutkowski - mtt87 +- mush159 - na2hiro - nareshbhatia - navid-kalaei - nexxeln +- ni554n - nicholaschiang - niconiahi - nielsdb97 @@ -359,6 +363,7 @@ - vimutti77 - visormatt - vkrol +- vlindhol - weavdale - wKovacs64 - wladiston diff --git a/docs/api/conventions.md b/docs/api/conventions.md index 9d6c766b7b3..7d658f36da9 100644 --- a/docs/api/conventions.md +++ b/docs/api/conventions.md @@ -12,9 +12,7 @@ A lot of Remix APIs aren't imported from the `"@remix-run/*"` packages, but are This file has a few build and development configuration options, but does not actually run on your server. ```tsx filename=remix.config.js -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { appDirectory: "app", assetsBuildDirectory: "public/build", @@ -66,7 +64,7 @@ The port number to use for the dev websocket server. Defaults to 8002. This is an array of globs (via [minimatch][minimatch]) that Remix will match to files while reading your `app/routes` directory. If a file matches, it will be -ignored rather that treated like a route module. This is useful for ignoring +ignored rather than treated like a route module. This is useful for ignoring dotfiles (like `.DS_Store` files) or CSS/test files you wish to colocate. ### publicPath @@ -143,10 +141,8 @@ A list of regex patterns that determines if a module is transpiled and included For example, the `unified` ecosystem is all ESM-only. Let's also say we're using a `@sindresorhus/slugify` which is ESM-only as well. Here's how you would be able to consume those packages in a CJS app without having to use dynamic imports: -```ts filename=remix.config.js lines=[10-15] -/** - * @type {import('@remix-run/dev').AppConfig} - */ +```ts filename=remix.config.js lines=[8-13] +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { appDirectory: "app", assetsBuildDirectory: "public/build", diff --git a/docs/api/remix.md b/docs/api/remix.md index ff1e4d5a812..36bf48f36a7 100644 --- a/docs/api/remix.md +++ b/docs/api/remix.md @@ -812,7 +812,7 @@ This is the type of state the fetcher is in. It's like `fetcher.state`, but more - **actionReload** - The action from an "actionSubmission" returned data and the loaders on the page are being reloaded. - **actionRedirect** - The action from an "actionSubmission" returned a redirect and the page is transitioning to the new location. - - **load** - A route's loader is being called without a submission (`fetcher.load()`). + - **normalLoad** - A route's loader is being called without a submission (`fetcher.load()`). #### `fetcher.submission` @@ -2042,7 +2042,10 @@ const { getSession, commitSession, destroySession } = // all of these are optional domain: "remix.run", - expires: new Date(Date.now() + 60_000), + // Expires can also be set (although maxAge overrides it when used in combination). + // Note that this method is NOT recommended as `new Date` creates only one date on each server deployment, not a dynamic date in the future! + // + // expires: new Date(Date.now() + 60_000), httpOnly: true, maxAge: 60, path: "/", diff --git a/docs/guides/data-writes.md b/docs/guides/data-writes.md index 58dee769acb..e22a5a58d82 100644 --- a/docs/guides/data-writes.md +++ b/docs/guides/data-writes.md @@ -292,7 +292,7 @@ You can ship this code as-is. The browser will handle the pending UI and interru ### Graduate to `
` and add pending UI -Let's use progressive enhancement to make this UX a bit more fancy. By changing it from `` to ``, Remix will emulate the browser behavior with `fetch`. It will also give you access to the pending form data so you can build pending UI. +Let's use progressive enhancement to make this UX a bit more fancy. By changing it from `` to ``, Remix will emulate the browser behavior with `fetch`. It will also give you access to the pending form data so you can build pending UI. ```tsx [2, 11] import { redirect } from "@remix-run/node"; // or "@remix-run/cloudflare" diff --git a/docs/guides/migrating-react-router-app.md b/docs/guides/migrating-react-router-app.md index a9e119cade4..d279c64ea8c 100644 --- a/docs/guides/migrating-react-router-app.md +++ b/docs/guides/migrating-react-router-app.md @@ -332,6 +332,7 @@ Further configuration is optional, but the following may be helpful to optimize Every Remix app accepts a `remix.config.js` file in the project root. While its settings are optional, we recommend you include a few of them for clarity's sake. See the [docs on configuration][docs-on-configuration] for more information about all available options. ```js filename=remix.config.js +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { appDirectory: "app", ignoredRouteFiles: ["**/.*"], diff --git a/docs/other-api/dev.md b/docs/other-api/dev.md index 05d0c33b072..245933601e8 100644 --- a/docs/other-api/dev.md +++ b/docs/other-api/dev.md @@ -5,35 +5,96 @@ order: 1 # Remix CLI -The Remix CLI comes from the `@remix-run/dev` package. It also includes the compiler. Make sure it is in your package.json `devDependencies` so it doesn't get deployed to your server. +The Remix CLI comes from the `@remix-run/dev` package. It also includes the compiler. Make sure it is in your `package.json` `devDependencies` so it doesn't get deployed to your server. -## Commands +To get a full list of available commands and flags, run: -### `remix build` +```sh +npx @remix-run/dev -h +``` + +## `remix create` + +`remix create` will create a new Remix project. Without passing arguments, this command will launch an interactive CLI to configure the new project and set it up in a given directory. Optionally you can pass the desired directory path as an argument and a starter template with the `--template` flag. + +```sh +remix create +``` -Builds your app for production. No need to add `NODE_ENV=production` to the command. +### `remix create --template` + +A valid template can be: + +- a directory located in the [`templates` folder of the Remix repository][templates-folder-of-the-remix-repository] +- a local file path to a directory of files +- a local file path to a tarball +- the name of a `:username/:repo` on GitHub +- the URL of a remote tarball + +```sh +remix create ./my-app --template fly +remix create ./my-app --template /path/to/remix-template +remix create ./my-app --template /path/to/remix-template.tar.gz +remix create ./my-app --template remix-run/grunge-stack +remix create ./my-app --template :username/:repo +remix create ./my-app --template https://github.com/:username/:repo +remix create ./my-app --template https://github.com/:username/:repo/tree/:branch +remix create ./my-app --template https://github.com/:username/:repo/archive/refs/tags/:tag.tar.gz +remix create ./my-app --template https://example.com/remix-template.tar.gz +``` + + + +## `remix build` + +Builds your app for production. This command will set `process.env.NODE_ENV` to `production` and minify the output for deployment. ```sh remix build ``` -### `remix watch` +### `remix build --sourcemap` + +Generates sourcemaps for the production build. -Watches your application files and builds your app for development when files change. +## `remix watch` + +Watches your application files and builds your app for development when changes are made. ```sh remix watch ``` -### `remix dev` +## `remix dev` -Same as `watch` but also boots the [Remix app server][remix-app-server] in development mode if it's installed. +The same as `watch`, but also boots the [Remix App Server][remix-app-server] in development mode if it's installed. ```sh remix dev ``` -_Note: The default port is `3000`, but can be changed by setting the `PORT` environment variable. If you are changing this to run multiple instances of Remix, you must also set unique [Dev websocket ports][dev-websocket-ports] via `remix.config.js` or setting `REMIX_DEV_SERVER_WS_PORT`._ +### `remix dev --debug` + +Attaches a [Node inspector][node-inspector] to develop your app in debug mode. + +### `remix dev --port` + +Launches the app server on a given port. + +By default, the port is set to `3000`. If port `3000` is unavailable, the `dev` command will attempt to find another port that is open. Using the `--port` flag will only attempt to launch the server at the given port; if the port is unavailable the app will not start. + +```sh +remix dev --port 4001 +``` + +Alternatively, a port can be assigned to the `PORT` environment variable. [remix-app-server]: serve.md -[dev-websocket-ports]: https://remix.run/docs/en/v1/api/conventions#devserverport +[node-inspector]: https://nodejs.org/en/docs/guides/debugging-getting-started +[templates-folder-of-the-remix-repository]: https://github.com/remix-run/remix/tree/main/templates diff --git a/docs/pages/contributing.md b/docs/pages/contributing.md index 9976da491bf..a2561483936 100644 --- a/docs/pages/contributing.md +++ b/docs/pages/contributing.md @@ -39,9 +39,11 @@ The following steps will get you setup to contribute changes to this repo: git checkout dev ``` -3. Install dependencies by running `yarn`. Remix uses [`yarn` (version 1)][yarn-version-1], so you should too. If you install using `npm`, unnecessary `package-lock.json` files will be generated. +3. Install dependencies by running `yarn`. Remix uses [Yarn (version 1)][yarn-version-1], so you should too. If you install using `npm`, unnecessary `package-lock.json` files will be generated. -4. Verify you've got everything set up for local development by running `yarn test` +4. Install Playwright to be able to run tests properly by running `npx playwright install`, or [use the Visual Studio Code plugin][vscode-playwright] + +5. Verify you've got everything set up for local development by running `yarn test` ## Think You Found a Bug? @@ -147,3 +149,4 @@ There may be other branches for various features and experimentation, but all of [integration-bug-report-test-ts]: https://github.com/remix-run/remix/blob/dev/integration/bug-report-test.ts [pull-request]: https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request [yarn-workspaces]: https://classic.yarnpkg.com/en/docs/workspaces +[vscode-playwright]: https://playwright.dev/docs/intro#using-the-vs-code-extension diff --git a/docs/pages/gotchas.md b/docs/pages/gotchas.md index 2af1d7b06df..2cf87afbd65 100644 --- a/docs/pages/gotchas.md +++ b/docs/pages/gotchas.md @@ -109,6 +109,7 @@ To fix it, add the ESM package to the `serverDependenciesToBundle` option in you In our case here we're using the `dot-prop` package, so we would do it like this: ```js filename=remix.config.js +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { serverDependenciesToBundle: ["dot-prop"], // ... diff --git a/docs/prettier.config.js b/docs/prettier.config.js index 0b8c6ae9879..8bfa6089dae 100644 --- a/docs/prettier.config.js +++ b/docs/prettier.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('prettier').Options} - */ +/** @type {import('prettier').Options} */ module.exports = { ...require("../prettier.config"), printWidth: 60, diff --git a/docs/tutorials/blog.md b/docs/tutorials/blog.md index 9af6bb39b8d..a09bea3e700 100644 --- a/docs/tutorials/blog.md +++ b/docs/tutorials/blog.md @@ -386,6 +386,14 @@ Great, let's get those posts into the database with the seed script: npx prisma db seed ``` +๐Ÿ’ฟ Let's generate a migration file for our schema changes - which will be required if you deploy your application rather than just running in dev mode locally. + +```sh +npx prisma db migrate +``` + +You'll get the ability to name the migration name, ideally you can refer back to what the changes you made are, so I'd suggest `create-post-model` for the name. + ๐Ÿ’ฟ Now update the `app/models/post.server.ts` file to read from the SQLite database: ```ts filename=app/models/post.server.ts diff --git a/docs/tutorials/jokes.md b/docs/tutorials/jokes.md index 946635a4e95..4ff3d52fce9 100644 --- a/docs/tutorials/jokes.md +++ b/docs/tutorials/jokes.md @@ -463,7 +463,7 @@ body { app/routes/index.tsx -```tsx filename=app/routes/index.tsx lines=[1, 3, 5-7] +```tsx filename=app/routes/index.tsx lines=[1,3,5-7] import type { LinksFunction } from "@remix-run/node"; import stylesUrl from "~/styles/index.css"; @@ -1289,22 +1289,17 @@ export default function JokesRoute() { app/routes/index.tsx -```tsx filename=app/routes/index.tsx lines=[1,4,6-13] +```tsx filename=app/routes/index.tsx lines=[2,11-26] import type { LinksFunction } from "@remix-run/node"; import { Link } from "@remix-run/react"; import stylesUrl from "~/styles/index.css"; export const links: LinksFunction = () => { - return [ - { - rel: "stylesheet", - href: stylesUrl, - }, - ]; + return [{ rel: "stylesheet", href: stylesUrl }]; }; -export default function Index() { +export default function IndexRoute() { return (
@@ -5085,7 +5080,7 @@ export const meta: MetaFunction = () => ({ "Remix jokes app. Learn Remix and laugh at the same time!", }); -export default function Index() { +export default function IndexRoute() { return (
diff --git a/examples/basic/package.json b/examples/basic/package.json index 7e5a47762a7..04d5df2d4d2 100644 --- a/examples/basic/package.json +++ b/examples/basic/package.json @@ -7,15 +7,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/basic/remix.config.js b/examples/basic/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/basic/remix.config.js +++ b/examples/basic/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/blog-tutorial/package.json b/examples/blog-tutorial/package.json index ead4712cb1d..24d80d7859a 100644 --- a/examples/blog-tutorial/package.json +++ b/examples/blog-tutorial/package.json @@ -31,9 +31,9 @@ "@node-rs/bcrypt": "^1.6.0", "@prisma/client": "^3.13.0", "@reach/alert": "^0.17.0", - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "marked": "^4.0.15", "react": "^17.0.2", "react-dom": "^17.0.2", @@ -41,8 +41,8 @@ }, "devDependencies": { "@faker-js/faker": "^6.3.1", - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@testing-library/cypress": "^8.0.2", "@testing-library/dom": "^8.13.0", "@testing-library/jest-dom": "^5.16.4", diff --git a/examples/blog-tutorial/remix.config.js b/examples/blog-tutorial/remix.config.js index 457709942de..a2074b02762 100644 --- a/examples/blog-tutorial/remix.config.js +++ b/examples/blog-tutorial/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { cacheDirectory: "./node_modules/.cache/remix", ignoredRouteFiles: ["**/.*", "**/*.css", "**/*.test.{js,jsx,ts,tsx}"], diff --git a/examples/bullmq-task-queue/package.json b/examples/bullmq-task-queue/package.json index f089533f932..daba1b9e770 100644 --- a/examples/bullmq-task-queue/package.json +++ b/examples/bullmq-task-queue/package.json @@ -7,17 +7,17 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "bullmq": "^1.76.0", "ioredis": "^4.28.5", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/ioredis": "^4.28.8", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", diff --git a/examples/bullmq-task-queue/remix.config.js b/examples/bullmq-task-queue/remix.config.js index ac0bfe1456a..631de93af3c 100644 --- a/examples/bullmq-task-queue/remix.config.js +++ b/examples/bullmq-task-queue/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev/config').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { appDirectory: "app", browserBuildDirectory: "public/build", diff --git a/examples/catch-boundary/package.json b/examples/catch-boundary/package.json index 7e5a47762a7..04d5df2d4d2 100644 --- a/examples/catch-boundary/package.json +++ b/examples/catch-boundary/package.json @@ -7,15 +7,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/catch-boundary/remix.config.js b/examples/catch-boundary/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/catch-boundary/remix.config.js +++ b/examples/catch-boundary/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/chakra-ui/package.json b/examples/chakra-ui/package.json index 6adff22d509..f34cb4906b2 100644 --- a/examples/chakra-ui/package.json +++ b/examples/chakra-ui/package.json @@ -10,16 +10,16 @@ "@chakra-ui/react": "^1.8.6", "@emotion/react": "^11.8.1", "@emotion/styled": "^11.8.1", - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "framer-motion": "^5.6.0", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/chakra-ui/remix.config.js b/examples/chakra-ui/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/chakra-ui/remix.config.js +++ b/examples/chakra-ui/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/client-only-components/package.json b/examples/client-only-components/package.json index f99a8f91d79..7261ae4df3a 100644 --- a/examples/client-only-components/package.json +++ b/examples/client-only-components/package.json @@ -7,16 +7,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2", "remix-utils": "^2.7.0" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/client-only-components/remix.config.js b/examples/client-only-components/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/client-only-components/remix.config.js +++ b/examples/client-only-components/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/client-side-validation/package.json b/examples/client-side-validation/package.json index 7e5a47762a7..04d5df2d4d2 100644 --- a/examples/client-side-validation/package.json +++ b/examples/client-side-validation/package.json @@ -7,15 +7,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/client-side-validation/remix.config.js b/examples/client-side-validation/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/client-side-validation/remix.config.js +++ b/examples/client-side-validation/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/collected-notes/package.json b/examples/collected-notes/package.json index 08b0d477277..78cf5430d28 100644 --- a/examples/collected-notes/package.json +++ b/examples/collected-notes/package.json @@ -7,16 +7,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "collected-notes": "^2.3.0", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/collected-notes/remix.config.js b/examples/collected-notes/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/collected-notes/remix.config.js +++ b/examples/collected-notes/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/combobox-resource-route/package.json b/examples/combobox-resource-route/package.json index de4daa68036..bc8a3455e4e 100644 --- a/examples/combobox-resource-route/package.json +++ b/examples/combobox-resource-route/package.json @@ -8,16 +8,16 @@ }, "dependencies": { "@reach/combobox": "^0.16.5", - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "match-sorter": "^6.3.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/combobox-resource-route/remix.config.js b/examples/combobox-resource-route/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/combobox-resource-route/remix.config.js +++ b/examples/combobox-resource-route/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/dark-mode/package.json b/examples/dark-mode/package.json index e1a69af6ef1..03204ec429b 100644 --- a/examples/dark-mode/package.json +++ b/examples/dark-mode/package.json @@ -7,14 +7,14 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", + "@remix-run/dev": "1.6.1", "@types/react": "^17.0.38", "@types/react-dom": "^17.0.11", "typescript": "^4.5.4" diff --git a/examples/dark-mode/remix.config.js b/examples/dark-mode/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/dark-mode/remix.config.js +++ b/examples/dark-mode/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/dataloader/package.json b/examples/dataloader/package.json index ed53240a5ed..35adf969db7 100644 --- a/examples/dataloader/package.json +++ b/examples/dataloader/package.json @@ -8,9 +8,9 @@ "start:dev": "cross-env NODE_ENV=development node -r esbuild-register server/index.ts" }, "dependencies": { - "@remix-run/express": "1.6.0", - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", + "@remix-run/express": "1.6.1", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", "compression": "^1.7.4", "cross-env": "^7.0.3", "dataloader": "^2.0.0", @@ -20,8 +20,8 @@ "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "esbuild-register": "^3.3.2", diff --git a/examples/dataloader/remix.config.js b/examples/dataloader/remix.config.js index 35d7d6b4b37..6675ae232e3 100644 --- a/examples/dataloader/remix.config.js +++ b/examples/dataloader/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], serverBuildDirectory: "server/build", diff --git a/examples/emotion/package.json b/examples/emotion/package.json index b5e97277262..5893120223b 100644 --- a/examples/emotion/package.json +++ b/examples/emotion/package.json @@ -11,15 +11,15 @@ "@emotion/react": "^11.8.1", "@emotion/server": "^11.4.0", "@emotion/styled": "^11.8.1", - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/emotion/remix.config.js b/examples/emotion/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/emotion/remix.config.js +++ b/examples/emotion/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/file-and-cloudinary-upload/package.json b/examples/file-and-cloudinary-upload/package.json index d0ea06b952c..af7043a7cdc 100644 --- a/examples/file-and-cloudinary-upload/package.json +++ b/examples/file-and-cloudinary-upload/package.json @@ -7,16 +7,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "cloudinary": "^1.28.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/file-and-cloudinary-upload/remix.config.js b/examples/file-and-cloudinary-upload/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/file-and-cloudinary-upload/remix.config.js +++ b/examples/file-and-cloudinary-upload/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/firebase-auth-firestore/firebase-fixtures/auth/config.json b/examples/firebase-auth-firestore/firebase-fixtures/auth/config.json new file mode 100644 index 00000000000..16f6ddbf8ec --- /dev/null +++ b/examples/firebase-auth-firestore/firebase-fixtures/auth/config.json @@ -0,0 +1,5 @@ +{ + "signIn": { + "allowDuplicateEmails": false + } +} diff --git a/examples/firebase-auth-firestore/firebase-fixtures/firestore.rules b/examples/firebase-auth-firestore/firebase-fixtures/firestore.rules new file mode 100644 index 00000000000..2f1886fdd85 --- /dev/null +++ b/examples/firebase-auth-firestore/firebase-fixtures/firestore.rules @@ -0,0 +1,10 @@ +rules_version = '2'; +service cloud.firestore { + match /databases/{database}/documents { + // All reads and writes are done via firebase-admin, which skips Firebase rules. + // This disables public access to all Firestore data. + match /{document=**} { + allow read, write: if false; + } + } +} diff --git a/examples/firebase-auth-firestore/firebase.json b/examples/firebase-auth-firestore/firebase.json index cdcf8e18b1e..951a7e24916 100644 --- a/examples/firebase-auth-firestore/firebase.json +++ b/examples/firebase-auth-firestore/firebase.json @@ -9,5 +9,8 @@ "ui": { "enabled": true } + }, + "firestore": { + "rules": "./firebase-fixtures/firestore.rules" } } diff --git a/examples/firebase-auth-firestore/package.json b/examples/firebase-auth-firestore/package.json index a4ae43fbedc..37124d3ff81 100644 --- a/examples/firebase-auth-firestore/package.json +++ b/examples/firebase-auth-firestore/package.json @@ -8,16 +8,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "firebase-admin": "^10.0.2", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.43", "@types/react-dom": "^17.0.14", "eslint": "^8.12.0", diff --git a/examples/firebase-auth-firestore/remix.config.js b/examples/firebase-auth-firestore/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/firebase-auth-firestore/remix.config.js +++ b/examples/firebase-auth-firestore/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/form-to-notion-db/package.json b/examples/form-to-notion-db/package.json index 7f0dcacae84..e2952668e91 100644 --- a/examples/form-to-notion-db/package.json +++ b/examples/form-to-notion-db/package.json @@ -8,15 +8,15 @@ }, "dependencies": { "@notionhq/client": "^0.4.13", - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/form-to-notion-db/remix.config.js b/examples/form-to-notion-db/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/form-to-notion-db/remix.config.js +++ b/examples/form-to-notion-db/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/framer-motion/package.json b/examples/framer-motion/package.json index d8ccf8d9135..155b3e72adf 100644 --- a/examples/framer-motion/package.json +++ b/examples/framer-motion/package.json @@ -7,16 +7,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "framer-motion": "^5.6.0", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/framer-motion/remix.config.js b/examples/framer-motion/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/framer-motion/remix.config.js +++ b/examples/framer-motion/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/framer-route-animation/package.json b/examples/framer-route-animation/package.json index 769225c9f5d..0fd16ec6201 100644 --- a/examples/framer-route-animation/package.json +++ b/examples/framer-route-animation/package.json @@ -7,16 +7,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "framer-motion": "^6.2.8", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/framer-route-animation/remix.config.js b/examples/framer-route-animation/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/framer-route-animation/remix.config.js +++ b/examples/framer-route-animation/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/gdpr-cookie-consent/package.json b/examples/gdpr-cookie-consent/package.json index 7e5a47762a7..04d5df2d4d2 100644 --- a/examples/gdpr-cookie-consent/package.json +++ b/examples/gdpr-cookie-consent/package.json @@ -7,15 +7,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/gdpr-cookie-consent/remix.config.js b/examples/gdpr-cookie-consent/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/gdpr-cookie-consent/remix.config.js +++ b/examples/gdpr-cookie-consent/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/google-analytics/package.json b/examples/google-analytics/package.json index 7e5a47762a7..04d5df2d4d2 100644 --- a/examples/google-analytics/package.json +++ b/examples/google-analytics/package.json @@ -7,15 +7,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/google-analytics/remix.config.js b/examples/google-analytics/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/google-analytics/remix.config.js +++ b/examples/google-analytics/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/graphql-api/package.json b/examples/graphql-api/package.json index 9b9a53ca07d..d45cfbc0c33 100644 --- a/examples/graphql-api/package.json +++ b/examples/graphql-api/package.json @@ -10,9 +10,9 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "apollo-server-errors": "^3.3.1", "graphql": "^16.4.0", "react": "^17.0.2", @@ -22,8 +22,8 @@ "@graphql-codegen/cli": "2.6.2", "@graphql-codegen/typescript": "^2.4.5", "@graphql-codegen/typescript-operations": "^2.3.2", - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/graphql-api/remix.config.js b/examples/graphql-api/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/graphql-api/remix.config.js +++ b/examples/graphql-api/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/image-resize/package.json b/examples/image-resize/package.json index dc993a51653..02ef389a416 100644 --- a/examples/image-resize/package.json +++ b/examples/image-resize/package.json @@ -7,16 +7,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2", "sharp": "^0.30.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "@types/sharp": "^0.29.5", diff --git a/examples/image-resize/remix.config.js b/examples/image-resize/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/image-resize/remix.config.js +++ b/examples/image-resize/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/infinite-scrolling/package.json b/examples/infinite-scrolling/package.json index fca27b614f7..959cb680b40 100644 --- a/examples/infinite-scrolling/package.json +++ b/examples/infinite-scrolling/package.json @@ -7,16 +7,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2", "react-virtual": "^2.10.4" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.42", "@types/react-dom": "^17.0.14", "eslint": "^8.11.0", diff --git a/examples/infinite-scrolling/remix.config.js b/examples/infinite-scrolling/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/infinite-scrolling/remix.config.js +++ b/examples/infinite-scrolling/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/io-ts-formdata-decoding/package.json b/examples/io-ts-formdata-decoding/package.json index 9488295d573..7b94b292af9 100644 --- a/examples/io-ts-formdata-decoding/package.json +++ b/examples/io-ts-formdata-decoding/package.json @@ -7,17 +7,17 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "fp-ts": "^2.11.8", "io-ts": "^2.2.16", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/io-ts-formdata-decoding/remix.config.js b/examples/io-ts-formdata-decoding/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/io-ts-formdata-decoding/remix.config.js +++ b/examples/io-ts-formdata-decoding/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/ioredis/package.json b/examples/ioredis/package.json index 84afc4d7cd9..24ea0ac2138 100644 --- a/examples/ioredis/package.json +++ b/examples/ioredis/package.json @@ -7,16 +7,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "ioredis": "^4.28.5", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/ioredis": "^4.28.8", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", diff --git a/examples/ioredis/remix.config.js b/examples/ioredis/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/ioredis/remix.config.js +++ b/examples/ioredis/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/jokes/package.json b/examples/jokes/package.json index d02a1497079..d254cfcc56c 100644 --- a/examples/jokes/package.json +++ b/examples/jokes/package.json @@ -8,16 +8,16 @@ }, "dependencies": { "@prisma/client": "^3.10.0", - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "bcryptjs": "^2.4.3", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/bcryptjs": "^2.4.2", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", diff --git a/examples/jokes/remix.config.js b/examples/jokes/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/jokes/remix.config.js +++ b/examples/jokes/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/mantine/package.json b/examples/mantine/package.json index c4dc56bfadd..9bde8063ae2 100644 --- a/examples/mantine/package.json +++ b/examples/mantine/package.json @@ -10,15 +10,15 @@ "@mantine/core": "^3.6.14", "@mantine/hooks": "^3.6.14", "@mantine/ssr": "^3.6.14", - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/mantine/remix.config.js b/examples/mantine/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/mantine/remix.config.js +++ b/examples/mantine/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/msw/package.json b/examples/msw/package.json index 8ca9510dee0..e9e409c8d73 100644 --- a/examples/msw/package.json +++ b/examples/msw/package.json @@ -7,15 +7,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.40", "@types/react-dom": "^17.0.13", "eslint": "^8.11.0", diff --git a/examples/msw/remix.config.js b/examples/msw/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/msw/remix.config.js +++ b/examples/msw/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/multiple-forms/package.json b/examples/multiple-forms/package.json index 7e5a47762a7..04d5df2d4d2 100644 --- a/examples/multiple-forms/package.json +++ b/examples/multiple-forms/package.json @@ -7,15 +7,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/multiple-forms/remix.config.js b/examples/multiple-forms/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/multiple-forms/remix.config.js +++ b/examples/multiple-forms/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/multiple-params/package.json b/examples/multiple-params/package.json index 7e5a47762a7..04d5df2d4d2 100644 --- a/examples/multiple-params/package.json +++ b/examples/multiple-params/package.json @@ -7,15 +7,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/multiple-params/remix.config.js b/examples/multiple-params/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/multiple-params/remix.config.js +++ b/examples/multiple-params/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/newsletter-signup/package.json b/examples/newsletter-signup/package.json index 7e5a47762a7..04d5df2d4d2 100644 --- a/examples/newsletter-signup/package.json +++ b/examples/newsletter-signup/package.json @@ -7,15 +7,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/newsletter-signup/remix.config.js b/examples/newsletter-signup/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/newsletter-signup/remix.config.js +++ b/examples/newsletter-signup/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/nprogress/package.json b/examples/nprogress/package.json index c9ec143613e..e8be7880b70 100644 --- a/examples/nprogress/package.json +++ b/examples/nprogress/package.json @@ -7,16 +7,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "nprogress": "^0.2.0", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/nprogress": "^0.2.0", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", diff --git a/examples/nprogress/remix.config.js b/examples/nprogress/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/nprogress/remix.config.js +++ b/examples/nprogress/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/on-demand-hydration/package.json b/examples/on-demand-hydration/package.json index f99a8f91d79..7261ae4df3a 100644 --- a/examples/on-demand-hydration/package.json +++ b/examples/on-demand-hydration/package.json @@ -7,16 +7,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2", "remix-utils": "^2.7.0" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/on-demand-hydration/remix.config.js b/examples/on-demand-hydration/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/on-demand-hydration/remix.config.js +++ b/examples/on-demand-hydration/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/outlet-form-rerender/package.json b/examples/outlet-form-rerender/package.json index 7e5a47762a7..04d5df2d4d2 100644 --- a/examples/outlet-form-rerender/package.json +++ b/examples/outlet-form-rerender/package.json @@ -7,15 +7,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/outlet-form-rerender/remix.config.js b/examples/outlet-form-rerender/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/outlet-form-rerender/remix.config.js +++ b/examples/outlet-form-rerender/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/pathless-routes/package.json b/examples/pathless-routes/package.json index 7e5a47762a7..04d5df2d4d2 100644 --- a/examples/pathless-routes/package.json +++ b/examples/pathless-routes/package.json @@ -7,15 +7,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/pathless-routes/remix.config.js b/examples/pathless-routes/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/pathless-routes/remix.config.js +++ b/examples/pathless-routes/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/pm-app/package.json b/examples/pm-app/package.json index d3baadc9bfe..9facea983c0 100644 --- a/examples/pm-app/package.json +++ b/examples/pm-app/package.json @@ -23,9 +23,9 @@ "@reach/combobox": "^0.16.5", "@reach/dialog": "^0.16.2", "@reach/menu-button": "^0.16.2", - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "bcrypt": "^5.0.1", "clsx": "^1.1.1", "match-sorter": "^6.3.1", @@ -35,9 +35,9 @@ "validator": "^13.7.0" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", - "@remix-run/express": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", + "@remix-run/express": "1.6.1", "@types/bcrypt": "^5.0.0", "@types/express": "^4.17.13", "@types/react": "^17.0.39", diff --git a/examples/pm-app/remix.config.js b/examples/pm-app/remix.config.js index 3f41e8dae27..b089e89db43 100644 --- a/examples/pm-app/remix.config.js +++ b/examples/pm-app/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/quirrel/package.json b/examples/quirrel/package.json index d9817148ab7..8f913df7064 100644 --- a/examples/quirrel/package.json +++ b/examples/quirrel/package.json @@ -9,16 +9,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "quirrel": "^1.8.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/quirrel/remix.config.js b/examples/quirrel/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/quirrel/remix.config.js +++ b/examples/quirrel/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/react-spring/package.json b/examples/react-spring/package.json index 174236ade81..9ebdea90cd0 100644 --- a/examples/react-spring/package.json +++ b/examples/react-spring/package.json @@ -7,16 +7,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2", "react-spring": "^9.4.3" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/react-spring/remix.config.js b/examples/react-spring/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/react-spring/remix.config.js +++ b/examples/react-spring/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/redis-upstash-session/package.json b/examples/redis-upstash-session/package.json index 7e5a47762a7..04d5df2d4d2 100644 --- a/examples/redis-upstash-session/package.json +++ b/examples/redis-upstash-session/package.json @@ -7,15 +7,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/redis-upstash-session/remix.config.js b/examples/redis-upstash-session/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/redis-upstash-session/remix.config.js +++ b/examples/redis-upstash-session/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/remix-auth-auth0/package.json b/examples/remix-auth-auth0/package.json index 8f8cfa91266..a8dacf66b9c 100644 --- a/examples/remix-auth-auth0/package.json +++ b/examples/remix-auth-auth0/package.json @@ -7,17 +7,17 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2", "remix-auth": "^3.2.1", "remix-auth-auth0": "^1.3.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/remix-auth-auth0/remix.config.js b/examples/remix-auth-auth0/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/remix-auth-auth0/remix.config.js +++ b/examples/remix-auth-auth0/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/remix-auth-form/package.json b/examples/remix-auth-form/package.json index bf5a4f06c5f..370f1f32daa 100644 --- a/examples/remix-auth-form/package.json +++ b/examples/remix-auth-form/package.json @@ -7,17 +7,17 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2", "remix-auth": "^3.2.1", "remix-auth-form": "^1.1.1" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/remix-auth-form/remix.config.js b/examples/remix-auth-form/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/remix-auth-form/remix.config.js +++ b/examples/remix-auth-form/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/remix-auth-github/package.json b/examples/remix-auth-github/package.json index 7ea83ec2a9f..3800c427284 100644 --- a/examples/remix-auth-github/package.json +++ b/examples/remix-auth-github/package.json @@ -7,17 +7,17 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2", "remix-auth": "^3.2.1", "remix-auth-github": "^1.0.0" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/remix-auth-github/remix.config.js b/examples/remix-auth-github/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/remix-auth-github/remix.config.js +++ b/examples/remix-auth-github/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/remix-auth-supabase-github/package.json b/examples/remix-auth-supabase-github/package.json index 3d5c6ac0b61..d08dea561dd 100644 --- a/examples/remix-auth-supabase-github/package.json +++ b/examples/remix-auth-supabase-github/package.json @@ -7,9 +7,9 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "@supabase/supabase-js": "^1.30.7", "react": "^17.0.2", "react-dom": "^17.0.2", @@ -17,8 +17,8 @@ "remix-auth-supabase": "^3.1.0" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/remix-auth-supabase-github/remix.config.js b/examples/remix-auth-supabase-github/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/remix-auth-supabase-github/remix.config.js +++ b/examples/remix-auth-supabase-github/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/remix-auth-supabase/package.json b/examples/remix-auth-supabase/package.json index e1c6d514ce7..40a2d147f8c 100644 --- a/examples/remix-auth-supabase/package.json +++ b/examples/remix-auth-supabase/package.json @@ -7,9 +7,9 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "@supabase/supabase-js": "^1.30.7", "react": "^17.0.2", "react-dom": "^17.0.2", @@ -17,8 +17,8 @@ "remix-auth-supabase": "^3.1.0" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/remix-auth-supabase/remix.config.js b/examples/remix-auth-supabase/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/remix-auth-supabase/remix.config.js +++ b/examples/remix-auth-supabase/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/route-modal/package.json b/examples/route-modal/package.json index 465af76e700..d6997ed495f 100644 --- a/examples/route-modal/package.json +++ b/examples/route-modal/package.json @@ -8,15 +8,15 @@ }, "dependencies": { "@reach/dialog": "^0.16.2", - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/route-modal/remix.config.js b/examples/route-modal/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/route-modal/remix.config.js +++ b/examples/route-modal/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/routes-gen/package.json b/examples/routes-gen/package.json index e3f6867c2e1..4221725fd77 100644 --- a/examples/routes-gen/package.json +++ b/examples/routes-gen/package.json @@ -8,16 +8,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2", "routes-gen": "^0.3.0" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@routes-gen/remix": "^0.2.10", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", diff --git a/examples/routes-gen/remix.config.js b/examples/routes-gen/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/routes-gen/remix.config.js +++ b/examples/routes-gen/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/rust/package.json b/examples/rust/package.json index df953bb983e..10ec10a3dc1 100644 --- a/examples/rust/package.json +++ b/examples/rust/package.json @@ -8,16 +8,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2", "rust-functions": "file:rust-functions/pkg" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/rust/remix.config.js b/examples/rust/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/rust/remix.config.js +++ b/examples/rust/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/sanity/package.json b/examples/sanity/package.json index a175719b966..0b2aaad17b2 100644 --- a/examples/sanity/package.json +++ b/examples/sanity/package.json @@ -7,9 +7,9 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "@sanity/block-content-to-react": "^3.0.0", "@sanity/groq-store": "^0.3.1", "@sanity/image-url": "^1.0.1", @@ -18,8 +18,8 @@ "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "eslint": "^8.10.0" }, "engines": { diff --git a/examples/sanity/remix.config.js b/examples/sanity/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/sanity/remix.config.js +++ b/examples/sanity/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/sass/package.json b/examples/sass/package.json index 9f0402e4954..7ad39131990 100644 --- a/examples/sass/package.json +++ b/examples/sass/package.json @@ -11,15 +11,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/sass/remix.config.js b/examples/sass/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/sass/remix.config.js +++ b/examples/sass/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/search-input/package.json b/examples/search-input/package.json index 7e5a47762a7..04d5df2d4d2 100644 --- a/examples/search-input/package.json +++ b/examples/search-input/package.json @@ -7,15 +7,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/search-input/remix.config.js b/examples/search-input/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/search-input/remix.config.js +++ b/examples/search-input/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/session-flash/package.json b/examples/session-flash/package.json index 8c56c9b54c2..ed67a54af89 100644 --- a/examples/session-flash/package.json +++ b/examples/session-flash/package.json @@ -8,16 +8,16 @@ }, "dependencies": { "@fontsource/fira-sans": "^4.5.8", - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2", "react-router-dom": "^6.3.0" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/session-flash/remix.config.js b/examples/session-flash/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/session-flash/remix.config.js +++ b/examples/session-flash/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/sharing-loader-data/package.json b/examples/sharing-loader-data/package.json index 7e5a47762a7..04d5df2d4d2 100644 --- a/examples/sharing-loader-data/package.json +++ b/examples/sharing-loader-data/package.json @@ -7,15 +7,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/sharing-loader-data/remix.config.js b/examples/sharing-loader-data/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/sharing-loader-data/remix.config.js +++ b/examples/sharing-loader-data/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/socket.io/package.json b/examples/socket.io/package.json index 038a98de90e..ff7ba8e7b48 100644 --- a/examples/socket.io/package.json +++ b/examples/socket.io/package.json @@ -8,9 +8,9 @@ "start:dev": "cross-env NODE_ENV=development node server/index.js" }, "dependencies": { - "@remix-run/express": "1.6.0", - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", + "@remix-run/express": "1.6.1", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", "compression": "^1.7.4", "cross-env": "^7.0.3", "express": "^4.17.3", @@ -21,8 +21,8 @@ "socket.io-client": "^4.4.1" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/socket.io/remix.config.js b/examples/socket.io/remix.config.js index 7fdb0411255..fd9331ed1a8 100644 --- a/examples/socket.io/remix.config.js +++ b/examples/socket.io/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], serverBuildDirectory: "server/build", diff --git a/examples/stitches/package.json b/examples/stitches/package.json index 65c3579db4b..e410c1e5f3b 100644 --- a/examples/stitches/package.json +++ b/examples/stitches/package.json @@ -7,16 +7,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "@stitches/react": "^1.2.7", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/stitches/remix.config.js b/examples/stitches/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/stitches/remix.config.js +++ b/examples/stitches/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/strapi/package.json b/examples/strapi/package.json index 8d603163347..9164037e98b 100755 --- a/examples/strapi/package.json +++ b/examples/strapi/package.json @@ -9,16 +9,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "marked": "^4.0.12", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/marked": "^4.0.2", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", diff --git a/examples/strapi/remix.config.js b/examples/strapi/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100755 --- a/examples/strapi/remix.config.js +++ b/examples/strapi/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/stripe-integration/package.json b/examples/stripe-integration/package.json index 110b32cc5c6..1d66d5cd9ce 100644 --- a/examples/stripe-integration/package.json +++ b/examples/stripe-integration/package.json @@ -7,16 +7,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2", "stripe": "^8.209.0" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.40", "@types/react-dom": "^17.0.13", "eslint": "^8.11.0", diff --git a/examples/stripe-integration/remix.config.js b/examples/stripe-integration/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/stripe-integration/remix.config.js +++ b/examples/stripe-integration/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/styled-components/package.json b/examples/styled-components/package.json index 984fb43fcca..f4555d76d4d 100644 --- a/examples/styled-components/package.json +++ b/examples/styled-components/package.json @@ -7,16 +7,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2", "styled-components": "^5.3.3" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "@types/styled-components": "^5.1.24", diff --git a/examples/styled-components/remix.config.js b/examples/styled-components/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/styled-components/remix.config.js +++ b/examples/styled-components/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/styletron/package.json b/examples/styletron/package.json index a68db038dd6..512392fbb75 100644 --- a/examples/styletron/package.json +++ b/examples/styletron/package.json @@ -7,17 +7,17 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2", "styletron-engine-atomic": "^1.4.8", "styletron-react": "^6.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "@types/styled-components": "^5.1.24", diff --git a/examples/styletron/remix.config.js b/examples/styletron/remix.config.js index 1755894599a..ecf1253bfc8 100644 --- a/examples/styletron/remix.config.js +++ b/examples/styletron/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: [".*"], // appDirectory: "app", diff --git a/examples/supabase-subscription/package.json b/examples/supabase-subscription/package.json index c6bee02a276..32208af0bf9 100644 --- a/examples/supabase-subscription/package.json +++ b/examples/supabase-subscription/package.json @@ -7,17 +7,17 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "@supabase/supabase-js": "^1.31.1", "react": "^17.0.2", "react-dom": "^17.0.2", "react-supabase": "^0.2.0" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/supabase-subscription/remix.config.js b/examples/supabase-subscription/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/supabase-subscription/remix.config.js +++ b/examples/supabase-subscription/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/tailwindcss/package.json b/examples/tailwindcss/package.json index cd58baa129a..b9a95e35d65 100644 --- a/examples/tailwindcss/package.json +++ b/examples/tailwindcss/package.json @@ -12,15 +12,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/tailwindcss/remix.config.js b/examples/tailwindcss/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/tailwindcss/remix.config.js +++ b/examples/tailwindcss/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/template/package.json b/examples/template/package.json index 7e5a47762a7..04d5df2d4d2 100644 --- a/examples/template/package.json +++ b/examples/template/package.json @@ -7,15 +7,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/template/remix.config.js b/examples/template/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/template/remix.config.js +++ b/examples/template/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/tiptap-collab-editing/package.json b/examples/tiptap-collab-editing/package.json index e188664a4bf..ad023f2b6bb 100644 --- a/examples/tiptap-collab-editing/package.json +++ b/examples/tiptap-collab-editing/package.json @@ -7,9 +7,9 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "@tiptap/extension-collaboration": "^2.0.0-beta.33", "@tiptap/react": "^2.0.0-beta.108", "@tiptap/starter-kit": "^2.0.0-beta.183", @@ -19,8 +19,8 @@ "yjs": "^13.5.34" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/tiptap-collab-editing/remix.config.js b/examples/tiptap-collab-editing/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/tiptap-collab-editing/remix.config.js +++ b/examples/tiptap-collab-editing/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/toast-message/package.json b/examples/toast-message/package.json index 7aa7825c6c6..11717829b0b 100644 --- a/examples/toast-message/package.json +++ b/examples/toast-message/package.json @@ -7,16 +7,16 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2", "react-hot-toast": "^2.2.0" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/toast-message/remix.config.js b/examples/toast-message/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/toast-message/remix.config.js +++ b/examples/toast-message/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/turborepo-vercel/apps/remix-app/remix.config.js b/examples/turborepo-vercel/apps/remix-app/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/turborepo-vercel/apps/remix-app/remix.config.js +++ b/examples/turborepo-vercel/apps/remix-app/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/examples/twind/package.json b/examples/twind/package.json index 3d074e28733..e10bd4f5df5 100644 --- a/examples/twind/package.json +++ b/examples/twind/package.json @@ -7,9 +7,9 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "@twind/preset-autoprefix": "1.0.0-next.38", "@twind/preset-tailwind": "1.0.0-next.38", "@twind/with-remix": "1.0.0-next.38", @@ -19,8 +19,8 @@ "twind": "^1.0.0-next.32" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/twind/remix.config.js b/examples/twind/remix.config.js index fbdc21f9882..ceaf8bf66da 100644 --- a/examples/twind/remix.config.js +++ b/examples/twind/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], appDirectory: "app", diff --git a/examples/usematches-loader-data/package.json b/examples/usematches-loader-data/package.json index 7e5a47762a7..04d5df2d4d2 100644 --- a/examples/usematches-loader-data/package.json +++ b/examples/usematches-loader-data/package.json @@ -7,15 +7,15 @@ "start": "remix-serve build" }, "dependencies": { - "@remix-run/node": "1.6.0", - "@remix-run/react": "1.6.0", - "@remix-run/serve": "1.6.0", + "@remix-run/node": "1.6.1", + "@remix-run/react": "1.6.1", + "@remix-run/serve": "1.6.1", "react": "^17.0.2", "react-dom": "^17.0.2" }, "devDependencies": { - "@remix-run/dev": "1.6.0", - "@remix-run/eslint-config": "1.6.0", + "@remix-run/dev": "1.6.1", + "@remix-run/eslint-config": "1.6.1", "@types/react": "^17.0.39", "@types/react-dom": "^17.0.13", "eslint": "^8.10.0", diff --git a/examples/usematches-loader-data/remix.config.js b/examples/usematches-loader-data/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/examples/usematches-loader-data/remix.config.js +++ b/examples/usematches-loader-data/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/integration/helpers/cf-template/remix.config.js b/integration/helpers/cf-template/remix.config.js index 684d139d7d2..a4fac89855c 100644 --- a/integration/helpers/cf-template/remix.config.js +++ b/integration/helpers/cf-template/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { serverBuildTarget: "cloudflare-workers", server: "./server.js", diff --git a/integration/helpers/deno-template/remix.config.js b/integration/helpers/deno-template/remix.config.js index 4dde611cb5c..d621422e56f 100644 --- a/integration/helpers/deno-template/remix.config.js +++ b/integration/helpers/deno-template/remix.config.js @@ -1,3 +1,4 @@ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { serverBuildTarget: "deno", server: "./server.ts", diff --git a/integration/helpers/node-template/remix.config.js b/integration/helpers/node-template/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/integration/helpers/node-template/remix.config.js +++ b/integration/helpers/node-template/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/packages/create-remix/package.json b/packages/create-remix/package.json index f12ed375d19..289a36fa1df 100644 --- a/packages/create-remix/package.json +++ b/packages/create-remix/package.json @@ -1,6 +1,6 @@ { "name": "create-remix", - "version": "1.6.0", + "version": "1.6.1", "description": "Create a new Remix app", "homepage": "https://remix.run", "bugs": { @@ -16,7 +16,7 @@ "create-remix": "cli.js" }, "dependencies": { - "@remix-run/dev": "1.6.0" + "@remix-run/dev": "1.6.1" }, "engines": { "node": ">=14" diff --git a/packages/remix-architect/package.json b/packages/remix-architect/package.json index 9aa661a7933..8f77c828d47 100644 --- a/packages/remix-architect/package.json +++ b/packages/remix-architect/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/architect", - "version": "1.6.0", + "version": "1.6.1", "description": "Architect server request handler for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" @@ -13,7 +13,7 @@ "license": "MIT", "dependencies": { "@architect/functions": "^5.0.2", - "@remix-run/node": "1.6.0", + "@remix-run/node": "1.6.1", "@types/aws-lambda": "^8.10.82" }, "devDependencies": { diff --git a/packages/remix-cloudflare-pages/package.json b/packages/remix-cloudflare-pages/package.json index 3ca0fa626af..e730a4ed6ce 100644 --- a/packages/remix-cloudflare-pages/package.json +++ b/packages/remix-cloudflare-pages/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/cloudflare-pages", - "version": "1.6.0", + "version": "1.6.1", "description": "Cloudflare Pages request handler for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" @@ -14,7 +14,7 @@ "main": "./index.js", "module": "./esm/index.js", "dependencies": { - "@remix-run/cloudflare": "1.6.0" + "@remix-run/cloudflare": "1.6.1" }, "devDependencies": { "@cloudflare/workers-types": "^3.4.0", diff --git a/packages/remix-cloudflare-workers/package.json b/packages/remix-cloudflare-workers/package.json index bc998aa6f9f..34b900919fc 100644 --- a/packages/remix-cloudflare-workers/package.json +++ b/packages/remix-cloudflare-workers/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/cloudflare-workers", - "version": "1.6.0", + "version": "1.6.1", "description": "Cloudflare worker request handler for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" @@ -15,7 +15,7 @@ "module": "./esm/index.js", "dependencies": { "@cloudflare/kv-asset-handler": "^0.1.3", - "@remix-run/cloudflare": "1.6.0" + "@remix-run/cloudflare": "1.6.1" }, "devDependencies": { "@cloudflare/workers-types": "^3.4.0" diff --git a/packages/remix-cloudflare/package.json b/packages/remix-cloudflare/package.json index 2f26af76821..1d83e88c35f 100644 --- a/packages/remix-cloudflare/package.json +++ b/packages/remix-cloudflare/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/cloudflare", - "version": "1.6.0", + "version": "1.6.1", "description": "Cloudflare platform abstractions for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" @@ -13,7 +13,7 @@ "license": "MIT", "dependencies": { "@cloudflare/kv-asset-handler": "^0.1.3", - "@remix-run/server-runtime": "1.6.0" + "@remix-run/server-runtime": "1.6.1" }, "devDependencies": { "@cloudflare/workers-types": "^3.4.0" diff --git a/packages/remix-deno/package.json b/packages/remix-deno/package.json index 46e4f2ef150..65347f73884 100644 --- a/packages/remix-deno/package.json +++ b/packages/remix-deno/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/deno", - "version": "1.6.0", + "version": "1.6.1", "description": "Deno platform abstractions for Remix", "homepage": "https://remix.run", "bugs": { @@ -14,7 +14,7 @@ "license": "MIT", "sideEffects": false, "dependencies": { - "@remix-run/server-runtime": "1.6.0", + "@remix-run/server-runtime": "1.6.1", "mime": "^3.0.0" }, "engines": { diff --git a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/remix.config.js b/packages/remix-dev/__tests__/fixtures/replace-remix-imports/remix.config.js index a83517ba5f8..63891ac2ab2 100644 --- a/packages/remix-dev/__tests__/fixtures/replace-remix-imports/remix.config.js +++ b/packages/remix-dev/__tests__/fixtures/replace-remix-imports/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { cacheDirectory: "./node_modules/.cache/remix", ignoredRouteFiles: [".*", "**/*.css", "**/*.test.{js,jsx,ts,tsx}"], diff --git a/packages/remix-dev/__tests__/fixtures/stack/remix.config.js b/packages/remix-dev/__tests__/fixtures/stack/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/packages/remix-dev/__tests__/fixtures/stack/remix.config.js +++ b/packages/remix-dev/__tests__/fixtures/stack/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/packages/remix-dev/package.json b/packages/remix-dev/package.json index 2b95c41ca72..d7d759d6a64 100644 --- a/packages/remix-dev/package.json +++ b/packages/remix-dev/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/dev", - "version": "1.6.0", + "version": "1.6.1", "description": "Dev tools and CLI for Remix", "homepage": "https://remix.run", "bugs": { @@ -22,7 +22,7 @@ "@babel/preset-typescript": "^7.17.12", "@esbuild-plugins/node-modules-polyfill": "^0.1.4", "@npmcli/package-json": "^2.0.0", - "@remix-run/server-runtime": "1.6.0", + "@remix-run/server-runtime": "1.6.1", "@yarnpkg/esbuild-plugin-pnp": "^2.0.0", "cacache": "^15.0.5", "chalk": "^4.1.2", diff --git a/packages/remix-eslint-config/index.js b/packages/remix-eslint-config/index.js index d165d347bf6..541702546f8 100644 --- a/packages/remix-eslint-config/index.js +++ b/packages/remix-eslint-config/index.js @@ -18,9 +18,7 @@ const OFF = 0; // const WARN = 1; // const ERROR = 2; -/** - * @type {import("eslint").Linter.Config} - */ +/** @type {import('eslint').Linter.Config} */ const config = { parser: "@babel/eslint-parser", parserOptions: { diff --git a/packages/remix-eslint-config/package.json b/packages/remix-eslint-config/package.json index 48daae2cfc7..fdbd685a6e6 100644 --- a/packages/remix-eslint-config/package.json +++ b/packages/remix-eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/eslint-config", - "version": "1.6.0", + "version": "1.6.1", "description": "ESLint configuration for Remix projects", "bugs": { "url": "https://github.com/remix-run/remix/issues" diff --git a/packages/remix-express/package.json b/packages/remix-express/package.json index 77918315878..a3f79e3abc2 100644 --- a/packages/remix-express/package.json +++ b/packages/remix-express/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/express", - "version": "1.6.0", + "version": "1.6.1", "description": "Express server request handler for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" @@ -12,7 +12,7 @@ }, "license": "MIT", "dependencies": { - "@remix-run/node": "1.6.0" + "@remix-run/node": "1.6.1" }, "devDependencies": { "@types/express": "^4.17.9", diff --git a/packages/remix-netlify/package.json b/packages/remix-netlify/package.json index ea9ecdbe73f..0c2a1cc9247 100644 --- a/packages/remix-netlify/package.json +++ b/packages/remix-netlify/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/netlify", - "version": "1.6.0", + "version": "1.6.1", "description": "Netlify server request handler for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" @@ -12,7 +12,7 @@ }, "license": "MIT", "dependencies": { - "@remix-run/node": "1.6.0" + "@remix-run/node": "1.6.1" }, "devDependencies": { "@netlify/functions": "^1.0.0" diff --git a/packages/remix-node/package.json b/packages/remix-node/package.json index dd19281503b..e625d21ae94 100644 --- a/packages/remix-node/package.json +++ b/packages/remix-node/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/node", - "version": "1.6.0", + "version": "1.6.1", "description": "Node.js platform abstractions for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" @@ -13,7 +13,7 @@ "license": "MIT", "sideEffects": false, "dependencies": { - "@remix-run/server-runtime": "1.6.0", + "@remix-run/server-runtime": "1.6.1", "@remix-run/web-fetch": "^4.1.3", "@remix-run/web-file": "^3.0.2", "@remix-run/web-stream": "^1.0.3", diff --git a/packages/remix-react/package.json b/packages/remix-react/package.json index af50e4da62e..27ccd78cfb3 100644 --- a/packages/remix-react/package.json +++ b/packages/remix-react/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/react", - "version": "1.6.0", + "version": "1.6.1", "description": "React DOM bindings for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" diff --git a/packages/remix-serve/package.json b/packages/remix-serve/package.json index f1da8774621..a316a354b94 100644 --- a/packages/remix-serve/package.json +++ b/packages/remix-serve/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/serve", - "version": "1.6.0", + "version": "1.6.1", "description": "Production application server for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" @@ -15,7 +15,7 @@ "remix-serve": "cli.js" }, "dependencies": { - "@remix-run/express": "1.6.0", + "@remix-run/express": "1.6.1", "compression": "^1.7.4", "express": "^4.17.1", "morgan": "^1.10.0" diff --git a/packages/remix-server-runtime/package.json b/packages/remix-server-runtime/package.json index 4582915c6f7..3de2ab8e612 100644 --- a/packages/remix-server-runtime/package.json +++ b/packages/remix-server-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/server-runtime", - "version": "1.6.0", + "version": "1.6.1", "description": "Server runtime for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" diff --git a/packages/remix-vercel/package.json b/packages/remix-vercel/package.json index ebace35c9ba..baa2802b5fc 100644 --- a/packages/remix-vercel/package.json +++ b/packages/remix-vercel/package.json @@ -1,6 +1,6 @@ { "name": "@remix-run/vercel", - "version": "1.6.0", + "version": "1.6.1", "description": "Vercel server request handler for Remix", "bugs": { "url": "https://github.com/remix-run/remix/issues" @@ -12,7 +12,7 @@ }, "license": "MIT", "dependencies": { - "@remix-run/node": "1.6.0" + "@remix-run/node": "1.6.1" }, "devDependencies": { "@types/supertest": "^2.0.10", diff --git a/packages/remix/package.json b/packages/remix/package.json index 1662362718d..21905638541 100644 --- a/packages/remix/package.json +++ b/packages/remix/package.json @@ -1,6 +1,6 @@ { "name": "remix", - "version": "1.6.0", + "version": "1.6.1", "description": "A framework for building better websites", "homepage": "https://remix.run", "bugs": { diff --git a/prettier.config.js b/prettier.config.js index 6588ba1fea5..27cca4c3daf 100644 --- a/prettier.config.js +++ b/prettier.config.js @@ -1,4 +1,2 @@ -/** - * @type {import('prettier').Options} - */ +/** @type {import('prettier').Options} */ module.exports = {}; diff --git a/scripts/deployment-test/package.json b/scripts/deployment-test/package.json index 0f66031980f..9ea02350b34 100644 --- a/scripts/deployment-test/package.json +++ b/scripts/deployment-test/package.json @@ -10,7 +10,7 @@ "@architect/utils": "^3.0.4", "@cloudflare/wrangler": "latest", "@iarna/toml": "^2.2.5", - "@remix-run/dev": "1.6.0", + "@remix-run/dev": "1.6.1", "@testing-library/cypress": "^8.0.2", "aws-sdk": "^2.1055.0", "cypress": "^9.2.0", diff --git a/scripts/playground/template/remix.config.js b/scripts/playground/template/remix.config.js index 457709942de..a2074b02762 100644 --- a/scripts/playground/template/remix.config.js +++ b/scripts/playground/template/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { cacheDirectory: "./node_modules/.cache/remix", ignoredRouteFiles: ["**/.*", "**/*.css", "**/*.test.{js,jsx,ts,tsx}"], diff --git a/scripts/release/comment.mjs b/scripts/release/comment.mjs deleted file mode 100644 index 2e965770423..00000000000 --- a/scripts/release/comment.mjs +++ /dev/null @@ -1,66 +0,0 @@ -import { - commentOnIssue, - commentOnPullRequest, - getIssuesClosedByPullRequests, - prsMergedSinceLast, -} from "./octokit.mjs"; -import { LATEST_RELEASE, OWNER, REPO } from "./constants.mjs"; - -async function commentOnIssuesAndPrsAboutRelease() { - if (LATEST_RELEASE.includes("experimental")) { - return; - } - - let { merged, previousRelease } = await prsMergedSinceLast({ - owner: OWNER, - repo: REPO, - lastRelease: LATEST_RELEASE, - }); - - let suffix = merged.length === 1 ? "" : "s"; - console.log( - `Found ${merged.length} PR${suffix} merged since last release (latest: ${LATEST_RELEASE}, previous: ${previousRelease})` - ); - - let promises = []; - let issuesCommentedOn = new Set(); - - for (let pr of merged) { - console.log(`commenting on pr #${pr.number}`); - - promises.push( - commentOnPullRequest({ - owner: OWNER, - repo: REPO, - pr: pr.number, - version: LATEST_RELEASE, - }) - ); - - let issuesClosed = await getIssuesClosedByPullRequests( - pr.html_url, - pr.body - ); - - for (let issue of issuesClosed) { - if (issuesCommentedOn.has(issue.number)) { - // already commented on this issue - continue; - } - issuesCommentedOn.add(issue.number); - console.log(`commenting on issue #${issue.number}`); - promises.push( - commentOnIssue({ - issue: issue.number, - owner: OWNER, - repo: REPO, - version: LATEST_RELEASE, - }) - ); - } - } - - await Promise.all(promises); -} - -commentOnIssuesAndPrsAboutRelease(); diff --git a/scripts/release/comment.ts b/scripts/release/comment.ts new file mode 100644 index 00000000000..040945c18c6 --- /dev/null +++ b/scripts/release/comment.ts @@ -0,0 +1,71 @@ +import { REF, OWNER, REPO, PR_FILES_STARTS_WITH } from "./constants"; +import { + commentOnIssue, + commentOnPullRequest, + getIssuesClosedByPullRequests, + prsMergedSinceLastTag, +} from "./github"; +import { getGitHubUrl } from "./utils"; + +async function commentOnIssuesAndPrsAboutRelease() { + if (REF.includes("experimental")) { + return; + } + + let { merged, previousTag } = await prsMergedSinceLastTag({ + owner: OWNER, + repo: REPO, + githubRef: REF, + }); + + let suffix = merged.length === 1 ? "" : "s"; + let prFilesDirs = PR_FILES_STARTS_WITH.join(", "); + console.log( + `Found ${merged.length} PR${suffix} merged ` + + `that touched \`${prFilesDirs}\` since ` + + `previous release (current: ${REF}, previous: ${previousTag})` + ); + + let promises: Array> = []; + let issuesCommentedOn = new Set(); + + for (let pr of merged) { + console.log(`commenting on pr ${getGitHubUrl("pull", pr.number)}`); + + promises.push( + commentOnPullRequest({ + owner: OWNER, + repo: REPO, + pr: pr.number, + version: REF, + }) + ); + + let issuesClosed = await getIssuesClosedByPullRequests( + pr.html_url, + pr.body + ); + + for (let issueNumber of issuesClosed) { + if (issuesCommentedOn.has(issueNumber)) { + // we already commented on this issue + // so we don't need to do it again + continue; + } + issuesCommentedOn.add(issueNumber); + console.log(`commenting on issue ${getGitHubUrl("issue", issueNumber)}`); + promises.push( + commentOnIssue({ + issue: issueNumber, + owner: OWNER, + repo: REPO, + version: REF, + }) + ); + } + } + + await Promise.all(promises); +} + +commentOnIssuesAndPrsAboutRelease(); diff --git a/scripts/release/constants.mjs b/scripts/release/constants.ts similarity index 63% rename from scripts/release/constants.mjs rename to scripts/release/constants.ts index d39c434435a..9d39a81415f 100644 --- a/scripts/release/constants.mjs +++ b/scripts/release/constants.ts @@ -1,3 +1,9 @@ +if (!process.env.DEFAULT_BRANCH) { + throw new Error("DEFAULT_BRANCH is required"); +} +if (!process.env.NIGHTLY_BRANCH) { + throw new Error("NIGHTLY_BRANCH is required"); +} if (!process.env.GITHUB_TOKEN) { throw new Error("GITHUB_TOKEN is required"); } @@ -12,8 +18,9 @@ if (!process.env.VERSION.startsWith("refs/tags/")) { } export const [OWNER, REPO] = process.env.GITHUB_REPOSITORY.split("/"); -export const LATEST_RELEASE = process.env.VERSION.replace("refs/tags/", ""); +export const REF = process.env.VERSION.replace("refs/tags/", ""); export const GITHUB_TOKEN = process.env.GITHUB_TOKEN; export const GITHUB_REPOSITORY = process.env.GITHUB_REPOSITORY; - +export const DEFAULT_BRANCH = process.env.DEFAULT_BRANCH; +export const NIGHTLY_BRANCH = process.env.NIGHTLY_BRANCH; export const PR_FILES_STARTS_WITH = ["packages/"]; diff --git a/scripts/release/github.ts b/scripts/release/github.ts new file mode 100644 index 00000000000..40737e753a3 --- /dev/null +++ b/scripts/release/github.ts @@ -0,0 +1,347 @@ +import type { RestEndpointMethodTypes } from "@octokit/rest"; +import * as semver from "semver"; + +import { + PR_FILES_STARTS_WITH, + NIGHTLY_BRANCH, + DEFAULT_BRANCH, +} from "./constants"; +import { gql, graphqlWithAuth, octokit } from "./octokit"; +import type { MinimalTag } from "./utils"; +import { checkIfStringStartsWith, sortByDate } from "./utils"; + +type PullRequest = + RestEndpointMethodTypes["pulls"]["list"]["response"]["data"][number]; + +type PullRequestFiles = + RestEndpointMethodTypes["pulls"]["listFiles"]["response"]["data"]; + +interface PrsMergedSinceLastTagOptions { + owner: string; + repo: string; + githubRef: string; +} + +interface PrsMergedSinceLastTagResult { + merged: Awaited>; + previousTag: string; +} + +export async function prsMergedSinceLastTag({ + owner, + repo, + githubRef, +}: PrsMergedSinceLastTagOptions): Promise { + let tags = await getAllTags(owner, repo); + let { currentTag, previousTag } = getPreviousTagFromCurrentTag( + githubRef, + tags + ); + + /** + nightly > nightly => 'dev' + nightly > stable => 'main' + stable > nightly => 'dev' + */ + let baseRef = + currentTag.isPrerelease && previousTag.isPrerelease + ? NIGHTLY_BRANCH + : currentTag.isPrerelease && !previousTag.isPrerelease + ? NIGHTLY_BRANCH + : DEFAULT_BRANCH; + + let prs = await getMergedPRsBetweenTags( + owner, + repo, + previousTag, + currentTag, + baseRef + ); + + let prsThatTouchedFiles = await getPullRequestWithFiles(owner, repo, prs); + + return { + merged: prsThatTouchedFiles, + previousTag: previousTag.tag, + }; +} + +type PullRequestWithFiles = PullRequest & { + files: PullRequestFiles; +}; + +async function getPullRequestWithFiles( + owner: string, + repo: string, + prs: Array +): Promise> { + let prsWithFiles = await Promise.all( + prs.map(async (pr) => { + let files = await octokit.paginate(octokit.pulls.listFiles, { + owner, + repo, + per_page: 100, + pull_number: pr.number, + }); + + return { ...pr, files }; + }) + ); + + return prsWithFiles.filter((pr) => { + return pr.files.some((file) => { + return checkIfStringStartsWith(file.filename, PR_FILES_STARTS_WITH); + }); + }); +} + +function getPreviousTagFromCurrentTag( + currentTag: string, + tags: Awaited> +): { + previousTag: MinimalTag; + currentTag: MinimalTag; +} { + let validTags = tags + .map((tag) => { + let isPrerelease = semver.prerelease(tag.name) !== null; + + if (!tag.commit.committer?.date) return null; + + return { + tag: tag.name, + date: new Date(tag.commit.committer.date), + isPrerelease, + }; + }) + .filter((v: any): v is MinimalTag => typeof v !== "undefined") + .sort(sortByDate); + + let tmpCurrentTagIndex = validTags.findIndex((tag) => tag.tag === currentTag); + let tmpCurrentTagInfo = validTags.at(tmpCurrentTagIndex); + + if (!tmpCurrentTagInfo) { + throw new Error(`Could not find last tag ${currentTag}`); + } + + let currentTagInfo: MinimalTag | undefined; + let previousTagInfo: MinimalTag | undefined; + + // if the currentTag was a stable tag, then we want to find the previous stable tag + if (!tmpCurrentTagInfo.isPrerelease) { + let stableTags = validTags + .filter((tag) => !tag.isPrerelease) + .sort((a, b) => semver.rcompare(a.tag, b.tag)); + + let stableTagIndex = stableTags.findIndex((tag) => tag.tag === currentTag); + currentTagInfo = stableTags.at(stableTagIndex); + if (!currentTagInfo) { + throw new Error(`Could not find last stable tag ${currentTag}`); + } + + previousTagInfo = stableTags.at(stableTagIndex + 1); + if (!previousTagInfo) { + throw new Error(`Could not find previous stable tag from ${currentTag}`); + } + + return { currentTag: currentTagInfo, previousTag: previousTagInfo }; + } + + currentTagInfo = tmpCurrentTagInfo; + if (!currentTagInfo) { + throw new Error(`Could not find last tag ${currentTag}`); + } + + previousTagInfo = validTags.at(tmpCurrentTagIndex + 1); + if (!previousTagInfo) { + throw new Error( + `Could not find previous prerelease tag from ${currentTag}` + ); + } + + return { + currentTag: currentTagInfo, + previousTag: previousTagInfo, + }; +} + +async function getMergedPRsBetweenTags( + owner: string, + repo: string, + startTag: MinimalTag, + endTag: MinimalTag, + baseRef: string, + page: number = 1, + nodes: Array = [] +): Promise> { + let pulls = await octokit.pulls.list({ + owner, + repo, + state: "closed", + sort: "updated", + direction: "desc", + per_page: 100, + page, + base: baseRef, + }); + + let merged = pulls.data.filter((pull) => { + if (!pull.merged_at) return false; + let mergedDate = new Date(pull.merged_at); + return mergedDate > startTag.date && mergedDate < endTag.date; + }); + + if (pulls.data.length !== 0) { + return getMergedPRsBetweenTags( + owner, + repo, + startTag, + endTag, + baseRef, + page + 1, + [...nodes, ...merged] + ); + } + + return [...nodes, ...merged]; +} + +// TODO: we might be able to get away with just getting up until the "latest" tag +async function getAllTags(owner: string, repo: string) { + let tags = await octokit.paginate(octokit.rest.repos.listTags, { + owner, + repo, + }); + + return await Promise.all( + tags.map(async (tag) => { + let commit = await octokit.rest.repos.getCommit({ + owner, + repo, + ref: tag.commit.sha, + }); + + return { + ...tag, + commit: commit.data.commit, + }; + }) + ); +} + +export async function getIssuesClosedByPullRequests( + prHtmlUrl: string, + prBody: string | null +): Promise> { + let linkedIssues = await getIssuesLinkedToPullRequest(prHtmlUrl); + if (!prBody) return linkedIssues.map((issue) => issue.number); + + /** + * This regex matches for one of github's issue references for auto linking an issue to a PR + * as that only happens when the PR is sent to the default branch of the repo + * https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword + */ + let regex = + /(close|closes|closed|fix|fixes|fixed|resolve|resolves|resolved)\s#([0-9]+)/gi; + let matches = prBody.match(regex); + if (!matches) return linkedIssues.map((issue) => issue.number); + + let issues = matches.map((match) => { + let [, issueNumber] = match.split(" #"); + return { number: parseInt(issueNumber, 10) }; + }); + + return [...linkedIssues, ...issues.filter((issue) => issue !== null)].map( + (issue) => issue.number + ); +} + +interface GitHubClosingIssueReference { + resource: { + closingIssuesReferences: { + pageInfo: { + endCursor: string; + hasNextPage: boolean; + }; + nodes: Array<{ number: number }>; + }; + }; +} + +async function getIssuesLinkedToPullRequest( + prHtmlUrl: string, + nodes: Array<{ number: number }> = [], + after?: string +): Promise> { + let res: GitHubClosingIssueReference = await graphqlWithAuth( + gql` + query GET_ISSUES_CLOSED_BY_PR($prHtmlUrl: URI!, $after: String) { + resource(url: $prHtmlUrl) { + ... on PullRequest { + closingIssuesReferences(first: 100, after: $after) { + nodes { + number + } + pageInfo { + hasNextPage + endCursor + } + } + } + } + } + `, + { prHtmlUrl, after } + ); + + let newNodes = res?.resource?.closingIssuesReferences?.nodes ?? []; + nodes.push(...newNodes); + + if (res?.resource?.closingIssuesReferences?.pageInfo?.hasNextPage) { + return getIssuesLinkedToPullRequest( + prHtmlUrl, + nodes, + res?.resource?.closingIssuesReferences?.pageInfo?.endCursor + ); + } + + return nodes; +} + +export async function commentOnPullRequest({ + owner, + repo, + pr, + version, +}: { + owner: string; + repo: string; + pr: number; + version: string; +}) { + await octokit.issues.createComment({ + owner, + repo, + issue_number: pr, + body: `๐Ÿค– Hello there,\n\nWe just published version \`${version}\` which includes this pull request. If you'd like to take it for a test run please try it out and let us know what you think!\n\nThanks!`, + }); +} + +export async function commentOnIssue({ + owner, + repo, + issue, + version, +}: { + owner: string; + repo: string; + issue: number; + version: string; +}) { + await octokit.issues.createComment({ + owner, + repo, + issue_number: issue, + body: `๐Ÿค– Hello there,\n\nWe just published version \`${version}\` which involves this issue. If you'd like to take it for a test run please try it out and let us know what you think!\n\nThanks!`, + }); +} diff --git a/scripts/release/octokit.mjs b/scripts/release/octokit.mjs deleted file mode 100644 index a1f00f8c379..00000000000 --- a/scripts/release/octokit.mjs +++ /dev/null @@ -1,212 +0,0 @@ -import { Octokit as RestOctokit } from "@octokit/rest"; -import { paginateRest } from "@octokit/plugin-paginate-rest"; -import { graphql } from "@octokit/graphql"; - -import { - GITHUB_TOKEN, - GITHUB_REPOSITORY, - PR_FILES_STARTS_WITH, -} from "./constants.mjs"; - -const graphqlWithAuth = graphql.defaults({ - headers: { authorization: `token ${GITHUB_TOKEN}` }, -}); - -const Octokit = RestOctokit.plugin(paginateRest); -const octokit = new Octokit({ auth: GITHUB_TOKEN }); - -const gql = String.raw; - -/** - * @param {{ owner: string; repo: string; lastRelease: string }} args - */ -export async function prsMergedSinceLast({ - owner, - repo, - lastRelease: lastReleaseVersion, -}) { - let releases = await octokit.paginate(octokit.rest.repos.listReleases, { - owner, - repo, - per_page: 100, - }); - - let sorted = releases - .sort((a, b) => { - // @ts-ignore - return new Date(b.published_at) - new Date(a.published_at); - }) - .filter((release) => { - return release.tag_name.includes("experimental") === false; - }); - - let lastReleaseIndex = sorted.findIndex((release) => { - return release.tag_name === lastReleaseVersion; - }); - - let lastRelease = sorted[lastReleaseIndex]; - if (!lastRelease) { - throw new Error( - `Could not find last release ${lastRelease} in ${GITHUB_REPOSITORY}` - ); - } - - // if the lastRelease was a stable release, then we want to find the previous stable release - let previousRelease; - if (lastRelease.prerelease === false) { - let stableReleases = sorted.filter((release) => { - return release.prerelease === false; - }); - previousRelease = stableReleases.at(1); - } else { - previousRelease = sorted.at(lastReleaseIndex + 1); - } - - if (!previousRelease) { - throw new Error(`Could not find previous release in ${GITHUB_REPOSITORY}`); - } - - let startDate = new Date(previousRelease.created_at); - let endDate = new Date(lastRelease.created_at); - - let prs = await octokit.paginate(octokit.pulls.list, { - owner, - repo, - state: "closed", - sort: "updated", - direction: "desc", - }); - - let mergedPullRequestsSinceLastTag = prs.filter((pullRequest) => { - if (!pullRequest.merged_at) return false; - let mergedDate = new Date(pullRequest.merged_at); - return mergedDate > startDate && mergedDate < endDate; - }); - - let prsWithFiles = await Promise.all( - mergedPullRequestsSinceLastTag.map(async (pr) => { - let files = await octokit.paginate(octokit.pulls.listFiles, { - owner, - repo, - per_page: 100, - pull_number: pr.number, - }); - - return { - ...pr, - files, - }; - }) - ); - - return { - previousRelease: previousRelease.tag_name, - merged: prsWithFiles.filter((pr) => { - return pr.files.some((file) => { - return checkIfStringStartsWith(file.filename, PR_FILES_STARTS_WITH); - }); - }), - }; -} - -/** - * @param {{ owner: string, repo: string, pr: number, version: string }} args - */ -export async function commentOnPullRequest({ owner, repo, pr, version }) { - await octokit.issues.createComment({ - owner, - repo, - issue_number: pr, - body: `๐Ÿค– Hello there,\n\nWe just published version \`${version}\` which includes this pull request. If you'd like to take it for a test run please try it out and let us know what you think!\n\nThanks!`, - }); -} - -/** - * @param {{ owner: string, repo: string, issue: number, version: string }} args - */ -export async function commentOnIssue({ owner, repo, issue, version }) { - await octokit.issues.createComment({ - owner, - repo, - issue_number: issue, - body: `๐Ÿค– Hello there,\n\nWe just published version \`${version}\` which involves this issue. If you'd like to take it for a test run please try it out and let us know what you think!\n\nThanks!`, - }); -} - -/** - * @param {string} prHtmlUrl - * @param {Array<{ number: number }>} [nodes] - * @param {*} [after] - * @returns {Promise>} - */ -async function getIssuesLinkedToPullRequest(prHtmlUrl, nodes = [], after) { - let res = await graphqlWithAuth( - gql` - query GET_ISSUES_CLOSED_BY_PR($prHtmlUrl: URI!, $after: String) { - resource(url: $prHtmlUrl) { - ... on PullRequest { - closingIssuesReferences(first: 100, after: $after) { - nodes { - number - } - pageInfo { - hasNextPage - endCursor - } - } - } - } - } - `, - { prHtmlUrl, after } - ); - - let newNodes = res?.resource?.closingIssuesReferences?.nodes ?? []; - nodes.push(...newNodes); - - if (res?.resource?.closingIssuesReferences?.pageInfo?.hasNextPage) { - return getIssuesLinkedToPullRequest( - prHtmlUrl, - nodes, - res?.resource?.closingIssuesReferences?.pageInfo?.endCursor - ); - } - - return nodes; -} - -/** - * @param {string} prHtmlUrl - * @param {string | null} prBody - * @returns {Promise} - */ -export async function getIssuesClosedByPullRequests(prHtmlUrl, prBody) { - let linked = await getIssuesLinkedToPullRequest(prHtmlUrl); - if (!prBody) return linked; - - /** - * This regex matches for one of github's issue references for auto linking an issue to a PR - * as that only happens when the PR is sent to the default branch of the repo - * https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword - */ - let regex = - /(close|closes|closed|fix|fixes|fixed|resolve|resolves|resolved)\s#([0-9]+)/gi; - let matches = prBody.match(regex); - if (!matches) return linked; - - let issues = matches.map((match) => { - let [, issueNumber] = match.split(" #"); - return { number: parseInt(issueNumber, 10) }; - }); - - return [...linked, ...issues.filter((issue) => issue !== null)]; -} - -/** - * @param {string} string - * @param {string[]} substrings - * @returns {boolean} - */ -function checkIfStringStartsWith(string, substrings) { - return substrings.some((substr) => string.startsWith(substr)); -} diff --git a/scripts/release/octokit.ts b/scripts/release/octokit.ts new file mode 100644 index 00000000000..6be758a13c9 --- /dev/null +++ b/scripts/release/octokit.ts @@ -0,0 +1,42 @@ +import { Octokit as RestOctokit } from "@octokit/rest"; +import type { Octokit as OctokitType } from "@octokit/rest"; +import { paginateRest } from "@octokit/plugin-paginate-rest"; +import { throttling } from "@octokit/plugin-throttling"; +import { graphql } from "@octokit/graphql"; + +import { GITHUB_TOKEN } from "./constants"; + +export const graphqlWithAuth = graphql.defaults({ + headers: { authorization: `token ${GITHUB_TOKEN}` }, +}); + +const Octokit = RestOctokit.plugin(paginateRest, throttling); + +export const octokit = new Octokit({ + auth: GITHUB_TOKEN, + throttle: { + onRateLimit(retryAfter: number, options: any, octokit: OctokitType) { + octokit.log.warn( + `Request quota exhausted for request ${options.method} ${options.url}` + ); + + if (options.request.retryCount === 0) { + // only retries once + octokit.log.info(`Retrying after ${retryAfter} seconds!`); + return true; + } + }, + onSecondaryRateLimit( + _retryAfter: number, + options: any, + octokit: OctokitType + ) { + // does not retry, only logs a warning + octokit.log.warn( + `SecondaryRateLimit detected for request ${options.method} ${options.url}` + ); + }, + }, +}); + +export const gql = String.raw; diff --git a/scripts/release/package-lock.json b/scripts/release/package-lock.json new file mode 100644 index 00000000000..e22eaa48ffb --- /dev/null +++ b/scripts/release/package-lock.json @@ -0,0 +1,1022 @@ +{ + "name": "release-comments", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "release-comments", + "dependencies": { + "@octokit/plugin-paginate-rest": "^2.17.0", + "@octokit/plugin-throttling": "^3.6.2", + "@octokit/rest": "^18.12.0", + "esbuild": "^0.14.38", + "esbuild-register": "^3.3.2", + "semver": "^7.3.7" + }, + "devDependencies": { + "@tsconfig/node16": "^1.0.2", + "@types/node": "^17.0.23", + "@types/semver": "^7.3.9", + "typescript": "^4.6.3" + } + }, + "node_modules/@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dependencies": { + "@octokit/types": "^6.0.3" + } + }, + "node_modules/@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "dependencies": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dependencies": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dependencies": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.1.0.tgz", + "integrity": "sha512-kQzJh3ZUv3lDpi6M+uekMRHULvf9DlWoI1XgKN6nPeGDzkSgtkhVq1MMz3bFKQ6H6GbdC3ZqG/a6VzKhIx0VeA==" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.18.0.tgz", + "integrity": "sha512-n5/AzIoy5Wzp85gqzSbR+dWQDHlyHZrGijnDfLh452547Ynu0hCvszH7EfRE0eqM5ZjfkplO0k+q+P8AAIIJEA==", + "dependencies": { + "@octokit/types": "^6.35.0" + }, + "peerDependencies": { + "@octokit/core": ">=2" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.14.0.tgz", + "integrity": "sha512-MRnMs4Dcm1OSaz/g/RLr4YY9otgysS7vN5SUkHGd7t+R8323cHsHFoEWHYPSmgUC0BieHRhvnCRWb4i3Pl+Lgg==", + "dependencies": { + "@octokit/types": "^6.35.0", + "deprecation": "^2.3.1" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-throttling": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-3.6.2.tgz", + "integrity": "sha512-0az5fxgVlhFfFtiKLKVXTpmCG2tK3BG0fYI8SO4pmGlN1kyJktJVQA+6KKaFxtxMIWsuHmSEAkR6zSgtk86g2A==", + "dependencies": { + "@octokit/types": "^6.0.1", + "bottleneck": "^2.15.3" + }, + "peerDependencies": { + "@octokit/core": "^3.5.0" + } + }, + "node_modules/@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "dependencies": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@octokit/rest": { + "version": "18.12.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "dependencies": { + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" + } + }, + "node_modules/@octokit/types": { + "version": "6.35.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.35.0.tgz", + "integrity": "sha512-DhLfdUuv3H37u6jBDfkwamypx3HflHg29b26nbA6iVFYkAlZ5cMEtu/9pQoihGnQE5M7jJFnNo25Rr1UwQNF8Q==", + "dependencies": { + "@octokit/openapi-types": "^12.1.0" + } + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.3.10", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.10.tgz", + "integrity": "sha512-zsv3fsC7S84NN6nPK06u79oWgrPVd0NvOyqgghV1haPaFcVxIrP4DLomRwGAXk0ui4HZA7mOcSFL98sMVW9viw==", + "dev": true + }, + "node_modules/before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==" + }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + }, + "node_modules/esbuild": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.44.tgz", + "integrity": "sha512-Rn+lRRfj60r/3svI6NgAVnetzp3vMOj17BThuhshSj/gS1LR03xrjkDYyfPmrYG/0c3D68rC6FNYMQ3yRbiXeQ==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "esbuild-android-64": "0.14.44", + "esbuild-android-arm64": "0.14.44", + "esbuild-darwin-64": "0.14.44", + "esbuild-darwin-arm64": "0.14.44", + "esbuild-freebsd-64": "0.14.44", + "esbuild-freebsd-arm64": "0.14.44", + "esbuild-linux-32": "0.14.44", + "esbuild-linux-64": "0.14.44", + "esbuild-linux-arm": "0.14.44", + "esbuild-linux-arm64": "0.14.44", + "esbuild-linux-mips64le": "0.14.44", + "esbuild-linux-ppc64le": "0.14.44", + "esbuild-linux-riscv64": "0.14.44", + "esbuild-linux-s390x": "0.14.44", + "esbuild-netbsd-64": "0.14.44", + "esbuild-openbsd-64": "0.14.44", + "esbuild-sunos-64": "0.14.44", + "esbuild-windows-32": "0.14.44", + "esbuild-windows-64": "0.14.44", + "esbuild-windows-arm64": "0.14.44" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.44.tgz", + "integrity": "sha512-dFPHBXmx385zuJULAD/Cmq/LyPRXiAWbf9ylZtY0wJ8iVyWfKYaCYxeJx8OAZUuj46ZwNa7MzW2GBAQLOeiemg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.44.tgz", + "integrity": "sha512-qqaqqyxHXjZ/0ddKU3I3Nb7lAvVM69ELMhb8+91FyomAUmQPlHtxe+TTiWxXGHE72XEzcgTEGq4VauqLNkN22g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.44.tgz", + "integrity": "sha512-RBmtGKGY06+AW6IOJ1LE/dEeF7HH34C1/Ces9FSitU4bIbIpL4KEuQpTFoxwb4ry5s2hyw7vbPhhtyOd18FH9g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.44.tgz", + "integrity": "sha512-Bmhx5Cfo4Hdb7WyyyDupTB8HPmnFZ8baLfPlzLdYvF6OzsIbV+CY+m/AWf0OQvY40BlkzCLJ/7Lfwbb71Tngmg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.44.tgz", + "integrity": "sha512-O4HpWa5ZgxbNPQTF7URicLzYa+TidGlmGT/RAC3GjbGEQQYkd0R1Slyh69Yrmb2qmcOcPAgWHbNo1UhK4WmZ4w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.44.tgz", + "integrity": "sha512-f0/jkAKccnDY7mg1F9l/AMzEm+VXWXK6c3IrOEmd13jyKfpTZKTIlt+yI04THPDCDZTzXHTRUBLozqp+m8Mg5Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.44.tgz", + "integrity": "sha512-WSIhzLldMR7YUoEL7Ix319tC+NFmW9Pu7NgFWxUfOXeWsT0Wg484hm6bNgs7+oY2pGzg715y/Wrqi1uNOMmZJw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.44.tgz", + "integrity": "sha512-zgscTrCMcRZRIsVugqBTP/B5lPLNchBlWjQ8sQq2Epnv+UDtYKgXEq1ctWAmibZNy2E9QRCItKMeIEqeTUT5kA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.44.tgz", + "integrity": "sha512-laPBPwGfsbBxGw6F6jnqic2CPXLyC1bPrmnSOeJ9oEnx1rcKkizd4HWCRUc0xv+l4z/USRfx/sEfYlWSLeqoJQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.44.tgz", + "integrity": "sha512-H0H/2/wgiScTwBve/JR8/o+Zhabx5KPk8T2mkYZFKQGl1hpUgC+AOmRyqy/Js3p66Wim4F4Akv3I3sJA1sKg0w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.44.tgz", + "integrity": "sha512-ri3Okw0aleYy7o5n9zlIq+FCtq3tcMlctN6X1H1ucILjBJuH8pan2trJPKWeb8ppntFvE28I9eEXhwkWh6wYKg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.44.tgz", + "integrity": "sha512-96TqL/MvFRuIVXz+GtCIXzRQ43ZwEk4XTn0RWUNJduXXMDQ/V1iOV28U6x6Oe3NesK4xkoKSaK2+F3VHcU8ZrA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.44.tgz", + "integrity": "sha512-rrK9qEp2M8dhilsPn4T9gxUsAumkITc1kqYbpyNMr9EWo+J5ZBj04n3GYldULrcCw4ZCHAJ+qPjqr8b6kG2inA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.44.tgz", + "integrity": "sha512-2YmTm9BrW5aUwBSe8wIEARd9EcnOQmkHp4+IVaO09Ez/C5T866x+ABzhG0bwx0b+QRo9q97CRMaQx2Ngb6/hfw==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.44.tgz", + "integrity": "sha512-zypdzPmZTCqYS30WHxbcvtC0E6e/ECvl4WueUdbdWhs2dfWJt5RtCBME664EpTznixR3lSN1MQ2NhwQF8MQryw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.44.tgz", + "integrity": "sha512-8J43ab9ByYl7KteC03HGQjr2HY1ge7sN04lFnwMFWYk2NCn8IuaeeThvLeNjzOYhyT3I6K8puJP0uVXUu+D1xw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-register": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.3.3.tgz", + "integrity": "sha512-eFHOkutgIMJY5gc8LUp/7c+LLlDqzNi9T6AwCZ2WKKl3HmT+5ef3ZRyPPxDOynInML0fgaC50yszPKfPnjC0NQ==", + "peerDependencies": { + "esbuild": ">=0.12 <1" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.44.tgz", + "integrity": "sha512-OH1/09CGUJwffA+HNM6mqPkSIyHVC3ZnURU/4CCIx7IqWUBn1Sh1HRLQC8/TWNgcs0/1u7ygnc2pgf/AHZJ/Ow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.44.tgz", + "integrity": "sha512-mCAOL9/rRqwfOfxTu2sjq/eAIs7eAXGiU6sPBnowggI7QS953Iq6o3/uDu010LwfN7zr18c/lEj6/PTwwTB3AA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.44.tgz", + "integrity": "sha512-AG6BH3+YG0s2Q/IfB1cm68FdyFnoE1P+GFbmgFO3tA4UIP8+BKsmKGGZ5I3+ZjcnzOwvT74bQRVrfnQow2KO5Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.44.tgz", + "integrity": "sha512-ygYPfYE5By4Sd6szsNr10B0RtWVNOSGmZABSaj4YQBLqh9b9i45VAjVWa8tyIy+UAbKF7WGwybi2wTbSVliO8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/typescript": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", + "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + }, + "dependencies": { + "@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "requires": { + "@octokit/types": "^6.0.3" + } + }, + "@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "requires": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "requires": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "requires": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/openapi-types": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.1.0.tgz", + "integrity": "sha512-kQzJh3ZUv3lDpi6M+uekMRHULvf9DlWoI1XgKN6nPeGDzkSgtkhVq1MMz3bFKQ6H6GbdC3ZqG/a6VzKhIx0VeA==" + }, + "@octokit/plugin-paginate-rest": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.18.0.tgz", + "integrity": "sha512-n5/AzIoy5Wzp85gqzSbR+dWQDHlyHZrGijnDfLh452547Ynu0hCvszH7EfRE0eqM5ZjfkplO0k+q+P8AAIIJEA==", + "requires": { + "@octokit/types": "^6.35.0" + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==" + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.14.0.tgz", + "integrity": "sha512-MRnMs4Dcm1OSaz/g/RLr4YY9otgysS7vN5SUkHGd7t+R8323cHsHFoEWHYPSmgUC0BieHRhvnCRWb4i3Pl+Lgg==", + "requires": { + "@octokit/types": "^6.35.0", + "deprecation": "^2.3.1" + } + }, + "@octokit/plugin-throttling": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-3.6.2.tgz", + "integrity": "sha512-0az5fxgVlhFfFtiKLKVXTpmCG2tK3BG0fYI8SO4pmGlN1kyJktJVQA+6KKaFxtxMIWsuHmSEAkR6zSgtk86g2A==", + "requires": { + "@octokit/types": "^6.0.1", + "bottleneck": "^2.15.3" + } + }, + "@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "requires": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/rest": { + "version": "18.12.0", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", + "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", + "requires": { + "@octokit/core": "^3.5.1", + "@octokit/plugin-paginate-rest": "^2.16.8", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-rest-endpoint-methods": "^5.12.0" + } + }, + "@octokit/types": { + "version": "6.35.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.35.0.tgz", + "integrity": "sha512-DhLfdUuv3H37u6jBDfkwamypx3HflHg29b26nbA6iVFYkAlZ5cMEtu/9pQoihGnQE5M7jJFnNo25Rr1UwQNF8Q==", + "requires": { + "@octokit/openapi-types": "^12.1.0" + } + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true + }, + "@types/semver": { + "version": "7.3.10", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.10.tgz", + "integrity": "sha512-zsv3fsC7S84NN6nPK06u79oWgrPVd0NvOyqgghV1haPaFcVxIrP4DLomRwGAXk0ui4HZA7mOcSFL98sMVW9viw==", + "dev": true + }, + "before-after-hook": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz", + "integrity": "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==" + }, + "bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==" + }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + }, + "esbuild": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.44.tgz", + "integrity": "sha512-Rn+lRRfj60r/3svI6NgAVnetzp3vMOj17BThuhshSj/gS1LR03xrjkDYyfPmrYG/0c3D68rC6FNYMQ3yRbiXeQ==", + "requires": { + "esbuild-android-64": "0.14.44", + "esbuild-android-arm64": "0.14.44", + "esbuild-darwin-64": "0.14.44", + "esbuild-darwin-arm64": "0.14.44", + "esbuild-freebsd-64": "0.14.44", + "esbuild-freebsd-arm64": "0.14.44", + "esbuild-linux-32": "0.14.44", + "esbuild-linux-64": "0.14.44", + "esbuild-linux-arm": "0.14.44", + "esbuild-linux-arm64": "0.14.44", + "esbuild-linux-mips64le": "0.14.44", + "esbuild-linux-ppc64le": "0.14.44", + "esbuild-linux-riscv64": "0.14.44", + "esbuild-linux-s390x": "0.14.44", + "esbuild-netbsd-64": "0.14.44", + "esbuild-openbsd-64": "0.14.44", + "esbuild-sunos-64": "0.14.44", + "esbuild-windows-32": "0.14.44", + "esbuild-windows-64": "0.14.44", + "esbuild-windows-arm64": "0.14.44" + } + }, + "esbuild-android-64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.44.tgz", + "integrity": "sha512-dFPHBXmx385zuJULAD/Cmq/LyPRXiAWbf9ylZtY0wJ8iVyWfKYaCYxeJx8OAZUuj46ZwNa7MzW2GBAQLOeiemg==", + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.44.tgz", + "integrity": "sha512-qqaqqyxHXjZ/0ddKU3I3Nb7lAvVM69ELMhb8+91FyomAUmQPlHtxe+TTiWxXGHE72XEzcgTEGq4VauqLNkN22g==", + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.44.tgz", + "integrity": "sha512-RBmtGKGY06+AW6IOJ1LE/dEeF7HH34C1/Ces9FSitU4bIbIpL4KEuQpTFoxwb4ry5s2hyw7vbPhhtyOd18FH9g==", + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.44.tgz", + "integrity": "sha512-Bmhx5Cfo4Hdb7WyyyDupTB8HPmnFZ8baLfPlzLdYvF6OzsIbV+CY+m/AWf0OQvY40BlkzCLJ/7Lfwbb71Tngmg==", + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.44.tgz", + "integrity": "sha512-O4HpWa5ZgxbNPQTF7URicLzYa+TidGlmGT/RAC3GjbGEQQYkd0R1Slyh69Yrmb2qmcOcPAgWHbNo1UhK4WmZ4w==", + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.44.tgz", + "integrity": "sha512-f0/jkAKccnDY7mg1F9l/AMzEm+VXWXK6c3IrOEmd13jyKfpTZKTIlt+yI04THPDCDZTzXHTRUBLozqp+m8Mg5Q==", + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.44.tgz", + "integrity": "sha512-WSIhzLldMR7YUoEL7Ix319tC+NFmW9Pu7NgFWxUfOXeWsT0Wg484hm6bNgs7+oY2pGzg715y/Wrqi1uNOMmZJw==", + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.44.tgz", + "integrity": "sha512-zgscTrCMcRZRIsVugqBTP/B5lPLNchBlWjQ8sQq2Epnv+UDtYKgXEq1ctWAmibZNy2E9QRCItKMeIEqeTUT5kA==", + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.44.tgz", + "integrity": "sha512-laPBPwGfsbBxGw6F6jnqic2CPXLyC1bPrmnSOeJ9oEnx1rcKkizd4HWCRUc0xv+l4z/USRfx/sEfYlWSLeqoJQ==", + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.44.tgz", + "integrity": "sha512-H0H/2/wgiScTwBve/JR8/o+Zhabx5KPk8T2mkYZFKQGl1hpUgC+AOmRyqy/Js3p66Wim4F4Akv3I3sJA1sKg0w==", + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.44.tgz", + "integrity": "sha512-ri3Okw0aleYy7o5n9zlIq+FCtq3tcMlctN6X1H1ucILjBJuH8pan2trJPKWeb8ppntFvE28I9eEXhwkWh6wYKg==", + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.44.tgz", + "integrity": "sha512-96TqL/MvFRuIVXz+GtCIXzRQ43ZwEk4XTn0RWUNJduXXMDQ/V1iOV28U6x6Oe3NesK4xkoKSaK2+F3VHcU8ZrA==", + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.44.tgz", + "integrity": "sha512-rrK9qEp2M8dhilsPn4T9gxUsAumkITc1kqYbpyNMr9EWo+J5ZBj04n3GYldULrcCw4ZCHAJ+qPjqr8b6kG2inA==", + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.44.tgz", + "integrity": "sha512-2YmTm9BrW5aUwBSe8wIEARd9EcnOQmkHp4+IVaO09Ez/C5T866x+ABzhG0bwx0b+QRo9q97CRMaQx2Ngb6/hfw==", + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.44.tgz", + "integrity": "sha512-zypdzPmZTCqYS30WHxbcvtC0E6e/ECvl4WueUdbdWhs2dfWJt5RtCBME664EpTznixR3lSN1MQ2NhwQF8MQryw==", + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.44.tgz", + "integrity": "sha512-8J43ab9ByYl7KteC03HGQjr2HY1ge7sN04lFnwMFWYk2NCn8IuaeeThvLeNjzOYhyT3I6K8puJP0uVXUu+D1xw==", + "optional": true + }, + "esbuild-register": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.3.3.tgz", + "integrity": "sha512-eFHOkutgIMJY5gc8LUp/7c+LLlDqzNi9T6AwCZ2WKKl3HmT+5ef3ZRyPPxDOynInML0fgaC50yszPKfPnjC0NQ==" + }, + "esbuild-sunos-64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.44.tgz", + "integrity": "sha512-OH1/09CGUJwffA+HNM6mqPkSIyHVC3ZnURU/4CCIx7IqWUBn1Sh1HRLQC8/TWNgcs0/1u7ygnc2pgf/AHZJ/Ow==", + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.44.tgz", + "integrity": "sha512-mCAOL9/rRqwfOfxTu2sjq/eAIs7eAXGiU6sPBnowggI7QS953Iq6o3/uDu010LwfN7zr18c/lEj6/PTwwTB3AA==", + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.44.tgz", + "integrity": "sha512-AG6BH3+YG0s2Q/IfB1cm68FdyFnoE1P+GFbmgFO3tA4UIP8+BKsmKGGZ5I3+ZjcnzOwvT74bQRVrfnQow2KO5Q==", + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.44", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.44.tgz", + "integrity": "sha512-ygYPfYE5By4Sd6szsNr10B0RtWVNOSGmZABSaj4YQBLqh9b9i45VAjVWa8tyIy+UAbKF7WGwybi2wTbSVliO8A==", + "optional": true + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "typescript": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.3.tgz", + "integrity": "sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==", + "dev": true + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } +} diff --git a/scripts/release/package.json b/scripts/release/package.json new file mode 100644 index 00000000000..0a6963c3c95 --- /dev/null +++ b/scripts/release/package.json @@ -0,0 +1,20 @@ +{ + "name": "release-comments", + "description": "deps needed for running our release comment script", + "private": true, + "scripts": {}, + "dependencies": { + "@octokit/plugin-paginate-rest": "^2.17.0", + "@octokit/plugin-throttling": "^3.6.2", + "@octokit/rest": "^18.12.0", + "esbuild": "^0.14.38", + "esbuild-register": "^3.3.2", + "semver": "^7.3.7" + }, + "devDependencies": { + "@tsconfig/node16": "^1.0.2", + "@types/node": "^17.0.23", + "@types/semver": "^7.3.9", + "typescript": "^4.6.3" + } +} diff --git a/scripts/release/tsconfig.json b/scripts/release/tsconfig.json new file mode 100644 index 00000000000..e9c0bafece7 --- /dev/null +++ b/scripts/release/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "@tsconfig/node16/tsconfig.json" +} diff --git a/scripts/release/utils.ts b/scripts/release/utils.ts new file mode 100644 index 00000000000..709f56d32b0 --- /dev/null +++ b/scripts/release/utils.ts @@ -0,0 +1,23 @@ +import { GITHUB_REPOSITORY } from "./constants"; + +export function checkIfStringStartsWith( + string: string, + substrings: Array +): boolean { + return substrings.some((substr) => string.startsWith(substr)); +} + +export interface MinimalTag { + tag: string; + date: Date; + isPrerelease: boolean; +} + +export function sortByDate(a: MinimalTag, b: MinimalTag) { + return b.date.getTime() - a.date.getTime(); +} + +export function getGitHubUrl(type: "pull" | "issue", number: number) { + let segment = type === "pull" ? "pull" : "issues"; + return `https://github.com/${GITHUB_REPOSITORY}/${segment}/${number}`; +} diff --git a/templates/arc/remix.config.js b/templates/arc/remix.config.js index b71b584d437..48474bad323 100644 --- a/templates/arc/remix.config.js +++ b/templates/arc/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { serverBuildTarget: "arc", server: "./server.js", diff --git a/templates/cloudflare-pages/remix.config.js b/templates/cloudflare-pages/remix.config.js index d6a4bdc58ed..7d8260a36a7 100644 --- a/templates/cloudflare-pages/remix.config.js +++ b/templates/cloudflare-pages/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { serverBuildTarget: "cloudflare-pages", server: "./server.js", diff --git a/templates/cloudflare-workers/remix.config.js b/templates/cloudflare-workers/remix.config.js index 684d139d7d2..a4fac89855c 100644 --- a/templates/cloudflare-workers/remix.config.js +++ b/templates/cloudflare-workers/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { serverBuildTarget: "cloudflare-workers", server: "./server.js", diff --git a/templates/deno/.vscode/resolve_npm_imports.json b/templates/deno/.vscode/resolve_npm_imports.json index 1b9e3af559e..41dbbd2e31d 100644 --- a/templates/deno/.vscode/resolve_npm_imports.json +++ b/templates/deno/.vscode/resolve_npm_imports.json @@ -5,9 +5,9 @@ "// Deno-only dependencies may be imported via URL imports (without using import maps).": "", "imports": { "// `@remix-run/deno` code is already a Deno module, so just get types for it directly from `node_modules/`": "", - "@remix-run/deno": "https://esm.sh/@remix-run/deno@1.6.0", - "@remix-run/dev/server-build": "https://esm.sh/@remix-run/dev@1.6.0/server-build", - "@remix-run/react": "https://esm.sh/@remix-run/react@1.6.0", + "@remix-run/deno": "https://esm.sh/@remix-run/deno@1.6.1", + "@remix-run/dev/server-build": "https://esm.sh/@remix-run/dev@1.6.1/server-build", + "@remix-run/react": "https://esm.sh/@remix-run/react@1.6.1", "react": "https://esm.sh/react@17.0.2", "react-dom": "https://esm.sh/react-dom@17.0.2", "react-dom/server": "https://esm.sh/react-dom@17.0.2/server" diff --git a/templates/deno/remix.config.js b/templates/deno/remix.config.js index 4dde611cb5c..d621422e56f 100644 --- a/templates/deno/remix.config.js +++ b/templates/deno/remix.config.js @@ -1,3 +1,4 @@ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { serverBuildTarget: "deno", server: "./server.ts", diff --git a/templates/express/remix.config.js b/templates/express/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/templates/express/remix.config.js +++ b/templates/express/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/templates/fly/remix.config.js b/templates/fly/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/templates/fly/remix.config.js +++ b/templates/fly/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/templates/netlify/remix.config.js b/templates/netlify/remix.config.js index 5ca3e23baf5..b450a13c3e4 100644 --- a/templates/netlify/remix.config.js +++ b/templates/netlify/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { serverBuildTarget: "netlify", server: "./server.js", diff --git a/templates/remix/remix.config.js b/templates/remix/remix.config.js index 260b82c7cb1..adf2a0b5d3e 100644 --- a/templates/remix/remix.config.js +++ b/templates/remix/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { ignoredRouteFiles: ["**/.*"], // appDirectory: "app", diff --git a/templates/vercel/package.json b/templates/vercel/package.json index 5f607e16f22..5a3ba431c63 100644 --- a/templates/vercel/package.json +++ b/templates/vercel/package.json @@ -9,7 +9,7 @@ "@remix-run/node": "*", "@remix-run/react": "*", "@remix-run/vercel": "*", - "@vercel/node": "^2.0.0", + "@vercel/node": "^1.15.2", "react": "^17.0.2", "react-dom": "^17.0.2" }, diff --git a/templates/vercel/remix.config.js b/templates/vercel/remix.config.js index 042147b678f..3a84dd6ccd7 100644 --- a/templates/vercel/remix.config.js +++ b/templates/vercel/remix.config.js @@ -1,6 +1,4 @@ -/** - * @type {import('@remix-run/dev').AppConfig} - */ +/** @type {import('@remix-run/dev').AppConfig} */ module.exports = { serverBuildTarget: "vercel", // When running locally in development mode, we use the built in remix