diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 2c214f3..40a91d2 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -15,19 +15,19 @@ jobs: fail-fast: false matrix: pnpm: - - 9.15.5 + - 4.11.1 os: - ubuntu-latest - macos-latest - windows-latest steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 + - uses: actions/checkout@v4 - name: Run the action uses: ./ with: - version: 9.15.5 + version: 4.11.1 - name: 'Test: which' run: which pnpm; which pnpx @@ -44,19 +44,19 @@ jobs: fail-fast: false matrix: pnpm: - - 9.15.5 + - 4.11.1 os: - ubuntu-latest - macos-latest - windows-latest steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 + - uses: actions/checkout@v4 - name: Run the action uses: ./ with: - version: 9.15.5 + version: 4.11.1 dest: ~/test/pnpm - name: 'Test: which' @@ -74,8 +74,8 @@ jobs: fail-fast: false matrix: os: - # macos is excluded from this test because node 12 is no longer available on this platform - ubuntu-latest + - macos-latest - windows-latest standalone: @@ -83,16 +83,16 @@ jobs: - false steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 + - uses: actions/checkout@v4 - name: Run the action uses: ./ with: - version: 9.15.0 + version: 7.0.0 standalone: ${{ matrix.standalone }} - name: install Node.js - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + uses: actions/setup-node@v4 with: # pnpm@7.0.0 is not compatible with Node.js 12 node-version: 12.22.12 @@ -129,7 +129,7 @@ jobs: fail-fast: false matrix: pnpm: - - 9.15.5 + - 4.11.1 os: - ubuntu-latest - macos-latest @@ -149,6 +149,7 @@ jobs: - --global-dir=./pnpm-global - npm - yarn + - pnpm - name: 'array' value: | - {} @@ -158,14 +159,15 @@ jobs: - --global-dir=./pnpm-global - npm - yarn + - pnpm steps: - - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 + - uses: actions/checkout@v4 - name: Run the action uses: ./ with: - version: 9.15.5 + version: 4.11.1 run_install: ${{ matrix.run_install.value }} - name: 'Test: which' diff --git a/README.md b/README.md index 85bba1f..237e9d0 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,3 @@ -> ## :warning: Upgrade from v2! -> -> The v2 version of this action [has stopped working](https://github.com/pnpm/action-setup/issues/135) with newer Node.js versions. Please, upgrade to the latest version to fix any issues. - # Setup pnpm Install pnpm package manager. @@ -40,19 +36,11 @@ If `run_install` is a YAML string representation of either an object or an array #### `run_install.args` -**Optional** (_type:_ `string[]`) Additional arguments after `pnpm [recursive] install`, e.g. `[--ignore-scripts, --strict-peer-dependencies]`. - -### `cache` - -**Optional** (_type:_ `boolean`, _default:_ `false`) Whether to cache the pnpm store directory. - -### `cache_dependency_path` - -**Optional** (_type:_ `string|string[]`, _default:_ `pnpm-lock.yaml`) File path to the pnpm lockfile, which contents hash will be used as a cache key. +**Optional** (_type:_ `string[]`) Additional arguments after `pnpm [recursive] install`, e.g. `[--frozen-lockfile, --strict-peer-dependencies]`. ### `package_json_file` -**Optional** (_type:_ `string`, _default:_ `package.json`) File path to the `package.json`/[`package.yaml`](https://github.com/pnpm/pnpm/pull/1799) to read "packageManager" configuration. +**Optional** (_type:_ `string`, _default:_ `package.json`) File path to the `package.json` to read "packageManager" configuration. ### `standalone` @@ -72,9 +60,7 @@ Location of `pnpm` and `pnpx` command. ## Usage example -### Install only pnpm without `packageManager` - -This works when the repo either doesn't have a `package.json` or has a `package.json` but it doesn't specify `packageManager`. +### Just install pnpm ```yaml on: @@ -86,26 +72,9 @@ jobs: runs-on: ubuntu-latest steps: - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v3 with: - version: 10 -``` - -### Install only pnpm with `packageManager` - -Omit `version` input to use the version in the [`packageManager` field in the `package.json`](https://nodejs.org/api/corepack.html). - -```yaml -on: - - push - - pull_request - -jobs: - install: - runs-on: ubuntu-latest - - steps: - - uses: pnpm/action-setup@v4 + version: 8 ``` ### Install pnpm and a few npm packages @@ -120,14 +89,14 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v3 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@v3 with: - version: 10 + version: 8 run_install: | - recursive: true - args: [--strict-peer-dependencies] + args: [--frozen-lockfile, --strict-peer-dependencies] - args: [--global, gulp, prettier, typescript] ``` @@ -144,13 +113,31 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v3 - - uses: pnpm/action-setup@v4 + - name: Install Node.js + uses: actions/setup-node@v3 + with: + node-version: 16 + + - uses: pnpm/action-setup@v3 name: Install pnpm with: - version: 10 - cache: true + version: 8 + run_install: false + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- - name: Install dependencies run: pnpm install @@ -164,4 +151,4 @@ This action does not setup Node.js for you, use [actions/setup-node](https://git ## License -[MIT](https://github.com/pnpm/action-setup/blob/master/LICENSE.md) © [Hoàng Văn Khải](https://github.com/KSXGitHub/) +[MIT](https://git.io/JfclH) © [Hoàng Văn Khải](https://github.com/KSXGitHub/) diff --git a/action.yml b/action.yml index fe97198..471e2fa 100644 --- a/action.yml +++ b/action.yml @@ -15,28 +15,15 @@ inputs: description: If specified, run `pnpm install` required: false default: 'null' - cache: - description: Whether to cache the pnpm store directory - required: false - default: 'false' - cache_dependency_path: - description: File path to the pnpm lockfile, which contents hash will be used as a cache key - required: false - default: 'pnpm-lock.yaml' package_json_file: - description: File path to the package.json to read "packageManager" configuration. This path must be relative to the repository root (GITHUB_WORKSPACE). + description: File path to the package.json to read "packageManager" configuration required: false default: 'package.json' standalone: description: When set to true, @pnpm/exe, which is a Node.js bundled package, will be installed, enabling using pnpm without Node.js. required: false default: 'false' -outputs: - dest: - description: Expanded path of inputs#dest - bin_dest: - description: Location of `pnpm` and `pnpx` command runs: - using: node24 + using: node20 main: dist/index.js post: dist/index.js diff --git a/dist/index.js b/dist/index.js index c315d06..d7bafcc 100644 Binary files a/dist/index.js and b/dist/index.js differ diff --git a/package.json b/package.json index 4582273..06ca9f7 100644 --- a/package.json +++ b/package.json @@ -7,13 +7,13 @@ "update-pnpm-dist": "pnpm install && cp ./node_modules/pnpm/dist/pnpm.cjs ./dist/pnpm.cjs && cp ./node_modules/pnpm/dist/worker.js ./dist/worker.js" }, "dependencies": { - "@actions/cache": "^4.1.0", "@actions/core": "^1.10.1", - "@actions/exec": "^1.1.1", - "@actions/glob": "^0.5.0", "@types/expand-tilde": "^2.0.2", - "@types/node": "^22.0.0", + "@types/fs-extra": "^11.0.4", + "@types/node": "^20.11.5", + "@types/node-fetch": "^2.6.11", "expand-tilde": "^2.0.2", + "fs-extra": "^11.2.0", "yaml": "^2.3.4", "zod": "^3.22.4" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c3957a9..8c1d37b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,744 +1,225 @@ -lockfileVersion: '9.0' +lockfileVersion: '6.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -importers: +dependencies: + '@actions/core': + specifier: ^1.10.1 + version: 1.10.1 + '@types/expand-tilde': + specifier: ^2.0.2 + version: 2.0.2 + '@types/fs-extra': + specifier: ^11.0.4 + version: 11.0.4 + '@types/node': + specifier: ^20.11.5 + version: 20.11.5 + '@types/node-fetch': + specifier: ^2.6.11 + version: 2.6.11 + expand-tilde: + specifier: ^2.0.2 + version: 2.0.2 + fs-extra: + specifier: ^11.2.0 + version: 11.2.0 + yaml: + specifier: ^2.3.4 + version: 2.3.4 + zod: + specifier: ^3.22.4 + version: 3.22.4 - .: - dependencies: - '@actions/cache': - specifier: ^4.1.0 - version: 4.1.0 - '@actions/core': - specifier: ^1.10.1 - version: 1.11.1 - '@actions/exec': - specifier: ^1.1.1 - version: 1.1.1 - '@actions/glob': - specifier: ^0.5.0 - version: 0.5.0 - '@types/expand-tilde': - specifier: ^2.0.2 - version: 2.0.2 - '@types/node': - specifier: ^22.0.0 - version: 22.19.11 - expand-tilde: - specifier: ^2.0.2 - version: 2.0.2 - yaml: - specifier: ^2.3.4 - version: 2.7.0 - zod: - specifier: ^3.22.4 - version: 3.24.1 - devDependencies: - '@vercel/ncc': - specifier: ^0.38.1 - version: 0.38.3 - pnpm: - specifier: ^8.14.3 - version: 8.15.9 - typescript: - specifier: ^5.3.3 - version: 5.7.3 +devDependencies: + '@vercel/ncc': + specifier: ^0.38.1 + version: 0.38.1 + pnpm: + specifier: ^8.14.3 + version: 8.14.3 + typescript: + specifier: ^5.3.3 + version: 5.3.3 packages: - '@actions/cache@4.1.0': - resolution: {integrity: sha512-z3Opg+P4Y7baq+g1dODXgdtsvPLSewr3ZKpp3U0HQR1A/vWCoJFS52XSezjdngo4SIOdR5oHtyK3a3Arar+X9A==} + /@actions/core@1.10.1: + resolution: {integrity: sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==} + dependencies: + '@actions/http-client': 2.2.0 + uuid: 8.3.2 + dev: false - '@actions/core@1.11.1': - resolution: {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} + /@actions/http-client@2.2.0: + resolution: {integrity: sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==} + dependencies: + tunnel: 0.0.6 + undici: 5.28.2 + dev: false - '@actions/exec@1.1.1': - resolution: {integrity: sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==} - - '@actions/glob@0.1.2': - resolution: {integrity: sha512-SclLR7Ia5sEqjkJTPs7Sd86maMDw43p769YxBOxvPvEWuPEhpAnBsQfENOpXjFYMmhCqd127bmf+YdvJqVqR4A==} - - '@actions/glob@0.5.0': - resolution: {integrity: sha512-tST2rjPvJLRZLuT9NMUtyBjvj9Yo0MiJS3ow004slMvm8GFM+Zv9HvMJ7HWzfUyJnGrJvDsYkWBaaG3YKXRtCw==} - - '@actions/http-client@2.2.3': - resolution: {integrity: sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==} - - '@actions/io@1.1.3': - resolution: {integrity: sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==} - - '@azure/abort-controller@1.1.0': - resolution: {integrity: sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==} - engines: {node: '>=12.0.0'} - - '@azure/abort-controller@2.1.2': - resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==} - engines: {node: '>=18.0.0'} - - '@azure/core-auth@1.10.0': - resolution: {integrity: sha512-88Djs5vBvGbHQHf5ZZcaoNHo6Y8BKZkt3cw2iuJIQzLEgH4Ox6Tm4hjFhbqOxyYsgIG/eJbFEHpxRIfEEWv5Ow==} - engines: {node: '>=20.0.0'} - - '@azure/core-client@1.10.0': - resolution: {integrity: sha512-O4aP3CLFNodg8eTHXECaH3B3CjicfzkxVtnrfLkOq0XNP7TIECGfHpK/C6vADZkWP75wzmdBnsIA8ksuJMk18g==} - engines: {node: '>=20.0.0'} - - '@azure/core-http-compat@2.3.0': - resolution: {integrity: sha512-qLQujmUypBBG0gxHd0j6/Jdmul6ttl24c8WGiLXIk7IHXdBlfoBqW27hyz3Xn6xbfdyVSarl1Ttbk0AwnZBYCw==} - engines: {node: '>=18.0.0'} - - '@azure/core-lro@2.7.2': - resolution: {integrity: sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==} - engines: {node: '>=18.0.0'} - - '@azure/core-paging@1.6.2': - resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==} - engines: {node: '>=18.0.0'} - - '@azure/core-rest-pipeline@1.22.0': - resolution: {integrity: sha512-OKHmb3/Kpm06HypvB3g6Q3zJuvyXcpxDpCS1PnU8OV6AJgSFaee/covXBcPbWc6XDDxtEPlbi3EMQ6nUiPaQtw==} - engines: {node: '>=20.0.0'} - - '@azure/core-tracing@1.3.0': - resolution: {integrity: sha512-+XvmZLLWPe67WXNZo9Oc9CrPj/Tm8QnHR92fFAFdnbzwNdCH1h+7UdpaQgRSBsMY+oW1kHXNUZQLdZ1gHX3ROw==} - engines: {node: '>=20.0.0'} - - '@azure/core-util@1.13.0': - resolution: {integrity: sha512-o0psW8QWQ58fq3i24Q1K2XfS/jYTxr7O1HRcyUE9bV9NttLU+kYOH82Ixj8DGlMTOWgxm1Sss2QAfKK5UkSPxw==} - engines: {node: '>=20.0.0'} - - '@azure/core-xml@1.5.0': - resolution: {integrity: sha512-D/sdlJBMJfx7gqoj66PKVmhDDaU6TKA49ptcolxdas29X7AfvLTmfAGLjAcIMBK7UZ2o4lygHIqVckOlQU3xWw==} - engines: {node: '>=20.0.0'} - - '@azure/logger@1.3.0': - resolution: {integrity: sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==} - engines: {node: '>=20.0.0'} - - '@azure/ms-rest-js@2.7.0': - resolution: {integrity: sha512-ngbzWbqF+NmztDOpLBVDxYM+XLcUj7nKhxGbSU9WtIsXfRB//cf2ZbAG5HkOrhU9/wd/ORRB6lM/d69RKVjiyA==} - - '@azure/storage-blob@12.27.0': - resolution: {integrity: sha512-IQjj9RIzAKatmNca3D6bT0qJ+Pkox1WZGOg2esJF2YLHb45pQKOwGPIAV+w3rfgkj7zV3RMxpn/c6iftzSOZJQ==} - engines: {node: '>=18.0.0'} - - '@fastify/busboy@2.1.1': - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + /@fastify/busboy@2.1.0: + resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} engines: {node: '>=14'} + dev: false - '@protobuf-ts/runtime-rpc@2.11.1': - resolution: {integrity: sha512-4CqqUmNA+/uMz00+d3CYKgElXO9VrEbucjnBFEjqI4GuDrEQ32MaI3q+9qPBvIGOlL4PmHXrzM32vBPWRhQKWQ==} - - '@protobuf-ts/runtime@2.11.1': - resolution: {integrity: sha512-KuDaT1IfHkugM2pyz+FwiY80ejWrkH1pAtOBOZFuR6SXEFTsnb/jiQWQ1rCIrcKx2BtyxnxW6BWwsVSA/Ie+WQ==} - - '@types/expand-tilde@2.0.2': + /@types/expand-tilde@2.0.2: resolution: {integrity: sha512-wlsMYiapmIR4Eq/Z0qysN8xaDMjSkO6AIDNFx9oxgWGeKVA1jU+NzwPRZErBNP5z6/dx6QNkNpKglBGPO9OkTA==} + dev: false - '@types/node@22.19.11': - resolution: {integrity: sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w==} + /@types/fs-extra@11.0.4: + resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + dependencies: + '@types/jsonfile': 6.1.4 + '@types/node': 20.11.5 + dev: false - '@typespec/ts-http-runtime@0.3.0': - resolution: {integrity: sha512-sOx1PKSuFwnIl7z4RN0Ls7N9AQawmR9r66eI5rFCzLDIs8HTIYrIpH9QjYWoX0lkgGrkLxXhi4QnK7MizPRrIg==} - engines: {node: '>=20.0.0'} + /@types/jsonfile@6.1.4: + resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} + dependencies: + '@types/node': 20.11.5 + dev: false - '@vercel/ncc@0.38.3': - resolution: {integrity: sha512-rnK6hJBS6mwc+Bkab+PGPs9OiS0i/3kdTO+CkI8V0/VrW3vmz7O2Pxjw/owOlmo6PKEIxRSeZKv/kuL9itnpYA==} + /@types/node-fetch@2.6.11: + resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} + dependencies: + '@types/node': 20.11.5 + form-data: 4.0.0 + dev: false + + /@types/node@20.11.5: + resolution: {integrity: sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==} + dependencies: + undici-types: 5.26.5 + dev: false + + /@vercel/ncc@0.38.1: + resolution: {integrity: sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==} hasBin: true + dev: true - abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - - agent-base@7.1.4: - resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} - engines: {node: '>= 14'} - - asynckit@0.4.0: + /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - brace-expansion@1.1.12: - resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - - combined-stream@1.0.8: + /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - - event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - expand-tilde@2.0.2: - resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} - engines: {node: '>=0.10.0'} - - fast-xml-parser@5.2.5: - resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} - hasBin: true - - form-data@2.5.5: - resolution: {integrity: sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A==} - engines: {node: '>= 0.12'} - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - homedir-polyfill@1.0.3: - resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} - engines: {node: '>=0.10.0'} - - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - parse-passwd@1.0.0: - resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} - engines: {node: '>=0.10.0'} - - pnpm@8.15.9: - resolution: {integrity: sha512-SZQ0ydj90aJ5Tr9FUrOyXApjOrzuW7Fee13pDzL0e1E6ypjNXP0AHDHw20VLw4BO3M1XhQHkyik6aBYWa72fgQ==} - engines: {node: '>=16.14'} - hasBin: true - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - strnum@2.1.1: - resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - tunnel@0.0.6: - resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} - engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} - - typescript@5.7.3: - resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} - engines: {node: '>=14.17'} - hasBin: true - - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - - undici@5.29.0: - resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} - engines: {node: '>=14.0'} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - xml2js@0.5.0: - resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} - engines: {node: '>=4.0.0'} - - xmlbuilder@11.0.1: - resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} - engines: {node: '>=4.0'} - - yaml@2.7.0: - resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} - engines: {node: '>= 14'} - hasBin: true - - zod@3.24.1: - resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} - -snapshots: - - '@actions/cache@4.1.0': - dependencies: - '@actions/core': 1.11.1 - '@actions/exec': 1.1.1 - '@actions/glob': 0.1.2 - '@actions/http-client': 2.2.3 - '@actions/io': 1.1.3 - '@azure/abort-controller': 1.1.0 - '@azure/ms-rest-js': 2.7.0 - '@azure/storage-blob': 12.27.0 - '@protobuf-ts/runtime-rpc': 2.11.1 - semver: 6.3.1 - transitivePeerDependencies: - - encoding - - supports-color - - '@actions/core@1.11.1': - dependencies: - '@actions/exec': 1.1.1 - '@actions/http-client': 2.2.3 - - '@actions/exec@1.1.1': - dependencies: - '@actions/io': 1.1.3 - - '@actions/glob@0.1.2': - dependencies: - '@actions/core': 1.11.1 - minimatch: 3.1.2 - - '@actions/glob@0.5.0': - dependencies: - '@actions/core': 1.11.1 - minimatch: 3.1.2 - - '@actions/http-client@2.2.3': - dependencies: - tunnel: 0.0.6 - undici: 5.29.0 - - '@actions/io@1.1.3': {} - - '@azure/abort-controller@1.1.0': - dependencies: - tslib: 2.8.1 - - '@azure/abort-controller@2.1.2': - dependencies: - tslib: 2.8.1 - - '@azure/core-auth@1.10.0': - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-util': 1.13.0 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@azure/core-client@1.10.0': - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.10.0 - '@azure/core-rest-pipeline': 1.22.0 - '@azure/core-tracing': 1.3.0 - '@azure/core-util': 1.13.0 - '@azure/logger': 1.3.0 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@azure/core-http-compat@2.3.0': - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-client': 1.10.0 - '@azure/core-rest-pipeline': 1.22.0 - transitivePeerDependencies: - - supports-color - - '@azure/core-lro@2.7.2': - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-util': 1.13.0 - '@azure/logger': 1.3.0 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@azure/core-paging@1.6.2': - dependencies: - tslib: 2.8.1 - - '@azure/core-rest-pipeline@1.22.0': - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.10.0 - '@azure/core-tracing': 1.3.0 - '@azure/core-util': 1.13.0 - '@azure/logger': 1.3.0 - '@typespec/ts-http-runtime': 0.3.0 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@azure/core-tracing@1.3.0': - dependencies: - tslib: 2.8.1 - - '@azure/core-util@1.13.0': - dependencies: - '@azure/abort-controller': 2.1.2 - '@typespec/ts-http-runtime': 0.3.0 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@azure/core-xml@1.5.0': - dependencies: - fast-xml-parser: 5.2.5 - tslib: 2.8.1 - - '@azure/logger@1.3.0': - dependencies: - '@typespec/ts-http-runtime': 0.3.0 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@azure/ms-rest-js@2.7.0': - dependencies: - '@azure/core-auth': 1.10.0 - abort-controller: 3.0.0 - form-data: 2.5.5 - node-fetch: 2.7.0 - tslib: 1.14.1 - tunnel: 0.0.6 - uuid: 8.3.2 - xml2js: 0.5.0 - transitivePeerDependencies: - - encoding - - supports-color - - '@azure/storage-blob@12.27.0': - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.10.0 - '@azure/core-client': 1.10.0 - '@azure/core-http-compat': 2.3.0 - '@azure/core-lro': 2.7.2 - '@azure/core-paging': 1.6.2 - '@azure/core-rest-pipeline': 1.22.0 - '@azure/core-tracing': 1.3.0 - '@azure/core-util': 1.13.0 - '@azure/core-xml': 1.5.0 - '@azure/logger': 1.3.0 - events: 3.3.0 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@fastify/busboy@2.1.1': {} - - '@protobuf-ts/runtime-rpc@2.11.1': - dependencies: - '@protobuf-ts/runtime': 2.11.1 - - '@protobuf-ts/runtime@2.11.1': {} - - '@types/expand-tilde@2.0.2': {} - - '@types/node@22.19.11': - dependencies: - undici-types: 6.21.0 - - '@typespec/ts-http-runtime@0.3.0': - dependencies: - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - tslib: 2.8.1 - transitivePeerDependencies: - - supports-color - - '@vercel/ncc@0.38.3': {} - - abort-controller@3.0.0: - dependencies: - event-target-shim: 5.0.1 - - agent-base@7.1.4: {} - - asynckit@0.4.0: {} - - balanced-match@1.0.2: {} - - brace-expansion@1.1.12: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - call-bind-apply-helpers@1.0.2: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - - combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 + dev: false - concat-map@0.0.1: {} + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false - debug@4.4.1: - dependencies: - ms: 2.1.3 - - delayed-stream@1.0.0: {} - - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - - es-object-atoms@1.1.1: - dependencies: - es-errors: 1.3.0 - - es-set-tostringtag@2.1.0: - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - event-target-shim@5.0.1: {} - - events@3.3.0: {} - - expand-tilde@2.0.2: + /expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} dependencies: homedir-polyfill: 1.0.3 + dev: false - fast-xml-parser@5.2.5: - dependencies: - strnum: 2.1.1 - - form-data@2.5.5: + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - hasown: 2.0.2 mime-types: 2.1.35 - safe-buffer: 5.2.1 + dev: false - function-bind@1.1.2: {} - - get-intrinsic@1.3.0: + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: false - get-proto@1.0.1: - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: false - gopd@1.2.0: {} - - has-symbols@1.1.0: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.1.0 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - homedir-polyfill@1.0.3: + /homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} dependencies: parse-passwd: 1.0.0 + dev: false - http-proxy-agent@7.0.2: + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: - agent-base: 7.1.4 - debug: 4.4.1 - transitivePeerDependencies: - - supports-color + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + dev: false - https-proxy-agent@7.0.6: - dependencies: - agent-base: 7.1.4 - debug: 4.4.1 - transitivePeerDependencies: - - supports-color + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false - math-intrinsics@1.1.0: {} - - mime-db@1.52.0: {} - - mime-types@2.1.35: + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 + dev: false - minimatch@3.1.2: + /parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + dev: false + + /pnpm@8.14.3: + resolution: {integrity: sha512-w+2A61g74+K37zHrlri5z6oFA+XUTscXUUEgtRh7L5M3NukDjFGlojrVgnkLpB1Kt4RhjIn6fiNl9mZWhdYS7g==} + engines: {node: '>=16.14'} + hasBin: true + dev: true + + /tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + dev: false + + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: false + + /undici@5.28.2: + resolution: {integrity: sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==} + engines: {node: '>=14.0'} dependencies: - brace-expansion: 1.1.12 + '@fastify/busboy': 2.1.0 + dev: false - ms@2.1.3: {} + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: false - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: false - parse-passwd@1.0.0: {} + /yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + engines: {node: '>= 14'} + dev: false - pnpm@8.15.9: {} - - safe-buffer@5.2.1: {} - - sax@1.4.1: {} - - semver@6.3.1: {} - - strnum@2.1.1: {} - - tr46@0.0.3: {} - - tslib@1.14.1: {} - - tslib@2.8.1: {} - - tunnel@0.0.6: {} - - typescript@5.7.3: {} - - undici-types@6.21.0: {} - - undici@5.29.0: - dependencies: - '@fastify/busboy': 2.1.1 - - uuid@8.3.2: {} - - webidl-conversions@3.0.1: {} - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - xml2js@0.5.0: - dependencies: - sax: 1.4.1 - xmlbuilder: 11.0.1 - - xmlbuilder@11.0.1: {} - - yaml@2.7.0: {} - - zod@3.24.1: {} + /zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + dev: false diff --git a/src/cache-restore/index.ts b/src/cache-restore/index.ts deleted file mode 100644 index b3db275..0000000 --- a/src/cache-restore/index.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { isFeatureAvailable } from '@actions/cache' -import { endGroup, startGroup, warning } from '@actions/core' -import { Inputs } from '../inputs' -import { runRestoreCache } from './run' - -export async function restoreCache(inputs: Inputs) { - if (!inputs.cache) return - - if (!isFeatureAvailable()) { - warning('Cache is not available, skipping cache restoration') - return - } - - startGroup('Restoring cache...') - await runRestoreCache(inputs) - endGroup() -} - -export default restoreCache diff --git a/src/cache-restore/run.ts b/src/cache-restore/run.ts deleted file mode 100644 index 02a7469..0000000 --- a/src/cache-restore/run.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { restoreCache } from '@actions/cache' -import { debug, info, saveState, setOutput } from '@actions/core' -import { getExecOutput } from '@actions/exec' -import { hashFiles } from '@actions/glob' -import os from 'os' -import { Inputs } from '../inputs' - -export async function runRestoreCache(inputs: Inputs) { - const cachePath = await getCacheDirectory() - saveState('cache_path', cachePath) - - const fileHash = await hashFiles(inputs.cacheDependencyPath) - if (!fileHash) { - throw new Error('Some specified paths were not resolved, unable to cache dependencies.') - } - - const primaryKey = `pnpm-cache-${process.env.RUNNER_OS}-${os.arch()}-${fileHash}` - debug(`Primary key is ${primaryKey}`) - saveState('cache_primary_key', primaryKey) - - let cacheKey = await restoreCache([cachePath], primaryKey) - - setOutput('cache-hit', Boolean(cacheKey)) - - if (!cacheKey) { - info(`Cache is not found`) - return - } - - saveState('cache_restored_key', cacheKey) - info(`Cache restored from key: ${cacheKey}`) -} - -async function getCacheDirectory() { - const { stdout } = await getExecOutput('pnpm store path --silent') - const cacheFolderPath = stdout.trim() - debug(`Cache folder is set to "${cacheFolderPath}"`) - return cacheFolderPath -} diff --git a/src/cache-save/index.ts b/src/cache-save/index.ts deleted file mode 100644 index 2beec06..0000000 --- a/src/cache-save/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { setFailed } from '@actions/core' -import { Inputs } from '../inputs' -import { runSaveCache } from './run' - -export async function saveCache(inputs: Inputs) { - if (!inputs.cache) return - - try { - await runSaveCache() - } catch (error) { - setFailed((error as Error).message) - } -} - -export default saveCache diff --git a/src/cache-save/run.ts b/src/cache-save/run.ts deleted file mode 100644 index 7481d58..0000000 --- a/src/cache-save/run.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { saveCache } from '@actions/cache' -import { getState, info } from '@actions/core' - -export async function runSaveCache() { - const state = getState('cache_restored_key') - const primaryKey = getState('cache_primary_key') - const cachePath = getState('cache_path') - - if (primaryKey === state) { - info(`Cache hit occurred on the primary key ${primaryKey}, not saving cache.`) - return - } - - const cacheId = await saveCache([cachePath], primaryKey) - if (cacheId == -1) return - - info(`Cache saved with the key: ${primaryKey}`) -} diff --git a/src/index.ts b/src/index.ts index b3c72cd..7ae741b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,7 +1,5 @@ import { setFailed, saveState, getState } from '@actions/core' -import restoreCache from './cache-restore' -import saveCache from './cache-save' -import getInputs, { Inputs } from './inputs' +import getInputs from './inputs' import installPnpm from './install-pnpm' import setOutputs from './outputs' import pnpmInstall from './pnpm-install' @@ -9,31 +7,15 @@ import pruneStore from './pnpm-store-prune' async function main() { const inputs = getInputs() - - if (getState('is_post') === 'true') { - await runPost(inputs) - } else { - await runMain(inputs) - } -} - -async function runMain(inputs: Inputs) { + const isPost = getState('is_post') + if (isPost === 'true') return pruneStore(inputs) saveState('is_post', 'true') - await installPnpm(inputs) console.log('Installation Completed!') setOutputs(inputs) - - await restoreCache(inputs) - pnpmInstall(inputs) } -async function runPost(inputs: Inputs) { - pruneStore(inputs) - await saveCache(inputs) -} - main().catch(error => { console.error(error) setFailed(error) diff --git a/src/inputs/index.ts b/src/inputs/index.ts index fc918d9..a9b705a 100644 --- a/src/inputs/index.ts +++ b/src/inputs/index.ts @@ -5,8 +5,6 @@ import { RunInstall, parseRunInstall } from './run-install' export interface Inputs { readonly version?: string readonly dest: string - readonly cache: boolean - readonly cacheDependencyPath: string readonly runInstall: RunInstall[] readonly packageJsonFile: string readonly standalone: boolean @@ -21,8 +19,6 @@ const parseInputPath = (name: string) => expandTilde(getInput(name, options)) export const getInputs = (): Inputs => ({ version: getInput('version'), dest: parseInputPath('dest'), - cache: getBooleanInput('cache'), - cacheDependencyPath: parseInputPath('cache_dependency_path'), runInstall: parseRunInstall('run_install'), packageJsonFile: parseInputPath('package_json_file'), standalone: getBooleanInput('standalone'), diff --git a/src/inputs/run-install.ts b/src/inputs/run-install.ts index a30877c..d7215b7 100644 --- a/src/inputs/run-install.ts +++ b/src/inputs/run-install.ts @@ -1,5 +1,5 @@ import { getInput, error } from '@actions/core' -import { parse as parseYaml } from 'yaml' +import * as yaml from 'yaml' import { z, ZodError } from 'zod' const RunInstallSchema = z.object({ @@ -20,7 +20,7 @@ export type RunInstall = z.infer export function parseRunInstall(inputName: string): RunInstall[] { const input = getInput(inputName, { required: true }) - const parsedInput: unknown = parseYaml(input) + const parsedInput: unknown = yaml.parse(input) try { const result: RunInstallInput = RunInstallInputSchema.parse(parsedInput) diff --git a/src/install-pnpm/run.ts b/src/install-pnpm/run.ts index 005c500..72c7e8b 100644 --- a/src/install-pnpm/run.ts +++ b/src/install-pnpm/run.ts @@ -1,35 +1,19 @@ import { addPath, exportVariable } from '@actions/core' import { spawn } from 'child_process' -import { rm, writeFile, mkdir, copyFile } from 'fs/promises' -import { readFileSync } from 'fs' +import { remove, ensureFile, writeFile, readFile } from 'fs-extra' import path from 'path' import { execPath } from 'process' -import util from 'util' import { Inputs } from '../inputs' -import { parse as parseYaml } from 'yaml' export async function runSelfInstaller(inputs: Inputs): Promise { const { version, dest, packageJsonFile, standalone } = inputs - const { GITHUB_WORKSPACE } = process.env // prepare self install - await rm(dest, { recursive: true, force: true }) - // create dest directory after removal - await mkdir(dest, { recursive: true }) + await remove(dest) const pkgJson = path.join(dest, 'package.json') - // we have ensured the dest directory exists, we can write the file directly + await ensureFile(pkgJson) await writeFile(pkgJson, JSON.stringify({ private: true })) - // copy .npmrc if it exists to install from custom registry - if (GITHUB_WORKSPACE) { - try { - await copyFile(path.join(GITHUB_WORKSPACE, '.npmrc'), path.join(dest, '.npmrc')) - } catch (error) { - // Swallow error if .npmrc doesn't exist - if (!util.types.isNativeError(error) || !('code' in error) || error.code !== 'ENOENT') throw error - } - } - // prepare target pnpm const target = await readTarget({ version, packageJsonFile, standalone }) const cp = spawn(execPath, [path.join(__dirname, 'pnpm.cjs'), 'install', target, '--no-lockfile'], { @@ -55,45 +39,18 @@ async function readTarget(opts: { readonly standalone: boolean }) { const { version, packageJsonFile, standalone } = opts + + if (version) return `${ standalone ? '@pnpm/exe' : 'pnpm' }@${version}` + const { GITHUB_WORKSPACE } = process.env - - let packageManager - - if (GITHUB_WORKSPACE) { - try { - const content = readFileSync(path.join(GITHUB_WORKSPACE, packageJsonFile), 'utf8'); - ({ packageManager } = packageJsonFile.endsWith(".yaml") - ? parseYaml(content, { merge: true }) - : JSON.parse(content) - ) - } catch (error: unknown) { - // Swallow error if package.json doesn't exist in root - if (!util.types.isNativeError(error) || !('code' in error) || error.code !== 'ENOENT') throw error - } - } - - if (version) { - if ( - typeof packageManager === 'string' && - packageManager.startsWith('pnpm@') && - packageManager.replace('pnpm@', '') !== version - ) { - throw new Error(`Multiple versions of pnpm specified: - - version ${version} in the GitHub Action config with the key "version" - - version ${packageManager} in the package.json with the key "packageManager" -Remove one of these versions to avoid version mismatch errors like ERR_PNPM_BAD_PM_VERSION`) - } - - return `${ standalone ? '@pnpm/exe' : 'pnpm' }@${version}` - } - if (!GITHUB_WORKSPACE) { throw new Error(`No workspace is found. -If you've intended to let pnpm/action-setup read preferred pnpm version from the "packageManager" field in the package.json file, +If you're intended to let pnpm/action-setup read preferred pnpm version from the "packageManager" field in the package.json file, please run the actions/checkout before pnpm/action-setup. Otherwise, please specify the pnpm version in the action configuration.`) } + const { packageManager } = JSON.parse(await readFile(path.join(GITHUB_WORKSPACE, packageJsonFile), 'utf8')) if (typeof packageManager !== 'string') { throw new Error(`No pnpm version is specified. Please specify it by one of the following ways: @@ -105,7 +62,7 @@ Please specify it by one of the following ways: throw new Error('Invalid packageManager field in package.json') } - if (standalone) { + if(standalone){ return packageManager.replace('pnpm@', '@pnpm/exe@') }