diff --git a/.azure-pipelines/publish-nightly.yml b/.azure-pipelines/publish-nightly.yml index 081ab373..c90eec01 100644 --- a/.azure-pipelines/publish-nightly.yml +++ b/.azure-pipelines/publish-nightly.yml @@ -51,13 +51,18 @@ extends: testPlatforms: [] skipAPIScan: true # package build requires Linux buildSteps: + - task: NodeTool@0 + inputs: + versionSource: fromFile + versionFilePath: .nvmrc + - script: sudo apt install -y libkrb5-dev displayName: Install libkrb5-dev - script: npm ci displayName: Install NPM dependencies - - script: yarn ts-node ./scripts/ci/monaco-editor-core-prepare nightly + - script: yarn ts-node ./scripts/ci/build-monaco-editor-core-pkg nightly env: VSCODE_REF: ${{ parameters.vscodeRef }} PRERELEASE_VERSION: ${{ parameters.prereleaseVersion }} @@ -75,10 +80,18 @@ extends: testPlatforms: [] skipAPIScan: true # package build requires Linux buildSteps: + - task: NodeTool@0 + inputs: + versionSource: fromFile + versionFilePath: .nvmrc + - script: npm ci displayName: Install NPM dependencies - - script: yarn ts-node ./scripts/ci/monaco-editor-prepare nightly + - script: npx playwright install --with-deps + displayName: Install Playwright Dependencies + + - script: yarn ts-node ./scripts/ci/build-monaco-editor-pkg nightly env: VSCODE_REF: ${{ parameters.vscodeRef }} PRERELEASE_VERSION: ${{ parameters.prereleaseVersion }} diff --git a/.azure-pipelines/publish-stable.yml b/.azure-pipelines/publish-stable.yml index fdff66a0..270e534f 100644 --- a/.azure-pipelines/publish-stable.yml +++ b/.azure-pipelines/publish-stable.yml @@ -39,13 +39,18 @@ extends: testPlatforms: [] skipAPIScan: true # package build requires Linux buildSteps: + - task: NodeTool@0 + inputs: + versionSource: fromFile + versionFilePath: .nvmrc + - script: sudo apt install -y libkrb5-dev displayName: Install libkrb5-dev - script: npm ci displayName: Install NPM dependencies - - script: yarn ts-node ./scripts/ci/monaco-editor-core-prepare stable + - script: yarn ts-node ./scripts/ci/build-monaco-editor-core-pkg stable displayName: Setup, Build & Test monaco-editor-core tag: latest @@ -59,10 +64,18 @@ extends: testPlatforms: [] skipAPIScan: true # package build requires Linux buildSteps: + - task: NodeTool@0 + inputs: + versionSource: fromFile + versionFilePath: .nvmrc + - script: npm ci displayName: Install NPM dependencies - - script: yarn ts-node ./scripts/ci/monaco-editor-prepare stable + - script: npx playwright install --with-deps + displayName: Install Playwright Dependencies + + - script: yarn ts-node ./scripts/ci/build-monaco-editor-pkg stable displayName: Setup, Build & Test monaco-editor tag: latest diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f2b14066..4fffbca4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,13 +5,15 @@ on: [push, pull_request] jobs: build: name: CI - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - - uses: actions/setup-node@1f8c6b94b26d0feae1e387ca63ccbdc44d27b561 # pin@v2 with: - node-version: 20 + persist-credentials: false + + - uses: actions/setup-node@v4 + with: + node-version-file: .nvmrc - name: Cache node modules id: cacheNodeModules @@ -21,25 +23,49 @@ jobs: key: ${{ runner.os }}-cacheNodeModules2-${{ hashFiles('**/package-lock.json', '**/package.json') }} restore-keys: ${{ runner.os }}-cacheNodeModules2- + - name: Install build tools + if: steps.cache-node-modules.outputs.cache-hit != 'true' + run: | + sudo apt update -y + sudo apt install -y build-essential pkg-config libx11-dev libx11-xcb-dev libxkbfile-dev libnotify-bin libkrb5-dev + - name: execute `npm ci` (1) if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }} - run: npm ci + env: + PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 + ELECTRON_SKIP_BINARY_DOWNLOAD: 1 + run: | + npm ci + + - name: Download Playwright + run: npx playwright install --with-deps - name: execute `npm ci` (2) if: ${{ steps.cacheNodeModules.outputs.cache-hit != 'true' }} run: npm ci --prefix webpack-plugin - - name: Install Playwright - run: npm run playwright-install + # CI steps temporarily disabled (enable by end of august 2025) + # # + # - name: Setup, Build & Test monaco-editor-core + # run: yarn ts-node ./scripts/ci/build-monaco-editor-core-pkg nightly + # env: + # VSCODE_REF: 'main' + # PRERELEASE_VERSION: 'dev-${today}' - - name: Install OS Dependencies for Playwright - run: sudo npm run playwright-install-deps + # - name: Link monaco-editor-core + # run: npm link + # working-directory: ./dependencies/vscode/out-monaco-editor-core - - name: Check prettier - run: npm run prettier-check + # - name: Link monaco-editor-core + # run: npm link monaco-editor-core + # # + + # TODO: prettier formatting + # - name: Check prettier + # run: npm run prettier-check - name: Build - run: npm run build-monaco-editor + run: npm run build - name: Run unit tests run: npm test @@ -63,14 +89,14 @@ jobs: - name: Run smoke test run: npm run smoketest - - name: Install website node modules - working-directory: website - run: yarn install --frozen-lockfile + # - name: Install website node modules + # working-directory: website + # run: yarn install --frozen-lockfile - - name: Build website - working-directory: website - run: yarn run build + # - name: Build website + # working-directory: website + # run: yarn run build - - name: Test website - working-directory: website - run: yarn test + # - name: Test website + # working-directory: website + # run: yarn test diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index 6a73451b..4ec7aaaf 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -26,9 +26,9 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - uses: actions/setup-node@1f8c6b94b26d0feae1e387ca63ccbdc44d27b561 # pin@v2 + - uses: actions/setup-node@v4 with: - node-version: 20 + node-version-file: .nvmrc - name: Cache node modules id: cacheNodeModules uses: actions/cache@v4 diff --git a/.nvmrc b/.nvmrc index 48b14e6b..91d5f6ff 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -20.14.0 +22.18.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index ac405998..e6eb9899 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Monaco Editor Changelog +## [0.53.0] + +- :warning: This release deprecates the AMD build and ships with significant changes of the AMD build. The AMD build will still be shipped for a while, but we don't offer support for it anymore. Please migrate to the ESM build. + +### New Features + +- Next Edit Suggestion support. +- Scroll On Middle Click +- Edit Context Support + +### Breaking Changes + +- Internal AMD modules are no longer accessible. Accessing internal AMD modules was never supported. While this is still possible in the ESM build, we don't encourage this usage pattern. +- The [browser-script-editor scenario](https://github.com/microsoft/monaco-editor/blob/a4d7907bd439b06b24e334bdf2ab597bcae658b5/samples/browser-script-editor/index.html) for unbundled synchronous script import and editor creation no longer works. Instead, a the ESM build should be used with a bundler, such as vite or webpack. +- Custom AMD workers don't work anymore out of the box. + ## [0.52.0] - Comment added inside of `IModelContentChangedEvent` diff --git a/README.md b/README.md index 8c3d8ff2..a5403aba 100644 --- a/README.md +++ b/README.md @@ -24,12 +24,9 @@ The playground is the best way to learn about how to use the editor, which featu You will get: - inside `/esm`: ESM version of the editor (compatible with e.g. webpack) -- inside `/dev`: AMD bundled, not minified -- inside `/min`: AMD bundled, and minified -- inside `/min-maps`: source maps for `min` - `monaco.d.ts`: this specifies the API of the editor (this is what is actually versioned, everything else is considered private and might break with any release). -It is recommended to develop against the `dev` version, and in production to use the `min` version. +:warning: The monaco editor also ships an `AMD` build for backwards-compatibility reasons, but the `AMD` support is deprecated and will be removed in future versions. ## Concepts @@ -60,7 +57,6 @@ Many Monaco related objects often implement the `.dispose()` method. This method ## Documentation - Learn how to integrate the editor with these [complete samples](./samples/). - - [Integrate the AMD version](./docs/integrate-amd.md). - [Integrate the ESM version](./docs/integrate-esm.md) - Learn how to use the editor API and try out your own customizations in the [playground](https://microsoft.github.io/monaco-editor/playground.html). - Explore the [API docs](https://microsoft.github.io/monaco-editor/docs.html) or read them straight from [`monaco.d.ts`](https://github.com/microsoft/monaco-editor/blob/gh-pages/node_modules/monaco-editor/monaco.d.ts). @@ -92,10 +88,6 @@ No. Language services create web workers to compute heavy stuff outside of the UI thread. They cost hardly anything in terms of resource overhead and you shouldn't worry too much about them, as long as you get them to work (see above the cross-domain case). -❓ **What is this `loader.js`? Can I use `require.js`?** - -It is an AMD loader that we use in VS Code. Yes. - ❓ **I see the warning "Could not create web worker". What should I do?** HTML5 does not allow pages loaded on `file://` to create web workers. Please load the editor with a web server on `http://` or `https://` schemes. diff --git a/build/amd/build.script.ts b/build/amd/build.script.ts new file mode 100644 index 00000000..bcc37b91 --- /dev/null +++ b/build/amd/build.script.ts @@ -0,0 +1,7 @@ +import { run } from '../../scripts/lib/index'; + +export async function buildAmdMinDev() { + const rootPath = __dirname; + await run('npx vite build --mode development', { cwd: rootPath }); + await run('npx vite build', { cwd: rootPath }); +} diff --git a/build/amd/plugin.js b/build/amd/plugin.js new file mode 100644 index 00000000..0e7fb4ca --- /dev/null +++ b/build/amd/plugin.js @@ -0,0 +1,60 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +/** + * @type {() => import('rollup').Plugin} + */ +export function urlToEsmPlugin() { + return { + name: 'import-meta-url', + async transform(code, id) { + if (this.environment?.mode === 'dev') { + return; + } + let idx = 0; + + // Look for `new URL("...?worker", import.meta.url)` patterns. + const regex = /new\s+URL\s*\(\s*(['"`])(.*?)\?worker\1\s*,\s*import\.meta\.url\s*\)?/g; + + let match; + let modified = false; + let result = code; + let offset = 0; + /** @type {string[]} */ + const additionalImports = []; + + while ((match = regex.exec(code)) !== null) { + let path = match[2]; + + if (!path.startsWith('.') && !path.startsWith('/')) { + path = `./${path}`; + } + + const start = match.index; + const end = start + match[0].length; + + const varName = `__worker_url_${idx++}__`; + additionalImports.push(`import ${varName} from ${JSON.stringify(path + '?worker&url')};`); + + const replacement = varName; + + result = result.slice(0, start + offset) + replacement + result.slice(end + offset); + offset += replacement.length - (end - start); + modified = true; + } + + if (!modified) { + return null; + } + + result = additionalImports.join('\n') + '\n' + result; + + return { + code: result, + map: null + }; + } + }; +} diff --git a/build/amd/src/editor.main.js b/build/amd/src/editor.main.js new file mode 100644 index 00000000..9c0c23f5 --- /dev/null +++ b/build/amd/src/editor.main.js @@ -0,0 +1,70 @@ +import * as require from 'require'; + +self.MonacoEnvironment = { + getWorker: function (_moduleId, label) { + if (label === 'json') { + return new Worker( + getWorkerBootstrapUrl( + new URL('../../../src/language/json/json.worker.ts?worker', import.meta.url) + ) + ); + } + if (label === 'css' || label === 'scss' || label === 'less') { + return new Worker( + getWorkerBootstrapUrl( + new URL('../../../src/language/css/css.worker.ts?worker', import.meta.url) + ) + ); + } + if (label === 'html' || label === 'handlebars' || label === 'razor') { + return new Worker( + getWorkerBootstrapUrl( + new URL('../../../src/language/html/html.worker.ts?worker', import.meta.url) + ) + ); + } + if (label === 'typescript' || label === 'javascript') { + return new Worker( + getWorkerBootstrapUrl( + new URL('../../../src/language/typescript/ts.worker.ts?worker', import.meta.url) + ) + ); + } + return new Worker( + getWorkerBootstrapUrl(new URL('../../../src/editor/editor.worker.ts?worker', import.meta.url)) + ); + } +}; + +function getWorkerBootstrapUrl(workerScriptUrl) { + const blob = new Blob( + [ + [ + `const ttPolicy = globalThis.trustedTypes?.createPolicy('defaultWorkerFactory', { createScriptURL: value => value });`, + `globalThis.workerttPolicy = ttPolicy;`, + `importScripts(ttPolicy?.createScriptURL(${JSON.stringify( + workerScriptUrl + )}) ?? ${JSON.stringify(workerScriptUrl)});`, + `globalThis.postMessage({ type: 'vscode-worker-ready' });` + ].join('') + ], + { type: 'application/javascript' } + ); + return URL.createObjectURL(blob); +} + +import 'vs/nls.messages-loader!'; +import '../../../src/basic-languages/monaco.contribution'; +import '../../../src/language/css/monaco.contribution'; +import '../../../src/language/html/monaco.contribution'; +import '../../../src/language/json/monaco.contribution'; +import '../../../src/language/typescript/monaco.contribution'; + +const styleSheetUrl = require.toUrl('vs/editor/editor.main.css'); + +const link = document.createElement('link'); +link.rel = 'stylesheet'; +link.href = styleSheetUrl; +document.head.appendChild(link); + +export * as m from 'monaco-editor-core'; diff --git a/build/amd/src/loader.js b/build/amd/src/loader.js new file mode 100644 index 00000000..d674e530 --- /dev/null +++ b/build/amd/src/loader.js @@ -0,0 +1,1368 @@ +'use strict'; +/*!----------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Version: 0.42.0-dev-20230906(e7d7a5b072e74702a912a4c855a3bda21a7757e7) + * Released under the MIT license + * https://github.com/microsoft/vscode/blob/main/LICENSE.txt + *-----------------------------------------------------------*/ const _amdLoaderGlobal = this, + _commonjsGlobal = typeof global == 'object' ? global : {}; +var AMDLoader; +(function (u) { + u.global = _amdLoaderGlobal; + class y { + get isWindows() { + return this._detect(), this._isWindows; + } + get isNode() { + return this._detect(), this._isNode; + } + get isElectronRenderer() { + return this._detect(), this._isElectronRenderer; + } + get isWebWorker() { + return this._detect(), this._isWebWorker; + } + get isElectronNodeIntegrationWebWorker() { + return this._detect(), this._isElectronNodeIntegrationWebWorker; + } + constructor() { + (this._detected = !1), + (this._isWindows = !1), + (this._isNode = !1), + (this._isElectronRenderer = !1), + (this._isWebWorker = !1), + (this._isElectronNodeIntegrationWebWorker = !1); + } + _detect() { + this._detected || + ((this._detected = !0), + (this._isWindows = y._isWindows()), + (this._isNode = typeof module < 'u' && !!module.exports), + (this._isElectronRenderer = + typeof process < 'u' && + typeof process.versions < 'u' && + typeof process.versions.electron < 'u' && + process.type === 'renderer'), + (this._isWebWorker = typeof u.global.importScripts == 'function'), + (this._isElectronNodeIntegrationWebWorker = + this._isWebWorker && + typeof process < 'u' && + typeof process.versions < 'u' && + typeof process.versions.electron < 'u' && + process.type === 'worker')); + } + static _isWindows() { + return typeof navigator < 'u' && + navigator.userAgent && + navigator.userAgent.indexOf('Windows') >= 0 + ? !0 + : typeof process < 'u' + ? process.platform === 'win32' + : !1; + } + } + u.Environment = y; +})(AMDLoader || (AMDLoader = {})); +var AMDLoader; +(function (u) { + class y { + constructor(r, c, a) { + (this.type = r), (this.detail = c), (this.timestamp = a); + } + } + u.LoaderEvent = y; + class m { + constructor(r) { + this._events = [new y(1, '', r)]; + } + record(r, c) { + this._events.push(new y(r, c, u.Utilities.getHighPerformanceTimestamp())); + } + getEvents() { + return this._events; + } + } + u.LoaderEventRecorder = m; + class p { + record(r, c) {} + getEvents() { + return []; + } + } + (p.INSTANCE = new p()), (u.NullLoaderEventRecorder = p); +})(AMDLoader || (AMDLoader = {})); +var AMDLoader; +(function (u) { + class y { + static fileUriToFilePath(p, h) { + if (((h = decodeURI(h).replace(/%23/g, '#')), p)) { + if (/^file:\/\/\//.test(h)) return h.substr(8); + if (/^file:\/\//.test(h)) return h.substr(5); + } else if (/^file:\/\//.test(h)) return h.substr(7); + return h; + } + static startsWith(p, h) { + return p.length >= h.length && p.substr(0, h.length) === h; + } + static endsWith(p, h) { + return p.length >= h.length && p.substr(p.length - h.length) === h; + } + static containsQueryString(p) { + return /^[^\#]*\?/gi.test(p); + } + static isAbsolutePath(p) { + return /^((http:\/\/)|(https:\/\/)|(file:\/\/)|(\/))/.test(p); + } + static forEachProperty(p, h) { + if (p) { + let r; + for (r in p) p.hasOwnProperty(r) && h(r, p[r]); + } + } + static isEmpty(p) { + let h = !0; + return ( + y.forEachProperty(p, () => { + h = !1; + }), + h + ); + } + static recursiveClone(p) { + if ( + !p || + typeof p != 'object' || + p instanceof RegExp || + (!Array.isArray(p) && Object.getPrototypeOf(p) !== Object.prototype) + ) + return p; + let h = Array.isArray(p) ? [] : {}; + return ( + y.forEachProperty(p, (r, c) => { + c && typeof c == 'object' ? (h[r] = y.recursiveClone(c)) : (h[r] = c); + }), + h + ); + } + static generateAnonymousModule() { + return '===anonymous' + y.NEXT_ANONYMOUS_ID++ + '==='; + } + static isAnonymousModule(p) { + return y.startsWith(p, '===anonymous'); + } + static getHighPerformanceTimestamp() { + return ( + this.PERFORMANCE_NOW_PROBED || + ((this.PERFORMANCE_NOW_PROBED = !0), + (this.HAS_PERFORMANCE_NOW = + u.global.performance && typeof u.global.performance.now == 'function')), + this.HAS_PERFORMANCE_NOW ? u.global.performance.now() : Date.now() + ); + } + } + (y.NEXT_ANONYMOUS_ID = 1), + (y.PERFORMANCE_NOW_PROBED = !1), + (y.HAS_PERFORMANCE_NOW = !1), + (u.Utilities = y); +})(AMDLoader || (AMDLoader = {})); +var AMDLoader; +(function (u) { + function y(h) { + if (h instanceof Error) return h; + const r = new Error(h.message || String(h) || 'Unknown Error'); + return h.stack && (r.stack = h.stack), r; + } + u.ensureError = y; + class m { + static validateConfigurationOptions(r) { + function c(a) { + if (a.phase === 'loading') { + console.error('Loading "' + a.moduleId + '" failed'), + console.error(a), + console.error('Here are the modules that depend on it:'), + console.error(a.neededBy); + return; + } + if (a.phase === 'factory') { + console.error('The factory function of "' + a.moduleId + '" has thrown an exception'), + console.error(a), + console.error('Here are the modules that depend on it:'), + console.error(a.neededBy); + return; + } + } + if ( + ((r = r || {}), + typeof r.baseUrl != 'string' && (r.baseUrl = ''), + typeof r.isBuild != 'boolean' && (r.isBuild = !1), + typeof r.paths != 'object' && (r.paths = {}), + typeof r.config != 'object' && (r.config = {}), + typeof r.catchError > 'u' && (r.catchError = !1), + typeof r.recordStats > 'u' && (r.recordStats = !1), + typeof r.urlArgs != 'string' && (r.urlArgs = ''), + typeof r.onError != 'function' && (r.onError = c), + Array.isArray(r.ignoreDuplicateModules) || (r.ignoreDuplicateModules = []), + r.baseUrl.length > 0 && (u.Utilities.endsWith(r.baseUrl, '/') || (r.baseUrl += '/')), + typeof r.cspNonce != 'string' && (r.cspNonce = ''), + typeof r.preferScriptTags > 'u' && (r.preferScriptTags = !1), + r.nodeCachedData && + typeof r.nodeCachedData == 'object' && + (typeof r.nodeCachedData.seed != 'string' && (r.nodeCachedData.seed = 'seed'), + (typeof r.nodeCachedData.writeDelay != 'number' || r.nodeCachedData.writeDelay < 0) && + (r.nodeCachedData.writeDelay = 1e3 * 7), + !r.nodeCachedData.path || typeof r.nodeCachedData.path != 'string')) + ) { + const a = y(new Error("INVALID cached data configuration, 'path' MUST be set")); + (a.phase = 'configuration'), r.onError(a), (r.nodeCachedData = void 0); + } + return r; + } + static mergeConfigurationOptions(r = null, c = null) { + let a = u.Utilities.recursiveClone(c || {}); + return ( + u.Utilities.forEachProperty(r, (t, e) => { + t === 'ignoreDuplicateModules' && typeof a.ignoreDuplicateModules < 'u' + ? (a.ignoreDuplicateModules = a.ignoreDuplicateModules.concat(e)) + : t === 'paths' && typeof a.paths < 'u' + ? u.Utilities.forEachProperty(e, (i, s) => (a.paths[i] = s)) + : t === 'config' && typeof a.config < 'u' + ? u.Utilities.forEachProperty(e, (i, s) => (a.config[i] = s)) + : (a[t] = u.Utilities.recursiveClone(e)); + }), + m.validateConfigurationOptions(a) + ); + } + } + u.ConfigurationOptionsUtil = m; + class p { + constructor(r, c) { + if ( + ((this._env = r), + (this.options = m.mergeConfigurationOptions(c)), + this._createIgnoreDuplicateModulesMap(), + this._createSortedPathsRules(), + this.options.baseUrl === '' && + this.options.nodeRequire && + this.options.nodeRequire.main && + this.options.nodeRequire.main.filename && + this._env.isNode) + ) { + let a = this.options.nodeRequire.main.filename, + t = Math.max(a.lastIndexOf('/'), a.lastIndexOf('\\')); + this.options.baseUrl = a.substring(0, t + 1); + } + } + _createIgnoreDuplicateModulesMap() { + this.ignoreDuplicateModulesMap = {}; + for (let r = 0; r < this.options.ignoreDuplicateModules.length; r++) + this.ignoreDuplicateModulesMap[this.options.ignoreDuplicateModules[r]] = !0; + } + _createSortedPathsRules() { + (this.sortedPathsRules = []), + u.Utilities.forEachProperty(this.options.paths, (r, c) => { + Array.isArray(c) + ? this.sortedPathsRules.push({ from: r, to: c }) + : this.sortedPathsRules.push({ from: r, to: [c] }); + }), + this.sortedPathsRules.sort((r, c) => c.from.length - r.from.length); + } + cloneAndMerge(r) { + return new p(this._env, m.mergeConfigurationOptions(r, this.options)); + } + getOptionsLiteral() { + return this.options; + } + _applyPaths(r) { + let c; + for (let a = 0, t = this.sortedPathsRules.length; a < t; a++) + if (((c = this.sortedPathsRules[a]), u.Utilities.startsWith(r, c.from))) { + let e = []; + for (let i = 0, s = c.to.length; i < s; i++) e.push(c.to[i] + r.substr(c.from.length)); + return e; + } + return [r]; + } + _addUrlArgsToUrl(r) { + return u.Utilities.containsQueryString(r) + ? r + '&' + this.options.urlArgs + : r + '?' + this.options.urlArgs; + } + _addUrlArgsIfNecessaryToUrl(r) { + return this.options.urlArgs ? this._addUrlArgsToUrl(r) : r; + } + _addUrlArgsIfNecessaryToUrls(r) { + if (this.options.urlArgs) + for (let c = 0, a = r.length; c < a; c++) r[c] = this._addUrlArgsToUrl(r[c]); + return r; + } + moduleIdToPaths(r) { + if ( + this._env.isNode && + this.options.amdModulesPattern instanceof RegExp && + !this.options.amdModulesPattern.test(r) + ) + return this.isBuild() ? ['empty:'] : ['node|' + r]; + let c = r, + a; + if (!u.Utilities.endsWith(c, '.js') && !u.Utilities.isAbsolutePath(c)) { + a = this._applyPaths(c); + for (let t = 0, e = a.length; t < e; t++) + (this.isBuild() && a[t] === 'empty:') || + (u.Utilities.isAbsolutePath(a[t]) || (a[t] = this.options.baseUrl + a[t]), + !u.Utilities.endsWith(a[t], '.js') && + !u.Utilities.containsQueryString(a[t]) && + (a[t] = a[t] + '.js')); + } else + !u.Utilities.endsWith(c, '.js') && !u.Utilities.containsQueryString(c) && (c = c + '.js'), + (a = [c]); + return this._addUrlArgsIfNecessaryToUrls(a); + } + requireToUrl(r) { + let c = r; + return ( + u.Utilities.isAbsolutePath(c) || + ((c = this._applyPaths(c)[0]), + u.Utilities.isAbsolutePath(c) || (c = this.options.baseUrl + c)), + this._addUrlArgsIfNecessaryToUrl(c) + ); + } + isBuild() { + return this.options.isBuild; + } + shouldInvokeFactory(r) { + return !!( + !this.options.isBuild || + u.Utilities.isAnonymousModule(r) || + (this.options.buildForceInvokeFactory && this.options.buildForceInvokeFactory[r]) + ); + } + isDuplicateMessageIgnoredFor(r) { + return this.ignoreDuplicateModulesMap.hasOwnProperty(r); + } + getConfigForModule(r) { + if (this.options.config) return this.options.config[r]; + } + shouldCatchError() { + return this.options.catchError; + } + shouldRecordStats() { + return this.options.recordStats; + } + onError(r) { + this.options.onError(r); + } + } + u.Configuration = p; +})(AMDLoader || (AMDLoader = {})); +var AMDLoader; +(function (u) { + class y { + constructor(e) { + (this._env = e), (this._scriptLoader = null), (this._callbackMap = {}); + } + load(e, i, s, n) { + if (!this._scriptLoader) + if (this._env.isWebWorker) this._scriptLoader = new h(); + else if (this._env.isElectronRenderer) { + const { preferScriptTags: d } = e.getConfig().getOptionsLiteral(); + d ? (this._scriptLoader = new m()) : (this._scriptLoader = new r(this._env)); + } else + this._env.isNode + ? (this._scriptLoader = new r(this._env)) + : (this._scriptLoader = new m()); + let l = { callback: s, errorback: n }; + if (this._callbackMap.hasOwnProperty(i)) { + this._callbackMap[i].push(l); + return; + } + (this._callbackMap[i] = [l]), + this._scriptLoader.load( + e, + i, + () => this.triggerCallback(i), + (d) => this.triggerErrorback(i, d) + ); + } + triggerCallback(e) { + let i = this._callbackMap[e]; + delete this._callbackMap[e]; + for (let s = 0; s < i.length; s++) i[s].callback(); + } + triggerErrorback(e, i) { + let s = this._callbackMap[e]; + delete this._callbackMap[e]; + for (let n = 0; n < s.length; n++) s[n].errorback(i); + } + } + class m { + attachListeners(e, i, s) { + let n = () => { + e.removeEventListener('load', l), e.removeEventListener('error', d); + }, + l = (o) => { + n(), i(); + }, + d = (o) => { + n(), s(o); + }; + e.addEventListener('load', l), e.addEventListener('error', d); + } + load(e, i, s, n) { + if (/^node\|/.test(i)) { + let l = e.getConfig().getOptionsLiteral(), + d = c(e.getRecorder(), l.nodeRequire || u.global.nodeRequire), + o = i.split('|'), + _ = null; + try { + _ = d(o[1]); + } catch (f) { + n(f); + return; + } + e.enqueueDefineAnonymousModule([], () => _), s(); + } else { + let l = document.createElement('script'); + l.setAttribute('async', 'async'), + l.setAttribute('type', 'text/javascript'), + this.attachListeners(l, s, n); + const { trustedTypesPolicy: d } = e.getConfig().getOptionsLiteral(); + d && (i = d.createScriptURL(i)), l.setAttribute('src', i); + const { cspNonce: o } = e.getConfig().getOptionsLiteral(); + o && l.setAttribute('nonce', o), document.getElementsByTagName('head')[0].appendChild(l); + } + } + } + function p(t) { + const { trustedTypesPolicy: e } = t.getConfig().getOptionsLiteral(); + try { + return (e ? self.eval(e.createScript('', 'true')) : new Function('true')).call(self), !0; + } catch { + return !1; + } + } + class h { + constructor() { + this._cachedCanUseEval = null; + } + _canUseEval(e) { + return ( + this._cachedCanUseEval === null && (this._cachedCanUseEval = p(e)), this._cachedCanUseEval + ); + } + load(e, i, s, n) { + if (/^node\|/.test(i)) { + const l = e.getConfig().getOptionsLiteral(), + d = c(e.getRecorder(), l.nodeRequire || u.global.nodeRequire), + o = i.split('|'); + let _ = null; + try { + _ = d(o[1]); + } catch (f) { + n(f); + return; + } + e.enqueueDefineAnonymousModule([], function () { + return _; + }), + s(); + } else { + const { trustedTypesPolicy: l } = e.getConfig().getOptionsLiteral(); + if ( + !( + /^((http:)|(https:)|(file:))/.test(i) && + i.substring(0, self.origin.length) !== self.origin + ) && + this._canUseEval(e) + ) { + fetch(i) + .then((o) => { + if (o.status !== 200) throw new Error(o.statusText); + return o.text(); + }) + .then((o) => { + (o = `${o} +//# sourceURL=${i}`), + (l ? self.eval(l.createScript('', o)) : new Function(o)).call(self), + s(); + }) + .then(void 0, n); + return; + } + try { + l && (i = l.createScriptURL(i)), importScripts(i), s(); + } catch (o) { + n(o); + } + } + } + } + class r { + constructor(e) { + (this._env = e), (this._didInitialize = !1), (this._didPatchNodeRequire = !1); + } + _init(e) { + this._didInitialize || + ((this._didInitialize = !0), + (this._fs = e('fs')), + (this._vm = e('vm')), + (this._path = e('path')), + (this._crypto = e('crypto'))); + } + _initNodeRequire(e, i) { + const { nodeCachedData: s } = i.getConfig().getOptionsLiteral(); + if (!s || this._didPatchNodeRequire) return; + this._didPatchNodeRequire = !0; + const n = this, + l = e('module'); + function d(o) { + const _ = o.constructor; + let f = function (v) { + try { + return o.require(v); + } finally { + } + }; + return ( + (f.resolve = function (v, E) { + return _._resolveFilename(v, o, !1, E); + }), + (f.resolve.paths = function (v) { + return _._resolveLookupPaths(v, o); + }), + (f.main = process.mainModule), + (f.extensions = _._extensions), + (f.cache = _._cache), + f + ); + } + l.prototype._compile = function (o, _) { + const f = l.wrap(o.replace(/^#!.*/, '')), + g = i.getRecorder(), + v = n._getCachedDataPath(s, _), + E = { filename: _ }; + let I; + try { + const D = n._fs.readFileSync(v); + (I = D.slice(0, 16)), (E.cachedData = D.slice(16)), g.record(60, v); + } catch { + g.record(61, v); + } + const C = new n._vm.Script(f, E), + P = C.runInThisContext(E), + w = n._path.dirname(_), + R = d(this), + U = [this.exports, R, this, _, w, process, _commonjsGlobal, Buffer], + b = P.apply(this.exports, U); + return ( + n._handleCachedData(C, f, v, !E.cachedData, i), n._verifyCachedData(C, f, v, I, i), b + ); + }; + } + load(e, i, s, n) { + const l = e.getConfig().getOptionsLiteral(), + d = c(e.getRecorder(), l.nodeRequire || u.global.nodeRequire), + o = + l.nodeInstrumenter || + function (f) { + return f; + }; + this._init(d), this._initNodeRequire(d, e); + let _ = e.getRecorder(); + if (/^node\|/.test(i)) { + let f = i.split('|'), + g = null; + try { + g = d(f[1]); + } catch (v) { + n(v); + return; + } + e.enqueueDefineAnonymousModule([], () => g), s(); + } else { + i = u.Utilities.fileUriToFilePath(this._env.isWindows, i); + const f = this._path.normalize(i), + g = this._getElectronRendererScriptPathOrUri(f), + v = !!l.nodeCachedData, + E = v ? this._getCachedDataPath(l.nodeCachedData, i) : void 0; + this._readSourceAndCachedData(f, E, _, (I, C, P, w) => { + if (I) { + n(I); + return; + } + let R; + C.charCodeAt(0) === r._BOM + ? (R = r._PREFIX + C.substring(1) + r._SUFFIX) + : (R = r._PREFIX + C + r._SUFFIX), + (R = o(R, f)); + const U = { filename: g, cachedData: P }, + b = this._createAndEvalScript(e, R, U, s, n); + this._handleCachedData(b, R, E, v && !P, e), this._verifyCachedData(b, R, E, w, e); + }); + } + } + _createAndEvalScript(e, i, s, n, l) { + const d = e.getRecorder(); + d.record(31, s.filename); + const o = new this._vm.Script(i, s), + _ = o.runInThisContext(s), + f = e.getGlobalAMDDefineFunc(); + let g = !1; + const v = function () { + return (g = !0), f.apply(null, arguments); + }; + return ( + (v.amd = f.amd), + _.call( + u.global, + e.getGlobalAMDRequireFunc(), + v, + s.filename, + this._path.dirname(s.filename) + ), + d.record(32, s.filename), + g ? n() : l(new Error(`Didn't receive define call in ${s.filename}!`)), + o + ); + } + _getElectronRendererScriptPathOrUri(e) { + if (!this._env.isElectronRenderer) return e; + let i = e.match(/^([a-z])\:(.*)/i); + return i ? `file:///${(i[1].toUpperCase() + ':' + i[2]).replace(/\\/g, '/')}` : `file://${e}`; + } + _getCachedDataPath(e, i) { + const s = this._crypto + .createHash('md5') + .update(i, 'utf8') + .update(e.seed, 'utf8') + .update(process.arch, '') + .digest('hex'), + n = this._path.basename(i).replace(/\.js$/, ''); + return this._path.join(e.path, `${n}-${s}.code`); + } + _handleCachedData(e, i, s, n, l) { + e.cachedDataRejected + ? this._fs.unlink(s, (d) => { + l.getRecorder().record(62, s), + this._createAndWriteCachedData(e, i, s, l), + d && l.getConfig().onError(d); + }) + : n && this._createAndWriteCachedData(e, i, s, l); + } + _createAndWriteCachedData(e, i, s, n) { + let l = Math.ceil( + n.getConfig().getOptionsLiteral().nodeCachedData.writeDelay * (1 + Math.random()) + ), + d = -1, + o = 0, + _; + const f = () => { + setTimeout(() => { + _ || (_ = this._crypto.createHash('md5').update(i, 'utf8').digest()); + const g = e.createCachedData(); + if (!(g.length === 0 || g.length === d || o >= 5)) { + if (g.length < d) { + f(); + return; + } + (d = g.length), + this._fs.writeFile(s, Buffer.concat([_, g]), (v) => { + v && n.getConfig().onError(v), n.getRecorder().record(63, s), f(); + }); + } + }, l * Math.pow(4, o++)); + }; + f(); + } + _readSourceAndCachedData(e, i, s, n) { + if (!i) this._fs.readFile(e, { encoding: 'utf8' }, n); + else { + let l, + d, + o, + _ = 2; + const f = (g) => { + g ? n(g) : --_ === 0 && n(void 0, l, d, o); + }; + this._fs.readFile(e, { encoding: 'utf8' }, (g, v) => { + (l = v), f(g); + }), + this._fs.readFile(i, (g, v) => { + !g && v && v.length > 0 + ? ((o = v.slice(0, 16)), (d = v.slice(16)), s.record(60, i)) + : s.record(61, i), + f(); + }); + } + } + _verifyCachedData(e, i, s, n, l) { + n && + (e.cachedDataRejected || + setTimeout(() => { + const d = this._crypto.createHash('md5').update(i, 'utf8').digest(); + n.equals(d) || + (l + .getConfig() + .onError( + new Error( + `FAILED TO VERIFY CACHED DATA, deleting stale '${s}' now, but a RESTART IS REQUIRED` + ) + ), + this._fs.unlink(s, (o) => { + o && l.getConfig().onError(o); + })); + }, Math.ceil(5e3 * (1 + Math.random())))); + } + } + (r._BOM = 65279), + (r._PREFIX = '(function (require, define, __filename, __dirname) { '), + (r._SUFFIX = ` +});`); + function c(t, e) { + if (e.__$__isRecorded) return e; + const i = function (n) { + t.record(33, n); + try { + return e(n); + } finally { + t.record(34, n); + } + }; + return (i.__$__isRecorded = !0), i; + } + u.ensureRecordedNodeRequire = c; + function a(t) { + return new y(t); + } + u.createScriptLoader = a; +})(AMDLoader || (AMDLoader = {})); +var AMDLoader; +(function (u) { + class y { + constructor(t) { + let e = t.lastIndexOf('/'); + e !== -1 ? (this.fromModulePath = t.substr(0, e + 1)) : (this.fromModulePath = ''); + } + static _normalizeModuleId(t) { + let e = t, + i; + for (i = /\/\.\//; i.test(e); ) e = e.replace(i, '/'); + for ( + e = e.replace(/^\.\//g, ''), + i = /\/(([^\/])|([^\/][^\/\.])|([^\/\.][^\/])|([^\/][^\/][^\/]+))\/\.\.\//; + i.test(e); + + ) + e = e.replace(i, '/'); + return ( + (e = e.replace(/^(([^\/])|([^\/][^\/\.])|([^\/\.][^\/])|([^\/][^\/][^\/]+))\/\.\.\//, '')), + e + ); + } + resolveModule(t) { + let e = t; + return ( + u.Utilities.isAbsolutePath(e) || + ((u.Utilities.startsWith(e, './') || u.Utilities.startsWith(e, '../')) && + (e = y._normalizeModuleId(this.fromModulePath + e))), + e + ); + } + } + (y.ROOT = new y('')), (u.ModuleIdResolver = y); + class m { + constructor(t, e, i, s, n, l) { + (this.id = t), + (this.strId = e), + (this.dependencies = i), + (this._callback = s), + (this._errorback = n), + (this.moduleIdResolver = l), + (this.exports = {}), + (this.error = null), + (this.exportsPassedIn = !1), + (this.unresolvedDependenciesCount = this.dependencies.length), + (this._isComplete = !1); + } + static _safeInvokeFunction(t, e) { + try { + return { returnedValue: t.apply(u.global, e), producedError: null }; + } catch (i) { + return { returnedValue: null, producedError: i }; + } + } + static _invokeFactory(t, e, i, s) { + return t.shouldInvokeFactory(e) + ? t.shouldCatchError() + ? this._safeInvokeFunction(i, s) + : { returnedValue: i.apply(u.global, s), producedError: null } + : { returnedValue: null, producedError: null }; + } + complete(t, e, i, s) { + this._isComplete = !0; + let n = null; + if (this._callback) + if (typeof this._callback == 'function') { + t.record(21, this.strId); + let l = m._invokeFactory(e, this.strId, this._callback, i); + (n = l.producedError), + t.record(22, this.strId), + !n && + typeof l.returnedValue < 'u' && + (!this.exportsPassedIn || u.Utilities.isEmpty(this.exports)) && + (this.exports = l.returnedValue); + } else this.exports = this._callback; + if (n) { + let l = u.ensureError(n); + (l.phase = 'factory'), + (l.moduleId = this.strId), + (l.neededBy = s(this.id)), + (this.error = l), + e.onError(l); + } + (this.dependencies = null), + (this._callback = null), + (this._errorback = null), + (this.moduleIdResolver = null); + } + onDependencyError(t) { + return ( + (this._isComplete = !0), (this.error = t), this._errorback ? (this._errorback(t), !0) : !1 + ); + } + isComplete() { + return this._isComplete; + } + } + u.Module = m; + class p { + constructor() { + (this._nextId = 0), + (this._strModuleIdToIntModuleId = new Map()), + (this._intModuleIdToStrModuleId = []), + this.getModuleId('exports'), + this.getModuleId('module'), + this.getModuleId('require'); + } + getMaxModuleId() { + return this._nextId; + } + getModuleId(t) { + let e = this._strModuleIdToIntModuleId.get(t); + return ( + typeof e > 'u' && + ((e = this._nextId++), + this._strModuleIdToIntModuleId.set(t, e), + (this._intModuleIdToStrModuleId[e] = t)), + e + ); + } + getStrModuleId(t) { + return this._intModuleIdToStrModuleId[t]; + } + } + class h { + constructor(t) { + this.id = t; + } + } + (h.EXPORTS = new h(0)), (h.MODULE = new h(1)), (h.REQUIRE = new h(2)), (u.RegularDependency = h); + class r { + constructor(t, e, i) { + (this.id = t), (this.pluginId = e), (this.pluginParam = i); + } + } + u.PluginDependency = r; + class c { + constructor(t, e, i, s, n = 0) { + (this._env = t), + (this._scriptLoader = e), + (this._loaderAvailableTimestamp = n), + (this._defineFunc = i), + (this._requireFunc = s), + (this._moduleIdProvider = new p()), + (this._config = new u.Configuration(this._env)), + (this._hasDependencyCycle = !1), + (this._modules2 = []), + (this._knownModules2 = []), + (this._inverseDependencies2 = []), + (this._inversePluginDependencies2 = new Map()), + (this._currentAnonymousDefineCall = null), + (this._recorder = null), + (this._buildInfoPath = []), + (this._buildInfoDefineStack = []), + (this._buildInfoDependencies = []), + (this._requireFunc.moduleManager = this); + } + reset() { + return new c( + this._env, + this._scriptLoader, + this._defineFunc, + this._requireFunc, + this._loaderAvailableTimestamp + ); + } + getGlobalAMDDefineFunc() { + return this._defineFunc; + } + getGlobalAMDRequireFunc() { + return this._requireFunc; + } + static _findRelevantLocationInStack(t, e) { + let i = (l) => l.replace(/\\/g, '/'), + s = i(t), + n = e.split(/\n/); + for (let l = 0; l < n.length; l++) { + let d = n[l].match(/(.*):(\d+):(\d+)\)?$/); + if (d) { + let o = d[1], + _ = d[2], + f = d[3], + g = Math.max(o.lastIndexOf(' ') + 1, o.lastIndexOf('(') + 1); + if (((o = o.substr(g)), (o = i(o)), o === s)) { + let v = { line: parseInt(_, 10), col: parseInt(f, 10) }; + return v.line === 1 && (v.col -= 53), v; + } + } + } + throw new Error('Could not correlate define call site for needle ' + t); + } + getBuildInfo() { + if (!this._config.isBuild()) return null; + let t = [], + e = 0; + for (let i = 0, s = this._modules2.length; i < s; i++) { + let n = this._modules2[i]; + if (!n) continue; + let l = this._buildInfoPath[n.id] || null, + d = this._buildInfoDefineStack[n.id] || null, + o = this._buildInfoDependencies[n.id]; + t[e++] = { + id: n.strId, + path: l, + defineLocation: l && d ? c._findRelevantLocationInStack(l, d) : null, + dependencies: o, + shim: null, + exports: n.exports + }; + } + return t; + } + getRecorder() { + return ( + this._recorder || + (this._config.shouldRecordStats() + ? (this._recorder = new u.LoaderEventRecorder(this._loaderAvailableTimestamp)) + : (this._recorder = u.NullLoaderEventRecorder.INSTANCE)), + this._recorder + ); + } + getLoaderEvents() { + return this.getRecorder().getEvents(); + } + enqueueDefineAnonymousModule(t, e) { + if (this._currentAnonymousDefineCall !== null) + throw new Error('Can only have one anonymous define call per script file'); + let i = null; + this._config.isBuild() && (i = new Error('StackLocation').stack || null), + (this._currentAnonymousDefineCall = { stack: i, dependencies: t, callback: e }); + } + defineModule(t, e, i, s, n, l = new y(t)) { + let d = this._moduleIdProvider.getModuleId(t); + if (this._modules2[d]) { + this._config.isDuplicateMessageIgnoredFor(t) || + console.warn("Duplicate definition of module '" + t + "'"); + return; + } + let o = new m(d, t, this._normalizeDependencies(e, l), i, s, l); + (this._modules2[d] = o), + this._config.isBuild() && + ((this._buildInfoDefineStack[d] = n), + (this._buildInfoDependencies[d] = (o.dependencies || []).map((_) => + this._moduleIdProvider.getStrModuleId(_.id) + ))), + this._resolve(o); + } + _normalizeDependency(t, e) { + if (t === 'exports') return h.EXPORTS; + if (t === 'module') return h.MODULE; + if (t === 'require') return h.REQUIRE; + let i = t.indexOf('!'); + if (i >= 0) { + let s = e.resolveModule(t.substr(0, i)), + n = e.resolveModule(t.substr(i + 1)), + l = this._moduleIdProvider.getModuleId(s + '!' + n), + d = this._moduleIdProvider.getModuleId(s); + return new r(l, d, n); + } + return new h(this._moduleIdProvider.getModuleId(e.resolveModule(t))); + } + _normalizeDependencies(t, e) { + let i = [], + s = 0; + for (let n = 0, l = t.length; n < l; n++) i[s++] = this._normalizeDependency(t[n], e); + return i; + } + _relativeRequire(t, e, i, s) { + if (typeof e == 'string') return this.synchronousRequire(e, t); + this.defineModule(u.Utilities.generateAnonymousModule(), e, i, s, null, t); + } + synchronousRequire(t, e = new y(t)) { + let i = this._normalizeDependency(t, e), + s = this._modules2[i.id]; + if (!s) + throw new Error( + "Check dependency list! Synchronous require cannot resolve module '" + + t + + "'. This is the first mention of this module!" + ); + if (!s.isComplete()) + throw new Error( + "Check dependency list! Synchronous require cannot resolve module '" + + t + + "'. This module has not been resolved completely yet." + ); + if (s.error) throw s.error; + return s.exports; + } + configure(t, e) { + let i = this._config.shouldRecordStats(); + e + ? (this._config = new u.Configuration(this._env, t)) + : (this._config = this._config.cloneAndMerge(t)), + this._config.shouldRecordStats() && !i && (this._recorder = null); + } + getConfig() { + return this._config; + } + _onLoad(t) { + if (this._currentAnonymousDefineCall !== null) { + let e = this._currentAnonymousDefineCall; + (this._currentAnonymousDefineCall = null), + this.defineModule( + this._moduleIdProvider.getStrModuleId(t), + e.dependencies, + e.callback, + null, + e.stack + ); + } + } + _createLoadError(t, e) { + let i = this._moduleIdProvider.getStrModuleId(t), + s = (this._inverseDependencies2[t] || []).map((l) => + this._moduleIdProvider.getStrModuleId(l) + ); + const n = u.ensureError(e); + return (n.phase = 'loading'), (n.moduleId = i), (n.neededBy = s), n; + } + _onLoadError(t, e) { + const i = this._createLoadError(t, e); + this._modules2[t] || + (this._modules2[t] = new m( + t, + this._moduleIdProvider.getStrModuleId(t), + [], + () => {}, + null, + null + )); + let s = []; + for (let d = 0, o = this._moduleIdProvider.getMaxModuleId(); d < o; d++) s[d] = !1; + let n = !1, + l = []; + for (l.push(t), s[t] = !0; l.length > 0; ) { + let d = l.shift(), + o = this._modules2[d]; + o && (n = o.onDependencyError(i) || n); + let _ = this._inverseDependencies2[d]; + if (_) + for (let f = 0, g = _.length; f < g; f++) { + let v = _[f]; + s[v] || (l.push(v), (s[v] = !0)); + } + } + n || this._config.onError(i); + } + _hasDependencyPath(t, e) { + let i = this._modules2[t]; + if (!i) return !1; + let s = []; + for (let l = 0, d = this._moduleIdProvider.getMaxModuleId(); l < d; l++) s[l] = !1; + let n = []; + for (n.push(i), s[t] = !0; n.length > 0; ) { + let d = n.shift().dependencies; + if (d) + for (let o = 0, _ = d.length; o < _; o++) { + let f = d[o]; + if (f.id === e) return !0; + let g = this._modules2[f.id]; + g && !s[f.id] && ((s[f.id] = !0), n.push(g)); + } + } + return !1; + } + _findCyclePath(t, e, i) { + if (t === e || i === 50) return [t]; + let s = this._modules2[t]; + if (!s) return null; + let n = s.dependencies; + if (n) + for (let l = 0, d = n.length; l < d; l++) { + let o = this._findCyclePath(n[l].id, e, i + 1); + if (o !== null) return o.push(t), o; + } + return null; + } + _createRequire(t) { + let e = (i, s, n) => this._relativeRequire(t, i, s, n); + return ( + (e.toUrl = (i) => this._config.requireToUrl(t.resolveModule(i))), + (e.getStats = () => this.getLoaderEvents()), + (e.hasDependencyCycle = () => this._hasDependencyCycle), + (e.config = (i, s = !1) => { + this.configure(i, s); + }), + (e.__$__nodeRequire = u.global.nodeRequire), + e + ); + } + _loadModule(t) { + if (this._modules2[t] || this._knownModules2[t]) return; + this._knownModules2[t] = !0; + let e = this._moduleIdProvider.getStrModuleId(t), + i = this._config.moduleIdToPaths(e), + s = /^@[^\/]+\/[^\/]+$/; + this._env.isNode && (e.indexOf('/') === -1 || s.test(e)) && i.push('node|' + e); + let n = -1, + l = (d) => { + if ((n++, n >= i.length)) this._onLoadError(t, d); + else { + let o = i[n], + _ = this.getRecorder(); + if (this._config.isBuild() && o === 'empty:') { + (this._buildInfoPath[t] = o), + this.defineModule(this._moduleIdProvider.getStrModuleId(t), [], null, null, null), + this._onLoad(t); + return; + } + _.record(10, o), + this._scriptLoader.load( + this, + o, + () => { + this._config.isBuild() && (this._buildInfoPath[t] = o), + _.record(11, o), + this._onLoad(t); + }, + (f) => { + _.record(12, o), l(f); + } + ); + } + }; + l(null); + } + _loadPluginDependency(t, e) { + if (this._modules2[e.id] || this._knownModules2[e.id]) return; + this._knownModules2[e.id] = !0; + let i = (s) => { + this.defineModule(this._moduleIdProvider.getStrModuleId(e.id), [], s, null, null); + }; + (i.error = (s) => { + this._config.onError(this._createLoadError(e.id, s)); + }), + t.load(e.pluginParam, this._createRequire(y.ROOT), i, this._config.getOptionsLiteral()); + } + _resolve(t) { + let e = t.dependencies; + if (e) + for (let i = 0, s = e.length; i < s; i++) { + let n = e[i]; + if (n === h.EXPORTS) { + (t.exportsPassedIn = !0), t.unresolvedDependenciesCount--; + continue; + } + if (n === h.MODULE) { + t.unresolvedDependenciesCount--; + continue; + } + if (n === h.REQUIRE) { + t.unresolvedDependenciesCount--; + continue; + } + let l = this._modules2[n.id]; + if (l && l.isComplete()) { + if (l.error) { + t.onDependencyError(l.error); + return; + } + t.unresolvedDependenciesCount--; + continue; + } + if (this._hasDependencyPath(n.id, t.id)) { + (this._hasDependencyCycle = !0), + console.warn( + "There is a dependency cycle between '" + + this._moduleIdProvider.getStrModuleId(n.id) + + "' and '" + + this._moduleIdProvider.getStrModuleId(t.id) + + "'. The cyclic path follows:" + ); + let d = this._findCyclePath(n.id, t.id, 0) || []; + d.reverse(), + d.push(n.id), + console.warn( + d.map((o) => this._moduleIdProvider.getStrModuleId(o)).join(` => +`) + ), + t.unresolvedDependenciesCount--; + continue; + } + if ( + ((this._inverseDependencies2[n.id] = this._inverseDependencies2[n.id] || []), + this._inverseDependencies2[n.id].push(t.id), + n instanceof r) + ) { + let d = this._modules2[n.pluginId]; + if (d && d.isComplete()) { + this._loadPluginDependency(d.exports, n); + continue; + } + let o = this._inversePluginDependencies2.get(n.pluginId); + o || ((o = []), this._inversePluginDependencies2.set(n.pluginId, o)), + o.push(n), + this._loadModule(n.pluginId); + continue; + } + this._loadModule(n.id); + } + t.unresolvedDependenciesCount === 0 && this._onModuleComplete(t); + } + _onModuleComplete(t) { + let e = this.getRecorder(); + if (t.isComplete()) return; + let i = t.dependencies, + s = []; + if (i) + for (let o = 0, _ = i.length; o < _; o++) { + let f = i[o]; + if (f === h.EXPORTS) { + s[o] = t.exports; + continue; + } + if (f === h.MODULE) { + s[o] = { id: t.strId, config: () => this._config.getConfigForModule(t.strId) }; + continue; + } + if (f === h.REQUIRE) { + s[o] = this._createRequire(t.moduleIdResolver); + continue; + } + let g = this._modules2[f.id]; + if (g) { + s[o] = g.exports; + continue; + } + s[o] = null; + } + const n = (o) => + (this._inverseDependencies2[o] || []).map((_) => this._moduleIdProvider.getStrModuleId(_)); + t.complete(e, this._config, s, n); + let l = this._inverseDependencies2[t.id]; + if (((this._inverseDependencies2[t.id] = null), l)) + for (let o = 0, _ = l.length; o < _; o++) { + let f = l[o], + g = this._modules2[f]; + g.unresolvedDependenciesCount--, + g.unresolvedDependenciesCount === 0 && this._onModuleComplete(g); + } + let d = this._inversePluginDependencies2.get(t.id); + if (d) { + this._inversePluginDependencies2.delete(t.id); + for (let o = 0, _ = d.length; o < _; o++) this._loadPluginDependency(t.exports, d[o]); + } + } + } + u.ModuleManager = c; +})(AMDLoader || (AMDLoader = {})); +var define, AMDLoader; +(function (u) { + const y = new u.Environment(); + let m = null; + const p = function (a, t, e) { + typeof a != 'string' && ((e = t), (t = a), (a = null)), + (typeof t != 'object' || !Array.isArray(t)) && ((e = t), (t = null)), + t || (t = ['require', 'exports', 'module']), + a ? m.defineModule(a, t, e, null, null) : m.enqueueDefineAnonymousModule(t, e); + }; + p.amd = { jQuery: !0 }; + const h = function (a, t = !1) { + m.configure(a, t); + }, + r = function () { + if (arguments.length === 1) { + if (arguments[0] instanceof Object && !Array.isArray(arguments[0])) { + h(arguments[0]); + return; + } + if (typeof arguments[0] == 'string') return m.synchronousRequire(arguments[0]); + } + if ((arguments.length === 2 || arguments.length === 3) && Array.isArray(arguments[0])) { + m.defineModule( + u.Utilities.generateAnonymousModule(), + arguments[0], + arguments[1], + arguments[2], + null + ); + return; + } + throw new Error('Unrecognized require call'); + }; + (r.config = h), + (r.getConfig = function () { + return m.getConfig().getOptionsLiteral(); + }), + (r.reset = function () { + m = m.reset(); + }), + (r.getBuildInfo = function () { + return m.getBuildInfo(); + }), + (r.getStats = function () { + return m.getLoaderEvents(); + }), + (r.define = p); + function c() { + if (typeof u.global.require < 'u' || typeof require < 'u') { + const a = u.global.require || require; + if (typeof a == 'function' && typeof a.resolve == 'function') { + const t = u.ensureRecordedNodeRequire(m.getRecorder(), a); + (u.global.nodeRequire = t), (r.nodeRequire = t), (r.__$__nodeRequire = t); + } + } + y.isNode && !y.isElectronRenderer && !y.isElectronNodeIntegrationWebWorker + ? (module.exports = r) + : (y.isElectronRenderer || (u.global.define = p), (u.global.require = r)); + } + (u.init = c), + (typeof u.global.define != 'function' || !u.global.define.amd) && + ((m = new u.ModuleManager( + y, + u.createScriptLoader(y), + p, + r, + u.Utilities.getHighPerformanceTimestamp() + )), + typeof u.global.require < 'u' && + typeof u.global.require != 'function' && + r.config(u.global.require), + (define = function () { + return p.apply(null, arguments); + }), + (define.amd = p.amd), + typeof doNotInitLoader > 'u' && c()); +})(AMDLoader || (AMDLoader = {})); + +//# sourceMappingURL=../../min-maps/vs/loader.js.map diff --git a/build/amd/src/nls.messages-loader.js b/build/amd/src/nls.messages-loader.js new file mode 100644 index 00000000..825699af --- /dev/null +++ b/build/amd/src/nls.messages-loader.js @@ -0,0 +1,10 @@ +export function load(name, req, load, config) { + const requestedLanguage = config['vs/nls']?.availableLanguages?.['*']; + if (!requestedLanguage || requestedLanguage === 'en') { + load({}); + } else { + req([`vs/nls.messages.${requestedLanguage}`], () => { + load({}); + }); + } +} diff --git a/build/amd/vite.config.js b/build/amd/vite.config.js new file mode 100644 index 00000000..02968a54 --- /dev/null +++ b/build/amd/vite.config.js @@ -0,0 +1,92 @@ +import { readFileSync } from 'node:fs'; +import { glob } from 'node:fs/promises'; +import { basename, dirname, join, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { defineConfig } from 'vite'; +import { urlToEsmPlugin } from './plugin'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +export default defineConfig(async (args) => { + const monacoEditorCoreDir = join( + dirname(require.resolve('monaco-editor-core/package.json')), + 'esm' + ); + const nlsEntries = {}; + for await (const path of glob(`${monacoEditorCoreDir}/nls.messages.*.js`)) { + const entryName = basename(path).replace('.js', ''); + nlsEntries[entryName] = path; + } + + /** @type {import('vite').UserConfig} */ + return { + base: './', + define: { + AMD: false + }, + build: { + lib: { + cssFileName: 'editor/editor.main', + entry: { + ...nlsEntries, + 'nls.messages-loader': resolve(__dirname, 'src/nls.messages-loader.js'), + 'editor/editor.main': resolve(__dirname, 'src/editor.main.js'), + 'basic-languages/monaco.contribution': resolve( + __dirname, + '../../src/basic-languages/monaco.contribution.ts' + ), + 'language/css/monaco.contribution': resolve( + __dirname, + '../../src/language/css/monaco.contribution.ts' + ), + 'language/html/monaco.contribution': resolve( + __dirname, + '../../src/language/html/monaco.contribution.ts' + ), + 'language/json/monaco.contribution': resolve( + __dirname, + '../../src/language/json/monaco.contribution.ts' + ), + 'language/typescript/monaco.contribution': resolve( + __dirname, + '../../src/language/typescript/monaco.contribution.ts' + ) + }, + name: 'monaco-editor', + fileName: (_format, entryName) => entryName + '.js', + formats: ['amd'] + }, + outDir: resolve( + __dirname, + '../../out/monaco-editor/', + args.mode === 'development' ? 'dev' : 'min', + 'vs' + ), + rollupOptions: { + external: ['require', 'vs/nls.messages-loader!'], + output: { + amd: { + basePath: 'vs', + autoId: true + } + } + }, + minify: args.mode !== 'development', + emptyOutDir: true + }, + plugins: [ + { + name: 'copy-loader', + apply: 'build', + generateBundle() { + this.emitFile({ + type: 'asset', + fileName: 'loader.js', + source: readFileSync(resolve(__dirname, './src/loader.js'), 'utf-8') + }); + } + }, + urlToEsmPlugin() + ] + }; +}); diff --git a/build/build-languages.ts b/build/build-languages.ts index a5933794..f2f0d285 100644 --- a/build/build-languages.ts +++ b/build/build-languages.ts @@ -4,8 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import glob from 'glob'; -import { runTsc, massageAndCopyDts, buildESM, buildAMD } from './utils'; -import { copyFile, removeDir } from './fs'; +import { runTsc, massageAndCopyDts, buildESM } from './utils'; +import { removeDir } from './fs'; removeDir(`out/languages`); @@ -14,22 +14,22 @@ runTsc(`src/tsconfig.json`); //#region Type Defintion massageAndCopyDts( - `out/languages/amd-tsc/language/css/monaco.contribution.d.ts`, + `out/languages/tsc/language/css/monaco.contribution.d.ts`, `out/languages/bundled/css.d.ts`, 'monaco.languages.css' ); massageAndCopyDts( - `out/languages/amd-tsc/language/html/monaco.contribution.d.ts`, + `out/languages/tsc/language/html/monaco.contribution.d.ts`, `out/languages/bundled/html.d.ts`, 'monaco.languages.html' ); massageAndCopyDts( - `out/languages/amd-tsc/language/json/monaco.contribution.d.ts`, + `out/languages/tsc/language/json/monaco.contribution.d.ts`, `out/languages/bundled/json.d.ts`, 'monaco.languages.json' ); massageAndCopyDts( - `out/languages/amd-tsc/language/typescript/monaco.contribution.d.ts`, + `out/languages/tsc/language/typescript/monaco.contribution.d.ts`, `out/languages/bundled/typescript.d.ts`, 'monaco.languages.typescript' ); @@ -47,23 +47,6 @@ buildESM({ ], external: ['monaco-editor-core', '*/cssMode', '*/monaco.contribution'] }); -buildAMD({ - base: 'language/css', - entryPoint: 'src/language/css/monaco.contribution.ts', - amdModuleId: 'vs/language/css/monaco.contribution', - amdDependencies: ['vs/editor/editor.api'] -}); -buildAMD({ - base: 'language/css', - entryPoint: 'src/language/css/cssMode.ts', - amdModuleId: 'vs/language/css/cssMode', - external: ['*/monaco.contribution'] -}); -buildAMD({ - base: 'language/css', - entryPoint: 'src/language/css/cssWorker.ts', - amdModuleId: 'vs/language/css/cssWorker' -}); //#endregion @@ -78,23 +61,6 @@ buildESM({ ], external: ['monaco-editor-core', '*/htmlMode', '*/monaco.contribution'] }); -buildAMD({ - base: 'language/html', - entryPoint: 'src/language/html/monaco.contribution.ts', - amdModuleId: 'vs/language/html/monaco.contribution', - amdDependencies: ['vs/editor/editor.api'] -}); -buildAMD({ - base: 'language/html', - entryPoint: 'src/language/html/htmlMode.ts', - amdModuleId: 'vs/language/html/htmlMode', - external: ['*/monaco.contribution'] -}); -buildAMD({ - base: 'language/html', - entryPoint: 'src/language/html/htmlWorker.ts', - amdModuleId: 'vs/language/html/htmlWorker' -}); //#endregion @@ -109,23 +75,6 @@ buildESM({ ], external: ['monaco-editor-core', '*/jsonMode', '*/monaco.contribution'] }); -buildAMD({ - base: 'language/json', - entryPoint: 'src/language/json/monaco.contribution.ts', - amdModuleId: 'vs/language/json/monaco.contribution', - amdDependencies: ['vs/editor/editor.api'] -}); -buildAMD({ - base: 'language/json', - entryPoint: 'src/language/json/jsonMode.ts', - amdModuleId: 'vs/language/json/jsonMode', - external: ['*/monaco.contribution'] -}); -buildAMD({ - base: 'language/json', - entryPoint: 'src/language/json/jsonWorker.ts', - amdModuleId: 'vs/language/json/jsonWorker' -}); //#endregion @@ -140,23 +89,6 @@ buildESM({ ], external: ['monaco-editor-core', '*/tsMode', '*/monaco.contribution'] }); -buildAMD({ - base: 'language/typescript', - entryPoint: 'src/language/typescript/monaco.contribution.ts', - amdModuleId: 'vs/language/typescript/monaco.contribution', - amdDependencies: ['vs/editor/editor.api'] -}); -buildAMD({ - base: 'language/typescript', - entryPoint: 'src/language/typescript/tsMode.ts', - amdModuleId: 'vs/language/typescript/tsMode', - external: ['*/monaco.contribution'] -}); -buildAMD({ - base: 'language/typescript', - entryPoint: 'src/language/typescript/tsWorker.ts', - amdModuleId: 'vs/language/typescript/tsWorker' -}); //#endregion @@ -190,23 +122,6 @@ glob('../src/basic-languages/*/*.contribution.ts', { cwd: __dirname }, function external }); } - - // AMD - { - buildAMD({ - base: 'basic-languages', - entryPoint: 'src/basic-languages/monaco.contribution.ts', - amdModuleId: 'vs/basic-languages/monaco.contribution', - amdDependencies: ['vs/editor/editor.api'] - }); - for (const language of languages) { - buildAMD({ - base: 'basic-languages', - entryPoint: `src/basic-languages/${language}/${language}.ts`, - amdModuleId: `vs/basic-languages/${language}/${language}` - }); - } - } }); //#endregion diff --git a/build/build-monaco-editor.ts b/build/build-monaco-editor.ts index c3aa4b5f..77d1d51c 100644 --- a/build/build-monaco-editor.ts +++ b/build/build-monaco-editor.ts @@ -5,18 +5,23 @@ import path = require('path'); import fs = require('fs'); -import { REPO_ROOT, readFiles, writeFiles, IFile, readFile } from '../build/utils'; +import { + REPO_ROOT, + readFiles, + writeFiles, + IFile, + readFile, + build, + bundledFileHeader +} from '../build/utils'; import { removeDir } from '../build/fs'; -import ts = require('typescript'); import { generateMetadata } from './releaseMetadata'; +import { buildAmdMinDev } from './amd/build.script'; +import ts = require('typescript'); removeDir(`out/monaco-editor`); -// dev folder -AMD_releaseOne('dev'); - -// min folder -AMD_releaseOne('min'); +buildAmdMinDev(); // esm folder ESM_release(); @@ -48,11 +53,6 @@ generateMetadata(); otherFiles = otherFiles.concat(readFiles('README.md', { base: '' })); otherFiles = otherFiles.concat(readFiles('CHANGELOG.md', { base: '' })); - otherFiles = otherFiles.concat( - readFiles('node_modules/monaco-editor-core/min-maps/**/*', { - base: 'node_modules/monaco-editor-core/' - }) - ); otherFiles = otherFiles.concat( readFiles('node_modules/monaco-editor-core/LICENSE', { base: 'node_modules/monaco-editor-core/' @@ -62,114 +62,6 @@ generateMetadata(); writeFiles(otherFiles, `out/monaco-editor`); })(); -/** - * Release to `dev` or `min`. - */ -function AMD_releaseOne(type: 'dev' | 'min') { - let coreFiles = readFiles(`node_modules/monaco-editor-core/${type}/**/*`, { - base: `node_modules/monaco-editor-core/${type}` - }); - coreFiles = fixNlsFiles(coreFiles); - AMD_addPluginContribs(type, coreFiles); - writeFiles(coreFiles, `out/monaco-editor/${type}`); - - const pluginFiles = readFiles(`out/languages/bundled/amd-${type}/**/*`, { - base: `out/languages/bundled/amd-${type}`, - ignore: ['**/monaco.contribution.js'] - }); - writeFiles(pluginFiles, `out/monaco-editor/${type}`); -} - -function fixNlsFiles(files: IFile[]): IFile[] { - return files.map((f) => { - if (!f.path.match(/nls\.messages\.[a-z\-]+\.js/)) { - return f; - } - - const dirName = path.dirname(f.path); - const fileName = path.basename(f.path); - - const newPath = path.join(dirName, 'vs', fileName); - let contentStr = f.contents.toString('utf-8'); - - contentStr = ` -define([], function () { -${contentStr} -}); -`; - - const newContents = Buffer.from(contentStr, 'utf-8'); - - return { - path: newPath, - contents: newContents - }; - }); -} - -/** - * Edit editor.main.js: - * - rename the AMD module 'vs/editor/editor.main' to 'vs/editor/edcore.main' - * - append monaco.contribution modules from plugins - * - append new AMD module 'vs/editor/editor.main' that stiches things together - */ -function AMD_addPluginContribs(type: 'dev' | 'min', files: IFile[]) { - for (const file of files) { - if (!/editor\.main\.js$/.test(file.path)) { - continue; - } - - let contents = file.contents.toString(); - - // Rename the AMD module 'vs/editor/editor.main' to 'vs/editor/edcore.main' - contents = contents.replace(/"vs\/editor\/editor\.main\"/, '"vs/editor/edcore.main"'); - - // This ensures that old nls-plugin configurations are still respected by the new localization solution. - const contentPrefixSource = readFile('src/nls-fix.js') - .contents.toString('utf-8') - .replace(/\r\n|\n/g, ' '); - - // TODO: Instead of adding this source to the header to maintain the source map indices, it should rewrite the sourcemap! - const searchValue = 'https://github.com/microsoft/vscode/blob/main/LICENSE.txt'; - contents = contents.replace(searchValue, searchValue + ' */ ' + contentPrefixSource + ' /*'); - - const pluginFiles = readFiles(`out/languages/bundled/amd-${type}/**/monaco.contribution.js`, { - base: `out/languages/bundled/amd-${type}` - }); - - const extraContent = pluginFiles.map((file) => { - return file.contents - .toString() - .replace( - /define\((['"][a-z\/\-]+\/fillers\/monaco-editor-core['"]),\[\],/, - "define($1,['vs/editor/editor.api']," - ); - }); - - const allPluginsModuleIds = pluginFiles.map((file) => { - return file.path.replace(/\.js$/, ''); - }); - - extraContent.push( - `define("vs/editor/editor.main", ["vs/editor/edcore.main","${allPluginsModuleIds.join( - '","' - )}"], function(api) { return api; });` - ); - let insertIndex = contents.lastIndexOf('//# sourceMappingURL='); - if (insertIndex === -1) { - insertIndex = contents.length; - } - contents = - contents.substring(0, insertIndex) + - '\n' + - extraContent.join('\n') + - '\n' + - contents.substring(insertIndex); - - file.contents = Buffer.from(contents); - } -} - function ESM_release() { const coreFiles = readFiles(`node_modules/monaco-editor-core/esm/**/*`, { base: 'node_modules/monaco-editor-core/esm', @@ -181,6 +73,40 @@ function ESM_release() { writeFiles(coreFiles, `out/monaco-editor/esm`); ESM_releasePlugins(); + + build({ + entryPoints: ['src/editor/editor.main.ts', 'src/editor/editor.worker.ts'], + bundle: true, + target: 'esnext', + format: 'esm', + drop: ['debugger'], + define: { + AMD: 'false' + }, + banner: { + js: bundledFileHeader + }, + external: ['./src/basic-languages/*', './edcore.main.js', './editor.worker.start'], + alias: { + 'monaco-editor-core/esm/vs/editor/editor.worker.start': './editor.worker.start', + 'monaco-editor-core': './edcore.main.js' + }, + outbase: `src/`, + outdir: `out/monaco-editor/esm/vs/`, + plugins: [ + { + name: 'example', + setup(build) { + build.onResolve({ filter: /\/language\/|\/basic-languages\// }, (args) => { + if (args.path.includes('monaco-editor-core')) { + return undefined; + } + return { external: true }; + }); + } + } + ] + }); } /** @@ -198,6 +124,7 @@ function ESM_releasePlugins() { let contents = file.contents.toString(); + // WARNING: this only returns the first occurence of each imported file! const info = ts.preProcessFile(contents); for (let i = info.importedFiles.length - 1; i >= 0; i--) { let importText = info.importedFiles[i].fileName; @@ -290,32 +217,6 @@ function ESM_addPluginContribs(files: IFile[]) { } file.path = file.path.replace(/editor\.main/, 'edcore.main'); } - - const mainFileDestPath = 'vs/editor/editor.main.js'; - - const mainFileImports = readFiles(`out/languages/bundled/esm/**/monaco.contribution.js`, { - base: `out/languages/bundled/esm` - }).map((file) => { - let relativePath = path - .relative(path.dirname(mainFileDestPath), file.path) - .replace(/\\/g, '/') - .replace(/\.js$/, ''); - - if (!/(^\.\/)|(^\.\.\/)/.test(relativePath)) { - relativePath = './' + relativePath; - } - - return relativePath; - }); - - const mainFileContents = - mainFileImports.map((name) => `import '${name}';`).join('\n') + - `\n\nexport * from './edcore.main';`; - - files.push({ - path: mainFileDestPath, - contents: Buffer.from(mainFileContents) - }); } /** @@ -329,6 +230,32 @@ function releaseDTS() { let contents = monacodts.contents.toString(); + const additionalDtsFiles: Record = { + 'out/languages/tsc/common/workers.d.ts': 'monaco.editor' + }; + Object.entries(additionalDtsFiles).forEach(([filePath, namespace]) => { + try { + const dtsFile = readFile(filePath); + let dtsContent = dtsFile.contents.toString(); + + // Remove imports + dtsContent = dtsContent.replace(/import .*\n/gm, ''); + dtsContent = dtsContent.replace(/export declare function/gm, 'export function'); + + // Wrap in namespace if specified + if (namespace) { + dtsContent = `declare namespace ${namespace} {\n${dtsContent + .split('\n') + .map((line) => (line ? ` ${line}` : line)) + .join('\n')}\n}`; + } + + contents += '\n' + dtsContent; + } catch (error) { + console.warn(`Could not read d.ts file: ${filePath}`); + } + }); + const extraContent = readFiles('out/languages/bundled/*.d.ts', { base: 'out/languages/bundled/' }).map((file) => { @@ -366,12 +293,13 @@ function releaseDTS() { /** * Transforms a .d.ts which uses internal modules (namespaces) to one which is usable with external modules * This function is duplicated in the `vscode` repo. + * @param {string} contents */ -function toExternalDTS(contents: string): string { - let lines = contents.split(/\r\n|\r|\n/); +function toExternalDTS(contents) { + const lines = contents.split(/\r\n|\r|\n/); let killNextCloseCurlyBrace = false; for (let i = 0; i < lines.length; i++) { - let line = lines[i]; + const line = lines[i]; if (killNextCloseCurlyBrace) { if ('}' === line) { @@ -399,20 +327,8 @@ function toExternalDTS(contents: string): string { lines[i] = line.replace('declare namespace monaco.', 'export namespace '); } - if (line.indexOf('declare let MonacoEnvironment') === 0) { - lines[i] = [ - 'declare global {', - ' let MonacoEnvironment: Environment | undefined;', - '', - ' interface Window {', - ' MonacoEnvironment?: Environment | undefined;', - ' }', - '}', - '' - ].join('\n'); - } - if (line.indexOf(' MonacoEnvironment?') === 0) { - lines[i] = ` MonacoEnvironment?: Environment | undefined;`; + if (line.indexOf('declare var MonacoEnvironment') === 0) { + lines[i] = `declare global {\n var MonacoEnvironment: Environment | undefined;\n}`; } } return lines.join('\n').replace(/\n\n\n+/g, '\n\n'); diff --git a/build/utils.ts b/build/utils.ts index e69ad6bd..841b4536 100644 --- a/build/utils.ts +++ b/build/utils.ts @@ -122,66 +122,6 @@ export function buildESM(options: { base: string; entryPoints: string[]; externa }); } -function buildOneAMD( - type: 'dev' | 'min', - options: { - base: string; - entryPoint: string; - amdModuleId: string; - amdDependencies?: string[]; - external?: string[]; - } -) { - if (!options.amdDependencies) { - options.amdDependencies = []; - } - options.amdDependencies.unshift('require'); - - const opts: esbuild.BuildOptions = { - entryPoints: [options.entryPoint], - bundle: true, - target: 'esnext', - format: 'iife', - drop: ['debugger'], - define: { - AMD: 'true' - }, - globalName: 'moduleExports', - banner: { - js: `${bundledFileHeader}define("${options.amdModuleId}", [${(options.amdDependencies || []) - .map((dep) => `"${dep}"`) - .join(',')}],(require)=>{` - }, - footer: { - js: 'return moduleExports;\n});' - }, - outbase: `src/${options.base}`, - outdir: `out/languages/bundled/amd-${type}/vs/${options.base}/`, - plugins: [ - alias({ - 'vscode-nls': path.join(__dirname, '../build/fillers/vscode-nls.ts'), - 'monaco-editor-core': path.join(__dirname, '../src/fillers/monaco-editor-core-amd.ts') - }) - ], - external: ['vs/editor/editor.api', ...(options.external || [])] - }; - if (type === 'min') { - opts.minify = true; - } - build(opts); -} - -export function buildAMD(options: { - base: string; - entryPoint: string; - amdModuleId: string; - amdDependencies?: string[]; - external?: string[]; -}) { - buildOneAMD('dev', options); - buildOneAMD('min', options); -} - function getGitVersion() { const git = path.join(REPO_ROOT, '.git'); const headPath = path.join(git, 'HEAD'); diff --git a/docs/integrate-amd.md b/docs/integrate-amd.md deleted file mode 100644 index 422fa179..00000000 --- a/docs/integrate-amd.md +++ /dev/null @@ -1,28 +0,0 @@ -## Integrating the AMD version of the Monaco Editor - -Here is the most basic HTML page that embeds the editor using AMD. - -More self-contained samples are available in the [samples folder](../samples/). - -```html - - - - - - -
- - - - - -``` diff --git a/package-lock.json b/package-lock.json index 625ff63c..8e82afbe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,22 +1,24 @@ { "name": "monaco-editor", - "version": "0.52.0", + "version": "0.53.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "monaco-editor", - "version": "0.52.0", + "version": "0.53.0", "hasInstallScript": true, "license": "MIT", "devDependencies": { + "@playwright/test": "^1.53.2", "@types/mocha": "^9.1.0", "@types/shelljs": "^0.8.11", + "@types/trusted-types": "^1.0.6", "@typescript/vfs": "^1.3.5", "chai": "^4.3.6", "clean-css": "^5.2.4", "css-loader": "^6.7.1", - "esbuild": "^0.20.0", + "esbuild": "^0.25.9", "esbuild-plugin-alias": "^0.2.1", "file-loader": "^6.2.0", "glob": "^7.2.0", @@ -25,10 +27,9 @@ "jsdom": "^19.0.0", "jsonc-parser": "^3.0.0", "mocha": "^9.2.0", - "monaco-editor-core": "0.52.0-rc2", + "monaco-editor-core": "^0.54.0-dev-20250926", "parcel": "^2.7.0", "pin-github-action": "^1.8.0", - "playwright": "^1.32.2", "prettier": "^2.5.1", "pretty-quick": "^3.1.3", "requirejs": "^2.3.7", @@ -37,7 +38,7 @@ "terser": "^5.14.2", "ts-node": "^10.6.0", "typescript": "^5.4.5", - "vite": "^3.2.8", + "vite": "^7.1.5", "vscode-css-languageservice": "6.2.14", "vscode-html-languageservice": "5.2.0", "vscode-json-languageservice": "5.3.11", @@ -176,385 +177,422 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.0.tgz", - "integrity": "sha512-fGFDEctNh0CcSwsiRPxiaqX0P5rq+AqE0SRhYGZ4PX46Lg1FNR6oCxJghf8YgY0WQEgQuh3lErUFE4KxLeRmmw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", + "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" ], "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", - "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.0.tgz", - "integrity": "sha512-aVpnM4lURNkp0D3qPoAzSG92VXStYmoVPOgXveAUoQBWRSuQzt51yvSju29J6AHPmwY1BjH49uR29oyfH1ra8Q==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", + "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.0.tgz", - "integrity": "sha512-uK7wAnlRvjkCPzh8jJ+QejFyrP8ObKuR5cBIsQZ+qbMunwR8sbd8krmMbxTLSrDhiPZaJYKQAU5Y3iMDcZPhyQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz", + "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.0.tgz", - "integrity": "sha512-AjEcivGAlPs3UAcJedMa9qYg9eSfU6FnGHJjT8s346HSKkrcWlYezGE8VaO2xKfvvlZkgAhyvl06OJOxiMgOYQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", + "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.0.tgz", - "integrity": "sha512-bsgTPoyYDnPv8ER0HqnJggXK6RyFy4PH4rtsId0V7Efa90u2+EifxytE9pZnsDgExgkARy24WUQGv9irVbTvIw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", + "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.0.tgz", - "integrity": "sha512-kQ7jYdlKS335mpGbMW5tEe3IrQFIok9r84EM3PXB8qBFJPSc6dpWfrtsC/y1pyrz82xfUIn5ZrnSHQQsd6jebQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", + "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.0.tgz", - "integrity": "sha512-uG8B0WSepMRsBNVXAQcHf9+Ko/Tr+XqmK7Ptel9HVmnykupXdS4J7ovSQUIi0tQGIndhbqWLaIL/qO/cWhXKyQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", + "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.0.tgz", - "integrity": "sha512-2ezuhdiZw8vuHf1HKSf4TIk80naTbP9At7sOqZmdVwvvMyuoDiZB49YZKLsLOfKIr77+I40dWpHVeY5JHpIEIg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", + "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.0.tgz", - "integrity": "sha512-uTtyYAP5veqi2z9b6Gr0NUoNv9F/rOzI8tOD5jKcCvRUn7T60Bb+42NDBCWNhMjkQzI0qqwXkQGo1SY41G52nw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", + "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.0.tgz", - "integrity": "sha512-c88wwtfs8tTffPaoJ+SQn3y+lKtgTzyjkD8NgsyCtCmtoIC8RDL7PrJU05an/e9VuAke6eJqGkoMhJK1RY6z4w==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", + "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", - "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.0.tgz", - "integrity": "sha512-9Sycc+1uUsDnJCelDf6ZNqgZQoK1mJvFtqf2MUz4ujTxGhvCWw+4chYfDLPepMEvVL9PDwn6HrXad5yOrNzIsQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", + "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", "cpu": [ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.0.tgz", - "integrity": "sha512-CoWSaaAXOZd+CjbUTdXIJE/t7Oz+4g90A3VBCHLbfuc5yUQU/nFDLOzQsN0cdxgXd97lYW/psIIBdjzQIwTBGw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", + "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.0.tgz", - "integrity": "sha512-mlb1hg/eYRJUpv8h/x+4ShgoNLL8wgZ64SUr26KwglTYnwAWjkhR2GpoKftDbPOCnodA9t4Y/b68H4J9XmmPzA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", + "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.0.tgz", - "integrity": "sha512-fgf9ubb53xSnOBqyvWEY6ukBNRl1mVX1srPNu06B6mNsNK20JfH6xV6jECzrQ69/VMiTLvHMicQR/PgTOgqJUQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", + "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.0.tgz", - "integrity": "sha512-H9Eu6MGse++204XZcYsse1yFHmRXEWgadk2N58O/xd50P9EvFMLJTQLg+lB4E1cF2xhLZU5luSWtGTb0l9UeSg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", + "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.0.tgz", - "integrity": "sha512-lCT675rTN1v8Fo+RGrE5KjSnfY0x9Og4RN7t7lVrN3vMSjy34/+3na0q7RIfWDAj0e0rCh0OL+P88lu3Rt21MQ==", + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", + "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", "cpu": [ - "x64" + "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.0.tgz", - "integrity": "sha512-HKoUGXz/TOVXKQ+67NhxyHv+aDSZf44QpWLa3I1lLvAwGq8x1k0T+e2HHSRvxWhfJrFxaaqre1+YyzQ99KixoA==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", + "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", + "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.0.tgz", - "integrity": "sha512-GDwAqgHQm1mVoPppGsoq4WJwT3vhnz/2N62CzhvApFD1eJyTroob30FPpOZabN+FgCjhG+AgcZyOPIkR8dfD7g==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", + "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", + "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", + "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.0.tgz", - "integrity": "sha512-0vYsP8aC4TvMlOQYozoksiaxjlvUcQrac+muDqj1Fxy6jh9l9CZJzj7zmh8JGfiV49cYLTorFLxg7593pGldwQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", + "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.0.tgz", - "integrity": "sha512-p98u4rIgfh4gdpV00IqknBD5pC84LCub+4a3MO+zjqvU5MVXOc3hqR2UgT2jI2nh3h8s9EQxmOsVI3tyzv1iFg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", + "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.0.tgz", - "integrity": "sha512-NgJnesu1RtWihtTtXGFMU5YSE6JyyHPMxCwBZK7a6/8d31GuSo9l0Ss7w1Jw5QnKUawG6UEehs883kcXf5fYwg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", + "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, "node_modules/@jridgewell/resolve-uri": { @@ -566,39 +604,33 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.30", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", + "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@lezer/common": { @@ -2187,6 +2219,316 @@ "@parcel/core": "^2.8.1" } }, + "node_modules/@playwright/test": { + "version": "1.54.2", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.54.2.tgz", + "integrity": "sha512-A+znathYxPf+72riFd1r1ovOLqsIIB0jKIoPjyK2kqEIe30/6jF6BC7QNluHuwUmsD2tv1XZVugN8GqfTMOxsA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.54.2" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz", + "integrity": "sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz", + "integrity": "sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz", + "integrity": "sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz", + "integrity": "sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz", + "integrity": "sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz", + "integrity": "sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz", + "integrity": "sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz", + "integrity": "sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz", + "integrity": "sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz", + "integrity": "sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz", + "integrity": "sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz", + "integrity": "sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz", + "integrity": "sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz", + "integrity": "sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz", + "integrity": "sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz", + "integrity": "sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz", + "integrity": "sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz", + "integrity": "sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz", + "integrity": "sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz", + "integrity": "sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz", + "integrity": "sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@swc/helpers": { "version": "0.4.14", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", @@ -2293,10 +2635,14 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.14.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz", - "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==", - "dev": true + "version": "24.3.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.1.tgz", + "integrity": "sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.10.0" + } }, "node_modules/@types/shelljs": { "version": "0.8.11", @@ -2308,6 +2654,12 @@ "@types/node": "*" } }, + "node_modules/@types/trusted-types": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-1.0.6.tgz", + "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==", + "dev": true + }, "node_modules/@typescript/vfs": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@typescript/vfs/-/vfs-1.3.5.tgz", @@ -2500,10 +2852,11 @@ "dev": true }, "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -3467,6 +3820,13 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, + "node_modules/dompurify": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.7.tgz", + "integrity": "sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==", + "dev": true, + "license": "(MPL-2.0 OR Apache-2.0)" + }, "node_modules/domutils": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", @@ -3578,297 +3938,45 @@ "dev": true }, "node_modules/esbuild": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.0.tgz", - "integrity": "sha512-6iwE3Y2RVYCME1jLpBqq7LQWK3MW6vjV2bZy6gt/WrqkY+WE74Spyc0ThAOYpMtITvnjX09CrC6ym7A/m9mebA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz", + "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.0", - "@esbuild/android-arm": "0.20.0", - "@esbuild/android-arm64": "0.20.0", - "@esbuild/android-x64": "0.20.0", - "@esbuild/darwin-arm64": "0.20.0", - "@esbuild/darwin-x64": "0.20.0", - "@esbuild/freebsd-arm64": "0.20.0", - "@esbuild/freebsd-x64": "0.20.0", - "@esbuild/linux-arm": "0.20.0", - "@esbuild/linux-arm64": "0.20.0", - "@esbuild/linux-ia32": "0.20.0", - "@esbuild/linux-loong64": "0.20.0", - "@esbuild/linux-mips64el": "0.20.0", - "@esbuild/linux-ppc64": "0.20.0", - "@esbuild/linux-riscv64": "0.20.0", - "@esbuild/linux-s390x": "0.20.0", - "@esbuild/linux-x64": "0.20.0", - "@esbuild/netbsd-x64": "0.20.0", - "@esbuild/openbsd-x64": "0.20.0", - "@esbuild/sunos-x64": "0.20.0", - "@esbuild/win32-arm64": "0.20.0", - "@esbuild/win32-ia32": "0.20.0", - "@esbuild/win32-x64": "0.20.0" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", - "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", - "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", - "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", - "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", - "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", - "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", - "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", - "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", - "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", - "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", - "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", - "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", - "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", - "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", - "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", - "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" + "@esbuild/aix-ppc64": "0.25.9", + "@esbuild/android-arm": "0.25.9", + "@esbuild/android-arm64": "0.25.9", + "@esbuild/android-x64": "0.25.9", + "@esbuild/darwin-arm64": "0.25.9", + "@esbuild/darwin-x64": "0.25.9", + "@esbuild/freebsd-arm64": "0.25.9", + "@esbuild/freebsd-x64": "0.25.9", + "@esbuild/linux-arm": "0.25.9", + "@esbuild/linux-arm64": "0.25.9", + "@esbuild/linux-ia32": "0.25.9", + "@esbuild/linux-loong64": "0.25.9", + "@esbuild/linux-mips64el": "0.25.9", + "@esbuild/linux-ppc64": "0.25.9", + "@esbuild/linux-riscv64": "0.25.9", + "@esbuild/linux-s390x": "0.25.9", + "@esbuild/linux-x64": "0.25.9", + "@esbuild/netbsd-arm64": "0.25.9", + "@esbuild/netbsd-x64": "0.25.9", + "@esbuild/openbsd-arm64": "0.25.9", + "@esbuild/openbsd-x64": "0.25.9", + "@esbuild/openharmony-arm64": "0.25.9", + "@esbuild/sunos-x64": "0.25.9", + "@esbuild/win32-arm64": "0.25.9", + "@esbuild/win32-ia32": "0.25.9", + "@esbuild/win32-x64": "0.25.9" } }, "node_modules/esbuild-plugin-alias": { @@ -3877,84 +3985,38 @@ "integrity": "sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==", "dev": true }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", - "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", - "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", - "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/esbuild/node_modules/@esbuild/android-arm": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.0.tgz", - "integrity": "sha512-3bMAfInvByLHfJwYPJRlpTeaQA75n8C/QKpEaiS4HrFWFiJlNI0vzq/zCjBrhAYcPyVPG7Eo9dMrcQXuqmNk5g==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz", + "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/esbuild/node_modules/@esbuild/linux-loong64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.0.tgz", - "integrity": "sha512-lR2rr/128/6svngnVta6JN4gxSXle/yZEZL3o4XZ6esOqhyR4wsKyfu6qXAL04S4S5CgGfG+GYZnjFd4YiG3Aw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", + "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/escalade": { @@ -4911,12 +4973,13 @@ } }, "node_modules/lightningcss": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.17.1.tgz", - "integrity": "sha512-DwwM/YYqGwLLP3he41wzDXT/m+8jdEZ80i9ViQNLRgyhey3Vm6N7XHn+4o3PY6wSnVT23WLuaROIpbpIVTNOjg==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", "dev": true, + "license": "MPL-2.0", "dependencies": { - "detect-libc": "^1.0.3" + "detect-libc": "^2.0.3" }, "engines": { "node": ">= 12.0.0" @@ -4926,24 +4989,27 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-darwin-arm64": "1.17.1", - "lightningcss-darwin-x64": "1.17.1", - "lightningcss-linux-arm-gnueabihf": "1.17.1", - "lightningcss-linux-arm64-gnu": "1.17.1", - "lightningcss-linux-arm64-musl": "1.17.1", - "lightningcss-linux-x64-gnu": "1.17.1", - "lightningcss-linux-x64-musl": "1.17.1", - "lightningcss-win32-x64-msvc": "1.17.1" + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.17.1.tgz", - "integrity": "sha512-YTAHEy4XlzI3sMbUVjbPi9P7+N7lGcgl2JhCZhiQdRAEKnZLQch8kb5601sgESxdGXjgei7JZFqi/vVEk81wYg==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "darwin" @@ -4957,13 +5023,14 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.17.1.tgz", - "integrity": "sha512-UhXPUS2+yTTf5sXwUV0+8QY2x0bPGLgC/uhcknWSQMqWn1zGty4fFvH04D7f7ij0ujwSuN+Q0HtU7lgmMrPz0A==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", "cpu": [ "x64" ], "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "darwin" @@ -4976,14 +5043,36 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.17.1.tgz", - "integrity": "sha512-alUZumuznB6K/9yZ0zuZkODXUm8uRnvs9t0CL46CXN16Y2h4gOx5ahUCMlelUb7inZEsgJIoepgLsJzBUrSsBw==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", "cpu": [ "arm" ], "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "linux" @@ -4997,13 +5086,14 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.17.1.tgz", - "integrity": "sha512-/1XaH2cOjDt+ivmgfmVFUYCA0MtfNWwtC4P8qVi53zEQ7P8euyyZ1ynykZOyKXW9Q0DzrwcLTh6+hxVLcbtGBg==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", "cpu": [ "arm64" ], "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "linux" @@ -5017,13 +5107,14 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.17.1.tgz", - "integrity": "sha512-/IgE7lYWFHCCQFTMIwtt+fXLcVOha8rcrNze1JYGPWNorO6NBc6MJo5u5cwn5qMMSz9fZCCDIlBBU4mGwjQszQ==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "linux" @@ -5037,13 +5128,14 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.17.1.tgz", - "integrity": "sha512-OyE802IAp4DB9vZrHlOyWunbHLM9dN08tJIKN/HhzzLKIHizubOWX6NMzUXMZLsaUrYwVAHHdyEA+712p8mMzA==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", "cpu": [ "x64" ], "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "linux" @@ -5057,13 +5149,14 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.17.1.tgz", - "integrity": "sha512-ydwGgV3Usba5P53RAOqCA9MsRsbb8jFIEVhf7/BXFjpKNoIQyijVTXhwIgQr/oGwUNOHfgQ3F8ruiUjX/p2YKw==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", "cpu": [ "x64" ], "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "linux" @@ -5076,14 +5169,15 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.17.1.tgz", - "integrity": "sha512-Ngqtx9NazaiAOk71XWwSsqgAuwYF+8PO6UYsoU7hAukdrSS98kwaBMEDw1igeIiZy1XD/4kh5KVnkjNf7ZOxVQ==", + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", "cpu": [ - "x64" + "arm64" ], "dev": true, + "license": "MPL-2.0", "optional": true, "os": [ "win32" @@ -5096,6 +5190,37 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss/node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", @@ -5217,6 +5342,19 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, + "node_modules/marked": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.0.0.tgz", + "integrity": "sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==", + "dev": true, + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/matcher": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-4.0.0.tgz", @@ -5394,10 +5532,15 @@ "dev": true }, "node_modules/monaco-editor-core": { - "version": "0.52.0-rc2", - "resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.52.0-rc2.tgz", - "integrity": "sha512-buoH7pURwcTnmnO+aQ69jlbJ1Nop7w3sQm1pmBJ6pr/M9/WhAD2GsgL/bOf7kK+Vzd9FlzitlThImezQ28s9+g==", - "dev": true + "version": "0.54.0-dev-20250926", + "resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.54.0-dev-20250926.tgz", + "integrity": "sha512-1GZr1+skTzZt8d8XctvlKm7T6sQpXyr04J7hYMutzXBHJKrYZeyqP5GAVNP/qmbTypwz0uw37fbncaCs/P2tAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "dompurify": "3.1.7", + "marked": "14.0.0" + } }, "node_modules/mri": { "version": "1.2.0", @@ -5824,10 +5967,11 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", @@ -5867,31 +6011,35 @@ } }, "node_modules/playwright": { - "version": "1.32.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.32.2.tgz", - "integrity": "sha512-jHVnXJke0PXpuPszKtk9y1zZSlzO5+2a+aockT/AND0oeXx46FiJEFrafthurglLygVZA+1gEbtUM1C7qtTV+Q==", + "version": "1.54.2", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.54.2.tgz", + "integrity": "sha512-Hu/BMoA1NAdRUuulyvQC0pEqZ4vQbGfn8f7wPXcnqQmM+zct9UliKxsIkLNmz/ku7LElUNqmaiv1TG/aL5ACsw==", "dev": true, - "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.32.2" + "playwright-core": "1.54.2" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=14" + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" } }, "node_modules/playwright-core": { - "version": "1.32.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.32.2.tgz", - "integrity": "sha512-zD7aonO+07kOTthsrCR3YCVnDcqSHIJpdFUtZEMOb6//1Rc7/6mZDRdw+nlzcQiQltOOsiqI3rrSyn/SlyjnJQ==", + "version": "1.54.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.54.2.tgz", + "integrity": "sha512-n5r4HFbMmWsB4twG7tJLDN9gmBUeSPcsBZiWSE4DnYz9mJMAFqr2ID7+eGC9kpEnxExJ1epttwR59LEWCk8mtA==", "dev": true, + "license": "Apache-2.0", "bin": { - "playwright": "cli.js" + "playwright-core": "cli.js" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/portfinder": { @@ -5918,9 +6066,9 @@ } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -5936,10 +6084,11 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -6024,9 +6173,9 @@ "dev": true }, "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -6034,6 +6183,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -6366,20 +6516,53 @@ } }, "node_modules/rollup": { - "version": "2.79.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", - "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz", + "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==", "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0", + "npm": ">=8.0.0" }, "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.50.1", + "@rollup/rollup-android-arm64": "4.50.1", + "@rollup/rollup-darwin-arm64": "4.50.1", + "@rollup/rollup-darwin-x64": "4.50.1", + "@rollup/rollup-freebsd-arm64": "4.50.1", + "@rollup/rollup-freebsd-x64": "4.50.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.50.1", + "@rollup/rollup-linux-arm-musleabihf": "4.50.1", + "@rollup/rollup-linux-arm64-gnu": "4.50.1", + "@rollup/rollup-linux-arm64-musl": "4.50.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.50.1", + "@rollup/rollup-linux-ppc64-gnu": "4.50.1", + "@rollup/rollup-linux-riscv64-gnu": "4.50.1", + "@rollup/rollup-linux-riscv64-musl": "4.50.1", + "@rollup/rollup-linux-s390x-gnu": "4.50.1", + "@rollup/rollup-linux-x64-gnu": "4.50.1", + "@rollup/rollup-linux-x64-musl": "4.50.1", + "@rollup/rollup-openharmony-arm64": "4.50.1", + "@rollup/rollup-win32-arm64-msvc": "4.50.1", + "@rollup/rollup-win32-ia32-msvc": "4.50.1", + "@rollup/rollup-win32-x64-msvc": "4.50.1", "fsevents": "~2.3.2" } }, + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -6534,10 +6717,11 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -6703,13 +6887,14 @@ } }, "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", + "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -6766,6 +6951,54 @@ "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", "dev": true }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -6917,6 +7150,13 @@ "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", + "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", + "dev": true, + "license": "MIT" + }, "node_modules/union": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", @@ -7023,43 +7263,63 @@ "dev": true }, "node_modules/vite": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.8.tgz", - "integrity": "sha512-EtQU16PLIJpAZol2cTLttNP1mX6L0SyI0pgQB1VOoWeQnMSvtiwovV3D6NcjN8CZQWWyESD2v5NGnpz5RvgOZA==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.5.tgz", + "integrity": "sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==", "dev": true, + "license": "MIT", "dependencies": { - "esbuild": "^0.15.9", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" }, "optionalDependencies": { - "fsevents": "~2.3.2" + "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "jiti": { + "optional": true + }, "less": { "optional": true }, + "lightningcss": { + "optional": true + }, "sass": { "optional": true }, + "sass-embedded": { + "optional": true + }, "stylus": { "optional": true }, @@ -7068,60 +7328,59 @@ }, "terser": { "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } }, - "node_modules/vite/node_modules/esbuild": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", - "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=12.0.0" }, - "optionalDependencies": { - "@esbuild/android-arm": "0.15.18", - "@esbuild/linux-loong64": "0.15.18", - "esbuild-android-64": "0.15.18", - "esbuild-android-arm64": "0.15.18", - "esbuild-darwin-64": "0.15.18", - "esbuild-darwin-arm64": "0.15.18", - "esbuild-freebsd-64": "0.15.18", - "esbuild-freebsd-arm64": "0.15.18", - "esbuild-linux-32": "0.15.18", - "esbuild-linux-64": "0.15.18", - "esbuild-linux-arm": "0.15.18", - "esbuild-linux-arm64": "0.15.18", - "esbuild-linux-mips64le": "0.15.18", - "esbuild-linux-ppc64le": "0.15.18", - "esbuild-linux-riscv64": "0.15.18", - "esbuild-linux-s390x": "0.15.18", - "esbuild-netbsd-64": "0.15.18", - "esbuild-openbsd-64": "0.15.18", - "esbuild-sunos-64": "0.15.18", - "esbuild-windows-32": "0.15.18", - "esbuild-windows-64": "0.15.18", - "esbuild-windows-arm64": "0.15.18" + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/vite/node_modules/esbuild-windows-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", - "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", - "cpu": [ - "x64" - ], + "node_modules/vite/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ - "win32" + "darwin" ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/vscode-css-languageservice": { @@ -7429,12 +7688,16 @@ "dev": true }, "node_modules/yaml": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", - "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, "engines": { - "node": ">= 14" + "node": ">= 14.6" } }, "node_modules/yargs": { @@ -7611,175 +7874,181 @@ } }, "@esbuild/aix-ppc64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.0.tgz", - "integrity": "sha512-fGFDEctNh0CcSwsiRPxiaqX0P5rq+AqE0SRhYGZ4PX46Lg1FNR6oCxJghf8YgY0WQEgQuh3lErUFE4KxLeRmmw==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", - "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", + "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", "dev": true, "optional": true }, "@esbuild/android-arm64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.0.tgz", - "integrity": "sha512-aVpnM4lURNkp0D3qPoAzSG92VXStYmoVPOgXveAUoQBWRSuQzt51yvSju29J6AHPmwY1BjH49uR29oyfH1ra8Q==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", + "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", "dev": true, "optional": true }, "@esbuild/android-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.0.tgz", - "integrity": "sha512-uK7wAnlRvjkCPzh8jJ+QejFyrP8ObKuR5cBIsQZ+qbMunwR8sbd8krmMbxTLSrDhiPZaJYKQAU5Y3iMDcZPhyQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz", + "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", "dev": true, "optional": true }, "@esbuild/darwin-arm64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.0.tgz", - "integrity": "sha512-AjEcivGAlPs3UAcJedMa9qYg9eSfU6FnGHJjT8s346HSKkrcWlYezGE8VaO2xKfvvlZkgAhyvl06OJOxiMgOYQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", + "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", "dev": true, "optional": true }, "@esbuild/darwin-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.0.tgz", - "integrity": "sha512-bsgTPoyYDnPv8ER0HqnJggXK6RyFy4PH4rtsId0V7Efa90u2+EifxytE9pZnsDgExgkARy24WUQGv9irVbTvIw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", + "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", "dev": true, "optional": true }, "@esbuild/freebsd-arm64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.0.tgz", - "integrity": "sha512-kQ7jYdlKS335mpGbMW5tEe3IrQFIok9r84EM3PXB8qBFJPSc6dpWfrtsC/y1pyrz82xfUIn5ZrnSHQQsd6jebQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", + "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", "dev": true, "optional": true }, "@esbuild/freebsd-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.0.tgz", - "integrity": "sha512-uG8B0WSepMRsBNVXAQcHf9+Ko/Tr+XqmK7Ptel9HVmnykupXdS4J7ovSQUIi0tQGIndhbqWLaIL/qO/cWhXKyQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", + "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", "dev": true, "optional": true }, "@esbuild/linux-arm": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.0.tgz", - "integrity": "sha512-2ezuhdiZw8vuHf1HKSf4TIk80naTbP9At7sOqZmdVwvvMyuoDiZB49YZKLsLOfKIr77+I40dWpHVeY5JHpIEIg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", + "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", "dev": true, "optional": true }, "@esbuild/linux-arm64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.0.tgz", - "integrity": "sha512-uTtyYAP5veqi2z9b6Gr0NUoNv9F/rOzI8tOD5jKcCvRUn7T60Bb+42NDBCWNhMjkQzI0qqwXkQGo1SY41G52nw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", + "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", "dev": true, "optional": true }, "@esbuild/linux-ia32": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.0.tgz", - "integrity": "sha512-c88wwtfs8tTffPaoJ+SQn3y+lKtgTzyjkD8NgsyCtCmtoIC8RDL7PrJU05an/e9VuAke6eJqGkoMhJK1RY6z4w==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", - "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", + "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", "dev": true, "optional": true }, "@esbuild/linux-mips64el": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.0.tgz", - "integrity": "sha512-9Sycc+1uUsDnJCelDf6ZNqgZQoK1mJvFtqf2MUz4ujTxGhvCWw+4chYfDLPepMEvVL9PDwn6HrXad5yOrNzIsQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", + "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", "dev": true, "optional": true }, "@esbuild/linux-ppc64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.0.tgz", - "integrity": "sha512-CoWSaaAXOZd+CjbUTdXIJE/t7Oz+4g90A3VBCHLbfuc5yUQU/nFDLOzQsN0cdxgXd97lYW/psIIBdjzQIwTBGw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", + "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", "dev": true, "optional": true }, "@esbuild/linux-riscv64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.0.tgz", - "integrity": "sha512-mlb1hg/eYRJUpv8h/x+4ShgoNLL8wgZ64SUr26KwglTYnwAWjkhR2GpoKftDbPOCnodA9t4Y/b68H4J9XmmPzA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", + "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", "dev": true, "optional": true }, "@esbuild/linux-s390x": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.0.tgz", - "integrity": "sha512-fgf9ubb53xSnOBqyvWEY6ukBNRl1mVX1srPNu06B6mNsNK20JfH6xV6jECzrQ69/VMiTLvHMicQR/PgTOgqJUQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", + "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", "dev": true, "optional": true }, "@esbuild/linux-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.0.tgz", - "integrity": "sha512-H9Eu6MGse++204XZcYsse1yFHmRXEWgadk2N58O/xd50P9EvFMLJTQLg+lB4E1cF2xhLZU5luSWtGTb0l9UeSg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", + "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", + "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", "dev": true, "optional": true }, "@esbuild/netbsd-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.0.tgz", - "integrity": "sha512-lCT675rTN1v8Fo+RGrE5KjSnfY0x9Og4RN7t7lVrN3vMSjy34/+3na0q7RIfWDAj0e0rCh0OL+P88lu3Rt21MQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", + "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", + "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", "dev": true, "optional": true }, "@esbuild/openbsd-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.0.tgz", - "integrity": "sha512-HKoUGXz/TOVXKQ+67NhxyHv+aDSZf44QpWLa3I1lLvAwGq8x1k0T+e2HHSRvxWhfJrFxaaqre1+YyzQ99KixoA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", + "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", + "dev": true, + "optional": true + }, + "@esbuild/openharmony-arm64": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", + "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", "dev": true, "optional": true }, "@esbuild/sunos-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.0.tgz", - "integrity": "sha512-GDwAqgHQm1mVoPppGsoq4WJwT3vhnz/2N62CzhvApFD1eJyTroob30FPpOZabN+FgCjhG+AgcZyOPIkR8dfD7g==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", + "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", "dev": true, "optional": true }, "@esbuild/win32-arm64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.0.tgz", - "integrity": "sha512-0vYsP8aC4TvMlOQYozoksiaxjlvUcQrac+muDqj1Fxy6jh9l9CZJzj7zmh8JGfiV49cYLTorFLxg7593pGldwQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", + "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", "dev": true, "optional": true }, "@esbuild/win32-ia32": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.0.tgz", - "integrity": "sha512-p98u4rIgfh4gdpV00IqknBD5pC84LCub+4a3MO+zjqvU5MVXOc3hqR2UgT2jI2nh3h8s9EQxmOsVI3tyzv1iFg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", + "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", "dev": true, "optional": true }, "@esbuild/win32-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.0.tgz", - "integrity": "sha512-NgJnesu1RtWihtTtXGFMU5YSE6JyyHPMxCwBZK7a6/8d31GuSo9l0Ss7w1Jw5QnKUawG6UEehs883kcXf5fYwg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", + "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", "dev": true, "optional": true }, "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, "@jridgewell/resolve-uri": { @@ -7788,36 +8057,30 @@ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "dev": true }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "dev": true, "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "version": "0.3.30", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", + "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@lezer/common": { @@ -8896,6 +9159,162 @@ "nullthrows": "^1.1.1" } }, + "@playwright/test": { + "version": "1.54.2", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.54.2.tgz", + "integrity": "sha512-A+znathYxPf+72riFd1r1ovOLqsIIB0jKIoPjyK2kqEIe30/6jF6BC7QNluHuwUmsD2tv1XZVugN8GqfTMOxsA==", + "dev": true, + "requires": { + "playwright": "1.54.2" + } + }, + "@rollup/rollup-android-arm-eabi": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz", + "integrity": "sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==", + "dev": true, + "optional": true + }, + "@rollup/rollup-android-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz", + "integrity": "sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz", + "integrity": "sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-darwin-x64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz", + "integrity": "sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-freebsd-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz", + "integrity": "sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-freebsd-x64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz", + "integrity": "sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz", + "integrity": "sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm-musleabihf": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz", + "integrity": "sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz", + "integrity": "sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-arm64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz", + "integrity": "sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz", + "integrity": "sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-ppc64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz", + "integrity": "sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-riscv64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz", + "integrity": "sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-riscv64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz", + "integrity": "sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-s390x-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz", + "integrity": "sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-gnu": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz", + "integrity": "sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-linux-x64-musl": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz", + "integrity": "sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==", + "dev": true, + "optional": true + }, + "@rollup/rollup-openharmony-arm64": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz", + "integrity": "sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-arm64-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz", + "integrity": "sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-ia32-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz", + "integrity": "sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==", + "dev": true, + "optional": true + }, + "@rollup/rollup-win32-x64-msvc": { + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz", + "integrity": "sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==", + "dev": true, + "optional": true + }, "@swc/helpers": { "version": "0.4.14", "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", @@ -8996,10 +9415,13 @@ "dev": true }, "@types/node": { - "version": "18.14.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz", - "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==", - "dev": true + "version": "24.3.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.1.tgz", + "integrity": "sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==", + "dev": true, + "requires": { + "undici-types": "~7.10.0" + } }, "@types/shelljs": { "version": "0.8.11", @@ -9011,6 +9433,12 @@ "@types/node": "*" } }, + "@types/trusted-types": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-1.0.6.tgz", + "integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==", + "dev": true + }, "@typescript/vfs": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@typescript/vfs/-/vfs-1.3.5.tgz", @@ -9203,9 +9631,9 @@ "dev": true }, "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true }, "acorn-globals": { @@ -9915,6 +10343,12 @@ "domelementtype": "^2.2.0" } }, + "dompurify": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.7.tgz", + "integrity": "sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==", + "dev": true + }, "domutils": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", @@ -10008,191 +10442,61 @@ "dev": true }, "esbuild": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.0.tgz", - "integrity": "sha512-6iwE3Y2RVYCME1jLpBqq7LQWK3MW6vjV2bZy6gt/WrqkY+WE74Spyc0ThAOYpMtITvnjX09CrC6ym7A/m9mebA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz", + "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", "dev": true, "requires": { - "@esbuild/aix-ppc64": "0.20.0", - "@esbuild/android-arm": "0.20.0", - "@esbuild/android-arm64": "0.20.0", - "@esbuild/android-x64": "0.20.0", - "@esbuild/darwin-arm64": "0.20.0", - "@esbuild/darwin-x64": "0.20.0", - "@esbuild/freebsd-arm64": "0.20.0", - "@esbuild/freebsd-x64": "0.20.0", - "@esbuild/linux-arm": "0.20.0", - "@esbuild/linux-arm64": "0.20.0", - "@esbuild/linux-ia32": "0.20.0", - "@esbuild/linux-loong64": "0.20.0", - "@esbuild/linux-mips64el": "0.20.0", - "@esbuild/linux-ppc64": "0.20.0", - "@esbuild/linux-riscv64": "0.20.0", - "@esbuild/linux-s390x": "0.20.0", - "@esbuild/linux-x64": "0.20.0", - "@esbuild/netbsd-x64": "0.20.0", - "@esbuild/openbsd-x64": "0.20.0", - "@esbuild/sunos-x64": "0.20.0", - "@esbuild/win32-arm64": "0.20.0", - "@esbuild/win32-ia32": "0.20.0", - "@esbuild/win32-x64": "0.20.0" + "@esbuild/aix-ppc64": "0.25.9", + "@esbuild/android-arm": "0.25.9", + "@esbuild/android-arm64": "0.25.9", + "@esbuild/android-x64": "0.25.9", + "@esbuild/darwin-arm64": "0.25.9", + "@esbuild/darwin-x64": "0.25.9", + "@esbuild/freebsd-arm64": "0.25.9", + "@esbuild/freebsd-x64": "0.25.9", + "@esbuild/linux-arm": "0.25.9", + "@esbuild/linux-arm64": "0.25.9", + "@esbuild/linux-ia32": "0.25.9", + "@esbuild/linux-loong64": "0.25.9", + "@esbuild/linux-mips64el": "0.25.9", + "@esbuild/linux-ppc64": "0.25.9", + "@esbuild/linux-riscv64": "0.25.9", + "@esbuild/linux-s390x": "0.25.9", + "@esbuild/linux-x64": "0.25.9", + "@esbuild/netbsd-arm64": "0.25.9", + "@esbuild/netbsd-x64": "0.25.9", + "@esbuild/openbsd-arm64": "0.25.9", + "@esbuild/openbsd-x64": "0.25.9", + "@esbuild/openharmony-arm64": "0.25.9", + "@esbuild/sunos-x64": "0.25.9", + "@esbuild/win32-arm64": "0.25.9", + "@esbuild/win32-ia32": "0.25.9", + "@esbuild/win32-x64": "0.25.9" }, "dependencies": { "@esbuild/android-arm": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.0.tgz", - "integrity": "sha512-3bMAfInvByLHfJwYPJRlpTeaQA75n8C/QKpEaiS4HrFWFiJlNI0vzq/zCjBrhAYcPyVPG7Eo9dMrcQXuqmNk5g==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz", + "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", "dev": true, "optional": true }, "@esbuild/linux-loong64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.0.tgz", - "integrity": "sha512-lR2rr/128/6svngnVta6JN4gxSXle/yZEZL3o4XZ6esOqhyR4wsKyfu6qXAL04S4S5CgGfG+GYZnjFd4YiG3Aw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", + "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", "dev": true, "optional": true } } }, - "esbuild-android-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", - "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", - "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", - "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", - "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", - "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", - "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", - "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", - "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", - "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", - "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", - "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", - "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", - "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", - "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", - "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", - "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", - "dev": true, - "optional": true - }, "esbuild-plugin-alias": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz", "integrity": "sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ==", "dev": true }, - "esbuild-sunos-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", - "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", - "dev": true, - "optional": true - }, - "esbuild-windows-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", - "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", - "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", - "dev": true, - "optional": true - }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -10844,75 +11148,99 @@ } }, "lightningcss": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.17.1.tgz", - "integrity": "sha512-DwwM/YYqGwLLP3he41wzDXT/m+8jdEZ80i9ViQNLRgyhey3Vm6N7XHn+4o3PY6wSnVT23WLuaROIpbpIVTNOjg==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", "dev": true, "requires": { - "detect-libc": "^1.0.3", - "lightningcss-darwin-arm64": "1.17.1", - "lightningcss-darwin-x64": "1.17.1", - "lightningcss-linux-arm-gnueabihf": "1.17.1", - "lightningcss-linux-arm64-gnu": "1.17.1", - "lightningcss-linux-arm64-musl": "1.17.1", - "lightningcss-linux-x64-gnu": "1.17.1", - "lightningcss-linux-x64-musl": "1.17.1", - "lightningcss-win32-x64-msvc": "1.17.1" + "detect-libc": "^2.0.3", + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + }, + "dependencies": { + "detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "dev": true + } } }, "lightningcss-darwin-arm64": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.17.1.tgz", - "integrity": "sha512-YTAHEy4XlzI3sMbUVjbPi9P7+N7lGcgl2JhCZhiQdRAEKnZLQch8kb5601sgESxdGXjgei7JZFqi/vVEk81wYg==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", "dev": true, "optional": true }, "lightningcss-darwin-x64": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.17.1.tgz", - "integrity": "sha512-UhXPUS2+yTTf5sXwUV0+8QY2x0bPGLgC/uhcknWSQMqWn1zGty4fFvH04D7f7ij0ujwSuN+Q0HtU7lgmMrPz0A==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "dev": true, + "optional": true + }, + "lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", "dev": true, "optional": true }, "lightningcss-linux-arm-gnueabihf": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.17.1.tgz", - "integrity": "sha512-alUZumuznB6K/9yZ0zuZkODXUm8uRnvs9t0CL46CXN16Y2h4gOx5ahUCMlelUb7inZEsgJIoepgLsJzBUrSsBw==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", "dev": true, "optional": true }, "lightningcss-linux-arm64-gnu": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.17.1.tgz", - "integrity": "sha512-/1XaH2cOjDt+ivmgfmVFUYCA0MtfNWwtC4P8qVi53zEQ7P8euyyZ1ynykZOyKXW9Q0DzrwcLTh6+hxVLcbtGBg==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", "dev": true, "optional": true }, "lightningcss-linux-arm64-musl": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.17.1.tgz", - "integrity": "sha512-/IgE7lYWFHCCQFTMIwtt+fXLcVOha8rcrNze1JYGPWNorO6NBc6MJo5u5cwn5qMMSz9fZCCDIlBBU4mGwjQszQ==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", "dev": true, "optional": true }, "lightningcss-linux-x64-gnu": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.17.1.tgz", - "integrity": "sha512-OyE802IAp4DB9vZrHlOyWunbHLM9dN08tJIKN/HhzzLKIHizubOWX6NMzUXMZLsaUrYwVAHHdyEA+712p8mMzA==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", "dev": true, "optional": true }, "lightningcss-linux-x64-musl": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.17.1.tgz", - "integrity": "sha512-ydwGgV3Usba5P53RAOqCA9MsRsbb8jFIEVhf7/BXFjpKNoIQyijVTXhwIgQr/oGwUNOHfgQ3F8ruiUjX/p2YKw==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "dev": true, + "optional": true + }, + "lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", "dev": true, "optional": true }, "lightningcss-win32-x64-msvc": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.17.1.tgz", - "integrity": "sha512-Ngqtx9NazaiAOk71XWwSsqgAuwYF+8PO6UYsoU7hAukdrSS98kwaBMEDw1igeIiZy1XD/4kh5KVnkjNf7ZOxVQ==", + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", "dev": true, "optional": true }, @@ -11015,6 +11343,12 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, + "marked": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.0.0.tgz", + "integrity": "sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==", + "dev": true + }, "matcher": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-4.0.0.tgz", @@ -11150,10 +11484,14 @@ } }, "monaco-editor-core": { - "version": "0.52.0-rc2", - "resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.52.0-rc2.tgz", - "integrity": "sha512-buoH7pURwcTnmnO+aQ69jlbJ1Nop7w3sQm1pmBJ6pr/M9/WhAD2GsgL/bOf7kK+Vzd9FlzitlThImezQ28s9+g==", - "dev": true + "version": "0.54.0-dev-20250926", + "resolved": "https://registry.npmjs.org/monaco-editor-core/-/monaco-editor-core-0.54.0-dev-20250926.tgz", + "integrity": "sha512-1GZr1+skTzZt8d8XctvlKm7T6sQpXyr04J7hYMutzXBHJKrYZeyqP5GAVNP/qmbTypwz0uw37fbncaCs/P2tAg==", + "dev": true, + "requires": { + "dompurify": "3.1.7", + "marked": "14.0.0" + } }, "mri": { "version": "1.2.0", @@ -11470,9 +11808,9 @@ "dev": true }, "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true }, "picomatch": { @@ -11503,18 +11841,19 @@ } }, "playwright": { - "version": "1.32.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.32.2.tgz", - "integrity": "sha512-jHVnXJke0PXpuPszKtk9y1zZSlzO5+2a+aockT/AND0oeXx46FiJEFrafthurglLygVZA+1gEbtUM1C7qtTV+Q==", + "version": "1.54.2", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.54.2.tgz", + "integrity": "sha512-Hu/BMoA1NAdRUuulyvQC0pEqZ4vQbGfn8f7wPXcnqQmM+zct9UliKxsIkLNmz/ku7LElUNqmaiv1TG/aL5ACsw==", "dev": true, "requires": { - "playwright-core": "1.32.2" + "fsevents": "2.3.2", + "playwright-core": "1.54.2" } }, "playwright-core": { - "version": "1.32.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.32.2.tgz", - "integrity": "sha512-zD7aonO+07kOTthsrCR3YCVnDcqSHIJpdFUtZEMOb6//1Rc7/6mZDRdw+nlzcQiQltOOsiqI3rrSyn/SlyjnJQ==", + "version": "1.54.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.54.2.tgz", + "integrity": "sha512-n5r4HFbMmWsB4twG7tJLDN9gmBUeSPcsBZiWSE4DnYz9mJMAFqr2ID7+eGC9kpEnxExJ1epttwR59LEWCk8mtA==", "dev": true }, "portfinder": { @@ -11540,20 +11879,20 @@ } }, "postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "dependencies": { "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true } } @@ -11851,12 +12190,42 @@ "dev": true }, "rollup": { - "version": "2.79.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", - "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "version": "4.50.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz", + "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==", "dev": true, "requires": { + "@rollup/rollup-android-arm-eabi": "4.50.1", + "@rollup/rollup-android-arm64": "4.50.1", + "@rollup/rollup-darwin-arm64": "4.50.1", + "@rollup/rollup-darwin-x64": "4.50.1", + "@rollup/rollup-freebsd-arm64": "4.50.1", + "@rollup/rollup-freebsd-x64": "4.50.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.50.1", + "@rollup/rollup-linux-arm-musleabihf": "4.50.1", + "@rollup/rollup-linux-arm64-gnu": "4.50.1", + "@rollup/rollup-linux-arm64-musl": "4.50.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.50.1", + "@rollup/rollup-linux-ppc64-gnu": "4.50.1", + "@rollup/rollup-linux-riscv64-gnu": "4.50.1", + "@rollup/rollup-linux-riscv64-musl": "4.50.1", + "@rollup/rollup-linux-s390x-gnu": "4.50.1", + "@rollup/rollup-linux-x64-gnu": "4.50.1", + "@rollup/rollup-linux-x64-musl": "4.50.1", + "@rollup/rollup-openharmony-arm64": "4.50.1", + "@rollup/rollup-win32-arm64-msvc": "4.50.1", + "@rollup/rollup-win32-ia32-msvc": "4.50.1", + "@rollup/rollup-win32-x64-msvc": "4.50.1", + "@types/estree": "1.0.8", "fsevents": "~2.3.2" + }, + "dependencies": { + "@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true + } } }, "safe-buffer": { @@ -11965,9 +12334,9 @@ "dev": true }, "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true }, "source-map-support": { @@ -12075,13 +12444,13 @@ "dev": true }, "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", + "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", "dev": true, "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -12113,6 +12482,31 @@ "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", "dev": true }, + "tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "requires": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "dependencies": { + "fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "requires": {} + }, + "picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true + } + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -12211,6 +12605,12 @@ "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true }, + "undici-types": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", + "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", + "dev": true + }, "union": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", @@ -12292,54 +12692,39 @@ "dev": true }, "vite": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.8.tgz", - "integrity": "sha512-EtQU16PLIJpAZol2cTLttNP1mX6L0SyI0pgQB1VOoWeQnMSvtiwovV3D6NcjN8CZQWWyESD2v5NGnpz5RvgOZA==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.5.tgz", + "integrity": "sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==", "dev": true, "requires": { - "esbuild": "^0.15.9", - "fsevents": "~2.3.2", - "postcss": "^8.4.18", - "resolve": "^1.22.1", - "rollup": "^2.79.1" + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "fsevents": "~2.3.3", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" }, "dependencies": { - "esbuild": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", - "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", + "fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, - "requires": { - "@esbuild/android-arm": "0.15.18", - "@esbuild/linux-loong64": "0.15.18", - "esbuild-android-64": "0.15.18", - "esbuild-android-arm64": "0.15.18", - "esbuild-darwin-64": "0.15.18", - "esbuild-darwin-arm64": "0.15.18", - "esbuild-freebsd-64": "0.15.18", - "esbuild-freebsd-arm64": "0.15.18", - "esbuild-linux-32": "0.15.18", - "esbuild-linux-64": "0.15.18", - "esbuild-linux-arm": "0.15.18", - "esbuild-linux-arm64": "0.15.18", - "esbuild-linux-mips64le": "0.15.18", - "esbuild-linux-ppc64le": "0.15.18", - "esbuild-linux-riscv64": "0.15.18", - "esbuild-linux-s390x": "0.15.18", - "esbuild-netbsd-64": "0.15.18", - "esbuild-openbsd-64": "0.15.18", - "esbuild-sunos-64": "0.15.18", - "esbuild-windows-32": "0.15.18", - "esbuild-windows-64": "0.15.18", - "esbuild-windows-arm64": "0.15.18" - } + "requires": {} }, - "esbuild-windows-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", - "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "optional": true + }, + "picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true } } }, @@ -12577,9 +12962,9 @@ "dev": true }, "yaml": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", - "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", "dev": true }, "yargs": { diff --git a/package.json b/package.json index bdc41ec1..a2b4c8f2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "monaco-editor", - "version": "0.52.0", - "vscodeRef": "493330cdc6475247184ea459c66776c3da12cd2d", + "version": "0.53.0", + "vscodeRef": "e296bdfe0313d571a6f58399b22afd199f6da454", "private": true, "description": "A browser based code editor", "homepage": "https://github.com/microsoft/monaco-editor", @@ -9,8 +9,6 @@ "license": "MIT", "scripts": { "import-typescript": "ts-node ./build/importTypescript", - "playwright-install": "node ./node_modules/playwright/install.js", - "playwright-install-deps": "playwright install-deps", "postinstall": "ts-node ./build/postinstall", "prettier-check": "prettier --check .", "prettier": "prettier --write .", @@ -22,13 +20,14 @@ "package-for-smoketest-vite": "ts-node ./test/smoke/package-vite", "smoketest": "node ./test/smoke/runner.js", "smoketest-debug": "node ./test/smoke/runner.js --debug-tests", - "test": "mocha test/unit/all.js && ts-node ./build/check-samples", + "test": "ts-node ./build/check-samples", "deps-all-remove": "ts-node ./build/npm/removeAll", "deps-all-install": "ts-node ./build/npm/installAll", "update-actions": "pin-github-action ./.github/workflows/website.yml", "watch": "tsc -w -p ./src", - "build": "ts-node ./build/build-languages", - "build-monaco-editor": "npm run build && ts-node ./build/build-monaco-editor" + "build-languages": "ts-node ./build/build-languages", + "build-monaco-editor": "ts-node ./build/build-monaco-editor", + "build": "npm run build-languages && npm run build-monaco-editor" }, "typings": "./esm/vs/editor/editor.api.d.ts", "module": "./esm/vs/editor/editor.main.js", @@ -37,13 +36,15 @@ "url": "https://github.com/microsoft/monaco-editor" }, "devDependencies": { + "@playwright/test": "^1.53.2", "@types/mocha": "^9.1.0", "@types/shelljs": "^0.8.11", + "@types/trusted-types": "^1.0.6", "@typescript/vfs": "^1.3.5", "chai": "^4.3.6", "clean-css": "^5.2.4", "css-loader": "^6.7.1", - "esbuild": "^0.20.0", + "esbuild": "^0.25.9", "esbuild-plugin-alias": "^0.2.1", "file-loader": "^6.2.0", "glob": "^7.2.0", @@ -52,10 +53,9 @@ "jsdom": "^19.0.0", "jsonc-parser": "^3.0.0", "mocha": "^9.2.0", - "monaco-editor-core": "0.52.0-rc2", + "monaco-editor-core": "^0.54.0-dev-20250926", "parcel": "^2.7.0", "pin-github-action": "^1.8.0", - "playwright": "^1.32.2", "prettier": "^2.5.1", "pretty-quick": "^3.1.3", "requirejs": "^2.3.7", @@ -64,7 +64,7 @@ "terser": "^5.14.2", "ts-node": "^10.6.0", "typescript": "^5.4.5", - "vite": "^3.2.8", + "vite": "^7.1.5", "vscode-css-languageservice": "6.2.14", "vscode-html-languageservice": "5.2.0", "vscode-json-languageservice": "5.3.11", diff --git a/samples/browser-script-editor/index.html b/samples/browser-script-editor/index.html deleted file mode 100644 index e11bc811..00000000 --- a/samples/browser-script-editor/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - -

Monaco Editor Sync Loading Sample

-
- - - - - - - - diff --git a/samples/legacy/README.md b/samples/legacy/README.md new file mode 100644 index 00000000..30acc3b5 --- /dev/null +++ b/samples/legacy/README.md @@ -0,0 +1,2 @@ +These AMD samples are not supported anymore and will be removed in future releases. +Please use the ESM version of the editor! diff --git a/samples/browser-amd-diff-editor/index.html b/samples/legacy/browser-amd-diff-editor/index.html similarity index 90% rename from samples/browser-amd-diff-editor/index.html rename to samples/legacy/browser-amd-diff-editor/index.html index 7ff7891b..e1c080dc 100644 --- a/samples/browser-amd-diff-editor/index.html +++ b/samples/legacy/browser-amd-diff-editor/index.html @@ -7,9 +7,9 @@

Monaco Diff Editor Sample

- + + + + + + + +