Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(remix-dev): allow defining multiple routes for the same route module file #3970

Merged
merged 13 commits into from Dec 1, 2022

Conversation

lucasferreira
Copy link
Contributor

Closes: #1898

  • Docs
  • Tests

Testing Strategy:

I copied a failing test to show that multiple routes pointing at a single route module get overwritten from here #3684 and works in some files to get this works for real.

Basically I've changed the remix-dev/config/routes.ts to allow receive some optional custom ID for routes because in a normal way two or more routes to the same route module will receive internally the same ID, so if somebody could pass a new unique ID we will resolve this this "route overwritten" situation.

Also to get the this idea completely working I've had too changed remix-dev/compiler/assets.ts to allow the compiler groups more then one route per route module file.

@changeset-bot
Copy link

changeset-bot bot commented Aug 9, 2022

🦋 Changeset detected

Latest commit: 86b8720

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 16 packages
Name Type
@remix-run/dev Major
create-remix Major
remix Major
@remix-run/architect Major
@remix-run/cloudflare Major
@remix-run/cloudflare-pages Major
@remix-run/cloudflare-workers Major
@remix-run/deno Major
@remix-run/eslint-config Major
@remix-run/express Major
@remix-run/netlify Major
@remix-run/node Major
@remix-run/react Major
@remix-run/serve Major
@remix-run/server-runtime Major
@remix-run/vercel Major

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@lucasferreira lucasferreira changed the title Allow multiple routes for same route module test(remix-dev): allow multiple routes for same route module Aug 9, 2022
@lucasferreira lucasferreira changed the title test(remix-dev): allow multiple routes for same route module fix(remix-dev): allow multiple routes for same route module Aug 9, 2022
@lucasferreira lucasferreira changed the title fix(remix-dev): allow multiple routes for same route module fix(remix-dev): allow defining multiple routes for the same route module file Aug 9, 2022
Copy link
Contributor

@AndrewLeedham AndrewLeedham left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is great!

packages/remix-dev/config/routes.ts Outdated Show resolved Hide resolved
Co-authored-by: Andrew Leedham <AndrewLeedham@outlook.com>
@remix-cla-bot
Copy link
Contributor

remix-cla-bot bot commented Aug 10, 2022

Thank you for signing the Contributor License Agreement. Let's get this merged! 🥳

- Better name for automated ID variable;
- Small adjust in `id` option comment;
@lucasferreira
Copy link
Contributor Author

Hi @AndrewLeedham

I made a small change in the last commit in variable id (to fileId) name to clarify more what kind of id the automated. And also made more one adjust in id option comment instruction/detail in the way u suggest.

What is the next step to me?

@AndrewLeedham
Copy link
Contributor

Hi @AndrewLeedham

I made a small change in the last commit in variable id (to fileId) name to clarify more what kind of id the automated. And also made more one adjust in id option comment instruction/detail in the way u suggest.

What is the next step to me?

The changes looks good to me. Unfortunately I'm not a maintainer, just an interested party, so the PR getting the attention and subsequent review of a maintainer would be the next step I would have thought.

@mcansh mcansh linked an issue Aug 19, 2022 that may be closed by this pull request
@runmoore
Copy link
Contributor

Nice work! I think it would be good if the docs are also updated, but maybe this can come later once the idea has been given the OK

@lucasferreira
Copy link
Contributor Author

Nice work! I think it would be good if the docs are also updated, but maybe this can come later once the idea has been given the OK

I agree with the future docs update and if someone need some light code sample to test this PR:

module.exports = {
  appDirectory: "app",
  assetsBuildDirectory: "public/build",
  devServerPort: 8002,
  publicPath: "/build/",
  serverBuildDirectory: "build",
  ignoredRouteFiles: [".*"],
  routes(defineRoutes) {
    return defineRoutes(route => {
      route("/user/:id", "routes/index.tsx", { id: "user-by-id" });
      route("/user", "routes/index.tsx");
    });
  }
};

@runmoore
Copy link
Contributor

@lucasferreira what's the easiest way to test this logic in my own app?

@lucasferreira
Copy link
Contributor Author

@lucasferreira what's the easiest way to test this logic in my own app?

I know thats weird but when I started develop this changes I worked directly inside de node_modules/@remix-run of my current working project. If you need to test in a exists project you could do the same looking to my PR files:

https://github.com/remix-run/remix/pull/3970/files

Basically you need to change 2 files node_modules/@remix-run/dev/dist/config/routes.js and node_modules/@remix-run/dev/dist/compiler/assets.js

But if you need to test isolated some code and sample project you could checkout my modified branch (https://github.com/lucasferreira/remix/tree/dev) and create some playground app: https://github.com/remix-run/remix/blob/main/docs/pages/contributing.md#playground

@AndrewLeedham
Copy link
Contributor

Just played around with this locally, and it works a treat! Would be great to get this merged in :)

@runmoore I got this working by making a patch-package patch, I'll include it below.

