├── .github
├── CODEOWNERS
└── workflows
│ ├── add-asana-comment.yml
│ ├── ci.yml
│ ├── example.yml
│ ├── mergeabot.yml
│ └── release.yml
├── .gitignore
├── .nvmrc
├── .releaserc.yaml
├── .restyled.yaml
├── LICENSE
├── README.md
├── action.yml
├── dist
└── index.js
├── example
├── .gitignore
├── example.cabal
├── hie.yaml
├── package.yaml
├── src
│ └── Foo.hs
├── stack-link.yaml
├── stack-nightly.yaml
├── stack-nightly.yaml.lock
├── stack.yaml
└── stack.yaml.lock
├── generate-matrix
└── action.yml
├── jest.config.ts
├── package.json
├── renovate.json
├── src
├── dirty-files.test.ts
├── dirty-files.ts
├── envsubst.test.ts
├── envsubst.ts
├── get-cache-keys.test.ts
├── get-cache-keys.ts
├── hash-project.ts
├── hie.ts
├── inputs.ts
├── main.ts
├── parse-stack-path.test.ts
├── parse-stack-path.ts
├── parse-stack-query.test.ts
├── parse-stack-query.ts
├── stack-cli.test.ts
├── stack-cli.ts
├── stack-yaml.test.ts
├── stack-yaml.ts
├── with-cache.test.ts
└── with-cache.ts
├── tsconfig.json
└── yarn.lock
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | * @freckle/backenders
2 |
--------------------------------------------------------------------------------
/.github/workflows/add-asana-comment.yml:
--------------------------------------------------------------------------------
1 | name: Asana
2 |
3 | on:
4 | pull_request:
5 | types: [opened]
6 |
7 | jobs:
8 | link-asana-task:
9 | if: ${{ github.actor != 'dependabot[bot]' }}
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: Asana/create-app-attachment-github-action@v1.3
13 | id: postAttachment
14 | with:
15 | asana-secret: ${{ secrets.ASANA_API_ACCESS_KEY }}
16 | - run: echo "Status is ${{ steps.postAttachment.outputs.status }}"
17 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: CI
2 |
3 | on:
4 | pull_request:
5 |
6 | jobs:
7 | build:
8 | runs-on: ubuntu-latest
9 | steps:
10 | - uses: actions/checkout@v4
11 | - uses: actions/setup-node@v4
12 | with:
13 | cache: yarn
14 | node-version-file: ".nvmrc"
15 | - run: yarn install
16 | - run: yarn build
17 | - run: yarn test
18 |
--------------------------------------------------------------------------------
/.github/workflows/example.yml:
--------------------------------------------------------------------------------
1 | name: Example
2 |
3 | on:
4 | pull_request:
5 | push:
6 | branches: main
7 |
8 | concurrency:
9 | group: ${{ github.workflow }}-${{ github.ref }}
10 | cancel-in-progress: true
11 |
12 | defaults:
13 | run:
14 | working-directory: example
15 |
16 | jobs:
17 | # Make sure we use an updated dist/index.js in the examples, which are
18 | # effectively integration tests. In the case of a Dependabot PR, index.js
19 | # won't be rebuilt otherwise.
20 | dist:
21 | runs-on: ubuntu-latest
22 | steps:
23 | - uses: actions/checkout@v4
24 | - uses: actions/setup-node@v4
25 | with:
26 | cache: yarn
27 | node-version-file: ".nvmrc"
28 | - run: yarn install
29 | - run: yarn build
30 | - uses: actions/upload-artifact@v4
31 | with:
32 | name: dist
33 | path: dist/index.js
34 |
35 | test:
36 | needs: dist
37 |
38 | strategy:
39 | matrix:
40 | runner:
41 | - ubuntu-latest
42 | - macOS-latest
43 | - windows-latest
44 |
45 | stack:
46 | - resolver: nightly
47 | - resolver: lts
48 | - resolver: lts-22.7
49 | ghc: "9.6.4"
50 | - resolver: lts-12.26
51 | ghc: "8.4.4"
52 |
53 | exclude:
54 | # Binary distributions for older GHCs don't exist on macOS-latest
55 | - runner: macOS-latest
56 | stack: { ghc: "8.4.4" }
57 |
58 | fail-fast: false
59 |
60 | runs-on: ${{ matrix.runner }}
61 |
62 | steps:
63 | - uses: actions/checkout@v4
64 | - uses: actions/download-artifact@v4
65 | with:
66 | name: dist
67 | path: dist # overwrite dist/index.js
68 |
69 | - id: stack
70 | uses: ./
71 | with:
72 | cache-prefix: v1/
73 | working-directory: example
74 | stack-arguments: --resolver ${{ matrix.stack.resolver }}
75 |
76 | - name: Check compiler[-*] outputs
77 | if: matrix.stack.ghc
78 | shell: bash
79 | run: |
80 | [[ "${{ steps.stack.outputs.compiler }}" = ghc-${{ matrix.stack.ghc }} ]]
81 | [[ "${{ steps.stack.outputs.compiler-version }}" = ${{ matrix.stack.ghc }} ]]
82 |
83 | - name: Check presence of other outputs
84 | shell: bash
85 | run: |
86 | # stack path | cut -d: -f1
87 | [[ -n "${{ steps.stack.outputs.snapshot-doc-root }}" ]]
88 | [[ -n "${{ steps.stack.outputs.local-doc-root }}" ]]
89 | [[ -n "${{ steps.stack.outputs.local-hoogle-root }}" ]]
90 | [[ -n "${{ steps.stack.outputs.stack-root }}" ]]
91 | [[ -n "${{ steps.stack.outputs.project-root }}" ]]
92 | [[ -n "${{ steps.stack.outputs.config-location }}" ]]
93 | [[ -n "${{ steps.stack.outputs.bin-path }}" ]]
94 | [[ -n "${{ steps.stack.outputs.programs }}" ]]
95 | [[ -n "${{ steps.stack.outputs.compiler-exe }}" ]]
96 | [[ -n "${{ steps.stack.outputs.compiler-bin }}" ]]
97 | [[ -n "${{ steps.stack.outputs.compiler-tools-bin }}" ]]
98 | [[ -n "${{ steps.stack.outputs.local-bin }}" ]]
99 |
100 | # Actually blank in default setup
101 | # [[ -n "${{ steps.stack.outputs.extra-include-dirs }}" ]]
102 | # [[ -n "${{ steps.stack.outputs.extra-library-dirs }}" ]]
103 |
104 | [[ -n "${{ steps.stack.outputs.snapshot-pkg-db }}" ]]
105 | [[ -n "${{ steps.stack.outputs.local-pkg-db }}" ]]
106 | [[ -n "${{ steps.stack.outputs.global-pkg-db }}" ]]
107 | [[ -n "${{ steps.stack.outputs.ghc-package-path }}" ]]
108 | [[ -n "${{ steps.stack.outputs.snapshot-install-root }}" ]]
109 | [[ -n "${{ steps.stack.outputs.local-install-root }}" ]]
110 | [[ -n "${{ steps.stack.outputs.dist-dir }}" ]]
111 | [[ -n "${{ steps.stack.outputs.local-hpc-root }}" ]]
112 |
113 | test-generate:
114 | runs-on: ubuntu-latest
115 | steps:
116 | - uses: actions/checkout@v4
117 | - id: generate
118 | uses: ./generate-matrix
119 | with:
120 | working-directory: example
121 | outputs:
122 | stack-yamls: ${{ steps.generate.outputs.stack-yamls }}
123 |
124 | test-stack-yamls:
125 | needs: [dist, test-generate]
126 | runs-on: ubuntu-latest
127 |
128 | strategy:
129 | matrix:
130 | stack-yaml: ${{ fromJSON(needs.test-generate.outputs.stack-yamls) }}
131 | fail-fast: false
132 |
133 | steps:
134 | - uses: actions/checkout@v4
135 | - uses: actions/download-artifact@v4
136 | with:
137 | name: dist
138 | path: dist # overwrite dist/index.js
139 |
140 | - run: |
141 | if [[ -L '${{ matrix.stack-yaml }}' ]]; then
142 | echo "generate-matrix incorrectly included a symlink" >&2
143 | exit 1
144 | fi
145 | - uses: ./
146 | with:
147 | working-directory: example
148 | stack-arguments: --stack-yaml ${{ matrix.stack-yaml }}
149 |
150 | test-fails-on-error:
151 | needs: dist
152 | runs-on: ubuntu-latest
153 | steps:
154 | - uses: actions/checkout@v4
155 | - uses: actions/download-artifact@v4
156 | with:
157 | name: dist
158 | path: dist # overwrite dist/index.js
159 |
160 | - name: Should fail
161 | id: stack-action-step
162 | continue-on-error: true
163 | uses: ./
164 | with:
165 | working-directory: example
166 | stack-arguments: --resolver bad-resolver
167 | - name: Check failure
168 | if: steps.stack-action-step.outcome != 'failure'
169 | run: exit 1
170 |
--------------------------------------------------------------------------------
/.github/workflows/mergeabot.yml:
--------------------------------------------------------------------------------
1 | name: Mergeabot
2 |
3 | on:
4 | pull_request:
5 | schedule:
6 | - cron: "0 0 * * *"
7 |
8 | permissions:
9 | contents: write
10 | pull-requests: write
11 |
12 | jobs:
13 | mergeabot:
14 | runs-on: ubuntu-latest
15 | steps:
16 | # Use an app token so further workflows (e.g. release) are triggered
17 | - id: token
18 | uses: actions/create-github-app-token@v2
19 | with:
20 | app-id: ${{ vars.FRECKLE_AUTOMATION_APP_ID }}
21 | private-key: ${{ secrets.FRECKLE_AUTOMATION_PRIVATE_KEY }}
22 |
23 | - uses: freckle/mergeabot-action@v2
24 | with:
25 | quarantine-days: -1
26 | github-token: ${{ steps.token.outputs.token }}
27 |
--------------------------------------------------------------------------------
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | name: Release
2 |
3 | on:
4 | push:
5 | branches:
6 | - main
7 | - rc/*
8 | workflow_dispatch:
9 |
10 | jobs:
11 | release:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - id: token
15 | uses: actions/create-github-app-token@v2
16 | with:
17 | app-id: ${{ vars.FRECKLE_AUTOMATION_APP_ID }}
18 | private-key: ${{ secrets.FRECKLE_AUTOMATION_PRIVATE_KEY }}
19 |
20 | - uses: actions/checkout@v4
21 | with:
22 | token: ${{ steps.token.outputs.token }}
23 |
24 | - id: release
25 | uses: cycjimmy/semantic-release-action@v4
26 | with:
27 | extra_plugins: |
28 | @semantic-release/exec
29 | semantic-release-major-tag
30 | env:
31 | FORCE_COLOR: 1
32 | GITHUB_TOKEN: ${{ steps.token.outputs.token }}
33 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | lib
3 |
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | v20
2 |
--------------------------------------------------------------------------------
/.releaserc.yaml:
--------------------------------------------------------------------------------
1 | plugins:
2 | - "@semantic-release/commit-analyzer"
3 | - "@semantic-release/release-notes-generator"
4 | - - "@semantic-release/github"
5 | - successCommentCondition: false
6 |
7 | - "semantic-release-major-tag"
8 |
9 | # Update dist, in case Dependabot PRs merged without doing so
10 | - - "@semantic-release/exec"
11 | - prepareCmd: "yarn install && yarn run build"
12 |
13 | - - "@semantic-release/git"
14 | - assets: "dist/index.js"
15 | message: "chore(release): build dist"
16 |
17 | branches:
18 | - main
19 | - name: rc/*
20 | prerelease: '${name.replace(/^rc\//, "rc-")}'
21 |
--------------------------------------------------------------------------------
/.restyled.yaml:
--------------------------------------------------------------------------------
1 | restylers:
2 | - clang-format:
3 | enabled: false
4 | - jq:
5 | enabled: false # prefer prettier-json
6 | - prettier:
7 | include:
8 | - "src/**/*.ts"
9 | - whitespace:
10 | include:
11 | - "**/*"
12 | - "!dist/index.js"
13 | - "*"
14 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2021 Renaissance Learning Inc
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Stack Action
2 |
3 | GitHub Action to build and test a stack-based Haskell project.
4 |
5 | ## Usage
6 |
7 | ```yaml
8 | jobs:
9 | test:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: actions/checkout@v4
13 | - uses: freckle/stack-action@v5
14 | ```
15 |
16 | ## Notable Changes in v5
17 |
18 | As of version 5, the single `stack-arguments` input has been broken up into
19 | various, distinct `stack-[*-]arguments[-*]` inputs that are used in more
20 | specific ways. See the _Inputs_ section, or `action.yml` for documentation of
21 | the new options.
22 |
23 | The `fast` and `pedantic` inputs were removed. Use a ternary operator (see
24 | [Operators](https://docs.github.com/en/actions/learn-github-actions/expressions#operators))
25 | to pass a flag conditionally. Example:
26 |
27 | ```yaml
28 | stack-build-arguments: ${{ github.ref_name != 'main' && '--fast' || '' }} --pedantic
29 | ```
30 |
31 | ## Notable Changes in v4
32 |
33 | As of version 4, this action automatically handles caching. You do not need to
34 | use a separate `stack-cache-action` step any more.
35 |
36 | ## Notable Changes in v3
37 |
38 | Previous versions of this Action ran HLint and Weeder for you. We recommend
39 | doing that as separate actions now, so, as of `v3`, those options have been
40 | removed.
41 |
42 | Here is an example of running separate Actions:
43 |
44 | ```yaml
45 | jobs:
46 | test:
47 | # ...
48 | steps:
49 | - uses: actions/checkout@v4
50 | - id: stack
51 | uses: freckle/stack-action@v5
52 |
53 | # Weeder requires running in the same Job (to access .hie artifacts)
54 | - uses: freckle/weeder-action@v2
55 | with:
56 | ghc-version: ${{ steps.stack.outputs.compiler-version }}
57 |
58 | # HLint can be a distinct Job, possibly limited to changed files
59 | hlint:
60 | # ...
61 | steps:
62 | - uses: actions/checkout@v4
63 | - uses: haskell-actions/hlint-setup@v1
64 | - uses: haskell-actions/hlint-run@v2
65 | ```
66 |
67 |
68 |
69 | ## Inputs
70 |
71 | | name | description | required | default |
72 | | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | ------------------- |
73 | | `working-directory` |
Working directory for run commands
| `false` | `""` |
74 | | `test` | Whether to run tests
| `false` | `true` |
75 | | `color` | Whether to force --color=always
| `false` | `true` |
76 | | `stack-arguments` | Additional arguments for all top-level stack
command invocations.
| `false` | `""` |
77 | | `stack-query-arguments` | Additional arguments in stack query
invocations.
| `false` | `""` |
78 | | `stack-path-arguments` | Additional arguments in stack path
invocations.
| `false` | `""` |
79 | | `stack-setup-arguments` | Additional arguments in stack setup
invocations.
| `false` | `""` |
80 | | `stack-build-arguments` | Additional arguments for all stack build
invocations.
| `false` | `--fast --pedantic` |
81 | | `stack-build-arguments-dependencies` | Additional arguments passed after stack-build-arguments
in stack build
invocations on the Dependencies step.
| `false` | `""` |
82 | | `stack-build-arguments-build` | Additional arguments passed after stack-build-arguments
in stack build
invocations on the Build step.
| `false` | `""` |
83 | | `stack-build-arguments-test` | Additional arguments passed after stack-build-arguments
in stack build
invocations on the Test step.
| `false` | `""` |
84 | | `cache-prefix` | Prefix applied to all cache keys. This can be any value you like, but teams often use v{N}
and bump it to v{N+1}
when/if they need to explicitly bust caches.
| `false` | `""` |
85 | | `cache-save-always` | Save artifacts to the cache even if the build fails. This may speed up builds in subsequent runs at the expense of slightly-longer builds when a full cache-hit occurs. Since @v4.2.0
.
| `false` | `false` |
86 | | `on-dirty-files` | What to do if we find changes to the cabal or lock file after a build. Value can be warn
, or error
. Default is warn
.
| `false` | `warn` |
87 | | `install-stack` | Install stack, if necessary
| `false` | `true` |
88 | | `upgrade-stack` | Upgrade stack
| `false` | `true` |
89 | | `compiler-tools` | A list of packages to install as compiler tools, one per line. This is useful to do here rather than separate run
commands so that their installation is incorporated in the dependency cache. Since @v5.2.0
.
| `false` | `""` |
90 | | `stack-yaml` | Deprecated use env.STACK_YAML
or stack-arguments
instead.
| `false` | `""` |
91 |
92 |
93 |
94 | ## Outputs
95 |
96 | | name | description |
97 | | ----------------------- | ---------------------------------------------------------------------------- |
98 | | `compiler` | compiler.actual
value from stack query
|
99 | | `compiler-version` | The GHC version part of compiler
|
100 | | `snapshot-doc-root` | snapshot-doc-root
value from stack path
|
101 | | `local-doc-root` | local-doc-root
value from stack path
|
102 | | `local-hoogle-root` | local-hoogle-root
value from stack path
|
103 | | `stack-root` | stack-root
value from stack path
|
104 | | `project-root` | project-root
value from stack path
|
105 | | `config-location` | config-location
value from stack path
|
106 | | `bin-path` | bin-path
value from stack path
|
107 | | `programs` | programs
value from stack path
|
108 | | `compiler-exe` | compiler-exe
value from stack path
|
109 | | `compiler-bin` | compiler-bin
value from stack path
|
110 | | `compiler-tools-bin` | compiler-tools-bin
value from stack path
|
111 | | `local-bin` | local-bin
value from stack path
|
112 | | `extra-include-dirs` | extra-include-dirs
value from stack path
|
113 | | `extra-library-dirs` | extra-library-dirs
value from stack path
|
114 | | `snapshot-pkg-db` | snapshot-pkg-db
value from stack path
|
115 | | `local-pkg-db` | local-pkg-db
value from stack path
|
116 | | `global-pkg-db` | global-pkg-db
value from stack path
|
117 | | `ghc-package-path` | ghc-package-path
value from stack path
|
118 | | `snapshot-install-root` | snapshot-install-root
value from stack path
|
119 | | `local-install-root` | local-install-root
value from stack path
|
120 | | `dist-dir` | dist-dir
value from stack path
|
121 | | `local-hpc-root` | local-hpc-root
value from stack path
|
122 |
123 | ## Installing Compiler Tools
124 |
125 | The `compiler-tools` input can be used to install packages (with
126 | `--copy-compiler-tool`) as part of the _Dependencies_ step. The installed tools
127 | can be used by other parts of the build via `stack exec`, such as to reformat
128 | and upload coverage:
129 |
130 | ```yaml
131 | - id: stack
132 | uses: freckle/stack-action@v5
133 | with:
134 | compiler-tools: hpc-lcov
135 | stack-build-arguments: --coverage
136 |
137 | - run: stack --no-terminal exec -- hpc-lcov --file "$HPC_ROOT"/combined/all/all.tix
138 | env:
139 | HPC_ROOT: ${{ steps.stack.outputs.local-hpc-root }}
140 |
141 | - uses: codecov/codecov-action@v2
142 | with:
143 | files: ./lcov.info
144 | ```
145 |
146 | Doing it this way, vs a separate `run: stack install...`, means the building of
147 | these tools will be included in the dependencies cache.
148 |
149 | ## Generating a Build Matrix of `stack.yaml`s
150 |
151 | The following automatically discovers all files matching `stack*.yaml` and runs
152 | this action with each of them:
153 |
154 | ```yaml
155 | jobs:
156 | generate:
157 | runs-on: ubuntu-latest
158 | steps:
159 | - uses: actions/checkout@v4
160 | - id: generate
161 | uses: freckle/stack-action/generate-matrix@v5
162 | outputs:
163 | stack-yamls: ${{ steps.generate.outputs.stack-yamls }}
164 |
165 | test:
166 | needs: generate
167 | strategy:
168 | matrix:
169 | stack-yaml: ${{ fromJSON(needs.generate.outputs.stack-yamls) }}
170 | fail-fast: false
171 |
172 | runs-on: ubuntu-latest
173 | steps:
174 | - uses: actions/checkout@v4
175 | - uses: freckle/stack-action@v5
176 | with:
177 | stack-arguments: --stack-yaml ${{ matrix.stack-yaml }}
178 | ```
179 |
180 | See [generate-matrix/action.yml](./generate-matrix/action.yml) for more details.
181 | This has been available since version 4 of this action.
182 |
183 | ## Release
184 |
185 | To trigger a release (and update the `@v{major}` tag), merge a commit to `main`
186 | that follows [Conventional Commits][]. In short,
187 |
188 | - `fix:` to trigger a patch release,
189 | - `feat:` for minor, and
190 | - `feat!:` and major
191 |
192 | We don't enforce conventional commits generally (though you are free do so),
193 | it's only required if you want to trigger release.
194 |
195 | [conventional commits]: https://www.conventionalcommits.org/en/v1.0.0/#summary
196 |
197 | ---
198 |
199 | [LICENSE](./LICENSE)
200 |
--------------------------------------------------------------------------------
/action.yml:
--------------------------------------------------------------------------------
1 | name: Stack
2 | description: Build and test a stack-based Haskell project
3 | inputs:
4 | working-directory:
5 | description: |
6 | Working directory for run commands
7 | test:
8 | description: |
9 | Whether to run tests
10 | default: true
11 | color:
12 | description: |
13 | Whether to force `--color=always`
14 | default: true
15 | stack-arguments:
16 | description: |
17 | Additional arguments for all top-level `stack` command invocations.
18 | default: ""
19 | stack-query-arguments:
20 | description: |
21 | Additional arguments in `stack query` invocations.
22 | stack-path-arguments:
23 | description: |
24 | Additional arguments in ``stack path`` invocations.
25 | stack-setup-arguments:
26 | description: |
27 | Additional arguments in `stack setup` invocations.
28 | stack-build-arguments:
29 | description: |
30 | Additional arguments for all `stack build` invocations.
31 | default: "--fast --pedantic"
32 | stack-build-arguments-dependencies:
33 | description: |
34 | Additional arguments passed after `stack-build-arguments` in `stack build`
35 | invocations on the _Dependencies_ step.
36 | stack-build-arguments-build:
37 | description: |
38 | Additional arguments passed after `stack-build-arguments` in `stack build`
39 | invocations on the _Build_ step.
40 | stack-build-arguments-test:
41 | description: |
42 | Additional arguments passed after `stack-build-arguments` in `stack build`
43 | invocations on the _Test_ step.
44 | cache-prefix:
45 | description: |
46 | Prefix applied to all cache keys. This can be any value you like, but
47 | teams often use `v{N}` and bump it to `v{N+1}` when/if they need to
48 | explicitly bust caches.
49 | cache-save-always:
50 | description: |
51 | Save artifacts to the cache even if the build fails. This may speed up
52 | builds in subsequent runs at the expense of slightly-longer builds when a
53 | full cache-hit occurs. Since `@v4.2.0`.
54 | default: false
55 | on-dirty-files:
56 | description: |
57 | What to do if we find changes to the cabal or lock file after a build.
58 | Value can be `warn`, or `error`. Default is `warn`.
59 | default: warn
60 | install-stack:
61 | description: |
62 | Install stack, if necessary
63 | default: true
64 | upgrade-stack:
65 | description: |
66 | Upgrade stack
67 | default: true
68 | compiler-tools:
69 | description: |
70 | A list of packages to install as compiler tools, one per line. This is
71 | useful to do here rather than separate `run` commands so that their
72 | installation is incorporated in the dependency cache. Since `@v5.2.0`.
73 | stack-yaml:
74 | description: |
75 | **Deprecated** use `env.STACK_YAML` or `stack-arguments` instead.
76 | runs:
77 | using: "node20"
78 | main: "dist/index.js"
79 |
--------------------------------------------------------------------------------
/example/.gitignore:
--------------------------------------------------------------------------------
1 | .stack-work
2 |
--------------------------------------------------------------------------------
/example/example.cabal:
--------------------------------------------------------------------------------
1 | cabal-version: 1.12
2 |
3 | -- This file has been generated from package.yaml by hpack version 0.37.0.
4 | --
5 | -- see: https://github.com/sol/hpack
6 |
7 | name: example
8 | version: 0.0.0.0
9 | build-type: Simple
10 |
11 | library
12 | exposed-modules:
13 | Foo
14 | other-modules:
15 | Paths_example
16 | hs-source-dirs:
17 | src
18 | build-depends:
19 | base
20 | default-language: Haskell2010
21 |
--------------------------------------------------------------------------------
/example/hie.yaml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/freckle/stack-action/29f75f8eea896f2259d9a98c350203ed8aad4938/example/hie.yaml
--------------------------------------------------------------------------------
/example/package.yaml:
--------------------------------------------------------------------------------
1 | name: example
2 | version: 0.0.0.0
3 | library:
4 | source-dirs: src
5 | dependencies:
6 | - base
7 |
--------------------------------------------------------------------------------
/example/src/Foo.hs:
--------------------------------------------------------------------------------
1 | module Foo where
2 |
3 | data Foo = Foo
4 |
--------------------------------------------------------------------------------
/example/stack-link.yaml:
--------------------------------------------------------------------------------
1 | ./stack.yaml
--------------------------------------------------------------------------------
/example/stack-nightly.yaml:
--------------------------------------------------------------------------------
1 | resolver: nightly-2022-03-30
2 |
--------------------------------------------------------------------------------
/example/stack-nightly.yaml.lock:
--------------------------------------------------------------------------------
1 | # This file was autogenerated by Stack.
2 | # You should not edit this file by hand.
3 | # For more information, please see the documentation at:
4 | # https://docs.haskellstack.org/en/stable/lock_files
5 |
6 | packages: []
7 | snapshots:
8 | - completed:
9 | size: 539378
10 | url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/nightly/2022/3/30.yaml
11 | sha256: 745431a4c5b78cc93d81e99b2253a1e0eacd4f94e00cf17dab7cc14e665332e3
12 | original: nightly-2022-03-30
13 |
--------------------------------------------------------------------------------
/example/stack.yaml:
--------------------------------------------------------------------------------
1 | resolver: lts-18.3
2 |
--------------------------------------------------------------------------------
/example/stack.yaml.lock:
--------------------------------------------------------------------------------
1 | # This file was autogenerated by Stack.
2 | # You should not edit this file by hand.
3 | # For more information, please see the documentation at:
4 | # https://docs.haskellstack.org/en/stable/lock_files
5 |
6 | packages: []
7 | snapshots:
8 | - completed:
9 | size: 585603
10 | url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/18/3.yaml
11 | sha256: 694573e96dca34db5636edb1fe6c96bb233ca0f9fb96c1ead1671cdfa9bd73e9
12 | original: lts-18.3
13 |
--------------------------------------------------------------------------------
/generate-matrix/action.yml:
--------------------------------------------------------------------------------
1 | name: Generate Matrix
2 | description: Sub-action to generate a matrix of stack-yamls
3 | inputs:
4 | working-directory:
5 | description: "Working directory for run commands"
6 | required: true
7 | default: .
8 | find-options:
9 | description: "Arguments to find(1) stack-yaml files"
10 | required: true
11 | default: "-type f -maxdepth 1 -name 'stack*.yaml'"
12 | outputs:
13 | stack-yamls:
14 | description: Version-sorted list of all files matching stack*.yaml
15 | value: ${{ steps.generate.outputs.stack-yamls }}
16 | runs:
17 | using: composite
18 | steps:
19 | - id: generate
20 | name: Generate
21 | shell: bash
22 | working-directory: ${{ inputs.working-directory }}
23 | run: |
24 | {
25 | echo 'stack-yamls<>"$GITHUB_OUTPUT"
29 |
--------------------------------------------------------------------------------
/jest.config.ts:
--------------------------------------------------------------------------------
1 | import { createDefaultPreset, type JestConfigWithTsJest } from "ts-jest";
2 |
3 | const presetConfig = createDefaultPreset({
4 | isolatedModules: true,
5 | });
6 |
7 | const jestConfig: JestConfigWithTsJest = {
8 | ...presetConfig,
9 | resetMocks: true,
10 | testEnvironment: "node",
11 | };
12 |
13 | export default jestConfig;
14 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "stack-action",
3 | "version": "0.0.0",
4 | "description": "Build and test stack-based Haskell projects",
5 | "main": "lib/main.js",
6 | "scripts": {
7 | "build": "tsc && ncc build lib/main.js && sed -i 's/\\x0D$//' ./dist/index.js",
8 | "format": "prettier --write \"**/*.ts\"",
9 | "format-check": "prettier --check \"**/*.ts\"",
10 | "test": "jest",
11 | "readme": "npx action-docs -u && prettier --write README.md"
12 | },
13 | "repository": {
14 | "type": "git",
15 | "url": "git+https://github.com/freckle/stack-action.git"
16 | },
17 | "author": "Freckle",
18 | "license": "MIT",
19 | "dependencies": {
20 | "@actions/cache": "^4.0.3",
21 | "@actions/core": "^1.11.1",
22 | "@actions/exec": "^1.1.0",
23 | "@actions/glob": "^0.5.0",
24 | "js-yaml": "^4.1.0",
25 | "shellwords-ts": "^3.0.1"
26 | },
27 | "devDependencies": {
28 | "@types/jest": "^29.5.14",
29 | "@types/js-yaml": "^4.0.5",
30 | "@types/node": "^22.14.1",
31 | "@vercel/ncc": "^0.38.3",
32 | "action-docs": "^2.5.1",
33 | "jest": "^29.7.0",
34 | "prettier": "^3.5.3",
35 | "ts-jest": "^29.3.2",
36 | "ts-node": "^10.9.2",
37 | "typescript": "^5.8.3"
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3 | "extends": [
4 | "local>freckle/renovate-config"
5 | ],
6 | "minimumReleaseAge": "0 days"
7 | }
8 |
--------------------------------------------------------------------------------
/src/dirty-files.test.ts:
--------------------------------------------------------------------------------
1 | import { parseGitStatus, isInterestingFile } from "./dirty-files";
2 |
3 | describe("parseGitStatus", () => {
4 | test("parse file name, and filters untracked", () => {
5 | const paths = parseGitStatus(
6 | [
7 | "A staged-file.rb",
8 | " M action.yml",
9 | " M src/inputs.ts",
10 | "?? src/new-file.ts",
11 | " M src/path with spaces.md",
12 | ].join("\n"),
13 | );
14 |
15 | expect(paths).toEqual([
16 | "staged-file.rb",
17 | "action.yml",
18 | "src/inputs.ts",
19 | "src/path with spaces.md",
20 | ]);
21 | });
22 |
23 | const empties = [
24 | ["empty", ""],
25 | ["newline", "\n"],
26 | ["spaces", " "],
27 | ["spaces+newline", " \n"],
28 | ];
29 |
30 | test.each(empties)("handles %s as no paths", (_arg, str) => {
31 | expect(parseGitStatus(str)).toEqual([]);
32 | });
33 | });
34 |
35 | describe("isInterestingFile", () => {
36 | const interesting = [
37 | "foo.cabal",
38 | "bar.cabal",
39 | "stack.yaml.lock",
40 | "stack-lts20.yaml.lock",
41 | "hie.yaml",
42 | "example/hie.yaml",
43 | ];
44 |
45 | test.each(interesting)("considers %p interesting", (path) => {
46 | expect(isInterestingFile(path)).toBe(true);
47 | });
48 |
49 | const uninteresting = [
50 | "some-file.md",
51 | "other file.txt",
52 | "foo.cabal.lock",
53 | "foo.yaml.lock2",
54 | "routhie.yaml",
55 | ];
56 |
57 | test.each(uninteresting)("considers %p uninteresting", (path) => {
58 | expect(isInterestingFile(path)).toBe(false);
59 | });
60 | });
61 |
--------------------------------------------------------------------------------
/src/dirty-files.ts:
--------------------------------------------------------------------------------
1 | import * as core from "@actions/core";
2 | import * as exec from "@actions/exec";
3 |
4 | export type OnDirtyFiles = "warn" | "error";
5 |
6 | export function parseOnDirtyFiles(input: string): OnDirtyFiles {
7 | switch (input) {
8 | case "warn":
9 | case "error":
10 | return input as OnDirtyFiles;
11 | default:
12 | throw new Error(
13 | `Invalid on-dirty-files, must be warn or error, saw: ${input}`,
14 | );
15 | }
16 | }
17 |
18 | export async function checkDirtyFiles(onDirtyFiles: OnDirtyFiles) {
19 | const stdout = await readGitStatus();
20 | const paths = parseGitStatus(stdout).filter(isInterestingFile);
21 |
22 | if (paths.length === 0) {
23 | return;
24 | }
25 |
26 | const message = `Build caused changes to ${paths.join(", ")}`;
27 |
28 | switch (onDirtyFiles) {
29 | case "warn":
30 | core.warning(message);
31 | break;
32 | case "error":
33 | throw new Error(message);
34 | }
35 | }
36 |
37 | async function readGitStatus(): Promise {
38 | let stdout = "";
39 |
40 | const options: exec.ExecOptions = {
41 | listeners: {
42 | stdout: (data: Buffer) => {
43 | stdout += data.toString();
44 | },
45 | },
46 | ignoreReturnCode: true,
47 | };
48 |
49 | await exec.exec("git", ["status", "--porcelain"], options);
50 |
51 | return stdout;
52 | }
53 |
54 | // Exported for testing
55 | export function parseGitStatus(stdout: string): string[] {
56 | return stdout
57 | .split("\n")
58 | .filter((path) => {
59 | // We don't care about untracked files because users may be choosing not
60 | // to commit generated files -- in which case it showing up here is
61 | // expected.
62 | return !path.startsWith("??");
63 | })
64 | .map((path) => {
65 | // Drop leading space, split on space, drop first column and rejoin
66 | return path.replace(/^\s*/, "").split(/\s+/).slice(1).join(" ");
67 | })
68 | .filter((path) => {
69 | return path.trim() !== "";
70 | });
71 | }
72 |
73 | const INTERESTING_REGEXPS: RegExp[] = [
74 | /^.*\.cabal$/,
75 | /^.*\.yaml\.lock$/,
76 | /^(.*\/)?hie\.yaml$/,
77 | ];
78 |
79 | // Exported for testing
80 | export function isInterestingFile(path: string): boolean {
81 | return INTERESTING_REGEXPS.some((re, _index, _array) => {
82 | return path.match(re);
83 | });
84 | }
85 |
--------------------------------------------------------------------------------
/src/envsubst.test.ts:
--------------------------------------------------------------------------------
1 | import { envsubst } from "./envsubst";
2 |
3 | const HOME = process.env.HOME;
4 |
5 | describe("envsubst", () => {
6 | test("known variables are replaced", () => {
7 | expect(envsubst("Home is $HOME.")).toEqual(`Home is ${HOME}.`);
8 | });
9 |
10 | test("known variables with braces are replaced", () => {
11 | expect(envsubst("Home is ${HOME}.")).toEqual(`Home is ${HOME}.`);
12 | });
13 |
14 | test("unknown variables are replaced by whitespace", () => {
15 | expect(envsubst("Home is $XNOPE.")).toEqual("Home is .");
16 | });
17 |
18 | test("unknown variables with braces are replaced by whitespace", () => {
19 | expect(envsubst("Home is ${XNOPE}.")).toEqual("Home is .");
20 | });
21 |
22 | test("invalid braces are not replaced", () => {
23 | expect(envsubst("Home is ${ HOME}.")).toEqual("Home is ${ HOME}.");
24 | expect(envsubst("Home is ${HOME }.")).toEqual("Home is ${HOME }.");
25 | });
26 |
27 | test("mismatched left brace is not replaced", () => {
28 | expect(envsubst("Home is ${HOME.")).toEqual("Home is ${HOME.");
29 | });
30 |
31 | test("mismatched right brace is replaced before the brace", () => {
32 | expect(envsubst("Home is $HOME}.")).toEqual(`Home is ${HOME}}.`);
33 | });
34 | });
35 |
--------------------------------------------------------------------------------
/src/envsubst.ts:
--------------------------------------------------------------------------------
1 | const REGEXP = new RegExp("\\$([A-Z_]+)|\\$\\{([A-Z_]+)\\}");
2 |
3 | function replacer(_match: string, p1: string, p2: string): string {
4 | return process.env[p2 ?? p1] ?? "";
5 | }
6 |
7 | /* replace environment variables in an input string, like envsubst(1) */
8 | export function envsubst(str: string): string {
9 | return str.replace(REGEXP, replacer);
10 | }
11 |
--------------------------------------------------------------------------------
/src/get-cache-keys.test.ts:
--------------------------------------------------------------------------------
1 | import { getCacheKeys } from "./get-cache-keys";
2 |
3 | test("getCacheKeys", () => {
4 | const keys = getCacheKeys(["prefix-os-compiler", "package", "source"]);
5 |
6 | expect(keys.primaryKey).toEqual("prefix-os-compiler-package-source");
7 | expect(keys.restoreKeys).toEqual([
8 | "prefix-os-compiler-package-",
9 | "prefix-os-compiler-",
10 | ]);
11 | });
12 |
--------------------------------------------------------------------------------
/src/get-cache-keys.ts:
--------------------------------------------------------------------------------
1 | export type CacheKeys = {
2 | primaryKey: string;
3 | restoreKeys: string[];
4 | };
5 |
6 | export function getCacheKeys(parts: string[]): CacheKeys {
7 | const primaryKey = parts.join("-");
8 | const restoreKeys: string[] = [];
9 |
10 | let restoreParts = parts.slice(0, -1);
11 |
12 | while (restoreParts.length > 0) {
13 | restoreKeys.push(`${restoreParts.join("-")}-`);
14 | restoreParts = restoreParts.slice(0, -1);
15 | }
16 |
17 | return { primaryKey, restoreKeys };
18 | }
19 |
--------------------------------------------------------------------------------
/src/hash-project.ts:
--------------------------------------------------------------------------------
1 | import * as path from "path";
2 | import { hashFiles } from "@actions/glob";
3 |
4 | export const ALL_SOURCES_PATTERNS = `**\n!**${path.sep}.stack-work\n!.git\n`;
5 | export const BUILD_FILES_PATTERNS = `**${path.sep}package.yaml\n**${path.sep}*.cabal\n`;
6 |
7 | export type Hashes = {
8 | snapshot: string;
9 | package: string;
10 | sources: string;
11 | };
12 |
13 | export async function hashProject(stackYaml: string): Promise {
14 | return {
15 | snapshot: await hashFiles(stackYaml),
16 | package: await hashFiles(BUILD_FILES_PATTERNS),
17 | sources: await hashFiles(ALL_SOURCES_PATTERNS),
18 | };
19 | }
20 |
--------------------------------------------------------------------------------
/src/hie.ts:
--------------------------------------------------------------------------------
1 | import * as fs from "fs";
2 | import * as core from "@actions/core";
3 |
4 | import { StackCLI } from "./stack-cli";
5 |
6 | export const HIE_YAML: string = "hie.yaml";
7 |
8 | export class GenHIE {
9 | public readonly path: string;
10 |
11 | private readonly stack: StackCLI;
12 | private readonly exists: boolean;
13 |
14 | constructor(stack: StackCLI, path?: string) {
15 | this.stack = stack;
16 | this.path = path ? path : HIE_YAML;
17 | this.exists = fs.existsSync(this.path);
18 | }
19 |
20 | async install(): Promise {
21 | if (this.exists) {
22 | try {
23 | await this.stack.installCompilerTools(["implicit-hie"]);
24 | } catch {
25 | core.warning(
26 | `Failed to install implicit-hie, ${this.path} will not be maintained`,
27 | );
28 | }
29 | }
30 | }
31 |
32 | async generate(): Promise {
33 | if (!this.exists) {
34 | core.info(`Skipping, ${this.path} does not exist`);
35 | return;
36 | }
37 |
38 | const installed = await this.stack.which("gen-hie");
39 |
40 | if (!installed) {
41 | core.info(`Skipping, implicit-hie was not successfully installed`);
42 | return;
43 | }
44 |
45 | core.info(`gen-hie --stack > ${this.path}`);
46 | const yaml = await this.stack.read(["exec", "--", "gen-hie", "--stack"]);
47 | fs.writeFileSync(this.path, yaml);
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/src/inputs.ts:
--------------------------------------------------------------------------------
1 | import * as core from "@actions/core";
2 | import * as Shellwords from "shellwords-ts";
3 | import { envsubst } from "./envsubst";
4 | import { type OnDirtyFiles, parseOnDirtyFiles } from "./dirty-files";
5 |
6 | export type Inputs = {
7 | workingDirectory: string | null;
8 | test: boolean;
9 | color: boolean;
10 | stackArguments: string[];
11 | stackSetupArguments: string[];
12 | stackQueryArguments: string[];
13 | stackBuildArgumentsDependencies: string[];
14 | stackBuildArgumentsBuild: string[];
15 | stackBuildArgumentsTest: string[];
16 | cachePrefix: string;
17 | cacheSaveAlways: boolean;
18 | onDirtyFiles: OnDirtyFiles;
19 | installStack: boolean;
20 | upgradeStack: boolean;
21 | compilerTools: string[];
22 |
23 | // Deprecated
24 | stackYaml: string | null;
25 | };
26 |
27 | export function getInputs(): Inputs {
28 | const getBuildArguments = (step: string): string[] => {
29 | return getShellWordsInput("stack-build-arguments").concat(
30 | getShellWordsInput(`stack-build-arguments-${step}`),
31 | );
32 | };
33 |
34 | const rawOnDirtyFiles = core.getInput("on-dirty-files", { required: true });
35 |
36 | return {
37 | workingDirectory: getInputDefault("working-directory", null),
38 | test: core.getBooleanInput("test"),
39 | color: core.getBooleanInput("color"),
40 | stackArguments: getShellWordsInput("stack-arguments"),
41 | stackSetupArguments: getShellWordsInput("stack-setup-arguments"),
42 | stackQueryArguments: getShellWordsInput("stack-query-arguments"),
43 | stackBuildArgumentsDependencies: getBuildArguments("dependencies"),
44 | stackBuildArgumentsBuild: getBuildArguments("build"),
45 | stackBuildArgumentsTest: getBuildArguments("test"),
46 | cachePrefix: core.getInput("cache-prefix"),
47 | cacheSaveAlways: core.getBooleanInput("cache-save-always"),
48 | onDirtyFiles: parseOnDirtyFiles(rawOnDirtyFiles),
49 | installStack: core.getBooleanInput("install-stack"),
50 | upgradeStack: core.getBooleanInput("upgrade-stack"),
51 | compilerTools: core.getMultilineInput("compiler-tools"),
52 | stackYaml: getInputDefault("stack-yaml", null),
53 | };
54 | }
55 |
56 | function getInputDefault(name: string, d: T): string | T {
57 | const raw = core.getInput(name, { trimWhitespace: true });
58 | return raw === "" ? d : raw;
59 | }
60 |
61 | function getShellWordsInput(
62 | name: string,
63 | options?: core.InputOptions,
64 | ): string[] {
65 | const raw = core.getMultilineInput(name, options).join(" ");
66 | return Shellwords.split(raw).map(envsubst);
67 | }
68 |
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import * as core from "@actions/core";
2 |
3 | import { checkDirtyFiles } from "./dirty-files";
4 | import { StackCLI } from "./stack-cli";
5 | import { getCacheKeys } from "./get-cache-keys";
6 | import { hashProject } from "./hash-project";
7 | import { getInputs } from "./inputs";
8 | import { readStackYamlSync, getStackDirectories } from "./stack-yaml";
9 | import { DEFAULT_CACHE_OPTIONS, withCache } from "./with-cache";
10 | import { GenHIE } from "./hie";
11 |
12 | async function run() {
13 | try {
14 | const inputs = getInputs();
15 |
16 | if (inputs.color) {
17 | inputs.stackArguments.unshift("--color=always");
18 | }
19 |
20 | if (inputs.workingDirectory) {
21 | core.debug(`Change directory: ${inputs.workingDirectory}`);
22 | process.chdir(inputs.workingDirectory);
23 | }
24 |
25 | if (inputs.stackYaml) {
26 | core.warning(
27 | "inputs.stack-yaml is deprecated. Set env.STACK_YAML or use inputs.stack-arguments instead.",
28 | );
29 |
30 | // Maintain original behavior for now
31 | inputs.stackArguments.unshift(inputs.stackYaml);
32 | inputs.stackArguments.unshift("--stack-yaml");
33 | }
34 |
35 | const stack = new StackCLI(inputs.stackArguments, core.isDebug());
36 | const genHIE = new GenHIE(stack);
37 |
38 | await core.group("Install/upgrade stack", async () => {
39 | const installed = await stack.installed();
40 |
41 | if (installed) {
42 | if (inputs.upgradeStack) {
43 | core.info("Upgrading stack");
44 | await stack.upgrade();
45 | }
46 | } else {
47 | if (inputs.installStack) {
48 | core.info("Installing stack");
49 | await stack.install();
50 | } else {
51 | throw new Error(
52 | [
53 | "The executable stack is not present on $PATH",
54 | "Make sure it is installed in a preceding step, or use",
55 | "`install-stack: true` to have it installed for you.",
56 | ].join("\n"),
57 | );
58 | }
59 | }
60 | });
61 |
62 | const hashes = await core.group("Calculate hashes", async () => {
63 | const hashes = await hashProject(stack.config);
64 | core.info(`Snapshot: ${hashes.snapshot}`);
65 | core.info(`Packages: ${hashes.package}`);
66 | core.info(`Sources: ${hashes.sources}`);
67 | return hashes;
68 | });
69 |
70 | const { stackYaml, stackDirectories } = await core.group(
71 | "Determine stack directories",
72 | async () => {
73 | const stackYaml = readStackYamlSync(stack.config);
74 | const stackDirectories = await getStackDirectories(stackYaml, stack);
75 |
76 | core.info(
77 | [
78 | `Stack root: ${stackDirectories.stackRoot}`,
79 | `Stack programs: ${stackDirectories.stackPrograms}`,
80 | `Stack works:\n - ${stackDirectories.stackWorks.join("\n - ")}`,
81 | ].join("\n"),
82 | );
83 |
84 | return { stackYaml, stackDirectories };
85 | },
86 | );
87 |
88 | // Can't use compiler here because stack-query requires setting up the Stack
89 | // environment, installing GHC, etc. And we never want to do that outside of
90 | // caching. Use the resolver itself instead. This will use either --resolver
91 | // from stack-arguments, if given, or fall back to reading resolver from the
92 | // stack.yaml file in use.
93 | const cachePrefix = `${inputs.cachePrefix}${process.platform}/${
94 | stack.resolver ?? stackYaml.resolver
95 | }`;
96 |
97 | await core.group("Setup and install dependencies", async () => {
98 | const { stackRoot, stackPrograms, stackWorks } = stackDirectories;
99 |
100 | await withCache(
101 | [stackRoot, stackPrograms].concat(stackWorks),
102 | getCacheKeys([`${cachePrefix}/deps`, hashes.snapshot, hashes.package]),
103 | async () => {
104 | await stack.setup(inputs.stackSetupArguments);
105 | await stack.buildDependencies(inputs.stackBuildArgumentsDependencies);
106 | await stack.installCompilerTools(inputs.compilerTools);
107 | await genHIE.install();
108 | },
109 | {
110 | ...DEFAULT_CACHE_OPTIONS,
111 | saveOnError: inputs.cacheSaveAlways,
112 | },
113 | );
114 | });
115 |
116 | await core.group("Build", async () => {
117 | await withCache(
118 | stackDirectories.stackWorks,
119 | getCacheKeys([
120 | `${cachePrefix}/build`,
121 | hashes.snapshot,
122 | hashes.package,
123 | hashes.sources,
124 | ]),
125 | async () => {
126 | await stack.buildNoTest(inputs.stackBuildArgumentsBuild);
127 | },
128 | {
129 | ...DEFAULT_CACHE_OPTIONS,
130 | skipOnHit: false, // always Build
131 | saveOnError: inputs.cacheSaveAlways,
132 | },
133 | );
134 | });
135 |
136 | await core.group(`Maintain ${genHIE.path}`, async () => {
137 | await genHIE.generate();
138 | });
139 |
140 | await core.group("Check for dirty files", async () => {
141 | await checkDirtyFiles(inputs.onDirtyFiles);
142 | });
143 |
144 | if (inputs.test) {
145 | await core.group("Test", async () => {
146 | await stack.buildTest(inputs.stackBuildArgumentsTest);
147 | });
148 | }
149 |
150 | await core.group("Set outputs", async () => {
151 | const stackQuery = await stack.query();
152 | const compiler = stackQuery.compiler.actual;
153 | const compilerVersion = compiler.replace(/^ghc-/, "");
154 |
155 | core.info("Setting query-compiler outputs");
156 | core.setOutput("compiler", compiler);
157 | core.setOutput("compiler-version", compilerVersion);
158 |
159 | const stackPath = await stack.path();
160 |
161 | core.info("Setting stack-path outputs");
162 | for (const k in stackPath) {
163 | const v = stackPath[k];
164 | core.debug(`Setting stack-path output: ${k}=${v}`);
165 | core.setOutput(k, v);
166 | }
167 | });
168 | // https://github.com/actions/cache/blob/0c45773b623bea8c8e75f6c82b208c3cf94ea4f9/src/restoreImpl.ts#L99-L106
169 | process.exit(0);
170 | } catch (error) {
171 | if (error instanceof Error) {
172 | core.error(error);
173 | core.setFailed(error.message);
174 | } else if (typeof error === "string") {
175 | core.error(error);
176 | core.setFailed(error);
177 | } else {
178 | core.error("Non-Error exception");
179 | core.setFailed("Non-Error exception");
180 | }
181 | // https://github.com/actions/cache/blob/0c45773b623bea8c8e75f6c82b208c3cf94ea4f9/src/restoreImpl.ts#L88
182 | process.exit(1);
183 | }
184 | }
185 |
186 | run();
187 |
--------------------------------------------------------------------------------
/src/parse-stack-path.test.ts:
--------------------------------------------------------------------------------
1 | import { parseStackPath } from "./parse-stack-path";
2 |
3 | const EXAMPLE = [
4 | "snapshot-doc-root: /home/patrick/.stack/snapshots/x86_64-linux-tinfo6/0dd02c1d8a380045321779c4567c2aa8873910743eac342f72d56f3d26881028/9.2.7/doc",
5 | "local-doc-root: /home/patrick/code/freckle/megarepo/backend/.stack-work/install/x86_64-linux-tinfo6/0dd02c1d8a380045321779c4567c2aa8873910743eac342f72d56f3d26881028/9.2.7/doc",
6 | "local-hoogle-root: /home/patrick/code/freckle/megarepo/backend/.stack-work/hoogle/x86_64-linux-tinfo6/0dd02c1d8a380045321779c4567c2aa8873910743eac342f72d56f3d26881028/9.2.7",
7 | "stack-root: /home/patrick/.stack",
8 | "global-config: /home/patrick/.stack/config.yaml",
9 | "project-root: /home/patrick/code/freckle/megarepo/backend",
10 | "config-location: /home/patrick/code/freckle/megarepo/backend/stack.yaml",
11 | "bin-path: /home/patrick/.stack/snapshots/x86_64-linux-tinfo6/7eed7816433ae7cc7801479e88c42a76f77602f2a5c39ec077837318841a4e18/9.2.7/bin:/home/patrick/.stack/compiler-tools/x86_64-linux-tinfo6/ghc-9.2.7/bin:/home/patrick/.stack/programs/x86_64-linux/ghc-tinfo6-9.2.7/bin:/home/patrick/.nvm/versions/node/v16.13.1/bin:/home/patrick/.local/bin:/home/patrick/.local/share/gem/ruby/3.0.0/bin:/home/patrick/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl",
12 | "programs: /home/patrick/.stack/programs/x86_64-linux",
13 | "compiler-exe: /home/patrick/.stack/programs/x86_64-linux/ghc-tinfo6-9.2.7/bin/ghc-9.2.7",
14 | "compiler-bin: /home/patrick/.stack/programs/x86_64-linux/ghc-tinfo6-9.2.7/bin",
15 | "compiler-tools-bin: /home/patrick/.stack/compiler-tools/x86_64-linux-tinfo6/ghc-9.2.7/bin",
16 | "local-bin: /home/patrick/.local/bin",
17 | "extra-include-dirs:",
18 | "extra-library-dirs:",
19 | "snapshot-pkg-db: /home/patrick/.stack/snapshots/x86_64-linux-tinfo6/7eed7816433ae7cc7801479e88c42a76f77602f2a5c39ec077837318841a4e18/9.2.7/pkgdb",
20 | "local-pkg-db: /home/patrick/code/freckle/megarepo/backend/.stack-work/install/x86_64-linux-tinfo6/7eed7816433ae7cc7801479e88c42a76f77602f2a5c39ec077837318841a4e18/9.2.7/pkgdb",
21 | "global-pkg-db: /home/patrick/.stack/programs/x86_64-linux/ghc-tinfo6-9.2.7/lib/ghc-9.2.7/package.conf.d",
22 | "ghc-package-path: /home/patrick/code/freckle/megarepo/backend/.stack-work/install/x86_64-linux-tinfo6/7eed7816433ae7cc7801479e88c42a76f77602f2a5c39ec077837318841a4e18/9.2.7/pkgdb:/home/patrick/.stack/snapshots/x86_64-linux-tinfo6/7eed7816433ae7cc7801479e88c42a76f77602f2a5c39ec077837318841a4e18/9.2.7/pkgdb:/home/patrick/.stack/programs/x86_64-linux/ghc-tinfo6-9.2.7/lib/ghc-9.2.7/package.conf.d",
23 | "snapshot-install-root: /home/patrick/.stack/snapshots/x86_64-linux-tinfo6/7eed7816433ae7cc7801479e88c42a76f77602f2a5c39ec077837318841a4e18/9.2.7",
24 | "local-install-root: /home/patrick/code/freckle/megarepo/backend/.stack-work/install/x86_64-linux-tinfo6/7eed7816433ae7cc7801479e88c42a76f77602f2a5c39ec077837318841a4e18/9.2.7",
25 | "dist-dir: .stack-work/dist/x86_64-linux-tinfo6/ghc-9.2.7",
26 | "local-hpc-root: /home/patrick/code/freckle/megarepo/backend/.stack-work/install/x86_64-linux-tinfo6/7eed7816433ae7cc7801479e88c42a76f77602f2a5c39ec077837318841a4e18/9.2.7/hpc",
27 | ].join("\n");
28 |
29 | test("parseStackPath", () => {
30 | const stackPath = parseStackPath(EXAMPLE);
31 |
32 | // Test one non-null and one nullable
33 | expect(stackPath["stack-root"]).toBe("/home/patrick/.stack");
34 | expect(stackPath["extra-include-dirs"]).toBeNull();
35 | });
36 |
--------------------------------------------------------------------------------
/src/parse-stack-path.ts:
--------------------------------------------------------------------------------
1 | import * as yaml from "js-yaml";
2 |
3 | export type StackPath = {
4 | [key: string]: string | null;
5 | };
6 |
7 | export function parseStackPath(stdout: string): StackPath {
8 | return yaml.load(stdout) as StackPath;
9 | }
10 |
--------------------------------------------------------------------------------
/src/parse-stack-query.test.ts:
--------------------------------------------------------------------------------
1 | import { parseStackQuery } from "./parse-stack-query";
2 |
3 | const EXAMPLE = [
4 | "compiler:",
5 | " actual: ghc-9.2.7",
6 | " wanted: ghc-9.2.7",
7 | "locals:",
8 | " core:",
9 | " path: /home/patrick/code/freckle/megarepo/backend/core/",
10 | " version: 0.0.0",
11 | " entities:",
12 | " path: /home/patrick/code/freckle/megarepo/backend/entities/",
13 | " version: 0.0.0",
14 | " fancy-api:",
15 | " path: /home/patrick/code/freckle/megarepo/backend/fancy-api/",
16 | " version: 0.0.0",
17 | ].join("\n");
18 |
19 | test("parseStackQuery", () => {
20 | const stackQuery = parseStackQuery(EXAMPLE);
21 | expect(stackQuery.compiler.actual).toBe("ghc-9.2.7");
22 | expect(stackQuery.compiler.wanted).toBe("ghc-9.2.7");
23 | });
24 |
--------------------------------------------------------------------------------
/src/parse-stack-query.ts:
--------------------------------------------------------------------------------
1 | import * as yaml from "js-yaml";
2 |
3 | export type StackQuery = {
4 | compiler: Compiler;
5 | };
6 |
7 | export type Compiler = {
8 | actual: string;
9 | wanted: string;
10 | };
11 |
12 | export function parseStackQuery(stdout: string): StackQuery {
13 | return yaml.load(stdout) as StackQuery;
14 | }
15 |
--------------------------------------------------------------------------------
/src/stack-cli.test.ts:
--------------------------------------------------------------------------------
1 | import * as exec from "@actions/exec";
2 |
3 | import { StackCLI } from "./stack-cli";
4 |
5 | jest.spyOn(exec, "exec");
6 |
7 | describe("StackCLI", () => {
8 | test("Respects --resolver given", async () => {
9 | const stackCLI = new StackCLI(["--resolver", "lts"], false);
10 |
11 | await stackCLI.setup([]);
12 |
13 | expect(exec.exec).toHaveBeenCalledWith(
14 | "stack",
15 | ["--resolver", "lts", "setup"],
16 | undefined, // ExecOptions
17 | );
18 | });
19 |
20 | test("Adds --resolver nightly", async () => {
21 | const stackCLI = new StackCLI(
22 | ["--stack-yaml", "sub/stack-nightly.yaml"],
23 | false,
24 | );
25 |
26 | await stackCLI.setup([]);
27 |
28 | expect(exec.exec).toHaveBeenCalledWith(
29 | "stack",
30 | [
31 | "--stack-yaml",
32 | "sub/stack-nightly.yaml",
33 | "--resolver",
34 | "nightly",
35 | "setup",
36 | ],
37 | undefined, // ExecOptions
38 | );
39 | });
40 |
41 | test("Doesn't add --resolver nightly if given", async () => {
42 | const stackCLI = new StackCLI(
43 | [
44 | "--stack-yaml",
45 | "sub/stack-nightly.yaml",
46 | "--resolver",
47 | "nightly-20240201",
48 | ],
49 | false,
50 | );
51 |
52 | await stackCLI.setup([]);
53 |
54 | expect(exec.exec).toHaveBeenCalledWith(
55 | "stack",
56 | [
57 | "--stack-yaml",
58 | "sub/stack-nightly.yaml",
59 | "--resolver",
60 | "nightly-20240201",
61 | "setup",
62 | ],
63 | undefined, // ExecOptions
64 | );
65 | });
66 |
67 | test("installCompilerTools", async () => {
68 | const stackCLI = new StackCLI([], false);
69 | await stackCLI.installCompilerTools(["hlint", "weeder"]);
70 |
71 | expect(exec.exec).toHaveBeenCalledWith(
72 | "stack",
73 | ["install", "--copy-compiler-tool", "hlint", "weeder"],
74 | undefined,
75 | );
76 | });
77 |
78 | test("installCompilerTools with empty arguments", async () => {
79 | const stackCLI = new StackCLI([], false);
80 | await stackCLI.installCompilerTools([]);
81 |
82 | expect(exec.exec).not.toHaveBeenCalled();
83 | });
84 |
85 | test("buildDependencies", async () => {
86 | const stackCLI = new StackCLI([], false);
87 |
88 | await stackCLI.buildDependencies(["--coverage"]);
89 |
90 | expect(exec.exec).toHaveBeenCalledWith(
91 | "stack",
92 | [
93 | "build",
94 | "--test",
95 | "--no-run-tests",
96 | "--dependencies-only",
97 | "--coverage",
98 | ],
99 | undefined,
100 | );
101 | });
102 |
103 | test("buildNoTest", async () => {
104 | const stackCLI = new StackCLI([], false);
105 |
106 | await stackCLI.buildNoTest(["--coverage"]);
107 |
108 | expect(exec.exec).toHaveBeenCalledWith(
109 | "stack",
110 | ["build", "--test", "--no-run-tests", "--coverage"],
111 | undefined,
112 | );
113 | });
114 |
115 | test("buildTest", async () => {
116 | const stackCLI = new StackCLI([], false);
117 |
118 | await stackCLI.buildTest(["--coverage"]);
119 |
120 | expect(exec.exec).toHaveBeenCalledWith(
121 | "stack",
122 | ["build", "--test", "--coverage"],
123 | undefined,
124 | );
125 | });
126 |
127 | test("build", async () => {
128 | const stackCLI = new StackCLI([], false);
129 |
130 | await stackCLI.build(["--coverage"]);
131 |
132 | expect(exec.exec).toHaveBeenCalledWith(
133 | "stack",
134 | ["build", "--coverage"],
135 | undefined,
136 | );
137 | });
138 | });
139 |
--------------------------------------------------------------------------------
/src/stack-cli.ts:
--------------------------------------------------------------------------------
1 | import * as fs from "fs";
2 | import * as path from "path";
3 | import { devNull } from "os";
4 | import type { ExecOptions } from "@actions/exec";
5 | import * as exec from "@actions/exec";
6 |
7 | import type { StackPath } from "./parse-stack-path";
8 | import { parseStackPath } from "./parse-stack-path";
9 | import type { StackQuery } from "./parse-stack-query";
10 | import { parseStackQuery } from "./parse-stack-query";
11 |
12 | export interface ExecDelegate {
13 | exec: (
14 | command: string,
15 | args: string[],
16 | options?: ExecOptions,
17 | ) => Promise;
18 | }
19 |
20 | export class StackCLI {
21 | public config: string;
22 | public resolver: string | null;
23 |
24 | private debug: boolean;
25 | private globalArgs: string[];
26 |
27 | constructor(args: string[], debug?: boolean) {
28 | this.debug = debug ?? false;
29 | this.globalArgs = args;
30 |
31 | // Capture --stack-yaml if given
32 | const stackYamlIdx = args.indexOf("--stack-yaml");
33 | const stackYamlArg = stackYamlIdx >= 0 ? args[stackYamlIdx + 1] : null;
34 |
35 | this.config = stackYamlArg ?? process.env.STACK_YAML ?? "stack.yaml";
36 |
37 | // Capture --resolver if given
38 | const resolverIdx = args.indexOf("--resolver");
39 | const resolverArg = resolverIdx >= 0 ? args[resolverIdx + 1] : null;
40 |
41 | this.resolver = resolverArg;
42 |
43 | // Infer nightly if not given
44 | if (!this.resolver && path.basename(this.config) === "stack-nightly.yaml") {
45 | this.resolver = "nightly";
46 | this.globalArgs.push("--resolver");
47 | this.globalArgs.push("nightly");
48 | }
49 | }
50 |
51 | async installed(): Promise {
52 | const ec = await exec.exec("which", ["stack"], {
53 | silent: true,
54 | ignoreReturnCode: true,
55 | });
56 | return ec == 0;
57 | }
58 |
59 | async install(): Promise {
60 | const url = "https://get.haskellstack.org";
61 | const tmp = "install-stack.sh";
62 | await exec.exec("curl", ["-sSL", "-o", tmp, url]);
63 | await exec.exec("sh", [tmp]);
64 | fs.rmSync(tmp);
65 | }
66 |
67 | async upgrade(): Promise {
68 | // Avoid this.exec because we don't need/want globalArgs
69 | return await exec.exec("stack", ["upgrade"]);
70 | }
71 |
72 | async setup(args: string[]): Promise {
73 | return await this.exec(["setup"].concat(args));
74 | }
75 |
76 | async installCompilerTools(tools: string[]): Promise {
77 | if (tools.length > 0) {
78 | return await this.exec(["install", "--copy-compiler-tool"].concat(tools));
79 | }
80 |
81 | // No tools to install
82 | return 0;
83 | }
84 |
85 | async buildDependencies(args: string[]): Promise {
86 | return await this.buildNoTest(["--dependencies-only"].concat(args));
87 | }
88 |
89 | async buildNoTest(args: string[]): Promise {
90 | return await this.build(["--test", "--no-run-tests"].concat(args));
91 | }
92 |
93 | async buildTest(args: string[]): Promise {
94 | return await this.build(["--test"].concat(args));
95 | }
96 |
97 | async build(args: string[]): Promise {
98 | return await this.exec(["build"].concat(args));
99 | }
100 |
101 | async path(): Promise {
102 | return await this.parse(["path"], parseStackPath);
103 | }
104 |
105 | async query(): Promise {
106 | return await this.parse(["query"], parseStackQuery);
107 | }
108 |
109 | async which(cmd: string): Promise {
110 | const ec = await this.exec(["exec", "--", "which", cmd], {
111 | ignoreReturnCode: true,
112 | });
113 | return ec === 0;
114 | }
115 |
116 | async parse(args: string[], f: (stdout: string) => A): Promise {
117 | const stdout = await this.read(args);
118 | return f(stdout);
119 | }
120 |
121 | async read(args: string[]): Promise {
122 | let stdout = "";
123 |
124 | const options: ExecOptions = {
125 | listeners: {
126 | stdout: (data: Buffer) => {
127 | stdout += data.toString();
128 | },
129 | },
130 | };
131 |
132 | if (!this.debug) {
133 | // If not debugging, hide the output being read
134 | options.outStream = fs.createWriteStream(devNull);
135 | }
136 |
137 | await this.exec(args, options);
138 | return stdout;
139 | }
140 |
141 | private async exec(args: string[], options?: ExecOptions): Promise {
142 | return await exec.exec("stack", this.globalArgs.concat(args), options);
143 | }
144 | }
145 |
--------------------------------------------------------------------------------
/src/stack-yaml.test.ts:
--------------------------------------------------------------------------------
1 | import { parseStackYaml, getStackDirectories } from "./stack-yaml";
2 | import { StackCLI } from "./stack-cli";
3 |
4 | const testStackRoot = "/home/me/.stack";
5 | const testPrograms = `${testStackRoot}/programs/x86_64-linux`;
6 | const testStackPathYaml = `
7 | stack-root: ${testStackRoot}
8 | programs: ${testPrograms}
9 | `;
10 |
11 | function mockStackCLI(): StackCLI {
12 | const stack = new StackCLI([]);
13 |
14 | jest
15 | .spyOn(stack, "read")
16 | .mockImplementation((args: string[]): Promise => {
17 | // Stringify to avoid array-comparison pitfalls
18 | const expected = ["path", "--stack-root", "--programs"].toString();
19 | const given = args.toString();
20 |
21 | if (given !== expected) {
22 | throw new Error(
23 | `StackCLI.read() is only mocked for ${expected}, saw ${given}`,
24 | );
25 | }
26 |
27 | return Promise.resolve(testStackPathYaml);
28 | });
29 |
30 | return stack;
31 | }
32 |
33 | describe("getStackDirectories", () => {
34 | test("stackRoot, stackPrograms", async () => {
35 | const stackYaml = parseStackYaml("resolver: lts-22\n");
36 | const stack = mockStackCLI();
37 |
38 | const stackDirectories = await getStackDirectories(stackYaml, stack, "");
39 |
40 | expect(stackDirectories.stackRoot).toEqual(testStackRoot);
41 | expect(stackDirectories.stackPrograms).toEqual(testPrograms);
42 | });
43 |
44 | describe("stackWorks", () => {
45 | test("without packages", async () => {
46 | const stackYaml = parseStackYaml("resolver: lts-22\n");
47 | const stack = mockStackCLI();
48 |
49 | const stackDirectories = await getStackDirectories(
50 | stackYaml,
51 | stack,
52 | "/home/me/code/project",
53 | );
54 |
55 | expect(stackDirectories.stackWorks).toEqual([
56 | "/home/me/code/project/.stack-work",
57 | ]);
58 | });
59 |
60 | test("with packages: [.]", async () => {
61 | const stackYaml = parseStackYaml("resolver: lts-22\npackages:\n- .");
62 | const stack = mockStackCLI();
63 |
64 | const stackDirectories = await getStackDirectories(
65 | stackYaml,
66 | stack,
67 | "/home/me/code/project",
68 | );
69 |
70 | expect(stackDirectories.stackWorks).toEqual([
71 | "/home/me/code/project/.stack-work",
72 | ]);
73 | });
74 |
75 | test("with subpackages", async () => {
76 | const stackYaml = parseStackYaml(
77 | [
78 | "resolver: lts-22",
79 | "packages:",
80 | " - subproject1",
81 | " - subproject2",
82 | ].join("\n"),
83 | );
84 | const stack = mockStackCLI();
85 |
86 | const stackDirectories = await getStackDirectories(
87 | stackYaml,
88 | stack,
89 | "/home/me/code/project",
90 | );
91 |
92 | expect(stackDirectories.stackWorks).toEqual([
93 | "/home/me/code/project/.stack-work",
94 | "/home/me/code/project/subproject1/.stack-work",
95 | "/home/me/code/project/subproject2/.stack-work",
96 | ]);
97 | });
98 | });
99 | });
100 |
--------------------------------------------------------------------------------
/src/stack-yaml.ts:
--------------------------------------------------------------------------------
1 | import * as fs from "fs";
2 | import { join as pathJoin } from "path";
3 | import * as yaml from "js-yaml";
4 |
5 | import { StackCLI } from "./stack-cli";
6 |
7 | export type StackYaml = {
8 | resolver: string;
9 | packages: string[] | null;
10 | "local-programs-path": string | null;
11 | };
12 |
13 | export function readStackYamlSync(path: string): StackYaml {
14 | const contents = fs.readFileSync(path, { encoding: "utf-8" });
15 | return parseStackYaml(contents);
16 | }
17 |
18 | export function parseStackYaml(contents: string): StackYaml {
19 | return yaml.load(contents) as StackYaml;
20 | }
21 |
22 | export type StackDirectories = {
23 | stackRoot: string;
24 | stackPrograms: string;
25 | stackWorks: string[];
26 | };
27 |
28 | // Internal type for parsing Yaml output from `stack path`
29 | type StackPath = {
30 | "stack-root": string;
31 | programs: string;
32 | };
33 |
34 | export async function getStackDirectories(
35 | stackYaml: StackYaml,
36 | stack: StackCLI,
37 | workingDirectory?: string,
38 | ): Promise {
39 | const cwd = workingDirectory ?? process.cwd();
40 |
41 | // Only use --stack-root and --programs, which (as of stack v2.15.3) won't
42 | // load the environment and install GHC, etc. These are the only options
43 | // currently safe to make use of outside of caching.
44 | const output = await stack.read(["path", "--stack-root", "--programs"]);
45 | const stackPath = yaml.load(output) as StackPath;
46 | const stackWorks = packagesStackWorks(stackYaml, cwd);
47 |
48 | return {
49 | stackRoot: stackPath["stack-root"],
50 | stackPrograms: stackPath.programs,
51 | stackWorks,
52 | };
53 | }
54 |
55 | function packagesStackWorks(stackYaml: StackYaml, cwd: string): string[] {
56 | // We always include ./.stack-work, so filter the "." element if present
57 | const packageStackWorks = (stackYaml.packages ?? [])
58 | .filter((p) => p !== ".")
59 | .map((p) => pathJoin(cwd, p, ".stack-work"));
60 |
61 | return [pathJoin(cwd, ".stack-work")].concat(packageStackWorks);
62 | }
63 |
--------------------------------------------------------------------------------
/src/with-cache.test.ts:
--------------------------------------------------------------------------------
1 | import * as core from "@actions/core";
2 | import * as cache from "@actions/cache";
3 |
4 | import { getCacheKeys } from "./get-cache-keys";
5 | import { DEFAULT_CACHE_OPTIONS, withCache } from "./with-cache";
6 |
7 | const restoreCacheMock = jest.spyOn(cache, "restoreCache");
8 | jest.spyOn(cache, "saveCache");
9 | jest.spyOn(core, "info");
10 |
11 | async function testFunction(): Promise {
12 | return 42;
13 | }
14 |
15 | async function testFunctionThrows(): Promise {
16 | throw new Error("Boom");
17 | }
18 |
19 | function simulateCacheHit(
20 | _paths: string[],
21 | primaryKey: string,
22 | _restoreKeys?: string[],
23 | ): Promise {
24 | return Promise.resolve(primaryKey);
25 | }
26 |
27 | function simulateCacheMiss(
28 | _paths: string[],
29 | primaryKey: string,
30 | _restoreKeys?: string[],
31 | ): Promise {
32 | return Promise.resolve(primaryKey.replace(/-*$/, "-XXX"));
33 | }
34 |
35 | test("withCache skips on primary-key hit", async () => {
36 | const cachePaths = ["/a", "/b"];
37 | const cacheKeys = getCacheKeys(["a-b", "c", "d"]);
38 | restoreCacheMock.mockImplementation(simulateCacheHit);
39 |
40 | const result = await withCache(
41 | cachePaths,
42 | cacheKeys,
43 | testFunction,
44 | DEFAULT_CACHE_OPTIONS,
45 | );
46 |
47 | expect(result).toBeUndefined();
48 | expect(cache.restoreCache).toHaveBeenCalledWith(
49 | cachePaths,
50 | cacheKeys.primaryKey,
51 | cacheKeys.restoreKeys,
52 | );
53 | expect(cache.saveCache).not.toHaveBeenCalled();
54 | });
55 |
56 | test("withCache acts and saves if no primary-key hit", async () => {
57 | const cachePaths = ["/a", "/b"];
58 | const cacheKeys = getCacheKeys(["a-b", "c", "d"]);
59 | restoreCacheMock.mockImplementation(simulateCacheMiss);
60 |
61 | const result = await withCache(
62 | cachePaths,
63 | cacheKeys,
64 | testFunction,
65 | DEFAULT_CACHE_OPTIONS,
66 | );
67 |
68 | expect(result).toEqual(42);
69 | expect(cache.restoreCache).toHaveBeenCalledWith(
70 | cachePaths,
71 | cacheKeys.primaryKey,
72 | cacheKeys.restoreKeys,
73 | );
74 | expect(cache.saveCache).toHaveBeenCalledWith(
75 | cachePaths,
76 | cacheKeys.primaryKey,
77 | );
78 | });
79 |
80 | test("withCache can be configured to act and save anyway", async () => {
81 | const cachePaths = ["/a", "/b"];
82 | const cacheKeys = getCacheKeys(["a-b", "c", "d"]);
83 | restoreCacheMock.mockImplementation(simulateCacheHit);
84 |
85 | const result = await withCache(cachePaths, cacheKeys, testFunction, {
86 | ...DEFAULT_CACHE_OPTIONS,
87 | skipOnHit: false,
88 | });
89 |
90 | expect(result).toEqual(42);
91 | expect(cache.restoreCache).toHaveBeenCalledWith(
92 | cachePaths,
93 | cacheKeys.primaryKey,
94 | cacheKeys.restoreKeys,
95 | );
96 |
97 | // This step is still skipped
98 | expect(cache.saveCache).not.toHaveBeenCalled();
99 | });
100 |
101 | test("withCache does not save on error", async () => {
102 | const cachePaths = ["/a", "/b"];
103 | const cacheKeys = getCacheKeys(["a-b", "c", "d"]);
104 | restoreCacheMock.mockImplementation(simulateCacheMiss);
105 |
106 | await expect(async () => {
107 | await withCache(
108 | cachePaths,
109 | cacheKeys,
110 | testFunctionThrows,
111 | DEFAULT_CACHE_OPTIONS,
112 | );
113 | }).rejects.toThrow();
114 |
115 | expect(cache.restoreCache).toHaveBeenCalledWith(
116 | cachePaths,
117 | cacheKeys.primaryKey,
118 | cacheKeys.restoreKeys,
119 | );
120 |
121 | // This step is skipped
122 | expect(cache.saveCache).not.toHaveBeenCalled();
123 | });
124 |
125 | test("withCache can be configured to save on error", async () => {
126 | const cachePaths = ["/a", "/b"];
127 | const cacheKeys = getCacheKeys(["a-b", "c", "d"]);
128 | restoreCacheMock.mockImplementation(simulateCacheMiss);
129 |
130 | await expect(async () => {
131 | await withCache(cachePaths, cacheKeys, testFunctionThrows, {
132 | ...DEFAULT_CACHE_OPTIONS,
133 | saveOnError: true,
134 | });
135 | }).rejects.toThrow();
136 |
137 | expect(cache.restoreCache).toHaveBeenCalledWith(
138 | cachePaths,
139 | cacheKeys.primaryKey,
140 | cacheKeys.restoreKeys,
141 | );
142 |
143 | expect(cache.saveCache).toHaveBeenCalledWith(
144 | cachePaths,
145 | cacheKeys.primaryKey,
146 | );
147 | });
148 |
--------------------------------------------------------------------------------
/src/with-cache.ts:
--------------------------------------------------------------------------------
1 | import * as core from "@actions/core";
2 | import * as cache from "@actions/cache";
3 | import type { CacheKeys } from "./get-cache-keys";
4 |
5 | export type CacheOptions = {
6 | skipOnHit: boolean;
7 | saveOnError: boolean;
8 | };
9 |
10 | export const DEFAULT_CACHE_OPTIONS = {
11 | skipOnHit: true,
12 | saveOnError: false,
13 | };
14 |
15 | export async function withCache(
16 | paths: string[],
17 | keys: CacheKeys,
18 | fn: () => Promise,
19 | options: CacheOptions = DEFAULT_CACHE_OPTIONS,
20 | ): Promise {
21 | const { skipOnHit, saveOnError } = options;
22 |
23 | core.info(`Cached paths:\n - ${paths.join("\n - ")}`);
24 | core.info(`Cache key: ${keys.primaryKey}`);
25 | core.info(`Cache restore keys:\n - ${keys.restoreKeys.join("\n - ")}`);
26 |
27 | const restoredKey = await cache.restoreCache(
28 | paths,
29 | keys.primaryKey,
30 | keys.restoreKeys,
31 | );
32 |
33 | const primaryKeyHit = restoredKey == keys.primaryKey;
34 |
35 | if (restoredKey) {
36 | core.info(`Cache restored from key: ${restoredKey}`);
37 | } else {
38 | core.warning("No cache found");
39 | }
40 |
41 | if (primaryKeyHit && skipOnHit && !saveOnError) {
42 | core.info("Skipping due to primary key hit");
43 | return;
44 | }
45 |
46 | let result: T;
47 |
48 | try {
49 | result = await fn();
50 |
51 | if (!primaryKeyHit) {
52 | await cache.saveCache(paths, keys.primaryKey);
53 | }
54 | } catch (ex) {
55 | if (saveOnError && !primaryKeyHit) {
56 | await cache.saveCache(paths, keys.primaryKey);
57 | }
58 |
59 | throw ex;
60 | }
61 |
62 | return result;
63 | }
64 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json.schemastore.org/tsconfig",
3 | "compilerOptions": {
4 | "outDir": "./lib",
5 | "allowJs": true,
6 | "target": "ES2022",
7 | "noImplicitAny": true,
8 | "noImplicitReturns": true,
9 | "noFallthroughCasesInSwitch": true,
10 | "strictNullChecks": true,
11 | "noImplicitThis": true,
12 | "allowUnreachableCode": false,
13 | "allowUnusedLabels": false,
14 | "noEmitOnError": true,
15 | "removeComments": true,
16 | "module": "NodeNext",
17 | "esModuleInterop": true,
18 | "strict": true
19 | },
20 | "include": ["./src/**/*"],
21 | "exclude": ["./src/**/*.test.ts"]
22 | }
23 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@actions/cache@^4.0.3":
6 | version "4.0.3"
7 | resolved "https://registry.yarnpkg.com/@actions/cache/-/cache-4.0.3.tgz#7b08ede6ae2c0b2fb0b7b452ed0f40ba9f0c53d3"
8 | integrity sha512-SvrqFtYJ7I48A/uXNkoJrnukx5weQv1fGquhs3+4nkByZThBH109KTIqj5x/cGV7JGNvb8dLPVywUOqX1fjiXg==
9 | dependencies:
10 | "@actions/core" "^1.11.1"
11 | "@actions/exec" "^1.0.1"
12 | "@actions/glob" "^0.1.0"
13 | "@actions/http-client" "^2.1.1"
14 | "@actions/io" "^1.0.1"
15 | "@azure/abort-controller" "^1.1.0"
16 | "@azure/ms-rest-js" "^2.6.0"
17 | "@azure/storage-blob" "^12.13.0"
18 | "@protobuf-ts/plugin" "^2.9.4"
19 | semver "^6.3.1"
20 |
21 | "@actions/core@^1.11.1", "@actions/core@^1.2.6", "@actions/core@^1.9.1":
22 | version "1.11.1"
23 | resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.11.1.tgz#ae683aac5112438021588030efb53b1adb86f172"
24 | integrity sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==
25 | dependencies:
26 | "@actions/exec" "^1.1.1"
27 | "@actions/http-client" "^2.0.1"
28 |
29 | "@actions/exec@^1.0.1", "@actions/exec@^1.1.0", "@actions/exec@^1.1.1":
30 | version "1.1.1"
31 | resolved "https://registry.yarnpkg.com/@actions/exec/-/exec-1.1.1.tgz#2e43f28c54022537172819a7cf886c844221a611"
32 | integrity sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==
33 | dependencies:
34 | "@actions/io" "^1.0.1"
35 |
36 | "@actions/glob@^0.1.0":
37 | version "0.1.2"
38 | resolved "https://registry.yarnpkg.com/@actions/glob/-/glob-0.1.2.tgz#9685ed2d6583093479c8f137d067c4329d7d0974"
39 | integrity sha512-SclLR7Ia5sEqjkJTPs7Sd86maMDw43p769YxBOxvPvEWuPEhpAnBsQfENOpXjFYMmhCqd127bmf+YdvJqVqR4A==
40 | dependencies:
41 | "@actions/core" "^1.2.6"
42 | minimatch "^3.0.4"
43 |
44 | "@actions/glob@^0.5.0":
45 | version "0.5.0"
46 | resolved "https://registry.yarnpkg.com/@actions/glob/-/glob-0.5.0.tgz#72853048c6f84c05d8d9e0aad2bb926f6e3bc873"
47 | integrity sha512-tST2rjPvJLRZLuT9NMUtyBjvj9Yo0MiJS3ow004slMvm8GFM+Zv9HvMJ7HWzfUyJnGrJvDsYkWBaaG3YKXRtCw==
48 | dependencies:
49 | "@actions/core" "^1.9.1"
50 | minimatch "^3.0.4"
51 |
52 | "@actions/http-client@^2.0.1", "@actions/http-client@^2.1.1":
53 | version "2.2.3"
54 | resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.2.3.tgz#31fc0b25c0e665754ed39a9f19a8611fc6dab674"
55 | integrity sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==
56 | dependencies:
57 | tunnel "^0.0.6"
58 | undici "^5.25.4"
59 |
60 | "@actions/io@^1.0.1":
61 | version "1.1.3"
62 | resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.1.3.tgz#4cdb6254da7962b07473ff5c335f3da485d94d71"
63 | integrity sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==
64 |
65 | "@ampproject/remapping@^2.2.0":
66 | version "2.3.0"
67 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4"
68 | integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
69 | dependencies:
70 | "@jridgewell/gen-mapping" "^0.3.5"
71 | "@jridgewell/trace-mapping" "^0.3.24"
72 |
73 | "@azure/abort-controller@^1.1.0":
74 | version "1.1.0"
75 | resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.1.0.tgz#788ee78457a55af8a1ad342acb182383d2119249"
76 | integrity sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==
77 | dependencies:
78 | tslib "^2.2.0"
79 |
80 | "@azure/abort-controller@^2.0.0", "@azure/abort-controller@^2.1.2":
81 | version "2.1.2"
82 | resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-2.1.2.tgz#42fe0ccab23841d9905812c58f1082d27784566d"
83 | integrity sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==
84 | dependencies:
85 | tslib "^2.6.2"
86 |
87 | "@azure/core-auth@^1.1.4", "@azure/core-auth@^1.4.0", "@azure/core-auth@^1.8.0":
88 | version "1.9.0"
89 | resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.9.0.tgz#ac725b03fabe3c892371065ee9e2041bee0fd1ac"
90 | integrity sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==
91 | dependencies:
92 | "@azure/abort-controller" "^2.0.0"
93 | "@azure/core-util" "^1.11.0"
94 | tslib "^2.6.2"
95 |
96 | "@azure/core-client@^1.3.0", "@azure/core-client@^1.6.2":
97 | version "1.9.2"
98 | resolved "https://registry.yarnpkg.com/@azure/core-client/-/core-client-1.9.2.tgz#6fc69cee2816883ab6c5cdd653ee4f2ff9774f74"
99 | integrity sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==
100 | dependencies:
101 | "@azure/abort-controller" "^2.0.0"
102 | "@azure/core-auth" "^1.4.0"
103 | "@azure/core-rest-pipeline" "^1.9.1"
104 | "@azure/core-tracing" "^1.0.0"
105 | "@azure/core-util" "^1.6.1"
106 | "@azure/logger" "^1.0.0"
107 | tslib "^2.6.2"
108 |
109 | "@azure/core-http-compat@^2.0.0":
110 | version "2.1.2"
111 | resolved "https://registry.yarnpkg.com/@azure/core-http-compat/-/core-http-compat-2.1.2.tgz#d1585ada24ba750dc161d816169b33b35f762f0d"
112 | integrity sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ==
113 | dependencies:
114 | "@azure/abort-controller" "^2.0.0"
115 | "@azure/core-client" "^1.3.0"
116 | "@azure/core-rest-pipeline" "^1.3.0"
117 |
118 | "@azure/core-lro@^2.2.0":
119 | version "2.7.2"
120 | resolved "https://registry.yarnpkg.com/@azure/core-lro/-/core-lro-2.7.2.tgz#787105027a20e45c77651a98b01a4d3b01b75a08"
121 | integrity sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==
122 | dependencies:
123 | "@azure/abort-controller" "^2.0.0"
124 | "@azure/core-util" "^1.2.0"
125 | "@azure/logger" "^1.0.0"
126 | tslib "^2.6.2"
127 |
128 | "@azure/core-paging@^1.1.1":
129 | version "1.6.2"
130 | resolved "https://registry.yarnpkg.com/@azure/core-paging/-/core-paging-1.6.2.tgz#40d3860dc2df7f291d66350b2cfd9171526433e7"
131 | integrity sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==
132 | dependencies:
133 | tslib "^2.6.2"
134 |
135 | "@azure/core-rest-pipeline@^1.10.1", "@azure/core-rest-pipeline@^1.3.0", "@azure/core-rest-pipeline@^1.9.1":
136 | version "1.18.2"
137 | resolved "https://registry.yarnpkg.com/@azure/core-rest-pipeline/-/core-rest-pipeline-1.18.2.tgz#fa3a83b412d4b3e33edca30a71b1d5838306c075"
138 | integrity sha512-IkTf/DWKyCklEtN/WYW3lqEsIaUDshlzWRlZNNwSYtFcCBQz++OtOjxNpm8rr1VcbMS6RpjybQa3u6B6nG0zNw==
139 | dependencies:
140 | "@azure/abort-controller" "^2.0.0"
141 | "@azure/core-auth" "^1.8.0"
142 | "@azure/core-tracing" "^1.0.1"
143 | "@azure/core-util" "^1.11.0"
144 | "@azure/logger" "^1.0.0"
145 | http-proxy-agent "^7.0.0"
146 | https-proxy-agent "^7.0.0"
147 | tslib "^2.6.2"
148 |
149 | "@azure/core-tracing@^1.0.0", "@azure/core-tracing@^1.0.1", "@azure/core-tracing@^1.1.2":
150 | version "1.2.0"
151 | resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.2.0.tgz#7be5d53c3522d639cf19042cbcdb19f71bc35ab2"
152 | integrity sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==
153 | dependencies:
154 | tslib "^2.6.2"
155 |
156 | "@azure/core-util@^1.11.0", "@azure/core-util@^1.2.0", "@azure/core-util@^1.6.1":
157 | version "1.11.0"
158 | resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.11.0.tgz#f530fc67e738aea872fbdd1cc8416e70219fada7"
159 | integrity sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==
160 | dependencies:
161 | "@azure/abort-controller" "^2.0.0"
162 | tslib "^2.6.2"
163 |
164 | "@azure/core-xml@^1.4.3":
165 | version "1.4.4"
166 | resolved "https://registry.yarnpkg.com/@azure/core-xml/-/core-xml-1.4.4.tgz#a8656751943bf492762f758d147d33dfcd933d9e"
167 | integrity sha512-J4FYAqakGXcbfeZjwjMzjNcpcH4E+JtEBv+xcV1yL0Ydn/6wbQfeFKTCHh9wttAi0lmajHw7yBbHPRG+YHckZQ==
168 | dependencies:
169 | fast-xml-parser "^4.4.1"
170 | tslib "^2.6.2"
171 |
172 | "@azure/logger@^1.0.0":
173 | version "1.1.4"
174 | resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.1.4.tgz#223cbf2b424dfa66478ce9a4f575f59c6f379768"
175 | integrity sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==
176 | dependencies:
177 | tslib "^2.6.2"
178 |
179 | "@azure/ms-rest-js@^2.6.0":
180 | version "2.7.0"
181 | resolved "https://registry.yarnpkg.com/@azure/ms-rest-js/-/ms-rest-js-2.7.0.tgz#8639065577ffdf4946951e1d246334ebfd72d537"
182 | integrity sha512-ngbzWbqF+NmztDOpLBVDxYM+XLcUj7nKhxGbSU9WtIsXfRB//cf2ZbAG5HkOrhU9/wd/ORRB6lM/d69RKVjiyA==
183 | dependencies:
184 | "@azure/core-auth" "^1.1.4"
185 | abort-controller "^3.0.0"
186 | form-data "^2.5.0"
187 | node-fetch "^2.6.7"
188 | tslib "^1.10.0"
189 | tunnel "0.0.6"
190 | uuid "^8.3.2"
191 | xml2js "^0.5.0"
192 |
193 | "@azure/storage-blob@^12.13.0":
194 | version "12.26.0"
195 | resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.26.0.tgz#1fae3a0b68d8a91b56c89f353507916bf8705d1c"
196 | integrity sha512-SriLPKezypIsiZ+TtlFfE46uuBIap2HeaQVS78e1P7rz5OSbq0rsd52WE1mC5f7vAeLiXqv7I7oRhL3WFZEw3Q==
197 | dependencies:
198 | "@azure/abort-controller" "^2.1.2"
199 | "@azure/core-auth" "^1.4.0"
200 | "@azure/core-client" "^1.6.2"
201 | "@azure/core-http-compat" "^2.0.0"
202 | "@azure/core-lro" "^2.2.0"
203 | "@azure/core-paging" "^1.1.1"
204 | "@azure/core-rest-pipeline" "^1.10.1"
205 | "@azure/core-tracing" "^1.1.2"
206 | "@azure/core-util" "^1.6.1"
207 | "@azure/core-xml" "^1.4.3"
208 | "@azure/logger" "^1.0.0"
209 | events "^3.0.0"
210 | tslib "^2.2.0"
211 |
212 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.2":
213 | version "7.26.2"
214 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85"
215 | integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
216 | dependencies:
217 | "@babel/helper-validator-identifier" "^7.25.9"
218 | js-tokens "^4.0.0"
219 | picocolors "^1.0.0"
220 |
221 | "@babel/compat-data@^7.26.5":
222 | version "7.26.5"
223 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.5.tgz#df93ac37f4417854130e21d72c66ff3d4b897fc7"
224 | integrity sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==
225 |
226 | "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9":
227 | version "7.26.7"
228 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.7.tgz#0439347a183b97534d52811144d763a17f9d2b24"
229 | integrity sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==
230 | dependencies:
231 | "@ampproject/remapping" "^2.2.0"
232 | "@babel/code-frame" "^7.26.2"
233 | "@babel/generator" "^7.26.5"
234 | "@babel/helper-compilation-targets" "^7.26.5"
235 | "@babel/helper-module-transforms" "^7.26.0"
236 | "@babel/helpers" "^7.26.7"
237 | "@babel/parser" "^7.26.7"
238 | "@babel/template" "^7.25.9"
239 | "@babel/traverse" "^7.26.7"
240 | "@babel/types" "^7.26.7"
241 | convert-source-map "^2.0.0"
242 | debug "^4.1.0"
243 | gensync "^1.0.0-beta.2"
244 | json5 "^2.2.3"
245 | semver "^6.3.1"
246 |
247 | "@babel/generator@^7.26.5", "@babel/generator@^7.7.2":
248 | version "7.26.5"
249 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.5.tgz#e44d4ab3176bbcaf78a5725da5f1dc28802a9458"
250 | integrity sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==
251 | dependencies:
252 | "@babel/parser" "^7.26.5"
253 | "@babel/types" "^7.26.5"
254 | "@jridgewell/gen-mapping" "^0.3.5"
255 | "@jridgewell/trace-mapping" "^0.3.25"
256 | jsesc "^3.0.2"
257 |
258 | "@babel/helper-compilation-targets@^7.26.5":
259 | version "7.26.5"
260 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz#75d92bb8d8d51301c0d49e52a65c9a7fe94514d8"
261 | integrity sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==
262 | dependencies:
263 | "@babel/compat-data" "^7.26.5"
264 | "@babel/helper-validator-option" "^7.25.9"
265 | browserslist "^4.24.0"
266 | lru-cache "^5.1.1"
267 | semver "^6.3.1"
268 |
269 | "@babel/helper-module-imports@^7.25.9":
270 | version "7.25.9"
271 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715"
272 | integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==
273 | dependencies:
274 | "@babel/traverse" "^7.25.9"
275 | "@babel/types" "^7.25.9"
276 |
277 | "@babel/helper-module-transforms@^7.26.0":
278 | version "7.26.0"
279 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae"
280 | integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==
281 | dependencies:
282 | "@babel/helper-module-imports" "^7.25.9"
283 | "@babel/helper-validator-identifier" "^7.25.9"
284 | "@babel/traverse" "^7.25.9"
285 |
286 | "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0":
287 | version "7.26.5"
288 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35"
289 | integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==
290 |
291 | "@babel/helper-string-parser@^7.25.9":
292 | version "7.25.9"
293 | resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c"
294 | integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==
295 |
296 | "@babel/helper-validator-identifier@^7.25.9":
297 | version "7.25.9"
298 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
299 | integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
300 |
301 | "@babel/helper-validator-option@^7.25.9":
302 | version "7.25.9"
303 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72"
304 | integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==
305 |
306 | "@babel/helpers@^7.26.7":
307 | version "7.26.7"
308 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.7.tgz#fd1d2a7c431b6e39290277aacfd8367857c576a4"
309 | integrity sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==
310 | dependencies:
311 | "@babel/template" "^7.25.9"
312 | "@babel/types" "^7.26.7"
313 |
314 | "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.9", "@babel/parser@^7.26.5", "@babel/parser@^7.26.7":
315 | version "7.26.7"
316 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.7.tgz#e114cd099e5f7d17b05368678da0fb9f69b3385c"
317 | integrity sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==
318 | dependencies:
319 | "@babel/types" "^7.26.7"
320 |
321 | "@babel/plugin-syntax-async-generators@^7.8.4":
322 | version "7.8.4"
323 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
324 | integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
325 | dependencies:
326 | "@babel/helper-plugin-utils" "^7.8.0"
327 |
328 | "@babel/plugin-syntax-bigint@^7.8.3":
329 | version "7.8.3"
330 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea"
331 | integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==
332 | dependencies:
333 | "@babel/helper-plugin-utils" "^7.8.0"
334 |
335 | "@babel/plugin-syntax-class-properties@^7.12.13":
336 | version "7.12.13"
337 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
338 | integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
339 | dependencies:
340 | "@babel/helper-plugin-utils" "^7.12.13"
341 |
342 | "@babel/plugin-syntax-class-static-block@^7.14.5":
343 | version "7.14.5"
344 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406"
345 | integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==
346 | dependencies:
347 | "@babel/helper-plugin-utils" "^7.14.5"
348 |
349 | "@babel/plugin-syntax-import-attributes@^7.24.7":
350 | version "7.26.0"
351 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7"
352 | integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==
353 | dependencies:
354 | "@babel/helper-plugin-utils" "^7.25.9"
355 |
356 | "@babel/plugin-syntax-import-meta@^7.10.4":
357 | version "7.10.4"
358 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
359 | integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
360 | dependencies:
361 | "@babel/helper-plugin-utils" "^7.10.4"
362 |
363 | "@babel/plugin-syntax-json-strings@^7.8.3":
364 | version "7.8.3"
365 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
366 | integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
367 | dependencies:
368 | "@babel/helper-plugin-utils" "^7.8.0"
369 |
370 | "@babel/plugin-syntax-jsx@^7.7.2":
371 | version "7.25.9"
372 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290"
373 | integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==
374 | dependencies:
375 | "@babel/helper-plugin-utils" "^7.25.9"
376 |
377 | "@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
378 | version "7.10.4"
379 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
380 | integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
381 | dependencies:
382 | "@babel/helper-plugin-utils" "^7.10.4"
383 |
384 | "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
385 | version "7.8.3"
386 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
387 | integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
388 | dependencies:
389 | "@babel/helper-plugin-utils" "^7.8.0"
390 |
391 | "@babel/plugin-syntax-numeric-separator@^7.10.4":
392 | version "7.10.4"
393 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
394 | integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
395 | dependencies:
396 | "@babel/helper-plugin-utils" "^7.10.4"
397 |
398 | "@babel/plugin-syntax-object-rest-spread@^7.8.3":
399 | version "7.8.3"
400 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
401 | integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
402 | dependencies:
403 | "@babel/helper-plugin-utils" "^7.8.0"
404 |
405 | "@babel/plugin-syntax-optional-catch-binding@^7.8.3":
406 | version "7.8.3"
407 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
408 | integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
409 | dependencies:
410 | "@babel/helper-plugin-utils" "^7.8.0"
411 |
412 | "@babel/plugin-syntax-optional-chaining@^7.8.3":
413 | version "7.8.3"
414 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
415 | integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
416 | dependencies:
417 | "@babel/helper-plugin-utils" "^7.8.0"
418 |
419 | "@babel/plugin-syntax-private-property-in-object@^7.14.5":
420 | version "7.14.5"
421 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad"
422 | integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==
423 | dependencies:
424 | "@babel/helper-plugin-utils" "^7.14.5"
425 |
426 | "@babel/plugin-syntax-top-level-await@^7.14.5":
427 | version "7.14.5"
428 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
429 | integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
430 | dependencies:
431 | "@babel/helper-plugin-utils" "^7.14.5"
432 |
433 | "@babel/plugin-syntax-typescript@^7.7.2":
434 | version "7.25.9"
435 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399"
436 | integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==
437 | dependencies:
438 | "@babel/helper-plugin-utils" "^7.25.9"
439 |
440 | "@babel/template@^7.25.9", "@babel/template@^7.3.3":
441 | version "7.25.9"
442 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016"
443 | integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==
444 | dependencies:
445 | "@babel/code-frame" "^7.25.9"
446 | "@babel/parser" "^7.25.9"
447 | "@babel/types" "^7.25.9"
448 |
449 | "@babel/traverse@^7.25.9", "@babel/traverse@^7.26.7":
450 | version "7.26.7"
451 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.7.tgz#99a0a136f6a75e7fb8b0a1ace421e0b25994b8bb"
452 | integrity sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==
453 | dependencies:
454 | "@babel/code-frame" "^7.26.2"
455 | "@babel/generator" "^7.26.5"
456 | "@babel/parser" "^7.26.7"
457 | "@babel/template" "^7.25.9"
458 | "@babel/types" "^7.26.7"
459 | debug "^4.3.1"
460 | globals "^11.1.0"
461 |
462 | "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.5", "@babel/types@^7.26.7", "@babel/types@^7.3.3":
463 | version "7.26.7"
464 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.7.tgz#5e2b89c0768e874d4d061961f3a5a153d71dc17a"
465 | integrity sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==
466 | dependencies:
467 | "@babel/helper-string-parser" "^7.25.9"
468 | "@babel/helper-validator-identifier" "^7.25.9"
469 |
470 | "@bcoe/v8-coverage@^0.2.3":
471 | version "0.2.3"
472 | resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
473 | integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
474 |
475 | "@cspotcode/source-map-support@^0.8.0":
476 | version "0.8.1"
477 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
478 | integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==
479 | dependencies:
480 | "@jridgewell/trace-mapping" "0.3.9"
481 |
482 | "@fastify/busboy@^2.0.0":
483 | version "2.1.1"
484 | resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d"
485 | integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==
486 |
487 | "@istanbuljs/load-nyc-config@^1.0.0":
488 | version "1.1.0"
489 | resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
490 | integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==
491 | dependencies:
492 | camelcase "^5.3.1"
493 | find-up "^4.1.0"
494 | get-package-type "^0.1.0"
495 | js-yaml "^3.13.1"
496 | resolve-from "^5.0.0"
497 |
498 | "@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3":
499 | version "0.1.3"
500 | resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
501 | integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
502 |
503 | "@jest/console@^29.7.0":
504 | version "29.7.0"
505 | resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc"
506 | integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==
507 | dependencies:
508 | "@jest/types" "^29.6.3"
509 | "@types/node" "*"
510 | chalk "^4.0.0"
511 | jest-message-util "^29.7.0"
512 | jest-util "^29.7.0"
513 | slash "^3.0.0"
514 |
515 | "@jest/core@^29.7.0":
516 | version "29.7.0"
517 | resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f"
518 | integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==
519 | dependencies:
520 | "@jest/console" "^29.7.0"
521 | "@jest/reporters" "^29.7.0"
522 | "@jest/test-result" "^29.7.0"
523 | "@jest/transform" "^29.7.0"
524 | "@jest/types" "^29.6.3"
525 | "@types/node" "*"
526 | ansi-escapes "^4.2.1"
527 | chalk "^4.0.0"
528 | ci-info "^3.2.0"
529 | exit "^0.1.2"
530 | graceful-fs "^4.2.9"
531 | jest-changed-files "^29.7.0"
532 | jest-config "^29.7.0"
533 | jest-haste-map "^29.7.0"
534 | jest-message-util "^29.7.0"
535 | jest-regex-util "^29.6.3"
536 | jest-resolve "^29.7.0"
537 | jest-resolve-dependencies "^29.7.0"
538 | jest-runner "^29.7.0"
539 | jest-runtime "^29.7.0"
540 | jest-snapshot "^29.7.0"
541 | jest-util "^29.7.0"
542 | jest-validate "^29.7.0"
543 | jest-watcher "^29.7.0"
544 | micromatch "^4.0.4"
545 | pretty-format "^29.7.0"
546 | slash "^3.0.0"
547 | strip-ansi "^6.0.0"
548 |
549 | "@jest/environment@^29.7.0":
550 | version "29.7.0"
551 | resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7"
552 | integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==
553 | dependencies:
554 | "@jest/fake-timers" "^29.7.0"
555 | "@jest/types" "^29.6.3"
556 | "@types/node" "*"
557 | jest-mock "^29.7.0"
558 |
559 | "@jest/expect-utils@^29.7.0":
560 | version "29.7.0"
561 | resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6"
562 | integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==
563 | dependencies:
564 | jest-get-type "^29.6.3"
565 |
566 | "@jest/expect@^29.7.0":
567 | version "29.7.0"
568 | resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2"
569 | integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==
570 | dependencies:
571 | expect "^29.7.0"
572 | jest-snapshot "^29.7.0"
573 |
574 | "@jest/fake-timers@^29.7.0":
575 | version "29.7.0"
576 | resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565"
577 | integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==
578 | dependencies:
579 | "@jest/types" "^29.6.3"
580 | "@sinonjs/fake-timers" "^10.0.2"
581 | "@types/node" "*"
582 | jest-message-util "^29.7.0"
583 | jest-mock "^29.7.0"
584 | jest-util "^29.7.0"
585 |
586 | "@jest/globals@^29.7.0":
587 | version "29.7.0"
588 | resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d"
589 | integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==
590 | dependencies:
591 | "@jest/environment" "^29.7.0"
592 | "@jest/expect" "^29.7.0"
593 | "@jest/types" "^29.6.3"
594 | jest-mock "^29.7.0"
595 |
596 | "@jest/reporters@^29.7.0":
597 | version "29.7.0"
598 | resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7"
599 | integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==
600 | dependencies:
601 | "@bcoe/v8-coverage" "^0.2.3"
602 | "@jest/console" "^29.7.0"
603 | "@jest/test-result" "^29.7.0"
604 | "@jest/transform" "^29.7.0"
605 | "@jest/types" "^29.6.3"
606 | "@jridgewell/trace-mapping" "^0.3.18"
607 | "@types/node" "*"
608 | chalk "^4.0.0"
609 | collect-v8-coverage "^1.0.0"
610 | exit "^0.1.2"
611 | glob "^7.1.3"
612 | graceful-fs "^4.2.9"
613 | istanbul-lib-coverage "^3.0.0"
614 | istanbul-lib-instrument "^6.0.0"
615 | istanbul-lib-report "^3.0.0"
616 | istanbul-lib-source-maps "^4.0.0"
617 | istanbul-reports "^3.1.3"
618 | jest-message-util "^29.7.0"
619 | jest-util "^29.7.0"
620 | jest-worker "^29.7.0"
621 | slash "^3.0.0"
622 | string-length "^4.0.1"
623 | strip-ansi "^6.0.0"
624 | v8-to-istanbul "^9.0.1"
625 |
626 | "@jest/schemas@^29.6.3":
627 | version "29.6.3"
628 | resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03"
629 | integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==
630 | dependencies:
631 | "@sinclair/typebox" "^0.27.8"
632 |
633 | "@jest/source-map@^29.6.3":
634 | version "29.6.3"
635 | resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4"
636 | integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==
637 | dependencies:
638 | "@jridgewell/trace-mapping" "^0.3.18"
639 | callsites "^3.0.0"
640 | graceful-fs "^4.2.9"
641 |
642 | "@jest/test-result@^29.7.0":
643 | version "29.7.0"
644 | resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c"
645 | integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==
646 | dependencies:
647 | "@jest/console" "^29.7.0"
648 | "@jest/types" "^29.6.3"
649 | "@types/istanbul-lib-coverage" "^2.0.0"
650 | collect-v8-coverage "^1.0.0"
651 |
652 | "@jest/test-sequencer@^29.7.0":
653 | version "29.7.0"
654 | resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce"
655 | integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==
656 | dependencies:
657 | "@jest/test-result" "^29.7.0"
658 | graceful-fs "^4.2.9"
659 | jest-haste-map "^29.7.0"
660 | slash "^3.0.0"
661 |
662 | "@jest/transform@^29.7.0":
663 | version "29.7.0"
664 | resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c"
665 | integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==
666 | dependencies:
667 | "@babel/core" "^7.11.6"
668 | "@jest/types" "^29.6.3"
669 | "@jridgewell/trace-mapping" "^0.3.18"
670 | babel-plugin-istanbul "^6.1.1"
671 | chalk "^4.0.0"
672 | convert-source-map "^2.0.0"
673 | fast-json-stable-stringify "^2.1.0"
674 | graceful-fs "^4.2.9"
675 | jest-haste-map "^29.7.0"
676 | jest-regex-util "^29.6.3"
677 | jest-util "^29.7.0"
678 | micromatch "^4.0.4"
679 | pirates "^4.0.4"
680 | slash "^3.0.0"
681 | write-file-atomic "^4.0.2"
682 |
683 | "@jest/types@^29.6.3":
684 | version "29.6.3"
685 | resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59"
686 | integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==
687 | dependencies:
688 | "@jest/schemas" "^29.6.3"
689 | "@types/istanbul-lib-coverage" "^2.0.0"
690 | "@types/istanbul-reports" "^3.0.0"
691 | "@types/node" "*"
692 | "@types/yargs" "^17.0.8"
693 | chalk "^4.0.0"
694 |
695 | "@jridgewell/gen-mapping@^0.3.5":
696 | version "0.3.8"
697 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142"
698 | integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==
699 | dependencies:
700 | "@jridgewell/set-array" "^1.2.1"
701 | "@jridgewell/sourcemap-codec" "^1.4.10"
702 | "@jridgewell/trace-mapping" "^0.3.24"
703 |
704 | "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0":
705 | version "3.1.2"
706 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
707 | integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
708 |
709 | "@jridgewell/set-array@^1.2.1":
710 | version "1.2.1"
711 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280"
712 | integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
713 |
714 | "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
715 | version "1.5.0"
716 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
717 | integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
718 |
719 | "@jridgewell/trace-mapping@0.3.9":
720 | version "0.3.9"
721 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
722 | integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
723 | dependencies:
724 | "@jridgewell/resolve-uri" "^3.0.3"
725 | "@jridgewell/sourcemap-codec" "^1.4.10"
726 |
727 | "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
728 | version "0.3.25"
729 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0"
730 | integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
731 | dependencies:
732 | "@jridgewell/resolve-uri" "^3.1.0"
733 | "@jridgewell/sourcemap-codec" "^1.4.14"
734 |
735 | "@protobuf-ts/plugin-framework@^2.9.4":
736 | version "2.9.4"
737 | resolved "https://registry.yarnpkg.com/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.4.tgz#d7a617dedda4a12c568fdc1db5aa67d5e4da2406"
738 | integrity sha512-9nuX1kjdMliv+Pes8dQCKyVhjKgNNfwxVHg+tx3fLXSfZZRcUHMc1PMwB9/vTvc6gBKt9QGz5ERqSqZc0++E9A==
739 | dependencies:
740 | "@protobuf-ts/runtime" "^2.9.4"
741 | typescript "^3.9"
742 |
743 | "@protobuf-ts/plugin@^2.9.4":
744 | version "2.9.4"
745 | resolved "https://registry.yarnpkg.com/@protobuf-ts/plugin/-/plugin-2.9.4.tgz#4e593e59013aaad313e7abbabe6e61964ef0ca28"
746 | integrity sha512-Db5Laq5T3mc6ERZvhIhkj1rn57/p8gbWiCKxQWbZBBl20wMuqKoHbRw4tuD7FyXi+IkwTToaNVXymv5CY3E8Rw==
747 | dependencies:
748 | "@protobuf-ts/plugin-framework" "^2.9.4"
749 | "@protobuf-ts/protoc" "^2.9.4"
750 | "@protobuf-ts/runtime" "^2.9.4"
751 | "@protobuf-ts/runtime-rpc" "^2.9.4"
752 | typescript "^3.9"
753 |
754 | "@protobuf-ts/protoc@^2.9.4":
755 | version "2.9.4"
756 | resolved "https://registry.yarnpkg.com/@protobuf-ts/protoc/-/protoc-2.9.4.tgz#a92262ee64d252998540238701d2140f4ffec081"
757 | integrity sha512-hQX+nOhFtrA+YdAXsXEDrLoGJqXHpgv4+BueYF0S9hy/Jq0VRTVlJS1Etmf4qlMt/WdigEes5LOd/LDzui4GIQ==
758 |
759 | "@protobuf-ts/runtime-rpc@^2.9.4":
760 | version "2.9.4"
761 | resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.4.tgz#d6ab2316c0ba67ce5a08863bb23203a837ff2a3b"
762 | integrity sha512-y9L9JgnZxXFqH5vD4d7j9duWvIJ7AShyBRoNKJGhu9Q27qIbchfzli66H9RvrQNIFk5ER7z1Twe059WZGqERcA==
763 | dependencies:
764 | "@protobuf-ts/runtime" "^2.9.4"
765 |
766 | "@protobuf-ts/runtime@^2.9.4":
767 | version "2.9.4"
768 | resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime/-/runtime-2.9.4.tgz#db8a78b1c409e26d258ca39464f4757d804add8f"
769 | integrity sha512-vHRFWtJJB/SiogWDF0ypoKfRIZ41Kq+G9cEFj6Qm1eQaAhJ1LDFvgZ7Ja4tb3iLOQhz0PaoPnnOijF1qmEqTxg==
770 |
771 | "@sinclair/typebox@^0.27.8":
772 | version "0.27.8"
773 | resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
774 | integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
775 |
776 | "@sinonjs/commons@^3.0.0":
777 | version "3.0.1"
778 | resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd"
779 | integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==
780 | dependencies:
781 | type-detect "4.0.8"
782 |
783 | "@sinonjs/fake-timers@^10.0.2":
784 | version "10.3.0"
785 | resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66"
786 | integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==
787 | dependencies:
788 | "@sinonjs/commons" "^3.0.0"
789 |
790 | "@tsconfig/node10@^1.0.7":
791 | version "1.0.11"
792 | resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2"
793 | integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==
794 |
795 | "@tsconfig/node12@^1.0.7":
796 | version "1.0.11"
797 | resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d"
798 | integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==
799 |
800 | "@tsconfig/node14@^1.0.0":
801 | version "1.0.3"
802 | resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1"
803 | integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==
804 |
805 | "@tsconfig/node16@^1.0.2":
806 | version "1.0.4"
807 | resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9"
808 | integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==
809 |
810 | "@types/babel__core@^7.1.14":
811 | version "7.20.5"
812 | resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017"
813 | integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==
814 | dependencies:
815 | "@babel/parser" "^7.20.7"
816 | "@babel/types" "^7.20.7"
817 | "@types/babel__generator" "*"
818 | "@types/babel__template" "*"
819 | "@types/babel__traverse" "*"
820 |
821 | "@types/babel__generator@*":
822 | version "7.6.8"
823 | resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab"
824 | integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==
825 | dependencies:
826 | "@babel/types" "^7.0.0"
827 |
828 | "@types/babel__template@*":
829 | version "7.4.4"
830 | resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f"
831 | integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==
832 | dependencies:
833 | "@babel/parser" "^7.1.0"
834 | "@babel/types" "^7.0.0"
835 |
836 | "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
837 | version "7.20.6"
838 | resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7"
839 | integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==
840 | dependencies:
841 | "@babel/types" "^7.20.7"
842 |
843 | "@types/graceful-fs@^4.1.3":
844 | version "4.1.9"
845 | resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4"
846 | integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==
847 | dependencies:
848 | "@types/node" "*"
849 |
850 | "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
851 | version "2.0.6"
852 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7"
853 | integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==
854 |
855 | "@types/istanbul-lib-report@*":
856 | version "3.0.3"
857 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf"
858 | integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==
859 | dependencies:
860 | "@types/istanbul-lib-coverage" "*"
861 |
862 | "@types/istanbul-reports@^3.0.0":
863 | version "3.0.4"
864 | resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54"
865 | integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==
866 | dependencies:
867 | "@types/istanbul-lib-report" "*"
868 |
869 | "@types/jest@^29.5.14":
870 | version "29.5.14"
871 | resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5"
872 | integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==
873 | dependencies:
874 | expect "^29.0.0"
875 | pretty-format "^29.0.0"
876 |
877 | "@types/js-yaml@^4.0.5":
878 | version "4.0.9"
879 | resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.9.tgz#cd82382c4f902fed9691a2ed79ec68c5898af4c2"
880 | integrity sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==
881 |
882 | "@types/node@*", "@types/node@^22.14.1":
883 | version "22.15.30"
884 | resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.30.tgz#3a20431783e28dd0b0326f84ab386a2ec81d921d"
885 | integrity sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==
886 | dependencies:
887 | undici-types "~6.21.0"
888 |
889 | "@types/stack-utils@^2.0.0":
890 | version "2.0.3"
891 | resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8"
892 | integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==
893 |
894 | "@types/yargs-parser@*":
895 | version "21.0.3"
896 | resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15"
897 | integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==
898 |
899 | "@types/yargs@^17.0.8":
900 | version "17.0.33"
901 | resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d"
902 | integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==
903 | dependencies:
904 | "@types/yargs-parser" "*"
905 |
906 | "@vercel/ncc@^0.38.3":
907 | version "0.38.3"
908 | resolved "https://registry.yarnpkg.com/@vercel/ncc/-/ncc-0.38.3.tgz#5475eeee3ac0f1a439f237596911525a490a88b5"
909 | integrity sha512-rnK6hJBS6mwc+Bkab+PGPs9OiS0i/3kdTO+CkI8V0/VrW3vmz7O2Pxjw/owOlmo6PKEIxRSeZKv/kuL9itnpYA==
910 |
911 | abort-controller@^3.0.0:
912 | version "3.0.0"
913 | resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
914 | integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
915 | dependencies:
916 | event-target-shim "^5.0.0"
917 |
918 | acorn-walk@^8.1.1:
919 | version "8.3.4"
920 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7"
921 | integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==
922 | dependencies:
923 | acorn "^8.11.0"
924 |
925 | acorn@^8.11.0, acorn@^8.4.1:
926 | version "8.14.0"
927 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0"
928 | integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
929 |
930 | action-docs@^2.5.1:
931 | version "2.5.1"
932 | resolved "https://registry.yarnpkg.com/action-docs/-/action-docs-2.5.1.tgz#6ec3ab8bb5e8f33ccbc34a3d879a797c0d814baf"
933 | integrity sha512-kACC20UOsuVifAEYZAAMsm+Lpq14nWXM3FDbIUqUiu7s3KtlGSfRG5btboYIGNomZQ5coTc/UR1F5H9yRqTAEw==
934 | dependencies:
935 | chalk "^5.3.0"
936 | figlet "^1.7.0"
937 | replace-in-file "^7.1.0"
938 | showdown "^2.1.0"
939 | yaml "^2.3.4"
940 | yargs "^17.7.2"
941 |
942 | agent-base@^7.1.0, agent-base@^7.1.2:
943 | version "7.1.3"
944 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1"
945 | integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==
946 |
947 | ansi-escapes@^4.2.1:
948 | version "4.3.2"
949 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
950 | integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
951 | dependencies:
952 | type-fest "^0.21.3"
953 |
954 | ansi-regex@^5.0.1:
955 | version "5.0.1"
956 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
957 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
958 |
959 | ansi-styles@^4.0.0, ansi-styles@^4.1.0:
960 | version "4.3.0"
961 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
962 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
963 | dependencies:
964 | color-convert "^2.0.1"
965 |
966 | ansi-styles@^5.0.0:
967 | version "5.2.0"
968 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
969 | integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
970 |
971 | anymatch@^3.0.3:
972 | version "3.1.3"
973 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
974 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
975 | dependencies:
976 | normalize-path "^3.0.0"
977 | picomatch "^2.0.4"
978 |
979 | arg@^4.1.0:
980 | version "4.1.3"
981 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
982 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
983 |
984 | argparse@^1.0.7:
985 | version "1.0.10"
986 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
987 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
988 | dependencies:
989 | sprintf-js "~1.0.2"
990 |
991 | argparse@^2.0.1:
992 | version "2.0.1"
993 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
994 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
995 |
996 | async@^3.2.3:
997 | version "3.2.6"
998 | resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce"
999 | integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==
1000 |
1001 | asynckit@^0.4.0:
1002 | version "0.4.0"
1003 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
1004 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
1005 |
1006 | babel-jest@^29.7.0:
1007 | version "29.7.0"
1008 | resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5"
1009 | integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==
1010 | dependencies:
1011 | "@jest/transform" "^29.7.0"
1012 | "@types/babel__core" "^7.1.14"
1013 | babel-plugin-istanbul "^6.1.1"
1014 | babel-preset-jest "^29.6.3"
1015 | chalk "^4.0.0"
1016 | graceful-fs "^4.2.9"
1017 | slash "^3.0.0"
1018 |
1019 | babel-plugin-istanbul@^6.1.1:
1020 | version "6.1.1"
1021 | resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73"
1022 | integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==
1023 | dependencies:
1024 | "@babel/helper-plugin-utils" "^7.0.0"
1025 | "@istanbuljs/load-nyc-config" "^1.0.0"
1026 | "@istanbuljs/schema" "^0.1.2"
1027 | istanbul-lib-instrument "^5.0.4"
1028 | test-exclude "^6.0.0"
1029 |
1030 | babel-plugin-jest-hoist@^29.6.3:
1031 | version "29.6.3"
1032 | resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626"
1033 | integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==
1034 | dependencies:
1035 | "@babel/template" "^7.3.3"
1036 | "@babel/types" "^7.3.3"
1037 | "@types/babel__core" "^7.1.14"
1038 | "@types/babel__traverse" "^7.0.6"
1039 |
1040 | babel-preset-current-node-syntax@^1.0.0:
1041 | version "1.1.0"
1042 | resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz#9a929eafece419612ef4ae4f60b1862ebad8ef30"
1043 | integrity sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==
1044 | dependencies:
1045 | "@babel/plugin-syntax-async-generators" "^7.8.4"
1046 | "@babel/plugin-syntax-bigint" "^7.8.3"
1047 | "@babel/plugin-syntax-class-properties" "^7.12.13"
1048 | "@babel/plugin-syntax-class-static-block" "^7.14.5"
1049 | "@babel/plugin-syntax-import-attributes" "^7.24.7"
1050 | "@babel/plugin-syntax-import-meta" "^7.10.4"
1051 | "@babel/plugin-syntax-json-strings" "^7.8.3"
1052 | "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
1053 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
1054 | "@babel/plugin-syntax-numeric-separator" "^7.10.4"
1055 | "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
1056 | "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
1057 | "@babel/plugin-syntax-optional-chaining" "^7.8.3"
1058 | "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
1059 | "@babel/plugin-syntax-top-level-await" "^7.14.5"
1060 |
1061 | babel-preset-jest@^29.6.3:
1062 | version "29.6.3"
1063 | resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c"
1064 | integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==
1065 | dependencies:
1066 | babel-plugin-jest-hoist "^29.6.3"
1067 | babel-preset-current-node-syntax "^1.0.0"
1068 |
1069 | balanced-match@^1.0.0:
1070 | version "1.0.2"
1071 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
1072 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
1073 |
1074 | brace-expansion@^1.1.7:
1075 | version "1.1.11"
1076 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
1077 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
1078 | dependencies:
1079 | balanced-match "^1.0.0"
1080 | concat-map "0.0.1"
1081 |
1082 | brace-expansion@^2.0.1:
1083 | version "2.0.1"
1084 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
1085 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
1086 | dependencies:
1087 | balanced-match "^1.0.0"
1088 |
1089 | braces@^3.0.3:
1090 | version "3.0.3"
1091 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
1092 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
1093 | dependencies:
1094 | fill-range "^7.1.1"
1095 |
1096 | browserslist@^4.24.0:
1097 | version "4.24.4"
1098 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b"
1099 | integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==
1100 | dependencies:
1101 | caniuse-lite "^1.0.30001688"
1102 | electron-to-chromium "^1.5.73"
1103 | node-releases "^2.0.19"
1104 | update-browserslist-db "^1.1.1"
1105 |
1106 | bs-logger@^0.2.6:
1107 | version "0.2.6"
1108 | resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8"
1109 | integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==
1110 | dependencies:
1111 | fast-json-stable-stringify "2.x"
1112 |
1113 | bser@2.1.1:
1114 | version "2.1.1"
1115 | resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
1116 | integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==
1117 | dependencies:
1118 | node-int64 "^0.4.0"
1119 |
1120 | buffer-from@^1.0.0:
1121 | version "1.1.2"
1122 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
1123 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
1124 |
1125 | callsites@^3.0.0:
1126 | version "3.1.0"
1127 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
1128 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
1129 |
1130 | camelcase@^5.3.1:
1131 | version "5.3.1"
1132 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
1133 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
1134 |
1135 | camelcase@^6.2.0:
1136 | version "6.3.0"
1137 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
1138 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
1139 |
1140 | caniuse-lite@^1.0.30001688:
1141 | version "1.0.30001697"
1142 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001697.tgz#040bbbb54463c4b4b3377c716b34a322d16e6fc7"
1143 | integrity sha512-GwNPlWJin8E+d7Gxq96jxM6w0w+VFeyyXRsjU58emtkYqnbwHqXm5uT2uCmO0RQE9htWknOP4xtBlLmM/gWxvQ==
1144 |
1145 | chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.2:
1146 | version "4.1.2"
1147 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
1148 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
1149 | dependencies:
1150 | ansi-styles "^4.1.0"
1151 | supports-color "^7.1.0"
1152 |
1153 | chalk@^5.3.0:
1154 | version "5.4.1"
1155 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.4.1.tgz#1b48bf0963ec158dce2aacf69c093ae2dd2092d8"
1156 | integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==
1157 |
1158 | char-regex@^1.0.2:
1159 | version "1.0.2"
1160 | resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
1161 | integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==
1162 |
1163 | ci-info@^3.2.0:
1164 | version "3.9.0"
1165 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
1166 | integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
1167 |
1168 | cjs-module-lexer@^1.0.0:
1169 | version "1.4.3"
1170 | resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz#0f79731eb8cfe1ec72acd4066efac9d61991b00d"
1171 | integrity sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==
1172 |
1173 | cliui@^8.0.1:
1174 | version "8.0.1"
1175 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
1176 | integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
1177 | dependencies:
1178 | string-width "^4.2.0"
1179 | strip-ansi "^6.0.1"
1180 | wrap-ansi "^7.0.0"
1181 |
1182 | co@^4.6.0:
1183 | version "4.6.0"
1184 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
1185 | integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==
1186 |
1187 | collect-v8-coverage@^1.0.0:
1188 | version "1.0.2"
1189 | resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9"
1190 | integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==
1191 |
1192 | color-convert@^2.0.1:
1193 | version "2.0.1"
1194 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
1195 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
1196 | dependencies:
1197 | color-name "~1.1.4"
1198 |
1199 | color-name@~1.1.4:
1200 | version "1.1.4"
1201 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
1202 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
1203 |
1204 | combined-stream@^1.0.6:
1205 | version "1.0.8"
1206 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
1207 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
1208 | dependencies:
1209 | delayed-stream "~1.0.0"
1210 |
1211 | commander@^9.0.0:
1212 | version "9.5.0"
1213 | resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30"
1214 | integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==
1215 |
1216 | concat-map@0.0.1:
1217 | version "0.0.1"
1218 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
1219 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
1220 |
1221 | convert-source-map@^2.0.0:
1222 | version "2.0.0"
1223 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a"
1224 | integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
1225 |
1226 | create-jest@^29.7.0:
1227 | version "29.7.0"
1228 | resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320"
1229 | integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==
1230 | dependencies:
1231 | "@jest/types" "^29.6.3"
1232 | chalk "^4.0.0"
1233 | exit "^0.1.2"
1234 | graceful-fs "^4.2.9"
1235 | jest-config "^29.7.0"
1236 | jest-util "^29.7.0"
1237 | prompts "^2.0.1"
1238 |
1239 | create-require@^1.1.0:
1240 | version "1.1.1"
1241 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
1242 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
1243 |
1244 | cross-spawn@^7.0.3:
1245 | version "7.0.6"
1246 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
1247 | integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
1248 | dependencies:
1249 | path-key "^3.1.0"
1250 | shebang-command "^2.0.0"
1251 | which "^2.0.1"
1252 |
1253 | debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4:
1254 | version "4.4.0"
1255 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a"
1256 | integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
1257 | dependencies:
1258 | ms "^2.1.3"
1259 |
1260 | dedent@^1.0.0:
1261 | version "1.5.3"
1262 | resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a"
1263 | integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==
1264 |
1265 | deepmerge@^4.2.2:
1266 | version "4.3.1"
1267 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a"
1268 | integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
1269 |
1270 | delayed-stream@~1.0.0:
1271 | version "1.0.0"
1272 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
1273 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
1274 |
1275 | detect-newline@^3.0.0:
1276 | version "3.1.0"
1277 | resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
1278 | integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
1279 |
1280 | diff-sequences@^29.6.3:
1281 | version "29.6.3"
1282 | resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921"
1283 | integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==
1284 |
1285 | diff@^4.0.1:
1286 | version "4.0.2"
1287 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
1288 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
1289 |
1290 | ejs@^3.1.10:
1291 | version "3.1.10"
1292 | resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b"
1293 | integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==
1294 | dependencies:
1295 | jake "^10.8.5"
1296 |
1297 | electron-to-chromium@^1.5.73:
1298 | version "1.5.91"
1299 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.91.tgz#cf5567f6853062493242133aefd4dc8dc8440abd"
1300 | integrity sha512-sNSHHyq048PFmZY4S90ax61q+gLCs0X0YmcOII9wG9S2XwbVr+h4VW2wWhnbp/Eys3cCwTxVF292W3qPaxIapQ==
1301 |
1302 | emittery@^0.13.1:
1303 | version "0.13.1"
1304 | resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad"
1305 | integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==
1306 |
1307 | emoji-regex@^8.0.0:
1308 | version "8.0.0"
1309 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
1310 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
1311 |
1312 | error-ex@^1.3.1:
1313 | version "1.3.2"
1314 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
1315 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
1316 | dependencies:
1317 | is-arrayish "^0.2.1"
1318 |
1319 | escalade@^3.1.1, escalade@^3.2.0:
1320 | version "3.2.0"
1321 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
1322 | integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
1323 |
1324 | escape-string-regexp@^2.0.0:
1325 | version "2.0.0"
1326 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
1327 | integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
1328 |
1329 | esprima@^4.0.0:
1330 | version "4.0.1"
1331 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
1332 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
1333 |
1334 | event-target-shim@^5.0.0:
1335 | version "5.0.1"
1336 | resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
1337 | integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
1338 |
1339 | events@^3.0.0:
1340 | version "3.3.0"
1341 | resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
1342 | integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
1343 |
1344 | execa@^5.0.0:
1345 | version "5.1.1"
1346 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
1347 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
1348 | dependencies:
1349 | cross-spawn "^7.0.3"
1350 | get-stream "^6.0.0"
1351 | human-signals "^2.1.0"
1352 | is-stream "^2.0.0"
1353 | merge-stream "^2.0.0"
1354 | npm-run-path "^4.0.1"
1355 | onetime "^5.1.2"
1356 | signal-exit "^3.0.3"
1357 | strip-final-newline "^2.0.0"
1358 |
1359 | exit@^0.1.2:
1360 | version "0.1.2"
1361 | resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
1362 | integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==
1363 |
1364 | expect@^29.0.0, expect@^29.7.0:
1365 | version "29.7.0"
1366 | resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc"
1367 | integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==
1368 | dependencies:
1369 | "@jest/expect-utils" "^29.7.0"
1370 | jest-get-type "^29.6.3"
1371 | jest-matcher-utils "^29.7.0"
1372 | jest-message-util "^29.7.0"
1373 | jest-util "^29.7.0"
1374 |
1375 | fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.1.0:
1376 | version "2.1.0"
1377 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
1378 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
1379 |
1380 | fast-xml-parser@^4.4.1:
1381 | version "4.5.1"
1382 | resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.1.tgz#a7e665ff79b7919100a5202f23984b6150f9b31e"
1383 | integrity sha512-y655CeyUQ+jj7KBbYMc4FG01V8ZQqjN+gDYGJ50RtfsUB8iG9AmwmwoAgeKLJdmueKKMrH1RJ7yXHTSoczdv5w==
1384 | dependencies:
1385 | strnum "^1.0.5"
1386 |
1387 | fb-watchman@^2.0.0:
1388 | version "2.0.2"
1389 | resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c"
1390 | integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==
1391 | dependencies:
1392 | bser "2.1.1"
1393 |
1394 | figlet@^1.7.0:
1395 | version "1.8.0"
1396 | resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.8.0.tgz#1b93c4f65f4c1a3b1135221987eee8cf8b9c0ac7"
1397 | integrity sha512-chzvGjd+Sp7KUvPHZv6EXV5Ir3Q7kYNpCr4aHrRW79qFtTefmQZNny+W1pW9kf5zeE6dikku2W50W/wAH2xWgw==
1398 |
1399 | filelist@^1.0.4:
1400 | version "1.0.4"
1401 | resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
1402 | integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==
1403 | dependencies:
1404 | minimatch "^5.0.1"
1405 |
1406 | fill-range@^7.1.1:
1407 | version "7.1.1"
1408 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
1409 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
1410 | dependencies:
1411 | to-regex-range "^5.0.1"
1412 |
1413 | find-up@^4.0.0, find-up@^4.1.0:
1414 | version "4.1.0"
1415 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
1416 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
1417 | dependencies:
1418 | locate-path "^5.0.0"
1419 | path-exists "^4.0.0"
1420 |
1421 | form-data@^2.5.0:
1422 | version "2.5.2"
1423 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.2.tgz#dc653743d1de2fcc340ceea38079daf6e9069fd2"
1424 | integrity sha512-GgwY0PS7DbXqajuGf4OYlsrIu3zgxD6Vvql43IBhm6MahqA5SK/7mwhtNj2AdH2z35YR34ujJ7BN+3fFC3jP5Q==
1425 | dependencies:
1426 | asynckit "^0.4.0"
1427 | combined-stream "^1.0.6"
1428 | mime-types "^2.1.12"
1429 | safe-buffer "^5.2.1"
1430 |
1431 | fs.realpath@^1.0.0:
1432 | version "1.0.0"
1433 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
1434 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
1435 |
1436 | fsevents@^2.3.2:
1437 | version "2.3.3"
1438 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
1439 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
1440 |
1441 | function-bind@^1.1.2:
1442 | version "1.1.2"
1443 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
1444 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
1445 |
1446 | gensync@^1.0.0-beta.2:
1447 | version "1.0.0-beta.2"
1448 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
1449 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
1450 |
1451 | get-caller-file@^2.0.5:
1452 | version "2.0.5"
1453 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
1454 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
1455 |
1456 | get-package-type@^0.1.0:
1457 | version "0.1.0"
1458 | resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
1459 | integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
1460 |
1461 | get-stream@^6.0.0:
1462 | version "6.0.1"
1463 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
1464 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
1465 |
1466 | glob@^7.1.3, glob@^7.1.4:
1467 | version "7.2.3"
1468 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
1469 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
1470 | dependencies:
1471 | fs.realpath "^1.0.0"
1472 | inflight "^1.0.4"
1473 | inherits "2"
1474 | minimatch "^3.1.1"
1475 | once "^1.3.0"
1476 | path-is-absolute "^1.0.0"
1477 |
1478 | glob@^8.1.0:
1479 | version "8.1.0"
1480 | resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e"
1481 | integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
1482 | dependencies:
1483 | fs.realpath "^1.0.0"
1484 | inflight "^1.0.4"
1485 | inherits "2"
1486 | minimatch "^5.0.1"
1487 | once "^1.3.0"
1488 |
1489 | globals@^11.1.0:
1490 | version "11.12.0"
1491 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
1492 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
1493 |
1494 | graceful-fs@^4.2.9:
1495 | version "4.2.11"
1496 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
1497 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
1498 |
1499 | has-flag@^4.0.0:
1500 | version "4.0.0"
1501 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
1502 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
1503 |
1504 | hasown@^2.0.2:
1505 | version "2.0.2"
1506 | resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
1507 | integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
1508 | dependencies:
1509 | function-bind "^1.1.2"
1510 |
1511 | html-escaper@^2.0.0:
1512 | version "2.0.2"
1513 | resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
1514 | integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
1515 |
1516 | http-proxy-agent@^7.0.0:
1517 | version "7.0.2"
1518 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e"
1519 | integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==
1520 | dependencies:
1521 | agent-base "^7.1.0"
1522 | debug "^4.3.4"
1523 |
1524 | https-proxy-agent@^7.0.0:
1525 | version "7.0.6"
1526 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9"
1527 | integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==
1528 | dependencies:
1529 | agent-base "^7.1.2"
1530 | debug "4"
1531 |
1532 | human-signals@^2.1.0:
1533 | version "2.1.0"
1534 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
1535 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
1536 |
1537 | import-local@^3.0.2:
1538 | version "3.2.0"
1539 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260"
1540 | integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==
1541 | dependencies:
1542 | pkg-dir "^4.2.0"
1543 | resolve-cwd "^3.0.0"
1544 |
1545 | imurmurhash@^0.1.4:
1546 | version "0.1.4"
1547 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
1548 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
1549 |
1550 | inflight@^1.0.4:
1551 | version "1.0.6"
1552 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
1553 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
1554 | dependencies:
1555 | once "^1.3.0"
1556 | wrappy "1"
1557 |
1558 | inherits@2:
1559 | version "2.0.4"
1560 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
1561 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
1562 |
1563 | is-arrayish@^0.2.1:
1564 | version "0.2.1"
1565 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
1566 | integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
1567 |
1568 | is-core-module@^2.16.0:
1569 | version "2.16.1"
1570 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4"
1571 | integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
1572 | dependencies:
1573 | hasown "^2.0.2"
1574 |
1575 | is-fullwidth-code-point@^3.0.0:
1576 | version "3.0.0"
1577 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
1578 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
1579 |
1580 | is-generator-fn@^2.0.0:
1581 | version "2.1.0"
1582 | resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
1583 | integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
1584 |
1585 | is-number@^7.0.0:
1586 | version "7.0.0"
1587 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
1588 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
1589 |
1590 | is-stream@^2.0.0:
1591 | version "2.0.1"
1592 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
1593 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
1594 |
1595 | isexe@^2.0.0:
1596 | version "2.0.0"
1597 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
1598 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
1599 |
1600 | istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0:
1601 | version "3.2.2"
1602 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756"
1603 | integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==
1604 |
1605 | istanbul-lib-instrument@^5.0.4:
1606 | version "5.2.1"
1607 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d"
1608 | integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==
1609 | dependencies:
1610 | "@babel/core" "^7.12.3"
1611 | "@babel/parser" "^7.14.7"
1612 | "@istanbuljs/schema" "^0.1.2"
1613 | istanbul-lib-coverage "^3.2.0"
1614 | semver "^6.3.0"
1615 |
1616 | istanbul-lib-instrument@^6.0.0:
1617 | version "6.0.3"
1618 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765"
1619 | integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==
1620 | dependencies:
1621 | "@babel/core" "^7.23.9"
1622 | "@babel/parser" "^7.23.9"
1623 | "@istanbuljs/schema" "^0.1.3"
1624 | istanbul-lib-coverage "^3.2.0"
1625 | semver "^7.5.4"
1626 |
1627 | istanbul-lib-report@^3.0.0:
1628 | version "3.0.1"
1629 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d"
1630 | integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==
1631 | dependencies:
1632 | istanbul-lib-coverage "^3.0.0"
1633 | make-dir "^4.0.0"
1634 | supports-color "^7.1.0"
1635 |
1636 | istanbul-lib-source-maps@^4.0.0:
1637 | version "4.0.1"
1638 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551"
1639 | integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==
1640 | dependencies:
1641 | debug "^4.1.1"
1642 | istanbul-lib-coverage "^3.0.0"
1643 | source-map "^0.6.1"
1644 |
1645 | istanbul-reports@^3.1.3:
1646 | version "3.1.7"
1647 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b"
1648 | integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==
1649 | dependencies:
1650 | html-escaper "^2.0.0"
1651 | istanbul-lib-report "^3.0.0"
1652 |
1653 | jake@^10.8.5:
1654 | version "10.9.2"
1655 | resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f"
1656 | integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==
1657 | dependencies:
1658 | async "^3.2.3"
1659 | chalk "^4.0.2"
1660 | filelist "^1.0.4"
1661 | minimatch "^3.1.2"
1662 |
1663 | jest-changed-files@^29.7.0:
1664 | version "29.7.0"
1665 | resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a"
1666 | integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==
1667 | dependencies:
1668 | execa "^5.0.0"
1669 | jest-util "^29.7.0"
1670 | p-limit "^3.1.0"
1671 |
1672 | jest-circus@^29.7.0:
1673 | version "29.7.0"
1674 | resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a"
1675 | integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==
1676 | dependencies:
1677 | "@jest/environment" "^29.7.0"
1678 | "@jest/expect" "^29.7.0"
1679 | "@jest/test-result" "^29.7.0"
1680 | "@jest/types" "^29.6.3"
1681 | "@types/node" "*"
1682 | chalk "^4.0.0"
1683 | co "^4.6.0"
1684 | dedent "^1.0.0"
1685 | is-generator-fn "^2.0.0"
1686 | jest-each "^29.7.0"
1687 | jest-matcher-utils "^29.7.0"
1688 | jest-message-util "^29.7.0"
1689 | jest-runtime "^29.7.0"
1690 | jest-snapshot "^29.7.0"
1691 | jest-util "^29.7.0"
1692 | p-limit "^3.1.0"
1693 | pretty-format "^29.7.0"
1694 | pure-rand "^6.0.0"
1695 | slash "^3.0.0"
1696 | stack-utils "^2.0.3"
1697 |
1698 | jest-cli@^29.7.0:
1699 | version "29.7.0"
1700 | resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995"
1701 | integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==
1702 | dependencies:
1703 | "@jest/core" "^29.7.0"
1704 | "@jest/test-result" "^29.7.0"
1705 | "@jest/types" "^29.6.3"
1706 | chalk "^4.0.0"
1707 | create-jest "^29.7.0"
1708 | exit "^0.1.2"
1709 | import-local "^3.0.2"
1710 | jest-config "^29.7.0"
1711 | jest-util "^29.7.0"
1712 | jest-validate "^29.7.0"
1713 | yargs "^17.3.1"
1714 |
1715 | jest-config@^29.7.0:
1716 | version "29.7.0"
1717 | resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f"
1718 | integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==
1719 | dependencies:
1720 | "@babel/core" "^7.11.6"
1721 | "@jest/test-sequencer" "^29.7.0"
1722 | "@jest/types" "^29.6.3"
1723 | babel-jest "^29.7.0"
1724 | chalk "^4.0.0"
1725 | ci-info "^3.2.0"
1726 | deepmerge "^4.2.2"
1727 | glob "^7.1.3"
1728 | graceful-fs "^4.2.9"
1729 | jest-circus "^29.7.0"
1730 | jest-environment-node "^29.7.0"
1731 | jest-get-type "^29.6.3"
1732 | jest-regex-util "^29.6.3"
1733 | jest-resolve "^29.7.0"
1734 | jest-runner "^29.7.0"
1735 | jest-util "^29.7.0"
1736 | jest-validate "^29.7.0"
1737 | micromatch "^4.0.4"
1738 | parse-json "^5.2.0"
1739 | pretty-format "^29.7.0"
1740 | slash "^3.0.0"
1741 | strip-json-comments "^3.1.1"
1742 |
1743 | jest-diff@^29.7.0:
1744 | version "29.7.0"
1745 | resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a"
1746 | integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==
1747 | dependencies:
1748 | chalk "^4.0.0"
1749 | diff-sequences "^29.6.3"
1750 | jest-get-type "^29.6.3"
1751 | pretty-format "^29.7.0"
1752 |
1753 | jest-docblock@^29.7.0:
1754 | version "29.7.0"
1755 | resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a"
1756 | integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==
1757 | dependencies:
1758 | detect-newline "^3.0.0"
1759 |
1760 | jest-each@^29.7.0:
1761 | version "29.7.0"
1762 | resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1"
1763 | integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==
1764 | dependencies:
1765 | "@jest/types" "^29.6.3"
1766 | chalk "^4.0.0"
1767 | jest-get-type "^29.6.3"
1768 | jest-util "^29.7.0"
1769 | pretty-format "^29.7.0"
1770 |
1771 | jest-environment-node@^29.7.0:
1772 | version "29.7.0"
1773 | resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376"
1774 | integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==
1775 | dependencies:
1776 | "@jest/environment" "^29.7.0"
1777 | "@jest/fake-timers" "^29.7.0"
1778 | "@jest/types" "^29.6.3"
1779 | "@types/node" "*"
1780 | jest-mock "^29.7.0"
1781 | jest-util "^29.7.0"
1782 |
1783 | jest-get-type@^29.6.3:
1784 | version "29.6.3"
1785 | resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1"
1786 | integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==
1787 |
1788 | jest-haste-map@^29.7.0:
1789 | version "29.7.0"
1790 | resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104"
1791 | integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==
1792 | dependencies:
1793 | "@jest/types" "^29.6.3"
1794 | "@types/graceful-fs" "^4.1.3"
1795 | "@types/node" "*"
1796 | anymatch "^3.0.3"
1797 | fb-watchman "^2.0.0"
1798 | graceful-fs "^4.2.9"
1799 | jest-regex-util "^29.6.3"
1800 | jest-util "^29.7.0"
1801 | jest-worker "^29.7.0"
1802 | micromatch "^4.0.4"
1803 | walker "^1.0.8"
1804 | optionalDependencies:
1805 | fsevents "^2.3.2"
1806 |
1807 | jest-leak-detector@^29.7.0:
1808 | version "29.7.0"
1809 | resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728"
1810 | integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==
1811 | dependencies:
1812 | jest-get-type "^29.6.3"
1813 | pretty-format "^29.7.0"
1814 |
1815 | jest-matcher-utils@^29.7.0:
1816 | version "29.7.0"
1817 | resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12"
1818 | integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==
1819 | dependencies:
1820 | chalk "^4.0.0"
1821 | jest-diff "^29.7.0"
1822 | jest-get-type "^29.6.3"
1823 | pretty-format "^29.7.0"
1824 |
1825 | jest-message-util@^29.7.0:
1826 | version "29.7.0"
1827 | resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3"
1828 | integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==
1829 | dependencies:
1830 | "@babel/code-frame" "^7.12.13"
1831 | "@jest/types" "^29.6.3"
1832 | "@types/stack-utils" "^2.0.0"
1833 | chalk "^4.0.0"
1834 | graceful-fs "^4.2.9"
1835 | micromatch "^4.0.4"
1836 | pretty-format "^29.7.0"
1837 | slash "^3.0.0"
1838 | stack-utils "^2.0.3"
1839 |
1840 | jest-mock@^29.7.0:
1841 | version "29.7.0"
1842 | resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347"
1843 | integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==
1844 | dependencies:
1845 | "@jest/types" "^29.6.3"
1846 | "@types/node" "*"
1847 | jest-util "^29.7.0"
1848 |
1849 | jest-pnp-resolver@^1.2.2:
1850 | version "1.2.3"
1851 | resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e"
1852 | integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==
1853 |
1854 | jest-regex-util@^29.6.3:
1855 | version "29.6.3"
1856 | resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52"
1857 | integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==
1858 |
1859 | jest-resolve-dependencies@^29.7.0:
1860 | version "29.7.0"
1861 | resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428"
1862 | integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==
1863 | dependencies:
1864 | jest-regex-util "^29.6.3"
1865 | jest-snapshot "^29.7.0"
1866 |
1867 | jest-resolve@^29.7.0:
1868 | version "29.7.0"
1869 | resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30"
1870 | integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==
1871 | dependencies:
1872 | chalk "^4.0.0"
1873 | graceful-fs "^4.2.9"
1874 | jest-haste-map "^29.7.0"
1875 | jest-pnp-resolver "^1.2.2"
1876 | jest-util "^29.7.0"
1877 | jest-validate "^29.7.0"
1878 | resolve "^1.20.0"
1879 | resolve.exports "^2.0.0"
1880 | slash "^3.0.0"
1881 |
1882 | jest-runner@^29.7.0:
1883 | version "29.7.0"
1884 | resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e"
1885 | integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==
1886 | dependencies:
1887 | "@jest/console" "^29.7.0"
1888 | "@jest/environment" "^29.7.0"
1889 | "@jest/test-result" "^29.7.0"
1890 | "@jest/transform" "^29.7.0"
1891 | "@jest/types" "^29.6.3"
1892 | "@types/node" "*"
1893 | chalk "^4.0.0"
1894 | emittery "^0.13.1"
1895 | graceful-fs "^4.2.9"
1896 | jest-docblock "^29.7.0"
1897 | jest-environment-node "^29.7.0"
1898 | jest-haste-map "^29.7.0"
1899 | jest-leak-detector "^29.7.0"
1900 | jest-message-util "^29.7.0"
1901 | jest-resolve "^29.7.0"
1902 | jest-runtime "^29.7.0"
1903 | jest-util "^29.7.0"
1904 | jest-watcher "^29.7.0"
1905 | jest-worker "^29.7.0"
1906 | p-limit "^3.1.0"
1907 | source-map-support "0.5.13"
1908 |
1909 | jest-runtime@^29.7.0:
1910 | version "29.7.0"
1911 | resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817"
1912 | integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==
1913 | dependencies:
1914 | "@jest/environment" "^29.7.0"
1915 | "@jest/fake-timers" "^29.7.0"
1916 | "@jest/globals" "^29.7.0"
1917 | "@jest/source-map" "^29.6.3"
1918 | "@jest/test-result" "^29.7.0"
1919 | "@jest/transform" "^29.7.0"
1920 | "@jest/types" "^29.6.3"
1921 | "@types/node" "*"
1922 | chalk "^4.0.0"
1923 | cjs-module-lexer "^1.0.0"
1924 | collect-v8-coverage "^1.0.0"
1925 | glob "^7.1.3"
1926 | graceful-fs "^4.2.9"
1927 | jest-haste-map "^29.7.0"
1928 | jest-message-util "^29.7.0"
1929 | jest-mock "^29.7.0"
1930 | jest-regex-util "^29.6.3"
1931 | jest-resolve "^29.7.0"
1932 | jest-snapshot "^29.7.0"
1933 | jest-util "^29.7.0"
1934 | slash "^3.0.0"
1935 | strip-bom "^4.0.0"
1936 |
1937 | jest-snapshot@^29.7.0:
1938 | version "29.7.0"
1939 | resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5"
1940 | integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==
1941 | dependencies:
1942 | "@babel/core" "^7.11.6"
1943 | "@babel/generator" "^7.7.2"
1944 | "@babel/plugin-syntax-jsx" "^7.7.2"
1945 | "@babel/plugin-syntax-typescript" "^7.7.2"
1946 | "@babel/types" "^7.3.3"
1947 | "@jest/expect-utils" "^29.7.0"
1948 | "@jest/transform" "^29.7.0"
1949 | "@jest/types" "^29.6.3"
1950 | babel-preset-current-node-syntax "^1.0.0"
1951 | chalk "^4.0.0"
1952 | expect "^29.7.0"
1953 | graceful-fs "^4.2.9"
1954 | jest-diff "^29.7.0"
1955 | jest-get-type "^29.6.3"
1956 | jest-matcher-utils "^29.7.0"
1957 | jest-message-util "^29.7.0"
1958 | jest-util "^29.7.0"
1959 | natural-compare "^1.4.0"
1960 | pretty-format "^29.7.0"
1961 | semver "^7.5.3"
1962 |
1963 | jest-util@^29.0.0, jest-util@^29.7.0:
1964 | version "29.7.0"
1965 | resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc"
1966 | integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==
1967 | dependencies:
1968 | "@jest/types" "^29.6.3"
1969 | "@types/node" "*"
1970 | chalk "^4.0.0"
1971 | ci-info "^3.2.0"
1972 | graceful-fs "^4.2.9"
1973 | picomatch "^2.2.3"
1974 |
1975 | jest-validate@^29.7.0:
1976 | version "29.7.0"
1977 | resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c"
1978 | integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==
1979 | dependencies:
1980 | "@jest/types" "^29.6.3"
1981 | camelcase "^6.2.0"
1982 | chalk "^4.0.0"
1983 | jest-get-type "^29.6.3"
1984 | leven "^3.1.0"
1985 | pretty-format "^29.7.0"
1986 |
1987 | jest-watcher@^29.7.0:
1988 | version "29.7.0"
1989 | resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2"
1990 | integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==
1991 | dependencies:
1992 | "@jest/test-result" "^29.7.0"
1993 | "@jest/types" "^29.6.3"
1994 | "@types/node" "*"
1995 | ansi-escapes "^4.2.1"
1996 | chalk "^4.0.0"
1997 | emittery "^0.13.1"
1998 | jest-util "^29.7.0"
1999 | string-length "^4.0.1"
2000 |
2001 | jest-worker@^29.7.0:
2002 | version "29.7.0"
2003 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a"
2004 | integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==
2005 | dependencies:
2006 | "@types/node" "*"
2007 | jest-util "^29.7.0"
2008 | merge-stream "^2.0.0"
2009 | supports-color "^8.0.0"
2010 |
2011 | jest@^29.7.0:
2012 | version "29.7.0"
2013 | resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613"
2014 | integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==
2015 | dependencies:
2016 | "@jest/core" "^29.7.0"
2017 | "@jest/types" "^29.6.3"
2018 | import-local "^3.0.2"
2019 | jest-cli "^29.7.0"
2020 |
2021 | js-tokens@^4.0.0:
2022 | version "4.0.0"
2023 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
2024 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
2025 |
2026 | js-yaml@^3.13.1:
2027 | version "3.14.1"
2028 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
2029 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
2030 | dependencies:
2031 | argparse "^1.0.7"
2032 | esprima "^4.0.0"
2033 |
2034 | js-yaml@^4.1.0:
2035 | version "4.1.0"
2036 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
2037 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
2038 | dependencies:
2039 | argparse "^2.0.1"
2040 |
2041 | jsesc@^3.0.2:
2042 | version "3.1.0"
2043 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d"
2044 | integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==
2045 |
2046 | json-parse-even-better-errors@^2.3.0:
2047 | version "2.3.1"
2048 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
2049 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
2050 |
2051 | json5@^2.2.3:
2052 | version "2.2.3"
2053 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
2054 | integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
2055 |
2056 | kleur@^3.0.3:
2057 | version "3.0.3"
2058 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
2059 | integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
2060 |
2061 | leven@^3.1.0:
2062 | version "3.1.0"
2063 | resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
2064 | integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
2065 |
2066 | lines-and-columns@^1.1.6:
2067 | version "1.2.4"
2068 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
2069 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
2070 |
2071 | locate-path@^5.0.0:
2072 | version "5.0.0"
2073 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
2074 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
2075 | dependencies:
2076 | p-locate "^4.1.0"
2077 |
2078 | lodash.memoize@^4.1.2:
2079 | version "4.1.2"
2080 | resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
2081 | integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==
2082 |
2083 | lru-cache@^5.1.1:
2084 | version "5.1.1"
2085 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
2086 | integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
2087 | dependencies:
2088 | yallist "^3.0.2"
2089 |
2090 | make-dir@^4.0.0:
2091 | version "4.0.0"
2092 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e"
2093 | integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==
2094 | dependencies:
2095 | semver "^7.5.3"
2096 |
2097 | make-error@^1.1.1, make-error@^1.3.6:
2098 | version "1.3.6"
2099 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
2100 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
2101 |
2102 | makeerror@1.0.12:
2103 | version "1.0.12"
2104 | resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a"
2105 | integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==
2106 | dependencies:
2107 | tmpl "1.0.5"
2108 |
2109 | merge-stream@^2.0.0:
2110 | version "2.0.0"
2111 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
2112 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
2113 |
2114 | micromatch@^4.0.4:
2115 | version "4.0.8"
2116 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
2117 | integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
2118 | dependencies:
2119 | braces "^3.0.3"
2120 | picomatch "^2.3.1"
2121 |
2122 | mime-db@1.52.0:
2123 | version "1.52.0"
2124 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
2125 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
2126 |
2127 | mime-types@^2.1.12:
2128 | version "2.1.35"
2129 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
2130 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
2131 | dependencies:
2132 | mime-db "1.52.0"
2133 |
2134 | mimic-fn@^2.1.0:
2135 | version "2.1.0"
2136 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
2137 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
2138 |
2139 | minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
2140 | version "3.1.2"
2141 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
2142 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
2143 | dependencies:
2144 | brace-expansion "^1.1.7"
2145 |
2146 | minimatch@^5.0.1:
2147 | version "5.1.6"
2148 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
2149 | integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
2150 | dependencies:
2151 | brace-expansion "^2.0.1"
2152 |
2153 | ms@^2.1.3:
2154 | version "2.1.3"
2155 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
2156 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
2157 |
2158 | natural-compare@^1.4.0:
2159 | version "1.4.0"
2160 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
2161 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
2162 |
2163 | node-fetch@^2.6.7:
2164 | version "2.7.0"
2165 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
2166 | integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
2167 | dependencies:
2168 | whatwg-url "^5.0.0"
2169 |
2170 | node-int64@^0.4.0:
2171 | version "0.4.0"
2172 | resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
2173 | integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==
2174 |
2175 | node-releases@^2.0.19:
2176 | version "2.0.19"
2177 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314"
2178 | integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==
2179 |
2180 | normalize-path@^3.0.0:
2181 | version "3.0.0"
2182 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
2183 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
2184 |
2185 | npm-run-path@^4.0.1:
2186 | version "4.0.1"
2187 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
2188 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
2189 | dependencies:
2190 | path-key "^3.0.0"
2191 |
2192 | once@^1.3.0:
2193 | version "1.4.0"
2194 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
2195 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
2196 | dependencies:
2197 | wrappy "1"
2198 |
2199 | onetime@^5.1.2:
2200 | version "5.1.2"
2201 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
2202 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
2203 | dependencies:
2204 | mimic-fn "^2.1.0"
2205 |
2206 | p-limit@^2.2.0:
2207 | version "2.3.0"
2208 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
2209 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
2210 | dependencies:
2211 | p-try "^2.0.0"
2212 |
2213 | p-limit@^3.1.0:
2214 | version "3.1.0"
2215 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
2216 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
2217 | dependencies:
2218 | yocto-queue "^0.1.0"
2219 |
2220 | p-locate@^4.1.0:
2221 | version "4.1.0"
2222 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
2223 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
2224 | dependencies:
2225 | p-limit "^2.2.0"
2226 |
2227 | p-try@^2.0.0:
2228 | version "2.2.0"
2229 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
2230 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
2231 |
2232 | parse-json@^5.2.0:
2233 | version "5.2.0"
2234 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
2235 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
2236 | dependencies:
2237 | "@babel/code-frame" "^7.0.0"
2238 | error-ex "^1.3.1"
2239 | json-parse-even-better-errors "^2.3.0"
2240 | lines-and-columns "^1.1.6"
2241 |
2242 | path-exists@^4.0.0:
2243 | version "4.0.0"
2244 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
2245 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
2246 |
2247 | path-is-absolute@^1.0.0:
2248 | version "1.0.1"
2249 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
2250 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
2251 |
2252 | path-key@^3.0.0, path-key@^3.1.0:
2253 | version "3.1.1"
2254 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
2255 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
2256 |
2257 | path-parse@^1.0.7:
2258 | version "1.0.7"
2259 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
2260 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
2261 |
2262 | picocolors@^1.0.0, picocolors@^1.1.1:
2263 | version "1.1.1"
2264 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
2265 | integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
2266 |
2267 | picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1:
2268 | version "2.3.1"
2269 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
2270 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
2271 |
2272 | pirates@^4.0.4:
2273 | version "4.0.6"
2274 | resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
2275 | integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
2276 |
2277 | pkg-dir@^4.2.0:
2278 | version "4.2.0"
2279 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
2280 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
2281 | dependencies:
2282 | find-up "^4.0.0"
2283 |
2284 | prettier@^3.5.3:
2285 | version "3.5.3"
2286 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5"
2287 | integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==
2288 |
2289 | pretty-format@^29.0.0, pretty-format@^29.7.0:
2290 | version "29.7.0"
2291 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812"
2292 | integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==
2293 | dependencies:
2294 | "@jest/schemas" "^29.6.3"
2295 | ansi-styles "^5.0.0"
2296 | react-is "^18.0.0"
2297 |
2298 | prompts@^2.0.1:
2299 | version "2.4.2"
2300 | resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
2301 | integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==
2302 | dependencies:
2303 | kleur "^3.0.3"
2304 | sisteransi "^1.0.5"
2305 |
2306 | pure-rand@^6.0.0:
2307 | version "6.1.0"
2308 | resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2"
2309 | integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==
2310 |
2311 | react-is@^18.0.0:
2312 | version "18.3.1"
2313 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e"
2314 | integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
2315 |
2316 | replace-in-file@^7.1.0:
2317 | version "7.2.0"
2318 | resolved "https://registry.yarnpkg.com/replace-in-file/-/replace-in-file-7.2.0.tgz#bd66f97202ae2196fc9126d3bceab1dda68b7cc2"
2319 | integrity sha512-CiLXVop3o8/h2Kd1PwKPPimmS9wUV0Ki6Fl8+1ITD35nB3Gl/PrW5IONpTE0AXk0z4v8WYcpEpdeZqMXvSnWpg==
2320 | dependencies:
2321 | chalk "^4.1.2"
2322 | glob "^8.1.0"
2323 | yargs "^17.7.2"
2324 |
2325 | require-directory@^2.1.1:
2326 | version "2.1.1"
2327 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
2328 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
2329 |
2330 | resolve-cwd@^3.0.0:
2331 | version "3.0.0"
2332 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
2333 | integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
2334 | dependencies:
2335 | resolve-from "^5.0.0"
2336 |
2337 | resolve-from@^5.0.0:
2338 | version "5.0.0"
2339 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
2340 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
2341 |
2342 | resolve.exports@^2.0.0:
2343 | version "2.0.3"
2344 | resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.3.tgz#41955e6f1b4013b7586f873749a635dea07ebe3f"
2345 | integrity sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==
2346 |
2347 | resolve@^1.20.0:
2348 | version "1.22.10"
2349 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39"
2350 | integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==
2351 | dependencies:
2352 | is-core-module "^2.16.0"
2353 | path-parse "^1.0.7"
2354 | supports-preserve-symlinks-flag "^1.0.0"
2355 |
2356 | safe-buffer@^5.2.1:
2357 | version "5.2.1"
2358 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
2359 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
2360 |
2361 | sax@>=0.6.0:
2362 | version "1.4.1"
2363 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f"
2364 | integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==
2365 |
2366 | semver@^6.3.0, semver@^6.3.1:
2367 | version "6.3.1"
2368 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
2369 | integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
2370 |
2371 | semver@^7.5.3, semver@^7.5.4:
2372 | version "7.7.1"
2373 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f"
2374 | integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==
2375 |
2376 | semver@^7.7.2:
2377 | version "7.7.2"
2378 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58"
2379 | integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==
2380 |
2381 | shebang-command@^2.0.0:
2382 | version "2.0.0"
2383 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
2384 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
2385 | dependencies:
2386 | shebang-regex "^3.0.0"
2387 |
2388 | shebang-regex@^3.0.0:
2389 | version "3.0.0"
2390 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
2391 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
2392 |
2393 | shellwords-ts@^3.0.1:
2394 | version "3.0.1"
2395 | resolved "https://registry.yarnpkg.com/shellwords-ts/-/shellwords-ts-3.0.1.tgz#7c2ed81ea6d0804705a95a5625682363972600e2"
2396 | integrity sha512-GabK4ApLMqHFRGlpgNqg8dmtHTnYHt0WUUJkIeMd3QaDrUUBEDXHSSNi3I0PzMimg8W+I0EN4TshQxsnHv1cwg==
2397 |
2398 | showdown@^2.1.0:
2399 | version "2.1.0"
2400 | resolved "https://registry.yarnpkg.com/showdown/-/showdown-2.1.0.tgz#1251f5ed8f773f0c0c7bfc8e6fd23581f9e545c5"
2401 | integrity sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==
2402 | dependencies:
2403 | commander "^9.0.0"
2404 |
2405 | signal-exit@^3.0.3, signal-exit@^3.0.7:
2406 | version "3.0.7"
2407 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
2408 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
2409 |
2410 | sisteransi@^1.0.5:
2411 | version "1.0.5"
2412 | resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
2413 | integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
2414 |
2415 | slash@^3.0.0:
2416 | version "3.0.0"
2417 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
2418 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
2419 |
2420 | source-map-support@0.5.13:
2421 | version "0.5.13"
2422 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
2423 | integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
2424 | dependencies:
2425 | buffer-from "^1.0.0"
2426 | source-map "^0.6.0"
2427 |
2428 | source-map@^0.6.0, source-map@^0.6.1:
2429 | version "0.6.1"
2430 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
2431 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
2432 |
2433 | sprintf-js@~1.0.2:
2434 | version "1.0.3"
2435 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
2436 | integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
2437 |
2438 | stack-utils@^2.0.3:
2439 | version "2.0.6"
2440 | resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f"
2441 | integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==
2442 | dependencies:
2443 | escape-string-regexp "^2.0.0"
2444 |
2445 | string-length@^4.0.1:
2446 | version "4.0.2"
2447 | resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a"
2448 | integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==
2449 | dependencies:
2450 | char-regex "^1.0.2"
2451 | strip-ansi "^6.0.0"
2452 |
2453 | string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
2454 | version "4.2.3"
2455 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
2456 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
2457 | dependencies:
2458 | emoji-regex "^8.0.0"
2459 | is-fullwidth-code-point "^3.0.0"
2460 | strip-ansi "^6.0.1"
2461 |
2462 | strip-ansi@^6.0.0, strip-ansi@^6.0.1:
2463 | version "6.0.1"
2464 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
2465 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
2466 | dependencies:
2467 | ansi-regex "^5.0.1"
2468 |
2469 | strip-bom@^4.0.0:
2470 | version "4.0.0"
2471 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
2472 | integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
2473 |
2474 | strip-final-newline@^2.0.0:
2475 | version "2.0.0"
2476 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
2477 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
2478 |
2479 | strip-json-comments@^3.1.1:
2480 | version "3.1.1"
2481 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
2482 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
2483 |
2484 | strnum@^1.0.5:
2485 | version "1.0.5"
2486 | resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db"
2487 | integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==
2488 |
2489 | supports-color@^7.1.0:
2490 | version "7.2.0"
2491 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
2492 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
2493 | dependencies:
2494 | has-flag "^4.0.0"
2495 |
2496 | supports-color@^8.0.0:
2497 | version "8.1.1"
2498 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
2499 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
2500 | dependencies:
2501 | has-flag "^4.0.0"
2502 |
2503 | supports-preserve-symlinks-flag@^1.0.0:
2504 | version "1.0.0"
2505 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
2506 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
2507 |
2508 | test-exclude@^6.0.0:
2509 | version "6.0.0"
2510 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"
2511 | integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==
2512 | dependencies:
2513 | "@istanbuljs/schema" "^0.1.2"
2514 | glob "^7.1.4"
2515 | minimatch "^3.0.4"
2516 |
2517 | tmpl@1.0.5:
2518 | version "1.0.5"
2519 | resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
2520 | integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==
2521 |
2522 | to-regex-range@^5.0.1:
2523 | version "5.0.1"
2524 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
2525 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
2526 | dependencies:
2527 | is-number "^7.0.0"
2528 |
2529 | tr46@~0.0.3:
2530 | version "0.0.3"
2531 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
2532 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
2533 |
2534 | ts-jest@^29.3.2:
2535 | version "29.3.4"
2536 | resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.3.4.tgz#9354472aceae1d3867a80e8e02014ea5901aee41"
2537 | integrity sha512-Iqbrm8IXOmV+ggWHOTEbjwyCf2xZlUMv5npExksXohL+tk8va4Fjhb+X2+Rt9NBmgO7bJ8WpnMLOwih/DnMlFA==
2538 | dependencies:
2539 | bs-logger "^0.2.6"
2540 | ejs "^3.1.10"
2541 | fast-json-stable-stringify "^2.1.0"
2542 | jest-util "^29.0.0"
2543 | json5 "^2.2.3"
2544 | lodash.memoize "^4.1.2"
2545 | make-error "^1.3.6"
2546 | semver "^7.7.2"
2547 | type-fest "^4.41.0"
2548 | yargs-parser "^21.1.1"
2549 |
2550 | ts-node@^10.9.2:
2551 | version "10.9.2"
2552 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f"
2553 | integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==
2554 | dependencies:
2555 | "@cspotcode/source-map-support" "^0.8.0"
2556 | "@tsconfig/node10" "^1.0.7"
2557 | "@tsconfig/node12" "^1.0.7"
2558 | "@tsconfig/node14" "^1.0.0"
2559 | "@tsconfig/node16" "^1.0.2"
2560 | acorn "^8.4.1"
2561 | acorn-walk "^8.1.1"
2562 | arg "^4.1.0"
2563 | create-require "^1.1.0"
2564 | diff "^4.0.1"
2565 | make-error "^1.1.1"
2566 | v8-compile-cache-lib "^3.0.1"
2567 | yn "3.1.1"
2568 |
2569 | tslib@^1.10.0:
2570 | version "1.14.1"
2571 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
2572 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
2573 |
2574 | tslib@^2.2.0, tslib@^2.6.2:
2575 | version "2.8.1"
2576 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
2577 | integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
2578 |
2579 | tunnel@0.0.6, tunnel@^0.0.6:
2580 | version "0.0.6"
2581 | resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c"
2582 | integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==
2583 |
2584 | type-detect@4.0.8:
2585 | version "4.0.8"
2586 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
2587 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
2588 |
2589 | type-fest@^0.21.3:
2590 | version "0.21.3"
2591 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
2592 | integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
2593 |
2594 | type-fest@^4.41.0:
2595 | version "4.41.0"
2596 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.41.0.tgz#6ae1c8e5731273c2bf1f58ad39cbae2c91a46c58"
2597 | integrity sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==
2598 |
2599 | typescript@^3.9:
2600 | version "3.9.10"
2601 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8"
2602 | integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==
2603 |
2604 | typescript@^5.8.3:
2605 | version "5.8.3"
2606 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e"
2607 | integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==
2608 |
2609 | undici-types@~6.21.0:
2610 | version "6.21.0"
2611 | resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb"
2612 | integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==
2613 |
2614 | undici@^5.25.4:
2615 | version "5.29.0"
2616 | resolved "https://registry.yarnpkg.com/undici/-/undici-5.29.0.tgz#419595449ae3f2cdcba3580a2e8903399bd1f5a3"
2617 | integrity sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==
2618 | dependencies:
2619 | "@fastify/busboy" "^2.0.0"
2620 |
2621 | update-browserslist-db@^1.1.1:
2622 | version "1.1.2"
2623 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz#97e9c96ab0ae7bcac08e9ae5151d26e6bc6b5580"
2624 | integrity sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==
2625 | dependencies:
2626 | escalade "^3.2.0"
2627 | picocolors "^1.1.1"
2628 |
2629 | uuid@^8.3.2:
2630 | version "8.3.2"
2631 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
2632 | integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
2633 |
2634 | v8-compile-cache-lib@^3.0.1:
2635 | version "3.0.1"
2636 | resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
2637 | integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
2638 |
2639 | v8-to-istanbul@^9.0.1:
2640 | version "9.3.0"
2641 | resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175"
2642 | integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==
2643 | dependencies:
2644 | "@jridgewell/trace-mapping" "^0.3.12"
2645 | "@types/istanbul-lib-coverage" "^2.0.1"
2646 | convert-source-map "^2.0.0"
2647 |
2648 | walker@^1.0.8:
2649 | version "1.0.8"
2650 | resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f"
2651 | integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==
2652 | dependencies:
2653 | makeerror "1.0.12"
2654 |
2655 | webidl-conversions@^3.0.0:
2656 | version "3.0.1"
2657 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
2658 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
2659 |
2660 | whatwg-url@^5.0.0:
2661 | version "5.0.0"
2662 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
2663 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
2664 | dependencies:
2665 | tr46 "~0.0.3"
2666 | webidl-conversions "^3.0.0"
2667 |
2668 | which@^2.0.1:
2669 | version "2.0.2"
2670 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
2671 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
2672 | dependencies:
2673 | isexe "^2.0.0"
2674 |
2675 | wrap-ansi@^7.0.0:
2676 | version "7.0.0"
2677 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
2678 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
2679 | dependencies:
2680 | ansi-styles "^4.0.0"
2681 | string-width "^4.1.0"
2682 | strip-ansi "^6.0.0"
2683 |
2684 | wrappy@1:
2685 | version "1.0.2"
2686 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
2687 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
2688 |
2689 | write-file-atomic@^4.0.2:
2690 | version "4.0.2"
2691 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd"
2692 | integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==
2693 | dependencies:
2694 | imurmurhash "^0.1.4"
2695 | signal-exit "^3.0.7"
2696 |
2697 | xml2js@^0.5.0:
2698 | version "0.5.0"
2699 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7"
2700 | integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==
2701 | dependencies:
2702 | sax ">=0.6.0"
2703 | xmlbuilder "~11.0.0"
2704 |
2705 | xmlbuilder@~11.0.0:
2706 | version "11.0.1"
2707 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3"
2708 | integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==
2709 |
2710 | y18n@^5.0.5:
2711 | version "5.0.8"
2712 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
2713 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
2714 |
2715 | yallist@^3.0.2:
2716 | version "3.1.1"
2717 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
2718 | integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
2719 |
2720 | yaml@^2.3.4:
2721 | version "2.7.0"
2722 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98"
2723 | integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==
2724 |
2725 | yargs-parser@^21.1.1:
2726 | version "21.1.1"
2727 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
2728 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
2729 |
2730 | yargs@^17.3.1, yargs@^17.7.2:
2731 | version "17.7.2"
2732 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
2733 | integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
2734 | dependencies:
2735 | cliui "^8.0.1"
2736 | escalade "^3.1.1"
2737 | get-caller-file "^2.0.5"
2738 | require-directory "^2.1.1"
2739 | string-width "^4.2.3"
2740 | y18n "^5.0.5"
2741 | yargs-parser "^21.1.1"
2742 |
2743 | yn@3.1.1:
2744 | version "3.1.1"
2745 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
2746 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
2747 |
2748 | yocto-queue@^0.1.0:
2749 | version "0.1.0"
2750 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
2751 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
2752 |
--------------------------------------------------------------------------------