├── .editorconfig ├── .eslintrc.js ├── .github ├── dependabot.yml └── workflows │ └── main.yml ├── .gitignore ├── LICENSE ├── README.md ├── action.yml ├── build ├── create-test-certificates.cmd └── v3.ext ├── dist └── index.js ├── files ├── TestPackage.1.0.0.nupkg ├── TestPackage.nuspec └── empty.txt ├── index.ts ├── package-lock.json ├── package.json └── tsconfig.json /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.{ts}] 4 | 5 | indent_size = 4 6 | indent_style = space 7 | tab_width = 4 8 | 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 'parser': '@typescript-eslint/parser', 3 | 'plugins': ['@typescript-eslint'], 4 | 'extends': ['plugin:@typescript-eslint/recommended'] 5 | }; -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: 4 | - main 5 | pull_request: 6 | 7 | name: main 8 | jobs: 9 | run_action: 10 | runs-on: windows-2022 11 | steps: 12 | - name: Checkout 13 | uses: actions/checkout@v4 14 | 15 | - name: Use node 20 16 | uses: actions/setup-node@v4 17 | with: 18 | node-version: 20 19 | 20 | - run: npm install 21 | 22 | - run: npm run lint 23 | 24 | - run: npm run build 25 | if: github.event_name == 'pull_request' 26 | 27 | - name: Create test certificates 28 | working-directory: build 29 | run: ./create-test-certificates.cmd 30 | 31 | - name: Copy libraries 32 | shell: cmd 33 | run: | 34 | copy C:\Windows\System32\wmi.dll files 35 | cd files 36 | mkdir subdirectory 37 | copy C:\Windows\System32\wmi.dll subdirectory 38 | 39 | - name: Run the action with password 40 | uses: ./ 41 | with: 42 | certificate: '${{ env.CERTIFICATE_WITH_PASSWORD }}' 43 | password: 'secret' 44 | folder: 'files' 45 | 46 | - name: Copy libraries 47 | shell: cmd 48 | run: | 49 | copy /Y C:\Windows\System32\wmi.dll files 50 | git checkout files/TestPackage.1.0.0.nupkg 51 | 52 | - name: Run the action 53 | uses: ./ 54 | with: 55 | certificate: '${{ env.CERTIFICATE_WITHOUT_PASSWORD }}' 56 | folder: 'files' 57 | recursive: true 58 | 59 | - name: Copy libraries 60 | shell: cmd 61 | run: | 62 | copy /Y C:\Windows\System32\wmi.dll files 63 | git checkout files/TestPackage.1.0.0.nupkg 64 | 65 | - name: Run the action 66 | uses: ./ 67 | with: 68 | certificate: '${{ env.CERTIFICATE_WITHOUT_PASSWORD }}' 69 | files: | 70 | files/wmi.dll 71 | files/TestPackage.1.0.0.nupkg 72 | description: 'TestName' 73 | 74 | - name: Upload artifact 75 | uses: actions/upload-artifact@v4 76 | with: 77 | name: wmi 78 | path: files/wmi.dll 79 | 80 | - name: Upload artifact 81 | uses: actions/upload-artifact@v4 82 | with: 83 | name: TestPackage 84 | path: files/TestPackage.1.0.0.nupkg 85 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | lib -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2019 Dirk Lemstra 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Code sign a file 2 | 3 | This action signs `.nupkg` files and files that are supported by `signtool.exe` with a code signing certificate. This action only works on Windows build agents, and that means it will only run on `windows-2019`, `windows-2022` or `windows-latest`. 4 | 5 | ## Inputs 6 | 7 | ### `certificate` 8 | 9 | **Required** The base64 encoded certificate. 10 | 11 | This can created by converting your pfx file to a base64 encoded string with the following command 12 | 13 | ``` 14 | certutil -encode .\ssCertInfo.pfx .\ssCertInfo.base64.txt 15 | ``` 16 | 17 | Once you run the command, you will need to ensure that the data is saved in your secret as seen here 18 | 19 | ``` 20 | -----BEGIN CERTIFICATE----- 21 | 5VYbl04ksEja358dNhGyHscDAiPI07mM9TwzLgvMv+72lHbgOZC57QgTTVOSVIzM 22 | fqku3P2y4EP4rXa3efxRtV9U0Iedxn0gYz7qHszBUCVnb/nUMtnHNd9HWtzgizpr 23 | qmi7jMBMup/eOpXKibt7OzGB2zATBgkqhkiG9w0BCRUxBgQEAQAAADBdBgkrBgEE 24 | AYI3EQExUB5OAE0AaQBjAHIAbwBzAG8AZgB0ACAAUwB0AHIAbwBuAGcAIABDAHIA 25 | DQEMAQMwDgQIg6csl1GYzT4CAgfQgIIO6AdED63pjLYWhE4khARlh33Mwe2GT7np 26 | f5ZayfFO6DeLuc9Zczf41sJR94xSLKzDpvQHpWHiNabP8srad2TEzg8XQrSOgN+Q 27 | vaCuBEErpQ9BjQICB9A= 28 | -----END CERTIFICATE----- 29 | ``` 30 | 31 | You may find the secrets page by navigating to `Settings > Secrets > Actions` on your current repo. 32 | 33 | ### `password` 34 | 35 | **Optional** The password to use when opening the PFX file. 36 | 37 | ### `folder` 38 | 39 | **Optional** The folder that contains the files to sign. 40 | 41 | ### `recursive` 42 | 43 | **Optional** Recursively search for supported files in the specified folder. 44 | 45 | ### `files` 46 | 47 | **Optional** The paths to the files to sign. 48 | 49 | ### `description` 50 | 51 | **Optional** The description of the signed content, only available for signtool (same as /d for signtool). 52 | 53 | ## Example usage 54 | 55 | ``` 56 | runs-on: windows-latest 57 | steps: 58 | uses: dlemstra/code-sign-action@v1 59 | with: 60 | certificate: '${{ secrets.CERTIFICATE }}' 61 | password: '${{ secrets.CERTIFICATE_PASSWORD }}' 62 | folder: 'files' 63 | recursive: true 64 | files: | 65 | file1 66 | file2 67 | description: 'TestName' 68 | ``` 69 | -------------------------------------------------------------------------------- /action.yml: -------------------------------------------------------------------------------- 1 | name: 'Code sign a file' 2 | description: 'Sign a file with a code signing certificate.' 3 | branding: 4 | icon: 'award' 5 | color: 'green' 6 | inputs: 7 | certificate: 8 | description: 'The base64 encoded certificate.' 9 | required: true 10 | password: 11 | description: 'The certificate password.' 12 | required: false 13 | folder: 14 | description: 'The folder that contains the files to sign.' 15 | required: false 16 | recursive: 17 | description: 'Recursively search for supported files in the specified folder.' 18 | required: false 19 | files: 20 | description: 'The paths to the files to sign.' 21 | required: false 22 | description: 23 | description: 'The description of the signed content.' 24 | required: false 25 | runs: 26 | using: 'node20' 27 | main: 'dist/index.js' 28 | -------------------------------------------------------------------------------- /build/create-test-certificates.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | openssl genrsa -des3 -out ca.key -passout pass:casecret 2048 4 | openssl req -x509 -new -nodes -key ca.key -subj "/CN=Root Certificate" -passin pass:casecret -sha256 -out ca.pem 5 | openssl x509 -outform der -in ca.pem -out ca.crt 6 | certutil -addstore Root ca.crt 7 | 8 | openssl req -nodes -newkey rsa:2048 -subj "/CN=Code Signing Certificate" -keyout sign.key -out sign.csr 9 | openssl x509 -req -CA ca.pem -CAkey ca.key -passin pass:casecret -in sign.csr -CAcreateserial -extfile v3.ext -out sign.crt 10 | 11 | openssl pkcs12 -export -passout pass: -inkey sign.key -in sign.crt -out certificate_without_password.pfx 12 | certutil -encode certificate_without_password.pfx certificate_without_password.txt 13 | echo CERTIFICATE_WITHOUT_PASSWORD^<^> %GITHUB_ENV% 14 | type certificate_without_password.txt >> %GITHUB_ENV% 15 | echo EOF >> %GITHUB_ENV% 16 | 17 | openssl pkcs12 -export -passout pass:secret -inkey sign.key -in sign.crt -out certificate_with_password.pfx 18 | certutil -encode certificate_with_password.pfx certificate_with_password.txt 19 | echo CERTIFICATE_WITH_PASSWORD^<^> %GITHUB_ENV% 20 | type certificate_with_password.txt >> %GITHUB_ENV% 21 | echo EOF >> %GITHUB_ENV% 22 | -------------------------------------------------------------------------------- /build/v3.ext: -------------------------------------------------------------------------------- 1 | keyUsage = critical, digitalSignature 2 | extendedKeyUsage = critical, codeSigning -------------------------------------------------------------------------------- /dist/index.js: -------------------------------------------------------------------------------- 1 | (()=>{var e={822:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||("get"in o?!t.__esModule:o.writable||o.configurable)){o={enumerable:true,get:function(){return t[r]}}}Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!=="default"&&Object.prototype.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};var s=this&&this.__await||function(e){return this instanceof s?(this.v=e,this):new s(e)};var a=this&&this.__asyncValues||function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof __values==="function"?__values(e):e[Symbol.iterator](),r={},verb("next"),verb("throw"),verb("return"),r[Symbol.asyncIterator]=function(){return this},r);function verb(t){r[t]=e[t]&&function(r){return new Promise((function(n,o){r=e[t](r),settle(n,o,r.done,r.value)}))}}function settle(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)}};var u=this&&this.__asyncDelegator||function(e){var t,r;return t={},verb("next"),verb("throw",(function(e){throw e})),verb("return"),t[Symbol.iterator]=function(){return this},t;function verb(n,o){t[n]=e[n]?function(t){return(r=!r)?{value:s(e[n](t)),done:false}:o?o(t):t}:o}};var c=this&&this.__asyncGenerator||function(e,t,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(e,t||[]),o,i=[];return o={},verb("next"),verb("throw"),verb("return",awaitReturn),o[Symbol.asyncIterator]=function(){return this},o;function awaitReturn(e){return function(t){return Promise.resolve(t).then(e,reject)}}function verb(e,t){if(n[e]){o[e]=function(t){return new Promise((function(r,n){i.push([e,t,r,n])>1||resume(e,t)}))};if(t)o[e]=t(o[e])}}function resume(e,t){try{step(n[e](t))}catch(e){settle(i[0][3],e)}}function step(e){e.value instanceof s?Promise.resolve(e.value.v).then(fulfill,reject):settle(i[0][2],e)}function fulfill(e){resume("next",e)}function reject(e){resume("throw",e)}function settle(e,t){if(e(t),i.shift(),i.length)resume(i[0][0],i[0][1])}};var l=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:true});const d=i(r(186));const f=r(147);const p=r(147);const h=l(r(687));const m=l(r(17));const v=l(r(837));const g=r(81);const _=r(282);const y=v.default.promisify(g.exec);const w=`${_.env.RUNNER_TEMP}\\nuget.exe`;const b="http://timestamp.digicert.com";const O=[".dll",".exe",".sys",".vxd",".msix",".msixbundle",".appx",".appxbundle",".msi",".msp",".msm",".cab",".ps1",".psm1"];function isExecException(e){return e.stdout!==undefined&&typeof e.stdout==="string"&&e.stderr!==undefined&&typeof e.stderr==="string"}function sleep(e){if(e>0)console.log(`Waiting for ${e} seconds.`);return new Promise((t=>setTimeout(t,e*1e3)))}async function createCertificatePfx(){const e=d.getInput("certificate",{required:true}).replace(/(-+)(BEGIN|END)( CERTIFICATE)(-+)/g,"");const t=Buffer.from(e,"base64");if(t.length==0)throw"certificate value is not set.";const r=`${_.env.RUNNER_TEMP}\\code-sign-certificate-${Math.floor(Math.random()*1e6)}.pfx`;console.log(`Writing ${t.length} bytes to ${r}.`);await f.promises.writeFile(r,t);return r}async function removeCertificatePfx(e){if(e===null)return;console.log(`Removing ${e}.`);await f.promises.unlink(e)}async function downloadNuGet(){return new Promise((e=>{if((0,p.existsSync)(w)){e();return}console.log(`Downloading nuget.exe.`);const t=(0,p.createWriteStream)(w);h.default.get("https://dist.nuget.org/win-x86-commandline/latest/nuget.exe",(r=>{r.pipe(t);t.on("finish",(function(){t.close();e()}))}))}))}async function signWithSigntool(e,t,r,n,o){try{let i=`"${e}" sign /f ${t} `;if(o!==""){i+=`/d "${o}" `}if(r!==""){i+=`/p "${r}" `}i+=`/tr ${b} /td sha256 /fd sha256 "${n}"`;const{stdout:s}=await y(i);console.log(s);return true}catch(e){if(isExecException(e)){console.log(e.stdout);console.log(e.stderr)}return false}}async function signNupkg(e,t,r){await downloadNuGet();try{let n=`"${w}" sign "${r}" -Timestamper ${b} -CertificatePath ${e}`;if(t!==""){n+=` -CertificatePassword "${t}"`}const{stdout:o}=await y(n);console.log(o);return true}catch(e){if(isExecException(e)){console.log(e.stdout);console.log(e.stderr)}return false}}async function trySignFile(e,t,r,n,o){console.log(`Signing: ${n}.`);const i=m.default.extname(n);for(let s=0;s<10;s++){await sleep(s);if(O.includes(i)){if(await signWithSigntool(e,t,r,n,o))return}else if(i==".nupkg"){if(await signNupkg(t,r,n))return}}throw`Failed to sign '${n}'.`}function getFiles(e,t){return c(this,arguments,(function*getFiles_1(){const r=yield s(f.promises.readdir(e));for(const n of r){const r=`${e}/${n}`;const o=yield s(f.promises.stat(r));if(o.isFile()){const e=m.default.extname(n);if(O.includes(e)||e==".nupkg")yield yield s(r)}else if(o.isDirectory()&&t){yield s(yield*u(a(getFiles(r,t))))}}}))}async function getSigntoolLocation(){const e="C:/Program Files (x86)/Windows Kits/10/bin/";const t=await f.promises.readdir(e);let r="unable to find signtool.exe";let n=0;for(const o of t){if(!o.endsWith(".0")){continue}const t=parseInt(o.replace(/\./g,""));if(t>n){const i=`${e}${o}/x64/signtool.exe`;try{const e=await f.promises.stat(i);if(e.isFile()){r=i;n=t}}catch(e){}}}console.log(`Signtool location is ${r}.`);return r}async function signFiles(e){var t,r,n,o;const i=d.getInput("password");const s=await getSigntoolLocation();const u=d.getInput("description");const c=d.getInput("folder");if(c!==""){const h=d.getInput("recursive")=="true";try{for(var l=true,f=a(getFiles(c,h)),p;p=await f.next(),t=p.done,!t;l=true){o=p.value;l=false;const t=o;await trySignFile(s,e,i,t,u)}}catch(e){r={error:e}}finally{try{if(!l&&!t&&(n=f.return))await n.call(f)}finally{if(r)throw r.error}}}else{const t=d.getMultilineInput("files");if(t.length===0)d.setFailed(`Either folder or files should be specified`);for(const r of t){await trySignFile(s,e,i,r,u)}}}async function run(){let e=null;try{e=await createCertificatePfx();await signFiles(e);await removeCertificatePfx(e)}catch(t){await removeCertificatePfx(e);d.setFailed(`Action failed with error: ${t}`)}}run()},351:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!=="default"&&Object.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,"__esModule",{value:true});t.issue=t.issueCommand=void 0;const s=i(r(37));const a=r(278);function issueCommand(e,t,r){const n=new Command(e,t,r);process.stdout.write(n.toString()+s.EOL)}t.issueCommand=issueCommand;function issue(e,t=""){issueCommand(e,{},t)}t.issue=issue;const u="::";class Command{constructor(e,t,r){if(!e){e="missing.command"}this.command=e;this.properties=t;this.message=r}toString(){let e=u+this.command;if(this.properties&&Object.keys(this.properties).length>0){e+=" ";let t=true;for(const r in this.properties){if(this.properties.hasOwnProperty(r)){const n=this.properties[r];if(n){if(t){t=false}else{e+=","}e+=`${r}=${escapeProperty(n)}`}}}}e+=`${u}${escapeData(this.message)}`;return e}}function escapeData(e){return a.toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(e){return a.toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}},186:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!=="default"&&Object.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};var s=this&&this.__awaiter||function(e,t,r,n){function adopt(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,o){function fulfilled(e){try{step(n.next(e))}catch(e){o(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){o(e)}}function step(e){e.done?r(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.getIDToken=t.getState=t.saveState=t.group=t.endGroup=t.startGroup=t.info=t.notice=t.warning=t.error=t.debug=t.isDebug=t.setFailed=t.setCommandEcho=t.setOutput=t.getBooleanInput=t.getMultilineInput=t.getInput=t.addPath=t.setSecret=t.exportVariable=t.ExitCode=void 0;const a=r(351);const u=r(717);const c=r(278);const l=i(r(37));const d=i(r(17));const f=r(41);var p;(function(e){e[e["Success"]=0]="Success";e[e["Failure"]=1]="Failure"})(p=t.ExitCode||(t.ExitCode={}));function exportVariable(e,t){const r=c.toCommandValue(t);process.env[e]=r;const n=process.env["GITHUB_ENV"]||"";if(n){return u.issueFileCommand("ENV",u.prepareKeyValueMessage(e,t))}a.issueCommand("set-env",{name:e},r)}t.exportVariable=exportVariable;function setSecret(e){a.issueCommand("add-mask",{},e)}t.setSecret=setSecret;function addPath(e){const t=process.env["GITHUB_PATH"]||"";if(t){u.issueFileCommand("PATH",e)}else{a.issueCommand("add-path",{},e)}process.env["PATH"]=`${e}${d.delimiter}${process.env["PATH"]}`}t.addPath=addPath;function getInput(e,t){const r=process.env[`INPUT_${e.replace(/ /g,"_").toUpperCase()}`]||"";if(t&&t.required&&!r){throw new Error(`Input required and not supplied: ${e}`)}if(t&&t.trimWhitespace===false){return r}return r.trim()}t.getInput=getInput;function getMultilineInput(e,t){const r=getInput(e,t).split("\n").filter((e=>e!==""));if(t&&t.trimWhitespace===false){return r}return r.map((e=>e.trim()))}t.getMultilineInput=getMultilineInput;function getBooleanInput(e,t){const r=["true","True","TRUE"];const n=["false","False","FALSE"];const o=getInput(e,t);if(r.includes(o))return true;if(n.includes(o))return false;throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${e}\n`+`Support boolean input list: \`true | True | TRUE | false | False | FALSE\``)}t.getBooleanInput=getBooleanInput;function setOutput(e,t){const r=process.env["GITHUB_OUTPUT"]||"";if(r){return u.issueFileCommand("OUTPUT",u.prepareKeyValueMessage(e,t))}process.stdout.write(l.EOL);a.issueCommand("set-output",{name:e},c.toCommandValue(t))}t.setOutput=setOutput;function setCommandEcho(e){a.issue("echo",e?"on":"off")}t.setCommandEcho=setCommandEcho;function setFailed(e){process.exitCode=p.Failure;error(e)}t.setFailed=setFailed;function isDebug(){return process.env["RUNNER_DEBUG"]==="1"}t.isDebug=isDebug;function debug(e){a.issueCommand("debug",{},e)}t.debug=debug;function error(e,t={}){a.issueCommand("error",c.toCommandProperties(t),e instanceof Error?e.toString():e)}t.error=error;function warning(e,t={}){a.issueCommand("warning",c.toCommandProperties(t),e instanceof Error?e.toString():e)}t.warning=warning;function notice(e,t={}){a.issueCommand("notice",c.toCommandProperties(t),e instanceof Error?e.toString():e)}t.notice=notice;function info(e){process.stdout.write(e+l.EOL)}t.info=info;function startGroup(e){a.issue("group",e)}t.startGroup=startGroup;function endGroup(){a.issue("endgroup")}t.endGroup=endGroup;function group(e,t){return s(this,void 0,void 0,(function*(){startGroup(e);let r;try{r=yield t()}finally{endGroup()}return r}))}t.group=group;function saveState(e,t){const r=process.env["GITHUB_STATE"]||"";if(r){return u.issueFileCommand("STATE",u.prepareKeyValueMessage(e,t))}a.issueCommand("save-state",{name:e},c.toCommandValue(t))}t.saveState=saveState;function getState(e){return process.env[`STATE_${e}`]||""}t.getState=getState;function getIDToken(e){return s(this,void 0,void 0,(function*(){return yield f.OidcClient.getIDToken(e)}))}t.getIDToken=getIDToken;var h=r(327);Object.defineProperty(t,"summary",{enumerable:true,get:function(){return h.summary}});var m=r(327);Object.defineProperty(t,"markdownSummary",{enumerable:true,get:function(){return m.markdownSummary}});var v=r(981);Object.defineProperty(t,"toPosixPath",{enumerable:true,get:function(){return v.toPosixPath}});Object.defineProperty(t,"toWin32Path",{enumerable:true,get:function(){return v.toWin32Path}});Object.defineProperty(t,"toPlatformPath",{enumerable:true,get:function(){return v.toPlatformPath}})},717:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!=="default"&&Object.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,"__esModule",{value:true});t.prepareKeyValueMessage=t.issueFileCommand=void 0;const s=i(r(147));const a=i(r(37));const u=r(840);const c=r(278);function issueFileCommand(e,t){const r=process.env[`GITHUB_${e}`];if(!r){throw new Error(`Unable to find environment variable for file command ${e}`)}if(!s.existsSync(r)){throw new Error(`Missing file at path: ${r}`)}s.appendFileSync(r,`${c.toCommandValue(t)}${a.EOL}`,{encoding:"utf8"})}t.issueFileCommand=issueFileCommand;function prepareKeyValueMessage(e,t){const r=`ghadelimiter_${u.v4()}`;const n=c.toCommandValue(t);if(e.includes(r)){throw new Error(`Unexpected input: name should not contain the delimiter "${r}"`)}if(n.includes(r)){throw new Error(`Unexpected input: value should not contain the delimiter "${r}"`)}return`${e}<<${r}${a.EOL}${n}${a.EOL}${r}`}t.prepareKeyValueMessage=prepareKeyValueMessage},41:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){function adopt(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,o){function fulfilled(e){try{step(n.next(e))}catch(e){o(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){o(e)}}function step(e){e.done?r(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.OidcClient=void 0;const o=r(255);const i=r(526);const s=r(186);class OidcClient{static createHttpClient(e=true,t=10){const r={allowRetries:e,maxRetries:t};return new o.HttpClient("actions/oidc-client",[new i.BearerCredentialHandler(OidcClient.getRequestToken())],r)}static getRequestToken(){const e=process.env["ACTIONS_ID_TOKEN_REQUEST_TOKEN"];if(!e){throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable")}return e}static getIDTokenUrl(){const e=process.env["ACTIONS_ID_TOKEN_REQUEST_URL"];if(!e){throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable")}return e}static getCall(e){var t;return n(this,void 0,void 0,(function*(){const r=OidcClient.createHttpClient();const n=yield r.getJson(e).catch((e=>{throw new Error(`Failed to get ID Token. \n \n Error Code : ${e.statusCode}\n \n Error Message: ${e.message}`)}));const o=(t=n.result)===null||t===void 0?void 0:t.value;if(!o){throw new Error("Response json body do not have ID Token field")}return o}))}static getIDToken(e){return n(this,void 0,void 0,(function*(){try{let t=OidcClient.getIDTokenUrl();if(e){const r=encodeURIComponent(e);t=`${t}&audience=${r}`}s.debug(`ID token url is ${t}`);const r=yield OidcClient.getCall(t);s.setSecret(r);return r}catch(e){throw new Error(`Error message: ${e.message}`)}}))}}t.OidcClient=OidcClient},981:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!=="default"&&Object.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};Object.defineProperty(t,"__esModule",{value:true});t.toPlatformPath=t.toWin32Path=t.toPosixPath=void 0;const s=i(r(17));function toPosixPath(e){return e.replace(/[\\]/g,"/")}t.toPosixPath=toPosixPath;function toWin32Path(e){return e.replace(/[/]/g,"\\")}t.toWin32Path=toWin32Path;function toPlatformPath(e){return e.replace(/[/\\]/g,s.sep)}t.toPlatformPath=toPlatformPath},327:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){function adopt(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,o){function fulfilled(e){try{step(n.next(e))}catch(e){o(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){o(e)}}function step(e){e.done?r(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.summary=t.markdownSummary=t.SUMMARY_DOCS_URL=t.SUMMARY_ENV_VAR=void 0;const o=r(37);const i=r(147);const{access:s,appendFile:a,writeFile:u}=i.promises;t.SUMMARY_ENV_VAR="GITHUB_STEP_SUMMARY";t.SUMMARY_DOCS_URL="https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary";class Summary{constructor(){this._buffer=""}filePath(){return n(this,void 0,void 0,(function*(){if(this._filePath){return this._filePath}const e=process.env[t.SUMMARY_ENV_VAR];if(!e){throw new Error(`Unable to find environment variable for $${t.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`)}try{yield s(e,i.constants.R_OK|i.constants.W_OK)}catch(t){throw new Error(`Unable to access summary file: '${e}'. Check if the file has correct read/write permissions.`)}this._filePath=e;return this._filePath}))}wrap(e,t,r={}){const n=Object.entries(r).map((([e,t])=>` ${e}="${t}"`)).join("");if(!t){return`<${e}${n}>`}return`<${e}${n}>${t}`}write(e){return n(this,void 0,void 0,(function*(){const t=!!(e===null||e===void 0?void 0:e.overwrite);const r=yield this.filePath();const n=t?u:a;yield n(r,this._buffer,{encoding:"utf8"});return this.emptyBuffer()}))}clear(){return n(this,void 0,void 0,(function*(){return this.emptyBuffer().write({overwrite:true})}))}stringify(){return this._buffer}isEmptyBuffer(){return this._buffer.length===0}emptyBuffer(){this._buffer="";return this}addRaw(e,t=false){this._buffer+=e;return t?this.addEOL():this}addEOL(){return this.addRaw(o.EOL)}addCodeBlock(e,t){const r=Object.assign({},t&&{lang:t});const n=this.wrap("pre",this.wrap("code",e),r);return this.addRaw(n).addEOL()}addList(e,t=false){const r=t?"ol":"ul";const n=e.map((e=>this.wrap("li",e))).join("");const o=this.wrap(r,n);return this.addRaw(o).addEOL()}addTable(e){const t=e.map((e=>{const t=e.map((e=>{if(typeof e==="string"){return this.wrap("td",e)}const{header:t,data:r,colspan:n,rowspan:o}=e;const i=t?"th":"td";const s=Object.assign(Object.assign({},n&&{colspan:n}),o&&{rowspan:o});return this.wrap(i,r,s)})).join("");return this.wrap("tr",t)})).join("");const r=this.wrap("table",t);return this.addRaw(r).addEOL()}addDetails(e,t){const r=this.wrap("details",this.wrap("summary",e)+t);return this.addRaw(r).addEOL()}addImage(e,t,r){const{width:n,height:o}=r||{};const i=Object.assign(Object.assign({},n&&{width:n}),o&&{height:o});const s=this.wrap("img",null,Object.assign({src:e,alt:t},i));return this.addRaw(s).addEOL()}addHeading(e,t){const r=`h${t}`;const n=["h1","h2","h3","h4","h5","h6"].includes(r)?r:"h1";const o=this.wrap(n,e);return this.addRaw(o).addEOL()}addSeparator(){const e=this.wrap("hr",null);return this.addRaw(e).addEOL()}addBreak(){const e=this.wrap("br",null);return this.addRaw(e).addEOL()}addQuote(e,t){const r=Object.assign({},t&&{cite:t});const n=this.wrap("blockquote",e,r);return this.addRaw(n).addEOL()}addLink(e,t){const r=this.wrap("a",e,{href:t});return this.addRaw(r).addEOL()}}const c=new Summary;t.markdownSummary=c;t.summary=c},278:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.toCommandProperties=t.toCommandValue=void 0;function toCommandValue(e){if(e===null||e===undefined){return""}else if(typeof e==="string"||e instanceof String){return e}return JSON.stringify(e)}t.toCommandValue=toCommandValue;function toCommandProperties(e){if(!Object.keys(e).length){return{}}return{title:e.title,file:e.file,line:e.startLine,endLine:e.endLine,col:e.startColumn,endColumn:e.endColumn}}t.toCommandProperties=toCommandProperties},526:function(e,t){"use strict";var r=this&&this.__awaiter||function(e,t,r,n){function adopt(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,o){function fulfilled(e){try{step(n.next(e))}catch(e){o(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){o(e)}}function step(e){e.done?r(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.PersonalAccessTokenCredentialHandler=t.BearerCredentialHandler=t.BasicCredentialHandler=void 0;class BasicCredentialHandler{constructor(e,t){this.username=e;this.password=t}prepareRequest(e){if(!e.headers){throw Error("The request has no headers")}e.headers["Authorization"]=`Basic ${Buffer.from(`${this.username}:${this.password}`).toString("base64")}`}canHandleAuthentication(){return false}handleAuthentication(){return r(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}t.BasicCredentialHandler=BasicCredentialHandler;class BearerCredentialHandler{constructor(e){this.token=e}prepareRequest(e){if(!e.headers){throw Error("The request has no headers")}e.headers["Authorization"]=`Bearer ${this.token}`}canHandleAuthentication(){return false}handleAuthentication(){return r(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}t.BearerCredentialHandler=BearerCredentialHandler;class PersonalAccessTokenCredentialHandler{constructor(e){this.token=e}prepareRequest(e){if(!e.headers){throw Error("The request has no headers")}e.headers["Authorization"]=`Basic ${Buffer.from(`PAT:${this.token}`).toString("base64")}`}canHandleAuthentication(){return false}handleAuthentication(){return r(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}t.PersonalAccessTokenCredentialHandler=PersonalAccessTokenCredentialHandler},255:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){if(n===undefined)n=r;Object.defineProperty(e,n,{enumerable:true,get:function(){return t[r]}})}:function(e,t,r,n){if(n===undefined)n=r;e[n]=t[r]});var o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(r!=="default"&&Object.hasOwnProperty.call(e,r))n(t,e,r);o(t,e);return t};var s=this&&this.__awaiter||function(e,t,r,n){function adopt(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,o){function fulfilled(e){try{step(n.next(e))}catch(e){o(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){o(e)}}function step(e){e.done?r(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.HttpClient=t.isHttps=t.HttpClientResponse=t.HttpClientError=t.getProxyUrl=t.MediaTypes=t.Headers=t.HttpCodes=void 0;const a=i(r(685));const u=i(r(687));const c=i(r(835));const l=i(r(294));var d;(function(e){e[e["OK"]=200]="OK";e[e["MultipleChoices"]=300]="MultipleChoices";e[e["MovedPermanently"]=301]="MovedPermanently";e[e["ResourceMoved"]=302]="ResourceMoved";e[e["SeeOther"]=303]="SeeOther";e[e["NotModified"]=304]="NotModified";e[e["UseProxy"]=305]="UseProxy";e[e["SwitchProxy"]=306]="SwitchProxy";e[e["TemporaryRedirect"]=307]="TemporaryRedirect";e[e["PermanentRedirect"]=308]="PermanentRedirect";e[e["BadRequest"]=400]="BadRequest";e[e["Unauthorized"]=401]="Unauthorized";e[e["PaymentRequired"]=402]="PaymentRequired";e[e["Forbidden"]=403]="Forbidden";e[e["NotFound"]=404]="NotFound";e[e["MethodNotAllowed"]=405]="MethodNotAllowed";e[e["NotAcceptable"]=406]="NotAcceptable";e[e["ProxyAuthenticationRequired"]=407]="ProxyAuthenticationRequired";e[e["RequestTimeout"]=408]="RequestTimeout";e[e["Conflict"]=409]="Conflict";e[e["Gone"]=410]="Gone";e[e["TooManyRequests"]=429]="TooManyRequests";e[e["InternalServerError"]=500]="InternalServerError";e[e["NotImplemented"]=501]="NotImplemented";e[e["BadGateway"]=502]="BadGateway";e[e["ServiceUnavailable"]=503]="ServiceUnavailable";e[e["GatewayTimeout"]=504]="GatewayTimeout"})(d=t.HttpCodes||(t.HttpCodes={}));var f;(function(e){e["Accept"]="accept";e["ContentType"]="content-type"})(f=t.Headers||(t.Headers={}));var p;(function(e){e["ApplicationJson"]="application/json"})(p=t.MediaTypes||(t.MediaTypes={}));function getProxyUrl(e){const t=c.getProxyUrl(new URL(e));return t?t.href:""}t.getProxyUrl=getProxyUrl;const h=[d.MovedPermanently,d.ResourceMoved,d.SeeOther,d.TemporaryRedirect,d.PermanentRedirect];const m=[d.BadGateway,d.ServiceUnavailable,d.GatewayTimeout];const v=["OPTIONS","GET","DELETE","HEAD"];const g=10;const _=5;class HttpClientError extends Error{constructor(e,t){super(e);this.name="HttpClientError";this.statusCode=t;Object.setPrototypeOf(this,HttpClientError.prototype)}}t.HttpClientError=HttpClientError;class HttpClientResponse{constructor(e){this.message=e}readBody(){return s(this,void 0,void 0,(function*(){return new Promise((e=>s(this,void 0,void 0,(function*(){let t=Buffer.alloc(0);this.message.on("data",(e=>{t=Buffer.concat([t,e])}));this.message.on("end",(()=>{e(t.toString())}))}))))}))}}t.HttpClientResponse=HttpClientResponse;function isHttps(e){const t=new URL(e);return t.protocol==="https:"}t.isHttps=isHttps;class HttpClient{constructor(e,t,r){this._ignoreSslError=false;this._allowRedirects=true;this._allowRedirectDowngrade=false;this._maxRedirects=50;this._allowRetries=false;this._maxRetries=1;this._keepAlive=false;this._disposed=false;this.userAgent=e;this.handlers=t||[];this.requestOptions=r;if(r){if(r.ignoreSslError!=null){this._ignoreSslError=r.ignoreSslError}this._socketTimeout=r.socketTimeout;if(r.allowRedirects!=null){this._allowRedirects=r.allowRedirects}if(r.allowRedirectDowngrade!=null){this._allowRedirectDowngrade=r.allowRedirectDowngrade}if(r.maxRedirects!=null){this._maxRedirects=Math.max(r.maxRedirects,0)}if(r.keepAlive!=null){this._keepAlive=r.keepAlive}if(r.allowRetries!=null){this._allowRetries=r.allowRetries}if(r.maxRetries!=null){this._maxRetries=r.maxRetries}}}options(e,t){return s(this,void 0,void 0,(function*(){return this.request("OPTIONS",e,null,t||{})}))}get(e,t){return s(this,void 0,void 0,(function*(){return this.request("GET",e,null,t||{})}))}del(e,t){return s(this,void 0,void 0,(function*(){return this.request("DELETE",e,null,t||{})}))}post(e,t,r){return s(this,void 0,void 0,(function*(){return this.request("POST",e,t,r||{})}))}patch(e,t,r){return s(this,void 0,void 0,(function*(){return this.request("PATCH",e,t,r||{})}))}put(e,t,r){return s(this,void 0,void 0,(function*(){return this.request("PUT",e,t,r||{})}))}head(e,t){return s(this,void 0,void 0,(function*(){return this.request("HEAD",e,null,t||{})}))}sendStream(e,t,r,n){return s(this,void 0,void 0,(function*(){return this.request(e,t,r,n)}))}getJson(e,t={}){return s(this,void 0,void 0,(function*(){t[f.Accept]=this._getExistingOrDefaultHeader(t,f.Accept,p.ApplicationJson);const r=yield this.get(e,t);return this._processResponse(r,this.requestOptions)}))}postJson(e,t,r={}){return s(this,void 0,void 0,(function*(){const n=JSON.stringify(t,null,2);r[f.Accept]=this._getExistingOrDefaultHeader(r,f.Accept,p.ApplicationJson);r[f.ContentType]=this._getExistingOrDefaultHeader(r,f.ContentType,p.ApplicationJson);const o=yield this.post(e,n,r);return this._processResponse(o,this.requestOptions)}))}putJson(e,t,r={}){return s(this,void 0,void 0,(function*(){const n=JSON.stringify(t,null,2);r[f.Accept]=this._getExistingOrDefaultHeader(r,f.Accept,p.ApplicationJson);r[f.ContentType]=this._getExistingOrDefaultHeader(r,f.ContentType,p.ApplicationJson);const o=yield this.put(e,n,r);return this._processResponse(o,this.requestOptions)}))}patchJson(e,t,r={}){return s(this,void 0,void 0,(function*(){const n=JSON.stringify(t,null,2);r[f.Accept]=this._getExistingOrDefaultHeader(r,f.Accept,p.ApplicationJson);r[f.ContentType]=this._getExistingOrDefaultHeader(r,f.ContentType,p.ApplicationJson);const o=yield this.patch(e,n,r);return this._processResponse(o,this.requestOptions)}))}request(e,t,r,n){return s(this,void 0,void 0,(function*(){if(this._disposed){throw new Error("Client has already been disposed.")}const o=new URL(t);let i=this._prepareRequest(e,o,n);const s=this._allowRetries&&v.includes(e)?this._maxRetries+1:1;let a=0;let u;do{u=yield this.requestRaw(i,r);if(u&&u.message&&u.message.statusCode===d.Unauthorized){let e;for(const t of this.handlers){if(t.canHandleAuthentication(u)){e=t;break}}if(e){return e.handleAuthentication(this,i,r)}else{return u}}let t=this._maxRedirects;while(u.message.statusCode&&h.includes(u.message.statusCode)&&this._allowRedirects&&t>0){const s=u.message.headers["location"];if(!s){break}const a=new URL(s);if(o.protocol==="https:"&&o.protocol!==a.protocol&&!this._allowRedirectDowngrade){throw new Error("Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.")}yield u.readBody();if(a.hostname!==o.hostname){for(const e in n){if(e.toLowerCase()==="authorization"){delete n[e]}}}i=this._prepareRequest(e,a,n);u=yield this.requestRaw(i,r);t--}if(!u.message.statusCode||!m.includes(u.message.statusCode)){return u}a+=1;if(a{function callbackForResult(e,t){if(e){n(e)}else if(!t){n(new Error("Unknown error"))}else{r(t)}}this.requestRawWithCallback(e,t,callbackForResult)}))}))}requestRawWithCallback(e,t,r){if(typeof t==="string"){if(!e.options.headers){e.options.headers={}}e.options.headers["Content-Length"]=Buffer.byteLength(t,"utf8")}let n=false;function handleResult(e,t){if(!n){n=true;r(e,t)}}const o=e.httpModule.request(e.options,(e=>{const t=new HttpClientResponse(e);handleResult(undefined,t)}));let i;o.on("socket",(e=>{i=e}));o.setTimeout(this._socketTimeout||3*6e4,(()=>{if(i){i.end()}handleResult(new Error(`Request timeout: ${e.options.path}`))}));o.on("error",(function(e){handleResult(e)}));if(t&&typeof t==="string"){o.write(t,"utf8")}if(t&&typeof t!=="string"){t.on("close",(function(){o.end()}));t.pipe(o)}else{o.end()}}getAgent(e){const t=new URL(e);return this._getAgent(t)}_prepareRequest(e,t,r){const n={};n.parsedUrl=t;const o=n.parsedUrl.protocol==="https:";n.httpModule=o?u:a;const i=o?443:80;n.options={};n.options.host=n.parsedUrl.hostname;n.options.port=n.parsedUrl.port?parseInt(n.parsedUrl.port):i;n.options.path=(n.parsedUrl.pathname||"")+(n.parsedUrl.search||"");n.options.method=e;n.options.headers=this._mergeHeaders(r);if(this.userAgent!=null){n.options.headers["user-agent"]=this.userAgent}n.options.agent=this._getAgent(n.parsedUrl);if(this.handlers){for(const e of this.handlers){e.prepareRequest(n.options)}}return n}_mergeHeaders(e){if(this.requestOptions&&this.requestOptions.headers){return Object.assign({},lowercaseKeys(this.requestOptions.headers),lowercaseKeys(e||{}))}return lowercaseKeys(e||{})}_getExistingOrDefaultHeader(e,t,r){let n;if(this.requestOptions&&this.requestOptions.headers){n=lowercaseKeys(this.requestOptions.headers)[t]}return e[t]||n||r}_getAgent(e){let t;const r=c.getProxyUrl(e);const n=r&&r.hostname;if(this._keepAlive&&n){t=this._proxyAgent}if(this._keepAlive&&!n){t=this._agent}if(t){return t}const o=e.protocol==="https:";let i=100;if(this.requestOptions){i=this.requestOptions.maxSockets||a.globalAgent.maxSockets}if(r&&r.hostname){const e={maxSockets:i,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(r.username||r.password)&&{proxyAuth:`${r.username}:${r.password}`}),{host:r.hostname,port:r.port})};let n;const s=r.protocol==="https:";if(o){n=s?l.httpsOverHttps:l.httpsOverHttp}else{n=s?l.httpOverHttps:l.httpOverHttp}t=n(e);this._proxyAgent=t}if(this._keepAlive&&!t){const e={keepAlive:this._keepAlive,maxSockets:i};t=o?new u.Agent(e):new a.Agent(e);this._agent=t}if(!t){t=o?u.globalAgent:a.globalAgent}if(o&&this._ignoreSslError){t.options=Object.assign(t.options||{},{rejectUnauthorized:false})}return t}_performExponentialBackoff(e){return s(this,void 0,void 0,(function*(){e=Math.min(g,e);const t=_*Math.pow(2,e);return new Promise((e=>setTimeout((()=>e()),t)))}))}_processResponse(e,t){return s(this,void 0,void 0,(function*(){return new Promise(((r,n)=>s(this,void 0,void 0,(function*(){const o=e.message.statusCode||0;const i={statusCode:o,result:null,headers:{}};if(o===d.NotFound){r(i)}function dateTimeDeserializer(e,t){if(typeof t==="string"){const e=new Date(t);if(!isNaN(e.valueOf())){return e}}return t}let s;let a;try{a=yield e.readBody();if(a&&a.length>0){if(t&&t.deserializeDates){s=JSON.parse(a,dateTimeDeserializer)}else{s=JSON.parse(a)}i.result=s}i.headers=e.message.headers}catch(e){}if(o>299){let e;if(s&&s.message){e=s.message}else if(a&&a.length>0){e=a}else{e=`Failed request: (${o})`}const t=new HttpClientError(e,o);t.result=i.result;n(t)}else{r(i)}}))))}))}}t.HttpClient=HttpClient;const lowercaseKeys=e=>Object.keys(e).reduce(((t,r)=>(t[r.toLowerCase()]=e[r],t)),{})},835:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.checkBypass=t.getProxyUrl=void 0;function getProxyUrl(e){const t=e.protocol==="https:";if(checkBypass(e)){return undefined}const r=(()=>{if(t){return process.env["https_proxy"]||process.env["HTTPS_PROXY"]}else{return process.env["http_proxy"]||process.env["HTTP_PROXY"]}})();if(r){return new URL(r)}else{return undefined}}t.getProxyUrl=getProxyUrl;function checkBypass(e){if(!e.hostname){return false}const t=process.env["no_proxy"]||process.env["NO_PROXY"]||"";if(!t){return false}let r;if(e.port){r=Number(e.port)}else if(e.protocol==="http:"){r=80}else if(e.protocol==="https:"){r=443}const n=[e.hostname.toUpperCase()];if(typeof r==="number"){n.push(`${n[0]}:${r}`)}for(const e of t.split(",").map((e=>e.trim().toUpperCase())).filter((e=>e))){if(n.some((t=>t===e))){return true}}return false}t.checkBypass=checkBypass},294:(e,t,r)=>{e.exports=r(219)},219:(e,t,r)=>{"use strict";var n=r(808);var o=r(404);var i=r(685);var s=r(687);var a=r(361);var u=r(491);var c=r(837);t.httpOverHttp=httpOverHttp;t.httpsOverHttp=httpsOverHttp;t.httpOverHttps=httpOverHttps;t.httpsOverHttps=httpsOverHttps;function httpOverHttp(e){var t=new TunnelingAgent(e);t.request=i.request;return t}function httpsOverHttp(e){var t=new TunnelingAgent(e);t.request=i.request;t.createSocket=createSecureSocket;t.defaultPort=443;return t}function httpOverHttps(e){var t=new TunnelingAgent(e);t.request=s.request;return t}function httpsOverHttps(e){var t=new TunnelingAgent(e);t.request=s.request;t.createSocket=createSecureSocket;t.defaultPort=443;return t}function TunnelingAgent(e){var t=this;t.options=e||{};t.proxyOptions=t.options.proxy||{};t.maxSockets=t.options.maxSockets||i.Agent.defaultMaxSockets;t.requests=[];t.sockets=[];t.on("free",(function onFree(e,r,n,o){var i=toOptions(r,n,o);for(var s=0,a=t.requests.length;s=this.maxSockets){o.requests.push(i);return}o.createSocket(i,(function(t){t.on("free",onFree);t.on("close",onCloseOrRemove);t.on("agentRemove",onCloseOrRemove);e.onSocket(t);function onFree(){o.emit("free",t,i)}function onCloseOrRemove(e){o.removeSocket(t);t.removeListener("free",onFree);t.removeListener("close",onCloseOrRemove);t.removeListener("agentRemove",onCloseOrRemove)}}))};TunnelingAgent.prototype.createSocket=function createSocket(e,t){var r=this;var n={};r.sockets.push(n);var o=mergeOptions({},r.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:false,headers:{host:e.host+":"+e.port}});if(e.localAddress){o.localAddress=e.localAddress}if(o.proxyAuth){o.headers=o.headers||{};o.headers["Proxy-Authorization"]="Basic "+new Buffer(o.proxyAuth).toString("base64")}l("making CONNECT request");var i=r.request(o);i.useChunkedEncodingByDefault=false;i.once("response",onResponse);i.once("upgrade",onUpgrade);i.once("connect",onConnect);i.once("error",onError);i.end();function onResponse(e){e.upgrade=true}function onUpgrade(e,t,r){process.nextTick((function(){onConnect(e,t,r)}))}function onConnect(o,s,a){i.removeAllListeners();s.removeAllListeners();if(o.statusCode!==200){l("tunneling socket could not be established, statusCode=%d",o.statusCode);s.destroy();var u=new Error("tunneling socket could not be established, "+"statusCode="+o.statusCode);u.code="ECONNRESET";e.request.emit("error",u);r.removeSocket(n);return}if(a.length>0){l("got illegal response body from proxy");s.destroy();var u=new Error("got illegal response body from proxy");u.code="ECONNRESET";e.request.emit("error",u);r.removeSocket(n);return}l("tunneling connection has established");r.sockets[r.sockets.indexOf(n)]=s;return t(s)}function onError(t){i.removeAllListeners();l("tunneling socket could not be established, cause=%s\n",t.message,t.stack);var o=new Error("tunneling socket could not be established, "+"cause="+t.message);o.code="ECONNRESET";e.request.emit("error",o);r.removeSocket(n)}};TunnelingAgent.prototype.removeSocket=function removeSocket(e){var t=this.sockets.indexOf(e);if(t===-1){return}this.sockets.splice(t,1);var r=this.requests.shift();if(r){this.createSocket(r,(function(e){r.request.onSocket(e)}))}};function createSecureSocket(e,t){var r=this;TunnelingAgent.prototype.createSocket.call(r,e,(function(n){var i=e.request.getHeader("host");var s=mergeOptions({},r.options,{socket:n,servername:i?i.replace(/:.*$/,""):e.host});var a=o.connect(0,s);r.sockets[r.sockets.indexOf(n)]=a;t(a)}))}function toOptions(e,t,r){if(typeof e==="string"){return{host:e,port:t,localAddress:r}}return e}function mergeOptions(e){for(var t=1,r=arguments.length;t{"use strict";Object.defineProperty(t,"__esModule",{value:true});Object.defineProperty(t,"v1",{enumerable:true,get:function(){return n.default}});Object.defineProperty(t,"v3",{enumerable:true,get:function(){return o.default}});Object.defineProperty(t,"v4",{enumerable:true,get:function(){return i.default}});Object.defineProperty(t,"v5",{enumerable:true,get:function(){return s.default}});Object.defineProperty(t,"NIL",{enumerable:true,get:function(){return a.default}});Object.defineProperty(t,"version",{enumerable:true,get:function(){return u.default}});Object.defineProperty(t,"validate",{enumerable:true,get:function(){return c.default}});Object.defineProperty(t,"stringify",{enumerable:true,get:function(){return l.default}});Object.defineProperty(t,"parse",{enumerable:true,get:function(){return d.default}});var n=_interopRequireDefault(r(628));var o=_interopRequireDefault(r(409));var i=_interopRequireDefault(r(122));var s=_interopRequireDefault(r(120));var a=_interopRequireDefault(r(332));var u=_interopRequireDefault(r(595));var c=_interopRequireDefault(r(900));var l=_interopRequireDefault(r(950));var d=_interopRequireDefault(r(746));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}},569:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(113));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function md5(e){if(Array.isArray(e)){e=Buffer.from(e)}else if(typeof e==="string"){e=Buffer.from(e,"utf8")}return n.default.createHash("md5").update(e).digest()}var o=md5;t["default"]=o},332:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var r="00000000-0000-0000-0000-000000000000";t["default"]=r},746:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(900));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function parse(e){if(!(0,n.default)(e)){throw TypeError("Invalid UUID")}let t;const r=new Uint8Array(16);r[0]=(t=parseInt(e.slice(0,8),16))>>>24;r[1]=t>>>16&255;r[2]=t>>>8&255;r[3]=t&255;r[4]=(t=parseInt(e.slice(9,13),16))>>>8;r[5]=t&255;r[6]=(t=parseInt(e.slice(14,18),16))>>>8;r[7]=t&255;r[8]=(t=parseInt(e.slice(19,23),16))>>>8;r[9]=t&255;r[10]=(t=parseInt(e.slice(24,36),16))/1099511627776&255;r[11]=t/4294967296&255;r[12]=t>>>24&255;r[13]=t>>>16&255;r[14]=t>>>8&255;r[15]=t&255;return r}var o=parse;t["default"]=o},814:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var r=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;t["default"]=r},807:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t["default"]=rng;var n=_interopRequireDefault(r(113));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const o=new Uint8Array(256);let i=o.length;function rng(){if(i>o.length-16){n.default.randomFillSync(o);i=0}return o.slice(i,i+=16)}},274:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(113));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function sha1(e){if(Array.isArray(e)){e=Buffer.from(e)}else if(typeof e==="string"){e=Buffer.from(e,"utf8")}return n.default.createHash("sha1").update(e).digest()}var o=sha1;t["default"]=o},950:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(900));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const o=[];for(let e=0;e<256;++e){o.push((e+256).toString(16).substr(1))}function stringify(e,t=0){const r=(o[e[t+0]]+o[e[t+1]]+o[e[t+2]]+o[e[t+3]]+"-"+o[e[t+4]]+o[e[t+5]]+"-"+o[e[t+6]]+o[e[t+7]]+"-"+o[e[t+8]]+o[e[t+9]]+"-"+o[e[t+10]]+o[e[t+11]]+o[e[t+12]]+o[e[t+13]]+o[e[t+14]]+o[e[t+15]]).toLowerCase();if(!(0,n.default)(r)){throw TypeError("Stringified UUID is invalid")}return r}var i=stringify;t["default"]=i},628:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(807));var o=_interopRequireDefault(r(950));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let i;let s;let a=0;let u=0;function v1(e,t,r){let c=t&&r||0;const l=t||new Array(16);e=e||{};let d=e.node||i;let f=e.clockseq!==undefined?e.clockseq:s;if(d==null||f==null){const t=e.random||(e.rng||n.default)();if(d==null){d=i=[t[0]|1,t[1],t[2],t[3],t[4],t[5]]}if(f==null){f=s=(t[6]<<8|t[7])&16383}}let p=e.msecs!==undefined?e.msecs:Date.now();let h=e.nsecs!==undefined?e.nsecs:u+1;const m=p-a+(h-u)/1e4;if(m<0&&e.clockseq===undefined){f=f+1&16383}if((m<0||p>a)&&e.nsecs===undefined){h=0}if(h>=1e4){throw new Error("uuid.v1(): Can't create more than 10M uuids/sec")}a=p;u=h;s=f;p+=122192928e5;const v=((p&268435455)*1e4+h)%4294967296;l[c++]=v>>>24&255;l[c++]=v>>>16&255;l[c++]=v>>>8&255;l[c++]=v&255;const g=p/4294967296*1e4&268435455;l[c++]=g>>>8&255;l[c++]=g&255;l[c++]=g>>>24&15|16;l[c++]=g>>>16&255;l[c++]=f>>>8|128;l[c++]=f&255;for(let e=0;e<6;++e){l[c+e]=d[e]}return t||(0,o.default)(l)}var c=v1;t["default"]=c},409:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(998));var o=_interopRequireDefault(r(569));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const i=(0,n.default)("v3",48,o.default);var s=i;t["default"]=s},998:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t["default"]=_default;t.URL=t.DNS=void 0;var n=_interopRequireDefault(r(950));var o=_interopRequireDefault(r(746));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function stringToBytes(e){e=unescape(encodeURIComponent(e));const t=[];for(let r=0;r{"use strict";Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(807));var o=_interopRequireDefault(r(950));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function v4(e,t,r){e=e||{};const i=e.random||(e.rng||n.default)();i[6]=i[6]&15|64;i[8]=i[8]&63|128;if(t){r=r||0;for(let e=0;e<16;++e){t[r+e]=i[e]}return t}return(0,o.default)(i)}var i=v4;t["default"]=i},120:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(998));var o=_interopRequireDefault(r(274));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const i=(0,n.default)("v5",80,o.default);var s=i;t["default"]=s},900:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(814));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function validate(e){return typeof e==="string"&&n.default.test(e)}var o=validate;t["default"]=o},595:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t["default"]=void 0;var n=_interopRequireDefault(r(900));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function version(e){if(!(0,n.default)(e)){throw TypeError("Invalid UUID")}return parseInt(e.substr(14,1),16)}var o=version;t["default"]=o},491:e=>{"use strict";e.exports=require("assert")},81:e=>{"use strict";e.exports=require("child_process")},113:e=>{"use strict";e.exports=require("crypto")},361:e=>{"use strict";e.exports=require("events")},147:e=>{"use strict";e.exports=require("fs")},685:e=>{"use strict";e.exports=require("http")},687:e=>{"use strict";e.exports=require("https")},808:e=>{"use strict";e.exports=require("net")},37:e=>{"use strict";e.exports=require("os")},17:e=>{"use strict";e.exports=require("path")},282:e=>{"use strict";e.exports=require("process")},404:e=>{"use strict";e.exports=require("tls")},837:e=>{"use strict";e.exports=require("util")}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var o=t[r]={exports:{}};var i=true;try{e[r].call(o.exports,o,o.exports,__nccwpck_require__);i=false}finally{if(i)delete t[r]}return o.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var r=__nccwpck_require__(822);module.exports=r})(); -------------------------------------------------------------------------------- /files/TestPackage.1.0.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dlemstra/code-sign-action/f7502f2e6f78dfe1a42d8023cf3b1fbe95b6b9c1/files/TestPackage.1.0.0.nupkg -------------------------------------------------------------------------------- /files/TestPackage.nuspec: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | TestPackage 5 | TestPackage 6 | TestPackage 7 | 1.0.0 8 | Dirk Lemstra 9 | Dirk Lemstra 10 | Apache-2.0 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /files/empty.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dlemstra/code-sign-action/f7502f2e6f78dfe1a42d8023cf3b1fbe95b6b9c1/files/empty.txt -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | import * as core from '@actions/core'; 2 | import { promises as fs } from 'fs'; 3 | import { existsSync, createWriteStream } from 'fs'; 4 | import https from 'https'; 5 | import path from 'path'; 6 | import util from 'util'; 7 | import { exec } from 'child_process'; 8 | import { env } from 'process'; 9 | 10 | const asyncExec = util.promisify(exec); 11 | const nugetFileName = `${env.RUNNER_TEMP}\\nuget.exe`; 12 | 13 | const timestampUrl = 'http://timestamp.digicert.com'; 14 | 15 | const signtoolFileExtensions = [ 16 | '.dll', '.exe', '.sys', '.vxd', 17 | '.msix', '.msixbundle', '.appx', 18 | '.appxbundle', '.msi', '.msp', 19 | '.msm', '.cab', '.ps1', '.psm1' 20 | ]; 21 | 22 | interface IExecException 23 | { 24 | stdout: string 25 | stderr: string 26 | } 27 | 28 | function isExecException(err: unknown): err is IExecException { 29 | return (err as IExecException).stdout !== undefined && 30 | typeof (err as IExecException).stdout === 'string' && 31 | (err as IExecException).stderr !== undefined && 32 | typeof (err as IExecException).stderr === 'string'; 33 | } 34 | 35 | function sleep(seconds: number) { 36 | if (seconds > 0) 37 | console.log(`Waiting for ${seconds} seconds.`); 38 | return new Promise(resolve => setTimeout(resolve, seconds * 1000)); 39 | } 40 | 41 | async function createCertificatePfx(): Promise { 42 | const base64Certificate = core.getInput('certificate', { required: true }).replace(/(-+)(BEGIN|END)( CERTIFICATE)(-+)/g, ''); 43 | const certificate = Buffer.from(base64Certificate, 'base64'); 44 | if (certificate.length == 0) 45 | throw 'certificate value is not set.'; 46 | const certificateFileName = `${env.RUNNER_TEMP}\\code-sign-certificate-${Math.floor((Math.random() * 1000000))}.pfx` 47 | console.log(`Writing ${certificate.length} bytes to ${certificateFileName}.`); 48 | await fs.writeFile(certificateFileName, certificate); 49 | return certificateFileName; 50 | } 51 | 52 | async function removeCertificatePfx(certificateFileName: string | null) { 53 | if (certificateFileName === null) 54 | return; 55 | console.log(`Removing ${certificateFileName}.`); 56 | await fs.unlink(certificateFileName); 57 | } 58 | 59 | async function downloadNuGet() { 60 | return new Promise(resolve => { 61 | if (existsSync(nugetFileName)) { 62 | resolve(); 63 | return; 64 | } 65 | 66 | console.log(`Downloading nuget.exe.`); 67 | 68 | const file = createWriteStream(nugetFileName); 69 | https.get('https://dist.nuget.org/win-x86-commandline/latest/nuget.exe', (response) => { 70 | response.pipe(file); 71 | file.on('finish', function() { 72 | file.close(); 73 | resolve(); 74 | }); 75 | }); 76 | }); 77 | } 78 | 79 | async function signWithSigntool(signtool: string, certificateFileName: string, certificatePassword: string, fileName: string, description: string): Promise { 80 | try { 81 | let command = `"${signtool}" sign /f ${certificateFileName} `; 82 | if (description !== '') { 83 | command += `/d "${description}" `; 84 | } 85 | if (certificatePassword !== '') { 86 | command += `/p "${certificatePassword}" ` 87 | } 88 | command += `/tr ${timestampUrl} /td sha256 /fd sha256 "${fileName}"`; 89 | 90 | const { stdout } = await asyncExec(command); 91 | console.log(stdout); 92 | return true; 93 | } catch(err: unknown) { 94 | if (isExecException(err)) { 95 | console.log(err.stdout); 96 | console.log(err.stderr); 97 | } 98 | return false; 99 | } 100 | } 101 | 102 | async function signNupkg(certificateFileName: string, certificatePassword: string, fileName: string): Promise { 103 | await downloadNuGet(); 104 | 105 | try { 106 | let command = `"${nugetFileName}" sign "${fileName}" -Timestamper ${timestampUrl} -CertificatePath ${certificateFileName}`; 107 | if (certificatePassword !== '') { 108 | command += ` -CertificatePassword "${certificatePassword}"` 109 | } 110 | 111 | const { stdout } = await asyncExec(command); 112 | console.log(stdout); 113 | return true; 114 | } catch(err: unknown){ 115 | if (isExecException(err)) { 116 | console.log(err.stdout); 117 | console.log(err.stderr); 118 | } 119 | return false; 120 | } 121 | } 122 | 123 | async function trySignFile(signtool: string, certificateFileName: string, certificatePassword: string, fileName: string, description: string) { 124 | console.log(`Signing: ${fileName}.`); 125 | const extension = path.extname(fileName); 126 | for (let i=0; i< 10; i++) { 127 | await sleep(i); 128 | if (signtoolFileExtensions.includes(extension)) { 129 | if (await signWithSigntool(signtool, certificateFileName, certificatePassword, fileName, description)) 130 | return; 131 | } else if (extension == '.nupkg') { 132 | if (await signNupkg(certificateFileName, certificatePassword, fileName)) 133 | return; 134 | } 135 | } 136 | throw `Failed to sign '${fileName}'.`; 137 | } 138 | 139 | async function* getFiles(folder: string, recursive: boolean): AsyncGenerator { 140 | const files = await fs.readdir(folder); 141 | for (const file of files) { 142 | const fullPath = `${folder}/${file}`; 143 | const stat = await fs.stat(fullPath); 144 | if (stat.isFile()) { 145 | const extension = path.extname(file); 146 | if (signtoolFileExtensions.includes(extension) || extension == '.nupkg') 147 | yield fullPath; 148 | } 149 | else if (stat.isDirectory() && recursive) { 150 | yield* getFiles(fullPath, recursive); 151 | } 152 | } 153 | } 154 | 155 | async function getSigntoolLocation(): Promise { 156 | const windowsKitsfolder = 'C:/Program Files (x86)/Windows Kits/10/bin/'; 157 | const folders = await fs.readdir(windowsKitsfolder); 158 | let fileName = 'unable to find signtool.exe'; 159 | let maxVersion = 0; 160 | for (const folder of folders) { 161 | if (!folder.endsWith('.0')) { 162 | continue; 163 | } 164 | const folderVersion = parseInt(folder.replace(/\./g,'')); 165 | if (folderVersion > maxVersion) { 166 | const signtoolFilename = `${windowsKitsfolder}${folder}/x64/signtool.exe`; 167 | try { 168 | const stat = await fs.stat(signtoolFilename); 169 | if (stat.isFile()) { 170 | fileName = signtoolFilename 171 | maxVersion = folderVersion; 172 | } 173 | } 174 | catch { 175 | } 176 | } 177 | } 178 | 179 | console.log(`Signtool location is ${fileName}.`); 180 | 181 | return fileName; 182 | } 183 | 184 | async function signFiles(certificateFileName: string) { 185 | const certificatePassword = core.getInput('password'); 186 | const signtool = await getSigntoolLocation() 187 | const description = core.getInput('description'); 188 | const folder = core.getInput('folder'); 189 | if (folder !== '') { 190 | const recursive = core.getInput('recursive') == 'true'; 191 | for await (const file of getFiles(folder, recursive)) { 192 | await trySignFile(signtool, certificateFileName, certificatePassword, file, description); 193 | } 194 | } else { 195 | const files = core.getMultilineInput('files'); 196 | if (files.length === 0) 197 | core.setFailed(`Either folder or files should be specified`); 198 | for (const file of files) { 199 | await trySignFile(signtool, certificateFileName, certificatePassword, file, description); 200 | } 201 | } 202 | } 203 | 204 | async function run() { 205 | let certificateFileName = null; 206 | try { 207 | certificateFileName = await createCertificatePfx(); 208 | await signFiles(certificateFileName); 209 | await removeCertificatePfx(certificateFileName); 210 | } 211 | catch (err) { 212 | await removeCertificatePfx(certificateFileName); 213 | core.setFailed(`Action failed with error: ${err}`); 214 | } 215 | } 216 | 217 | run(); 218 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "code-sign-action", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "code-sign-action", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "@actions/core": "1.10.1" 13 | }, 14 | "devDependencies": { 15 | "@types/node": "20.11.30", 16 | "@typescript-eslint/eslint-plugin": "7.3.1", 17 | "@typescript-eslint/parser": "7.3.1", 18 | "@vercel/ncc": "0.38.1", 19 | "eslint": "8.57.0", 20 | "typescript": "5.4.3" 21 | } 22 | }, 23 | "node_modules/@aashutoshrathi/word-wrap": { 24 | "version": "1.2.6", 25 | "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", 26 | "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", 27 | "dev": true, 28 | "engines": { 29 | "node": ">=0.10.0" 30 | } 31 | }, 32 | "node_modules/@actions/core": { 33 | "version": "1.10.1", 34 | "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.1.tgz", 35 | "integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==", 36 | "dependencies": { 37 | "@actions/http-client": "^2.0.1", 38 | "uuid": "^8.3.2" 39 | } 40 | }, 41 | "node_modules/@actions/http-client": { 42 | "version": "2.0.1", 43 | "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz", 44 | "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==", 45 | "dependencies": { 46 | "tunnel": "^0.0.6" 47 | } 48 | }, 49 | "node_modules/@eslint-community/eslint-utils": { 50 | "version": "4.4.0", 51 | "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", 52 | "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", 53 | "dev": true, 54 | "dependencies": { 55 | "eslint-visitor-keys": "^3.3.0" 56 | }, 57 | "engines": { 58 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 59 | }, 60 | "peerDependencies": { 61 | "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 62 | } 63 | }, 64 | "node_modules/@eslint-community/regexpp": { 65 | "version": "4.10.0", 66 | "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", 67 | "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", 68 | "dev": true, 69 | "engines": { 70 | "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 71 | } 72 | }, 73 | "node_modules/@eslint/eslintrc": { 74 | "version": "2.1.4", 75 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", 76 | "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", 77 | "dev": true, 78 | "dependencies": { 79 | "ajv": "^6.12.4", 80 | "debug": "^4.3.2", 81 | "espree": "^9.6.0", 82 | "globals": "^13.19.0", 83 | "ignore": "^5.2.0", 84 | "import-fresh": "^3.2.1", 85 | "js-yaml": "^4.1.0", 86 | "minimatch": "^3.1.2", 87 | "strip-json-comments": "^3.1.1" 88 | }, 89 | "engines": { 90 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 91 | }, 92 | "funding": { 93 | "url": "https://opencollective.com/eslint" 94 | } 95 | }, 96 | "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { 97 | "version": "1.1.11", 98 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 99 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 100 | "dev": true, 101 | "dependencies": { 102 | "balanced-match": "^1.0.0", 103 | "concat-map": "0.0.1" 104 | } 105 | }, 106 | "node_modules/@eslint/eslintrc/node_modules/minimatch": { 107 | "version": "3.1.2", 108 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 109 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 110 | "dev": true, 111 | "dependencies": { 112 | "brace-expansion": "^1.1.7" 113 | }, 114 | "engines": { 115 | "node": "*" 116 | } 117 | }, 118 | "node_modules/@eslint/js": { 119 | "version": "8.57.0", 120 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", 121 | "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", 122 | "dev": true, 123 | "engines": { 124 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 125 | } 126 | }, 127 | "node_modules/@humanwhocodes/config-array": { 128 | "version": "0.11.14", 129 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", 130 | "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", 131 | "dev": true, 132 | "dependencies": { 133 | "@humanwhocodes/object-schema": "^2.0.2", 134 | "debug": "^4.3.1", 135 | "minimatch": "^3.0.5" 136 | }, 137 | "engines": { 138 | "node": ">=10.10.0" 139 | } 140 | }, 141 | "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { 142 | "version": "1.1.11", 143 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 144 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 145 | "dev": true, 146 | "dependencies": { 147 | "balanced-match": "^1.0.0", 148 | "concat-map": "0.0.1" 149 | } 150 | }, 151 | "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { 152 | "version": "3.1.2", 153 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 154 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 155 | "dev": true, 156 | "dependencies": { 157 | "brace-expansion": "^1.1.7" 158 | }, 159 | "engines": { 160 | "node": "*" 161 | } 162 | }, 163 | "node_modules/@humanwhocodes/module-importer": { 164 | "version": "1.0.1", 165 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 166 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 167 | "dev": true, 168 | "engines": { 169 | "node": ">=12.22" 170 | }, 171 | "funding": { 172 | "type": "github", 173 | "url": "https://github.com/sponsors/nzakas" 174 | } 175 | }, 176 | "node_modules/@humanwhocodes/object-schema": { 177 | "version": "2.0.2", 178 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", 179 | "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", 180 | "dev": true 181 | }, 182 | "node_modules/@nodelib/fs.scandir": { 183 | "version": "2.1.5", 184 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 185 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 186 | "dev": true, 187 | "dependencies": { 188 | "@nodelib/fs.stat": "2.0.5", 189 | "run-parallel": "^1.1.9" 190 | }, 191 | "engines": { 192 | "node": ">= 8" 193 | } 194 | }, 195 | "node_modules/@nodelib/fs.stat": { 196 | "version": "2.0.5", 197 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 198 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 199 | "dev": true, 200 | "engines": { 201 | "node": ">= 8" 202 | } 203 | }, 204 | "node_modules/@nodelib/fs.walk": { 205 | "version": "1.2.8", 206 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 207 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 208 | "dev": true, 209 | "dependencies": { 210 | "@nodelib/fs.scandir": "2.1.5", 211 | "fastq": "^1.6.0" 212 | }, 213 | "engines": { 214 | "node": ">= 8" 215 | } 216 | }, 217 | "node_modules/@types/json-schema": { 218 | "version": "7.0.15", 219 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 220 | "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 221 | "dev": true 222 | }, 223 | "node_modules/@types/node": { 224 | "version": "20.11.30", 225 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", 226 | "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==", 227 | "dev": true, 228 | "dependencies": { 229 | "undici-types": "~5.26.4" 230 | } 231 | }, 232 | "node_modules/@types/semver": { 233 | "version": "7.5.8", 234 | "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", 235 | "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", 236 | "dev": true 237 | }, 238 | "node_modules/@typescript-eslint/eslint-plugin": { 239 | "version": "7.3.1", 240 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.3.1.tgz", 241 | "integrity": "sha512-STEDMVQGww5lhCuNXVSQfbfuNII5E08QWkvAw5Qwf+bj2WT+JkG1uc+5/vXA3AOYMDHVOSpL+9rcbEUiHIm2dw==", 242 | "dev": true, 243 | "dependencies": { 244 | "@eslint-community/regexpp": "^4.5.1", 245 | "@typescript-eslint/scope-manager": "7.3.1", 246 | "@typescript-eslint/type-utils": "7.3.1", 247 | "@typescript-eslint/utils": "7.3.1", 248 | "@typescript-eslint/visitor-keys": "7.3.1", 249 | "debug": "^4.3.4", 250 | "graphemer": "^1.4.0", 251 | "ignore": "^5.2.4", 252 | "natural-compare": "^1.4.0", 253 | "semver": "^7.5.4", 254 | "ts-api-utils": "^1.0.1" 255 | }, 256 | "engines": { 257 | "node": "^18.18.0 || >=20.0.0" 258 | }, 259 | "funding": { 260 | "type": "opencollective", 261 | "url": "https://opencollective.com/typescript-eslint" 262 | }, 263 | "peerDependencies": { 264 | "@typescript-eslint/parser": "^7.0.0", 265 | "eslint": "^8.56.0" 266 | }, 267 | "peerDependenciesMeta": { 268 | "typescript": { 269 | "optional": true 270 | } 271 | } 272 | }, 273 | "node_modules/@typescript-eslint/parser": { 274 | "version": "7.3.1", 275 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.3.1.tgz", 276 | "integrity": "sha512-Rq49+pq7viTRCH48XAbTA+wdLRrB/3sRq4Lpk0oGDm0VmnjBrAOVXH/Laalmwsv2VpekiEfVFwJYVk6/e8uvQw==", 277 | "dev": true, 278 | "dependencies": { 279 | "@typescript-eslint/scope-manager": "7.3.1", 280 | "@typescript-eslint/types": "7.3.1", 281 | "@typescript-eslint/typescript-estree": "7.3.1", 282 | "@typescript-eslint/visitor-keys": "7.3.1", 283 | "debug": "^4.3.4" 284 | }, 285 | "engines": { 286 | "node": "^18.18.0 || >=20.0.0" 287 | }, 288 | "funding": { 289 | "type": "opencollective", 290 | "url": "https://opencollective.com/typescript-eslint" 291 | }, 292 | "peerDependencies": { 293 | "eslint": "^8.56.0" 294 | }, 295 | "peerDependenciesMeta": { 296 | "typescript": { 297 | "optional": true 298 | } 299 | } 300 | }, 301 | "node_modules/@typescript-eslint/scope-manager": { 302 | "version": "7.3.1", 303 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", 304 | "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", 305 | "dev": true, 306 | "dependencies": { 307 | "@typescript-eslint/types": "7.3.1", 308 | "@typescript-eslint/visitor-keys": "7.3.1" 309 | }, 310 | "engines": { 311 | "node": "^18.18.0 || >=20.0.0" 312 | }, 313 | "funding": { 314 | "type": "opencollective", 315 | "url": "https://opencollective.com/typescript-eslint" 316 | } 317 | }, 318 | "node_modules/@typescript-eslint/type-utils": { 319 | "version": "7.3.1", 320 | "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.3.1.tgz", 321 | "integrity": "sha512-iFhaysxFsMDQlzJn+vr3OrxN8NmdQkHks4WaqD4QBnt5hsq234wcYdyQ9uquzJJIDAj5W4wQne3yEsYA6OmXGw==", 322 | "dev": true, 323 | "dependencies": { 324 | "@typescript-eslint/typescript-estree": "7.3.1", 325 | "@typescript-eslint/utils": "7.3.1", 326 | "debug": "^4.3.4", 327 | "ts-api-utils": "^1.0.1" 328 | }, 329 | "engines": { 330 | "node": "^18.18.0 || >=20.0.0" 331 | }, 332 | "funding": { 333 | "type": "opencollective", 334 | "url": "https://opencollective.com/typescript-eslint" 335 | }, 336 | "peerDependencies": { 337 | "eslint": "^8.56.0" 338 | }, 339 | "peerDependenciesMeta": { 340 | "typescript": { 341 | "optional": true 342 | } 343 | } 344 | }, 345 | "node_modules/@typescript-eslint/types": { 346 | "version": "7.3.1", 347 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", 348 | "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", 349 | "dev": true, 350 | "engines": { 351 | "node": "^18.18.0 || >=20.0.0" 352 | }, 353 | "funding": { 354 | "type": "opencollective", 355 | "url": "https://opencollective.com/typescript-eslint" 356 | } 357 | }, 358 | "node_modules/@typescript-eslint/typescript-estree": { 359 | "version": "7.3.1", 360 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", 361 | "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", 362 | "dev": true, 363 | "dependencies": { 364 | "@typescript-eslint/types": "7.3.1", 365 | "@typescript-eslint/visitor-keys": "7.3.1", 366 | "debug": "^4.3.4", 367 | "globby": "^11.1.0", 368 | "is-glob": "^4.0.3", 369 | "minimatch": "9.0.3", 370 | "semver": "^7.5.4", 371 | "ts-api-utils": "^1.0.1" 372 | }, 373 | "engines": { 374 | "node": "^18.18.0 || >=20.0.0" 375 | }, 376 | "funding": { 377 | "type": "opencollective", 378 | "url": "https://opencollective.com/typescript-eslint" 379 | }, 380 | "peerDependenciesMeta": { 381 | "typescript": { 382 | "optional": true 383 | } 384 | } 385 | }, 386 | "node_modules/@typescript-eslint/utils": { 387 | "version": "7.3.1", 388 | "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.3.1.tgz", 389 | "integrity": "sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==", 390 | "dev": true, 391 | "dependencies": { 392 | "@eslint-community/eslint-utils": "^4.4.0", 393 | "@types/json-schema": "^7.0.12", 394 | "@types/semver": "^7.5.0", 395 | "@typescript-eslint/scope-manager": "7.3.1", 396 | "@typescript-eslint/types": "7.3.1", 397 | "@typescript-eslint/typescript-estree": "7.3.1", 398 | "semver": "^7.5.4" 399 | }, 400 | "engines": { 401 | "node": "^18.18.0 || >=20.0.0" 402 | }, 403 | "funding": { 404 | "type": "opencollective", 405 | "url": "https://opencollective.com/typescript-eslint" 406 | }, 407 | "peerDependencies": { 408 | "eslint": "^8.56.0" 409 | } 410 | }, 411 | "node_modules/@typescript-eslint/visitor-keys": { 412 | "version": "7.3.1", 413 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", 414 | "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", 415 | "dev": true, 416 | "dependencies": { 417 | "@typescript-eslint/types": "7.3.1", 418 | "eslint-visitor-keys": "^3.4.1" 419 | }, 420 | "engines": { 421 | "node": "^18.18.0 || >=20.0.0" 422 | }, 423 | "funding": { 424 | "type": "opencollective", 425 | "url": "https://opencollective.com/typescript-eslint" 426 | } 427 | }, 428 | "node_modules/@ungap/structured-clone": { 429 | "version": "1.2.0", 430 | "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", 431 | "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", 432 | "dev": true 433 | }, 434 | "node_modules/@vercel/ncc": { 435 | "version": "0.38.1", 436 | "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.1.tgz", 437 | "integrity": "sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==", 438 | "dev": true, 439 | "bin": { 440 | "ncc": "dist/ncc/cli.js" 441 | } 442 | }, 443 | "node_modules/acorn": { 444 | "version": "8.11.3", 445 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", 446 | "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", 447 | "dev": true, 448 | "bin": { 449 | "acorn": "bin/acorn" 450 | }, 451 | "engines": { 452 | "node": ">=0.4.0" 453 | } 454 | }, 455 | "node_modules/acorn-jsx": { 456 | "version": "5.3.2", 457 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 458 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 459 | "dev": true, 460 | "peerDependencies": { 461 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 462 | } 463 | }, 464 | "node_modules/ajv": { 465 | "version": "6.12.6", 466 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 467 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 468 | "dev": true, 469 | "dependencies": { 470 | "fast-deep-equal": "^3.1.1", 471 | "fast-json-stable-stringify": "^2.0.0", 472 | "json-schema-traverse": "^0.4.1", 473 | "uri-js": "^4.2.2" 474 | }, 475 | "funding": { 476 | "type": "github", 477 | "url": "https://github.com/sponsors/epoberezkin" 478 | } 479 | }, 480 | "node_modules/ansi-regex": { 481 | "version": "5.0.1", 482 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 483 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 484 | "dev": true, 485 | "engines": { 486 | "node": ">=8" 487 | } 488 | }, 489 | "node_modules/ansi-styles": { 490 | "version": "4.3.0", 491 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 492 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 493 | "dev": true, 494 | "dependencies": { 495 | "color-convert": "^2.0.1" 496 | }, 497 | "engines": { 498 | "node": ">=8" 499 | }, 500 | "funding": { 501 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 502 | } 503 | }, 504 | "node_modules/argparse": { 505 | "version": "2.0.1", 506 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 507 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 508 | "dev": true 509 | }, 510 | "node_modules/array-union": { 511 | "version": "2.1.0", 512 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 513 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 514 | "dev": true, 515 | "engines": { 516 | "node": ">=8" 517 | } 518 | }, 519 | "node_modules/balanced-match": { 520 | "version": "1.0.2", 521 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 522 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 523 | "dev": true 524 | }, 525 | "node_modules/brace-expansion": { 526 | "version": "2.0.1", 527 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 528 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 529 | "dev": true, 530 | "dependencies": { 531 | "balanced-match": "^1.0.0" 532 | } 533 | }, 534 | "node_modules/braces": { 535 | "version": "3.0.3", 536 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 537 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 538 | "dev": true, 539 | "dependencies": { 540 | "fill-range": "^7.1.1" 541 | }, 542 | "engines": { 543 | "node": ">=8" 544 | } 545 | }, 546 | "node_modules/callsites": { 547 | "version": "3.1.0", 548 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 549 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 550 | "dev": true, 551 | "engines": { 552 | "node": ">=6" 553 | } 554 | }, 555 | "node_modules/chalk": { 556 | "version": "4.1.2", 557 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 558 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 559 | "dev": true, 560 | "dependencies": { 561 | "ansi-styles": "^4.1.0", 562 | "supports-color": "^7.1.0" 563 | }, 564 | "engines": { 565 | "node": ">=10" 566 | }, 567 | "funding": { 568 | "url": "https://github.com/chalk/chalk?sponsor=1" 569 | } 570 | }, 571 | "node_modules/color-convert": { 572 | "version": "2.0.1", 573 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 574 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 575 | "dev": true, 576 | "dependencies": { 577 | "color-name": "~1.1.4" 578 | }, 579 | "engines": { 580 | "node": ">=7.0.0" 581 | } 582 | }, 583 | "node_modules/color-name": { 584 | "version": "1.1.4", 585 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 586 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 587 | "dev": true 588 | }, 589 | "node_modules/concat-map": { 590 | "version": "0.0.1", 591 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 592 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 593 | "dev": true 594 | }, 595 | "node_modules/cross-spawn": { 596 | "version": "7.0.3", 597 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 598 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 599 | "dev": true, 600 | "dependencies": { 601 | "path-key": "^3.1.0", 602 | "shebang-command": "^2.0.0", 603 | "which": "^2.0.1" 604 | }, 605 | "engines": { 606 | "node": ">= 8" 607 | } 608 | }, 609 | "node_modules/debug": { 610 | "version": "4.3.4", 611 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 612 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 613 | "dev": true, 614 | "dependencies": { 615 | "ms": "2.1.2" 616 | }, 617 | "engines": { 618 | "node": ">=6.0" 619 | }, 620 | "peerDependenciesMeta": { 621 | "supports-color": { 622 | "optional": true 623 | } 624 | } 625 | }, 626 | "node_modules/deep-is": { 627 | "version": "0.1.4", 628 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 629 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 630 | "dev": true 631 | }, 632 | "node_modules/dir-glob": { 633 | "version": "3.0.1", 634 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 635 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 636 | "dev": true, 637 | "dependencies": { 638 | "path-type": "^4.0.0" 639 | }, 640 | "engines": { 641 | "node": ">=8" 642 | } 643 | }, 644 | "node_modules/doctrine": { 645 | "version": "3.0.0", 646 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 647 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 648 | "dev": true, 649 | "dependencies": { 650 | "esutils": "^2.0.2" 651 | }, 652 | "engines": { 653 | "node": ">=6.0.0" 654 | } 655 | }, 656 | "node_modules/escape-string-regexp": { 657 | "version": "4.0.0", 658 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 659 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 660 | "dev": true, 661 | "engines": { 662 | "node": ">=10" 663 | }, 664 | "funding": { 665 | "url": "https://github.com/sponsors/sindresorhus" 666 | } 667 | }, 668 | "node_modules/eslint": { 669 | "version": "8.57.0", 670 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", 671 | "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", 672 | "dev": true, 673 | "dependencies": { 674 | "@eslint-community/eslint-utils": "^4.2.0", 675 | "@eslint-community/regexpp": "^4.6.1", 676 | "@eslint/eslintrc": "^2.1.4", 677 | "@eslint/js": "8.57.0", 678 | "@humanwhocodes/config-array": "^0.11.14", 679 | "@humanwhocodes/module-importer": "^1.0.1", 680 | "@nodelib/fs.walk": "^1.2.8", 681 | "@ungap/structured-clone": "^1.2.0", 682 | "ajv": "^6.12.4", 683 | "chalk": "^4.0.0", 684 | "cross-spawn": "^7.0.2", 685 | "debug": "^4.3.2", 686 | "doctrine": "^3.0.0", 687 | "escape-string-regexp": "^4.0.0", 688 | "eslint-scope": "^7.2.2", 689 | "eslint-visitor-keys": "^3.4.3", 690 | "espree": "^9.6.1", 691 | "esquery": "^1.4.2", 692 | "esutils": "^2.0.2", 693 | "fast-deep-equal": "^3.1.3", 694 | "file-entry-cache": "^6.0.1", 695 | "find-up": "^5.0.0", 696 | "glob-parent": "^6.0.2", 697 | "globals": "^13.19.0", 698 | "graphemer": "^1.4.0", 699 | "ignore": "^5.2.0", 700 | "imurmurhash": "^0.1.4", 701 | "is-glob": "^4.0.0", 702 | "is-path-inside": "^3.0.3", 703 | "js-yaml": "^4.1.0", 704 | "json-stable-stringify-without-jsonify": "^1.0.1", 705 | "levn": "^0.4.1", 706 | "lodash.merge": "^4.6.2", 707 | "minimatch": "^3.1.2", 708 | "natural-compare": "^1.4.0", 709 | "optionator": "^0.9.3", 710 | "strip-ansi": "^6.0.1", 711 | "text-table": "^0.2.0" 712 | }, 713 | "bin": { 714 | "eslint": "bin/eslint.js" 715 | }, 716 | "engines": { 717 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 718 | }, 719 | "funding": { 720 | "url": "https://opencollective.com/eslint" 721 | } 722 | }, 723 | "node_modules/eslint-scope": { 724 | "version": "7.2.2", 725 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", 726 | "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", 727 | "dev": true, 728 | "dependencies": { 729 | "esrecurse": "^4.3.0", 730 | "estraverse": "^5.2.0" 731 | }, 732 | "engines": { 733 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 734 | }, 735 | "funding": { 736 | "url": "https://opencollective.com/eslint" 737 | } 738 | }, 739 | "node_modules/eslint-visitor-keys": { 740 | "version": "3.4.3", 741 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 742 | "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 743 | "dev": true, 744 | "engines": { 745 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 746 | }, 747 | "funding": { 748 | "url": "https://opencollective.com/eslint" 749 | } 750 | }, 751 | "node_modules/eslint/node_modules/brace-expansion": { 752 | "version": "1.1.11", 753 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 754 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 755 | "dev": true, 756 | "dependencies": { 757 | "balanced-match": "^1.0.0", 758 | "concat-map": "0.0.1" 759 | } 760 | }, 761 | "node_modules/eslint/node_modules/minimatch": { 762 | "version": "3.1.2", 763 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 764 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 765 | "dev": true, 766 | "dependencies": { 767 | "brace-expansion": "^1.1.7" 768 | }, 769 | "engines": { 770 | "node": "*" 771 | } 772 | }, 773 | "node_modules/espree": { 774 | "version": "9.6.1", 775 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", 776 | "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", 777 | "dev": true, 778 | "dependencies": { 779 | "acorn": "^8.9.0", 780 | "acorn-jsx": "^5.3.2", 781 | "eslint-visitor-keys": "^3.4.1" 782 | }, 783 | "engines": { 784 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 785 | }, 786 | "funding": { 787 | "url": "https://opencollective.com/eslint" 788 | } 789 | }, 790 | "node_modules/esquery": { 791 | "version": "1.5.0", 792 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", 793 | "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", 794 | "dev": true, 795 | "dependencies": { 796 | "estraverse": "^5.1.0" 797 | }, 798 | "engines": { 799 | "node": ">=0.10" 800 | } 801 | }, 802 | "node_modules/esrecurse": { 803 | "version": "4.3.0", 804 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 805 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 806 | "dev": true, 807 | "dependencies": { 808 | "estraverse": "^5.2.0" 809 | }, 810 | "engines": { 811 | "node": ">=4.0" 812 | } 813 | }, 814 | "node_modules/estraverse": { 815 | "version": "5.3.0", 816 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 817 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 818 | "dev": true, 819 | "engines": { 820 | "node": ">=4.0" 821 | } 822 | }, 823 | "node_modules/esutils": { 824 | "version": "2.0.3", 825 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 826 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 827 | "dev": true, 828 | "engines": { 829 | "node": ">=0.10.0" 830 | } 831 | }, 832 | "node_modules/fast-deep-equal": { 833 | "version": "3.1.3", 834 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 835 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 836 | "dev": true 837 | }, 838 | "node_modules/fast-glob": { 839 | "version": "3.3.2", 840 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 841 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 842 | "dev": true, 843 | "dependencies": { 844 | "@nodelib/fs.stat": "^2.0.2", 845 | "@nodelib/fs.walk": "^1.2.3", 846 | "glob-parent": "^5.1.2", 847 | "merge2": "^1.3.0", 848 | "micromatch": "^4.0.4" 849 | }, 850 | "engines": { 851 | "node": ">=8.6.0" 852 | } 853 | }, 854 | "node_modules/fast-glob/node_modules/glob-parent": { 855 | "version": "5.1.2", 856 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 857 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 858 | "dev": true, 859 | "dependencies": { 860 | "is-glob": "^4.0.1" 861 | }, 862 | "engines": { 863 | "node": ">= 6" 864 | } 865 | }, 866 | "node_modules/fast-json-stable-stringify": { 867 | "version": "2.1.0", 868 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 869 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 870 | "dev": true 871 | }, 872 | "node_modules/fast-levenshtein": { 873 | "version": "2.0.6", 874 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 875 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 876 | "dev": true 877 | }, 878 | "node_modules/fastq": { 879 | "version": "1.17.1", 880 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 881 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 882 | "dev": true, 883 | "dependencies": { 884 | "reusify": "^1.0.4" 885 | } 886 | }, 887 | "node_modules/file-entry-cache": { 888 | "version": "6.0.1", 889 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 890 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 891 | "dev": true, 892 | "dependencies": { 893 | "flat-cache": "^3.0.4" 894 | }, 895 | "engines": { 896 | "node": "^10.12.0 || >=12.0.0" 897 | } 898 | }, 899 | "node_modules/fill-range": { 900 | "version": "7.1.1", 901 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 902 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 903 | "dev": true, 904 | "dependencies": { 905 | "to-regex-range": "^5.0.1" 906 | }, 907 | "engines": { 908 | "node": ">=8" 909 | } 910 | }, 911 | "node_modules/find-up": { 912 | "version": "5.0.0", 913 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 914 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 915 | "dev": true, 916 | "dependencies": { 917 | "locate-path": "^6.0.0", 918 | "path-exists": "^4.0.0" 919 | }, 920 | "engines": { 921 | "node": ">=10" 922 | }, 923 | "funding": { 924 | "url": "https://github.com/sponsors/sindresorhus" 925 | } 926 | }, 927 | "node_modules/flat-cache": { 928 | "version": "3.2.0", 929 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", 930 | "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", 931 | "dev": true, 932 | "dependencies": { 933 | "flatted": "^3.2.9", 934 | "keyv": "^4.5.3", 935 | "rimraf": "^3.0.2" 936 | }, 937 | "engines": { 938 | "node": "^10.12.0 || >=12.0.0" 939 | } 940 | }, 941 | "node_modules/flatted": { 942 | "version": "3.3.1", 943 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", 944 | "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", 945 | "dev": true 946 | }, 947 | "node_modules/fs.realpath": { 948 | "version": "1.0.0", 949 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 950 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 951 | "dev": true 952 | }, 953 | "node_modules/glob": { 954 | "version": "7.2.3", 955 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 956 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 957 | "dev": true, 958 | "dependencies": { 959 | "fs.realpath": "^1.0.0", 960 | "inflight": "^1.0.4", 961 | "inherits": "2", 962 | "minimatch": "^3.1.1", 963 | "once": "^1.3.0", 964 | "path-is-absolute": "^1.0.0" 965 | }, 966 | "engines": { 967 | "node": "*" 968 | }, 969 | "funding": { 970 | "url": "https://github.com/sponsors/isaacs" 971 | } 972 | }, 973 | "node_modules/glob-parent": { 974 | "version": "6.0.2", 975 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 976 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 977 | "dev": true, 978 | "dependencies": { 979 | "is-glob": "^4.0.3" 980 | }, 981 | "engines": { 982 | "node": ">=10.13.0" 983 | } 984 | }, 985 | "node_modules/glob/node_modules/brace-expansion": { 986 | "version": "1.1.11", 987 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 988 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 989 | "dev": true, 990 | "dependencies": { 991 | "balanced-match": "^1.0.0", 992 | "concat-map": "0.0.1" 993 | } 994 | }, 995 | "node_modules/glob/node_modules/minimatch": { 996 | "version": "3.1.2", 997 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 998 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 999 | "dev": true, 1000 | "dependencies": { 1001 | "brace-expansion": "^1.1.7" 1002 | }, 1003 | "engines": { 1004 | "node": "*" 1005 | } 1006 | }, 1007 | "node_modules/globals": { 1008 | "version": "13.24.0", 1009 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", 1010 | "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", 1011 | "dev": true, 1012 | "dependencies": { 1013 | "type-fest": "^0.20.2" 1014 | }, 1015 | "engines": { 1016 | "node": ">=8" 1017 | }, 1018 | "funding": { 1019 | "url": "https://github.com/sponsors/sindresorhus" 1020 | } 1021 | }, 1022 | "node_modules/globby": { 1023 | "version": "11.1.0", 1024 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 1025 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 1026 | "dev": true, 1027 | "dependencies": { 1028 | "array-union": "^2.1.0", 1029 | "dir-glob": "^3.0.1", 1030 | "fast-glob": "^3.2.9", 1031 | "ignore": "^5.2.0", 1032 | "merge2": "^1.4.1", 1033 | "slash": "^3.0.0" 1034 | }, 1035 | "engines": { 1036 | "node": ">=10" 1037 | }, 1038 | "funding": { 1039 | "url": "https://github.com/sponsors/sindresorhus" 1040 | } 1041 | }, 1042 | "node_modules/graphemer": { 1043 | "version": "1.4.0", 1044 | "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 1045 | "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 1046 | "dev": true 1047 | }, 1048 | "node_modules/has-flag": { 1049 | "version": "4.0.0", 1050 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1051 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1052 | "dev": true, 1053 | "engines": { 1054 | "node": ">=8" 1055 | } 1056 | }, 1057 | "node_modules/ignore": { 1058 | "version": "5.3.1", 1059 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", 1060 | "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", 1061 | "dev": true, 1062 | "engines": { 1063 | "node": ">= 4" 1064 | } 1065 | }, 1066 | "node_modules/import-fresh": { 1067 | "version": "3.3.0", 1068 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1069 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1070 | "dev": true, 1071 | "dependencies": { 1072 | "parent-module": "^1.0.0", 1073 | "resolve-from": "^4.0.0" 1074 | }, 1075 | "engines": { 1076 | "node": ">=6" 1077 | }, 1078 | "funding": { 1079 | "url": "https://github.com/sponsors/sindresorhus" 1080 | } 1081 | }, 1082 | "node_modules/imurmurhash": { 1083 | "version": "0.1.4", 1084 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1085 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 1086 | "dev": true, 1087 | "engines": { 1088 | "node": ">=0.8.19" 1089 | } 1090 | }, 1091 | "node_modules/inflight": { 1092 | "version": "1.0.6", 1093 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1094 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1095 | "dev": true, 1096 | "dependencies": { 1097 | "once": "^1.3.0", 1098 | "wrappy": "1" 1099 | } 1100 | }, 1101 | "node_modules/inherits": { 1102 | "version": "2.0.4", 1103 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1104 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1105 | "dev": true 1106 | }, 1107 | "node_modules/is-extglob": { 1108 | "version": "2.1.1", 1109 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1110 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1111 | "dev": true, 1112 | "engines": { 1113 | "node": ">=0.10.0" 1114 | } 1115 | }, 1116 | "node_modules/is-glob": { 1117 | "version": "4.0.3", 1118 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1119 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1120 | "dev": true, 1121 | "dependencies": { 1122 | "is-extglob": "^2.1.1" 1123 | }, 1124 | "engines": { 1125 | "node": ">=0.10.0" 1126 | } 1127 | }, 1128 | "node_modules/is-number": { 1129 | "version": "7.0.0", 1130 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1131 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1132 | "dev": true, 1133 | "engines": { 1134 | "node": ">=0.12.0" 1135 | } 1136 | }, 1137 | "node_modules/is-path-inside": { 1138 | "version": "3.0.3", 1139 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 1140 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 1141 | "dev": true, 1142 | "engines": { 1143 | "node": ">=8" 1144 | } 1145 | }, 1146 | "node_modules/isexe": { 1147 | "version": "2.0.0", 1148 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1149 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1150 | "dev": true 1151 | }, 1152 | "node_modules/js-yaml": { 1153 | "version": "4.1.0", 1154 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1155 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1156 | "dev": true, 1157 | "dependencies": { 1158 | "argparse": "^2.0.1" 1159 | }, 1160 | "bin": { 1161 | "js-yaml": "bin/js-yaml.js" 1162 | } 1163 | }, 1164 | "node_modules/json-buffer": { 1165 | "version": "3.0.1", 1166 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 1167 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 1168 | "dev": true 1169 | }, 1170 | "node_modules/json-schema-traverse": { 1171 | "version": "0.4.1", 1172 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1173 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1174 | "dev": true 1175 | }, 1176 | "node_modules/json-stable-stringify-without-jsonify": { 1177 | "version": "1.0.1", 1178 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1179 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 1180 | "dev": true 1181 | }, 1182 | "node_modules/keyv": { 1183 | "version": "4.5.4", 1184 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 1185 | "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 1186 | "dev": true, 1187 | "dependencies": { 1188 | "json-buffer": "3.0.1" 1189 | } 1190 | }, 1191 | "node_modules/levn": { 1192 | "version": "0.4.1", 1193 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1194 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1195 | "dev": true, 1196 | "dependencies": { 1197 | "prelude-ls": "^1.2.1", 1198 | "type-check": "~0.4.0" 1199 | }, 1200 | "engines": { 1201 | "node": ">= 0.8.0" 1202 | } 1203 | }, 1204 | "node_modules/locate-path": { 1205 | "version": "6.0.0", 1206 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1207 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1208 | "dev": true, 1209 | "dependencies": { 1210 | "p-locate": "^5.0.0" 1211 | }, 1212 | "engines": { 1213 | "node": ">=10" 1214 | }, 1215 | "funding": { 1216 | "url": "https://github.com/sponsors/sindresorhus" 1217 | } 1218 | }, 1219 | "node_modules/lodash.merge": { 1220 | "version": "4.6.2", 1221 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1222 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 1223 | "dev": true 1224 | }, 1225 | "node_modules/lru-cache": { 1226 | "version": "6.0.0", 1227 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1228 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1229 | "dev": true, 1230 | "dependencies": { 1231 | "yallist": "^4.0.0" 1232 | }, 1233 | "engines": { 1234 | "node": ">=10" 1235 | } 1236 | }, 1237 | "node_modules/merge2": { 1238 | "version": "1.4.1", 1239 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1240 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1241 | "dev": true, 1242 | "engines": { 1243 | "node": ">= 8" 1244 | } 1245 | }, 1246 | "node_modules/micromatch": { 1247 | "version": "4.0.5", 1248 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 1249 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 1250 | "dev": true, 1251 | "dependencies": { 1252 | "braces": "^3.0.2", 1253 | "picomatch": "^2.3.1" 1254 | }, 1255 | "engines": { 1256 | "node": ">=8.6" 1257 | } 1258 | }, 1259 | "node_modules/minimatch": { 1260 | "version": "9.0.3", 1261 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", 1262 | "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", 1263 | "dev": true, 1264 | "dependencies": { 1265 | "brace-expansion": "^2.0.1" 1266 | }, 1267 | "engines": { 1268 | "node": ">=16 || 14 >=14.17" 1269 | }, 1270 | "funding": { 1271 | "url": "https://github.com/sponsors/isaacs" 1272 | } 1273 | }, 1274 | "node_modules/ms": { 1275 | "version": "2.1.2", 1276 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1277 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1278 | "dev": true 1279 | }, 1280 | "node_modules/natural-compare": { 1281 | "version": "1.4.0", 1282 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1283 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 1284 | "dev": true 1285 | }, 1286 | "node_modules/once": { 1287 | "version": "1.4.0", 1288 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1289 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1290 | "dev": true, 1291 | "dependencies": { 1292 | "wrappy": "1" 1293 | } 1294 | }, 1295 | "node_modules/optionator": { 1296 | "version": "0.9.3", 1297 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", 1298 | "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", 1299 | "dev": true, 1300 | "dependencies": { 1301 | "@aashutoshrathi/word-wrap": "^1.2.3", 1302 | "deep-is": "^0.1.3", 1303 | "fast-levenshtein": "^2.0.6", 1304 | "levn": "^0.4.1", 1305 | "prelude-ls": "^1.2.1", 1306 | "type-check": "^0.4.0" 1307 | }, 1308 | "engines": { 1309 | "node": ">= 0.8.0" 1310 | } 1311 | }, 1312 | "node_modules/p-limit": { 1313 | "version": "3.1.0", 1314 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1315 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1316 | "dev": true, 1317 | "dependencies": { 1318 | "yocto-queue": "^0.1.0" 1319 | }, 1320 | "engines": { 1321 | "node": ">=10" 1322 | }, 1323 | "funding": { 1324 | "url": "https://github.com/sponsors/sindresorhus" 1325 | } 1326 | }, 1327 | "node_modules/p-locate": { 1328 | "version": "5.0.0", 1329 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1330 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1331 | "dev": true, 1332 | "dependencies": { 1333 | "p-limit": "^3.0.2" 1334 | }, 1335 | "engines": { 1336 | "node": ">=10" 1337 | }, 1338 | "funding": { 1339 | "url": "https://github.com/sponsors/sindresorhus" 1340 | } 1341 | }, 1342 | "node_modules/parent-module": { 1343 | "version": "1.0.1", 1344 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1345 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1346 | "dev": true, 1347 | "dependencies": { 1348 | "callsites": "^3.0.0" 1349 | }, 1350 | "engines": { 1351 | "node": ">=6" 1352 | } 1353 | }, 1354 | "node_modules/path-exists": { 1355 | "version": "4.0.0", 1356 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1357 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1358 | "dev": true, 1359 | "engines": { 1360 | "node": ">=8" 1361 | } 1362 | }, 1363 | "node_modules/path-is-absolute": { 1364 | "version": "1.0.1", 1365 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1366 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1367 | "dev": true, 1368 | "engines": { 1369 | "node": ">=0.10.0" 1370 | } 1371 | }, 1372 | "node_modules/path-key": { 1373 | "version": "3.1.1", 1374 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1375 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1376 | "dev": true, 1377 | "engines": { 1378 | "node": ">=8" 1379 | } 1380 | }, 1381 | "node_modules/path-type": { 1382 | "version": "4.0.0", 1383 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1384 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 1385 | "dev": true, 1386 | "engines": { 1387 | "node": ">=8" 1388 | } 1389 | }, 1390 | "node_modules/picomatch": { 1391 | "version": "2.3.1", 1392 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1393 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1394 | "dev": true, 1395 | "engines": { 1396 | "node": ">=8.6" 1397 | }, 1398 | "funding": { 1399 | "url": "https://github.com/sponsors/jonschlinkert" 1400 | } 1401 | }, 1402 | "node_modules/prelude-ls": { 1403 | "version": "1.2.1", 1404 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1405 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1406 | "dev": true, 1407 | "engines": { 1408 | "node": ">= 0.8.0" 1409 | } 1410 | }, 1411 | "node_modules/punycode": { 1412 | "version": "2.3.1", 1413 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 1414 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 1415 | "dev": true, 1416 | "engines": { 1417 | "node": ">=6" 1418 | } 1419 | }, 1420 | "node_modules/queue-microtask": { 1421 | "version": "1.2.3", 1422 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1423 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1424 | "dev": true, 1425 | "funding": [ 1426 | { 1427 | "type": "github", 1428 | "url": "https://github.com/sponsors/feross" 1429 | }, 1430 | { 1431 | "type": "patreon", 1432 | "url": "https://www.patreon.com/feross" 1433 | }, 1434 | { 1435 | "type": "consulting", 1436 | "url": "https://feross.org/support" 1437 | } 1438 | ] 1439 | }, 1440 | "node_modules/resolve-from": { 1441 | "version": "4.0.0", 1442 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1443 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1444 | "dev": true, 1445 | "engines": { 1446 | "node": ">=4" 1447 | } 1448 | }, 1449 | "node_modules/reusify": { 1450 | "version": "1.0.4", 1451 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1452 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1453 | "dev": true, 1454 | "engines": { 1455 | "iojs": ">=1.0.0", 1456 | "node": ">=0.10.0" 1457 | } 1458 | }, 1459 | "node_modules/rimraf": { 1460 | "version": "3.0.2", 1461 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1462 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1463 | "dev": true, 1464 | "dependencies": { 1465 | "glob": "^7.1.3" 1466 | }, 1467 | "bin": { 1468 | "rimraf": "bin.js" 1469 | }, 1470 | "funding": { 1471 | "url": "https://github.com/sponsors/isaacs" 1472 | } 1473 | }, 1474 | "node_modules/run-parallel": { 1475 | "version": "1.2.0", 1476 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1477 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1478 | "dev": true, 1479 | "funding": [ 1480 | { 1481 | "type": "github", 1482 | "url": "https://github.com/sponsors/feross" 1483 | }, 1484 | { 1485 | "type": "patreon", 1486 | "url": "https://www.patreon.com/feross" 1487 | }, 1488 | { 1489 | "type": "consulting", 1490 | "url": "https://feross.org/support" 1491 | } 1492 | ], 1493 | "dependencies": { 1494 | "queue-microtask": "^1.2.2" 1495 | } 1496 | }, 1497 | "node_modules/semver": { 1498 | "version": "7.6.0", 1499 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", 1500 | "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", 1501 | "dev": true, 1502 | "dependencies": { 1503 | "lru-cache": "^6.0.0" 1504 | }, 1505 | "bin": { 1506 | "semver": "bin/semver.js" 1507 | }, 1508 | "engines": { 1509 | "node": ">=10" 1510 | } 1511 | }, 1512 | "node_modules/shebang-command": { 1513 | "version": "2.0.0", 1514 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1515 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1516 | "dev": true, 1517 | "dependencies": { 1518 | "shebang-regex": "^3.0.0" 1519 | }, 1520 | "engines": { 1521 | "node": ">=8" 1522 | } 1523 | }, 1524 | "node_modules/shebang-regex": { 1525 | "version": "3.0.0", 1526 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1527 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1528 | "dev": true, 1529 | "engines": { 1530 | "node": ">=8" 1531 | } 1532 | }, 1533 | "node_modules/slash": { 1534 | "version": "3.0.0", 1535 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 1536 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 1537 | "dev": true, 1538 | "engines": { 1539 | "node": ">=8" 1540 | } 1541 | }, 1542 | "node_modules/strip-ansi": { 1543 | "version": "6.0.1", 1544 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1545 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1546 | "dev": true, 1547 | "dependencies": { 1548 | "ansi-regex": "^5.0.1" 1549 | }, 1550 | "engines": { 1551 | "node": ">=8" 1552 | } 1553 | }, 1554 | "node_modules/strip-json-comments": { 1555 | "version": "3.1.1", 1556 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1557 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1558 | "dev": true, 1559 | "engines": { 1560 | "node": ">=8" 1561 | }, 1562 | "funding": { 1563 | "url": "https://github.com/sponsors/sindresorhus" 1564 | } 1565 | }, 1566 | "node_modules/supports-color": { 1567 | "version": "7.2.0", 1568 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1569 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1570 | "dev": true, 1571 | "dependencies": { 1572 | "has-flag": "^4.0.0" 1573 | }, 1574 | "engines": { 1575 | "node": ">=8" 1576 | } 1577 | }, 1578 | "node_modules/text-table": { 1579 | "version": "0.2.0", 1580 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1581 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 1582 | "dev": true 1583 | }, 1584 | "node_modules/to-regex-range": { 1585 | "version": "5.0.1", 1586 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1587 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1588 | "dev": true, 1589 | "dependencies": { 1590 | "is-number": "^7.0.0" 1591 | }, 1592 | "engines": { 1593 | "node": ">=8.0" 1594 | } 1595 | }, 1596 | "node_modules/ts-api-utils": { 1597 | "version": "1.3.0", 1598 | "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", 1599 | "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", 1600 | "dev": true, 1601 | "engines": { 1602 | "node": ">=16" 1603 | }, 1604 | "peerDependencies": { 1605 | "typescript": ">=4.2.0" 1606 | } 1607 | }, 1608 | "node_modules/tunnel": { 1609 | "version": "0.0.6", 1610 | "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", 1611 | "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", 1612 | "engines": { 1613 | "node": ">=0.6.11 <=0.7.0 || >=0.7.3" 1614 | } 1615 | }, 1616 | "node_modules/type-check": { 1617 | "version": "0.4.0", 1618 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 1619 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 1620 | "dev": true, 1621 | "dependencies": { 1622 | "prelude-ls": "^1.2.1" 1623 | }, 1624 | "engines": { 1625 | "node": ">= 0.8.0" 1626 | } 1627 | }, 1628 | "node_modules/type-fest": { 1629 | "version": "0.20.2", 1630 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 1631 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 1632 | "dev": true, 1633 | "engines": { 1634 | "node": ">=10" 1635 | }, 1636 | "funding": { 1637 | "url": "https://github.com/sponsors/sindresorhus" 1638 | } 1639 | }, 1640 | "node_modules/typescript": { 1641 | "version": "5.4.3", 1642 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz", 1643 | "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==", 1644 | "dev": true, 1645 | "bin": { 1646 | "tsc": "bin/tsc", 1647 | "tsserver": "bin/tsserver" 1648 | }, 1649 | "engines": { 1650 | "node": ">=14.17" 1651 | } 1652 | }, 1653 | "node_modules/undici-types": { 1654 | "version": "5.26.5", 1655 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 1656 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 1657 | "dev": true 1658 | }, 1659 | "node_modules/uri-js": { 1660 | "version": "4.4.1", 1661 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1662 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1663 | "dev": true, 1664 | "dependencies": { 1665 | "punycode": "^2.1.0" 1666 | } 1667 | }, 1668 | "node_modules/uuid": { 1669 | "version": "8.3.2", 1670 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 1671 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", 1672 | "bin": { 1673 | "uuid": "dist/bin/uuid" 1674 | } 1675 | }, 1676 | "node_modules/which": { 1677 | "version": "2.0.2", 1678 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1679 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1680 | "dev": true, 1681 | "dependencies": { 1682 | "isexe": "^2.0.0" 1683 | }, 1684 | "bin": { 1685 | "node-which": "bin/node-which" 1686 | }, 1687 | "engines": { 1688 | "node": ">= 8" 1689 | } 1690 | }, 1691 | "node_modules/wrappy": { 1692 | "version": "1.0.2", 1693 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1694 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1695 | "dev": true 1696 | }, 1697 | "node_modules/yallist": { 1698 | "version": "4.0.0", 1699 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1700 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 1701 | "dev": true 1702 | }, 1703 | "node_modules/yocto-queue": { 1704 | "version": "0.1.0", 1705 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 1706 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 1707 | "dev": true, 1708 | "engines": { 1709 | "node": ">=10" 1710 | }, 1711 | "funding": { 1712 | "url": "https://github.com/sponsors/sindresorhus" 1713 | } 1714 | } 1715 | }, 1716 | "dependencies": { 1717 | "@aashutoshrathi/word-wrap": { 1718 | "version": "1.2.6", 1719 | "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", 1720 | "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", 1721 | "dev": true 1722 | }, 1723 | "@actions/core": { 1724 | "version": "1.10.1", 1725 | "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.1.tgz", 1726 | "integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==", 1727 | "requires": { 1728 | "@actions/http-client": "^2.0.1", 1729 | "uuid": "^8.3.2" 1730 | } 1731 | }, 1732 | "@actions/http-client": { 1733 | "version": "2.0.1", 1734 | "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz", 1735 | "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==", 1736 | "requires": { 1737 | "tunnel": "^0.0.6" 1738 | } 1739 | }, 1740 | "@eslint-community/eslint-utils": { 1741 | "version": "4.4.0", 1742 | "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", 1743 | "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", 1744 | "dev": true, 1745 | "requires": { 1746 | "eslint-visitor-keys": "^3.3.0" 1747 | } 1748 | }, 1749 | "@eslint-community/regexpp": { 1750 | "version": "4.10.0", 1751 | "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", 1752 | "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", 1753 | "dev": true 1754 | }, 1755 | "@eslint/eslintrc": { 1756 | "version": "2.1.4", 1757 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", 1758 | "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", 1759 | "dev": true, 1760 | "requires": { 1761 | "ajv": "^6.12.4", 1762 | "debug": "^4.3.2", 1763 | "espree": "^9.6.0", 1764 | "globals": "^13.19.0", 1765 | "ignore": "^5.2.0", 1766 | "import-fresh": "^3.2.1", 1767 | "js-yaml": "^4.1.0", 1768 | "minimatch": "^3.1.2", 1769 | "strip-json-comments": "^3.1.1" 1770 | }, 1771 | "dependencies": { 1772 | "brace-expansion": { 1773 | "version": "1.1.11", 1774 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1775 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1776 | "dev": true, 1777 | "requires": { 1778 | "balanced-match": "^1.0.0", 1779 | "concat-map": "0.0.1" 1780 | } 1781 | }, 1782 | "minimatch": { 1783 | "version": "3.1.2", 1784 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1785 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1786 | "dev": true, 1787 | "requires": { 1788 | "brace-expansion": "^1.1.7" 1789 | } 1790 | } 1791 | } 1792 | }, 1793 | "@eslint/js": { 1794 | "version": "8.57.0", 1795 | "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", 1796 | "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", 1797 | "dev": true 1798 | }, 1799 | "@humanwhocodes/config-array": { 1800 | "version": "0.11.14", 1801 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", 1802 | "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", 1803 | "dev": true, 1804 | "requires": { 1805 | "@humanwhocodes/object-schema": "^2.0.2", 1806 | "debug": "^4.3.1", 1807 | "minimatch": "^3.0.5" 1808 | }, 1809 | "dependencies": { 1810 | "brace-expansion": { 1811 | "version": "1.1.11", 1812 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1813 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1814 | "dev": true, 1815 | "requires": { 1816 | "balanced-match": "^1.0.0", 1817 | "concat-map": "0.0.1" 1818 | } 1819 | }, 1820 | "minimatch": { 1821 | "version": "3.1.2", 1822 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1823 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1824 | "dev": true, 1825 | "requires": { 1826 | "brace-expansion": "^1.1.7" 1827 | } 1828 | } 1829 | } 1830 | }, 1831 | "@humanwhocodes/module-importer": { 1832 | "version": "1.0.1", 1833 | "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 1834 | "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 1835 | "dev": true 1836 | }, 1837 | "@humanwhocodes/object-schema": { 1838 | "version": "2.0.2", 1839 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", 1840 | "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", 1841 | "dev": true 1842 | }, 1843 | "@nodelib/fs.scandir": { 1844 | "version": "2.1.5", 1845 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 1846 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 1847 | "dev": true, 1848 | "requires": { 1849 | "@nodelib/fs.stat": "2.0.5", 1850 | "run-parallel": "^1.1.9" 1851 | } 1852 | }, 1853 | "@nodelib/fs.stat": { 1854 | "version": "2.0.5", 1855 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 1856 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 1857 | "dev": true 1858 | }, 1859 | "@nodelib/fs.walk": { 1860 | "version": "1.2.8", 1861 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 1862 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 1863 | "dev": true, 1864 | "requires": { 1865 | "@nodelib/fs.scandir": "2.1.5", 1866 | "fastq": "^1.6.0" 1867 | } 1868 | }, 1869 | "@types/json-schema": { 1870 | "version": "7.0.15", 1871 | "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", 1872 | "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", 1873 | "dev": true 1874 | }, 1875 | "@types/node": { 1876 | "version": "20.11.30", 1877 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", 1878 | "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==", 1879 | "dev": true, 1880 | "requires": { 1881 | "undici-types": "~5.26.4" 1882 | } 1883 | }, 1884 | "@types/semver": { 1885 | "version": "7.5.8", 1886 | "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", 1887 | "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", 1888 | "dev": true 1889 | }, 1890 | "@typescript-eslint/eslint-plugin": { 1891 | "version": "7.3.1", 1892 | "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.3.1.tgz", 1893 | "integrity": "sha512-STEDMVQGww5lhCuNXVSQfbfuNII5E08QWkvAw5Qwf+bj2WT+JkG1uc+5/vXA3AOYMDHVOSpL+9rcbEUiHIm2dw==", 1894 | "dev": true, 1895 | "requires": { 1896 | "@eslint-community/regexpp": "^4.5.1", 1897 | "@typescript-eslint/scope-manager": "7.3.1", 1898 | "@typescript-eslint/type-utils": "7.3.1", 1899 | "@typescript-eslint/utils": "7.3.1", 1900 | "@typescript-eslint/visitor-keys": "7.3.1", 1901 | "debug": "^4.3.4", 1902 | "graphemer": "^1.4.0", 1903 | "ignore": "^5.2.4", 1904 | "natural-compare": "^1.4.0", 1905 | "semver": "^7.5.4", 1906 | "ts-api-utils": "^1.0.1" 1907 | } 1908 | }, 1909 | "@typescript-eslint/parser": { 1910 | "version": "7.3.1", 1911 | "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.3.1.tgz", 1912 | "integrity": "sha512-Rq49+pq7viTRCH48XAbTA+wdLRrB/3sRq4Lpk0oGDm0VmnjBrAOVXH/Laalmwsv2VpekiEfVFwJYVk6/e8uvQw==", 1913 | "dev": true, 1914 | "requires": { 1915 | "@typescript-eslint/scope-manager": "7.3.1", 1916 | "@typescript-eslint/types": "7.3.1", 1917 | "@typescript-eslint/typescript-estree": "7.3.1", 1918 | "@typescript-eslint/visitor-keys": "7.3.1", 1919 | "debug": "^4.3.4" 1920 | } 1921 | }, 1922 | "@typescript-eslint/scope-manager": { 1923 | "version": "7.3.1", 1924 | "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", 1925 | "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", 1926 | "dev": true, 1927 | "requires": { 1928 | "@typescript-eslint/types": "7.3.1", 1929 | "@typescript-eslint/visitor-keys": "7.3.1" 1930 | } 1931 | }, 1932 | "@typescript-eslint/type-utils": { 1933 | "version": "7.3.1", 1934 | "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.3.1.tgz", 1935 | "integrity": "sha512-iFhaysxFsMDQlzJn+vr3OrxN8NmdQkHks4WaqD4QBnt5hsq234wcYdyQ9uquzJJIDAj5W4wQne3yEsYA6OmXGw==", 1936 | "dev": true, 1937 | "requires": { 1938 | "@typescript-eslint/typescript-estree": "7.3.1", 1939 | "@typescript-eslint/utils": "7.3.1", 1940 | "debug": "^4.3.4", 1941 | "ts-api-utils": "^1.0.1" 1942 | } 1943 | }, 1944 | "@typescript-eslint/types": { 1945 | "version": "7.3.1", 1946 | "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", 1947 | "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", 1948 | "dev": true 1949 | }, 1950 | "@typescript-eslint/typescript-estree": { 1951 | "version": "7.3.1", 1952 | "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", 1953 | "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", 1954 | "dev": true, 1955 | "requires": { 1956 | "@typescript-eslint/types": "7.3.1", 1957 | "@typescript-eslint/visitor-keys": "7.3.1", 1958 | "debug": "^4.3.4", 1959 | "globby": "^11.1.0", 1960 | "is-glob": "^4.0.3", 1961 | "minimatch": "9.0.3", 1962 | "semver": "^7.5.4", 1963 | "ts-api-utils": "^1.0.1" 1964 | } 1965 | }, 1966 | "@typescript-eslint/utils": { 1967 | "version": "7.3.1", 1968 | "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.3.1.tgz", 1969 | "integrity": "sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==", 1970 | "dev": true, 1971 | "requires": { 1972 | "@eslint-community/eslint-utils": "^4.4.0", 1973 | "@types/json-schema": "^7.0.12", 1974 | "@types/semver": "^7.5.0", 1975 | "@typescript-eslint/scope-manager": "7.3.1", 1976 | "@typescript-eslint/types": "7.3.1", 1977 | "@typescript-eslint/typescript-estree": "7.3.1", 1978 | "semver": "^7.5.4" 1979 | } 1980 | }, 1981 | "@typescript-eslint/visitor-keys": { 1982 | "version": "7.3.1", 1983 | "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", 1984 | "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", 1985 | "dev": true, 1986 | "requires": { 1987 | "@typescript-eslint/types": "7.3.1", 1988 | "eslint-visitor-keys": "^3.4.1" 1989 | } 1990 | }, 1991 | "@ungap/structured-clone": { 1992 | "version": "1.2.0", 1993 | "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", 1994 | "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", 1995 | "dev": true 1996 | }, 1997 | "@vercel/ncc": { 1998 | "version": "0.38.1", 1999 | "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.1.tgz", 2000 | "integrity": "sha512-IBBb+iI2NLu4VQn3Vwldyi2QwaXt5+hTyh58ggAMoCGE6DJmPvwL3KPBWcJl1m9LYPChBLE980Jw+CS4Wokqxw==", 2001 | "dev": true 2002 | }, 2003 | "acorn": { 2004 | "version": "8.11.3", 2005 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", 2006 | "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", 2007 | "dev": true 2008 | }, 2009 | "acorn-jsx": { 2010 | "version": "5.3.2", 2011 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 2012 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 2013 | "dev": true, 2014 | "requires": {} 2015 | }, 2016 | "ajv": { 2017 | "version": "6.12.6", 2018 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 2019 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 2020 | "dev": true, 2021 | "requires": { 2022 | "fast-deep-equal": "^3.1.1", 2023 | "fast-json-stable-stringify": "^2.0.0", 2024 | "json-schema-traverse": "^0.4.1", 2025 | "uri-js": "^4.2.2" 2026 | } 2027 | }, 2028 | "ansi-regex": { 2029 | "version": "5.0.1", 2030 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2031 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2032 | "dev": true 2033 | }, 2034 | "ansi-styles": { 2035 | "version": "4.3.0", 2036 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2037 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2038 | "dev": true, 2039 | "requires": { 2040 | "color-convert": "^2.0.1" 2041 | } 2042 | }, 2043 | "argparse": { 2044 | "version": "2.0.1", 2045 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 2046 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 2047 | "dev": true 2048 | }, 2049 | "array-union": { 2050 | "version": "2.1.0", 2051 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 2052 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 2053 | "dev": true 2054 | }, 2055 | "balanced-match": { 2056 | "version": "1.0.2", 2057 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 2058 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 2059 | "dev": true 2060 | }, 2061 | "brace-expansion": { 2062 | "version": "2.0.1", 2063 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 2064 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 2065 | "dev": true, 2066 | "requires": { 2067 | "balanced-match": "^1.0.0" 2068 | } 2069 | }, 2070 | "braces": { 2071 | "version": "3.0.3", 2072 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 2073 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 2074 | "dev": true, 2075 | "requires": { 2076 | "fill-range": "^7.1.1" 2077 | } 2078 | }, 2079 | "callsites": { 2080 | "version": "3.1.0", 2081 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 2082 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 2083 | "dev": true 2084 | }, 2085 | "chalk": { 2086 | "version": "4.1.2", 2087 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 2088 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 2089 | "dev": true, 2090 | "requires": { 2091 | "ansi-styles": "^4.1.0", 2092 | "supports-color": "^7.1.0" 2093 | } 2094 | }, 2095 | "color-convert": { 2096 | "version": "2.0.1", 2097 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 2098 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 2099 | "dev": true, 2100 | "requires": { 2101 | "color-name": "~1.1.4" 2102 | } 2103 | }, 2104 | "color-name": { 2105 | "version": "1.1.4", 2106 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 2107 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 2108 | "dev": true 2109 | }, 2110 | "concat-map": { 2111 | "version": "0.0.1", 2112 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 2113 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 2114 | "dev": true 2115 | }, 2116 | "cross-spawn": { 2117 | "version": "7.0.3", 2118 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 2119 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 2120 | "dev": true, 2121 | "requires": { 2122 | "path-key": "^3.1.0", 2123 | "shebang-command": "^2.0.0", 2124 | "which": "^2.0.1" 2125 | } 2126 | }, 2127 | "debug": { 2128 | "version": "4.3.4", 2129 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 2130 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 2131 | "dev": true, 2132 | "requires": { 2133 | "ms": "2.1.2" 2134 | } 2135 | }, 2136 | "deep-is": { 2137 | "version": "0.1.4", 2138 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 2139 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 2140 | "dev": true 2141 | }, 2142 | "dir-glob": { 2143 | "version": "3.0.1", 2144 | "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 2145 | "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 2146 | "dev": true, 2147 | "requires": { 2148 | "path-type": "^4.0.0" 2149 | } 2150 | }, 2151 | "doctrine": { 2152 | "version": "3.0.0", 2153 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 2154 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 2155 | "dev": true, 2156 | "requires": { 2157 | "esutils": "^2.0.2" 2158 | } 2159 | }, 2160 | "escape-string-regexp": { 2161 | "version": "4.0.0", 2162 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 2163 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 2164 | "dev": true 2165 | }, 2166 | "eslint": { 2167 | "version": "8.57.0", 2168 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", 2169 | "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", 2170 | "dev": true, 2171 | "requires": { 2172 | "@eslint-community/eslint-utils": "^4.2.0", 2173 | "@eslint-community/regexpp": "^4.6.1", 2174 | "@eslint/eslintrc": "^2.1.4", 2175 | "@eslint/js": "8.57.0", 2176 | "@humanwhocodes/config-array": "^0.11.14", 2177 | "@humanwhocodes/module-importer": "^1.0.1", 2178 | "@nodelib/fs.walk": "^1.2.8", 2179 | "@ungap/structured-clone": "^1.2.0", 2180 | "ajv": "^6.12.4", 2181 | "chalk": "^4.0.0", 2182 | "cross-spawn": "^7.0.2", 2183 | "debug": "^4.3.2", 2184 | "doctrine": "^3.0.0", 2185 | "escape-string-regexp": "^4.0.0", 2186 | "eslint-scope": "^7.2.2", 2187 | "eslint-visitor-keys": "^3.4.3", 2188 | "espree": "^9.6.1", 2189 | "esquery": "^1.4.2", 2190 | "esutils": "^2.0.2", 2191 | "fast-deep-equal": "^3.1.3", 2192 | "file-entry-cache": "^6.0.1", 2193 | "find-up": "^5.0.0", 2194 | "glob-parent": "^6.0.2", 2195 | "globals": "^13.19.0", 2196 | "graphemer": "^1.4.0", 2197 | "ignore": "^5.2.0", 2198 | "imurmurhash": "^0.1.4", 2199 | "is-glob": "^4.0.0", 2200 | "is-path-inside": "^3.0.3", 2201 | "js-yaml": "^4.1.0", 2202 | "json-stable-stringify-without-jsonify": "^1.0.1", 2203 | "levn": "^0.4.1", 2204 | "lodash.merge": "^4.6.2", 2205 | "minimatch": "^3.1.2", 2206 | "natural-compare": "^1.4.0", 2207 | "optionator": "^0.9.3", 2208 | "strip-ansi": "^6.0.1", 2209 | "text-table": "^0.2.0" 2210 | }, 2211 | "dependencies": { 2212 | "brace-expansion": { 2213 | "version": "1.1.11", 2214 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2215 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2216 | "dev": true, 2217 | "requires": { 2218 | "balanced-match": "^1.0.0", 2219 | "concat-map": "0.0.1" 2220 | } 2221 | }, 2222 | "minimatch": { 2223 | "version": "3.1.2", 2224 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2225 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2226 | "dev": true, 2227 | "requires": { 2228 | "brace-expansion": "^1.1.7" 2229 | } 2230 | } 2231 | } 2232 | }, 2233 | "eslint-scope": { 2234 | "version": "7.2.2", 2235 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", 2236 | "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", 2237 | "dev": true, 2238 | "requires": { 2239 | "esrecurse": "^4.3.0", 2240 | "estraverse": "^5.2.0" 2241 | } 2242 | }, 2243 | "eslint-visitor-keys": { 2244 | "version": "3.4.3", 2245 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", 2246 | "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", 2247 | "dev": true 2248 | }, 2249 | "espree": { 2250 | "version": "9.6.1", 2251 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", 2252 | "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", 2253 | "dev": true, 2254 | "requires": { 2255 | "acorn": "^8.9.0", 2256 | "acorn-jsx": "^5.3.2", 2257 | "eslint-visitor-keys": "^3.4.1" 2258 | } 2259 | }, 2260 | "esquery": { 2261 | "version": "1.5.0", 2262 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", 2263 | "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", 2264 | "dev": true, 2265 | "requires": { 2266 | "estraverse": "^5.1.0" 2267 | } 2268 | }, 2269 | "esrecurse": { 2270 | "version": "4.3.0", 2271 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 2272 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 2273 | "dev": true, 2274 | "requires": { 2275 | "estraverse": "^5.2.0" 2276 | } 2277 | }, 2278 | "estraverse": { 2279 | "version": "5.3.0", 2280 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 2281 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 2282 | "dev": true 2283 | }, 2284 | "esutils": { 2285 | "version": "2.0.3", 2286 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 2287 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 2288 | "dev": true 2289 | }, 2290 | "fast-deep-equal": { 2291 | "version": "3.1.3", 2292 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 2293 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 2294 | "dev": true 2295 | }, 2296 | "fast-glob": { 2297 | "version": "3.3.2", 2298 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 2299 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 2300 | "dev": true, 2301 | "requires": { 2302 | "@nodelib/fs.stat": "^2.0.2", 2303 | "@nodelib/fs.walk": "^1.2.3", 2304 | "glob-parent": "^5.1.2", 2305 | "merge2": "^1.3.0", 2306 | "micromatch": "^4.0.4" 2307 | }, 2308 | "dependencies": { 2309 | "glob-parent": { 2310 | "version": "5.1.2", 2311 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 2312 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 2313 | "dev": true, 2314 | "requires": { 2315 | "is-glob": "^4.0.1" 2316 | } 2317 | } 2318 | } 2319 | }, 2320 | "fast-json-stable-stringify": { 2321 | "version": "2.1.0", 2322 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 2323 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 2324 | "dev": true 2325 | }, 2326 | "fast-levenshtein": { 2327 | "version": "2.0.6", 2328 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 2329 | "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 2330 | "dev": true 2331 | }, 2332 | "fastq": { 2333 | "version": "1.17.1", 2334 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 2335 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 2336 | "dev": true, 2337 | "requires": { 2338 | "reusify": "^1.0.4" 2339 | } 2340 | }, 2341 | "file-entry-cache": { 2342 | "version": "6.0.1", 2343 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 2344 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 2345 | "dev": true, 2346 | "requires": { 2347 | "flat-cache": "^3.0.4" 2348 | } 2349 | }, 2350 | "fill-range": { 2351 | "version": "7.1.1", 2352 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 2353 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 2354 | "dev": true, 2355 | "requires": { 2356 | "to-regex-range": "^5.0.1" 2357 | } 2358 | }, 2359 | "find-up": { 2360 | "version": "5.0.0", 2361 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 2362 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 2363 | "dev": true, 2364 | "requires": { 2365 | "locate-path": "^6.0.0", 2366 | "path-exists": "^4.0.0" 2367 | } 2368 | }, 2369 | "flat-cache": { 2370 | "version": "3.2.0", 2371 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", 2372 | "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", 2373 | "dev": true, 2374 | "requires": { 2375 | "flatted": "^3.2.9", 2376 | "keyv": "^4.5.3", 2377 | "rimraf": "^3.0.2" 2378 | } 2379 | }, 2380 | "flatted": { 2381 | "version": "3.3.1", 2382 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", 2383 | "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", 2384 | "dev": true 2385 | }, 2386 | "fs.realpath": { 2387 | "version": "1.0.0", 2388 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 2389 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 2390 | "dev": true 2391 | }, 2392 | "glob": { 2393 | "version": "7.2.3", 2394 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 2395 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 2396 | "dev": true, 2397 | "requires": { 2398 | "fs.realpath": "^1.0.0", 2399 | "inflight": "^1.0.4", 2400 | "inherits": "2", 2401 | "minimatch": "^3.1.1", 2402 | "once": "^1.3.0", 2403 | "path-is-absolute": "^1.0.0" 2404 | }, 2405 | "dependencies": { 2406 | "brace-expansion": { 2407 | "version": "1.1.11", 2408 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 2409 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 2410 | "dev": true, 2411 | "requires": { 2412 | "balanced-match": "^1.0.0", 2413 | "concat-map": "0.0.1" 2414 | } 2415 | }, 2416 | "minimatch": { 2417 | "version": "3.1.2", 2418 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 2419 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 2420 | "dev": true, 2421 | "requires": { 2422 | "brace-expansion": "^1.1.7" 2423 | } 2424 | } 2425 | } 2426 | }, 2427 | "glob-parent": { 2428 | "version": "6.0.2", 2429 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 2430 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 2431 | "dev": true, 2432 | "requires": { 2433 | "is-glob": "^4.0.3" 2434 | } 2435 | }, 2436 | "globals": { 2437 | "version": "13.24.0", 2438 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", 2439 | "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", 2440 | "dev": true, 2441 | "requires": { 2442 | "type-fest": "^0.20.2" 2443 | } 2444 | }, 2445 | "globby": { 2446 | "version": "11.1.0", 2447 | "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 2448 | "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 2449 | "dev": true, 2450 | "requires": { 2451 | "array-union": "^2.1.0", 2452 | "dir-glob": "^3.0.1", 2453 | "fast-glob": "^3.2.9", 2454 | "ignore": "^5.2.0", 2455 | "merge2": "^1.4.1", 2456 | "slash": "^3.0.0" 2457 | } 2458 | }, 2459 | "graphemer": { 2460 | "version": "1.4.0", 2461 | "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", 2462 | "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", 2463 | "dev": true 2464 | }, 2465 | "has-flag": { 2466 | "version": "4.0.0", 2467 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 2468 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 2469 | "dev": true 2470 | }, 2471 | "ignore": { 2472 | "version": "5.3.1", 2473 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", 2474 | "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", 2475 | "dev": true 2476 | }, 2477 | "import-fresh": { 2478 | "version": "3.3.0", 2479 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 2480 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 2481 | "dev": true, 2482 | "requires": { 2483 | "parent-module": "^1.0.0", 2484 | "resolve-from": "^4.0.0" 2485 | } 2486 | }, 2487 | "imurmurhash": { 2488 | "version": "0.1.4", 2489 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2490 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 2491 | "dev": true 2492 | }, 2493 | "inflight": { 2494 | "version": "1.0.6", 2495 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 2496 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 2497 | "dev": true, 2498 | "requires": { 2499 | "once": "^1.3.0", 2500 | "wrappy": "1" 2501 | } 2502 | }, 2503 | "inherits": { 2504 | "version": "2.0.4", 2505 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2506 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 2507 | "dev": true 2508 | }, 2509 | "is-extglob": { 2510 | "version": "2.1.1", 2511 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2512 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 2513 | "dev": true 2514 | }, 2515 | "is-glob": { 2516 | "version": "4.0.3", 2517 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2518 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2519 | "dev": true, 2520 | "requires": { 2521 | "is-extglob": "^2.1.1" 2522 | } 2523 | }, 2524 | "is-number": { 2525 | "version": "7.0.0", 2526 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2527 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2528 | "dev": true 2529 | }, 2530 | "is-path-inside": { 2531 | "version": "3.0.3", 2532 | "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 2533 | "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 2534 | "dev": true 2535 | }, 2536 | "isexe": { 2537 | "version": "2.0.0", 2538 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 2539 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 2540 | "dev": true 2541 | }, 2542 | "js-yaml": { 2543 | "version": "4.1.0", 2544 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 2545 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 2546 | "dev": true, 2547 | "requires": { 2548 | "argparse": "^2.0.1" 2549 | } 2550 | }, 2551 | "json-buffer": { 2552 | "version": "3.0.1", 2553 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 2554 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", 2555 | "dev": true 2556 | }, 2557 | "json-schema-traverse": { 2558 | "version": "0.4.1", 2559 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 2560 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 2561 | "dev": true 2562 | }, 2563 | "json-stable-stringify-without-jsonify": { 2564 | "version": "1.0.1", 2565 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 2566 | "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 2567 | "dev": true 2568 | }, 2569 | "keyv": { 2570 | "version": "4.5.4", 2571 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", 2572 | "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", 2573 | "dev": true, 2574 | "requires": { 2575 | "json-buffer": "3.0.1" 2576 | } 2577 | }, 2578 | "levn": { 2579 | "version": "0.4.1", 2580 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 2581 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 2582 | "dev": true, 2583 | "requires": { 2584 | "prelude-ls": "^1.2.1", 2585 | "type-check": "~0.4.0" 2586 | } 2587 | }, 2588 | "locate-path": { 2589 | "version": "6.0.0", 2590 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 2591 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 2592 | "dev": true, 2593 | "requires": { 2594 | "p-locate": "^5.0.0" 2595 | } 2596 | }, 2597 | "lodash.merge": { 2598 | "version": "4.6.2", 2599 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 2600 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 2601 | "dev": true 2602 | }, 2603 | "lru-cache": { 2604 | "version": "6.0.0", 2605 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 2606 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 2607 | "dev": true, 2608 | "requires": { 2609 | "yallist": "^4.0.0" 2610 | } 2611 | }, 2612 | "merge2": { 2613 | "version": "1.4.1", 2614 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2615 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 2616 | "dev": true 2617 | }, 2618 | "micromatch": { 2619 | "version": "4.0.5", 2620 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 2621 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 2622 | "dev": true, 2623 | "requires": { 2624 | "braces": "^3.0.2", 2625 | "picomatch": "^2.3.1" 2626 | } 2627 | }, 2628 | "minimatch": { 2629 | "version": "9.0.3", 2630 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", 2631 | "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", 2632 | "dev": true, 2633 | "requires": { 2634 | "brace-expansion": "^2.0.1" 2635 | } 2636 | }, 2637 | "ms": { 2638 | "version": "2.1.2", 2639 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2640 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 2641 | "dev": true 2642 | }, 2643 | "natural-compare": { 2644 | "version": "1.4.0", 2645 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 2646 | "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 2647 | "dev": true 2648 | }, 2649 | "once": { 2650 | "version": "1.4.0", 2651 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 2652 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 2653 | "dev": true, 2654 | "requires": { 2655 | "wrappy": "1" 2656 | } 2657 | }, 2658 | "optionator": { 2659 | "version": "0.9.3", 2660 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", 2661 | "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", 2662 | "dev": true, 2663 | "requires": { 2664 | "@aashutoshrathi/word-wrap": "^1.2.3", 2665 | "deep-is": "^0.1.3", 2666 | "fast-levenshtein": "^2.0.6", 2667 | "levn": "^0.4.1", 2668 | "prelude-ls": "^1.2.1", 2669 | "type-check": "^0.4.0" 2670 | } 2671 | }, 2672 | "p-limit": { 2673 | "version": "3.1.0", 2674 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2675 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2676 | "dev": true, 2677 | "requires": { 2678 | "yocto-queue": "^0.1.0" 2679 | } 2680 | }, 2681 | "p-locate": { 2682 | "version": "5.0.0", 2683 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2684 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2685 | "dev": true, 2686 | "requires": { 2687 | "p-limit": "^3.0.2" 2688 | } 2689 | }, 2690 | "parent-module": { 2691 | "version": "1.0.1", 2692 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 2693 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 2694 | "dev": true, 2695 | "requires": { 2696 | "callsites": "^3.0.0" 2697 | } 2698 | }, 2699 | "path-exists": { 2700 | "version": "4.0.0", 2701 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2702 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2703 | "dev": true 2704 | }, 2705 | "path-is-absolute": { 2706 | "version": "1.0.1", 2707 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 2708 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 2709 | "dev": true 2710 | }, 2711 | "path-key": { 2712 | "version": "3.1.1", 2713 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 2714 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 2715 | "dev": true 2716 | }, 2717 | "path-type": { 2718 | "version": "4.0.0", 2719 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 2720 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 2721 | "dev": true 2722 | }, 2723 | "picomatch": { 2724 | "version": "2.3.1", 2725 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 2726 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 2727 | "dev": true 2728 | }, 2729 | "prelude-ls": { 2730 | "version": "1.2.1", 2731 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 2732 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 2733 | "dev": true 2734 | }, 2735 | "punycode": { 2736 | "version": "2.3.1", 2737 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", 2738 | "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", 2739 | "dev": true 2740 | }, 2741 | "queue-microtask": { 2742 | "version": "1.2.3", 2743 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 2744 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 2745 | "dev": true 2746 | }, 2747 | "resolve-from": { 2748 | "version": "4.0.0", 2749 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 2750 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 2751 | "dev": true 2752 | }, 2753 | "reusify": { 2754 | "version": "1.0.4", 2755 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 2756 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 2757 | "dev": true 2758 | }, 2759 | "rimraf": { 2760 | "version": "3.0.2", 2761 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 2762 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 2763 | "dev": true, 2764 | "requires": { 2765 | "glob": "^7.1.3" 2766 | } 2767 | }, 2768 | "run-parallel": { 2769 | "version": "1.2.0", 2770 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2771 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2772 | "dev": true, 2773 | "requires": { 2774 | "queue-microtask": "^1.2.2" 2775 | } 2776 | }, 2777 | "semver": { 2778 | "version": "7.6.0", 2779 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", 2780 | "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", 2781 | "dev": true, 2782 | "requires": { 2783 | "lru-cache": "^6.0.0" 2784 | } 2785 | }, 2786 | "shebang-command": { 2787 | "version": "2.0.0", 2788 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2789 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2790 | "dev": true, 2791 | "requires": { 2792 | "shebang-regex": "^3.0.0" 2793 | } 2794 | }, 2795 | "shebang-regex": { 2796 | "version": "3.0.0", 2797 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2798 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2799 | "dev": true 2800 | }, 2801 | "slash": { 2802 | "version": "3.0.0", 2803 | "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 2804 | "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 2805 | "dev": true 2806 | }, 2807 | "strip-ansi": { 2808 | "version": "6.0.1", 2809 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2810 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2811 | "dev": true, 2812 | "requires": { 2813 | "ansi-regex": "^5.0.1" 2814 | } 2815 | }, 2816 | "strip-json-comments": { 2817 | "version": "3.1.1", 2818 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 2819 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 2820 | "dev": true 2821 | }, 2822 | "supports-color": { 2823 | "version": "7.2.0", 2824 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 2825 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 2826 | "dev": true, 2827 | "requires": { 2828 | "has-flag": "^4.0.0" 2829 | } 2830 | }, 2831 | "text-table": { 2832 | "version": "0.2.0", 2833 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 2834 | "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 2835 | "dev": true 2836 | }, 2837 | "to-regex-range": { 2838 | "version": "5.0.1", 2839 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2840 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2841 | "dev": true, 2842 | "requires": { 2843 | "is-number": "^7.0.0" 2844 | } 2845 | }, 2846 | "ts-api-utils": { 2847 | "version": "1.3.0", 2848 | "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", 2849 | "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", 2850 | "dev": true, 2851 | "requires": {} 2852 | }, 2853 | "tunnel": { 2854 | "version": "0.0.6", 2855 | "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", 2856 | "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" 2857 | }, 2858 | "type-check": { 2859 | "version": "0.4.0", 2860 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 2861 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 2862 | "dev": true, 2863 | "requires": { 2864 | "prelude-ls": "^1.2.1" 2865 | } 2866 | }, 2867 | "type-fest": { 2868 | "version": "0.20.2", 2869 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 2870 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 2871 | "dev": true 2872 | }, 2873 | "typescript": { 2874 | "version": "5.4.3", 2875 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz", 2876 | "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==", 2877 | "dev": true 2878 | }, 2879 | "undici-types": { 2880 | "version": "5.26.5", 2881 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 2882 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 2883 | "dev": true 2884 | }, 2885 | "uri-js": { 2886 | "version": "4.4.1", 2887 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 2888 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 2889 | "dev": true, 2890 | "requires": { 2891 | "punycode": "^2.1.0" 2892 | } 2893 | }, 2894 | "uuid": { 2895 | "version": "8.3.2", 2896 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 2897 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" 2898 | }, 2899 | "which": { 2900 | "version": "2.0.2", 2901 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2902 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2903 | "dev": true, 2904 | "requires": { 2905 | "isexe": "^2.0.0" 2906 | } 2907 | }, 2908 | "wrappy": { 2909 | "version": "1.0.2", 2910 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2911 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 2912 | "dev": true 2913 | }, 2914 | "yallist": { 2915 | "version": "4.0.0", 2916 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2917 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 2918 | "dev": true 2919 | }, 2920 | "yocto-queue": { 2921 | "version": "0.1.0", 2922 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2923 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 2924 | "dev": true 2925 | } 2926 | } 2927 | } 2928 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "code-sign-action", 3 | "version": "1.0.0", 4 | "description": "Sign files with a code signing certificate.", 5 | "main": "index.js", 6 | "scripts": { 7 | "build": "tsc && ncc build lib/index.js -m", 8 | "lint": "eslint . --ext .ts" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/dlemstra/code-sign-action.git" 13 | }, 14 | "keywords": [], 15 | "author": "", 16 | "license": "ISC", 17 | "bugs": { 18 | "url": "https://github.com/dlemstra/code-sign-action/issues" 19 | }, 20 | "homepage": "https://github.com/dlemstra/code-sign-action#readme", 21 | "dependencies": { 22 | "@actions/core": "1.10.1" 23 | }, 24 | "devDependencies": { 25 | "@types/node": "20.11.30", 26 | "@typescript-eslint/eslint-plugin": "7.3.1", 27 | "@typescript-eslint/parser": "7.3.1", 28 | "@vercel/ncc": "0.38.1", 29 | "eslint": "8.57.0", 30 | "typescript": "5.4.3" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2017", 4 | "module": "commonjs", 5 | "outDir": "lib", 6 | "declaration": true, 7 | "removeComments": true, 8 | "strict": true, 9 | "esModuleInterop": true, 10 | "stripInternal": true 11 | } 12 | } 13 | --------------------------------------------------------------------------------