diff --git a/.changeset/spicy-walls-listen.md b/.changeset/spicy-walls-listen.md new file mode 100644 index 000000000..9d18bb790 --- /dev/null +++ b/.changeset/spicy-walls-listen.md @@ -0,0 +1,5 @@ +--- +"synckit": patch +--- + +refactor: split into chunk files, add `module-sync` entry diff --git a/.editorconfig b/.editorconfig index aaaa7a4ba..cc109204d 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,10 +1,10 @@ -root = true +root=true [*] -indent_style = space -indent_size = 2 -tab_width = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true +indent_style=space +indent_size=2 +tab_width=2 +end_of_line=lf +charset=utf-8 +trim_trailing_whitespace=true +insert_final_newline=true diff --git a/.github/workflows/autofix.yml b/.github/workflows/autofix.yml new file mode 100644 index 000000000..4df29af6e --- /dev/null +++ b/.github/workflows/autofix.yml @@ -0,0 +1,36 @@ +name: autofix.ci # For security reasons, the workflow in which the autofix.ci action is used must be named "autofix.ci". + +on: + pull_request: + types: + - opened + - reopened + - synchronize + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + autofix: + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + + - name: Setup Node.js LTS + uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4 + with: + node-version: lts/* + cache: yarn + + - name: Install dependencies + run: yarn --immutable + + - name: Format Codes + run: yarn format + + - name: Apply autofix.ci + uses: autofix-ci/action@2891949f3779a1cafafae1523058501de3d4e944 # v1 + with: + fail-fast: false diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9b61138d0..94505995b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,7 +37,8 @@ jobs: node-version: ${{ matrix.node }} cache: yarn - - uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2 + - name: Setup Bun ${{ matrix.bun }} + uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2 with: bun-version: ${{ matrix.bun }} diff --git a/.github/workflows/pkg-pr-new.yml b/.github/workflows/pkg-pr-new.yml index 328ee3d18..65675645c 100644 --- a/.github/workflows/pkg-pr-new.yml +++ b/.github/workflows/pkg-pr-new.yml @@ -27,4 +27,4 @@ jobs: - name: Build run: yarn build - - run: yarn dlx pkg-pr-new publish + - run: yarn dlx pkg-pr-new publish --compact diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9d25afc84..7e9fbd118 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,6 +9,11 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true +permissions: + contents: write + id-token: write + pull-requests: write + jobs: release: name: Release @@ -42,4 +47,5 @@ jobs: publish: yarn release env: GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + NPM_CONFIG_PROVENANCE: true NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/size-limit.yml b/.github/workflows/size-limit.yml new file mode 100644 index 000000000..b901de81b --- /dev/null +++ b/.github/workflows/size-limit.yml @@ -0,0 +1,36 @@ +name: Size Limit + +on: + pull_request: + branches: + - master + - v3.x + +permissions: + contents: read + pull-requests: write + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + size-limit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup Node.js LTS + uses: actions/setup-node@v4 + with: + node-version: lts/* + cache: yarn + + - name: Install Dependencies + run: yarn --immutable + + - uses: andresz1/size-limit-action@v1.8.0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + skip_step: install + script: yarn size-limit --json diff --git a/.size-limit.json b/.size-limit.json new file mode 100644 index 000000000..915772484 --- /dev/null +++ b/.size-limit.json @@ -0,0 +1,6 @@ +[ + { + "path": "./lib/index.js", + "limit": "1kB" + } +] diff --git a/README.md b/README.md index e83cc6035..e558ae26b 100644 --- a/README.md +++ b/README.md @@ -204,15 +204,15 @@ You can try it with running `yarn benchmark` by yourself. [Here](./benchmarks/be ## Sponsors -| 1stG | RxTS | UnTS | -| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| [![1stG Open Collective backers and sponsors](https://opencollective.com/1stG/organizations.svg)](https://opencollective.com/1stG) | [![RxTS Open Collective backers and sponsors](https://opencollective.com/rxts/organizations.svg)](https://opencollective.com/rxts) | [![UnTS Open Collective backers and sponsors](https://opencollective.com/unts/organizations.svg)](https://opencollective.com/unts) | +| 1stG | RxTS | UnTS | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| [![1stG Open Collective sponsors](https://opencollective.com/1stG/organizations.svg)](https://opencollective.com/1stG) | [![RxTS Open Collective sponsors](https://opencollective.com/rxts/organizations.svg)](https://opencollective.com/rxts) | [![UnTS Open Collective sponsors](https://opencollective.com/unts/organizations.svg)](https://opencollective.com/unts) | ## Backers -| 1stG | RxTS | UnTS | -| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -| [![1stG Open Collective backers and sponsors](https://opencollective.com/1stG/individuals.svg)](https://opencollective.com/1stG) | [![RxTS Open Collective backers and sponsors](https://opencollective.com/rxts/individuals.svg)](https://opencollective.com/rxts) | [![UnTS Open Collective backers and sponsors](https://opencollective.com/unts/individuals.svg)](https://opencollective.com/unts) | +| 1stG | RxTS | UnTS | +| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | +| [![1stG Open Collective backers](https://opencollective.com/1stG/individuals.svg)](https://opencollective.com/1stG) | [![RxTS Open Collective backers](https://opencollective.com/rxts/individuals.svg)](https://opencollective.com/rxts) | [![UnTS Open Collective backers](https://opencollective.com/unts/individuals.svg)](https://opencollective.com/unts) | ## Who are using `synckit` diff --git a/benchmarks/benchmark.cjs b/benchmarks/benchmark.cjs index 168326873..3555fd487 100644 --- a/benchmarks/benchmark.cjs +++ b/benchmarks/benchmark.cjs @@ -7,7 +7,7 @@ const RUN_TIMES = +(process.env.RUN_TIMES || 1000) /** * @param {string} name * @typedef {{ loadTime: number, runTime: number, totalTime: number } | void} PerfResult - * @returns {PerfResult} Perf result + * @returns {PerfResult | void} Perf result */ const perfCase = name => { const loadStartTime = performance.now() diff --git a/package.json b/package.json index 376e7bade..85986b9f1 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,9 @@ "version": "0.10.3", "type": "module", "description": "Perform async work synchronously in Node.js using `worker_threads` with first-class TypeScript support.", - "repository": "git+https://github.com/un-ts/synckit.git", - "author": "JounQin (https://www.1stG.me) ", - "funding": "https://opencollective.com/unts", + "repository": "https://github.com/un-ts/synckit.git", + "author": "JounQin (https://www.1stG.me)", + "funding": "https://opencollective.com/synckit", "license": "MIT", "packageManager": "yarn@4.8.1", "engines": { @@ -18,6 +18,10 @@ "types": "./lib/index.d.ts", "default": "./lib/index.js" }, + "module-sync": { + "types": "./lib/index.d.ts", + "default": "./lib/index.js" + }, "require": { "types": "./index.d.cts", "default": "./lib/index.cjs" @@ -50,6 +54,7 @@ "build": "concurrently -r 'yarn:build:*'", "build:r": "r -f cjs", "build:ts": "tsc -p src", + "format": "prettier --write .", "lint": "concurrently -r 'yarn:lint:*'", "lint:es": "eslint . --cache --max-warnings 10", "lint:tsc": "tsc --noEmit", @@ -64,14 +69,13 @@ "tslib": "^2.8.1" }, "devDependencies": { - "@1stg/common-config": "^11.0.5", + "@1stg/common-config": "^11.1.1", "@changesets/changelog-github": "^0.5.1", "@changesets/cli": "^2.28.1", "@commitlint/cli": "^19.8.0", "@pkgr/rollup": "^6.0.1", - "@swc-node/register": "^1.10.10", "@types/jest": "^29.5.14", - "@types/node": "^22.13.11", + "@types/node": "^22.13.17", "@unts/patch-package": "^8.1.1", "clean-pkg-json": "^1.2.1", "concurrently": "^9.1.2", @@ -81,15 +85,17 @@ "eslint": "^9.23.0", "jest": "^29.7.0", "lint-staged": "^15.5.0", - "make-synchronized": "^0.7.0", - "node-gyp": "^11.1.0", + "make-synchronized": "^0.7.2", + "node-gyp": "^11.2.0", "prettier": "^3.5.3", "simple-git-hooks": "^2.12.1", + "size-limit": "^11.2.0", + "size-limit-preset-node-lib": "^0.3.0", "sync-threads": "^1.0.1", "synckit": "link:.", - "tinyexec": "^1.0.0", + "tinyexec": "^1.0.1", "ts-expect": "^1.3.0", - "ts-jest": "^29.2.6", + "ts-jest": "^29.3.1", "ts-node": "^10.9.2", "tsx": "^4.19.3", "type-coverage": "^2.29.7", @@ -116,16 +122,13 @@ ], "moduleNameMapper": { "^(\\.{1,2}/.*)\\.js$": "$1", - "^synckit$": "/src" + "^synckit$": "/src/index.ts" }, "transform": { "^.+\\.tsx?$": [ "ts-jest", { - "useESM": true, - "tsconfig": { - "importHelpers": false - } + "useESM": true } ] } diff --git a/src/common.ts b/src/common.ts new file mode 100644 index 000000000..a0a8ba7a6 --- /dev/null +++ b/src/common.ts @@ -0,0 +1,25 @@ +const NODE_OPTIONS = process.env.NODE_OPTIONS?.split(/\s+/) + +export const hasFlag = (flag: string) => + NODE_OPTIONS?.includes(flag) || process.argv.includes(flag) + +export const parseVersion = (version: string) => + version.split('.').map(Number.parseFloat) + +// A naive implementation of semver comparison +export const compareVersion = (version1: string, version2: string) => { + const versions1 = parseVersion(version1) + const versions2 = parseVersion(version2) + const length = Math.max(versions1.length, versions2.length) + for (let i = 0; i < length; i++) { + const v1 = versions1[i] || 0 + const v2 = versions2[i] || 0 + if (v1 > v2) { + return 1 + } + if (v1 < v2) { + return -1 + } + } + return 0 +} diff --git a/src/constants.ts b/src/constants.ts new file mode 100644 index 000000000..8bb2a0054 --- /dev/null +++ b/src/constants.ts @@ -0,0 +1,83 @@ +import { compareVersion, hasFlag } from './common.js' +import type { GlobalShim, ValueOf } from './types.js' + +export const TsRunner = { + // https://nodejs.org/docs/latest/api/typescript.html#type-stripping + Node: 'node', + // https://bun.sh/docs/typescript + Bun: 'bun', + // https://github.com/TypeStrong/ts-node + TsNode: 'ts-node', + // https://github.com/egoist/esbuild-register + EsbuildRegister: 'esbuild-register', + // https://github.com/folke/esbuild-runner + EsbuildRunner: 'esbuild-runner', + // https://github.com/swc-project/swc-node/tree/master/packages/register + SWC: 'swc', + // https://github.com/esbuild-kit/tsx + TSX: 'tsx', +} as const + +export type TsRunner = ValueOf + +const { + NODE_OPTIONS: NODE_OPTIONS_ = '', + SYNCKIT_EXEC_ARGV = '', + SYNCKIT_GLOBAL_SHIMS, + SYNCKIT_TIMEOUT, + SYNCKIT_TS_RUNNER, +} = process.env + +export const MTS_SUPPORTED_NODE_VERSION = '16' +export const LOADER_SUPPORTED_NODE_VERSION = '20' + +// https://nodejs.org/docs/latest-v22.x/api/typescript.html#type-stripping +export const STRIP_TYPES_NODE_VERSION = '22.6' + +// https://nodejs.org/docs/latest-v23.x/api/typescript.html#modules-typescript +export const TRANSFORM_TYPES_NODE_VERSION = '22.7' + +// https://nodejs.org/docs/latest-v22.x/api/process.html#processfeaturestypescript +export const FEATURE_TYPESCRIPT_NODE_VERSION = '22.10' + +// https://nodejs.org/docs/latest-v23.x/api/typescript.html#type-stripping +export const DEFAULT_TYPES_NODE_VERSION = '23.6' + +export const STRIP_TYPES_FLAG = '--experimental-strip-types' +export const TRANSFORM_TYPES_FLAG = '--experimental-transform-types' +export const NO_STRIP_TYPES_FLAG = '--no-experimental-strip-types' + +export const NODE_OPTIONS = NODE_OPTIONS_.split(/\s+/) + +export const NODE_VERSION = process.versions.node + +export const NO_STRIP_TYPES = // >= + compareVersion(NODE_VERSION, FEATURE_TYPESCRIPT_NODE_VERSION) >= 0 + ? process.features.typescript === false + : hasFlag(NO_STRIP_TYPES_FLAG) && + !hasFlag(STRIP_TYPES_FLAG) && + !hasFlag(TRANSFORM_TYPES_FLAG) + +export const DEFAULT_TIMEOUT = SYNCKIT_TIMEOUT ? +SYNCKIT_TIMEOUT : undefined + +export const DEFAULT_EXEC_ARGV = SYNCKIT_EXEC_ARGV.split(',') + +export const DEFAULT_TS_RUNNER = SYNCKIT_TS_RUNNER as TsRunner | undefined + +export const DEFAULT_GLOBAL_SHIMS = ['1', 'true'].includes( + SYNCKIT_GLOBAL_SHIMS!, +) + +export const DEFAULT_GLOBAL_SHIMS_PRESET: GlobalShim[] = [ + { + moduleName: 'node-fetch', + globalName: 'fetch', + }, + { + moduleName: 'node:perf_hooks', + globalName: 'performance', + named: 'performance', + }, +] + +export const INT32_BYTES = 4 diff --git a/src/helpers.ts b/src/helpers.ts new file mode 100644 index 000000000..27d1301b4 --- /dev/null +++ b/src/helpers.ts @@ -0,0 +1,624 @@ +import { createHash } from 'node:crypto' +import fs from 'node:fs' +import path from 'node:path' +import { fileURLToPath, pathToFileURL } from 'node:url' +import { + type MessagePort, + Worker, + receiveMessageOnPort, +} from 'node:worker_threads' + +import { tryExtensions, findUp, cjsRequire, isPkgAvailable } from '@pkgr/core' + +import { compareVersion } from './common.js' +import { + DEFAULT_EXEC_ARGV, + DEFAULT_GLOBAL_SHIMS, + DEFAULT_GLOBAL_SHIMS_PRESET, + DEFAULT_TIMEOUT, + DEFAULT_TS_RUNNER, + DEFAULT_TYPES_NODE_VERSION, + INT32_BYTES, + LOADER_SUPPORTED_NODE_VERSION, + MTS_SUPPORTED_NODE_VERSION, + NO_STRIP_TYPES, + NO_STRIP_TYPES_FLAG, + NODE_OPTIONS, + NODE_VERSION, + STRIP_TYPES_FLAG, + STRIP_TYPES_NODE_VERSION, + TRANSFORM_TYPES_FLAG, + TRANSFORM_TYPES_NODE_VERSION, + TsRunner, +} from './constants.js' +import type { + AnyFn, + GlobalShim, + MainToWorkerCommandMessage, + MainToWorkerMessage, + PackageJson, + StdioChunk, + SynckitOptions, + WorkerToMainMessage, +} from './types.js' + +export const isFile = (path: string) => { + try { + return !!fs.statSync(path, { throwIfNoEntry: false })?.isFile() + } catch { + /* istanbul ignore next */ + return false + } +} + +export const dataUrl = (code: string) => + new URL(`data:text/javascript,${encodeURIComponent(code)}`) + +export const setupTsRunner = ( + workerPath: string, + { execArgv, tsRunner }: { execArgv: string[]; tsRunner?: TsRunner }, // eslint-disable-next-line sonarjs/cognitive-complexity +) => { + let ext = path.extname(workerPath) + + if ( + !/([/\\])node_modules\1/.test(workerPath) && + (!ext || /^\.[cm]?js$/.test(ext)) + ) { + const workPathWithoutExt = ext + ? workerPath.slice(0, -ext.length) + : workerPath + let extensions: string[] + switch (ext) { + case '.cjs': { + extensions = ['.cts', '.cjs'] + break + } + case '.mjs': { + extensions = ['.mts', '.mjs'] + break + } + default: { + extensions = ['.ts', '.js'] + break + } + } + const found = tryExtensions(workPathWithoutExt, extensions) + let differentExt: boolean | undefined + if (found && (!ext || (differentExt = found !== workPathWithoutExt))) { + workerPath = found + if (differentExt) { + ext = path.extname(workerPath) + } + } + } + + const isTs = /\.[cm]?ts$/.test(workerPath) + + let jsUseEsm = workerPath.endsWith('.mjs') + let tsUseEsm = workerPath.endsWith('.mts') + + if (isTs) { + if (!tsUseEsm) { + const pkg = findUp(workerPath) + if (pkg) { + tsUseEsm = cjsRequire(pkg).type === 'module' + } + } + + const stripTypesIndex = execArgv.indexOf(STRIP_TYPES_FLAG) + const transformTypesIndex = execArgv.indexOf(TRANSFORM_TYPES_FLAG) + const noStripTypesIndex = execArgv.indexOf(NO_STRIP_TYPES_FLAG) + + const execArgvNoStripTypes = + noStripTypesIndex > stripTypesIndex || + noStripTypesIndex > transformTypesIndex + + const noStripTypes = + execArgvNoStripTypes || + (stripTypesIndex === -1 && transformTypesIndex === -1 && NO_STRIP_TYPES) + + if (tsRunner == null) { + if (process.versions.bun) { + tsRunner = TsRunner.Bun + } else if ( + !noStripTypes && + // >= + compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) >= 0 + ) { + tsRunner = TsRunner.Node + } else if (isPkgAvailable(TsRunner.TsNode)) { + tsRunner = TsRunner.TsNode + } + } + + switch (tsRunner) { + case TsRunner.Bun: { + break + } + case TsRunner.Node: { + // < + if (compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) < 0) { + throw new Error( + 'type stripping is not supported in this node version', + ) + } + + if (noStripTypes) { + throw new Error('type stripping is disabled explicitly') + } + + // >= + if (compareVersion(NODE_VERSION, DEFAULT_TYPES_NODE_VERSION) >= 0) { + break + } + + if ( + // >= + compareVersion(NODE_VERSION, TRANSFORM_TYPES_NODE_VERSION) >= 0 && + !execArgv.includes(TRANSFORM_TYPES_FLAG) + ) { + execArgv = [TRANSFORM_TYPES_FLAG, ...execArgv] + } else if ( + // >= + compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) >= 0 && + !execArgv.includes(STRIP_TYPES_FLAG) + ) { + execArgv = [STRIP_TYPES_FLAG, ...execArgv] + } + + break + } + case TsRunner.TsNode: { + if (tsUseEsm) { + if (!execArgv.includes('--loader')) { + execArgv = ['--loader', `${TsRunner.TsNode}/esm`, ...execArgv] + } + } else if (!execArgv.includes('-r')) { + execArgv = ['-r', `${TsRunner.TsNode}/register`, ...execArgv] + } + break + } + case TsRunner.EsbuildRegister: { + if (!execArgv.includes('-r')) { + execArgv = ['-r', TsRunner.EsbuildRegister, ...execArgv] + } + break + } + case TsRunner.EsbuildRunner: { + if (!execArgv.includes('-r')) { + execArgv = ['-r', `${TsRunner.EsbuildRunner}/register`, ...execArgv] + } + break + } + case TsRunner.SWC: { + if (!execArgv.includes('-r')) { + execArgv = ['-r', `@${TsRunner.SWC}-node/register`, ...execArgv] + } + break + } + case TsRunner.TSX: { + if (!execArgv.includes('--loader')) { + execArgv = ['--loader', TsRunner.TSX, ...execArgv] + } + break + } + default: { + throw new Error(`Unknown ts runner: ${String(tsRunner)}`) + } + } + } else if (!jsUseEsm) { + const pkg = findUp(workerPath) + if (pkg) { + jsUseEsm = cjsRequire(pkg).type === 'module' + } + } + + let resolvedPnpLoaderPath: string | undefined + + /* istanbul ignore if -- https://github.com/facebook/jest/issues/5274 */ + if (process.versions.pnp) { + let pnpApiPath: string | undefined + try { + /** @see https://github.com/facebook/jest/issues/9543 */ + pnpApiPath = cjsRequire.resolve('pnpapi') + } catch {} + if ( + pnpApiPath && + !NODE_OPTIONS.some( + (option, index) => + ['-r', '--require'].includes(option) && + pnpApiPath === cjsRequire.resolve(NODE_OPTIONS[index + 1]), + ) && + !execArgv.includes(pnpApiPath) + ) { + execArgv = ['-r', pnpApiPath, ...execArgv] + const pnpLoaderPath = path.resolve(pnpApiPath, '../.pnp.loader.mjs') + if (isFile(pnpLoaderPath)) { + // Transform path to file URL because nodejs does not accept + // absolute Windows paths in the --experimental-loader option. + // https://github.com/un-ts/synckit/issues/123 + resolvedPnpLoaderPath = pathToFileURL(pnpLoaderPath).toString() + + // < + if (compareVersion(NODE_VERSION, LOADER_SUPPORTED_NODE_VERSION) < 0) { + execArgv = [ + '--experimental-loader', + resolvedPnpLoaderPath, + ...execArgv, + ] + } + } + } + } + + return { + ext, + isTs, + jsUseEsm, + tsRunner, + tsUseEsm, + workerPath, + pnpLoaderPath: resolvedPnpLoaderPath, + execArgv, + } +} + +export const md5Hash = (text: string) => + // eslint-disable-next-line sonarjs/hashing + createHash('md5').update(text).digest('hex') + +export const encodeImportModule = ( + moduleNameOrGlobalShim: GlobalShim | string, + type: 'import' | 'require' = 'import', + // eslint-disable-next-line sonarjs/cognitive-complexity +) => { + const { moduleName, globalName, named, conditional }: GlobalShim = + typeof moduleNameOrGlobalShim === 'string' + ? { moduleName: moduleNameOrGlobalShim } + : moduleNameOrGlobalShim + const importStatement = + type === 'import' + ? `import${ + globalName + ? ' ' + + (named === null + ? '* as ' + globalName + : named?.trim() + ? `{${named}}` + : globalName) + + ' from' + : '' + } '${ + path.isAbsolute(moduleName) + ? String(pathToFileURL(moduleName)) + : moduleName + }'` + : `${ + globalName + ? 'const ' + (named?.trim() ? `{${named}}` : globalName) + '=' + : '' + }require('${moduleName + // eslint-disable-next-line unicorn/prefer-string-replace-all -- compatibility + .replace(/\\/g, '\\\\')}')` + + if (!globalName) { + return importStatement + } + + const overrideStatement = `globalThis.${globalName}=${ + named?.trim() ? named : globalName + }` + + return ( + importStatement + + (conditional === false + ? `;${overrideStatement}` + : `;if(!globalThis.${globalName})${overrideStatement}`) + ) +} + +/** + * @internal + */ +export const _generateGlobals = ( + globalShims: GlobalShim[], + type: 'import' | 'require', +) => + globalShims.reduce( + (acc, shim) => `${acc}${acc ? ';' : ''}${encodeImportModule(shim, type)}`, + '', + ) + +let globalsCache: Map | undefined + +let tmpdir: string + +const _dirname = + typeof __dirname === 'undefined' + ? path.dirname(fileURLToPath(import.meta.url)) + : /* istanbul ignore next */ __dirname + +export const generateGlobals = ( + workerPath: string, + globalShims: GlobalShim[], + type: 'import' | 'require' = 'import', +) => { + if (globalShims.length === 0) { + return '' + } + + globalsCache ??= new Map() + + const cached = globalsCache.get(workerPath) + + if (cached) { + const [content, filepath] = cached + + if ( + (type === 'require' && !filepath) || + (type === 'import' && filepath && isFile(filepath)) + ) { + return content + } + } + + const globals = _generateGlobals(globalShims, type) + + let content = globals + let filepath: string | undefined + + if (type === 'import') { + if (!tmpdir) { + tmpdir = path.resolve(findUp(_dirname), '../node_modules/.synckit') + } + fs.mkdirSync(tmpdir, { recursive: true }) + filepath = path.resolve(tmpdir, md5Hash(workerPath) + '.mjs') + content = encodeImportModule(filepath) + fs.writeFileSync(filepath, globals) + } + + globalsCache.set(workerPath, [content, filepath]) + + return content +} + +// MessagePort doesn't copy the properties of Error objects. We still want +// error objects to have extra properties such as "warnings" so implement the +// property copying manually. +export function extractProperties(object: T): T +export function extractProperties(object?: T): T | undefined + +/** + * Creates a shallow copy of the enumerable properties from the provided object. + * + * @param object - An optional object whose properties are to be extracted. + * @returns A new object containing the enumerable properties of the input, or undefined if no valid object is provided. + */ +export function extractProperties(object?: T) { + if (object && typeof object === 'object') { + const properties = {} as T + for (const key in object) { + properties[key as keyof T] = object[key] + } + return properties + } +} + +let sharedBuffer: SharedArrayBuffer | undefined +let sharedBufferView: Int32Array | undefined + +/** + * Spawns a worker thread and returns a synchronous function for dispatching tasks. + * + * This function sets up a worker thread using the specified worker script path and configuration + * options including timeout, execution arguments, TypeScript runner, transferable objects, and global shims. + * It creates a MessageChannel and leverages a shared memory buffer with Atomics for synchronization. + * The returned function sends a task message to the worker identified by a unique ID, awaits the + * corresponding response, and either returns the result or throws an error if an issue occurs. + * + * @param workerPath - The file path to the worker script. + * @param options - Configuration options including: + * - timeout: Maximum duration (in milliseconds) to wait for the worker response. + * - execArgv: Additional Node.js execution arguments for the worker process. + * - tsRunner: The TypeScript runner to use (required for TypeScript worker files). + * - transferList: An array of transferable objects to pass to the worker. + * - globalShims: Global shim configuration for module imports; can be a preset flag or an array of shims. + * + * @returns A synchronous function that accepts arguments for the worker task and returns the computed result. + * + * @throws {Error} If a TypeScript worker is specified without a valid tsRunner, if the chosen tsRunner is not supported + * for the file type, or if a synchronization error occurs during message communication. + */ +// eslint-disable-next-line sonarjs/cognitive-complexity +export function startWorkerThread>>( + workerPath: string, + { + timeout = DEFAULT_TIMEOUT, + execArgv = DEFAULT_EXEC_ARGV, + tsRunner = DEFAULT_TS_RUNNER, + transferList = [], + globalShims = DEFAULT_GLOBAL_SHIMS, + }: SynckitOptions = {}, +) { + const { port1: mainPort, port2: workerPort } = new MessageChannel() + + const { + isTs, + ext, + jsUseEsm, + tsUseEsm, + tsRunner: finalTsRunner, + workerPath: finalWorkerPath, + pnpLoaderPath, + execArgv: finalExecArgv, + } = setupTsRunner(workerPath, { execArgv, tsRunner }) + + const workerPathUrl = pathToFileURL(finalWorkerPath) + + if (/\.[cm]ts$/.test(finalWorkerPath)) { + const isTsxSupported = + !tsUseEsm || + // >= + compareVersion(NODE_VERSION, MTS_SUPPORTED_NODE_VERSION) >= 0 + /* istanbul ignore if */ + if (!finalTsRunner) { + throw new Error('No ts runner specified, ts worker path is not supported') + } /* istanbul ignore if */ else if ( + ( + [ + // https://github.com/egoist/esbuild-register/issues/79 + TsRunner.EsbuildRegister, + // https://github.com/folke/esbuild-runner/issues/67 + TsRunner.EsbuildRunner, + // https://github.com/swc-project/swc-node/issues/667 + TsRunner.SWC, + .../* istanbul ignore next */ (isTsxSupported ? [] : [TsRunner.TSX]), + ] as TsRunner[] + ).includes(finalTsRunner) + ) { + throw new Error( + `${finalTsRunner} is not supported for ${ext} files yet` + + /* istanbul ignore next */ (isTsxSupported + ? ', you can try [tsx](https://github.com/esbuild-kit/tsx) instead' + : ''), + ) + } + } + + const finalGlobalShims = ( + globalShims === true + ? DEFAULT_GLOBAL_SHIMS_PRESET + : Array.isArray(globalShims) + ? globalShims + : [] + ).filter(({ moduleName }) => isPkgAvailable(moduleName)) + + // We store a single Byte in the SharedArrayBuffer + // for the notification, we can used a fixed size + sharedBufferView ??= new Int32Array( + /* istanbul ignore next */ (sharedBuffer ??= new SharedArrayBuffer( + INT32_BYTES, + )), + 0, + 1, + ) + + const useGlobals = finalGlobalShims.length > 0 + + const useEval = isTs ? !tsUseEsm : !jsUseEsm && useGlobals + + const worker = new Worker( + (jsUseEsm && useGlobals) || (tsUseEsm && finalTsRunner === TsRunner.TsNode) + ? dataUrl( + `${generateGlobals( + finalWorkerPath, + finalGlobalShims, + )};import '${String(workerPathUrl)}'`, + ) + : useEval + ? `${generateGlobals( + finalWorkerPath, + finalGlobalShims, + 'require', + )};${encodeImportModule(finalWorkerPath, 'require')}` + : workerPathUrl, + { + eval: useEval, + workerData: { sharedBufferView, workerPort, pnpLoaderPath }, + transferList: [workerPort, ...transferList], + execArgv: finalExecArgv, + }, + ) + + let nextID = 0 + + const receiveMessageWithId = ( + port: MessagePort, + expectedId: number, + waitingTimeout?: number, + ): WorkerToMainMessage => { + const start = Date.now() + const status = Atomics.wait(sharedBufferView!, 0, 0, waitingTimeout) + Atomics.store(sharedBufferView!, 0, 0) + + if (!['ok', 'not-equal'].includes(status)) { + const abortMsg: MainToWorkerCommandMessage = { + id: expectedId, + cmd: 'abort', + } + port.postMessage(abortMsg) + throw new Error('Internal error: Atomics.wait() failed: ' + status) + } + + const { id, ...message } = ( + receiveMessageOnPort(mainPort) as { message: WorkerToMainMessage } + ).message + + if (id < expectedId) { + const waitingTime = Date.now() - start + return receiveMessageWithId( + port, + expectedId, + waitingTimeout ? waitingTimeout - waitingTime : undefined, + ) + } + + if (expectedId !== id) { + throw new Error( + `Internal error: Expected id ${expectedId} but got id ${id}`, + ) + } + + return { id, ...message } + } + + const syncFn = (...args: Parameters): R => { + const id = nextID++ + + const msg: MainToWorkerMessage> = { id, args } + + worker.postMessage(msg) + + const { result, error, properties, stdio } = receiveMessageWithId( + mainPort, + id, + timeout, + ) + + for (const { type, chunk, encoding } of stdio) { + process[type].write(chunk, encoding) + } + + if (error) { + // eslint-disable-next-line @typescript-eslint/only-throw-error + throw Object.assign(error as object, properties) + } + + return result! + } + + worker.unref() + + return syncFn +} + +export const overrideStdio = (stdio: StdioChunk[]) => { + // https://github.com/nodejs/node/blob/66556f53a7b36384bce305865c30ca43eaa0874b/lib/internal/worker/io.js#L369 + for (const type of ['stdout', 'stderr'] as const) { + process[type]._writev = (chunks, callback) => { + for (const { + // type-coverage:ignore-next-line -- we can't control + chunk, + encoding, + } of chunks) { + stdio.push({ + type, + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- we can't control + chunk, + encoding, + }) + } + callback() + } + } +} diff --git a/src/index.ts b/src/index.ts index 47acbef95..e3e39299c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,166 +1,50 @@ -import { createHash } from 'node:crypto' -import fs from 'node:fs' import module from 'node:module' import path from 'node:path' -import { fileURLToPath, pathToFileURL } from 'node:url' +import { fileURLToPath } from 'node:url' import { - type MessagePort, - type TransferListItem, - MessageChannel, - Worker, parentPort, - receiveMessageOnPort, // type-coverage:ignore-next-line -- we can't control workerData, } from 'node:worker_threads' -import { cjsRequire, findUp, isPkgAvailable, tryExtensions } from '@pkgr/core' - +import { compareVersion } from './common.js' +import { NODE_VERSION, LOADER_SUPPORTED_NODE_VERSION } from './constants.js' +import { + extractProperties, + overrideStdio, + startWorkerThread, +} from './helpers.js' import type { AnyFn, - GlobalShim, MainToWorkerCommandMessage, MainToWorkerMessage, - PackageJson, StdioChunk, Syncify, - ValueOf, + SynckitOptions, WorkerData, WorkerToMainMessage, } from './types.js' -const INT32_BYTES = 4 - +export * from './common.js' +export * from './constants.js' +export * from './helpers.js' export * from './types.js' -export const TsRunner = { - // https://nodejs.org/docs/latest/api/typescript.html#type-stripping - Node: 'node', - // https://bun.sh/docs/typescript - Bun: 'bun', - // https://github.com/TypeStrong/ts-node - TsNode: 'ts-node', - // https://github.com/egoist/esbuild-register - EsbuildRegister: 'esbuild-register', - // https://github.com/folke/esbuild-runner - EsbuildRunner: 'esbuild-runner', - // https://github.com/swc-project/swc-node/tree/master/packages/register - SWC: 'swc', - // https://github.com/esbuild-kit/tsx - TSX: 'tsx', -} as const - -export type TsRunner = ValueOf - -const { - NODE_OPTIONS: NODE_OPTIONS_ = '', - SYNCKIT_EXEC_ARGV = '', - SYNCKIT_GLOBAL_SHIMS, - SYNCKIT_TIMEOUT, - SYNCKIT_TS_RUNNER, -} = process.env - -export const MTS_SUPPORTED_NODE_VERSION = '16' -export const LOADER_SUPPORTED_NODE_VERSION = '20' - -// https://nodejs.org/docs/latest-v22.x/api/typescript.html#type-stripping -export const STRIP_TYPES_NODE_VERSION = '22.6' - -// https://nodejs.org/docs/latest-v23.x/api/typescript.html#modules-typescript -export const TRANSFORM_TYPES_NODE_VERSION = '22.7' - -// https://nodejs.org/docs/latest-v22.x/api/process.html#processfeaturestypescript -export const FEATURE_TYPESCRIPT_NODE_VERSION = '22.10' - -// https://nodejs.org/docs/latest-v23.x/api/typescript.html#type-stripping -export const DEFAULT_TYPES_NODE_VERSION = '23.6' - -export const STRIP_TYPES_FLAG = '--experimental-strip-types' -export const TRANSFORM_TYPES_FLAG = '--experimental-transform-types' -export const NO_STRIP_TYPES_FLAG = '--no-experimental-strip-types' - -const NODE_OPTIONS = NODE_OPTIONS_.split(/\s+/) - -const hasFlag = (flag: string) => - NODE_OPTIONS.includes(flag) || process.argv.includes(flag) - -const parseVersion = (version: string) => - version.split('.').map(Number.parseFloat) - -// A naive implementation of semver comparison -export const compareVersion = (version1: string, version2: string) => { - const versions1 = parseVersion(version1) - const versions2 = parseVersion(version2) - const length = Math.max(versions1.length, versions2.length) - for (let i = 0; i < length; i++) { - const v1 = versions1[i] || 0 - const v2 = versions2[i] || 0 - if (v1 > v2) { - return 1 - } - if (v1 < v2) { - return -1 - } - } - return 0 -} - -export const NODE_VERSION = process.versions.node - -const NO_STRIP_TYPES = // >= - compareVersion(NODE_VERSION, FEATURE_TYPESCRIPT_NODE_VERSION) >= 0 - ? process.features.typescript === false - : hasFlag(NO_STRIP_TYPES_FLAG) && - !hasFlag(STRIP_TYPES_FLAG) && - !hasFlag(TRANSFORM_TYPES_FLAG) - -export const DEFAULT_TIMEOUT = SYNCKIT_TIMEOUT ? +SYNCKIT_TIMEOUT : undefined - -export const DEFAULT_EXEC_ARGV = SYNCKIT_EXEC_ARGV.split(',') - -export const DEFAULT_TS_RUNNER = SYNCKIT_TS_RUNNER as TsRunner | undefined - -export const DEFAULT_GLOBAL_SHIMS = ['1', 'true'].includes( - SYNCKIT_GLOBAL_SHIMS!, -) - -export const DEFAULT_GLOBAL_SHIMS_PRESET: GlobalShim[] = [ - { - moduleName: 'node-fetch', - globalName: 'fetch', - }, - { - moduleName: 'node:perf_hooks', - globalName: 'performance', - named: 'performance', - }, -] - let syncFnCache: Map | undefined -export interface SynckitOptions { - execArgv?: string[] - globalShims?: GlobalShim[] | boolean - timeout?: number - transferList?: TransferListItem[] - tsRunner?: TsRunner -} - -// MessagePort doesn't copy the properties of Error objects. We still want -// error objects to have extra properties such as "warnings" so implement the -// property copying manually. -export function extractProperties(object: T): T -export function extractProperties(object?: T): T | undefined -export function extractProperties(object?: T) { - if (object && typeof object === 'object') { - const properties = {} as T - for (const key in object) { - properties[key as keyof T] = object[key] - } - return properties - } -} - +/** + * Creates a synchronous worker function. + * + * Converts the provided worker path (URL or string) to an absolute file path, retrieves a cached synchronous + * function if one exists, or starts a new worker thread to handle task execution. The resulting function is + * cached to avoid redundant initialization. + * + * @param workerPath - The absolute file path or URL of the worker script. If given as a URL, it is converted to a file path. + * @param timeoutOrOptions - Optional timeout in milliseconds or an options object to configure the worker thread. + * @returns A synchronous function that executes tasks on the specified worker thread. + * + * @throws {Error} If the resulting worker path is not absolute. + */ export function createSyncFn( workerPath: URL | string, timeoutOrOptions?: SynckitOptions | number, @@ -193,523 +77,19 @@ export function createSyncFn( return syncFn } -const dataUrl = (code: string) => - new URL(`data:text/javascript,${encodeURIComponent(code)}`) - -export const isFile = (path: string) => { - try { - return !!fs.statSync(path, { throwIfNoEntry: false })?.isFile() - } catch { - /* istanbul ignore next */ - return false - } -} - -const setupTsRunner = ( - workerPath: string, - { execArgv, tsRunner }: { execArgv: string[]; tsRunner?: TsRunner }, // eslint-disable-next-line sonarjs/cognitive-complexity -) => { - let ext = path.extname(workerPath) - - if ( - !/([/\\])node_modules\1/.test(workerPath) && - (!ext || /^\.[cm]?js$/.test(ext)) - ) { - const workPathWithoutExt = ext - ? workerPath.slice(0, -ext.length) - : workerPath - let extensions: string[] - switch (ext) { - case '.cjs': { - extensions = ['.cts', '.cjs'] - break - } - case '.mjs': { - extensions = ['.mts', '.mjs'] - break - } - default: { - extensions = ['.ts', '.js'] - break - } - } - const found = tryExtensions(workPathWithoutExt, extensions) - let differentExt: boolean | undefined - if (found && (!ext || (differentExt = found !== workPathWithoutExt))) { - workerPath = found - if (differentExt) { - ext = path.extname(workerPath) - } - } - } - - const isTs = /\.[cm]?ts$/.test(workerPath) - - let jsUseEsm = workerPath.endsWith('.mjs') - let tsUseEsm = workerPath.endsWith('.mts') - - if (isTs) { - if (!tsUseEsm) { - const pkg = findUp(workerPath) - if (pkg) { - tsUseEsm = cjsRequire(pkg).type === 'module' - } - } - - const stripTypesIndex = execArgv.indexOf(STRIP_TYPES_FLAG) - const transformTypesIndex = execArgv.indexOf(TRANSFORM_TYPES_FLAG) - const noStripTypesIndex = execArgv.indexOf(NO_STRIP_TYPES_FLAG) - - const execArgvNoStripTypes = - noStripTypesIndex > stripTypesIndex || - noStripTypesIndex > transformTypesIndex - - const noStripTypes = - execArgvNoStripTypes || - (stripTypesIndex === -1 && transformTypesIndex === -1 && NO_STRIP_TYPES) - - if (tsRunner == null) { - if (process.versions.bun) { - tsRunner = TsRunner.Bun - } else if ( - !noStripTypes && - // >= - compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) >= 0 - ) { - tsRunner = TsRunner.Node - } else if (isPkgAvailable(TsRunner.TsNode)) { - tsRunner = TsRunner.TsNode - } - } - - switch (tsRunner) { - case TsRunner.Bun: { - break - } - case TsRunner.Node: { - // < - if (compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) < 0) { - throw new Error( - 'type stripping is not supported in this node version', - ) - } - - if (noStripTypes) { - throw new Error('type stripping is disabled explicitly') - } - - // >= - if (compareVersion(NODE_VERSION, DEFAULT_TYPES_NODE_VERSION) >= 0) { - break - } - - if ( - // >= - compareVersion(NODE_VERSION, TRANSFORM_TYPES_NODE_VERSION) >= 0 && - !execArgv.includes(TRANSFORM_TYPES_FLAG) - ) { - execArgv = [TRANSFORM_TYPES_FLAG, ...execArgv] - } else if ( - // >= - compareVersion(NODE_VERSION, STRIP_TYPES_NODE_VERSION) >= 0 && - !execArgv.includes(STRIP_TYPES_FLAG) - ) { - execArgv = [STRIP_TYPES_FLAG, ...execArgv] - } - - break - } - case TsRunner.TsNode: { - if (tsUseEsm) { - if (!execArgv.includes('--loader')) { - execArgv = ['--loader', `${TsRunner.TsNode}/esm`, ...execArgv] - } - } else if (!execArgv.includes('-r')) { - execArgv = ['-r', `${TsRunner.TsNode}/register`, ...execArgv] - } - break - } - case TsRunner.EsbuildRegister: { - if (!execArgv.includes('-r')) { - execArgv = ['-r', TsRunner.EsbuildRegister, ...execArgv] - } - break - } - case TsRunner.EsbuildRunner: { - if (!execArgv.includes('-r')) { - execArgv = ['-r', `${TsRunner.EsbuildRunner}/register`, ...execArgv] - } - break - } - case TsRunner.SWC: { - if (!execArgv.includes('-r')) { - execArgv = ['-r', `@${TsRunner.SWC}-node/register`, ...execArgv] - } - break - } - case TsRunner.TSX: { - if (!execArgv.includes('--loader')) { - execArgv = ['--loader', TsRunner.TSX, ...execArgv] - } - break - } - default: { - throw new Error(`Unknown ts runner: ${String(tsRunner)}`) - } - } - } else if (!jsUseEsm) { - const pkg = findUp(workerPath) - if (pkg) { - jsUseEsm = cjsRequire(pkg).type === 'module' - } - } - - let resolvedPnpLoaderPath: string | undefined - - /* istanbul ignore if -- https://github.com/facebook/jest/issues/5274 */ - if (process.versions.pnp) { - let pnpApiPath: string | undefined - try { - /** @see https://github.com/facebook/jest/issues/9543 */ - pnpApiPath = cjsRequire.resolve('pnpapi') - } catch {} - if ( - pnpApiPath && - !NODE_OPTIONS.some( - (option, index) => - ['-r', '--require'].includes(option) && - pnpApiPath === cjsRequire.resolve(NODE_OPTIONS[index + 1]), - ) && - !execArgv.includes(pnpApiPath) - ) { - execArgv = ['-r', pnpApiPath, ...execArgv] - const pnpLoaderPath = path.resolve(pnpApiPath, '../.pnp.loader.mjs') - if (isFile(pnpLoaderPath)) { - // Transform path to file URL because nodejs does not accept - // absolute Windows paths in the --experimental-loader option. - // https://github.com/un-ts/synckit/issues/123 - resolvedPnpLoaderPath = pathToFileURL(pnpLoaderPath).toString() - - // < - if (compareVersion(NODE_VERSION, LOADER_SUPPORTED_NODE_VERSION) < 0) { - execArgv = [ - '--experimental-loader', - resolvedPnpLoaderPath, - ...execArgv, - ] - } - } - } - } - - return { - ext, - isTs, - jsUseEsm, - tsRunner, - tsUseEsm, - workerPath, - pnpLoaderPath: resolvedPnpLoaderPath, - execArgv, - } -} - -const md5Hash = (text: string) => - // eslint-disable-next-line sonarjs/hashing - createHash('md5').update(text).digest('hex') - -export const encodeImportModule = ( - moduleNameOrGlobalShim: GlobalShim | string, - type: 'import' | 'require' = 'import', - // eslint-disable-next-line sonarjs/cognitive-complexity -) => { - const { moduleName, globalName, named, conditional }: GlobalShim = - typeof moduleNameOrGlobalShim === 'string' - ? { moduleName: moduleNameOrGlobalShim } - : moduleNameOrGlobalShim - const importStatement = - type === 'import' - ? `import${ - globalName - ? ' ' + - (named === null - ? '* as ' + globalName - : named?.trim() - ? `{${named}}` - : globalName) + - ' from' - : '' - } '${ - path.isAbsolute(moduleName) - ? String(pathToFileURL(moduleName)) - : moduleName - }'` - : `${ - globalName - ? 'const ' + (named?.trim() ? `{${named}}` : globalName) + '=' - : '' - }require('${moduleName - // eslint-disable-next-line unicorn/prefer-string-replace-all -- compatibility - .replace(/\\/g, '\\\\')}')` - - if (!globalName) { - return importStatement - } - - const overrideStatement = `globalThis.${globalName}=${ - named?.trim() ? named : globalName - }` - - return ( - importStatement + - (conditional === false - ? `;${overrideStatement}` - : `;if(!globalThis.${globalName})${overrideStatement}`) - ) -} - +/* istanbul ignore next */ /** - * @internal + * Sets up the worker thread to listen for messages from the parent process and execute the provided function with the received arguments. + * + * When a message with an associated ID and arguments is received, this function invokes the given function asynchronously. + * It captures standard I/O during execution and conditionally registers a custom module loader if a valid loader path is provided + * and the Node.js version is supported. The function listens for an abort signal specific to the message; if aborted, it cancels + * sending a response. Upon completion, it posts a message back with the result or, in case of an error, with the error and its extracted properties. + * + * If the worker is not initialized with the necessary worker data, the function exits without performing any action. + * + * @param fn - The function to execute when a message is received from the parent. */ -export const _generateGlobals = ( - globalShims: GlobalShim[], - type: 'import' | 'require', -) => - globalShims.reduce( - (acc, shim) => `${acc}${acc ? ';' : ''}${encodeImportModule(shim, type)}`, - '', - ) - -let globalsCache: Map | undefined - -let tmpdir: string - -const _dirname = - typeof __dirname === 'undefined' - ? path.dirname(fileURLToPath(import.meta.url)) - : /* istanbul ignore next */ __dirname - -let sharedBuffer: SharedArrayBuffer | undefined -let sharedBufferView: Int32Array | undefined - -export const generateGlobals = ( - workerPath: string, - globalShims: GlobalShim[], - type: 'import' | 'require' = 'import', -) => { - if (globalShims.length === 0) { - return '' - } - - globalsCache ??= new Map() - - const cached = globalsCache.get(workerPath) - - if (cached) { - const [content, filepath] = cached - - if ( - (type === 'require' && !filepath) || - (type === 'import' && filepath && isFile(filepath)) - ) { - return content - } - } - - const globals = _generateGlobals(globalShims, type) - - let content = globals - let filepath: string | undefined - - if (type === 'import') { - if (!tmpdir) { - tmpdir = path.resolve(findUp(_dirname), '../node_modules/.synckit') - } - fs.mkdirSync(tmpdir, { recursive: true }) - filepath = path.resolve(tmpdir, md5Hash(workerPath) + '.mjs') - content = encodeImportModule(filepath) - fs.writeFileSync(filepath, globals) - } - - globalsCache.set(workerPath, [content, filepath]) - - return content -} - -// eslint-disable-next-line sonarjs/cognitive-complexity -function startWorkerThread>>( - workerPath: string, - { - timeout = DEFAULT_TIMEOUT, - execArgv = DEFAULT_EXEC_ARGV, - tsRunner = DEFAULT_TS_RUNNER, - transferList = [], - globalShims = DEFAULT_GLOBAL_SHIMS, - }: SynckitOptions = {}, -) { - const { port1: mainPort, port2: workerPort } = new MessageChannel() - - const { - isTs, - ext, - jsUseEsm, - tsUseEsm, - tsRunner: finalTsRunner, - workerPath: finalWorkerPath, - pnpLoaderPath, - execArgv: finalExecArgv, - } = setupTsRunner(workerPath, { execArgv, tsRunner }) - - const workerPathUrl = pathToFileURL(finalWorkerPath) - - if (/\.[cm]ts$/.test(finalWorkerPath)) { - const isTsxSupported = - !tsUseEsm || - // >= - compareVersion(NODE_VERSION, MTS_SUPPORTED_NODE_VERSION) >= 0 - /* istanbul ignore if */ - if (!finalTsRunner) { - throw new Error('No ts runner specified, ts worker path is not supported') - } /* istanbul ignore if */ else if ( - ( - [ - // https://github.com/egoist/esbuild-register/issues/79 - TsRunner.EsbuildRegister, - // https://github.com/folke/esbuild-runner/issues/67 - TsRunner.EsbuildRunner, - // https://github.com/swc-project/swc-node/issues/667 - TsRunner.SWC, - .../* istanbul ignore next */ (isTsxSupported ? [] : [TsRunner.TSX]), - ] as TsRunner[] - ).includes(finalTsRunner) - ) { - throw new Error( - `${finalTsRunner} is not supported for ${ext} files yet` + - /* istanbul ignore next */ (isTsxSupported - ? ', you can try [tsx](https://github.com/esbuild-kit/tsx) instead' - : ''), - ) - } - } - - const finalGlobalShims = ( - globalShims === true - ? DEFAULT_GLOBAL_SHIMS_PRESET - : Array.isArray(globalShims) - ? globalShims - : [] - ).filter(({ moduleName }) => isPkgAvailable(moduleName)) - - // We store a single Byte in the SharedArrayBuffer - // for the notification, we can used a fixed size - sharedBufferView ??= new Int32Array( - /* istanbul ignore next */ (sharedBuffer ??= new SharedArrayBuffer( - INT32_BYTES, - )), - 0, - 1, - ) - - const useGlobals = finalGlobalShims.length > 0 - - const useEval = isTs ? !tsUseEsm : !jsUseEsm && useGlobals - - const worker = new Worker( - (jsUseEsm && useGlobals) || (tsUseEsm && finalTsRunner === TsRunner.TsNode) - ? dataUrl( - `${generateGlobals( - finalWorkerPath, - finalGlobalShims, - )};import '${String(workerPathUrl)}'`, - ) - : useEval - ? `${generateGlobals( - finalWorkerPath, - finalGlobalShims, - 'require', - )};${encodeImportModule(finalWorkerPath, 'require')}` - : workerPathUrl, - { - eval: useEval, - workerData: { sharedBufferView, workerPort, pnpLoaderPath }, - transferList: [workerPort, ...transferList], - execArgv: finalExecArgv, - }, - ) - - let nextID = 0 - - const receiveMessageWithId = ( - port: MessagePort, - expectedId: number, - waitingTimeout?: number, - ): WorkerToMainMessage => { - const start = Date.now() - const status = Atomics.wait(sharedBufferView!, 0, 0, waitingTimeout) - Atomics.store(sharedBufferView!, 0, 0) - - if (!['ok', 'not-equal'].includes(status)) { - const abortMsg: MainToWorkerCommandMessage = { - id: expectedId, - cmd: 'abort', - } - port.postMessage(abortMsg) - throw new Error('Internal error: Atomics.wait() failed: ' + status) - } - - const { id, ...message } = ( - receiveMessageOnPort(mainPort) as { message: WorkerToMainMessage } - ).message - - if (id < expectedId) { - const waitingTime = Date.now() - start - return receiveMessageWithId( - port, - expectedId, - waitingTimeout ? waitingTimeout - waitingTime : undefined, - ) - } - - if (expectedId !== id) { - throw new Error( - `Internal error: Expected id ${expectedId} but got id ${id}`, - ) - } - - return { id, ...message } - } - - const syncFn = (...args: Parameters): R => { - const id = nextID++ - - const msg: MainToWorkerMessage> = { id, args } - - worker.postMessage(msg) - - const { result, error, properties, stdio } = receiveMessageWithId( - mainPort, - id, - timeout, - ) - - for (const { type, chunk, encoding } of stdio) { - process[type].write(chunk, encoding) - } - - if (error) { - // eslint-disable-next-line @typescript-eslint/only-throw-error - throw Object.assign(error as object, properties) - } - - return result! - } - - worker.unref() - - return syncFn -} - -/* istanbul ignore next */ export function runAsWorker | R>, R = ReturnType>( fn: T, ) { @@ -720,24 +100,7 @@ export function runAsWorker | R>, R = ReturnType>( const stdio: StdioChunk[] = [] - // https://github.com/nodejs/node/blob/66556f53a7b36384bce305865c30ca43eaa0874b/lib/internal/worker/io.js#L369 - for (const type of ['stdout', 'stderr'] as const) { - process[type]._writev = (chunks, callback) => { - for (const { - // type-coverage:ignore-next-line -- we can't control - chunk, - encoding, - } of chunks) { - stdio.push({ - type, - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- we can't control - chunk, - encoding, - }) - } - callback() - } - } + overrideStdio(stdio) const { workerPort, sharedBufferView, pnpLoaderPath } = workerData as WorkerData diff --git a/src/types.ts b/src/types.ts index 4cdc1f68a..f63813ac8 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,4 +1,6 @@ -import type { MessagePort } from 'node:worker_threads' +import type { MessagePort, TransferListItem } from 'node:worker_threads' + +import type { TsRunner } from './constants.ts' // eslint-disable-next-line @typescript-eslint/no-explicit-any export type AnyFn = (...args: T) => R @@ -78,3 +80,11 @@ export interface GlobalShim { export interface PackageJson { type?: 'commonjs' | 'module' } + +export interface SynckitOptions { + execArgv?: string[] + globalShims?: GlobalShim[] | boolean + timeout?: number + transferList?: TransferListItem[] + tsRunner?: TsRunner +} diff --git a/test/common.spec.ts b/test/common.spec.ts new file mode 100644 index 000000000..a408451dc --- /dev/null +++ b/test/common.spec.ts @@ -0,0 +1,77 @@ +import { jest } from '@jest/globals' + +import { compareVersion } from 'synckit' + +describe('common', () => { + describe('hasFlag', () => { + let hasFlag: (flag: string) => boolean + + beforeEach(() => { + jest.resetModules() + delete process.env.NODE_OPTIONS + process.argv = [] + }) + + it('should return true if the flag is present in NODE_OPTIONS', async () => { + process.env.NODE_OPTIONS = '--experimental-modules' + ;({ hasFlag } = await import('synckit')) + expect(hasFlag('--experimental-modules')).toBe(true) + }) + + it('should return false if the flag is not present in NODE_OPTIONS', async () => { + process.env.NODE_OPTIONS = '--experimental-modules' + ;({ hasFlag } = await import('synckit')) + expect(hasFlag('--no-deprecation')).toBe(false) + }) + + it('should return true if the flag is present in process.argv', async () => { + process.argv.push('--experimental-modules') + ;({ hasFlag } = await import('synckit')) + expect(hasFlag('--experimental-modules')).toBe(true) + }) + + it('should return false if the flag is not present in process.argv', async () => { + process.argv.push('--experimental-modules') + ;({ hasFlag } = await import('synckit')) + expect(hasFlag('--no-deprecation')).toBe(false) + }) + + it('should return false if NODE_OPTIONS and process.argv are not set', async () => { + ;({ hasFlag } = await import('synckit')) + expect(hasFlag('--experimental-modules')).toBe(false) + }) + + it('should return false if NODE_OPTIONS and process.argv are empty', async () => { + ;({ hasFlag } = await import('synckit')) + expect(hasFlag('--experimental-modules')).toBe(false) + }) + + it('should return false if NODE_OPTIONS and process.argv are empty strings', async () => { + process.argv = [''] + ;({ hasFlag } = await import('synckit')) + expect(hasFlag('--experimental-modules')).toBe(false) + }) + }) + + describe('compareVersion', () => { + it('should return 0 for equal versions', () => { + expect(compareVersion('1.0.0', '1.0.0')).toBe(0) + expect(compareVersion('1.0.0', '1.0.0-rc1')).toBe(0) + }) + + it('should return 1 for greater version', () => { + expect(compareVersion('2.0.0', '1.0.0')).toBe(1) + expect(compareVersion('1.2.0', '1.1.9')).toBe(1) + }) + + it('should return -1 for lesser version', () => { + expect(compareVersion('1.0.0', '2.0.0')).toBe(-1) + expect(compareVersion('1.1.9', '1.2.0')).toBe(-1) + }) + + it('should handle different length versions', () => { + expect(compareVersion('1.2', '1.2.3')).toBe(-1) + expect(compareVersion('2', '2.0')).toBe(0) + }) + }) +}) diff --git a/tsconfig.json b/tsconfig.json index 7e9751b49..144387a74 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,7 @@ { "extends": "@1stg/tsconfig/nodenext", "compilerOptions": { + "isolatedModules": true, "rootDir": ".", "paths": { "synckit": ["./src/index.ts"] diff --git a/yarn.lock b/yarn.lock index 06e99d8a7..3d3e120f7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,16 +5,16 @@ __metadata: version: 8 cacheKey: 10c0 -"@1stg/babel-preset@npm:^4.0.4": - version: 4.0.5 - resolution: "@1stg/babel-preset@npm:4.0.5" +"@1stg/babel-preset@npm:^4.0.6": + version: 4.0.6 + resolution: "@1stg/babel-preset@npm:4.0.6" dependencies: "@babel/helper-plugin-utils": "npm:^7.26.5" "@babel/plugin-proposal-decorators": "npm:^7.25.9" "@babel/plugin-transform-class-properties": "npm:^7.25.9" "@babel/preset-env": "npm:^7.26.9" "@babel/preset-react": "npm:^7.26.3" - "@babel/preset-typescript": "npm:^7.26.0" + "@babel/preset-typescript": "npm:^7.27.0" "@pkgr/utils": "npm:^3.1.0" "@vue/babel-helper-vue-jsx-merge-props": "npm:^1.4.0" "@vue/babel-plugin-jsx": "npm:^1.4.0" @@ -29,11 +29,11 @@ __metadata: fast-async: "npm:^7.0.6" peerDependencies: "@babel/core": ">=7.14.1" - checksum: 10c0/5dbd58e977628602afed12c33cea59bfd4a54af6d2a0d6b62912032a2d99950d4ca64601194f4c9f7905c4dc8ff72e9e7df2f406d90fe3eb218d268b1426e9fd + checksum: 10c0/6739a7b2fa97bc1a7cbf6facb3dc5939757a0f72cf0fbd20f3bd756a1eefca6781a04eee0d407636fe00f6c705e8cd630ad4511a436f06d3b6c3e8257d31ec96 languageName: node linkType: hard -"@1stg/commitlint-config@npm:^5.0.1": +"@1stg/commitlint-config@npm:^5.0.2": version: 5.0.2 resolution: "@1stg/commitlint-config@npm:5.0.2" dependencies: @@ -44,22 +44,22 @@ __metadata: languageName: node linkType: hard -"@1stg/common-config@npm:^11.0.5": - version: 11.0.5 - resolution: "@1stg/common-config@npm:11.0.5" +"@1stg/common-config@npm:^11.1.1": + version: 11.1.1 + resolution: "@1stg/common-config@npm:11.1.1" dependencies: - "@1stg/babel-preset": "npm:^4.0.4" - "@1stg/commitlint-config": "npm:^5.0.1" - "@1stg/eslint-config": "npm:^8.1.1" - "@1stg/lint-staged": "npm:^4.0.5" + "@1stg/babel-preset": "npm:^4.0.6" + "@1stg/commitlint-config": "npm:^5.0.2" + "@1stg/eslint-config": "npm:^8.3.1" + "@1stg/lint-staged": "npm:^4.0.6" "@1stg/markuplint-config": "npm:^4.0.1" - "@1stg/prettier-config": "npm:^4.0.5" + "@1stg/prettier-config": "npm:^4.0.6" "@1stg/remark-preset": "npm:^3.0.1" - "@1stg/simple-git-hooks": "npm:^1.0.0" + "@1stg/simple-git-hooks": "npm:^1.0.1" "@1stg/tsconfig": "npm:^3.0.1" "@babel/core": "npm:^7.26.10" tslib: "npm:^2.8.1" - checksum: 10c0/d766581bc22f0c3042f0f17d6e5b1719abc878f9bc0f6efe52c8d452035d6aedde35e7e5605940fb7229376af00b4491b492562ed775e05b74529394e5d58c1e + checksum: 10c0/578af9959afe244dd89eaeabe1d196279f34adbbdd6bd29eb698b85f96ae2da139f824cbe34b0db2ffa05c94929bc258b09cee616dc0f666209d0602b4b764ab languageName: node linkType: hard @@ -70,51 +70,51 @@ __metadata: languageName: node linkType: hard -"@1stg/eslint-config@npm:^8.1.1": - version: 8.2.1 - resolution: "@1stg/eslint-config@npm:8.2.1" +"@1stg/eslint-config@npm:^8.3.1": + version: 8.3.1 + resolution: "@1stg/eslint-config@npm:8.3.1" dependencies: "@1stg/config": "npm:^1.0.1" - "@babel/eslint-parser": "npm:^7.26.10" - "@babel/eslint-plugin": "npm:^7.26.10" + "@babel/eslint-parser": "npm:^7.27.0" + "@babel/eslint-plugin": "npm:^7.27.0" "@eslint-community/eslint-plugin-eslint-comments": "npm:^4.4.1" - "@eslint-react/eslint-plugin": "npm:^1.37.3" + "@eslint-react/eslint-plugin": "npm:^1.40.0" "@eslint/js": "npm:^9.23.0" "@pkgr/utils": "npm:^3.1.0" - "@typescript-eslint/eslint-plugin": "npm:^8.27.0" - "@typescript-eslint/parser": "npm:^8.27.0" + "@typescript-eslint/eslint-plugin": "npm:^8.29.0" + "@typescript-eslint/parser": "npm:^8.29.0" "@vitest/eslint-plugin": "npm:^1.1.38" angular-eslint: "npm:^19.3.0" angular-eslint-template-parser: "npm:^0.1.3" eslint-config-prettier: "npm:^10.1.1" - eslint-import-resolver-typescript: "npm:^4.2.2" + eslint-import-resolver-typescript: "npm:^4.3.1" eslint-plugin-css: "npm:^0.11.0" - eslint-plugin-import-x: "npm:^4.9.1" + eslint-plugin-import-x: "npm:^4.10.0" eslint-plugin-jest: "npm:^28.11.0" - eslint-plugin-jsdoc: "npm:^50.6.8" - eslint-plugin-jsonc: "npm:^2.19.1" + eslint-plugin-jsdoc: "npm:^50.6.9" + eslint-plugin-jsonc: "npm:^2.20.0" eslint-plugin-markup: "npm:^1.0.0" - eslint-plugin-mdx: "npm:^3.2.0" - eslint-plugin-n: "npm:^17.16.2" - eslint-plugin-prettier: "npm:^5.2.3" + eslint-plugin-mdx: "npm:^3.3.1" + eslint-plugin-n: "npm:^17.17.0" + eslint-plugin-prettier: "npm:^5.2.5" eslint-plugin-promise: "npm:^7.2.1" eslint-plugin-react-hooks: "npm:^5.2.0" eslint-plugin-regexp: "npm:^2.7.0" eslint-plugin-simple-import-sort: "npm:^12.1.1" eslint-plugin-sonarjs: "npm:^3.0.2" eslint-plugin-toml: "npm:^0.12.0" - eslint-plugin-unicorn: "npm:^57.0.0" + eslint-plugin-unicorn: "npm:^58.0.0" eslint-plugin-vue: "npm:^10.0.0" eslint-plugin-yml: "npm:^1.17.0" globals: "npm:^16.0.0" - typescript-eslint: "npm:^8.27.0" + typescript-eslint: "npm:^8.29.0" peerDependencies: eslint: ">=8.0.0" - checksum: 10c0/59257c77c71d395e90189c43db7bc14514fdca771ba633e96f26e67f4937431a4f1c63e011148e6d3ed75793965d8e73dcb8a831d01bac2ed0906eaf32d5bdbe + checksum: 10c0/f8afbf6c1b4d5c2ceb75bcd9f252a5e866a42d4e2981c48f1d24f7e0fd263700a41a1d6613a41b4a83cb38aa0411a2531fea712b07fff77245a9483a6020ffd9 languageName: node linkType: hard -"@1stg/lint-staged@npm:^4.0.5": +"@1stg/lint-staged@npm:^4.0.6": version: 4.0.6 resolution: "@1stg/lint-staged@npm:4.0.6" dependencies: @@ -142,23 +142,23 @@ __metadata: languageName: node linkType: hard -"@1stg/prettier-config@npm:^4.0.5": - version: 4.0.5 - resolution: "@1stg/prettier-config@npm:4.0.5" +"@1stg/prettier-config@npm:^4.0.5, @1stg/prettier-config@npm:^4.0.6": + version: 4.0.6 + resolution: "@1stg/prettier-config@npm:4.0.6" dependencies: "@1stg/config": "npm:^1.0.1" - "@prettier/plugin-pug": "npm:^3.2.1" + "@prettier/plugin-pug": "npm:^3.3.0" "@prettier/plugin-ruby": "npm:^4.0.4" "@prettier/plugin-xml": "npm:^3.4.1" prettier-plugin-ini: "npm:^1.3.0" prettier-plugin-pkg: "npm:^0.18.1" prettier-plugin-properties: "npm:^0.3.0" - prettier-plugin-sh: "npm:^0.15.0" + prettier-plugin-sh: "npm:^0.16.0" prettier-plugin-stylus: "npm:^0.1.0" - prettier-plugin-toml: "npm:^2.0.2" + prettier-plugin-toml: "npm:^2.0.3" peerDependencies: prettier: ^3.0.0 - checksum: 10c0/9133458c4daa67e0dd50747fa0e42e858fe30951936cc04cbf9c194051f95c26d238cd6e12c410b8dc07d0fdaf5a129893d358f55d0a26f4b120125bafbc42e5 + checksum: 10c0/902fe459afee47e58a97c960528b71e52b73988b19d898b5a5fbfff266fd42f77c1b9669b56cd9adfe36f4db52f31c09712dde95017e08a262b533fdfc51cc3c languageName: node linkType: hard @@ -180,7 +180,7 @@ __metadata: languageName: node linkType: hard -"@1stg/simple-git-hooks@npm:^1.0.0": +"@1stg/simple-git-hooks@npm:^1.0.1": version: 1.0.1 resolution: "@1stg/simple-git-hooks@npm:1.0.1" dependencies: @@ -380,7 +380,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.26.10": +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.26.10": version: 7.26.10 resolution: "@babel/core@npm:7.26.10" dependencies: @@ -403,9 +403,9 @@ __metadata: languageName: node linkType: hard -"@babel/eslint-parser@npm:^7.26.10": - version: 7.26.10 - resolution: "@babel/eslint-parser@npm:7.26.10" +"@babel/eslint-parser@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/eslint-parser@npm:7.27.0" dependencies: "@nicolo-ribaudo/eslint-scope-5-internals": "npm:5.1.1-v1" eslint-visitor-keys: "npm:^2.1.0" @@ -413,32 +413,32 @@ __metadata: peerDependencies: "@babel/core": ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - checksum: 10c0/02ff3dec84e4414cf7de5e5221c452b8a8587ac80c2e8793e182abcab379d1d32b1da494ec42623739f76361c76314464b94a58d0ea5c8764169b5f985b2239d + checksum: 10c0/bbecdc3f21413c4f0b21bc0ee93520ed47a61520a40d745f874097d01e6e22bf20a5f992d321656f4ef3ddbc04535a7da7ca6de2e87cecb82bbee0888f996480 languageName: node linkType: hard -"@babel/eslint-plugin@npm:^7.26.10": - version: 7.26.10 - resolution: "@babel/eslint-plugin@npm:7.26.10" +"@babel/eslint-plugin@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/eslint-plugin@npm:7.27.0" dependencies: eslint-rule-composer: "npm:^0.3.0" peerDependencies: "@babel/eslint-parser": ^7.11.0 eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - checksum: 10c0/ebc0c4b01df752d5c61a5c8898ff5d03034f2f0d1c4f6b93ae24b2de521ded5e0584506a9dd50ba466bbaa6441f141a745be4eccba1f76d15f515f9595edc7b1 + checksum: 10c0/1444f0a6721ebe5c490d7b45e2ef389c19e95c72e872aa149c7c42c787cb4a72f5c1852efa4ac35a23de735d83fd949411417bbb0299aa43b6252897a99c52f2 languageName: node linkType: hard -"@babel/generator@npm:^7.0.0-beta.44, @babel/generator@npm:^7.26.10, @babel/generator@npm:^7.7.2": - version: 7.26.10 - resolution: "@babel/generator@npm:7.26.10" +"@babel/generator@npm:^7.0.0-beta.44, @babel/generator@npm:^7.26.10, @babel/generator@npm:^7.27.0, @babel/generator@npm:^7.7.2": + version: 7.27.0 + resolution: "@babel/generator@npm:7.27.0" dependencies: - "@babel/parser": "npm:^7.26.10" - "@babel/types": "npm:^7.26.10" + "@babel/parser": "npm:^7.27.0" + "@babel/types": "npm:^7.27.0" "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" jsesc: "npm:^3.0.2" - checksum: 10c0/88b3b3ea80592fc89349c4e1a145e1386e4042866d2507298adf452bf972f68d13bf699a845e6ab8c028bd52c2247013eb1221b86e1db5c9779faacba9c4b10e + checksum: 10c0/7cb10693d2b365c278f109a745dc08856cae139d262748b77b70ce1d97da84627f79648cab6940d847392c0e5d180441669ed958b3aee98d9c7d274b37c553bd languageName: node linkType: hard @@ -464,20 +464,20 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.21.0, @babel/helper-create-class-features-plugin@npm:^7.25.9": - version: 7.26.9 - resolution: "@babel/helper-create-class-features-plugin@npm:7.26.9" +"@babel/helper-create-class-features-plugin@npm:^7.21.0, @babel/helper-create-class-features-plugin@npm:^7.25.9, @babel/helper-create-class-features-plugin@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/helper-create-class-features-plugin@npm:7.27.0" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.25.9" "@babel/helper-member-expression-to-functions": "npm:^7.25.9" "@babel/helper-optimise-call-expression": "npm:^7.25.9" "@babel/helper-replace-supers": "npm:^7.26.5" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" - "@babel/traverse": "npm:^7.26.9" + "@babel/traverse": "npm:^7.27.0" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10c0/808620b350ac012f22163fd44c38ed8e05b24ce5d37bc4aa99a44e9724205f11efcef6b25ccfa5bb5de82ac32b899f1e939123c688f335d2851f4b8d70742233 + checksum: 10c0/c4945903136d934050e070f69a4d72ec425f1f70634e0ddf14ad36695f935125a6df559f8d5b94cc1ed49abd4ce9c5be8ef3ba033fa8d09c5dd78d1a9b97d8cc languageName: node linkType: hard @@ -645,14 +645,14 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.26.10, @babel/parser@npm:^7.26.9": - version: 7.26.10 - resolution: "@babel/parser@npm:7.26.10" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.3, @babel/parser@npm:^7.26.10, @babel/parser@npm:^7.26.9, @babel/parser@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/parser@npm:7.27.0" dependencies: - "@babel/types": "npm:^7.26.10" + "@babel/types": "npm:^7.27.0" bin: parser: ./bin/babel-parser.js - checksum: 10c0/c47f5c0f63cd12a663e9dc94a635f9efbb5059d98086a92286d7764357c66bceba18ccbe79333e01e9be3bfb8caba34b3aaebfd8e62c3d5921c8cf907267be75 + checksum: 10c0/ba2ed3f41735826546a3ef2a7634a8d10351df221891906e59b29b0a0cd748f9b0e7a6f07576858a9de8e77785aad925c8389ddef146de04ea2842047c9d2859 languageName: node linkType: hard @@ -1544,7 +1544,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.23.3, @babel/plugin-transform-modules-commonjs@npm:^7.25.9, @babel/plugin-transform-modules-commonjs@npm:^7.26.3": +"@babel/plugin-transform-modules-commonjs@npm:^7.23.3, @babel/plugin-transform-modules-commonjs@npm:^7.26.3": version: 7.26.3 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.26.3" dependencies: @@ -1862,18 +1862,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.25.9": - version: 7.26.8 - resolution: "@babel/plugin-transform-typescript@npm:7.26.8" +"@babel/plugin-transform-typescript@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/plugin-transform-typescript@npm:7.27.0" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.25.9" - "@babel/helper-create-class-features-plugin": "npm:^7.25.9" + "@babel/helper-create-class-features-plugin": "npm:^7.27.0" "@babel/helper-plugin-utils": "npm:^7.26.5" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.25.9" "@babel/plugin-syntax-typescript": "npm:^7.25.9" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/c1dc02c357b8de0650d4e757fe71db9ac769b68e282a262ca5af2a7f1ff112c4533d54db6f1f58f13072ad547561b0461c46c08233566b37f778ac5f5550fb41 + checksum: 10c0/028e75dd6195495dc2d105ca8ded19d62aef90a215d597451cee57c35325960a87963913aa9a21b8ade190c638b588422292ea7e23b21565baf53c469254dbd4 languageName: node linkType: hard @@ -2032,18 +2032,18 @@ __metadata: languageName: node linkType: hard -"@babel/preset-typescript@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/preset-typescript@npm:7.26.0" +"@babel/preset-typescript@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/preset-typescript@npm:7.27.0" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.26.5" "@babel/helper-validator-option": "npm:^7.25.9" "@babel/plugin-syntax-jsx": "npm:^7.25.9" - "@babel/plugin-transform-modules-commonjs": "npm:^7.25.9" - "@babel/plugin-transform-typescript": "npm:^7.25.9" + "@babel/plugin-transform-modules-commonjs": "npm:^7.26.3" + "@babel/plugin-transform-typescript": "npm:^7.27.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/20d86bc45d2bbfde2f84fc7d7b38746fa6481d4bde6643039ad4b1ff0b804c6d210ee43e6830effd8571f2ff43fa7ffd27369f42f2b3a2518bb92dc86c780c61 + checksum: 10c0/986b20edab3c18727d911a6e1a14095c1271afc6cc625b02f42b371f06c1e041e5d7c1baf2afe8b0029b60788a06f02fd6844dedfe54183b148ab9a7429438a9 languageName: node linkType: hard @@ -2056,39 +2056,39 @@ __metadata: languageName: node linkType: hard -"@babel/template@npm:^7.25.9, @babel/template@npm:^7.26.9, @babel/template@npm:^7.3.3": - version: 7.26.9 - resolution: "@babel/template@npm:7.26.9" +"@babel/template@npm:^7.25.9, @babel/template@npm:^7.26.9, @babel/template@npm:^7.27.0, @babel/template@npm:^7.3.3": + version: 7.27.0 + resolution: "@babel/template@npm:7.27.0" dependencies: "@babel/code-frame": "npm:^7.26.2" - "@babel/parser": "npm:^7.26.9" - "@babel/types": "npm:^7.26.9" - checksum: 10c0/019b1c4129cc01ad63e17529089c2c559c74709d225f595eee017af227fee11ae8a97a6ab19ae6768b8aa22d8d75dcb60a00b28f52e9fa78140672d928bc1ae9 + "@babel/parser": "npm:^7.27.0" + "@babel/types": "npm:^7.27.0" + checksum: 10c0/13af543756127edb5f62bf121f9b093c09a2b6fe108373887ccffc701465cfbcb17e07cf48aa7f440415b263f6ec006e9415c79dfc2e8e6010b069435f81f340 languageName: node linkType: hard -"@babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.10, @babel/traverse@npm:^7.26.5, @babel/traverse@npm:^7.26.8, @babel/traverse@npm:^7.26.9": - version: 7.26.10 - resolution: "@babel/traverse@npm:7.26.10" +"@babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.10, @babel/traverse@npm:^7.26.5, @babel/traverse@npm:^7.26.8, @babel/traverse@npm:^7.26.9, @babel/traverse@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/traverse@npm:7.27.0" dependencies: "@babel/code-frame": "npm:^7.26.2" - "@babel/generator": "npm:^7.26.10" - "@babel/parser": "npm:^7.26.10" - "@babel/template": "npm:^7.26.9" - "@babel/types": "npm:^7.26.10" + "@babel/generator": "npm:^7.27.0" + "@babel/parser": "npm:^7.27.0" + "@babel/template": "npm:^7.27.0" + "@babel/types": "npm:^7.27.0" debug: "npm:^4.3.1" globals: "npm:^11.1.0" - checksum: 10c0/4e86bb4e3c30a6162bb91df86329df79d96566c3e2d9ccba04f108c30473a3a4fd360d9990531493d90f6a12004f10f616bf9b9229ca30c816b708615e9de2ac + checksum: 10c0/c7af29781960dacaae51762e8bc6c4b13d6ab4b17312990fbca9fc38e19c4ad7fecaae24b1cf52fb844e8e6cdc76c70ad597f90e496bcb3cc0a1d66b41a0aa5b languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.5, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.10, @babel/types@npm:^7.26.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.26.10 - resolution: "@babel/types@npm:7.26.10" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.5, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.10, @babel/types@npm:^7.26.9, @babel/types@npm:^7.27.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.27.0 + resolution: "@babel/types@npm:7.27.0" dependencies: "@babel/helper-string-parser": "npm:^7.25.9" "@babel/helper-validator-identifier": "npm:^7.25.9" - checksum: 10c0/7a7f83f568bfc3dfabfaf9ae3a97ab5c061726c0afa7dcd94226d4f84a81559da368ed79671e3a8039d16f12476cf110381a377ebdea07587925f69628200dac + checksum: 10c0/6f1592eabe243c89a608717b07b72969be9d9d2fce1dee21426238757ea1fa60fdfc09b29de9e48d8104311afc6e6fb1702565a9cc1e09bc1e76f2b2ddb0f6e1 languageName: node linkType: hard @@ -2796,7 +2796,7 @@ __metadata: languageName: node linkType: hard -"@eslint-community/eslint-utils@npm:^4.1.2, @eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.3.0, @eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.4.1": +"@eslint-community/eslint-utils@npm:^4.1.2, @eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.3.0, @eslint-community/eslint-utils@npm:^4.4.0, @eslint-community/eslint-utils@npm:^4.5.0, @eslint-community/eslint-utils@npm:^4.5.1": version: 4.5.1 resolution: "@eslint-community/eslint-utils@npm:4.5.1" dependencies: @@ -2814,62 +2814,64 @@ __metadata: languageName: node linkType: hard -"@eslint-react/ast@npm:1.37.3": - version: 1.37.3 - resolution: "@eslint-react/ast@npm:1.37.3" +"@eslint-react/ast@npm:1.40.1": + version: 1.40.1 + resolution: "@eslint-react/ast@npm:1.40.1" dependencies: - "@eslint-react/eff": "npm:1.37.3" - "@typescript-eslint/types": "npm:^8.27.0" - "@typescript-eslint/typescript-estree": "npm:^8.27.0" - "@typescript-eslint/utils": "npm:^8.27.0" + "@eslint-react/eff": "npm:1.40.1" + "@typescript-eslint/types": "npm:^8.29.0" + "@typescript-eslint/typescript-estree": "npm:^8.29.0" + "@typescript-eslint/utils": "npm:^8.29.0" string-ts: "npm:^2.2.1" - ts-pattern: "npm:^5.6.2" - checksum: 10c0/90d0026e6f70c2f488464f80b0148b5e7e1d1a9c1eb0377ba367aae6bbe7879bf9a2d5794d2cdd2a39a139c63af33380f11062468c058e683fdbfd6e0958fb68 + ts-pattern: "npm:^5.7.0" + checksum: 10c0/2c0e230a20ea95423775acb374ff86e0c22526189123698954e46dc3e9ccae5fe349cafe88a7390d9004d69fc1c773b27970c235b38140f8fee668113c6ac515 languageName: node linkType: hard -"@eslint-react/core@npm:1.37.3": - version: 1.37.3 - resolution: "@eslint-react/core@npm:1.37.3" +"@eslint-react/core@npm:1.40.1": + version: 1.40.1 + resolution: "@eslint-react/core@npm:1.40.1" dependencies: - "@eslint-react/ast": "npm:1.37.3" - "@eslint-react/eff": "npm:1.37.3" - "@eslint-react/jsx": "npm:1.37.3" - "@eslint-react/shared": "npm:1.37.3" - "@eslint-react/var": "npm:1.37.3" - "@typescript-eslint/scope-manager": "npm:^8.27.0" - "@typescript-eslint/type-utils": "npm:^8.27.0" - "@typescript-eslint/types": "npm:^8.27.0" - "@typescript-eslint/utils": "npm:^8.27.0" + "@eslint-react/ast": "npm:1.40.1" + "@eslint-react/eff": "npm:1.40.1" + "@eslint-react/jsx": "npm:1.40.1" + "@eslint-react/kit": "npm:1.40.1" + "@eslint-react/shared": "npm:1.40.1" + "@eslint-react/var": "npm:1.40.1" + "@typescript-eslint/scope-manager": "npm:^8.29.0" + "@typescript-eslint/type-utils": "npm:^8.29.0" + "@typescript-eslint/types": "npm:^8.29.0" + "@typescript-eslint/utils": "npm:^8.29.0" birecord: "npm:^0.1.1" - ts-pattern: "npm:^5.6.2" - checksum: 10c0/6f8899e32ed036dbefac6592c8cd56cb020d5a85d72e1f39f41201e4bc750d9ec20e73f4928d54d0a662e84f21dc3bfc579965b7af8573ebac7e28f336840443 + ts-pattern: "npm:^5.7.0" + checksum: 10c0/23bcf92edb161b81ff61d68c8c15317d023db0a168f2aa7a97a18246747ac981e3e7532b18002a87e2e8f6313df1fc1e6991e3859b3cab6a0ba33f98546c5254 languageName: node linkType: hard -"@eslint-react/eff@npm:1.37.3": - version: 1.37.3 - resolution: "@eslint-react/eff@npm:1.37.3" - checksum: 10c0/315e71fe8e32fa1958721d923b20b790432ddaa0b1cebef542aca9b76d38cb14481c72bde8ffddf8eafe0bdb6019f5bf04e7dfe191c46d837d0b5839b2080a96 +"@eslint-react/eff@npm:1.40.1": + version: 1.40.1 + resolution: "@eslint-react/eff@npm:1.40.1" + checksum: 10c0/b01a5c8db1fc5829b15c8d9c21a6157fb602c8100b2bc3f70a1eedb707d7e012ca8d59827594c1a87417f06ff304cb7b8eaebc8242205cf125acfdd47127ea7d languageName: node linkType: hard -"@eslint-react/eslint-plugin@npm:^1.37.3": - version: 1.37.3 - resolution: "@eslint-react/eslint-plugin@npm:1.37.3" +"@eslint-react/eslint-plugin@npm:^1.40.0": + version: 1.40.1 + resolution: "@eslint-react/eslint-plugin@npm:1.40.1" dependencies: - "@eslint-react/eff": "npm:1.37.3" - "@eslint-react/shared": "npm:1.37.3" - "@typescript-eslint/scope-manager": "npm:^8.27.0" - "@typescript-eslint/type-utils": "npm:^8.27.0" - "@typescript-eslint/types": "npm:^8.27.0" - "@typescript-eslint/utils": "npm:^8.27.0" - eslint-plugin-react-debug: "npm:1.37.3" - eslint-plugin-react-dom: "npm:1.37.3" - eslint-plugin-react-hooks-extra: "npm:1.37.3" - eslint-plugin-react-naming-convention: "npm:1.37.3" - eslint-plugin-react-web-api: "npm:1.37.3" - eslint-plugin-react-x: "npm:1.37.3" + "@eslint-react/eff": "npm:1.40.1" + "@eslint-react/kit": "npm:1.40.1" + "@eslint-react/shared": "npm:1.40.1" + "@typescript-eslint/scope-manager": "npm:^8.29.0" + "@typescript-eslint/type-utils": "npm:^8.29.0" + "@typescript-eslint/types": "npm:^8.29.0" + "@typescript-eslint/utils": "npm:^8.29.0" + eslint-plugin-react-debug: "npm:1.40.1" + eslint-plugin-react-dom: "npm:1.40.1" + eslint-plugin-react-hooks-extra: "npm:1.40.1" + eslint-plugin-react-naming-convention: "npm:1.40.1" + eslint-plugin-react-web-api: "npm:1.40.1" + eslint-plugin-react-x: "npm:1.40.1" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ^4.9.5 || ^5.3.3 @@ -2878,49 +2880,63 @@ __metadata: optional: false typescript: optional: true - checksum: 10c0/e802bb789007d4e9a1179aefe46da37a3dceb2177f0d05a653cec4bd7b39abab74d1212fdf04053f95bc4a717a44ab8011c96dc4c6296633e0456afcc1fe0cca + checksum: 10c0/ad3a84df7483fbab4ebc335f22e284c79bc80774c006af80ee4ba088aff4fb7f949cf32531d19fb530046c8a7d44ac79cc179c0363695cc39bb817868d0c9002 + languageName: node + linkType: hard + +"@eslint-react/jsx@npm:1.40.1": + version: 1.40.1 + resolution: "@eslint-react/jsx@npm:1.40.1" + dependencies: + "@eslint-react/ast": "npm:1.40.1" + "@eslint-react/eff": "npm:1.40.1" + "@eslint-react/var": "npm:1.40.1" + "@typescript-eslint/scope-manager": "npm:^8.29.0" + "@typescript-eslint/types": "npm:^8.29.0" + "@typescript-eslint/utils": "npm:^8.29.0" + ts-pattern: "npm:^5.7.0" + checksum: 10c0/2efe0d02e99439eb9b37c05fa71b8150027890ff52cdf52f11014a56de0b127de1a80472abfa5c2b2cc211cf29438acfe2709dc0f45c84da66fd0865ad084caa languageName: node linkType: hard -"@eslint-react/jsx@npm:1.37.3": - version: 1.37.3 - resolution: "@eslint-react/jsx@npm:1.37.3" +"@eslint-react/kit@npm:1.40.1": + version: 1.40.1 + resolution: "@eslint-react/kit@npm:1.40.1" dependencies: - "@eslint-react/ast": "npm:1.37.3" - "@eslint-react/eff": "npm:1.37.3" - "@eslint-react/var": "npm:1.37.3" - "@typescript-eslint/scope-manager": "npm:^8.27.0" - "@typescript-eslint/types": "npm:^8.27.0" - "@typescript-eslint/utils": "npm:^8.27.0" - ts-pattern: "npm:^5.6.2" - checksum: 10c0/4f78eb700ab5bf9610cb6ef5383f6ae7e2830b6e701567d6d803cf72045005250342e245969015a9bc33a9a19ba7578ca0aa43b4a316b501a8bc97f1fb0dfe44 + "@eslint-react/eff": "npm:1.40.1" + "@typescript-eslint/utils": "npm:^8.29.0" + ts-pattern: "npm:^5.7.0" + valibot: "npm:^1.0.0" + checksum: 10c0/1f138c9f750dcab5935b956ecb1bb4efe0dc240a7b3fb9968ac063881e5fdc5b900eda03740872892f6ac7873acc459b46bc814949f8dd426103251e2a2f3f7d languageName: node linkType: hard -"@eslint-react/shared@npm:1.37.3": - version: 1.37.3 - resolution: "@eslint-react/shared@npm:1.37.3" +"@eslint-react/shared@npm:1.40.1": + version: 1.40.1 + resolution: "@eslint-react/shared@npm:1.40.1" dependencies: - "@eslint-react/eff": "npm:1.37.3" - "@typescript-eslint/utils": "npm:^8.27.0" + "@eslint-react/eff": "npm:1.40.1" + "@eslint-react/kit": "npm:1.40.1" + "@typescript-eslint/utils": "npm:^8.29.0" picomatch: "npm:^4.0.2" - ts-pattern: "npm:^5.6.2" - checksum: 10c0/a8f7776085e38b7d3ff4086aa27cc1edf5b48b30154fc47673fdc380a2ce7dc2927ee9d4b86dd34b75ea542fded676f5d52e42767d440cec1d719b7db8944b20 + ts-pattern: "npm:^5.7.0" + valibot: "npm:^1.0.0" + checksum: 10c0/f37712db565daa52921a591bb44248d7c7baf0635e6f31c78ae88ea32393f6544765544b1040f656eca4b95391fb06a1ac66a3e4f4dd7f1fddb386bc5d081459 languageName: node linkType: hard -"@eslint-react/var@npm:1.37.3": - version: 1.37.3 - resolution: "@eslint-react/var@npm:1.37.3" +"@eslint-react/var@npm:1.40.1": + version: 1.40.1 + resolution: "@eslint-react/var@npm:1.40.1" dependencies: - "@eslint-react/ast": "npm:1.37.3" - "@eslint-react/eff": "npm:1.37.3" - "@typescript-eslint/scope-manager": "npm:^8.27.0" - "@typescript-eslint/types": "npm:^8.27.0" - "@typescript-eslint/utils": "npm:^8.27.0" + "@eslint-react/ast": "npm:1.40.1" + "@eslint-react/eff": "npm:1.40.1" + "@typescript-eslint/scope-manager": "npm:^8.29.0" + "@typescript-eslint/types": "npm:^8.29.0" + "@typescript-eslint/utils": "npm:^8.29.0" string-ts: "npm:^2.2.1" - ts-pattern: "npm:^5.6.2" - checksum: 10c0/bdc957d10e6db672027f7b0e0bd57dd5fab6a2c0af9114fa562f5cfb7a679ea75abe11523c2943dae82666a4be821cfcfc936cd225be81046838bc2f02fc1244 + ts-pattern: "npm:^5.7.0" + checksum: 10c0/b7e27bd86f2d590ef7aadf7eaf9a2636f65a2254da792c9aa1fa6228d6bec2ba27a3dbac462a6f3217fbeea8370ef7480351a936292db3b4da165df93596b393 languageName: node linkType: hard @@ -3066,7 +3082,7 @@ __metadata: languageName: node linkType: hard -"@istanbuljs/schema@npm:^0.1.2": +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": version: 0.1.3 resolution: "@istanbuljs/schema@npm:0.1.3" checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a @@ -3805,85 +3821,6 @@ __metadata: languageName: node linkType: hard -"@oxc-resolver/binding-darwin-arm64@npm:5.0.1": - version: 5.0.1 - resolution: "@oxc-resolver/binding-darwin-arm64@npm:5.0.1" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@oxc-resolver/binding-darwin-x64@npm:5.0.1": - version: 5.0.1 - resolution: "@oxc-resolver/binding-darwin-x64@npm:5.0.1" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"@oxc-resolver/binding-freebsd-x64@npm:5.0.1": - version: 5.0.1 - resolution: "@oxc-resolver/binding-freebsd-x64@npm:5.0.1" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"@oxc-resolver/binding-linux-arm-gnueabihf@npm:5.0.1": - version: 5.0.1 - resolution: "@oxc-resolver/binding-linux-arm-gnueabihf@npm:5.0.1" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"@oxc-resolver/binding-linux-arm64-gnu@npm:5.0.1": - version: 5.0.1 - resolution: "@oxc-resolver/binding-linux-arm64-gnu@npm:5.0.1" - conditions: os=linux & cpu=arm64 & libc=glibc - languageName: node - linkType: hard - -"@oxc-resolver/binding-linux-arm64-musl@npm:5.0.1": - version: 5.0.1 - resolution: "@oxc-resolver/binding-linux-arm64-musl@npm:5.0.1" - conditions: os=linux & cpu=arm64 & libc=musl - languageName: node - linkType: hard - -"@oxc-resolver/binding-linux-x64-gnu@npm:5.0.1": - version: 5.0.1 - resolution: "@oxc-resolver/binding-linux-x64-gnu@npm:5.0.1" - conditions: os=linux & cpu=x64 & libc=glibc - languageName: node - linkType: hard - -"@oxc-resolver/binding-linux-x64-musl@npm:5.0.1": - version: 5.0.1 - resolution: "@oxc-resolver/binding-linux-x64-musl@npm:5.0.1" - conditions: os=linux & cpu=x64 & libc=musl - languageName: node - linkType: hard - -"@oxc-resolver/binding-wasm32-wasi@npm:5.0.1": - version: 5.0.1 - resolution: "@oxc-resolver/binding-wasm32-wasi@npm:5.0.1" - dependencies: - "@napi-rs/wasm-runtime": "npm:^0.2.7" - conditions: cpu=wasm32 - languageName: node - linkType: hard - -"@oxc-resolver/binding-win32-arm64-msvc@npm:5.0.1": - version: 5.0.1 - resolution: "@oxc-resolver/binding-win32-arm64-msvc@npm:5.0.1" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@oxc-resolver/binding-win32-x64-msvc@npm:5.0.1": - version: 5.0.1 - resolution: "@oxc-resolver/binding-win32-x64-msvc@npm:5.0.1" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -3961,14 +3898,14 @@ __metadata: languageName: node linkType: hard -"@prettier/plugin-pug@npm:^3.2.1": - version: 3.2.1 - resolution: "@prettier/plugin-pug@npm:3.2.1" +"@prettier/plugin-pug@npm:^3.3.0": + version: 3.3.0 + resolution: "@prettier/plugin-pug@npm:3.3.0" dependencies: pug-lexer: "npm:^5.0.1" peerDependencies: prettier: ^3.0.0 - checksum: 10c0/f361496e1669e308e1e74b3de2f524ba92364904142b23cf496bc26531f8cab3ccea965d0cb32b6272656c0415f0dbfe422aa6dc844f56f89cbdbdc815899390 + checksum: 10c0/9ff70324bbbdb635bbcb0810cb874f05e5c3739a2519eccab02488820926a3d744d481e76608a77a8d119518a944a84ba9c07dcfc944bf4817e9508fd309c0de languageName: node linkType: hard @@ -4245,6 +4182,13 @@ __metadata: languageName: node linkType: hard +"@sindresorhus/merge-streams@npm:^2.1.0": + version: 2.3.0 + resolution: "@sindresorhus/merge-streams@npm:2.3.0" + checksum: 10c0/69ee906f3125fb2c6bb6ec5cdd84e8827d93b49b3892bce8b62267116cc7e197b5cccf20c160a1d32c26014ecd14470a72a5e3ee37a58f1d6dadc0db1ccf3894 + languageName: node + linkType: hard + "@sinonjs/commons@npm:^3.0.0": version: 3.0.1 resolution: "@sinonjs/commons@npm:3.0.1" @@ -4263,41 +4207,12 @@ __metadata: languageName: node linkType: hard -"@swc-node/core@npm:^1.13.3": - version: 1.13.3 - resolution: "@swc-node/core@npm:1.13.3" - peerDependencies: - "@swc/core": ">= 1.4.13" - "@swc/types": ">= 0.1" - checksum: 10c0/01f69d6124691569cedd2e6d0c6d3e33ab96d8fca6607780d64359c884750cfd77541e112e545cf37d9f0ee5fdccd57fbf9eb07cfd0ae26f8cca88c974e82e08 - languageName: node - linkType: hard - -"@swc-node/register@npm:^1.10.10": - version: 1.10.10 - resolution: "@swc-node/register@npm:1.10.10" - dependencies: - "@swc-node/core": "npm:^1.13.3" - "@swc-node/sourcemap-support": "npm:^0.5.1" - colorette: "npm:^2.0.20" - debug: "npm:^4.3.5" - oxc-resolver: "npm:^5.0.0" - pirates: "npm:^4.0.6" - tslib: "npm:^2.6.3" +"@size-limit/file@npm:^10.0.2": + version: 10.0.3 + resolution: "@size-limit/file@npm:10.0.3" peerDependencies: - "@swc/core": ">= 1.4.13" - typescript: ">= 4.3" - checksum: 10c0/001c75f44cc22dfe0298b1b6158efb8d2f0d477386c5b984a4df88611291773b52f87b4bde4028b9d647c76b2923cf1fc9f2c5ec6cce06a3cbcb9c340c589341 - languageName: node - linkType: hard - -"@swc-node/sourcemap-support@npm:^0.5.1": - version: 0.5.1 - resolution: "@swc-node/sourcemap-support@npm:0.5.1" - dependencies: - source-map-support: "npm:^0.5.21" - tslib: "npm:^2.6.3" - checksum: 10c0/5ac7e701a0683e0e6760c8078d4bb2829daa78c4946dcc729c75588b87112afc7352f7c8cd90cea9417b5f7494418d374a354795344c4cf81152bce3d5a17853 + size-limit: 10.0.3 + checksum: 10c0/a366a86a20baebb561c990cdca34586a7ef32bc752eec0b0f26d7dce72fbc95358b0e7aaf7835c51e5874113cd19787f541f4e74448ca01300a6cbbb47fb8c45 languageName: node linkType: hard @@ -4405,11 +4320,11 @@ __metadata: linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.5 - resolution: "@types/babel__traverse@npm:7.20.5" + version: 7.20.7 + resolution: "@types/babel__traverse@npm:7.20.7" dependencies: "@babel/types": "npm:^7.20.7" - checksum: 10c0/033abcb2f4c084ad33e30c3efaad82161240f351e3c71b6154ed289946b33b363696c0fbd42502b68e4582a87413c418321f40eb1ea863e34fe525641345e05b + checksum: 10c0/5386f0af44f8746b063b87418f06129a814e16bb2686965a575e9d7376b360b088b89177778d8c426012abc43dd1a2d8ec3218bfc382280c898682746ce2ffbd languageName: node linkType: hard @@ -4628,12 +4543,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:^22.0.0, @types/node@npm:^22.13.11": - version: 22.13.11 - resolution: "@types/node@npm:22.13.11" +"@types/node@npm:*, @types/node@npm:^22.0.0, @types/node@npm:^22.13.17": + version: 22.13.17 + resolution: "@types/node@npm:22.13.17" dependencies: undici-types: "npm:~6.20.0" - checksum: 10c0/f6ee33d36372242535c38640fe7550a6640d8a775ec19b55bfc11775b521cba072d892ca92a912332ce01b317293d645c1bf767f3f882ec719f2404a3d2a5b96 + checksum: 10c0/77a052fec0fe02f60557e1c5f3f28eb09cd9bee426be88328a94689150a3c0df5b4b6b69fad28157fb34521693dad0b311ecd7f613845d681ff973991310c20e languageName: node linkType: hard @@ -4739,15 +4654,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:8.27.0, @typescript-eslint/eslint-plugin@npm:^8.27.0": - version: 8.27.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.27.0" +"@typescript-eslint/eslint-plugin@npm:8.29.0, @typescript-eslint/eslint-plugin@npm:^8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.29.0" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:8.27.0" - "@typescript-eslint/type-utils": "npm:8.27.0" - "@typescript-eslint/utils": "npm:8.27.0" - "@typescript-eslint/visitor-keys": "npm:8.27.0" + "@typescript-eslint/scope-manager": "npm:8.29.0" + "@typescript-eslint/type-utils": "npm:8.29.0" + "@typescript-eslint/utils": "npm:8.29.0" + "@typescript-eslint/visitor-keys": "npm:8.29.0" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" @@ -4756,64 +4671,64 @@ __metadata: "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/95bbab011bfe51ca657ff346e4c6cac25652c88e5188a5e74d14372dba45c3d7aa713f4c90f80ebc885d77a8be89e131e8b77c096145c90da6c251a475b125fc + checksum: 10c0/3b05a7376a0752484229369af6eb60d13cf06d2331e79c2d471cb0b963dcf5b25a31617cafdc71d74e98921091f479f3da10725b761878a89421191d23866b54 languageName: node linkType: hard -"@typescript-eslint/parser@npm:8.27.0, @typescript-eslint/parser@npm:^8.27.0": - version: 8.27.0 - resolution: "@typescript-eslint/parser@npm:8.27.0" +"@typescript-eslint/parser@npm:8.29.0, @typescript-eslint/parser@npm:^8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/parser@npm:8.29.0" dependencies: - "@typescript-eslint/scope-manager": "npm:8.27.0" - "@typescript-eslint/types": "npm:8.27.0" - "@typescript-eslint/typescript-estree": "npm:8.27.0" - "@typescript-eslint/visitor-keys": "npm:8.27.0" + "@typescript-eslint/scope-manager": "npm:8.29.0" + "@typescript-eslint/types": "npm:8.29.0" + "@typescript-eslint/typescript-estree": "npm:8.29.0" + "@typescript-eslint/visitor-keys": "npm:8.29.0" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/2ada98167ca5a474544fada7658d7c8d54ea4dfdd692e3d30d18b5531e50d7308a5b09d23dca651f9fe841f96075ccd18643431f4b61d0e4e7e7ccde888258e8 + checksum: 10c0/270b9b27e3edb54b2f98a97b7f026f95580214002a04167809b1b71233c36d1585041cdcf26f9e08f48b9eb92652f4f9c756a83dc230f48fd204a4e5e054831c languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.27.0, @typescript-eslint/scope-manager@npm:^8.27.0": - version: 8.27.0 - resolution: "@typescript-eslint/scope-manager@npm:8.27.0" +"@typescript-eslint/scope-manager@npm:8.29.0, @typescript-eslint/scope-manager@npm:^8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/scope-manager@npm:8.29.0" dependencies: - "@typescript-eslint/types": "npm:8.27.0" - "@typescript-eslint/visitor-keys": "npm:8.27.0" - checksum: 10c0/d87daeffb81f4e70f168c38f01c667713bda71c4545e28fcdf0792378fb3df171894ef77854c5c1a5e5a22c784ee1ccea2dd856b5baf825840710a6a74c14ac9 + "@typescript-eslint/types": "npm:8.29.0" + "@typescript-eslint/visitor-keys": "npm:8.29.0" + checksum: 10c0/330d777043a99485b51197ad24927f1276d61e61adaf710f012b3fe7db2ab67c8925c0526f801715b498e7d8fa7cef390006b6f7ae40cee89abe22e8e438de9a languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.27.0, @typescript-eslint/type-utils@npm:^8.0.0, @typescript-eslint/type-utils@npm:^8.27.0": - version: 8.27.0 - resolution: "@typescript-eslint/type-utils@npm:8.27.0" +"@typescript-eslint/type-utils@npm:8.29.0, @typescript-eslint/type-utils@npm:^8.0.0, @typescript-eslint/type-utils@npm:^8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/type-utils@npm:8.29.0" dependencies: - "@typescript-eslint/typescript-estree": "npm:8.27.0" - "@typescript-eslint/utils": "npm:8.27.0" + "@typescript-eslint/typescript-estree": "npm:8.29.0" + "@typescript-eslint/utils": "npm:8.29.0" debug: "npm:^4.3.4" ts-api-utils: "npm:^2.0.1" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/f38cdc660ebcb3b71496182b9ea52301ab08a4f062558aa7061a5f0b759ae3e8f68ae250a29e74251cb52c6c56733d7dabed7002b993544cbe0933bb75d67a57 + checksum: 10c0/f254c8d22fc29ea088d16b06e4be1756cb5ad05ccf5989e163637b9c582e5fc8c27aa7003aad6e6a8158d56d7711ea1e4e9d361702c1a18945e0e6aaff1267c5 languageName: node linkType: hard -"@typescript-eslint/types@npm:8.27.0, @typescript-eslint/types@npm:^8.0.0, @typescript-eslint/types@npm:^8.27.0": - version: 8.27.0 - resolution: "@typescript-eslint/types@npm:8.27.0" - checksum: 10c0/9c5f2ba816a9baea5982feeadebe4d19f4df77ddb025a7b2307f9e1e6914076b63cbad81f7f915814e64b4d915052cf27bd79ce3e5a831340cb5ab244133941b +"@typescript-eslint/types@npm:8.29.0, @typescript-eslint/types@npm:^8.0.0, @typescript-eslint/types@npm:^8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/types@npm:8.29.0" + checksum: 10c0/fc1e3f3071102973a9cfb8ae843c51398bd74b5583b7b0edad182ea605ef85e72ceac7987513581869958b3a65303af6b3471bfba5b7be1338e8add62019c858 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.27.0, @typescript-eslint/typescript-estree@npm:^8.27.0": - version: 8.27.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.27.0" +"@typescript-eslint/typescript-estree@npm:8.29.0, @typescript-eslint/typescript-estree@npm:^8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.29.0" dependencies: - "@typescript-eslint/types": "npm:8.27.0" - "@typescript-eslint/visitor-keys": "npm:8.27.0" + "@typescript-eslint/types": "npm:8.29.0" + "@typescript-eslint/visitor-keys": "npm:8.29.0" debug: "npm:^4.3.4" fast-glob: "npm:^3.3.2" is-glob: "npm:^4.0.3" @@ -4822,32 +4737,32 @@ __metadata: ts-api-utils: "npm:^2.0.1" peerDependencies: typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/c04d602825ff2a7b2a89746a68b32f7052fb4ce3d2355d1f4e6f43fd064f17c3b44fb974c98838a078fdebdc35152d2ab0af34663dfca99db7a790bd3fc5d8ac + checksum: 10c0/61dd52229a0758e0bd29f732115c16e640a2418fb25488877c74ef03cdbeb43ddc592a37094abd794ef49812f33d6f814c5b662b95ea796ed0a6c6bfc849299b languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.27.0, @typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/utils@npm:^8.0.0, @typescript-eslint/utils@npm:^8.27.0": - version: 8.27.0 - resolution: "@typescript-eslint/utils@npm:8.27.0" +"@typescript-eslint/utils@npm:8.29.0, @typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/utils@npm:^8.0.0, @typescript-eslint/utils@npm:^8.28.0, @typescript-eslint/utils@npm:^8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/utils@npm:8.29.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:8.27.0" - "@typescript-eslint/types": "npm:8.27.0" - "@typescript-eslint/typescript-estree": "npm:8.27.0" + "@typescript-eslint/scope-manager": "npm:8.29.0" + "@typescript-eslint/types": "npm:8.29.0" + "@typescript-eslint/typescript-estree": "npm:8.29.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/dcfd5f2c17f1a33061e3ec70d0946ff23a4238aabacae3d85087165beccedf84fb8506d30848f2470e3b60ab98b230aef79c6e8b4c5d39648a37ac559ac5b1e0 + checksum: 10c0/e259d7edd12946b2dc8e1aa3bbea10f66c5277f27dda71368aa2b2923487f28cd1c123681aaae22518a31c8aeabd60a5365f8a832d0f6e6efadb03745a2d8a31 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.27.0": - version: 8.27.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.27.0" +"@typescript-eslint/visitor-keys@npm:8.29.0": + version: 8.29.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.29.0" dependencies: - "@typescript-eslint/types": "npm:8.27.0" + "@typescript-eslint/types": "npm:8.29.0" eslint-visitor-keys: "npm:^4.2.0" - checksum: 10c0/d86fd4032db07123816aab3a6b8b53f840387385ab2a4d8f96b22fc76b5438fb27ac8dc42b63caf23f3d265c33e9075dbf1ce8d31f939df12f5cd077d3b10295 + checksum: 10c0/7f5452b137c4edd258b2289cddf5d92687780375db33421bc4f5e2e9b0c94064c7c5ed3a7b5d96dc9c2d09ca7842b4415b3f3ed3e3f1ae3ac2e625ecb5e87efc languageName: node linkType: hard @@ -4858,81 +4773,109 @@ __metadata: languageName: node linkType: hard -"@unrs/rspack-resolver-binding-darwin-arm64@npm:1.2.2": - version: 1.2.2 - resolution: "@unrs/rspack-resolver-binding-darwin-arm64@npm:1.2.2" +"@unrs/resolver-binding-darwin-arm64@npm:1.3.3": + version: 1.3.3 + resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.3.3" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@unrs/rspack-resolver-binding-darwin-x64@npm:1.2.2": - version: 1.2.2 - resolution: "@unrs/rspack-resolver-binding-darwin-x64@npm:1.2.2" +"@unrs/resolver-binding-darwin-x64@npm:1.3.3": + version: 1.3.3 + resolution: "@unrs/resolver-binding-darwin-x64@npm:1.3.3" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@unrs/rspack-resolver-binding-freebsd-x64@npm:1.2.2": - version: 1.2.2 - resolution: "@unrs/rspack-resolver-binding-freebsd-x64@npm:1.2.2" +"@unrs/resolver-binding-freebsd-x64@npm:1.3.3": + version: 1.3.3 + resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.3.3" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@unrs/rspack-resolver-binding-linux-arm-gnueabihf@npm:1.2.2": - version: 1.2.2 - resolution: "@unrs/rspack-resolver-binding-linux-arm-gnueabihf@npm:1.2.2" +"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.3.3": + version: 1.3.3 + resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.3.3" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@unrs/rspack-resolver-binding-linux-arm64-gnu@npm:1.2.2": - version: 1.2.2 - resolution: "@unrs/rspack-resolver-binding-linux-arm64-gnu@npm:1.2.2" +"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.3.3": + version: 1.3.3 + resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.3.3" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-gnu@npm:1.3.3": + version: 1.3.3 + resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.3.3" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@unrs/rspack-resolver-binding-linux-arm64-musl@npm:1.2.2": - version: 1.2.2 - resolution: "@unrs/rspack-resolver-binding-linux-arm64-musl@npm:1.2.2" +"@unrs/resolver-binding-linux-arm64-musl@npm:1.3.3": + version: 1.3.3 + resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.3.3" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@unrs/rspack-resolver-binding-linux-x64-gnu@npm:1.2.2": - version: 1.2.2 - resolution: "@unrs/rspack-resolver-binding-linux-x64-gnu@npm:1.2.2" +"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.3.3": + version: 1.3.3 + resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.3.3" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-s390x-gnu@npm:1.3.3": + version: 1.3.3 + resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.3.3" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-gnu@npm:1.3.3": + version: 1.3.3 + resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.3.3" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@unrs/rspack-resolver-binding-linux-x64-musl@npm:1.2.2": - version: 1.2.2 - resolution: "@unrs/rspack-resolver-binding-linux-x64-musl@npm:1.2.2" +"@unrs/resolver-binding-linux-x64-musl@npm:1.3.3": + version: 1.3.3 + resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.3.3" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@unrs/rspack-resolver-binding-wasm32-wasi@npm:1.2.2": - version: 1.2.2 - resolution: "@unrs/rspack-resolver-binding-wasm32-wasi@npm:1.2.2" +"@unrs/resolver-binding-wasm32-wasi@npm:1.3.3": + version: 1.3.3 + resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.3.3" dependencies: "@napi-rs/wasm-runtime": "npm:^0.2.7" conditions: cpu=wasm32 languageName: node linkType: hard -"@unrs/rspack-resolver-binding-win32-arm64-msvc@npm:1.2.2": - version: 1.2.2 - resolution: "@unrs/rspack-resolver-binding-win32-arm64-msvc@npm:1.2.2" +"@unrs/resolver-binding-win32-arm64-msvc@npm:1.3.3": + version: 1.3.3 + resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.3.3" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@unrs/rspack-resolver-binding-win32-x64-msvc@npm:1.2.2": - version: 1.2.2 - resolution: "@unrs/rspack-resolver-binding-win32-x64-msvc@npm:1.2.2" +"@unrs/resolver-binding-win32-ia32-msvc@npm:1.3.3": + version: 1.3.3 + resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.3.3" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-x64-msvc@npm:1.3.3": + version: 1.3.3 + resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.3.3" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -5518,7 +5461,7 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:^3.0.3": +"anymatch@npm:^3.0.3, anymatch@npm:~3.1.2": version: 3.1.3 resolution: "anymatch@npm:3.1.3" dependencies: @@ -5891,6 +5834,13 @@ __metadata: languageName: node linkType: hard +"binary-extensions@npm:^2.0.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 + languageName: node + linkType: hard + "bindings@npm:^1.5.0": version: 1.5.0 resolution: "bindings@npm:1.5.0" @@ -5944,7 +5894,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.3": +"braces@npm:^3.0.3, braces@npm:~3.0.2": version: 3.0.3 resolution: "braces@npm:3.0.3" dependencies: @@ -6009,10 +5959,17 @@ __metadata: languageName: node linkType: hard -"builtin-modules@npm:^4.0.0": - version: 4.0.0 - resolution: "builtin-modules@npm:4.0.0" - checksum: 10c0/c10c71c35a1a9b2c5fbb58c1b7eed3f38f16ec0903de55dfa54604ff19895dd7f35b79e5bb0756fc09642714d637ca905653b35ba76c00ae29310ca5c9668bf5 +"builtin-modules@npm:^5.0.0": + version: 5.0.0 + resolution: "builtin-modules@npm:5.0.0" + checksum: 10c0/bee8e74d1b949133c66a30b2e7982b3bdfe70d09f72bc4425ac9811d01d6f2f11abbe66c47aa9c977800a255155cac5a8068e0714cd2dc31867762fb309fd065 + languageName: node + linkType: hard + +"bytes-iec@npm:^3.1.1": + version: 3.1.1 + resolution: "bytes-iec@npm:3.1.1" + checksum: 10c0/cb553a214d49afe2efb4f9f6f03c0a76dbf2b0db8fe176c1d9943f74b79fb36767938e5f0a60991d870309c96f21e440904dd4f92b54c9c316c88486e6eef025 languageName: node linkType: hard @@ -6218,7 +6175,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:4.0.3": +"chokidar@npm:4.0.3, chokidar@npm:^4.0.3": version: 4.0.3 resolution: "chokidar@npm:4.0.3" dependencies: @@ -6227,6 +6184,25 @@ __metadata: languageName: node linkType: hard +"chokidar@npm:^3.5.3": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 + languageName: node + linkType: hard + "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -6257,7 +6233,7 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^4.0.0, ci-info@npm:^4.1.0": +"ci-info@npm:^4.0.0, ci-info@npm:^4.2.0": version: 4.2.0 resolution: "ci-info@npm:4.2.0" checksum: 10c0/37a2f4b6a213a5cf835890eb0241f0d5b022f6cfefde58a69e9af8e3a0e71e06d6ad7754b0d4efb9cd2613e58a7a33996d71b56b0d04242722e86666f3f3d058 @@ -6568,7 +6544,7 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.40.0": +"core-js-compat@npm:^3.40.0, core-js-compat@npm:^3.41.0": version: 3.41.0 resolution: "core-js-compat@npm:3.41.0" dependencies: @@ -6720,7 +6696,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:4.4.0, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:^4.3.6, debug@npm:^4.4.0": +"debug@npm:4, debug@npm:4.4.0, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.6, debug@npm:^4.4.0": version: 4.4.0 resolution: "debug@npm:4.4.0" dependencies: @@ -7367,7 +7343,7 @@ __metadata: languageName: node linkType: hard -"eslint-compat-utils@npm:^0.6.0": +"eslint-compat-utils@npm:^0.6.0, eslint-compat-utils@npm:^0.6.4": version: 0.6.4 resolution: "eslint-compat-utils@npm:0.6.4" dependencies: @@ -7400,28 +7376,26 @@ __metadata: languageName: node linkType: hard -"eslint-import-resolver-typescript@npm:^4.2.2": - version: 4.2.2 - resolution: "eslint-import-resolver-typescript@npm:4.2.2" +"eslint-import-resolver-typescript@npm:^4.3.1": + version: 4.3.1 + resolution: "eslint-import-resolver-typescript@npm:4.3.1" dependencies: debug: "npm:^4.4.0" get-tsconfig: "npm:^4.10.0" - rspack-resolver: "npm:^1.2.2" + is-bun-module: "npm:^2.0.0" stable-hash: "npm:^0.0.5" tinyglobby: "npm:^0.2.12" + unrs-resolver: "npm:^1.3.3" peerDependencies: eslint: "*" eslint-plugin-import: "*" eslint-plugin-import-x: "*" - is-bun-module: "*" peerDependenciesMeta: eslint-plugin-import: optional: true eslint-plugin-import-x: optional: true - is-bun-module: - optional: true - checksum: 10c0/ac6eea204e8dad2a802fbed4468040dd3a5e613d8693f44d8c4cc316c6019c1cc690369b32c567c32fd5f289b6d3102984863bf122290001dd9229cb8ed9ee3c + checksum: 10c0/ed6ff5f71e41495d0045625497fbcdc09a54bcca959b118a35e505edaaf5dd9fcd2d5d10477b952fe59d1d9cb2703f43cc30595a7ba9b569169515c1646d51ea languageName: node linkType: hard @@ -7440,18 +7414,18 @@ __metadata: languageName: node linkType: hard -"eslint-mdx@npm:^3.2.0": - version: 3.2.0 - resolution: "eslint-mdx@npm:3.2.0" +"eslint-mdx@npm:^3.3.1": + version: 3.3.1 + resolution: "eslint-mdx@npm:3.3.1" dependencies: acorn: "npm:^8.14.1" acorn-jsx: "npm:^5.3.2" - espree: "npm:^9.6.1" + espree: "npm:^9.6.1 || ^10.3.0" estree-util-visit: "npm:^2.0.0" remark-mdx: "npm:^3.1.0" remark-parse: "npm:^11.0.0" remark-stringify: "npm:^11.0.0" - synckit: "npm:^0.9.2" + synckit: "npm:^0.10.3" tslib: "npm:^2.8.1" unified: "npm:^11.0.5" unified-engine: "npm:^11.2.2" @@ -7460,7 +7434,11 @@ __metadata: vfile: "npm:^6.0.3" peerDependencies: eslint: ">=8.0.0" - checksum: 10c0/973d63945aa2eabc78260d96ca2c0e0d055c46f9d6ba38b74f980d2f52abf74b04210dbe7b96d9cb6aa96de5b672e03d3b38354d14059238887cd5878af64c67 + remark-lint-file-extension: "*" + peerDependenciesMeta: + remark-lint-file-extension: + optional: true + checksum: 10c0/84c5bceba94f8ab033914bab55d28b9d4670deef97e50dde915cc90afc11b7c958334790f9360c2037a9346a3ca7fac82044de963f0c9b044962fe63b3783ca3 languageName: node linkType: hard @@ -7492,25 +7470,26 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-import-x@npm:^4.9.1": - version: 4.9.1 - resolution: "eslint-plugin-import-x@npm:4.9.1" +"eslint-plugin-import-x@npm:^4.10.0": + version: 4.10.0 + resolution: "eslint-plugin-import-x@npm:4.10.0" dependencies: + "@pkgr/core": "npm:^0.2.0" "@types/doctrine": "npm:^0.0.9" - "@typescript-eslint/utils": "npm:^8.27.0" + "@typescript-eslint/utils": "npm:^8.28.0" debug: "npm:^4.4.0" doctrine: "npm:^3.0.0" eslint-import-resolver-node: "npm:^0.3.9" get-tsconfig: "npm:^4.10.0" is-glob: "npm:^4.0.3" - minimatch: "npm:^10.0.1" - rspack-resolver: "npm:^1.2.2" + minimatch: "npm:^9.0.3 || ^10.0.1" semver: "npm:^7.7.1" stable-hash: "npm:^0.0.5" tslib: "npm:^2.8.1" + unrs-resolver: "npm:^1.3.3" peerDependencies: eslint: ^8.57.0 || ^9.0.0 - checksum: 10c0/07c433b70d264c757c1b8b337bd6c3146df61095bd3e290b07e3feb5b38e2f11aa0ecbe9633229cd942998b2bdeb40a47736128c017682befc030d4b5367c6ff + checksum: 10c0/d5e48667bd98dd12776ecc05d2aea604bd6952f40fd94885b5512a209f2f335091fc6ecd0e58d99f7d6703137a575797850df3674113979679dbadf775d6a543 languageName: node linkType: hard @@ -7532,9 +7511,9 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jsdoc@npm:^50.6.8": - version: 50.6.8 - resolution: "eslint-plugin-jsdoc@npm:50.6.8" +"eslint-plugin-jsdoc@npm:^50.6.9": + version: 50.6.9 + resolution: "eslint-plugin-jsdoc@npm:50.6.9" dependencies: "@es-joy/jsdoccomment": "npm:~0.49.0" are-docs-informative: "npm:^0.0.2" @@ -7549,25 +7528,25 @@ __metadata: synckit: "npm:^0.9.1" peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - checksum: 10c0/698006f49a10be422ac889ee6a0e33d60b326b67464c6d5e09bfa7205aca03e9e3a4030add01001f4d8e3ecd1ad2f989a0da70bd401dcbf0ea30e8b157f33c45 + checksum: 10c0/cad199d262c2e889a3af4e402f6adc624e4273b3d5ca1940e7227b37d87af8090ca3444f7fff57f58dab9a827faed8722fc2f5d4daf31ec085eb00e9f5a338a7 languageName: node linkType: hard -"eslint-plugin-jsonc@npm:^2.19.1": - version: 2.19.1 - resolution: "eslint-plugin-jsonc@npm:2.19.1" +"eslint-plugin-jsonc@npm:^2.20.0": + version: 2.20.0 + resolution: "eslint-plugin-jsonc@npm:2.20.0" dependencies: - "@eslint-community/eslint-utils": "npm:^4.2.0" - eslint-compat-utils: "npm:^0.6.0" + "@eslint-community/eslint-utils": "npm:^4.5.1" + eslint-compat-utils: "npm:^0.6.4" eslint-json-compat-utils: "npm:^0.2.1" - espree: "npm:^9.6.1" + espree: "npm:^9.6.1 || ^10.3.0" graphemer: "npm:^1.4.0" - jsonc-eslint-parser: "npm:^2.0.4" + jsonc-eslint-parser: "npm:^2.4.0" natural-compare: "npm:^1.4.0" - synckit: "npm:^0.6.0" + synckit: "npm:^0.6.2 || ^0.7.3 || ^0.10.3" peerDependencies: eslint: ">=6.0.0" - checksum: 10c0/256751242bbd1518871cd50a10daa0cf205498b509c3bf99f887a444cbab93adaa3dbf89c8d6e2aeb0707400365d8c7c59bbdb2fa3e53e586b1f4bc583d01473 + checksum: 10c0/9fedfd7b84ec6e777a3777745526e2ad457321714046c4f0491c156e5ae2c44dc6dbc6725c3fa52c8c32ea28be70831c6e9efc012c8f56cd18b540c0b6569986 languageName: node linkType: hard @@ -7590,30 +7569,30 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-mdx@npm:^3.2.0": - version: 3.2.0 - resolution: "eslint-plugin-mdx@npm:3.2.0" +"eslint-plugin-mdx@npm:^3.3.1": + version: 3.3.1 + resolution: "eslint-plugin-mdx@npm:3.3.1" dependencies: - eslint-mdx: "npm:^3.2.0" + eslint-mdx: "npm:^3.3.1" mdast-util-from-markdown: "npm:^2.0.2" remark-mdx: "npm:^3.1.0" remark-parse: "npm:^11.0.0" remark-stringify: "npm:^11.0.0" - synckit: "npm:^0.9.2" + synckit: "npm:^0.10.3" tslib: "npm:^2.8.1" unified: "npm:^11.0.5" vfile: "npm:^6.0.3" peerDependencies: eslint: ">=8.0.0" - checksum: 10c0/cc1cff1deefbec76fc9dc0a4d0729019ac3fafaf42268c2546f10f82502dead81eb938a7a2cf45f9b2812333f8272af56b2ac3687a18139f32105c30040f0b42 + checksum: 10c0/48dc8ae4254a0ad7bc1819301176e850fb573f72fb304a81f768a14e4ac73f5209c45a8fc2e43c3c92d2c6947887d5a230ce27b72d75bdfa77ae337e79cbbacb languageName: node linkType: hard -"eslint-plugin-n@npm:^17.16.2": - version: 17.16.2 - resolution: "eslint-plugin-n@npm:17.16.2" +"eslint-plugin-n@npm:^17.17.0": + version: 17.17.0 + resolution: "eslint-plugin-n@npm:17.17.0" dependencies: - "@eslint-community/eslint-utils": "npm:^4.4.1" + "@eslint-community/eslint-utils": "npm:^4.5.0" enhanced-resolve: "npm:^5.17.1" eslint-plugin-es-x: "npm:^7.8.0" get-tsconfig: "npm:^4.8.1" @@ -7623,27 +7602,27 @@ __metadata: semver: "npm:^7.6.3" peerDependencies: eslint: ">=8.23.0" - checksum: 10c0/25a77159b363814384b141d6f74b2c2e5787c58756c936f5547c01cb0e3b28f7ca4f32d77fe4214af6f1359dd35693380921395cdfc14c72595d89117ab92e9a + checksum: 10c0/ac6b2e2bbdc8f49a84be1bf1add8a412093a56fe95e8820610ecd5185fa00a348197a06fe3fe36080c09dc5d5a8f0f4f543cb3cf193265ace3fd071a79a07e88 languageName: node linkType: hard -"eslint-plugin-prettier@npm:^5.2.3": - version: 5.2.3 - resolution: "eslint-plugin-prettier@npm:5.2.3" +"eslint-plugin-prettier@npm:^5.2.5": + version: 5.2.5 + resolution: "eslint-plugin-prettier@npm:5.2.5" dependencies: prettier-linter-helpers: "npm:^1.0.0" - synckit: "npm:^0.9.1" + synckit: "npm:^0.10.2" peerDependencies: "@types/eslint": ">=8.0.0" eslint: ">=8.0.0" - eslint-config-prettier: "*" + eslint-config-prettier: ">= 7.0.0 <10.0.0 || >=10.1.0" prettier: ">=3.0.0" peerDependenciesMeta: "@types/eslint": optional: true eslint-config-prettier: optional: true - checksum: 10c0/60d9c03491ec6080ac1d71d0bee1361539ff6beb9b91ac98cfa7176c9ed52b7dbe7119ebee5b441b479d447d17d802a4a492ee06095ef2f22c460e3dd6459302 + checksum: 10c0/b88d4ecfccfdea786aa8c2df8c6b52754070fec48ef5df0dcd325daf7cbe01730a96fb6a8c5ae0ddd173472b43704d6452169b058284e842dfee5894172f310b languageName: node linkType: hard @@ -7658,22 +7637,23 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react-debug@npm:1.37.3": - version: 1.37.3 - resolution: "eslint-plugin-react-debug@npm:1.37.3" +"eslint-plugin-react-debug@npm:1.40.1": + version: 1.40.1 + resolution: "eslint-plugin-react-debug@npm:1.40.1" dependencies: - "@eslint-react/ast": "npm:1.37.3" - "@eslint-react/core": "npm:1.37.3" - "@eslint-react/eff": "npm:1.37.3" - "@eslint-react/jsx": "npm:1.37.3" - "@eslint-react/shared": "npm:1.37.3" - "@eslint-react/var": "npm:1.37.3" - "@typescript-eslint/scope-manager": "npm:^8.27.0" - "@typescript-eslint/type-utils": "npm:^8.27.0" - "@typescript-eslint/types": "npm:^8.27.0" - "@typescript-eslint/utils": "npm:^8.27.0" + "@eslint-react/ast": "npm:1.40.1" + "@eslint-react/core": "npm:1.40.1" + "@eslint-react/eff": "npm:1.40.1" + "@eslint-react/jsx": "npm:1.40.1" + "@eslint-react/kit": "npm:1.40.1" + "@eslint-react/shared": "npm:1.40.1" + "@eslint-react/var": "npm:1.40.1" + "@typescript-eslint/scope-manager": "npm:^8.29.0" + "@typescript-eslint/type-utils": "npm:^8.29.0" + "@typescript-eslint/types": "npm:^8.29.0" + "@typescript-eslint/utils": "npm:^8.29.0" string-ts: "npm:^2.2.1" - ts-pattern: "npm:^5.6.2" + ts-pattern: "npm:^5.7.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ^4.9.5 || ^5.3.3 @@ -7682,26 +7662,27 @@ __metadata: optional: false typescript: optional: true - checksum: 10c0/d40087cd696d84896cf5828615bc959085fad69708be09589522bce84996d3736db69fb6d87dbaf177ce534f19208d206e9d327f8ae497018c076dc6b33351b6 + checksum: 10c0/326e4051628f61f2e420857696248e8130f95335d416d7f0e04fd4f9198cb6372c33f75225da85a22dec3d1a98754aa9ba0e92c7e938f0d0fe25049193adb960 languageName: node linkType: hard -"eslint-plugin-react-dom@npm:1.37.3": - version: 1.37.3 - resolution: "eslint-plugin-react-dom@npm:1.37.3" +"eslint-plugin-react-dom@npm:1.40.1": + version: 1.40.1 + resolution: "eslint-plugin-react-dom@npm:1.40.1" dependencies: - "@eslint-react/ast": "npm:1.37.3" - "@eslint-react/core": "npm:1.37.3" - "@eslint-react/eff": "npm:1.37.3" - "@eslint-react/jsx": "npm:1.37.3" - "@eslint-react/shared": "npm:1.37.3" - "@eslint-react/var": "npm:1.37.3" - "@typescript-eslint/scope-manager": "npm:^8.27.0" - "@typescript-eslint/types": "npm:^8.27.0" - "@typescript-eslint/utils": "npm:^8.27.0" + "@eslint-react/ast": "npm:1.40.1" + "@eslint-react/core": "npm:1.40.1" + "@eslint-react/eff": "npm:1.40.1" + "@eslint-react/jsx": "npm:1.40.1" + "@eslint-react/kit": "npm:1.40.1" + "@eslint-react/shared": "npm:1.40.1" + "@eslint-react/var": "npm:1.40.1" + "@typescript-eslint/scope-manager": "npm:^8.29.0" + "@typescript-eslint/types": "npm:^8.29.0" + "@typescript-eslint/utils": "npm:^8.29.0" compare-versions: "npm:^6.1.1" string-ts: "npm:^2.2.1" - ts-pattern: "npm:^5.6.2" + ts-pattern: "npm:^5.7.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ^4.9.5 || ^5.3.3 @@ -7710,26 +7691,27 @@ __metadata: optional: false typescript: optional: true - checksum: 10c0/953bc722908fe64f3364c8a69d82ffd625e69a2c9b88a1910be7f6424f6e802c541bb7daa61293cde7b5a6d796389c443312482541801df102f7db1e4d16f3b7 + checksum: 10c0/69e796d72779f788d97e5174ed61cb4799948e9f676bddc6c103ace12d0eb9c73e22c6386bb962269589bfba78a73d9c3dbabf3b08405bd0aa07efd71b4bcf21 languageName: node linkType: hard -"eslint-plugin-react-hooks-extra@npm:1.37.3": - version: 1.37.3 - resolution: "eslint-plugin-react-hooks-extra@npm:1.37.3" +"eslint-plugin-react-hooks-extra@npm:1.40.1": + version: 1.40.1 + resolution: "eslint-plugin-react-hooks-extra@npm:1.40.1" dependencies: - "@eslint-react/ast": "npm:1.37.3" - "@eslint-react/core": "npm:1.37.3" - "@eslint-react/eff": "npm:1.37.3" - "@eslint-react/jsx": "npm:1.37.3" - "@eslint-react/shared": "npm:1.37.3" - "@eslint-react/var": "npm:1.37.3" - "@typescript-eslint/scope-manager": "npm:^8.27.0" - "@typescript-eslint/type-utils": "npm:^8.27.0" - "@typescript-eslint/types": "npm:^8.27.0" - "@typescript-eslint/utils": "npm:^8.27.0" + "@eslint-react/ast": "npm:1.40.1" + "@eslint-react/core": "npm:1.40.1" + "@eslint-react/eff": "npm:1.40.1" + "@eslint-react/jsx": "npm:1.40.1" + "@eslint-react/kit": "npm:1.40.1" + "@eslint-react/shared": "npm:1.40.1" + "@eslint-react/var": "npm:1.40.1" + "@typescript-eslint/scope-manager": "npm:^8.29.0" + "@typescript-eslint/type-utils": "npm:^8.29.0" + "@typescript-eslint/types": "npm:^8.29.0" + "@typescript-eslint/utils": "npm:^8.29.0" string-ts: "npm:^2.2.1" - ts-pattern: "npm:^5.6.2" + ts-pattern: "npm:^5.7.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ^4.9.5 || ^5.3.3 @@ -7738,7 +7720,7 @@ __metadata: optional: false typescript: optional: true - checksum: 10c0/3139073882b359669105a6eeaf32838594941226b758f68cd01863d57cacf87f92c98be65cfafcbe5cefb14dfb9cf837b277de126216ca7ff33df530809ac334 + checksum: 10c0/825f968c34898ae87ab26d3d217891d4b53b6eb92664ef77c915c98e4ac5ab60bebe9fd55eae86ceacb15413aa8f09ac353382f632df6193402406a798d7dd6f languageName: node linkType: hard @@ -7751,22 +7733,23 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react-naming-convention@npm:1.37.3": - version: 1.37.3 - resolution: "eslint-plugin-react-naming-convention@npm:1.37.3" +"eslint-plugin-react-naming-convention@npm:1.40.1": + version: 1.40.1 + resolution: "eslint-plugin-react-naming-convention@npm:1.40.1" dependencies: - "@eslint-react/ast": "npm:1.37.3" - "@eslint-react/core": "npm:1.37.3" - "@eslint-react/eff": "npm:1.37.3" - "@eslint-react/jsx": "npm:1.37.3" - "@eslint-react/shared": "npm:1.37.3" - "@eslint-react/var": "npm:1.37.3" - "@typescript-eslint/scope-manager": "npm:^8.27.0" - "@typescript-eslint/type-utils": "npm:^8.27.0" - "@typescript-eslint/types": "npm:^8.27.0" - "@typescript-eslint/utils": "npm:^8.27.0" + "@eslint-react/ast": "npm:1.40.1" + "@eslint-react/core": "npm:1.40.1" + "@eslint-react/eff": "npm:1.40.1" + "@eslint-react/jsx": "npm:1.40.1" + "@eslint-react/kit": "npm:1.40.1" + "@eslint-react/shared": "npm:1.40.1" + "@eslint-react/var": "npm:1.40.1" + "@typescript-eslint/scope-manager": "npm:^8.29.0" + "@typescript-eslint/type-utils": "npm:^8.29.0" + "@typescript-eslint/types": "npm:^8.29.0" + "@typescript-eslint/utils": "npm:^8.29.0" string-ts: "npm:^2.2.1" - ts-pattern: "npm:^5.6.2" + ts-pattern: "npm:^5.7.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ^4.9.5 || ^5.3.3 @@ -7775,25 +7758,26 @@ __metadata: optional: false typescript: optional: true - checksum: 10c0/26d3d14ec5e67b0572242aea3986e70a6bb3926c978b716e8b95b466b42f179d127c5b84cb4de89ea566f9477161e88c3a9b42c590fdc7e5941277b169b008cc + checksum: 10c0/5c62f3d429bdae95232678128a87a5c7f41b6a9f51570c8155674af69f59db2fbdaab3d089166865a1792d6e556c5dfff865e9d438905a6fe6f33fd82dab1e9d languageName: node linkType: hard -"eslint-plugin-react-web-api@npm:1.37.3": - version: 1.37.3 - resolution: "eslint-plugin-react-web-api@npm:1.37.3" +"eslint-plugin-react-web-api@npm:1.40.1": + version: 1.40.1 + resolution: "eslint-plugin-react-web-api@npm:1.40.1" dependencies: - "@eslint-react/ast": "npm:1.37.3" - "@eslint-react/core": "npm:1.37.3" - "@eslint-react/eff": "npm:1.37.3" - "@eslint-react/jsx": "npm:1.37.3" - "@eslint-react/shared": "npm:1.37.3" - "@eslint-react/var": "npm:1.37.3" - "@typescript-eslint/scope-manager": "npm:^8.27.0" - "@typescript-eslint/types": "npm:^8.27.0" - "@typescript-eslint/utils": "npm:^8.27.0" + "@eslint-react/ast": "npm:1.40.1" + "@eslint-react/core": "npm:1.40.1" + "@eslint-react/eff": "npm:1.40.1" + "@eslint-react/jsx": "npm:1.40.1" + "@eslint-react/kit": "npm:1.40.1" + "@eslint-react/shared": "npm:1.40.1" + "@eslint-react/var": "npm:1.40.1" + "@typescript-eslint/scope-manager": "npm:^8.29.0" + "@typescript-eslint/types": "npm:^8.29.0" + "@typescript-eslint/utils": "npm:^8.29.0" string-ts: "npm:^2.2.1" - ts-pattern: "npm:^5.6.2" + ts-pattern: "npm:^5.7.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ^4.9.5 || ^5.3.3 @@ -7802,31 +7786,32 @@ __metadata: optional: false typescript: optional: true - checksum: 10c0/ef4d8ea6c23292c73254b9a5203625dedc7faa92b3ccccdf989820ee2a89917334215b07cad5f1e0cbc210efb604a4e4773da3586ede46f218ddb24f48320f42 + checksum: 10c0/22ddd102373571458ebe2c322a055032f7dd828703222b39f3c4ca8900cb4a6cd8f2889d57ca9ed152465c28dcc37698ca2a9d62d369662dcc4e317b7eb7f219 languageName: node linkType: hard -"eslint-plugin-react-x@npm:1.37.3": - version: 1.37.3 - resolution: "eslint-plugin-react-x@npm:1.37.3" +"eslint-plugin-react-x@npm:1.40.1": + version: 1.40.1 + resolution: "eslint-plugin-react-x@npm:1.40.1" dependencies: - "@eslint-react/ast": "npm:1.37.3" - "@eslint-react/core": "npm:1.37.3" - "@eslint-react/eff": "npm:1.37.3" - "@eslint-react/jsx": "npm:1.37.3" - "@eslint-react/shared": "npm:1.37.3" - "@eslint-react/var": "npm:1.37.3" - "@typescript-eslint/scope-manager": "npm:^8.27.0" - "@typescript-eslint/type-utils": "npm:^8.27.0" - "@typescript-eslint/types": "npm:^8.27.0" - "@typescript-eslint/utils": "npm:^8.27.0" + "@eslint-react/ast": "npm:1.40.1" + "@eslint-react/core": "npm:1.40.1" + "@eslint-react/eff": "npm:1.40.1" + "@eslint-react/jsx": "npm:1.40.1" + "@eslint-react/kit": "npm:1.40.1" + "@eslint-react/shared": "npm:1.40.1" + "@eslint-react/var": "npm:1.40.1" + "@typescript-eslint/scope-manager": "npm:^8.29.0" + "@typescript-eslint/type-utils": "npm:^8.29.0" + "@typescript-eslint/types": "npm:^8.29.0" + "@typescript-eslint/utils": "npm:^8.29.0" compare-versions: "npm:^6.1.1" is-immutable-type: "npm:^5.0.1" string-ts: "npm:^2.2.1" - ts-pattern: "npm:^5.6.2" + ts-pattern: "npm:^5.7.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 - ts-api-utils: ^2.0.1 + ts-api-utils: ^2.1.0 typescript: ^4.9.5 || ^5.3.3 peerDependenciesMeta: eslint: @@ -7835,7 +7820,7 @@ __metadata: optional: true typescript: optional: true - checksum: 10c0/7228cd802dd37263316edd228118442ae2ed414759ced95a50539c53d1da7f7ce3ee78239844312646b39a186e6502644f6e4fe99136fc703b9a9f70b300ace1 + checksum: 10c0/d5f851eab155ec6ec3429575e23ea0f699f8515f56bfb2f841581c89a32572419abf8c6cb8c9d5ce7443cbe894e64e8d4dea0e4f0d09ab1e6f79723ae4a812a5 languageName: node linkType: hard @@ -7898,19 +7883,20 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-unicorn@npm:^57.0.0": - version: 57.0.0 - resolution: "eslint-plugin-unicorn@npm:57.0.0" +"eslint-plugin-unicorn@npm:^58.0.0": + version: 58.0.0 + resolution: "eslint-plugin-unicorn@npm:58.0.0" dependencies: "@babel/helper-validator-identifier": "npm:^7.25.9" - "@eslint-community/eslint-utils": "npm:^4.4.1" - ci-info: "npm:^4.1.0" + "@eslint-community/eslint-utils": "npm:^4.5.1" + "@eslint/plugin-kit": "npm:^0.2.7" + ci-info: "npm:^4.2.0" clean-regexp: "npm:^1.0.0" - core-js-compat: "npm:^3.40.0" + core-js-compat: "npm:^3.41.0" esquery: "npm:^1.6.0" - globals: "npm:^15.15.0" + globals: "npm:^16.0.0" indent-string: "npm:^5.0.0" - is-builtin-module: "npm:^4.0.0" + is-builtin-module: "npm:^5.0.0" jsesc: "npm:^3.1.0" pluralize: "npm:^8.0.0" read-package-up: "npm:^11.0.0" @@ -7919,8 +7905,8 @@ __metadata: semver: "npm:^7.7.1" strip-indent: "npm:^4.0.0" peerDependencies: - eslint: ">=9.20.0" - checksum: 10c0/c790ddc622e9367291136ff26d52bbbfe8d1cc509db6f037215715921f258de1afc792a9849e13a8fad84ba021bf99ed1528a975e83e6c704917dbaba6dd39b9 + eslint: ">=9.22.0" + checksum: 10c0/3b76a6c5ca422d1c27e53e24244718bf8a3acce8e2dccc744824c3ad66098265a201c9d305afeb1372f40f622ead36510aa6e930fa7f426021fdd02fdb519250 languageName: node linkType: hard @@ -8089,7 +8075,7 @@ __metadata: languageName: node linkType: hard -"espree@npm:10.3.0, espree@npm:^10.0.1, espree@npm:^10.1.0, espree@npm:^10.3.0": +"espree@npm:10.3.0, espree@npm:^10.0.1, espree@npm:^10.1.0, espree@npm:^10.3.0, espree@npm:^9.6.1 || ^10.3.0": version: 10.3.0 resolution: "espree@npm:10.3.0" dependencies: @@ -8100,7 +8086,7 @@ __metadata: languageName: node linkType: hard -"espree@npm:^9.0.0, espree@npm:^9.3.1, espree@npm:^9.6.1": +"espree@npm:^9.0.0, espree@npm:^9.3.1": version: 9.6.1 resolution: "espree@npm:9.6.1" dependencies: @@ -8332,7 +8318,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:3, fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.2, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": +"fast-glob@npm:3, fast-glob@npm:^3.0.3, fast-glob@npm:^3.2.2, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2, fast-glob@npm:^3.3.3": version: 3.3.3 resolution: "fast-glob@npm:3.3.3" dependencies: @@ -8764,7 +8750,7 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^5.1.2": +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": version: 5.1.2 resolution: "glob-parent@npm:5.1.2" dependencies: @@ -8875,7 +8861,7 @@ __metadata: languageName: node linkType: hard -"globals@npm:^15.11.0, globals@npm:^15.15.0": +"globals@npm:^15.11.0": version: 15.15.0 resolution: "globals@npm:15.15.0" checksum: 10c0/f9ae80996392ca71316495a39bec88ac43ae3525a438b5626cd9d5ce9d5500d0a98a266409605f8cd7241c7acf57c354a48111ea02a767ba4f374b806d6861fe @@ -8928,6 +8914,20 @@ __metadata: languageName: node linkType: hard +"globby@npm:^14.0.0": + version: 14.1.0 + resolution: "globby@npm:14.1.0" + dependencies: + "@sindresorhus/merge-streams": "npm:^2.1.0" + fast-glob: "npm:^3.3.3" + ignore: "npm:^7.0.3" + path-type: "npm:^6.0.0" + slash: "npm:^5.1.0" + unicorn-magic: "npm:^0.3.0" + checksum: 10c0/527a1063c5958255969620c6fa4444a2b2e9278caddd571d46dfbfa307cb15977afb746e84d682ba5b6c94fc081e8997f80ff05dd235441ba1cb16f86153e58e + languageName: node + linkType: hard + "gopd@npm:^1.0.1": version: 1.0.1 resolution: "gopd@npm:1.0.1" @@ -9163,7 +9163,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:7.0.3": +"ignore@npm:7.0.3, ignore@npm:^7.0.3": version: 7.0.3 resolution: "ignore@npm:7.0.3" checksum: 10c0/8e21637513cbcd888a4873d34d5c651a2e24b3c4c9a6b159335a26bed348c3c386c51d6fab23577f59140e1b226323138fbd50e63882d4568fd12aa6c822029e @@ -9351,6 +9351,15 @@ __metadata: languageName: node linkType: hard +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 + languageName: node + linkType: hard + "is-boolean-object@npm:^1.1.0": version: 1.1.2 resolution: "is-boolean-object@npm:1.1.2" @@ -9361,12 +9370,21 @@ __metadata: languageName: node linkType: hard -"is-builtin-module@npm:^4.0.0": - version: 4.0.0 - resolution: "is-builtin-module@npm:4.0.0" +"is-builtin-module@npm:^5.0.0": + version: 5.0.0 + resolution: "is-builtin-module@npm:5.0.0" + dependencies: + builtin-modules: "npm:^5.0.0" + checksum: 10c0/9561cdb92f7548df9403fa501f7d456bc90b9f49b547ce8935c5333b2316ea9ec3cbee3b972f2a98f041a9e2534a27465307fc45155a8ba793d9fdc9b7008aae + languageName: node + linkType: hard + +"is-bun-module@npm:^2.0.0": + version: 2.0.0 + resolution: "is-bun-module@npm:2.0.0" dependencies: - builtin-modules: "npm:^4.0.0" - checksum: 10c0/828754b76beb35aceca9d90e67b55cefbc0a25b706c67a020eecdf8eb84d65cf323d08bb3f99b6c83aab6f9dee20fbf34bb36a9c63de8be14f2af815a681a50c + semver: "npm:^7.7.1" + checksum: 10c0/7d27a0679cfa5be1f5052650391f9b11040cd70c48d45112e312c56bc6b6ca9c9aea70dcce6cc40b1e8947bfff8567a5c5715d3b066fb478522dab46ea379240 languageName: node linkType: hard @@ -9465,7 +9483,7 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -9735,15 +9753,15 @@ __metadata: linkType: hard "istanbul-lib-instrument@npm:^6.0.0": - version: 6.0.1 - resolution: "istanbul-lib-instrument@npm:6.0.1" + version: 6.0.3 + resolution: "istanbul-lib-instrument@npm:6.0.3" dependencies: - "@babel/core": "npm:^7.12.3" - "@babel/parser": "npm:^7.14.7" - "@istanbuljs/schema": "npm:^0.1.2" + "@babel/core": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@istanbuljs/schema": "npm:^0.1.3" istanbul-lib-coverage: "npm:^3.2.0" semver: "npm:^7.5.4" - checksum: 10c0/313d61aca3f82a04ad9377841d05061d603ea3d4a4dd281fdda2479ec4ddbc86dc1792c73651f21c93480570d1ecadc5f63011e2df86f30ee662b62c0c00e3d8 + checksum: 10c0/a1894e060dd2a3b9f046ffdc87b44c00a35516f5e6b7baf4910369acca79e506fc5323a816f811ae23d82334b38e3ddeb8b3b331bd2c860540793b59a8689128 languageName: node linkType: hard @@ -10254,7 +10272,7 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^2.4.1": +"jiti@npm:^2.4.1, jiti@npm:^2.4.2": version: 2.4.2 resolution: "jiti@npm:2.4.2" bin: @@ -10383,7 +10401,7 @@ __metadata: languageName: node linkType: hard -"jsonc-eslint-parser@npm:^2.0.4": +"jsonc-eslint-parser@npm:^2.4.0": version: 2.4.0 resolution: "jsonc-eslint-parser@npm:2.4.0" dependencies: @@ -10560,6 +10578,13 @@ __metadata: languageName: node linkType: hard +"lilconfig@npm:^2.1.0": + version: 2.1.0 + resolution: "lilconfig@npm:2.1.0" + checksum: 10c0/64645641aa8d274c99338e130554abd6a0190533c0d9eb2ce7ebfaf2e05c7d9961f3ffe2bfa39efd3b60c521ba3dd24fa236fe2775fc38501bf82bf49d4678b8 + languageName: node + linkType: hard + "lilconfig@npm:^3.1.3": version: 3.1.3 resolution: "lilconfig@npm:3.1.3" @@ -10877,7 +10902,7 @@ __metadata: languageName: node linkType: hard -"make-synchronized@npm:^0.7.0": +"make-synchronized@npm:^0.7.2": version: 0.7.2 resolution: "make-synchronized@npm:0.7.2" checksum: 10c0/15384e1ad0bbff2632abb726d0928a20a06c5edb92e5b027cd50f83c265f3bc118e3f4b5e597f4e6c3cd9d0059fc4ab6d2dd36d6718e717168b989e716c36809 @@ -11778,7 +11803,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:10.0.1, minimatch@npm:6 || 7 || 8 || 9 || 10, minimatch@npm:^10.0.0, minimatch@npm:^10.0.1": +"minimatch@npm:10.0.1, minimatch@npm:6 || 7 || 8 || 9 || 10, minimatch@npm:^10.0.0, minimatch@npm:^9.0.3 || ^10.0.1": version: 10.0.1 resolution: "minimatch@npm:10.0.1" dependencies: @@ -12007,6 +12032,24 @@ __metadata: languageName: node linkType: hard +"nanoid@npm:^5.0.3": + version: 5.1.5 + resolution: "nanoid@npm:5.1.5" + bin: + nanoid: bin/nanoid.js + checksum: 10c0/e6004f1ad6c7123eeb037062c4441d44982037dc043aabb162457ef6986e99964ba98c63c975f96c547403beb0bf95bc537bd7bf9a09baf381656acdc2975c3c + languageName: node + linkType: hard + +"nanospinner@npm:^1.1.0, nanospinner@npm:^1.2.2": + version: 1.2.2 + resolution: "nanospinner@npm:1.2.2" + dependencies: + picocolors: "npm:^1.1.1" + checksum: 10c0/07264f63816a8ec24d84ffe216a605cf11dffd8b098d4c5e6790437304b47e10ce4fc341de8dbcfc1b59aa42107f9949c89bcc201239eb61a80e14b6b1a20c90 + languageName: node + linkType: hard + "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -12058,23 +12101,23 @@ __metadata: languageName: node linkType: hard -"node-gyp@npm:^11.1.0": - version: 11.1.0 - resolution: "node-gyp@npm:11.1.0" +"node-gyp@npm:^11.2.0": + version: 11.2.0 + resolution: "node-gyp@npm:11.2.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" - glob: "npm:^10.3.10" graceful-fs: "npm:^4.2.6" make-fetch-happen: "npm:^14.0.3" nopt: "npm:^8.0.0" proc-log: "npm:^5.0.0" semver: "npm:^7.3.5" tar: "npm:^7.4.3" + tinyglobby: "npm:^0.2.12" which: "npm:^5.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10c0/c38977ce502f1ea41ba2b8721bd5b49bc3d5b3f813eabfac8414082faf0620ccb5211e15c4daecc23ed9f5e3e9cc4da00e575a0bcfc2a95a069294f2afa1e0cd + checksum: 10c0/bd8d8c76b06be761239b0c8680f655f6a6e90b48e44d43415b11c16f7e8c15be346fba0cbf71588c7cdfb52c419d928a7d3db353afc1d952d19756237d8f10b9 languageName: node linkType: hard @@ -12159,7 +12202,7 @@ __metadata: languageName: node linkType: hard -"normalize-path@npm:3, normalize-path@npm:^3.0.0": +"normalize-path@npm:3, normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 @@ -12398,48 +12441,6 @@ __metadata: languageName: node linkType: hard -"oxc-resolver@npm:^5.0.0": - version: 5.0.1 - resolution: "oxc-resolver@npm:5.0.1" - dependencies: - "@oxc-resolver/binding-darwin-arm64": "npm:5.0.1" - "@oxc-resolver/binding-darwin-x64": "npm:5.0.1" - "@oxc-resolver/binding-freebsd-x64": "npm:5.0.1" - "@oxc-resolver/binding-linux-arm-gnueabihf": "npm:5.0.1" - "@oxc-resolver/binding-linux-arm64-gnu": "npm:5.0.1" - "@oxc-resolver/binding-linux-arm64-musl": "npm:5.0.1" - "@oxc-resolver/binding-linux-x64-gnu": "npm:5.0.1" - "@oxc-resolver/binding-linux-x64-musl": "npm:5.0.1" - "@oxc-resolver/binding-wasm32-wasi": "npm:5.0.1" - "@oxc-resolver/binding-win32-arm64-msvc": "npm:5.0.1" - "@oxc-resolver/binding-win32-x64-msvc": "npm:5.0.1" - dependenciesMeta: - "@oxc-resolver/binding-darwin-arm64": - optional: true - "@oxc-resolver/binding-darwin-x64": - optional: true - "@oxc-resolver/binding-freebsd-x64": - optional: true - "@oxc-resolver/binding-linux-arm-gnueabihf": - optional: true - "@oxc-resolver/binding-linux-arm64-gnu": - optional: true - "@oxc-resolver/binding-linux-arm64-musl": - optional: true - "@oxc-resolver/binding-linux-x64-gnu": - optional: true - "@oxc-resolver/binding-linux-x64-musl": - optional: true - "@oxc-resolver/binding-wasm32-wasi": - optional: true - "@oxc-resolver/binding-win32-arm64-msvc": - optional: true - "@oxc-resolver/binding-win32-x64-msvc": - optional: true - checksum: 10c0/490c72a9564b48ea3fa68c3756890b035b4b567b44f0e103f071d47f4e9fc90a840695f759bed8310a765772556807db288653866c5f3de29d457b9a8fb8c1f0 - languageName: node - linkType: hard - "p-cancelable@npm:^2.0.0": version: 2.1.1 resolution: "p-cancelable@npm:2.1.1" @@ -12722,6 +12723,13 @@ __metadata: languageName: node linkType: hard +"path-type@npm:^6.0.0": + version: 6.0.0 + resolution: "path-type@npm:6.0.0" + checksum: 10c0/55baa8b1187d6dc683d5a9cfcc866168d6adff58e5db91126795376d818eee46391e00b2a4d53e44d844c7524a7d96aa68cc68f4f3e500d3d069a39e6535481c + languageName: node + linkType: hard + "pathe@npm:^2.0.2": version: 2.0.3 resolution: "pathe@npm:2.0.3" @@ -12743,7 +12751,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.2, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be @@ -12766,7 +12774,7 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.4, pirates@npm:^4.0.6": +"pirates@npm:^4.0.4": version: 4.0.6 resolution: "pirates@npm:4.0.6" checksum: 10c0/00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 @@ -12879,15 +12887,15 @@ __metadata: languageName: node linkType: hard -"prettier-plugin-sh@npm:^0.15.0": - version: 0.15.0 - resolution: "prettier-plugin-sh@npm:0.15.0" +"prettier-plugin-sh@npm:^0.16.0": + version: 0.16.0 + resolution: "prettier-plugin-sh@npm:0.16.0" dependencies: mvdan-sh: "npm:^0.10.1" sh-syntax: "npm:^0.4.2" peerDependencies: prettier: ^3.0.3 - checksum: 10c0/256599d89deb83bd9fd85041936b852841fa198735ae2327ea4889f375b8c5a02e39139dd63a77911f49ef2fe7d44c36d01350ca4f93967d807bbadf2513a9bd + checksum: 10c0/d83a6716d271f24da006c0bbe08fb3be18ebcf6e88cddb0d83af8c4377a04ad718e7cbd9bfb2e80e1e3f12008c920888e06c68c9f5bbe8233bf0e4e8b6de4a82 languageName: node linkType: hard @@ -12902,14 +12910,14 @@ __metadata: languageName: node linkType: hard -"prettier-plugin-toml@npm:^2.0.2": - version: 2.0.2 - resolution: "prettier-plugin-toml@npm:2.0.2" +"prettier-plugin-toml@npm:^2.0.3": + version: 2.0.3 + resolution: "prettier-plugin-toml@npm:2.0.3" dependencies: "@taplo/lib": "npm:^0.4.0-alpha.2" peerDependencies: prettier: ^3.0.3 - checksum: 10c0/e48c8d4e6eaf422a09adab7fe0b7edb23bac703a1d15e462f2c8531c3b0edaf4e00a5a1f794732aaf7788628f40d7c704d82e2d72ccdba00741f94128cb67aa3 + checksum: 10c0/bd88b4c941675653a79fc21cce791b9542657b4b23a8874f28a9f1ccdbfd7745c3a14fe9d469a899db217dd26c3e88a635909074b7ee3c65d0d050dffb2f1260 languageName: node linkType: hard @@ -13131,6 +13139,15 @@ __metadata: languageName: node linkType: hard +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b + languageName: node + linkType: hard + "refa@npm:^0.12.0, refa@npm:^0.12.1": version: 0.12.1 resolution: "refa@npm:0.12.1" @@ -14396,48 +14413,6 @@ __metadata: languageName: node linkType: hard -"rspack-resolver@npm:^1.2.2": - version: 1.2.2 - resolution: "rspack-resolver@npm:1.2.2" - dependencies: - "@unrs/rspack-resolver-binding-darwin-arm64": "npm:1.2.2" - "@unrs/rspack-resolver-binding-darwin-x64": "npm:1.2.2" - "@unrs/rspack-resolver-binding-freebsd-x64": "npm:1.2.2" - "@unrs/rspack-resolver-binding-linux-arm-gnueabihf": "npm:1.2.2" - "@unrs/rspack-resolver-binding-linux-arm64-gnu": "npm:1.2.2" - "@unrs/rspack-resolver-binding-linux-arm64-musl": "npm:1.2.2" - "@unrs/rspack-resolver-binding-linux-x64-gnu": "npm:1.2.2" - "@unrs/rspack-resolver-binding-linux-x64-musl": "npm:1.2.2" - "@unrs/rspack-resolver-binding-wasm32-wasi": "npm:1.2.2" - "@unrs/rspack-resolver-binding-win32-arm64-msvc": "npm:1.2.2" - "@unrs/rspack-resolver-binding-win32-x64-msvc": "npm:1.2.2" - dependenciesMeta: - "@unrs/rspack-resolver-binding-darwin-arm64": - optional: true - "@unrs/rspack-resolver-binding-darwin-x64": - optional: true - "@unrs/rspack-resolver-binding-freebsd-x64": - optional: true - "@unrs/rspack-resolver-binding-linux-arm-gnueabihf": - optional: true - "@unrs/rspack-resolver-binding-linux-arm64-gnu": - optional: true - "@unrs/rspack-resolver-binding-linux-arm64-musl": - optional: true - "@unrs/rspack-resolver-binding-linux-x64-gnu": - optional: true - "@unrs/rspack-resolver-binding-linux-x64-musl": - optional: true - "@unrs/rspack-resolver-binding-wasm32-wasi": - optional: true - "@unrs/rspack-resolver-binding-win32-arm64-msvc": - optional: true - "@unrs/rspack-resolver-binding-win32-x64-msvc": - optional: true - checksum: 10c0/897343b6e0934b54570722f1d21ca0239eaf0bdbad9b3357cc636a9cfc775f2b28f5fea477caf800978c22efed0f312ef2893d71c7b5e84447ac1ef9c5d80f22 - languageName: node - linkType: hard - "run-parallel@npm:^1.1.9": version: 1.2.0 resolution: "run-parallel@npm:1.2.0" @@ -14635,6 +14610,61 @@ __metadata: languageName: node linkType: hard +"size-limit-node-esbuild@npm:^0.3.0": + version: 0.3.0 + resolution: "size-limit-node-esbuild@npm:0.3.0" + dependencies: + nanoid: "npm:^5.0.3" + size-limit: "npm:^10.0.2" + tslib: "npm:^2.6.2" + checksum: 10c0/bdf1b1500a85f060c80ebe50f838dc7cd3ad6ecb5161996cbe41dd0bae5400760325e2e2fa85a2fe95b6433d940c202981da444b4ec9007cc675a2ce7e87d5cf + languageName: node + linkType: hard + +"size-limit-preset-node-lib@npm:^0.3.0": + version: 0.3.0 + resolution: "size-limit-preset-node-lib@npm:0.3.0" + dependencies: + "@size-limit/file": "npm:^10.0.2" + size-limit-node-esbuild: "npm:^0.3.0" + tslib: "npm:^2.6.2" + checksum: 10c0/04da4a2ce84483584818fcf27d2efd143bae2484875628c3023b7f1d528a65d5af1bcd709909ca80336defecbf1735d2c126e27e996e2987034fdd261f9f2a0d + languageName: node + linkType: hard + +"size-limit@npm:^10.0.2": + version: 10.0.3 + resolution: "size-limit@npm:10.0.3" + dependencies: + bytes-iec: "npm:^3.1.1" + chokidar: "npm:^3.5.3" + globby: "npm:^14.0.0" + lilconfig: "npm:^2.1.0" + nanospinner: "npm:^1.1.0" + picocolors: "npm:^1.0.0" + bin: + size-limit: bin.js + checksum: 10c0/be801543039dec7bf7b2a69ec7667b1993985e31ef31837e9f3327c123940317e604d5783cca9312c60609024de56ca9fef855919ca85273c5d7a0377d600882 + languageName: node + linkType: hard + +"size-limit@npm:^11.2.0": + version: 11.2.0 + resolution: "size-limit@npm:11.2.0" + dependencies: + bytes-iec: "npm:^3.1.1" + chokidar: "npm:^4.0.3" + jiti: "npm:^2.4.2" + lilconfig: "npm:^3.1.3" + nanospinner: "npm:^1.2.2" + picocolors: "npm:^1.1.1" + tinyglobby: "npm:^0.2.11" + bin: + size-limit: bin.js + checksum: 10c0/c3613e20dfc227074d73098bfdd6fe274aed980bf133ad61a380032425bfa8b7d749c876dea50e9648a64cd57fb768edac9ffc1927100bcadf814255e44236f1 + languageName: node + linkType: hard + "slash@npm:^3.0.0": version: 3.0.0 resolution: "slash@npm:3.0.0" @@ -14642,6 +14672,13 @@ __metadata: languageName: node linkType: hard +"slash@npm:^5.1.0": + version: 5.1.0 + resolution: "slash@npm:5.1.0" + checksum: 10c0/eb48b815caf0bdc390d0519d41b9e0556a14380f6799c72ba35caf03544d501d18befdeeef074bc9c052acf69654bc9e0d79d7f1de0866284137a40805299eb3 + languageName: node + linkType: hard + "slashes@npm:^3.0.12": version: 3.0.12 resolution: "slashes@npm:3.0.12" @@ -14724,7 +14761,7 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:0.5.21, source-map-support@npm:^0.5.21": +"source-map-support@npm:0.5.21": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: @@ -15134,15 +15171,14 @@ __metadata: version: 0.0.0-use.local resolution: "synckit@workspace:." dependencies: - "@1stg/common-config": "npm:^11.0.5" + "@1stg/common-config": "npm:^11.1.1" "@changesets/changelog-github": "npm:^0.5.1" "@changesets/cli": "npm:^2.28.1" "@commitlint/cli": "npm:^19.8.0" "@pkgr/core": "npm:^0.2.0" "@pkgr/rollup": "npm:^6.0.1" - "@swc-node/register": "npm:^1.10.10" "@types/jest": "npm:^29.5.14" - "@types/node": "npm:^22.13.11" + "@types/node": "npm:^22.13.17" "@unts/patch-package": "npm:^8.1.1" clean-pkg-json: "npm:^1.2.1" concurrently: "npm:^9.1.2" @@ -15152,15 +15188,17 @@ __metadata: eslint: "npm:^9.23.0" jest: "npm:^29.7.0" lint-staged: "npm:^15.5.0" - make-synchronized: "npm:^0.7.0" - node-gyp: "npm:^11.1.0" + make-synchronized: "npm:^0.7.2" + node-gyp: "npm:^11.2.0" prettier: "npm:^3.5.3" simple-git-hooks: "npm:^2.12.1" + size-limit: "npm:^11.2.0" + size-limit-preset-node-lib: "npm:^0.3.0" sync-threads: "npm:^1.0.1" synckit: "link:." - tinyexec: "npm:^1.0.0" + tinyexec: "npm:^1.0.1" ts-expect: "npm:^1.3.0" - ts-jest: "npm:^29.2.6" + ts-jest: "npm:^29.3.1" ts-node: "npm:^10.9.2" tslib: "npm:^2.8.1" tsx: "npm:^4.19.3" @@ -15254,14 +15292,14 @@ __metadata: languageName: node linkType: hard -"tinyexec@npm:^1.0.0": +"tinyexec@npm:^1.0.1": version: 1.0.1 resolution: "tinyexec@npm:1.0.1" checksum: 10c0/e1ec3c8194a0427ce001ba69fd933d0c957e2b8994808189ed8020d3e0c01299aea8ecf0083cc514ecbf90754695895f2b5c0eac07eb2d0c406f7d4fbb8feade languageName: node linkType: hard -"tinyglobby@npm:^0.2.12": +"tinyglobby@npm:^0.2.11, tinyglobby@npm:^0.2.12": version: 0.2.12 resolution: "tinyglobby@npm:0.2.12" dependencies: @@ -15376,9 +15414,9 @@ __metadata: languageName: node linkType: hard -"ts-jest@npm:^29.2.6": - version: 29.2.6 - resolution: "ts-jest@npm:29.2.6" +"ts-jest@npm:^29.3.1": + version: 29.3.1 + resolution: "ts-jest@npm:29.3.1" dependencies: bs-logger: "npm:^0.2.6" ejs: "npm:^3.1.10" @@ -15388,6 +15426,7 @@ __metadata: lodash.memoize: "npm:^4.1.2" make-error: "npm:^1.3.6" semver: "npm:^7.7.1" + type-fest: "npm:^4.38.0" yargs-parser: "npm:^21.1.1" peerDependencies: "@babel/core": ">=7.0.0-beta.0 <8" @@ -15409,7 +15448,7 @@ __metadata: optional: true bin: ts-jest: cli.js - checksum: 10c0/2a79bdb2631bbd004cd6ec171d62dc3681b86e7d1c20eece7f56e7c3df11a0f5a14f4831960b1ba8d1836787395c8f9dcbd084fd7f59246bbee8048feb93f892 + checksum: 10c0/5df9239223b974fc61bbe018d4e72bbdbea530c4b624fab0936a152438a58e97ce0d0cee2258d10e7ecebbf0ab699ab41d0a52fc5b5f13201cdac4419ab0fe04 languageName: node linkType: hard @@ -15451,14 +15490,14 @@ __metadata: languageName: node linkType: hard -"ts-pattern@npm:^5.6.2": - version: 5.6.2 - resolution: "ts-pattern@npm:5.6.2" - checksum: 10c0/f7b2442d9694fb94070acd7e564589744a581a252ab8a33bdda7b018f280cfa5ee247aa1a8a1eb8e2c843542cc07e36f491cbeb838abfc626eaeff1cc801ac2d +"ts-pattern@npm:^5.7.0": + version: 5.7.0 + resolution: "ts-pattern@npm:5.7.0" + checksum: 10c0/6a49d2b502a916def7b07ed66d5675aaf5159dd09b9dbdb334ebfc464af6307e33ae9fbec8ece9182f7ae6a9b2589087da5924d35a74bd52323c3f3745b15d1e languageName: node linkType: hard -"tslib@npm:1 || 2, tslib@npm:^2.1.0, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.6.2, tslib@npm:^2.6.3, tslib@npm:^2.8.1": +"tslib@npm:1 || 2, tslib@npm:^2.1.0, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.6.2, tslib@npm:^2.8.1": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 @@ -15573,7 +15612,7 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:4.37.0, type-fest@npm:^4.6.0, type-fest@npm:^4.7.1": +"type-fest@npm:4.37.0": version: 4.37.0 resolution: "type-fest@npm:4.37.0" checksum: 10c0/5bad189f66fbe3431e5d36befa08cab6010e56be68b7467530b7ef94c3cf81ef775a8ac3047c8bbda4dd3159929285870357498d7bc1df062714f9c5c3a84926 @@ -15594,6 +15633,13 @@ __metadata: languageName: node linkType: hard +"type-fest@npm:^4.38.0, type-fest@npm:^4.6.0, type-fest@npm:^4.7.1": + version: 4.39.0 + resolution: "type-fest@npm:4.39.0" + checksum: 10c0/6075dfb875fdf6319d2a62fb77663b8f551882003e53b2a14e345c87f2bc1825d616214c5b9f0ae1151e54cedf11b7d2ca7d95f891431ad8c602cf6da1becd6e + languageName: node + linkType: hard + "type@npm:^1.0.1": version: 1.2.0 resolution: "type@npm:1.2.0" @@ -15662,17 +15708,17 @@ __metadata: languageName: node linkType: hard -"typescript-eslint@npm:^8.27.0": - version: 8.27.0 - resolution: "typescript-eslint@npm:8.27.0" +"typescript-eslint@npm:^8.29.0": + version: 8.29.0 + resolution: "typescript-eslint@npm:8.29.0" dependencies: - "@typescript-eslint/eslint-plugin": "npm:8.27.0" - "@typescript-eslint/parser": "npm:8.27.0" - "@typescript-eslint/utils": "npm:8.27.0" + "@typescript-eslint/eslint-plugin": "npm:8.29.0" + "@typescript-eslint/parser": "npm:8.29.0" + "@typescript-eslint/utils": "npm:8.29.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" - checksum: 10c0/f66f8311418b12bca751e8e1c68e42c638745765be40621b65f287a15dd58d4a71e3a0f80756d5c3cc9070a93bb1745887fce2260117e19e1b70f2804cefd351 + checksum: 10c0/1438b80fc875acc65acc842dc870070be31d6a30f756a6d9985fadd063f4f568e74a83bac7aaf94d2320e434df3c033a6e2ab7258b1429cae2aa7c4b16fb5088 languageName: node linkType: hard @@ -15762,6 +15808,13 @@ __metadata: languageName: node linkType: hard +"unicorn-magic@npm:^0.3.0": + version: 0.3.0 + resolution: "unicorn-magic@npm:0.3.0" + checksum: 10c0/0a32a997d6c15f1c2a077a15b1c4ca6f268d574cf5b8975e778bb98e6f8db4ef4e86dfcae4e158cd4c7e38fb4dd383b93b13eefddc7f178dea13d3ac8a603271 + languageName: node + linkType: hard + "unified-engine@npm:^11.0.0, unified-engine@npm:^11.2.2": version: 11.2.2 resolution: "unified-engine@npm:11.2.2" @@ -15960,6 +16013,60 @@ __metadata: languageName: node linkType: hard +"unrs-resolver@npm:^1.3.3": + version: 1.3.3 + resolution: "unrs-resolver@npm:1.3.3" + dependencies: + "@unrs/resolver-binding-darwin-arm64": "npm:1.3.3" + "@unrs/resolver-binding-darwin-x64": "npm:1.3.3" + "@unrs/resolver-binding-freebsd-x64": "npm:1.3.3" + "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.3.3" + "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.3.3" + "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.3.3" + "@unrs/resolver-binding-linux-arm64-musl": "npm:1.3.3" + "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.3.3" + "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.3.3" + "@unrs/resolver-binding-linux-x64-gnu": "npm:1.3.3" + "@unrs/resolver-binding-linux-x64-musl": "npm:1.3.3" + "@unrs/resolver-binding-wasm32-wasi": "npm:1.3.3" + "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.3.3" + "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.3.3" + "@unrs/resolver-binding-win32-x64-msvc": "npm:1.3.3" + dependenciesMeta: + "@unrs/resolver-binding-darwin-arm64": + optional: true + "@unrs/resolver-binding-darwin-x64": + optional: true + "@unrs/resolver-binding-freebsd-x64": + optional: true + "@unrs/resolver-binding-linux-arm-gnueabihf": + optional: true + "@unrs/resolver-binding-linux-arm-musleabihf": + optional: true + "@unrs/resolver-binding-linux-arm64-gnu": + optional: true + "@unrs/resolver-binding-linux-arm64-musl": + optional: true + "@unrs/resolver-binding-linux-ppc64-gnu": + optional: true + "@unrs/resolver-binding-linux-s390x-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-musl": + optional: true + "@unrs/resolver-binding-wasm32-wasi": + optional: true + "@unrs/resolver-binding-win32-arm64-msvc": + optional: true + "@unrs/resolver-binding-win32-ia32-msvc": + optional: true + "@unrs/resolver-binding-win32-x64-msvc": + optional: true + checksum: 10c0/9faa89c0fddf53551c0d4fc48f2d95ca8117370939ca62f85e38624df1a241f01230d14bca6d311889550eb5f8f50f82a6b7853d13bdb673bb29f03fbcae4f3d + languageName: node + linkType: hard + "update-browserslist-db@npm:^1.1.1": version: 1.1.3 resolution: "update-browserslist-db@npm:1.1.3" @@ -16031,6 +16138,18 @@ __metadata: languageName: node linkType: hard +"valibot@npm:^1.0.0": + version: 1.0.0 + resolution: "valibot@npm:1.0.0" + peerDependencies: + typescript: ">=5" + peerDependenciesMeta: + typescript: + optional: true + checksum: 10c0/fd80529ce5445e2340b0a2c3d88a61a86180b652eb6bc24da7d0da476b214d8a04f7621ee355f627a1a2dc2b29f39d179effb60e8067b7cf58e300d77dae8f51 + languageName: node + linkType: hard + "validate-npm-package-license@npm:^3.0.4": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4"