files: [
'eslint.config.js',
'rollup*.config.js',
+ 'rolldown*.config.js',
'scripts/**',
'./*.{js,ts}',
'packages/*/*.js',
"scripts": {
"dev": "node scripts/dev.js",
"build": "node scripts/build.js",
- "build-dts": "tsc -p tsconfig.build.json --noCheck && rollup -c rollup.dts.config.js",
+ "build-rollup": "node scripts/build-with-rollup.js",
+ "build-dts": "node scripts/build-types.js",
+ "build-dts-tsc": "tsc -p tsconfig.build.json --noCheck && rollup -c rollup.dts.config.js",
"clean": "rimraf --glob packages/*/dist temp .eslintcache",
"size": "run-s \"size-*\" && node scripts/usage-size.js",
"size-global": "node scripts/build.js vue runtime-dom -f global -p --size",
"node": ">=18.12.0"
},
"devDependencies": {
- "@babel/parser": "catalog:",
"@babel/types": "catalog:",
+ "@rolldown/plugin-node-polyfills": "^1.0.0",
"@rollup/plugin-alias": "^5.1.1",
"@rollup/plugin-commonjs": "^28.0.1",
"@rollup/plugin-json": "^6.1.0",
"@types/semver": "^7.5.8",
"@types/serve-handler": "^6.1.4",
"@vitest/coverage-v8": "^2.1.1",
+ "@vitest/eslint-plugin": "^1.0.1",
"@vue/consolidate": "1.0.0",
"conventional-changelog-cli": "^5.0.0",
"enquirer": "^2.4.1",
"esbuild-plugin-polyfill-node": "^0.3.0",
"eslint": "^9.14.0",
"eslint-plugin-import-x": "^4.4.0",
- "@vitest/eslint-plugin": "^1.0.1",
"estree-walker": "catalog:",
+ "fast-glob": "^3.3.2",
"jsdom": "^25.0.0",
"lint-staged": "^15.2.10",
"lodash": "^4.17.21",
"markdown-table": "^3.0.4",
"marked": "13.0.3",
"npm-run-all2": "^7.0.1",
+ "oxc-parser": "^0.35.0",
+ "oxc-transform": "^0.35.0",
"picocolors": "^1.1.1",
"prettier": "^3.3.3",
"pretty-bytes": "^6.1.1",
"pug": "^3.0.3",
"puppeteer": "~23.3.0",
"rimraf": "^6.0.1",
+ "rolldown": "0.14.0-snapshot-d5e797b-20241114003621",
"rollup": "^4.25.0",
"rollup-plugin-dts": "^6.1.1",
"rollup-plugin-esbuild": "^6.1.1",
const consumer = new SourceMapConsumer(script!.map!)
consumer.eachMapping(mapping => {
- expect(mapping.originalLine - mapping.generatedLine).toBe(padding)
+ expect(mapping.originalLine! - mapping.generatedLine).toBe(padding)
})
})
const consumer = new SourceMapConsumer(template.map!)
consumer.eachMapping(mapping => {
- expect(mapping.originalLine - mapping.generatedLine).toBe(padding)
- expect(mapping.originalColumn - mapping.generatedColumn).toBe(2)
+ expect(mapping.originalLine! - mapping.generatedLine).toBe(padding)
+ expect(mapping.originalColumn! - mapping.generatedColumn).toBe(2)
})
})
const consumer = new SourceMapConsumer(custom!.map!)
consumer.eachMapping(mapping => {
- expect(mapping.originalLine - mapping.generatedLine).toBe(padding)
+ expect(mapping.originalLine! - mapping.generatedLine).toBe(padding)
})
})
})
const origPosInOldMap = oldMapConsumer.originalPositionFor({
line: m.originalLine,
- column: m.originalColumn,
+ column: m.originalColumn!,
})
if (origPosInOldMap.source == null) {
line: origPosInOldMap.line, // map line
// use current column, since the oldMap produced by @vue/compiler-sfc
// does not
- column: m.originalColumn,
+ column: m.originalColumn!,
},
source: origPosInOldMap.source,
name: origPosInOldMap.name,
scriptAst: Program | null
scriptSetupAst: Program | null
- source: string = this.descriptor.source
- filename: string = this.descriptor.filename
- s: MagicString = new MagicString(this.source)
- startOffset: number | undefined =
- this.descriptor.scriptSetup?.loc.start.offset
- endOffset: number | undefined = this.descriptor.scriptSetup?.loc.end.offset
+ source: string
+ filename: string
+ s: MagicString
+ startOffset: number | undefined
+ endOffset: number | undefined
// import / type analysis
scope?: TypeScope
const scriptLang = script && script.lang
const scriptSetupLang = scriptSetup && scriptSetup.lang
+ this.source = descriptor.source
+ this.filename = descriptor.filename
+ this.s = new MagicString(descriptor.source)
+ this.startOffset = descriptor.scriptSetup?.loc.start.offset
+ this.endOffset = descriptor.scriptSetup?.loc.end.offset
+
this.isJS =
scriptLang === 'js' ||
scriptLang === 'jsx' ||
scriptSetupLang === 'tsx'
const customElement = options.customElement
- const filename = this.descriptor.filename
+ const filename = descriptor.filename
if (customElement) {
this.isCE =
typeof customElement === 'boolean'
/**
* @internal
*/
- _nonce: string | undefined = this._def.nonce
+ _nonce: string | undefined
/**
* @internal
private _createApp: CreateAppFunction<Element> = createApp,
) {
super()
+ this._nonce = _def.nonce
if (this.shadowRoot && _createApp !== createApp) {
this._root = this.shadowRoot
} else {
}
}
- private _setParent(parent = this._parent) {
+ private _setParent(parent: VueElement | undefined = this._parent): void {
if (parent) {
this._instance!.parent = parent._instance
this._instance!.provides = parent._instance!.provides
version: 2.0.2
magic-string:
specifier: ^0.30.11
- version: 0.30.11
+ version: 0.30.12
source-map-js:
specifier: ^1.2.0
- version: 1.2.0
+ version: 1.2.1
vite:
specifier: ^5.4.0
- version: 5.4.0
+ version: 5.4.8
importers:
.:
devDependencies:
- '@babel/parser':
- specifier: 'catalog:'
- version: 7.25.3
'@babel/types':
specifier: 'catalog:'
version: 7.25.2
+ '@rolldown/plugin-node-polyfills':
+ specifier: ^1.0.0
+ version: 1.0.0
'@rollup/plugin-alias':
specifier: ^5.1.1
version: 5.1.1(rollup@4.25.0)
estree-walker:
specifier: 'catalog:'
version: 2.0.2
+ fast-glob:
+ specifier: ^3.3.2
+ version: 3.3.2
jsdom:
specifier: ^25.0.0
version: 25.0.0
npm-run-all2:
specifier: ^7.0.1
version: 7.0.1
+ oxc-parser:
+ specifier: ^0.35.0
+ version: 0.35.0
+ oxc-transform:
+ specifier: ^0.35.0
+ version: 0.35.0
picocolors:
specifier: ^1.1.1
version: 1.1.1
rimraf:
specifier: ^6.0.1
version: 6.0.1
+ rolldown:
+ specifier: 0.14.0-snapshot-d5e797b-20241114003621
+ version: 0.14.0-snapshot-d5e797b-20241114003621
rollup:
specifier: ^4.25.0
version: 4.25.0
version: 8.12.2(eslint@9.14.0)(typescript@5.6.2)
vite:
specifier: 'catalog:'
- version: 5.4.0(@types/node@22.8.7)(sass@1.80.6)
+ version: 5.4.8(@types/node@22.8.7)(sass@1.80.6)
vitest:
specifier: ^2.1.1
version: 2.1.1(@types/node@22.8.7)(jsdom@25.0.0)(sass@1.80.6)
devDependencies:
'@vitejs/plugin-vue':
specifier: 'catalog:'
- version: 5.1.2(vite@5.4.0(@types/node@22.8.7)(sass@1.80.6))(vue@packages+vue)
+ version: 5.1.2(vite@5.4.8(@types/node@22.8.7)(sass@1.80.6))(vue@packages+vue)
vite:
specifier: 'catalog:'
- version: 5.4.0(@types/node@22.8.7)(sass@1.80.6)
+ version: 5.4.8(@types/node@22.8.7)(sass@1.80.6)
packages-private/template-explorer:
dependencies:
devDependencies:
'@vitejs/plugin-vue':
specifier: 'catalog:'
- version: 5.1.2(vite@5.4.0(@types/node@22.8.7)(sass@1.80.6))(vue@packages+vue)
+ version: 5.1.2(vite@5.4.8(@types/node@22.8.7)(sass@1.80.6))(vue@packages+vue)
vite:
specifier: 'catalog:'
- version: 5.4.0(@types/node@22.8.7)(sass@1.80.6)
+ version: 5.4.8(@types/node@22.8.7)(sass@1.80.6)
vue:
specifier: workspace:*
version: link:../../packages/vue
version: 2.0.2
source-map-js:
specifier: 'catalog:'
- version: 1.2.0
+ version: 1.2.1
devDependencies:
'@babel/types':
specifier: 'catalog:'
version: 2.0.2
magic-string:
specifier: 'catalog:'
- version: 0.30.11
+ version: 0.30.12
postcss:
specifier: ^8.4.48
version: 8.4.48
source-map-js:
specifier: 'catalog:'
- version: 1.2.0
+ version: 1.2.1
devDependencies:
'@babel/types':
specifier: 'catalog:'
version: 2.0.2
source-map-js:
specifier: 'catalog:'
- version: 1.2.0
+ version: 1.2.1
vue:
specifier: workspace:*
version: link:../vue
packages:
+ '@aashutoshrathi/word-wrap@1.2.6':
+ resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
+ engines: {node: '>=0.10.0'}
+
'@ampproject/remapping@2.3.0':
resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
engines: {node: '>=6.0.0'}
- '@babel/code-frame@7.24.7':
- resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
+ '@babel/code-frame@7.24.2':
+ resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==}
engines: {node: '>=6.9.0'}
'@babel/helper-string-parser@7.24.8':
resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==}
engines: {node: '>=6.9.0'}
- '@babel/highlight@7.24.7':
- resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
+ '@babel/highlight@7.24.2':
+ resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==}
engines: {node: '>=6.9.0'}
'@babel/parser@7.25.3':
conventional-commits-parser:
optional: true
+ '@emnapi/core@1.3.1':
+ resolution: {integrity: sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==}
+
+ '@emnapi/runtime@1.3.1':
+ resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==}
+
+ '@emnapi/wasi-threads@1.0.1':
+ resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==}
+
'@esbuild/aix-ppc64@0.21.5':
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
engines: {node: '>=12'}
'@jspm/core@2.0.1':
resolution: {integrity: sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==}
+ '@napi-rs/wasm-runtime@0.2.5':
+ resolution: {integrity: sha512-kwUxR7J9WLutBbulqg1dfOrMTwhMdXLdcGUhcbCcGwnPLt3gz19uHVdwH1syKVDbE022ZS2vZxOWflFLS0YTjw==}
+
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
+ '@oxc-parser/binding-darwin-arm64@0.35.0':
+ resolution: {integrity: sha512-2SSWMTMlrW8Ljcvgi0BOWr3Na6IX0Y9JYRRf4irV2OR9ZMGq1AcnK65ujMYE+w+zOfgqRKXVanz8vz6ii1bEmw==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@oxc-parser/binding-darwin-x64@0.35.0':
+ resolution: {integrity: sha512-q0p/DCz74/9pCZlzGgYw5nC11p2ilImq6XFCOsBOWDdAcB5FFEFO8dyLBxiWgKzXZW+B+FoAJQAGV3UPswx8Jw==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@oxc-parser/binding-linux-arm64-gnu@0.35.0':
+ resolution: {integrity: sha512-MzSTS1nsYhuXHXaZvrKDFXGpUA5UOKFTb30kFVpRLmzunE3Rhp4BeT6aQib64oJBevuI+7OYE14p/CmfgOiavw==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@oxc-parser/binding-linux-arm64-musl@0.35.0':
+ resolution: {integrity: sha512-5WoOYIwE7/HN0IjGMToylXKclvczKM19R1ecbVFsYtKbuj7S6aXkP37x02njA+1DLtTRYv2TySxZjRrov+JFZg==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@oxc-parser/binding-linux-x64-gnu@0.35.0':
+ resolution: {integrity: sha512-wLtbsco7oRAjQH6LZ10jChW0R4l/UrYtr2lOTv2uvguZ/Xtab8xbKV3J+i/ct3XyuPo05W9Z3gBeJVePV/4xHw==}
+ cpu: [x64]
+ os: [linux]
+
+ '@oxc-parser/binding-linux-x64-musl@0.35.0':
+ resolution: {integrity: sha512-DdqhCOm1uvHG3qCijQsdmGzVkGSQiVp5/576+01gvtIB1Xi72zJpo0d5Aoz/Ef262b+YkRJ23UncBMv2IWNLRQ==}
+ cpu: [x64]
+ os: [linux]
+
+ '@oxc-parser/binding-win32-arm64-msvc@0.35.0':
+ resolution: {integrity: sha512-a+DgOdXBKvsNRHi0ohJViuGXUCKVYM5VWC77QEbScuDz5kM0VoAobCxOgaqW90xk0ASqL5U9MS/C0c0e17LZ3A==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@oxc-parser/binding-win32-x64-msvc@0.35.0':
+ resolution: {integrity: sha512-Rm0CRpvsGLJI8++o06Fmz09Nza6vkzluOJj3Bye4DwqKcr4kLA+L/f+TyfiOZrzy9I9J9H8zM7C2UMdU0ws8/g==}
+ cpu: [x64]
+ os: [win32]
+
+ '@oxc-project/types@0.35.0':
+ resolution: {integrity: sha512-IM45j7X1wrbu5xDXtrqbQRkQSsTxKZOCaw6OujjBGItICRKvFE6VGq21czpgKUwDIH0BqTQlFabCbt+d1/7v2A==}
+
+ '@oxc-transform/binding-darwin-arm64@0.35.0':
+ resolution: {integrity: sha512-oh+L/TM7/u3A1qIlFz2hEW0LIVPdhgK+dGAgnyDCOaXqP0P45MgkklbTF+lSAXkv5PgpvNmrnocu4j1mjswskA==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@oxc-transform/binding-darwin-x64@0.35.0':
+ resolution: {integrity: sha512-/B8YOmxxHGKeNqCeCoe7FY3eLrru5R07kS5pObkOGZgz2jqWw2CnJ3XMq+GaNAAgvVJc4O7wU88yV8a/TX3ppQ==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@oxc-transform/binding-linux-arm64-gnu@0.35.0':
+ resolution: {integrity: sha512-Smbku1J3IofBVEJFvnP6IcGyavZsAskbGBs++ty/4+JQqv67fCeGFNRf8erAWpNQGhpgsL/EW7QIPuZ89SlIBw==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@oxc-transform/binding-linux-arm64-musl@0.35.0':
+ resolution: {integrity: sha512-H0CV1mf4TNIPm4PwkHWJUxekgOHvyyCTehHimUjBaB2XxImwo1pEa+bO79wkJYm/F1aSDRM4APivK9c3Hi4F0w==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@oxc-transform/binding-linux-x64-gnu@0.35.0':
+ resolution: {integrity: sha512-VSOiPOx4I/e3yTNED50Vn0VwHb3Pa0QQwqCZYRDKmqztsTQN6RSKnawWG+EPY+9mqLJs+8KfMphQMsjRE2K+hA==}
+ cpu: [x64]
+ os: [linux]
+
+ '@oxc-transform/binding-linux-x64-musl@0.35.0':
+ resolution: {integrity: sha512-ItoZZ1auUQsgSE+lvL559+cLBnZb4Q2zotTB0JpH8M8rxROpW+GVwU3TzBwQHmtGE9ri+KuywpXkPREifdOx9g==}
+ cpu: [x64]
+ os: [linux]
+
+ '@oxc-transform/binding-win32-arm64-msvc@0.35.0':
+ resolution: {integrity: sha512-XuvyU0mhgpF5NIAcoknQPQnl70s/kfkBASo6xCx2HQP74vGGP6Aj810U4N0D66jGazpVw+mbaEsDzGHm3KWwiw==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@oxc-transform/binding-win32-x64-msvc@0.35.0':
+ resolution: {integrity: sha512-+hTWKxqO519Iot9A6XdCEdvokg/2Yid4NevjhsEJnsa1MrHHxbOjzWKq22GRjv0CpMgKlMyJXWHP4YKzDZ/Sog==}
+ cpu: [x64]
+ os: [win32]
+
'@parcel/watcher-android-arm64@2.4.1':
resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==}
engines: {node: '>= 10.0.0'}
engines: {node: '>=18'}
hasBin: true
+ '@rolldown/binding-darwin-arm64@0.14.0-snapshot-d5e797b-20241114003621':
+ resolution: {integrity: sha512-K+kETZAdSaIHG+ivKes6IGiyFK4+uriEXhUHMPWvKqz4njcaXA9Lk5wEOiIFMLNsiyygkddBvuE2JXiiqtc7pw==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rolldown/binding-darwin-x64@0.14.0-snapshot-d5e797b-20241114003621':
+ resolution: {integrity: sha512-ZrW/GM6xu0VMHBnnboAoID2mtHgg/aO0C6dVuu41FXxNTb5TenK+CL7o6TRErIYh9UggOE8ElePlw9yDCquRqw==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rolldown/binding-freebsd-x64@0.14.0-snapshot-d5e797b-20241114003621':
+ resolution: {integrity: sha512-ay0xOrOCH2DA5iBpn2w02o7BMw0ftqHnfu6hq5eXMkzAioObA0eCLS+8vpbN9FpPpWRPYZoK9z519npn9GfVcw==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rolldown/binding-linux-arm-gnueabihf@0.14.0-snapshot-d5e797b-20241114003621':
+ resolution: {integrity: sha512-flQG9NDOlYTlV9Y+7Lim+NZyv554Xrea8bN84ep9AJy49NHkwhzan46Ct9/drwbK4uQvTePk1Cof7CdX4/tJ7w==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rolldown/binding-linux-arm64-gnu@0.14.0-snapshot-d5e797b-20241114003621':
+ resolution: {integrity: sha512-osxZlZdtOC+ck8PZiQ27ujf2jbi67rrQmWx60wwuTnFznl7Rj4pULTDmxaq7oO14yYAW7w00in8OKGXcvRQ5yw==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rolldown/binding-linux-arm64-musl@0.14.0-snapshot-d5e797b-20241114003621':
+ resolution: {integrity: sha512-B1d+iRhQiKgBkbcO7ByUYoNUeWqV+XMP3Vz8Y27Nj+flgvt5GkmOEYJ2pJ4Nv5h9bzd4SwHsjzJ7XdXdbRk3Xw==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@rolldown/binding-linux-x64-gnu@0.14.0-snapshot-d5e797b-20241114003621':
+ resolution: {integrity: sha512-dQNu7BKid2dhJpRUJ7M+Lr+O77wyZfVDifjF3BEb5mlL/YJR029VZSEoguzyf0ir0xNFwcoFmXqvNol6RuCC7g==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rolldown/binding-linux-x64-musl@0.14.0-snapshot-d5e797b-20241114003621':
+ resolution: {integrity: sha512-NKB/1i7f0j1YNnTd/DvOzlAfVufCVCovELxxBvdY1GqPBIbY8IrWsggHcw/A3ETdiHv/5qo6bg0OwyY0XJcUcA==}
+ cpu: [x64]
+ os: [linux]
+
+ '@rolldown/binding-wasm32-wasi@0.14.0-snapshot-d5e797b-20241114003621':
+ resolution: {integrity: sha512-3s1aV1BwnR1lGd4tq/f9of9q/9HjjYwukr6t++rK/hLG+SvhchLroHycjIdodew/cvvUNJjQoxp6o3XnoNzSVQ==}
+ engines: {node: '>=14.21.3'}
+ cpu: [wasm32]
+
+ '@rolldown/binding-win32-arm64-msvc@0.14.0-snapshot-d5e797b-20241114003621':
+ resolution: {integrity: sha512-Yb0WpkFVDog5jaa9wsp9S/S4OaNR/HwGC4gOUM24Aho7aJBogjwnnX9YXf6c9AS3CPqdeWhslRtgWfRKBzQZCQ==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rolldown/binding-win32-ia32-msvc@0.14.0-snapshot-d5e797b-20241114003621':
+ resolution: {integrity: sha512-9ECBsIsmjEyKofobNQfgwjc2apokoLfP8hYxu/dQKUT1Mb8KPCZp2pPqhi27HpLB+asEOnO3xMleABJdrYGmtg==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rolldown/binding-win32-x64-msvc@0.14.0-snapshot-d5e797b-20241114003621':
+ resolution: {integrity: sha512-sIHCWBHaqpuF2SCfkGTb4Ml4sYAHCc4tyX8DW1/7tgA8uRsQ01UqoBZSv32KCao38AIYQSpC9HGQumcnjnximw==}
+ cpu: [x64]
+ os: [win32]
+
+ '@rolldown/plugin-node-polyfills@1.0.0':
+ resolution: {integrity: sha512-JUmEhvz+B6+0AaeUGvZ7SnJec7wpwYqZ+FcAng1I3UVGYKA1uSmE1H4vKHUewU665Nb37znDd9N4o/iImmKeVg==}
+
'@rollup/plugin-alias@5.1.1':
resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==}
engines: {node: '>=14.0.0'}
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.20.0':
- resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==}
- cpu: [arm]
- os: [android]
-
'@rollup/rollup-android-arm-eabi@4.25.0':
resolution: {integrity: sha512-CC/ZqFZwlAIbU1wUPisHyV/XRc5RydFrNLtgl3dGYskdwPZdt4HERtKm50a/+DtTlKeCq9IXFEWR+P6blwjqBA==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.20.0':
- resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==}
- cpu: [arm64]
- os: [android]
-
'@rollup/rollup-android-arm64@4.25.0':
resolution: {integrity: sha512-/Y76tmLGUJqVBXXCfVS8Q8FJqYGhgH4wl4qTA24E9v/IJM0XvJCGQVSW1QZ4J+VURO9h8YCa28sTFacZXwK7Rg==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.20.0':
- resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==}
- cpu: [arm64]
- os: [darwin]
-
'@rollup/rollup-darwin-arm64@4.25.0':
resolution: {integrity: sha512-YVT6L3UrKTlC0FpCZd0MGA7NVdp7YNaEqkENbWQ7AOVOqd/7VzyHpgIpc1mIaxRAo1ZsJRH45fq8j4N63I/vvg==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.20.0':
- resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==}
- cpu: [x64]
- os: [darwin]
-
'@rollup/rollup-darwin-x64@4.25.0':
resolution: {integrity: sha512-ZRL+gexs3+ZmmWmGKEU43Bdn67kWnMeWXLFhcVv5Un8FQcx38yulHBA7XR2+KQdYIOtD0yZDWBCudmfj6lQJoA==}
cpu: [x64]
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.20.0':
- resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==}
- cpu: [arm]
- os: [linux]
-
'@rollup/rollup-linux-arm-gnueabihf@4.25.0':
resolution: {integrity: sha512-uD/dbLSs1BEPzg564TpRAQ/YvTnCds2XxyOndAO8nJhaQcqQGFgv/DAVko/ZHap3boCvxnzYMa3mTkV/B/3SWA==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.20.0':
- resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==}
- cpu: [arm]
- os: [linux]
-
'@rollup/rollup-linux-arm-musleabihf@4.25.0':
resolution: {integrity: sha512-ZVt/XkrDlQWegDWrwyC3l0OfAF7yeJUF4fq5RMS07YM72BlSfn2fQQ6lPyBNjt+YbczMguPiJoCfaQC2dnflpQ==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.20.0':
- resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==}
- cpu: [arm64]
- os: [linux]
-
'@rollup/rollup-linux-arm64-gnu@4.25.0':
resolution: {integrity: sha512-qboZ+T0gHAW2kkSDPHxu7quaFaaBlynODXpBVnPxUgvWYaE84xgCKAPEYE+fSMd3Zv5PyFZR+L0tCdYCMAtG0A==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.20.0':
- resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==}
- cpu: [arm64]
- os: [linux]
-
'@rollup/rollup-linux-arm64-musl@4.25.0':
resolution: {integrity: sha512-ndWTSEmAaKr88dBuogGH2NZaxe7u2rDoArsejNslugHZ+r44NfWiwjzizVS1nUOHo+n1Z6qV3X60rqE/HlISgw==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.20.0':
- resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==}
- cpu: [ppc64]
- os: [linux]
-
'@rollup/rollup-linux-powerpc64le-gnu@4.25.0':
resolution: {integrity: sha512-BVSQvVa2v5hKwJSy6X7W1fjDex6yZnNKy3Kx1JGimccHft6HV0THTwNtC2zawtNXKUu+S5CjXslilYdKBAadzA==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.20.0':
- resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==}
- cpu: [riscv64]
- os: [linux]
-
'@rollup/rollup-linux-riscv64-gnu@4.25.0':
resolution: {integrity: sha512-G4hTREQrIdeV0PE2JruzI+vXdRnaK1pg64hemHq2v5fhv8C7WjVaeXc9P5i4Q5UC06d/L+zA0mszYIKl+wY8oA==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.20.0':
- resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==}
- cpu: [s390x]
- os: [linux]
-
'@rollup/rollup-linux-s390x-gnu@4.25.0':
resolution: {integrity: sha512-9T/w0kQ+upxdkFL9zPVB6zy9vWW1deA3g8IauJxojN4bnz5FwSsUAD034KpXIVX5j5p/rn6XqumBMxfRkcHapQ==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.20.0':
- resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==}
- cpu: [x64]
- os: [linux]
-
'@rollup/rollup-linux-x64-gnu@4.25.0':
resolution: {integrity: sha512-ThcnU0EcMDn+J4B9LD++OgBYxZusuA7iemIIiz5yzEcFg04VZFzdFjuwPdlURmYPZw+fgVrFzj4CA64jSTG4Ig==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.20.0':
- resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==}
- cpu: [x64]
- os: [linux]
-
'@rollup/rollup-linux-x64-musl@4.25.0':
resolution: {integrity: sha512-zx71aY2oQxGxAT1JShfhNG79PnjYhMC6voAjzpu/xmMjDnKNf6Nl/xv7YaB/9SIa9jDYf8RBPWEnjcdlhlv1rQ==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.20.0':
- resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==}
- cpu: [arm64]
- os: [win32]
-
'@rollup/rollup-win32-arm64-msvc@4.25.0':
resolution: {integrity: sha512-JT8tcjNocMs4CylWY/CxVLnv8e1lE7ff1fi6kbGocWwxDq9pj30IJ28Peb+Y8yiPNSF28oad42ApJB8oUkwGww==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.20.0':
- resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==}
- cpu: [ia32]
- os: [win32]
-
'@rollup/rollup-win32-ia32-msvc@4.25.0':
resolution: {integrity: sha512-dRLjLsO3dNOfSN6tjyVlG+Msm4IiZnGkuZ7G5NmpzwF9oOc582FZG05+UdfTbz5Jd4buK/wMb6UeHFhG18+OEg==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.20.0':
- resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==}
- cpu: [x64]
- os: [win32]
-
'@rollup/rollup-win32-x64-msvc@4.25.0':
resolution: {integrity: sha512-/RqrIFtLB926frMhZD0a5oDa4eFIbyNEwLLloMTEjmqfwZWXywwVVOVmwTsuyhC9HKkVEZcOOi+KV4U9wmOdlg==}
cpu: [x64]
'@tootallnate/quickjs-emscripten@0.23.0':
resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==}
- '@types/estree@1.0.5':
- resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+ '@tybys/wasm-util@0.9.0':
+ resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==}
'@types/estree@1.0.6':
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
asap@2.0.6:
resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
- assert-never@1.3.0:
- resolution: {integrity: sha512-9Z3vxQ+berkL/JJo0dK+EY3Lp0s3NtSnP3VCLsh5HDcZPrh0M+KQRK5sWhUeyPPH+/RCxZqOxLMR+YC6vlviEQ==}
+ assert-never@1.2.1:
+ resolution: {integrity: sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==}
assertion-error@2.0.1:
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
- bare-events@2.4.2:
- resolution: {integrity: sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==}
-
- bare-fs@2.3.1:
- resolution: {integrity: sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==}
+ bare-events@2.2.2:
+ resolution: {integrity: sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==}
- bare-os@2.4.0:
- resolution: {integrity: sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==}
+ bare-fs@2.2.3:
+ resolution: {integrity: sha512-amG72llr9pstfXOBOHve1WjiuKKAMnebcmMbPWDZ7BCevAoJLpugjuAPRsDINEyjT0a6tbaVx3DctkXIRbLuJw==}
- bare-path@2.1.3:
- resolution: {integrity: sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==}
+ bare-os@2.2.1:
+ resolution: {integrity: sha512-OwPyHgBBMkhC29Hl3O4/YfxW9n7mdTr2+SsO29XBWKKJsbgj3mnorDB80r5TiCQgQstgE5ga1qNYrpes6NvX2w==}
- bare-stream@2.1.3:
- resolution: {integrity: sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==}
+ bare-path@2.1.1:
+ resolution: {integrity: sha512-OHM+iwRDRMDBsSW7kl3dO62JyHdBKO3B25FB9vNQBPcGHMo4+eA8Yj41Lfbk3pS/seDY+siNge0LdRTulAau/A==}
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
- es-module-lexer@1.5.4:
- resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==}
+ es-module-lexer@1.5.0:
+ resolution: {integrity: sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==}
esbuild-plugin-polyfill-node@0.3.0:
resolution: {integrity: sha512-SHG6CKUfWfYyYXGpW143NEZtcVVn8S/WHcEOxk62LuDXnY4Zpmc+WmxJKN6GMTgTClXJXhEM5KQlxKY6YjbucQ==}
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
- hosted-git-info@7.0.2:
- resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==}
+ hosted-git-info@7.0.1:
+ resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==}
engines: {node: ^16.14.0 || >=18.0.0}
html-encoding-sniffer@4.0.0:
resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
engines: {node: '>= 14'}
+ https-proxy-agent@7.0.4:
+ resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==}
+ engines: {node: '>= 14'}
+
https-proxy-agent@7.0.5:
resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==}
engines: {node: '>= 14'}
resolution: {integrity: sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==}
engines: {node: '>=18.0.0'}
- loader-utils@3.3.1:
- resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==}
+ loader-utils@3.2.1:
+ resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==}
engines: {node: '>= 12.13.0'}
locate-path@6.0.0:
resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
engines: {node: '>=12'}
- magic-string@0.30.11:
- resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==}
-
magic-string@0.30.12:
resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==}
node-addon-api@7.1.1:
resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
- normalize-package-data@6.0.2:
- resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==}
+ normalize-package-data@6.0.0:
+ resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==}
engines: {node: ^16.14.0 || >=18.0.0}
npm-normalize-package-bin@4.0.0:
resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
engines: {node: '>=18'}
- optionator@0.9.4:
- resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
+ optionator@0.9.3:
+ resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
engines: {node: '>= 0.8.0'}
+ oxc-parser@0.35.0:
+ resolution: {integrity: sha512-80Xpm5vOvEE5iP9aSN95WMLGbRpdl5oTV/rbtM+epGQpro5737R5CWcoHiStwzU/1zZKgZlSNfaeuTj1iV3kYA==}
+
+ oxc-transform@0.35.0:
+ resolution: {integrity: sha512-biVB7H7ZxuAQYbMJPUZw1umT7nzDU44tEBYyqMgLle0mnAbi9AetadIqTpjAp8KmcOYpG6VmvGeFPxWihFCWFQ==}
+
p-limit@3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'}
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
engines: {node: '>=10'}
- pac-proxy-agent@7.0.2:
- resolution: {integrity: sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==}
+ pac-proxy-agent@7.0.1:
+ resolution: {integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==}
engines: {node: '>= 14'}
pac-resolver@7.0.1:
postcss-value-parser@4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
- postcss@8.4.41:
- resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==}
- engines: {node: ^10 || ^12 || >=14}
-
postcss@8.4.48:
resolution: {integrity: sha512-GCRK8F6+Dl7xYniR5a4FYbpBzU8XnZVeowqsQFYdcXuSbChgiks7qybSkbvnaeqv0G0B+dd9/jJgH8kkLDQeEA==}
engines: {node: ^10 || ^12 || >=14}
pug-code-gen@3.0.3:
resolution: {integrity: sha512-cYQg0JW0w32Ux+XTeZnBEeuWrAY7/HNE6TWnhiHGnnRYlCgyAUPoyh9KzCMa9WhcJlJ1AtQqpEYHc+vbCzA+Aw==}
+ pug-error@2.0.0:
+ resolution: {integrity: sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==}
+
pug-error@2.1.0:
resolution: {integrity: sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==}
engines: {node: 20 || >=22}
hasBin: true
+ rolldown@0.14.0-snapshot-d5e797b-20241114003621:
+ resolution: {integrity: sha512-xJTXkA5ROenUW64VVgaqOglIDmrhJFkY1aFk100ROHAe59Gp2A6kaG8tpOoHDfnC4gmpXZnLr1dPDhdg960wYQ==}
+ hasBin: true
+
rollup-plugin-dts@6.1.1:
resolution: {integrity: sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==}
engines: {node: '>=16'}
peerDependencies:
rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0
- rollup@4.20.0:
- resolution: {integrity: sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
- hasBin: true
-
rollup@4.25.0:
resolution: {integrity: sha512-uVbClXmR6wvx5R1M3Od4utyLUxrmOcEm3pAtMphn73Apq19PDtHpgZoEvqH2YnnaNUuvKmg2DgRd2Sqv+odyqg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
- socks-proxy-agent@8.0.4:
- resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==}
+ socks-proxy-agent@8.0.3:
+ resolution: {integrity: sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==}
engines: {node: '>= 14'}
socks@2.8.3:
resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==}
engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
- source-map-js@1.2.0:
- resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
- engines: {node: '>=0.10.0'}
-
source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
spdx-expression-parse@3.0.1:
resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
- spdx-license-ids@3.0.18:
- resolution: {integrity: sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==}
+ spdx-license-ids@3.0.17:
+ resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==}
sprintf-js@1.1.3:
resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==}
std-env@3.7.0:
resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==}
- streamx@2.18.0:
- resolution: {integrity: sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==}
+ streamx@2.16.1:
+ resolution: {integrity: sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==}
string-argv@0.3.2:
resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
engines: {node: '>=12'}
- string-width@7.2.0:
- resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
+ string-width@7.1.0:
+ resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==}
engines: {node: '>=18'}
string_decoder@1.1.1:
resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==}
engines: {node: '>=18'}
- text-decoder@1.1.1:
- resolution: {integrity: sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==}
-
text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
- vite@5.4.0:
- resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
- peerDependencies:
- '@types/node': ^18.0.0 || >=20.0.0
- less: '*'
- lightningcss: ^1.21.0
- sass: '*'
- sass-embedded: '*'
- stylus: '*'
- sugarss: '*'
- terser: ^5.4.0
- peerDependenciesMeta:
- '@types/node':
- optional: true
- less:
- optional: true
- lightningcss:
- optional: true
- sass:
- optional: true
- sass-embedded:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
-
vite@5.4.8:
resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==}
engines: {node: ^18.0.0 || >=20.0.0}
resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==}
engines: {node: '>= 10.0.0'}
- word-wrap@1.2.5:
- resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
- engines: {node: '>=0.10.0'}
-
wordwrap@1.0.0:
resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
snapshots:
+ '@aashutoshrathi/word-wrap@1.2.6': {}
+
'@ampproject/remapping@2.3.0':
dependencies:
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
- '@babel/code-frame@7.24.7':
+ '@babel/code-frame@7.24.2':
dependencies:
- '@babel/highlight': 7.24.7
+ '@babel/highlight': 7.24.2
picocolors: 1.1.1
'@babel/helper-string-parser@7.24.8': {}
'@babel/helper-validator-identifier@7.24.7': {}
- '@babel/highlight@7.24.7':
+ '@babel/highlight@7.24.2':
dependencies:
'@babel/helper-validator-identifier': 7.24.7
chalk: 2.4.2
conventional-commits-filter: 5.0.0
conventional-commits-parser: 6.0.0
+ '@emnapi/core@1.3.1':
+ dependencies:
+ '@emnapi/wasi-threads': 1.0.1
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/runtime@1.3.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/wasi-threads@1.0.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
'@esbuild/aix-ppc64@0.21.5':
optional: true
'@jspm/core@2.0.1': {}
+ '@napi-rs/wasm-runtime@0.2.5':
+ dependencies:
+ '@emnapi/core': 1.3.1
+ '@emnapi/runtime': 1.3.1
+ '@tybys/wasm-util': 0.9.0
+ optional: true
+
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
'@nodelib/fs.scandir': 2.1.5
fastq: 1.17.1
+ '@oxc-parser/binding-darwin-arm64@0.35.0':
+ optional: true
+
+ '@oxc-parser/binding-darwin-x64@0.35.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-arm64-gnu@0.35.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-arm64-musl@0.35.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-x64-gnu@0.35.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-x64-musl@0.35.0':
+ optional: true
+
+ '@oxc-parser/binding-win32-arm64-msvc@0.35.0':
+ optional: true
+
+ '@oxc-parser/binding-win32-x64-msvc@0.35.0':
+ optional: true
+
+ '@oxc-project/types@0.35.0': {}
+
+ '@oxc-transform/binding-darwin-arm64@0.35.0':
+ optional: true
+
+ '@oxc-transform/binding-darwin-x64@0.35.0':
+ optional: true
+
+ '@oxc-transform/binding-linux-arm64-gnu@0.35.0':
+ optional: true
+
+ '@oxc-transform/binding-linux-arm64-musl@0.35.0':
+ optional: true
+
+ '@oxc-transform/binding-linux-x64-gnu@0.35.0':
+ optional: true
+
+ '@oxc-transform/binding-linux-x64-musl@0.35.0':
+ optional: true
+
+ '@oxc-transform/binding-win32-arm64-msvc@0.35.0':
+ optional: true
+
+ '@oxc-transform/binding-win32-x64-msvc@0.35.0':
+ optional: true
+
'@parcel/watcher-android-arm64@2.4.1':
optional: true
transitivePeerDependencies:
- supports-color
+ '@rolldown/binding-darwin-arm64@0.14.0-snapshot-d5e797b-20241114003621':
+ optional: true
+
+ '@rolldown/binding-darwin-x64@0.14.0-snapshot-d5e797b-20241114003621':
+ optional: true
+
+ '@rolldown/binding-freebsd-x64@0.14.0-snapshot-d5e797b-20241114003621':
+ optional: true
+
+ '@rolldown/binding-linux-arm-gnueabihf@0.14.0-snapshot-d5e797b-20241114003621':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-gnu@0.14.0-snapshot-d5e797b-20241114003621':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-musl@0.14.0-snapshot-d5e797b-20241114003621':
+ optional: true
+
+ '@rolldown/binding-linux-x64-gnu@0.14.0-snapshot-d5e797b-20241114003621':
+ optional: true
+
+ '@rolldown/binding-linux-x64-musl@0.14.0-snapshot-d5e797b-20241114003621':
+ optional: true
+
+ '@rolldown/binding-wasm32-wasi@0.14.0-snapshot-d5e797b-20241114003621':
+ dependencies:
+ '@napi-rs/wasm-runtime': 0.2.5
+ optional: true
+
+ '@rolldown/binding-win32-arm64-msvc@0.14.0-snapshot-d5e797b-20241114003621':
+ optional: true
+
+ '@rolldown/binding-win32-ia32-msvc@0.14.0-snapshot-d5e797b-20241114003621':
+ optional: true
+
+ '@rolldown/binding-win32-x64-msvc@0.14.0-snapshot-d5e797b-20241114003621':
+ optional: true
+
+ '@rolldown/plugin-node-polyfills@1.0.0': {}
+
'@rollup/plugin-alias@5.1.1(rollup@4.25.0)':
optionalDependencies:
rollup: 4.25.0
optionalDependencies:
rollup: 4.25.0
- '@rollup/rollup-android-arm-eabi@4.20.0':
- optional: true
-
'@rollup/rollup-android-arm-eabi@4.25.0':
optional: true
- '@rollup/rollup-android-arm64@4.20.0':
- optional: true
-
'@rollup/rollup-android-arm64@4.25.0':
optional: true
- '@rollup/rollup-darwin-arm64@4.20.0':
- optional: true
-
'@rollup/rollup-darwin-arm64@4.25.0':
optional: true
- '@rollup/rollup-darwin-x64@4.20.0':
- optional: true
-
'@rollup/rollup-darwin-x64@4.25.0':
optional: true
'@rollup/rollup-freebsd-x64@4.25.0':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.20.0':
- optional: true
-
'@rollup/rollup-linux-arm-gnueabihf@4.25.0':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.20.0':
- optional: true
-
'@rollup/rollup-linux-arm-musleabihf@4.25.0':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.20.0':
- optional: true
-
'@rollup/rollup-linux-arm64-gnu@4.25.0':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.20.0':
- optional: true
-
'@rollup/rollup-linux-arm64-musl@4.25.0':
optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.20.0':
- optional: true
-
'@rollup/rollup-linux-powerpc64le-gnu@4.25.0':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.20.0':
- optional: true
-
'@rollup/rollup-linux-riscv64-gnu@4.25.0':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.20.0':
- optional: true
-
'@rollup/rollup-linux-s390x-gnu@4.25.0':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.20.0':
- optional: true
-
'@rollup/rollup-linux-x64-gnu@4.25.0':
optional: true
- '@rollup/rollup-linux-x64-musl@4.20.0':
- optional: true
-
'@rollup/rollup-linux-x64-musl@4.25.0':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.20.0':
- optional: true
-
'@rollup/rollup-win32-arm64-msvc@4.25.0':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.20.0':
- optional: true
-
'@rollup/rollup-win32-ia32-msvc@4.25.0':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.20.0':
- optional: true
-
'@rollup/rollup-win32-x64-msvc@4.25.0':
optional: true
'@tootallnate/quickjs-emscripten@0.23.0': {}
- '@types/estree@1.0.5': {}
+ '@tybys/wasm-util@0.9.0':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
'@types/estree@1.0.6': {}
'@typescript-eslint/types': 8.12.2
eslint-visitor-keys: 3.4.3
- '@vitejs/plugin-vue@5.1.2(vite@5.4.0(@types/node@22.8.7)(sass@1.80.6))(vue@packages+vue)':
+ '@vitejs/plugin-vue@5.1.2(vite@5.4.8(@types/node@22.8.7)(sass@1.80.6))(vue@packages+vue)':
dependencies:
- vite: 5.4.0(@types/node@22.8.7)(sass@1.80.6)
+ vite: 5.4.8(@types/node@22.8.7)(sass@1.80.6)
vue: link:packages/vue
'@vitest/coverage-v8@2.1.1(vitest@2.1.1(@types/node@22.8.7)(jsdom@25.0.0)(sass@1.80.6))':
asap@2.0.6: {}
- assert-never@1.3.0: {}
+ assert-never@1.2.1: {}
assertion-error@2.0.1: {}
balanced-match@1.0.2: {}
- bare-events@2.4.2:
+ bare-events@2.2.2:
optional: true
- bare-fs@2.3.1:
+ bare-fs@2.2.3:
dependencies:
- bare-events: 2.4.2
- bare-path: 2.1.3
- bare-stream: 2.1.3
+ bare-events: 2.2.2
+ bare-path: 2.1.1
+ streamx: 2.16.1
optional: true
- bare-os@2.4.0:
+ bare-os@2.2.1:
optional: true
- bare-path@2.1.3:
+ bare-path@2.1.1:
dependencies:
- bare-os: 2.4.0
- optional: true
-
- bare-stream@2.1.3:
- dependencies:
- streamx: 2.18.0
+ bare-os: 2.2.1
optional: true
base64-js@1.5.1: {}
cli-truncate@4.0.0:
dependencies:
slice-ansi: 5.0.0
- string-width: 7.2.0
+ string-width: 7.1.0
clipboardy@3.0.0:
dependencies:
conventional-commits-parser: 6.0.0
git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0)
git-semver-tags: 8.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0)
- hosted-git-info: 7.0.2
- normalize-package-data: 6.0.2
+ hosted-git-info: 7.0.1
+ normalize-package-data: 6.0.0
read-package-up: 11.0.0
read-pkg: 9.0.1
transitivePeerDependencies:
es-errors@1.3.0: {}
- es-module-lexer@1.5.4: {}
+ es-module-lexer@1.5.0: {}
esbuild-plugin-polyfill-node@0.3.0(esbuild@0.24.0):
dependencies:
lodash.merge: 4.6.2
minimatch: 3.1.2
natural-compare: 1.4.0
- optionator: 0.9.4
+ optionator: 0.9.3
text-table: 0.2.0
transitivePeerDependencies:
- supports-color
generic-names@4.0.0:
dependencies:
- loader-utils: 3.3.1
+ loader-utils: 3.2.1
get-caller-file@2.0.5: {}
dependencies:
function-bind: 1.1.2
- hosted-git-info@7.0.2:
+ hosted-git-info@7.0.1:
dependencies:
lru-cache: 10.1.0
transitivePeerDependencies:
- supports-color
+ https-proxy-agent@7.0.4:
+ dependencies:
+ agent-base: 7.1.1
+ debug: 4.3.6
+ transitivePeerDependencies:
+ - supports-color
+
https-proxy-agent@7.0.5:
dependencies:
agent-base: 7.1.1
rfdc: 1.4.1
wrap-ansi: 9.0.0
- loader-utils@3.3.1: {}
+ loader-utils@3.2.1: {}
locate-path@6.0.0:
dependencies:
lru-cache@7.18.3: {}
- magic-string@0.30.11:
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.0
-
magic-string@0.30.12:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
node-addon-api@7.1.1:
optional: true
- normalize-package-data@6.0.2:
+ normalize-package-data@6.0.0:
dependencies:
- hosted-git-info: 7.0.2
+ hosted-git-info: 7.0.1
+ is-core-module: 2.15.0
semver: 7.6.3
validate-npm-package-license: 3.0.4
dependencies:
mimic-function: 5.0.1
- optionator@0.9.4:
+ optionator@0.9.3:
dependencies:
+ '@aashutoshrathi/word-wrap': 1.2.6
deep-is: 0.1.4
fast-levenshtein: 2.0.6
levn: 0.4.1
prelude-ls: 1.2.1
type-check: 0.4.0
- word-wrap: 1.2.5
+
+ oxc-parser@0.35.0:
+ dependencies:
+ '@oxc-project/types': 0.35.0
+ optionalDependencies:
+ '@oxc-parser/binding-darwin-arm64': 0.35.0
+ '@oxc-parser/binding-darwin-x64': 0.35.0
+ '@oxc-parser/binding-linux-arm64-gnu': 0.35.0
+ '@oxc-parser/binding-linux-arm64-musl': 0.35.0
+ '@oxc-parser/binding-linux-x64-gnu': 0.35.0
+ '@oxc-parser/binding-linux-x64-musl': 0.35.0
+ '@oxc-parser/binding-win32-arm64-msvc': 0.35.0
+ '@oxc-parser/binding-win32-x64-msvc': 0.35.0
+
+ oxc-transform@0.35.0:
+ optionalDependencies:
+ '@oxc-transform/binding-darwin-arm64': 0.35.0
+ '@oxc-transform/binding-darwin-x64': 0.35.0
+ '@oxc-transform/binding-linux-arm64-gnu': 0.35.0
+ '@oxc-transform/binding-linux-arm64-musl': 0.35.0
+ '@oxc-transform/binding-linux-x64-gnu': 0.35.0
+ '@oxc-transform/binding-linux-x64-musl': 0.35.0
+ '@oxc-transform/binding-win32-arm64-msvc': 0.35.0
+ '@oxc-transform/binding-win32-x64-msvc': 0.35.0
p-limit@3.1.0:
dependencies:
dependencies:
p-limit: 3.1.0
- pac-proxy-agent@7.0.2:
+ pac-proxy-agent@7.0.1:
dependencies:
'@tootallnate/quickjs-emscripten': 0.23.0
agent-base: 7.1.1
debug: 4.3.6
get-uri: 6.0.3
http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.5
+ https-proxy-agent: 7.0.4
pac-resolver: 7.0.1
- socks-proxy-agent: 8.0.4
+ socks-proxy-agent: 8.0.3
transitivePeerDependencies:
- supports-color
parse-json@5.2.0:
dependencies:
- '@babel/code-frame': 7.24.7
+ '@babel/code-frame': 7.24.2
error-ex: 1.3.2
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
parse-json@8.1.0:
dependencies:
- '@babel/code-frame': 7.24.7
+ '@babel/code-frame': 7.24.2
index-to-position: 0.1.2
type-fest: 4.24.0
postcss-value-parser@4.2.0: {}
- postcss@8.4.41:
- dependencies:
- nanoid: 3.3.7
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
postcss@8.4.48:
dependencies:
nanoid: 3.3.7
agent-base: 7.1.1
debug: 4.3.6
http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.5
+ https-proxy-agent: 7.0.4
lru-cache: 7.18.3
- pac-proxy-agent: 7.0.2
+ pac-proxy-agent: 7.0.1
proxy-from-env: 1.1.0
- socks-proxy-agent: 8.0.4
+ socks-proxy-agent: 8.0.3
transitivePeerDependencies:
- supports-color
void-elements: 3.1.0
with: 7.0.2
+ pug-error@2.0.0: {}
+
pug-error@2.1.0: {}
pug-filters@4.0.0:
dependencies:
constantinople: 4.0.1
jstransformer: 1.0.0
- pug-error: 2.1.0
+ pug-error: 2.0.0
pug-walk: 2.0.0
resolve: 1.22.8
dependencies:
character-parser: 2.2.0
is-expression: 4.0.0
- pug-error: 2.1.0
+ pug-error: 2.0.0
pug-linker@4.0.0:
dependencies:
- pug-error: 2.1.0
+ pug-error: 2.0.0
pug-walk: 2.0.0
pug-load@3.0.0:
pug-parser@6.0.0:
dependencies:
- pug-error: 2.1.0
+ pug-error: 2.0.0
token-stream: 1.0.0
pug-runtime@3.0.1: {}
pug-strip-comments@2.0.0:
dependencies:
- pug-error: 2.1.0
+ pug-error: 2.0.0
pug-walk@2.0.0: {}
read-pkg@9.0.1:
dependencies:
'@types/normalize-package-data': 2.4.4
- normalize-package-data: 6.0.2
+ normalize-package-data: 6.0.0
parse-json: 8.1.0
type-fest: 4.24.0
unicorn-magic: 0.1.0
glob: 11.0.0
package-json-from-dist: 1.0.0
+ rolldown@0.14.0-snapshot-d5e797b-20241114003621:
+ dependencies:
+ zod: 3.23.8
+ optionalDependencies:
+ '@rolldown/binding-darwin-arm64': 0.14.0-snapshot-d5e797b-20241114003621
+ '@rolldown/binding-darwin-x64': 0.14.0-snapshot-d5e797b-20241114003621
+ '@rolldown/binding-freebsd-x64': 0.14.0-snapshot-d5e797b-20241114003621
+ '@rolldown/binding-linux-arm-gnueabihf': 0.14.0-snapshot-d5e797b-20241114003621
+ '@rolldown/binding-linux-arm64-gnu': 0.14.0-snapshot-d5e797b-20241114003621
+ '@rolldown/binding-linux-arm64-musl': 0.14.0-snapshot-d5e797b-20241114003621
+ '@rolldown/binding-linux-x64-gnu': 0.14.0-snapshot-d5e797b-20241114003621
+ '@rolldown/binding-linux-x64-musl': 0.14.0-snapshot-d5e797b-20241114003621
+ '@rolldown/binding-wasm32-wasi': 0.14.0-snapshot-d5e797b-20241114003621
+ '@rolldown/binding-win32-arm64-msvc': 0.14.0-snapshot-d5e797b-20241114003621
+ '@rolldown/binding-win32-ia32-msvc': 0.14.0-snapshot-d5e797b-20241114003621
+ '@rolldown/binding-win32-x64-msvc': 0.14.0-snapshot-d5e797b-20241114003621
+
rollup-plugin-dts@6.1.1(rollup@4.25.0)(typescript@5.6.2):
dependencies:
magic-string: 0.30.12
rollup: 4.25.0
typescript: 5.6.2
optionalDependencies:
- '@babel/code-frame': 7.24.7
+ '@babel/code-frame': 7.24.2
rollup-plugin-esbuild@6.1.1(esbuild@0.24.0)(rollup@4.25.0):
dependencies:
'@rollup/pluginutils': 5.1.0(rollup@4.25.0)
debug: 4.3.6
- es-module-lexer: 1.5.4
+ es-module-lexer: 1.5.0
esbuild: 0.24.0
get-tsconfig: 4.7.6
rollup: 4.25.0
'@rollup/plugin-inject': 5.0.5(rollup@4.25.0)
rollup: 4.25.0
- rollup@4.20.0:
- dependencies:
- '@types/estree': 1.0.5
- optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.20.0
- '@rollup/rollup-android-arm64': 4.20.0
- '@rollup/rollup-darwin-arm64': 4.20.0
- '@rollup/rollup-darwin-x64': 4.20.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.20.0
- '@rollup/rollup-linux-arm-musleabihf': 4.20.0
- '@rollup/rollup-linux-arm64-gnu': 4.20.0
- '@rollup/rollup-linux-arm64-musl': 4.20.0
- '@rollup/rollup-linux-powerpc64le-gnu': 4.20.0
- '@rollup/rollup-linux-riscv64-gnu': 4.20.0
- '@rollup/rollup-linux-s390x-gnu': 4.20.0
- '@rollup/rollup-linux-x64-gnu': 4.20.0
- '@rollup/rollup-linux-x64-musl': 4.20.0
- '@rollup/rollup-win32-arm64-msvc': 4.20.0
- '@rollup/rollup-win32-ia32-msvc': 4.20.0
- '@rollup/rollup-win32-x64-msvc': 4.20.0
- fsevents: 2.3.3
-
rollup@4.25.0:
dependencies:
'@types/estree': 1.0.6
smart-buffer@4.2.0: {}
- socks-proxy-agent@8.0.4:
+ socks-proxy-agent@8.0.3:
dependencies:
agent-base: 7.1.1
debug: 4.3.6
ip-address: 9.0.5
smart-buffer: 4.2.0
- source-map-js@1.2.0: {}
-
source-map-js@1.2.1: {}
source-map@0.6.1: {}
spdx-correct@3.2.0:
dependencies:
spdx-expression-parse: 3.0.1
- spdx-license-ids: 3.0.18
+ spdx-license-ids: 3.0.17
spdx-exceptions@2.5.0: {}
spdx-expression-parse@3.0.1:
dependencies:
spdx-exceptions: 2.5.0
- spdx-license-ids: 3.0.18
+ spdx-license-ids: 3.0.17
- spdx-license-ids@3.0.18: {}
+ spdx-license-ids@3.0.17: {}
sprintf-js@1.1.3: {}
std-env@3.7.0: {}
- streamx@2.18.0:
+ streamx@2.16.1:
dependencies:
fast-fifo: 1.3.2
queue-tick: 1.0.1
- text-decoder: 1.1.1
optionalDependencies:
- bare-events: 2.4.2
+ bare-events: 2.2.2
string-argv@0.3.2: {}
emoji-regex: 9.2.2
strip-ansi: 7.1.0
- string-width@7.2.0:
+ string-width@7.1.0:
dependencies:
emoji-regex: 10.3.0
get-east-asian-width: 1.2.0
pump: 3.0.0
tar-stream: 3.1.7
optionalDependencies:
- bare-fs: 2.3.1
- bare-path: 2.1.3
+ bare-fs: 2.2.3
+ bare-path: 2.1.1
tar-stream@3.1.7:
dependencies:
b4a: 1.6.6
fast-fifo: 1.3.2
- streamx: 2.18.0
+ streamx: 2.16.1
temp-dir@3.0.0: {}
glob: 10.4.5
minimatch: 9.0.5
- text-decoder@1.1.1:
- dependencies:
- b4a: 1.6.6
-
text-table@0.2.0: {}
through@2.3.8: {}
- supports-color
- terser
- vite@5.4.0(@types/node@22.8.7)(sass@1.80.6):
- dependencies:
- esbuild: 0.21.5
- postcss: 8.4.41
- rollup: 4.20.0
- optionalDependencies:
- '@types/node': 22.8.7
- fsevents: 2.3.3
- sass: 1.80.6
-
vite@5.4.8(@types/node@22.8.7)(sass@1.80.6):
dependencies:
esbuild: 0.21.5
dependencies:
'@babel/parser': 7.25.3
'@babel/types': 7.25.2
- assert-never: 1.3.0
+ assert-never: 1.2.1
babel-walk: 3.0.0-canary-5
- word-wrap@1.2.5: {}
-
wordwrap@1.0.0: {}
wrap-ansi@7.0.0:
wrap-ansi@9.0.0:
dependencies:
ansi-styles: 6.2.1
- string-width: 7.2.0
+ string-width: 7.1.0
strip-ansi: 7.1.0
wrappy@1.0.2: {}
// @ts-check
import assert from 'node:assert/strict'
-import { parse } from '@babel/parser'
+import { parseSync } from 'oxc-parser'
import { existsSync, readFileSync, readdirSync, writeFileSync } from 'node:fs'
import MagicString from 'magic-string'
import dts from 'rollup-plugin-dts'
name: 'patch-types',
renderChunk(code, chunk) {
const s = new MagicString(code)
- const ast = parse(code, {
- plugins: ['typescript'],
+ const { program: ast, errors } = parseSync(code, {
+ sourceFilename: 'x.d.ts',
sourceType: 'module',
})
+ if (errors.length) {
+ throw new Error(errors.join('\n'))
+ }
+
/**
* @param {import('@babel/types').VariableDeclarator | import('@babel/types').TSTypeAliasDeclaration | import('@babel/types').TSInterfaceDeclaration | import('@babel/types').TSDeclareFunction | import('@babel/types').TSInterfaceDeclaration | import('@babel/types').TSEnumDeclaration | import('@babel/types').ClassDeclaration} node
* @param {import('@babel/types').VariableDeclaration} [parentDecl]
const shouldRemoveExport = new Set()
// pass 0: check all exported types
- for (const node of ast.program.body) {
+ for (const node of ast.body) {
if (node.type === 'ExportNamedDeclaration' && !node.source) {
for (let i = 0; i < node.specifiers.length; i++) {
const spec = node.specifiers[i]
if (spec.type === 'ExportSpecifier') {
- isExported.add(spec.local.name)
+ isExported.add(
+ 'name' in spec.local ? spec.local.name : spec.local.value,
+ )
}
}
}
}
// pass 1: add exports
- for (const node of ast.program.body) {
+ for (const node of ast.body) {
if (node.type === 'VariableDeclaration') {
+ // @ts-expect-error waiting for oxc-parser to expose types
processDeclaration(node.declarations[0], node)
if (node.declarations.length > 1) {
assert(typeof node.start === 'number')
node.type === 'TSEnumDeclaration' ||
node.type === 'ClassDeclaration'
) {
+ // @ts-expect-error waiting for oxc-parser to expose types
processDeclaration(node)
}
}
// pass 2: remove exports
- for (const node of ast.program.body) {
+ for (const node of ast.body) {
if (node.type === 'ExportNamedDeclaration' && !node.source) {
let removed = 0
for (let i = 0; i < node.specifiers.length; i++) {
const spec = node.specifiers[i]
+ const localName =
+ 'name' in spec.local ? spec.local.name : spec.local.value
if (
spec.type === 'ExportSpecifier' &&
- shouldRemoveExport.has(spec.local.name)
+ shouldRemoveExport.has(localName)
) {
assert(spec.exported.type === 'Identifier')
const exported = spec.exported.name
- if (exported !== spec.local.name) {
+ if (exported !== localName) {
// this only happens if we have something like
// type Foo
// export { Foo as Bar }
--- /dev/null
+import fs from 'node:fs'
+import path from 'node:path'
+import glob from 'fast-glob'
+import { isolatedDeclaration } from 'oxc-transform'
+import { rollup } from 'rollup'
+import picocolors from 'picocolors'
+
+if (fs.existsSync('temp/packages')) {
+ fs.rmSync('temp/packages', { recursive: true })
+}
+
+let errs = ''
+let start = performance.now()
+let count = 0
+
+for (const file of await glob('packages/*/src/**/*.ts')) {
+ if (file.includes('runtime-test')) continue
+
+ const ts = fs.readFileSync(file, 'utf-8')
+ const dts = isolatedDeclaration(file, ts, {
+ sourcemap: false,
+ stripInternal: true,
+ })
+ if (dts.errors.length) {
+ dts.errors.forEach(err => {
+ // temporary workaround for https://github.com/oxc-project/oxc/issues/5668
+ if (!err.includes('set value(_: S)')) {
+ console.error(err)
+ }
+ errs += err + '\n'
+ })
+ }
+
+ write(path.join('temp', file.replace(/\.ts$/, '.d.ts')), dts.code)
+ count++
+}
+
+console.log(
+ `\n${count} isolated dts files generated in ${(performance.now() - start).toFixed(2)}ms.`,
+)
+
+if (errs) {
+ write(path.join('temp', 'oxc-iso-decl-errors.txt'), errs)
+}
+
+console.log('bundling dts with rollup-plugin-dts...')
+
+// bundle with rollup-plugin-dts
+const rollupConfigs = (await import('../rollup.dts.config.js')).default
+
+start = performance.now()
+
+await Promise.all(
+ rollupConfigs.map(c =>
+ rollup(c).then(bundle => {
+ return bundle.write(c.output).then(() => {
+ console.log(picocolors.gray('built: ') + picocolors.blue(c.output.file))
+ })
+ }),
+ ),
+)
+
+console.log(
+ `bundled dts generated in ${(performance.now() - start).toFixed(2)}ms.`,
+)
+
+function write(file, content) {
+ const dir = path.dirname(file)
+ if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true })
+ fs.writeFileSync(file, content)
+}
--- /dev/null
+// @ts-check
+
+/*
+Produces production builds and stitches together d.ts files.
+
+To specify the package to build, simply pass its name and the desired build
+formats to output (defaults to `buildOptions.formats` specified in that package,
+or "esm,cjs"):
+
+```
+# name supports fuzzy match. will build all packages with name containing "dom":
+nr build dom
+
+# specify the format to output
+nr build core --formats cjs
+```
+*/
+
+import fs from 'node:fs'
+import { parseArgs } from 'node:util'
+import { existsSync, readFileSync } from 'node:fs'
+import path from 'node:path'
+import { brotliCompressSync, gzipSync } from 'node:zlib'
+import pico from 'picocolors'
+import { cpus } from 'node:os'
+import { targets as allTargets, exec, fuzzyMatchTarget } from './utils.js'
+import { scanEnums } from './inline-enums.js'
+import prettyBytes from 'pretty-bytes'
+import { spawnSync } from 'node:child_process'
+
+const commit = spawnSync('git', ['rev-parse', '--short=7', 'HEAD'])
+ .stdout.toString()
+ .trim()
+
+const { values, positionals: targets } = parseArgs({
+ allowPositionals: true,
+ options: {
+ formats: {
+ type: 'string',
+ short: 'f',
+ },
+ devOnly: {
+ type: 'boolean',
+ short: 'd',
+ },
+ prodOnly: {
+ type: 'boolean',
+ short: 'p',
+ },
+ withTypes: {
+ type: 'boolean',
+ short: 't',
+ },
+ sourceMap: {
+ type: 'boolean',
+ short: 's',
+ },
+ release: {
+ type: 'boolean',
+ },
+ all: {
+ type: 'boolean',
+ short: 'a',
+ },
+ size: {
+ type: 'boolean',
+ },
+ },
+})
+
+const {
+ formats,
+ all: buildAllMatching,
+ devOnly,
+ prodOnly,
+ withTypes: buildTypes,
+ sourceMap,
+ release: isRelease,
+ size: writeSize,
+} = values
+
+const sizeDir = path.resolve('temp/size')
+
+run()
+
+async function run() {
+ if (writeSize) fs.mkdirSync(sizeDir, { recursive: true })
+ const removeCache = scanEnums()
+ try {
+ const resolvedTargets = targets.length
+ ? fuzzyMatchTarget(targets, buildAllMatching)
+ : allTargets
+ await buildAll(resolvedTargets)
+ await checkAllSizes(resolvedTargets)
+ if (buildTypes) {
+ await exec(
+ 'pnpm',
+ [
+ 'run',
+ 'build-dts',
+ ...(targets.length
+ ? ['--environment', `TARGETS:${resolvedTargets.join(',')}`]
+ : []),
+ ],
+ {
+ stdio: 'inherit',
+ },
+ )
+ }
+ } finally {
+ removeCache()
+ }
+}
+
+/**
+ * Builds all the targets in parallel.
+ * @param {Array<string>} targets - An array of targets to build.
+ * @returns {Promise<void>} - A promise representing the build process.
+ */
+async function buildAll(targets) {
+ await runParallel(cpus().length, targets, build)
+}
+
+/**
+ * Runs iterator function in parallel.
+ * @template T - The type of items in the data source
+ * @param {number} maxConcurrency - The maximum concurrency.
+ * @param {Array<T>} source - The data source
+ * @param {(item: T) => Promise<void>} iteratorFn - The iteratorFn
+ * @returns {Promise<void[]>} - A Promise array containing all iteration results.
+ */
+async function runParallel(maxConcurrency, source, iteratorFn) {
+ /**@type {Promise<void>[]} */
+ const ret = []
+ /**@type {Promise<void>[]} */
+ const executing = []
+ for (const item of source) {
+ const p = Promise.resolve().then(() => iteratorFn(item))
+ ret.push(p)
+
+ if (maxConcurrency <= source.length) {
+ const e = p.then(() => {
+ executing.splice(executing.indexOf(e), 1)
+ })
+ executing.push(e)
+ if (executing.length >= maxConcurrency) {
+ await Promise.race(executing)
+ }
+ }
+ }
+ return Promise.all(ret)
+}
+
+const privatePackages = fs.readdirSync('packages-private')
+
+/**
+ * Builds the target.
+ * @param {string} target - The target to build.
+ * @returns {Promise<void>} - A promise representing the build process.
+ */
+async function build(target) {
+ const pkgBase = privatePackages.includes(target)
+ ? `packages-private`
+ : `packages`
+ const pkgDir = path.resolve(`${pkgBase}/${target}`)
+ const pkg = JSON.parse(readFileSync(`${pkgDir}/package.json`, 'utf-8'))
+
+ // if this is a full build (no specific targets), ignore private packages
+ if ((isRelease || !targets.length) && pkg.private) {
+ return
+ }
+
+ // if building a specific format, do not remove dist.
+ if (!formats && existsSync(`${pkgDir}/dist`)) {
+ fs.rmSync(`${pkgDir}/dist`, { recursive: true })
+ }
+
+ const env = {
+ ...process.env,
+ TARGET: target,
+ COMMIT: commit,
+ NODE_ENV:
+ (pkg.buildOptions && pkg.buildOptions.env) ||
+ (devOnly ? 'development' : 'production'),
+ ...(formats ? { FORMATS: formats } : null),
+ ...(prodOnly ? { PROD_ONLY: true } : null),
+ ...(sourceMap ? { SOURCE_MAP: true } : null),
+ }
+
+ await exec('rollup', ['-c'], {
+ stdio: 'inherit',
+ env,
+ })
+}
+
+/**
+ * Checks the sizes of all targets.
+ * @param {string[]} targets - The targets to check sizes for.
+ * @returns {Promise<void>}
+ */
+async function checkAllSizes(targets) {
+ if (devOnly || (formats && !formats.includes('global'))) {
+ return
+ }
+ console.log()
+ for (const target of targets) {
+ await checkSize(target)
+ }
+ console.log()
+}
+
+/**
+ * Checks the size of a target.
+ * @param {string} target - The target to check the size for.
+ * @returns {Promise<void>}
+ */
+async function checkSize(target) {
+ const pkgDir = path.resolve(`packages/${target}`)
+ await checkFileSize(`${pkgDir}/dist/${target}.global.prod.js`)
+ if (!formats || formats.includes('global-runtime')) {
+ await checkFileSize(`${pkgDir}/dist/${target}.runtime.global.prod.js`)
+ }
+}
+
+/**
+ * Checks the file size.
+ * @param {string} filePath - The path of the file to check the size for.
+ * @returns {Promise<void>}
+ */
+async function checkFileSize(filePath) {
+ if (!existsSync(filePath)) {
+ return
+ }
+ const file = fs.readFileSync(filePath)
+ const fileName = path.basename(filePath)
+
+ const gzipped = gzipSync(file)
+ const brotli = brotliCompressSync(file)
+
+ console.log(
+ `${pico.gray(pico.bold(fileName))} min:${prettyBytes(
+ file.length,
+ )} / gzip:${prettyBytes(gzipped.length)} / brotli:${prettyBytes(
+ brotli.length,
+ )}`,
+ )
+
+ if (writeSize)
+ fs.writeFileSync(
+ path.resolve(sizeDir, `${fileName}.json`),
+ JSON.stringify({
+ file: fileName,
+ size: file.length,
+ gzip: gzipped.length,
+ brotli: brotli.length,
+ }),
+ 'utf-8',
+ )
+}
import path from 'node:path'
import { brotliCompressSync, gzipSync } from 'node:zlib'
import pico from 'picocolors'
-import { cpus } from 'node:os'
-import { targets as allTargets, exec, fuzzyMatchTarget } from './utils.js'
-import { scanEnums } from './inline-enums.js'
+import { targets as allTargets, fuzzyMatchTarget } from './utils.js'
import prettyBytes from 'pretty-bytes'
import { spawnSync } from 'node:child_process'
+import { createConfigsForPackage } from './create-rolldown-config.js'
+import { rolldown } from 'rolldown'
+import { scanEnums } from './inline-enums.js'
+import { fileURLToPath } from 'node:url'
+const __dirname = fileURLToPath(new URL('.', import.meta.url))
+const privatePackages = fs.readdirSync('packages-private')
const commit = spawnSync('git', ['rev-parse', '--short=7', 'HEAD'])
.stdout.toString()
.trim()
})
const {
- formats,
+ formats: rawFormats,
all: buildAllMatching,
devOnly,
prodOnly,
withTypes: buildTypes,
sourceMap,
release: isRelease,
- size: writeSize,
+ size,
} = values
+const formats = rawFormats?.split(',')
const sizeDir = path.resolve('temp/size')
run()
async function run() {
- if (writeSize) fs.mkdirSync(sizeDir, { recursive: true })
+ if (size) fs.mkdirSync(sizeDir, { recursive: true })
const removeCache = scanEnums()
try {
const resolvedTargets = targets.length
? fuzzyMatchTarget(targets, buildAllMatching)
: allTargets
await buildAll(resolvedTargets)
- await checkAllSizes(resolvedTargets)
+ if (size) await checkAllSizes(resolvedTargets)
if (buildTypes) {
- await exec(
- 'pnpm',
- [
- 'run',
- 'build-dts',
- ...(targets.length
- ? ['--environment', `TARGETS:${resolvedTargets.join(',')}`]
- : []),
- ],
- {
- stdio: 'inherit',
- },
- )
+ await import('./build-types.js')
}
} finally {
removeCache()
* @returns {Promise<void>} - A promise representing the build process.
*/
async function buildAll(targets) {
- await runParallel(cpus().length, targets, build)
-}
-
-/**
- * Runs iterator function in parallel.
- * @template T - The type of items in the data source
- * @param {number} maxConcurrency - The maximum concurrency.
- * @param {Array<T>} source - The data source
- * @param {(item: T) => Promise<void>} iteratorFn - The iteratorFn
- * @returns {Promise<void[]>} - A Promise array containing all iteration results.
- */
-async function runParallel(maxConcurrency, source, iteratorFn) {
- /**@type {Promise<void>[]} */
- const ret = []
- /**@type {Promise<void>[]} */
- const executing = []
- for (const item of source) {
- const p = Promise.resolve().then(() => iteratorFn(item))
- ret.push(p)
-
- if (maxConcurrency <= source.length) {
- const e = p.then(() => {
- executing.splice(executing.indexOf(e), 1)
- })
- executing.push(e)
- if (executing.length >= maxConcurrency) {
- await Promise.race(executing)
- }
+ const start = performance.now()
+ const all = []
+ let count = 0
+ for (const t of targets) {
+ const configs = createConfigsForTarget(t)
+ if (configs) {
+ all.push(
+ Promise.all(
+ configs.map(c =>
+ rolldown(c).then(bundle => {
+ return bundle.write(c.output).then(() => {
+ // @ts-expect-error
+ return path.join('packages', t, 'dist', c.output.entryFileNames)
+ })
+ }),
+ ),
+ ).then(files => {
+ files.forEach(f => {
+ count++
+ console.log(pico.gray('built: ') + pico.green(f))
+ })
+ }),
+ )
}
}
- return Promise.all(ret)
+ await Promise.all(all)
+ console.log(
+ `\n${count} files built in ${(performance.now() - start).toFixed(2)}ms.`,
+ )
}
-const privatePackages = fs.readdirSync('packages-private')
-
/**
* Builds the target.
* @param {string} target - The target to build.
- * @returns {Promise<void>} - A promise representing the build process.
+ * @returns {import('rolldown').RolldownOptions[] | void} - A promise representing the build process.
*/
-async function build(target) {
+function createConfigsForTarget(target) {
const pkgBase = privatePackages.includes(target)
? `packages-private`
: `packages`
- const pkgDir = path.resolve(`${pkgBase}/${target}`)
+ const pkgDir = path.resolve(__dirname, `../${pkgBase}/${target}`)
const pkg = JSON.parse(readFileSync(`${pkgDir}/package.json`, 'utf-8'))
// if this is a full build (no specific targets), ignore private packages
fs.rmSync(`${pkgDir}/dist`, { recursive: true })
}
- const env =
- (pkg.buildOptions && pkg.buildOptions.env) ||
- (devOnly ? 'development' : 'production')
-
- await exec(
- 'rollup',
- [
- '-c',
- '--environment',
- [
- `COMMIT:${commit}`,
- `NODE_ENV:${env}`,
- `TARGET:${target}`,
- formats ? `FORMATS:${formats}` : ``,
- prodOnly ? `PROD_ONLY:true` : ``,
- sourceMap ? `SOURCE_MAP:true` : ``,
- ]
- .filter(Boolean)
- .join(','),
- ],
- { stdio: 'inherit' },
- )
+ return createConfigsForPackage({
+ target,
+ commit,
+ // @ts-expect-error
+ formats,
+ prodOnly,
+ devOnly:
+ (pkg.buildOptions && pkg.buildOptions.env === 'development') || devOnly,
+ sourceMap,
+ })
}
/**
* @returns {Promise<void>}
*/
async function checkSize(target) {
- const pkgDir = path.resolve(`packages/${target}`)
+ const pkgDir = path.resolve(__dirname, `../packages/${target}`)
await checkFileSize(`${pkgDir}/dist/${target}.global.prod.js`)
if (!formats || formats.includes('global-runtime')) {
await checkFileSize(`${pkgDir}/dist/${target}.runtime.global.prod.js`)
)}`,
)
- if (writeSize)
+ if (size)
fs.writeFileSync(
path.resolve(sizeDir, `${fileName}.json`),
JSON.stringify({
--- /dev/null
+// @ts-check
+import assert from 'node:assert/strict'
+import { createRequire } from 'node:module'
+import { fileURLToPath } from 'node:url'
+import path from 'node:path'
+import { replacePlugin } from 'rolldown/experimental'
+import pico from 'picocolors'
+import polyfillNode from '@rolldown/plugin-node-polyfills'
+import { entries } from './aliases.js'
+import { inlineEnums } from './inline-enums.js'
+import { minify as minifySwc } from '@swc/core'
+
+const require = createRequire(import.meta.url)
+const __dirname = fileURLToPath(new URL('.', import.meta.url))
+
+const masterVersion = require('../package.json').version
+const consolidatePkg = require('@vue/consolidate/package.json')
+
+const packagesDir = path.resolve(__dirname, '../packages')
+
+/** @typedef {'cjs' | 'esm-bundler' | 'global' | 'global-runtime' | 'esm-browser' | 'esm-bundler-runtime' | 'esm-browser-runtime'} PackageFormat */
+
+/**
+ * @param {{
+ * target: string
+ * commit: string
+ * formats?: PackageFormat[]
+ * devOnly?: boolean
+ * prodOnly?: boolean
+ * sourceMap?: boolean
+ * }} options
+ */
+export function createConfigsForPackage({
+ target,
+ commit,
+ formats,
+ devOnly = false,
+ prodOnly = false,
+ sourceMap = false,
+}) {
+ const [enumPlugin, enumDefines] = inlineEnums()
+
+ const packageDir = path.resolve(packagesDir, target)
+ const resolve = (/** @type {string} */ p) => path.resolve(packageDir, p)
+ const pkg = require(resolve(`package.json`))
+ const packageOptions = pkg.buildOptions || {}
+ const name = packageOptions.filename || path.basename(packageDir)
+
+ /** @type {Record<PackageFormat, import('rolldown').OutputOptions>} */
+ const outputConfigs = {
+ 'esm-bundler': {
+ entryFileNames: `${name}.esm-bundler.js`,
+ format: 'es',
+ },
+ 'esm-browser': {
+ entryFileNames: `${name}.esm-browser.js`,
+ format: 'es',
+ },
+ cjs: {
+ entryFileNames: `${name}.cjs.js`,
+ format: 'cjs',
+ },
+ global: {
+ entryFileNames: `${name}.global.js`,
+ format: 'iife',
+ },
+ // runtime-only builds, for main "vue" package only
+ 'esm-bundler-runtime': {
+ entryFileNames: `${name}.runtime.esm-bundler.js`,
+ format: 'es',
+ },
+ 'esm-browser-runtime': {
+ entryFileNames: `${name}.runtime.esm-browser.js`,
+ format: 'es',
+ },
+ 'global-runtime': {
+ entryFileNames: `${name}.runtime.global.js`,
+ format: 'iife',
+ },
+ }
+
+ const resolvedFormats = (
+ formats ||
+ packageOptions.formats || ['esm-bundler', 'cjs']
+ ).filter(format => outputConfigs[format])
+
+ const packageConfigs = prodOnly
+ ? []
+ : resolvedFormats.map(format => createConfig(format, outputConfigs[format]))
+
+ if (!devOnly) {
+ resolvedFormats.forEach(format => {
+ if (packageOptions.prod === false) {
+ return
+ }
+ if (format === 'cjs') {
+ packageConfigs.push(createProductionConfig(format))
+ }
+ if (/^(global|esm-browser)(-runtime)?/.test(format)) {
+ packageConfigs.push(createMinifiedConfig(format))
+ }
+ })
+ }
+
+ /**
+ *
+ * @param {PackageFormat} format
+ * @param {import('rolldown').OutputOptions} output
+ * @param {import('rolldown').Plugin[]} plugins
+ * @returns {import('rolldown').RolldownOptions}
+ */
+ function createConfig(format, output, plugins = []) {
+ if (!output) {
+ console.error(pico.yellow(`invalid format: "${format}"`))
+ process.exit(1)
+ }
+
+ output.dir = resolve('dist')
+
+ const isProductionBuild = /\.prod\.js$/.test(
+ String(output.entryFileNames) || '',
+ )
+ const isBundlerESMBuild = /esm-bundler/.test(format)
+ const isBrowserESMBuild = /esm-browser/.test(format)
+ const isServerRenderer = name === 'server-renderer'
+ const isCJSBuild = format === 'cjs'
+ const isGlobalBuild = /global/.test(format)
+ const isCompatPackage =
+ pkg.name === '@vue/compat' || pkg.name === '@vue/compat-canary'
+ const isCompatBuild = !!packageOptions.compat
+ const isBrowserBuild =
+ (isGlobalBuild || isBrowserESMBuild || isBundlerESMBuild) &&
+ !packageOptions.enableNonBrowserBranches
+
+ output.banner = `/**
+ * ${pkg.name} v${masterVersion}
+ * (c) 2018-present Yuxi (Evan) You and Vue contributors
+ * @license MIT
+ **/`
+
+ output.exports = isCompatPackage ? 'auto' : 'named'
+ if (isCJSBuild) {
+ output.esModule = true
+ }
+ output.sourcemap = sourceMap
+
+ output.externalLiveBindings = false
+
+ // https://github.com/rollup/rollup/pull/5380
+ // @ts-expect-error Not supported yet
+ output.reexportProtoFromExternal = false
+
+ if (isGlobalBuild) {
+ output.name = packageOptions.name
+ }
+
+ let entryFile = /runtime$/.test(format) ? `src/runtime.ts` : `src/index.ts`
+
+ // the compat build needs both default AND named exports. This will cause
+ // Rollup to complain for non-ESM targets, so we use separate entries for
+ // esm vs. non-esm builds.
+ if (isCompatPackage && (isBrowserESMBuild || isBundlerESMBuild)) {
+ entryFile = /runtime$/.test(format)
+ ? `src/esm-runtime.ts`
+ : `src/esm-index.ts`
+ }
+
+ function resolveDefine() {
+ /** @type {Record<string, string>} */
+ const defines = {
+ __COMMIT__: `"${commit}"`,
+ __VERSION__: `"${masterVersion}"`,
+ // this is only used during Vue's internal tests
+ __TEST__: `false`,
+ // If the build is expected to run directly in the browser (global / esm builds)
+ __BROWSER__: String(isBrowserBuild),
+ __GLOBAL__: String(isGlobalBuild),
+ __ESM_BUNDLER__: String(isBundlerESMBuild),
+ __ESM_BROWSER__: String(isBrowserESMBuild),
+ // is targeting Node (SSR)?
+ __CJS__: String(isCJSBuild),
+ // need SSR-specific branches?
+ __SSR__: String(isCJSBuild || isBundlerESMBuild || isServerRenderer),
+
+ // 2.x compat build
+ __COMPAT__: String(isCompatBuild),
+
+ // feature flags
+ __FEATURE_SUSPENSE__: `true`,
+ __FEATURE_OPTIONS_API__: isBundlerESMBuild
+ ? `__VUE_OPTIONS_API__`
+ : `true`,
+ __FEATURE_PROD_DEVTOOLS__: isBundlerESMBuild
+ ? `__VUE_PROD_DEVTOOLS__`
+ : `false`,
+ __FEATURE_PROD_HYDRATION_MISMATCH_DETAILS__: isBundlerESMBuild
+ ? `__VUE_PROD_HYDRATION_MISMATCH_DETAILS__`
+ : `false`,
+ }
+
+ if (!isBundlerESMBuild) {
+ // hard coded dev/prod builds
+ defines.__DEV__ = String(!isProductionBuild)
+ }
+
+ // allow inline overrides like
+ //__RUNTIME_COMPILE__=true pnpm build runtime-core
+ Object.keys(defines).forEach(key => {
+ if (key in process.env) {
+ const value = process.env[key]
+ assert(typeof value === 'string')
+ defines[key] = value
+ }
+ })
+
+ return defines
+ }
+
+ // esbuild define is a bit strict and only allows literal json or identifiers
+ // so we still need replace plugin in some cases
+ function resolveReplace() {
+ /** @type {Record<string, string>} */
+ const replacements = { ...enumDefines }
+
+ if (isBundlerESMBuild) {
+ Object.assign(replacements, {
+ // preserve to be handled by bundlers
+ __DEV__: `!!(process.env.NODE_ENV !== 'production')`,
+ })
+ }
+
+ // for compiler-sfc browser build inlined deps
+ if (isBrowserESMBuild && name === 'compiler-sfc') {
+ Object.assign(replacements, {
+ 'process.env': '({})',
+ 'process.platform': '""',
+ 'process.stdout': 'null',
+ })
+ }
+
+ if (Object.keys(replacements).length) {
+ return [replacePlugin(replacements)]
+ } else {
+ return []
+ }
+ }
+
+ function resolveExternal() {
+ const treeShakenDeps = [
+ 'source-map-js',
+ '@babel/parser',
+ 'estree-walker',
+ 'entities/lib/decode.js',
+ ]
+
+ // we are bundling forked consolidate.js in compiler-sfc which dynamically
+ // requires a ton of template engines which should be ignored.
+ let cjsIgnores = []
+ if (
+ pkg.name === '@vue/compiler-sfc' ||
+ pkg.name === '@vue/compiler-sfc-canary'
+ ) {
+ cjsIgnores = [
+ ...Object.keys(consolidatePkg.devDependencies),
+ 'vm',
+ 'crypto',
+ 'react-dom/server',
+ 'teacup/lib/express',
+ 'arc-templates/dist/es5',
+ 'then-pug',
+ 'then-jade',
+ ]
+ }
+
+ if (isGlobalBuild || isBrowserESMBuild || isCompatPackage) {
+ if (!packageOptions.enableNonBrowserBranches) {
+ // normal browser builds - non-browser only imports are tree-shaken,
+ // they are only listed here to suppress warnings.
+ return treeShakenDeps
+ } else {
+ return cjsIgnores
+ }
+ } else {
+ // Node / esm-bundler builds.
+ // externalize all direct deps unless it's the compat build.
+ return [
+ ...Object.keys(pkg.dependencies || {}),
+ ...Object.keys(pkg.peerDependencies || {}),
+ // for @vue/compiler-sfc / server-renderer
+ ...['path', 'url', 'stream'],
+ // somehow these throw warnings for runtime-* package builds
+ ...treeShakenDeps,
+ ...cjsIgnores,
+ ]
+ }
+ }
+
+ function resolveNodePlugins() {
+ const nodePlugins =
+ (format === 'cjs' && Object.keys(pkg.devDependencies || {}).length) ||
+ packageOptions.enableNonBrowserBranches
+ ? [...(format === 'cjs' ? [] : [polyfillNode()])]
+ : []
+ return nodePlugins
+ }
+
+ return {
+ input: resolve(entryFile),
+ // Global and Browser ESM builds inlines everything so that they can be
+ // used alone.
+ external: resolveExternal(),
+ define: resolveDefine(),
+ platform: format === 'cjs' ? 'node' : 'browser',
+ resolve: {
+ alias: entries,
+ },
+ plugins: [
+ // @ts-expect-error rollup's Plugin type incompatible w/ rolldown's vendored Plugin type
+ enumPlugin,
+ ...resolveReplace(),
+ ...resolveNodePlugins(),
+ ...plugins,
+ ],
+ output,
+ onwarn: (msg, warn) => {
+ if (msg.code !== 'CIRCULAR_DEPENDENCY') {
+ warn(msg)
+ }
+ },
+ treeshake: {
+ // https://github.com/rolldown/rolldown/issues/1917
+ moduleSideEffects: false,
+ },
+ }
+ }
+
+ function createProductionConfig(/** @type {PackageFormat} */ format) {
+ return createConfig(format, {
+ entryFileNames: `${name}.${format}.prod.js`,
+ format: outputConfigs[format].format,
+ })
+ }
+
+ function createMinifiedConfig(/** @type {PackageFormat} */ format) {
+ return createConfig(
+ format,
+ {
+ entryFileNames: String(outputConfigs[format].entryFileNames).replace(
+ /\.js$/,
+ '.prod.js',
+ ),
+ format: outputConfigs[format].format,
+ // minify: true,
+ },
+ [
+ {
+ name: 'swc-minify',
+ async renderChunk(
+ contents,
+ _,
+ {
+ format,
+ sourcemap,
+ // @ts-expect-error not supported yet
+ sourcemapExcludeSources,
+ },
+ ) {
+ const { code, map } = await minifySwc(contents, {
+ module: format === 'es',
+ compress: {
+ ecma: 2016,
+ pure_getters: true,
+ },
+ safari10: true,
+ mangle: true,
+ sourceMap: !!sourcemap,
+ inlineSourcesContent: !sourcemapExcludeSources,
+ })
+ return { code, map: map || null }
+ },
+ },
+ ],
+ )
+ }
+
+ return packageConfigs
+}
writeFileSync,
} from 'node:fs'
import * as path from 'node:path'
-import { parse } from '@babel/parser'
+import { parseSync } from 'oxc-parser'
import { spawnSync } from 'node:child_process'
import MagicString from 'magic-string'
]
// 2. parse matched files to collect enum info
+ let i = 0
for (const relativeFile of files) {
const file = path.resolve(process.cwd(), relativeFile)
const content = readFileSync(file, 'utf-8')
- const ast = parse(content, {
- plugins: ['typescript'],
+ const res = parseSync(content, {
+ // plugins: ['typescript'],
+ sourceFilename: file,
sourceType: 'module',
})
/** @type {Set<string>} */
const enumIds = new Set()
- for (const node of ast.program.body) {
+ for (const node of res.program.body) {
if (
node.type === 'ExportNamedDeclaration' &&
node.declaration &&
node.type === 'StringLiteral'
) {
return node.value
- } else if (node.type === 'MemberExpression') {
+ } else if (
+ node.type === 'MemberExpression' ||
+ // @ts-expect-error oxc only type
+ node.type === 'StaticMemberExpression'
+ ) {
const exp = /** @type {`${string}.${string}`} */ (
content.slice(node.start, node.end)
)