@remix-run+dev+1.7.0.patch
diff --git a/node_modules/@remix-run/dev/dist/build.js b/node_modules/@remix-run/dev/dist/build.js
index e633d32..2ac6024 100644
--- a/node_modules/@remix-run/dev/dist/build.js
+++ b/node_modules/@remix-run/dev/dist/build.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cache.js b/node_modules/@remix-run/dev/dist/cache.js
index a2bf15e..7ad0d81 100644
--- a/node_modules/@remix-run/dev/dist/cache.js
+++ b/node_modules/@remix-run/dev/dist/cache.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli.js b/node_modules/@remix-run/dev/dist/cli.js
old mode 100755
new mode 100644
index b610bda..598d7a0
--- a/node_modules/@remix-run/dev/dist/cli.js
+++ b/node_modules/@remix-run/dev/dist/cli.js
@@ -1,6 +1,6 @@
 #!/usr/bin/env node
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/checkGitStatus.js b/node_modules/@remix-run/dev/dist/cli/checkGitStatus.js
index 73aadc1..974a250 100644
--- a/node_modules/@remix-run/dev/dist/cli/checkGitStatus.js
+++ b/node_modules/@remix-run/dev/dist/cli/checkGitStatus.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
@@ -25,9 +25,7 @@ const checkGitStatus = (projectDir, {
     clean = isGitClean(projectDir);
     errorMessage = "Git directory is not clean";
   } catch (err) {
-    var _err$stderr;
-
-    if ((err === null || err === void 0 ? void 0 : (_err$stderr = err.stderr) === null || _err$stderr === void 0 ? void 0 : _err$stderr.indexOf("Not a git repository")) >= 0) {
+    if ((err === null || err === void 0 ? void 0 : err.stderr.indexOf("Not a git repository")) >= 0) {
       clean = true;
     }
   }
diff --git a/node_modules/@remix-run/dev/dist/cli/commands.js b/node_modules/@remix-run/dev/dist/cli/commands.js
index 31e6d43..93e642f 100644
--- a/node_modules/@remix-run/dev/dist/cli/commands.js
+++ b/node_modules/@remix-run/dev/dist/cli/commands.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/create.js b/node_modules/@remix-run/dev/dist/cli/create.js
index 2863b8e..395f1a8 100644
--- a/node_modules/@remix-run/dev/dist/cli/create.js
+++ b/node_modules/@remix-run/dev/dist/cli/create.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/getPreferredPackageManager.js b/node_modules/@remix-run/dev/dist/cli/getPreferredPackageManager.js
index 37645f6..fdc78bd 100644
--- a/node_modules/@remix-run/dev/dist/cli/getPreferredPackageManager.js
+++ b/node_modules/@remix-run/dev/dist/cli/getPreferredPackageManager.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/index.js b/node_modules/@remix-run/dev/dist/cli/index.js
index 3283c64..521d741 100644
--- a/node_modules/@remix-run/dev/dist/cli/index.js
+++ b/node_modules/@remix-run/dev/dist/cli/index.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/jscodeshift.js b/node_modules/@remix-run/dev/dist/cli/migrate/jscodeshift.js
index 14b2d7e..c63080c 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/jscodeshift.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/jscodeshift.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/cleanupPackageJson.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/cleanupPackageJson.js
index 83f1360..e7529bd 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/cleanupPackageJson.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/cleanupPackageJson.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/convertTSConfigs.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/convertTSConfigs.js
index 12a77dd..83bcb3e 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/convertTSConfigs.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/convertTSConfigs.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/convertTSFilesToJS/convertTSFileToJS.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/convertTSFilesToJS/convertTSFileToJS.js
index 9b67636..89ce36b 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/convertTSFilesToJS/convertTSFileToJS.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/convertTSFilesToJS/convertTSFileToJS.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/convertTSFilesToJS/index.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/convertTSFilesToJS/index.js
index 17755db..b3d0d78 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/convertTSFilesToJS/index.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/convertTSFilesToJS/index.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/index.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/index.js
index 4bb4d57..1d0da47 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/index.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/index.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/checkNoDifferentImportTypesCombined.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/checkNoDifferentImportTypesCombined.js
index b15839e..e5543d2 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/checkNoDifferentImportTypesCombined.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/checkNoDifferentImportTypesCombined.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/createExpressionStatement.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/createExpressionStatement.js
index c213e78..bcc262e 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/createExpressionStatement.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/createExpressionStatement.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/createVariableDeclarationIdentifier.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/createVariableDeclarationIdentifier.js
index 1f2897e..979f387 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/createVariableDeclarationIdentifier.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/createVariableDeclarationIdentifier.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/createVariableDeclarationObjectPattern.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/createVariableDeclarationObjectPattern.js
index bf4cfbc..b032157 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/createVariableDeclarationObjectPattern.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/createVariableDeclarationObjectPattern.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/index.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/index.js
index 81f188b..2f4429c 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/index.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/convert-to-javascript/transform/index.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/index.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/index.js
index 8c17762..52cfa3d 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/index.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/index.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/dependency.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/dependency.js
index fa98724..e610274 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/dependency.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/dependency.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/index.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/index.js
index e4210bb..93308d7 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/index.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/index.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/messages.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/messages.js
index 7ffe47b..e68830c 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/messages.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/messages.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/remixSetup.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/remixSetup.js
index 7d4afb9..efbd58a 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/remixSetup.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/remixSetup.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/resolveTransformOptions.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/resolveTransformOptions.js
index 88cc39a..1f9920d 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/resolveTransformOptions.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/resolveTransformOptions.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/adapter.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/adapter.js
index c21d7be..d0336f1 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/adapter.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/adapter.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/getNewImportDeclarations.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/getNewImportDeclarations.js
index 63333ee..0a500a3 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/getNewImportDeclarations.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/getNewImportDeclarations.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/getRemixImports.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/getRemixImports.js
index 069d25f..7a1fec8 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/getRemixImports.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/getRemixImports.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/index.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/index.js
index 11d2715..a966870 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/index.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/index.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/mapNormalizedImports/index.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/mapNormalizedImports/index.js
index 7f6954d..c087697 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/mapNormalizedImports/index.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/mapNormalizedImports/index.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/mapNormalizedImports/packageExports.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/mapNormalizedImports/packageExports.js
index 1fb0077..4a332bf 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/mapNormalizedImports/packageExports.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/mapNormalizedImports/packageExports.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/normalizeImports.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/normalizeImports.js
index d1d6231..924f3eb 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/normalizeImports.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/normalizeImports.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/runtime.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/runtime.js
index 23b6d96..b7f317c 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/runtime.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/replace-remix-imports/transform/runtime.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/transforms.js b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/transforms.js
index cc1ddb7..02bcc10 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/migrations/transforms.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/migrations/transforms.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/resolveInput.js b/node_modules/@remix-run/dev/dist/cli/migrate/resolveInput.js
index 1972125..6aa340e 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/resolveInput.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/resolveInput.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/migrate/run.js b/node_modules/@remix-run/dev/dist/cli/migrate/run.js
index d8d202b..83f5fe1 100644
--- a/node_modules/@remix-run/dev/dist/cli/migrate/run.js
+++ b/node_modules/@remix-run/dev/dist/cli/migrate/run.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/cli/run.js b/node_modules/@remix-run/dev/dist/cli/run.js
index 9f6edb6..0bbc772 100644
--- a/node_modules/@remix-run/dev/dist/cli/run.js
+++ b/node_modules/@remix-run/dev/dist/cli/run.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
@@ -63,7 +63,6 @@ ${colors.logoBlue("R")} ${colors.logoGreen("E")} ${colors.logoYellow("M")} ${col
     $ remix build [${colors.arg("projectDir")}]
     $ remix dev [${colors.arg("projectDir")}]
     $ remix routes [${colors.arg("projectDir")}]
-    $ remix watch [${colors.arg("projectDir")}]
     $ remix setup [${colors.arg("remixPlatform")}]
     $ remix migrate [-m ${colors.arg("migration")}] [${colors.arg("projectDir")}]
 
@@ -139,14 +138,6 @@ ${colors.logoBlue("R")} ${colors.logoGreen("E")} ${colors.logoYellow("M")} ${col
     $ remix dev my-app
     $ remix dev --debug
 
-  ${colors.heading("Start your server separately and watch for changes")}:
-
-    # custom server start command, for example:
-    $ remix watch
-
-    # in a separate tab:
-    $ node --inspect --require ./node_modules/dotenv/config --require ./mocks ./build/server.js
-
   ${colors.heading("Show all routes in your app")}:
 
     $ remix routes
diff --git a/node_modules/@remix-run/dev/dist/cli/setup.js b/node_modules/@remix-run/dev/dist/cli/setup.js
index d0711e6..7da47fb 100644
--- a/node_modules/@remix-run/dev/dist/cli/setup.js
+++ b/node_modules/@remix-run/dev/dist/cli/setup.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/colors.js b/node_modules/@remix-run/dev/dist/colors.js
index 2b32f07..12845e4 100644
--- a/node_modules/@remix-run/dev/dist/colors.js
+++ b/node_modules/@remix-run/dev/dist/colors.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/compiler.js b/node_modules/@remix-run/dev/dist/compiler.js
index 9ce96d5..c37d916 100644
--- a/node_modules/@remix-run/dev/dist/compiler.js
+++ b/node_modules/@remix-run/dev/dist/compiler.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
@@ -62,6 +62,11 @@ var fse__namespace = /*#__PURE__*/_interopNamespace(fse);
 var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
 var chokidar__default = /*#__PURE__*/_interopDefaultLegacy(chokidar);
 
+// directory in the same place relative to this file. It is eventually injected
+// as a source file when building the app.
+
+const reactShim = path__namespace.resolve(__dirname, "compiler/shims/react.ts");
+
 function defaultWarningHandler(message, key) {
   warnings.warnOnce(message, key);
 }
@@ -316,6 +321,7 @@ async function createBrowserBuild(config, options) {
     platform: "browser",
     format: "esm",
     external: externals,
+    inject: config.serverBuildTarget === "deno" ? [] : [reactShim],
     loader: loaders.loaders,
     bundle: true,
     logLevel: "silent",
@@ -334,8 +340,6 @@ async function createBrowserBuild(config, options) {
       "process.env.NODE_ENV": JSON.stringify(options.mode),
       "process.env.REMIX_DEV_SERVER_WS_PORT": JSON.stringify(config.devServerPort)
     },
-    jsx: "automatic",
-    jsxDev: options.mode !== build$1.BuildMode.Production,
     plugins
   });
 }
@@ -383,6 +387,7 @@ function createServerBuild(config, options, assetsManifestPromiseRef) {
     minify: options.mode === build$1.BuildMode.Production && isCloudflareRuntime,
     mainFields: isCloudflareRuntime ? ["browser", "module", "main"] : config.serverModuleFormat === "esm" ? ["module", "main"] : ["main", "module"],
     target: options.target,
+    inject: config.serverBuildTarget === "deno" ? [] : [reactShim],
     loader: loaders.loaders,
     bundle: true,
     logLevel: "silent",
@@ -397,8 +402,6 @@ function createServerBuild(config, options, assetsManifestPromiseRef) {
       "process.env.NODE_ENV": JSON.stringify(options.mode),
       "process.env.REMIX_DEV_SERVER_WS_PORT": JSON.stringify(config.devServerPort)
     },
-    jsx: "automatic",
-    jsxDev: options.mode !== build$1.BuildMode.Production,
     plugins
   }).then(async build => {
     await writeServerBuildResult(config, build.outputFiles);
diff --git a/node_modules/@remix-run/dev/dist/compiler/assets.js b/node_modules/@remix-run/dev/dist/compiler/assets.js
index 37c3817..cd062bd 100644
--- a/node_modules/@remix-run/dev/dist/compiler/assets.js
+++ b/node_modules/@remix-run/dev/dist/compiler/assets.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
@@ -50,7 +50,7 @@ async function createAssetsManifest(config, metafile) {
   let entryClientFile = path__namespace.resolve(config.appDirectory, config.entryClientFile);
   let routesByFile = Object.keys(config.routes).reduce((map, key) => {
     let route = config.routes[key];
-    map.set(route.file, route);
+    map.set(route.file, map.has(route.file) ? [...map.get(route.file), route] : [route]);
     return map;
   }, new Map());
   let entry;
@@ -69,22 +69,27 @@ async function createAssetsManifest(config, metafile) {
       }; // Only parse routes otherwise dynamic imports can fall into here and fail the build
     } else if (entryPointFile.startsWith("browser-route-module:")) {
       entryPointFile = entryPointFile.replace(/(^browser-route-module:|\?browser$)/g, "");
-      let route = routesByFile.get(entryPointFile);
-      invariant["default"](route, `Cannot get route for entry point ${output.entryPoint}`);
-      let sourceExports = await routes.getRouteModuleExportsCached(config, route.id);
-      routes$1[route.id] = {
-        id: route.id,
-        parentId: route.parentId,
-        path: route.path,
-        index: route.index,
-        caseSensitive: route.caseSensitive,
-        module: resolveUrl(key),
-        imports: resolveImports(output.imports),
-        hasAction: sourceExports.includes("action"),
-        hasLoader: sourceExports.includes("loader"),
-        hasCatchBoundary: sourceExports.includes("CatchBoundary"),
-        hasErrorBoundary: sourceExports.includes("ErrorBoundary")
-      };
+      let groupedRoute = routesByFile.get(entryPointFile);
+      invariant["default"](groupedRoute, `Cannot get route(s) for entry point ${output.entryPoint}`);
+
+      if (groupedRoute) {
+        for (let route of groupedRoute) {
+          let sourceExports = await routes.getRouteModuleExportsCached(config, route.id);
+          routes$1[route.id] = {
+            id: route.id,
+            parentId: route.parentId,
+            path: route.path,
+            index: route.index,
+            caseSensitive: route.caseSensitive,
+            module: resolveUrl(key),
+            imports: resolveImports(output.imports),
+            hasAction: sourceExports.includes("action"),
+            hasLoader: sourceExports.includes("loader"),
+            hasCatchBoundary: sourceExports.includes("CatchBoundary"),
+            hasErrorBoundary: sourceExports.includes("ErrorBoundary")
+          };
+        }
+      }
     }
   }
 
diff --git a/node_modules/@remix-run/dev/dist/compiler/dependencies.js b/node_modules/@remix-run/dev/dist/compiler/dependencies.js
index d9637fb..3a52f08 100644
--- a/node_modules/@remix-run/dev/dist/compiler/dependencies.js
+++ b/node_modules/@remix-run/dev/dist/compiler/dependencies.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/compiler/loaders.js b/node_modules/@remix-run/dev/dist/compiler/loaders.js
index 267db7e..c9f7861 100644
--- a/node_modules/@remix-run/dev/dist/compiler/loaders.js
+++ b/node_modules/@remix-run/dev/dist/compiler/loaders.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
@@ -36,13 +36,10 @@ var path__namespace = /*#__PURE__*/_interopNamespace(path);
 
 const loaders = {
   ".aac": "file",
-  ".avif": "file",
   ".css": "file",
   ".eot": "file",
   ".flac": "file",
   ".gif": "file",
-  ".gql": "text",
-  ".graphql": "text",
   ".ico": "file",
   ".jpeg": "file",
   ".jpg": "file",
@@ -68,8 +65,7 @@ const loaders = {
   ".webmanifest": "file",
   ".webp": "file",
   ".woff": "file",
-  ".woff2": "file",
-  ".zip": "file"
+  ".woff2": "file"
 };
 function getLoaderForFile(file) {
   let ext = path__namespace.extname(file);
diff --git a/node_modules/@remix-run/dev/dist/compiler/plugins/browserRouteModulesPlugin.js b/node_modules/@remix-run/dev/dist/compiler/plugins/browserRouteModulesPlugin.js
index e73e834..85a0cc3 100644
--- a/node_modules/@remix-run/dev/dist/compiler/plugins/browserRouteModulesPlugin.js
+++ b/node_modules/@remix-run/dev/dist/compiler/plugins/browserRouteModulesPlugin.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/compiler/plugins/emptyModulesPlugin.js b/node_modules/@remix-run/dev/dist/compiler/plugins/emptyModulesPlugin.js
index de2be25..24061de 100644
--- a/node_modules/@remix-run/dev/dist/compiler/plugins/emptyModulesPlugin.js
+++ b/node_modules/@remix-run/dev/dist/compiler/plugins/emptyModulesPlugin.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/compiler/plugins/mdx.js b/node_modules/@remix-run/dev/dist/compiler/plugins/mdx.js
index ed4befe..26fdbb7 100644
--- a/node_modules/@remix-run/dev/dist/compiler/plugins/mdx.js
+++ b/node_modules/@remix-run/dev/dist/compiler/plugins/mdx.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/compiler/plugins/serverAssetsManifestPlugin.js b/node_modules/@remix-run/dev/dist/compiler/plugins/serverAssetsManifestPlugin.js
index 5aa58bd..bfbacbb 100644
--- a/node_modules/@remix-run/dev/dist/compiler/plugins/serverAssetsManifestPlugin.js
+++ b/node_modules/@remix-run/dev/dist/compiler/plugins/serverAssetsManifestPlugin.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/compiler/plugins/serverBareModulesPlugin.js b/node_modules/@remix-run/dev/dist/compiler/plugins/serverBareModulesPlugin.js
index 07b03f2..e17905b 100644
--- a/node_modules/@remix-run/dev/dist/compiler/plugins/serverBareModulesPlugin.js
+++ b/node_modules/@remix-run/dev/dist/compiler/plugins/serverBareModulesPlugin.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/compiler/plugins/serverEntryModulePlugin.js b/node_modules/@remix-run/dev/dist/compiler/plugins/serverEntryModulePlugin.js
index 73194c8..b5fbd7d 100644
--- a/node_modules/@remix-run/dev/dist/compiler/plugins/serverEntryModulePlugin.js
+++ b/node_modules/@remix-run/dev/dist/compiler/plugins/serverEntryModulePlugin.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/compiler/plugins/serverRouteModulesPlugin.js b/node_modules/@remix-run/dev/dist/compiler/plugins/serverRouteModulesPlugin.js
index ecd2ad8..e2456b3 100644
--- a/node_modules/@remix-run/dev/dist/compiler/plugins/serverRouteModulesPlugin.js
+++ b/node_modules/@remix-run/dev/dist/compiler/plugins/serverRouteModulesPlugin.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/compiler/plugins/urlImportsPlugin.js b/node_modules/@remix-run/dev/dist/compiler/plugins/urlImportsPlugin.js
index bc13acf..431fab6 100644
--- a/node_modules/@remix-run/dev/dist/compiler/plugins/urlImportsPlugin.js
+++ b/node_modules/@remix-run/dev/dist/compiler/plugins/urlImportsPlugin.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/compiler/routes.js b/node_modules/@remix-run/dev/dist/compiler/routes.js
index f10aa30..0d3d4de 100644
--- a/node_modules/@remix-run/dev/dist/compiler/routes.js
+++ b/node_modules/@remix-run/dev/dist/compiler/routes.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/compiler/shims/react.ts b/node_modules/@remix-run/dev/dist/compiler/shims/react.ts
new file mode 100644
index 0000000..44af7fb
--- /dev/null
+++ b/node_modules/@remix-run/dev/dist/compiler/shims/react.ts
@@ -0,0 +1,3 @@
+// eslint-disable-next-line import/no-extraneous-dependencies
+import * as React from "react";
+export { React };
diff --git a/node_modules/@remix-run/dev/dist/compiler/utils/crypto.js b/node_modules/@remix-run/dev/dist/compiler/utils/crypto.js
index 3361cd9..8efc4ea 100644
--- a/node_modules/@remix-run/dev/dist/compiler/utils/crypto.js
+++ b/node_modules/@remix-run/dev/dist/compiler/utils/crypto.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/compiler/utils/fs.js b/node_modules/@remix-run/dev/dist/compiler/utils/fs.js
index 71bfc95..ddb3b51 100644
--- a/node_modules/@remix-run/dev/dist/compiler/utils/fs.js
+++ b/node_modules/@remix-run/dev/dist/compiler/utils/fs.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/compiler/utils/tsconfig/index.js b/node_modules/@remix-run/dev/dist/compiler/utils/tsconfig/index.js
index 3443787..8a4c2ca 100644
--- a/node_modules/@remix-run/dev/dist/compiler/utils/tsconfig/index.js
+++ b/node_modules/@remix-run/dev/dist/compiler/utils/tsconfig/index.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/compiler/utils/tsconfig/write-config-defaults.js b/node_modules/@remix-run/dev/dist/compiler/utils/tsconfig/write-config-defaults.js
index 74903dc..5f82e4b 100644
--- a/node_modules/@remix-run/dev/dist/compiler/utils/tsconfig/write-config-defaults.js
+++ b/node_modules/@remix-run/dev/dist/compiler/utils/tsconfig/write-config-defaults.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/compiler/utils/url.js b/node_modules/@remix-run/dev/dist/compiler/utils/url.js
index c2c6f97..270e588 100644
--- a/node_modules/@remix-run/dev/dist/compiler/utils/url.js
+++ b/node_modules/@remix-run/dev/dist/compiler/utils/url.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/compiler/virtualModules.js b/node_modules/@remix-run/dev/dist/compiler/virtualModules.js
index 73e3760..6ad2f54 100644
--- a/node_modules/@remix-run/dev/dist/compiler/virtualModules.js
+++ b/node_modules/@remix-run/dev/dist/compiler/virtualModules.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/compiler/warnings.js b/node_modules/@remix-run/dev/dist/compiler/warnings.js
index 050af27..c80ac49 100644
--- a/node_modules/@remix-run/dev/dist/compiler/warnings.js
+++ b/node_modules/@remix-run/dev/dist/compiler/warnings.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/config.js b/node_modules/@remix-run/dev/dist/config.js
index 4924d80..58392b5 100644
--- a/node_modules/@remix-run/dev/dist/config.js
+++ b/node_modules/@remix-run/dev/dist/config.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
@@ -13,7 +13,6 @@
 Object.defineProperty(exports, '__esModule', { value: true });
 
 var path = require('path');
-var url = require('url');
 var fse = require('fs-extra');
 var getPort = require('get-port');
 var routes = require('./config/routes.js');
@@ -63,23 +62,9 @@ async function readConfig(remixRoot, serverMode = serverModes.ServerMode.Product
   let appConfig = {};
 
   if (configFile) {
-    let appConfigModule;
-
     try {
-      var _appConfigModule;
-
-      // shout out to next
-      // https://github.com/vercel/next.js/blob/b15a976e11bf1dc867c241a4c1734757427d609c/packages/next/server/config.ts#L748-L765
-      if (process.env.NODE_ENV === "test") {
-        // dynamic import does not currently work inside of vm which
-        // jest relies on so we fall back to require for this case
-        // https://github.com/nodejs/node/issues/35889
-        appConfigModule = require(configFile);
-      } else {
-        appConfigModule = await import(url.pathToFileURL(configFile).href);
-      }
-
-      appConfig = ((_appConfigModule = appConfigModule) === null || _appConfigModule === void 0 ? void 0 : _appConfigModule.default) || appConfigModule;
+      let appConfigModule = await import(configFile);
+      appConfig = (appConfigModule === null || appConfigModule === void 0 ? void 0 : appConfigModule.default) || appConfig;
     } catch (error) {
       throw new Error(`Error loading Remix config at ${configFile}\n${String(error)}`);
     }
diff --git a/node_modules/@remix-run/dev/dist/config/format.js b/node_modules/@remix-run/dev/dist/config/format.js
index e1ebeeb..b0b3ccd 100644
--- a/node_modules/@remix-run/dev/dist/config/format.js
+++ b/node_modules/@remix-run/dev/dist/config/format.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/config/routes.d.ts b/node_modules/@remix-run/dev/dist/config/routes.d.ts
index f87306e..b375c5d 100644
--- a/node_modules/@remix-run/dev/dist/config/routes.d.ts
+++ b/node_modules/@remix-run/dev/dist/config/routes.d.ts
@@ -44,6 +44,12 @@ export interface DefineRouteOptions {
      * Should be `true` if this is an index route that does not allow child routes.
      */
     index?: boolean;
+    /**
+     * An optional unique id string for this route, that will be appended to the file
+     * name e.g: `<file-name>--<id>`. Use this if you need to aggregate two or more
+     * routes with the same route file.
+     */
+    id?: string;
 }
 interface DefineRouteChildren {
     (): void;
diff --git a/node_modules/@remix-run/dev/dist/config/routes.js b/node_modules/@remix-run/dev/dist/config/routes.js
index 5bf6165..6efd7e9 100644
--- a/node_modules/@remix-run/dev/dist/config/routes.js
+++ b/node_modules/@remix-run/dev/dist/config/routes.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
@@ -65,11 +65,12 @@ function defineRoutes(callback) {
       options = optionsOrChildren || {};
     }
 
+    let fileId = createRouteId(file);
     let route = {
       path: path ? path : undefined,
       index: options.index ? true : undefined,
       caseSensitive: options.caseSensitive ? true : undefined,
-      id: createRouteId(file),
+      id: options.id ? `${fileId}--${options.id}` : fileId,
       parentId: parentRoutes.length > 0 ? parentRoutes[parentRoutes.length - 1].id : undefined,
       file
     };
diff --git a/node_modules/@remix-run/dev/dist/config/routesConvention.js b/node_modules/@remix-run/dev/dist/config/routesConvention.js
index 53b70c2..9f72532 100644
--- a/node_modules/@remix-run/dev/dist/config/routesConvention.js
+++ b/node_modules/@remix-run/dev/dist/config/routesConvention.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/config/serverModes.js b/node_modules/@remix-run/dev/dist/config/serverModes.js
index 0148352..fc7fc5c 100644
--- a/node_modules/@remix-run/dev/dist/config/serverModes.js
+++ b/node_modules/@remix-run/dev/dist/config/serverModes.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/env.js b/node_modules/@remix-run/dev/dist/env.js
index 94604b6..28ddc5f 100644
--- a/node_modules/@remix-run/dev/dist/env.js
+++ b/node_modules/@remix-run/dev/dist/env.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/index.js b/node_modules/@remix-run/dev/dist/index.js
index ee5da6d..1417091 100644
--- a/node_modules/@remix-run/dev/dist/index.js
+++ b/node_modules/@remix-run/dev/dist/index.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/invariant.js b/node_modules/@remix-run/dev/dist/invariant.js
index edf22a0..03dd14b 100644
--- a/node_modules/@remix-run/dev/dist/invariant.js
+++ b/node_modules/@remix-run/dev/dist/invariant.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/logging.js b/node_modules/@remix-run/dev/dist/logging.js
index 74628e0..2261c3f 100644
--- a/node_modules/@remix-run/dev/dist/logging.js
+++ b/node_modules/@remix-run/dev/dist/logging.js
@@ -1,5 +1,5 @@
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *
diff --git a/node_modules/@remix-run/dev/dist/modules.d.ts b/node_modules/@remix-run/dev/dist/modules.d.ts
index 87516fe..4bc9a62 100644
--- a/node_modules/@remix-run/dev/dist/modules.d.ts
+++ b/node_modules/@remix-run/dev/dist/modules.d.ts
@@ -3,10 +3,6 @@ declare module "*.aac" {
     let asset: string;
     export default asset;
 }
-declare module "*.avif" {
-    let asset: string;
-    export default asset;
-}
 declare module "*.css" {
     let asset: string;
     export default asset;
@@ -23,14 +19,6 @@ declare module "*.gif" {
     let asset: string;
     export default asset;
 }
-declare module "*.gql" {
-    let asset: string;
-    export default asset;
-}
-declare module "*.graphql" {
-    let asset: string;
-    export default asset;
-}
 declare module "*.jpeg" {
     let asset: string;
     export default asset;
@@ -73,10 +61,6 @@ declare module "*.png" {
     let asset: string;
     export default asset;
 }
-declare module "*.sql" {
-    let asset: string;
-    export default asset;
-}
 declare module "*.svg" {
     let asset: string;
     export default asset;
@@ -109,7 +93,3 @@ declare module "*.webmanifest" {
     let asset: string;
     export default asset;
 }
-declare module "*.zip" {
-    let asset: string;
-    export default asset;
-}
diff --git a/node_modules/@remix-run/dev/dist/server-build.js b/node_modules/@remix-run/dev/dist/server-build.js
index 062a341..8c5c44d 100644
--- a/node_modules/@remix-run/dev/dist/server-build.js
+++ b/node_modules/@remix-run/dev/dist/server-build.js
@@ -1,6 +1,6 @@
 #!/usr/bin/env node
 /**
- * @remix-run/dev v1.7.0
+ * @remix-run/dev v1.6.7
  *
  * Copyright (c) Remix Software Inc.
  *

groupedRoute,
`Cannot get route(s) for entry point ${output.entryPoint}`
);
if (groupedRoute) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this if is needed due to the above invariant

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @brophdawg11

You're right, I will remove this IF.

let route: ConfigRoute = {
path: path ? path : undefined,
index: options.index ? true : undefined,
caseSensitive: options.caseSensitive ? true : undefined,
id: createRouteId(file),
id: options.id ? `${fileId}--${options.id}` : fileId,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is the best way to "verbatim and error if they provide duplicates" just throws a new Error inside routes.ts file?

Maybe just change this to

Suggested change
id: options.id ? `${fileId}--${options.id}` : fileId,
id: options.id || createRouteId(file),

And delete line 147 above

@runmoore
Copy link
Contributor

runmoore commented Sep 29, 2022

Thanks @AndrewLeedham for sharing the patch solution.

@lucasferreira how does this work with nested routes?

I'm trying the below where the use case it to map a translated url back to the 'original' one in english which is in the file system. In this example I get just the nested content

  routes(defineRoutes) {
    return defineRoutes((route) => {
      route('/vols', 'routes/flights/index.tsx', { id: 'flights-fr-fr' });
    });
  },

and in this case I just get the 'outside' content, with none of the nesting.

  routes(defineRoutes) {
    return defineRoutes((route) => {
      route('/vols', 'routes/flights.tsx', { id: 'flights-fr-fr' });
    });
  },

There's a brief explanation in the documentation for nesting, but I can't make sense of it.

@kiliman
Copy link
Collaborator

kiliman commented Sep 29, 2022

@runmoore The third parameter to the route function is a callback where you can define your child routes. Looks like if you're using the { id } options, then the callback is the fourth parameter.

routes(defineRoutes) {
    return defineRoutes((route) => {
      route('/vols', 'routes/flights.tsx', { id: 'flights-fr-fr' }, () => {... child routes });
    });
  },

@runmoore
Copy link
Contributor

@kiliman like this? I've tested it locally, and it works, but the nested routing is really confusing me.

routes(defineRoutes) {
    return defineRoutes((route) => {
      route(
        '/vols', 'routes/flights.tsx', { id: 'flights-root-fr-fr' },
        () => {
          route('/vols', 'routes/flights/index.tsx', { id: 'flights-fr-fr' });
          route('/vols/a-propos', 'routes/flights/about/index.tsx', { id: 'flights-about-fr-fr' },
          );
        },
      );
    });
  },

@kiliman
Copy link
Collaborator

kiliman commented Sep 29, 2022

With nested routes, the path should be relative to its parent route. Also specify index: true if this is an index route.

routes(defineRoutes) {
    return defineRoutes((route) => {
      route(
        'vols', 'routes/flights.tsx', { id: 'flights-root-fr-fr' },
        () => {
          route('', 'routes/flights/index.tsx', { id: 'flights-fr-fr', index: true });
          route('a-propos', 'routes/flights/about/index.tsx', { id: 'flights-about-fr-fr' },
          );
        },
      );
    });
  },
<Routes>
  <Route file="root.tsx">
    <Route index file="routes/index.tsx" />
    <Route path="vols" file="routes/flights.tsx">
      <Route index file="routes/flights/index.tsx" />
      <Route path="a-propos" file="routes/flights/about/index.tsx" />
    </Route>
  </Route>
</Routes>

@runmoore
Copy link
Contributor

Thanks @kiliman, this is very useful, especially about the undocumented index: true. I have more questions, and to avoid derailling this PR, i've started a discussion on discord https://discord.com/channels/770287896669978684/1025080466488954914/1025080466488954914

Trying to solve a conflict
This reverts commit 2064c57.
@lucasferreira
Copy link
Contributor Author

@lucasferreira I'd say error as early as possible, which should be in defineRoutes. That's where we'd inadvertently overwrite previous routes via routes[route.id] = route 👍

Hi @brophdawg11 and @AndrewLeedham ,

I followed the indicated instructions here in my last commit, now the custom ID it's 100% customizable and we are checking for dupes inside routes.ts. I have also written some tests to check this error catch in case that some duplicate route are set.

But now we have some conflict in assets.ts file, as I could see something changed in this file in the last commits, something about the getRouteModuleExportsCached, but I couldn't solve this conflict cause we don't have automatic merge available.

@brophdawg11 could you help us in that?

@AndrewLeedham
Copy link
Contributor

@lucasferreira I'd say error as early as possible, which should be in defineRoutes. That's where we'd inadvertently overwrite previous routes via routes[route.id] = route 👍

Hi @brophdawg11 and @AndrewLeedham ,

I followed the indicated instructions here in my last commit, now the custom ID it's 100% customizable and we are checking for dupes inside routes.ts. I have also written some tests to check this error catch in case that some duplicate route are set.

But now we have some conflict in assets.ts file, as I could see something changed in this file in the last commits, something about the getRouteModuleExportsCached, but I couldn't solve this conflict cause we don't have automatic merge available.

@brophdawg11 could you help us in that?

Could you add remix as an upstream remote locally and do a git merge or rebase?

@lucasferreira
Copy link
Contributor Author

Could you add remix as an upstream remote locally and do a git merge or rebase?

Hi @AndrewLeedham I really don't know how to do that 😫

I'm working only in my fork in dev branch, is it easy to find how to do this rebase thing? I'm not git expert =/

@AndrewLeedham
Copy link
Contributor

AndrewLeedham commented Nov 1, 2022

Hi @AndrewLeedham I really don't know how to do that 😫

I'm working only in my fork in dev branch, is it easy to find how to do this rebase thing? I'm not git expert =/

Hi @lucasferreira. I would usually do this from the command-line, if you are using a GUI tool there may be a way to do it there. The command-line way is as follows:

  1. Add remix as a remote, you can call it what you want "upstream" is a convention:
    git remote add upstream https://github.com/remix-run/remix
    
  2. Then pull the git information for the remote:
    git fetch upstream
    
  3. Finally either merge or rebase the remote dev branch into your branch (both approaches will have conflicts which you will have to resolve locally before pushing):
    • Merge
      git merge upstream/dev
      
    • Rebase
      git rebase upstream/dev
      

Hope that helps 😃

@lucasferreira
Copy link
Contributor Author

That's was more easy than expected! Thank you very much @AndrewLeedham!

@brophdawg11 brophdawg11 self-assigned this Nov 2, 2022
@@ -95,18 +95,72 @@ describe("defineRoutes", () => {
route("/other", "routes/other-route.tsx");
});

expect(Object.entries(routes)).toHaveLength(3);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Made this test a bit stronger by asserting that we're getting the right paths, files, and IDs on defined routes 👍

throw new Error(
`You tried to define a route with custom id "${options.id}" but one ` +
"already exists. Custom route ids must be unique"
`Unable to define routes with duplicate route id: "${route.id}"`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I adjusted this to account for the (very edge-case) scenario that an auto-generated route id collies with a previously-defined custom id and expanded the tests above to assert the new behavior

Copy link
Contributor

@brophdawg11 brophdawg11 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @lucasferreira!

@lucasferreira
Copy link
Contributor Author

Hi @brophdawg11 anything left for me to do here and help this PR?

@brophdawg11
Copy link
Contributor

@lucasferreira Do you mind adding a changeset? There are instructions in #3970 (comment) but the gist of it is run yarn changeset, choose your changed packages (@remix-run/dev), and then choose a minor bump since this is new functionality. Then commit and push the added changeset file. Thanks!

@lucasferreira
Copy link
Contributor Author

@lucasferreira Do you mind adding a changeset? There are instructions in #3970 (comment) but the gist of it is run yarn changeset, choose your changed packages (@remix-run/dev), and then choose a minor bump since this is new functionality. Then commit and push the added changeset file. Thanks!

Done!

@brophdawg11
Copy link
Contributor

Thanks @lucasferreira!

@brophdawg11 brophdawg11 merged commit da0c278 into remix-run:dev Dec 1, 2022
@constantincerdan
Copy link

Thanks for your work on this @lucasferreira!

Is there an ETA for when this'll be released?

@machour
Copy link
Collaborator

machour commented Dec 2, 2022

@constantincerdan Probably next week, or the one after it.
patch-package is your friend until then!

pcattori added a commit that referenced this pull request Dec 16, 2022
* fix(remix-dev): convert `config.appDirectory` to relative unix path (#4709)

* fix(remix-dev): convert appDirectory to unix style for fast-glob

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* chore: relative path

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* chore: add test

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* fix test

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* fix: typo

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* chore: update test

Signed-off-by: Logan McAnsh <logan@mcan.sh>

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* chore: add changeset for #4709 (#4718)

* ci: add typechecking for deno (#4715)

* ci: add typechecking for deno

* ci: install deno for integration tests

* chore: format

* chore: format

* fix: Firefox LiveReload (#4725)

Firefox infinitely reloads the page as long as `<LiveReload>` is rendering.

Closes #4692

* fix(remix-dev): allow defining multiple routes for the same route module file (#3970)

* Allow multiple routes for same route module

* Update packages/remix-dev/config/routes.ts

Co-authored-by: Andrew Leedham <AndrewLeedham@outlook.com>

* Update routes.ts

- Better name for automated ID variable;
- Small adjust in `id` option comment;

* - Removing redundant IF

* Update routes.ts

Revert complex custom ID in routes

* Non unique custom routes ID error and test

* Update assets.ts

Trying to solve a conflict

* Revert "Update assets.ts"

This reverts commit 2064c57.

* Error on collisions with non-custom routeIds

* Create big-spoons-grab.md

Co-authored-by: Andrew Leedham <AndrewLeedham@outlook.com>
Co-authored-by: Matt Brophy <matt@brophy.org>

* feat: Allow pass-through script props in `ScrollRestoration` (#2879)

* ci(nightly): add deno for typechecking deno files (#4738)

* ci: fix race condition writing globals.d.ts shim (#4717)

Co-authored-by: Chance Strickland <hi@chance.dev>

* chore: bump @playwright/test to latest (#4749)

Signed-off-by: Logan McAnsh <logan@mcan.sh>

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* Fix 4199: TypedResponse allows incompatible types (#4734)

* Fixes #4199: Do not allow assignment of incompatible TypedResponses

* Add myself to contributors.yml

* Create light-sheep-give.md

* slight changeset tweak

* additional changeset tweaks

Co-authored-by: Pedro Cattori <pcattori@gmail.com>

* chore: format

* test: add transition integration tests (#4739)

test: useTransition to wait for states

This approach could probably be applied across other flakey tests and could also be documented as a good approach of if there is user-feedback for a specific action when running integration tests.

* feat: testing helpers (#4539)

Co-authored-by: James Restall <james.restall@gmail.com>
Signed-off-by: Logan McAnsh <logan@mcan.sh>

* chore: format

* chore(remix-testing): update dependencies (#4756)

* fix(remix-testing): fix deps (#4757)

* Fix deps for new remix-testing package

* fix lint

* Remove ENABLE_REMIX_ROUTER flags (#4732)

* chore: add `@remix-run/testing` to changesets (#4781)

* chore: add `@remix-run/testing` to changesets

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* chore: update `ADDING_A_PACKAGE.md`

Signed-off-by: Logan McAnsh <logan@mcan.sh>

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* refactor(remix-react): upgrade Remix to `react-router-dom@6.4` (non-data-router) and drop `history` (#4731)

* Bump remix to react-router-dom@6.4.4 (#4668)

Co-authored-by: Mehdi Achour <machour@gmail.com>

* Bump remix to RR 6.4.4 and drop history dependency (#4702)

Co-authored-by: Mehdi Achour <machour@gmail.com>

* ci(nightly): move git operations after build (#4797)

* ci(nightly): move git operations after build

when adding deno typechecking (#4715), nightly now refers to the version we just calculated which hasnt been published when trying to build and typecheck

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* ci: update tmp branch name

Signed-off-by: Logan McAnsh <logan@mcan.sh>

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* perf(remix-dev): Optimize `parentRouteId` lookup in `defineConventionalRoutes` (#4538)

* Use object for parentRouteId lookup

* Sign CLA

* Move parentRouteId logic to a separate function

* Update test fixture path

* chore: format

* chore(dev): add changeset for PR #4538 (#4800)

* chore: format

* refactor(remix-react): use `react-router-dom` import instead of `react-router` (#3325)

* chore: manually bump remix-testing version due to not being on main just yet

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* fixup! chore: manually bump remix-testing version due to not being on main just yet

* fixup! chore: manually bump remix-testing version due to not being on main just yet

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* chore: unify error usage (#4696)

* chore: format

* Add fetcher state/type tests (#4803)

* chore(deps): bump esbuild to latest (#4754)

* chore: add invariant instead of using `!`

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* chore(deps): bump esbuild to latest

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* Create fresh-shrimps-join.md

Signed-off-by: Logan McAnsh <logan@mcan.sh>
Co-authored-by: Pedro Cattori <pcattori@gmail.com>

* test(integration): close server synchronously  (#4785)

* chore: normalize afterAll

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* test: close server synchronously

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* chore: appFixture.close isnt async anymore

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* Update integration/helpers/create-fixture.ts

Co-authored-by: Pedro Cattori <pcattori@gmail.com>

Signed-off-by: Logan McAnsh <logan@mcan.sh>
Co-authored-by: Pedro Cattori <pcattori@gmail.com>

* feat: remix optional segments (#4706)

* feat: transform optional routes from remix to react router

* Add to contributors

* Add changeset

* fix(optional-segments): fix escaping of parenthesis

* small function fix

* Update packages/remix-dev/__tests__/routesConvention-test.ts

Co-authored-by: Pedro Cattori <pcattori@gmail.com>

Co-authored-by: Pedro Cattori <pcattori@gmail.com>

* chore: format

* chore: edit the optional segments changeset (#4815)

to make it clear that Remix won't support optional segments until integrated with React Router 6.5

* chore: format

* docs: rearrange docs, give everything its own page (#4821)

* chore: format

* fix: wrong parentheses in the optional segments changeset (#4825)

* fix: wrong parentheses in the optional segments changeset

* add: akamfoad to the contributers

* ci(nightly): add workflow_call for testing purposes

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* Revert "ci(nightly): add workflow_call for testing purposes"

This reverts commit f3fa77e.

* chore(scripts): Use relaxed peer dependencies to avoid triggering major version bumps (#4736)

- Add script to bump peer deps with changesets version

Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>

* Add integration tests for request structures (#4829)

* fix(remix-dev): resolve asset entry full path to support mono-repo import of styles (#4855)

* chore: have eslint report unused eslint comments (#4863)

* chore: have eslint report unused eslint comments

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* chore: remove additional comment

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* perf(remix-architect,remix-netlify): improve performance of `isBinaryType` (#4761)

Co-authored-by: Logan McAnsh <logan@mcan.sh>
Co-authored-by: Pannatier Guillaume <Guillaume.Pannatier@hopitalvs.ch>

* chore: format

* chore(remix-testing): remove internal installGlobals (#4755)

* chore: remove internal installGlobals

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* chore: add README

Signed-off-by: Logan McAnsh <logan@mcan.sh>

* Create quick-cats-fix.md

* Update .changeset/quick-cats-fix.md

Co-authored-by: Michaël De Boey <info@michaeldeboey.be>

* chore(deps): remove jsdom and happydom from devDependencies

Signed-off-by: Logan McAnsh <logan@mcan.sh>

Signed-off-by: Logan McAnsh <logan@mcan.sh>
Co-authored-by: Michaël De Boey <info@michaeldeboey.be>

* fix(dev): build js modules for ts->js conversion

The TS->JS migration was removed from the CLI codemod options, but still
used for TS->JS conversion when creating a new Remix project from the
CLI. The TS modules responsible for the TS->JS conversion were
incorrectly removed from the Rollup build, resulting in the
corresponding built JS modules being absent. That caused the CLI to
error when trying to perform TS->JS conversion. This changes
reintroduces the wiring to build the modules responsible for the TS->JS
conversion.

Fixes #4854

Signed-off-by: Logan McAnsh <logan@mcan.sh>
Co-authored-by: Logan McAnsh <logan@mcan.sh>
Co-authored-by: Matt Kane <m@mk.gg>
Co-authored-by: Remix Run Bot <hello@remix.run>
Co-authored-by: Chance Strickland <hi@chance.dev>
Co-authored-by: Ryan Florence <rpflorence@gmail.com>
Co-authored-by: Lucas Ferreira <panchorf@gmail.com>
Co-authored-by: Andrew Leedham <AndrewLeedham@outlook.com>
Co-authored-by: Matt Brophy <matt@brophy.org>
Co-authored-by: dabdine <1955040+dabdine@users.noreply.github.com>
Co-authored-by: Jacob Ebey <jacob.ebey@live.com>
Co-authored-by: James Restall <james.restall@gmail.com>
Co-authored-by: Michaël De Boey <info@michaeldeboey.be>
Co-authored-by: Mehdi Achour <machour@gmail.com>
Co-authored-by: Dylan Markow <dylan@dylanmarkow.com>
Co-authored-by: Daniel Rios <ieldanr@gmail.com>
Co-authored-by: Akam Foad <41629832+akamfoad@users.noreply.github.com>
Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
Co-authored-by: Guillaume Pannatier <guillaume.pannatier@gmail.com>
Co-authored-by: Pannatier Guillaume <Guillaume.Pannatier@hopitalvs.ch>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Defining multiple routes with same route module
9 participants