Update swc_core to v0.75.23 (#48098)

Depends on https://github.com/vercel/turbo/pull/4470

---

 - Closes https://github.com/vercel/next.js/issues/46989
 - Fixes WEB-879
 - Fixes WEB-813

---------

Co-authored-by: OJ Kwon <1210596+kwonoj@users.noreply.github.com>
Co-authored-by: Donny/강동윤 <kdy1997.dev@gmail.com>
Co-authored-by: Shu Ding <g@shud.in>
This commit is contained in:
Maia Teegarden 2023-04-17 23:59:52 -07:00 committed by GitHub
parent 9c910101e2
commit 43d09ce2fd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
32 changed files with 1047 additions and 717 deletions

View file

@ -77,8 +77,8 @@
"@opentelemetry/api": "1.4.1",
"@svgr/webpack": "5.5.0",
"@swc/cli": "0.1.55",
"@swc/core": "1.2.203",
"@swc/helpers": "0.4.14",
"@swc/core": "1.3.51",
"@swc/helpers": "0.5.0",
"@testing-library/react": "13.0.0",
"@types/cheerio": "0.22.16",
"@types/fs-extra": "8.1.0",

File diff suppressed because it is too large Load diff

View file

@ -37,21 +37,16 @@ next-transform-strip-page-exports = { path = "crates/next-transform-strip-page-e
# SWC crates
# Keep consistent with preset_env_base through swc_core
browserslist-rs = { version = "0.12.2" }
mdxjs = { version = "0.1.8" }
modularize_imports = { version = "0.26.10" }
styled_components = { version = "0.53.10" }
styled_jsx = { version = "0.30.10" }
swc_core = { version = "0.69.6" }
swc_emotion = { version = "0.29.10" }
testing = { version = "0.31.31" }
swc_core = { version = "0.75.15" }
swc_relay = { version = "0.2.5" }
testing = { version = "0.33.3" }
# Turbo crates
turbo-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230417.2" }
turbo-binding = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230418.1" }
# [TODO]: need to refactor embed_directory! macro usages, as well as resolving turbo_tasks::function, macros..
turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230417.2" }
turbo-tasks = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230418.1" }
# [TODO]: need to refactor embed_directory! macro usage in next-core
turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230417.2" }
turbo-tasks-fs = { git = "https://github.com/vercel/turbo.git", tag = "turbopack-230418.1" }
# General Deps

View file

@ -14,7 +14,7 @@ either = "1"
fxhash = "0.2.1"
hex = "0.4.3"
once_cell = { workspace = true }
next-transform-font = {"workspace" = true}
next-transform-font = {workspace = true}
pathdiff = "0.2.0"
regex = "1.5"
serde = "1"
@ -31,7 +31,7 @@ turbo-binding = { workspace = true, features = [
"__swc_transform_modularize_imports",
"__swc_transform_relay",
] }
swc_relay = "0.1.0"
swc_relay = { workspace = true }
[dev-dependencies]
turbo-binding = { workspace = true, features = [

View file

@ -249,6 +249,7 @@ where
turbo_binding::swc::custom_transform::emotion::EmotionTransformer::new(
config.clone(),
path,
file.src_hash as u32,
cm,
comments.clone(),
),

View file

@ -62,17 +62,20 @@ impl<C: Comments> VisitMut for ReactServerComponents<C> {
fn visit_mut_module(&mut self, module: &mut Module) {
let (is_client_entry, imports) = self.collect_top_level_directives_and_imports(module);
let is_cjs = contains_cjs(module);
if self.is_server {
if !is_client_entry {
self.assert_server_graph(&imports, module);
} else {
let is_cjs = contains_cjs(module);
self.to_module_ref(module, is_cjs);
return;
}
} else {
self.assert_client_graph(&imports, module);
if is_client_entry {
self.prepend_comment_node(module, is_cjs);
}
}
module.visit_mut_children_with(self)
}
@ -289,21 +292,7 @@ impl<C: Comments> ReactServerComponents<C> {
.into_iter(),
);
// Prepend a special comment to the top of the file that contains
// module export names and the detected module type.
self.comments.add_leading(
module.span.lo,
Comment {
span: DUMMY_SP,
kind: CommentKind::Block,
text: format!(
" __next_internal_client_entry_do_not_use__ {} {} ",
self.export_names.join(","),
if is_cjs { "cjs" } else { "auto" }
)
.into(),
},
);
self.prepend_comment_node(module, is_cjs);
}
fn assert_server_graph(&self, imports: &[ModuleImports], module: &Module) {
@ -509,6 +498,24 @@ impl<C: Comments> ReactServerComponents<C> {
}
}
}
fn prepend_comment_node(&self, module: &Module, is_cjs: bool) {
// Prepend a special comment to the top of the file that contains
// module export names and the detected module type.
self.comments.add_leading(
module.span.lo,
Comment {
span: DUMMY_SP,
kind: CommentKind::Block,
text: format!(
" __next_internal_client_entry_do_not_use__ {} {} ",
self.export_names.join(","),
if is_cjs { "cjs" } else { "auto" }
)
.into(),
},
);
}
}
pub fn server_components<C: Comments>(

View file

@ -106,6 +106,7 @@ fn next_ssg_fixture(input: PathBuf) {
syntax(),
&|tr| {
let top_level_mark = Mark::fresh(Mark::root());
let unresolved_mark = Mark::fresh(Mark::root());
let jsx = jsx::<SingleThreadedComments>(
tr.cm.clone(),
None,
@ -121,8 +122,13 @@ fn next_ssg_fixture(input: PathBuf) {
..Default::default()
},
top_level_mark,
unresolved_mark,
);
chain!(next_ssg(Default::default()), jsx)
chain!(
resolver(unresolved_mark, top_level_mark, true),
next_ssg(Default::default()),
jsx
)
},
&input,
&output,

View file

@ -0,0 +1,8 @@
import dynamic from 'next/dynamic'
export const NextDynamicNoSSRServerComponent = dynamic(
() => import('../text-dynamic-no-ssr-server'),
{
ssr: false,
}
)

View file

@ -0,0 +1,9 @@
import dynamic from 'next/dynamic';
export const NextDynamicNoSSRServerComponent = dynamic(()=>import('../text-dynamic-no-ssr-server'), {
loadableGenerated: {
modules: [
"some-file.js -> " + "../text-dynamic-no-ssr-server"
]
},
ssr: false
});

View file

@ -0,0 +1,9 @@
import dynamic from 'next/dynamic';
export const NextDynamicNoSSRServerComponent = dynamic(()=>import('../text-dynamic-no-ssr-server'), {
loadableGenerated: {
webpack: ()=>[
require.resolveWeak("../text-dynamic-no-ssr-server")
]
},
ssr: false
});

View file

@ -0,0 +1,9 @@
import dynamic from 'next/dynamic';
export const NextDynamicNoSSRServerComponent = dynamic(null, {
loadableGenerated: {
modules: [
"some-file.js -> " + "../text-dynamic-no-ssr-server"
]
},
ssr: false
});

View file

@ -1,5 +1,5 @@
// This is a comment.
"use strict";
/* __next_internal_client_entry_do_not_use__ default auto */ "use strict";
// This is a comment.
"foo";
import "fs";

View file

@ -1,17 +1,17 @@
function _arrayLikeToArray(arr, len) {
function _array_like_to_array(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
return arr2;
}
function _arrayWithHoles(arr) {
function _array_with_holes(arr) {
if (Array.isArray(arr)) return arr;
}
function _classCallCheck(instance, Constructor) {
function _class_call_check(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
function _iterableToArrayLimit(arr, i) {
function _iterable_to_array_limit(arr, i) {
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
if (_i == null) return;
var _arr = [];
@ -35,25 +35,25 @@ function _iterableToArrayLimit(arr, i) {
}
return _arr;
}
function _nonIterableRest() {
function _non_iterable_rest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
function _sliced_to_array(arr, i) {
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
}
function _unsupportedIterableToArray(o, minLen) {
function _unsupported_iterable_to_array(o, minLen) {
if (!o) return;
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
if (typeof o === "string") return _array_like_to_array(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(n);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
}
import other from "other";
var _other = _slicedToArray(other, 1), foo = _other[0];
var _other = _sliced_to_array(other, 1), foo = _other[0];
var Foo = function Foo() {
"use strict";
_classCallCheck(this, Foo);
_class_call_check(this, Foo);
};
export var __N_SSG = true;
export default function Home() {

View file

@ -1,4 +1,4 @@
function _classCallCheck(instance, Constructor) {
function _class_call_check(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
@ -17,7 +17,7 @@ export default function Home() {
}
var MyClass = function MyClass() {
"use strict";
_classCallCheck(this, MyClass);
_class_call_check(this, MyClass);
selectAll(".group").each(function() {
select(this).selectAll("path");
});

View file

@ -1,4 +1,4 @@
function _taggedTemplateLiteral(strings, raw) {
function _tagged_template_literal(strings, raw) {
if (!raw) {
raw = strings.slice(0);
}
@ -9,7 +9,7 @@ function _taggedTemplateLiteral(strings, raw) {
}));
}
function _templateObject() {
var data = _taggedTemplateLiteral([
var data = _tagged_template_literal([
"\n color: red;\n"
]);
_templateObject = function _templateObject() {

View file

@ -10,8 +10,8 @@
"check": "tsc --noEmit"
},
"dependencies": {
"@vercel/turbopack-dev": "https://gitpkg.vercel.app/vercel/turbo/crates/turbopack-dev/js?turbopack-230417.2",
"@vercel/turbopack-node": "https://gitpkg.vercel.app/vercel/turbo/crates/turbopack-node/js?turbopack-230417.2",
"@vercel/turbopack-dev": "https://gitpkg.vercel.app/vercel/turbo/crates/turbopack-dev/js?turbopack-230418.1",
"@vercel/turbopack-node": "https://gitpkg.vercel.app/vercel/turbo/crates/turbopack-node/js?turbopack-230418.1",
"anser": "^2.1.1",
"css.escape": "^1.5.1",
"next": "*",

View file

@ -25,6 +25,7 @@ fn run_test(input: &Path, output: &Path, mode: ExportFilter) {
syntax(),
&|tr| {
let top_level_mark = Mark::fresh(Mark::root());
let unresolved_mark = Mark::fresh(Mark::root());
let jsx = jsx::<SingleThreadedComments>(
tr.cm.clone(),
None,
@ -39,8 +40,10 @@ fn run_test(input: &Path, output: &Path, mode: ExportFilter) {
..Default::default()
},
top_level_mark,
unresolved_mark,
);
chain!(
swc_core::ecma::transforms::base::resolver(unresolved_mark, top_level_mark, true),
next_transform_strip_page_exports(mode, Default::default()),
jsx
)

View file

@ -35,6 +35,7 @@ turbo-binding = { workspace = true, features = [
"__swc_core_binding_wasm",
"__feature_mdx_rs",
] }
swc_core = { workspace = true, features = ["ecma_ast_serde", "common"] }
# Workaround a bug

View file

@ -83,7 +83,7 @@
},
"dependencies": {
"@next/env": "13.3.1-canary.11",
"@swc/helpers": "0.4.14",
"@swc/helpers": "0.5.0",
"busboy": "1.6.0",
"caniuse-lite": "^1.0.30001406",
"postcss": "8.4.14",

View file

@ -52,20 +52,22 @@ export function getRSCModuleInformation(
isServerLayer = true
): RSCMeta {
const actions = source.match(ACTION_MODULE_LABEL)?.[1]?.split(',')
const clientInfoMatch = source.match(CLIENT_MODULE_LABEL)
const isClientRef = !!clientInfoMatch
if (!isServerLayer) {
return {
type: RSC_MODULE_TYPES.client,
actions,
isClientRef,
}
}
const clientInfoMatch = source.match(CLIENT_MODULE_LABEL)
const clientRefs = clientInfoMatch?.[1]?.split(',')
const clientEntryType = clientInfoMatch?.[2] as 'cjs' | 'auto'
const type = clientRefs ? RSC_MODULE_TYPES.client : RSC_MODULE_TYPES.server
return { type, actions, clientRefs, clientEntryType }
return { type, actions, clientRefs, clientEntryType, isClientRef }
}
/**

View file

@ -1715,7 +1715,7 @@ export default async function getBaseWebpackConfig(
'next-flight-loader',
'next-flight-client-entry-loader',
'next-flight-action-entry-loader',
'next-flight-client-action-loader',
'next-flight-client-module-loader',
'noop-loader',
'next-middleware-loader',
'next-edge-function-loader',
@ -1939,7 +1939,9 @@ export default async function getBaseWebpackConfig(
]
: []),
{
loader: 'next-flight-client-action-loader',
// This loader handles actions and client entries
// in the client layer.
loader: 'next-flight-client-module-loader',
},
...swcLoaderForClientLayer,
],

View file

@ -29,6 +29,7 @@ export interface RSCMeta {
actions?: string[]
clientRefs?: string[]
clientEntryType?: 'cjs' | 'auto'
isClientRef?: boolean
requests?: string[] // client requests in flight client entry
}

View file

@ -1,35 +0,0 @@
import { getRSCModuleInformation } from './../../analysis/get-page-static-info'
import { getModuleBuildInfo } from './get-module-build-info'
export default async function transformSource(
this: any,
source: string,
sourceMap: any
) {
// Avoid buffer to be consumed
if (typeof source !== 'string') {
throw new Error('Expected source to have been transformed to a string.')
}
const callback = this.async()
// Assign the RSC meta information to buildInfo.
const buildInfo = getModuleBuildInfo(this._module)
buildInfo.rsc = getRSCModuleInformation(source, false)
// This is a server action entry module in the client layer. We need to attach
// noop exports of `callServer` wrappers for each action.
if (buildInfo.rsc?.actions) {
source = `
import { callServer } from 'next/dist/client/app-call-server'
function __build_action__(action, args) {
return callServer(action.$$id, args)
}
${source}
`
}
return callback(null, source, sourceMap)
}

View file

@ -0,0 +1,54 @@
import { getRSCModuleInformation } from '../../analysis/get-page-static-info'
import { getModuleBuildInfo } from './get-module-build-info'
export default async function transformSource(
this: any,
source: string,
sourceMap: any
) {
// Avoid buffer to be consumed
if (typeof source !== 'string') {
throw new Error('Expected source to have been transformed to a string.')
}
const callback = this.async()
// Assign the RSC meta information to buildInfo.
const buildInfo = getModuleBuildInfo(this._module)
buildInfo.rsc = getRSCModuleInformation(source, false)
if (buildInfo.rsc.isClientRef) {
// In case the client entry is a CJS module, we need to parse all the exports
// to make sure that the flight manifest plugin can correctly generate the
// manifest.
// TODO: Currently SWC wraps CJS exports with `_export(exports, { ... })`,
// which is tricky to statically analyze. But since the shape is known, we
// use a regex to extract the exports as a workaround. See:
// https://github.com/swc-project/swc/blob/5629e6b5291b416c8316587b67b5e83d011a8c22/crates/swc_ecma_transforms_module/src/util.rs#L295
const matchExportObject = source.match(/\n_export\(exports, {([.\s\S]+)}/m)
if (matchExportObject) {
const matches: string[] = []
const matchExports = matchExportObject[1].matchAll(/([^\s]+):/g)
for (const match of matchExports) {
matches.push(match[1])
}
buildInfo.rsc.clientRefs = matches
}
}
// This is a server action entry module in the client layer. We need to attach
// noop exports of `callServer` wrappers for each action.
if (buildInfo.rsc?.actions) {
source = `
import { callServer } from 'next/dist/client/app-call-server'
function __build_action__(action, args) {
return callServer(action.$$id, args)
}
${source}
`
}
return callback(null, source, sourceMap)
}

View file

@ -242,7 +242,10 @@ export class ClientReferenceManifestPlugin {
}
return null
}),
].flat()
...(mod.buildInfo.rsc?.clientRefs || []),
]
.filter(Boolean)
.flat()
),
]

View file

@ -287,7 +287,7 @@ export async function startServer({
handlersReady()
} else {
// when not using a worker start next in main process
const { default: next } = require('../next') as typeof import('../next')
const next = require('../next') as typeof import('../next').default
const addr = server.address()
const app = next({
dir,

View file

@ -249,7 +249,7 @@ function createServer(options: NextServerOptions): NextServer {
// Support commonjs `require('next')`
module.exports = createServer
exports = module.exports
// exports = module.exports
// Support `import next from 'next'`
export default createServer

View file

@ -199,7 +199,7 @@ async function postProcessHTML(
: null,
process.env.NEXT_RUNTIME !== 'edge' && renderOpts.optimizeFonts
? async (html: string) => {
const getFontDefinition = (url: string): string => {
const getFontDefinition = (url: string) => {
if (renderOpts.fontManifest) {
const { getFontDefinitionFromManifest } =
require('./font-utils') as typeof import('./font-utils')

View file

@ -35,8 +35,8 @@ importers:
'@opentelemetry/api': 1.4.1
'@svgr/webpack': 5.5.0
'@swc/cli': 0.1.55
'@swc/core': 1.2.203
'@swc/helpers': 0.4.14
'@swc/core': 1.3.51
'@swc/helpers': 0.5.0
'@testing-library/react': 13.0.0
'@types/cheerio': 0.22.16
'@types/fs-extra': 8.1.0
@ -215,9 +215,9 @@ importers:
'@next/swc': link:packages/next-swc
'@opentelemetry/api': 1.4.1
'@svgr/webpack': 5.5.0
'@swc/cli': 0.1.55_@swc+core@1.2.203
'@swc/core': 1.2.203
'@swc/helpers': 0.4.14
'@swc/cli': 0.1.55_@swc+core@1.3.51
'@swc/core': 1.3.51_@swc+helpers@0.5.0
'@swc/helpers': 0.5.0
'@testing-library/react': 13.0.0_biqbaboplfbrettd7655fr4n2y
'@types/cheerio': 0.22.16
'@types/fs-extra': 8.1.0
@ -363,13 +363,13 @@ importers:
tailwindcss: 3.2.7_pe6iykxod2v7i2uk6okjazxzki
taskr: 1.1.0
tree-kill: 1.2.2
ts-node: 10.9.1_cx2odcp7q42yre3tu7le55sjlu
ts-node: 10.9.1_enwtfwyzxwurvcvoyp2mg6zdee
tsec: 0.2.1_sbe2uaqno6akssxfwbhgeg7v2q
turbo: 1.6.3
typescript: 4.8.2
unfetch: 4.2.0
wait-port: 0.2.2
webpack: 5.74.0_@swc+core@1.2.203
webpack: 5.74.0_@swc+core@1.3.51
webpack-bundle-analyzer: 4.7.0
whatwg-fetch: 3.0.0
ws: 8.2.3
@ -536,7 +536,7 @@ importers:
'@next/swc': 13.3.1-canary.11
'@opentelemetry/api': 1.4.1
'@segment/ajv-human-errors': 2.1.2
'@swc/helpers': 0.4.14
'@swc/helpers': 0.5.0
'@taskr/clear': 1.1.0
'@taskr/esnext': 1.1.0
'@types/amphtml-validator': 1.0.0
@ -710,7 +710,7 @@ importers:
zod: 3.21.4
dependencies:
'@next/env': link:../next-env
'@swc/helpers': 0.4.14
'@swc/helpers': 0.5.0
busboy: 1.6.0
caniuse-lite: 1.0.30001406
fibers: 5.0.3
@ -1008,8 +1008,8 @@ importers:
'@types/react': ^18.0.26
'@types/react-dom': ^18.0.9
'@vercel/ncc': ^0.36.0
'@vercel/turbopack-dev': https://gitpkg.vercel.app/vercel/turbo/crates/turbopack-dev/js?turbopack-230417.2
'@vercel/turbopack-node': https://gitpkg.vercel.app/vercel/turbo/crates/turbopack-node/js?turbopack-230417.2
'@vercel/turbopack-dev': https://gitpkg.vercel.app/vercel/turbo/crates/turbopack-dev/js?turbopack-230418.1
'@vercel/turbopack-node': https://gitpkg.vercel.app/vercel/turbo/crates/turbopack-node/js?turbopack-230418.1
anser: ^2.1.1
css.escape: ^1.5.1
find-up: ^6.3.0
@ -1021,8 +1021,8 @@ importers:
stacktrace-parser: ^0.1.10
strip-ansi: ^7.0.1
dependencies:
'@vercel/turbopack-dev': '@gitpkg.vercel.app/vercel/turbo/crates/turbopack-dev/js?turbopack-230417.2_react-refresh@0.12.0'
'@vercel/turbopack-node': '@gitpkg.vercel.app/vercel/turbo/crates/turbopack-node/js?turbopack-230417.2'
'@vercel/turbopack-dev': '@gitpkg.vercel.app/vercel/turbo/crates/turbopack-dev/js?turbopack-230418.1_react-refresh@0.12.0'
'@vercel/turbopack-node': '@gitpkg.vercel.app/vercel/turbo/crates/turbopack-node/js?turbopack-230418.1'
anser: 2.1.1
css.escape: 1.5.1
next: link:../../../../next
@ -6650,7 +6650,7 @@ packages:
- supports-color
dev: true
/@swc/cli/0.1.55_@swc+core@1.2.203:
/@swc/cli/0.1.55_@swc+core@1.3.51:
resolution: {integrity: sha512-akkLuRexFq8XTi6JNZ27mXD4wcKXLDSLj4g7YMU+/upFM8IeD1IEp1Mxtre7MzCZn+QOQgPF8N8IReJoHuSn3g==}
engines: {node: '>= 12.13'}
hasBin: true
@ -6661,33 +6661,15 @@ packages:
chokidar:
optional: true
dependencies:
'@swc/core': 1.2.203
'@swc/core': 1.3.51_@swc+helpers@0.5.0
commander: 7.2.0
fast-glob: 3.2.11
slash: 3.0.0
source-map: 0.7.3
dev: true
/@swc/core-android-arm-eabi/1.2.203:
resolution: {integrity: sha512-maKYooa0+h66Y/t81lJblimJYWAON1onMwczxe+uQs1FkcnGa/ixhnmRDXIM0wpivMu93EIq3teKR43nr2K/Yg==}
engines: {node: '>=10'}
cpu: [arm]
os: [android]
requiresBuild: true
dev: true
optional: true
/@swc/core-android-arm64/1.2.203:
resolution: {integrity: sha512-Zg57EuQa06cTNk2enort0/djXyEaYI0ectydZLPv4oj0ubjLGTZMDkuxPaYWSs9eHT1A6Ge8bwQCA7t/GLYGGA==}
engines: {node: '>=10'}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: true
optional: true
/@swc/core-darwin-arm64/1.2.203:
resolution: {integrity: sha512-BVwIAhkMz58V6I+xLsVMeOKSORe8iaYnCHUZbgI0NfAqvUYBUqmwzt+Fww44wv3Ibxb4my1zk7BG02d7Ku94+A==}
/@swc/core-darwin-arm64/1.3.51:
resolution: {integrity: sha512-DM15fJgaXQ+BOoTlMCBoRBSzkpC2V8vAXaAvh3BZ+BI6/03FUQ0j9CMIaSkss3VOv+WwqzllmcT71C/oVDQ7Tg==}
engines: {node: '>=10'}
cpu: [arm64]
os: [darwin]
@ -6695,8 +6677,8 @@ packages:
dev: true
optional: true
/@swc/core-darwin-x64/1.2.203:
resolution: {integrity: sha512-Z9gwtHwv3jEntjVANYmhzVvIVkgbkWAsLGP2UBez2D8CgScx+5Gnb0C5qT4nwX0Q+YD42rdHp7M551ZqVOo2FQ==}
/@swc/core-darwin-x64/1.3.51:
resolution: {integrity: sha512-EPAneufZfFQUkpkf2m8Ap8TajLvjWI+UmDQz54QaofLaigXgrnLoqTtnZHBfDbUTApGYz3GaqjfZ2fMLGiISLQ==}
engines: {node: '>=10'}
cpu: [x64]
os: [darwin]
@ -6704,17 +6686,8 @@ packages:
dev: true
optional: true
/@swc/core-freebsd-x64/1.2.203:
resolution: {integrity: sha512-9aCC80BvU+IGqrmyY2r/3NRveOQg9BSCT+6N4esBKMLlTaDmuARSBON1TXjUF7HPUqzNB4ahri9HIx52wImXqQ==}
engines: {node: '>=10'}
cpu: [x64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
/@swc/core-linux-arm-gnueabihf/1.2.203:
resolution: {integrity: sha512-SoeXRqawk5aufUArS1s58prCAT24+p3lITh5Jv4dYk2PwGZpOHC7ADcVKq/55XayTxSafwXD9jObNTJzQ6moqw==}
/@swc/core-linux-arm-gnueabihf/1.3.51:
resolution: {integrity: sha512-sASxO3lJjlY5g8S25yCQirDOW6zqBNeDSUCBrulaVxttx0PcL64kc6qaOlM3HKlNO4W1P7RW/mGFR4bBov+yIg==}
engines: {node: '>=10'}
cpu: [arm]
os: [linux]
@ -6722,8 +6695,8 @@ packages:
dev: true
optional: true
/@swc/core-linux-arm64-gnu/1.2.203:
resolution: {integrity: sha512-bF8t8fd8MSx6qWgi1mYlyj1XYPWeGtGRVei1C1AcyXzcD34H0H37D6z2YBXfQrMhFED/s0oCPB2qvPh0j1jbjw==}
/@swc/core-linux-arm64-gnu/1.3.51:
resolution: {integrity: sha512-z8yHRUK+5mRxSQkw9uND8QSt8lTrW0X8blmP12Q7c7RKWOHqIaGS60a3VvLuTal7k48K4YTstSevIrGwGK88sA==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
@ -6731,8 +6704,8 @@ packages:
dev: true
optional: true
/@swc/core-linux-arm64-musl/1.2.203:
resolution: {integrity: sha512-lFfPFgbEGhxsgL3PWRp4exzIlI3MuJWFFkiYqKMeDdHSUOdhtcQUCGw9D6Iat/1mCNxuTrDxQOBQBUhc9g6DoA==}
/@swc/core-linux-arm64-musl/1.3.51:
resolution: {integrity: sha512-lMlp09lv6qDURvETw4AAZAjaJfvjwHjiAuB+JuZrgP3zdxB21M6cMas3EjAGXtNabpU1FJu+8Lsys6/GBBjsPQ==}
engines: {node: '>=10'}
cpu: [arm64]
os: [linux]
@ -6740,8 +6713,8 @@ packages:
dev: true
optional: true
/@swc/core-linux-x64-gnu/1.2.203:
resolution: {integrity: sha512-46ykzctv5W4PxeRE/brZyxWRSfdhJllCFUySRubhMLCuhs6VLtZzmWBefxPHTUDpBzmhX8kcaiKwwY2tqV0A9g==}
/@swc/core-linux-x64-gnu/1.3.51:
resolution: {integrity: sha512-6zK4tDr6do6RFTJv38Rb8ZjBLdfSN7GeuyOJpblz1Qu62RqyY2Zf3fxuCZY9tkoEepZ0MvU0d4D7HhAUYKj20A==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
@ -6749,8 +6722,8 @@ packages:
dev: true
optional: true
/@swc/core-linux-x64-musl/1.2.203:
resolution: {integrity: sha512-LXPlxppioO9d1kpqu8qJiLvyDYJmXO7vcbmtOuM3nCPQPdVDii7sx4JtbunOMs/sY2ilFUfF7f6oNf2RkRPu1Q==}
/@swc/core-linux-x64-musl/1.3.51:
resolution: {integrity: sha512-ZwW+X9XdEiAszX+zfaLdOVfi5rQP3vnVwuNAiuX9eq5jHdfOKfKaNtJaGTD8w8NgMavaBM5AMaCHshFVNF0vRw==}
engines: {node: '>=10'}
cpu: [x64]
os: [linux]
@ -6758,8 +6731,8 @@ packages:
dev: true
optional: true
/@swc/core-win32-arm64-msvc/1.2.203:
resolution: {integrity: sha512-De9btHHbi6nTKSMaujAdpvM40XaEH1dTkKPK0H4JX+6WZYhOFYl0silvd6CIFewdnkKLdSVvTnfPubV+c0S8eA==}
/@swc/core-win32-arm64-msvc/1.3.51:
resolution: {integrity: sha512-w+IX4xCIZH6RQG7RrOOrrHqIqM7JIj9BDZHM9LAYC5MIbDinwjnSUXz7bpn0L1LRusvPtmbTulLuSkmVBSSwAg==}
engines: {node: '>=10'}
cpu: [arm64]
os: [win32]
@ -6767,8 +6740,8 @@ packages:
dev: true
optional: true
/@swc/core-win32-ia32-msvc/1.2.203:
resolution: {integrity: sha512-YwGOD22qbDZ+ByiPnLqQdbGVE8k61R/mx3bZOpQnK0hkg/W5ysUBOYwr9aflLcNMRJuKxzVrCmSGBHMJN5AjfA==}
/@swc/core-win32-ia32-msvc/1.3.51:
resolution: {integrity: sha512-Bzv/h0HkoKkTWOOoHtehId/6AS5hLBbWE5czzcQc8SWs+BNNV8zjWoq1oYn7/gLLEhdKaBAxv9q7RHzOfBx28A==}
engines: {node: '>=10'}
cpu: [ia32]
os: [win32]
@ -6776,8 +6749,8 @@ packages:
dev: true
optional: true
/@swc/core-win32-x64-msvc/1.2.203:
resolution: {integrity: sha512-LAlXKK7rl+sLAgyXxuzCkaYQdoG797O/sRFC6eMyb4/eDtSctmVSCQl5xefuH+cofuZCTSk4OgzqmdJ2Ue/Jmw==}
/@swc/core-win32-x64-msvc/1.3.51:
resolution: {integrity: sha512-dTKAdSd0e2Sfz3Sl3m6RGLQbk6jdSIh8TlFomF4iiHDHq4PxLTzjaOVvKUAP5wux9DtBnAgZeSHMuQfM4aL9oA==}
engines: {node: '>=10'}
cpu: [x64]
os: [win32]
@ -6785,36 +6758,40 @@ packages:
dev: true
optional: true
/@swc/core/1.2.203:
resolution: {integrity: sha512-GZXeITqg3YuXFPaSMYk3g9h9j+pIc5sjt4jS5VvFHk8wXUfk/tvP5GwOPmEyXmVJkvEDJPXLip6lqfeKlvNceA==}
/@swc/core/1.3.51_@swc+helpers@0.5.0:
resolution: {integrity: sha512-/fdKlrs2NacLeOKrVZjCPfw5GeUIyBcJg0GDBn0+qwC3Y6k85m4aswK1sfRDF3nzyeXXoBr7YBb+/cSdFq9pVw==}
engines: {node: '>=10'}
hasBin: true
optionalDependencies:
'@swc/core-android-arm-eabi': 1.2.203
'@swc/core-android-arm64': 1.2.203
'@swc/core-darwin-arm64': 1.2.203
'@swc/core-darwin-x64': 1.2.203
'@swc/core-freebsd-x64': 1.2.203
'@swc/core-linux-arm-gnueabihf': 1.2.203
'@swc/core-linux-arm64-gnu': 1.2.203
'@swc/core-linux-arm64-musl': 1.2.203
'@swc/core-linux-x64-gnu': 1.2.203
'@swc/core-linux-x64-musl': 1.2.203
'@swc/core-win32-arm64-msvc': 1.2.203
'@swc/core-win32-ia32-msvc': 1.2.203
'@swc/core-win32-x64-msvc': 1.2.203
dev: true
/@swc/helpers/0.4.11:
resolution: {integrity: sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==}
requiresBuild: true
peerDependencies:
'@swc/helpers': ^0.5.0
peerDependenciesMeta:
'@swc/helpers':
optional: true
dependencies:
tslib: 2.4.0
'@swc/helpers': 0.5.0
optionalDependencies:
'@swc/core-darwin-arm64': 1.3.51
'@swc/core-darwin-x64': 1.3.51
'@swc/core-linux-arm-gnueabihf': 1.3.51
'@swc/core-linux-arm64-gnu': 1.3.51
'@swc/core-linux-arm64-musl': 1.3.51
'@swc/core-linux-x64-gnu': 1.3.51
'@swc/core-linux-x64-musl': 1.3.51
'@swc/core-win32-arm64-msvc': 1.3.51
'@swc/core-win32-ia32-msvc': 1.3.51
'@swc/core-win32-x64-msvc': 1.3.51
dev: true
/@swc/helpers/0.4.14:
resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==}
dependencies:
tslib: 2.4.0
dev: true
/@swc/helpers/0.5.0:
resolution: {integrity: sha512-SjY/p4MmECVVEWspzSRpQEM3sjR17sP8PbGxELWrT+YZMBfiUyt1MRUNjMV23zohwlG2HYtCQOsCwsTHguXkyg==}
dependencies:
tslib: 2.4.0
/@szmarczak/http-timer/1.1.2:
resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==}
@ -13054,7 +13031,7 @@ packages:
/fontkit/2.0.2:
resolution: {integrity: sha512-jc4k5Yr8iov8QfS6u8w2CnHWVmbOGtdBtOXMze5Y+QD966Rx6PEVWXSEGwXlsDlKtu1G12cJjcsybnqhSk/+LA==}
dependencies:
'@swc/helpers': 0.4.11
'@swc/helpers': 0.4.14
brotli: 1.3.3
clone: 2.1.2
dfa: 1.2.0
@ -15414,7 +15391,7 @@ packages:
jest-validate: 27.5.1
micromatch: 4.0.4
pretty-format: 27.5.1
ts-node: 10.9.1_cx2odcp7q42yre3tu7le55sjlu
ts-node: 10.9.1_enwtfwyzxwurvcvoyp2mg6zdee
transitivePeerDependencies:
- bufferutil
- canvas
@ -19944,7 +19921,7 @@ packages:
dependencies:
lilconfig: 2.1.0
postcss: 8.4.14
ts-node: 10.9.1_cx2odcp7q42yre3tu7le55sjlu
ts-node: 10.9.1_enwtfwyzxwurvcvoyp2mg6zdee
yaml: 1.10.2
dev: true
@ -21349,7 +21326,7 @@ packages:
neo-async: 2.6.2
react: 18.2.0
react-dom: 18.2.0_react@18.2.0
webpack: 5.74.0_@swc+core@1.2.203
webpack: 5.74.0_@swc+core@1.3.51
dev: true
/react-shallow-renderer/16.15.0_react@18.2.0:
@ -23776,7 +23753,7 @@ packages:
supports-hyperlinks: 2.1.0
dev: true
/terser-webpack-plugin/5.2.4_bhtm7a3ixzishl2uxypy6qnuwu:
/terser-webpack-plugin/5.2.4_4f2fovbwyf37dv4vbliemm6jzi:
resolution: {integrity: sha512-E2CkNMN+1cho04YpdANyRrn8CyN4yMy+WdFKZIySFZrGXZxJwJP6PMNGGc/Mcr6qygQHUUqRxnAPmi0M9f00XA==}
engines: {node: '>= 10.13.0'}
peerDependencies:
@ -23792,14 +23769,14 @@ packages:
uglify-js:
optional: true
dependencies:
'@swc/core': 1.2.203
'@swc/core': 1.3.51_@swc+helpers@0.5.0
jest-worker: 27.5.1
p-limit: 3.1.0
schema-utils: 3.1.1
serialize-javascript: 6.0.0
source-map: 0.6.1
terser: 5.14.1
webpack: 5.74.0_@swc+core@1.2.203
webpack: 5.74.0_@swc+core@1.3.51
dev: true
/terser-webpack-plugin/5.2.4_webpack@5.74.0:
@ -24129,7 +24106,7 @@ packages:
dependencies:
glob: 7.2.0
/ts-node/10.9.1_cx2odcp7q42yre3tu7le55sjlu:
/ts-node/10.9.1_enwtfwyzxwurvcvoyp2mg6zdee:
resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
hasBin: true
peerDependencies:
@ -24144,7 +24121,7 @@ packages:
optional: true
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@swc/core': 1.2.203
'@swc/core': 1.3.51_@swc+helpers@0.5.0
'@tsconfig/node10': 1.0.9
'@tsconfig/node12': 1.0.11
'@tsconfig/node14': 1.0.3
@ -25168,7 +25145,7 @@ packages:
- esbuild
- uglify-js
/webpack/5.74.0_@swc+core@1.2.203:
/webpack/5.74.0_@swc+core@1.3.51:
resolution: {integrity: sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==}
engines: {node: '>=10.13.0'}
hasBin: true
@ -25199,7 +25176,7 @@ packages:
neo-async: 2.6.2
schema-utils: 3.1.1
tapable: 2.2.0
terser-webpack-plugin: 5.2.4_bhtm7a3ixzishl2uxypy6qnuwu
terser-webpack-plugin: 5.2.4_4f2fovbwyf37dv4vbliemm6jzi
watchpack: 2.4.0
webpack-sources: 3.2.3
transitivePeerDependencies:
@ -25612,9 +25589,9 @@ packages:
/zwitch/2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
'@gitpkg.vercel.app/vercel/turbo/crates/turbopack-dev/js?turbopack-230417.2_react-refresh@0.12.0':
resolution: {tarball: https://gitpkg.vercel.app/vercel/turbo/crates/turbopack-dev/js?turbopack-230417.2}
id: '@gitpkg.vercel.app/vercel/turbo/crates/turbopack-dev/js?turbopack-230417.2'
'@gitpkg.vercel.app/vercel/turbo/crates/turbopack-dev/js?turbopack-230418.1_react-refresh@0.12.0':
resolution: {tarball: https://gitpkg.vercel.app/vercel/turbo/crates/turbopack-dev/js?turbopack-230418.1}
id: '@gitpkg.vercel.app/vercel/turbo/crates/turbopack-dev/js?turbopack-230418.1'
name: '@vercel/turbopack-dev'
version: 0.0.0
dependencies:
@ -25624,8 +25601,8 @@ packages:
- webpack
dev: false
'@gitpkg.vercel.app/vercel/turbo/crates/turbopack-node/js?turbopack-230417.2':
resolution: {tarball: https://gitpkg.vercel.app/vercel/turbo/crates/turbopack-node/js?turbopack-230417.2}
'@gitpkg.vercel.app/vercel/turbo/crates/turbopack-node/js?turbopack-230418.1':
resolution: {tarball: https://gitpkg.vercel.app/vercel/turbo/crates/turbopack-node/js?turbopack-230418.1}
name: '@vercel/turbopack-node'
version: 0.0.0
dependencies:

View file

@ -9,12 +9,12 @@ describe('handle-non-hoisted-swc-helpers', () => {
next = await createNext({
files: {
'pages/index.js': `
export default function Page() {
export default function Page() {
return <p>hello world</p>
}
}
export function getServerSideProps() {
const helper = require('@swc/helpers/lib/_object_spread.js')
const helper = require('@swc/helpers/_/_object_spread')
console.log(helper)
return {
props: {

View file

@ -1,5 +1,4 @@
import { createNext } from 'e2e-utils'
import { NextConfig } from 'packages/next'
import { NextInstance } from 'test/lib/next-modes/base'
describe('ES Check .next output', () => {
@ -23,29 +22,4 @@ describe('ES Check .next output', () => {
'info: ES-Check: there were no ES version matching errors! 🎉'
)
})
it('should emit ES5 with legacyBrowsers: true', async () => {
const nextConfig: NextConfig = {
experimental: {
legacyBrowsers: true,
},
}
next = await createNext({
files: {
'pages/index.js': 'export default function Page() { return "hi" }',
'next.config.js': `module.exports = ${JSON.stringify(nextConfig)}`,
},
dependencies: { 'es-check': '7.0.1' },
packageJson: {
scripts: {
build: 'next build && es-check es5 .next/static/**/*.js',
},
},
buildCommand: 'yarn build',
})
expect(next.cliOutput).toContain(
'info: ES-Check: there were no ES version matching errors! 🎉'
)
})
})

View file

@ -19,15 +19,15 @@ describe('next/swc', () => {
)
expect(output).toMatchInlineSnapshot(`
"function _arrayLikeToArray(arr, len) {
"function _array_like_to_array(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
return arr2;
}
function _arrayWithHoles(arr) {
function _array_with_holes(arr) {
if (Array.isArray(arr)) return arr;
}
function _iterableToArrayLimit(arr, i) {
function _iterable_to_array_limit(arr, i) {
var _i = arr == null ? null : typeof Symbol !== \\"undefined\\" && arr[Symbol.iterator] || arr[\\"@@iterator\\"];
if (_i == null) return;
var _arr = [];
@ -51,22 +51,22 @@ describe('next/swc', () => {
}
return _arr;
}
function _nonIterableRest() {
function _non_iterable_rest() {
throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\");
}
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
function _sliced_to_array(arr, i) {
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
}
function _unsupportedIterableToArray(o, minLen) {
function _unsupported_iterable_to_array(o, minLen) {
if (!o) return;
if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen);
if (typeof o === \\"string\\") return _array_like_to_array(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === \\"Object\\" && o.constructor) n = o.constructor.name;
if (n === \\"Map\\" || n === \\"Set\\") return Array.from(n);
if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
}
import { useState } from \\"react\\";
var _useState = _slicedToArray(useState(0), 2), count = _useState[0], setCount = _useState[1];
var _useState = _sliced_to_array(useState(0), 2), count = _useState[0], setCount = _useState[1];
"
`)
})
@ -80,33 +80,33 @@ describe('next/swc', () => {
)
expect(output).toMatchInlineSnapshot(`
"function _arrayLikeToArray(arr, len) {
"function _array_like_to_array(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
return arr2;
}
function _arrayWithHoles(arr) {
function _array_with_holes(arr) {
if (Array.isArray(arr)) return arr;
}
function _iterableToArray(iter) {
function _iterable_to_array(iter) {
if (typeof Symbol !== \\"undefined\\" && iter[Symbol.iterator] != null || iter[\\"@@iterator\\"] != null) return Array.from(iter);
}
function _nonIterableRest() {
function _non_iterable_rest() {
throw new TypeError(\\"Invalid attempt to destructure non-iterable instance.\\\\\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\\");
}
function _toArray(arr) {
return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest();
function _to_array(arr) {
return _array_with_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_rest();
}
function _unsupportedIterableToArray(o, minLen) {
function _unsupported_iterable_to_array(o, minLen) {
if (!o) return;
if (typeof o === \\"string\\") return _arrayLikeToArray(o, minLen);
if (typeof o === \\"string\\") return _array_like_to_array(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === \\"Object\\" && o.constructor) n = o.constructor.name;
if (n === \\"Map\\" || n === \\"Set\\") return Array.from(n);
if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
if (n === \\"Arguments\\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
}
import { useState } from \\"react\\";
var _useState = _toArray(useState(0)), copy = _useState.slice(0);
var _useState = _to_array(useState(0)), copy = _useState.slice(0);
"
`)
})