diff --git a/packages/auto-install/CHANGELOG.md b/packages/auto-install/CHANGELOG.md index 5920f1379..1f7004def 100755 --- a/packages/auto-install/CHANGELOG.md +++ b/packages/auto-install/CHANGELOG.md @@ -1,5 +1,13 @@ # @rollup/plugin-auto-install ChangeLog +## v4.0.0 + +_2026-02-16_ + +### Breaking Changes + +- feat!: ESM only. Update Node and Rollup minimum versions ([#1935](https://github.com/rollup/plugins/issues/1935)) + ## v3.0.5 _2023-10-05_ diff --git a/packages/auto-install/README.md b/packages/auto-install/README.md index 9052da468..9baef2ec0 100755 --- a/packages/auto-install/README.md +++ b/packages/auto-install/README.md @@ -13,7 +13,7 @@ ## Requirements -This plugin requires an [LTS](https://github.com/nodejs/Release) Node version (v14.0.0+) and Rollup v1.20.0+. +This plugin requires an [LTS](https://github.com/nodejs/Release) Node version (v20.19.0+) and Rollup v4.0.0+. ## Install diff --git a/packages/auto-install/package.json b/packages/auto-install/package.json index 8d2346268..82fefd5b3 100755 --- a/packages/auto-install/package.json +++ b/packages/auto-install/package.json @@ -1,6 +1,6 @@ { "name": "@rollup/plugin-auto-install", - "version": "3.0.5", + "version": "4.0.0", "publishConfig": { "access": "public" }, @@ -13,34 +13,32 @@ "author": "Rich Harris", "homepage": "https://github.com/rollup/plugins/tree/master/packages/auto-install/#readme", "bugs": "https://github.com/rollup/plugins/issues", - "main": "./dist/cjs/index.js", - "module": "./dist/es/index.js", + "type": "module", "exports": { - "types": "./types/index.d.ts", - "import": "./dist/es/index.js", - "default": "./dist/cjs/index.js" + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "default": "./dist/index.js" + } }, "engines": { - "node": ">=14.0.0" + "node": ">=20.19.0" }, "scripts": { - "build": "rollup -c", + "build": "tsc --project tsconfig.json", "ci:coverage": "nyc pnpm test && nyc report --reporter=text-lcov > coverage.lcov", "ci:lint": "pnpm build && pnpm lint", "ci:lint:commits": "commitlint --from=${CIRCLE_BRANCH} --to=${CIRCLE_SHA1}", - "ci:test": "pnpm test -- --verbose", + "ci:test": "pnpm test -- --reporter=verbose", "prebuild": "del-cli dist", "prepare": "if [ ! -d 'dist' ]; then pnpm build; fi", "prerelease": "pnpm build", "pretest": "pnpm build", "release": "pnpm --workspace-root package:release $(pwd)", - "test": "ava", - "test:ts": "tsc --noEmit" + "test": "vitest --config ../../.config/vitest.config.mts run" }, "files": [ "dist", - "!dist/**/*.map", - "types", "README.md", "LICENSE" ], @@ -53,7 +51,7 @@ "modules" ], "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + "rollup": ">=4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -62,21 +60,10 @@ }, "devDependencies": { "@rollup/plugin-node-resolve": "^15.0.0", - "@rollup/plugin-typescript": "^9.0.1", - "del": "^6.1.1", + "del-cli": "^5.0.0", "node-noop": "^1.0.0", - "rollup": "^4.0.0-24", - "typescript": "^4.8.3" + "rollup": "^4.0.0", + "typescript": "catalog:" }, - "types": "./types/index.d.ts", - "ava": { - "workerThreads": false, - "files": [ - "!**/fixtures/**", - "!**/output/**", - "!**/helpers/**", - "!**/recipes/**", - "!**/types.ts" - ] - } + "types": "./dist/index.d.ts" } diff --git a/packages/auto-install/rollup.config.mjs b/packages/auto-install/rollup.config.mjs deleted file mode 100644 index 2a28aaaf6..000000000 --- a/packages/auto-install/rollup.config.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import { readFileSync } from 'fs'; - -import { createConfig } from '../../shared/rollup.config.mjs'; - -export default createConfig({ - pkg: JSON.parse(readFileSync(new URL('./package.json', import.meta.url), 'utf8')) -}); diff --git a/packages/auto-install/src/index.ts b/packages/auto-install/src/index.ts index 13dbd7b07..2db298f84 100644 --- a/packages/auto-install/src/index.ts +++ b/packages/auto-install/src/index.ts @@ -1,30 +1,49 @@ -import * as fs from 'fs'; -import * as path from 'path'; -import mod from 'module'; -import { exec } from 'child_process'; -import { promisify } from 'util'; +import fs from 'node:fs'; +import path from 'node:path'; +import { builtinModules } from 'node:module'; +import { exec } from 'node:child_process'; +import { promisify } from 'node:util'; import type { Plugin } from 'rollup'; -import type { RollupAutoInstallOptions } from '../types'; +type PackageManager = 'npm' | 'pnpm' | 'yarn'; + +type Commands = Record; + +export interface RollupAutoInstallOptions { + /** + * Specifies the location on disk of the target `package.json` file. + * If the file doesn't exist, it will be created by the plugin, + * as package managers need to populate the `dependencies` property. + * @default '{cwd}/package.json' + */ + pkgFile?: string; + + /** + * Specifies the package manager to use. + * If not specified, the plugin will default to: + * - `'yarn'` if `yarn.lock` exists + * - `'pnpm'` if `pnpm-lock.yaml` exists + * - `'npm'` otherwise + */ + manager?: PackageManager; + + /** + * Intentionally undocumented options. Used for tests. + */ + commands?: Partial; +} const execAsync = promisify(exec); export default function autoInstall(opts: RollupAutoInstallOptions = {}): Plugin { - const defaults = { - // intentionally undocumented options. used for tests - commands: { - npm: 'npm install', - pnpm: 'pnpm install', - yarn: 'yarn add' - }, - manager: fs.existsSync('yarn.lock') ? 'yarn' : fs.existsSync('pnpm-lock.yaml') ? 'pnpm' : 'npm', - pkgFile: path.resolve(opts.pkgFile || 'package.json') - }; + const manager = + opts.manager ?? + (fs.existsSync('yarn.lock') ? 'yarn' : fs.existsSync('pnpm-lock.yaml') ? 'pnpm' : 'npm'); + + const pkgFile = path.resolve(opts.pkgFile ?? 'package.json'); - const options = Object.assign({}, defaults, opts); - const { manager, pkgFile } = options; - const validManagers = ['npm', 'yarn', 'pnpm']; + const validManagers: readonly PackageManager[] = ['npm', 'yarn', 'pnpm']; if (!validManagers.includes(manager)) { throw new RangeError( @@ -33,6 +52,13 @@ export default function autoInstall(opts: RollupAutoInstallOptions = {}): Plugin ); } + const commands: Commands = { + npm: 'npm install', + pnpm: 'pnpm install', + yarn: 'yarn add', + ...opts.commands + }; + let pkg: any; if (fs.existsSync(pkgFile)) { pkg = JSON.parse(fs.readFileSync(pkgFile, 'utf-8')); @@ -41,8 +67,8 @@ export default function autoInstall(opts: RollupAutoInstallOptions = {}): Plugin pkg = {}; } - const installed = new Set(Object.keys(pkg.dependencies || {}).concat(mod.builtinModules)); - const cmd = options.commands[manager]; + const installed = new Set([...Object.keys(pkg.dependencies || {}), ...builtinModules]); + const cmd = commands[manager]; return { name: 'auto-install', @@ -54,7 +80,7 @@ export default function autoInstall(opts: RollupAutoInstallOptions = {}): Plugin // this function doesn't actually resolve anything, but it provides us with a hook to discover uninstalled deps const isExternalPackage = - importee[0] !== '.' && importee[0] !== '\0' && !path.isAbsolute(importee); + importee[0] !== '.' && importee[0] !== '\\0' && !path.isAbsolute(importee); if (isExternalPackage) { // we have a bare import — check it's installed diff --git a/packages/auto-install/test/auto-install.test.ts b/packages/auto-install/test/auto-install.test.ts new file mode 100644 index 000000000..844afcbcb --- /dev/null +++ b/packages/auto-install/test/auto-install.test.ts @@ -0,0 +1,146 @@ +import fs from 'node:fs/promises'; +import os from 'node:os'; +import path from 'node:path'; + +import { describe, it, expect } from 'vitest'; +import { rollup, type Plugin } from 'rollup'; +import nodeResolve from '@rollup/plugin-node-resolve'; + +import autoInstall from '~package'; + +const PACKAGE_ROOT = process.cwd(); + +async function withFixture( + fixtureName: string, + fn: (ctx: { cwd: string; input: string; outputFile: string }) => Promise +) { + const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'rollup-plugin-auto-install-')); + const cwd = path.join(tmpDir, 'cwd'); + await fs.mkdir(cwd, { recursive: true }); + + const fixturesDir = path.join(PACKAGE_ROOT, 'test', 'fixtures'); + await fs.cp(path.join(fixturesDir, fixtureName), cwd, { recursive: true }); + + const input = path.join(cwd, 'input.js'); + await fs.copyFile(path.join(fixturesDir, 'input.js'), input); + + const outputFile = path.join(cwd, 'output', 'bundle.js'); + await fs.mkdir(path.dirname(outputFile), { recursive: true }); + + const previousCwd = process.cwd(); + process.chdir(cwd); + + try { + await fn({ cwd, input, outputFile }); + } finally { + process.chdir(previousCwd); + await fs.rm(tmpDir, { recursive: true, force: true }); + } +} + +async function bundleWithPlugins(input: string, outputFile: string, plugins: Plugin[]) { + const bundle = await rollup({ + input, + plugins + }); + + try { + await bundle.write({ + file: outputFile, + format: 'cjs' + }); + } finally { + await bundle.close(); + } +} + +const noopResolvePlugin: Plugin = { + name: 'noop-resolver', + resolveId(id) { + if (id === 'node-noop') return id; + return null; + }, + load(id) { + if (id === 'node-noop') { + return 'export default {}'; + } + return null; + } +}; + +describe('@rollup/plugin-auto-install', () => { + it('throws on invalid manager', () => { + expect(() => autoInstall({ manager: 'foo' as any })).toThrowError(RangeError); + expect(() => autoInstall({ manager: 'foo' as any })).toThrowError( + /is not a valid package manager/ + ); + }); + + it('npm', async () => { + await withFixture('npm', async ({ cwd, input, outputFile }) => { + await bundleWithPlugins(input, outputFile, [ + autoInstall({ pkgFile: path.join(cwd, 'package.json'), manager: 'npm' }), + nodeResolve() + ]); + + const json = JSON.parse(await fs.readFile(path.join(cwd, 'package.json'), 'utf-8')); + expect(json.dependencies?.['node-noop']).toBeDefined(); + }); + }, 50_000); + + it('npm, bare', async () => { + await withFixture('npm-bare', async ({ cwd, input, outputFile }) => { + await bundleWithPlugins(input, outputFile, [autoInstall(), nodeResolve()]); + + const json = JSON.parse(await fs.readFile(path.join(cwd, 'package.json'), 'utf-8')); + expect(json.dependencies?.['node-noop']).toBeDefined(); + + const lockFile = await fs.readFile(path.join(cwd, 'package-lock.json'), 'utf-8'); + expect(lockFile).toContain('"node-noop"'); + }); + }, 50_000); + + it('pnpm', async () => { + await withFixture('pnpm', async ({ cwd, input, outputFile }) => { + await bundleWithPlugins(input, outputFile, [autoInstall(), nodeResolve()]); + + const json = JSON.parse(await fs.readFile(path.join(cwd, 'package.json'), 'utf-8')); + expect(json.dependencies?.['node-noop']).toBeDefined(); + }); + }, 50_000); + + it('pnpm, bare', async () => { + await withFixture('pnpm-bare', async ({ cwd, input, outputFile }) => { + await bundleWithPlugins(input, outputFile, [autoInstall({ manager: 'pnpm' }), nodeResolve()]); + + const json = JSON.parse(await fs.readFile(path.join(cwd, 'package.json'), 'utf-8')); + expect(json.dependencies?.['node-noop']).toBeDefined(); + }); + }, 50_000); + + it('yarn', async () => { + await withFixture('yarn', async ({ cwd, input, outputFile }) => { + await bundleWithPlugins(input, outputFile, [ + autoInstall({ commands: { yarn: 'echo yarn > yarn.lock' } }), + noopResolvePlugin, + nodeResolve() + ]); + + const lockFile = await fs.readFile(path.join(cwd, 'yarn.lock'), 'utf-8'); + expect(lockFile).toMatch(/yarn\s+node-noop/); + }); + }, 50_000); + + it('yarn, bare', async () => { + await withFixture('yarn-bare', async ({ cwd, input, outputFile }) => { + await bundleWithPlugins(input, outputFile, [ + autoInstall({ manager: 'yarn', commands: { yarn: 'echo yarn.bare > yarn.lock' } }), + noopResolvePlugin, + nodeResolve() + ]); + + const lockFile = await fs.readFile(path.join(cwd, 'yarn.lock'), 'utf-8'); + expect(lockFile).toMatch(/yarn\.bare\s+node-noop/); + }); + }, 50_000); +}); diff --git a/packages/auto-install/test/npm-bare.js b/packages/auto-install/test/npm-bare.js deleted file mode 100644 index 95469f7f6..000000000 --- a/packages/auto-install/test/npm-bare.js +++ /dev/null @@ -1,33 +0,0 @@ -const { readFileSync } = require('fs'); -const { join } = require('path'); - -const test = require('ava'); -const del = require('del'); -const { nodeResolve } = require('@rollup/plugin-node-resolve'); -const { rollup } = require('rollup'); - -const autoInstall = require('..'); - -const cwd = join(__dirname, 'fixtures/npm-bare'); -const file = join(cwd, 'output/bundle.js'); -const input = join(cwd, '../input.js'); - -process.chdir(cwd); - -test('npm, bare', async (t) => { - t.timeout(50000); - await rollup({ - input, - output: { - file, - format: 'cjs' - }, - plugins: [autoInstall(), nodeResolve()] - }); - t.snapshot(readFileSync('package.json', 'utf-8')); - t.truthy(readFileSync('package-lock.json', 'utf-8').includes('"node-noop"')); -}); - -test.after(async () => { - await del(['node_modules', 'package.json', 'package-lock.json']); -}); diff --git a/packages/auto-install/test/npm.js b/packages/auto-install/test/npm.js deleted file mode 100644 index 02fff0325..000000000 --- a/packages/auto-install/test/npm.js +++ /dev/null @@ -1,54 +0,0 @@ -const { readFileSync, writeFileSync } = require('fs'); -const { join } = require('path'); - -const test = require('ava'); -const del = require('del'); -const { nodeResolve } = require('@rollup/plugin-node-resolve'); -const { rollup } = require('rollup'); - -const autoInstall = require('..'); - -const cwd = join(__dirname, 'fixtures/npm'); -const file = join(cwd, 'output/bundle.js'); -const input = join(cwd, '../input.js'); -const manager = 'npm'; -const pkgFile = join(cwd, 'package.json'); - -process.chdir(cwd); - -test('invalid manager', (t) => { - t.timeout(50000); - const error = t.throws( - () => - rollup({ - input, - output: { - file, - format: 'cjs' - }, - plugins: [autoInstall({ pkgFile, manager: 'foo' }), nodeResolve()] - }), - { - instanceOf: RangeError - } - ); - t.snapshot(error.message); -}); - -test('npm', async (t) => { - t.timeout(50000); - await rollup({ - input, - output: { - file, - format: 'cjs' - }, - plugins: [autoInstall({ pkgFile, manager }), nodeResolve()] - }); - t.snapshot(readFileSync('package.json', 'utf-8')); -}); - -test.after(async () => { - await del(['node_modules', 'package-lock.json']); - writeFileSync(pkgFile, '{}'); -}); diff --git a/packages/auto-install/test/pnpm-bare.js b/packages/auto-install/test/pnpm-bare.js deleted file mode 100644 index acb8aea9a..000000000 --- a/packages/auto-install/test/pnpm-bare.js +++ /dev/null @@ -1,34 +0,0 @@ -const { readFileSync } = require('fs'); -const { join } = require('path'); - -const test = require('ava'); -const del = require('del'); -const { nodeResolve } = require('@rollup/plugin-node-resolve'); -const { rollup } = require('rollup'); - -const autoInstall = require('..'); - -const cwd = join(__dirname, 'fixtures/pnpm-bare'); -const file = join(cwd, 'output/bundle.js'); -const input = join(cwd, '../input.js'); - -process.chdir(cwd); - -test('pnpm, bare', async (t) => { - t.timeout(50000); - await rollup({ - input, - output: { - file, - format: 'cjs' - }, - plugins: [autoInstall({ manager: 'pnpm' }), nodeResolve()] - }); - const json = JSON.parse(readFileSync('package.json', 'utf-8')); - // snapshots for this are a nightmare cross-platform - t.truthy('node-noop' in json.dependencies); -}); - -test.after(async () => { - await del(['node_modules', 'package.json', 'pnpm-lock.yaml']); -}); diff --git a/packages/auto-install/test/pnpm.js b/packages/auto-install/test/pnpm.js deleted file mode 100644 index 2fe1e5856..000000000 --- a/packages/auto-install/test/pnpm.js +++ /dev/null @@ -1,36 +0,0 @@ -const { readFileSync, writeFileSync } = require('fs'); -const { join } = require('path'); - -const test = require('ava'); -const del = require('del'); -const { nodeResolve } = require('@rollup/plugin-node-resolve'); -const { rollup } = require('rollup'); - -const autoInstall = require('..'); - -const cwd = join(__dirname, 'fixtures/pnpm'); -const file = join(cwd, 'output/bundle.js'); -const input = join(cwd, '../input.js'); - -process.chdir(cwd); - -test('pnpm', async (t) => { - t.timeout(50000); - await rollup({ - input, - output: { - file, - format: 'cjs' - }, - plugins: [autoInstall(), nodeResolve()] - }); - - const json = JSON.parse(readFileSync('package.json', 'utf-8')); - // snapshots for this are a nightmare cross-platform - t.truthy('node-noop' in json.dependencies); -}); - -test.after(async () => { - await del(['node_modules', 'package.json']); - writeFileSync('pnpm-lock.yaml', ''); -}); diff --git a/packages/auto-install/test/snapshots/npm-bare.js.md b/packages/auto-install/test/snapshots/npm-bare.js.md deleted file mode 100644 index 5b47ced68..000000000 --- a/packages/auto-install/test/snapshots/npm-bare.js.md +++ /dev/null @@ -1,16 +0,0 @@ -# Snapshot report for `test/npm-bare.js` - -The actual snapshot is saved in `npm-bare.js.snap`. - -Generated by [AVA](https://avajs.dev). - -## npm, bare - -> Snapshot 1 - - `{␊ - "dependencies": {␊ - "node-noop": "^1.0.0"␊ - }␊ - }␊ - ` diff --git a/packages/auto-install/test/snapshots/npm-bare.js.snap b/packages/auto-install/test/snapshots/npm-bare.js.snap deleted file mode 100644 index b4e4b4875..000000000 Binary files a/packages/auto-install/test/snapshots/npm-bare.js.snap and /dev/null differ diff --git a/packages/auto-install/test/snapshots/npm.js.md b/packages/auto-install/test/snapshots/npm.js.md deleted file mode 100644 index 77c82b1e2..000000000 --- a/packages/auto-install/test/snapshots/npm.js.md +++ /dev/null @@ -1,22 +0,0 @@ -# Snapshot report for `test/npm.js` - -The actual snapshot is saved in `npm.js.snap`. - -Generated by [AVA](https://avajs.dev). - -## invalid manager - -> Snapshot 1 - - '\'foo\' is not a valid package manager. Valid managers include: \'npm\', \'yarn\', \'pnpm\'.' - -## npm - -> Snapshot 1 - - `{␊ - "dependencies": {␊ - "node-noop": "^1.0.0"␊ - }␊ - }␊ - ` diff --git a/packages/auto-install/test/snapshots/npm.js.snap b/packages/auto-install/test/snapshots/npm.js.snap deleted file mode 100644 index d3c36cb01..000000000 Binary files a/packages/auto-install/test/snapshots/npm.js.snap and /dev/null differ diff --git a/packages/auto-install/test/yarn-bare.js b/packages/auto-install/test/yarn-bare.js deleted file mode 100644 index 6b991594e..000000000 --- a/packages/auto-install/test/yarn-bare.js +++ /dev/null @@ -1,38 +0,0 @@ -const { readFileSync } = require('fs'); -const { join } = require('path'); - -const test = require('ava'); -const del = require('del'); -const { nodeResolve } = require('@rollup/plugin-node-resolve'); -const { rollup } = require('rollup'); - -const autoInstall = require('..'); - -const cwd = join(__dirname, 'fixtures/yarn-bare'); -const file = join(cwd, 'output/bundle.js'); -const input = join(cwd, '../input.js'); - -process.chdir(cwd); - -test('yarn, bare', async (t) => { - t.timeout(50000); - await rollup({ - input, - output: { - file, - format: 'cjs' - }, - plugins: [ - // mock the call to yarn here. yarn has had consistent issues in this test env - autoInstall({ manager: 'yarn', commands: { yarn: 'echo yarn.bare > yarn.lock' } }), - nodeResolve() - ] - }); - const lockFile = readFileSync('yarn.lock', 'utf-8'); - // snapshots for this are a nightmare cross-platform - t.truthy(/yarn\.bare\s+node-noop/.test(lockFile)); -}); - -test.after(async () => { - await del(['node_modules', 'package.json', 'yarn.lock']); -}); diff --git a/packages/auto-install/test/yarn.js b/packages/auto-install/test/yarn.js deleted file mode 100644 index 70f86e23a..000000000 --- a/packages/auto-install/test/yarn.js +++ /dev/null @@ -1,36 +0,0 @@ -const { readFileSync, writeFileSync } = require('fs'); -const { join } = require('path'); - -const test = require('ava'); -const del = require('del'); -const { nodeResolve } = require('@rollup/plugin-node-resolve'); -const { rollup } = require('rollup'); - -const autoInstall = require('..'); - -const cwd = join(__dirname, 'fixtures/yarn'); -const file = join(cwd, 'output/bundle.js'); -const input = join(cwd, '../input.js'); - -process.chdir(cwd); - -test('yarn', async (t) => { - t.timeout(50000); - await rollup({ - input, - output: { - file, - format: 'cjs' - }, - // mock the call to yarn here. yarn has had consistent issues in this test env - plugins: [autoInstall({ commands: { yarn: 'echo yarn > yarn.lock' } }), nodeResolve()] - }); - const lockFile = readFileSync('yarn.lock', 'utf-8'); - // snapshots for this are a nightmare cross-platform - t.truthy(/yarn\s+node-noop/.test(lockFile)); -}); - -test.after(async () => { - await del(['node_modules', 'package.json']); - writeFileSync('yarn.lock', ''); -}); diff --git a/packages/auto-install/tsconfig.json b/packages/auto-install/tsconfig.json index 7cd38da8f..1ef31f009 120000 --- a/packages/auto-install/tsconfig.json +++ b/packages/auto-install/tsconfig.json @@ -1 +1 @@ -../../shared/tsconfig.json \ No newline at end of file +../../.config/tsconfig.plugin.json \ No newline at end of file diff --git a/packages/auto-install/types/index.d.ts b/packages/auto-install/types/index.d.ts deleted file mode 100644 index d9e564445..000000000 --- a/packages/auto-install/types/index.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import type { Plugin } from 'rollup'; - -export interface RollupAutoInstallOptions { - /** - * Specifies the location on disk of the target `package.json` file. - * If the file doesn't exist, it will be created by the plugin, - * as package managers need to populate the `dependencies` property. - * @default '{cwd}/package.json' - */ - pkgFile?: string; - - /** - * Specifies the package manager to use; `npm` or `yarn`. - * If not specified, the plugin will default to `yarn` if `yarn.lock` exists, or `npm` otherwise. - */ - manager?: 'npm' | 'yarn'; -} - -/** - * 🍣 A Rollup plugin which automatically installs dependencies that are imported by a bundle, even if not yet in `package.json`. - */ -export default function auto(options?: RollupAutoInstallOptions): Plugin; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e5908b66b..4c390ae1f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -106,22 +106,19 @@ importers: devDependencies: '@rollup/plugin-node-resolve': specifier: ^15.0.0 - version: 15.0.0(rollup@4.0.0-24) - '@rollup/plugin-typescript': - specifier: ^9.0.1 - version: 9.0.1(rollup@4.0.0-24)(tslib@2.4.0)(typescript@4.8.4) - del: - specifier: ^6.1.1 - version: 6.1.1 + version: 15.0.0(rollup@4.52.5) + del-cli: + specifier: ^5.0.0 + version: 5.0.0 node-noop: specifier: ^1.0.0 version: 1.0.0 rollup: - specifier: ^4.0.0-24 - version: 4.0.0-24 + specifier: ^4.0.0 + version: 4.52.5 typescript: - specifier: ^4.8.3 - version: 4.8.4 + specifier: 'catalog:' + version: 5.9.3 packages/babel: dependencies: