├── .github └── workflows │ └── workflow.yml ├── .gitignore ├── .prettierignore ├── .prettierrc.json ├── README.md ├── action.yml ├── deploy.sh ├── dist ├── index.js └── release-postinstall.js ├── index.ts ├── package.json ├── release-postinstall.js ├── tsconfig.json └── yarn.lock /.github/workflows/workflow.yml: -------------------------------------------------------------------------------- 1 | name: Main workflow 2 | 3 | on: 4 | - push 5 | 6 | jobs: 7 | build: 8 | strategy: 9 | fail-fast: false 10 | matrix: 11 | os: 12 | - macos-latest 13 | - ubuntu-latest 14 | - windows-latest 15 | 16 | runs-on: ${{ matrix.os }} 17 | 18 | steps: 19 | - name: Checkout code 20 | uses: actions/checkout@v4 21 | 22 | - name: Use Node.js 20.x 23 | uses: actions/setup-node@v4 24 | with: 25 | node-version: 20.x 26 | 27 | - name: Install npm packages 28 | run: yarn --frozen-lockfile 29 | 30 | - name: Ensure dist directory is up-to-date 31 | if: runner.os == 'Linux' 32 | shell: bash 33 | run: | 34 | yarn build 35 | if [ "$(git status dist --porcelain | wc -l)" -gt "0" ]; then 36 | echo "Detected uncommitted changes after build. See status below:" 37 | git diff 38 | exit 1 39 | fi 40 | 41 | - name: Check formatting 42 | run: yarn fmt:check 43 | 44 | - name: Check type 45 | run: yarn typecheck 46 | 47 | - name: Install esy 48 | run: npm install -g esy 49 | 50 | - name: Create esy.json 51 | run: | 52 | echo ' 53 | { 54 | "name": "test", 55 | "dependencies": { 56 | "ocaml": "5.x" 57 | } 58 | } 59 | ' > esy.json 60 | 61 | - name: Run esy action 62 | uses: ./ 63 | with: 64 | cache-key: ${{ hashFiles('esy.json') }} 65 | 66 | - name: Check if _esy exists 67 | run: stat _esy 68 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "endOfLine": "auto", 3 | "proseWrap": "always" 4 | } 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # esy - GitHub Action 2 | 3 | This action will setup [`esy`](https://esy.sh/) and cache any dependencies that 4 | are built (hopefully saving you CI minutes). Additionally, it can help you 5 | package your apps for multiple platforms into a single NPM tarball. 6 | 7 | For instance, 8 | 9 | ``` 10 | npm i -g your-app 11 | ``` 12 | 13 | Even if it's single command, the tarball can contain binaries for multiple 14 | target platforms - this action will create a postinstall script that will 15 | install the correct binaries. 16 | 17 | Another benefit of this approach, is that, this action creates binary wrappers 18 | that make your apps self-sufficient in terms of runtime dependencies. For 19 | instance, if you need a runtime dependency (say, `zlib`), it can be tricky to 20 | make sure the user has the correct version installed via their system package 21 | manager. On Windows this is harder that one might expect. Read more about binary 22 | wrappers on [`esy` documentation](https://esy.sh/docs/concepts/#release) 23 | 24 | ## Example 25 | 26 | ```yml 27 | name: Build 28 | 29 | on: [push] 30 | jobs: 31 | build: 32 | steps: 33 | - uses: esy/github-action@v2 34 | with: 35 | cache-key: ${{ hashFiles('esy.lock/index.json') }} 36 | ``` 37 | 38 | ## How does it work? 39 | 40 | To create cross-platform builds without this action, you'll need to 41 | 42 | 1. Run `esy npm-release` on each `${{ matrix.os }}` 43 | 2. Upload the `_release` folder as an artifact for a later job. 44 | 3. In a job later, download the `_release` folder from each platform and place 45 | them together inside that NPM package that would be distributed. Now, the NPM 46 | package would contain binaries for multiple platforms. 47 | 4. Make sure there's a postinstall script that would install the correct target 48 | platform's binaries (by inspect the environment) 49 | 5. Run `esyInstallRelease.js` to set up the binary wrappers. 50 | 51 | With this action, you wont need to do any of these. It will do all this for you 52 | and upload a `npm-release.tgz` for you to distribute later. 53 | 54 | ## Static linking 55 | 56 | Statically linked binaries are desirable for many. To build such binaries for 57 | OCaml projects, you'll need `musl-libc` and the most portable way of gettting it 58 | is Docker. 59 | 60 | This action doesn't provide a convenient way to produce statically linked 61 | binaries yet. You'll have to set up a separate job that uses Docker Actions, 62 | build the OCaml project with a `musl` enabled OCaml compiler inside a docker 63 | container and copy the artifacts out. 64 | 65 | Here's an example `Dockerfile` to create such a container. 66 | 67 | ```dockerfile 68 | FROM esydev/esy:nightly-alpine-latest 69 | 70 | COPY package.json package.json 71 | COPY esy.lock esy.lock 72 | RUN esy i 73 | RUN esy build-dependencies 74 | COPY hello.ml hello.ml 75 | RUN esy 76 | 77 | ENTRYPOINT ["/entrypoint.sh"] 78 | ``` 79 | 80 | Here's an example job on Github. 81 | 82 | ```yaml 83 | static-build: 84 | runs-on: ubuntu-latest 85 | steps: 86 | - name: Set up Docker Buildx 87 | uses: docker/setup-buildx-action@v3 88 | - name: Build and push 89 | uses: docker/build-push-action@v5 90 | with: 91 | file: ./docker/DevImage.Dockerfile 92 | push: false 93 | tags: user/app:latest 94 | - run: | 95 | docker container run --pull=never -itd --network=host --name "" "" 96 | docker cp ":/usr/local/lib/esy" "/lib/esy" 97 | docker cp ":/usr/local/bin/esy" "/bin" 98 | docker cp ":/usr/local/bin/esyInstallRelease.js" "/bin" 99 | name: "Copy artifacts from /usr/local/ in the container" 100 | - run: | 101 | tar czf npm-tarball.tgz _container_release 102 | mv npm-tarball.tgz _container_release 103 | ``` 104 | 105 | For a complete working example, refer 106 | [how esy does this](https://github.com/esy/esy/blob/e124b61db298c9f917478c013d8ee700ce67a5ff/.github/workflows/release.yml#L42), 107 | but use the Dockerfile above instead. 108 | 109 | ## Inputs 110 | 111 | ### Required inputs 112 | 113 | #### `cache-key` 114 | 115 | The cache key. Typically `${{ hashFiles('esy.lock/index.json') }}`. You could 116 | also use a prefix additionally to bust cache when needed. 117 | 118 | Example: `20240801-2-${{ hashFiles('esy.lock/index.json') }}` 119 | 120 | #### `source-cache-key` 121 | 122 | Typically a value similar to `cache-key` but used instead for caching the 123 | sources of the dependencies. 124 | 125 | ### Optional inputs 126 | 127 | The following inputs are optional. When missing, the actions will fallback to 128 | use defaults are mentioned below. 129 | 130 | #### `esy-prefix` 131 | 132 | Path where esy can setup the cache. Default: `$HOME/.esy` 133 | 134 | #### `working-directory` 135 | 136 | Working directory of the project. Useful for projects that place esy project 137 | under a folder. It's converted into an absolute path, if it already isn't. 138 | 139 | Default: Action workspace root. 140 | 141 | #### `manifest` 142 | 143 | JSON or opam file to be used. 144 | 145 | #### `prepare-npm-artifacts-mode` 146 | 147 | Runs a step that prepare artifacts for releasing the app to NPM. Useful for CLI 148 | apps. These artifacts are later used by, `bundle-npm-tarball-mode` 149 | 150 | #### `bundle-npm-artifacts-mode` 151 | 152 | Runs a steps that bundle artifacts so that a single NPM tarball that contains 153 | binaries built for different platforms. This way, the app can be distributed on 154 | NPM under a single command, but will work on multiple platforms. `esy` itself 155 | uses this mode. 156 | 157 | #### `postinstall-js` 158 | 159 | Path to a custom `postinstall.js` file that could be placed in the final bundled 160 | NPM tarball. 161 | 162 | #### `setup-esy` 163 | 164 | Flag to control if esy itself should be installed by the action By default, it's 165 | true. You can disable it if you wish to install esy yourself 166 | 167 | Example: 168 | 169 | ``` 170 | steps: 171 | - run: npm i -g esy 172 | - uses: esy/github-action@v2 173 | with: 174 | source-cache-key: ${{ hashFiles('esy.lock/index.json') }} 175 | cache-key: ${{ hashFiles('esy.lock/index.json') }} 176 | setup-esy: false 177 | 178 | ``` 179 | 180 | #### `setup-esy-tarball` 181 | 182 | URL to esy tarball. Must be provided together with shasum and version. Else, the 183 | action will default to latest from NPM 184 | Example: `https://registry.npmjs.org/esy/-/esy-0.7.2.tgz` 185 | 186 | #### `setup-esy-shasum` 187 | 188 | shasum of the tarball. Must be provided together with shasum and version. Else, 189 | the action will default to latest from NPM 190 | 191 | #### `setup-esy-version` 192 | 193 | version of the esy tool. Must be provided together with shasum and version. 194 | Else, the action will default to latest from NPM 195 | 196 | #### `setup-esy-npm-package` 197 | 198 | Alternative NPM package that contains esy. Example: `@diningphilosophers/esy`. 199 | 200 | ## License 201 | 202 | BSD 2-Clause License 203 | -------------------------------------------------------------------------------- /action.yml: -------------------------------------------------------------------------------- 1 | name: esy - Github Action 2 | description: Run cached esy install and esy build 3 | inputs: 4 | cache-key: 5 | description: A cache key for esy.json/esy.lock. 6 | required: true 7 | source-cache-key: 8 | description: A cache key for retrieving esy sources cache. 9 | required: true 10 | working-directory: 11 | description: 12 | Working directory for esy. It's converted into an absolute path, if it 13 | already isn't 14 | required: false 15 | esy-prefix: 16 | description: Prefix of esy folder 17 | required: false 18 | manifest: 19 | description: JSON or opam file to be used 20 | required: false 21 | prepare-npm-artifacts-mode: 22 | description: 23 | Runs a steps that prepare artifacts for release the app to NPM. These 24 | artifacts are later used by, `bundle-npm-tarball-mode` 25 | required: false 26 | bundle-npm-artifacts-mode: 27 | description: Runs a steps that bundle artifacts for release the app to NPM. 28 | required: false 29 | postinstall-js: 30 | description: 31 | Path to a custom `postinstall.js` file that could be placed in the final 32 | bundled NPM tarball. 33 | required: false 34 | setup-esy: 35 | description: Flag to control if esy itself should be installed by the action 36 | required: false 37 | setup-esy-tarball: 38 | description: 39 | URL to esy tarball. Must be provided together with shasum and version. 40 | Else, the action will default to latest from NPM 41 | required: false 42 | setup-esy-shasum: 43 | description: 44 | shasum of the tarball. Must be provided together with shasum and version. 45 | Else, the action will default to latest from NPM 46 | required: false 47 | setup-esy-version: 48 | description: 49 | version of the esy tool. Must be provided together with shasum and 50 | version. Else, the action will default to latest from NPM 51 | required: false 52 | setup-esy-npm-package: 53 | description: 54 | Alternative NPM package that contains esy. Can contain version/tag too. Eg 55 | esy@beta. 56 | required: false 57 | runs: 58 | using: node20 59 | main: dist/index.js 60 | branding: 61 | icon: package 62 | color: red 63 | -------------------------------------------------------------------------------- /deploy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | yarn build 4 | git add -A 5 | git commit -m "$1" 6 | git tag -a -f -m "$2" v1 7 | git push origin HEAD 8 | git push --tags --force 9 | -------------------------------------------------------------------------------- /dist/release-postinstall.js: -------------------------------------------------------------------------------- 1 | /** 2 | * release-postinstall.js 3 | * 4 | * XXX: We want to keep this script installable at least with node 4.x. 5 | * 6 | * This script is bundled with the `npm` package and executed on release. 7 | * Since we have a 'fat' NPM package (with all platform binaries bundled), 8 | * this postinstall script extracts them and puts the current platform's 9 | * bits in the right place. 10 | */ 11 | 12 | var path = require("path"); 13 | var cp = require("child_process"); 14 | var fs = require("fs"); 15 | var os = require("os"); 16 | var platform = process.platform; 17 | 18 | var packageJson = require("./package.json"); 19 | 20 | function copyRecursive(srcDir, dstDir) { 21 | var results = []; 22 | var list = fs.readdirSync(srcDir); 23 | var src, dst; 24 | list.forEach(function (file) { 25 | src = path.join(srcDir, file); 26 | dst = path.join(dstDir, file); 27 | 28 | var stat = fs.statSync(src); 29 | if (stat && stat.isDirectory()) { 30 | try { 31 | fs.mkdirSync(dst); 32 | } catch (e) { 33 | console.log("directory already exists: " + dst); 34 | console.error(e); 35 | } 36 | results = results.concat(copyRecursive(src, dst)); 37 | } else { 38 | try { 39 | fs.writeFileSync(dst, fs.readFileSync(src)); 40 | } catch (e) { 41 | console.log("could't copy file: " + dst); 42 | console.error(e); 43 | } 44 | results.push(src); 45 | } 46 | }); 47 | return results; 48 | } 49 | 50 | // implementing it b/c we don't want to depend on fs.copyFileSync which appears 51 | // only in node@8.x 52 | function copyFileSync(sourcePath, destPath) { 53 | var data; 54 | try { 55 | data = fs.readFileSync(sourcePath); 56 | } catch (e) { 57 | data = fs.readFileSync(sourcePath + ".exe"); 58 | sourcePath = sourcePath + ".exe"; 59 | destPath = destPath + ".exe"; 60 | } 61 | var stat = fs.statSync(sourcePath); 62 | fs.writeFileSync(destPath, data); 63 | fs.chmodSync(destPath, 0755); 64 | } 65 | 66 | var copyPlatformBinaries = (platformPath, foldersToCopy) => { 67 | var platformBuildPath = path.join(__dirname, platformPath); 68 | 69 | let binariesToCopy; 70 | 71 | binariesToCopy = Object.keys(packageJson.bin).map(function (name) { 72 | return packageJson.bin[name]; 73 | }); 74 | 75 | binariesToCopy = binariesToCopy.concat(["esyInstallRelease.js"]); 76 | 77 | foldersToCopy.forEach((folderPath) => { 78 | var sourcePath = path.join(platformBuildPath, folderPath); 79 | var destPath = path.join(__dirname, folderPath); 80 | copyRecursive(sourcePath, destPath); 81 | }); 82 | 83 | binariesToCopy.forEach((binaryPath) => { 84 | var sourcePath = path.join(platformBuildPath, binaryPath); 85 | var destPath = path.join(__dirname, binaryPath); 86 | if (fs.existsSync(destPath)) { 87 | fs.unlinkSync(destPath); 88 | } 89 | copyFileSync(sourcePath, destPath); 90 | }); 91 | 92 | if (platformPath === "linux") { 93 | fs.chmodSync( 94 | path.join(__dirname, "lib", "esy", "esyBuildPackageCommand"), 95 | 0755 96 | ); 97 | fs.chmodSync( 98 | path.join(__dirname, "lib", "esy", "esySolveCudfCommand"), 99 | 0755 100 | ); 101 | fs.chmodSync( 102 | path.join(__dirname, "lib", "esy", "esyRewritePrefixCommand"), 103 | 0755 104 | ); 105 | } 106 | }; 107 | 108 | try { 109 | fs.mkdirSync("_export"); 110 | } catch (e) { 111 | console.log("Could not create _export folder"); 112 | } 113 | 114 | const platformArch = process.arch; 115 | switch (platform) { 116 | case "win32": 117 | copyPlatformBinaries("platform-esy-npm-release-win32-x64", [ 118 | "bin", 119 | "_export", 120 | ]); 121 | require("./esyInstallRelease"); 122 | break; 123 | case "linux": 124 | copyPlatformBinaries(`platform-esy-npm-release-linux-${platformArch}`, [ 125 | "bin", 126 | "_export", 127 | ]); 128 | // Statically linked binaries dont need postinstall scripts 129 | // TODO add support for statically linked binaries 130 | require("./esyInstallRelease"); 131 | break; 132 | case "darwin": 133 | copyPlatformBinaries(`platform-esy-npm-release-darwin-${platformArch}`, [ 134 | "bin", 135 | "_export", 136 | ]); 137 | require("./esyInstallRelease"); 138 | break; 139 | default: 140 | console.warn("error: no release built for the " + platform + " platform"); 141 | process.exit(1); 142 | } 143 | -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | import artifact from "@actions/artifact"; 2 | import type { Artifact } from "@actions/artifact"; 3 | import * as cache from "@actions/cache"; 4 | import * as core from "@actions/core"; 5 | import { exec } from "@actions/exec"; 6 | import * as toolCache from "@actions/tool-cache"; 7 | import * as fs from "fs"; 8 | import * as os from "os"; 9 | import * as path from "path"; 10 | import * as crypto from "crypto"; 11 | import * as util from "util"; 12 | import * as cp from "child_process"; 13 | import * as tar from "tar"; 14 | import validateNPMPackageName from "validate-npm-package-name"; 15 | 16 | function appendEnvironmentFile(key: string, value: string) { 17 | fs.appendFileSync(process.env.GITHUB_OUTPUT!, `${key}=${value}\n`); 18 | fs.appendFileSync(process.env.GITHUB_ENV!, `${key}=${value}\n`); 19 | } 20 | 21 | let esyPrefix = core.getInput("esy-prefix"); 22 | esyPrefix = 23 | esyPrefix && esyPrefix !== "" 24 | ? esyPrefix 25 | : path.join(path.resolve(".."), ".esy"); 26 | console.log("esy-prefix", esyPrefix); 27 | const ghOutputEsyPrefixK = "ESY_PREFIX"; 28 | console.log(`Setting ${ghOutputEsyPrefixK} to`, esyPrefix); 29 | appendEnvironmentFile(ghOutputEsyPrefixK, esyPrefix); 30 | 31 | const cacheKey = core.getInput("cache-key"); 32 | const sourceCacheKey = core.getInput("source-cache-key"); 33 | const manifestKey = core.getInput("manifest"); 34 | const prepareNPMArtifactsMode = core.getInput("prepare-npm-artifacts-mode"); 35 | const bundleNPMArtifactsMode = core.getInput("bundle-npm-artifacts-mode"); 36 | const customPostInstallJS = core.getInput("postinstall-js"); 37 | const setupEsy = core.getInput("setup-esy") || true; // Default behaviour is to install esy for user and cache it 38 | const setupEsyTarball = core.getInput("setup-esy-tarball"); 39 | const setupEsyShaSum = core.getInput("setup-esy-shasum"); 40 | const setupEsyVersion = core.getInput("setup-esy-version"); 41 | const setupEsyNPMPackageName = core.getInput("setup-esy-npm-package"); 42 | const partsSeparatedBtAT = setupEsyNPMPackageName.split("@"); 43 | if (partsSeparatedBtAT.length > 1 && partsSeparatedBtAT[0] !== "") { 44 | // ie @ appears in such a way that it separates name and version. Not to signify namespace 45 | // esy@latest enters this block. @prometheansacrifice/esy doesn't 46 | console.error( 47 | "Please specify the version (or NPM dist-tag) in the setup-esy-version field" 48 | ); 49 | process.exit(-1); 50 | } 51 | let workingDirectory = core.getInput("working-directory") || process.cwd(); 52 | workingDirectory = path.isAbsolute(workingDirectory) 53 | ? workingDirectory 54 | : path.join(process.cwd(), workingDirectory); 55 | 56 | function getCompilerVersion(sandbox?: string) { 57 | // let lockFileFolder; 58 | 59 | // if (!sandbox) { 60 | // lockFileFolder = "esy.lock"; 61 | // } else { 62 | // lockFileFolder = `${sandbox}.esy.lock`; 63 | // } 64 | // console.log(`Looking up ${lockFileFolder} for compiler version`); 65 | // const lockFile = JSON.parse( 66 | // fs 67 | // .readFileSync(path.join(process.cwd(), lockFileFolder, "index.json")) 68 | // .toString() 69 | // ); 70 | // const ocamlPackages = Object.keys(lockFile.node).filter((k) => 71 | // k.startsWith("ocaml@") 72 | // ); 73 | 74 | // if (ocamlPackages.length === 0) { 75 | // throw new Error( 76 | // "Couldn't figure ocaml compiler version from lock file because no ocaml-like packages were found" 77 | // ); 78 | // } 79 | 80 | // const ocamlPackageID = ocamlPackages[0]; 81 | // const ocamlPackageIDParts = ocamlPackageID.split("@"); 82 | 83 | // if (ocamlPackageIDParts.length !== 3) { 84 | // throw new Error( 85 | // `Couldn't figure ocaml compiler version from lock file because PackageId wasn't in expected format: ${ocamlPackageID}` 86 | // ); 87 | // } 88 | 89 | // return ocamlPackageIDParts[1]; 90 | 91 | const ocamlcVersionCmd = sandbox 92 | ? `esy ${sandbox} ocamlc --version` 93 | : "esy ocamlc --version"; 94 | return cp.execSync(ocamlcVersionCmd).toString(); 95 | } 96 | 97 | async function run(name: string, command: string, args: string[]) { 98 | const PATH = process.env.PATH ? process.env.PATH : ""; 99 | core.startGroup(name); 100 | await exec(command, args, { 101 | env: { ...process.env, PATH }, 102 | cwd: workingDirectory, 103 | }); 104 | core.endGroup(); 105 | } 106 | 107 | type NpmInfo = { 108 | name: string; 109 | dist: { tarball: string; shasum: string }; 110 | version: string; 111 | }; 112 | let cachedEsyNPMInfo: NpmInfo | undefined; 113 | function getLatestEsyNPMInfo( 114 | alternativeEsyNPMPackage: string | undefined 115 | ): NpmInfo { 116 | let esyPackage; 117 | if (!alternativeEsyNPMPackage || alternativeEsyNPMPackage === "") { 118 | // No alternative was provided. So, fallback to default 119 | esyPackage = "esy@latest"; 120 | } else { 121 | const { 122 | validForOldPackages, 123 | validForNewPackages, 124 | errors = [], 125 | } = validateNPMPackageName(alternativeEsyNPMPackage); 126 | if (!validForNewPackages || !validForOldPackages) { 127 | throw new Error(`Invalid alternative NPM package name provided: ${alternativeEsyNPMPackage} 128 | Errors: 129 | ${errors.join("\n")}`); 130 | } 131 | esyPackage = `${alternativeEsyNPMPackage}@${setupEsyVersion}`; 132 | } 133 | try { 134 | if (!cachedEsyNPMInfo) { 135 | cachedEsyNPMInfo = JSON.parse( 136 | cp.execSync(`npm info "${esyPackage}" --json`).toString().trim() 137 | ); 138 | return cachedEsyNPMInfo!; 139 | } else { 140 | return cachedEsyNPMInfo; 141 | } 142 | } catch (e: any) { 143 | throw new Error("Could not download the setup esy. Reason: " + e.message); 144 | } 145 | } 146 | 147 | function getEsyDownloadArtifactsMeta( 148 | alternativeEsyNPMPackage: string | undefined 149 | ) { 150 | const esyNPMInfo = getLatestEsyNPMInfo(alternativeEsyNPMPackage); 151 | const tarballUrl = esyNPMInfo.dist.tarball; 152 | const shasum = esyNPMInfo.dist.shasum; 153 | const version = esyNPMInfo.version; 154 | const name = esyNPMInfo.name; 155 | return { name, tarballUrl, shasum, version }; 156 | } 157 | 158 | function runEsyCommand(name: string, args: string[]) { 159 | args.push(`--prefix-path=${esyPrefix}`); 160 | return run(name, "esy", manifestKey ? [`@${manifestKey}`, ...args] : args); 161 | } 162 | 163 | function computeChecksum(filePath: string, algo: string) { 164 | return new Promise((resolve) => { 165 | let stream = fs.createReadStream(filePath).pipe(crypto.createHash(algo)); 166 | let buf = ""; 167 | stream.on("data", (chunk: Buffer) => { 168 | buf += chunk.toString("hex"); 169 | }); 170 | stream.on("end", () => { 171 | resolve(buf); 172 | }); 173 | }); 174 | } 175 | 176 | const platform = os.platform(); 177 | const arch = os.arch(); 178 | async function main() { 179 | // Otherwise, when we change directories and then back (workingDirectory -> /tmp -> workingDirectory) 180 | // chdir() would try to enter a path relative to that path 181 | try { 182 | if (setupEsy) { 183 | let tarballUrl, checksum, esyPackageVersion, esyPackageName; 184 | if (!setupEsyVersion || !setupEsyShaSum || !setupEsyTarball) { 185 | const meta = getEsyDownloadArtifactsMeta(setupEsyNPMPackageName); 186 | tarballUrl = meta.tarballUrl; 187 | checksum = meta.shasum; 188 | esyPackageVersion = meta.version; 189 | esyPackageName = meta.name; 190 | } else { 191 | tarballUrl = setupEsyTarball; 192 | esyPackageVersion = setupEsyVersion; 193 | checksum = setupEsyShaSum; 194 | esyPackageName = setupEsyNPMPackageName; 195 | } 196 | let cachedPath = toolCache.find(esyPackageName, esyPackageVersion, arch); 197 | if (cachedPath === "") { 198 | console.log("Fetching tarball from", tarballUrl); 199 | const downloadedEsyNPMTarball = await toolCache.downloadTool( 200 | tarballUrl 201 | ); 202 | const checksumAlgo = "sha1"; 203 | const computedChecksum = await computeChecksum( 204 | downloadedEsyNPMTarball, 205 | checksumAlgo 206 | ); 207 | if (computedChecksum !== checksum) { 208 | throw new Error( 209 | `Downloaded by checksum failed. url: ${setupEsyTarball} downloadPath: ${downloadedEsyNPMTarball} checksum expected: ${checksum} checksum computed: ${computedChecksum} checksum algorithm: ${checksumAlgo}` 210 | ); 211 | } else { 212 | console.log( 213 | "Checksum validation succeeded. Downloaded tarball's checksum is:", 214 | checksum 215 | ); 216 | } 217 | 218 | const extractedEsyNPM = await toolCache.extractTar( 219 | downloadedEsyNPMTarball 220 | ); 221 | core.startGroup("Running postinstall"); 222 | const esyPackagePath = path.join(extractedEsyNPM, "package"); 223 | const postInstall = JSON.parse( 224 | fs 225 | .readFileSync(path.join(esyPackagePath, "package.json")) 226 | .toString() 227 | .trim() 228 | ).scripts.postinstall; 229 | process.chdir(esyPackagePath); 230 | await exec(postInstall); 231 | core.endGroup(); 232 | process.chdir(workingDirectory); 233 | cachedPath = await toolCache.cacheDir( 234 | esyPackagePath, 235 | esyPackageName, 236 | esyPackageVersion, 237 | arch 238 | ); 239 | } 240 | core.addPath(path.join(cachedPath, "bin")); 241 | } 242 | fs.statSync(workingDirectory); 243 | process.chdir(workingDirectory); 244 | const installPath = [`${esyPrefix}/source`]; 245 | const installKey = `source-${platform}-${arch}-${sourceCacheKey}`; 246 | core.startGroup("Restoring install cache"); 247 | const installCacheKey = await cache.restoreCache( 248 | installPath, 249 | installKey, 250 | [] 251 | ); 252 | if (installCacheKey) { 253 | console.log("Restored the install cache"); 254 | } 255 | core.endGroup(); 256 | 257 | await runEsyCommand("Run esy install", ["install"]); 258 | 259 | if (installCacheKey != installKey) { 260 | await cache.saveCache(installPath, installKey); 261 | } 262 | 263 | const esy3 = fs 264 | .readdirSync(esyPrefix) 265 | .filter((name: string) => name.length > 0 && name[0] === "3") 266 | .sort() 267 | .pop(); 268 | 269 | const depsPath = [path.join(esyPrefix, esy3!, "i")]; 270 | const buildKey = `build-${platform}-${arch}-${cacheKey}`; 271 | 272 | core.startGroup("Restoring build cache"); 273 | const buildCacheKey = await cache.restoreCache(depsPath, buildKey, []); 274 | if (buildCacheKey) { 275 | console.log("Restored the build cache"); 276 | } 277 | core.endGroup(); 278 | 279 | if (!buildCacheKey) { 280 | await runEsyCommand("Run esy build-dependencies", ["build-dependencies"]); 281 | } 282 | 283 | await runEsyCommand("Run esy build", ["build"]); 284 | 285 | if (buildCacheKey != buildKey) { 286 | await cache.saveCache(depsPath, buildKey); 287 | } 288 | 289 | // TODO: support cleanup + manifest 290 | // Need to improve how subcommands are called 291 | // --prefix after cleanup subcommand doesn't work 292 | // --prefix prepended doesn't work with any other sub-command 293 | // if (!manifestKey && !buildCacheKey) { 294 | // await runEsyCommand("Run esy cleanup", ["cleanup", "."]); 295 | // } 296 | } catch (error) { 297 | if (error instanceof Error) { 298 | core.setFailed(error.message); 299 | } else { 300 | core.setFailed(util.inspect(error)); 301 | } 302 | } 303 | } 304 | 305 | async function uncompress( 306 | dest: string, 307 | tarFile: string, 308 | strip?: number 309 | ): Promise { 310 | return new Promise((resolve, reject) => { 311 | fs.createReadStream(tarFile) 312 | .pipe( 313 | tar.x({ 314 | strip: strip, 315 | C: dest, // alias for cwd:'some-dir', also ok 316 | }) 317 | ) 318 | .on("close", () => resolve()) 319 | .on("error", reject); 320 | }); 321 | } 322 | async function compress(dir: string, outputFile: string): Promise { 323 | return new Promise((resolve, reject) => { 324 | tar 325 | .c({ z: true, C: dir }, ["."]) 326 | .pipe(fs.createWriteStream(outputFile)) 327 | .on("close", () => resolve()) 328 | .on("error", reject); 329 | }); 330 | } 331 | async function prepareNPMArtifacts() { 332 | const statusCmd = manifestKey ? `esy ${manifestKey} status` : "esy status"; 333 | try { 334 | const manifestFilePath = JSON.parse( 335 | cp.execSync(statusCmd, { cwd: workingDirectory }).toString() 336 | ).rootPackageConfigPath; 337 | const manifest = JSON.parse(fs.readFileSync(manifestFilePath).toString()); 338 | if (manifest.esy?.release) { 339 | const command = ["npm-release"]; 340 | if (manifest.esy?.release?.rewritePrefix) { 341 | const compilerVersion = getCompilerVersion(); 342 | command.push("--ocaml-version"); 343 | command.push(compilerVersion); 344 | } 345 | await runEsyCommand("Running esy npm-release", command); 346 | let tarFile = `npm-tarball.tgz`; 347 | await compress(path.join(workingDirectory, "_release"), tarFile); 348 | 349 | const artifactName = `esy-npm-release-${platform}-${arch}`; 350 | console.log("Artifact name: ", artifactName); 351 | const { id, size } = await artifact.uploadArtifact( 352 | artifactName, 353 | [tarFile], 354 | process.env.GITHUB_WORKSPACE!, 355 | { 356 | // The level of compression for Zlib to be applied to the artifact archive. 357 | // - 0: No compression 358 | // - 1: Best speed 359 | // - 6: Default compression (same as GNU Gzip) 360 | // - 9: Best compression 361 | compressionLevel: 0, 362 | // optional: how long to retain the artifact 363 | // if unspecified, defaults to repository/org retention settings (the limit of this value) 364 | retentionDays: 10, 365 | } 366 | ); 367 | 368 | console.log(`Created artifact with id: ${id} (bytes: ${size}`); 369 | } else { 370 | console.error(fs.readFileSync(manifestFilePath).toString()); 371 | throw new Error( 372 | `No config found in ${manifestFilePath} for npm-release. See https://esy.sh/docs/npm-release to learn more.` 373 | ); 374 | } 375 | } catch (error) { 376 | if (error instanceof Error) { 377 | core.setFailed(error.message); 378 | } else { 379 | core.setFailed(util.inspect(error)); 380 | } 381 | } 382 | } 383 | 384 | async function bundleNPMArtifacts() { 385 | fs.statSync(workingDirectory); 386 | process.chdir(workingDirectory); 387 | const releaseFolder = path.join(workingDirectory, "_npm-release"); 388 | fs.mkdirSync(releaseFolder); 389 | const { artifacts } = await artifact.listArtifacts(); 390 | 391 | // TODO: filter out artifacts that dont have esy-npm-release-* prefix in their name 392 | const artifactFoldersList = await Promise.all( 393 | artifacts.map(async (a: Artifact) => { 394 | const folderName = `platform-${a.name}`; 395 | const folderPath = path.join(releaseFolder, folderName); 396 | await artifact.downloadArtifact(a.id, { 397 | path: folderPath, 398 | }); 399 | const npmTarballPath = path.join(folderPath, "npm-tarball.tgz"); 400 | await uncompress(folderPath, npmTarballPath, 1); 401 | fs.rmSync(npmTarballPath); 402 | return folderName; 403 | }) 404 | ); 405 | const artifactFolders = artifactFoldersList.reduce( 406 | (acc: string[], folderName: string) => { 407 | acc.push(folderName); 408 | return acc; 409 | }, 410 | [] 411 | ); 412 | try { 413 | const esyInstallReleaseJS = "esyInstallRelease.js"; 414 | fs.cpSync( 415 | path.join(releaseFolder, artifactFoldersList[0], esyInstallReleaseJS), 416 | path.join(releaseFolder, esyInstallReleaseJS) 417 | ); 418 | } catch (e) { 419 | console.warn("Could not copy esyInstallRelease.js", e); 420 | console.log("Skipping esyInstallRelease.js as it is optional"); 421 | } 422 | console.log("Creating package.json"); 423 | const possibleEsyJsonPath = path.join(workingDirectory, "esy.json"); 424 | const possiblePackageJsonPath = path.join(workingDirectory, "package.json"); 425 | const mainPackageJsonPath = fs.existsSync(possibleEsyJsonPath) 426 | ? possibleEsyJsonPath 427 | : possiblePackageJsonPath; 428 | const exists = fs.existsSync(mainPackageJsonPath); 429 | if (!exists) { 430 | console.error("No package.json or esy.json at " + mainPackageJsonPath); 431 | process.exit(1); 432 | } 433 | const mainPackageJson = JSON.parse( 434 | fs.readFileSync(`${mainPackageJsonPath}`).toString() 435 | ); 436 | const bins = Array.isArray(mainPackageJson.esy.release.bin) 437 | ? mainPackageJson.esy.release.bin.reduce( 438 | (acc: any, curr: string) => 439 | Object.assign({ [curr]: "bin/" + curr }, acc), 440 | {} 441 | ) 442 | : Object.keys(mainPackageJson.esy.release.bin).reduce( 443 | (acc, currKey) => 444 | Object.assign( 445 | { [currKey]: "bin/" + mainPackageJson.esy.release.bin[currKey] }, 446 | acc 447 | ), 448 | {} 449 | ); 450 | const rewritePrefix = 451 | mainPackageJson.esy && 452 | mainPackageJson.esy.release && 453 | mainPackageJson.esy.release.rewritePrefix; 454 | 455 | function exec(cmd: string) { 456 | console.log(`exec: ${cmd}`); 457 | return cp.execSync(cmd).toString().trim(); 458 | } 459 | const version = exec("git describe --tags --always"); 460 | 461 | const compilerVersion = getCompilerVersion(); 462 | console.log("Found compiler version", compilerVersion); 463 | const staticCompilerVersion = getCompilerVersion("static.esy"); 464 | console.log("Found static compiler version", staticCompilerVersion); 465 | 466 | const packageJson = JSON.stringify( 467 | { 468 | name: mainPackageJson.name, 469 | version, 470 | license: mainPackageJson.license, 471 | description: mainPackageJson.description, 472 | repository: mainPackageJson.repository, 473 | scripts: { 474 | postinstall: rewritePrefix 475 | ? `node -e \"process.env['OCAML_VERSION'] = process.platform == 'linux' ? '${staticCompilerVersion}-musl.static.flambda': '${compilerVersion}'; process.env['OCAML_PKG_NAME'] = 'ocaml'; process.env['ESY_RELEASE_REWRITE_PREFIX']=true; require('./postinstall.js')\"` 476 | : "require('./postinstall.js')\"", 477 | }, 478 | bin: bins, 479 | files: [ 480 | "_export/", 481 | "bin/", 482 | "postinstall.js", 483 | "esyInstallRelease.js", 484 | ].concat(artifactFolders), 485 | }, 486 | null, 487 | 2 488 | ); 489 | 490 | fs.writeFileSync(path.join(releaseFolder, "package.json"), packageJson, { 491 | encoding: "utf8", 492 | }); 493 | 494 | try { 495 | console.log("Copying LICENSE"); 496 | fs.copyFileSync( 497 | path.join(workingDirectory, "LICENSE"), 498 | path.join(releaseFolder, "LICENSE") 499 | ); 500 | } catch (e) { 501 | console.warn("No LICENSE found"); 502 | } 503 | 504 | try { 505 | console.log("Copying README.md"); 506 | fs.copyFileSync( 507 | path.join(workingDirectory, "README.md"), 508 | path.join(releaseFolder, "README.md") 509 | ); 510 | } catch { 511 | console.warn("No LICENSE found"); 512 | } 513 | 514 | const releasePostInstallJS = 515 | typeof customPostInstallJS === "string" && customPostInstallJS !== "" 516 | ? customPostInstallJS 517 | : path.join(__dirname, "release-postinstall.js"); 518 | console.log("Copying postinstall.js from", releasePostInstallJS); 519 | fs.copyFileSync( 520 | releasePostInstallJS, 521 | path.join(releaseFolder, "postinstall.js") 522 | ); 523 | 524 | console.log("Creating placeholder files"); 525 | const placeholderFile = `:; echo "You need to have postinstall enabled"; exit $? 526 | @ECHO OFF 527 | ECHO You need to have postinstall enabled`; 528 | fs.mkdirSync(path.join(releaseFolder, "bin")); 529 | 530 | Object.keys(bins).forEach((name) => { 531 | if (bins[name]) { 532 | const binPath = path.join(releaseFolder, bins[name]); 533 | fs.writeFileSync(binPath, placeholderFile); 534 | fs.chmodSync(binPath, 0o777); 535 | } else { 536 | console.log("bins[name] name=" + name + " was empty. Weird."); 537 | console.log(bins); 538 | } 539 | }); 540 | 541 | let tarFile = `npm-release.tgz`; 542 | await compress(path.relative(workingDirectory, releaseFolder), tarFile); 543 | 544 | await artifact.uploadArtifact( 545 | "npm-release", 546 | [tarFile], 547 | process.env.GITHUB_WORKSPACE!, 548 | { 549 | // The level of compression for Zlib to be applied to the artifact archive. 550 | // - 0: No compression 551 | // - 1: Best speed 552 | // - 6: Default compression (same as GNU Gzip) 553 | // - 9: Best compression 554 | compressionLevel: 0, 555 | // optional: how long to retain the artifact 556 | // if unspecified, defaults to repository/org retention settings (the limit of this value) 557 | retentionDays: 10, 558 | } 559 | ); 560 | 561 | core.endGroup(); 562 | } 563 | 564 | if (prepareNPMArtifactsMode) { 565 | prepareNPMArtifacts(); 566 | } else if (bundleNPMArtifactsMode) { 567 | bundleNPMArtifacts(); 568 | } else { 569 | main(); 570 | } 571 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "esy-github-action", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "author": "Wojtek Czekalski ", 6 | "license": "MIT", 7 | "private": false, 8 | "scripts": { 9 | "fmt": "prettier --write .", 10 | "fmt:check": "prettier --check .", 11 | "typecheck": "tsc", 12 | "build": "ncc build index.ts -o dist" 13 | }, 14 | "dependencies": { 15 | "@actions/artifact": "^2.1.7", 16 | "@actions/cache": "3.x", 17 | "@actions/core": "1.x", 18 | "@actions/exec": "1.x", 19 | "@actions/github": "^6.0.0", 20 | "@actions/tool-cache": "^2.0.1", 21 | "tar": "^7.1.0", 22 | "typescript": "5.x", 23 | "validate-npm-package-name": "^5.0.1" 24 | }, 25 | "devDependencies": { 26 | "@types/tar": "^6.1.13", 27 | "@types/validate-npm-package-name": "^4.0.2", 28 | "@vercel/ncc": "^0.33.0", 29 | "prettier": "2.5.1" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /release-postinstall.js: -------------------------------------------------------------------------------- 1 | /** 2 | * release-postinstall.js 3 | * 4 | * XXX: We want to keep this script installable at least with node 4.x. 5 | * 6 | * This script is bundled with the `npm` package and executed on release. 7 | * Since we have a 'fat' NPM package (with all platform binaries bundled), 8 | * this postinstall script extracts them and puts the current platform's 9 | * bits in the right place. 10 | */ 11 | 12 | var path = require("path"); 13 | var cp = require("child_process"); 14 | var fs = require("fs"); 15 | var os = require("os"); 16 | var platform = process.platform; 17 | 18 | var packageJson = require("./package.json"); 19 | 20 | function copyRecursive(srcDir, dstDir) { 21 | var results = []; 22 | var list = fs.readdirSync(srcDir); 23 | var src, dst; 24 | list.forEach(function (file) { 25 | src = path.join(srcDir, file); 26 | dst = path.join(dstDir, file); 27 | 28 | var stat = fs.statSync(src); 29 | if (stat && stat.isDirectory()) { 30 | try { 31 | fs.mkdirSync(dst); 32 | } catch (e) { 33 | console.log("directory already exists: " + dst); 34 | console.error(e); 35 | } 36 | results = results.concat(copyRecursive(src, dst)); 37 | } else { 38 | try { 39 | fs.writeFileSync(dst, fs.readFileSync(src)); 40 | } catch (e) { 41 | console.log("could't copy file: " + dst); 42 | console.error(e); 43 | } 44 | results.push(src); 45 | } 46 | }); 47 | return results; 48 | } 49 | 50 | // implementing it b/c we don't want to depend on fs.copyFileSync which appears 51 | // only in node@8.x 52 | function copyFileSync(sourcePath, destPath) { 53 | var data; 54 | try { 55 | data = fs.readFileSync(sourcePath); 56 | } catch (e) { 57 | data = fs.readFileSync(sourcePath + ".exe"); 58 | sourcePath = sourcePath + ".exe"; 59 | destPath = destPath + ".exe"; 60 | } 61 | var stat = fs.statSync(sourcePath); 62 | fs.writeFileSync(destPath, data); 63 | fs.chmodSync(destPath, 0755); 64 | } 65 | 66 | var copyPlatformBinaries = (platformPath, foldersToCopy) => { 67 | var platformBuildPath = path.join(__dirname, platformPath); 68 | 69 | let binariesToCopy; 70 | 71 | binariesToCopy = Object.keys(packageJson.bin).map(function (name) { 72 | return packageJson.bin[name]; 73 | }); 74 | 75 | binariesToCopy = binariesToCopy.concat(["esyInstallRelease.js"]); 76 | 77 | foldersToCopy.forEach((folderPath) => { 78 | var sourcePath = path.join(platformBuildPath, folderPath); 79 | var destPath = path.join(__dirname, folderPath); 80 | copyRecursive(sourcePath, destPath); 81 | }); 82 | 83 | binariesToCopy.forEach((binaryPath) => { 84 | var sourcePath = path.join(platformBuildPath, binaryPath); 85 | var destPath = path.join(__dirname, binaryPath); 86 | if (fs.existsSync(destPath)) { 87 | fs.unlinkSync(destPath); 88 | } 89 | copyFileSync(sourcePath, destPath); 90 | }); 91 | 92 | if (platformPath === "linux") { 93 | fs.chmodSync( 94 | path.join(__dirname, "lib", "esy", "esyBuildPackageCommand"), 95 | 0755 96 | ); 97 | fs.chmodSync( 98 | path.join(__dirname, "lib", "esy", "esySolveCudfCommand"), 99 | 0755 100 | ); 101 | fs.chmodSync( 102 | path.join(__dirname, "lib", "esy", "esyRewritePrefixCommand"), 103 | 0755 104 | ); 105 | } 106 | }; 107 | 108 | try { 109 | fs.mkdirSync("_export"); 110 | } catch (e) { 111 | console.log("Could not create _export folder"); 112 | } 113 | 114 | const platformArch = process.arch; 115 | switch (platform) { 116 | case "win32": 117 | copyPlatformBinaries("platform-esy-npm-release-win32-x64", [ 118 | "bin", 119 | "_export", 120 | ]); 121 | require("./esyInstallRelease"); 122 | break; 123 | case "linux": 124 | copyPlatformBinaries(`platform-esy-npm-release-linux-${platformArch}`, [ 125 | "bin", 126 | "_export", 127 | ]); 128 | // Statically linked binaries dont need postinstall scripts 129 | // TODO add support for statically linked binaries 130 | require("./esyInstallRelease"); 131 | break; 132 | case "darwin": 133 | copyPlatformBinaries(`platform-esy-npm-release-darwin-${platformArch}`, [ 134 | "bin", 135 | "_export", 136 | ]); 137 | require("./esyInstallRelease"); 138 | break; 139 | default: 140 | console.warn("error: no release built for the " + platform + " platform"); 141 | process.exit(1); 142 | } 143 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "skipLibCheck": true, 4 | "lib": ["ESNext"], 5 | "moduleResolution": "Node", 6 | "noEmit": true, 7 | "allowSyntheticDefaultImports": true, 8 | "noFallthroughCasesInSwitch": true, 9 | "noImplicitReturns": true, 10 | "noUnusedLocals": true, 11 | "noUnusedParameters": true, 12 | "strict": true, 13 | "target": "ES2015" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@actions/artifact@^2.1.7": 6 | version "2.1.8" 7 | resolved "https://registry.yarnpkg.com/@actions/artifact/-/artifact-2.1.8.tgz#82d240813be970cf5b56291466a5a16553290e07" 8 | integrity sha512-kxgbllgF5f6mEdMeSW6WXlUbV1U77V9ECpA7LOYaY+Tm6RfXOm36EdXbpm+T9VPeaVqXK4QHLAgqay9GSyClgw== 9 | dependencies: 10 | "@actions/core" "^1.10.0" 11 | "@actions/github" "^5.1.1" 12 | "@actions/http-client" "^2.1.0" 13 | "@azure/storage-blob" "^12.15.0" 14 | "@octokit/core" "^3.5.1" 15 | "@octokit/plugin-request-log" "^1.0.4" 16 | "@octokit/plugin-retry" "^3.0.9" 17 | "@octokit/request-error" "^5.0.0" 18 | "@protobuf-ts/plugin" "^2.2.3-alpha.1" 19 | archiver "^7.0.1" 20 | crypto "^1.0.1" 21 | jwt-decode "^3.1.2" 22 | twirp-ts "^2.5.0" 23 | unzip-stream "^0.3.1" 24 | 25 | "@actions/cache@3.x": 26 | version "3.2.4" 27 | resolved "https://registry.yarnpkg.com/@actions/cache/-/cache-3.2.4.tgz#793aade7375ba436295ff5ae6139be9d06dfab30" 28 | integrity sha512-RuHnwfcDagtX+37s0ZWy7clbOfnZ7AlDJQ7k/9rzt2W4Gnwde3fa/qjSjVuz4vLcLIpc7fUob27CMrqiWZytYA== 29 | dependencies: 30 | "@actions/core" "^1.10.0" 31 | "@actions/exec" "^1.0.1" 32 | "@actions/glob" "^0.1.0" 33 | "@actions/http-client" "^2.1.1" 34 | "@actions/io" "^1.0.1" 35 | "@azure/abort-controller" "^1.1.0" 36 | "@azure/ms-rest-js" "^2.6.0" 37 | "@azure/storage-blob" "^12.13.0" 38 | semver "^6.3.1" 39 | uuid "^3.3.3" 40 | 41 | "@actions/core@1.x", "@actions/core@^1.10.0", "@actions/core@^1.2.6": 42 | version "1.10.1" 43 | resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.10.1.tgz#61108e7ac40acae95ee36da074fa5850ca4ced8a" 44 | integrity sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g== 45 | dependencies: 46 | "@actions/http-client" "^2.0.1" 47 | uuid "^8.3.2" 48 | 49 | "@actions/exec@1.x", "@actions/exec@^1.0.0", "@actions/exec@^1.0.1": 50 | version "1.1.1" 51 | resolved "https://registry.yarnpkg.com/@actions/exec/-/exec-1.1.1.tgz#2e43f28c54022537172819a7cf886c844221a611" 52 | integrity sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w== 53 | dependencies: 54 | "@actions/io" "^1.0.1" 55 | 56 | "@actions/github@^5.1.1": 57 | version "5.1.1" 58 | resolved "https://registry.yarnpkg.com/@actions/github/-/github-5.1.1.tgz#40b9b9e1323a5efcf4ff7dadd33d8ea51651bbcb" 59 | integrity sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g== 60 | dependencies: 61 | "@actions/http-client" "^2.0.1" 62 | "@octokit/core" "^3.6.0" 63 | "@octokit/plugin-paginate-rest" "^2.17.0" 64 | "@octokit/plugin-rest-endpoint-methods" "^5.13.0" 65 | 66 | "@actions/github@^6.0.0": 67 | version "6.0.0" 68 | resolved "https://registry.yarnpkg.com/@actions/github/-/github-6.0.0.tgz#65883433f9d81521b782a64cc1fd45eef2191ea7" 69 | integrity sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g== 70 | dependencies: 71 | "@actions/http-client" "^2.2.0" 72 | "@octokit/core" "^5.0.1" 73 | "@octokit/plugin-paginate-rest" "^9.0.0" 74 | "@octokit/plugin-rest-endpoint-methods" "^10.0.0" 75 | 76 | "@actions/glob@^0.1.0": 77 | version "0.1.2" 78 | resolved "https://registry.yarnpkg.com/@actions/glob/-/glob-0.1.2.tgz#9685ed2d6583093479c8f137d067c4329d7d0974" 79 | integrity sha512-SclLR7Ia5sEqjkJTPs7Sd86maMDw43p769YxBOxvPvEWuPEhpAnBsQfENOpXjFYMmhCqd127bmf+YdvJqVqR4A== 80 | dependencies: 81 | "@actions/core" "^1.2.6" 82 | minimatch "^3.0.4" 83 | 84 | "@actions/http-client@^2.0.1", "@actions/http-client@^2.1.0", "@actions/http-client@^2.1.1", "@actions/http-client@^2.2.0": 85 | version "2.2.1" 86 | resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.2.1.tgz#ed3fe7a5a6d317ac1d39886b0bb999ded229bb38" 87 | integrity sha512-KhC/cZsq7f8I4LfZSJKgCvEwfkE8o1538VoBeoGzokVLLnbFDEAdFD3UhoMklxo2un9NJVBdANOresx7vTHlHw== 88 | dependencies: 89 | tunnel "^0.0.6" 90 | undici "^5.25.4" 91 | 92 | "@actions/io@^1.0.1", "@actions/io@^1.1.1": 93 | version "1.1.3" 94 | resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.1.3.tgz#4cdb6254da7962b07473ff5c335f3da485d94d71" 95 | integrity sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q== 96 | 97 | "@actions/tool-cache@^2.0.1": 98 | version "2.0.1" 99 | resolved "https://registry.yarnpkg.com/@actions/tool-cache/-/tool-cache-2.0.1.tgz#8a649b9c07838d9d750c9864814e66a7660ab720" 100 | integrity sha512-iPU+mNwrbA8jodY8eyo/0S/QqCKDajiR8OxWTnSk/SnYg0sj8Hp4QcUEVC1YFpHWXtrfbQrE13Jz4k4HXJQKcA== 101 | dependencies: 102 | "@actions/core" "^1.2.6" 103 | "@actions/exec" "^1.0.0" 104 | "@actions/http-client" "^2.0.1" 105 | "@actions/io" "^1.1.1" 106 | semver "^6.1.0" 107 | uuid "^3.3.2" 108 | 109 | "@azure/abort-controller@^1.0.0", "@azure/abort-controller@^1.1.0": 110 | version "1.1.0" 111 | resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.1.0.tgz#788ee78457a55af8a1ad342acb182383d2119249" 112 | integrity sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw== 113 | dependencies: 114 | tslib "^2.2.0" 115 | 116 | "@azure/abort-controller@^2.0.0": 117 | version "2.1.2" 118 | resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-2.1.2.tgz#42fe0ccab23841d9905812c58f1082d27784566d" 119 | integrity sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA== 120 | dependencies: 121 | tslib "^2.6.2" 122 | 123 | "@azure/core-auth@^1.1.4", "@azure/core-auth@^1.4.0": 124 | version "1.7.2" 125 | resolved "https://registry.yarnpkg.com/@azure/core-auth/-/core-auth-1.7.2.tgz#558b7cb7dd12b00beec07ae5df5907d74df1ebd9" 126 | integrity sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g== 127 | dependencies: 128 | "@azure/abort-controller" "^2.0.0" 129 | "@azure/core-util" "^1.1.0" 130 | tslib "^2.6.2" 131 | 132 | "@azure/core-client@^1.3.0", "@azure/core-client@^1.6.2": 133 | version "1.9.2" 134 | resolved "https://registry.yarnpkg.com/@azure/core-client/-/core-client-1.9.2.tgz#6fc69cee2816883ab6c5cdd653ee4f2ff9774f74" 135 | integrity sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w== 136 | dependencies: 137 | "@azure/abort-controller" "^2.0.0" 138 | "@azure/core-auth" "^1.4.0" 139 | "@azure/core-rest-pipeline" "^1.9.1" 140 | "@azure/core-tracing" "^1.0.0" 141 | "@azure/core-util" "^1.6.1" 142 | "@azure/logger" "^1.0.0" 143 | tslib "^2.6.2" 144 | 145 | "@azure/core-http-compat@^2.0.0": 146 | version "2.1.2" 147 | resolved "https://registry.yarnpkg.com/@azure/core-http-compat/-/core-http-compat-2.1.2.tgz#d1585ada24ba750dc161d816169b33b35f762f0d" 148 | integrity sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ== 149 | dependencies: 150 | "@azure/abort-controller" "^2.0.0" 151 | "@azure/core-client" "^1.3.0" 152 | "@azure/core-rest-pipeline" "^1.3.0" 153 | 154 | "@azure/core-lro@^2.2.0": 155 | version "2.7.2" 156 | resolved "https://registry.yarnpkg.com/@azure/core-lro/-/core-lro-2.7.2.tgz#787105027a20e45c77651a98b01a4d3b01b75a08" 157 | integrity sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw== 158 | dependencies: 159 | "@azure/abort-controller" "^2.0.0" 160 | "@azure/core-util" "^1.2.0" 161 | "@azure/logger" "^1.0.0" 162 | tslib "^2.6.2" 163 | 164 | "@azure/core-paging@^1.1.1": 165 | version "1.6.2" 166 | resolved "https://registry.yarnpkg.com/@azure/core-paging/-/core-paging-1.6.2.tgz#40d3860dc2df7f291d66350b2cfd9171526433e7" 167 | integrity sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA== 168 | dependencies: 169 | tslib "^2.6.2" 170 | 171 | "@azure/core-rest-pipeline@^1.10.1", "@azure/core-rest-pipeline@^1.3.0", "@azure/core-rest-pipeline@^1.9.1": 172 | version "1.16.2" 173 | resolved "https://registry.yarnpkg.com/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.2.tgz#3f71b09e45a65926cc598478b4f1bcd0fe67bf4b" 174 | integrity sha512-Hnhm/PG9/SQ07JJyLDv3l9Qr8V3xgAe1hFoBYzt6LaalMxfL/ZqFaZf/bz5VN3pMcleCPwl8ivlS2Fjxq/iC8Q== 175 | dependencies: 176 | "@azure/abort-controller" "^2.0.0" 177 | "@azure/core-auth" "^1.4.0" 178 | "@azure/core-tracing" "^1.0.1" 179 | "@azure/core-util" "^1.9.0" 180 | "@azure/logger" "^1.0.0" 181 | http-proxy-agent "^7.0.0" 182 | https-proxy-agent "^7.0.0" 183 | tslib "^2.6.2" 184 | 185 | "@azure/core-tracing@^1.0.0", "@azure/core-tracing@^1.0.1", "@azure/core-tracing@^1.1.2": 186 | version "1.1.2" 187 | resolved "https://registry.yarnpkg.com/@azure/core-tracing/-/core-tracing-1.1.2.tgz#065dab4e093fb61899988a1cdbc827d9ad90b4ee" 188 | integrity sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA== 189 | dependencies: 190 | tslib "^2.6.2" 191 | 192 | "@azure/core-util@^1.1.0", "@azure/core-util@^1.2.0", "@azure/core-util@^1.6.1", "@azure/core-util@^1.9.0": 193 | version "1.9.1" 194 | resolved "https://registry.yarnpkg.com/@azure/core-util/-/core-util-1.9.1.tgz#05ea9505c5cdf29c55ccf99a648c66ddd678590b" 195 | integrity sha512-OLsq0etbHO1MA7j6FouXFghuHrAFGk+5C1imcpQ2e+0oZhYF07WLA+NW2Vqs70R7d+zOAWiWM3tbE1sXcDN66g== 196 | dependencies: 197 | "@azure/abort-controller" "^2.0.0" 198 | tslib "^2.6.2" 199 | 200 | "@azure/core-xml@^1.3.2": 201 | version "1.4.2" 202 | resolved "https://registry.yarnpkg.com/@azure/core-xml/-/core-xml-1.4.2.tgz#9ce65e9520ebafc7b0c1f7115596282bfc7b32f3" 203 | integrity sha512-CW3MZhApe/S4iikbYKE7s83fjDBPIr2kpidX+hlGRwh7N4o1nIpQ/PfJTeioqhfqdMvRtheEl+ft64fyTaLNaA== 204 | dependencies: 205 | fast-xml-parser "^4.3.2" 206 | tslib "^2.6.2" 207 | 208 | "@azure/logger@^1.0.0": 209 | version "1.1.3" 210 | resolved "https://registry.yarnpkg.com/@azure/logger/-/logger-1.1.3.tgz#09a8fd4850b9112865756e92d5e8b728ee457345" 211 | integrity sha512-J8/cIKNQB1Fc9fuYqBVnrppiUtW+5WWJPCj/tAokC5LdSTwkWWttN+jsRgw9BLYD7JDBx7PceiqOBxJJ1tQz3Q== 212 | dependencies: 213 | tslib "^2.6.2" 214 | 215 | "@azure/ms-rest-js@^2.6.0": 216 | version "2.7.0" 217 | resolved "https://registry.yarnpkg.com/@azure/ms-rest-js/-/ms-rest-js-2.7.0.tgz#8639065577ffdf4946951e1d246334ebfd72d537" 218 | integrity sha512-ngbzWbqF+NmztDOpLBVDxYM+XLcUj7nKhxGbSU9WtIsXfRB//cf2ZbAG5HkOrhU9/wd/ORRB6lM/d69RKVjiyA== 219 | dependencies: 220 | "@azure/core-auth" "^1.1.4" 221 | abort-controller "^3.0.0" 222 | form-data "^2.5.0" 223 | node-fetch "^2.6.7" 224 | tslib "^1.10.0" 225 | tunnel "0.0.6" 226 | uuid "^8.3.2" 227 | xml2js "^0.5.0" 228 | 229 | "@azure/storage-blob@^12.13.0", "@azure/storage-blob@^12.15.0": 230 | version "12.24.0" 231 | resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.24.0.tgz#d4ae1e29574b4a19d90eaf082cfde95f996d3f9b" 232 | integrity sha512-l8cmWM4C7RoNCBOImoFMxhTXe1Lr+8uQ/IgnhRNMpfoA9bAFWoLG4XrWm6O5rKXortreVQuD+fc1hbzWklOZbw== 233 | dependencies: 234 | "@azure/abort-controller" "^1.0.0" 235 | "@azure/core-auth" "^1.4.0" 236 | "@azure/core-client" "^1.6.2" 237 | "@azure/core-http-compat" "^2.0.0" 238 | "@azure/core-lro" "^2.2.0" 239 | "@azure/core-paging" "^1.1.1" 240 | "@azure/core-rest-pipeline" "^1.10.1" 241 | "@azure/core-tracing" "^1.1.2" 242 | "@azure/core-util" "^1.6.1" 243 | "@azure/core-xml" "^1.3.2" 244 | "@azure/logger" "^1.0.0" 245 | events "^3.0.0" 246 | tslib "^2.2.0" 247 | 248 | "@fastify/busboy@^2.0.0": 249 | version "2.1.1" 250 | resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" 251 | integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== 252 | 253 | "@isaacs/cliui@^8.0.2": 254 | version "8.0.2" 255 | resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" 256 | integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== 257 | dependencies: 258 | string-width "^5.1.2" 259 | string-width-cjs "npm:string-width@^4.2.0" 260 | strip-ansi "^7.0.1" 261 | strip-ansi-cjs "npm:strip-ansi@^6.0.1" 262 | wrap-ansi "^8.1.0" 263 | wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" 264 | 265 | "@isaacs/fs-minipass@^4.0.0": 266 | version "4.0.1" 267 | resolved "https://registry.yarnpkg.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz#2d59ae3ab4b38fb4270bfa23d30f8e2e86c7fe32" 268 | integrity sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w== 269 | dependencies: 270 | minipass "^7.0.4" 271 | 272 | "@octokit/auth-token@^2.4.4": 273 | version "2.5.0" 274 | resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" 275 | integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== 276 | dependencies: 277 | "@octokit/types" "^6.0.3" 278 | 279 | "@octokit/auth-token@^4.0.0": 280 | version "4.0.0" 281 | resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-4.0.0.tgz#40d203ea827b9f17f42a29c6afb93b7745ef80c7" 282 | integrity sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA== 283 | 284 | "@octokit/core@^3.5.1", "@octokit/core@^3.6.0": 285 | version "3.6.0" 286 | resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.6.0.tgz#3376cb9f3008d9b3d110370d90e0a1fcd5fe6085" 287 | integrity sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q== 288 | dependencies: 289 | "@octokit/auth-token" "^2.4.4" 290 | "@octokit/graphql" "^4.5.8" 291 | "@octokit/request" "^5.6.3" 292 | "@octokit/request-error" "^2.0.5" 293 | "@octokit/types" "^6.0.3" 294 | before-after-hook "^2.2.0" 295 | universal-user-agent "^6.0.0" 296 | 297 | "@octokit/core@^5.0.1": 298 | version "5.2.0" 299 | resolved "https://registry.yarnpkg.com/@octokit/core/-/core-5.2.0.tgz#ddbeaefc6b44a39834e1bb2e58a49a117672a7ea" 300 | integrity sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg== 301 | dependencies: 302 | "@octokit/auth-token" "^4.0.0" 303 | "@octokit/graphql" "^7.1.0" 304 | "@octokit/request" "^8.3.1" 305 | "@octokit/request-error" "^5.1.0" 306 | "@octokit/types" "^13.0.0" 307 | before-after-hook "^2.2.0" 308 | universal-user-agent "^6.0.0" 309 | 310 | "@octokit/endpoint@^6.0.1": 311 | version "6.0.12" 312 | resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" 313 | integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== 314 | dependencies: 315 | "@octokit/types" "^6.0.3" 316 | is-plain-object "^5.0.0" 317 | universal-user-agent "^6.0.0" 318 | 319 | "@octokit/endpoint@^9.0.1": 320 | version "9.0.5" 321 | resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-9.0.5.tgz#e6c0ee684e307614c02fc6ac12274c50da465c44" 322 | integrity sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw== 323 | dependencies: 324 | "@octokit/types" "^13.1.0" 325 | universal-user-agent "^6.0.0" 326 | 327 | "@octokit/graphql@^4.5.8": 328 | version "4.8.0" 329 | resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" 330 | integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== 331 | dependencies: 332 | "@octokit/request" "^5.6.0" 333 | "@octokit/types" "^6.0.3" 334 | universal-user-agent "^6.0.0" 335 | 336 | "@octokit/graphql@^7.1.0": 337 | version "7.1.0" 338 | resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-7.1.0.tgz#9bc1c5de92f026648131f04101cab949eeffe4e0" 339 | integrity sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ== 340 | dependencies: 341 | "@octokit/request" "^8.3.0" 342 | "@octokit/types" "^13.0.0" 343 | universal-user-agent "^6.0.0" 344 | 345 | "@octokit/openapi-types@^12.11.0": 346 | version "12.11.0" 347 | resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-12.11.0.tgz#da5638d64f2b919bca89ce6602d059f1b52d3ef0" 348 | integrity sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ== 349 | 350 | "@octokit/openapi-types@^20.0.0": 351 | version "20.0.0" 352 | resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-20.0.0.tgz#9ec2daa0090eeb865ee147636e0c00f73790c6e5" 353 | integrity sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA== 354 | 355 | "@octokit/openapi-types@^22.2.0": 356 | version "22.2.0" 357 | resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-22.2.0.tgz#75aa7dcd440821d99def6a60b5f014207ae4968e" 358 | integrity sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg== 359 | 360 | "@octokit/plugin-paginate-rest@^2.17.0": 361 | version "2.21.3" 362 | resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz#7f12532797775640dbb8224da577da7dc210c87e" 363 | integrity sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw== 364 | dependencies: 365 | "@octokit/types" "^6.40.0" 366 | 367 | "@octokit/plugin-paginate-rest@^9.0.0": 368 | version "9.2.1" 369 | resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz#2e2a2f0f52c9a4b1da1a3aa17dabe3c459b9e401" 370 | integrity sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw== 371 | dependencies: 372 | "@octokit/types" "^12.6.0" 373 | 374 | "@octokit/plugin-request-log@^1.0.4": 375 | version "1.0.4" 376 | resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" 377 | integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== 378 | 379 | "@octokit/plugin-rest-endpoint-methods@^10.0.0": 380 | version "10.4.1" 381 | resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz#41ba478a558b9f554793075b2e20cd2ef973be17" 382 | integrity sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg== 383 | dependencies: 384 | "@octokit/types" "^12.6.0" 385 | 386 | "@octokit/plugin-rest-endpoint-methods@^5.13.0": 387 | version "5.16.2" 388 | resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz#7ee8bf586df97dd6868cf68f641354e908c25342" 389 | integrity sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw== 390 | dependencies: 391 | "@octokit/types" "^6.39.0" 392 | deprecation "^2.3.1" 393 | 394 | "@octokit/plugin-retry@^3.0.9": 395 | version "3.0.9" 396 | resolved "https://registry.yarnpkg.com/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz#ae625cca1e42b0253049102acd71c1d5134788fe" 397 | integrity sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ== 398 | dependencies: 399 | "@octokit/types" "^6.0.3" 400 | bottleneck "^2.15.3" 401 | 402 | "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": 403 | version "2.1.0" 404 | resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" 405 | integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== 406 | dependencies: 407 | "@octokit/types" "^6.0.3" 408 | deprecation "^2.0.0" 409 | once "^1.4.0" 410 | 411 | "@octokit/request-error@^5.0.0", "@octokit/request-error@^5.1.0": 412 | version "5.1.0" 413 | resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-5.1.0.tgz#ee4138538d08c81a60be3f320cd71063064a3b30" 414 | integrity sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q== 415 | dependencies: 416 | "@octokit/types" "^13.1.0" 417 | deprecation "^2.0.0" 418 | once "^1.4.0" 419 | 420 | "@octokit/request@^5.6.0", "@octokit/request@^5.6.3": 421 | version "5.6.3" 422 | resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.3.tgz#19a022515a5bba965ac06c9d1334514eb50c48b0" 423 | integrity sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A== 424 | dependencies: 425 | "@octokit/endpoint" "^6.0.1" 426 | "@octokit/request-error" "^2.1.0" 427 | "@octokit/types" "^6.16.1" 428 | is-plain-object "^5.0.0" 429 | node-fetch "^2.6.7" 430 | universal-user-agent "^6.0.0" 431 | 432 | "@octokit/request@^8.3.0", "@octokit/request@^8.3.1": 433 | version "8.4.0" 434 | resolved "https://registry.yarnpkg.com/@octokit/request/-/request-8.4.0.tgz#7f4b7b1daa3d1f48c0977ad8fffa2c18adef8974" 435 | integrity sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw== 436 | dependencies: 437 | "@octokit/endpoint" "^9.0.1" 438 | "@octokit/request-error" "^5.1.0" 439 | "@octokit/types" "^13.1.0" 440 | universal-user-agent "^6.0.0" 441 | 442 | "@octokit/types@^12.6.0": 443 | version "12.6.0" 444 | resolved "https://registry.yarnpkg.com/@octokit/types/-/types-12.6.0.tgz#8100fb9eeedfe083aae66473bd97b15b62aedcb2" 445 | integrity sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw== 446 | dependencies: 447 | "@octokit/openapi-types" "^20.0.0" 448 | 449 | "@octokit/types@^13.0.0", "@octokit/types@^13.1.0": 450 | version "13.5.0" 451 | resolved "https://registry.yarnpkg.com/@octokit/types/-/types-13.5.0.tgz#4796e56b7b267ebc7c921dcec262b3d5bfb18883" 452 | integrity sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ== 453 | dependencies: 454 | "@octokit/openapi-types" "^22.2.0" 455 | 456 | "@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.39.0", "@octokit/types@^6.40.0": 457 | version "6.41.0" 458 | resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.41.0.tgz#e58ef78d78596d2fb7df9c6259802464b5f84a04" 459 | integrity sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg== 460 | dependencies: 461 | "@octokit/openapi-types" "^12.11.0" 462 | 463 | "@pkgjs/parseargs@^0.11.0": 464 | version "0.11.0" 465 | resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" 466 | integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== 467 | 468 | "@protobuf-ts/plugin-framework@^2.0.7", "@protobuf-ts/plugin-framework@^2.9.4": 469 | version "2.9.4" 470 | resolved "https://registry.yarnpkg.com/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.4.tgz#d7a617dedda4a12c568fdc1db5aa67d5e4da2406" 471 | integrity sha512-9nuX1kjdMliv+Pes8dQCKyVhjKgNNfwxVHg+tx3fLXSfZZRcUHMc1PMwB9/vTvc6gBKt9QGz5ERqSqZc0++E9A== 472 | dependencies: 473 | "@protobuf-ts/runtime" "^2.9.4" 474 | typescript "^3.9" 475 | 476 | "@protobuf-ts/plugin@^2.2.3-alpha.1": 477 | version "2.9.4" 478 | resolved "https://registry.yarnpkg.com/@protobuf-ts/plugin/-/plugin-2.9.4.tgz#4e593e59013aaad313e7abbabe6e61964ef0ca28" 479 | integrity sha512-Db5Laq5T3mc6ERZvhIhkj1rn57/p8gbWiCKxQWbZBBl20wMuqKoHbRw4tuD7FyXi+IkwTToaNVXymv5CY3E8Rw== 480 | dependencies: 481 | "@protobuf-ts/plugin-framework" "^2.9.4" 482 | "@protobuf-ts/protoc" "^2.9.4" 483 | "@protobuf-ts/runtime" "^2.9.4" 484 | "@protobuf-ts/runtime-rpc" "^2.9.4" 485 | typescript "^3.9" 486 | 487 | "@protobuf-ts/protoc@^2.9.4": 488 | version "2.9.4" 489 | resolved "https://registry.yarnpkg.com/@protobuf-ts/protoc/-/protoc-2.9.4.tgz#a92262ee64d252998540238701d2140f4ffec081" 490 | integrity sha512-hQX+nOhFtrA+YdAXsXEDrLoGJqXHpgv4+BueYF0S9hy/Jq0VRTVlJS1Etmf4qlMt/WdigEes5LOd/LDzui4GIQ== 491 | 492 | "@protobuf-ts/runtime-rpc@^2.9.4": 493 | version "2.9.4" 494 | resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.4.tgz#d6ab2316c0ba67ce5a08863bb23203a837ff2a3b" 495 | integrity sha512-y9L9JgnZxXFqH5vD4d7j9duWvIJ7AShyBRoNKJGhu9Q27qIbchfzli66H9RvrQNIFk5ER7z1Twe059WZGqERcA== 496 | dependencies: 497 | "@protobuf-ts/runtime" "^2.9.4" 498 | 499 | "@protobuf-ts/runtime@^2.9.4": 500 | version "2.9.4" 501 | resolved "https://registry.yarnpkg.com/@protobuf-ts/runtime/-/runtime-2.9.4.tgz#db8a78b1c409e26d258ca39464f4757d804add8f" 502 | integrity sha512-vHRFWtJJB/SiogWDF0ypoKfRIZ41Kq+G9cEFj6Qm1eQaAhJ1LDFvgZ7Ja4tb3iLOQhz0PaoPnnOijF1qmEqTxg== 503 | 504 | "@types/node@*": 505 | version "20.14.12" 506 | resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.12.tgz#129d7c3a822cb49fc7ff661235f19cfefd422b49" 507 | integrity sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ== 508 | dependencies: 509 | undici-types "~5.26.4" 510 | 511 | "@types/tar@^6.1.13": 512 | version "6.1.13" 513 | resolved "https://registry.yarnpkg.com/@types/tar/-/tar-6.1.13.tgz#9b5801c02175344101b4b91086ab2bbc8e93a9b6" 514 | integrity sha512-IznnlmU5f4WcGTh2ltRu/Ijpmk8wiWXfF0VA4s+HPjHZgvFggk1YaIkbo5krX/zUCzWF8N/l4+W/LNxnvAJ8nw== 515 | dependencies: 516 | "@types/node" "*" 517 | minipass "^4.0.0" 518 | 519 | "@types/validate-npm-package-name@^4.0.2": 520 | version "4.0.2" 521 | resolved "https://registry.yarnpkg.com/@types/validate-npm-package-name/-/validate-npm-package-name-4.0.2.tgz#df0f7dac25df7761f7476605ddac54cb1abda26e" 522 | integrity sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw== 523 | 524 | "@vercel/ncc@^0.33.0": 525 | version "0.33.4" 526 | resolved "https://registry.yarnpkg.com/@vercel/ncc/-/ncc-0.33.4.tgz#e44a87511f583b7ba88e4b9ae90eeb7ba252b872" 527 | integrity sha512-ln18hs7dMffelP47tpkaR+V5Tj6coykNyxJrlcmCormPqRQjB/Gv4cu2FfBG+PMzIfdZp2CLDsrrB1NPU22Qhg== 528 | 529 | abort-controller@^3.0.0: 530 | version "3.0.0" 531 | resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" 532 | integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== 533 | dependencies: 534 | event-target-shim "^5.0.0" 535 | 536 | agent-base@^7.0.2, agent-base@^7.1.0: 537 | version "7.1.1" 538 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317" 539 | integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== 540 | dependencies: 541 | debug "^4.3.4" 542 | 543 | ansi-regex@^5.0.1: 544 | version "5.0.1" 545 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 546 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 547 | 548 | ansi-regex@^6.0.1: 549 | version "6.0.1" 550 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" 551 | integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== 552 | 553 | ansi-styles@^4.0.0: 554 | version "4.3.0" 555 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 556 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 557 | dependencies: 558 | color-convert "^2.0.1" 559 | 560 | ansi-styles@^6.1.0: 561 | version "6.2.1" 562 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" 563 | integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== 564 | 565 | archiver-utils@^5.0.0, archiver-utils@^5.0.2: 566 | version "5.0.2" 567 | resolved "https://registry.yarnpkg.com/archiver-utils/-/archiver-utils-5.0.2.tgz#63bc719d951803efc72cf961a56ef810760dd14d" 568 | integrity sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA== 569 | dependencies: 570 | glob "^10.0.0" 571 | graceful-fs "^4.2.0" 572 | is-stream "^2.0.1" 573 | lazystream "^1.0.0" 574 | lodash "^4.17.15" 575 | normalize-path "^3.0.0" 576 | readable-stream "^4.0.0" 577 | 578 | archiver@^7.0.1: 579 | version "7.0.1" 580 | resolved "https://registry.yarnpkg.com/archiver/-/archiver-7.0.1.tgz#c9d91c350362040b8927379c7aa69c0655122f61" 581 | integrity sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ== 582 | dependencies: 583 | archiver-utils "^5.0.2" 584 | async "^3.2.4" 585 | buffer-crc32 "^1.0.0" 586 | readable-stream "^4.0.0" 587 | readdir-glob "^1.1.2" 588 | tar-stream "^3.0.0" 589 | zip-stream "^6.0.1" 590 | 591 | async@^3.2.4: 592 | version "3.2.5" 593 | resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66" 594 | integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg== 595 | 596 | asynckit@^0.4.0: 597 | version "0.4.0" 598 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 599 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 600 | 601 | b4a@^1.6.4: 602 | version "1.6.6" 603 | resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.6.tgz#a4cc349a3851987c3c4ac2d7785c18744f6da9ba" 604 | integrity sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg== 605 | 606 | balanced-match@^1.0.0: 607 | version "1.0.2" 608 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 609 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 610 | 611 | bare-events@^2.2.0: 612 | version "2.4.2" 613 | resolved "https://registry.yarnpkg.com/bare-events/-/bare-events-2.4.2.tgz#3140cca7a0e11d49b3edc5041ab560659fd8e1f8" 614 | integrity sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q== 615 | 616 | base64-js@^1.3.1: 617 | version "1.5.1" 618 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 619 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 620 | 621 | before-after-hook@^2.2.0: 622 | version "2.2.3" 623 | resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" 624 | integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== 625 | 626 | binary@^0.3.0: 627 | version "0.3.0" 628 | resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" 629 | integrity sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== 630 | dependencies: 631 | buffers "~0.1.1" 632 | chainsaw "~0.1.0" 633 | 634 | bottleneck@^2.15.3: 635 | version "2.19.5" 636 | resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91" 637 | integrity sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw== 638 | 639 | brace-expansion@^1.1.7: 640 | version "1.1.11" 641 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 642 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 643 | dependencies: 644 | balanced-match "^1.0.0" 645 | concat-map "0.0.1" 646 | 647 | brace-expansion@^2.0.1: 648 | version "2.0.1" 649 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 650 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 651 | dependencies: 652 | balanced-match "^1.0.0" 653 | 654 | buffer-crc32@^1.0.0: 655 | version "1.0.0" 656 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-1.0.0.tgz#a10993b9055081d55304bd9feb4a072de179f405" 657 | integrity sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w== 658 | 659 | buffer@^6.0.3: 660 | version "6.0.3" 661 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" 662 | integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== 663 | dependencies: 664 | base64-js "^1.3.1" 665 | ieee754 "^1.2.1" 666 | 667 | buffers@~0.1.1: 668 | version "0.1.1" 669 | resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" 670 | integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== 671 | 672 | camel-case@^4.1.2: 673 | version "4.1.2" 674 | resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" 675 | integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== 676 | dependencies: 677 | pascal-case "^3.1.2" 678 | tslib "^2.0.3" 679 | 680 | chainsaw@~0.1.0: 681 | version "0.1.0" 682 | resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" 683 | integrity sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== 684 | dependencies: 685 | traverse ">=0.3.0 <0.4" 686 | 687 | chownr@^3.0.0: 688 | version "3.0.0" 689 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4" 690 | integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g== 691 | 692 | color-convert@^2.0.1: 693 | version "2.0.1" 694 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 695 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 696 | dependencies: 697 | color-name "~1.1.4" 698 | 699 | color-name@~1.1.4: 700 | version "1.1.4" 701 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 702 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 703 | 704 | combined-stream@^1.0.6: 705 | version "1.0.8" 706 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 707 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 708 | dependencies: 709 | delayed-stream "~1.0.0" 710 | 711 | commander@^6.1.0: 712 | version "6.2.1" 713 | resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" 714 | integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== 715 | 716 | compress-commons@^6.0.2: 717 | version "6.0.2" 718 | resolved "https://registry.yarnpkg.com/compress-commons/-/compress-commons-6.0.2.tgz#26d31251a66b9d6ba23a84064ecd3a6a71d2609e" 719 | integrity sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg== 720 | dependencies: 721 | crc-32 "^1.2.0" 722 | crc32-stream "^6.0.0" 723 | is-stream "^2.0.1" 724 | normalize-path "^3.0.0" 725 | readable-stream "^4.0.0" 726 | 727 | concat-map@0.0.1: 728 | version "0.0.1" 729 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 730 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 731 | 732 | core-util-is@~1.0.0: 733 | version "1.0.3" 734 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" 735 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 736 | 737 | crc-32@^1.2.0: 738 | version "1.2.2" 739 | resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" 740 | integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== 741 | 742 | crc32-stream@^6.0.0: 743 | version "6.0.0" 744 | resolved "https://registry.yarnpkg.com/crc32-stream/-/crc32-stream-6.0.0.tgz#8529a3868f8b27abb915f6c3617c0fadedbf9430" 745 | integrity sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g== 746 | dependencies: 747 | crc-32 "^1.2.0" 748 | readable-stream "^4.0.0" 749 | 750 | cross-spawn@^7.0.0: 751 | version "7.0.6" 752 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" 753 | integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== 754 | dependencies: 755 | path-key "^3.1.0" 756 | shebang-command "^2.0.0" 757 | which "^2.0.1" 758 | 759 | crypto@^1.0.1: 760 | version "1.0.1" 761 | resolved "https://registry.yarnpkg.com/crypto/-/crypto-1.0.1.tgz#2af1b7cad8175d24c8a1b0778255794a21803037" 762 | integrity sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig== 763 | 764 | debug@4, debug@^4.3.4: 765 | version "4.3.5" 766 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" 767 | integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg== 768 | dependencies: 769 | ms "2.1.2" 770 | 771 | delayed-stream@~1.0.0: 772 | version "1.0.0" 773 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 774 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 775 | 776 | deprecation@^2.0.0, deprecation@^2.3.1: 777 | version "2.3.1" 778 | resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" 779 | integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== 780 | 781 | dot-object@^2.1.4: 782 | version "2.1.5" 783 | resolved "https://registry.yarnpkg.com/dot-object/-/dot-object-2.1.5.tgz#0ff0f1bff42c47ff06272081b208658c0a0231c2" 784 | integrity sha512-xHF8EP4XH/Ba9fvAF2LDd5O3IITVolerVV6xvkxoM8zlGEiCUrggpAnHyOoKJKCrhvPcGATFAUwIujj7bRG5UA== 785 | dependencies: 786 | commander "^6.1.0" 787 | glob "^7.1.6" 788 | 789 | eastasianwidth@^0.2.0: 790 | version "0.2.0" 791 | resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" 792 | integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 793 | 794 | emoji-regex@^8.0.0: 795 | version "8.0.0" 796 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 797 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 798 | 799 | emoji-regex@^9.2.2: 800 | version "9.2.2" 801 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" 802 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 803 | 804 | event-target-shim@^5.0.0: 805 | version "5.0.1" 806 | resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" 807 | integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== 808 | 809 | events@^3.0.0, events@^3.3.0: 810 | version "3.3.0" 811 | resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" 812 | integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== 813 | 814 | fast-fifo@^1.2.0, fast-fifo@^1.3.2: 815 | version "1.3.2" 816 | resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" 817 | integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== 818 | 819 | fast-xml-parser@^4.3.2: 820 | version "4.4.1" 821 | resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz#86dbf3f18edf8739326447bcaac31b4ae7f6514f" 822 | integrity sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw== 823 | dependencies: 824 | strnum "^1.0.5" 825 | 826 | foreground-child@^3.1.0: 827 | version "3.2.1" 828 | resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.2.1.tgz#767004ccf3a5b30df39bed90718bab43fe0a59f7" 829 | integrity sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA== 830 | dependencies: 831 | cross-spawn "^7.0.0" 832 | signal-exit "^4.0.1" 833 | 834 | form-data@^2.5.0: 835 | version "2.5.1" 836 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" 837 | integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== 838 | dependencies: 839 | asynckit "^0.4.0" 840 | combined-stream "^1.0.6" 841 | mime-types "^2.1.12" 842 | 843 | fs.realpath@^1.0.0: 844 | version "1.0.0" 845 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 846 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 847 | 848 | glob@^10.0.0, glob@^10.3.7: 849 | version "10.4.5" 850 | resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" 851 | integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== 852 | dependencies: 853 | foreground-child "^3.1.0" 854 | jackspeak "^3.1.2" 855 | minimatch "^9.0.4" 856 | minipass "^7.1.2" 857 | package-json-from-dist "^1.0.0" 858 | path-scurry "^1.11.1" 859 | 860 | glob@^7.1.6: 861 | version "7.2.3" 862 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 863 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 864 | dependencies: 865 | fs.realpath "^1.0.0" 866 | inflight "^1.0.4" 867 | inherits "2" 868 | minimatch "^3.1.1" 869 | once "^1.3.0" 870 | path-is-absolute "^1.0.0" 871 | 872 | graceful-fs@^4.2.0: 873 | version "4.2.11" 874 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" 875 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== 876 | 877 | http-proxy-agent@^7.0.0: 878 | version "7.0.2" 879 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" 880 | integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== 881 | dependencies: 882 | agent-base "^7.1.0" 883 | debug "^4.3.4" 884 | 885 | https-proxy-agent@^7.0.0: 886 | version "7.0.5" 887 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" 888 | integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== 889 | dependencies: 890 | agent-base "^7.0.2" 891 | debug "4" 892 | 893 | ieee754@^1.2.1: 894 | version "1.2.1" 895 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 896 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 897 | 898 | inflight@^1.0.4: 899 | version "1.0.6" 900 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 901 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 902 | dependencies: 903 | once "^1.3.0" 904 | wrappy "1" 905 | 906 | inherits@2, inherits@~2.0.3: 907 | version "2.0.4" 908 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 909 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 910 | 911 | is-fullwidth-code-point@^3.0.0: 912 | version "3.0.0" 913 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 914 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 915 | 916 | is-plain-object@^5.0.0: 917 | version "5.0.0" 918 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" 919 | integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== 920 | 921 | is-stream@^2.0.1: 922 | version "2.0.1" 923 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" 924 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== 925 | 926 | isarray@~1.0.0: 927 | version "1.0.0" 928 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 929 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== 930 | 931 | isexe@^2.0.0: 932 | version "2.0.0" 933 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 934 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 935 | 936 | jackspeak@^3.1.2: 937 | version "3.4.3" 938 | resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" 939 | integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== 940 | dependencies: 941 | "@isaacs/cliui" "^8.0.2" 942 | optionalDependencies: 943 | "@pkgjs/parseargs" "^0.11.0" 944 | 945 | jwt-decode@^3.1.2: 946 | version "3.1.2" 947 | resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" 948 | integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== 949 | 950 | lazystream@^1.0.0: 951 | version "1.0.1" 952 | resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" 953 | integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== 954 | dependencies: 955 | readable-stream "^2.0.5" 956 | 957 | lodash@^4.17.15: 958 | version "4.17.21" 959 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 960 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 961 | 962 | lower-case@^2.0.2: 963 | version "2.0.2" 964 | resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" 965 | integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== 966 | dependencies: 967 | tslib "^2.0.3" 968 | 969 | lru-cache@^10.2.0: 970 | version "10.4.3" 971 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" 972 | integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== 973 | 974 | mime-db@1.52.0: 975 | version "1.52.0" 976 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 977 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 978 | 979 | mime-types@^2.1.12: 980 | version "2.1.35" 981 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 982 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 983 | dependencies: 984 | mime-db "1.52.0" 985 | 986 | minimatch@^3.0.4, minimatch@^3.1.1: 987 | version "3.1.2" 988 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 989 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 990 | dependencies: 991 | brace-expansion "^1.1.7" 992 | 993 | minimatch@^5.1.0: 994 | version "5.1.6" 995 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" 996 | integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== 997 | dependencies: 998 | brace-expansion "^2.0.1" 999 | 1000 | minimatch@^9.0.4: 1001 | version "9.0.5" 1002 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" 1003 | integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== 1004 | dependencies: 1005 | brace-expansion "^2.0.1" 1006 | 1007 | minimist@^1.2.6: 1008 | version "1.2.8" 1009 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 1010 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 1011 | 1012 | minipass@^4.0.0: 1013 | version "4.2.8" 1014 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" 1015 | integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== 1016 | 1017 | "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4, minipass@^7.1.2: 1018 | version "7.1.2" 1019 | resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" 1020 | integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== 1021 | 1022 | minizlib@^3.0.1: 1023 | version "3.0.1" 1024 | resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-3.0.1.tgz#46d5329d1eb3c83924eff1d3b858ca0a31581012" 1025 | integrity sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg== 1026 | dependencies: 1027 | minipass "^7.0.4" 1028 | rimraf "^5.0.5" 1029 | 1030 | mkdirp@^0.5.1: 1031 | version "0.5.6" 1032 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" 1033 | integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== 1034 | dependencies: 1035 | minimist "^1.2.6" 1036 | 1037 | mkdirp@^3.0.1: 1038 | version "3.0.1" 1039 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50" 1040 | integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg== 1041 | 1042 | ms@2.1.2: 1043 | version "2.1.2" 1044 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1045 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1046 | 1047 | no-case@^3.0.4: 1048 | version "3.0.4" 1049 | resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" 1050 | integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== 1051 | dependencies: 1052 | lower-case "^2.0.2" 1053 | tslib "^2.0.3" 1054 | 1055 | node-fetch@^2.6.7: 1056 | version "2.7.0" 1057 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" 1058 | integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== 1059 | dependencies: 1060 | whatwg-url "^5.0.0" 1061 | 1062 | normalize-path@^3.0.0: 1063 | version "3.0.0" 1064 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1065 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1066 | 1067 | once@^1.3.0, once@^1.4.0: 1068 | version "1.4.0" 1069 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1070 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1071 | dependencies: 1072 | wrappy "1" 1073 | 1074 | package-json-from-dist@^1.0.0: 1075 | version "1.0.0" 1076 | resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" 1077 | integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== 1078 | 1079 | pascal-case@^3.1.2: 1080 | version "3.1.2" 1081 | resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" 1082 | integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== 1083 | dependencies: 1084 | no-case "^3.0.4" 1085 | tslib "^2.0.3" 1086 | 1087 | path-is-absolute@^1.0.0: 1088 | version "1.0.1" 1089 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1090 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1091 | 1092 | path-key@^3.1.0: 1093 | version "3.1.1" 1094 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1095 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1096 | 1097 | path-scurry@^1.11.1: 1098 | version "1.11.1" 1099 | resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" 1100 | integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== 1101 | dependencies: 1102 | lru-cache "^10.2.0" 1103 | minipass "^5.0.0 || ^6.0.2 || ^7.0.0" 1104 | 1105 | path-to-regexp@^6.2.0: 1106 | version "6.3.0" 1107 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz#2b6a26a337737a8e1416f9272ed0766b1c0389f4" 1108 | integrity sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ== 1109 | 1110 | prettier@2.5.1: 1111 | version "2.5.1" 1112 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" 1113 | integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== 1114 | 1115 | prettier@^2.5.1: 1116 | version "2.8.8" 1117 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" 1118 | integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== 1119 | 1120 | process-nextick-args@~2.0.0: 1121 | version "2.0.1" 1122 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 1123 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1124 | 1125 | process@^0.11.10: 1126 | version "0.11.10" 1127 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" 1128 | integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== 1129 | 1130 | queue-tick@^1.0.1: 1131 | version "1.0.1" 1132 | resolved "https://registry.yarnpkg.com/queue-tick/-/queue-tick-1.0.1.tgz#f6f07ac82c1fd60f82e098b417a80e52f1f4c142" 1133 | integrity sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag== 1134 | 1135 | readable-stream@^2.0.5: 1136 | version "2.3.8" 1137 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" 1138 | integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== 1139 | dependencies: 1140 | core-util-is "~1.0.0" 1141 | inherits "~2.0.3" 1142 | isarray "~1.0.0" 1143 | process-nextick-args "~2.0.0" 1144 | safe-buffer "~5.1.1" 1145 | string_decoder "~1.1.1" 1146 | util-deprecate "~1.0.1" 1147 | 1148 | readable-stream@^4.0.0: 1149 | version "4.5.2" 1150 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" 1151 | integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== 1152 | dependencies: 1153 | abort-controller "^3.0.0" 1154 | buffer "^6.0.3" 1155 | events "^3.3.0" 1156 | process "^0.11.10" 1157 | string_decoder "^1.3.0" 1158 | 1159 | readdir-glob@^1.1.2: 1160 | version "1.1.3" 1161 | resolved "https://registry.yarnpkg.com/readdir-glob/-/readdir-glob-1.1.3.tgz#c3d831f51f5e7bfa62fa2ffbe4b508c640f09584" 1162 | integrity sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA== 1163 | dependencies: 1164 | minimatch "^5.1.0" 1165 | 1166 | rimraf@^5.0.5: 1167 | version "5.0.9" 1168 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.9.tgz#c3baa1b886eadc2ec7981a06a593c3d01134ffe9" 1169 | integrity sha512-3i7b8OcswU6CpU8Ej89quJD4O98id7TtVM5U4Mybh84zQXdrFmDLouWBEEaD/QfO3gDDfH+AGFCGsR7kngzQnA== 1170 | dependencies: 1171 | glob "^10.3.7" 1172 | 1173 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1174 | version "5.1.2" 1175 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 1176 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1177 | 1178 | safe-buffer@~5.2.0: 1179 | version "5.2.1" 1180 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1181 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1182 | 1183 | sax@>=0.6.0: 1184 | version "1.4.1" 1185 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" 1186 | integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== 1187 | 1188 | semver@^6.1.0, semver@^6.3.1: 1189 | version "6.3.1" 1190 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" 1191 | integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== 1192 | 1193 | shebang-command@^2.0.0: 1194 | version "2.0.0" 1195 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1196 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1197 | dependencies: 1198 | shebang-regex "^3.0.0" 1199 | 1200 | shebang-regex@^3.0.0: 1201 | version "3.0.0" 1202 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1203 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1204 | 1205 | signal-exit@^4.0.1: 1206 | version "4.1.0" 1207 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" 1208 | integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== 1209 | 1210 | streamx@^2.15.0: 1211 | version "2.18.0" 1212 | resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.18.0.tgz#5bc1a51eb412a667ebfdcd4e6cf6a6fc65721ac7" 1213 | integrity sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ== 1214 | dependencies: 1215 | fast-fifo "^1.3.2" 1216 | queue-tick "^1.0.1" 1217 | text-decoder "^1.1.0" 1218 | optionalDependencies: 1219 | bare-events "^2.2.0" 1220 | 1221 | "string-width-cjs@npm:string-width@^4.2.0": 1222 | version "4.2.3" 1223 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1224 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1225 | dependencies: 1226 | emoji-regex "^8.0.0" 1227 | is-fullwidth-code-point "^3.0.0" 1228 | strip-ansi "^6.0.1" 1229 | 1230 | string-width@^4.1.0: 1231 | version "4.2.3" 1232 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1233 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1234 | dependencies: 1235 | emoji-regex "^8.0.0" 1236 | is-fullwidth-code-point "^3.0.0" 1237 | strip-ansi "^6.0.1" 1238 | 1239 | string-width@^5.0.1, string-width@^5.1.2: 1240 | version "5.1.2" 1241 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" 1242 | integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== 1243 | dependencies: 1244 | eastasianwidth "^0.2.0" 1245 | emoji-regex "^9.2.2" 1246 | strip-ansi "^7.0.1" 1247 | 1248 | string_decoder@^1.3.0: 1249 | version "1.3.0" 1250 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1251 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1252 | dependencies: 1253 | safe-buffer "~5.2.0" 1254 | 1255 | string_decoder@~1.1.1: 1256 | version "1.1.1" 1257 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 1258 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1259 | dependencies: 1260 | safe-buffer "~5.1.0" 1261 | 1262 | "strip-ansi-cjs@npm:strip-ansi@^6.0.1": 1263 | version "6.0.1" 1264 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1265 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1266 | dependencies: 1267 | ansi-regex "^5.0.1" 1268 | 1269 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1270 | version "6.0.1" 1271 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1272 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1273 | dependencies: 1274 | ansi-regex "^5.0.1" 1275 | 1276 | strip-ansi@^7.0.1: 1277 | version "7.1.0" 1278 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" 1279 | integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== 1280 | dependencies: 1281 | ansi-regex "^6.0.1" 1282 | 1283 | strnum@^1.0.5: 1284 | version "1.0.5" 1285 | resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" 1286 | integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== 1287 | 1288 | tar-stream@^3.0.0: 1289 | version "3.1.7" 1290 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b" 1291 | integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ== 1292 | dependencies: 1293 | b4a "^1.6.4" 1294 | fast-fifo "^1.2.0" 1295 | streamx "^2.15.0" 1296 | 1297 | tar@^7.1.0: 1298 | version "7.4.2" 1299 | resolved "https://registry.yarnpkg.com/tar/-/tar-7.4.2.tgz#244859617851fc6dd5413c67b195585d25a7a2f4" 1300 | integrity sha512-pP4ToLATHpXOrbxOZudW6rnfyPWJZoyERNrpTpQEtW6LkvpXw+WDnpj2GBQX9tyQ6teUyPESyyiOCFgp6HnGdw== 1301 | dependencies: 1302 | "@isaacs/fs-minipass" "^4.0.0" 1303 | chownr "^3.0.0" 1304 | minipass "^7.1.2" 1305 | minizlib "^3.0.1" 1306 | mkdirp "^3.0.1" 1307 | yallist "^5.0.0" 1308 | 1309 | text-decoder@^1.1.0: 1310 | version "1.1.1" 1311 | resolved "https://registry.yarnpkg.com/text-decoder/-/text-decoder-1.1.1.tgz#5df9c224cebac4a7977720b9f083f9efa1aefde8" 1312 | integrity sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA== 1313 | dependencies: 1314 | b4a "^1.6.4" 1315 | 1316 | tr46@~0.0.3: 1317 | version "0.0.3" 1318 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 1319 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 1320 | 1321 | "traverse@>=0.3.0 <0.4": 1322 | version "0.3.9" 1323 | resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" 1324 | integrity sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== 1325 | 1326 | ts-poet@^4.5.0: 1327 | version "4.15.0" 1328 | resolved "https://registry.yarnpkg.com/ts-poet/-/ts-poet-4.15.0.tgz#637145fa554d3b27c56541578df0ce08cd9eb328" 1329 | integrity sha512-sLLR8yQBvHzi9d4R1F4pd+AzQxBfzOSSjfxiJxQhkUoH5bL7RsAC6wgvtVUQdGqiCsyS9rT6/8X2FI7ipdir5g== 1330 | dependencies: 1331 | lodash "^4.17.15" 1332 | prettier "^2.5.1" 1333 | 1334 | tslib@^1.10.0: 1335 | version "1.14.1" 1336 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 1337 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 1338 | 1339 | tslib@^2.0.3, tslib@^2.2.0, tslib@^2.6.2: 1340 | version "2.6.3" 1341 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" 1342 | integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== 1343 | 1344 | tunnel@0.0.6, tunnel@^0.0.6: 1345 | version "0.0.6" 1346 | resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" 1347 | integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== 1348 | 1349 | twirp-ts@^2.5.0: 1350 | version "2.5.0" 1351 | resolved "https://registry.yarnpkg.com/twirp-ts/-/twirp-ts-2.5.0.tgz#b43f09e95868d68ecd5c755ecbb08a7e51388504" 1352 | integrity sha512-JTKIK5Pf/+3qCrmYDFlqcPPUx+ohEWKBaZy8GL8TmvV2VvC0SXVyNYILO39+GCRbqnuP6hBIF+BVr8ZxRz+6fw== 1353 | dependencies: 1354 | "@protobuf-ts/plugin-framework" "^2.0.7" 1355 | camel-case "^4.1.2" 1356 | dot-object "^2.1.4" 1357 | path-to-regexp "^6.2.0" 1358 | ts-poet "^4.5.0" 1359 | yaml "^1.10.2" 1360 | 1361 | typescript@5.x: 1362 | version "5.5.4" 1363 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba" 1364 | integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q== 1365 | 1366 | typescript@^3.9: 1367 | version "3.9.10" 1368 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" 1369 | integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== 1370 | 1371 | undici-types@~5.26.4: 1372 | version "5.26.5" 1373 | resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" 1374 | integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== 1375 | 1376 | undici@^5.25.4: 1377 | version "5.29.0" 1378 | resolved "https://registry.yarnpkg.com/undici/-/undici-5.29.0.tgz#419595449ae3f2cdcba3580a2e8903399bd1f5a3" 1379 | integrity sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg== 1380 | dependencies: 1381 | "@fastify/busboy" "^2.0.0" 1382 | 1383 | universal-user-agent@^6.0.0: 1384 | version "6.0.1" 1385 | resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.1.tgz#15f20f55da3c930c57bddbf1734c6654d5fd35aa" 1386 | integrity sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ== 1387 | 1388 | unzip-stream@^0.3.1: 1389 | version "0.3.4" 1390 | resolved "https://registry.yarnpkg.com/unzip-stream/-/unzip-stream-0.3.4.tgz#b4576755061809cf210b776cf26888d6a7823ead" 1391 | integrity sha512-PyofABPVv+d7fL7GOpusx7eRT9YETY2X04PhwbSipdj6bMxVCFJrr+nm0Mxqbf9hUiTin/UsnuFWBXlDZFy0Cw== 1392 | dependencies: 1393 | binary "^0.3.0" 1394 | mkdirp "^0.5.1" 1395 | 1396 | util-deprecate@~1.0.1: 1397 | version "1.0.2" 1398 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1399 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1400 | 1401 | uuid@^3.3.2, uuid@^3.3.3: 1402 | version "3.4.0" 1403 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" 1404 | integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== 1405 | 1406 | uuid@^8.3.2: 1407 | version "8.3.2" 1408 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" 1409 | integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== 1410 | 1411 | validate-npm-package-name@^5.0.1: 1412 | version "5.0.1" 1413 | resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz#a316573e9b49f3ccd90dbb6eb52b3f06c6d604e8" 1414 | integrity sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ== 1415 | 1416 | webidl-conversions@^3.0.0: 1417 | version "3.0.1" 1418 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 1419 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 1420 | 1421 | whatwg-url@^5.0.0: 1422 | version "5.0.0" 1423 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 1424 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 1425 | dependencies: 1426 | tr46 "~0.0.3" 1427 | webidl-conversions "^3.0.0" 1428 | 1429 | which@^2.0.1: 1430 | version "2.0.2" 1431 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1432 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1433 | dependencies: 1434 | isexe "^2.0.0" 1435 | 1436 | "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": 1437 | version "7.0.0" 1438 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1439 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1440 | dependencies: 1441 | ansi-styles "^4.0.0" 1442 | string-width "^4.1.0" 1443 | strip-ansi "^6.0.0" 1444 | 1445 | wrap-ansi@^8.1.0: 1446 | version "8.1.0" 1447 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" 1448 | integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== 1449 | dependencies: 1450 | ansi-styles "^6.1.0" 1451 | string-width "^5.0.1" 1452 | strip-ansi "^7.0.1" 1453 | 1454 | wrappy@1: 1455 | version "1.0.2" 1456 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1457 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1458 | 1459 | xml2js@^0.5.0: 1460 | version "0.5.0" 1461 | resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7" 1462 | integrity sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA== 1463 | dependencies: 1464 | sax ">=0.6.0" 1465 | xmlbuilder "~11.0.0" 1466 | 1467 | xmlbuilder@~11.0.0: 1468 | version "11.0.1" 1469 | resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" 1470 | integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== 1471 | 1472 | yallist@^5.0.0: 1473 | version "5.0.0" 1474 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-5.0.0.tgz#00e2de443639ed0d78fd87de0d27469fbcffb533" 1475 | integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw== 1476 | 1477 | yaml@^1.10.2: 1478 | version "1.10.2" 1479 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" 1480 | integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== 1481 | 1482 | zip-stream@^6.0.1: 1483 | version "6.0.1" 1484 | resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-6.0.1.tgz#e141b930ed60ccaf5d7fa9c8260e0d1748a2bbfb" 1485 | integrity sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA== 1486 | dependencies: 1487 | archiver-utils "^5.0.0" 1488 | compress-commons "^6.0.2" 1489 | readable-stream "^4.0.0" 1490 | --------------------------------------------------------------------------------