From 6376fab2fcefe18c18f8f02b8979a584b8977ebd Mon Sep 17 00:00:00 2001 From: Logan McAnsh Date: Sat, 29 Apr 2023 17:01:11 -0400 Subject: [PATCH 1/6] chore: add HeadersFunctionArgs type to be consistent with loaders/actions/meta Signed-off-by: Logan McAnsh --- packages/remix-cloudflare/index.ts | 1 + packages/remix-deno/index.ts | 1 + .../replace-remix-magic-imports/utils/export.ts | 1 + packages/remix-eslint-config/rules/packageExports.js | 1 + packages/remix-node/index.ts | 1 + packages/remix-server-runtime/index.ts | 1 + packages/remix-server-runtime/reexport.ts | 1 + packages/remix-server-runtime/routeModules.ts | 12 +++++++----- rollup.utils.js | 1 + 9 files changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/remix-cloudflare/index.ts b/packages/remix-cloudflare/index.ts index 61eb6722507..e9a8d93b0f7 100644 --- a/packages/remix-cloudflare/index.ts +++ b/packages/remix-cloudflare/index.ts @@ -55,6 +55,7 @@ export type { ErrorBoundaryComponent, HandleDataRequestFunction, HandleDocumentRequestFunction, + HeadersFunctionArgs, HeadersFunction, HtmlLinkDescriptor, HtmlMetaDescriptor, diff --git a/packages/remix-deno/index.ts b/packages/remix-deno/index.ts index b29787994a6..fc9b88cf1b2 100644 --- a/packages/remix-deno/index.ts +++ b/packages/remix-deno/index.ts @@ -43,6 +43,7 @@ export type { ErrorBoundaryComponent, HandleDataRequestFunction, HandleDocumentRequestFunction, + HeadersFunctionArgs, HeadersFunction, HtmlLinkDescriptor, HtmlMetaDescriptor, diff --git a/packages/remix-dev/codemod/replace-remix-magic-imports/utils/export.ts b/packages/remix-dev/codemod/replace-remix-magic-imports/utils/export.ts index 5cae2295697..c6fde8764db 100644 --- a/packages/remix-dev/codemod/replace-remix-magic-imports/utils/export.ts +++ b/packages/remix-dev/codemod/replace-remix-magic-imports/utils/export.ts @@ -57,6 +57,7 @@ const defaultRuntimeExports: ExportNames = { "ErrorBoundaryComponent", "HandleDataRequestFunction", "HandleDocumentRequestFunction", + "HeadersFunctionArgs", "HeadersFunction", "HtmlLinkDescriptor", "HtmlMetaDescriptor", diff --git a/packages/remix-eslint-config/rules/packageExports.js b/packages/remix-eslint-config/rules/packageExports.js index a3c02efe3be..38d7cc0240e 100644 --- a/packages/remix-eslint-config/rules/packageExports.js +++ b/packages/remix-eslint-config/rules/packageExports.js @@ -35,6 +35,7 @@ const defaultRuntimeExports = { "ErrorBoundaryComponent", "HandleDataRequestFunction", "HandleDocumentRequestFunction", + "HeadersFunctionArgs", "HeadersFunction", "HtmlLinkDescriptor", "HtmlMetaDescriptor", diff --git a/packages/remix-node/index.ts b/packages/remix-node/index.ts index e2aa15a2be3..9ab9c063140 100644 --- a/packages/remix-node/index.ts +++ b/packages/remix-node/index.ts @@ -66,6 +66,7 @@ export type { ErrorBoundaryComponent, HandleDataRequestFunction, HandleDocumentRequestFunction, + HeadersFunctionArgs, HeadersFunction, HtmlLinkDescriptor, HtmlMetaDescriptor, diff --git a/packages/remix-server-runtime/index.ts b/packages/remix-server-runtime/index.ts index 103badec93e..abbba15e3ae 100644 --- a/packages/remix-server-runtime/index.ts +++ b/packages/remix-server-runtime/index.ts @@ -48,6 +48,7 @@ export type { FlashSessionData, HandleDataRequestFunction, HandleDocumentRequestFunction, + HeadersFunctionArgs, HeadersFunction, HtmlLinkDescriptor, HtmlMetaDescriptor, diff --git a/packages/remix-server-runtime/reexport.ts b/packages/remix-server-runtime/reexport.ts index bc69b5546eb..d72e6d38651 100644 --- a/packages/remix-server-runtime/reexport.ts +++ b/packages/remix-server-runtime/reexport.ts @@ -38,6 +38,7 @@ export type { ActionFunction, DataFunctionArgs, ErrorBoundaryComponent, + HeadersFunctionArgs, HeadersFunction, HtmlMetaDescriptor, LinksFunction, diff --git a/packages/remix-server-runtime/routeModules.ts b/packages/remix-server-runtime/routeModules.ts index d8eec949d49..fa601be57ca 100644 --- a/packages/remix-server-runtime/routeModules.ts +++ b/packages/remix-server-runtime/routeModules.ts @@ -66,16 +66,18 @@ export type ErrorBoundaryComponent = ComponentType<{ error: Error }>; */ export type V2_ErrorBoundaryComponent = ComponentType; +export type HeadersFunctionArgs = { + loaderHeaders: Headers; + parentHeaders: Headers; + actionHeaders: Headers; +}; + /** * A function that returns HTTP headers to be used for a route. These headers * will be merged with (and take precedence over) headers from parent routes. */ export interface HeadersFunction { - (args: { - loaderHeaders: Headers; - parentHeaders: Headers; - actionHeaders: Headers; - }): Headers | HeadersInit; + (args: HeadersFunctionArgs): Headers | HeadersInit; } /** diff --git a/rollup.utils.js b/rollup.utils.js index d8c352620a9..b3502180306 100644 --- a/rollup.utils.js +++ b/rollup.utils.js @@ -348,6 +348,7 @@ function getMagicExports(packageName) { "ErrorBoundaryComponent", "HandleDataRequestFunction", "HandleDocumentRequestFunction", + "HeadersFunctionArgs", "HeadersFunction", "HtmlLinkDescriptor", "HtmlMetaDescriptor", From 9e28785303cdb58adc5f6bc57930e0802adbe71c Mon Sep 17 00:00:00 2001 From: Logan McAnsh Date: Sat, 29 Apr 2023 17:04:34 -0400 Subject: [PATCH 2/6] Create headersfunctionargs.md --- .changeset/headersfunctionargs.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .changeset/headersfunctionargs.md diff --git a/.changeset/headersfunctionargs.md b/.changeset/headersfunctionargs.md new file mode 100644 index 00000000000..3b007b797a9 --- /dev/null +++ b/.changeset/headersfunctionargs.md @@ -0,0 +1,22 @@ +--- +"remix": patch +"@remix-run/cloudflare": patch +"@remix-run/deno": patch +"@remix-run/dev": patch +"@remix-run/eslint-config": patch +"@remix-run/node": patch +"@remix-run/serve": patch +"@remix-run/server-runtime": patch +--- + +add `HeadersFunctionArgs` type to be consistent with loaders/actions/meta and allows for using `function` + +```tsx +import type { HeadersFunctionArgs } from '@remix-run/*'; + +export function headers({ loaderHeaders }: HeadersFunctionArgs) { + return { + "x-my-custom-thing": loaderHeaders.get("x-my-custom-thing") || "fallback" + } +} +``` From 3b7b049af5e893786ed33962420a3613e5703f47 Mon Sep 17 00:00:00 2001 From: Logan McAnsh Date: Sat, 29 Apr 2023 17:09:23 -0400 Subject: [PATCH 3/6] chore: add HeadersArgs alias like ActionArgs and LoaderArgs Signed-off-by: Logan McAnsh --- packages/remix-cloudflare/index.ts | 1 + packages/remix-deno/index.ts | 1 + .../codemod/replace-remix-magic-imports/utils/export.ts | 1 + packages/remix-eslint-config/rules/packageExports.js | 1 + packages/remix-node/index.ts | 1 + packages/remix-server-runtime/index.ts | 1 + packages/remix-server-runtime/reexport.ts | 1 + packages/remix-server-runtime/routeModules.ts | 2 ++ rollup.utils.js | 1 + 9 files changed, 10 insertions(+) diff --git a/packages/remix-cloudflare/index.ts b/packages/remix-cloudflare/index.ts index e9a8d93b0f7..094d51d1d5f 100644 --- a/packages/remix-cloudflare/index.ts +++ b/packages/remix-cloudflare/index.ts @@ -55,6 +55,7 @@ export type { ErrorBoundaryComponent, HandleDataRequestFunction, HandleDocumentRequestFunction, + HeadersArgs, HeadersFunctionArgs, HeadersFunction, HtmlLinkDescriptor, diff --git a/packages/remix-deno/index.ts b/packages/remix-deno/index.ts index fc9b88cf1b2..7114c8d7acf 100644 --- a/packages/remix-deno/index.ts +++ b/packages/remix-deno/index.ts @@ -43,6 +43,7 @@ export type { ErrorBoundaryComponent, HandleDataRequestFunction, HandleDocumentRequestFunction, + HeadersArgs, HeadersFunctionArgs, HeadersFunction, HtmlLinkDescriptor, diff --git a/packages/remix-dev/codemod/replace-remix-magic-imports/utils/export.ts b/packages/remix-dev/codemod/replace-remix-magic-imports/utils/export.ts index c6fde8764db..1f8d7f3a45b 100644 --- a/packages/remix-dev/codemod/replace-remix-magic-imports/utils/export.ts +++ b/packages/remix-dev/codemod/replace-remix-magic-imports/utils/export.ts @@ -57,6 +57,7 @@ const defaultRuntimeExports: ExportNames = { "ErrorBoundaryComponent", "HandleDataRequestFunction", "HandleDocumentRequestFunction", + "HeadersArgs", "HeadersFunctionArgs", "HeadersFunction", "HtmlLinkDescriptor", diff --git a/packages/remix-eslint-config/rules/packageExports.js b/packages/remix-eslint-config/rules/packageExports.js index 38d7cc0240e..360b340e59c 100644 --- a/packages/remix-eslint-config/rules/packageExports.js +++ b/packages/remix-eslint-config/rules/packageExports.js @@ -35,6 +35,7 @@ const defaultRuntimeExports = { "ErrorBoundaryComponent", "HandleDataRequestFunction", "HandleDocumentRequestFunction", + HeadersArgs, "HeadersFunctionArgs", "HeadersFunction", "HtmlLinkDescriptor", diff --git a/packages/remix-node/index.ts b/packages/remix-node/index.ts index 9ab9c063140..04cd301b32f 100644 --- a/packages/remix-node/index.ts +++ b/packages/remix-node/index.ts @@ -66,6 +66,7 @@ export type { ErrorBoundaryComponent, HandleDataRequestFunction, HandleDocumentRequestFunction, + HeadersArgs, HeadersFunctionArgs, HeadersFunction, HtmlLinkDescriptor, diff --git a/packages/remix-server-runtime/index.ts b/packages/remix-server-runtime/index.ts index abbba15e3ae..ed249513149 100644 --- a/packages/remix-server-runtime/index.ts +++ b/packages/remix-server-runtime/index.ts @@ -48,6 +48,7 @@ export type { FlashSessionData, HandleDataRequestFunction, HandleDocumentRequestFunction, + HeadersArgs, HeadersFunctionArgs, HeadersFunction, HtmlLinkDescriptor, diff --git a/packages/remix-server-runtime/reexport.ts b/packages/remix-server-runtime/reexport.ts index d72e6d38651..96f81349baf 100644 --- a/packages/remix-server-runtime/reexport.ts +++ b/packages/remix-server-runtime/reexport.ts @@ -38,6 +38,7 @@ export type { ActionFunction, DataFunctionArgs, ErrorBoundaryComponent, + HeadersArgs, HeadersFunctionArgs, HeadersFunction, HtmlMetaDescriptor, diff --git a/packages/remix-server-runtime/routeModules.ts b/packages/remix-server-runtime/routeModules.ts index fa601be57ca..b03cba87f9d 100644 --- a/packages/remix-server-runtime/routeModules.ts +++ b/packages/remix-server-runtime/routeModules.ts @@ -72,6 +72,8 @@ export type HeadersFunctionArgs = { actionHeaders: Headers; }; +export type HeadersArgs = HeadersFunctionArgs + /** * A function that returns HTTP headers to be used for a route. These headers * will be merged with (and take precedence over) headers from parent routes. diff --git a/rollup.utils.js b/rollup.utils.js index b3502180306..e2f86ebca37 100644 --- a/rollup.utils.js +++ b/rollup.utils.js @@ -348,6 +348,7 @@ function getMagicExports(packageName) { "ErrorBoundaryComponent", "HandleDataRequestFunction", "HandleDocumentRequestFunction", + "HeadersArgs", "HeadersFunctionArgs", "HeadersFunction", "HtmlLinkDescriptor", From 61c906e19ea3635cd9dea2108fb9290f2efdc1cc Mon Sep 17 00:00:00 2001 From: Logan McAnsh Date: Sat, 29 Apr 2023 17:11:02 -0400 Subject: [PATCH 4/6] fix: string Signed-off-by: Logan McAnsh --- packages/remix-eslint-config/rules/packageExports.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/remix-eslint-config/rules/packageExports.js b/packages/remix-eslint-config/rules/packageExports.js index 360b340e59c..7582f1f6fc8 100644 --- a/packages/remix-eslint-config/rules/packageExports.js +++ b/packages/remix-eslint-config/rules/packageExports.js @@ -35,7 +35,7 @@ const defaultRuntimeExports = { "ErrorBoundaryComponent", "HandleDataRequestFunction", "HandleDocumentRequestFunction", - HeadersArgs, + "HeadersArgs", "HeadersFunctionArgs", "HeadersFunction", "HtmlLinkDescriptor", From 9d79ca9004388906962e1f383d2abb97c3eec41f Mon Sep 17 00:00:00 2001 From: Logan McAnsh Date: Sat, 29 Apr 2023 17:33:21 -0400 Subject: [PATCH 5/6] Update .changeset/headersfunctionargs.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michaƫl De Boey --- .changeset/headersfunctionargs.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/headersfunctionargs.md b/.changeset/headersfunctionargs.md index 3b007b797a9..b107c3cb77e 100644 --- a/.changeset/headersfunctionargs.md +++ b/.changeset/headersfunctionargs.md @@ -12,9 +12,9 @@ add `HeadersFunctionArgs` type to be consistent with loaders/actions/meta and allows for using `function` ```tsx -import type { HeadersFunctionArgs } from '@remix-run/*'; +import type { HeadersArgs } from '@remix-run/node'; // or cloudflare/deno -export function headers({ loaderHeaders }: HeadersFunctionArgs) { +export function headers({ loaderHeaders }: HeadersArgs) { return { "x-my-custom-thing": loaderHeaders.get("x-my-custom-thing") || "fallback" } From bc2de455e2de12b4141ef05603da97db2931e22b Mon Sep 17 00:00:00 2001 From: Matt Brophy Date: Mon, 15 May 2023 14:22:40 -0400 Subject: [PATCH 6/6] Remove HeadersFunctionArgs for consistency --- .changeset/{headersfunctionargs.md => headers-args-type.md} | 2 +- packages/remix-cloudflare/index.ts | 1 - packages/remix-deno/index.ts | 1 - .../codemod/replace-remix-magic-imports/utils/export.ts | 1 - packages/remix-eslint-config/rules/packageExports.js | 1 - packages/remix-node/index.ts | 1 - packages/remix-server-runtime/index.ts | 1 - packages/remix-server-runtime/reexport.ts | 1 - packages/remix-server-runtime/routeModules.ts | 6 ++---- rollup.utils.js | 1 - 10 files changed, 3 insertions(+), 13 deletions(-) rename .changeset/{headersfunctionargs.md => headers-args-type.md} (74%) diff --git a/.changeset/headersfunctionargs.md b/.changeset/headers-args-type.md similarity index 74% rename from .changeset/headersfunctionargs.md rename to .changeset/headers-args-type.md index b107c3cb77e..c9133fc4575 100644 --- a/.changeset/headersfunctionargs.md +++ b/.changeset/headers-args-type.md @@ -9,7 +9,7 @@ "@remix-run/server-runtime": patch --- -add `HeadersFunctionArgs` type to be consistent with loaders/actions/meta and allows for using `function` +Add `HeadersArgs` type to be consistent with loaders/actions/meta and allows for using a `function` declaration in addition to an arrow function expression ```tsx import type { HeadersArgs } from '@remix-run/node'; // or cloudflare/deno diff --git a/packages/remix-cloudflare/index.ts b/packages/remix-cloudflare/index.ts index 094d51d1d5f..e5850c1acb6 100644 --- a/packages/remix-cloudflare/index.ts +++ b/packages/remix-cloudflare/index.ts @@ -56,7 +56,6 @@ export type { HandleDataRequestFunction, HandleDocumentRequestFunction, HeadersArgs, - HeadersFunctionArgs, HeadersFunction, HtmlLinkDescriptor, HtmlMetaDescriptor, diff --git a/packages/remix-deno/index.ts b/packages/remix-deno/index.ts index 7114c8d7acf..2eee795dfd6 100644 --- a/packages/remix-deno/index.ts +++ b/packages/remix-deno/index.ts @@ -44,7 +44,6 @@ export type { HandleDataRequestFunction, HandleDocumentRequestFunction, HeadersArgs, - HeadersFunctionArgs, HeadersFunction, HtmlLinkDescriptor, HtmlMetaDescriptor, diff --git a/packages/remix-dev/codemod/replace-remix-magic-imports/utils/export.ts b/packages/remix-dev/codemod/replace-remix-magic-imports/utils/export.ts index 1f8d7f3a45b..5be1b002c6f 100644 --- a/packages/remix-dev/codemod/replace-remix-magic-imports/utils/export.ts +++ b/packages/remix-dev/codemod/replace-remix-magic-imports/utils/export.ts @@ -58,7 +58,6 @@ const defaultRuntimeExports: ExportNames = { "HandleDataRequestFunction", "HandleDocumentRequestFunction", "HeadersArgs", - "HeadersFunctionArgs", "HeadersFunction", "HtmlLinkDescriptor", "HtmlMetaDescriptor", diff --git a/packages/remix-eslint-config/rules/packageExports.js b/packages/remix-eslint-config/rules/packageExports.js index 7582f1f6fc8..b3bfa1a3f94 100644 --- a/packages/remix-eslint-config/rules/packageExports.js +++ b/packages/remix-eslint-config/rules/packageExports.js @@ -36,7 +36,6 @@ const defaultRuntimeExports = { "HandleDataRequestFunction", "HandleDocumentRequestFunction", "HeadersArgs", - "HeadersFunctionArgs", "HeadersFunction", "HtmlLinkDescriptor", "HtmlMetaDescriptor", diff --git a/packages/remix-node/index.ts b/packages/remix-node/index.ts index 04cd301b32f..8e0d62dbeeb 100644 --- a/packages/remix-node/index.ts +++ b/packages/remix-node/index.ts @@ -67,7 +67,6 @@ export type { HandleDataRequestFunction, HandleDocumentRequestFunction, HeadersArgs, - HeadersFunctionArgs, HeadersFunction, HtmlLinkDescriptor, HtmlMetaDescriptor, diff --git a/packages/remix-server-runtime/index.ts b/packages/remix-server-runtime/index.ts index ed249513149..36c16ec9b2c 100644 --- a/packages/remix-server-runtime/index.ts +++ b/packages/remix-server-runtime/index.ts @@ -49,7 +49,6 @@ export type { HandleDataRequestFunction, HandleDocumentRequestFunction, HeadersArgs, - HeadersFunctionArgs, HeadersFunction, HtmlLinkDescriptor, HtmlMetaDescriptor, diff --git a/packages/remix-server-runtime/reexport.ts b/packages/remix-server-runtime/reexport.ts index 96f81349baf..2068ceaf742 100644 --- a/packages/remix-server-runtime/reexport.ts +++ b/packages/remix-server-runtime/reexport.ts @@ -39,7 +39,6 @@ export type { DataFunctionArgs, ErrorBoundaryComponent, HeadersArgs, - HeadersFunctionArgs, HeadersFunction, HtmlMetaDescriptor, LinksFunction, diff --git a/packages/remix-server-runtime/routeModules.ts b/packages/remix-server-runtime/routeModules.ts index b03cba87f9d..7cbafb321b8 100644 --- a/packages/remix-server-runtime/routeModules.ts +++ b/packages/remix-server-runtime/routeModules.ts @@ -66,20 +66,18 @@ export type ErrorBoundaryComponent = ComponentType<{ error: Error }>; */ export type V2_ErrorBoundaryComponent = ComponentType; -export type HeadersFunctionArgs = { +export type HeadersArgs = { loaderHeaders: Headers; parentHeaders: Headers; actionHeaders: Headers; }; -export type HeadersArgs = HeadersFunctionArgs - /** * A function that returns HTTP headers to be used for a route. These headers * will be merged with (and take precedence over) headers from parent routes. */ export interface HeadersFunction { - (args: HeadersFunctionArgs): Headers | HeadersInit; + (args: HeadersArgs): Headers | HeadersInit; } /** diff --git a/rollup.utils.js b/rollup.utils.js index e2f86ebca37..13c5d893de7 100644 --- a/rollup.utils.js +++ b/rollup.utils.js @@ -349,7 +349,6 @@ function getMagicExports(packageName) { "HandleDataRequestFunction", "HandleDocumentRequestFunction", "HeadersArgs", - "HeadersFunctionArgs", "HeadersFunction", "HtmlLinkDescriptor", "HtmlMetaDescriptor",