diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index f08dbcfcf..8c4351feb 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -107,5 +107,5 @@ jobs: - name: Knip run: yarn lint:knip - - name: Check File Changes - run: echo "Listing changed files:" && git diff --name-only --exit-code && echo "No files changed during lint." + - name: Ensure not files changed + run: node ./scripts/ensure-no-files-changed.js diff --git a/.github/workflows/prod-test.yml b/.github/workflows/prod-test.yml index 643309013..e7c26409d 100644 --- a/.github/workflows/prod-test.yml +++ b/.github/workflows/prod-test.yml @@ -127,21 +127,11 @@ jobs: path: dist - name: Run Tests - if: matrix.node != '14' run: yarn test:production - - name: Run Tests (Node.js 14) - if: matrix.node == '14' - run: yarn test:production-node14 - - name: Run Format Tests (standalone) - if: matrix.node != '14' run: yarn test:production-standalone - - name: Run Format Tests (standalone, Node.js 14) - if: matrix.node == '14' - run: yarn test:production-standalone-node14 - - name: "`--debug-benchmark` flag" if: ${{ matrix.node != '14' && matrix.os != 'windows-latest' }} working-directory: dist/prettier diff --git a/.prettierignore b/.prettierignore index 64271ee2a..d6047258d 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,4 +1,6 @@ -**/.yarn/* +**/.yarn/**/*.* +!/.yarn/plugins/plugin-prepare.cjs +vendors/** # Ignore directories and files in 'tests/format' /tests/format/**/*.* diff --git a/.vscode/settings.example.json b/.vscode/settings.example.json index 51f8c6c42..ede2562a5 100644 --- a/.vscode/settings.example.json +++ b/.vscode/settings.example.json @@ -1,5 +1,5 @@ { - "[javascript][typescript][javascriptreact][typescriptreact][json][jsonc][json5][markdown][yaml][css][html][vue]": { + "[javascript][typescript][javascriptreact][typescriptreact][json][jsonc][json5][markdown][yaml][css][html][vue][github-actions-workflow]": { "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true, }, diff --git a/.yarn/plugins/plugin-prepare.cjs b/.yarn/plugins/plugin-prepare.cjs new file mode 100644 index 000000000..8ff5ca9e3 --- /dev/null +++ b/.yarn/plugins/plugin-prepare.cjs @@ -0,0 +1,36 @@ +const fs = require("node:fs"); +const path = require("node:path"); + +function setupVscode() { + const settingsFile = path.join(__dirname, "../../.vscode/settings.json"); + + const settingsExampleFile = path.join( + __dirname, + "../../.vscode/settings.example.json", + ); + + if (fs.existsSync(settingsFile) || !fs.existsSync(settingsExampleFile)) { + return; + } + + fs.copyFileSync(settingsExampleFile, settingsFile); +} + +async function buildBabelCodeFrameForTest() { + const { buildBabelCodeFrameForTest } = + await import("../../scripts/build-babel-code-frame-for-test.js"); + + await buildBabelCodeFrameForTest(); +} + +module.exports = { + name: "plugin-prepare", + factory: () => ({ + hooks: { + async afterAllInstalled() { + setupVscode(); + await buildBabelCodeFrameForTest(); + }, + }, + }), +}; diff --git a/.yarn/plugins/plugin-setup-editor.cjs b/.yarn/plugins/plugin-setup-editor.cjs deleted file mode 100644 index a6de9ac2d..000000000 --- a/.yarn/plugins/plugin-setup-editor.cjs +++ /dev/null @@ -1,30 +0,0 @@ -const fs = require("node:fs"); -const path = require("node:path"); - -module.exports = { - name: "plugin-setup-editor", - factory: () => ({ - hooks: { - afterAllInstalled() { - const settingsFile = path.join( - __dirname, - "../../.vscode/settings.json", - ); - - const settingsExampleFile = path.join( - __dirname, - "../../.vscode/settings.example.json", - ); - - if ( - fs.existsSync(settingsFile) || - !fs.existsSync(settingsExampleFile) - ) { - return; - } - - fs.copyFileSync(settingsExampleFile, settingsFile); - }, - }, - }), -}; diff --git a/.yarnrc.yml b/.yarnrc.yml index 6bf9b18d1..8ec02f614 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -7,6 +7,6 @@ enableGlobalCache: true nodeLinker: node-modules plugins: - - .yarn/plugins/plugin-setup-editor.cjs + - .yarn/plugins/plugin-prepare.cjs yarnPath: .yarn/releases/yarn-4.12.0.cjs diff --git a/eslint.config.js b/eslint.config.js index b8cf75073..dd660b753 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -35,6 +35,7 @@ website/.docusaurus scripts/benchmark/*/ **/.yarn/** **/.pnp.* +vendors/** ` .split("\n") .filter((pattern) => pattern && !pattern.startsWith("#")); diff --git a/package.json b/package.json index a884e74b9..13f09bb2f 100644 --- a/package.json +++ b/package.json @@ -43,9 +43,9 @@ ], "dependencies": { "@angular/compiler": "21.1.1", - "@babel/code-frame": "8.0.0-beta.4", - "@babel/parser": "8.0.0-beta.4", - "@babel/types": "8.0.0-beta.4", + "@babel/code-frame": "8.0.0-rc.1", + "@babel/parser": "8.0.0-rc.1", + "@babel/types": "8.0.0-rc.1", "@glimmer/syntax": "0.95.0", "@prettier/cli": "0.10.0", "@prettier/html-event-attributes": "0.0.1", @@ -135,7 +135,7 @@ "yaml-unist-parser": "2.2.1" }, "devDependencies": { - "@babel/generator": "8.0.0-beta.4", + "@babel/generator": "8.0.0-rc.1", "@eslint/js": "9.39.2", "@stylistic/eslint-plugin": "5.7.0", "@types/jsesc": "3.0.3", @@ -197,12 +197,9 @@ "scripts": { "prepublishOnly": "echo \"Error: must publish from dist/\" && exit 1", "test": "jest", - "test:node14": "cross-env NODE_OPTIONS=\"--experimental-loader=$PWD/scripts/nodejs-14-test-loader.js --no-warnings=ExperimentalWarning\" jest --runInBand", "test:dev-package": "cross-env INSTALL_PACKAGE=1 yarn test", "test:production": "cross-env NODE_ENV=production yarn test", - "test:production-node14": "cross-env NODE_ENV=production yarn test:node14", "test:production-standalone": "cross-env TEST_STANDALONE=1 yarn test:production", - "test:production-standalone-node14": "cross-env TEST_STANDALONE=1 yarn test:production-node14", "test:production:browser": "cross-env TEST_RUNTIME=browser yarn test:production", "test:production:browser:chrome": "cross-env TEST_RUNTIME_BROWSER=chrome yarn test:production:browser", "test:production:browser:firefox": "cross-env TEST_RUNTIME_BROWSER=firefox yarn test:production:browser", diff --git a/scripts/build-babel-code-frame-for-test.js b/scripts/build-babel-code-frame-for-test.js new file mode 100644 index 000000000..a1938f71a --- /dev/null +++ b/scripts/build-babel-code-frame-for-test.js @@ -0,0 +1,24 @@ +import url from "node:url"; +import esbuild from "esbuild"; +import { + PRODUCTION_MINIMAL_NODE_JS_VERSION, + PROJECT_ROOT, +} from "./utilities/index.js"; + +const file = url.fileURLToPath( + new URL("../vendors/babel-code-frame-for-test.js", import.meta.url), +); + +async function buildBabelCodeFrameForTest() { + await esbuild.build({ + entryPoints: ["@babel/code-frame"], + bundle: true, + target: [`node${PRODUCTION_MINIMAL_NODE_JS_VERSION}`], + format: "esm", + outfile: file, + mainFields: ["browser"], + absWorkingDir: PROJECT_ROOT, + }); +} + +export { buildBabelCodeFrameForTest }; diff --git a/scripts/build/builders/javascript-module.js b/scripts/build/builders/javascript-module.js index 4c687ff8b..90c04305e 100644 --- a/scripts/build/builders/javascript-module.js +++ b/scripts/build/builders/javascript-module.js @@ -4,7 +4,10 @@ import browserslistToEsbuild from "browserslist-to-esbuild"; import esbuild from "esbuild"; import createEsmUtils from "esm-utils"; import projectPackageJson from "../../../package.json" with { type: "json" }; -import { PRODUCTION_MINIMAL_NODE_JS_VERSION } from "../../utilities/index.js"; +import { + PRODUCTION_MINIMAL_NODE_JS_VERSION, + PROJECT_ROOT, +} from "../../utilities/index.js"; import esbuildPluginAddDefaultExport from "../esbuild-plugins/add-default-export.js"; import esbuildPluginEvaluate from "../esbuild-plugins/evaluate.js"; import esbuildPluginPrimitiveDefine from "../esbuild-plugins/primitive-define.js"; @@ -223,6 +226,7 @@ function getEsbuildOptions({ packageConfig, file, cliOptions, buildOptions }) { "class-private-method": true, }, packages: "bundle", + absWorkingDir: PROJECT_ROOT, }; if (buildOptions.platform === "universal") { diff --git a/scripts/build/packages/prettier.js b/scripts/build/packages/prettier.js index ee0179a0a..caa1ede21 100644 --- a/scripts/build/packages/prettier.js +++ b/scripts/build/packages/prettier.js @@ -75,6 +75,16 @@ const mainModule = { find: "export default lib;", replacement: "export default { parse };", }, + { + module: require.resolve("@babel/code-frame"), + process(text) { + text = text.replace( + "from 'node:util'", + `from ${JSON.stringify(path.join(dirname, "../shims/node-util.js"))}`, + ); + return text; + }, + }, ], addDefaultExport: true, reuseDocModule: true, @@ -85,45 +95,6 @@ const mainModule = { input: "src/standalone.js", umdVariableName: "prettier", replaceModule: [ - { - module: require.resolve("@babel/code-frame"), - process(text) { - text = text.replaceAll( - /(?<=\n)let tokenize;\n\{\n.*?\n\}(?=\n)/gs, - "", - ); - - text = text.replaceAll( - /(?<=\n)function highlight\(text\) \{\n.*?\n\}(?=\n)/gs, - "function highlight(text) {return text}", - ); - - text = text.replaceAll( - /(?<=\n)function getDefs\(enabled\) \{\n.*?\n\}(?=\n)/gs, - outdent` - function getDefs() { - return new Proxy({}, {get: () => (text) => text}) - } - `, - ); - - text = text.replaceAll( - "const defsOn = buildDefs(picocolors.createColors(true));", - "", - ); - text = text.replaceAll( - "const defsOff = buildDefs(picocolors.createColors(false));", - "", - ); - - text = text.replaceAll( - "const shouldHighlight = opts.forceColor || isColorSupported() && opts.highlightCode;", - "const shouldHighlight = false;", - ); - - return text; - }, - }, // Smaller size { module: getPackageFile("picocolors/picocolors.browser.js"), diff --git a/scripts/build/shims/node-util.js b/scripts/build/shims/node-util.js new file mode 100644 index 000000000..254b3e2cf --- /dev/null +++ b/scripts/build/shims/node-util.js @@ -0,0 +1,4 @@ +import * as util from "node:util"; + +export const styleText = + util.styleText ?? ((format, text /* , options*/) => text); diff --git a/scripts/ensure-no-files-changed.js b/scripts/ensure-no-files-changed.js new file mode 100644 index 000000000..4ba39ccec --- /dev/null +++ b/scripts/ensure-no-files-changed.js @@ -0,0 +1,31 @@ +#!/usr/bin/env node + +import spawn from "nano-spawn"; + +async function getChangedFiles() { + const { stdout } = await spawn("git", ["diff", "--name-only"]); + return stdout.split("\n"); +} + +async function ensureNoFilesChanged() { + const changedFiles = await getChangedFiles(); + + if (changedFiles.length === 0) { + console.log("✅ No files changed."); + return; + } + + console.log( + `❌ ${changedFiles.length} file${changedFiles.length === 1 ? "" : "s"} changed:`, + ); + console.log(changedFiles.map((file) => ` - ${file}`).join("\n")); + console.log(); + + try { + await spawn("git", ["diff", "--exit-code"], { stdio: "inherit" }); + } catch (error) { + process.exitCode = error.exitCode; + } +} + +await ensureNoFilesChanged(); diff --git a/scripts/nodejs-14-test-loader.js b/scripts/nodejs-14-test-loader.js deleted file mode 100644 index d577b6d16..000000000 --- a/scripts/nodejs-14-test-loader.js +++ /dev/null @@ -1,36 +0,0 @@ -import { readFile } from "node:fs/promises"; -import { fileURLToPath } from "node:url"; -import esbuild from "esbuild"; - -// `@babel/code-frame` and `@babel/highlight` use syntax that is not available in Node.js 14, -// such as `??=`. When bundled into dist/ they are compiled to be compatible with Node.js 14, -// however we also need to load them at runtime from node_modules to run our tests. -// We can use an `--experimental-loader` to compile them on-the-fly with esbuild. - -export async function getSource(url, context, defaultGetSource) { - if (context.format === "module") { - if (url.includes("/node_modules/js-tokens/")) { - const text = await readFile(fileURLToPath(url), "utf8"); - const commonJsExport = 'export { jsTokens as "module.exports" };'; - if (text.includes(commonJsExport)) { - return { source: text.replace(commonJsExport, "") }; - } - } - - if ( - url.includes("/node_modules/@babel/code-frame/") || - url.includes("/node_modules/@babel/highlight/") - ) { - const raw = await readFile(fileURLToPath(url)); - try { - const result = await esbuild.transform(raw, { target: "node14" }); - return { source: result.code }; - } catch (error) { - error.message += ` (in ${url})`; - throw error; - } - } - } - - return defaultGetSource(url, context, defaultGetSource); -} diff --git a/scripts/prepare-test-for-legacy-nodejs.js b/scripts/prepare-test-for-legacy-nodejs.js index a2a5a2794..961aac7c3 100644 --- a/scripts/prepare-test-for-legacy-nodejs.js +++ b/scripts/prepare-test-for-legacy-nodejs.js @@ -85,7 +85,7 @@ const jestDependencies = [ "pretty-format", ]; -let content = JSON.stringify( +const content = JSON.stringify( { ...packageJson, resolutions: { @@ -99,8 +99,4 @@ let content = JSON.stringify( 2, ); -if (process.platform === "win32") { - content = content.replace("$PWD/", new URL("../", import.meta.url).href); -} - fs.writeFileSync(packageJsonFile, content); diff --git a/src/language-js/traverse/visitor-keys.evaluate.js b/src/language-js/traverse/visitor-keys.evaluate.js index 14e9bf55e..46d0c3366 100644 --- a/src/language-js/traverse/visitor-keys.evaluate.js +++ b/src/language-js/traverse/visitor-keys.evaluate.js @@ -33,7 +33,6 @@ const excludeVisitorKeys = { DeclareOpaqueType: ["impltype"], // Legacy properties - ExportAllDeclaration: ["assertions"], ImportDeclaration: ["assertions"], // Flow node from Babel diff --git a/tests/config/format-test/visualize-range.js b/tests/config/format-test/visualize-range.js index 579ba0c57..8eb0da4e3 100644 --- a/tests/config/format-test/visualize-range.js +++ b/tests/config/format-test/visualize-range.js @@ -1,5 +1,5 @@ -import { codeFrameColumns } from "@babel/code-frame"; import indexToPosition from "index-to-position"; +import { codeFrameColumns } from "../../../vendors/babel-code-frame-for-test.js"; const codeFrameColumnsOptions = { linesAbove: Number.POSITIVE_INFINITY, linesBelow: Number.POSITIVE_INFINITY, diff --git a/tests/unit/__snapshots__/visitor-keys.js.snap b/tests/unit/__snapshots__/visitor-keys.js.snap index 8a7dc21e7..8133721ad 100644 --- a/tests/unit/__snapshots__/visitor-keys.js.snap +++ b/tests/unit/__snapshots__/visitor-keys.js.snap @@ -722,13 +722,6 @@ exports[`visitor keys estree 1`] = ` "ParenthesizedExpression": [ "expression", ], - "PipelineBareFunction": [ - "callee", - ], - "PipelinePrimaryTopicReference": [], - "PipelineTopicExpression": [ - "expression", - ], "Placeholder": [], "PrivateIdentifier": [], "PrivateName": [ diff --git a/vendors/babel-code-frame-for-test.js b/vendors/babel-code-frame-for-test.js new file mode 100644 index 000000000..3d76b7522 --- /dev/null +++ b/vendors/babel-code-frame-for-test.js @@ -0,0 +1,143 @@ +// node_modules/@babel/code-frame/lib/common-BO7XIBW3.js +var NEWLINE = /\r\n|[\n\r\u2028\u2029]/; +function getMarkerLines(loc, source, opts, startLineBaseZero) { + const startLoc = { + column: 0, + line: -1, + ...loc.start + }; + const endLoc = { + ...startLoc, + ...loc.end + }; + const { + linesAbove = 2, + linesBelow = 3 + } = opts || {}; + const startLine = startLoc.line - startLineBaseZero; + const startColumn = startLoc.column; + const endLine = endLoc.line - startLineBaseZero; + const endColumn = endLoc.column; + let start = Math.max(startLine - (linesAbove + 1), 0); + let end = Math.min(source.length, endLine + linesBelow); + if (startLine === -1) { + start = 0; + } + if (endLine === -1) { + end = source.length; + } + const lineDiff = endLine - startLine; + const markerLines = {}; + if (lineDiff) { + for (let i = 0; i <= lineDiff; i++) { + const lineNumber = i + startLine; + if (!startColumn) { + markerLines[lineNumber] = true; + } else if (i === 0) { + const sourceLength = source[lineNumber - 1].length; + markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1]; + } else if (i === lineDiff) { + markerLines[lineNumber] = [0, endColumn]; + } else { + const sourceLength = source[lineNumber - i].length; + markerLines[lineNumber] = [0, sourceLength]; + } + } + } else { + if (startColumn === endColumn) { + if (startColumn) { + markerLines[startLine] = [startColumn, 0]; + } else { + markerLines[startLine] = true; + } + } else { + markerLines[startLine] = [startColumn, endColumn - startColumn]; + } + } + return { + start, + end, + markerLines + }; +} +function _codeFrameColumns(rawLines, loc, opts = {}, colorOpts) { + const { + defs, + highlight: highlight2 + } = colorOpts || { + defs: { + gutter: String, + marker: String, + message: String, + reset: String + }, + highlight: String + }; + const startLineBaseZero = (opts.startLine || 1) - 1; + const lines = rawLines.split(NEWLINE); + const { + start, + end, + markerLines + } = getMarkerLines(loc, lines, opts, startLineBaseZero); + const hasColumns = loc.start && typeof loc.start.column === "number"; + const numberMaxWidth = String(end + startLineBaseZero).length; + const highlightedLines = highlight2(rawLines); + let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => { + const number = start + 1 + index; + const paddedNumber = ` ${number + startLineBaseZero}`.slice(-numberMaxWidth); + const gutter = ` ${paddedNumber} |`; + const hasMarker = markerLines[number]; + const lastMarkerLine = !markerLines[number + 1]; + if (hasMarker) { + let markerLine = ""; + if (Array.isArray(hasMarker)) { + const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " "); + const numberOfMarkers = hasMarker[1] || 1; + markerLine = ["\n ", defs.gutter(gutter.replace(/\d/g, " ")), " ", markerSpacing, defs.marker("^").repeat(numberOfMarkers)].join(""); + if (lastMarkerLine && opts.message) { + markerLine += " " + defs.message(opts.message); + } + } + return [defs.marker(">"), defs.gutter(gutter), line.length > 0 ? ` ${line}` : "", markerLine].join(""); + } else { + return ` ${defs.gutter(gutter)}${line.length > 0 ? ` ${line}` : ""}`; + } + }).join("\n"); + if (opts.message && !hasColumns) { + frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message} +${frame}`; + } + return defs.reset(frame); +} + +// node_modules/@babel/code-frame/lib/browser.js +var deprecationWarningShown = false; +function codeFrameColumns(rawLines, loc, opts = {}) { + return _codeFrameColumns(rawLines, loc, opts); +} +function browser(rawLines, lineNumber, colNumber, opts = {}) { + if (!deprecationWarningShown) { + deprecationWarningShown = true; + const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`."; + const deprecationError = new Error(message); + deprecationError.name = "DeprecationWarning"; + console.warn(new Error(message)); + } + colNumber = Math.max(colNumber, 0); + const location = { + start: { + column: colNumber, + line: lineNumber + } + }; + return codeFrameColumns(rawLines, location, opts); +} +function highlight(code) { + return code; +} +export { + codeFrameColumns, + browser as default, + highlight +}; diff --git a/yarn.lock b/yarn.lock index bdf84d02e..7057344fe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,14 +23,13 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:8.0.0-beta.4": - version: 8.0.0-beta.4 - resolution: "@babel/code-frame@npm:8.0.0-beta.4" +"@babel/code-frame@npm:8.0.0-rc.1": + version: 8.0.0-rc.1 + resolution: "@babel/code-frame@npm:8.0.0-rc.1" dependencies: - "@babel/helper-validator-identifier": "npm:^8.0.0-beta.4" + "@babel/helper-validator-identifier": "npm:^8.0.0-rc.1" js-tokens: "npm:^10.0.0" - picocolors: "npm:^1.1.1" - checksum: 10/11bfcf81136ee40a4ed74e9ed363c798415196b0ca5b1636364819f0fcb2425ef729732536f0145a75d8db3297f2ea7913a17e331ba29cc3d3775967bc9fb4e4 + checksum: 10/a1a43ab10cfd6d6f2b2f4aa7b83a6c8765bd79733dff4885ece77068444e54a8c67f40a576eeac1ba0c389b47bf1497b48ab93594bd59686043177651f85308f languageName: node linkType: hard @@ -75,17 +74,17 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:8.0.0-beta.4": - version: 8.0.0-beta.4 - resolution: "@babel/generator@npm:8.0.0-beta.4" +"@babel/generator@npm:8.0.0-rc.1": + version: 8.0.0-rc.1 + resolution: "@babel/generator@npm:8.0.0-rc.1" dependencies: - "@babel/parser": "npm:^8.0.0-beta.4" - "@babel/types": "npm:^8.0.0-beta.4" + "@babel/parser": "npm:^8.0.0-rc.1" + "@babel/types": "npm:^8.0.0-rc.1" "@jridgewell/gen-mapping": "npm:^0.3.12" "@jridgewell/trace-mapping": "npm:^0.3.28" "@types/jsesc": "npm:^2.5.0" jsesc: "npm:^3.0.2" - checksum: 10/79a2130a454f43f80c4d4289eaa3b83afd7ed27e62878c0b070108ee321a3602e3edbcff213a80b16c2b0a7913ef3150ccb14cef3cdccc155c296d0fbb96cac6 + checksum: 10/1949ed7a0731e2825b263b8095be9fba0ed6fc1bb4dc1c6ea9fa554cb6d34aed3f9bf72ff1ce343bc31dbe604ebb0138b98f4b77c496ae31e6576ef6a9c0dd20 languageName: node linkType: hard @@ -159,10 +158,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-string-parser@npm:^8.0.0-beta.4": - version: 8.0.0-beta.4 - resolution: "@babel/helper-string-parser@npm:8.0.0-beta.4" - checksum: 10/39fe9a7a2fcb7418d40248e515e7e40bc63a9f4320d7dc5e748094fa96cc20646a4e48e8492d507bdefcb94c558fefeb4acdc29cd510a1fd87c7a33f3f77d0d7 +"@babel/helper-string-parser@npm:^8.0.0-rc.1": + version: 8.0.0-rc.1 + resolution: "@babel/helper-string-parser@npm:8.0.0-rc.1" + checksum: 10/9c7b34ecce6a1a03a3a2fbd2f09f46bb47a961f432ee2c279e120855c40258b1715cd1bf2ed27618c03ee13d4310356381ad123ec37648d2756c5594bd128682 languageName: node linkType: hard @@ -173,10 +172,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^8.0.0-beta.4": - version: 8.0.0-beta.4 - resolution: "@babel/helper-validator-identifier@npm:8.0.0-beta.4" - checksum: 10/f011422956084af1f4ce51a1453083b77b20abb48eb95aef33df52d3328460c95848aaa92e59b618a9f334f58fb50d27f3fd66235fbfdd77e0a382c2a9aa650c +"@babel/helper-validator-identifier@npm:^8.0.0-rc.1": + version: 8.0.0-rc.1 + resolution: "@babel/helper-validator-identifier@npm:8.0.0-rc.1" + checksum: 10/75d6d5201c64fec916b539210b77f41585b3fc31f197c17a874e1ace818014080dba5909eb24f84daad451810f2e9b7f09a2b3f23978b9c9c9875ed63d3f83fb languageName: node linkType: hard @@ -209,14 +208,14 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:8.0.0-beta.4, @babel/parser@npm:^8.0.0-beta.4": - version: 8.0.0-beta.4 - resolution: "@babel/parser@npm:8.0.0-beta.4" +"@babel/parser@npm:8.0.0-rc.1, @babel/parser@npm:^8.0.0-rc.1": + version: 8.0.0-rc.1 + resolution: "@babel/parser@npm:8.0.0-rc.1" dependencies: - "@babel/types": "npm:^8.0.0-beta.4" + "@babel/types": "npm:^8.0.0-rc.1" bin: parser: ./bin/babel-parser.js - checksum: 10/41ea150c87ad2153efa245013fc6f6fa5be303403e2de0c4f2547f8529b92f242ae7a8a19f076a0bf63c494595fe40924421a6fbf4bc944378570d9df7849b82 + checksum: 10/d0c5baf877a0ee9e0b0626f21f22d4911405abf66504b102c7544aff8a0925e33d8841934ceb834f3d989f7992fffcaff7be8d433b5779ed1924e1692c182016 languageName: node linkType: hard @@ -451,13 +450,13 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:8.0.0-beta.4, @babel/types@npm:^8.0.0-beta.4": - version: 8.0.0-beta.4 - resolution: "@babel/types@npm:8.0.0-beta.4" +"@babel/types@npm:8.0.0-rc.1, @babel/types@npm:^8.0.0-rc.1": + version: 8.0.0-rc.1 + resolution: "@babel/types@npm:8.0.0-rc.1" dependencies: - "@babel/helper-string-parser": "npm:^8.0.0-beta.4" - "@babel/helper-validator-identifier": "npm:^8.0.0-beta.4" - checksum: 10/31222a70050c3845c44c1339a7bc75bc6bcea48da754f8e8d59e36605d3bac9ce29707078a6ef44ddb102f6493aea508e73e35ea849683d3844cb412f35f85ce + "@babel/helper-string-parser": "npm:^8.0.0-rc.1" + "@babel/helper-validator-identifier": "npm:^8.0.0-rc.1" + checksum: 10/34def05264164b579c8648a9b44449b567a79c4f34b285353d1e225c0d012a2931747547f05781a41ce99806f43920e2ca6319bd628be09b44ae9dce77576ec3 languageName: node linkType: hard @@ -8358,10 +8357,10 @@ __metadata: resolution: "prettier@workspace:." dependencies: "@angular/compiler": "npm:21.1.1" - "@babel/code-frame": "npm:8.0.0-beta.4" - "@babel/generator": "npm:8.0.0-beta.4" - "@babel/parser": "npm:8.0.0-beta.4" - "@babel/types": "npm:8.0.0-beta.4" + "@babel/code-frame": "npm:8.0.0-rc.1" + "@babel/generator": "npm:8.0.0-rc.1" + "@babel/parser": "npm:8.0.0-rc.1" + "@babel/types": "npm:8.0.0-rc.1" "@eslint/js": "npm:9.39.2" "@glimmer/syntax": "npm:0.95.0" "@prettier/cli": "npm:0.10.0"