From ba67f424336e2c5770d723d50295a7505937c952 Mon Sep 17 00:00:00 2001 From: Pedro Cattori Date: Tue, 15 Aug 2023 16:58:36 -0400 Subject: [PATCH] fix(dev): allow decorators in app code during dev (#7176) --- .changeset/khaki-roses-matter.md | 5 +++++ packages/remix-dev/compiler/js/plugins/hmr.ts | 8 +++++++- packages/remix-dev/devServer_unstable/proc.ts | 3 ++- packages/remix-dev/package.json | 1 + yarn.lock | 12 ++++++++++++ 5 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 .changeset/khaki-roses-matter.md diff --git a/.changeset/khaki-roses-matter.md b/.changeset/khaki-roses-matter.md new file mode 100644 index 00000000000..b3274fe7cba --- /dev/null +++ b/.changeset/khaki-roses-matter.md @@ -0,0 +1,5 @@ +--- +"@remix-run/dev": patch +--- + +allow decorators in app code diff --git a/packages/remix-dev/compiler/js/plugins/hmr.ts b/packages/remix-dev/compiler/js/plugins/hmr.ts index e0eded4f5d2..147a52960d3 100644 --- a/packages/remix-dev/compiler/js/plugins/hmr.ts +++ b/packages/remix-dev/compiler/js/plugins/hmr.ts @@ -166,6 +166,8 @@ export async function applyHMR( let babelJsx = await import("@babel/plugin-syntax-jsx"); // @ts-expect-error let reactRefresh = await import("react-refresh/babel"); + // @ts-expect-error + let babelDecorators = await import("@babel/plugin-syntax-decorators"); let IS_FAST_REFRESH_ENABLED = /\$RefreshReg\$\(/; @@ -195,7 +197,11 @@ ${lastModified ? `import.meta.hot.lastModified = "${lastModified}";` : ""} configFile: false, babelrc: false, presets: [babelPresetTypescript.default], - plugins: [babelJsx.default, [reactRefresh.default, { skipEnvCheck: true }]], + plugins: [ + [babelDecorators.default, { legacy: true }], + babelJsx.default, + [reactRefresh.default, { skipEnvCheck: true }], + ], }); let jsWithReactRefresh = transformResult?.code ?? sourceCodeWithHMR; diff --git a/packages/remix-dev/devServer_unstable/proc.ts b/packages/remix-dev/devServer_unstable/proc.ts index 6076f6f8447..3c842bc6c65 100644 --- a/packages/remix-dev/devServer_unstable/proc.ts +++ b/packages/remix-dev/devServer_unstable/proc.ts @@ -32,7 +32,8 @@ let isAlive = (pid: number) => { }; export let killtree = async (pid: number) => { - let descendants = await pidtree(pid); + let descendants = await pidtree(pid).catch(() => undefined); + if (descendants === undefined) return; let pids = [pid, ...descendants]; await Promise.all(pids.map(kill)); diff --git a/packages/remix-dev/package.json b/packages/remix-dev/package.json index f36ccacdae3..6bb19bccd57 100644 --- a/packages/remix-dev/package.json +++ b/packages/remix-dev/package.json @@ -21,6 +21,7 @@ "@babel/core": "^7.21.8", "@babel/generator": "^7.21.5", "@babel/parser": "^7.21.8", + "@babel/plugin-syntax-decorators": "^7.22.10", "@babel/plugin-syntax-jsx": "^7.21.4", "@babel/plugin-syntax-typescript": "^7.21.4", "@babel/preset-typescript": "^7.21.5", diff --git a/yarn.lock b/yarn.lock index eee6831afca..a53cdb0f658 100644 --- a/yarn.lock +++ b/yarn.lock @@ -209,6 +209,11 @@ resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== +"@babel/helper-plugin-utils@^7.22.5": + version "7.22.5" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + "@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" @@ -473,6 +478,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" +"@babel/plugin-syntax-decorators@^7.22.10": + version "7.22.10" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz#7d83ea04d893c442b78ebf4c3cbac59a7211deff" + integrity sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz"