pax_global_header00006660000000000000000000000064151716766030014526gustar00rootroot0000000000000052 comment=429601243bca39b4678c1dd4d2d6a84005977b2e webpack-tapable-8ca4f9d/000077500000000000000000000000001517167660300152545ustar00rootroot00000000000000webpack-tapable-8ca4f9d/.babelrc.js000066400000000000000000000002101517167660300172530ustar00rootroot00000000000000"use strict"; module.exports = { presets: [ [ "@babel/preset-env", { targets: { node: "current" } } ] ] }; webpack-tapable-8ca4f9d/.changeset/000077500000000000000000000000001517167660300172735ustar00rootroot00000000000000webpack-tapable-8ca4f9d/.changeset/README.md000066400000000000000000000010001517167660300205410ustar00rootroot00000000000000# Changesets Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works with multi-package repos, or single-package repos to help you version and publish your code. You can find the full documentation for it [in our repository](https://github.com/changesets/changesets). We have a quick list of common questions to get you started engaging with this project in [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md). webpack-tapable-8ca4f9d/.changeset/changelog-generator.mjs000066400000000000000000000067541517167660300237350ustar00rootroot00000000000000import { getInfo, getInfoFromPullRequest } from "@changesets/get-github-info"; /** @typedef {import("@changesets/types").ChangelogFunctions} ChangelogFunctions */ /** * @returns {{ GITHUB_SERVER_URL: string }} value */ function readEnv() { const GITHUB_SERVER_URL = process.env.GITHUB_SERVER_URL || "https://github.com"; return { GITHUB_SERVER_URL }; } /** @type {ChangelogFunctions} */ const changelogFunctions = { getDependencyReleaseLine: async ( changesets, dependenciesUpdated, options ) => { if (!options.repo) { throw new Error( 'Please provide a repo to this changelog generator like this:\n"changelog": ["@changesets/changelog-github", { "repo": "org/repo" }]' ); } if (dependenciesUpdated.length === 0) return ""; const changesetLink = `- Updated dependencies [${( await Promise.all( changesets.map(async (cs) => { if (cs.commit) { const { links } = await getInfo({ repo: options.repo, commit: cs.commit }); return links.commit; } }) ) ) .filter(Boolean) .join(", ")}]:`; const updatedDependenciesList = dependenciesUpdated.map( (dependency) => ` - ${dependency.name}@${dependency.newVersion}` ); return [changesetLink, ...updatedDependenciesList].join("\n"); }, getReleaseLine: async (changeset, type, options) => { const { GITHUB_SERVER_URL } = readEnv(); if (!options || !options.repo) { throw new Error( 'Please provide a repo to this changelog generator like this:\n"changelog": ["@changesets/changelog-github", { "repo": "org/repo" }]' ); } /** @type {number | undefined} */ let prFromSummary; /** @type {string | undefined} */ let commitFromSummary; /** @type {string[]} */ const usersFromSummary = []; const replacedChangelog = changeset.summary .replace(/^\s*(?:pr|pull|pull\s+request):\s*#?(\d+)/im, (_, pr) => { const num = Number(pr); if (!Number.isNaN(num)) prFromSummary = num; return ""; }) .replace(/^\s*commit:\s*([^\s]+)/im, (_, commit) => { commitFromSummary = commit; return ""; }) .replaceAll(/^\s*(?:author|user):\s*@?([^\s]+)/gim, (_, user) => { usersFromSummary.push(user); return ""; }) .trim(); const [firstLine, ...futureLines] = replacedChangelog .split("\n") .map((l) => l.trimEnd()); const links = await (async () => { if (prFromSummary !== undefined) { let { links } = await getInfoFromPullRequest({ repo: options.repo, pull: prFromSummary }); if (commitFromSummary) { const shortCommitId = commitFromSummary.slice(0, 7); links = { ...links, commit: `[\`${shortCommitId}\`](${GITHUB_SERVER_URL}/${options.repo}/commit/${commitFromSummary})` }; } return links; } const commitToFetchFrom = commitFromSummary || changeset.commit; if (commitToFetchFrom) { const { links } = await getInfo({ repo: options.repo, commit: commitToFetchFrom }); return links; } return { commit: null, pull: null, user: null }; })(); const users = usersFromSummary.length ? usersFromSummary .map( (userFromSummary) => `[@${userFromSummary}](${GITHUB_SERVER_URL}/${userFromSummary})` ) .join(", ") : links.user; let suffix = ""; if (links.pull || links.commit || users) { suffix = `(${users ? `by ${users} ` : ""}in ${links.pull || links.commit})`; } return `\n\n- ${firstLine} ${suffix}\n${futureLines.map((l) => ` ${l}`).join("\n")}`; } }; export default changelogFunctions; webpack-tapable-8ca4f9d/.changeset/config.json000066400000000000000000000004351517167660300214350ustar00rootroot00000000000000{ "$schema": "https://unpkg.com/@changesets/config@3.1.2/schema.json", "changelog": ["./changelog-generator.mjs", { "repo": "webpack/tapable" }], "fixed": [], "linked": [], "access": "public", "baseBranch": "main", "updateInternalDependencies": "patch", "ignore": [] } webpack-tapable-8ca4f9d/.editorconfig000066400000000000000000000004431517167660300177320ustar00rootroot00000000000000root = true [*] indent_style = tab indent_size = 2 charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true max_line_length = 80 [*.{yml,yaml,json}] indent_style = space indent_size = 2 [*.md] trim_trailing_whitespace = false [*.snap] trim_trailing_whitespace = false webpack-tapable-8ca4f9d/.gitattributes000066400000000000000000000000141517167660300201420ustar00rootroot00000000000000* text=auto webpack-tapable-8ca4f9d/.github/000077500000000000000000000000001517167660300166145ustar00rootroot00000000000000webpack-tapable-8ca4f9d/.github/dependabot.yml000066400000000000000000000010601517167660300214410ustar00rootroot00000000000000version: 2 updates: - package-ecosystem: npm directory: "/" schedule: interval: "weekly" open-pull-requests-limit: 20 labels: - dependencies versioning-strategy: widen groups: dependencies: patterns: - "*" update-types: - "minor" - "patch" - package-ecosystem: "github-actions" directory: "/" schedule: interval: "weekly" open-pull-requests-limit: 20 labels: - dependencies groups: dependencies: patterns: - "*" webpack-tapable-8ca4f9d/.github/workflows/000077500000000000000000000000001517167660300206515ustar00rootroot00000000000000webpack-tapable-8ca4f9d/.github/workflows/benchmarks.yml000066400000000000000000000016111517167660300235100ustar00rootroot00000000000000name: Benchmarks on: push: branches: [main] pull_request: branches: [main] workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: contents: read id-token: write # Required for OIDC authentication with CodSpeed jobs: benchmark: runs-on: ubuntu-latest permissions: pull-requests: write steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 - name: Use Node.js uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: lts/* cache: npm - run: npm ci - name: Run benchmarks uses: CodSpeedHQ/action@fa0c9b1770f933c1bc025c83a9b42946b102f4e6 # v4.10.4 with: run: npm run benchmark mode: "simulation" webpack-tapable-8ca4f9d/.github/workflows/dependabot.yml000066400000000000000000000024371517167660300235070ustar00rootroot00000000000000name: Dependabot on: pull_request permissions: contents: write pull-requests: write jobs: dependabot-auto-merge: runs-on: ubuntu-latest if: github.actor == 'dependabot[bot]' steps: - name: Generate Token uses: actions/create-github-app-token@1b10c78c7865c340bc4f6099eb2f838309f1e8c3 # v3.1.1 id: app-token with: app-id: ${{ secrets.BOT_APP_ID }} private-key: ${{ secrets.BOT_PRIVATE_KEY }} - name: Dependabot metadata id: dependabot-metadata uses: dependabot/fetch-metadata@ffa630c65fa7e0ecfa0625b5ceda64399aea1b36 # v3.0.0 with: github-token: "${{ steps.app-token.outputs.token }}" - name: Enable auto-merge for Dependabot PRs if: steps.dependabot-metadata.outputs.update-type != 'version-update:semver-major' run: | if [ "$(gh pr status --json reviewDecision -q .currentBranch.reviewDecision)" != "APPROVED" ]; then gh pr review --approve "$PR_URL" else echo "PR already approved, skipping additional approvals to minimize emails/notification noise."; fi gh pr merge --auto --squash "$PR_URL" env: PR_URL: ${{ github.event.pull_request.html_url }} GH_TOKEN: ${{ steps.app-token.outputs.token }} webpack-tapable-8ca4f9d/.github/workflows/release.yml000066400000000000000000000022411517167660300230130ustar00rootroot00000000000000name: Release on: push: branches: - main concurrency: ${{ github.workflow }}-${{ github.ref }} permissions: id-token: write # Required for OIDC contents: write pull-requests: write jobs: release: if: github.repository == 'webpack/tapable' name: Release runs-on: ubuntu-latest outputs: published: ${{ steps.changesets.outputs.published }} steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Use Node.js uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: lts/* cache: npm - run: npm ci - name: Create Release Pull Request or Publish to npm id: changesets uses: changesets/action@6a0a831ff30acef54f2c6aa1cbbc1096b066edaf # v1.7.0 with: version: npm run version publish: npm run release commit: "chore(release): new release" title: "chore(release): new release" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: "" # https://github.com/changesets/changesets/issues/1152#issuecomment-3190884868 webpack-tapable-8ca4f9d/.github/workflows/test.yml000066400000000000000000000054761517167660300223670ustar00rootroot00000000000000name: Test on: push: branches: [main] pull_request: branches: [main] permissions: contents: read # to fetch code (actions/checkout) jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 - name: Use Node.js uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: lts/* cache: npm - run: npm ci - run: npm run lint test: strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] node-version: [ # Node.js@6 is fully broken for testing, npm can't install dependecies, babel is broken due broken mapping new features with Node.js version, jest breaks randomly and crashes # 6.x, 8.x, 10.x, 12.x, 14.x, 16.x, 18.x, 20.x, 22.x, 24.x ] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 with: fetch-depth: 0 - uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 id: calculate_architecture with: result-encoding: string script: | if ('${{ matrix.os }}' === 'macos-latest' && ('${{ matrix['node-version'] }}' === '6.x' || '${{ matrix['node-version'] }}' === '8.x' || '${{ matrix['node-version'] }}' === '10.x' || '${{ matrix['node-version'] }}' === '12.x' || '${{ matrix['node-version'] }}' === '14.x')) { return "x64" } else { return '' } - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 with: node-version: ${{ matrix.node-version }} architecture: ${{ steps.calculate_architecture.outputs.result }} cache: npm - name: Install dependencies run: | npm install jest@24 babel-jest@24 --save-dev npm install if: matrix.node-version == '8.x' || matrix.node-version == '10.x' || matrix.node-version == '12.x' || matrix.node-version == '14.x' || matrix.node-version == '16.x' - name: Install dependencies run: npm ci if: matrix.node-version != '8.x' && matrix.node-version != '10.x' && matrix.node-version != '12.x' && matrix.node-version != '14.x' && matrix.node-version != '16.x' - name: Run tests with coverage run: npm run test -- --ci --coverage - uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0 with: flags: integration token: ${{ secrets.CODECOV_TOKEN }} webpack-tapable-8ca4f9d/.gitignore000066400000000000000000000003261517167660300172450ustar00rootroot00000000000000/node_modules /coverage ############ ## Windows ############ # Windows image file caches Thumbs.db # Folder config file Desktop.ini # Logs *.log # IDEs .idea .vscode # Caches .cache .eslintcache .cspellcache webpack-tapable-8ca4f9d/.prettierignore000066400000000000000000000000371517167660300203170ustar00rootroot00000000000000package.json package-lock.json webpack-tapable-8ca4f9d/.prettierrc.js000066400000000000000000000004741517167660300200600ustar00rootroot00000000000000"use strict"; module.exports = { printWidth: 80, useTabs: true, tabWidth: 2, trailingComma: "none", arrowParens: "always", overrides: [ { files: "*.json", options: { parser: "json", useTabs: false } }, { files: "*.{cts,mts,ts}", options: { parser: "typescript" } } ] }; webpack-tapable-8ca4f9d/CHANGELOG.md000066400000000000000000000013271517167660300170700ustar00rootroot00000000000000# tapable ## 2.3.3 ### Patch Changes - Improved performance in many places. (by [@alexander-akait](https://github.com/alexander-akait) in [#217](https://github.com/webpack/tapable/pull/217)) ## 2.3.2 ### Patch Changes - Revert ignore invalid `before` values. (by [@alexander-akait](https://github.com/alexander-akait) in [#211](https://github.com/webpack/tapable/pull/211)) ## 2.3.1 ### Patch Changes - Ignore invalid `before` values. (by [@alexander-akait](https://github.com/alexander-akait) in [#208](https://github.com/webpack/tapable/pull/208)) - Trim the `name` option when options is an object. (by [@alexander-akait](https://github.com/alexander-akait) in [#208](https://github.com/webpack/tapable/pull/208)) webpack-tapable-8ca4f9d/LICENSE000066400000000000000000000021001517167660300162520ustar00rootroot00000000000000The MIT License Copyright JS Foundation and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. webpack-tapable-8ca4f9d/README.md000066400000000000000000000727731517167660300165530ustar00rootroot00000000000000# Tapable The tapable package exposes many Hook classes, which can be used to create hooks for plugins. ```javascript const { AsyncParallelBailHook, AsyncParallelHook, AsyncSeriesBailHook, AsyncSeriesHook, AsyncSeriesWaterfallHook, SyncBailHook, SyncHook, SyncLoopHook, SyncWaterfallHook } = require("tapable"); ``` ## Installation ```shell npm install --save tapable ``` ## Usage All Hook constructors take one optional argument, which is a list of argument names as strings. ```js const hook = new SyncHook(["arg1", "arg2", "arg3"]); ``` The best practice is to expose all hooks of a class in a `hooks` property: ```js class Car { constructor() { this.hooks = { accelerate: new SyncHook(["newSpeed"]), brake: new SyncHook(), calculateRoutes: new AsyncParallelHook(["source", "target", "routesList"]) }; } /* ... */ } ``` Other people can now use these hooks: ```js const myCar = new Car(); // Use the tap method to add a consumer (plugin) myCar.hooks.brake.tap("WarningLampPlugin", () => warningLamp.on()); ``` It's required to pass a name to identify the plugin/reason. You may receive arguments: ```js myCar.hooks.accelerate.tap("LoggerPlugin", (newSpeed) => console.log(`Accelerating to ${newSpeed}`) ); ``` For sync hooks, `tap` is the only valid method to add a plugin. Async hooks also support async plugins: ```js myCar.hooks.calculateRoutes.tapPromise( "GoogleMapsPlugin", (source, target, routesList) => // return a promise google.maps.findRoute(source, target).then((route) => { routesList.add(route); }) ); myCar.hooks.calculateRoutes.tapAsync( "BingMapsPlugin", (source, target, routesList, callback) => { bing.findRoute(source, target, (err, route) => { if (err) return callback(err); routesList.add(route); // call the callback callback(); }); } ); // You can still use sync plugins myCar.hooks.calculateRoutes.tap( "CachedRoutesPlugin", (source, target, routesList) => { const cachedRoute = cache.get(source, target); if (cachedRoute) routesList.add(cachedRoute); } ); ``` The class declaring these hooks needs to call them: ```js class Car { /** * You won't get returned value from SyncHook or AsyncParallelHook, * to do that, use SyncWaterfallHook and AsyncSeriesWaterfallHook respectively */ setSpeed(newSpeed) { // following call returns undefined even when you returned values this.hooks.accelerate.call(newSpeed); } useNavigationSystemPromise(source, target) { const routesList = new List(); return this.hooks.calculateRoutes .promise(source, target, routesList) .then((res) => // res is undefined for AsyncParallelHook routesList.getRoutes() ); } useNavigationSystemAsync(source, target, callback) { const routesList = new List(); this.hooks.calculateRoutes.callAsync(source, target, routesList, (err) => { if (err) return callback(err); callback(null, routesList.getRoutes()); }); } } ``` The Hook will compile a method with the most efficient way of running your plugins. It generates code depending on: - The number of registered plugins (none, one, many) - The kind of registered plugins (sync, async, promise) - The used call method (sync, async, promise) - The number of arguments - Whether interception is used This ensures fastest possible execution. See [Code generation](#code-generation) for more details on the runtime compilation. ## Plugin API A plugin registers a callback on a hook using one of the `tap*` methods. The hook type determines which of these are valid (see [Hook classes](#hook-classes)): - `hook.tap(nameOrOptions, fn)` — register a synchronous callback. - `hook.tapAsync(nameOrOptions, fn)` — register a callback-based async callback. The last argument passed to `fn` is a node-style callback `(err, result)`. - `hook.tapPromise(nameOrOptions, fn)` — register a promise-returning async callback. If `fn` returns something that is not thenable, the hook throws. The first argument can be either a string (the plugin name) or an options object that also allows influencing the order in which taps run: ```js hook.tap( { name: "MyPlugin", stage: -10, // lower stages run earlier, default is 0 before: "OtherPlugin" // run before a named tap (string or string[]) }, (...args) => { /* ... */ } ); ``` | Option | Type | Description | | -------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `name` | `string` | Required. Identifies the tap for debugging, interceptors, and the `before` option. | | `stage` | `number` | Defaults to `0`. Taps with a lower stage run before taps with a higher stage. Taps with the same stage run in registration order. | | `before` | `string` \| `string[]` | The tap is inserted before the named tap(s). Unknown names are ignored. Combined with `stage`, `before` wins for the taps it targets; other taps are still ordered by `stage`. | The `name` is also used by some ecosystems (like webpack) for profiling and error messages. Within a single tap registration, later interceptors' `register` hooks may still replace the tap object (see [Interception](#interception)). ### `hook.withOptions(options)` `withOptions` returns a facade around the hook whose `tap*` methods automatically merge `options` into every registration. It is useful for libraries that want to pre-configure a `stage` or `before` for all the taps they add: ```js const lateHook = myCar.hooks.accelerate.withOptions({ stage: 10 }); lateHook.tap("LogAfterOthers", (speed) => console.log("final speed", speed)); // equivalent to: myCar.hooks.accelerate.tap({ name: "LogAfterOthers", stage: 10 }, ...) ``` The returned object does not expose the `call*` methods, so it is safe to hand out to plugins. A runnable example showing how `withOptions` influences tap ordering: ```js const { SyncHook } = require("tapable"); const hook = new SyncHook(["value"]); hook.tap("Default", (v) => console.log("default", v)); // Pre-configure stage: 10 so all taps registered through `late` run last. const late = hook.withOptions({ stage: 10 }); late.tap("RunLast", (v) => console.log("last", v)); // Pre-configure stage: -10 so these taps run first. Each facade can also // be further narrowed via `withOptions`. const early = hook.withOptions({ stage: -10 }); early.tap("RunFirst", (v) => console.log("first", v)); hook.call(1); // first 1 // default 1 // last 1 ``` Per-tap options override values from `withOptions`. For example, `late.tap({ name: "Override", stage: 0 }, fn)` ignores the facade's `stage: 10` and registers `fn` at stage `0`. ## Hook types Each hook can be tapped with one or several functions. How they are executed depends on the hook type: - Basic hook (without “Waterfall”, “Bail” or “Loop” in its name). This hook simply calls every function it tapped in a row. - **Waterfall**. A waterfall hook also calls each tapped function in a row. Unlike the basic hook, it passes a return value from each function to the next function. - **Bail**. A bail hook allows exiting early. When any of the tapped function returns anything, the bail hook will stop executing the remaining ones. - **Loop**. When a plugin in a loop hook returns a non-undefined value the hook will restart from the first plugin. It will loop until all plugins return undefined. Additionally, hooks can be synchronous or asynchronous. To reflect this, there’re “Sync”, “AsyncSeries”, and “AsyncParallel” hook classes: - **Sync**. A sync hook can only be tapped with synchronous functions (using `myHook.tap()`). - **AsyncSeries**. An async-series hook can be tapped with synchronous, callback-based and promise-based functions (using `myHook.tap()`, `myHook.tapAsync()` and `myHook.tapPromise()`). They call each async method in a row. - **AsyncParallel**. An async-parallel hook can also be tapped with synchronous, callback-based and promise-based functions (using `myHook.tap()`, `myHook.tapAsync()` and `myHook.tapPromise()`). However, they run each async method in parallel. The hook type is reflected in its class name. E.g., `AsyncSeriesWaterfallHook` allows asynchronous functions and runs them in series, passing each function’s return value into the next function. ## Hook classes The table below summarizes the 9 built-in hook classes. For each class: - **Tap methods** are the `tapX` variants that may be used to register a handler. - **Call methods** are the ways the owner of the hook can trigger it. - **Result** is the value returned from `call` (or passed to the `callAsync` callback / resolved from the `promise` call). - **Returned value from tap** describes whether the value returned from a tapped function has an effect. | Class | Tap methods | Call methods | Result | Returned value from tap | | -------------------------- | ------------------------------- | ---------------------- | ----------------------------------------------- | ---------------------------------------------------- | | `SyncHook` | `tap` | `call` | `undefined` | ignored | | `SyncBailHook` | `tap` | `call` | first non-`undefined` value, or `undefined` | short-circuits the hook | | `SyncWaterfallHook` | `tap` | `call` | final value (first argument after the last tap) | passed as first argument to the next tap | | `SyncLoopHook` | `tap` | `call` | `undefined` | non-`undefined` restarts the loop from the first tap | | `AsyncParallelHook` | `tap`, `tapAsync`, `tapPromise` | `callAsync`, `promise` | `undefined` | ignored | | `AsyncParallelBailHook` | `tap`, `tapAsync`, `tapPromise` | `callAsync`, `promise` | first non-`undefined` value, or `undefined` | short-circuits the hook | | `AsyncSeriesHook` | `tap`, `tapAsync`, `tapPromise` | `callAsync`, `promise` | `undefined` | ignored | | `AsyncSeriesBailHook` | `tap`, `tapAsync`, `tapPromise` | `callAsync`, `promise` | first non-`undefined` value, or `undefined` | short-circuits the hook | | `AsyncSeriesLoopHook` | `tap`, `tapAsync`, `tapPromise` | `callAsync`, `promise` | `undefined` | non-`undefined` restarts the loop from the first tap | | `AsyncSeriesWaterfallHook` | `tap`, `tapAsync`, `tapPromise` | `callAsync`, `promise` | final value (first argument after the last tap) | passed as first argument to the next tap | Detailed behavior of each class: ### SyncHook A basic synchronous hook. Every tapped function is called in registration order with the arguments passed to `call`. Return values from tapped functions are ignored and `call` returns `undefined`. - Tap methods: `tap` - Call methods: `call` - `tapAsync` and `tapPromise` throw an error. ```js const hook = new SyncHook(["name"]); hook.tap("A", (name) => console.log(`hello ${name}`)); hook.tap("B", (name) => console.log(`hi ${name}`)); hook.call("world"); // hello world // hi world ``` ### SyncBailHook A synchronous hook that allows exiting early. Every tapped function is called in order until one returns a non-`undefined` value; that value becomes the result of `call` and the remaining taps are skipped. If all taps return `undefined`, `call` returns `undefined`. - Tap methods: `tap` - Call methods: `call` ```js const hook = new SyncBailHook(["value"]); hook.tap("Negative", (v) => (v < 0 ? "negative" : undefined)); hook.tap("Zero", (v) => (v === 0 ? "zero" : undefined)); hook.tap("Positive", (v) => "positive"); hook.call(-1); // "negative" (later taps skipped) hook.call(5); // "positive" ``` ### SyncWaterfallHook A synchronous hook that threads a value through its tapped functions. The first argument passed to `call` is forwarded to the first tap. If a tap returns a non-`undefined` value it replaces that argument for the next tap; otherwise the previous value is kept. `call` returns the value after the last tap has run. Additional arguments (if any) are passed through unchanged. - Tap methods: `tap` - Call methods: `call` ```js const hook = new SyncWaterfallHook(["value"]); hook.tap("Double", (v) => v * 2); hook.tap("PlusOne", (v) => v + 1); hook.call(3); // 7 -> (3 * 2) + 1 ``` ### SyncLoopHook A synchronous hook that keeps re-running its taps until all of them return `undefined` for a full pass. Whenever a tap returns a non-`undefined` value the hook restarts from the first tap. `call` returns `undefined`. - Tap methods: `tap` - Call methods: `call` ```js const hook = new SyncLoopHook(["state"]); let retries = 3; hook.tap("Retry", () => { if (retries-- > 0) return true; // non-undefined restarts the loop }); hook.tap("Log", () => console.log("pass")); hook.call({}); // pass (runs once all taps return undefined) ``` ### AsyncParallelHook An asynchronous hook that runs all of its tapped functions in parallel. It completes when every tap has signalled completion (sync return, callback, or promise resolution). Return values and resolution values are ignored; `callAsync`'s callback is invoked with no result and `promise()` resolves to `undefined`. If any tap errors, the error is forwarded and remaining taps still complete but their results are discarded. - Tap methods: `tap`, `tapAsync`, `tapPromise` - Call methods: `callAsync`, `promise` ```js const hook = new AsyncParallelHook(["source"]); hook.tapPromise("Fetch", (src) => fetch(src)); hook.tapAsync("Log", (src, cb) => { console.log("fetching", src); cb(); }); await hook.promise("https://example.com"); ``` ### AsyncParallelBailHook Like `AsyncParallelHook`, but designed to bail out with a result. All tapped functions start in parallel; the first tap to produce a non-`undefined` value (synchronously, via its callback, or by resolving its promise) determines the hook’s result. The remaining taps continue to run but their results are ignored. Order is determined by tap registration order: an earlier tap’s value takes precedence over a later one’s, even if the later one finishes first. - Tap methods: `tap`, `tapAsync`, `tapPromise` - Call methods: `callAsync`, `promise` ```js const hook = new AsyncParallelBailHook(["key"]); hook.tapPromise("Cache", async (key) => cache.get(key)); hook.tapPromise("Db", async (key) => db.lookup(key)); const value = await hook.promise("user:42"); // First non-undefined result (by registration order) wins. ``` ### AsyncSeriesHook An asynchronous hook that runs tapped functions one after another, waiting for each to finish before starting the next. Results are ignored; `callAsync`'s callback is invoked with no result and `promise()` resolves to `undefined`. The first error aborts the series. - Tap methods: `tap`, `tapAsync`, `tapPromise` - Call methods: `callAsync`, `promise` ```js const hook = new AsyncSeriesHook(["request"]); hook.tapPromise("Authenticate", async (req) => authenticate(req)); hook.tapPromise("Log", async (req) => logger.info(req.url)); await hook.promise(request); ``` ### AsyncSeriesBailHook An asynchronous series hook that allows exiting early. Tapped functions run one after another; as soon as one produces a non-`undefined` value, that value becomes the hook’s result and the remaining taps are skipped. - Tap methods: `tap`, `tapAsync`, `tapPromise` - Call methods: `callAsync`, `promise` ```js const hook = new AsyncSeriesBailHook(["id"]); hook.tapPromise("Memory", async (id) => memory.get(id)); hook.tapPromise("Disk", async (id) => disk.read(id)); const value = await hook.promise("doc-1"); // Stops at the first tap that produces a value. ``` ### AsyncSeriesLoopHook An asynchronous series hook that loops. Tapped functions run one after another; whenever a tap produces a non-`undefined` value the hook restarts from the first tap. The hook completes once a full pass yields `undefined` from every tap. The result is always `undefined`. - Tap methods: `tap`, `tapAsync`, `tapPromise` - Call methods: `callAsync`, `promise` ```js const hook = new AsyncSeriesLoopHook(["job"]); hook.tapPromise("Process", async (job) => { const more = await job.step(); if (more) return true; // restart the loop }); await hook.promise(job); ``` ### AsyncSeriesWaterfallHook An asynchronous series hook that threads a value through its taps. The first argument passed to `callAsync` / `promise` is forwarded to the first tap. A tap's non-`undefined` return / callback / resolution value replaces it for the next tap; `undefined` keeps the previous value. The hook completes with the value after the last tap. - Tap methods: `tap`, `tapAsync`, `tapPromise` - Call methods: `callAsync`, `promise` ```js const hook = new AsyncSeriesWaterfallHook(["source"]); hook.tapPromise("Read", async (src) => fs.readFile(src, "utf8")); hook.tapPromise("Trim", async (text) => text.trim()); const output = await hook.promise("./input.txt"); ``` ## Interception All hooks expose an `intercept(interceptor)` method. An interceptor is a plain object whose methods are invoked at specific points during the lifetime of the hook. Interceptors are invoked in registration order before the taps, and are useful for logging, tracing, profiling, or re-mapping tap options. ```js myCar.hooks.calculateRoutes.intercept({ name: "LoggingInterceptor", call: (source, target, routesList) => { console.log("Starting to calculate routes"); }, tap: (tapInfo) => { // tapInfo = { type: "promise", name: "GoogleMapsPlugin", fn: ..., stage: 0 } console.log(`${tapInfo.name} is running`); }, register: (tapInfo) => { // Called once per tap (and for each tap already registered when the // interceptor is added). Return a new tapInfo object to replace it. console.log(`${tapInfo.name} is registered`); return tapInfo; } }); ``` | Handler | Signature | When it runs | | ---------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | `call` | `(...args) => void` | Before the hook starts executing its taps. Receives the arguments passed to `call` / `callAsync` / `promise`. | | `tap` | `(tap: Tap) => void` | Before each tap runs. The `tap` object is a snapshot — mutations are ignored. | | `loop` | `(...args) => void` | At the start of each iteration of a `SyncLoopHook` / `AsyncSeriesLoopHook`. | | `error` | `(err: Error) => void` | Whenever a tap throws, rejects, or calls its callback with an error. | | `result` | `(result: any) => void` | When a bail or waterfall hook produces a value, or when a tap produces one for a loop hook. | | `done` | `() => void` | When the hook finishes successfully (no error, no early bail). | | `register` | `(tap: Tap) => Tap \| undefined` | Once per tap at registration time (including taps that existed before the interceptor was added). Return a new `Tap` object to replace it. | | `name` | `string` | Optional label used by ecosystems for debugging. | | `context` | `boolean` | Opt into the shared `context` object. See [Context](#context). | Adding an interceptor invalidates the hook's compiled call function — the next `call` / `callAsync` / `promise` recompiles it so that the new interceptor is woven in. ## Context Plugins and interceptors can opt-in to access an optional `context` object, which can be used to pass arbitrary values to subsequent plugins and interceptors. ```js myCar.hooks.accelerate.intercept({ context: true, tap: (context, tapInfo) => { // tapInfo = { type: "sync", name: "NoisePlugin", fn: ... } console.log(`${tapInfo.name} is doing it's job`); // `context` starts as an empty object if at least one plugin uses `context: true`. // If no plugins use `context: true`, then `context` is undefined. if (context) { // Arbitrary properties can be added to `context`, which plugins can then access. context.hasMuffler = true; } } }); myCar.hooks.accelerate.tap( { name: "NoisePlugin", context: true }, (context, newSpeed) => { if (context && context.hasMuffler) { console.log("Silence..."); } else { console.log("Vroom!"); } } ); ``` ## HookMap A `HookMap` is a helper class that lazily creates hooks per key. The constructor takes a factory function; the first time a key is requested via `for(key)`, the factory is called and the resulting hook is cached. ```js const keyedHook = new HookMap((key) => new SyncHook(["arg"])); ``` Plugins use `for(key)` to obtain the hook for a specific key (creating it on demand) and then `tap` on it as usual: ```js keyedHook.for("some-key").tap("MyPlugin", (arg) => { /* ... */ }); keyedHook.for("some-key").tapAsync("MyPlugin", (arg, callback) => { /* ... */ }); keyedHook.for("some-key").tapPromise("MyPlugin", (arg) => { /* ... */ }); ``` The owner of the `HookMap` uses `get(key)` to look up an existing hook without creating one. This is typically preferred on the calling side so that keys no plugin cares about are never materialized: ```js const hook = keyedHook.get("some-key"); if (hook !== undefined) { hook.callAsync("arg", (err) => { /* ... */ }); } ``` A `HookMap` can also be intercepted. `intercept({ factory })` wraps the factory so you can customize or replace the hook returned for each new key. ## Code generation Tapable does not iterate over taps at call time. Instead, the first time `call`, `callAsync` or `promise` is invoked after the hook has been modified, the hook compiles a specialized function using `new Function(...)` and caches it on the instance. This is what the README means by "evals in code": the hook's dispatch logic is generated as a string and turned into a real JavaScript function the engine can inline and optimize. The generated function is tailored to: - **Call type** — whether the owner called `call` (sync), `callAsync` (callback), or `promise`. Each produces a different skeleton — e.g. `promise()` wraps the body in `new Promise((_resolve, _reject) => { ... })`. - **Tap types** — for each tap, the generator emits the right invocation pattern: direct call for `tap`, node-style callback wrapping for `tapAsync`, and `.then(...)` chaining for `tapPromise`. - **Hook class** — `SyncHook` emits a straight-line sequence of calls; `SyncBailHook` emits early-return checks; `SyncWaterfallHook` threads a value through calls; loop hooks wrap the body in a re-entry loop; `AsyncParallel*` fans the taps out and counts completions; `AsyncSeries*` chains them. - **Interceptors** — if interceptors are attached, calls to their `call`/`tap`/`loop`/`error`/`result`/`done` handlers are spliced into the generated body; otherwise they cost nothing. - **Context** — a `_context` object is only created when at least one tap or interceptor opts into it with `context: true`. - **Arity** — the generated code hard-codes the number of arguments declared when the hook was constructed, so no `arguments`/rest handling happens at runtime. The compiled function is invalidated (reset back to a one-shot "recompile then call" trampoline) whenever the hook's shape changes — i.e. on any new `tap*` or `intercept` call. Steady-state calls therefore run straight through the cached function with no per-tap branching. ### Why this matters - You only pay for features you use. An interceptor-free, sync-only hook compiles down to a short sequence of direct function calls. - Debugging a hook means reading the generated source. If you need to see it, `Hook.prototype.compile` returns the `new Function(...)` result — log `hook._createCall("sync").toString()` (or `"async"` / `"promise"`) to inspect the body. - Because the dispatch is code-generated, a hook's behavior is fully determined at compile time. Mutating tap options after registration (for example, changing `stage` on an existing `Tap` object) will not reorder taps until you cause a recompile. ## Hook/HookMap interface Public (callable by anyone holding a reference to the hook, i.e. the plugins): ```ts interface Hook { tap: (name: string | Tap, fn: (context?, ...args) => Result) => void; tapAsync: ( name: string | Tap, fn: ( context?, ...args, callback: (err: Error | null, result: Result) => void ) => void ) => void; tapPromise: ( name: string | Tap, fn: (context?, ...args) => Promise ) => void; intercept: (interceptor: HookInterceptor) => void; withOptions: ( options: TapOptions ) => Omit; } interface HookInterceptor { name?: string; call?: (context?, ...args) => void; loop?: (context?, ...args) => void; tap?: (context?, tap: Tap) => void; error?: (err: Error) => void; result?: (result: any) => void; done?: () => void; register?: (tap: Tap) => Tap | undefined; context?: boolean; } interface HookMap { for: (key: any) => Hook; intercept: (interceptor: HookMapInterceptor) => void; } interface HookMapInterceptor { factory: (key: any, hook: Hook) => Hook; } interface Tap { name: string; type: "sync" | "async" | "promise"; fn: Function; stage: number; context: boolean; before?: string | Array; } ``` Protected (only for the class containing the hook — it owns the right to trigger it): ```ts interface Hook { isUsed: () => boolean; call: (...args) => Result; promise: (...args) => Promise; callAsync: ( ...args, callback: (err: Error | null, result: Result) => void ) => void; } interface HookMap { get: (key: any) => Hook | undefined; for: (key: any) => Hook; } ``` `isUsed()` returns `true` when the hook has at least one tap or interceptor registered. Hook owners can use it to skip expensive argument preparation when no plugin is listening: ```js class Car { // ... setSpeed(newSpeed) { if (this.hooks.accelerate.isUsed()) { this.hooks.accelerate.call(newSpeed); } } // ... } ``` ## MultiHook A `MultiHook` is a Hook-like facade that forwards `tap`, `tapAsync`, `tapPromise`, `intercept`, and `withOptions` to several underlying hooks at once. It does not expose `call*` methods — only the owners of the wrapped hooks decide when each of them runs. It is the typical way a class exposes a "happens on any of these events" listening surface without having the plugin wire itself up to every hook individually. ### Fan out a tap to several hooks ```js const { MultiHook, SyncHook } = require("tapable"); class Car { constructor() { const accelerate = new SyncHook(["newSpeed"]); const brake = new SyncHook(); this.hooks = { accelerate, brake, // `anyMovement` is not a real hook — it simply re-registers taps // on both `accelerate` and `brake`. anyMovement: new MultiHook([accelerate, brake]) }; } } const car = new Car(); car.hooks.anyMovement.tap("Telemetry", () => console.log("car moved")); car.hooks.accelerate.call(42); // "car moved" car.hooks.brake.call(); // "car moved" ``` The `MultiHook` has no state of its own: the tap above ends up inside `accelerate.taps` and `brake.taps`. ### Forwarding async taps `tapAsync` / `tapPromise` forward to every wrapped hook — it is the plugin's job to make sure they are all compatible. Registering a `tapPromise` on a `MultiHook` that wraps a `SyncHook` will throw at registration time for that hook. ```js const build = new AsyncSeriesHook(["stats"]); const rebuild = new AsyncSeriesHook(["stats"]); const anyBuild = new MultiHook([build, rebuild]); anyBuild.tapPromise("Report", async (stats) => report.send(stats)); ``` ### Shared interceptors and options `intercept` and `withOptions` are also forwarded, so a `MultiHook` can be used to attach the same interceptor or pre-configured options to a group of hooks: ```js const anyBuild = new MultiHook([build, rebuild]); anyBuild.intercept({ call: () => console.log("build started"), done: () => console.log("build done") }); // Every tap added through `late` is staged late on both underlying hooks. const late = anyBuild.withOptions({ stage: 10 }); late.tap("RunLast", () => { /* ... */ }); ``` ### `isUsed` `isUsed()` returns `true` if any of the wrapped hooks has at least one tap or interceptor, which lets the owner cheaply skip work when no one is listening on any of them: ```js if (this.hooks.anyMovement.isUsed()) { // expensive telemetry payload is only built when a plugin actually cares this.hooks.accelerate.call(computeSpeed()); } ``` webpack-tapable-8ca4f9d/benchmark/000077500000000000000000000000001517167660300172065ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/README.md000066400000000000000000000107731517167660300204750ustar00rootroot00000000000000# Benchmarks Performance benchmarks for `tapable`, tracked over time via [CodSpeed](https://codspeed.io/). Runner stack: [tinybench](https://github.com/tinylibs/tinybench) + [`@codspeed/core`](https://www.npmjs.com/package/@codspeed/core) with a local `withCodSpeed()` wrapper ported from webpack's `test/BenchmarkTestCases.benchmark.mjs` (via enhanced-resolve). Locally it falls back to plain tinybench wall-clock measurements, and under `CodSpeedHQ/action` in CI it automatically switches to CodSpeed's instrumentation mode. ## Running locally ```sh npm run benchmark ``` Optional substring filter to run only matching cases: ```sh npm run benchmark -- sync BENCH_FILTER=async-parallel npm run benchmark ``` Locally the runner uses tinybench's wall-clock measurements and prints a table of ops/s, mean, p99, and relative margin of error per task. Under CI, the bridge detects the CodSpeed runner environment and switches to instruction-counting mode automatically. The V8 flags in `package.json` (`--no-opt --predictable --hash-seed=1` etc.) are required by CodSpeed's instrumentation mode for deterministic results — do not drop them. ### Optional: running real instruction counts locally If you want to reproduce CI's exact instrument-count numbers on your own machine (Linux only — the underlying Valgrind tooling has no macOS backend), install the standalone CodSpeed CLI and wrap `npm run benchmark` with it: ```sh curl -fsSL https://codspeed.io/install.sh | bash codspeed run npm run benchmark ``` This is only useful if you want to debug an instruction-count regression outside CI. Day-to-day benchmark iteration should use `npm run benchmark` directly (wall-clock mode). ## Layout ``` benchmark/ ├── run.mjs # entry point: discovers cases, runs bench ├── with-codspeed.mjs # local @codspeed/core <-> tinybench bridge └── cases/ └── / └── index.bench.mjs # default export: register(bench, ctx) ``` Each case directory must contain `index.bench.mjs` exporting a default function with the signature: ```js export default function register(bench, { caseName, caseDir }) { bench.add("my case: descriptive name", () => { // ... hook calls ... }); } ``` ## Existing cases | Case | What it measures | | ----------------------------- | ------------------------------------------------------------------------------------- | | `sync-hook` | Steady-state `SyncHook#call` at tap counts 0/1/5/10/20/50 and arg counts 0..5 | | `sync-bail-hook` | `SyncBailHook#call`, full walk vs. bail at start / middle / end | | `sync-waterfall-hook` | Value-threading through taps that all return / all skip / mixed | | `sync-loop-hook` | Single-pass and multi-pass loops | | `async-series-hook` | `callAsync` and `promise`, sync / async / promise tap flavors | | `async-series-bail-hook` | Full walk vs. bail, for sync and callback-async taps | | `async-series-waterfall-hook` | Waterfall for sync / async / promise taps | | `async-series-loop-hook` | Single-pass and multi-pass async loops | | `async-parallel-hook` | Fan-out across sync / async / promise taps | | `async-parallel-bail-hook` | Parallel race with and without a bailing tap | | `hook-map` | `HookMap#for` hot / cold / missing lookups plus interceptor factories | | `multi-hook` | Fan-out registration and `isUsed` / `intercept` across a 3-hook `MultiHook` | | `interceptors-sync` | Baseline vs. `call`, `tap`, combined, multiple, and register interceptors on SyncHook | | `interceptors-async` | Same matrix on `AsyncSeriesHook` and `AsyncParallelHook` | | `tap-registration` | `tap` / `tapAsync` / `tapPromise` with string, object, stage, and `before` options | | `hook-compile` | First-call code-gen cost for every hook type (5 taps + first call per iteration) | Add new cases by creating a new directory under `cases/` — `run.mjs` will pick it up automatically on the next run. webpack-tapable-8ca4f9d/benchmark/cases/000077500000000000000000000000001517167660300203045ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/cases/async-parallel-bail-hook/000077500000000000000000000000001517167660300250565ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/cases/async-parallel-bail-hook/index.bench.mjs000066400000000000000000000031721517167660300277610ustar00rootroot00000000000000/* * async-parallel-bail-hook * * AsyncParallelBailHook races taps in parallel but bails (with the * lowest-index result) as soon as any tap produces a non-undefined value. */ import tapable from "../../../lib/index.js"; const { AsyncParallelBailHook } = tapable; function makeHook(numTaps, kind, bailAt) { const hook = new AsyncParallelBailHook(["a"]); for (let i = 0; i < numTaps; i++) { const idx = i; const name = `plugin-${idx}`; if (kind === "sync") { hook.tap(name, (v) => (idx === bailAt ? v : undefined)); } else { hook.tapAsync(name, (v, cb) => cb(null, idx === bailAt ? v : undefined)); } } hook.callAsync(1, () => {}); return hook; } const INNER_ITERATIONS = 100; function runBatch(hook) { return new Promise((resolve, reject) => { let remaining = INNER_ITERATIONS; const done = (err) => { if (err) return reject(err); if (--remaining === 0) return resolve(); }; for (let i = 0; i < INNER_ITERATIONS; i++) { hook.callAsync(1, done); } }); } /** * @param {import('tinybench').Bench} bench */ export default function register(bench) { { const hook = makeHook(10, "sync", -1); bench.add("async-parallel-bail-hook: 10 sync taps, no bail", () => runBatch(hook) ); } { const hook = makeHook(10, "sync", 4); bench.add("async-parallel-bail-hook: 10 sync taps, bail mid", () => runBatch(hook) ); } { const hook = makeHook(5, "async", -1); bench.add("async-parallel-bail-hook: 5 async taps, no bail", () => runBatch(hook) ); } { const hook = makeHook(5, "async", 2); bench.add("async-parallel-bail-hook: 5 async taps, bail mid", () => runBatch(hook) ); } } webpack-tapable-8ca4f9d/benchmark/cases/async-parallel-hook/000077500000000000000000000000001517167660300241515ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/cases/async-parallel-hook/index.bench.mjs000066400000000000000000000027471517167660300270630ustar00rootroot00000000000000/* * async-parallel-hook * * AsyncParallelHook fires every tap at once and waits for all of them * to finish. Touches the generated parallel loop / counter structure. */ import tapable from "../../../lib/index.js"; const { AsyncParallelHook } = tapable; function makeHook(numTaps, kind) { const hook = new AsyncParallelHook(["a"]); for (let i = 0; i < numTaps; i++) { const name = `plugin-${i}`; if (kind === "sync") { hook.tap(name, () => {}); } else if (kind === "async") { hook.tapAsync(name, (_a, cb) => cb()); } else if (kind === "promise") { hook.tapPromise(name, () => Promise.resolve()); } } hook.callAsync(1, () => {}); return hook; } const INNER_ITERATIONS = 200; function runBatch(hook) { return new Promise((resolve, reject) => { let remaining = INNER_ITERATIONS; const done = (err) => { if (err) return reject(err); if (--remaining === 0) return resolve(); }; for (let i = 0; i < INNER_ITERATIONS; i++) { hook.callAsync(1, done); } }); } /** * @param {import('tinybench').Bench} bench */ export default function register(bench) { for (const n of [1, 5, 20]) { const hook = makeHook(n, "sync"); bench.add(`async-parallel-hook: ${n} sync taps`, () => runBatch(hook)); } for (const n of [5, 20]) { const hook = makeHook(n, "async"); bench.add(`async-parallel-hook: ${n} async taps`, () => runBatch(hook)); } { const hook = makeHook(5, "promise"); bench.add("async-parallel-hook: 5 promise taps", () => runBatch(hook)); } } webpack-tapable-8ca4f9d/benchmark/cases/async-series-bail-hook/000077500000000000000000000000001517167660300245545ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/cases/async-series-bail-hook/index.bench.mjs000066400000000000000000000032301517167660300274520ustar00rootroot00000000000000/* * async-series-bail-hook * * AsyncSeriesBailHook walks taps in order until one returns / callbacks * with a non-undefined value. Exercises both the full-chain "nothing bails" * branch and the early-exit branch. */ import tapable from "../../../lib/index.js"; const { AsyncSeriesBailHook } = tapable; function makeHook(numTaps, kind, bailAt) { const hook = new AsyncSeriesBailHook(["a"]); for (let i = 0; i < numTaps; i++) { const idx = i; const name = `plugin-${idx}`; if (kind === "sync") { hook.tap(name, (v) => (idx === bailAt ? v : undefined)); } else { hook.tapAsync(name, (v, cb) => cb(null, idx === bailAt ? v : undefined)); } } hook.callAsync(1, () => {}); return hook; } const INNER_ITERATIONS = 200; function runBatch(hook) { return new Promise((resolve, reject) => { let remaining = INNER_ITERATIONS; const done = (err) => { if (err) return reject(err); if (--remaining === 0) return resolve(); }; for (let i = 0; i < INNER_ITERATIONS; i++) { hook.callAsync(1, done); } }); } /** * @param {import('tinybench').Bench} bench */ export default function register(bench) { { const hook = makeHook(10, "sync", -1); bench.add("async-series-bail-hook: 10 sync taps, no bail", () => runBatch(hook) ); } { const hook = makeHook(10, "sync", 4); bench.add("async-series-bail-hook: 10 sync taps, bail mid", () => runBatch(hook) ); } { const hook = makeHook(5, "async", -1); bench.add("async-series-bail-hook: 5 async taps, no bail", () => runBatch(hook) ); } { const hook = makeHook(5, "async", 2); bench.add("async-series-bail-hook: 5 async taps, bail mid", () => runBatch(hook) ); } } webpack-tapable-8ca4f9d/benchmark/cases/async-series-hook/000077500000000000000000000000001517167660300236475ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/cases/async-series-hook/index.bench.mjs000066400000000000000000000042431517167660300265520ustar00rootroot00000000000000/* * async-series-hook * * AsyncSeriesHook under its three tap flavors: * - sync taps (`hook.tap`) -> generated code falls through * - async taps (`hook.tapAsync`) -> callback continuations * - promise taps (`hook.tapPromise`) -> .then() continuations * * A batch of callAsync / promise invocations runs per iteration so the * measured body dominates the tinybench scheduler overhead. */ import tapable from "../../../lib/index.js"; const { AsyncSeriesHook } = tapable; function makeHook(numTaps, kind) { const hook = new AsyncSeriesHook(["a"]); for (let i = 0; i < numTaps; i++) { const name = `plugin-${i}`; if (kind === "sync") { hook.tap(name, () => {}); } else if (kind === "async") { hook.tapAsync(name, (_a, cb) => cb()); } else if (kind === "promise") { hook.tapPromise(name, () => Promise.resolve()); } } hook.callAsync(1, () => {}); return hook; } const INNER_ITERATIONS = 200; function runCallbackBatch(hook) { return new Promise((resolve, reject) => { let remaining = INNER_ITERATIONS; const done = (err) => { if (err) return reject(err); if (--remaining === 0) return resolve(); }; for (let i = 0; i < INNER_ITERATIONS; i++) { hook.callAsync(1, done); } }); } async function runPromiseBatch(hook) { for (let i = 0; i < INNER_ITERATIONS; i++) { await hook.promise(1); } } /** * @param {import('tinybench').Bench} bench */ export default function register(bench) { for (const n of [1, 5, 20]) { const hook = makeHook(n, "sync"); bench.add(`async-series-hook: callAsync, ${n} sync taps`, () => runCallbackBatch(hook) ); } for (const n of [5, 20]) { const hook = makeHook(n, "async"); bench.add(`async-series-hook: callAsync, ${n} async taps`, () => runCallbackBatch(hook) ); } { const hook = makeHook(5, "promise"); bench.add("async-series-hook: callAsync, 5 promise taps", () => runCallbackBatch(hook) ); } { const hook = makeHook(5, "sync"); bench.add("async-series-hook: promise, 5 sync taps", () => runPromiseBatch(hook) ); } { const hook = makeHook(5, "async"); bench.add("async-series-hook: promise, 5 async taps", () => runPromiseBatch(hook) ); } } webpack-tapable-8ca4f9d/benchmark/cases/async-series-loop-hook/000077500000000000000000000000001517167660300246165ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/cases/async-series-loop-hook/index.bench.mjs000066400000000000000000000030501517167660300275140ustar00rootroot00000000000000/* * async-series-loop-hook * * AsyncSeriesLoopHook is the async cousin of SyncLoopHook - re-runs the * tap chain while any tap signals "loop again" (non-undefined value). * Covers 0 reloops (single pass) and a small multi-pass case. */ import tapable from "../../../lib/index.js"; const { AsyncSeriesLoopHook } = tapable; function makeHook(numTaps, reloops) { const hook = new AsyncSeriesLoopHook(["state"]); for (let i = 0; i < numTaps; i++) { const idx = i; hook.tap(`plugin-${idx}`, (state) => { if (state.counts[idx] < reloops) { state.counts[idx]++; return true; } return undefined; }); } hook.callAsync( { counts: Array.from({ length: numTaps }, () => reloops) }, () => {} ); return hook; } function resetState(state) { for (let i = 0; i < state.counts.length; i++) state.counts[i] = 0; } const INNER_ITERATIONS = 100; function runBatch(hook, state) { return new Promise((resolve, reject) => { let remaining = INNER_ITERATIONS; const next = (err) => { if (err) return reject(err); resetState(state); if (--remaining === 0) return resolve(); hook.callAsync(state, next); }; resetState(state); hook.callAsync(state, next); }); } /** * @param {import('tinybench').Bench} bench */ export default function register(bench) { for (const [n, reloops] of [ [3, 0], [3, 2], [10, 0] ]) { const hook = makeHook(n, reloops); const state = { counts: Array.from({ length: n }, () => 0) }; bench.add(`async-series-loop-hook: ${n} taps, ${reloops} reloops`, () => runBatch(hook, state) ); } } webpack-tapable-8ca4f9d/benchmark/cases/async-series-waterfall-hook/000077500000000000000000000000001517167660300256265ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/cases/async-series-waterfall-hook/index.bench.mjs000066400000000000000000000030321517167660300305240ustar00rootroot00000000000000/* * async-series-waterfall-hook * * AsyncSeriesWaterfallHook threads a value through a chain of taps where * each tap can be sync, callback-async, or promise-async. */ import tapable from "../../../lib/index.js"; const { AsyncSeriesWaterfallHook } = tapable; function makeHook(numTaps, kind) { const hook = new AsyncSeriesWaterfallHook(["value"]); for (let i = 0; i < numTaps; i++) { const name = `plugin-${i}`; if (kind === "sync") { hook.tap(name, (v) => v + 1); } else if (kind === "async") { hook.tapAsync(name, (v, cb) => cb(null, v + 1)); } else if (kind === "promise") { hook.tapPromise(name, (v) => Promise.resolve(v + 1)); } } hook.callAsync(0, () => {}); return hook; } const INNER_ITERATIONS = 200; function runBatch(hook) { return new Promise((resolve, reject) => { let remaining = INNER_ITERATIONS; const done = (err) => { if (err) return reject(err); if (--remaining === 0) return resolve(); }; for (let i = 0; i < INNER_ITERATIONS; i++) { hook.callAsync(0, done); } }); } /** * @param {import('tinybench').Bench} bench */ export default function register(bench) { for (const n of [1, 5, 20]) { const hook = makeHook(n, "sync"); bench.add(`async-series-waterfall-hook: ${n} sync taps`, () => runBatch(hook) ); } { const hook = makeHook(5, "async"); bench.add("async-series-waterfall-hook: 5 async taps", () => runBatch(hook) ); } { const hook = makeHook(5, "promise"); bench.add("async-series-waterfall-hook: 5 promise taps", () => runBatch(hook) ); } } webpack-tapable-8ca4f9d/benchmark/cases/hook-compile/000077500000000000000000000000001517167660300226725ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/cases/hook-compile/index.bench.mjs000066400000000000000000000050441517167660300255750ustar00rootroot00000000000000/* * hook-compile * * Measures first-call compile cost per hook type. Each iteration builds * a fresh hook with 5 taps and forces code generation by calling it once. * This is the path that webpack hits every time the tap-set changes. */ import tapable from "../../../lib/index.js"; const { SyncHook, SyncBailHook, SyncWaterfallHook, SyncLoopHook, AsyncSeriesHook, AsyncSeriesBailHook, AsyncSeriesWaterfallHook, AsyncParallelHook, AsyncParallelBailHook } = tapable; /** * @param {import('tinybench').Bench} bench */ export default function register(bench) { bench.add("hook-compile: SyncHook, 5 taps + first call", () => { const hook = new SyncHook(["a", "b"]); for (let i = 0; i < 5; i++) hook.tap(`p-${i}`, () => {}); hook.call(1, 2); }); bench.add("hook-compile: SyncBailHook, 5 taps + first call", () => { const hook = new SyncBailHook(["a"]); for (let i = 0; i < 5; i++) hook.tap(`p-${i}`, () => undefined); hook.call(1); }); bench.add("hook-compile: SyncWaterfallHook, 5 taps + first call", () => { const hook = new SyncWaterfallHook(["v"]); for (let i = 0; i < 5; i++) hook.tap(`p-${i}`, (v) => v); hook.call(0); }); bench.add("hook-compile: SyncLoopHook, 5 taps + first call", () => { const hook = new SyncLoopHook(["s"]); for (let i = 0; i < 5; i++) hook.tap(`p-${i}`, () => undefined); hook.call({}); }); bench.add("hook-compile: AsyncSeriesHook, 5 taps + first callAsync", () => { const hook = new AsyncSeriesHook(["a"]); for (let i = 0; i < 5; i++) hook.tap(`p-${i}`, () => {}); hook.callAsync(1, () => {}); }); bench.add( "hook-compile: AsyncSeriesBailHook, 5 taps + first callAsync", () => { const hook = new AsyncSeriesBailHook(["a"]); for (let i = 0; i < 5; i++) hook.tap(`p-${i}`, () => undefined); hook.callAsync(1, () => {}); } ); bench.add( "hook-compile: AsyncSeriesWaterfallHook, 5 taps + first callAsync", () => { const hook = new AsyncSeriesWaterfallHook(["v"]); for (let i = 0; i < 5; i++) hook.tap(`p-${i}`, (v) => v); hook.callAsync(0, () => {}); } ); bench.add("hook-compile: AsyncParallelHook, 5 taps + first callAsync", () => { const hook = new AsyncParallelHook(["a"]); for (let i = 0; i < 5; i++) hook.tapAsync(`p-${i}`, (_a, cb) => cb()); hook.callAsync(1, () => {}); }); bench.add( "hook-compile: AsyncParallelBailHook, 5 taps + first callAsync", () => { const hook = new AsyncParallelBailHook(["a"]); for (let i = 0; i < 5; i++) { hook.tapAsync(`p-${i}`, (_a, cb) => cb(null, undefined)); } hook.callAsync(1, () => {}); } ); } webpack-tapable-8ca4f9d/benchmark/cases/hook-map/000077500000000000000000000000001517167660300220175ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/cases/hook-map/index.bench.mjs000066400000000000000000000035451517167660300247260ustar00rootroot00000000000000/* * hook-map * * HookMap is the keyed sub-hook container used by plugin systems * (webpack compilation.hooks.*). Hot paths: * - `map.for(key)` on an already-populated key (pure Map.get) * - `map.for(key)` on a new key (factory + interceptor walk) * - `map.get(key)` for existing / missing keys */ import tapable from "../../../lib/index.js"; const { HookMap, SyncHook } = tapable; const LOOKUP_ITERATIONS = 2000; const COLD_KEYS = 10; /** * @param {import('tinybench').Bench} bench */ export default function register(bench) { const warm = new HookMap(() => new SyncHook(["x"])); for (let i = 0; i < 20; i++) { warm.for(`key-${i}`).tap(`plugin-${i}`, () => {}); } bench.add("hook-map: for(existing key)", () => { for (let i = 0; i < LOOKUP_ITERATIONS; i++) { warm.for("key-10"); } }); bench.add("hook-map: get(existing key)", () => { for (let i = 0; i < LOOKUP_ITERATIONS; i++) { warm.get("key-10"); } }); bench.add("hook-map: get(missing key)", () => { for (let i = 0; i < LOOKUP_ITERATIONS; i++) { warm.get("not-there"); } }); bench.add(`hook-map: for(new key) x ${COLD_KEYS}, no interceptors`, () => { const map = new HookMap(() => new SyncHook(["x"])); for (let i = 0; i < COLD_KEYS; i++) { map.for(`k-${i}`); } }); bench.add(`hook-map: for(new key) x ${COLD_KEYS}, 1 interceptor`, () => { const map = new HookMap(() => new SyncHook(["x"])); map.intercept({ factory: (_k, hook) => hook }); for (let i = 0; i < COLD_KEYS; i++) { map.for(`k-${i}`); } }); bench.add(`hook-map: for(new key) x ${COLD_KEYS}, 3 interceptors`, () => { const map = new HookMap(() => new SyncHook(["x"])); map.intercept({ factory: (_k, hook) => hook }); map.intercept({ factory: (_k, hook) => hook }); map.intercept({ factory: (_k, hook) => hook }); for (let i = 0; i < COLD_KEYS; i++) { map.for(`k-${i}`); } }); } webpack-tapable-8ca4f9d/benchmark/cases/interceptors-async/000077500000000000000000000000001517167660300241405ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/cases/interceptors-async/index.bench.mjs000066400000000000000000000044641517167660300270500ustar00rootroot00000000000000/* * interceptors-async * * Interceptor overhead on the async hooks. Covers both AsyncSeriesHook * (serialized, one-tap-at-a-time) and AsyncParallelHook (fan-out). */ import tapable from "../../../lib/index.js"; const { AsyncSeriesHook, AsyncParallelHook } = tapable; function runBatch(hook, iterations) { return new Promise((resolve, reject) => { let remaining = iterations; const done = (err) => { if (err) return reject(err); if (--remaining === 0) return resolve(); }; for (let i = 0; i < iterations; i++) { hook.callAsync(1, done); } }); } const INNER_ITERATIONS = 200; /** * @param {import('tinybench').Bench} bench */ export default function register(bench) { // --- AsyncSeriesHook --- const seriesBaseline = new AsyncSeriesHook(["a"]); for (let i = 0; i < 5; i++) seriesBaseline.tap(`p-${i}`, () => {}); seriesBaseline.callAsync(1, () => {}); bench.add("interceptors-async: series, 5 sync taps, no interceptors", () => runBatch(seriesBaseline, INNER_ITERATIONS) ); const seriesCall = new AsyncSeriesHook(["a"]); seriesCall.intercept({ call: () => {} }); for (let i = 0; i < 5; i++) seriesCall.tap(`p-${i}`, () => {}); seriesCall.callAsync(1, () => {}); bench.add("interceptors-async: series, 5 sync taps, call interceptor", () => runBatch(seriesCall, INNER_ITERATIONS) ); const seriesTap = new AsyncSeriesHook(["a"]); seriesTap.intercept({ tap: () => {} }); for (let i = 0; i < 5; i++) seriesTap.tap(`p-${i}`, () => {}); seriesTap.callAsync(1, () => {}); bench.add("interceptors-async: series, 5 sync taps, tap interceptor", () => runBatch(seriesTap, INNER_ITERATIONS) ); // --- AsyncParallelHook --- const parallelBaseline = new AsyncParallelHook(["a"]); for (let i = 0; i < 5; i++) { parallelBaseline.tapAsync(`p-${i}`, (_a, cb) => cb()); } parallelBaseline.callAsync(1, () => {}); bench.add("interceptors-async: parallel, 5 async taps, no interceptors", () => runBatch(parallelBaseline, INNER_ITERATIONS) ); const parallelAll = new AsyncParallelHook(["a"]); parallelAll.intercept({ call: () => {}, tap: () => {} }); for (let i = 0; i < 5; i++) parallelAll.tapAsync(`p-${i}`, (_a, cb) => cb()); parallelAll.callAsync(1, () => {}); bench.add( "interceptors-async: parallel, 5 async taps, call + tap interceptor", () => runBatch(parallelAll, INNER_ITERATIONS) ); } webpack-tapable-8ca4f9d/benchmark/cases/interceptors-sync/000077500000000000000000000000001517167660300237775ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/cases/interceptors-sync/index.bench.mjs000066400000000000000000000035021517167660300266770ustar00rootroot00000000000000/* * interceptors-sync * * Measures how interceptors slow down the SyncHook `.call()` path. The * baseline no-interceptor run is included so delta is visible. */ import tapable from "../../../lib/index.js"; const { SyncHook } = tapable; function makeHook(numTaps, interceptors) { const hook = new SyncHook(["a"]); for (const i of interceptors) hook.intercept(i); for (let i = 0; i < numTaps; i++) { hook.tap(`plugin-${i}`, () => {}); } hook.call(1); return hook; } const INNER_ITERATIONS = 1500; /** * @param {import('tinybench').Bench} bench */ export default function register(bench) { const baseline = makeHook(5, []); bench.add("interceptors-sync: 5 taps, no interceptors", () => { for (let i = 0; i < INNER_ITERATIONS; i++) baseline.call(1); }); const call = makeHook(5, [{ call: () => {} }]); bench.add("interceptors-sync: 5 taps, call interceptor", () => { for (let i = 0; i < INNER_ITERATIONS; i++) call.call(1); }); const tap = makeHook(5, [{ tap: () => {} }]); bench.add("interceptors-sync: 5 taps, tap interceptor", () => { for (let i = 0; i < INNER_ITERATIONS; i++) tap.call(1); }); const combined = makeHook(5, [{ call: () => {}, tap: () => {} }]); bench.add("interceptors-sync: 5 taps, call + tap interceptor", () => { for (let i = 0; i < INNER_ITERATIONS; i++) combined.call(1); }); const many = makeHook(5, [ { call: () => {} }, { tap: () => {} }, { call: () => {} } ]); bench.add("interceptors-sync: 5 taps, 3 interceptors", () => { for (let i = 0; i < INNER_ITERATIONS; i++) many.call(1); }); // Register interceptor runs at tap time only. bench.add( "interceptors-sync: register interceptor + 10 tap registrations", () => { const hook = new SyncHook(["a"]); hook.intercept({ register: (t) => t }); for (let i = 0; i < 10; i++) hook.tap(`p-${i}`, () => {}); } ); } webpack-tapable-8ca4f9d/benchmark/cases/multi-hook/000077500000000000000000000000001517167660300223745ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/cases/multi-hook/index.bench.mjs000066400000000000000000000022271517167660300252770ustar00rootroot00000000000000/* * multi-hook * * MultiHook fans operations (tap / intercept / isUsed) across a small set * of underlying hooks. Covers the hot fan-out loop and the boolean-short * `isUsed` check. */ import tapable from "../../../lib/index.js"; const { MultiHook, SyncHook } = tapable; function makeMulti() { return new MultiHook([ new SyncHook(["x"]), new SyncHook(["x"]), new SyncHook(["x"]) ]); } const TAP_COUNT = 10; const IS_USED_ITERATIONS = 2000; /** * @param {import('tinybench').Bench} bench */ export default function register(bench) { bench.add(`multi-hook: tap x ${TAP_COUNT} across 3 hooks`, () => { const multi = makeMulti(); for (let i = 0; i < TAP_COUNT; i++) { multi.tap(`p-${i}`, () => {}); } }); const usedMulti = makeMulti(); for (let i = 0; i < 5; i++) { usedMulti.tap(`p-${i}`, () => {}); } bench.add("multi-hook: isUsed (3 hooks, 5 taps)", () => { for (let i = 0; i < IS_USED_ITERATIONS; i++) { usedMulti.isUsed(); } }); bench.add("multi-hook: intercept across 3 hooks", () => { const multi = makeMulti(); for (let i = 0; i < 5; i++) multi.tap(`p-${i}`, () => {}); multi.intercept({ call: () => {} }); }); } webpack-tapable-8ca4f9d/benchmark/cases/sync-bail-hook/000077500000000000000000000000001517167660300231235ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/cases/sync-bail-hook/index.bench.mjs000066400000000000000000000023331517167660300260240ustar00rootroot00000000000000/* * sync-bail-hook * * Measures SyncBailHook.call() with taps that either bail early (returning * a value) or pass through (returning undefined). Bail position changes * how many taps run per call, so it directly exercises the conditional * structure of the generated code. */ import tapable from "../../../lib/index.js"; const { SyncBailHook } = tapable; function makeHook(numTaps, bailAt) { const hook = new SyncBailHook(["value"]); for (let i = 0; i < numTaps; i++) { const idx = i; hook.tap(`plugin-${idx}`, (v) => (idx === bailAt ? v : undefined)); } hook.call(1); return hook; } const INNER_ITERATIONS = 1500; /** * @param {import('tinybench').Bench} bench */ export default function register(bench) { // Full chain walk - no tap bails. for (const n of [1, 5, 10, 20]) { const hook = makeHook(n, -1); bench.add(`sync-bail-hook: ${n} taps, no bail`, () => { for (let i = 0; i < INNER_ITERATIONS; i++) { hook.call(1); } }); } // Bail at start / middle / end of a 10-tap chain. for (const pos of [0, 4, 9]) { const hook = makeHook(10, pos); bench.add(`sync-bail-hook: 10 taps, bail at index ${pos}`, () => { for (let i = 0; i < INNER_ITERATIONS; i++) { hook.call(1); } }); } } webpack-tapable-8ca4f9d/benchmark/cases/sync-hook/000077500000000000000000000000001517167660300222165ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/cases/sync-hook/index.bench.mjs000066400000000000000000000025061517167660300251210ustar00rootroot00000000000000/* * sync-hook * * Steady-state `.call()` cost for SyncHook at varying tap counts. Each * bench body loops over the hook many times so the measurement captures * the generated call-path rather than the tinybench harness overhead. */ import tapable from "../../../lib/index.js"; const { SyncHook } = tapable; function makeHook(numTaps, argNames = ["a", "b"]) { const hook = new SyncHook(argNames); for (let i = 0; i < numTaps; i++) { hook.tap(`plugin-${i}`, () => {}); } // Force compilation so the benchmark measures the steady-state call path. hook.call(...argNames.map((_, i) => i)); return hook; } const INNER_ITERATIONS = 2000; /** * @param {import('tinybench').Bench} bench */ export default function register(bench) { for (const n of [0, 1, 5, 10, 20, 50]) { const hook = makeHook(n); bench.add(`sync-hook: call with ${n} taps`, () => { for (let i = 0; i < INNER_ITERATIONS; i++) { hook.call(1, 2); } }); } // Argument-count variations with a fixed 5-tap chain. for (const argCount of [0, 1, 3, 5]) { const args = Array.from({ length: argCount }, (_, i) => `a${i}`); const hook = makeHook(5, args); const callArgs = args.map((_, i) => i); bench.add(`sync-hook: call 5 taps / ${argCount} args`, () => { for (let i = 0; i < INNER_ITERATIONS; i++) { hook.call(...callArgs); } }); } } webpack-tapable-8ca4f9d/benchmark/cases/sync-loop-hook/000077500000000000000000000000001517167660300231655ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/cases/sync-loop-hook/index.bench.mjs000066400000000000000000000023051517167660300260650ustar00rootroot00000000000000/* * sync-loop-hook * * SyncLoopHook re-runs the tap chain while any tap returns a non-undefined * value. The case covers: * - single-pass (every tap returns undefined on the first run) * - multi-pass (each tap asks for N reloops before settling) */ import tapable from "../../../lib/index.js"; const { SyncLoopHook } = tapable; function makeHook(numTaps, reloops) { const hook = new SyncLoopHook(["state"]); for (let i = 0; i < numTaps; i++) { const idx = i; hook.tap(`plugin-${idx}`, (state) => { if (state.counts[idx] < reloops) { state.counts[idx]++; return true; } return undefined; }); } return hook; } function resetState(state) { for (let i = 0; i < state.counts.length; i++) state.counts[i] = 0; } const INNER_ITERATIONS = 500; /** * @param {import('tinybench').Bench} bench */ export default function register(bench) { for (const [n, reloops] of [ [3, 0], [10, 0], [3, 2] ]) { const hook = makeHook(n, reloops); const state = { counts: Array.from({ length: n }, () => 0) }; bench.add(`sync-loop-hook: ${n} taps, ${reloops} reloops`, () => { for (let i = 0; i < INNER_ITERATIONS; i++) { resetState(state); hook.call(state); } }); } } webpack-tapable-8ca4f9d/benchmark/cases/sync-waterfall-hook/000077500000000000000000000000001517167660300241755ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/cases/sync-waterfall-hook/index.bench.mjs000066400000000000000000000027501517167660300271010ustar00rootroot00000000000000/* * sync-waterfall-hook * * SyncWaterfallHook threads a value through each tap. Covers three shapes * that hit different branches of the generated code: * - every tap returns a new value (value is overwritten on each step) * - every tap returns undefined (initial value threaded through) * - mixed returns */ import tapable from "../../../lib/index.js"; const { SyncWaterfallHook } = tapable; function makeHook(numTaps, returning) { const hook = new SyncWaterfallHook(["value"]); for (let i = 0; i < numTaps; i++) { hook.tap(`plugin-${i}`, returning ? (v) => v + 1 : () => undefined); } hook.call(0); return hook; } const INNER_ITERATIONS = 1500; /** * @param {import('tinybench').Bench} bench */ export default function register(bench) { for (const n of [1, 5, 20, 50]) { const hook = makeHook(n, true); bench.add(`sync-waterfall-hook: ${n} taps, all return`, () => { for (let i = 0; i < INNER_ITERATIONS; i++) { hook.call(0); } }); } for (const n of [5, 20]) { const hook = makeHook(n, false); bench.add(`sync-waterfall-hook: ${n} taps, all undefined`, () => { for (let i = 0; i < INNER_ITERATIONS; i++) { hook.call(0); } }); } const mixed = new SyncWaterfallHook(["value"]); for (let i = 0; i < 10; i++) { mixed.tap(`plugin-${i}`, i % 2 === 0 ? (v) => v + 1 : () => undefined); } mixed.call(0); bench.add("sync-waterfall-hook: 10 taps, mixed return", () => { for (let i = 0; i < INNER_ITERATIONS; i++) { mixed.call(0); } }); } webpack-tapable-8ca4f9d/benchmark/cases/tap-registration/000077500000000000000000000000001517167660300236005ustar00rootroot00000000000000webpack-tapable-8ca4f9d/benchmark/cases/tap-registration/index.bench.mjs000066400000000000000000000037551517167660300265120ustar00rootroot00000000000000/* * tap-registration * * Measures Hook#tap / tapAsync / tapPromise at the registration step, * with the four kinds of options shapes that hit different code paths * in Hook.js (_tap, _insert): * - string options (most common - plugin name only) * - object options (same thing but wrapped) * - stages (numeric ordering) * - `before` constraint (forces the shift loop to scan) */ import tapable from "../../../lib/index.js"; const { SyncHook, AsyncSeriesHook } = tapable; const TAP_COUNT = 10; /** * @param {import('tinybench').Bench} bench */ export default function register(bench) { bench.add( `tap-registration: SyncHook tap x ${TAP_COUNT}, string options`, () => { const hook = new SyncHook(["a"]); for (let i = 0; i < TAP_COUNT; i++) { hook.tap(`p-${i}`, () => {}); } } ); bench.add( `tap-registration: SyncHook tap x ${TAP_COUNT}, object options`, () => { const hook = new SyncHook(["a"]); for (let i = 0; i < TAP_COUNT; i++) { hook.tap({ name: `p-${i}` }, () => {}); } } ); bench.add( `tap-registration: SyncHook tap x ${TAP_COUNT}, with stages`, () => { const hook = new SyncHook(["a"]); for (let i = 0; i < TAP_COUNT; i++) { hook.tap({ name: `p-${i}`, stage: i % 3 }, () => {}); } } ); bench.add( `tap-registration: SyncHook tap x ${TAP_COUNT}, alternating before`, () => { const hook = new SyncHook(["a"]); hook.tap("first", () => {}); for (let i = 0; i < TAP_COUNT - 1; i++) { hook.tap({ name: `p-${i}`, before: "first" }, () => {}); } } ); bench.add(`tap-registration: AsyncSeriesHook tapAsync x ${TAP_COUNT}`, () => { const hook = new AsyncSeriesHook(["a"]); for (let i = 0; i < TAP_COUNT; i++) { hook.tapAsync(`p-${i}`, (_a, cb) => cb()); } }); bench.add( `tap-registration: AsyncSeriesHook tapPromise x ${TAP_COUNT}`, () => { const hook = new AsyncSeriesHook(["a"]); for (let i = 0; i < TAP_COUNT; i++) { hook.tapPromise(`p-${i}`, () => Promise.resolve()); } } ); } webpack-tapable-8ca4f9d/benchmark/run.mjs000066400000000000000000000072251517167660300205330ustar00rootroot00000000000000#!/usr/bin/env node /* * Benchmark entry point for tapable. * * Discovers every directory under ./cases/ that contains an `index.bench.mjs` * file, calls its default-exported `register(bench, ctx)` function to * populate tinybench tasks, then runs them all. * * The bench is wrapped with a local `withCodSpeed()` bridge (ported from * enhanced-resolve / webpack) so the same entry point works for: * - local development (`npm run benchmark`) -> wall-clock measurements * printed to the terminal; the wrapper detects that CodSpeed is not * active and returns the bench untouched * - CI under CodSpeedHQ/action -> the wrapper switches to instrumentation * mode automatically and results are uploaded to codspeed.io * * See ./README.md for the layout of individual cases. */ import fs from "fs/promises"; import path from "path"; import { fileURLToPath, pathToFileURL } from "url"; import { Bench, hrtimeNow } from "tinybench"; import { withCodSpeed } from "./with-codspeed.mjs"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const casesPath = path.join(__dirname, "cases"); /** * Filter expression from CLI or env (e.g. `npm run benchmark -- sync`). * A case is included if its directory name contains this substring. Empty * means "include everything". */ const filter = process.env.BENCH_FILTER || process.argv[2] || ""; const bench = withCodSpeed( new Bench({ name: "tapable", now: hrtimeNow, throws: true, warmup: true, warmupIterations: 5, // Kept deliberately low: each task's body already loops over many // hook calls, and we want wall-clock runs to finish in a few // seconds. CodSpeed's simulation mode ignores this and instruments // exactly one iteration per task. iterations: 20 }) ); const caseDirs = (await fs.readdir(casesPath, { withFileTypes: true })) .filter((entry) => entry.isDirectory()) .map((entry) => entry.name) .filter((name) => !filter || name.includes(filter)) .sort(); if (caseDirs.length === 0) { console.error( filter ? `No benchmark cases matched filter "${filter}"` : "No benchmark cases found" ); process.exit(1); } for (const caseName of caseDirs) { const benchFile = path.join(casesPath, caseName, "index.bench.mjs"); try { await fs.access(benchFile); } catch { console.warn(`[skip] ${caseName}: no index.bench.mjs`); continue; } const mod = await import(pathToFileURL(benchFile).href); if (typeof mod.default !== "function") { throw new Error( `${caseName}/index.bench.mjs must export a default function` ); } await mod.default(bench, { caseName, caseDir: path.join(casesPath, caseName) }); console.log(`Registered: ${caseName}`); } console.log(`\nRunning ${bench.tasks.length} tasks...\n`); await bench.run(); // Pretty-print results. Kept simple on purpose - CodSpeed uploads its own // data in CI; this table is for humans running locally. const rows = bench.tasks.map((task) => { const r = task.result; if (!r) return { name: task.name, status: "no result" }; // tinybench v6 result shape: latency / throughput objects. const lat = r.latency; const tp = r.throughput; return { name: task.name, "ops/s": tp?.mean?.toFixed(2) ?? "n/a", "mean (ms)": lat?.mean?.toFixed(4) ?? "n/a", "p99 (ms)": lat?.p99?.toFixed(4) ?? "n/a", "rme (%)": lat?.rme?.toFixed(2) ?? "n/a", samples: lat?.samplesCount ?? 0 }; }); console.log(); console.table(rows); // Exit non-zero if any task threw, so CI picks it up. const failed = bench.tasks.filter((t) => t.result?.error); if (failed.length > 0) { console.error(`\n${failed.length} task(s) errored:`); for (const t of failed) { console.error(` - ${t.name}: ${t.result?.error?.message}`); } process.exit(1); } webpack-tapable-8ca4f9d/benchmark/with-codspeed.mjs000066400000000000000000000113141517167660300224600ustar00rootroot00000000000000/* * CodSpeed <-> tinybench bridge for tapable benchmarks. * * Ported from the equivalent wrapper in enhanced-resolve (which in turn * was ported from webpack's test/BenchmarkTestCases.benchmark.mjs). * * Why not @codspeed/tinybench-plugin? * That package accesses tinybench Task internals (task.fn, task.fnOpts) * that were made private in tinybench v6, causing a TypeError in * simulation mode. webpack and enhanced-resolve hit the same issue and * use @codspeed/core directly - we follow their lead. * * Modes (via getCodspeedRunnerMode() from @codspeed/core): * "disabled" - returns the bench untouched (local runs) * "simulation" - overrides bench.run/runSync for CodSpeed instrumentation * "walltime" - left untouched; tinybench's built-in timing is used */ import path from "path"; import { fileURLToPath } from "url"; import { InstrumentHooks, getCodspeedRunnerMode, setupCore, teardownCore } from "@codspeed/core"; /** @typedef {import("tinybench").Bench} Bench */ /** @typedef {import("tinybench").Task} Task */ /** @typedef {() => unknown | Promise} Fn */ const repoRoot = path.resolve( path.dirname(fileURLToPath(import.meta.url)), ".." ); /** * Capture the file that invoked bench.add() so we can build a stable URI * for CodSpeed to identify the benchmark. * @returns {string} calling file path relative to the repo root */ function getCallingFile() { const dummy = {}; const prev = Error.prepareStackTrace; const prevLimit = Error.stackTraceLimit; Error.stackTraceLimit = 10; Error.prepareStackTrace = (_err, trace) => trace; Error.captureStackTrace(dummy, getCallingFile); const trace = /** @type {NodeJS.CallSite[]} */ ( /** @type {{ stack: unknown }} */ (dummy).stack ); Error.prepareStackTrace = prev; Error.stackTraceLimit = prevLimit; let file = /** @type {string} */ (trace[1].getFileName() || ""); if (file.startsWith("file://")) file = fileURLToPath(file); if (!file) return ""; return path.relative(repoRoot, file); } /** * @typedef {{ uri: string, fn: Fn, opts: object | undefined }} TaskMeta * @type {WeakMap>} */ const metaMap = new WeakMap(); /** * @param {Bench} bench * @returns {Map} */ function getOrCreateMeta(bench) { let m = metaMap.get(bench); if (!m) { m = new Map(); metaMap.set(bench, m); } return m; } /** * Wrap a tinybench Bench so that CodSpeed simulation mode instruments each * task. In "disabled" and "walltime" modes the bench is returned as-is. * * @param {Bench} bench * @returns {Bench} */ export function withCodSpeed(bench) { const mode = getCodspeedRunnerMode(); if (mode === "disabled" || mode === "walltime") return bench; // --- simulation mode --- const meta = getOrCreateMeta(bench); const rawAdd = bench.add.bind(bench); bench.add = (name, fn, opts) => { const callingFile = getCallingFile(); const uri = `${callingFile}::${name}`; meta.set(name, { uri, fn, opts }); return rawAdd(name, fn, opts); }; const setup = () => { setupCore(); console.log("[CodSpeed] running in simulation mode"); }; const teardown = () => { teardownCore(); console.log(`[CodSpeed] Done running ${bench.tasks.length} benches.`); return bench.tasks; }; /** * @param {Fn} fn * @param {boolean} isAsync * @returns {Fn} */ const wrapFrame = (fn, isAsync) => { if (isAsync) { // eslint-disable-next-line camelcase return async function __codspeed_root_frame__() { await fn(); }; } // eslint-disable-next-line camelcase return function __codspeed_root_frame__() { fn(); }; }; bench.run = async () => { setup(); for (const task of bench.tasks) { const m = /** @type {TaskMeta} */ (meta.get(task.name)); // Warm-up: run the body a few times to stabilise caches / JIT. for (let i = 0; i < bench.iterations - 1; i++) { await m.fn(); } // Instrumented run. global.gc?.(); InstrumentHooks.startBenchmark(); await wrapFrame(m.fn, true)(); InstrumentHooks.stopBenchmark(); InstrumentHooks.setExecutedBenchmark(process.pid, m.uri); console.log( `[CodSpeed] ${ InstrumentHooks.isInstrumented() ? "Measured" : "Checked" } ${m.uri}` ); } return teardown(); }; bench.runSync = () => { setup(); for (const task of bench.tasks) { const m = /** @type {TaskMeta} */ (meta.get(task.name)); for (let i = 0; i < bench.iterations - 1; i++) { m.fn(); } global.gc?.(); InstrumentHooks.startBenchmark(); wrapFrame(m.fn, false)(); InstrumentHooks.stopBenchmark(); InstrumentHooks.setExecutedBenchmark(process.pid, m.uri); console.log( `[CodSpeed] ${ InstrumentHooks.isInstrumented() ? "Measured" : "Checked" } ${m.uri}` ); } return teardown(); }; return bench; } webpack-tapable-8ca4f9d/eslint.config.mjs000066400000000000000000000012261517167660300205320ustar00rootroot00000000000000import { defineConfig } from "eslint/config"; import config from "eslint-config-webpack"; export default defineConfig([ { ignores: [".changeset/"] }, { extends: [config], rules: { "no-new-func": "off" } }, { files: ["test/**/*"], languageOptions: { parserOptions: { ecmaVersion: 2018 } } }, { files: ["benchmark/**/*"], languageOptions: { parserOptions: { ecmaVersion: 2022 } }, rules: { "no-console": "off", "import/namespace": "off", "n/hashbang": "off", "n/no-unsupported-features/es-syntax": "off", "n/no-unsupported-features/node-builtins": "off", "n/no-process-exit": "off" } } ]); webpack-tapable-8ca4f9d/lib/000077500000000000000000000000001517167660300160225ustar00rootroot00000000000000webpack-tapable-8ca4f9d/lib/AsyncParallelBailHook.js000066400000000000000000000044651517167660300225340ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const Hook = require("./Hook"); const HookCodeFactory = require("./HookCodeFactory"); class AsyncParallelBailHookCodeFactory extends HookCodeFactory { content({ onError, onResult, onDone }) { let code = ""; code += `var _results = new Array(${this.options.taps.length});\n`; code += "var _checkDone = function() {\n"; code += "for(var i = 0; i < _results.length; i++) {\n"; code += "var item = _results[i];\n"; code += "if(item === undefined) return false;\n"; code += "if(item.result !== undefined) {\n"; code += onResult("item.result"); code += "return true;\n"; code += "}\n"; code += "if(item.error) {\n"; code += onError("item.error"); code += "return true;\n"; code += "}\n"; code += "}\n"; code += "return false;\n"; code += "}\n"; code += this.callTapsParallel({ onError: (i, err, done, doneBreak) => { let code = ""; code += `if(${i} < _results.length && ((_results.length = ${ i + 1 }), (_results[${i}] = { error: ${err} }), _checkDone())) {\n`; code += doneBreak(true); code += "} else {\n"; code += done(); code += "}\n"; return code; }, onResult: (i, result, done, doneBreak) => { let code = ""; code += `if(${i} < _results.length && (${result} !== undefined && (_results.length = ${ i + 1 }), (_results[${i}] = { result: ${result} }), _checkDone())) {\n`; code += doneBreak(true); code += "} else {\n"; code += done(); code += "}\n"; return code; }, onTap: (i, run, done, _doneBreak) => { let code = ""; if (i > 0) { code += `if(${i} >= _results.length) {\n`; code += done(); code += "} else {\n"; } code += run(); if (i > 0) code += "}\n"; return code; }, onDone }); return code; } } const factory = new AsyncParallelBailHookCodeFactory(); function COMPILE(options) { factory.setup(this, options); return factory.create(options); } function AsyncParallelBailHook(args = [], name = undefined) { const hook = new Hook(args, name); hook.constructor = AsyncParallelBailHook; hook.compile = COMPILE; hook._call = undefined; hook.call = undefined; return hook; } AsyncParallelBailHook.prototype = null; module.exports = AsyncParallelBailHook; webpack-tapable-8ca4f9d/lib/AsyncParallelHook.js000066400000000000000000000015441517167660300217370ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const Hook = require("./Hook"); const HookCodeFactory = require("./HookCodeFactory"); class AsyncParallelHookCodeFactory extends HookCodeFactory { content({ onError, onDone }) { return this.callTapsParallel({ onError: (i, err, done, doneBreak) => onError(err) + doneBreak(true), onDone }); } } const factory = new AsyncParallelHookCodeFactory(); function COMPILE(options) { factory.setup(this, options); return factory.create(options); } function AsyncParallelHook(args = [], name = undefined) { const hook = new Hook(args, name); hook.constructor = AsyncParallelHook; hook.compile = COMPILE; hook._call = undefined; hook.call = undefined; return hook; } AsyncParallelHook.prototype = null; module.exports = AsyncParallelHook; webpack-tapable-8ca4f9d/lib/AsyncSeriesBailHook.js000066400000000000000000000020301517167660300222140ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const Hook = require("./Hook"); const HookCodeFactory = require("./HookCodeFactory"); class AsyncSeriesBailHookCodeFactory extends HookCodeFactory { content({ onError, onResult, resultReturns, onDone }) { return this.callTapsSeries({ onError: (i, err, next, doneBreak) => onError(err) + doneBreak(true), onResult: (i, result, next) => `if(${result} !== undefined) {\n${onResult( result )}\n} else {\n${next()}}\n`, resultReturns, onDone }); } } const factory = new AsyncSeriesBailHookCodeFactory(); function COMPILE(options) { factory.setup(this, options); return factory.create(options); } function AsyncSeriesBailHook(args = [], name = undefined) { const hook = new Hook(args, name); hook.constructor = AsyncSeriesBailHook; hook.compile = COMPILE; hook._call = undefined; hook.call = undefined; return hook; } AsyncSeriesBailHook.prototype = null; module.exports = AsyncSeriesBailHook; webpack-tapable-8ca4f9d/lib/AsyncSeriesHook.js000066400000000000000000000015261517167660300214350ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const Hook = require("./Hook"); const HookCodeFactory = require("./HookCodeFactory"); class AsyncSeriesHookCodeFactory extends HookCodeFactory { content({ onError, onDone }) { return this.callTapsSeries({ onError: (i, err, next, doneBreak) => onError(err) + doneBreak(true), onDone }); } } const factory = new AsyncSeriesHookCodeFactory(); function COMPILE(options) { factory.setup(this, options); return factory.create(options); } function AsyncSeriesHook(args = [], name = undefined) { const hook = new Hook(args, name); hook.constructor = AsyncSeriesHook; hook.compile = COMPILE; hook._call = undefined; hook.call = undefined; return hook; } AsyncSeriesHook.prototype = null; module.exports = AsyncSeriesHook; webpack-tapable-8ca4f9d/lib/AsyncSeriesLoopHook.js000066400000000000000000000015571517167660300222730ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const Hook = require("./Hook"); const HookCodeFactory = require("./HookCodeFactory"); class AsyncSeriesLoopHookCodeFactory extends HookCodeFactory { content({ onError, onDone }) { return this.callTapsLooping({ onError: (i, err, next, doneBreak) => onError(err) + doneBreak(true), onDone }); } } const factory = new AsyncSeriesLoopHookCodeFactory(); function COMPILE(options) { factory.setup(this, options); return factory.create(options); } function AsyncSeriesLoopHook(args = [], name = undefined) { const hook = new Hook(args, name); hook.constructor = AsyncSeriesLoopHook; hook.compile = COMPILE; hook._call = undefined; hook.call = undefined; return hook; } AsyncSeriesLoopHook.prototype = null; module.exports = AsyncSeriesLoopHook; webpack-tapable-8ca4f9d/lib/AsyncSeriesWaterfallHook.js000066400000000000000000000023521517167660300232750ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const Hook = require("./Hook"); const HookCodeFactory = require("./HookCodeFactory"); class AsyncSeriesWaterfallHookCodeFactory extends HookCodeFactory { content({ onError, onResult, _onDone }) { return this.callTapsSeries({ onError: (i, err, next, doneBreak) => onError(err) + doneBreak(true), onResult: (i, result, next) => { let code = ""; code += `if(${result} !== undefined) {\n`; code += `${this._args[0]} = ${result};\n`; code += "}\n"; code += next(); return code; }, onDone: () => onResult(this._args[0]) }); } } const factory = new AsyncSeriesWaterfallHookCodeFactory(); function COMPILE(options) { factory.setup(this, options); return factory.create(options); } function AsyncSeriesWaterfallHook(args = [], name = undefined) { if (args.length < 1) { throw new Error("Waterfall hooks must have at least one argument"); } const hook = new Hook(args, name); hook.constructor = AsyncSeriesWaterfallHook; hook.compile = COMPILE; hook._call = undefined; hook.call = undefined; return hook; } AsyncSeriesWaterfallHook.prototype = null; module.exports = AsyncSeriesWaterfallHook; webpack-tapable-8ca4f9d/lib/Hook.js000066400000000000000000000135361517167660300172700ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const util = require("util"); const deprecateContext = util.deprecate( () => {}, "Hook.context is deprecated and will be removed" ); function CALL_DELEGATE(...args) { this.call = this._createCall("sync"); return this.call(...args); } function CALL_ASYNC_DELEGATE(...args) { this.callAsync = this._createCall("async"); return this.callAsync(...args); } function PROMISE_DELEGATE(...args) { this.promise = this._createCall("promise"); return this.promise(...args); } class Hook { constructor(args = [], name = undefined) { this._args = args; this.name = name; this.taps = []; this.interceptors = []; this._call = CALL_DELEGATE; this.call = CALL_DELEGATE; this._callAsync = CALL_ASYNC_DELEGATE; this.callAsync = CALL_ASYNC_DELEGATE; this._promise = PROMISE_DELEGATE; this.promise = PROMISE_DELEGATE; this._x = undefined; // eslint-disable-next-line no-self-assign this.compile = this.compile; // eslint-disable-next-line no-self-assign this.tap = this.tap; // eslint-disable-next-line no-self-assign this.tapAsync = this.tapAsync; // eslint-disable-next-line no-self-assign this.tapPromise = this.tapPromise; } compile(_options) { throw new Error("Abstract: should be overridden"); } _createCall(type) { return this.compile({ taps: this.taps, interceptors: this.interceptors, args: this._args, type }); } _tap(type, options, fn) { if (typeof options === "string") { // Fast path: a string options ("name") is by far the most common // case. Build the final descriptor in a single allocation instead // of creating `{ name }` and then `Object.assign`ing it. const name = options.trim(); if (name === "") { throw new Error("Missing name for tap"); } options = { type, fn, name }; } else { if (typeof options !== "object" || options === null) { throw new Error("Invalid tap options"); } let { name } = options; if (typeof name === "string") { name = name.trim(); } if (typeof name !== "string" || name === "") { throw new Error("Missing name for tap"); } if (typeof options.context !== "undefined") { deprecateContext(); } // Fast path: only `name` is set. Build the descriptor as a literal // so `_insert` and downstream consumers see the same hidden class // as the string-options path, avoiding a polymorphic call site. // Scan with `for...in` (cheaper than allocating `Object.keys`) // to verify no other user-provided properties exist - e.g. // webpack's `additionalAssets` - otherwise they'd be dropped. let onlyName = true; for (const key in options) { if (key !== "name") { onlyName = false; break; } } if (onlyName) { options = { type, fn, name }; } else { options.name = name; // Preserve previous precedence: user-provided keys win over the internal `type`/`fn`. options = Object.assign({ type, fn }, options); } } options = this._runRegisterInterceptors(options); this._insert(options); } tap(options, fn) { this._tap("sync", options, fn); } tapAsync(options, fn) { this._tap("async", options, fn); } tapPromise(options, fn) { this._tap("promise", options, fn); } _runRegisterInterceptors(options) { const { interceptors } = this; const { length } = interceptors; // Common case: no interceptors. if (length === 0) return options; for (let i = 0; i < length; i++) { const interceptor = interceptors[i]; if (interceptor.register) { const newOptions = interceptor.register(options); if (newOptions !== undefined) { options = newOptions; } } } return options; } withOptions(options) { const mergeOptions = (opt) => Object.assign({}, options, typeof opt === "string" ? { name: opt } : opt); return { name: this.name, tap: (opt, fn) => this.tap(mergeOptions(opt), fn), tapAsync: (opt, fn) => this.tapAsync(mergeOptions(opt), fn), tapPromise: (opt, fn) => this.tapPromise(mergeOptions(opt), fn), intercept: (interceptor) => this.intercept(interceptor), isUsed: () => this.isUsed(), withOptions: (opt) => this.withOptions(mergeOptions(opt)) }; } isUsed() { return this.taps.length > 0 || this.interceptors.length > 0; } intercept(interceptor) { this._resetCompilation(); this.interceptors.push(Object.assign({}, interceptor)); if (interceptor.register) { for (let i = 0; i < this.taps.length; i++) { this.taps[i] = interceptor.register(this.taps[i]); } } } _resetCompilation() { this.call = this._call; this.callAsync = this._callAsync; this.promise = this._promise; } _insert(item) { this._resetCompilation(); const { taps } = this; const stage = typeof item.stage === "number" ? item.stage : 0; // Fast path: the overwhelmingly common `hook.tap("name", fn)` case // has no `before` and default stage 0. If the list is empty or the // last tap's stage is <= the new item's stage the item belongs at // the end - append in O(1), skipping the Set allocation and the // shift loop. if (!(typeof item.before === "string" || Array.isArray(item.before))) { const n = taps.length; if (n === 0 || (taps[n - 1].stage || 0) <= stage) { taps[n] = item; return; } } let before; if (typeof item.before === "string") { before = new Set([item.before]); } else if (Array.isArray(item.before)) { before = new Set(item.before); } let i = taps.length; while (i > 0) { i--; const tap = taps[i]; taps[i + 1] = tap; const xStage = tap.stage || 0; if (before) { if (before.has(tap.name)) { before.delete(tap.name); continue; } if (before.size > 0) { continue; } } if (xStage > stage) { continue; } i++; break; } taps[i] = item; } } Object.setPrototypeOf(Hook.prototype, null); module.exports = Hook; webpack-tapable-8ca4f9d/lib/HookCodeFactory.js000066400000000000000000000315141517167660300214070ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; class HookCodeFactory { constructor(config) { this.config = config; this.options = undefined; this._args = undefined; } create(options) { this.init(options); let fn; switch (options.type) { case "sync": fn = new Function( this.args(), `"use strict";\n${this.header()}${this.contentWithInterceptors({ onError: (err) => `throw ${err};\n`, onResult: (result) => `return ${result};\n`, resultReturns: true, onDone: () => "", rethrowIfPossible: true })}` ); break; case "async": fn = new Function( this.args({ after: "_callback" }), `"use strict";\n${this.header()}${this.contentWithInterceptors({ onError: (err) => `_callback(${err});\n`, onResult: (result) => `_callback(null, ${result});\n`, onDone: () => "_callback();\n" })}` ); break; case "promise": { let errorHelperUsed = false; const content = this.contentWithInterceptors({ onError: (err) => { errorHelperUsed = true; return `_error(${err});\n`; }, onResult: (result) => `_resolve(${result});\n`, onDone: () => "_resolve();\n" }); let code = ""; code += '"use strict";\n'; code += this.header(); code += "return new Promise((function(_resolve, _reject) {\n"; if (errorHelperUsed) { code += "var _sync = true;\n"; code += "function _error(_err) {\n"; code += "if(_sync)\n"; code += "_resolve(Promise.resolve().then((function() { throw _err; })));\n"; code += "else\n"; code += "_reject(_err);\n"; code += "};\n"; } code += content; if (errorHelperUsed) { code += "_sync = false;\n"; } code += "}));\n"; fn = new Function(this.args(), code); break; } } this.deinit(); return fn; } setup(instance, options) { const { taps } = options; const { length } = taps; const fns = Array.from({ length }); for (let i = 0; i < length; i++) { fns[i] = taps[i].fn; } instance._x = fns; } /** * @param {{ type: "sync" | "promise" | "async", taps: Array, interceptors: Array }} options */ init(options) { this.options = options; // `_args` is only read (length / join / [0]) - never mutated - so we // can share the caller's array directly instead of paying for a copy // on every compile. this._args = options.args; this._joinedArgs = undefined; } deinit() { this.options = undefined; this._args = undefined; this._joinedArgs = undefined; } contentWithInterceptors(options) { if (this.options.interceptors.length > 0) { const { onError, onResult, onDone } = options; let code = ""; for (let i = 0; i < this.options.interceptors.length; i++) { const interceptor = this.options.interceptors[i]; if (interceptor.call) { code += `${this.getInterceptor(i)}.call(${this.args({ before: interceptor.context ? "_context" : undefined })});\n`; } } code += this.content( Object.assign(options, { onError: onError && ((err) => { let code = ""; for (let i = 0; i < this.options.interceptors.length; i++) { const interceptor = this.options.interceptors[i]; if (interceptor.error) { code += `${this.getInterceptor(i)}.error(${err});\n`; } } code += onError(err); return code; }), onResult: onResult && ((result) => { let code = ""; for (let i = 0; i < this.options.interceptors.length; i++) { const interceptor = this.options.interceptors[i]; if (interceptor.result) { code += `${this.getInterceptor(i)}.result(${result});\n`; } } code += onResult(result); return code; }), onDone: onDone && (() => { let code = ""; for (let i = 0; i < this.options.interceptors.length; i++) { const interceptor = this.options.interceptors[i]; if (interceptor.done) { code += `${this.getInterceptor(i)}.done();\n`; } } code += onDone(); return code; }) }) ); return code; } return this.content(options); } header() { let code = ""; code += this.needContext() ? "var _context = {};\n" : "var _context;\n"; code += "var _x = this._x;\n"; if (this.options.interceptors.length > 0) { code += "var _taps = this.taps;\n"; code += "var _interceptors = this.interceptors;\n"; } return code; } needContext() { const { taps } = this.options; for (let i = 0; i < taps.length; i++) { if (taps[i].context) return true; } return false; } callTap(tapIndex, { onError, onResult, onDone, rethrowIfPossible }) { let code = ""; let hasTapCached = false; for (let i = 0; i < this.options.interceptors.length; i++) { const interceptor = this.options.interceptors[i]; if (interceptor.tap) { if (!hasTapCached) { code += `var _tap${tapIndex} = ${this.getTap(tapIndex)};\n`; hasTapCached = true; } code += `${this.getInterceptor(i)}.tap(${ interceptor.context ? "_context, " : "" }_tap${tapIndex});\n`; } } code += `var _fn${tapIndex} = ${this.getTapFn(tapIndex)};\n`; const tap = this.options.taps[tapIndex]; switch (tap.type) { case "sync": if (!rethrowIfPossible) { code += `var _hasError${tapIndex} = false;\n`; code += "try {\n"; } if (onResult) { code += `var _result${tapIndex} = _fn${tapIndex}(${this.args({ before: tap.context ? "_context" : undefined })});\n`; } else { code += `_fn${tapIndex}(${this.args({ before: tap.context ? "_context" : undefined })});\n`; } if (!rethrowIfPossible) { code += "} catch(_err) {\n"; code += `_hasError${tapIndex} = true;\n`; code += onError("_err"); code += "}\n"; code += `if(!_hasError${tapIndex}) {\n`; } if (onResult) { code += onResult(`_result${tapIndex}`); } if (onDone) { code += onDone(); } if (!rethrowIfPossible) { code += "}\n"; } break; case "async": { let cbCode = ""; cbCode += onResult ? `(function(_err${tapIndex}, _result${tapIndex}) {\n` : `(function(_err${tapIndex}) {\n`; cbCode += `if(_err${tapIndex}) {\n`; cbCode += onError(`_err${tapIndex}`); cbCode += "} else {\n"; if (onResult) { cbCode += onResult(`_result${tapIndex}`); } if (onDone) { cbCode += onDone(); } cbCode += "}\n"; cbCode += "})"; code += `_fn${tapIndex}(${this.args({ before: tap.context ? "_context" : undefined, after: cbCode })});\n`; break; } case "promise": code += `var _hasResult${tapIndex} = false;\n`; code += `var _promise${tapIndex} = _fn${tapIndex}(${this.args({ before: tap.context ? "_context" : undefined })});\n`; code += `if (!_promise${tapIndex} || !_promise${tapIndex}.then)\n`; code += ` throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise${tapIndex} + ')');\n`; code += `_promise${tapIndex}.then((function(_result${tapIndex}) {\n`; code += `_hasResult${tapIndex} = true;\n`; if (onResult) { code += onResult(`_result${tapIndex}`); } if (onDone) { code += onDone(); } code += `}), function(_err${tapIndex}) {\n`; code += `if(_hasResult${tapIndex}) throw _err${tapIndex};\n`; code += onError( `!_err${tapIndex} ? new Error('Tap function (tapPromise) rejects "' + _err${tapIndex} + '" value') : _err${tapIndex}` ); code += "});\n"; break; } return code; } callTapsSeries({ onError, onResult, resultReturns, onDone, doneReturns, rethrowIfPossible }) { const { taps } = this.options; const tapsLength = taps.length; if (tapsLength === 0) return onDone(); // Inlined findIndex to avoid the callback allocation. let firstAsync = -1; for (let i = 0; i < tapsLength; i++) { if (taps[i].type !== "sync") { firstAsync = i; break; } } const somethingReturns = resultReturns || doneReturns; // doneBreak doesn't depend on the loop variable - hoist to allocate once. const doneBreak = (skipDone) => { if (skipDone) return ""; return onDone(); }; let code = ""; let current = onDone; let unrollCounter = 0; for (let j = tapsLength - 1; j >= 0; j--) { const i = j; const unroll = current !== onDone && (taps[i].type !== "sync" || unrollCounter++ > 20); if (unroll) { unrollCounter = 0; code += `function _next${i}() {\n`; code += current(); code += "}\n"; current = () => `${somethingReturns ? "return " : ""}_next${i}();\n`; } const done = current; const content = this.callTap(i, { onError: (error) => onError(i, error, done, doneBreak), onResult: onResult && ((result) => onResult(i, result, done, doneBreak)), onDone: !onResult && done, rethrowIfPossible: rethrowIfPossible && (firstAsync < 0 || i < firstAsync) }); current = () => content; } code += current(); return code; } callTapsLooping({ onError, onDone, rethrowIfPossible }) { if (this.options.taps.length === 0) return onDone(); const syncOnly = this.options.taps.every((t) => t.type === "sync"); let code = ""; if (!syncOnly) { code += "var _looper = (function() {\n"; code += "var _loopAsync = false;\n"; } code += "var _loop;\n"; code += "do {\n"; code += "_loop = false;\n"; for (let i = 0; i < this.options.interceptors.length; i++) { const interceptor = this.options.interceptors[i]; if (interceptor.loop) { code += `${this.getInterceptor(i)}.loop(${this.args({ before: interceptor.context ? "_context" : undefined })});\n`; } } code += this.callTapsSeries({ onError, onResult: (i, result, next, doneBreak) => { let code = ""; code += `if(${result} !== undefined) {\n`; code += "_loop = true;\n"; if (!syncOnly) code += "if(_loopAsync) _looper();\n"; code += doneBreak(true); code += "} else {\n"; code += next(); code += "}\n"; return code; }, onDone: onDone && (() => { let code = ""; code += "if(!_loop) {\n"; code += onDone(); code += "}\n"; return code; }), rethrowIfPossible: rethrowIfPossible && syncOnly }); code += "} while(_loop);\n"; if (!syncOnly) { code += "_loopAsync = true;\n"; code += "});\n"; code += "_looper();\n"; } return code; } callTapsParallel({ onError, onResult, onDone, rethrowIfPossible, onTap = (i, run) => run() }) { const { taps } = this.options; const tapsLength = taps.length; if (tapsLength <= 1) { return this.callTapsSeries({ onError, onResult, onDone, rethrowIfPossible }); } // done and doneBreak don't depend on the loop variable - hoist them // so they're allocated once per compile instead of once per tap. const done = () => { if (onDone) return "if(--_counter === 0) _done();\n"; return "--_counter;"; }; const doneBreak = (skipDone) => { if (skipDone || !onDone) return "_counter = 0;\n"; return "_counter = 0;\n_done();\n"; }; let code = ""; code += "do {\n"; code += `var _counter = ${tapsLength};\n`; if (onDone) { code += "var _done = (function() {\n"; code += onDone(); code += "});\n"; } for (let i = 0; i < tapsLength; i++) { code += "if(_counter <= 0) break;\n"; code += onTap( i, () => this.callTap(i, { onError: (error) => { let code = ""; code += "if(_counter > 0) {\n"; code += onError(i, error, done, doneBreak); code += "}\n"; return code; }, onResult: onResult && ((result) => { let code = ""; code += "if(_counter > 0) {\n"; code += onResult(i, result, done, doneBreak); code += "}\n"; return code; }), onDone: !onResult && (() => done()), rethrowIfPossible }), done, doneBreak ); } code += "} while(false);\n"; return code; } args({ before, after } = {}) { // Hot during code generation. Join `_args` once and cache the result, // then build the customized variants via string concat instead of // allocating temporary `[before, ...allArgs]` / `[...allArgs, after]` // arrays and re-joining. let joined = this._joinedArgs; if (joined === undefined) { joined = this._args.length === 0 ? "" : this._args.join(", "); this._joinedArgs = joined; } if (!before && !after) return joined; if (joined.length === 0) { if (before && after) return `${before}, ${after}`; return before || after; } if (before && after) return `${before}, ${joined}, ${after}`; if (before) return `${before}, ${joined}`; return `${joined}, ${after}`; } getTapFn(idx) { return `_x[${idx}]`; } getTap(idx) { return `_taps[${idx}]`; } getInterceptor(idx) { return `_interceptors[${idx}]`; } } module.exports = HookCodeFactory; webpack-tapable-8ca4f9d/lib/HookMap.js000066400000000000000000000032671517167660300177260ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const util = require("util"); const defaultFactory = (key, hook) => hook; class HookMap { constructor(factory, name = undefined) { this._map = new Map(); this.name = name; this._factory = factory; this._interceptors = []; } get(key) { return this._map.get(key); } for(key) { // Hot path: inline the map lookup to skip the `this.get(key)` // indirection. This gets hit on every hook access in consumers // like webpack. const map = this._map; const hook = map.get(key); if (hook !== undefined) { return hook; } let newHook = this._factory(key); const interceptors = this._interceptors; for (let i = 0; i < interceptors.length; i++) { newHook = interceptors[i].factory(key, newHook); } map.set(key, newHook); return newHook; } intercept(interceptor) { this._interceptors.push( Object.assign( { factory: defaultFactory }, interceptor ) ); } } HookMap.prototype.tap = util.deprecate(function tap(key, options, fn) { return this.for(key).tap(options, fn); }, "HookMap#tap(key,…) is deprecated. Use HookMap#for(key).tap(…) instead."); HookMap.prototype.tapAsync = util.deprecate(function tapAsync( key, options, fn ) { return this.for(key).tapAsync(options, fn); }, "HookMap#tapAsync(key,…) is deprecated. Use HookMap#for(key).tapAsync(…) instead."); HookMap.prototype.tapPromise = util.deprecate(function tapPromise( key, options, fn ) { return this.for(key).tapPromise(options, fn); }, "HookMap#tapPromise(key,…) is deprecated. Use HookMap#for(key).tapPromise(…) instead."); module.exports = HookMap; webpack-tapable-8ca4f9d/lib/MultiHook.js000066400000000000000000000020471517167660300202760ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; class MultiHook { constructor(hooks, name = undefined) { this.hooks = hooks; this.name = name; } tap(options, fn) { const { hooks } = this; for (let i = 0; i < hooks.length; i++) { hooks[i].tap(options, fn); } } tapAsync(options, fn) { const { hooks } = this; for (let i = 0; i < hooks.length; i++) { hooks[i].tapAsync(options, fn); } } tapPromise(options, fn) { const { hooks } = this; for (let i = 0; i < hooks.length; i++) { hooks[i].tapPromise(options, fn); } } isUsed() { const { hooks } = this; for (let i = 0; i < hooks.length; i++) { if (hooks[i].isUsed()) return true; } return false; } intercept(interceptor) { const { hooks } = this; for (let i = 0; i < hooks.length; i++) { hooks[i].intercept(interceptor); } } withOptions(options) { return new MultiHook( this.hooks.map((hook) => hook.withOptions(options)), this.name ); } } module.exports = MultiHook; webpack-tapable-8ca4f9d/lib/SyncBailHook.js000066400000000000000000000023021517167660300207020ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const Hook = require("./Hook"); const HookCodeFactory = require("./HookCodeFactory"); class SyncBailHookCodeFactory extends HookCodeFactory { content({ onError, onResult, resultReturns, onDone, rethrowIfPossible }) { return this.callTapsSeries({ onError: (i, err) => onError(err), onResult: (i, result, next) => `if(${result} !== undefined) {\n${onResult( result )};\n} else {\n${next()}}\n`, resultReturns, onDone, rethrowIfPossible }); } } const factory = new SyncBailHookCodeFactory(); const TAP_ASYNC = () => { throw new Error("tapAsync is not supported on a SyncBailHook"); }; const TAP_PROMISE = () => { throw new Error("tapPromise is not supported on a SyncBailHook"); }; function COMPILE(options) { factory.setup(this, options); return factory.create(options); } function SyncBailHook(args = [], name = undefined) { const hook = new Hook(args, name); hook.constructor = SyncBailHook; hook.tapAsync = TAP_ASYNC; hook.tapPromise = TAP_PROMISE; hook.compile = COMPILE; return hook; } SyncBailHook.prototype = null; module.exports = SyncBailHook; webpack-tapable-8ca4f9d/lib/SyncHook.js000066400000000000000000000017671517167660300201300ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const Hook = require("./Hook"); const HookCodeFactory = require("./HookCodeFactory"); class SyncHookCodeFactory extends HookCodeFactory { content({ onError, onDone, rethrowIfPossible }) { return this.callTapsSeries({ onError: (i, err) => onError(err), onDone, rethrowIfPossible }); } } const factory = new SyncHookCodeFactory(); const TAP_ASYNC = () => { throw new Error("tapAsync is not supported on a SyncHook"); }; const TAP_PROMISE = () => { throw new Error("tapPromise is not supported on a SyncHook"); }; function COMPILE(options) { factory.setup(this, options); return factory.create(options); } function SyncHook(args = [], name = undefined) { const hook = new Hook(args, name); hook.constructor = SyncHook; hook.tapAsync = TAP_ASYNC; hook.tapPromise = TAP_PROMISE; hook.compile = COMPILE; return hook; } SyncHook.prototype = null; module.exports = SyncHook; webpack-tapable-8ca4f9d/lib/SyncLoopHook.js000066400000000000000000000020301517167660300207420ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const Hook = require("./Hook"); const HookCodeFactory = require("./HookCodeFactory"); class SyncLoopHookCodeFactory extends HookCodeFactory { content({ onError, onDone, rethrowIfPossible }) { return this.callTapsLooping({ onError: (i, err) => onError(err), onDone, rethrowIfPossible }); } } const factory = new SyncLoopHookCodeFactory(); const TAP_ASYNC = () => { throw new Error("tapAsync is not supported on a SyncLoopHook"); }; const TAP_PROMISE = () => { throw new Error("tapPromise is not supported on a SyncLoopHook"); }; function COMPILE(options) { factory.setup(this, options); return factory.create(options); } function SyncLoopHook(args = [], name = undefined) { const hook = new Hook(args, name); hook.constructor = SyncLoopHook; hook.tapAsync = TAP_ASYNC; hook.tapPromise = TAP_PROMISE; hook.compile = COMPILE; return hook; } SyncLoopHook.prototype = null; module.exports = SyncLoopHook; webpack-tapable-8ca4f9d/lib/SyncWaterfallHook.js000066400000000000000000000027021517167660300217600ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const Hook = require("./Hook"); const HookCodeFactory = require("./HookCodeFactory"); class SyncWaterfallHookCodeFactory extends HookCodeFactory { content({ onError, onResult, resultReturns, rethrowIfPossible }) { return this.callTapsSeries({ onError: (i, err) => onError(err), onResult: (i, result, next) => { let code = ""; code += `if(${result} !== undefined) {\n`; code += `${this._args[0]} = ${result};\n`; code += "}\n"; code += next(); return code; }, onDone: () => onResult(this._args[0]), doneReturns: resultReturns, rethrowIfPossible }); } } const factory = new SyncWaterfallHookCodeFactory(); const TAP_ASYNC = () => { throw new Error("tapAsync is not supported on a SyncWaterfallHook"); }; const TAP_PROMISE = () => { throw new Error("tapPromise is not supported on a SyncWaterfallHook"); }; function COMPILE(options) { factory.setup(this, options); return factory.create(options); } function SyncWaterfallHook(args = [], name = undefined) { if (args.length < 1) { throw new Error("Waterfall hooks must have at least one argument"); } const hook = new Hook(args, name); hook.constructor = SyncWaterfallHook; hook.tapAsync = TAP_ASYNC; hook.tapPromise = TAP_PROMISE; hook.compile = COMPILE; return hook; } SyncWaterfallHook.prototype = null; module.exports = SyncWaterfallHook; webpack-tapable-8ca4f9d/lib/index.js000066400000000000000000000016111517167660300174660ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; module.exports.AsyncParallelBailHook = require("./AsyncParallelBailHook"); module.exports.AsyncParallelHook = require("./AsyncParallelHook"); module.exports.AsyncSeriesBailHook = require("./AsyncSeriesBailHook"); module.exports.AsyncSeriesHook = require("./AsyncSeriesHook"); module.exports.AsyncSeriesLoopHook = require("./AsyncSeriesLoopHook"); module.exports.AsyncSeriesWaterfallHook = require("./AsyncSeriesWaterfallHook"); module.exports.HookMap = require("./HookMap"); module.exports.MultiHook = require("./MultiHook"); module.exports.SyncBailHook = require("./SyncBailHook"); module.exports.SyncHook = require("./SyncHook"); module.exports.SyncLoopHook = require("./SyncLoopHook"); module.exports.SyncWaterfallHook = require("./SyncWaterfallHook"); module.exports.__esModule = true; webpack-tapable-8ca4f9d/lib/util-browser.js000066400000000000000000000006461517167660300210240ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; module.exports.deprecate = (fn, msg) => { let once = true; return function deprecate() { if (once) { // eslint-disable-next-line no-console console.warn(`DeprecationWarning: ${msg}`); once = false; } // eslint-disable-next-line prefer-rest-params return fn.apply(this, arguments); }; }; webpack-tapable-8ca4f9d/package-lock.json000066400000000000000000016045651517167660300205110ustar00rootroot00000000000000{ "name": "tapable", "version": "2.3.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "tapable", "version": "2.3.2", "license": "MIT", "devDependencies": { "@babel/core": "^7.4.4", "@babel/preset-env": "^7.4.4", "@changesets/cli": "^2.31.0", "@changesets/get-github-info": "^0.8.0", "@codspeed/core": "^5.3.0", "@stylistic/eslint-plugin": "^5.2.3", "babel-jest": "^30.3.0", "eslint": "^9.28.0", "eslint-config-webpack": "^4.6.3", "jest": "^30.3.0", "prettier": "^3.8.3", "prettier-1": "npm:prettier@^1", "tinybench": "^6.0.0" }, "engines": { "node": ">=6" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, "node_modules/@babel/code-frame": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-module-transforms": "^7.28.6", "@babel/helpers": "^7.28.6", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/traverse": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/babel" } }, "node_modules/@babel/generator": { "version": "7.29.1", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { "version": "7.27.3", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/helper-replace-supers": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/traverse": "^7.28.6", "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-create-regexp-features-plugin": { "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "regexpu-core": "^6.3.1", "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-define-polyfill-provider": { "version": "0.6.8", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "debug": "^4.4.3", "lodash.debounce": "^4.0.8", "resolve": "^1.22.11" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/helper-globals": { "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-wrap-function": "^7.27.1", "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-replace-supers": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.28.6", "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { "version": "7.29.2", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.28.6", "@babel/types": "^7.29.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { "version": "7.29.2", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.29.0" }, "bin": { "parser": "bin/babel-parser.js" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/plugin-transform-optional-chaining": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.13.0" } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-bigint": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-class-static-block": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-import-assertions": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-import-attributes": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-jsx": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-typescript": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-arrow-functions": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-generator-functions": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-remap-async-to-generator": "^7.27.1", "@babel/traverse": "^7.29.0" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-async-to-generator": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-remap-async-to-generator": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-block-scoping": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-class-properties": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-class-static-block": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.12.0" } }, "node_modules/@babel/plugin-transform-classes": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-globals": "^7.28.0", "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-replace-supers": "^7.28.6", "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/template": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-destructuring": { "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-dotall-regex": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-keys": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-dynamic-import": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-explicit-resource-management": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/plugin-transform-destructuring": "^7.28.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-export-namespace-from": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-for-of": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-function-name": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1", "@babel/traverse": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-json-strings": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-literals": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-member-expression-literals": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-amd": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-commonjs": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-systemjs": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", "@babel/traverse": "^7.29.0" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-modules-umd": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-new-target": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-numeric-separator": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-rest-spread": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/plugin-transform-destructuring": "^7.28.5", "@babel/plugin-transform-parameters": "^7.27.7", "@babel/traverse": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-object-super": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-optional-chaining": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-parameters": { "version": "7.27.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-private-methods": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-private-property-in-object": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-create-class-features-plugin": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-property-literals": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-regexp-modifiers": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-reserved-words": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-spread": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-sticky-regex": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-template-literals": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-typeof-symbol": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.28.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "node_modules/@babel/preset-env": { "version": "7.29.2", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.2.tgz", "integrity": "sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==", "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.29.0", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-import-assertions": "^7.28.6", "@babel/plugin-syntax-import-attributes": "^7.28.6", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.27.1", "@babel/plugin-transform-async-generator-functions": "^7.29.0", "@babel/plugin-transform-async-to-generator": "^7.28.6", "@babel/plugin-transform-block-scoped-functions": "^7.27.1", "@babel/plugin-transform-block-scoping": "^7.28.6", "@babel/plugin-transform-class-properties": "^7.28.6", "@babel/plugin-transform-class-static-block": "^7.28.6", "@babel/plugin-transform-classes": "^7.28.6", "@babel/plugin-transform-computed-properties": "^7.28.6", "@babel/plugin-transform-destructuring": "^7.28.5", "@babel/plugin-transform-dotall-regex": "^7.28.6", "@babel/plugin-transform-duplicate-keys": "^7.27.1", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-dynamic-import": "^7.27.1", "@babel/plugin-transform-explicit-resource-management": "^7.28.6", "@babel/plugin-transform-exponentiation-operator": "^7.28.6", "@babel/plugin-transform-export-namespace-from": "^7.27.1", "@babel/plugin-transform-for-of": "^7.27.1", "@babel/plugin-transform-function-name": "^7.27.1", "@babel/plugin-transform-json-strings": "^7.28.6", "@babel/plugin-transform-literals": "^7.27.1", "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", "@babel/plugin-transform-member-expression-literals": "^7.27.1", "@babel/plugin-transform-modules-amd": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.28.6", "@babel/plugin-transform-modules-systemjs": "^7.29.0", "@babel/plugin-transform-modules-umd": "^7.27.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-new-target": "^7.27.1", "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", "@babel/plugin-transform-numeric-separator": "^7.28.6", "@babel/plugin-transform-object-rest-spread": "^7.28.6", "@babel/plugin-transform-object-super": "^7.27.1", "@babel/plugin-transform-optional-catch-binding": "^7.28.6", "@babel/plugin-transform-optional-chaining": "^7.28.6", "@babel/plugin-transform-parameters": "^7.27.7", "@babel/plugin-transform-private-methods": "^7.28.6", "@babel/plugin-transform-private-property-in-object": "^7.28.6", "@babel/plugin-transform-property-literals": "^7.27.1", "@babel/plugin-transform-regenerator": "^7.29.0", "@babel/plugin-transform-regexp-modifiers": "^7.28.6", "@babel/plugin-transform-reserved-words": "^7.27.1", "@babel/plugin-transform-shorthand-properties": "^7.27.1", "@babel/plugin-transform-spread": "^7.28.6", "@babel/plugin-transform-sticky-regex": "^7.27.1", "@babel/plugin-transform-template-literals": "^7.27.1", "@babel/plugin-transform-typeof-symbol": "^7.27.1", "@babel/plugin-transform-unicode-escapes": "^7.27.1", "@babel/plugin-transform-unicode-property-regex": "^7.28.6", "@babel/plugin-transform-unicode-regex": "^7.27.1", "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.15", "babel-plugin-polyfill-corejs3": "^0.14.0", "babel-plugin-polyfill-regenerator": "^0.6.6", "core-js-compat": "^3.48.0", "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, "peerDependencies": { "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/runtime": { "version": "7.29.2", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/types": "^7.29.0", "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true, "license": "MIT" }, "node_modules/@changesets/apply-release-plan": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.1.1.tgz", "integrity": "sha512-9qPCm/rLx/xoOFXIHGB229+4GOL76S4MC+7tyOuTsR6+1jYlfFDQORdvwR5hDA6y4FL2BPt3qpbcQIS+dW85LA==", "dev": true, "license": "MIT", "dependencies": { "@changesets/config": "^3.1.4", "@changesets/get-version-range-type": "^0.4.0", "@changesets/git": "^3.0.4", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "detect-indent": "^6.0.0", "fs-extra": "^7.0.1", "lodash.startcase": "^4.4.0", "outdent": "^0.5.0", "prettier": "^2.7.1", "resolve-from": "^5.0.0", "semver": "^7.5.3" } }, "node_modules/@changesets/apply-release-plan/node_modules/detect-indent": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@changesets/apply-release-plan/node_modules/prettier": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "license": "MIT", "bin": { "prettier": "bin-prettier.js" }, "engines": { "node": ">=10.13.0" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/@changesets/apply-release-plan/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/@changesets/assemble-release-plan": { "version": "6.0.10", "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.10.tgz", "integrity": "sha512-rSDcqdJ9KbVyjpBIuCidhvZNIiVt1XaIYp73ycVQRIA5n/j6wQaEk0ChRLMUQ1vkxZe51PTQ9OIhbg6HQMW45A==", "dev": true, "license": "MIT", "dependencies": { "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.4", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "semver": "^7.5.3" } }, "node_modules/@changesets/assemble-release-plan/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/@changesets/changelog-git": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.2.1.tgz", "integrity": "sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==", "dev": true, "license": "MIT", "dependencies": { "@changesets/types": "^6.1.0" } }, "node_modules/@changesets/cli": { "version": "2.31.0", "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.31.0.tgz", "integrity": "sha512-AhI4enNTgHu2IZr6K4WZyf0EPch4XVMn1yOMFmCD9gsfBGqMYaHXls5HyDv6/CL5axVQABz68eG30eCtbr2wFg==", "dev": true, "license": "MIT", "dependencies": { "@changesets/apply-release-plan": "^7.1.1", "@changesets/assemble-release-plan": "^6.0.10", "@changesets/changelog-git": "^0.2.1", "@changesets/config": "^3.1.4", "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.4", "@changesets/get-release-plan": "^4.0.16", "@changesets/git": "^3.0.4", "@changesets/logger": "^0.1.1", "@changesets/pre": "^2.0.2", "@changesets/read": "^0.6.7", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@changesets/write": "^0.4.0", "@inquirer/external-editor": "^1.0.2", "@manypkg/get-packages": "^1.1.3", "ansi-colors": "^4.1.3", "enquirer": "^2.4.1", "fs-extra": "^7.0.1", "mri": "^1.2.0", "package-manager-detector": "^0.2.0", "picocolors": "^1.1.0", "resolve-from": "^5.0.0", "semver": "^7.5.3", "spawndamnit": "^3.0.1", "term-size": "^2.1.0" }, "bin": { "changeset": "bin.js" } }, "node_modules/@changesets/cli/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/@changesets/config": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@changesets/config/-/config-3.1.4.tgz", "integrity": "sha512-pf0bvD/v6WI2cRlZ6hzpjtZdSlXDXMAJ+Iz7xfFzV4ZxJ8OGGAON+1qYc99ZPrijnt4xp3VGG7eNvAOGS24V1Q==", "dev": true, "license": "MIT", "dependencies": { "@changesets/errors": "^0.2.0", "@changesets/get-dependents-graph": "^2.1.4", "@changesets/logger": "^0.1.1", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "fs-extra": "^7.0.1", "micromatch": "^4.0.8" } }, "node_modules/@changesets/errors": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@changesets/errors/-/errors-0.2.0.tgz", "integrity": "sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==", "dev": true, "license": "MIT", "dependencies": { "extendable-error": "^0.1.5" } }, "node_modules/@changesets/get-dependents-graph": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.1.4.tgz", "integrity": "sha512-ZsS00x6WvmHq3sQv8oCMwL0f/z3wbXCVuSVTJwCnnmbC/iBdNJGFx1EcbMG4PC6sXRyH69liM4A2WKXzn/kRPg==", "dev": true, "license": "MIT", "dependencies": { "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "picocolors": "^1.1.0", "semver": "^7.5.3" } }, "node_modules/@changesets/get-dependents-graph/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/@changesets/get-github-info": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@changesets/get-github-info/-/get-github-info-0.8.0.tgz", "integrity": "sha512-cRnC+xdF0JIik7coko3iUP9qbnfi1iJQ3sAa6dE+Tx3+ET8bjFEm63PA4WEohgjYcmsOikPHWzPsMWWiZmntOQ==", "dev": true, "license": "MIT", "dependencies": { "dataloader": "^1.4.0", "node-fetch": "^2.5.0" } }, "node_modules/@changesets/get-release-plan": { "version": "4.0.16", "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.16.tgz", "integrity": "sha512-2K5Om6CrMPm45rtvckfzWo7e9jOVCKLCnXia5eUPaURH7/LWzri7pK1TycdzAuAtehLkW7VPbWLCSExTHmiI6g==", "dev": true, "license": "MIT", "dependencies": { "@changesets/assemble-release-plan": "^6.0.10", "@changesets/config": "^3.1.4", "@changesets/pre": "^2.0.2", "@changesets/read": "^0.6.7", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3" } }, "node_modules/@changesets/get-version-range-type": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.4.0.tgz", "integrity": "sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==", "dev": true, "license": "MIT" }, "node_modules/@changesets/git": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@changesets/git/-/git-3.0.4.tgz", "integrity": "sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==", "dev": true, "license": "MIT", "dependencies": { "@changesets/errors": "^0.2.0", "@manypkg/get-packages": "^1.1.3", "is-subdir": "^1.1.1", "micromatch": "^4.0.8", "spawndamnit": "^3.0.1" } }, "node_modules/@changesets/logger": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@changesets/logger/-/logger-0.1.1.tgz", "integrity": "sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==", "dev": true, "license": "MIT", "dependencies": { "picocolors": "^1.1.0" } }, "node_modules/@changesets/parse": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@changesets/parse/-/parse-0.4.3.tgz", "integrity": "sha512-ZDmNc53+dXdWEv7fqIUSgRQOLYoUom5Z40gmLgmATmYR9NbL6FJJHwakcCpzaeCy+1D0m0n7mT4jj2B/MQPl7A==", "dev": true, "license": "MIT", "dependencies": { "@changesets/types": "^6.1.0", "js-yaml": "^4.1.1" } }, "node_modules/@changesets/parse/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, "license": "Python-2.0" }, "node_modules/@changesets/parse/node_modules/js-yaml": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "node_modules/@changesets/pre": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@changesets/pre/-/pre-2.0.2.tgz", "integrity": "sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==", "dev": true, "license": "MIT", "dependencies": { "@changesets/errors": "^0.2.0", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", "fs-extra": "^7.0.1" } }, "node_modules/@changesets/read": { "version": "0.6.7", "resolved": "https://registry.npmjs.org/@changesets/read/-/read-0.6.7.tgz", "integrity": "sha512-D1G4AUYGrBEk8vj8MGwf75k9GpN6XL3wg8i42P2jZZwFLXnlr2Pn7r9yuQNbaMCarP7ZQWNJbV6XLeysAIMhTA==", "dev": true, "license": "MIT", "dependencies": { "@changesets/git": "^3.0.4", "@changesets/logger": "^0.1.1", "@changesets/parse": "^0.4.3", "@changesets/types": "^6.1.0", "fs-extra": "^7.0.1", "p-filter": "^2.1.0", "picocolors": "^1.1.0" } }, "node_modules/@changesets/should-skip-package": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/@changesets/should-skip-package/-/should-skip-package-0.1.2.tgz", "integrity": "sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==", "dev": true, "license": "MIT", "dependencies": { "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3" } }, "node_modules/@changesets/types": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@changesets/types/-/types-6.1.0.tgz", "integrity": "sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==", "dev": true, "license": "MIT" }, "node_modules/@changesets/write": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@changesets/write/-/write-0.4.0.tgz", "integrity": "sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==", "dev": true, "license": "MIT", "dependencies": { "@changesets/types": "^6.1.0", "fs-extra": "^7.0.1", "human-id": "^4.1.1", "prettier": "^2.7.1" } }, "node_modules/@changesets/write/node_modules/prettier": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "license": "MIT", "bin": { "prettier": "bin-prettier.js" }, "engines": { "node": ">=10.13.0" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/@codspeed/core": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@codspeed/core/-/core-5.3.0.tgz", "integrity": "sha512-++/kkPHPFI+dzX6FD+w+jFgKk8rgm5O1Tpg5nKUuFLENaB9ma///CZv76HdYZTJHu46dEeWwxGH+z0G3lLh59Q==", "dev": true, "license": "Apache-2.0", "dependencies": { "axios": "^1.4.0", "find-up": "^6.3.0", "form-data": "^4.0.4", "node-gyp-build": "^4.6.0" } }, "node_modules/@codspeed/core/node_modules/find-up": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, "license": "MIT", "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@codspeed/core/node_modules/locate-path": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, "license": "MIT", "dependencies": { "p-locate": "^6.0.0" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@codspeed/core/node_modules/p-limit": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@codspeed/core/node_modules/p-locate": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, "license": "MIT", "dependencies": { "p-limit": "^4.0.0" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@codspeed/core/node_modules/path-exists": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "node_modules/@codspeed/core/node_modules/yocto-queue": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", "dev": true, "license": "MIT", "engines": { "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@emnapi/core": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.1.tgz", "integrity": "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==", "dev": true, "license": "MIT", "optional": true, "dependencies": { "@emnapi/wasi-threads": "1.2.0", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.1.tgz", "integrity": "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==", "dev": true, "license": "MIT", "optional": true, "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@emnapi/wasi-threads": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", "dev": true, "license": "MIT", "optional": true, "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@es-joy/jsdoccomment": { "version": "0.86.0", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.86.0.tgz", "integrity": "sha512-ukZmRQ81WiTpDWO6D/cTBM7XbrNtutHKvAVnZN/8pldAwLoJArGOvkNyxPTBGsPjsoaQBJxlH+tE2TNA/92Qgw==", "dev": true, "license": "MIT", "dependencies": { "@types/estree": "^1.0.8", "@typescript-eslint/types": "^8.58.0", "comment-parser": "1.4.6", "esquery": "^1.7.0", "jsdoc-type-pratt-parser": "~7.2.0" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@es-joy/resolve.exports": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@es-joy/resolve.exports/-/resolve.exports-1.2.0.tgz", "integrity": "sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==", "dev": true, "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint-community/regexpp": { "version": "4.12.2", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/config-array": { "version": "0.21.2", "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.5" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/config-helpers": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@eslint/core": "^0.17.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/core": { "version": "0.17.0", "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@types/json-schema": "^7.0.15" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/eslintrc": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.14.0", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/eslintrc/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, "license": "Python-2.0" }, "node_modules/@eslint/eslintrc/node_modules/js-yaml": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "node_modules/@eslint/js": { "version": "9.39.4", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", "dev": true, "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://eslint.org/donate" } }, "node_modules/@eslint/markdown": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/@eslint/markdown/-/markdown-8.0.1.tgz", "integrity": "sha512-WWKmld/EyNdEB8GMq7JMPX1SDWgyJAM1uhtCi5ySrqYQM4HQjmg11EX/q3ZpnpRXHfdccFtli3NBvvGaYjWyQw==", "dev": true, "license": "MIT", "workspaces": [ "examples/*" ], "dependencies": { "@eslint/core": "^1.1.1", "@eslint/plugin-kit": "^0.6.1", "github-slugger": "^2.0.0", "mdast-util-from-markdown": "^2.0.2", "mdast-util-frontmatter": "^2.0.1", "mdast-util-gfm": "^3.1.0", "mdast-util-math": "^3.0.0", "micromark-extension-frontmatter": "^2.0.0", "micromark-extension-gfm": "^3.0.0", "micromark-extension-math": "^3.1.0", "micromark-util-normalize-identifier": "^2.0.1" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/markdown/node_modules/@eslint/core": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@types/json-schema": "^7.0.15" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/markdown/node_modules/@eslint/plugin-kit": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.1.tgz", "integrity": "sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@eslint/core": "^1.1.1", "levn": "^0.4.1" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" } }, "node_modules/@eslint/object-schema": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", "dev": true, "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/plugin-kit": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, "license": "Apache-2.0", "dependencies": { "@eslint/core": "^0.17.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, "license": "Apache-2.0", "engines": { "node": ">=18.18.0" } }, "node_modules/@humanfs/node": { "version": "0.16.7", "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.4.0" }, "engines": { "node": ">=18.18.0" } }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "license": "Apache-2.0", "engines": { "node": ">=12.22" }, "funding": { "type": "github", "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/retry": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, "license": "Apache-2.0", "engines": { "node": ">=18.18" }, "funding": { "type": "github", "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@inquirer/external-editor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", "dev": true, "license": "MIT", "dependencies": { "chardet": "^2.1.1", "iconv-lite": "^0.7.0" }, "engines": { "node": ">=18" }, "peerDependencies": { "@types/node": ">=18" }, "peerDependenciesMeta": { "@types/node": { "optional": true } } }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { "node": ">=12" } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/@isaacs/cliui/node_modules/ansi-styles": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/@isaacs/cliui/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true, "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" }, "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", "get-package-type": "^0.1.0", "js-yaml": "^3.13.1", "resolve-from": "^5.0.0" }, "engines": { "node": ">=8" } }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jest/console": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.3.0.tgz", "integrity": "sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==", "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.3.0", "@types/node": "*", "chalk": "^4.1.2", "jest-message-util": "30.3.0", "jest-util": "30.3.0", "slash": "^3.0.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/core": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.3.0.tgz", "integrity": "sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==", "dev": true, "license": "MIT", "dependencies": { "@jest/console": "30.3.0", "@jest/pattern": "30.0.1", "@jest/reporters": "30.3.0", "@jest/test-result": "30.3.0", "@jest/transform": "30.3.0", "@jest/types": "30.3.0", "@types/node": "*", "ansi-escapes": "^4.3.2", "chalk": "^4.1.2", "ci-info": "^4.2.0", "exit-x": "^0.2.2", "graceful-fs": "^4.2.11", "jest-changed-files": "30.3.0", "jest-config": "30.3.0", "jest-haste-map": "30.3.0", "jest-message-util": "30.3.0", "jest-regex-util": "30.0.1", "jest-resolve": "30.3.0", "jest-resolve-dependencies": "30.3.0", "jest-runner": "30.3.0", "jest-runtime": "30.3.0", "jest-snapshot": "30.3.0", "jest-util": "30.3.0", "jest-validate": "30.3.0", "jest-watcher": "30.3.0", "pretty-format": "30.3.0", "slash": "^3.0.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { "node-notifier": { "optional": true } } }, "node_modules/@jest/diff-sequences": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.3.0.tgz", "integrity": "sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==", "dev": true, "license": "MIT", "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/environment": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.3.0.tgz", "integrity": "sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==", "dev": true, "license": "MIT", "dependencies": { "@jest/fake-timers": "30.3.0", "@jest/types": "30.3.0", "@types/node": "*", "jest-mock": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/expect": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.3.0.tgz", "integrity": "sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==", "dev": true, "license": "MIT", "dependencies": { "expect": "30.3.0", "jest-snapshot": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/expect-utils": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.3.0.tgz", "integrity": "sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==", "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/fake-timers": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.3.0.tgz", "integrity": "sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==", "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.3.0", "@sinonjs/fake-timers": "^15.0.0", "@types/node": "*", "jest-message-util": "30.3.0", "jest-mock": "30.3.0", "jest-util": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/get-type": { "version": "30.1.0", "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", "dev": true, "license": "MIT", "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/globals": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.3.0.tgz", "integrity": "sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==", "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "30.3.0", "@jest/expect": "30.3.0", "@jest/types": "30.3.0", "jest-mock": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/pattern": { "version": "30.0.1", "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", "jest-regex-util": "30.0.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/reporters": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.3.0.tgz", "integrity": "sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==", "dev": true, "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "30.3.0", "@jest/test-result": "30.3.0", "@jest/transform": "30.3.0", "@jest/types": "30.3.0", "@jridgewell/trace-mapping": "^0.3.25", "@types/node": "*", "chalk": "^4.1.2", "collect-v8-coverage": "^1.0.2", "exit-x": "^0.2.2", "glob": "^10.5.0", "graceful-fs": "^4.2.11", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-instrument": "^6.0.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^5.0.0", "istanbul-reports": "^3.1.3", "jest-message-util": "30.3.0", "jest-util": "30.3.0", "jest-worker": "30.3.0", "slash": "^3.0.0", "string-length": "^4.0.2", "v8-to-istanbul": "^9.0.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { "node-notifier": { "optional": true } } }, "node_modules/@jest/reporters/node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/@jest/reporters/node_modules/glob": { "version": "10.5.0", "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@jest/reporters/node_modules/minimatch": { "version": "9.0.9", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@jest/schemas": { "version": "30.0.5", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.34.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/snapshot-utils": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.3.0.tgz", "integrity": "sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==", "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.3.0", "chalk": "^4.1.2", "graceful-fs": "^4.2.11", "natural-compare": "^1.4.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/source-map": { "version": "30.0.1", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "callsites": "^3.1.0", "graceful-fs": "^4.2.11" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/test-result": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.3.0.tgz", "integrity": "sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==", "dev": true, "license": "MIT", "dependencies": { "@jest/console": "30.3.0", "@jest/types": "30.3.0", "@types/istanbul-lib-coverage": "^2.0.6", "collect-v8-coverage": "^1.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/test-sequencer": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.3.0.tgz", "integrity": "sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==", "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "30.3.0", "graceful-fs": "^4.2.11", "jest-haste-map": "30.3.0", "slash": "^3.0.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/transform": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.3.0.tgz", "integrity": "sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.27.4", "@jest/types": "30.3.0", "@jridgewell/trace-mapping": "^0.3.25", "babel-plugin-istanbul": "^7.0.1", "chalk": "^4.1.2", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.11", "jest-haste-map": "30.3.0", "jest-regex-util": "30.0.1", "jest-util": "30.3.0", "pirates": "^4.0.7", "slash": "^3.0.0", "write-file-atomic": "^5.0.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jest/types": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", "dev": true, "license": "MIT", "dependencies": { "@jest/pattern": "30.0.1", "@jest/schemas": "30.0.5", "@types/istanbul-lib-coverage": "^2.0.6", "@types/istanbul-reports": "^3.0.4", "@types/node": "*", "@types/yargs": "^17.0.33", "chalk": "^4.1.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "node_modules/@jridgewell/remapping": { "version": "2.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@manypkg/find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz", "integrity": "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==", "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.5.5", "@types/node": "^12.7.1", "find-up": "^4.1.0", "fs-extra": "^8.1.0" } }, "node_modules/@manypkg/find-root/node_modules/@types/node": { "version": "12.20.55", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", "dev": true, "license": "MIT" }, "node_modules/@manypkg/find-root/node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" }, "engines": { "node": ">=6 <7 || >=8" } }, "node_modules/@manypkg/get-packages": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz", "integrity": "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==", "dev": true, "license": "MIT", "dependencies": { "@babel/runtime": "^7.5.5", "@changesets/types": "^4.0.1", "@manypkg/find-root": "^1.1.0", "fs-extra": "^8.1.0", "globby": "^11.0.0", "read-yaml-file": "^1.1.0" } }, "node_modules/@manypkg/get-packages/node_modules/@changesets/types": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz", "integrity": "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==", "dev": true, "license": "MIT" }, "node_modules/@manypkg/get-packages/node_modules/fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" }, "engines": { "node": ">=6 <7 || >=8" } }, "node_modules/@napi-rs/wasm-runtime": { "version": "0.2.12", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", "dev": true, "license": "MIT", "optional": true, "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" } }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" }, "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" }, "engines": { "node": ">= 8" } }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, "license": "MIT", "optional": true, "engines": { "node": ">=14" } }, "node_modules/@pkgr/core": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/pkgr" } }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", "dev": true, "license": "MIT" }, "node_modules/@sinclair/typebox": { "version": "0.34.48", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz", "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==", "dev": true, "license": "MIT" }, "node_modules/@sindresorhus/base62": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@sindresorhus/base62/-/base62-1.0.0.tgz", "integrity": "sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==", "dev": true, "license": "MIT", "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { "version": "15.1.1", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.1.1.tgz", "integrity": "sha512-cO5W33JgAPbOh07tvZjUOJ7oWhtaqGHiZw+11DPbyqh2kHTBc3eF/CjJDeQ4205RLQsX6rxCuYOroFQwl7JDRw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1" } }, "node_modules/@stylistic/eslint-plugin": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.10.0.tgz", "integrity": "sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/types": "^8.56.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "estraverse": "^5.3.0", "picomatch": "^4.0.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { "eslint": "^9.0.0 || ^10.0.0" } }, "node_modules/@tybys/wasm-util": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "dev": true, "license": "MIT", "optional": true, "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "node_modules/@types/babel__generator": { "version": "7.27.0", "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { "version": "7.4.4", "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__traverse": { "version": "7.28.0", "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.28.2" } }, "node_modules/@types/debug": { "version": "4.1.13", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", "dev": true, "license": "MIT", "dependencies": { "@types/ms": "*" } }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, "license": "MIT" }, "node_modules/@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "dev": true, "license": "MIT", "dependencies": { "@types/unist": "*" } }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true, "license": "MIT" }, "node_modules/@types/katex": { "version": "0.16.8", "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.8.tgz", "integrity": "sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==", "dev": true, "license": "MIT" }, "node_modules/@types/mdast": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", "dev": true, "license": "MIT", "dependencies": { "@types/unist": "*" } }, "node_modules/@types/ms": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", "dev": true, "license": "MIT" }, "node_modules/@types/node": { "version": "25.5.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~7.18.0" } }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true, "license": "MIT" }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "dev": true, "license": "MIT" }, "node_modules/@types/yargs": { "version": "17.0.35", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { "version": "21.0.3", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.58.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.0.tgz", "integrity": "sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.58.0", "@typescript-eslint/type-utils": "8.58.0", "@typescript-eslint/utils": "8.58.0", "@typescript-eslint/visitor-keys": "8.58.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { "@typescript-eslint/parser": "^8.58.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/@typescript-eslint/parser": { "version": "8.58.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.0.tgz", "integrity": "sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==", "dev": true, "license": "MIT", "dependencies": { "@typescript-eslint/scope-manager": "8.58.0", "@typescript-eslint/types": "8.58.0", "@typescript-eslint/typescript-estree": "8.58.0", "@typescript-eslint/visitor-keys": "8.58.0", "debug": "^4.4.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/project-service": { "version": "8.58.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.0.tgz", "integrity": "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==", "dev": true, "license": "MIT", "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.58.0", "@typescript-eslint/types": "^8.58.0", "debug": "^4.4.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/scope-manager": { "version": "8.58.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz", "integrity": "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==", "dev": true, "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.58.0", "@typescript-eslint/visitor-keys": "8.58.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/@typescript-eslint/tsconfig-utils": { "version": "8.58.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz", "integrity": "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==", "dev": true, "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/type-utils": { "version": "8.58.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.0.tgz", "integrity": "sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==", "dev": true, "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.58.0", "@typescript-eslint/typescript-estree": "8.58.0", "@typescript-eslint/utils": "8.58.0", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/types": { "version": "8.58.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.0.tgz", "integrity": "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==", "dev": true, "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/@typescript-eslint/typescript-estree": { "version": "8.58.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz", "integrity": "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==", "dev": true, "license": "MIT", "dependencies": { "@typescript-eslint/project-service": "8.58.0", "@typescript-eslint/tsconfig-utils": "8.58.0", "@typescript-eslint/types": "8.58.0", "@typescript-eslint/visitor-keys": "8.58.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.5.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, "license": "MIT", "engines": { "node": "18 || 20 || >=22" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" }, "engines": { "node": "18 || 20 || >=22" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { "version": "10.2.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "brace-expansion": "^5.0.5" }, "engines": { "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/@typescript-eslint/utils": { "version": "8.58.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.0.tgz", "integrity": "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.58.0", "@typescript-eslint/types": "8.58.0", "@typescript-eslint/typescript-estree": "8.58.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/visitor-keys": { "version": "8.58.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz", "integrity": "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==", "dev": true, "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.58.0", "eslint-visitor-keys": "^5.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, "license": "Apache-2.0", "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/@ungap/structured-clone": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "dev": true, "license": "ISC" }, "node_modules/@unrs/resolver-binding-android-arm-eabi": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", "cpu": [ "arm" ], "dev": true, "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@unrs/resolver-binding-android-arm64": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", "cpu": [ "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@unrs/resolver-binding-darwin-arm64": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", "cpu": [ "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@unrs/resolver-binding-darwin-x64": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", "cpu": [ "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@unrs/resolver-binding-freebsd-x64": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", "cpu": [ "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", "cpu": [ "arm" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", "cpu": [ "arm" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", "cpu": [ "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@unrs/resolver-binding-linux-arm64-musl": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", "cpu": [ "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", "cpu": [ "ppc64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", "cpu": [ "riscv64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", "cpu": [ "riscv64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", "cpu": [ "s390x" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@unrs/resolver-binding-linux-x64-gnu": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", "cpu": [ "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@unrs/resolver-binding-linux-x64-musl": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", "cpu": [ "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@unrs/resolver-binding-wasm32-wasi": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", "cpu": [ "wasm32" ], "dev": true, "license": "MIT", "optional": true, "dependencies": { "@napi-rs/wasm-runtime": "^0.2.11" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", "cpu": [ "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", "cpu": [ "ia32" ], "dev": true, "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@unrs/resolver-binding-win32-x64-msvc": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", "cpu": [ "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/acorn": { "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", "bin": { "acorn": "bin/acorn" }, "engines": { "node": ">=0.4.0" } }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/ajv": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" }, "funding": { "type": "github", "url": "https://github.com/sponsors/epoberezkin" } }, "node_modules/ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" }, "engines": { "node": ">= 8" } }, "node_modules/anymatch/node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { "node": ">=8.6" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/are-docs-informative": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", "dev": true, "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/array-buffer-byte-length": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array-includes": { "version": "3.1.9", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.0", "es-object-atoms": "^1.1.1", "get-intrinsic": "^1.3.0", "is-string": "^1.1.1", "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/array.prototype.findlast": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array.prototype.findlastindex": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-shim-unscopables": "^1.1.0" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array.prototype.flat": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array.prototype.flatmap": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array.prototype.tosorted": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.3", "es-errors": "^1.3.0", "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "is-array-buffer": "^3.0.4" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/async-function": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true, "license": "MIT" }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/axios": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz", "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==", "dev": true, "license": "MIT", "dependencies": { "follow-redirects": "^1.15.11", "form-data": "^4.0.5", "proxy-from-env": "^2.1.0" } }, "node_modules/babel-jest": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.3.0.tgz", "integrity": "sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==", "dev": true, "license": "MIT", "dependencies": { "@jest/transform": "30.3.0", "@types/babel__core": "^7.20.5", "babel-plugin-istanbul": "^7.0.1", "babel-preset-jest": "30.3.0", "chalk": "^4.1.2", "graceful-fs": "^4.2.11", "slash": "^3.0.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "@babel/core": "^7.11.0 || ^8.0.0-0" } }, "node_modules/babel-plugin-istanbul": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", "dev": true, "license": "BSD-3-Clause", "workspaces": [ "test/babel-8" ], "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.3", "istanbul-lib-instrument": "^6.0.2", "test-exclude": "^6.0.0" }, "engines": { "node": ">=12" } }, "node_modules/babel-plugin-jest-hoist": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.3.0.tgz", "integrity": "sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==", "dev": true, "license": "MIT", "dependencies": { "@types/babel__core": "^7.20.5" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.4.17", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-define-polyfill-provider": "^0.6.8", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-corejs3": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.8", "core-js-compat": "^3.48.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { "version": "0.6.8", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.6.8" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-preset-current-node-syntax": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", "@babel/plugin-syntax-numeric-separator": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5" }, "peerDependencies": { "@babel/core": "^7.0.0 || ^8.0.0-0" } }, "node_modules/babel-preset-jest": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.3.0.tgz", "integrity": "sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==", "dev": true, "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "30.3.0", "babel-preset-current-node-syntax": "^1.2.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "@babel/core": "^7.11.0 || ^8.0.0-beta.1" } }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT" }, "node_modules/baseline-browser-mapping": { "version": "2.10.9", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.9.tgz", "integrity": "sha512-OZd0e2mU11ClX8+IdXe3r0dbqMEznRiT4TfbhYIbcRPZkqJ7Qwer8ij3GZAmLsRKa+II9V1v5czCkvmHH3XZBg==", "dev": true, "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" }, "engines": { "node": ">=6.0.0" } }, "node_modules/better-path-resolve": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz", "integrity": "sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==", "dev": true, "license": "MIT", "dependencies": { "is-windows": "^1.0.0" }, "engines": { "node": ">=4" } }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, "node_modules/browserslist": { "version": "4.28.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "license": "MIT", "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" }, "engines": { "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, "node_modules/bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" } }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true, "license": "MIT" }, "node_modules/builtin-modules": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-5.0.0.tgz", "integrity": "sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==", "dev": true, "license": "MIT", "engines": { "node": ">=18.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/call-bound": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { "version": "1.0.30001780", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001780.tgz", "integrity": "sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "license": "CC-BY-4.0" }, "node_modules/ccount": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", "dev": true, "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/change-case": { "version": "5.4.4", "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", "dev": true, "license": "MIT" }, "node_modules/char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/character-entities": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", "dev": true, "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/chardet": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", "dev": true, "license": "MIT" }, "node_modules/ci-info": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/sibiraj-s" } ], "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cjs-module-lexer": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", "dev": true, "license": "MIT" }, "node_modules/clean-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", "dev": true, "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" }, "engines": { "node": ">=4" } }, "node_modules/clean-regexp/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" }, "engines": { "node": ">=12" } }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" } }, "node_modules/collect-v8-coverage": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", "dev": true, "license": "MIT" }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, "engines": { "node": ">=7.0.0" } }, "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, "engines": { "node": ">= 0.8" } }, "node_modules/commander": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, "license": "MIT", "engines": { "node": ">= 12" } }, "node_modules/comment-parser": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.6.tgz", "integrity": "sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==", "dev": true, "license": "MIT", "engines": { "node": ">= 12.0.0" } }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, "license": "MIT" }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, "license": "MIT" }, "node_modules/core-js-compat": { "version": "3.49.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", "dev": true, "license": "MIT", "dependencies": { "browserslist": "^4.28.1" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" }, "engines": { "node": ">= 8" } }, "node_modules/data-view-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/data-view-byte-length": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/inspect-js" } }, "node_modules/data-view-byte-offset": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/dataloader": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz", "integrity": "sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" }, "engines": { "node": ">=6.0" }, "peerDependenciesMeta": { "supports-color": { "optional": true } } }, "node_modules/decode-named-character-reference": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", "dev": true, "license": "MIT", "dependencies": { "character-entities": "^2.0.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/dedent": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", "dev": true, "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, "peerDependenciesMeta": { "babel-plugin-macros": { "optional": true } } }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, "license": "MIT" }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "license": "MIT", "engines": { "node": ">=0.4.0" } }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/detect-indent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-7.0.2.tgz", "integrity": "sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==", "dev": true, "license": "MIT", "engines": { "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/devlop": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", "dev": true, "license": "MIT", "dependencies": { "dequal": "^2.0.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, "engines": { "node": ">=0.10.0" } }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true, "license": "MIT" }, "node_modules/electron-to-chromium": { "version": "1.5.321", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.321.tgz", "integrity": "sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==", "dev": true, "license": "ISC" }, "node_modules/emittery": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, "license": "MIT" }, "node_modules/enhanced-resolve": { "version": "5.20.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.0" }, "engines": { "node": ">=10.13.0" } }, "node_modules/enquirer": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8.6" } }, "node_modules/error-ex": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-abstract": { "version": "1.24.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", "dev": true, "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.3.0", "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.19" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/es-errors": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/es-iterator-helpers": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.3.1.tgz", "integrity": "sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.1", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.1.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.3.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.5", "math-intrinsics": "^1.1.0", "safe-array-concat": "^1.1.3" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-set-tostringtag": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-to-primitive": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, "license": "MIT", "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint": { "version": "9.39.4", "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.2", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.5", "@eslint/js": "9.39.4", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.14.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://eslint.org/donate" }, "peerDependencies": { "jiti": "*" }, "peerDependenciesMeta": { "jiti": { "optional": true } } }, "node_modules/eslint-compat-utils": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", "dev": true, "license": "MIT", "dependencies": { "semver": "^7.5.4" }, "engines": { "node": ">=12" }, "peerDependencies": { "eslint": ">=6.0.0" } }, "node_modules/eslint-compat-utils/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/eslint-config-prettier": { "version": "10.1.8", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, "funding": { "url": "https://opencollective.com/eslint-config-prettier" }, "peerDependencies": { "eslint": ">=7.0.0" } }, "node_modules/eslint-config-webpack": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/eslint-config-webpack/-/eslint-config-webpack-4.9.5.tgz", "integrity": "sha512-A4FtsxyBZfLF69zX0+18EolUMNSkua3vKAz9GV0XovQIbK/TqE8qenXziq+sMvzIWFwTJXhhtd5gFTUjccuZmQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint/js": "^9.39.2", "@eslint/markdown": "^8.0.1", "@stylistic/eslint-plugin": "^5.10.0", "detect-indent": "^7.0.2", "eslint-config-prettier": "^10.1.8", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jest": "^29.15.1", "eslint-plugin-jsdoc": "^62.9.0", "eslint-plugin-n": "^17.24.0", "eslint-plugin-prettier": "^5.5.5", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-unicorn": "^64.0.0", "globals": "^17.4.0", "jsonc-eslint-parser": "^3.1.0", "semver": "^7.7.4", "sort-package-json": "^3.6.0", "typescript-eslint": "^8.58.0" }, "engines": { "node": ">= 20.9.0" }, "peerDependencies": { "eslint": ">= 9.28.0", "typescript": ">=4.8.4 <7.0.0" }, "peerDependenciesMeta": { "typescript": { "optional": true } } }, "node_modules/eslint-config-webpack/node_modules/globals": { "version": "17.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", "dev": true, "license": "MIT", "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint-config-webpack/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", "resolve": "^1.22.4" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-module-utils": { "version": "2.12.1", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "dev": true, "license": "MIT", "dependencies": { "debug": "^3.2.7" }, "engines": { "node": ">=4" }, "peerDependenciesMeta": { "eslint": { "optional": true } } }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-es-x": { "version": "7.8.0", "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", "dev": true, "funding": [ "https://github.com/sponsors/ota-meshi", "https://opencollective.com/eslint" ], "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.1.2", "@eslint-community/regexpp": "^4.11.0", "eslint-compat-utils": "^0.5.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { "eslint": ">=8" } }, "node_modules/eslint-plugin-import": { "version": "2.32.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", "array.prototype.findlastindex": "^1.2.6", "array.prototype.flat": "^1.3.3", "array.prototype.flatmap": "^1.3.3", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.12.1", "hasown": "^2.0.2", "is-core-module": "^2.16.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "object.groupby": "^1.0.3", "object.values": "^1.2.1", "semver": "^6.3.1", "string.prototype.trimend": "^1.0.9", "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" }, "peerDependencies": { "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-jest": { "version": "29.15.2", "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-29.15.2.tgz", "integrity": "sha512-kEN4r9RZl1xcsb4arGq89LrcVdOUFII/JSCwtTPJyv16mDwmPrcuEQwpxqZHeINvcsd7oK5O/rhdGlxFRaZwvQ==", "dev": true, "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^8.0.0" }, "engines": { "node": "^20.12.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "@typescript-eslint/eslint-plugin": "^8.0.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "jest": "*", "typescript": ">=4.8.4 <7.0.0" }, "peerDependenciesMeta": { "@typescript-eslint/eslint-plugin": { "optional": true }, "jest": { "optional": true }, "typescript": { "optional": true } } }, "node_modules/eslint-plugin-jsdoc": { "version": "62.9.0", "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.9.0.tgz", "integrity": "sha512-PY7/X4jrVgoIDncUmITlUqK546Ltmx/Pd4Hdsu4CvSjryQZJI2mEV4vrdMufyTetMiZ5taNSqvK//BTgVUlNkA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "@es-joy/jsdoccomment": "~0.86.0", "@es-joy/resolve.exports": "1.2.0", "are-docs-informative": "^0.0.2", "comment-parser": "1.4.6", "debug": "^4.4.3", "escape-string-regexp": "^4.0.0", "espree": "^11.2.0", "esquery": "^1.7.0", "html-entities": "^2.6.0", "object-deep-merge": "^2.0.0", "parse-imports-exports": "^0.2.4", "semver": "^7.7.4", "spdx-expression-parse": "^4.0.0", "to-valid-identifier": "^1.0.0" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0" } }, "node_modules/eslint-plugin-jsdoc/node_modules/eslint-visitor-keys": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, "license": "Apache-2.0", "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-plugin-jsdoc/node_modules/espree": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.16.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^5.0.1" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-plugin-jsdoc/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/eslint-plugin-n": { "version": "17.24.0", "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.24.0.tgz", "integrity": "sha512-/gC7/KAYmfNnPNOb3eu8vw+TdVnV0zhdQwexsw6FLXbhzroVj20vRn2qL8lDWDGnAQ2J8DhdfvXxX9EoxvERvw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.5.0", "enhanced-resolve": "^5.17.1", "eslint-plugin-es-x": "^7.8.0", "get-tsconfig": "^4.8.1", "globals": "^15.11.0", "globrex": "^0.1.2", "ignore": "^5.3.2", "semver": "^7.6.3", "ts-declaration-location": "^1.0.6" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" }, "peerDependencies": { "eslint": ">=8.23.0" } }, "node_modules/eslint-plugin-n/node_modules/globals": { "version": "15.15.0", "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true, "license": "MIT", "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint-plugin-n/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/eslint-plugin-prettier": { "version": "5.5.5", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", "dev": true, "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.1", "synckit": "^0.11.12" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint-plugin-prettier" }, "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", "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 } } }, "node_modules/eslint-plugin-react": { "version": "7.37.5", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", "dev": true, "license": "MIT", "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.3", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.9", "object.fromentries": "^2.0.8", "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", "string.prototype.matchall": "^4.0.12", "string.prototype.repeat": "^1.0.0" }, "engines": { "node": ">=4" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "node_modules/eslint-plugin-react-hooks": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.24.4", "@babel/parser": "^7.24.4", "hermes-parser": "^0.25.1", "zod": "^3.25.0 || ^4.0.0", "zod-validation-error": "^3.5.0 || ^4.0.0" }, "engines": { "node": ">=18" }, "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.6", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz", "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "is-core-module": "^2.16.1", "node-exports-info": "^1.6.0", "object-keys": "^1.1.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-unicorn": { "version": "64.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-64.0.0.tgz", "integrity": "sha512-rNZwalHh8i0UfPlhNwg5BTUO1CMdKNmjqe+TgzOTZnpKoi8VBgsW7u9qCHIdpxEzZ1uwrJrPF0uRb7l//K38gA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "@eslint-community/eslint-utils": "^4.9.1", "change-case": "^5.4.4", "ci-info": "^4.4.0", "clean-regexp": "^1.0.0", "core-js-compat": "^3.49.0", "find-up-simple": "^1.0.1", "globals": "^17.4.0", "indent-string": "^5.0.0", "is-builtin-module": "^5.0.0", "jsesc": "^3.1.0", "pluralize": "^8.0.0", "regexp-tree": "^0.1.27", "regjsparser": "^0.13.0", "semver": "^7.7.4", "strip-indent": "^4.1.1" }, "engines": { "node": "^20.10.0 || >=21.0.0" }, "funding": { "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" }, "peerDependencies": { "eslint": ">=9.38.0" } }, "node_modules/eslint-plugin-unicorn/node_modules/globals": { "version": "17.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", "dev": true, "license": "MIT", "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint-plugin-unicorn/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/eslint-scope": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-visitor-keys": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/eslint/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/p-locate": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/espree": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" }, "engines": { "node": ">=4" } }, "node_modules/esquery": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, "engines": { "node": ">=0.10" } }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, "engines": { "node": ">=4.0" } }, "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, "node_modules/exit-x": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/expect": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz", "integrity": "sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==", "dev": true, "license": "MIT", "dependencies": { "@jest/expect-utils": "30.3.0", "@jest/get-type": "30.1.0", "jest-matcher-utils": "30.3.0", "jest-message-util": "30.3.0", "jest-mock": "30.3.0", "jest-util": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/extendable-error": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz", "integrity": "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==", "dev": true, "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, "license": "MIT" }, "node_modules/fast-diff": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true, "license": "Apache-2.0" }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" } }, "node_modules/fast-glob/node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, "engines": { "node": ">= 6" } }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, "license": "MIT" }, "node_modules/fastq": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/fault": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", "dev": true, "license": "MIT", "dependencies": { "format": "^0.2.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" } }, "node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "license": "MIT", "engines": { "node": ">=12.0.0" }, "peerDependencies": { "picomatch": "^3 || ^4" }, "peerDependenciesMeta": { "picomatch": { "optional": true } } }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "license": "MIT", "dependencies": { "flat-cache": "^4.0.0" }, "engines": { "node": ">=16.0.0" } }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, "engines": { "node": ">=8" } }, "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/find-up-simple": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", "dev": true, "license": "MIT", "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/flat-cache": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" }, "engines": { "node": ">=16" } }, "node_modules/flatted": { "version": "3.4.2", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, "node_modules/follow-redirects": { "version": "1.16.0", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "dev": true, "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], "license": "MIT", "engines": { "node": ">=4.0" }, "peerDependenciesMeta": { "debug": { "optional": true } } }, "node_modules/for-each": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, "license": "MIT", "dependencies": { "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/foreground-child": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "license": "ISC", "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/foreground-child/node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "license": "ISC", "engines": { "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/form-data": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { "node": ">= 6" } }, "node_modules/format": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", "dev": true, "engines": { "node": ">=0.4.x" } }, "node_modules/fs-extra": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" }, "engines": { "node": ">=6 <7 || >=8" } }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/function.prototype.name": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "functions-have-names": "^1.2.3", "hasown": "^2.0.2", "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/generator-function": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, "license": "MIT", "engines": { "node": ">=8.0.0" } }, "node_modules/get-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/get-symbol-description": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-tsconfig": { "version": "4.13.6", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", "dev": true, "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" }, "funding": { "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, "node_modules/git-hooks-list": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-4.2.1.tgz", "integrity": "sha512-WNvqJjOxxs/8ZP9+DWdwWJ7cDsd60NHf39XnD82pDVrKO5q7xfPqpkK6hwEAmBa/ZSEE4IOoR75EzbbIuwGlMw==", "dev": true, "license": "MIT", "funding": { "url": "https://github.com/fisker/git-hooks-list?sponsor=1" } }, "node_modules/github-slugger": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", "dev": true, "license": "ISC" }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, "engines": { "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, "engines": { "node": ">=10.13.0" } }, "node_modules/globals": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globalthis": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.2.9", "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/globrex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", "dev": true, "license": "MIT" }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, "node_modules/has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.0" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-tostringtag": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/hermes-estree": { "version": "0.25.1", "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", "dev": true, "license": "MIT" }, "node_modules/hermes-parser": { "version": "0.25.1", "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", "dev": true, "license": "MIT", "dependencies": { "hermes-estree": "0.25.1" } }, "node_modules/html-entities": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/mdevils" }, { "type": "patreon", "url": "https://patreon.com/mdevils" } ], "license": "MIT" }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, "license": "MIT" }, "node_modules/human-id": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/human-id/-/human-id-4.1.3.tgz", "integrity": "sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==", "dev": true, "license": "MIT", "bin": { "human-id": "dist/cli.js" } }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } }, "node_modules/iconv-lite": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "dev": true, "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/express" } }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" }, "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/import-fresh/node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/import-local": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" }, "bin": { "import-local-fixture": "fixtures/cli.js" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, "license": "ISC" }, "node_modules/internal-slot": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/is-array-buffer": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, "license": "MIT" }, "node_modules/is-async-function": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, "license": "MIT", "dependencies": { "async-function": "^1.0.0", "call-bound": "^1.0.3", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-bigint": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, "license": "MIT", "dependencies": { "has-bigints": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-boolean-object": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-builtin-module": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-5.0.0.tgz", "integrity": "sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==", "dev": true, "license": "MIT", "dependencies": { "builtin-modules": "^5.0.0" }, "engines": { "node": ">=18.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-core-module": { "version": "2.16.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-data-view": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-date-object": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-finalizationregistry": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-generator-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/is-generator-function": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.4", "generator-function": "^2.0.0", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, "engines": { "node": ">=0.10.0" } }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-set": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-shared-array-buffer": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "license": "MIT", "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-string": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-subdir": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz", "integrity": "sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==", "dev": true, "license": "MIT", "dependencies": { "better-path-resolve": "1.0.0" }, "engines": { "node": ">=4" } }, "node_modules/is-symbol": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-typed-array": { "version": "1.1.15", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, "license": "MIT", "dependencies": { "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakref": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakset": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, "license": "ISC" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", "@babel/parser": "^7.23.9", "@istanbuljs/schema": "^0.1.3", "istanbul-lib-coverage": "^3.2.0", "semver": "^7.5.4" }, "engines": { "node": ">=10" } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/istanbul-lib-report": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { "node": ">=10" } }, "node_modules/istanbul-lib-source-maps": { "version": "5.0.6", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "@jridgewell/trace-mapping": "^0.3.23", "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0" }, "engines": { "node": ">=10" } }, "node_modules/istanbul-reports": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/iterator.prototype": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "get-proto": "^1.0.0", "has-symbols": "^1.1.0", "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, "funding": { "url": "https://github.com/sponsors/isaacs" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/jest": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest/-/jest-30.3.0.tgz", "integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==", "dev": true, "license": "MIT", "dependencies": { "@jest/core": "30.3.0", "@jest/types": "30.3.0", "import-local": "^3.2.0", "jest-cli": "30.3.0" }, "bin": { "jest": "bin/jest.js" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { "node-notifier": { "optional": true } } }, "node_modules/jest-changed-files": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.3.0.tgz", "integrity": "sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==", "dev": true, "license": "MIT", "dependencies": { "execa": "^5.1.1", "jest-util": "30.3.0", "p-limit": "^3.1.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-changed-files/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-circus": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.3.0.tgz", "integrity": "sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==", "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "30.3.0", "@jest/expect": "30.3.0", "@jest/test-result": "30.3.0", "@jest/types": "30.3.0", "@types/node": "*", "chalk": "^4.1.2", "co": "^4.6.0", "dedent": "^1.6.0", "is-generator-fn": "^2.1.0", "jest-each": "30.3.0", "jest-matcher-utils": "30.3.0", "jest-message-util": "30.3.0", "jest-runtime": "30.3.0", "jest-snapshot": "30.3.0", "jest-util": "30.3.0", "p-limit": "^3.1.0", "pretty-format": "30.3.0", "pure-rand": "^7.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.6" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-circus/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-cli": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.3.0.tgz", "integrity": "sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==", "dev": true, "license": "MIT", "dependencies": { "@jest/core": "30.3.0", "@jest/test-result": "30.3.0", "@jest/types": "30.3.0", "chalk": "^4.1.2", "exit-x": "^0.2.2", "import-local": "^3.2.0", "jest-config": "30.3.0", "jest-util": "30.3.0", "jest-validate": "30.3.0", "yargs": "^17.7.2" }, "bin": { "jest": "bin/jest.js" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { "node-notifier": { "optional": true } } }, "node_modules/jest-config": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.3.0.tgz", "integrity": "sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.27.4", "@jest/get-type": "30.1.0", "@jest/pattern": "30.0.1", "@jest/test-sequencer": "30.3.0", "@jest/types": "30.3.0", "babel-jest": "30.3.0", "chalk": "^4.1.2", "ci-info": "^4.2.0", "deepmerge": "^4.3.1", "glob": "^10.5.0", "graceful-fs": "^4.2.11", "jest-circus": "30.3.0", "jest-docblock": "30.2.0", "jest-environment-node": "30.3.0", "jest-regex-util": "30.0.1", "jest-resolve": "30.3.0", "jest-runner": "30.3.0", "jest-util": "30.3.0", "jest-validate": "30.3.0", "parse-json": "^5.2.0", "pretty-format": "30.3.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "peerDependencies": { "@types/node": "*", "esbuild-register": ">=3.4.0", "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, "esbuild-register": { "optional": true }, "ts-node": { "optional": true } } }, "node_modules/jest-config/node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/jest-config/node_modules/glob": { "version": "10.5.0", "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/jest-config/node_modules/minimatch": { "version": "9.0.9", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/jest-diff": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", "dev": true, "license": "MIT", "dependencies": { "@jest/diff-sequences": "30.3.0", "@jest/get-type": "30.1.0", "chalk": "^4.1.2", "pretty-format": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-docblock": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", "dev": true, "license": "MIT", "dependencies": { "detect-newline": "^3.1.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-each": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.3.0.tgz", "integrity": "sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==", "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", "@jest/types": "30.3.0", "chalk": "^4.1.2", "jest-util": "30.3.0", "pretty-format": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-environment-node": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.3.0.tgz", "integrity": "sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==", "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "30.3.0", "@jest/fake-timers": "30.3.0", "@jest/types": "30.3.0", "@types/node": "*", "jest-mock": "30.3.0", "jest-util": "30.3.0", "jest-validate": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-haste-map": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz", "integrity": "sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==", "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.3.0", "@types/node": "*", "anymatch": "^3.1.3", "fb-watchman": "^2.0.2", "graceful-fs": "^4.2.11", "jest-regex-util": "30.0.1", "jest-util": "30.3.0", "jest-worker": "30.3.0", "picomatch": "^4.0.3", "walker": "^1.0.8" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" }, "optionalDependencies": { "fsevents": "^2.3.3" } }, "node_modules/jest-leak-detector": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz", "integrity": "sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==", "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", "pretty-format": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-matcher-utils": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", "chalk": "^4.1.2", "jest-diff": "30.3.0", "pretty-format": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-message-util": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", "@jest/types": "30.3.0", "@types/stack-utils": "^2.0.3", "chalk": "^4.1.2", "graceful-fs": "^4.2.11", "picomatch": "^4.0.3", "pretty-format": "30.3.0", "slash": "^3.0.0", "stack-utils": "^2.0.6" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-mock": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.3.0", "@types/node": "*", "jest-util": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, "license": "MIT", "engines": { "node": ">=6" }, "peerDependencies": { "jest-resolve": "*" }, "peerDependenciesMeta": { "jest-resolve": { "optional": true } } }, "node_modules/jest-regex-util": { "version": "30.0.1", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", "dev": true, "license": "MIT", "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-resolve": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.3.0.tgz", "integrity": "sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==", "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.2", "graceful-fs": "^4.2.11", "jest-haste-map": "30.3.0", "jest-pnp-resolver": "^1.2.3", "jest-util": "30.3.0", "jest-validate": "30.3.0", "slash": "^3.0.0", "unrs-resolver": "^1.7.11" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-resolve-dependencies": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.3.0.tgz", "integrity": "sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==", "dev": true, "license": "MIT", "dependencies": { "jest-regex-util": "30.0.1", "jest-snapshot": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-runner": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.3.0.tgz", "integrity": "sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==", "dev": true, "license": "MIT", "dependencies": { "@jest/console": "30.3.0", "@jest/environment": "30.3.0", "@jest/test-result": "30.3.0", "@jest/transform": "30.3.0", "@jest/types": "30.3.0", "@types/node": "*", "chalk": "^4.1.2", "emittery": "^0.13.1", "exit-x": "^0.2.2", "graceful-fs": "^4.2.11", "jest-docblock": "30.2.0", "jest-environment-node": "30.3.0", "jest-haste-map": "30.3.0", "jest-leak-detector": "30.3.0", "jest-message-util": "30.3.0", "jest-resolve": "30.3.0", "jest-runtime": "30.3.0", "jest-util": "30.3.0", "jest-watcher": "30.3.0", "jest-worker": "30.3.0", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-runner/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-runtime": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.3.0.tgz", "integrity": "sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==", "dev": true, "license": "MIT", "dependencies": { "@jest/environment": "30.3.0", "@jest/fake-timers": "30.3.0", "@jest/globals": "30.3.0", "@jest/source-map": "30.0.1", "@jest/test-result": "30.3.0", "@jest/transform": "30.3.0", "@jest/types": "30.3.0", "@types/node": "*", "chalk": "^4.1.2", "cjs-module-lexer": "^2.1.0", "collect-v8-coverage": "^1.0.2", "glob": "^10.5.0", "graceful-fs": "^4.2.11", "jest-haste-map": "30.3.0", "jest-message-util": "30.3.0", "jest-mock": "30.3.0", "jest-regex-util": "30.0.1", "jest-resolve": "30.3.0", "jest-snapshot": "30.3.0", "jest-util": "30.3.0", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-runtime/node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/jest-runtime/node_modules/glob": { "version": "10.5.0", "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/jest-runtime/node_modules/minimatch": { "version": "9.0.9", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/jest-runtime/node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-snapshot": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.3.0.tgz", "integrity": "sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.27.4", "@babel/generator": "^7.27.5", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.27.1", "@babel/types": "^7.27.3", "@jest/expect-utils": "30.3.0", "@jest/get-type": "30.1.0", "@jest/snapshot-utils": "30.3.0", "@jest/transform": "30.3.0", "@jest/types": "30.3.0", "babel-preset-current-node-syntax": "^1.2.0", "chalk": "^4.1.2", "expect": "30.3.0", "graceful-fs": "^4.2.11", "jest-diff": "30.3.0", "jest-matcher-utils": "30.3.0", "jest-message-util": "30.3.0", "jest-util": "30.3.0", "pretty-format": "30.3.0", "semver": "^7.7.2", "synckit": "^0.11.8" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/jest-util": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", "dev": true, "license": "MIT", "dependencies": { "@jest/types": "30.3.0", "@types/node": "*", "chalk": "^4.1.2", "ci-info": "^4.2.0", "graceful-fs": "^4.2.11", "picomatch": "^4.0.3" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-validate": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz", "integrity": "sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==", "dev": true, "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", "@jest/types": "30.3.0", "camelcase": "^6.3.0", "chalk": "^4.1.2", "leven": "^3.1.0", "pretty-format": "30.3.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/jest-watcher": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.3.0.tgz", "integrity": "sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==", "dev": true, "license": "MIT", "dependencies": { "@jest/test-result": "30.3.0", "@jest/types": "30.3.0", "@types/node": "*", "ansi-escapes": "^4.3.2", "chalk": "^4.1.2", "emittery": "^0.13.1", "jest-util": "30.3.0", "string-length": "^4.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-worker": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz", "integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", "@ungap/structured-clone": "^1.3.0", "jest-util": "30.3.0", "merge-stream": "^2.0.0", "supports-color": "^8.1.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT" }, "node_modules/js-yaml": { "version": "3.14.2", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "node_modules/jsdoc-type-pratt-parser": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-7.2.0.tgz", "integrity": "sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" } }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { "node": ">=6" } }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true, "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "license": "MIT", "bin": { "json5": "lib/cli.js" }, "engines": { "node": ">=6" } }, "node_modules/jsonc-eslint-parser": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-3.1.0.tgz", "integrity": "sha512-75EA7EWZExL/j+MDKQrRbdzcRI2HOkRlmUw8fZJc1ioqFEOvBsq7Rt+A6yCxOt9w/TYNpkt52gC6nm/g5tFIng==", "dev": true, "license": "MIT", "dependencies": { "acorn": "^8.5.0", "eslint-visitor-keys": "^5.0.0", "semver": "^7.3.5" }, "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://github.com/sponsors/ota-meshi" } }, "node_modules/jsonc-eslint-parser/node_modules/eslint-visitor-keys": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, "license": "Apache-2.0", "engines": { "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/jsonc-eslint-parser/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", "object.assign": "^4.1.4", "object.values": "^1.1.6" }, "engines": { "node": ">=4.0" } }, "node_modules/katex": { "version": "0.16.45", "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.45.tgz", "integrity": "sha512-pQpZbdBu7wCTmQUh7ufPmLr0pFoObnGUoL/yhtwJDgmmQpbkg/0HSVti25Fu4rmd1oCR6NGWe9vqTWuWv3GcNA==", "dev": true, "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" ], "license": "MIT", "dependencies": { "commander": "^8.3.0" }, "bin": { "katex": "cli.js" } }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" }, "engines": { "node": ">= 0.8.0" } }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true, "license": "MIT" }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, "engines": { "node": ">=8" } }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true, "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, "license": "MIT" }, "node_modules/lodash.startcase": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", "dev": true, "license": "MIT" }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", "dev": true, "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "license": "MIT", "dependencies": { "semver": "^7.5.3" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/make-dir/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" } }, "node_modules/markdown-table": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", "dev": true, "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/mdast-util-find-and-replace": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mdast-util-from-markdown": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "mdast-util-to-string": "^4.0.0", "micromark": "^4.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "unist-util-stringify-position": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-frontmatter": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "escape-string-regexp": "^5.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-extension-frontmatter": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mdast-util-gfm": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", "dev": true, "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", "mdast-util-gfm-footnote": "^2.0.0", "mdast-util-gfm-strikethrough": "^2.0.0", "mdast-util-gfm-table": "^2.0.0", "mdast-util-gfm-task-list-item": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-gfm-autolink-literal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-find-and-replace": "^3.0.0", "micromark-util-character": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-gfm-footnote": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-gfm-strikethrough": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-gfm-table": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "markdown-table": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-gfm-task-list-item": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-math": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-3.0.0.tgz", "integrity": "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==", "dev": true, "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "longest-streak": "^3.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.1.0", "unist-util-remove-position": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-phrasing": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-to-markdown": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "longest-streak": "^3.0.0", "mdast-util-phrasing": "^4.0.0", "mdast-util-to-string": "^4.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-to-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", "dev": true, "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true, "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromark": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-core-commonmark": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-extension-frontmatter": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", "dev": true, "license": "MIT", "dependencies": { "fault": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-gfm": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", "dev": true, "license": "MIT", "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", "micromark-extension-gfm-strikethrough": "^2.0.0", "micromark-extension-gfm-table": "^2.0.0", "micromark-extension-gfm-tagfilter": "^2.0.0", "micromark-extension-gfm-task-list-item": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-gfm-autolink-literal": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", "dev": true, "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-gfm-footnote": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", "dev": true, "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-gfm-strikethrough": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", "dev": true, "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-gfm-table": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", "dev": true, "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-gfm-tagfilter": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", "dev": true, "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-gfm-task-list-item": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", "dev": true, "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-math": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", "dev": true, "license": "MIT", "dependencies": { "@types/katex": "^0.16.0", "devlop": "^1.0.0", "katex": "^0.16.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/micromark-factory-destination": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-factory-label": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-factory-space": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-factory-title": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-factory-whitespace": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-util-character": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-util-chunked": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "node_modules/micromark-util-classify-character": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-util-combine-extensions": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-util-decode-numeric-character-reference": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "node_modules/micromark-util-decode-string": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "node_modules/micromark-util-encode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-util-html-tag-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-util-normalize-identifier": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "node_modules/micromark-util-resolve-all": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-util-sanitize-uri": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-symbol": "^2.0.0" } }, "node_modules/micromark-util-subtokenize": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-util-symbol": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromark-util-types": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", "dev": true, "funding": [ { "type": "GitHub Sponsors", "url": "https://github.com/sponsors/unifiedjs" }, { "type": "OpenCollective", "url": "https://opencollective.com/unified" } ], "license": "MIT" }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" } }, "node_modules/micromatch/node_modules/picomatch": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { "node": ">=8.6" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" } }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/minimatch": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, "engines": { "node": "*" } }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minipass": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, "node_modules/napi-postinstall": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", "dev": true, "license": "MIT", "bin": { "napi-postinstall": "lib/cli.js" }, "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/napi-postinstall" } }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, "license": "MIT" }, "node_modules/node-exports-info": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz", "integrity": "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==", "dev": true, "license": "MIT", "dependencies": { "array.prototype.flatmap": "^1.3.3", "es-errors": "^1.3.0", "object.entries": "^1.1.9", "semver": "^6.3.1" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, "engines": { "node": "4.x || >=6.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "peerDependenciesMeta": { "encoding": { "optional": true } } }, "node_modules/node-gyp-build": { "version": "4.8.4", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", "dev": true, "license": "MIT", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", "node-gyp-build-test": "build-test.js" } }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true, "license": "MIT" }, "node_modules/node-releases": { "version": "2.0.36", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", "dev": true, "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object-deep-merge": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/object-deep-merge/-/object-deep-merge-2.0.0.tgz", "integrity": "sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==", "dev": true, "license": "MIT" }, "node_modules/object-inspect": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0", "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.entries": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-object-atoms": "^1.1.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2", "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.groupby": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-abstract": "^1.23.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.values": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" } }, "node_modules/outdent": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz", "integrity": "sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==", "dev": true, "license": "MIT" }, "node_modules/own-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", "dev": true, "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/p-filter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", "dev": true, "license": "MIT", "dependencies": { "p-map": "^2.0.0" }, "engines": { "node": ">=8" } }, "node_modules/p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, "engines": { "node": ">=8" } }, "node_modules/p-map": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "dev": true, "license": "BlueOak-1.0.0" }, "node_modules/package-manager-detector": { "version": "0.2.11", "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz", "integrity": "sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==", "dev": true, "license": "MIT", "dependencies": { "quansync": "^0.2.7" } }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, "engines": { "node": ">=6" } }, "node_modules/parse-imports-exports": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", "dev": true, "license": "MIT", "dependencies": { "parse-statements": "1.0.11" } }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/parse-statements": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", "dev": true, "license": "MIT" }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true, "license": "MIT" }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, "license": "ISC" }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/pirates": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "dev": true, "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, "engines": { "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/prettier-1": { "name": "prettier", "version": "1.19.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", "dev": true, "license": "MIT", "bin": { "prettier": "bin-prettier.js" }, "engines": { "node": ">=4" } }, "node_modules/prettier-linter-helpers": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", "dev": true, "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, "engines": { "node": ">=6.0.0" } }, "node_modules/pretty-format": { "version": "30.3.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", "dev": true, "license": "MIT", "dependencies": { "@jest/schemas": "30.0.5", "ansi-styles": "^5.2.0", "react-is": "^18.3.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/pretty-format/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, "license": "MIT" }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "node_modules/proxy-from-env": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", "dev": true, "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/pure-rand": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", "dev": true, "funding": [ { "type": "individual", "url": "https://github.com/sponsors/dubzzz" }, { "type": "opencollective", "url": "https://opencollective.com/fast-check" } ], "license": "MIT" }, "node_modules/quansync": { "version": "0.2.11", "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", "dev": true, "funding": [ { "type": "individual", "url": "https://github.com/sponsors/antfu" }, { "type": "individual", "url": "https://github.com/sponsors/sxzz" } ], "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/feross" }, { "type": "patreon", "url": "https://www.patreon.com/feross" }, { "type": "consulting", "url": "https://feross.org/support" } ], "license": "MIT" }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true, "license": "MIT" }, "node_modules/read-yaml-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz", "integrity": "sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==", "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.1.5", "js-yaml": "^3.6.1", "pify": "^4.0.1", "strip-bom": "^3.0.0" }, "engines": { "node": ">=6" } }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true, "license": "MIT" }, "node_modules/regenerate-unicode-properties": { "version": "10.2.2", "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", "dev": true, "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, "engines": { "node": ">=4" } }, "node_modules/regexp-tree": { "version": "0.1.27", "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", "dev": true, "license": "MIT", "bin": { "regexp-tree": "bin/regexp-tree" } }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/regexpu-core": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", "dev": true, "license": "MIT", "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.2", "regjsgen": "^0.8.0", "regjsparser": "^0.13.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.2.1" }, "engines": { "node": ">=4" } }, "node_modules/regjsgen": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", "dev": true, "license": "MIT" }, "node_modules/regjsparser": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "jsesc": "~3.1.0" }, "bin": { "regjsparser": "bin/parser" } }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/reserved-identifiers": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/reserved-identifiers/-/reserved-identifiers-1.2.0.tgz", "integrity": "sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==", "dev": true, "license": "MIT", "engines": { "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/resolve": { "version": "1.22.11", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, "license": "MIT", "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, "engines": { "node": ">=8" } }, "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, "license": "MIT", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/feross" }, { "type": "patreon", "url": "https://www.patreon.com/feross" }, { "type": "consulting", "url": "https://feross.org/support" } ], "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "engines": { "node": ">=0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/safe-push-apply": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-regex": "^1.2.1" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "license": "MIT" }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/set-function-name": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/set-proto": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", "dev": true, "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, "engines": { "node": ">=8" } }, "node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/side-channel": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/side-channel-list": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/side-channel-map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/side-channel-weakmap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3", "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/sort-object-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-2.1.0.tgz", "integrity": "sha512-SOiEnthkJKPv2L6ec6HMwhUcN0/lppkeYuN1x63PbyPRrgSPIuBJCiYxYyvWRTtjMlOi14vQUCGUJqS6PLVm8g==", "dev": true, "license": "MIT" }, "node_modules/sort-package-json": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-3.6.1.tgz", "integrity": "sha512-Chgejw1+10p2D0U2tB7au1lHtz6TkFnxmvZktyBCRyV0GgmF6nl1IxXxAsPtJVsUyg/fo+BfCMAVVFUVRkAHrQ==", "dev": true, "license": "MIT", "dependencies": { "detect-indent": "^7.0.2", "detect-newline": "^4.0.1", "git-hooks-list": "^4.1.1", "is-plain-obj": "^4.1.0", "semver": "^7.7.3", "sort-object-keys": "^2.0.1", "tinyglobby": "^0.2.15" }, "bin": { "sort-package-json": "cli.js" }, "engines": { "node": ">=20" } }, "node_modules/sort-package-json/node_modules/detect-newline": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-4.0.1.tgz", "integrity": "sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==", "dev": true, "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/sort-package-json/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "node_modules/spawndamnit": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spawndamnit/-/spawndamnit-3.0.1.tgz", "integrity": "sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==", "dev": true, "license": "SEE LICENSE IN LICENSE", "dependencies": { "cross-spawn": "^7.0.5", "signal-exit": "^4.0.1" } }, "node_modules/spawndamnit/node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "license": "ISC", "engines": { "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true, "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", "dev": true, "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { "version": "3.0.23", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", "dev": true, "license": "CC0-1.0" }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" }, "engines": { "node": ">=10" } }, "node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/stop-iteration-iterator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "internal-slot": "^1.1.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/string-length": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, "license": "MIT", "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" }, "engines": { "node": ">=10" } }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, "node_modules/string-width-cjs": { "name": "string-width", "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, "node_modules/string.prototype.matchall": { "version": "4.0.12", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.repeat": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", "dev": true, "license": "MIT", "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" } }, "node_modules/string.prototype.trim": { "version": "1.2.10", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-object-atoms": "^1.0.0", "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimend": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, "node_modules/strip-ansi-cjs": { "name": "strip-ansi", "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/strip-indent": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.1.1.tgz", "integrity": "sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==", "dev": true, "license": "MIT", "engines": { "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/synckit": { "version": "0.11.12", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", "dev": true, "license": "MIT", "dependencies": { "@pkgr/core": "^0.2.9" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/synckit" } }, "node_modules/tapable": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", "dev": true, "license": "MIT", "engines": { "node": ">=6" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, "node_modules/term-size": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", "dev": true, "license": "MIT", "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", "minimatch": "^3.0.4" }, "engines": { "node": ">=8" } }, "node_modules/tinybench": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-6.0.0.tgz", "integrity": "sha512-BWlWpVbbZXaYjRV0twGLNQO00Zj4HA/sjLOQP2IvzQqGwRGp+2kh7UU3ijyJ3ywFRogYDRbiHDMrUOfaMnN56g==", "dev": true, "license": "MIT", "engines": { "node": ">=20.0.0" } }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, "license": "MIT", "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" }, "funding": { "url": "https://github.com/sponsors/SuperchupuDev" } }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true, "license": "BSD-3-Clause" }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, "engines": { "node": ">=8.0" } }, "node_modules/to-valid-identifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-valid-identifier/-/to-valid-identifier-1.0.0.tgz", "integrity": "sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==", "dev": true, "license": "MIT", "dependencies": { "@sindresorhus/base62": "^1.0.0", "reserved-identifiers": "^1.0.0" }, "engines": { "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true, "license": "MIT" }, "node_modules/ts-api-utils": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", "dev": true, "license": "MIT", "engines": { "node": ">=18.12" }, "peerDependencies": { "typescript": ">=4.8.4" } }, "node_modules/ts-declaration-location": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/ts-declaration-location/-/ts-declaration-location-1.0.7.tgz", "integrity": "sha512-EDyGAwH1gO0Ausm9gV6T2nUvBgXT5kGoCMJPllOaooZ+4VvJiKBdZE7wK18N1deEowhcUptS+5GXZK8U/fvpwA==", "dev": true, "funding": [ { "type": "ko-fi", "url": "https://ko-fi.com/rebeccastevens" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/ts-declaration-location" } ], "license": "BSD-3-Clause", "dependencies": { "picomatch": "^4.0.2" }, "peerDependencies": { "typescript": ">=4.0.0" } }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "node_modules/tsconfig-paths/node_modules/json5": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, "bin": { "json5": "lib/cli.js" } }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD", "optional": true }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, "engines": { "node": ">= 0.8.0" } }, "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typed-array-buffer": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typed-array-byte-offset": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.15", "reflect.getprototypeof": "^1.0.9" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typed-array-length": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { "node": ">=14.17" } }, "node_modules/typescript-eslint": { "version": "8.58.0", "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.0.tgz", "integrity": "sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==", "dev": true, "license": "MIT", "dependencies": { "@typescript-eslint/eslint-plugin": "8.58.0", "@typescript-eslint/parser": "8.58.0", "@typescript-eslint/typescript-estree": "8.58.0", "@typescript-eslint/utils": "8.58.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/undici-types": { "version": "7.18.2", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" }, "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-value-ecmascript": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unist-util-is": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/unist-util-remove-position": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/unist-util-stringify-position": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/unist-util-visit": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/unist-util-visit-parents": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", "dev": true, "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, "license": "MIT", "engines": { "node": ">= 4.0.0" } }, "node_modules/unrs-resolver": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { "napi-postinstall": "^0.3.0" }, "funding": { "url": "https://opencollective.com/unrs-resolver" }, "optionalDependencies": { "@unrs/resolver-binding-android-arm-eabi": "1.11.1", "@unrs/resolver-binding-android-arm64": "1.11.1", "@unrs/resolver-binding-darwin-arm64": "1.11.1", "@unrs/resolver-binding-darwin-x64": "1.11.1", "@unrs/resolver-binding-freebsd-x64": "1.11.1", "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-musl": "1.11.1", "@unrs/resolver-binding-wasm32-wasi": "1.11.1", "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" } }, "node_modules/update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/browserslist" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "license": "MIT", "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" } }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/v8-to-istanbul": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" } }, "node_modules/walker": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" } }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true, "license": "BSD-2-Clause" }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "bin/node-which" }, "engines": { "node": ">= 8" } }, "node_modules/which-boxed-primitive": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dev": true, "license": "MIT", "dependencies": { "is-bigint": "^1.1.0", "is-boolean-object": "^1.2.1", "is-number-object": "^1.1.1", "is-string": "^1.1.1", "is-symbol": "^1.1.1" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-builtin-type": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", "is-date-object": "^1.1.0", "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-collection": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, "license": "MIT", "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", "is-weakmap": "^2.0.2", "is-weakset": "^2.0.3" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-typed-array": { "version": "1.1.20", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "dev": true, "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrap-ansi-cjs": { "name": "wrap-ansi", "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, "license": "ISC" }, "node_modules/write-file-atomic": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^4.0.1" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/write-file-atomic/node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "license": "ISC", "engines": { "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true, "license": "ISC" }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" }, "engines": { "node": ">=12" } }, "node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/zod": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" } }, "node_modules/zod-validation-error": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", "dev": true, "license": "MIT", "engines": { "node": ">=18.0.0" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", "dev": true, "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } } } } webpack-tapable-8ca4f9d/package.json000066400000000000000000000036511517167660300175470ustar00rootroot00000000000000{ "name": "tapable", "version": "2.3.3", "description": "Just a little module for plugins.", "homepage": "https://github.com/webpack/tapable", "repository": { "type": "git", "url": "http://github.com/webpack/tapable.git" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "license": "MIT", "author": "Tobias Koppers @sokra", "main": "lib/index.js", "browser": { "util": "./lib/util-browser.js" }, "types": "./tapable.d.ts", "files": [ "lib", "tapable.d.ts" ], "scripts": { "lint": "npm run lint:code && npm run fmt:check", "lint:code": "eslint --cache .", "fmt": "npm run fmt:base -- --log-level warn --write", "fmt:check": "npm run fmt:base -- --check", "fmt:base": "node ./node_modules/prettier/bin/prettier.cjs --cache --ignore-unknown .", "fix": "npm run fix:code && npm run fmt", "fix:code": "npm run lint:code -- --fix", "test": "jest", "benchmark": "node --max-old-space-size=4096 --hash-seed=1 --random-seed=1 --no-opt --predictable --predictable-gc-schedule --interpreted-frames-native-stack --allow-natives-syntax --expose-gc --no-concurrent-sweeping ./benchmark/run.mjs", "version": "changeset version", "release": "changeset publish" }, "jest": { "transform": { "test[\\\\/].+\\.js$": "babel-jest" }, "snapshotFormat": { "escapeString": true, "printBasicPrototype": true } }, "devDependencies": { "@babel/core": "^7.4.4", "@babel/preset-env": "^7.4.4", "@changesets/cli": "^2.31.0", "@changesets/get-github-info": "^0.8.0", "@codspeed/core": "^5.3.0", "@stylistic/eslint-plugin": "^5.2.3", "babel-jest": "^30.3.0", "eslint": "^9.28.0", "eslint-config-webpack": "^4.6.3", "jest": "^30.3.0", "prettier": "^3.8.3", "prettier-1": "npm:prettier@^1", "tinybench": "^6.0.0" }, "engines": { "node": ">=6" } } webpack-tapable-8ca4f9d/tapable.d.ts000066400000000000000000000114741517167660300174650ustar00rootroot00000000000000type FixedSizeArray = T extends 0 ? void[] : ReadonlyArray & { 0: U; length: T; }; type Measure = T extends 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 ? T : never; type Append = { 0: [U]; 1: [T[0], U]; 2: [T[0], T[1], U]; 3: [T[0], T[1], T[2], U]; 4: [T[0], T[1], T[2], T[3], U]; 5: [T[0], T[1], T[2], T[3], T[4], U]; 6: [T[0], T[1], T[2], T[3], T[4], T[5], U]; 7: [T[0], T[1], T[2], T[3], T[4], T[5], T[6], U]; 8: [T[0], T[1], T[2], T[3], T[4], T[5], T[6], T[7], U]; }[Measure]; type AsArray = T extends any[] ? T : [T]; declare class UnsetAdditionalOptions { _UnsetAdditionalOptions: true; } type IfSet = X extends UnsetAdditionalOptions ? {} : X; type Callback = (error: E | null, result?: T) => void; type InnerCallback = (error?: E | null | false, result?: T) => void; type FullTap = Tap & { type: "sync" | "async" | "promise"; fn: Function; }; type Tap = TapOptions & { name: string; }; type TapOptions = { before?: string; stage?: number; }; interface HookInterceptor { name?: string; tap?: (tap: FullTap & IfSet) => void; call?: (...args: any[]) => void; loop?: (...args: any[]) => void; error?: (err: Error) => void; result?: (result: R) => void; done?: () => void; register?: ( tap: FullTap & IfSet ) => FullTap & IfSet; } type ArgumentNames = FixedSizeArray; declare class Hook { constructor(args?: ArgumentNames>, name?: string); name: string | undefined; interceptors: HookInterceptor[]; taps: FullTap[]; intercept(interceptor: HookInterceptor): void; isUsed(): boolean; callAsync(...args: Append, Callback>): void; promise(...args: AsArray): Promise; tap( options: string | (Tap & IfSet), fn: (...args: AsArray) => R ): void; withOptions( options: TapOptions & IfSet ): Omit; } export class SyncHook< T, R = void, AdditionalOptions = UnsetAdditionalOptions > extends Hook { call(...args: AsArray): R; } export class SyncBailHook< T, R, AdditionalOptions = UnsetAdditionalOptions > extends SyncHook {} export class SyncLoopHook< T, AdditionalOptions = UnsetAdditionalOptions > extends SyncHook {} export class SyncWaterfallHook< T, R = AsArray[0], AdditionalOptions = UnsetAdditionalOptions > extends SyncHook {} declare class AsyncHook< T, R, AdditionalOptions = UnsetAdditionalOptions > extends Hook { tapAsync( options: string | (Tap & IfSet), fn: (...args: Append, InnerCallback>) => void ): void; tapPromise( options: string | (Tap & IfSet), fn: (...args: AsArray) => Promise ): void; } export class AsyncParallelHook< T, AdditionalOptions = UnsetAdditionalOptions > extends AsyncHook {} export class AsyncParallelBailHook< T, R, AdditionalOptions = UnsetAdditionalOptions > extends AsyncHook {} export class AsyncSeriesHook< T, AdditionalOptions = UnsetAdditionalOptions > extends AsyncHook {} export class AsyncSeriesBailHook< T, R, AdditionalOptions = UnsetAdditionalOptions > extends AsyncHook {} export class AsyncSeriesLoopHook< T, AdditionalOptions = UnsetAdditionalOptions > extends AsyncHook {} export class AsyncSeriesWaterfallHook< T, R = AsArray[0], AdditionalOptions = UnsetAdditionalOptions > extends AsyncHook {} type HookFactory = (key: K) => H; interface HookMapInterceptor { factory?: (key: K, hook: H) => H; } export class HookMap { constructor(factory: HookFactory, name?: string); name: string | undefined; get(key: any): H | undefined; for(key: any): H; intercept(interceptor: HookMapInterceptor): void; } type AnyHook = Hook; export class TypedHookMap> { constructor(factory: HookFactory, name?: string); name: string | undefined; get(key: K): M[K] | undefined; for(key: K): M[K]; intercept(interceptor: HookMapInterceptor): void; } export class MultiHook { constructor(hooks: H[], name?: string); name: string | undefined; tap(options: string | Tap, fn?: Function): void; tapAsync(options: string | Tap, fn?: Function): void; tapPromise(options: string | Tap, fn?: Function): void; } webpack-tapable-8ca4f9d/test/000077500000000000000000000000001517167660300162335ustar00rootroot00000000000000webpack-tapable-8ca4f9d/test/AsyncParallelHooks.test.js000066400000000000000000000014601517167660300233060ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const AsyncParallelBailHook = require("../lib/AsyncParallelBailHook"); const AsyncParallelHook = require("../lib/AsyncParallelHook"); const HookTester = require("./HookTester.test"); describe("AsyncParallelHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester((args) => new AsyncParallelHook(args)); const result = await tester.run(); expect(result).toMatchSnapshot(); }, 15000); }); describe("AsyncParallelBailHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester((args) => new AsyncParallelBailHook(args)); const result = await tester.run(); expect(result).toMatchSnapshot(); }, 15000); }); webpack-tapable-8ca4f9d/test/AsyncSeriesHooks.test.js000066400000000000000000000071311517167660300230050ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const AsyncSeriesBailHook = require("../lib/AsyncSeriesBailHook"); const AsyncSeriesHook = require("../lib/AsyncSeriesHook"); const AsyncSeriesLoopHook = require("../lib/AsyncSeriesLoopHook"); const AsyncSeriesWaterfallHook = require("../lib/AsyncSeriesWaterfallHook"); const HookTester = require("./HookTester.test"); describe("AsyncSeriesHook", () => { it("should not have call method", () => { const hook = new AsyncSeriesHook([]); expect(hook.call).toBeUndefined(); expect(typeof hook.callAsync).toBe("function"); expect(typeof hook.promise).toBe("function"); }); it("should have tap method", (done) => { const hook = new AsyncSeriesHook([]); const mockTap = jest.fn(); hook.tap("somePlugin", mockTap); hook.callAsync(() => done()); expect(mockTap).toHaveBeenCalledTimes(1); }); it("should have promise method", (done) => { const hook = new AsyncSeriesHook([]); const mockTap = jest.fn(); hook.tap("somePlugin", mockTap); hook.promise().then(() => done()); expect(mockTap).toHaveBeenCalledTimes(1); }); it("should have to correct behavior", async () => { const tester = new HookTester((args) => new AsyncSeriesHook(args)); const result = await tester.run(); expect(result).toMatchSnapshot(); }); }); describe("AsyncSeriesBailHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester((args) => new AsyncSeriesBailHook(args)); const result = await tester.run(); expect(result).toMatchSnapshot(); }); it("should not crash with many plugins", () => { const hook = new AsyncSeriesBailHook(["x"]); for (let i = 0; i < 1000; i++) { hook.tap("Test", () => 42); } hook.tapAsync("Test", (x, callback) => callback(null, 42)); hook.tapPromise("Test", (_x) => Promise.resolve(42)); return expect(hook.promise()).resolves.toBe(42); }); }); describe("AsyncSeriesWaterfallHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester((args) => new AsyncSeriesWaterfallHook(args)); const result = await tester.run(); expect(result).toMatchSnapshot(); }); it("should work with undefined", async () => { const hook = new AsyncSeriesWaterfallHook(["x"]); hook.tap("number", () => 42); hook.tap("undefined", () => undefined); return expect(hook.promise()).resolves.toBe(42); }); it("should work with void", async () => { const hook = new AsyncSeriesWaterfallHook(["x"]); hook.tap("number", () => 42); hook.tap("undefined", () => {}); return expect(hook.promise()).resolves.toBe(42); }); it("should work with undefined and number again", async () => { const hook = new AsyncSeriesWaterfallHook(["x"]); hook.tap("number", () => 42); hook.tap("undefined", () => {}); hook.tap("number-again", () => 43); return expect(hook.promise()).resolves.toBe(43); }); it("should work with null", async () => { const hook = new AsyncSeriesWaterfallHook(["x"]); hook.tap("number", () => 42); hook.tap("undefined", () => null); return expect(hook.promise()).resolves.toBeNull(); }); it("should work with different types", async () => { const hook = new AsyncSeriesWaterfallHook(["x"]); hook.tap("number", () => 42); hook.tap("string", () => "string"); return expect(hook.promise()).resolves.toBe("string"); }); }); describe("AsyncSeriesLoopHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester((args) => new AsyncSeriesLoopHook(args)); const result = await tester.runForLoop(); expect(result).toMatchSnapshot(); }); }); webpack-tapable-8ca4f9d/test/DefaultArgs.test.js000066400000000000000000000066651517167660300217650ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php */ "use strict"; const AsyncParallelBailHook = require("../lib/AsyncParallelBailHook"); const AsyncParallelHook = require("../lib/AsyncParallelHook"); const AsyncSeriesBailHook = require("../lib/AsyncSeriesBailHook"); const AsyncSeriesHook = require("../lib/AsyncSeriesHook"); const AsyncSeriesLoopHook = require("../lib/AsyncSeriesLoopHook"); const AsyncSeriesWaterfallHook = require("../lib/AsyncSeriesWaterfallHook"); const SyncBailHook = require("../lib/SyncBailHook"); const SyncHook = require("../lib/SyncHook"); const SyncLoopHook = require("../lib/SyncLoopHook"); const SyncWaterfallHook = require("../lib/SyncWaterfallHook"); describe("Hooks without explicit args", () => { it("should construct SyncHook without args", () => { const hook = new SyncHook(); const mock = jest.fn(); hook.tap("A", mock); hook.call(); expect(mock).toHaveBeenCalledTimes(1); }); it("should construct SyncBailHook without args", () => { const hook = new SyncBailHook(); hook.tap("A", () => "bailed"); expect(hook.call()).toBe("bailed"); }); it("should construct SyncLoopHook without args", () => { const hook = new SyncLoopHook(); let count = 0; hook.tap("A", () => { if (count++ < 2) return true; }); hook.call(); expect(count).toBeGreaterThanOrEqual(3); }); it("should throw if SyncWaterfallHook is constructed without args", () => { expect(() => new SyncWaterfallHook()).toThrow( /Waterfall hooks must have at least one argument/ ); expect(() => new SyncWaterfallHook([])).toThrow( /Waterfall hooks must have at least one argument/ ); }); it("should throw if AsyncSeriesWaterfallHook is constructed without args", () => { expect(() => new AsyncSeriesWaterfallHook()).toThrow( /Waterfall hooks must have at least one argument/ ); expect(() => new AsyncSeriesWaterfallHook([])).toThrow( /Waterfall hooks must have at least one argument/ ); }); it("should construct AsyncParallelHook without args", async () => { const hook = new AsyncParallelHook(); const mock = jest.fn((cb) => cb()); hook.tapAsync("A", mock); await new Promise((resolve) => { hook.callAsync(() => resolve()); }); expect(mock).toHaveBeenCalledTimes(1); }); it("should construct AsyncParallelBailHook without args", async () => { const hook = new AsyncParallelBailHook(); const mock = jest.fn((cb) => cb()); hook.tapAsync("A", mock); await new Promise((resolve) => { hook.callAsync(() => resolve()); }); expect(mock).toHaveBeenCalledTimes(1); }); it("should construct AsyncSeriesHook without args", async () => { const hook = new AsyncSeriesHook(); const mock = jest.fn((cb) => cb()); hook.tapAsync("A", mock); await new Promise((resolve) => { hook.callAsync(() => resolve()); }); expect(mock).toHaveBeenCalledTimes(1); }); it("should construct AsyncSeriesBailHook without args", async () => { const hook = new AsyncSeriesBailHook(); const mock = jest.fn((cb) => cb()); hook.tapAsync("A", mock); await new Promise((resolve) => { hook.callAsync(() => resolve()); }); expect(mock).toHaveBeenCalledTimes(1); }); it("should construct AsyncSeriesLoopHook without args", () => { const hook = new AsyncSeriesLoopHook(); let calls = 0; hook.tapAsync("A", (cb) => { calls++; cb(); }); return new Promise((resolve) => { hook.callAsync(() => resolve()); }).then(() => { expect(calls).toBeGreaterThanOrEqual(1); }); }); }); webpack-tapable-8ca4f9d/test/Hook.test.js000066400000000000000000000130221517167660300204450ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const HookTest = require("../lib/Hook"); const SyncHook = require("../lib/SyncHook"); describe("Hook", () => { it("should throw when compile is not overridden", () => { const hook = new HookTest(["arg"]); expect(() => hook.compile({ taps: [], interceptors: [], args: [], type: "sync" }) ).toThrow(/Abstract: should be overridden/); }); it("should throw when tap options are not a string or object", () => { const hook = new SyncHook(); expect(() => hook.tap(42, () => {})).toThrow( new Error("Invalid tap options") ); expect(() => hook.tap(null, () => {})).toThrow( new Error("Invalid tap options") ); expect(() => hook.tap(undefined, () => {})).toThrow( new Error("Invalid tap options") ); expect(() => hook.tap(true, () => {})).toThrow( new Error("Invalid tap options") ); }); it("should expose name/isUsed/intercept/withOptions from withOptions wrapper", () => { const hook = new SyncHook(["a"], "myHook"); const wrapped = hook.withOptions({ stage: 10 }); expect(wrapped.name).toBe("myHook"); expect(wrapped.isUsed()).toBe(false); const interceptorCalls = []; wrapped.intercept({ call: (x) => interceptorCalls.push(x) }); const calls = []; wrapped.tap("A", (x) => calls.push(["A", x])); wrapped.tap({ name: "B" }, (x) => calls.push(["B", x])); expect(wrapped.isUsed()).toBe(true); hook.call(1); expect(calls).toEqual([ ["A", 1], ["B", 1] ]); expect(interceptorCalls).toEqual([1]); }); it("should allow nested withOptions to merge options", () => { const hook = new SyncHook(); const nested = hook.withOptions({ stage: -5 }).withOptions({ before: "Z" }); nested.tap("A", () => {}); expect(hook.taps[0].stage).toBe(-5); expect(hook.taps[0].before).toBe("Z"); }); it("should keep the tap options unchanged when an interceptor's register returns undefined", () => { const hook = new SyncHook(); hook.intercept({ register: () => undefined }); hook.tap("A", () => {}); expect(hook.taps[0].name).toBe("A"); }); it("should throw when options.name is missing entirely on an object tap", () => { const hook = new SyncHook(); expect(() => hook.tap({}, () => {})).toThrow( new Error("Missing name for tap") ); }); it("should accept the optional hook name argument in the Hook constructor", () => { const hook = new SyncHook(["a"], "namedHook"); expect(hook.name).toBe("namedHook"); }); it("should allow to insert hooks before others and in stages", () => { const hook = new SyncHook(); const calls = []; hook.tap("A", () => calls.push("A")); hook.tap( { name: "B", before: "A" }, () => calls.push("B") ); calls.length = 0; hook.call(); expect(calls).toEqual(["B", "A"]); hook.tap( { name: "C", before: ["A", "B"] }, () => calls.push("C") ); calls.length = 0; hook.call(); expect(calls).toEqual(["C", "B", "A"]); hook.tap( { name: "D", before: "B" }, () => calls.push("D") ); calls.length = 0; hook.call(); expect(calls).toEqual(["C", "D", "B", "A"]); hook.tap( { name: "E", stage: -5 }, () => calls.push("E") ); hook.tap( { name: "F", stage: -3 }, () => calls.push("F") ); calls.length = 0; hook.call(); expect(calls).toEqual(["E", "F", "C", "D", "B", "A"]); }); it("should work with `withOptions`", () => { const hook = new SyncHook(); const calls = []; hook .withOptions({ stage: -10 }) .tap("A", () => calls.push("A")); hook.tap( { name: "B", stage: 0 }, () => calls.push("B") ); calls.length = 0; hook.call(); expect(calls).toEqual(["A", "B"]); }); it("should throw without a valid name", () => { const hook = new SyncHook(); expect(() => hook.tap("", () => {})).toThrow( new Error("Missing name for tap") ); expect(() => hook.tap(" ", () => {})).toThrow( new Error("Missing name for tap") ); expect(() => hook.tap({ name: "" }, () => {})).toThrow( new Error("Missing name for tap") ); expect(() => hook.tap({ name: " " }, () => {})).toThrow( new Error("Missing name for tap") ); }); it("should preserve custom tap options (e.g. webpack's `additionalAssets`) on the tap descriptor", () => { const hook = new SyncHook(); // Options with only `name` plus a custom property - used by webpack's // processAssets (`additionalAssets: true`). The fast-path in `_tap` // must not drop the custom property. hook.tap({ name: "A", additionalAssets: true }, () => {}); // Options with `name`, `stage` and a custom property go through the // slow path - also checked for completeness. hook.tap({ name: "B", stage: 10, extra: "value" }, () => {}); expect(hook.taps[0].name).toBe("A"); expect(hook.taps[0].additionalAssets).toBe(true); expect(hook.taps[1].name).toBe("B"); expect(hook.taps[1].extra).toBe("value"); }); it("should not ignore invalid before values", () => { // A plugin may use a hook that will never be executed const hook = new SyncHook(); const calls = []; hook.tap("A", () => calls.push("A")); hook.tap( { name: "B", before: "C" }, () => calls.push("B") ); hook.tap( { name: "C", before: ["Y"] }, () => calls.push("C") ); hook.tap( { name: "D", before: {} }, () => calls.push("D") ); hook.tap( { name: "E", before: null }, () => calls.push("E") ); calls.length = 0; hook.call(); expect(calls).toEqual(["C", "B", "A", "D", "E"]); }); }); webpack-tapable-8ca4f9d/test/HookCodeFactory.test.js000066400000000000000000000134761517167660300226050ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const HookCodeFactoryTest = require("../lib/HookCodeFactory"); const expectNoSyntaxError = (code) => { // eslint-disable-next-line no-new new Function("a, b, c", code); }; const pretty = (code) => require("prettier-1").format(code, { filepath: "code.js" }); describe("HookCodeFactory", () => { describe("callTap", () => { const factoryConfigurations = { "no args, no intercept": { args: [], taps: [ { type: "sync" }, { type: "async" }, { type: "promise" } ], interceptors: [] }, "with args, no intercept": { args: ["a", "b", "c"], taps: [ { type: "sync" }, { type: "async" }, { type: "promise" } ], interceptors: [] }, "with args, with intercept": { args: ["a", "b", "c"], taps: [ { type: "sync" }, { type: "async" }, { type: "promise" } ], interceptors: [ { call: () => {}, tap: () => {} }, { tap: () => {} }, { call: () => {} } ] } }; for (const configurationName in factoryConfigurations) { describe(`(${configurationName})`, () => { let factory; beforeEach(() => { factory = new HookCodeFactoryTest(); factory.init(factoryConfigurations[configurationName]); }); it("sync without onResult", () => { const code = factory.callTap(0, { onError: (err) => `onError(${err});\n`, onDone: () => "onDone();\n" }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); it("sync with onResult", () => { const code = factory.callTap(0, { onError: (err) => `onError(${err});\n`, onResult: (result) => `onResult(${result});\n` }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); it("async without onResult", () => { const code = factory.callTap(1, { onError: (err) => `onError(${err});\n`, onDone: () => "onDone();\n" }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); it("async with onResult", () => { const code = factory.callTap(1, { onError: (err) => `onError(${err});\n`, onResult: (result) => `onResult(${result});\n` }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); it("promise without onResult", () => { const code = factory.callTap(2, { onError: (err) => `onError(${err});\n`, onDone: () => "onDone();\n" }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); it("promise with onResult", () => { const code = factory.callTap(2, { onError: (err) => `onError(${err});\n`, onResult: (result) => `onResult(${result});\n` }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); }); } }); describe("taps", () => { const factoryConfigurations = { none: { args: ["a", "b", "c"], taps: [], interceptors: [] }, "single sync": { args: ["a", "b", "c"], taps: [ { type: "sync" } ], interceptors: [] }, "multiple sync": { args: ["a", "b", "c"], taps: [ { type: "sync" }, { type: "sync" }, { type: "sync" } ], interceptors: [] }, "single async": { args: ["a", "b", "c"], taps: [ { type: "async" } ], interceptors: [] }, "single promise": { args: ["a", "b", "c"], taps: [ { type: "promise" } ], interceptors: [] }, mixed: { args: ["a", "b", "c"], taps: [ { type: "sync" }, { type: "async" }, { type: "promise" } ], interceptors: [] }, mixed2: { args: ["a", "b", "c"], taps: [ { type: "async" }, { type: "promise" }, { type: "sync" } ], interceptors: [] } }; for (const configurationName in factoryConfigurations) { describe(`(${configurationName})`, () => { let factory; beforeEach(() => { factory = new HookCodeFactoryTest(); factory.init(factoryConfigurations[configurationName]); }); it("callTapsSeries", () => { const code = factory.callTapsSeries({ onError: (i, err) => `onError(${i}, ${err});\n`, onResult: (i, result, next, doneBreak) => `onResult(${i}, ${result}, () => {\n${next()}}, () => {\n${doneBreak()}});\n`, onDone: () => "onDone();\n", rethrowIfPossible: true }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); it("callTapsParallel", () => { const code = factory.callTapsParallel({ onError: (i, err) => `onError(${i}, ${err});\n`, onResult: (i, result, done, doneBreak) => `onResult(${i}, ${result}, () => {\n${done()}}, () => {\n${doneBreak()}});\n`, onDone: () => "onDone();\n", rethrowIfPossible: true }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); it("callTapsLooping", () => { const code = factory.callTapsLooping({ onError: (i, err) => `onError(${i}, ${err});\n`, onDone: () => "onDone();\n", rethrowIfPossible: true }); expect(code).toMatchSnapshot(); expect(pretty(code)).toMatchSnapshot(); expectNoSyntaxError(code); }); }); } }); }); webpack-tapable-8ca4f9d/test/HookMap.test.js000066400000000000000000000051111517167660300211030ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php */ "use strict"; const HookMapTest = require("../lib/HookMap"); const SyncHook = require("../lib/SyncHook"); describe("HookMap", () => { it("should return undefined from get when the key is unknown", () => { const map = new HookMapTest(() => new SyncHook()); expect(map.get("missing")).toBeUndefined(); }); it("should lazily create hooks through for(...) and cache them", () => { const factory = jest.fn(() => new SyncHook(["a"])); const map = new HookMapTest(factory, "myMap"); expect(map.name).toBe("myMap"); const hook1 = map.for("key1"); const hook2 = map.for("key1"); const hook3 = map.for("key2"); expect(hook1).toBe(hook2); expect(hook1).not.toBe(hook3); expect(factory).toHaveBeenCalledTimes(2); expect(factory).toHaveBeenNthCalledWith(1, "key1"); expect(factory).toHaveBeenNthCalledWith(2, "key2"); expect(map.get("key1")).toBe(hook1); }); it("should apply interceptor factories when creating hooks", () => { const map = new HookMapTest(() => new SyncHook()); const wrapped = new SyncHook(); map.intercept({ factory: (key, hook) => { expect(key).toBe("foo"); expect(hook).toBeDefined(); return wrapped; } }); expect(map.for("foo")).toBe(wrapped); }); it("should default the interceptor factory to pass-through", () => { const map = new HookMapTest(() => new SyncHook()); map.intercept({}); const hook = map.for("bar"); expect(hook).toBeDefined(); expect(map.get("bar")).toBe(hook); }); it("should forward deprecated tap helpers to the underlying hook", () => { const warn = jest.spyOn(console, "warn").mockImplementation(() => {}); const map = new HookMapTest(() => new SyncHook(["a"])); const syncMock = jest.fn(); map.tap("k", "plugin-sync", syncMock); map.for("k").call(1); expect(syncMock).toHaveBeenCalledWith(1); const asyncMap = new HookMapTest( () => new (require("../lib/AsyncSeriesHook"))(["a"]) ); const asyncMock = jest.fn((_a, cb) => cb()); asyncMap.tapAsync("k", "plugin-async", asyncMock); return new Promise((resolve) => { asyncMap.for("k").callAsync(2, () => { expect(asyncMock).toHaveBeenCalled(); const promiseMap = new HookMapTest( () => new (require("../lib/AsyncSeriesHook"))(["a"]) ); const promiseMock = jest.fn(() => Promise.resolve()); promiseMap.tapPromise("k", "plugin-promise", promiseMock); promiseMap .for("k") .promise(3) .then(() => { expect(promiseMock).toHaveBeenCalledWith(3); warn.mockRestore(); resolve(); }); }); }); }); }); webpack-tapable-8ca4f9d/test/HookStackOverflow.test.js000066400000000000000000000007721517167660300231670ustar00rootroot00000000000000"use strict"; const AsyncSeriesHook = require("../lib/AsyncSeriesHook"); describe("HookStackOverflow", () => { it("should not crash when compiling a large hook", () => { const hook = new AsyncSeriesHook(["a", "b"]); for (let i = 0; i < 10; i++) { hook.tap("TestPlugin", (_a, _b) => {}); hook.tapAsync("TestPlugin", (a, b, callback) => callback()); hook.tapPromise("TestPlugin", (_a, _b) => Promise.resolve()); } expect(hook.taps).toBeDefined(); return hook.promise(1, 2); }); }); webpack-tapable-8ca4f9d/test/HookTester.test.js000066400000000000000000001105511517167660300216410ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; describe("HookTester", () => { // eslint-disable-next-line jest/expect-expect it("should run", () => {}); }); process.on("unhandledRejection", (err) => console.error(err.stack)); class HookTesterTest { constructor(hookCreator, sync) { this.hookCreator = hookCreator; this.sync = sync; } async run(syncOnly) { const result = { sync: {}, async: {}, intercept: {} }; if (syncOnly) { await this.runSync(result.sync, "call"); } else { await this.runAsync(result.async, "callAsync"); await this.runAsync(result.async, "promise"); await this.runIntercept(result.intercept, "callAsync"); await this.runIntercept(result.intercept, "promise"); } await this.runSync(result.sync, "callAsync"); await this.runSync(result.sync, "promise"); return result; } async runForLoop(syncOnly) { const result = { sync: {}, async: {} }; if (syncOnly) { await this.runForLoopSync(result.sync, "call"); } else { await this.runForLoopAsync(result.async, "callAsync"); await this.runForLoopAsync(result.async, "promise"); } await this.runForLoopSync(result.sync, "callAsync"); await this.runForLoopSync(result.sync, "promise"); return result; } async runForLoopAsync(result, method) { { const hook = this.createHook([], `${method}BrokenPromise`); hook.tapPromise("promise", () => "this is not a promise"); result[`${method}BrokenPromise`] = await this.gainResult((cb) => hook[method](cb) ); } { const hook = this.createHook([], `${method}SinglePromise`); hook.tapPromise("promise", () => { result[`${method}SinglePromiseCalled`] = (result[`${method}SinglePromiseCalled`] || 0) + 1; if (result[`${method}SinglePromiseCalled`] < 42) { return Promise.resolve().then(() => true); } return Promise.resolve().then(() => {}); }); result[`${method}SinglePromise`] = await this.gainResult((cb) => hook[method](cb) ); } { const hook = this.createHook([], `${method}MultiplePromise`); hook.tapPromise("promise1", () => { result[`${method}MultiplePromiseCalled1`] = (result[`${method}MultiplePromiseCalled1`] || 0) + 1; if (result[`${method}MultiplePromiseCalled1`] < 42) { return Promise.resolve().then(() => true); } return Promise.resolve().then(() => {}); }); hook.tapPromise("promise2", () => { result[`${method}MultiplePromiseCalled2`] = (result[`${method}MultiplePromiseCalled2`] || 0) + 1; if (result[`${method}MultiplePromiseCalled2`] < 42) { return Promise.resolve().then(() => true); } return Promise.resolve().then(() => {}); }); result[`${method}MultiplePromise`] = await this.gainResult((cb) => hook[method](cb) ); } { const hook = this.createHook([], `${method}SingleAsync`); hook.tapAsync("async", (callback) => { result[`${method}SingleAsyncCalled`] = (result[`${method}SingleAsyncCalled`] || 0) + 1; if (result[`${method}SingleAsyncCalled`] < 42) { return Promise.resolve().then(() => callback(null, true)); } return Promise.resolve().then(() => callback()); }); result[`${method}SingleAsync`] = await this.gainResult((cb) => hook[method](cb) ); } { const hook = this.createHook([], `${method}MultipleAsync`); hook.tapAsync("async1", (callback) => { result[`${method}MultipleAsyncCalled1`] = (result[`${method}MultipleAsyncCalled1`] || 0) + 1; if (result[`${method}MultipleAsyncCalled1`] < 42) { return Promise.resolve().then(() => callback(null, true)); } return Promise.resolve().then(() => callback()); }); hook.tapAsync("async2", (callback) => { result[`${method}MultipleAsyncCalled2`] = (result[`${method}MultipleAsyncCalled2`] || 0) + 1; if (result[`${method}MultipleAsyncCalled2`] < 42) { return Promise.resolve().then(() => callback(null, true)); } return Promise.resolve().then(() => callback()); }); result[`${method}MultipleAsync`] = await this.gainResult((cb) => hook[method](cb) ); } { const hook = this.createHook([], `${method}Mixed`); hook.tapAsync("async1", (callback) => { result[`${method}MixedCalled1`] = (result[`${method}MixedCalled1`] || 0) + 1; if (result[`${method}MixedCalled1`] < 42) { return Promise.resolve().then(() => callback(null, true)); } return Promise.resolve().then(() => callback()); }); hook.tap("sync2", () => { result[`${method}MixedCalled2`] = (result[`${method}MixedCalled2`] || 0) + 1; if (result[`${method}MixedCalled2`] < 42) return true; }); hook.tapPromise("promise3", () => { result[`${method}MixedCalled3`] = (result[`${method}MixedCalled3`] || 0) + 1; if (result[`${method}MixedCalled3`] < 42) { return Promise.resolve().then(() => true); } return Promise.resolve().then(() => {}); }); result[`${method}Mixed`] = await this.gainResult((cb) => hook[method](cb) ); } } async runForLoopSync(result, method) { { const hook = this.createHook([], `${method}None`); result[`${method}None`] = await this.gainResult((cb) => hook[method](cb)); } { const hook = this.createHook(["arg"], `${method}NoneWithArg`); result[`${method}NoneWithArg`] = await this.gainResult((cb) => hook[method](42, cb) ); } { const hook = this.createHook([], `${method}SingleSync`); hook.tap("sync", () => { result[`${method}SingleSyncCalled`] = (result[`${method}SingleSyncCalled`] || 0) + 1; if (result[`${method}SingleSyncCalled`] < 42) return true; }); result[`${method}SingleSync`] = await this.gainResult((cb) => hook[method](cb) ); } { const hook = this.createHook([], `${method}MultipleSync`); hook.tap("sync1", () => { result[`${method}MultipleSyncCalled1`] = (result[`${method}MultipleSyncCalled1`] || 0) + 1; if (result[`${method}MultipleSyncCalled1`] < 42) return true; }); hook.tap("sync2", () => { result[`${method}MultipleSyncCalled2`] = (result[`${method}MultipleSyncCalled2`] || 0) + 1; if (result[`${method}MultipleSyncCalled2`] < 42) return true; }); result[`${method}MultipleSync`] = await this.gainResult((cb) => hook[method](cb) ); } { const hook = this.createHook([], `${method}InterceptedSync`); hook.tap("sync1", () => { result[`${method}InterceptedSyncCalled1`] = (result[`${method}InterceptedSyncCalled1`] || 0) + 1; if (result[`${method}InterceptedSyncCalled1`] < 42) return true; }); hook.tap("sync2", () => { result[`${method}InterceptedSyncCalled2`] = (result[`${method}InterceptedSyncCalled2`] || 0) + 1; if (result[`${method}InterceptedSyncCalled2`] < 42) return true; }); hook.intercept({ call: (_a) => (result[`${method}InterceptedSyncCalledCall`] = (result[`${method}InterceptedSyncCalledCall`] || 0) + 1), loop: (_a) => (result[`${method}InterceptedSyncCalledLoop`] = (result[`${method}InterceptedSyncCalledLoop`] || 0) + 1), tap: (_tap) => { result[`${method}InterceptedSyncCalledTap`] = (result[`${method}InterceptedSyncCalledTap`] || 0) + 1; } }); result[`${method}InterceptedSync`] = await this.gainResult((cb) => hook[method](cb) ); } } async runSync(result, method) { { const hook = this.createHook([], `${method}None`); result[`${method}None`] = await this.gainResult((cb) => hook[method](cb)); } { const hook = this.createHook(["arg"], `${method}NoneWithArg`); result[`${method}NoneWithArg`] = await this.gainResult((cb) => hook[method](42, cb) ); } { const hook = this.createHook([], `${method}SingleSync`); hook.tap("sync", () => { result[`${method}SingleSyncCalled`] = true; return 42; }); result[`${method}SingleSync`] = await this.gainResult((cb) => hook[method](cb) ); } { const hook = this.createHook(["myArg"], `${method}SingleSyncWithArg`); hook.tap("sync", (nr) => { result[`${method}SingleSyncWithArgCalled`] = nr; return nr; }); result[`${method}SingleSyncWithArg`] = await this.gainResult((cb) => hook[method](42, cb) ); } { const hook = this.createHook([], `${method}MultipleSync`); hook.tap("sync1", () => { result[`${method}MultipleSyncCalled1`] = true; return 42; }); hook.tap("sync2", () => { result[`${method}MultipleSyncCalled2`] = true; return 43; }); result[`${method}MultipleSync`] = await this.gainResult((cb) => hook[method](cb) ); } { const hook = this.createHook(["a"], `${method}MultipleSyncWithArg`); hook.tap("sync1", (a) => { result[`${method}MultipleSyncWithArgCalled1`] = a; return 42 + a; }); hook.tap("sync2", (a) => { result[`${method}MultipleSyncWithArgCalled2`] = a; return 43 + a; }); result[`${method}MultipleSyncWithArg`] = await this.gainResult((cb) => hook[method](42, cb) ); } { const hook = this.createHook( ["a"], `${method}MultipleSyncWithArgNoReturn` ); hook.tap("sync1", (a) => { result[`${method}MultipleSyncWithArgNoReturnCalled1`] = a; }); hook.tap("sync2", (a) => { result[`${method}MultipleSyncWithArgNoReturnCalled2`] = a; }); result[`${method}MultipleSyncWithArgNoReturn`] = await this.gainResult( (cb) => hook[method](42, cb) ); } { const hook = this.createHook( ["a"], `${method}MultipleSyncWithArgFirstReturn` ); hook.tap("sync1", (a) => { result[`${method}MultipleSyncWithArgFirstReturnCalled1`] = a; return 42 + a; }); hook.tap("sync2", (a) => { result[`${method}MultipleSyncWithArgFirstReturnCalled2`] = a; }); result[`${method}MultipleSyncWithArgFirstReturn`] = await this.gainResult( (cb) => hook[method](42, cb) ); } { const hook = this.createHook( ["a"], `${method}MultipleSyncWithArgLastReturn` ); hook.tap("sync1", (a) => { result[`${method}MultipleSyncWithArgLastReturnCalled1`] = a; }); hook.tap("sync2", (a) => { result[`${method}MultipleSyncWithArgLastReturnCalled2`] = a; return 43 + a; }); result[`${method}MultipleSyncWithArgLastReturn`] = await this.gainResult( (cb) => hook[method](42, cb) ); } { const hook = this.createHook( ["a", "b", "c"], `${method}MultipleSyncWithArgs` ); hook.tap("sync1", (a, b, c) => { result[`${method}MultipleSyncWithArgsCalled1`] = [a, b, c]; return a + b + c; }); hook.tap("sync2", (a, b, c) => { result[`${method}MultipleSyncWithArgsCalled2`] = [a, b, c]; return a + b + c + 1; }); result[`${method}MultipleSyncWithArgs`] = await this.gainResult((cb) => hook[method](42, 43, 44, cb) ); } { const hook = this.createHook([], `${method}MultipleSyncError`); hook.tap("sync1", () => { result[`${method}MultipleSyncErrorCalled1`] = true; }); hook.tap("sync2", () => { result[`${method}MultipleSyncErrorCalled2`] = true; throw new Error("Error in sync2"); }); hook.tap("sync3", () => { result[`${method}MultipleSyncErrorCalled3`] = true; }); result[`${method}MultipleSyncError`] = await this.gainResult((cb) => hook[method](cb) ); } { const hook = this.createHook(["a", "b", "c"], `${method}Intercepted`); hook.intercept({ call: (a, b, c) => { result[`${method}InterceptedCall1`] = [a, b, c]; }, tap: (tap) => { result[`${method}InterceptedTap1`] = { ...tap, fn: tap.fn.length }; } }); hook.intercept({ call: (a, b, c) => { result[`${method}InterceptedCall2`] = [a, b, c]; }, tap: (tap) => { if (!result[`${method}InterceptedTap2`]) { result[`${method}InterceptedTap2`] = { ...tap, fn: tap.fn.length }; } } }); hook.tap("sync1", (a, b, c) => a + b + c); hook.tap("sync2", (a, b) => a + b + 1); result[`${method}Intercepted`] = await this.gainResult((cb) => hook[method](1, 2, 3, cb) ); } } async runAsync(result, type) { { const hook = this.createHook([], `${type}None`); result[`${type}None`] = await this.gainResult((cb) => hook[type](cb)); } { const hook = this.createHook(["arg"], `${type}NoneWithArg`); result[`${type}NoneWithArg`] = await this.gainResult((cb) => hook[type](42, cb) ); } { const hook = this.createHook([], `${type}SingleSync`); hook.tap("sync", () => { result[`${type}SingleSyncCalled1`] = true; return 42; }); result[`${type}SingleSync`] = await this.gainResult((cb) => hook[type](cb) ); } { const hook = this.createHook(["x"], `${type}SingleSyncWithArg`); hook.tap("sync", (arg) => { result[`${type}SingleSyncWithArgCalled1`] = arg; return arg + 1; }); result[`${type}SingleSyncWithArg`] = await this.gainResult((cb) => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}SingleSyncWithArgNoReturn`); hook.tap("sync", (arg) => { result[`${type}SingleSyncWithArgNoReturnCalled1`] = arg; }); result[`${type}SingleSyncWithArgNoReturn`] = await this.gainResult((cb) => hook[type](42, cb) ); } { const hook = this.createHook([], `${type}MultipleSync`); hook.tap("sync1", () => { result[`${type}MultipleSyncCalled1`] = true; return 42; }); hook.tap("sync2", () => { result[`${type}MultipleSyncCalled2`] = true; return 43; }); result[`${type}MultipleSync`] = await this.gainResult((cb) => hook[type](cb) ); } { const hook = this.createHook([], `${type}MultipleSyncLastReturn`); hook.tap("sync1", () => { result[`${type}MultipleSyncLastReturnCalled1`] = true; }); hook.tap("sync2", () => { result[`${type}MultipleSyncLastReturnCalled2`] = true; return 43; }); result[`${type}MultipleSyncLastReturn`] = await this.gainResult((cb) => hook[type](cb) ); } { const hook = this.createHook([], `${type}MultipleSyncNoReturn`); hook.tap("sync1", () => { result[`${type}MultipleSyncNoReturnCalled1`] = true; }); hook.tap("sync2", () => { result[`${type}MultipleSyncNoReturnCalled2`] = true; }); result[`${type}MultipleSyncNoReturn`] = await this.gainResult((cb) => hook[type](cb) ); } { const hook = this.createHook(["arg"], `${type}MultipleSyncWithArg`); hook.tap("sync1", (arg) => { result[`${type}MultipleSyncWithArgCalled1`] = arg; return arg + 1; }); hook.tap("sync2", (arg) => { result[`${type}MultipleSyncWithArgCalled2`] = arg; return arg + 2; }); result[`${type}MultipleSyncWithArg`] = await this.gainResult((cb) => hook[type](42, cb) ); } { const hook = this.createHook( ["arg"], `${type}MultipleSyncWithArgNoReturn` ); hook.tap("sync1", (arg) => { result[`${type}MultipleSyncWithArgNoReturnCalled1`] = arg; }); hook.tap("sync2", (arg) => { result[`${type}MultipleSyncWithArgNoReturnCalled2`] = arg; }); result[`${type}MultipleSyncWithArgNoReturn`] = await this.gainResult( (cb) => hook[type](42, cb) ); } { const hook = this.createHook( ["arg"], `${type}MultipleSyncWithArgLastReturn` ); hook.tap("sync1", (arg) => { result[`${type}MultipleSyncWithArgLastReturnCalled1`] = arg; }); hook.tap("sync2", (arg) => { result[`${type}MultipleSyncWithArgLastReturnCalled2`] = arg; return arg + 2; }); result[`${type}MultipleSyncWithArgLastReturn`] = await this.gainResult( (cb) => hook[type](42, cb) ); } { const hook = this.createHook( ["arg"], `${type}MultipleSyncWithArgFirstReturn` ); hook.tap("sync1", (arg) => { result[`${type}MultipleSyncWithArgFirstReturnCalled1`] = arg; return arg + 1; }); hook.tap("sync2", (arg) => { result[`${type}MultipleSyncWithArgFirstReturnCalled2`] = arg; }); result[`${type}MultipleSyncWithArgFirstReturn`] = await this.gainResult( (cb) => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}SingleAsyncWithArg`); hook.tapAsync("async", (arg, callback) => { result[`${type}SingleAsyncWithArgCalled1`] = arg; callback(null, arg); }); result[`${type}SingleAsyncWithArg`] = await this.gainResult((cb) => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}MultipleAsyncWithArg`); hook.tapAsync("async1", (arg, callback) => { result[`${type}MultipleAsyncWithArgCalled1`] = arg; callback(null, arg + 1); }); hook.tapAsync("async2", (arg, callback) => { result[`${type}MultipleAsyncWithArgCalled2`] = arg; callback(null, arg + 2); }); result[`${type}MultipleAsyncWithArg`] = await this.gainResult((cb) => hook[type](42, cb) ); } { const hook = this.createHook( ["x"], `${type}MultipleAsyncWithArgNoReturn` ); hook.tapAsync("async1", (arg, callback) => { result[`${type}MultipleAsyncWithArgNoReturnCalled1`] = arg; callback(); }); hook.tapAsync("async2", (arg, callback) => { result[`${type}MultipleAsyncWithArgNoReturnCalled2`] = arg; callback(); }); result[`${type}MultipleAsyncWithArgNoReturn`] = await this.gainResult( (cb) => hook[type](42, cb) ); } { const hook = this.createHook( ["x"], `${type}MultipleAsyncWithArgFirstReturn` ); hook.tapAsync("async1", (arg, callback) => { result[`${type}MultipleAsyncWithArgFirstReturnCalled1`] = arg; callback(null, arg + 1); }); hook.tapAsync("async2", (arg, callback) => { result[`${type}MultipleAsyncWithArgFirstReturnCalled2`] = arg; callback(); }); result[`${type}MultipleAsyncWithArgFirstReturn`] = await this.gainResult( (cb) => hook[type](42, cb) ); } { const hook = this.createHook( ["x"], `${type}MultipleAsyncWithArgLastReturn` ); hook.tapAsync("async1", (arg, callback) => { result[`${type}MultipleAsyncWithArgLastReturnCalled1`] = arg; callback(); }); hook.tapAsync("async2", (arg, callback) => { result[`${type}MultipleAsyncWithArgLastReturnCalled2`] = arg; callback(null, arg + 2); }); result[`${type}MultipleAsyncWithArgLastReturn`] = await this.gainResult( (cb) => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}SinglePromiseWithArg`); hook.tapPromise("promise", (arg) => { result[`${type}SinglePromiseWithArgCalled1`] = arg; return Promise.resolve(arg + 1); }); result[`${type}SinglePromiseWithArg`] = await this.gainResult((cb) => hook[type](42, cb) ); } { const hook = this.createHook( ["x"], `${type}SinglePromiseWithUndefinedArg` ); hook.tapPromise("promise", (arg) => { result[`${type}SinglePromiseWithUndefinedCalled1`] = arg; return Promise.resolve(undefined); }); result[`${type}SinglePromiseWithUndefined`] = await this.gainResult( (cb) => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}SinglePromiseWithNullArg`); hook.tapPromise("promise", (arg) => { result[`${type}SinglePromiseWithNullArgCalled1`] = arg; return Promise.resolve(null); }); result[`${type}SinglePromiseWithNullArg`] = await this.gainResult((cb) => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}SinglePromiseWithZeroArg`); hook.tapPromise("promise", (arg) => { result[`${type}SinglePromiseWithZeroArgCalled1`] = arg; return Promise.resolve(0); }); result[`${type}SinglePromiseWithZeroArg`] = await this.gainResult((cb) => hook[type](42, cb) ); } { const hook = this.createHook( ["x"], `${type}SinglePromiseWithEmptyStringArg` ); hook.tapPromise("promise", (arg) => { result[`${type}SinglePromiseWithEmptyStringArgCalled1`] = arg; return Promise.resolve(""); }); result[`${type}SinglePromiseWithEmptyStringArg`] = await this.gainResult( (cb) => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}SinglePromiseWithNullReject`); // eslint-disable-next-line prefer-promise-reject-errors hook.tapPromise("promise", (_arg) => Promise.reject(null)); result[`${type}SinglePromiseWithNullReject`] = await this.gainResult( (cb) => hook[type](null, cb) ); } { const hook = this.createHook( ["x"], `${type}SinglePromiseWithUndefinedReject` ); // eslint-disable-next-line prefer-promise-reject-errors hook.tapPromise("promise", (_arg) => Promise.reject(undefined)); result[`${type}SinglePromiseWithUndefinedReject`] = await this.gainResult( (cb) => hook[type](null, cb) ); } { const hook = this.createHook(["x"], `${type}SinglePromiseWithZeroReject`); // eslint-disable-next-line prefer-promise-reject-errors hook.tapPromise("promise", (_arg) => Promise.reject(0)); result[`${type}SinglePromiseWithZeroReject`] = await this.gainResult( (cb) => hook[type](null, cb) ); } { const hook = this.createHook( ["x"], `${type}SinglePromiseWithFalseReject` ); // eslint-disable-next-line prefer-promise-reject-errors hook.tapPromise("promise", (_arg) => Promise.reject(false)); result[`${type}SinglePromiseWithFalseReject`] = await this.gainResult( (cb) => hook[type](null, cb) ); } { const hook = this.createHook( ["x"], `${type}SinglePromiseWithEmptyReject` ); // eslint-disable-next-line prefer-promise-reject-errors hook.tapPromise("promise", (_arg) => Promise.reject("")); result[`${type}SinglePromiseWithEmptyReject`] = await this.gainResult( (cb) => hook[type](null, cb) ); } { const hook = this.createHook(["x"], `${type}MultiplePromiseWithArg`); hook.tapPromise("promise1", (arg) => { result[`${type}MultiplePromiseWithArgCalled1`] = arg; return Promise.resolve(arg + 1); }); hook.tapPromise("promise2", (arg) => { result[`${type}MultiplePromiseWithArgCalled2`] = arg; return Promise.resolve(arg + 2); }); result[`${type}MultiplePromiseWithArg`] = await this.gainResult((cb) => hook[type](42, cb) ); } { const hook = this.createHook( ["x"], `${type}MultiplePromiseWithArgNoReturn` ); hook.tapPromise("promise1", (arg) => { result[`${type}MultiplePromiseWithArgNoReturnCalled1`] = arg; return Promise.resolve(); }); hook.tapPromise("promise2", (arg) => { result[`${type}MultiplePromiseWithArgNoReturnCalled2`] = arg; return Promise.resolve(); }); result[`${type}MultiplePromiseWithArgNoReturn`] = await this.gainResult( (cb) => hook[type](42, cb) ); } { const hook = this.createHook( ["x"], `${type}MultiplePromiseWithArgFirstReturn` ); hook.tapPromise("promise1", (arg) => { result[`${type}MultiplePromiseWithArgFirstReturnCalled1`] = arg; return Promise.resolve(arg + 1); }); hook.tapPromise("promise2", (arg) => { result[`${type}MultiplePromiseWithArgFirstReturnCalled2`] = arg; return Promise.resolve(); }); result[`${type}MultiplePromiseWithArgFirstReturn`] = await this.gainResult((cb) => hook[type](42, cb)); } { const hook = this.createHook( ["x"], `${type}MultiplePromiseWithArgLastReturn` ); hook.tapPromise("promise1", (arg) => { result[`${type}MultiplePromiseWithArgLastReturnCalled1`] = arg; return Promise.resolve(); }); hook.tapPromise("promise2", (arg) => { result[`${type}MultiplePromiseWithArgLastReturnCalled2`] = arg; return Promise.resolve(arg + 2); }); result[`${type}MultiplePromiseWithArgLastReturn`] = await this.gainResult( (cb) => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}MultipleMixed1WithArg`); hook.tapAsync("async", (arg, callback) => { result[`${type}MultipleMixed1WithArgCalled1`] = arg; callback(null, arg + 1); }); hook.tapPromise("promise", (arg) => { result[`${type}MultipleMixed1WithArgCalled2`] = arg; return Promise.resolve(arg + 2); }); hook.tap("sync", (arg) => { result[`${type}MultipleMixed1WithArgCalled3`] = arg; return arg + 3; }); result[`${type}MultipleMixed1WithArg`] = await this.gainResult((cb) => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}MultipleMixed2WithArg`); hook.tapAsync("async", (arg, callback) => { result[`${type}MultipleMixed2WithArgCalled1`] = arg; setTimeout(() => callback(null, arg + 1), 100); }); hook.tapPromise("promise", (arg) => { result[`${type}MultipleMixed2WithArgCalled2`] = arg; return Promise.resolve(arg + 2); }); result[`${type}MultipleMixed2WithArg`] = await this.gainResult((cb) => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}MultipleMixed3WithArg`); hook.tapAsync("async1", (arg, callback) => { result[`${type}MultipleMixed3WithArgCalled1`] = arg; callback(null, arg + 1); }); hook.tapPromise("promise", (arg) => { result[`${type}MultipleMixed3WithArgCalled2`] = arg; return Promise.resolve(arg + 2); }); hook.tapAsync("async2", (arg, callback) => { result[`${type}MultipleMixed3WithArgCalled3`] = arg; setTimeout(() => callback(null, arg + 3), 100); }); result[`${type}MultipleMixed3WithArg`] = await this.gainResult((cb) => hook[type](42, cb) ); } { const hook = this.createHook([], `${type}MultipleSyncError`); hook.tap("sync1", () => { result[`${type}MultipleSyncErrorCalled1`] = true; }); hook.tap("sync2", () => { throw new Error("Error in sync2"); }); hook.tap("sync3", () => { result[`${type}MultipleSyncErrorCalled3`] = true; }); result[`${type}MultipleSyncError`] = await this.gainResult((cb) => hook[type](cb) ); } { const hook = this.createHook([], `${type}MultipleAsyncError`); hook.tapAsync("async1", (callback) => { result[`${type}MultipleAsyncErrorCalled1`] = true; callback(); }); hook.tapAsync("async2", (callback) => { callback(new Error("Error in async2")); }); hook.tapAsync("async3", (callback) => { result[`${type}MultipleAsyncErrorCalled3`] = true; callback(); }); result[`${type}MultipleAsyncError`] = await this.gainResult((cb) => hook[type](cb) ); } { const hook = this.createHook([], `${type}MultipleAsyncLateError`); hook.tapAsync("async1", (callback) => { result[`${type}MultipleAsyncLateErrorCalled1`] = true; callback(); }); hook.tapAsync("async2", (callback) => { setTimeout(() => callback(new Error("Error in async2")), 100); }); hook.tapAsync("async3", (callback) => { result[`${type}MultipleAsyncLateErrorCalled3`] = true; callback(); }); result[`${type}MultipleAsyncLateError`] = await this.gainResult((cb) => hook[type](cb) ); } { const hook = this.createHook( [], `${type}MultipleAsyncLateErrorEarlyResult1` ); hook.tapAsync("async1", (callback) => { result[`${type}MultipleAsyncLateErrorEarlyResult1Called1`] = true; callback(); }); hook.tapAsync("async2", (callback) => { setTimeout(() => callback(new Error("Error in async2")), 100); }); hook.tapAsync("async3", (callback) => { result[`${type}MultipleAsyncLateErrorEarlyResult1Called3`] = true; callback(null, 7); }); result[`${type}MultipleAsyncLateErrorEarlyResult1`] = await this.gainResult((cb) => hook[type](cb)); } { const hook = this.createHook( [], `${type}MultipleAsyncLateErrorEarlyResult2` ); hook.tapAsync("async1", (callback) => { result[`${type}MultipleAsyncLateErrorEarlyResult2Called1`] = true; setTimeout(() => callback(null, 42), 200); }); hook.tapAsync("async2", (callback) => { setTimeout(() => callback(new Error("Error in async2")), 100); }); hook.tapAsync("async3", (callback) => { result[`${type}MultipleAsyncLateErrorEarlyResult2Called3`] = true; callback(null, 7); }); result[`${type}MultipleAsyncLateErrorEarlyResult2`] = await this.gainResult((cb) => hook[type](cb)); } { const hook = this.createHook([], `${type}MultipleAsyncEarlyError`); hook.tapAsync("async1", (callback) => { result[`${type}MultipleAsyncEarlyErrorCalled1`] = true; setTimeout(() => callback(), 100); }); hook.tapAsync("async2", (callback) => { callback(new Error("Error in async2")); }); hook.tapAsync("async3", (callback) => { result[`${type}MultipleAsyncEarlyErrorCalled3`] = true; setTimeout(() => callback(), 100); }); result[`${type}MultipleAsyncEarlyError`] = await this.gainResult((cb) => hook[type](cb) ); } { const hook = this.createHook([], `${type}MultiplePromiseError`); hook.tapPromise("promise1", () => { result[`${type}MultiplePromiseErrorCalled1`] = true; return Promise.resolve(); }); hook.tapPromise("promise2", () => Promise.resolve().then(() => { throw new Error("Error in async2"); }) ); hook.tapPromise("promise3", () => { result[`${type}MultiplePromiseErrorCalled3`] = true; return Promise.resolve(); }); result[`${type}MultiplePromiseError`] = await this.gainResult((cb) => hook[type](cb) ); } { const hook = this.createHook([], `${type}MultiplePromiseLateError`); hook.tapPromise("promise1", () => { result[`${type}MultiplePromiseLateErrorCalled1`] = true; return Promise.resolve(); }); hook.tapPromise( "promise2", () => new Promise((resolve, reject) => { setTimeout(() => reject(new Error("Error in async2")), 100); }) ); hook.tapPromise("promise3", () => { result[`${type}MultiplePromiseLateErrorCalled3`] = true; return Promise.resolve(); }); result[`${type}MultiplePromiseLateError`] = await this.gainResult((cb) => hook[type](cb) ); } { const hook = this.createHook([], `${type}MultiplePromiseEarlyError`); hook.tapPromise("promise1", () => { result[`${type}MultiplePromiseEarlyErrorCalled1`] = true; return new Promise((resolve) => { setTimeout(() => resolve(), 100); }); }); hook.tapPromise("promise2", () => Promise.resolve().then(() => { throw new Error("Error in async2"); }) ); hook.tapPromise("promise3", () => { result[`${type}MultiplePromiseEarlyErrorCalled3`] = true; return new Promise((resolve) => { setTimeout(() => resolve(), 100); }); }); result[`${type}MultiplePromiseEarlyError`] = await this.gainResult((cb) => hook[type](cb) ); } { const hook = this.createHook(["x"], `${type}MultipleMixedError1WithArg`); hook.tapAsync("async", (arg, callback) => { result[`${type}MultipleMixedError1WithArgCalled1`] = arg; callback(null, arg); }); hook.tapPromise("promise", (arg) => { result[`${type}MultipleMixedError1WithArgCalled2`] = arg; return Promise.resolve(arg + 1); }); hook.tap("sync", (arg) => { result[`${type}MultipleMixedError1WithArgCalled3`] = arg; throw new Error("Error in sync"); }); result[`${type}MultipleMixedError1WithArg`] = await this.gainResult( (cb) => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}MultipleMixedError2WithArg`); hook.tapAsync("async", (arg, callback) => { result[`${type}MultipleMixedError2WithArgCalled1`] = arg; callback(null, arg); }); hook.tapPromise("promise", (arg) => { result[`${type}MultipleMixedError2WithArgCalled2`] = arg; return Promise.resolve().then(() => { throw new Error("Error in promise"); }); }); hook.tap("sync", (arg) => { result[`${type}MultipleMixedError2WithArgCalled3`] = arg; return arg + 2; }); result[`${type}MultipleMixedError2WithArg`] = await this.gainResult( (cb) => hook[type](42, cb) ); } { const hook = this.createHook(["x"], `${type}MultipleMixedError3WithArg`); hook.tapAsync("async", (arg, callback) => { result[`${type}MultipleMixedError3WithArgCalled1`] = arg; callback(new Error("Error in async")); }); hook.tapPromise("promise", (arg) => { result[`${type}MultipleMixedError3WithArgCalled2`] = arg; return Promise.resolve(arg + 1); }); hook.tap("sync", (arg) => { result[`${type}MultipleMixedError3WithArgCalled3`] = arg; return arg + 2; }); result[`${type}MultipleMixedError3WithArg`] = await this.gainResult( (cb) => hook[type](42, cb) ); } { const hook = this.createHook([], `${type}MultipleMixedLateError`); hook.tapAsync("async", (callback) => { result[`${type}MultipleMixedLateErrorCalled1`] = true; setTimeout(() => callback(new Error("Error in async")), 100); }); hook.tapPromise("promise", () => { result[`${type}MultipleMixedLateErrorCalled2`] = true; return Promise.resolve(42); }); hook.tap("sync", () => { result[`${type}MultipleMixedLateErrorCalled3`] = true; return 43; }); result[`${type}MultipleMixedLateError`] = await this.gainResult((cb) => hook[type](cb) ); } } async runIntercept(result, type) { { const hook = this.createHook(["a", "b", "c"], `${type}Intercepted`); hook.intercept({ call: (a, b, c) => { result[`${type}InterceptedCall1`] = [a, b, c]; }, done: () => { result[`${type}InterceptedDone1`] = true; }, result: (r) => { result[`${type}InterceptedResult1`] = r; }, error: (err) => { result[`${type}InterceptedError1`] = err; }, tap: (tap) => { result[`${type}InterceptedTap1`] = { ...tap, fn: tap.fn.length }; } }); hook.intercept({ call: (a, b, c) => { result[`${type}InterceptedCall2`] = [a, b, c]; }, done: () => { result[`${type}InterceptedDone2`] = true; }, result: (r) => { result[`${type}InterceptedResult2`] = r; }, error: (err) => { result[`${type}InterceptedError2`] = err; }, tap: (tap) => { if (!result[`${type}InterceptedTap2`]) { result[`${type}InterceptedTap2`] = { ...tap, fn: tap.fn.length }; } } }); hook.tap("sync", (a, b, c) => a + b + c); hook.tapPromise("promise", (a, b) => Promise.resolve(a + b + 1)); result[`${type}Intercepted`] = await this.gainResult((cb) => hook[type](1, 2, 3, cb) ); } { const hook = this.createHook( ["a", "b", "c"], `${type}ContextIntercepted` ); hook.intercept({ call: (context, a, b, c) => { context.number = 42; result[`${type}ContextInterceptedCall1`] = [context, a, b, c]; }, loop: (context, a, b, c) => { context.number2 = 88; result[`${type}ContextInterceptedLoop1`] = [context, a, b, c]; }, tap: (context, _tap) => { result[`${type}ContextInterceptedTap1`] = context; }, context: true }); hook.intercept({ call: (a, b, c) => { result[`${type}ContextInterceptedCall2`] = [a, b, c]; } }); hook.tap( { name: "sync", context: true }, (context, a, b, c) => context.number + a + b + c ); result[`${type}ContextIntercepted`] = await this.gainResult((cb) => hook[type](1, 2, 3, cb) ); } { const hook = this.createHook( ["a", "b", "c"], `${type}UnusedContextIntercepted` ); hook.intercept({ call: (context, a, b, c) => { result[`${type}UnusedContextInterceptedCall1`] = [context, a, b, c]; }, tap: (context, _tap) => { result[`${type}UnusedContextInterceptedTap1`] = context; }, context: true }); hook.intercept({ call: (a, b, c) => { result[`${type}UnusedContextInterceptedCall2`] = [a, b, c]; } }); hook.tap("sync", (a, b, c) => a + b + c); result[`${type}UnusedContextIntercepted`] = await this.gainResult((cb) => hook[type](1, 2, 3, cb) ); } } gainResult(fn) { return Promise.race([ new Promise((resolve) => { try { const ret = fn((err, result) => { if (err) { resolve({ type: "async", error: err.message }); } else { resolve({ type: "async", value: result }); } }); if (ret instanceof Promise) { resolve( ret.then( (res) => ({ type: "promise", value: res }), (err) => ({ type: "promise", error: err.message }) ) ); } else if (ret !== undefined) { resolve({ type: "return", value: ret }); } } catch (err) { resolve({ error: err.message }); } }), new Promise((resolve) => { setTimeout( () => resolve({ type: "no result" }), 1000 ); }) ]); } createHook(args, name) { try { return this.hookCreator(args, name); } catch (err) { return { tap: () => {}, tapPromise: () => {}, tapAsync: () => {}, intercept: () => {}, call: () => { throw err; }, callAsync: () => { throw err; }, promise: () => { throw err; } }; } } } // eslint-disable-next-line jest/no-export module.exports = HookTesterTest; webpack-tapable-8ca4f9d/test/MultiHook.test.js000066400000000000000000000035171517167660300214700ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const MultiHookTest = require("../lib/MultiHook"); describe("MultiHook", () => { const redirectedMethods = ["tap", "tapAsync", "tapPromise"]; for (const name of redirectedMethods) { it(`should redirect ${name}`, () => { const calls = []; const fakeHook = { [name]: (options, fn) => { calls.push({ options, fn }); } }; new MultiHookTest([fakeHook, fakeHook])[name]("options", "fn"); expect(calls).toEqual([ { options: "options", fn: "fn" }, { options: "options", fn: "fn" } ]); }); } it("should redirect intercept", () => { const calls = []; const fakeHook = { intercept: (interceptor) => { calls.push(interceptor); } }; new MultiHookTest([fakeHook, fakeHook]).intercept("interceptor"); expect(calls).toEqual(["interceptor", "interceptor"]); }); it("should redirect withOptions", () => { const calls = []; const fakeHook = { withOptions: (options) => { calls.push(options); return { tap: (options, fn) => { calls.push({ options, fn }); } }; } }; const newHook = new MultiHookTest([fakeHook, fakeHook]).withOptions( "options" ); newHook.tap("options", "fn"); expect(calls).toEqual([ "options", "options", { options: "options", fn: "fn" }, { options: "options", fn: "fn" } ]); }); it("should redirect isUsed", () => { const fakeHook1 = { isUsed: () => true }; const fakeHook2 = { isUsed: () => false }; expect(new MultiHookTest([fakeHook1, fakeHook1]).isUsed()).toBe(true); expect(new MultiHookTest([fakeHook1, fakeHook2]).isUsed()).toBe(true); expect(new MultiHookTest([fakeHook2, fakeHook1]).isUsed()).toBe(true); expect(new MultiHookTest([fakeHook2, fakeHook2]).isUsed()).toBe(false); }); }); webpack-tapable-8ca4f9d/test/SyncBailHook.test.js000066400000000000000000000053071517167660300221010ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const SyncBailHookTest = require("../lib/SyncBailHook"); function pify(fn) { return new Promise((resolve, reject) => { fn((err, result) => { if (err) reject(err); else resolve(result); }); }); } describe("SyncBailHook", () => { it("should allow to create sync bail hooks", async () => { const h1 = new SyncBailHookTest(["a"]); const h2 = new SyncBailHookTest(["a", "b"]); const r = h1.call(1); expect(r).toBeUndefined(); h1.tap("A", (_a) => undefined); h2.tap("A", (a, b) => [a, b]); expect(h1.call(1)).toBeUndefined(); expect(await h1.promise(1)).toBeUndefined(); expect(await pify((cb) => h1.callAsync(1, cb))).toBeUndefined(); expect(h2.call(1, 2)).toEqual([1, 2]); expect(await h2.promise(1, 2)).toEqual([1, 2]); expect(await pify((cb) => h2.callAsync(1, 2, cb))).toEqual([1, 2]); h1.tap("B", (a) => `ok${a}`); h2.tap("B", (_a, _b) => "wrong"); expect(h1.call(10)).toBe("ok10"); expect(await h1.promise(10)).toBe("ok10"); expect(await pify((cb) => h1.callAsync(10, cb))).toBe("ok10"); expect(h2.call(10, 20)).toEqual([10, 20]); expect(await h2.promise(10, 20)).toEqual([10, 20]); expect(await pify((cb) => h2.callAsync(10, 20, cb))).toEqual([10, 20]); }); it("should bail on non-null return", async () => { const h1 = new SyncBailHookTest(["a"]); const mockCall1 = jest.fn(); const mockCall2 = jest.fn(() => "B"); const mockCall3 = jest.fn(() => "C"); h1.tap("A", mockCall1); h1.tap("B", mockCall2); h1.tap("C", mockCall3); expect(h1.call()).toBe("B"); expect(mockCall1).toHaveBeenCalledTimes(1); expect(mockCall2).toHaveBeenCalledTimes(1); expect(mockCall3).not.toHaveBeenCalled(); }); it("should allow to intercept calls", () => { const hook = new SyncBailHookTest(["x"]); const mockCall = jest.fn(); const mockTap = jest.fn((x) => x); hook.intercept({ call: mockCall, tap: mockTap }); hook.call(5); expect(mockCall).toHaveBeenLastCalledWith(5); expect(mockTap).not.toHaveBeenCalled(); hook.tap("test", () => 10); hook.call(7); expect(mockCall).toHaveBeenLastCalledWith(7); expect(mockTap).toHaveBeenCalled(); }); it("should throw on tapAsync", () => { const hook = new SyncBailHookTest(["x"]); expect(() => hook.tapAsync()).toThrow(/tapAsync/); }); it("should throw on tapPromise", () => { const hook = new SyncBailHookTest(["x"]); expect(() => hook.tapPromise()).toThrow(/tapPromise/); }); it("should not crash with many plugins", () => { const hook = new SyncBailHookTest(["x"]); for (let i = 0; i < 1000; i++) { hook.tap("Test", () => 42); } expect(hook.call()).toBe(42); }); }); webpack-tapable-8ca4f9d/test/SyncHook.test.js000066400000000000000000000063571517167660300213170ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const SyncHookTest = require("../lib/SyncHook"); describe("SyncHook", () => { it("should allow to create sync hooks", async () => { const h0 = new SyncHookTest(); const h1 = new SyncHookTest(["test"]); const h2 = new SyncHookTest(["test", "arg2"]); const h3 = new SyncHookTest(["test", "arg2", "arg3"]); h0.call(); await h0.promise(); await new Promise((resolve) => { h0.callAsync(resolve); }); const mock0 = jest.fn(); h0.tap("A", mock0); h0.call(); expect(mock0).toHaveBeenLastCalledWith(); const mock1 = jest.fn(); h0.tap("B", mock1); h0.call(); expect(mock1).toHaveBeenLastCalledWith(); const mock2 = jest.fn(); const mock3 = jest.fn(); const mock4 = jest.fn(); const mock5 = jest.fn(); h1.tap("C", mock2); h2.tap("D", mock3); h3.tap("E", mock4); h3.tap("F", mock5); h1.call("1"); h2.call("1", 2); h3.call("1", 2, 3); expect(mock2).toHaveBeenLastCalledWith("1"); expect(mock3).toHaveBeenLastCalledWith("1", 2); expect(mock4).toHaveBeenLastCalledWith("1", 2, 3); expect(mock5).toHaveBeenLastCalledWith("1", 2, 3); await new Promise((resolve) => { h1.callAsync("a", resolve); }); await h2.promise("a", "b"); await new Promise((resolve) => { h3.callAsync("a", "b", "c", resolve); }); expect(mock2).toHaveBeenLastCalledWith("a"); expect(mock3).toHaveBeenLastCalledWith("a", "b"); expect(mock4).toHaveBeenLastCalledWith("a", "b", "c"); expect(mock5).toHaveBeenLastCalledWith("a", "b", "c"); await h3.promise("x", "y"); expect(mock4).toHaveBeenLastCalledWith("x", "y", undefined); expect(mock5).toHaveBeenLastCalledWith("x", "y", undefined); }); it("should sync execute hooks", () => { const h1 = new SyncHookTest(["a"]); const mockCall1 = jest.fn(); const mockCall2 = jest.fn(() => "B"); const mockCall3 = jest.fn(() => "C"); h1.tap("A", mockCall1); h1.tap("B", mockCall2); h1.tap("C", mockCall3); expect(h1.call()).toBeUndefined(); expect(mockCall1).toHaveBeenCalledTimes(1); expect(mockCall2).toHaveBeenCalledTimes(1); expect(mockCall3).toHaveBeenCalledTimes(1); }); it("should allow to intercept calls", () => { const hook = new SyncHookTest(["arg1", "arg2"]); const mockCall = jest.fn(); const mock0 = jest.fn(); const mockRegister = jest.fn((_x) => ({ name: "huh", type: "sync", fn: mock0 })); const mock1 = jest.fn(); hook.tap("Test1", mock1); hook.intercept({ call: mockCall, register: mockRegister }); const mock2 = jest.fn(); hook.tap("Test2", mock2); hook.call(1, 2); expect(mockCall).toHaveBeenLastCalledWith(1, 2); expect(mockRegister).toHaveBeenLastCalledWith({ type: "sync", name: "Test2", fn: mock2 }); expect(mock1).not.toHaveBeenLastCalledWith(1, 2); expect(mock2).not.toHaveBeenLastCalledWith(1, 2); expect(mock0).toHaveBeenLastCalledWith(1, 2); }); it("should throw error on tapAsync", () => { const hook = new SyncHookTest(["arg1", "arg2"]); expect(() => hook.tapAsync()).toThrow(/tapAsync/); }); it("should throw error on tapPromise", () => { const hook = new SyncHookTest(["arg1", "arg2"]); expect(() => hook.tapPromise()).toThrow(/tapPromise/); }); }); webpack-tapable-8ca4f9d/test/SyncHooks.test.js000066400000000000000000000025471517167660300214770ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const SyncBailHook = require("../lib/SyncBailHook"); const SyncHook = require("../lib/SyncHook"); const SyncLoopHook = require("../lib/SyncLoopHook"); const SyncWaterfallHook = require("../lib/SyncWaterfallHook"); const HookTester = require("./HookTester.test"); describe("SyncHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester((args) => new SyncHook(args)); const result = await tester.run(true); expect(result).toMatchSnapshot(); }, 15000); }); describe("SyncBailHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester((args) => new SyncBailHook(args)); const result = await tester.run(true); expect(result).toMatchSnapshot(); }, 15000); }); describe("SyncWaterfallHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester((args) => new SyncWaterfallHook(args)); const result = await tester.run(true); expect(result).toMatchSnapshot(); }, 15000); }); describe("SyncLoopHook", () => { it("should have to correct behavior", async () => { const tester = new HookTester((args) => new SyncLoopHook(args)); const result = await tester.runForLoop(true); expect(result).toMatchSnapshot(); }, 15000); }); webpack-tapable-8ca4f9d/test/SyncLoopHook.test.js000066400000000000000000000023141517167660300221360ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php */ "use strict"; const SyncLoopHookTest = require("../lib/SyncLoopHook"); describe("SyncLoopHook", () => { it("should throw on tapAsync", () => { const hook = new SyncLoopHookTest(["a"]); expect(() => hook.tapAsync("A", () => {})).toThrow( /tapAsync is not supported on a SyncLoopHook/ ); }); it("should throw on tapPromise", () => { const hook = new SyncLoopHookTest(["a"]); expect(() => hook.tapPromise("A", () => {})).toThrow( /tapPromise is not supported on a SyncLoopHook/ ); }); it("should loop through taps until all return undefined", () => { const hook = new SyncLoopHookTest(["counter"]); let firstCalls = 0; let secondCalls = 0; hook.tap("first", () => { if (firstCalls++ < 2) return true; }); hook.tap("second", () => { if (secondCalls++ < 1) return true; }); hook.call(); expect(firstCalls).toBeGreaterThanOrEqual(3); expect(secondCalls).toBeGreaterThanOrEqual(2); }); it("should be callable without arguments using default args", () => { const hook = new SyncLoopHookTest(); const mock = jest.fn(); hook.tap("A", mock); hook.call(); expect(mock).toHaveBeenCalledTimes(1); }); }); webpack-tapable-8ca4f9d/test/SyncWaterfallHook.test.js000066400000000000000000000131661517167660300231550ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const SyncWaterfallHookTest = require("../lib/SyncWaterfallHook"); function pify(fn) { return new Promise((resolve, reject) => { fn((err, result) => { if (err) reject(err); else resolve(result); }); }); } describe("SyncWaterfallHook", () => { it("should throw an error when hook has no argument", () => { expect(() => new SyncWaterfallHookTest()).toThrow( "Waterfall hooks must have at least one argument" ); }); it("should work", () => { const hook = new SyncWaterfallHookTest(["x"]); hook.tap("number", () => 42); hook.tap("string", () => "str"); hook.tap("false", () => false); return expect(hook.call()).toBe(false); }); it("should work with undefined", async () => { const hook = new SyncWaterfallHookTest(["x"]); hook.tap("number", () => 42); hook.tap("undefined", () => undefined); return expect(hook.call()).toBe(42); }); it("should work with void", async () => { const hook = new SyncWaterfallHookTest(["x"]); hook.tap("number", () => 42); hook.tap("undefined", () => {}); return expect(hook.call()).toBe(42); }); it("should work with undefined and number again", async () => { const hook = new SyncWaterfallHookTest(["x"]); hook.tap("number", () => 42); hook.tap("undefined", () => {}); hook.tap("number-again", () => 43); return expect(hook.call()).toBe(43); }); it("should work with null", async () => { const hook = new SyncWaterfallHookTest(["x"]); hook.tap("number", () => 42); hook.tap("undefined", () => null); return expect(hook.call()).toBeNull(); }); it("should work with different types", async () => { const hook = new SyncWaterfallHookTest(["x"]); hook.tap("number", () => 42); hook.tap("string", () => "string"); return expect(hook.call()).toBe("string"); }); it("should allow to create sync hooks", async () => { const hook = new SyncWaterfallHookTest(["arg1", "arg2"]); const mock0 = jest.fn((arg) => `${arg},0`); const mock1 = jest.fn((arg) => `${arg},1`); const mock2 = jest.fn((arg) => `${arg},2`); hook.tap("A", mock0); hook.tap("B", mock1); hook.tap("C", mock2); const returnValue0 = hook.call("sync", "a2"); expect(returnValue0).toBe("sync,0,1,2"); expect(mock0).toHaveBeenLastCalledWith("sync", "a2"); expect(mock1).toHaveBeenLastCalledWith("sync,0", "a2"); expect(mock2).toHaveBeenLastCalledWith("sync,0,1", "a2"); const returnValue1 = await new Promise((resolve) => { hook.callAsync("async", "a2", (...args) => resolve(args)); }); expect(returnValue1).toEqual([null, "async,0,1,2"]); expect(mock0).toHaveBeenLastCalledWith("async", "a2"); expect(mock1).toHaveBeenLastCalledWith("async,0", "a2"); expect(mock2).toHaveBeenLastCalledWith("async,0,1", "a2"); const returnValue2 = await hook.promise("promise", "a2"); expect(returnValue2).toBe("promise,0,1,2"); expect(mock0).toHaveBeenLastCalledWith("promise", "a2"); expect(mock1).toHaveBeenLastCalledWith("promise,0", "a2"); expect(mock2).toHaveBeenLastCalledWith("promise,0,1", "a2"); }); it("should allow to intercept calls", () => { const hook = new SyncWaterfallHookTest(["arg1", "arg2"]); const mockCall = jest.fn(); const mock0 = jest.fn(() => "mock0"); const mockRegister = jest.fn((_x) => ({ name: "huh", type: "sync", fn: mock0 })); const mock1 = jest.fn(() => "mock1"); hook.tap("Test1", mock1); hook.intercept({ call: mockCall, register: mockRegister }); const mock2 = jest.fn(() => "mock2"); hook.tap("Test2", mock2); const returnValue = hook.call(1, 2); expect(returnValue).toBe("mock0"); expect(mockCall).toHaveBeenLastCalledWith(1, 2); expect(mockRegister).toHaveBeenLastCalledWith({ type: "sync", name: "Test2", fn: mock2 }); expect(mock1).not.toHaveBeenLastCalledWith(1, 2); expect(mock2).not.toHaveBeenLastCalledWith(1, 2); expect(mock0.mock.calls).toEqual([ [1, 2], ["mock0", 2] ]); }); it("should allow to create waterfall hooks", async () => { const h1 = new SyncWaterfallHookTest(["a"]); const h2 = new SyncWaterfallHookTest(["a", "b"]); expect(h1.call(1)).toBe(1); h1.tap("A", (_a) => undefined); h2.tap("A", (a, b) => [a, b]); expect(h1.call(1)).toBe(1); expect(await h1.promise(1)).toBe(1); expect(await pify((cb) => h1.callAsync(1, cb))).toBe(1); expect(h2.call(1, 2)).toEqual([1, 2]); expect(await h2.promise(1, 2)).toEqual([1, 2]); expect(await pify((cb) => h2.callAsync(1, 2, cb))).toEqual([1, 2]); let count = 1; count = h1.call(count + ++count); // 1 + 2 => 3 count = h1.call(count + ++count); // 3 + 4 => 7 count = h1.call(count + ++count); // 7 + 8 => 15 expect(count).toBe(15); }); it("should throw when args have length less than 1", () => { expect(() => { // eslint-disable-next-line no-new new SyncWaterfallHookTest([]); }).toThrow(/Waterfall/); }); it("should allow to intercept calls #2", () => { const hook = new SyncWaterfallHookTest(["x"]); const mockCall = jest.fn(); const mockTap = jest.fn((x) => x); hook.intercept({ call: mockCall, tap: mockTap }); hook.call(5); expect(mockCall).toHaveBeenLastCalledWith(5); expect(mockTap).not.toHaveBeenCalled(); hook.tap("test", () => 10); hook.call(7); expect(mockCall).toHaveBeenLastCalledWith(7); expect(mockTap).toHaveBeenCalled(); }); it("should throw on tapAsync", () => { const hook = new SyncWaterfallHookTest(["x"]); expect(() => hook.tapAsync()).toThrow(/tapAsync/); }); it("should throw on tapPromise", () => { const hook = new SyncWaterfallHookTest(["x"]); expect(() => hook.tapPromise()).toThrow(/tapPromise/); }); }); webpack-tapable-8ca4f9d/test/UtilBrowser.test.js000066400000000000000000000020071517167660300220270ustar00rootroot00000000000000/* MIT License http://www.opensource.org/licenses/mit-license.php */ "use strict"; const utilBrowserTest = require("../lib/util-browser"); describe("util-browser", () => { it("should warn only once and forward arguments", () => { const warn = jest.spyOn(console, "warn").mockImplementation(() => {}); const inner = jest.fn((...args) => args.reduce((a, b) => a + b, 0)); const wrapped = utilBrowserTest.deprecate(inner, "do not use"); expect(wrapped(1, 2, 3)).toBe(6); expect(wrapped(4, 5)).toBe(9); expect(inner).toHaveBeenCalledTimes(2); expect(warn).toHaveBeenCalledTimes(1); expect(warn).toHaveBeenCalledWith("DeprecationWarning: do not use"); warn.mockRestore(); }); it("should preserve `this` when invoked as a method", () => { const warn = jest.spyOn(console, "warn").mockImplementation(() => {}); const obj = { value: 42, run: utilBrowserTest.deprecate(function run() { return this.value; }, "method deprecated") }; expect(obj.run()).toBe(42); warn.mockRestore(); }); }); webpack-tapable-8ca4f9d/test/__snapshots__/000077500000000000000000000000001517167660300210515ustar00rootroot00000000000000webpack-tapable-8ca4f9d/test/__snapshots__/AsyncParallelHooks.test.js.snap000066400000000000000000001374651517167660300271030ustar00rootroot00000000000000// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`AsyncParallelBailHook should have to correct behavior 1`] = ` Object { "async": Object { "callAsyncMultipleAsyncEarlyError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncEarlyErrorCalled1": true, "callAsyncMultipleAsyncError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncErrorCalled1": true, "callAsyncMultipleAsyncLateError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorCalled1": true, "callAsyncMultipleAsyncLateErrorCalled3": true, "callAsyncMultipleAsyncLateErrorEarlyResult1": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorEarlyResult1Called1": true, "callAsyncMultipleAsyncLateErrorEarlyResult1Called3": true, "callAsyncMultipleAsyncLateErrorEarlyResult2": Object { "type": "async", "value": 42, }, "callAsyncMultipleAsyncLateErrorEarlyResult2Called1": true, "callAsyncMultipleAsyncLateErrorEarlyResult2Called3": true, "callAsyncMultipleAsyncWithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleAsyncWithArgCalled1": 42, "callAsyncMultipleAsyncWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultipleAsyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleAsyncWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultipleAsyncWithArgLastReturnCalled1": 42, "callAsyncMultipleAsyncWithArgLastReturnCalled2": 42, "callAsyncMultipleAsyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgNoReturnCalled1": 42, "callAsyncMultipleAsyncWithArgNoReturnCalled2": 42, "callAsyncMultipleMixed1WithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleMixed1WithArgCalled1": 42, "callAsyncMultipleMixed2WithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleMixed2WithArgCalled1": 42, "callAsyncMultipleMixed2WithArgCalled2": 42, "callAsyncMultipleMixed3WithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleMixed3WithArgCalled1": 42, "callAsyncMultipleMixedError1WithArg": Object { "type": "async", "value": 42, }, "callAsyncMultipleMixedError1WithArgCalled1": 42, "callAsyncMultipleMixedError2WithArg": Object { "type": "async", "value": 42, }, "callAsyncMultipleMixedError2WithArgCalled1": 42, "callAsyncMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedError3WithArgCalled1": 42, "callAsyncMultipleMixedLateError": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedLateErrorCalled1": true, "callAsyncMultipleMixedLateErrorCalled2": true, "callAsyncMultipleMixedLateErrorCalled3": true, "callAsyncMultiplePromiseEarlyError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseEarlyErrorCalled1": true, "callAsyncMultiplePromiseEarlyErrorCalled3": true, "callAsyncMultiplePromiseError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseErrorCalled1": true, "callAsyncMultiplePromiseErrorCalled3": true, "callAsyncMultiplePromiseLateError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseLateErrorCalled1": true, "callAsyncMultiplePromiseLateErrorCalled3": true, "callAsyncMultiplePromiseWithArg": Object { "type": "async", "value": 43, }, "callAsyncMultiplePromiseWithArgCalled1": 42, "callAsyncMultiplePromiseWithArgCalled2": 42, "callAsyncMultiplePromiseWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultiplePromiseWithArgFirstReturnCalled1": 42, "callAsyncMultiplePromiseWithArgFirstReturnCalled2": 42, "callAsyncMultiplePromiseWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultiplePromiseWithArgLastReturnCalled1": 42, "callAsyncMultiplePromiseWithArgLastReturnCalled2": 42, "callAsyncMultiplePromiseWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgNoReturnCalled1": 42, "callAsyncMultiplePromiseWithArgNoReturnCalled2": 42, "callAsyncMultipleSync": Object { "type": "async", "value": 42, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncLastReturn": Object { "type": "async", "value": 43, }, "callAsyncMultipleSyncLastReturnCalled1": true, "callAsyncMultipleSyncLastReturnCalled2": true, "callAsyncMultipleSyncNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncNoReturnCalled1": true, "callAsyncMultipleSyncNoReturnCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleAsyncWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleAsyncWithArgCalled1": 42, "callAsyncSinglePromiseWithArg": Object { "type": "async", "value": 43, }, "callAsyncSinglePromiseWithArgCalled1": 42, "callAsyncSinglePromiseWithEmptyReject": Object { "error": "Tap function (tapPromise) rejects \\"\\" value", "type": "async", }, "callAsyncSinglePromiseWithEmptyStringArg": Object { "type": "async", "value": "", }, "callAsyncSinglePromiseWithEmptyStringArgCalled1": 42, "callAsyncSinglePromiseWithFalseReject": Object { "error": "Tap function (tapPromise) rejects \\"false\\" value", "type": "async", }, "callAsyncSinglePromiseWithNullArg": Object { "type": "async", "value": null, }, "callAsyncSinglePromiseWithNullArgCalled1": 42, "callAsyncSinglePromiseWithNullReject": Object { "error": "Tap function (tapPromise) rejects \\"null\\" value", "type": "async", }, "callAsyncSinglePromiseWithUndefined": Object { "type": "async", "value": undefined, }, "callAsyncSinglePromiseWithUndefinedCalled1": 42, "callAsyncSinglePromiseWithUndefinedReject": Object { "error": "Tap function (tapPromise) rejects \\"undefined\\" value", "type": "async", }, "callAsyncSinglePromiseWithZeroArg": Object { "type": "async", "value": 0, }, "callAsyncSinglePromiseWithZeroArgCalled1": 42, "callAsyncSinglePromiseWithZeroReject": Object { "error": "Tap function (tapPromise) rejects \\"0\\" value", "type": "async", }, "callAsyncSingleSync": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncCalled1": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": 43, }, "callAsyncSingleSyncWithArgCalled1": 42, "callAsyncSingleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncEarlyError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncEarlyErrorCalled1": true, "promiseMultipleAsyncError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncErrorCalled1": true, "promiseMultipleAsyncLateError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorCalled1": true, "promiseMultipleAsyncLateErrorCalled3": true, "promiseMultipleAsyncLateErrorEarlyResult1": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorEarlyResult1Called1": true, "promiseMultipleAsyncLateErrorEarlyResult1Called3": true, "promiseMultipleAsyncLateErrorEarlyResult2": Object { "type": "promise", "value": 42, }, "promiseMultipleAsyncLateErrorEarlyResult2Called1": true, "promiseMultipleAsyncLateErrorEarlyResult2Called3": true, "promiseMultipleAsyncWithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleAsyncWithArgCalled1": 42, "promiseMultipleAsyncWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultipleAsyncWithArgFirstReturnCalled1": 42, "promiseMultipleAsyncWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultipleAsyncWithArgLastReturnCalled1": 42, "promiseMultipleAsyncWithArgLastReturnCalled2": 42, "promiseMultipleAsyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncWithArgNoReturnCalled2": 42, "promiseMultipleMixed1WithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleMixed1WithArgCalled1": 42, "promiseMultipleMixed2WithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleMixed2WithArgCalled1": 42, "promiseMultipleMixed2WithArgCalled2": 42, "promiseMultipleMixed3WithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleMixed3WithArgCalled1": 42, "promiseMultipleMixedError1WithArg": Object { "type": "promise", "value": 42, }, "promiseMultipleMixedError1WithArgCalled1": 42, "promiseMultipleMixedError2WithArg": Object { "type": "promise", "value": 42, }, "promiseMultipleMixedError2WithArgCalled1": 42, "promiseMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedError3WithArgCalled1": 42, "promiseMultipleMixedLateError": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedLateErrorCalled1": true, "promiseMultipleMixedLateErrorCalled2": true, "promiseMultipleMixedLateErrorCalled3": true, "promiseMultiplePromiseEarlyError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseEarlyErrorCalled1": true, "promiseMultiplePromiseEarlyErrorCalled3": true, "promiseMultiplePromiseError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseErrorCalled1": true, "promiseMultiplePromiseErrorCalled3": true, "promiseMultiplePromiseLateError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseLateErrorCalled1": true, "promiseMultiplePromiseLateErrorCalled3": true, "promiseMultiplePromiseWithArg": Object { "type": "promise", "value": 43, }, "promiseMultiplePromiseWithArgCalled1": 42, "promiseMultiplePromiseWithArgCalled2": 42, "promiseMultiplePromiseWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultiplePromiseWithArgFirstReturnCalled1": 42, "promiseMultiplePromiseWithArgFirstReturnCalled2": 42, "promiseMultiplePromiseWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultiplePromiseWithArgLastReturnCalled1": 42, "promiseMultiplePromiseWithArgLastReturnCalled2": 42, "promiseMultiplePromiseWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgNoReturnCalled1": 42, "promiseMultiplePromiseWithArgNoReturnCalled2": 42, "promiseMultipleSync": Object { "type": "promise", "value": 42, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncLastReturn": Object { "type": "promise", "value": 43, }, "promiseMultipleSyncLastReturnCalled1": true, "promiseMultipleSyncLastReturnCalled2": true, "promiseMultipleSyncNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncNoReturnCalled1": true, "promiseMultipleSyncNoReturnCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleAsyncWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleAsyncWithArgCalled1": 42, "promiseSinglePromiseWithArg": Object { "type": "promise", "value": 43, }, "promiseSinglePromiseWithArgCalled1": 42, "promiseSinglePromiseWithEmptyReject": Object { "error": "Tap function (tapPromise) rejects \\"\\" value", "type": "promise", }, "promiseSinglePromiseWithEmptyStringArg": Object { "type": "promise", "value": "", }, "promiseSinglePromiseWithEmptyStringArgCalled1": 42, "promiseSinglePromiseWithFalseReject": Object { "error": "Tap function (tapPromise) rejects \\"false\\" value", "type": "promise", }, "promiseSinglePromiseWithNullArg": Object { "type": "promise", "value": null, }, "promiseSinglePromiseWithNullArgCalled1": 42, "promiseSinglePromiseWithNullReject": Object { "error": "Tap function (tapPromise) rejects \\"null\\" value", "type": "promise", }, "promiseSinglePromiseWithUndefined": Object { "type": "promise", "value": undefined, }, "promiseSinglePromiseWithUndefinedCalled1": 42, "promiseSinglePromiseWithUndefinedReject": Object { "error": "Tap function (tapPromise) rejects \\"undefined\\" value", "type": "promise", }, "promiseSinglePromiseWithZeroArg": Object { "type": "promise", "value": 0, }, "promiseSinglePromiseWithZeroArgCalled1": 42, "promiseSinglePromiseWithZeroReject": Object { "error": "Tap function (tapPromise) rejects \\"0\\" value", "type": "promise", }, "promiseSingleSync": Object { "type": "promise", "value": 42, }, "promiseSingleSyncCalled1": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": 43, }, "promiseSingleSyncWithArgCalled1": 42, "promiseSingleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgNoReturnCalled1": 42, }, "intercept": Object { "callAsyncContextIntercepted": Object { "type": "async", "value": 48, }, "callAsyncContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "callAsyncContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncContextInterceptedTap1": Object { "number": 42, }, "callAsyncIntercepted": Object { "type": "async", "value": 6, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedResult1": 6, "callAsyncInterceptedResult2": 6, "callAsyncInterceptedTap1": Object { "fn": 3, "name": "sync", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "callAsyncUnusedContextIntercepted": Object { "type": "async", "value": 6, }, "callAsyncUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "callAsyncUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncUnusedContextInterceptedTap1": undefined, "promiseContextIntercepted": Object { "type": "promise", "value": 48, }, "promiseContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "promiseContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseContextInterceptedTap1": Object { "number": 42, }, "promiseIntercepted": Object { "type": "promise", "value": 6, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedResult1": 6, "promiseInterceptedResult2": 6, "promiseInterceptedTap1": Object { "fn": 3, "name": "sync", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "promiseUnusedContextIntercepted": Object { "type": "promise", "value": 6, }, "promiseUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "promiseUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseUnusedContextInterceptedTap1": undefined, }, "sync": Object { "callAsyncIntercepted": Object { "type": "async", "value": 6, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedTap1": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncMultipleSync": Object { "type": "async", "value": 42, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncErrorCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": 84, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": 84, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": 85, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncMultipleSyncWithArgs": Object { "type": "async", "value": 129, }, "callAsyncMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSync": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncCalled": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncWithArgCalled": 42, "promiseIntercepted": Object { "type": "promise", "value": 6, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedTap1": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseMultipleSync": Object { "type": "promise", "value": 42, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncErrorCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": 84, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": 84, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": 85, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseMultipleSyncWithArgs": Object { "type": "promise", "value": 129, }, "promiseMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSync": Object { "type": "promise", "value": 42, }, "promiseSingleSyncCalled": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleSyncWithArgCalled": 42, }, } `; exports[`AsyncParallelHook should have to correct behavior 1`] = ` Object { "async": Object { "callAsyncMultipleAsyncEarlyError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncEarlyErrorCalled1": true, "callAsyncMultipleAsyncError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncErrorCalled1": true, "callAsyncMultipleAsyncLateError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorCalled1": true, "callAsyncMultipleAsyncLateErrorCalled3": true, "callAsyncMultipleAsyncLateErrorEarlyResult1": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorEarlyResult1Called1": true, "callAsyncMultipleAsyncLateErrorEarlyResult1Called3": true, "callAsyncMultipleAsyncLateErrorEarlyResult2": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorEarlyResult2Called1": true, "callAsyncMultipleAsyncLateErrorEarlyResult2Called3": true, "callAsyncMultipleAsyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgCalled1": 42, "callAsyncMultipleAsyncWithArgCalled2": 42, "callAsyncMultipleAsyncWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleAsyncWithArgFirstReturnCalled2": 42, "callAsyncMultipleAsyncWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgLastReturnCalled1": 42, "callAsyncMultipleAsyncWithArgLastReturnCalled2": 42, "callAsyncMultipleAsyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgNoReturnCalled1": 42, "callAsyncMultipleAsyncWithArgNoReturnCalled2": 42, "callAsyncMultipleMixed1WithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleMixed1WithArgCalled1": 42, "callAsyncMultipleMixed1WithArgCalled2": 42, "callAsyncMultipleMixed1WithArgCalled3": 42, "callAsyncMultipleMixed2WithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleMixed2WithArgCalled1": 42, "callAsyncMultipleMixed2WithArgCalled2": 42, "callAsyncMultipleMixed3WithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleMixed3WithArgCalled1": 42, "callAsyncMultipleMixed3WithArgCalled2": 42, "callAsyncMultipleMixed3WithArgCalled3": 42, "callAsyncMultipleMixedError1WithArg": Object { "error": "Error in sync", "type": "async", }, "callAsyncMultipleMixedError1WithArgCalled1": 42, "callAsyncMultipleMixedError1WithArgCalled2": 42, "callAsyncMultipleMixedError1WithArgCalled3": 42, "callAsyncMultipleMixedError2WithArg": Object { "error": "Error in promise", "type": "async", }, "callAsyncMultipleMixedError2WithArgCalled1": 42, "callAsyncMultipleMixedError2WithArgCalled2": 42, "callAsyncMultipleMixedError2WithArgCalled3": 42, "callAsyncMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedError3WithArgCalled1": 42, "callAsyncMultipleMixedLateError": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedLateErrorCalled1": true, "callAsyncMultipleMixedLateErrorCalled2": true, "callAsyncMultipleMixedLateErrorCalled3": true, "callAsyncMultiplePromiseEarlyError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseEarlyErrorCalled1": true, "callAsyncMultiplePromiseEarlyErrorCalled3": true, "callAsyncMultiplePromiseError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseErrorCalled1": true, "callAsyncMultiplePromiseErrorCalled3": true, "callAsyncMultiplePromiseLateError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseLateErrorCalled1": true, "callAsyncMultiplePromiseLateErrorCalled3": true, "callAsyncMultiplePromiseWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgCalled1": 42, "callAsyncMultiplePromiseWithArgCalled2": 42, "callAsyncMultiplePromiseWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgFirstReturnCalled1": 42, "callAsyncMultiplePromiseWithArgFirstReturnCalled2": 42, "callAsyncMultiplePromiseWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgLastReturnCalled1": 42, "callAsyncMultiplePromiseWithArgLastReturnCalled2": 42, "callAsyncMultiplePromiseWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgNoReturnCalled1": 42, "callAsyncMultiplePromiseWithArgNoReturnCalled2": 42, "callAsyncMultipleSync": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncCalled2": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncLastReturnCalled1": true, "callAsyncMultipleSyncLastReturnCalled2": true, "callAsyncMultipleSyncNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncNoReturnCalled1": true, "callAsyncMultipleSyncNoReturnCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgCalled2": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturnCalled2": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleAsyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleAsyncWithArgCalled1": 42, "callAsyncSinglePromiseWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSinglePromiseWithArgCalled1": 42, "callAsyncSinglePromiseWithEmptyReject": Object { "error": "Tap function (tapPromise) rejects \\"\\" value", "type": "async", }, "callAsyncSinglePromiseWithEmptyStringArg": Object { "type": "async", "value": undefined, }, "callAsyncSinglePromiseWithEmptyStringArgCalled1": 42, "callAsyncSinglePromiseWithFalseReject": Object { "error": "Tap function (tapPromise) rejects \\"false\\" value", "type": "async", }, "callAsyncSinglePromiseWithNullArg": Object { "type": "async", "value": undefined, }, "callAsyncSinglePromiseWithNullArgCalled1": 42, "callAsyncSinglePromiseWithNullReject": Object { "error": "Tap function (tapPromise) rejects \\"null\\" value", "type": "async", }, "callAsyncSinglePromiseWithUndefined": Object { "type": "async", "value": undefined, }, "callAsyncSinglePromiseWithUndefinedCalled1": 42, "callAsyncSinglePromiseWithUndefinedReject": Object { "error": "Tap function (tapPromise) rejects \\"undefined\\" value", "type": "async", }, "callAsyncSinglePromiseWithZeroArg": Object { "type": "async", "value": undefined, }, "callAsyncSinglePromiseWithZeroArgCalled1": 42, "callAsyncSinglePromiseWithZeroReject": Object { "error": "Tap function (tapPromise) rejects \\"0\\" value", "type": "async", }, "callAsyncSingleSync": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncCalled1": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgCalled1": 42, "callAsyncSingleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncEarlyError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncEarlyErrorCalled1": true, "promiseMultipleAsyncError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncErrorCalled1": true, "promiseMultipleAsyncLateError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorCalled1": true, "promiseMultipleAsyncLateErrorCalled3": true, "promiseMultipleAsyncLateErrorEarlyResult1": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorEarlyResult1Called1": true, "promiseMultipleAsyncLateErrorEarlyResult1Called3": true, "promiseMultipleAsyncLateErrorEarlyResult2": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorEarlyResult2Called1": true, "promiseMultipleAsyncLateErrorEarlyResult2Called3": true, "promiseMultipleAsyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgCalled1": 42, "promiseMultipleAsyncWithArgCalled2": 42, "promiseMultipleAsyncWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgFirstReturnCalled1": 42, "promiseMultipleAsyncWithArgFirstReturnCalled2": 42, "promiseMultipleAsyncWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgLastReturnCalled1": 42, "promiseMultipleAsyncWithArgLastReturnCalled2": 42, "promiseMultipleAsyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncWithArgNoReturnCalled2": 42, "promiseMultipleMixed1WithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleMixed1WithArgCalled1": 42, "promiseMultipleMixed1WithArgCalled2": 42, "promiseMultipleMixed1WithArgCalled3": 42, "promiseMultipleMixed2WithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleMixed2WithArgCalled1": 42, "promiseMultipleMixed2WithArgCalled2": 42, "promiseMultipleMixed3WithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleMixed3WithArgCalled1": 42, "promiseMultipleMixed3WithArgCalled2": 42, "promiseMultipleMixed3WithArgCalled3": 42, "promiseMultipleMixedError1WithArg": Object { "error": "Error in sync", "type": "promise", }, "promiseMultipleMixedError1WithArgCalled1": 42, "promiseMultipleMixedError1WithArgCalled2": 42, "promiseMultipleMixedError1WithArgCalled3": 42, "promiseMultipleMixedError2WithArg": Object { "error": "Error in promise", "type": "promise", }, "promiseMultipleMixedError2WithArgCalled1": 42, "promiseMultipleMixedError2WithArgCalled2": 42, "promiseMultipleMixedError2WithArgCalled3": 42, "promiseMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedError3WithArgCalled1": 42, "promiseMultipleMixedLateError": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedLateErrorCalled1": true, "promiseMultipleMixedLateErrorCalled2": true, "promiseMultipleMixedLateErrorCalled3": true, "promiseMultiplePromiseEarlyError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseEarlyErrorCalled1": true, "promiseMultiplePromiseEarlyErrorCalled3": true, "promiseMultiplePromiseError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseErrorCalled1": true, "promiseMultiplePromiseErrorCalled3": true, "promiseMultiplePromiseLateError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseLateErrorCalled1": true, "promiseMultiplePromiseLateErrorCalled3": true, "promiseMultiplePromiseWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgCalled1": 42, "promiseMultiplePromiseWithArgCalled2": 42, "promiseMultiplePromiseWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgFirstReturnCalled1": 42, "promiseMultiplePromiseWithArgFirstReturnCalled2": 42, "promiseMultiplePromiseWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgLastReturnCalled1": 42, "promiseMultiplePromiseWithArgLastReturnCalled2": 42, "promiseMultiplePromiseWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgNoReturnCalled1": 42, "promiseMultiplePromiseWithArgNoReturnCalled2": 42, "promiseMultipleSync": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncCalled2": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncLastReturnCalled1": true, "promiseMultipleSyncLastReturnCalled2": true, "promiseMultipleSyncNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncNoReturnCalled1": true, "promiseMultipleSyncNoReturnCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgCalled2": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgFirstReturnCalled2": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleAsyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleAsyncWithArgCalled1": 42, "promiseSinglePromiseWithArg": Object { "type": "promise", "value": undefined, }, "promiseSinglePromiseWithArgCalled1": 42, "promiseSinglePromiseWithEmptyReject": Object { "error": "Tap function (tapPromise) rejects \\"\\" value", "type": "promise", }, "promiseSinglePromiseWithEmptyStringArg": Object { "type": "promise", "value": undefined, }, "promiseSinglePromiseWithEmptyStringArgCalled1": 42, "promiseSinglePromiseWithFalseReject": Object { "error": "Tap function (tapPromise) rejects \\"false\\" value", "type": "promise", }, "promiseSinglePromiseWithNullArg": Object { "type": "promise", "value": undefined, }, "promiseSinglePromiseWithNullArgCalled1": 42, "promiseSinglePromiseWithNullReject": Object { "error": "Tap function (tapPromise) rejects \\"null\\" value", "type": "promise", }, "promiseSinglePromiseWithUndefined": Object { "type": "promise", "value": undefined, }, "promiseSinglePromiseWithUndefinedCalled1": 42, "promiseSinglePromiseWithUndefinedReject": Object { "error": "Tap function (tapPromise) rejects \\"undefined\\" value", "type": "promise", }, "promiseSinglePromiseWithZeroArg": Object { "type": "promise", "value": undefined, }, "promiseSinglePromiseWithZeroArgCalled1": 42, "promiseSinglePromiseWithZeroReject": Object { "error": "Tap function (tapPromise) rejects \\"0\\" value", "type": "promise", }, "promiseSingleSync": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncCalled1": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgCalled1": 42, "promiseSingleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgNoReturnCalled1": 42, }, "intercept": Object { "callAsyncContextIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "callAsyncContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncContextInterceptedTap1": Object { "number": 42, }, "callAsyncIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedDone1": true, "callAsyncInterceptedDone2": true, "callAsyncInterceptedTap1": Object { "fn": 2, "name": "promise", "type": "promise", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "callAsyncUnusedContextIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "callAsyncUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncUnusedContextInterceptedTap1": undefined, "promiseContextIntercepted": Object { "type": "promise", "value": undefined, }, "promiseContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "promiseContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseContextInterceptedTap1": Object { "number": 42, }, "promiseIntercepted": Object { "type": "promise", "value": undefined, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedDone1": true, "promiseInterceptedDone2": true, "promiseInterceptedTap1": Object { "fn": 2, "name": "promise", "type": "promise", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "promiseUnusedContextIntercepted": Object { "type": "promise", "value": undefined, }, "promiseUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "promiseUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseUnusedContextInterceptedTap1": undefined, }, "sync": Object { "callAsyncIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncMultipleSync": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncCalled2": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncErrorCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgCalled2": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturnCalled2": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncMultipleSyncWithArgs": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callAsyncMultipleSyncWithArgsCalled2": Array [ 42, 43, 44, ], "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSync": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncCalled": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgCalled": 42, "promiseIntercepted": Object { "type": "promise", "value": undefined, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseMultipleSync": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncCalled2": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncErrorCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgCalled2": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgFirstReturnCalled2": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseMultipleSyncWithArgs": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "promiseMultipleSyncWithArgsCalled2": Array [ 42, 43, 44, ], "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSync": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncCalled": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgCalled": 42, }, } `; webpack-tapable-8ca4f9d/test/__snapshots__/AsyncSeriesHooks.test.js.snap000066400000000000000000002162661517167660300265760ustar00rootroot00000000000000// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`AsyncSeriesBailHook should have to correct behavior 1`] = ` Object { "async": Object { "callAsyncMultipleAsyncEarlyError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncEarlyErrorCalled1": true, "callAsyncMultipleAsyncError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncErrorCalled1": true, "callAsyncMultipleAsyncLateError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorCalled1": true, "callAsyncMultipleAsyncLateErrorEarlyResult1": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorEarlyResult1Called1": true, "callAsyncMultipleAsyncLateErrorEarlyResult2": Object { "type": "async", "value": 42, }, "callAsyncMultipleAsyncLateErrorEarlyResult2Called1": true, "callAsyncMultipleAsyncWithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleAsyncWithArgCalled1": 42, "callAsyncMultipleAsyncWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultipleAsyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleAsyncWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultipleAsyncWithArgLastReturnCalled1": 42, "callAsyncMultipleAsyncWithArgLastReturnCalled2": 42, "callAsyncMultipleAsyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgNoReturnCalled1": 42, "callAsyncMultipleAsyncWithArgNoReturnCalled2": 42, "callAsyncMultipleMixed1WithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleMixed1WithArgCalled1": 42, "callAsyncMultipleMixed2WithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleMixed2WithArgCalled1": 42, "callAsyncMultipleMixed3WithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleMixed3WithArgCalled1": 42, "callAsyncMultipleMixedError1WithArg": Object { "type": "async", "value": 42, }, "callAsyncMultipleMixedError1WithArgCalled1": 42, "callAsyncMultipleMixedError2WithArg": Object { "type": "async", "value": 42, }, "callAsyncMultipleMixedError2WithArgCalled1": 42, "callAsyncMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedError3WithArgCalled1": 42, "callAsyncMultipleMixedLateError": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedLateErrorCalled1": true, "callAsyncMultiplePromiseEarlyError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseEarlyErrorCalled1": true, "callAsyncMultiplePromiseError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseErrorCalled1": true, "callAsyncMultiplePromiseLateError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseLateErrorCalled1": true, "callAsyncMultiplePromiseWithArg": Object { "type": "async", "value": 43, }, "callAsyncMultiplePromiseWithArgCalled1": 42, "callAsyncMultiplePromiseWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultiplePromiseWithArgFirstReturnCalled1": 42, "callAsyncMultiplePromiseWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultiplePromiseWithArgLastReturnCalled1": 42, "callAsyncMultiplePromiseWithArgLastReturnCalled2": 42, "callAsyncMultiplePromiseWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgNoReturnCalled1": 42, "callAsyncMultiplePromiseWithArgNoReturnCalled2": 42, "callAsyncMultipleSync": Object { "type": "async", "value": 42, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncLastReturn": Object { "type": "async", "value": 43, }, "callAsyncMultipleSyncLastReturnCalled1": true, "callAsyncMultipleSyncLastReturnCalled2": true, "callAsyncMultipleSyncNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncNoReturnCalled1": true, "callAsyncMultipleSyncNoReturnCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": 43, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleAsyncWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleAsyncWithArgCalled1": 42, "callAsyncSinglePromiseWithArg": Object { "type": "async", "value": 43, }, "callAsyncSinglePromiseWithArgCalled1": 42, "callAsyncSinglePromiseWithEmptyReject": Object { "error": "Tap function (tapPromise) rejects \\"\\" value", "type": "async", }, "callAsyncSinglePromiseWithEmptyStringArg": Object { "type": "async", "value": "", }, "callAsyncSinglePromiseWithEmptyStringArgCalled1": 42, "callAsyncSinglePromiseWithFalseReject": Object { "error": "Tap function (tapPromise) rejects \\"false\\" value", "type": "async", }, "callAsyncSinglePromiseWithNullArg": Object { "type": "async", "value": null, }, "callAsyncSinglePromiseWithNullArgCalled1": 42, "callAsyncSinglePromiseWithNullReject": Object { "error": "Tap function (tapPromise) rejects \\"null\\" value", "type": "async", }, "callAsyncSinglePromiseWithUndefined": Object { "type": "async", "value": undefined, }, "callAsyncSinglePromiseWithUndefinedCalled1": 42, "callAsyncSinglePromiseWithUndefinedReject": Object { "error": "Tap function (tapPromise) rejects \\"undefined\\" value", "type": "async", }, "callAsyncSinglePromiseWithZeroArg": Object { "type": "async", "value": 0, }, "callAsyncSinglePromiseWithZeroArgCalled1": 42, "callAsyncSinglePromiseWithZeroReject": Object { "error": "Tap function (tapPromise) rejects \\"0\\" value", "type": "async", }, "callAsyncSingleSync": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncCalled1": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": 43, }, "callAsyncSingleSyncWithArgCalled1": 42, "callAsyncSingleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncEarlyError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncEarlyErrorCalled1": true, "promiseMultipleAsyncError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncErrorCalled1": true, "promiseMultipleAsyncLateError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorCalled1": true, "promiseMultipleAsyncLateErrorEarlyResult1": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorEarlyResult1Called1": true, "promiseMultipleAsyncLateErrorEarlyResult2": Object { "type": "promise", "value": 42, }, "promiseMultipleAsyncLateErrorEarlyResult2Called1": true, "promiseMultipleAsyncWithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleAsyncWithArgCalled1": 42, "promiseMultipleAsyncWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultipleAsyncWithArgFirstReturnCalled1": 42, "promiseMultipleAsyncWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultipleAsyncWithArgLastReturnCalled1": 42, "promiseMultipleAsyncWithArgLastReturnCalled2": 42, "promiseMultipleAsyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncWithArgNoReturnCalled2": 42, "promiseMultipleMixed1WithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleMixed1WithArgCalled1": 42, "promiseMultipleMixed2WithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleMixed2WithArgCalled1": 42, "promiseMultipleMixed3WithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleMixed3WithArgCalled1": 42, "promiseMultipleMixedError1WithArg": Object { "type": "promise", "value": 42, }, "promiseMultipleMixedError1WithArgCalled1": 42, "promiseMultipleMixedError2WithArg": Object { "type": "promise", "value": 42, }, "promiseMultipleMixedError2WithArgCalled1": 42, "promiseMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedError3WithArgCalled1": 42, "promiseMultipleMixedLateError": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedLateErrorCalled1": true, "promiseMultiplePromiseEarlyError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseEarlyErrorCalled1": true, "promiseMultiplePromiseError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseErrorCalled1": true, "promiseMultiplePromiseLateError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseLateErrorCalled1": true, "promiseMultiplePromiseWithArg": Object { "type": "promise", "value": 43, }, "promiseMultiplePromiseWithArgCalled1": 42, "promiseMultiplePromiseWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultiplePromiseWithArgFirstReturnCalled1": 42, "promiseMultiplePromiseWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultiplePromiseWithArgLastReturnCalled1": 42, "promiseMultiplePromiseWithArgLastReturnCalled2": 42, "promiseMultiplePromiseWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgNoReturnCalled1": 42, "promiseMultiplePromiseWithArgNoReturnCalled2": 42, "promiseMultipleSync": Object { "type": "promise", "value": 42, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncLastReturn": Object { "type": "promise", "value": 43, }, "promiseMultipleSyncLastReturnCalled1": true, "promiseMultipleSyncLastReturnCalled2": true, "promiseMultipleSyncNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncNoReturnCalled1": true, "promiseMultipleSyncNoReturnCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": 43, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleAsyncWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleAsyncWithArgCalled1": 42, "promiseSinglePromiseWithArg": Object { "type": "promise", "value": 43, }, "promiseSinglePromiseWithArgCalled1": 42, "promiseSinglePromiseWithEmptyReject": Object { "error": "Tap function (tapPromise) rejects \\"\\" value", "type": "promise", }, "promiseSinglePromiseWithEmptyStringArg": Object { "type": "promise", "value": "", }, "promiseSinglePromiseWithEmptyStringArgCalled1": 42, "promiseSinglePromiseWithFalseReject": Object { "error": "Tap function (tapPromise) rejects \\"false\\" value", "type": "promise", }, "promiseSinglePromiseWithNullArg": Object { "type": "promise", "value": null, }, "promiseSinglePromiseWithNullArgCalled1": 42, "promiseSinglePromiseWithNullReject": Object { "error": "Tap function (tapPromise) rejects \\"null\\" value", "type": "promise", }, "promiseSinglePromiseWithUndefined": Object { "type": "promise", "value": undefined, }, "promiseSinglePromiseWithUndefinedCalled1": 42, "promiseSinglePromiseWithUndefinedReject": Object { "error": "Tap function (tapPromise) rejects \\"undefined\\" value", "type": "promise", }, "promiseSinglePromiseWithZeroArg": Object { "type": "promise", "value": 0, }, "promiseSinglePromiseWithZeroArgCalled1": 42, "promiseSinglePromiseWithZeroReject": Object { "error": "Tap function (tapPromise) rejects \\"0\\" value", "type": "promise", }, "promiseSingleSync": Object { "type": "promise", "value": 42, }, "promiseSingleSyncCalled1": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": 43, }, "promiseSingleSyncWithArgCalled1": 42, "promiseSingleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgNoReturnCalled1": 42, }, "intercept": Object { "callAsyncContextIntercepted": Object { "type": "async", "value": 48, }, "callAsyncContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "callAsyncContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncContextInterceptedTap1": Object { "number": 42, }, "callAsyncIntercepted": Object { "type": "async", "value": 6, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedResult1": 6, "callAsyncInterceptedResult2": 6, "callAsyncInterceptedTap1": Object { "fn": 3, "name": "sync", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "callAsyncUnusedContextIntercepted": Object { "type": "async", "value": 6, }, "callAsyncUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "callAsyncUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncUnusedContextInterceptedTap1": undefined, "promiseContextIntercepted": Object { "type": "promise", "value": 48, }, "promiseContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "promiseContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseContextInterceptedTap1": Object { "number": 42, }, "promiseIntercepted": Object { "type": "promise", "value": 6, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedResult1": 6, "promiseInterceptedResult2": 6, "promiseInterceptedTap1": Object { "fn": 3, "name": "sync", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "promiseUnusedContextIntercepted": Object { "type": "promise", "value": 6, }, "promiseUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "promiseUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseUnusedContextInterceptedTap1": undefined, }, "sync": Object { "callAsyncIntercepted": Object { "type": "async", "value": 6, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedTap1": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncMultipleSync": Object { "type": "async", "value": 42, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncErrorCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": 84, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": 84, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": 85, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncMultipleSyncWithArgs": Object { "type": "async", "value": 129, }, "callAsyncMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSync": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncCalled": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncWithArgCalled": 42, "promiseIntercepted": Object { "type": "promise", "value": 6, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedTap1": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseMultipleSync": Object { "type": "promise", "value": 42, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncErrorCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": 84, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": 84, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": 85, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseMultipleSyncWithArgs": Object { "type": "promise", "value": 129, }, "promiseMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSync": Object { "type": "promise", "value": 42, }, "promiseSingleSyncCalled": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleSyncWithArgCalled": 42, }, } `; exports[`AsyncSeriesHook should have to correct behavior 1`] = ` Object { "async": Object { "callAsyncMultipleAsyncEarlyError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncEarlyErrorCalled1": true, "callAsyncMultipleAsyncError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncErrorCalled1": true, "callAsyncMultipleAsyncLateError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorCalled1": true, "callAsyncMultipleAsyncLateErrorEarlyResult1": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorEarlyResult1Called1": true, "callAsyncMultipleAsyncLateErrorEarlyResult2": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultipleAsyncLateErrorEarlyResult2Called1": true, "callAsyncMultipleAsyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgCalled1": 42, "callAsyncMultipleAsyncWithArgCalled2": 42, "callAsyncMultipleAsyncWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleAsyncWithArgFirstReturnCalled2": 42, "callAsyncMultipleAsyncWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgLastReturnCalled1": 42, "callAsyncMultipleAsyncWithArgLastReturnCalled2": 42, "callAsyncMultipleAsyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncWithArgNoReturnCalled1": 42, "callAsyncMultipleAsyncWithArgNoReturnCalled2": 42, "callAsyncMultipleMixed1WithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleMixed1WithArgCalled1": 42, "callAsyncMultipleMixed1WithArgCalled2": 42, "callAsyncMultipleMixed1WithArgCalled3": 42, "callAsyncMultipleMixed2WithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleMixed2WithArgCalled1": 42, "callAsyncMultipleMixed2WithArgCalled2": 42, "callAsyncMultipleMixed3WithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleMixed3WithArgCalled1": 42, "callAsyncMultipleMixed3WithArgCalled2": 42, "callAsyncMultipleMixed3WithArgCalled3": 42, "callAsyncMultipleMixedError1WithArg": Object { "error": "Error in sync", "type": "async", }, "callAsyncMultipleMixedError1WithArgCalled1": 42, "callAsyncMultipleMixedError1WithArgCalled2": 42, "callAsyncMultipleMixedError1WithArgCalled3": 42, "callAsyncMultipleMixedError2WithArg": Object { "error": "Error in promise", "type": "async", }, "callAsyncMultipleMixedError2WithArgCalled1": 42, "callAsyncMultipleMixedError2WithArgCalled2": 42, "callAsyncMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedError3WithArgCalled1": 42, "callAsyncMultipleMixedLateError": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedLateErrorCalled1": true, "callAsyncMultiplePromiseEarlyError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseEarlyErrorCalled1": true, "callAsyncMultiplePromiseError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseErrorCalled1": true, "callAsyncMultiplePromiseLateError": Object { "error": "Error in async2", "type": "async", }, "callAsyncMultiplePromiseLateErrorCalled1": true, "callAsyncMultiplePromiseWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgCalled1": 42, "callAsyncMultiplePromiseWithArgCalled2": 42, "callAsyncMultiplePromiseWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgFirstReturnCalled1": 42, "callAsyncMultiplePromiseWithArgFirstReturnCalled2": 42, "callAsyncMultiplePromiseWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgLastReturnCalled1": 42, "callAsyncMultiplePromiseWithArgLastReturnCalled2": 42, "callAsyncMultiplePromiseWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseWithArgNoReturnCalled1": 42, "callAsyncMultiplePromiseWithArgNoReturnCalled2": 42, "callAsyncMultipleSync": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncCalled2": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncLastReturnCalled1": true, "callAsyncMultipleSyncLastReturnCalled2": true, "callAsyncMultipleSyncNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncNoReturnCalled1": true, "callAsyncMultipleSyncNoReturnCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgCalled2": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturnCalled2": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleAsyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleAsyncWithArgCalled1": 42, "callAsyncSinglePromiseWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSinglePromiseWithArgCalled1": 42, "callAsyncSinglePromiseWithEmptyReject": Object { "error": "Tap function (tapPromise) rejects \\"\\" value", "type": "async", }, "callAsyncSinglePromiseWithEmptyStringArg": Object { "type": "async", "value": undefined, }, "callAsyncSinglePromiseWithEmptyStringArgCalled1": 42, "callAsyncSinglePromiseWithFalseReject": Object { "error": "Tap function (tapPromise) rejects \\"false\\" value", "type": "async", }, "callAsyncSinglePromiseWithNullArg": Object { "type": "async", "value": undefined, }, "callAsyncSinglePromiseWithNullArgCalled1": 42, "callAsyncSinglePromiseWithNullReject": Object { "error": "Tap function (tapPromise) rejects \\"null\\" value", "type": "async", }, "callAsyncSinglePromiseWithUndefined": Object { "type": "async", "value": undefined, }, "callAsyncSinglePromiseWithUndefinedCalled1": 42, "callAsyncSinglePromiseWithUndefinedReject": Object { "error": "Tap function (tapPromise) rejects \\"undefined\\" value", "type": "async", }, "callAsyncSinglePromiseWithZeroArg": Object { "type": "async", "value": undefined, }, "callAsyncSinglePromiseWithZeroArgCalled1": 42, "callAsyncSinglePromiseWithZeroReject": Object { "error": "Tap function (tapPromise) rejects \\"0\\" value", "type": "async", }, "callAsyncSingleSync": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncCalled1": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgCalled1": 42, "callAsyncSingleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncEarlyError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncEarlyErrorCalled1": true, "promiseMultipleAsyncError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncErrorCalled1": true, "promiseMultipleAsyncLateError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorCalled1": true, "promiseMultipleAsyncLateErrorEarlyResult1": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorEarlyResult1Called1": true, "promiseMultipleAsyncLateErrorEarlyResult2": Object { "error": "Error in async2", "type": "promise", }, "promiseMultipleAsyncLateErrorEarlyResult2Called1": true, "promiseMultipleAsyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgCalled1": 42, "promiseMultipleAsyncWithArgCalled2": 42, "promiseMultipleAsyncWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgFirstReturnCalled1": 42, "promiseMultipleAsyncWithArgFirstReturnCalled2": 42, "promiseMultipleAsyncWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgLastReturnCalled1": 42, "promiseMultipleAsyncWithArgLastReturnCalled2": 42, "promiseMultipleAsyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncWithArgNoReturnCalled2": 42, "promiseMultipleMixed1WithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleMixed1WithArgCalled1": 42, "promiseMultipleMixed1WithArgCalled2": 42, "promiseMultipleMixed1WithArgCalled3": 42, "promiseMultipleMixed2WithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleMixed2WithArgCalled1": 42, "promiseMultipleMixed2WithArgCalled2": 42, "promiseMultipleMixed3WithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleMixed3WithArgCalled1": 42, "promiseMultipleMixed3WithArgCalled2": 42, "promiseMultipleMixed3WithArgCalled3": 42, "promiseMultipleMixedError1WithArg": Object { "error": "Error in sync", "type": "promise", }, "promiseMultipleMixedError1WithArgCalled1": 42, "promiseMultipleMixedError1WithArgCalled2": 42, "promiseMultipleMixedError1WithArgCalled3": 42, "promiseMultipleMixedError2WithArg": Object { "error": "Error in promise", "type": "promise", }, "promiseMultipleMixedError2WithArgCalled1": 42, "promiseMultipleMixedError2WithArgCalled2": 42, "promiseMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedError3WithArgCalled1": 42, "promiseMultipleMixedLateError": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedLateErrorCalled1": true, "promiseMultiplePromiseEarlyError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseEarlyErrorCalled1": true, "promiseMultiplePromiseError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseErrorCalled1": true, "promiseMultiplePromiseLateError": Object { "error": "Error in async2", "type": "promise", }, "promiseMultiplePromiseLateErrorCalled1": true, "promiseMultiplePromiseWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgCalled1": 42, "promiseMultiplePromiseWithArgCalled2": 42, "promiseMultiplePromiseWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgFirstReturnCalled1": 42, "promiseMultiplePromiseWithArgFirstReturnCalled2": 42, "promiseMultiplePromiseWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgLastReturnCalled1": 42, "promiseMultiplePromiseWithArgLastReturnCalled2": 42, "promiseMultiplePromiseWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseWithArgNoReturnCalled1": 42, "promiseMultiplePromiseWithArgNoReturnCalled2": 42, "promiseMultipleSync": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncCalled2": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncLastReturnCalled1": true, "promiseMultipleSyncLastReturnCalled2": true, "promiseMultipleSyncNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncNoReturnCalled1": true, "promiseMultipleSyncNoReturnCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgCalled2": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgFirstReturnCalled2": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleAsyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleAsyncWithArgCalled1": 42, "promiseSinglePromiseWithArg": Object { "type": "promise", "value": undefined, }, "promiseSinglePromiseWithArgCalled1": 42, "promiseSinglePromiseWithEmptyReject": Object { "error": "Tap function (tapPromise) rejects \\"\\" value", "type": "promise", }, "promiseSinglePromiseWithEmptyStringArg": Object { "type": "promise", "value": undefined, }, "promiseSinglePromiseWithEmptyStringArgCalled1": 42, "promiseSinglePromiseWithFalseReject": Object { "error": "Tap function (tapPromise) rejects \\"false\\" value", "type": "promise", }, "promiseSinglePromiseWithNullArg": Object { "type": "promise", "value": undefined, }, "promiseSinglePromiseWithNullArgCalled1": 42, "promiseSinglePromiseWithNullReject": Object { "error": "Tap function (tapPromise) rejects \\"null\\" value", "type": "promise", }, "promiseSinglePromiseWithUndefined": Object { "type": "promise", "value": undefined, }, "promiseSinglePromiseWithUndefinedCalled1": 42, "promiseSinglePromiseWithUndefinedReject": Object { "error": "Tap function (tapPromise) rejects \\"undefined\\" value", "type": "promise", }, "promiseSinglePromiseWithZeroArg": Object { "type": "promise", "value": undefined, }, "promiseSinglePromiseWithZeroArgCalled1": 42, "promiseSinglePromiseWithZeroReject": Object { "error": "Tap function (tapPromise) rejects \\"0\\" value", "type": "promise", }, "promiseSingleSync": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncCalled1": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgCalled1": 42, "promiseSingleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgNoReturnCalled1": 42, }, "intercept": Object { "callAsyncContextIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "callAsyncContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncContextInterceptedTap1": Object { "number": 42, }, "callAsyncIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedDone1": true, "callAsyncInterceptedDone2": true, "callAsyncInterceptedTap1": Object { "fn": 2, "name": "promise", "type": "promise", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "callAsyncUnusedContextIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "callAsyncUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncUnusedContextInterceptedTap1": undefined, "promiseContextIntercepted": Object { "type": "promise", "value": undefined, }, "promiseContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "promiseContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseContextInterceptedTap1": Object { "number": 42, }, "promiseIntercepted": Object { "type": "promise", "value": undefined, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedDone1": true, "promiseInterceptedDone2": true, "promiseInterceptedTap1": Object { "fn": 2, "name": "promise", "type": "promise", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "promiseUnusedContextIntercepted": Object { "type": "promise", "value": undefined, }, "promiseUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "promiseUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseUnusedContextInterceptedTap1": undefined, }, "sync": Object { "callAsyncIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncMultipleSync": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncCalled2": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncErrorCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgCalled2": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturnCalled2": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncMultipleSyncWithArgs": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callAsyncMultipleSyncWithArgsCalled2": Array [ 42, 43, 44, ], "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSync": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncCalled": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgCalled": 42, "promiseIntercepted": Object { "type": "promise", "value": undefined, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseMultipleSync": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncCalled2": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncErrorCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgCalled2": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgFirstReturnCalled2": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseMultipleSyncWithArgs": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "promiseMultipleSyncWithArgsCalled2": Array [ 42, 43, 44, ], "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSync": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncCalled": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgCalled": 42, }, } `; exports[`AsyncSeriesLoopHook should have to correct behavior 1`] = ` Object { "async": Object { "callAsyncBrokenPromise": Object { "error": "Tap function (tapPromise) did not return promise (returned this is not a promise)", }, "callAsyncMixed": Object { "type": "async", "value": undefined, }, "callAsyncMixedCalled1": 124, "callAsyncMixedCalled2": 83, "callAsyncMixedCalled3": 42, "callAsyncMultipleAsync": Object { "type": "async", "value": undefined, }, "callAsyncMultipleAsyncCalled1": 83, "callAsyncMultipleAsyncCalled2": 42, "callAsyncMultiplePromise": Object { "type": "async", "value": undefined, }, "callAsyncMultiplePromiseCalled1": 83, "callAsyncMultiplePromiseCalled2": 42, "callAsyncSingleAsync": Object { "type": "async", "value": undefined, }, "callAsyncSingleAsyncCalled": 42, "callAsyncSinglePromise": Object { "type": "async", "value": undefined, }, "callAsyncSinglePromiseCalled": 42, "promiseBrokenPromise": Object { "error": "Tap function (tapPromise) did not return promise (returned this is not a promise)", "type": "promise", }, "promiseMixed": Object { "type": "promise", "value": undefined, }, "promiseMixedCalled1": 124, "promiseMixedCalled2": 83, "promiseMixedCalled3": 42, "promiseMultipleAsync": Object { "type": "promise", "value": undefined, }, "promiseMultipleAsyncCalled1": 83, "promiseMultipleAsyncCalled2": 42, "promiseMultiplePromise": Object { "type": "promise", "value": undefined, }, "promiseMultiplePromiseCalled1": 83, "promiseMultiplePromiseCalled2": 42, "promiseSingleAsync": Object { "type": "promise", "value": undefined, }, "promiseSingleAsyncCalled": 42, "promiseSinglePromise": Object { "type": "promise", "value": undefined, }, "promiseSinglePromiseCalled": 42, }, "sync": Object { "callAsyncInterceptedSync": Object { "type": "async", "value": undefined, }, "callAsyncInterceptedSyncCalled1": 83, "callAsyncInterceptedSyncCalled2": 42, "callAsyncInterceptedSyncCalledCall": 1, "callAsyncInterceptedSyncCalledLoop": 83, "callAsyncInterceptedSyncCalledTap": 125, "callAsyncMultipleSync": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncCalled1": 83, "callAsyncMultipleSyncCalled2": 42, "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSync": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncCalled": 42, "promiseInterceptedSync": Object { "type": "promise", "value": undefined, }, "promiseInterceptedSyncCalled1": 83, "promiseInterceptedSyncCalled2": 42, "promiseInterceptedSyncCalledCall": 1, "promiseInterceptedSyncCalledLoop": 83, "promiseInterceptedSyncCalledTap": 125, "promiseMultipleSync": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncCalled1": 83, "promiseMultipleSyncCalled2": 42, "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSync": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncCalled": 42, }, } `; exports[`AsyncSeriesWaterfallHook should have to correct behavior 1`] = ` Object { "async": Object { "callAsyncMultipleAsyncEarlyError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleAsyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleAsyncLateError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleAsyncLateErrorEarlyResult1": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleAsyncLateErrorEarlyResult2": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleAsyncWithArg": Object { "type": "async", "value": 45, }, "callAsyncMultipleAsyncWithArgCalled1": 42, "callAsyncMultipleAsyncWithArgCalled2": 43, "callAsyncMultipleAsyncWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultipleAsyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleAsyncWithArgFirstReturnCalled2": 43, "callAsyncMultipleAsyncWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultipleAsyncWithArgLastReturnCalled1": 42, "callAsyncMultipleAsyncWithArgLastReturnCalled2": 42, "callAsyncMultipleAsyncWithArgNoReturn": Object { "type": "async", "value": 42, }, "callAsyncMultipleAsyncWithArgNoReturnCalled1": 42, "callAsyncMultipleAsyncWithArgNoReturnCalled2": 42, "callAsyncMultipleMixed1WithArg": Object { "type": "async", "value": 48, }, "callAsyncMultipleMixed1WithArgCalled1": 42, "callAsyncMultipleMixed1WithArgCalled2": 43, "callAsyncMultipleMixed1WithArgCalled3": 45, "callAsyncMultipleMixed2WithArg": Object { "type": "async", "value": 45, }, "callAsyncMultipleMixed2WithArgCalled1": 42, "callAsyncMultipleMixed2WithArgCalled2": 43, "callAsyncMultipleMixed3WithArg": Object { "type": "async", "value": 48, }, "callAsyncMultipleMixed3WithArgCalled1": 42, "callAsyncMultipleMixed3WithArgCalled2": 43, "callAsyncMultipleMixed3WithArgCalled3": 45, "callAsyncMultipleMixedError1WithArg": Object { "error": "Error in sync", "type": "async", }, "callAsyncMultipleMixedError1WithArgCalled1": 42, "callAsyncMultipleMixedError1WithArgCalled2": 42, "callAsyncMultipleMixedError1WithArgCalled3": 43, "callAsyncMultipleMixedError2WithArg": Object { "error": "Error in promise", "type": "async", }, "callAsyncMultipleMixedError2WithArgCalled1": 42, "callAsyncMultipleMixedError2WithArgCalled2": 42, "callAsyncMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "async", }, "callAsyncMultipleMixedError3WithArgCalled1": 42, "callAsyncMultipleMixedLateError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultiplePromiseEarlyError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultiplePromiseError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultiplePromiseLateError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultiplePromiseWithArg": Object { "type": "async", "value": 45, }, "callAsyncMultiplePromiseWithArgCalled1": 42, "callAsyncMultiplePromiseWithArgCalled2": 43, "callAsyncMultiplePromiseWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultiplePromiseWithArgFirstReturnCalled1": 42, "callAsyncMultiplePromiseWithArgFirstReturnCalled2": 43, "callAsyncMultiplePromiseWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultiplePromiseWithArgLastReturnCalled1": 42, "callAsyncMultiplePromiseWithArgLastReturnCalled2": 42, "callAsyncMultiplePromiseWithArgNoReturn": Object { "type": "async", "value": 42, }, "callAsyncMultiplePromiseWithArgNoReturnCalled1": 42, "callAsyncMultiplePromiseWithArgNoReturnCalled2": 42, "callAsyncMultipleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleSyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleSyncLastReturn": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleSyncNoReturn": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": 45, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgCalled2": 43, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": 43, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturnCalled2": 43, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": 44, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": 42, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncNone": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncNoneWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleAsyncWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleAsyncWithArgCalled1": 42, "callAsyncSinglePromiseWithArg": Object { "type": "async", "value": 43, }, "callAsyncSinglePromiseWithArgCalled1": 42, "callAsyncSinglePromiseWithEmptyReject": Object { "error": "Tap function (tapPromise) rejects \\"\\" value", "type": "async", }, "callAsyncSinglePromiseWithEmptyStringArg": Object { "type": "async", "value": "", }, "callAsyncSinglePromiseWithEmptyStringArgCalled1": 42, "callAsyncSinglePromiseWithFalseReject": Object { "error": "Tap function (tapPromise) rejects \\"false\\" value", "type": "async", }, "callAsyncSinglePromiseWithNullArg": Object { "type": "async", "value": null, }, "callAsyncSinglePromiseWithNullArgCalled1": 42, "callAsyncSinglePromiseWithNullReject": Object { "error": "Tap function (tapPromise) rejects \\"null\\" value", "type": "async", }, "callAsyncSinglePromiseWithUndefined": Object { "type": "async", "value": 42, }, "callAsyncSinglePromiseWithUndefinedCalled1": 42, "callAsyncSinglePromiseWithUndefinedReject": Object { "error": "Tap function (tapPromise) rejects \\"undefined\\" value", "type": "async", }, "callAsyncSinglePromiseWithZeroArg": Object { "type": "async", "value": 0, }, "callAsyncSinglePromiseWithZeroArgCalled1": 42, "callAsyncSinglePromiseWithZeroReject": Object { "error": "Tap function (tapPromise) rejects \\"0\\" value", "type": "async", }, "callAsyncSingleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": 43, }, "callAsyncSingleSyncWithArgCalled1": 42, "callAsyncSingleSyncWithArgNoReturn": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncEarlyError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleAsyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleAsyncLateError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleAsyncLateErrorEarlyResult1": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleAsyncLateErrorEarlyResult2": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleAsyncWithArg": Object { "type": "promise", "value": 45, }, "promiseMultipleAsyncWithArgCalled1": 42, "promiseMultipleAsyncWithArgCalled2": 43, "promiseMultipleAsyncWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultipleAsyncWithArgFirstReturnCalled1": 42, "promiseMultipleAsyncWithArgFirstReturnCalled2": 43, "promiseMultipleAsyncWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultipleAsyncWithArgLastReturnCalled1": 42, "promiseMultipleAsyncWithArgLastReturnCalled2": 42, "promiseMultipleAsyncWithArgNoReturn": Object { "type": "promise", "value": 42, }, "promiseMultipleAsyncWithArgNoReturnCalled1": 42, "promiseMultipleAsyncWithArgNoReturnCalled2": 42, "promiseMultipleMixed1WithArg": Object { "type": "promise", "value": 48, }, "promiseMultipleMixed1WithArgCalled1": 42, "promiseMultipleMixed1WithArgCalled2": 43, "promiseMultipleMixed1WithArgCalled3": 45, "promiseMultipleMixed2WithArg": Object { "type": "promise", "value": 45, }, "promiseMultipleMixed2WithArgCalled1": 42, "promiseMultipleMixed2WithArgCalled2": 43, "promiseMultipleMixed3WithArg": Object { "type": "promise", "value": 48, }, "promiseMultipleMixed3WithArgCalled1": 42, "promiseMultipleMixed3WithArgCalled2": 43, "promiseMultipleMixed3WithArgCalled3": 45, "promiseMultipleMixedError1WithArg": Object { "error": "Error in sync", "type": "promise", }, "promiseMultipleMixedError1WithArgCalled1": 42, "promiseMultipleMixedError1WithArgCalled2": 42, "promiseMultipleMixedError1WithArgCalled3": 43, "promiseMultipleMixedError2WithArg": Object { "error": "Error in promise", "type": "promise", }, "promiseMultipleMixedError2WithArgCalled1": 42, "promiseMultipleMixedError2WithArgCalled2": 42, "promiseMultipleMixedError3WithArg": Object { "error": "Error in async", "type": "promise", }, "promiseMultipleMixedError3WithArgCalled1": 42, "promiseMultipleMixedLateError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultiplePromiseEarlyError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultiplePromiseError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultiplePromiseLateError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultiplePromiseWithArg": Object { "type": "promise", "value": 45, }, "promiseMultiplePromiseWithArgCalled1": 42, "promiseMultiplePromiseWithArgCalled2": 43, "promiseMultiplePromiseWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultiplePromiseWithArgFirstReturnCalled1": 42, "promiseMultiplePromiseWithArgFirstReturnCalled2": 43, "promiseMultiplePromiseWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultiplePromiseWithArgLastReturnCalled1": 42, "promiseMultiplePromiseWithArgLastReturnCalled2": 42, "promiseMultiplePromiseWithArgNoReturn": Object { "type": "promise", "value": 42, }, "promiseMultiplePromiseWithArgNoReturnCalled1": 42, "promiseMultiplePromiseWithArgNoReturnCalled2": 42, "promiseMultipleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleSyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleSyncLastReturn": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleSyncNoReturn": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": 45, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgCalled2": 43, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": 43, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgFirstReturnCalled2": 43, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": 44, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": 42, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseNone": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseNoneWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleAsyncWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleAsyncWithArgCalled1": 42, "promiseSinglePromiseWithArg": Object { "type": "promise", "value": 43, }, "promiseSinglePromiseWithArgCalled1": 42, "promiseSinglePromiseWithEmptyReject": Object { "error": "Tap function (tapPromise) rejects \\"\\" value", "type": "promise", }, "promiseSinglePromiseWithEmptyStringArg": Object { "type": "promise", "value": "", }, "promiseSinglePromiseWithEmptyStringArgCalled1": 42, "promiseSinglePromiseWithFalseReject": Object { "error": "Tap function (tapPromise) rejects \\"false\\" value", "type": "promise", }, "promiseSinglePromiseWithNullArg": Object { "type": "promise", "value": null, }, "promiseSinglePromiseWithNullArgCalled1": 42, "promiseSinglePromiseWithNullReject": Object { "error": "Tap function (tapPromise) rejects \\"null\\" value", "type": "promise", }, "promiseSinglePromiseWithUndefined": Object { "type": "promise", "value": 42, }, "promiseSinglePromiseWithUndefinedCalled1": 42, "promiseSinglePromiseWithUndefinedReject": Object { "error": "Tap function (tapPromise) rejects \\"undefined\\" value", "type": "promise", }, "promiseSinglePromiseWithZeroArg": Object { "type": "promise", "value": 0, }, "promiseSinglePromiseWithZeroArgCalled1": 42, "promiseSinglePromiseWithZeroReject": Object { "error": "Tap function (tapPromise) rejects \\"0\\" value", "type": "promise", }, "promiseSingleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseSingleSyncWithArg": Object { "type": "promise", "value": 43, }, "promiseSingleSyncWithArgCalled1": 42, "promiseSingleSyncWithArgNoReturn": Object { "type": "promise", "value": 42, }, "promiseSingleSyncWithArgNoReturnCalled1": 42, }, "intercept": Object { "callAsyncContextIntercepted": Object { "type": "async", "value": 48, }, "callAsyncContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "callAsyncContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncContextInterceptedTap1": Object { "number": 42, }, "callAsyncIntercepted": Object { "type": "async", "value": 9, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedResult1": 9, "callAsyncInterceptedResult2": 9, "callAsyncInterceptedTap1": Object { "fn": 2, "name": "promise", "type": "promise", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "callAsyncUnusedContextIntercepted": Object { "type": "async", "value": 6, }, "callAsyncUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "callAsyncUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncUnusedContextInterceptedTap1": undefined, "promiseContextIntercepted": Object { "type": "promise", "value": 48, }, "promiseContextInterceptedCall1": Array [ Object { "number": 42, }, 1, 2, 3, ], "promiseContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseContextInterceptedTap1": Object { "number": 42, }, "promiseIntercepted": Object { "type": "promise", "value": 9, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedResult1": 9, "promiseInterceptedResult2": 9, "promiseInterceptedTap1": Object { "fn": 2, "name": "promise", "type": "promise", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync", "type": "sync", }, "promiseUnusedContextIntercepted": Object { "type": "promise", "value": 6, }, "promiseUnusedContextInterceptedCall1": Array [ undefined, 1, 2, 3, ], "promiseUnusedContextInterceptedCall2": Array [ 1, 2, 3, ], "promiseUnusedContextInterceptedTap1": undefined, }, "sync": Object { "callAsyncIntercepted": Object { "type": "async", "value": 9, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncMultipleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleSyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": 127, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgCalled2": 84, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": 84, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturnCalled2": 84, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": 85, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": 42, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncMultipleSyncWithArgs": Object { "type": "async", "value": 217, }, "callAsyncMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callAsyncMultipleSyncWithArgsCalled2": Array [ 129, 43, 44, ], "callAsyncNone": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncNoneWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncWithArgCalled": 42, "promiseIntercepted": Object { "type": "promise", "value": 9, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseMultipleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleSyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": 127, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgCalled2": 84, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": 84, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgFirstReturnCalled2": 84, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": 85, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": 42, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseMultipleSyncWithArgs": Object { "type": "promise", "value": 217, }, "promiseMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "promiseMultipleSyncWithArgsCalled2": Array [ 129, 43, 44, ], "promiseNone": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseNoneWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseSingleSyncWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleSyncWithArgCalled": 42, }, } `; webpack-tapable-8ca4f9d/test/__snapshots__/HookCodeFactory.test.js.snap000066400000000000000000001216351517167660300263600ustar00rootroot00000000000000// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`HookCodeFactory callTap (no args, no intercept) async with onResult 1`] = ` "var _fn1 = _x[1]; _fn1((function(_err1, _result1) { if(_err1) { onError(_err1); } else { onResult(_result1); } })); " `; exports[`HookCodeFactory callTap (no args, no intercept) async with onResult 2`] = ` "var _fn1 = _x[1]; _fn1(function(_err1, _result1) { if (_err1) { onError(_err1); } else { onResult(_result1); } }); " `; exports[`HookCodeFactory callTap (no args, no intercept) async without onResult 1`] = ` "var _fn1 = _x[1]; _fn1((function(_err1) { if(_err1) { onError(_err1); } else { onDone(); } })); " `; exports[`HookCodeFactory callTap (no args, no intercept) async without onResult 2`] = ` "var _fn1 = _x[1]; _fn1(function(_err1) { if (_err1) { onError(_err1); } else { onDone(); } }); " `; exports[`HookCodeFactory callTap (no args, no intercept) promise with onResult 1`] = ` "var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; onResult(_result2); }), function(_err2) { if(_hasResult2) throw _err2; onError(!_err2 ? new Error('Tap function (tapPromise) rejects \\"' + _err2 + '\\" value') : _err2); }); " `; exports[`HookCodeFactory callTap (no args, no intercept) promise with onResult 2`] = ` "var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; onResult(_result2); }, function(_err2) { if (_hasResult2) throw _err2; onError( !_err2 ? new Error('Tap function (tapPromise) rejects \\"' + _err2 + '\\" value') : _err2 ); } ); " `; exports[`HookCodeFactory callTap (no args, no intercept) promise without onResult 1`] = ` "var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; onDone(); }), function(_err2) { if(_hasResult2) throw _err2; onError(!_err2 ? new Error('Tap function (tapPromise) rejects \\"' + _err2 + '\\" value') : _err2); }); " `; exports[`HookCodeFactory callTap (no args, no intercept) promise without onResult 2`] = ` "var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; onDone(); }, function(_err2) { if (_hasResult2) throw _err2; onError( !_err2 ? new Error('Tap function (tapPromise) rejects \\"' + _err2 + '\\" value') : _err2 ); } ); " `; exports[`HookCodeFactory callTap (no args, no intercept) sync with onResult 1`] = ` "var _fn0 = _x[0]; var _hasError0 = false; try { var _result0 = _fn0(); } catch(_err) { _hasError0 = true; onError(_err); } if(!_hasError0) { onResult(_result0); } " `; exports[`HookCodeFactory callTap (no args, no intercept) sync with onResult 2`] = ` "var _fn0 = _x[0]; var _hasError0 = false; try { var _result0 = _fn0(); } catch (_err) { _hasError0 = true; onError(_err); } if (!_hasError0) { onResult(_result0); } " `; exports[`HookCodeFactory callTap (no args, no intercept) sync without onResult 1`] = ` "var _fn0 = _x[0]; var _hasError0 = false; try { _fn0(); } catch(_err) { _hasError0 = true; onError(_err); } if(!_hasError0) { onDone(); } " `; exports[`HookCodeFactory callTap (no args, no intercept) sync without onResult 2`] = ` "var _fn0 = _x[0]; var _hasError0 = false; try { _fn0(); } catch (_err) { _hasError0 = true; onError(_err); } if (!_hasError0) { onDone(); } " `; exports[`HookCodeFactory callTap (with args, no intercept) async with onResult 1`] = ` "var _fn1 = _x[1]; _fn1(a, b, c, (function(_err1, _result1) { if(_err1) { onError(_err1); } else { onResult(_result1); } })); " `; exports[`HookCodeFactory callTap (with args, no intercept) async with onResult 2`] = ` "var _fn1 = _x[1]; _fn1(a, b, c, function(_err1, _result1) { if (_err1) { onError(_err1); } else { onResult(_result1); } }); " `; exports[`HookCodeFactory callTap (with args, no intercept) async without onResult 1`] = ` "var _fn1 = _x[1]; _fn1(a, b, c, (function(_err1) { if(_err1) { onError(_err1); } else { onDone(); } })); " `; exports[`HookCodeFactory callTap (with args, no intercept) async without onResult 2`] = ` "var _fn1 = _x[1]; _fn1(a, b, c, function(_err1) { if (_err1) { onError(_err1); } else { onDone(); } }); " `; exports[`HookCodeFactory callTap (with args, no intercept) promise with onResult 1`] = ` "var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; onResult(_result2); }), function(_err2) { if(_hasResult2) throw _err2; onError(!_err2 ? new Error('Tap function (tapPromise) rejects \\"' + _err2 + '\\" value') : _err2); }); " `; exports[`HookCodeFactory callTap (with args, no intercept) promise with onResult 2`] = ` "var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; onResult(_result2); }, function(_err2) { if (_hasResult2) throw _err2; onError( !_err2 ? new Error('Tap function (tapPromise) rejects \\"' + _err2 + '\\" value') : _err2 ); } ); " `; exports[`HookCodeFactory callTap (with args, no intercept) promise without onResult 1`] = ` "var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; onDone(); }), function(_err2) { if(_hasResult2) throw _err2; onError(!_err2 ? new Error('Tap function (tapPromise) rejects \\"' + _err2 + '\\" value') : _err2); }); " `; exports[`HookCodeFactory callTap (with args, no intercept) promise without onResult 2`] = ` "var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; onDone(); }, function(_err2) { if (_hasResult2) throw _err2; onError( !_err2 ? new Error('Tap function (tapPromise) rejects \\"' + _err2 + '\\" value') : _err2 ); } ); " `; exports[`HookCodeFactory callTap (with args, no intercept) sync with onResult 1`] = ` "var _fn0 = _x[0]; var _hasError0 = false; try { var _result0 = _fn0(a, b, c); } catch(_err) { _hasError0 = true; onError(_err); } if(!_hasError0) { onResult(_result0); } " `; exports[`HookCodeFactory callTap (with args, no intercept) sync with onResult 2`] = ` "var _fn0 = _x[0]; var _hasError0 = false; try { var _result0 = _fn0(a, b, c); } catch (_err) { _hasError0 = true; onError(_err); } if (!_hasError0) { onResult(_result0); } " `; exports[`HookCodeFactory callTap (with args, no intercept) sync without onResult 1`] = ` "var _fn0 = _x[0]; var _hasError0 = false; try { _fn0(a, b, c); } catch(_err) { _hasError0 = true; onError(_err); } if(!_hasError0) { onDone(); } " `; exports[`HookCodeFactory callTap (with args, no intercept) sync without onResult 2`] = ` "var _fn0 = _x[0]; var _hasError0 = false; try { _fn0(a, b, c); } catch (_err) { _hasError0 = true; onError(_err); } if (!_hasError0) { onDone(); } " `; exports[`HookCodeFactory callTap (with args, with intercept) async with onResult 1`] = ` "var _tap1 = _taps[1]; _interceptors[0].tap(_tap1); _interceptors[1].tap(_tap1); var _fn1 = _x[1]; _fn1(a, b, c, (function(_err1, _result1) { if(_err1) { onError(_err1); } else { onResult(_result1); } })); " `; exports[`HookCodeFactory callTap (with args, with intercept) async with onResult 2`] = ` "var _tap1 = _taps[1]; _interceptors[0].tap(_tap1); _interceptors[1].tap(_tap1); var _fn1 = _x[1]; _fn1(a, b, c, function(_err1, _result1) { if (_err1) { onError(_err1); } else { onResult(_result1); } }); " `; exports[`HookCodeFactory callTap (with args, with intercept) async without onResult 1`] = ` "var _tap1 = _taps[1]; _interceptors[0].tap(_tap1); _interceptors[1].tap(_tap1); var _fn1 = _x[1]; _fn1(a, b, c, (function(_err1) { if(_err1) { onError(_err1); } else { onDone(); } })); " `; exports[`HookCodeFactory callTap (with args, with intercept) async without onResult 2`] = ` "var _tap1 = _taps[1]; _interceptors[0].tap(_tap1); _interceptors[1].tap(_tap1); var _fn1 = _x[1]; _fn1(a, b, c, function(_err1) { if (_err1) { onError(_err1); } else { onDone(); } }); " `; exports[`HookCodeFactory callTap (with args, with intercept) promise with onResult 1`] = ` "var _tap2 = _taps[2]; _interceptors[0].tap(_tap2); _interceptors[1].tap(_tap2); var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; onResult(_result2); }), function(_err2) { if(_hasResult2) throw _err2; onError(!_err2 ? new Error('Tap function (tapPromise) rejects \\"' + _err2 + '\\" value') : _err2); }); " `; exports[`HookCodeFactory callTap (with args, with intercept) promise with onResult 2`] = ` "var _tap2 = _taps[2]; _interceptors[0].tap(_tap2); _interceptors[1].tap(_tap2); var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; onResult(_result2); }, function(_err2) { if (_hasResult2) throw _err2; onError( !_err2 ? new Error('Tap function (tapPromise) rejects \\"' + _err2 + '\\" value') : _err2 ); } ); " `; exports[`HookCodeFactory callTap (with args, with intercept) promise without onResult 1`] = ` "var _tap2 = _taps[2]; _interceptors[0].tap(_tap2); _interceptors[1].tap(_tap2); var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; onDone(); }), function(_err2) { if(_hasResult2) throw _err2; onError(!_err2 ? new Error('Tap function (tapPromise) rejects \\"' + _err2 + '\\" value') : _err2); }); " `; exports[`HookCodeFactory callTap (with args, with intercept) promise without onResult 2`] = ` "var _tap2 = _taps[2]; _interceptors[0].tap(_tap2); _interceptors[1].tap(_tap2); var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; onDone(); }, function(_err2) { if (_hasResult2) throw _err2; onError( !_err2 ? new Error('Tap function (tapPromise) rejects \\"' + _err2 + '\\" value') : _err2 ); } ); " `; exports[`HookCodeFactory callTap (with args, with intercept) sync with onResult 1`] = ` "var _tap0 = _taps[0]; _interceptors[0].tap(_tap0); _interceptors[1].tap(_tap0); var _fn0 = _x[0]; var _hasError0 = false; try { var _result0 = _fn0(a, b, c); } catch(_err) { _hasError0 = true; onError(_err); } if(!_hasError0) { onResult(_result0); } " `; exports[`HookCodeFactory callTap (with args, with intercept) sync with onResult 2`] = ` "var _tap0 = _taps[0]; _interceptors[0].tap(_tap0); _interceptors[1].tap(_tap0); var _fn0 = _x[0]; var _hasError0 = false; try { var _result0 = _fn0(a, b, c); } catch (_err) { _hasError0 = true; onError(_err); } if (!_hasError0) { onResult(_result0); } " `; exports[`HookCodeFactory callTap (with args, with intercept) sync without onResult 1`] = ` "var _tap0 = _taps[0]; _interceptors[0].tap(_tap0); _interceptors[1].tap(_tap0); var _fn0 = _x[0]; var _hasError0 = false; try { _fn0(a, b, c); } catch(_err) { _hasError0 = true; onError(_err); } if(!_hasError0) { onDone(); } " `; exports[`HookCodeFactory callTap (with args, with intercept) sync without onResult 2`] = ` "var _tap0 = _taps[0]; _interceptors[0].tap(_tap0); _interceptors[1].tap(_tap0); var _fn0 = _x[0]; var _hasError0 = false; try { _fn0(a, b, c); } catch (_err) { _hasError0 = true; onError(_err); } if (!_hasError0) { onDone(); } " `; exports[`HookCodeFactory taps (mixed) callTapsLooping 1`] = ` "var _looper = (function() { var _loopAsync = false; var _loop; do { _loop = false; function _next1() { var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; if(_result2 !== undefined) { _loop = true; if(_loopAsync) _looper(); } else { if(!_loop) { onDone(); } } }), function(_err2) { if(_hasResult2) throw _err2; onError(2, !_err2 ? new Error('Tap function (tapPromise) rejects \\"' + _err2 + '\\" value') : _err2); }); } var _fn0 = _x[0]; var _hasError0 = false; try { var _result0 = _fn0(a, b, c); } catch(_err) { _hasError0 = true; onError(0, _err); } if(!_hasError0) { if(_result0 !== undefined) { _loop = true; if(_loopAsync) _looper(); } else { var _fn1 = _x[1]; _fn1(a, b, c, (function(_err1, _result1) { if(_err1) { onError(1, _err1); } else { if(_result1 !== undefined) { _loop = true; if(_loopAsync) _looper(); } else { _next1(); } } })); } } } while(_loop); _loopAsync = true; }); _looper(); " `; exports[`HookCodeFactory taps (mixed) callTapsLooping 2`] = ` "var _looper = function() { var _loopAsync = false; var _loop; do { _loop = false; function _next1() { var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; if (_result2 !== undefined) { _loop = true; if (_loopAsync) _looper(); } else { if (!_loop) { onDone(); } } }, function(_err2) { if (_hasResult2) throw _err2; onError( 2, !_err2 ? new Error( 'Tap function (tapPromise) rejects \\"' + _err2 + '\\" value' ) : _err2 ); } ); } var _fn0 = _x[0]; var _hasError0 = false; try { var _result0 = _fn0(a, b, c); } catch (_err) { _hasError0 = true; onError(0, _err); } if (!_hasError0) { if (_result0 !== undefined) { _loop = true; if (_loopAsync) _looper(); } else { var _fn1 = _x[1]; _fn1(a, b, c, function(_err1, _result1) { if (_err1) { onError(1, _err1); } else { if (_result1 !== undefined) { _loop = true; if (_loopAsync) _looper(); } else { _next1(); } } }); } } } while (_loop); _loopAsync = true; }; _looper(); " `; exports[`HookCodeFactory taps (mixed) callTapsParallel 1`] = ` "do { var _counter = 3; var _done = (function() { onDone(); }); if(_counter <= 0) break; var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); if(_counter > 0) { onResult(0, _result0, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } if(_counter <= 0) break; var _fn1 = _x[1]; _fn1(a, b, c, (function(_err1, _result1) { if(_err1) { if(_counter > 0) { onError(1, _err1); } } else { if(_counter > 0) { onResult(1, _result1, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } } })); if(_counter <= 0) break; var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; if(_counter > 0) { onResult(2, _result2, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } }), function(_err2) { if(_hasResult2) throw _err2; if(_counter > 0) { onError(2, !_err2 ? new Error('Tap function (tapPromise) rejects \\"' + _err2 + '\\" value') : _err2); } }); } while(false); " `; exports[`HookCodeFactory taps (mixed) callTapsParallel 2`] = ` "do { var _counter = 3; var _done = function() { onDone(); }; if (_counter <= 0) break; var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); if (_counter > 0) { onResult( 0, _result0, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } if (_counter <= 0) break; var _fn1 = _x[1]; _fn1(a, b, c, function(_err1, _result1) { if (_err1) { if (_counter > 0) { onError(1, _err1); } } else { if (_counter > 0) { onResult( 1, _result1, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } } }); if (_counter <= 0) break; var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; if (_counter > 0) { onResult( 2, _result2, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } }, function(_err2) { if (_hasResult2) throw _err2; if (_counter > 0) { onError( 2, !_err2 ? new Error( 'Tap function (tapPromise) rejects \\"' + _err2 + '\\" value' ) : _err2 ); } } ); } while (false); " `; exports[`HookCodeFactory taps (mixed) callTapsSeries 1`] = ` "function _next1() { var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise2 + ')'); _promise2.then((function(_result2) { _hasResult2 = true; onResult(2, _result2, () => { onDone(); }, () => { onDone(); }); }), function(_err2) { if(_hasResult2) throw _err2; onError(2, !_err2 ? new Error('Tap function (tapPromise) rejects \\"' + _err2 + '\\" value') : _err2); }); } var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); onResult(0, _result0, () => { var _fn1 = _x[1]; _fn1(a, b, c, (function(_err1, _result1) { if(_err1) { onError(1, _err1); } else { onResult(1, _result1, () => { _next1(); }, () => { onDone(); }); } })); }, () => { onDone(); }); " `; exports[`HookCodeFactory taps (mixed) callTapsSeries 2`] = ` "function _next1() { var _fn2 = _x[2]; var _hasResult2 = false; var _promise2 = _fn2(a, b, c); if (!_promise2 || !_promise2.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise2 + \\")\\" ); _promise2.then( function(_result2) { _hasResult2 = true; onResult( 2, _result2, () => { onDone(); }, () => { onDone(); } ); }, function(_err2) { if (_hasResult2) throw _err2; onError( 2, !_err2 ? new Error('Tap function (tapPromise) rejects \\"' + _err2 + '\\" value') : _err2 ); } ); } var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); onResult( 0, _result0, () => { var _fn1 = _x[1]; _fn1(a, b, c, function(_err1, _result1) { if (_err1) { onError(1, _err1); } else { onResult( 1, _result1, () => { _next1(); }, () => { onDone(); } ); } }); }, () => { onDone(); } ); " `; exports[`HookCodeFactory taps (mixed2) callTapsLooping 1`] = ` "var _looper = (function() { var _loopAsync = false; var _loop; do { _loop = false; function _next1() { var _fn2 = _x[2]; var _hasError2 = false; try { var _result2 = _fn2(a, b, c); } catch(_err) { _hasError2 = true; onError(2, _err); } if(!_hasError2) { if(_result2 !== undefined) { _loop = true; if(_loopAsync) _looper(); } else { if(!_loop) { onDone(); } } } } function _next0() { var _fn1 = _x[1]; var _hasResult1 = false; var _promise1 = _fn1(a, b, c); if (!_promise1 || !_promise1.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise1 + ')'); _promise1.then((function(_result1) { _hasResult1 = true; if(_result1 !== undefined) { _loop = true; if(_loopAsync) _looper(); } else { _next1(); } }), function(_err1) { if(_hasResult1) throw _err1; onError(1, !_err1 ? new Error('Tap function (tapPromise) rejects \\"' + _err1 + '\\" value') : _err1); }); } var _fn0 = _x[0]; _fn0(a, b, c, (function(_err0, _result0) { if(_err0) { onError(0, _err0); } else { if(_result0 !== undefined) { _loop = true; if(_loopAsync) _looper(); } else { _next0(); } } })); } while(_loop); _loopAsync = true; }); _looper(); " `; exports[`HookCodeFactory taps (mixed2) callTapsLooping 2`] = ` "var _looper = function() { var _loopAsync = false; var _loop; do { _loop = false; function _next1() { var _fn2 = _x[2]; var _hasError2 = false; try { var _result2 = _fn2(a, b, c); } catch (_err) { _hasError2 = true; onError(2, _err); } if (!_hasError2) { if (_result2 !== undefined) { _loop = true; if (_loopAsync) _looper(); } else { if (!_loop) { onDone(); } } } } function _next0() { var _fn1 = _x[1]; var _hasResult1 = false; var _promise1 = _fn1(a, b, c); if (!_promise1 || !_promise1.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise1 + \\")\\" ); _promise1.then( function(_result1) { _hasResult1 = true; if (_result1 !== undefined) { _loop = true; if (_loopAsync) _looper(); } else { _next1(); } }, function(_err1) { if (_hasResult1) throw _err1; onError( 1, !_err1 ? new Error( 'Tap function (tapPromise) rejects \\"' + _err1 + '\\" value' ) : _err1 ); } ); } var _fn0 = _x[0]; _fn0(a, b, c, function(_err0, _result0) { if (_err0) { onError(0, _err0); } else { if (_result0 !== undefined) { _loop = true; if (_loopAsync) _looper(); } else { _next0(); } } }); } while (_loop); _loopAsync = true; }; _looper(); " `; exports[`HookCodeFactory taps (mixed2) callTapsParallel 1`] = ` "do { var _counter = 3; var _done = (function() { onDone(); }); if(_counter <= 0) break; var _fn0 = _x[0]; _fn0(a, b, c, (function(_err0, _result0) { if(_err0) { if(_counter > 0) { onError(0, _err0); } } else { if(_counter > 0) { onResult(0, _result0, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } } })); if(_counter <= 0) break; var _fn1 = _x[1]; var _hasResult1 = false; var _promise1 = _fn1(a, b, c); if (!_promise1 || !_promise1.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise1 + ')'); _promise1.then((function(_result1) { _hasResult1 = true; if(_counter > 0) { onResult(1, _result1, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } }), function(_err1) { if(_hasResult1) throw _err1; if(_counter > 0) { onError(1, !_err1 ? new Error('Tap function (tapPromise) rejects \\"' + _err1 + '\\" value') : _err1); } }); if(_counter <= 0) break; var _fn2 = _x[2]; var _result2 = _fn2(a, b, c); if(_counter > 0) { onResult(2, _result2, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } } while(false); " `; exports[`HookCodeFactory taps (mixed2) callTapsParallel 2`] = ` "do { var _counter = 3; var _done = function() { onDone(); }; if (_counter <= 0) break; var _fn0 = _x[0]; _fn0(a, b, c, function(_err0, _result0) { if (_err0) { if (_counter > 0) { onError(0, _err0); } } else { if (_counter > 0) { onResult( 0, _result0, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } } }); if (_counter <= 0) break; var _fn1 = _x[1]; var _hasResult1 = false; var _promise1 = _fn1(a, b, c); if (!_promise1 || !_promise1.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise1 + \\")\\" ); _promise1.then( function(_result1) { _hasResult1 = true; if (_counter > 0) { onResult( 1, _result1, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } }, function(_err1) { if (_hasResult1) throw _err1; if (_counter > 0) { onError( 1, !_err1 ? new Error( 'Tap function (tapPromise) rejects \\"' + _err1 + '\\" value' ) : _err1 ); } } ); if (_counter <= 0) break; var _fn2 = _x[2]; var _result2 = _fn2(a, b, c); if (_counter > 0) { onResult( 2, _result2, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } } while (false); " `; exports[`HookCodeFactory taps (mixed2) callTapsSeries 1`] = ` "function _next1() { var _fn2 = _x[2]; var _hasError2 = false; try { var _result2 = _fn2(a, b, c); } catch(_err) { _hasError2 = true; onError(2, _err); } if(!_hasError2) { onResult(2, _result2, () => { onDone(); }, () => { onDone(); }); } } function _next0() { var _fn1 = _x[1]; var _hasResult1 = false; var _promise1 = _fn1(a, b, c); if (!_promise1 || !_promise1.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise1 + ')'); _promise1.then((function(_result1) { _hasResult1 = true; onResult(1, _result1, () => { _next1(); }, () => { onDone(); }); }), function(_err1) { if(_hasResult1) throw _err1; onError(1, !_err1 ? new Error('Tap function (tapPromise) rejects \\"' + _err1 + '\\" value') : _err1); }); } var _fn0 = _x[0]; _fn0(a, b, c, (function(_err0, _result0) { if(_err0) { onError(0, _err0); } else { onResult(0, _result0, () => { _next0(); }, () => { onDone(); }); } })); " `; exports[`HookCodeFactory taps (mixed2) callTapsSeries 2`] = ` "function _next1() { var _fn2 = _x[2]; var _hasError2 = false; try { var _result2 = _fn2(a, b, c); } catch (_err) { _hasError2 = true; onError(2, _err); } if (!_hasError2) { onResult( 2, _result2, () => { onDone(); }, () => { onDone(); } ); } } function _next0() { var _fn1 = _x[1]; var _hasResult1 = false; var _promise1 = _fn1(a, b, c); if (!_promise1 || !_promise1.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise1 + \\")\\" ); _promise1.then( function(_result1) { _hasResult1 = true; onResult( 1, _result1, () => { _next1(); }, () => { onDone(); } ); }, function(_err1) { if (_hasResult1) throw _err1; onError( 1, !_err1 ? new Error('Tap function (tapPromise) rejects \\"' + _err1 + '\\" value') : _err1 ); } ); } var _fn0 = _x[0]; _fn0(a, b, c, function(_err0, _result0) { if (_err0) { onError(0, _err0); } else { onResult( 0, _result0, () => { _next0(); }, () => { onDone(); } ); } }); " `; exports[`HookCodeFactory taps (multiple sync) callTapsLooping 1`] = ` "var _loop; do { _loop = false; var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); if(_result0 !== undefined) { _loop = true; } else { var _fn1 = _x[1]; var _result1 = _fn1(a, b, c); if(_result1 !== undefined) { _loop = true; } else { var _fn2 = _x[2]; var _result2 = _fn2(a, b, c); if(_result2 !== undefined) { _loop = true; } else { if(!_loop) { onDone(); } } } } } while(_loop); " `; exports[`HookCodeFactory taps (multiple sync) callTapsLooping 2`] = ` "var _loop; do { _loop = false; var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); if (_result0 !== undefined) { _loop = true; } else { var _fn1 = _x[1]; var _result1 = _fn1(a, b, c); if (_result1 !== undefined) { _loop = true; } else { var _fn2 = _x[2]; var _result2 = _fn2(a, b, c); if (_result2 !== undefined) { _loop = true; } else { if (!_loop) { onDone(); } } } } } while (_loop); " `; exports[`HookCodeFactory taps (multiple sync) callTapsParallel 1`] = ` "do { var _counter = 3; var _done = (function() { onDone(); }); if(_counter <= 0) break; var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); if(_counter > 0) { onResult(0, _result0, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } if(_counter <= 0) break; var _fn1 = _x[1]; var _result1 = _fn1(a, b, c); if(_counter > 0) { onResult(1, _result1, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } if(_counter <= 0) break; var _fn2 = _x[2]; var _result2 = _fn2(a, b, c); if(_counter > 0) { onResult(2, _result2, () => { if(--_counter === 0) _done(); }, () => { _counter = 0; _done(); }); } } while(false); " `; exports[`HookCodeFactory taps (multiple sync) callTapsParallel 2`] = ` "do { var _counter = 3; var _done = function() { onDone(); }; if (_counter <= 0) break; var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); if (_counter > 0) { onResult( 0, _result0, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } if (_counter <= 0) break; var _fn1 = _x[1]; var _result1 = _fn1(a, b, c); if (_counter > 0) { onResult( 1, _result1, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } if (_counter <= 0) break; var _fn2 = _x[2]; var _result2 = _fn2(a, b, c); if (_counter > 0) { onResult( 2, _result2, () => { if (--_counter === 0) _done(); }, () => { _counter = 0; _done(); } ); } } while (false); " `; exports[`HookCodeFactory taps (multiple sync) callTapsSeries 1`] = ` "var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); onResult(0, _result0, () => { var _fn1 = _x[1]; var _result1 = _fn1(a, b, c); onResult(1, _result1, () => { var _fn2 = _x[2]; var _result2 = _fn2(a, b, c); onResult(2, _result2, () => { onDone(); }, () => { onDone(); }); }, () => { onDone(); }); }, () => { onDone(); }); " `; exports[`HookCodeFactory taps (multiple sync) callTapsSeries 2`] = ` "var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); onResult( 0, _result0, () => { var _fn1 = _x[1]; var _result1 = _fn1(a, b, c); onResult( 1, _result1, () => { var _fn2 = _x[2]; var _result2 = _fn2(a, b, c); onResult( 2, _result2, () => { onDone(); }, () => { onDone(); } ); }, () => { onDone(); } ); }, () => { onDone(); } ); " `; exports[`HookCodeFactory taps (none) callTapsLooping 1`] = ` "onDone(); " `; exports[`HookCodeFactory taps (none) callTapsLooping 2`] = ` "onDone(); " `; exports[`HookCodeFactory taps (none) callTapsParallel 1`] = ` "onDone(); " `; exports[`HookCodeFactory taps (none) callTapsParallel 2`] = ` "onDone(); " `; exports[`HookCodeFactory taps (none) callTapsSeries 1`] = ` "onDone(); " `; exports[`HookCodeFactory taps (none) callTapsSeries 2`] = ` "onDone(); " `; exports[`HookCodeFactory taps (single async) callTapsLooping 1`] = ` "var _looper = (function() { var _loopAsync = false; var _loop; do { _loop = false; var _fn0 = _x[0]; _fn0(a, b, c, (function(_err0, _result0) { if(_err0) { onError(0, _err0); } else { if(_result0 !== undefined) { _loop = true; if(_loopAsync) _looper(); } else { if(!_loop) { onDone(); } } } })); } while(_loop); _loopAsync = true; }); _looper(); " `; exports[`HookCodeFactory taps (single async) callTapsLooping 2`] = ` "var _looper = function() { var _loopAsync = false; var _loop; do { _loop = false; var _fn0 = _x[0]; _fn0(a, b, c, function(_err0, _result0) { if (_err0) { onError(0, _err0); } else { if (_result0 !== undefined) { _loop = true; if (_loopAsync) _looper(); } else { if (!_loop) { onDone(); } } } }); } while (_loop); _loopAsync = true; }; _looper(); " `; exports[`HookCodeFactory taps (single async) callTapsParallel 1`] = ` "var _fn0 = _x[0]; _fn0(a, b, c, (function(_err0, _result0) { if(_err0) { onError(0, _err0); } else { onResult(0, _result0, () => { onDone(); }, () => { onDone(); }); } })); " `; exports[`HookCodeFactory taps (single async) callTapsParallel 2`] = ` "var _fn0 = _x[0]; _fn0(a, b, c, function(_err0, _result0) { if (_err0) { onError(0, _err0); } else { onResult( 0, _result0, () => { onDone(); }, () => { onDone(); } ); } }); " `; exports[`HookCodeFactory taps (single async) callTapsSeries 1`] = ` "var _fn0 = _x[0]; _fn0(a, b, c, (function(_err0, _result0) { if(_err0) { onError(0, _err0); } else { onResult(0, _result0, () => { onDone(); }, () => { onDone(); }); } })); " `; exports[`HookCodeFactory taps (single async) callTapsSeries 2`] = ` "var _fn0 = _x[0]; _fn0(a, b, c, function(_err0, _result0) { if (_err0) { onError(0, _err0); } else { onResult( 0, _result0, () => { onDone(); }, () => { onDone(); } ); } }); " `; exports[`HookCodeFactory taps (single promise) callTapsLooping 1`] = ` "var _looper = (function() { var _loopAsync = false; var _loop; do { _loop = false; var _fn0 = _x[0]; var _hasResult0 = false; var _promise0 = _fn0(a, b, c); if (!_promise0 || !_promise0.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise0 + ')'); _promise0.then((function(_result0) { _hasResult0 = true; if(_result0 !== undefined) { _loop = true; if(_loopAsync) _looper(); } else { if(!_loop) { onDone(); } } }), function(_err0) { if(_hasResult0) throw _err0; onError(0, !_err0 ? new Error('Tap function (tapPromise) rejects \\"' + _err0 + '\\" value') : _err0); }); } while(_loop); _loopAsync = true; }); _looper(); " `; exports[`HookCodeFactory taps (single promise) callTapsLooping 2`] = ` "var _looper = function() { var _loopAsync = false; var _loop; do { _loop = false; var _fn0 = _x[0]; var _hasResult0 = false; var _promise0 = _fn0(a, b, c); if (!_promise0 || !_promise0.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise0 + \\")\\" ); _promise0.then( function(_result0) { _hasResult0 = true; if (_result0 !== undefined) { _loop = true; if (_loopAsync) _looper(); } else { if (!_loop) { onDone(); } } }, function(_err0) { if (_hasResult0) throw _err0; onError( 0, !_err0 ? new Error( 'Tap function (tapPromise) rejects \\"' + _err0 + '\\" value' ) : _err0 ); } ); } while (_loop); _loopAsync = true; }; _looper(); " `; exports[`HookCodeFactory taps (single promise) callTapsParallel 1`] = ` "var _fn0 = _x[0]; var _hasResult0 = false; var _promise0 = _fn0(a, b, c); if (!_promise0 || !_promise0.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise0 + ')'); _promise0.then((function(_result0) { _hasResult0 = true; onResult(0, _result0, () => { onDone(); }, () => { onDone(); }); }), function(_err0) { if(_hasResult0) throw _err0; onError(0, !_err0 ? new Error('Tap function (tapPromise) rejects \\"' + _err0 + '\\" value') : _err0); }); " `; exports[`HookCodeFactory taps (single promise) callTapsParallel 2`] = ` "var _fn0 = _x[0]; var _hasResult0 = false; var _promise0 = _fn0(a, b, c); if (!_promise0 || !_promise0.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise0 + \\")\\" ); _promise0.then( function(_result0) { _hasResult0 = true; onResult( 0, _result0, () => { onDone(); }, () => { onDone(); } ); }, function(_err0) { if (_hasResult0) throw _err0; onError( 0, !_err0 ? new Error('Tap function (tapPromise) rejects \\"' + _err0 + '\\" value') : _err0 ); } ); " `; exports[`HookCodeFactory taps (single promise) callTapsSeries 1`] = ` "var _fn0 = _x[0]; var _hasResult0 = false; var _promise0 = _fn0(a, b, c); if (!_promise0 || !_promise0.then) throw new Error('Tap function (tapPromise) did not return promise (returned ' + _promise0 + ')'); _promise0.then((function(_result0) { _hasResult0 = true; onResult(0, _result0, () => { onDone(); }, () => { onDone(); }); }), function(_err0) { if(_hasResult0) throw _err0; onError(0, !_err0 ? new Error('Tap function (tapPromise) rejects \\"' + _err0 + '\\" value') : _err0); }); " `; exports[`HookCodeFactory taps (single promise) callTapsSeries 2`] = ` "var _fn0 = _x[0]; var _hasResult0 = false; var _promise0 = _fn0(a, b, c); if (!_promise0 || !_promise0.then) throw new Error( \\"Tap function (tapPromise) did not return promise (returned \\" + _promise0 + \\")\\" ); _promise0.then( function(_result0) { _hasResult0 = true; onResult( 0, _result0, () => { onDone(); }, () => { onDone(); } ); }, function(_err0) { if (_hasResult0) throw _err0; onError( 0, !_err0 ? new Error('Tap function (tapPromise) rejects \\"' + _err0 + '\\" value') : _err0 ); } ); " `; exports[`HookCodeFactory taps (single sync) callTapsLooping 1`] = ` "var _loop; do { _loop = false; var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); if(_result0 !== undefined) { _loop = true; } else { if(!_loop) { onDone(); } } } while(_loop); " `; exports[`HookCodeFactory taps (single sync) callTapsLooping 2`] = ` "var _loop; do { _loop = false; var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); if (_result0 !== undefined) { _loop = true; } else { if (!_loop) { onDone(); } } } while (_loop); " `; exports[`HookCodeFactory taps (single sync) callTapsParallel 1`] = ` "var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); onResult(0, _result0, () => { onDone(); }, () => { onDone(); }); " `; exports[`HookCodeFactory taps (single sync) callTapsParallel 2`] = ` "var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); onResult( 0, _result0, () => { onDone(); }, () => { onDone(); } ); " `; exports[`HookCodeFactory taps (single sync) callTapsSeries 1`] = ` "var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); onResult(0, _result0, () => { onDone(); }, () => { onDone(); }); " `; exports[`HookCodeFactory taps (single sync) callTapsSeries 2`] = ` "var _fn0 = _x[0]; var _result0 = _fn0(a, b, c); onResult( 0, _result0, () => { onDone(); }, () => { onDone(); } ); " `; webpack-tapable-8ca4f9d/test/__snapshots__/SyncHooks.test.js.snap000066400000000000000000000535671517167660300252650ustar00rootroot00000000000000// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`SyncBailHook should have to correct behavior 1`] = ` Object { "async": Object {}, "intercept": Object {}, "sync": Object { "callAsyncIntercepted": Object { "type": "async", "value": 6, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedTap1": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncMultipleSync": Object { "type": "async", "value": 42, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncErrorCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": 84, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": 84, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": 85, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncMultipleSyncWithArgs": Object { "type": "async", "value": 129, }, "callAsyncMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSync": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncCalled": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncWithArgCalled": 42, "callIntercepted": Object { "type": "return", "value": 6, }, "callInterceptedCall1": Array [ 1, 2, 3, ], "callInterceptedCall2": Array [ 1, 2, 3, ], "callInterceptedTap1": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callMultipleSync": Object { "type": "return", "value": 42, }, "callMultipleSyncCalled1": true, "callMultipleSyncError": Object { "error": "Error in sync2", }, "callMultipleSyncErrorCalled1": true, "callMultipleSyncErrorCalled2": true, "callMultipleSyncWithArg": Object { "type": "return", "value": 84, }, "callMultipleSyncWithArgCalled1": 42, "callMultipleSyncWithArgFirstReturn": Object { "type": "return", "value": 84, }, "callMultipleSyncWithArgFirstReturnCalled1": 42, "callMultipleSyncWithArgLastReturn": Object { "type": "return", "value": 85, }, "callMultipleSyncWithArgLastReturnCalled1": 42, "callMultipleSyncWithArgLastReturnCalled2": 42, "callMultipleSyncWithArgNoReturn": Object { "type": "no result", }, "callMultipleSyncWithArgNoReturnCalled1": 42, "callMultipleSyncWithArgNoReturnCalled2": 42, "callMultipleSyncWithArgs": Object { "type": "return", "value": 129, }, "callMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callNone": Object { "type": "no result", }, "callNoneWithArg": Object { "type": "no result", }, "callSingleSync": Object { "type": "return", "value": 42, }, "callSingleSyncCalled": true, "callSingleSyncWithArg": Object { "type": "return", "value": 42, }, "callSingleSyncWithArgCalled": 42, "promiseIntercepted": Object { "type": "promise", "value": 6, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedTap1": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseMultipleSync": Object { "type": "promise", "value": 42, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncErrorCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": 84, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": 84, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": 85, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseMultipleSyncWithArgs": Object { "type": "promise", "value": 129, }, "promiseMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSync": Object { "type": "promise", "value": 42, }, "promiseSingleSyncCalled": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleSyncWithArgCalled": 42, }, } `; exports[`SyncHook should have to correct behavior 1`] = ` Object { "async": Object {}, "intercept": Object {}, "sync": Object { "callAsyncIntercepted": Object { "type": "async", "value": undefined, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncMultipleSync": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncCalled1": true, "callAsyncMultipleSyncCalled2": true, "callAsyncMultipleSyncError": Object { "error": "Error in sync2", "type": "async", }, "callAsyncMultipleSyncErrorCalled1": true, "callAsyncMultipleSyncErrorCalled2": true, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgCalled2": 42, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturnCalled2": 42, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncMultipleSyncWithArgs": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callAsyncMultipleSyncWithArgsCalled2": Array [ 42, 43, 44, ], "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSync": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncCalled": true, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncWithArgCalled": 42, "callIntercepted": Object { "type": "no result", }, "callInterceptedCall1": Array [ 1, 2, 3, ], "callInterceptedCall2": Array [ 1, 2, 3, ], "callInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "callInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callMultipleSync": Object { "type": "no result", }, "callMultipleSyncCalled1": true, "callMultipleSyncCalled2": true, "callMultipleSyncError": Object { "error": "Error in sync2", }, "callMultipleSyncErrorCalled1": true, "callMultipleSyncErrorCalled2": true, "callMultipleSyncWithArg": Object { "type": "no result", }, "callMultipleSyncWithArgCalled1": 42, "callMultipleSyncWithArgCalled2": 42, "callMultipleSyncWithArgFirstReturn": Object { "type": "no result", }, "callMultipleSyncWithArgFirstReturnCalled1": 42, "callMultipleSyncWithArgFirstReturnCalled2": 42, "callMultipleSyncWithArgLastReturn": Object { "type": "no result", }, "callMultipleSyncWithArgLastReturnCalled1": 42, "callMultipleSyncWithArgLastReturnCalled2": 42, "callMultipleSyncWithArgNoReturn": Object { "type": "no result", }, "callMultipleSyncWithArgNoReturnCalled1": 42, "callMultipleSyncWithArgNoReturnCalled2": 42, "callMultipleSyncWithArgs": Object { "type": "no result", }, "callMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callMultipleSyncWithArgsCalled2": Array [ 42, 43, 44, ], "callNone": Object { "type": "no result", }, "callNoneWithArg": Object { "type": "no result", }, "callSingleSync": Object { "type": "no result", }, "callSingleSyncCalled": true, "callSingleSyncWithArg": Object { "type": "no result", }, "callSingleSyncWithArgCalled": 42, "promiseIntercepted": Object { "type": "promise", "value": undefined, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseMultipleSync": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncCalled1": true, "promiseMultipleSyncCalled2": true, "promiseMultipleSyncError": Object { "error": "Error in sync2", "type": "promise", }, "promiseMultipleSyncErrorCalled1": true, "promiseMultipleSyncErrorCalled2": true, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgCalled2": 42, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgFirstReturnCalled2": 42, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseMultipleSyncWithArgs": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "promiseMultipleSyncWithArgsCalled2": Array [ 42, 43, 44, ], "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSync": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncCalled": true, "promiseSingleSyncWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncWithArgCalled": 42, }, } `; exports[`SyncLoopHook should have to correct behavior 1`] = ` Object { "async": Object {}, "sync": Object { "callAsyncInterceptedSync": Object { "type": "async", "value": undefined, }, "callAsyncInterceptedSyncCalled1": 83, "callAsyncInterceptedSyncCalled2": 42, "callAsyncInterceptedSyncCalledCall": 1, "callAsyncInterceptedSyncCalledLoop": 83, "callAsyncInterceptedSyncCalledTap": 125, "callAsyncMultipleSync": Object { "type": "async", "value": undefined, }, "callAsyncMultipleSyncCalled1": 83, "callAsyncMultipleSyncCalled2": 42, "callAsyncNone": Object { "type": "async", "value": undefined, }, "callAsyncNoneWithArg": Object { "type": "async", "value": undefined, }, "callAsyncSingleSync": Object { "type": "async", "value": undefined, }, "callAsyncSingleSyncCalled": 42, "callInterceptedSync": Object { "type": "no result", }, "callInterceptedSyncCalled1": 83, "callInterceptedSyncCalled2": 42, "callInterceptedSyncCalledCall": 1, "callInterceptedSyncCalledLoop": 83, "callInterceptedSyncCalledTap": 125, "callMultipleSync": Object { "type": "no result", }, "callMultipleSyncCalled1": 83, "callMultipleSyncCalled2": 42, "callNone": Object { "type": "no result", }, "callNoneWithArg": Object { "type": "no result", }, "callSingleSync": Object { "type": "no result", }, "callSingleSyncCalled": 42, "promiseInterceptedSync": Object { "type": "promise", "value": undefined, }, "promiseInterceptedSyncCalled1": 83, "promiseInterceptedSyncCalled2": 42, "promiseInterceptedSyncCalledCall": 1, "promiseInterceptedSyncCalledLoop": 83, "promiseInterceptedSyncCalledTap": 125, "promiseMultipleSync": Object { "type": "promise", "value": undefined, }, "promiseMultipleSyncCalled1": 83, "promiseMultipleSyncCalled2": 42, "promiseNone": Object { "type": "promise", "value": undefined, }, "promiseNoneWithArg": Object { "type": "promise", "value": undefined, }, "promiseSingleSync": Object { "type": "promise", "value": undefined, }, "promiseSingleSyncCalled": 42, }, } `; exports[`SyncWaterfallHook should have to correct behavior 1`] = ` Object { "async": Object {}, "intercept": Object {}, "sync": Object { "callAsyncIntercepted": Object { "type": "async", "value": 9, }, "callAsyncInterceptedCall1": Array [ 1, 2, 3, ], "callAsyncInterceptedCall2": Array [ 1, 2, 3, ], "callAsyncInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "callAsyncInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callAsyncMultipleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleSyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncMultipleSyncWithArg": Object { "type": "async", "value": 127, }, "callAsyncMultipleSyncWithArgCalled1": 42, "callAsyncMultipleSyncWithArgCalled2": 84, "callAsyncMultipleSyncWithArgFirstReturn": Object { "type": "async", "value": 84, }, "callAsyncMultipleSyncWithArgFirstReturnCalled1": 42, "callAsyncMultipleSyncWithArgFirstReturnCalled2": 84, "callAsyncMultipleSyncWithArgLastReturn": Object { "type": "async", "value": 85, }, "callAsyncMultipleSyncWithArgLastReturnCalled1": 42, "callAsyncMultipleSyncWithArgLastReturnCalled2": 42, "callAsyncMultipleSyncWithArgNoReturn": Object { "type": "async", "value": 42, }, "callAsyncMultipleSyncWithArgNoReturnCalled1": 42, "callAsyncMultipleSyncWithArgNoReturnCalled2": 42, "callAsyncMultipleSyncWithArgs": Object { "type": "async", "value": 217, }, "callAsyncMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callAsyncMultipleSyncWithArgsCalled2": Array [ 129, 43, 44, ], "callAsyncNone": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncNoneWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "callAsyncSingleSyncWithArg": Object { "type": "async", "value": 42, }, "callAsyncSingleSyncWithArgCalled": 42, "callIntercepted": Object { "type": "return", "value": 9, }, "callInterceptedCall1": Array [ 1, 2, 3, ], "callInterceptedCall2": Array [ 1, 2, 3, ], "callInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "callInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "callMultipleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "callMultipleSyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "callMultipleSyncWithArg": Object { "type": "return", "value": 127, }, "callMultipleSyncWithArgCalled1": 42, "callMultipleSyncWithArgCalled2": 84, "callMultipleSyncWithArgFirstReturn": Object { "type": "return", "value": 84, }, "callMultipleSyncWithArgFirstReturnCalled1": 42, "callMultipleSyncWithArgFirstReturnCalled2": 84, "callMultipleSyncWithArgLastReturn": Object { "type": "return", "value": 85, }, "callMultipleSyncWithArgLastReturnCalled1": 42, "callMultipleSyncWithArgLastReturnCalled2": 42, "callMultipleSyncWithArgNoReturn": Object { "type": "return", "value": 42, }, "callMultipleSyncWithArgNoReturnCalled1": 42, "callMultipleSyncWithArgNoReturnCalled2": 42, "callMultipleSyncWithArgs": Object { "type": "return", "value": 217, }, "callMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "callMultipleSyncWithArgsCalled2": Array [ 129, 43, 44, ], "callNone": Object { "error": "Waterfall hooks must have at least one argument", }, "callNoneWithArg": Object { "type": "return", "value": 42, }, "callSingleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "callSingleSyncWithArg": Object { "type": "return", "value": 42, }, "callSingleSyncWithArgCalled": 42, "promiseIntercepted": Object { "type": "promise", "value": 9, }, "promiseInterceptedCall1": Array [ 1, 2, 3, ], "promiseInterceptedCall2": Array [ 1, 2, 3, ], "promiseInterceptedTap1": Object { "fn": 2, "name": "sync2", "type": "sync", }, "promiseInterceptedTap2": Object { "fn": 3, "name": "sync1", "type": "sync", }, "promiseMultipleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleSyncError": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseMultipleSyncWithArg": Object { "type": "promise", "value": 127, }, "promiseMultipleSyncWithArgCalled1": 42, "promiseMultipleSyncWithArgCalled2": 84, "promiseMultipleSyncWithArgFirstReturn": Object { "type": "promise", "value": 84, }, "promiseMultipleSyncWithArgFirstReturnCalled1": 42, "promiseMultipleSyncWithArgFirstReturnCalled2": 84, "promiseMultipleSyncWithArgLastReturn": Object { "type": "promise", "value": 85, }, "promiseMultipleSyncWithArgLastReturnCalled1": 42, "promiseMultipleSyncWithArgLastReturnCalled2": 42, "promiseMultipleSyncWithArgNoReturn": Object { "type": "promise", "value": 42, }, "promiseMultipleSyncWithArgNoReturnCalled1": 42, "promiseMultipleSyncWithArgNoReturnCalled2": 42, "promiseMultipleSyncWithArgs": Object { "type": "promise", "value": 217, }, "promiseMultipleSyncWithArgsCalled1": Array [ 42, 43, 44, ], "promiseMultipleSyncWithArgsCalled2": Array [ 129, 43, 44, ], "promiseNone": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseNoneWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleSync": Object { "error": "Waterfall hooks must have at least one argument", }, "promiseSingleSyncWithArg": Object { "type": "promise", "value": 42, }, "promiseSingleSyncWithArgCalled": 42, }, } `;