From 30b7993d24048c93598b280940f2dcc8e3f167ce Mon Sep 17 00:00:00 2001 From: zzzjy Date: Wed, 23 Sep 2026 01:42:52 +0800 Subject: [PATCH] feat: add deb packaging and Gitea Actions automated release workflow --- .gitea/workflows/release.yaml | 52 + .github/workflows/release.yaml | 52 + README.md | 17 +- build/icon.png | Bin 0 -> 4524 bytes build/icons/128x128.png | Bin 0 -> 6175 bytes build/icons/256x256.png | Bin 0 -> 11181 bytes build/icons/32x32.png | Bin 0 -> 1521 bytes build/icons/512x512.png | Bin 0 -> 4524 bytes build/icons/64x64.png | Bin 0 -> 3368 bytes package-lock.json | 3046 +++++++++++++++++++++++++++++++- package.json | 43 +- scripts/generate-icon.py | 42 + scripts/gitea-release.mjs | 108 ++ 13 files changed, 3349 insertions(+), 11 deletions(-) create mode 100644 .gitea/workflows/release.yaml create mode 100644 .github/workflows/release.yaml create mode 100644 build/icon.png create mode 100644 build/icons/128x128.png create mode 100644 build/icons/256x256.png create mode 100644 build/icons/32x32.png create mode 100644 build/icons/512x512.png create mode 100644 build/icons/64x64.png create mode 100644 scripts/generate-icon.py create mode 100644 scripts/gitea-release.mjs diff --git a/.gitea/workflows/release.yaml b/.gitea/workflows/release.yaml new file mode 100644 index 0000000..12967f5 --- /dev/null +++ b/.gitea/workflows/release.yaml @@ -0,0 +1,52 @@ +name: Build and Release + +on: + push: + tags: + - 'v*' + workflow_dispatch: + inputs: + tag_name: + description: '发布版本标签 (如 v1.0.0)' + required: true + default: 'v1.0.0' + +jobs: + release: + name: Build & Release DEB Package + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + + - name: Install Linux build dependencies + run: | + sudo apt-get update || true + sudo apt-get install -y build-essential python3 libx11-dev libxext-dev libxrender-dev + + - name: Install dependencies + run: | + npm ci || npm install + npm run rebuild + + - name: Generate App Icons + run: | + python3 scripts/generate-icon.py + + - name: Package Linux DEB + run: | + npm run package:deb + + - name: Publish Release to Gitea + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_SERVER_URL: ${{ github.server_url }} + GITHUB_REPOSITORY: ${{ github.repository }} + GITHUB_REF_NAME: ${{ github.event.inputs.tag_name || github.ref_name }} + run: | + node scripts/gitea-release.mjs diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..12967f5 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,52 @@ +name: Build and Release + +on: + push: + tags: + - 'v*' + workflow_dispatch: + inputs: + tag_name: + description: '发布版本标签 (如 v1.0.0)' + required: true + default: 'v1.0.0' + +jobs: + release: + name: Build & Release DEB Package + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 22 + + - name: Install Linux build dependencies + run: | + sudo apt-get update || true + sudo apt-get install -y build-essential python3 libx11-dev libxext-dev libxrender-dev + + - name: Install dependencies + run: | + npm ci || npm install + npm run rebuild + + - name: Generate App Icons + run: | + python3 scripts/generate-icon.py + + - name: Package Linux DEB + run: | + npm run package:deb + + - name: Publish Release to Gitea + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_SERVER_URL: ${{ github.server_url }} + GITHUB_REPOSITORY: ${{ github.repository }} + GITHUB_REF_NAME: ${{ github.event.inputs.tag_name || github.ref_name }} + run: | + node scripts/gitea-release.mjs diff --git a/README.md b/README.md index 753d1f1..037ad61 100644 --- a/README.md +++ b/README.md @@ -42,16 +42,27 @@ --- -## 🚀 启动与构建 +## 🚀 启动与打包构建 ```bash -# 启动开发终端 +# 1. 启动开发终端 npm start -# 若 Node ABI 变动,重新编译底层 node-pty +# 2. 本地一键打包生成 Linux .deb 安装包 (生成于 dist/ 目录) +npm run package:deb + +# 3. 安装生成的 deb 包 +sudo dpkg -i dist/hatty_1.0.0_amd64.deb + +# 4. 若 Node ABI 变动,重新编译底层 node-pty npm run rebuild ``` +### 🤖 Gitea Actions 自动化发版 +项目已配置 Gitea Actions 流水线(`.gitea/workflows/release.yaml`): +- 推送以 `v` 开头的标签(如 `git tag v1.0.0 && git push origin v1.0.0`)会自动触发编译打包,并把 `.deb` 安装包作为附件发布到 Gitea Releases。 +- 也可以在 Gitea 仓库页面中手动点击 **Actions -> Run workflow** 触发发布。 + --- ## 🛠️ 架构分层 diff --git a/build/icon.png b/build/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..518dc3596b4f3635652b9fe812fc4b99e720242a GIT binary patch literal 4524 zcmeHL`CC)h)_(WNfdmwjfCDI!04gfdqErnc=BN?0R>W4tiq=#dKT%RqiK67-bwFgY zT1Tea)@mJqsufyA&Qldp`vG;NRw0OrS40^EQwYhogMIFE`^)_czWnlL=d5Y3z1LcA z&aUvVP$$R!jsTpdP1Sr1F!U<}i9Llk`a2zfJa(F9;%t3p<0Ez6p!*w3Ytwf)=Uq;m z^vuz2Y5#lyQ@CBC)!bH0<|nQZ5?#m{Hrkj>M7`{*0b{;uHb65iIAYzgWN!1$K7134u}y4>_1VbEe@q9Z%0 z7o&BKk~U=zb)AWxiiJyn|Jm-!6uA@5)9gY1;+?(HG zLG#_QHHNW|U&}@JC47%fJxlh8H{A2?wM__QjMMx=YpO)&QkjvuOsI}uZ5ptdzc!yu zlu@tab?Z&36NHTsQJm!A5UeR0We!o~7WN14$eXX+hz zeS$f40ym+elxvd=9f%zYt$LF2;Fm;eBJDoxE8l*oNGYim&#MXW3?IgPXea#EJl2fP z!2Zk}uUrj^UWk>ytQ2;hmm;DI7oUBgZG~!-Wrrd+&)c(L6&vk_ybhu|@nWT*{?&rh zZU$t3u}(TaVc=%_$SkN@#KzzDX!2z03OLW&xvXYb;l#*pzH=`<8o z!*70xU&V+=Y+A(f!l;wd}V}HWQ9>Q~7g5mrfP-_K6#| z6c0}x?PJ|Ts%nb2+|WB_yk|3da{e&pV>|A=!5u4x-7Y`s$j2|}5*2Kn(>{C#R2^b% zKi`Lrrs#HYQrSq0^=*Z<<$8WsouTVmQpq?kFU#8+gN6R^a;!Dr+PC?l&z=@r3ln}>RFO{-8c*jm-EUpRFN$yQF}o%3mRDPr z>MHVkWcS6PQU#X%+=m2lUq2>OL0W!+^13X-#f#yw?)W;HI3jp}#7jz4KYQQrOR zUTUIilOm^oak>Y?@>_pq`8oqu9J`j+E12laQWT~>oK{Fvl>3YrO$t0%Rh)l04DMEu z5cN&_Etj5}A1L5Ikp|dK`vFgXdM>FxzD(36k zs%P3PDhXicU^6fcddN_^@`noxXJR}gsBe2X>u(}c0d6AgW!)w#pQ5Pky{{ucj6X-l zZ)#gkR0RB17U(_bKkfcaDFgp6@>jn9mY2$z%M2+0v#rpO)g|}nsJoC;Zjs=jk=4%f zO=)o4!-Ri@c?Tshjvxg^>Pwv~J7gv*+=sz+2|r^=Ixjg!a7e8?};KSg5oRQRhbaGDyC*&|^NpO5Jn&dGO+)+aRNxLLT*B`p=Fb_7Dd5e4v`b;?xZ24ofia0F2I5dk7JhR?9Fi9l3{I z%4M}5z_=Z`!{`%x!o_+)sU}=M3S$X3)}t3&HXW4<-}%4e4cAF5o_N7Egn}nr>E53x z;Tp!`S05bwWdMU%2Yh$KgUG`~d@%j$LQv;`k7*{N9B_+5odh2@>y&~k!|yv2%5A$1 z?P`WUrvayC_&XF74F85gJi`yBIXTbbX44LEK@9)&-R8Ii`eYaQRrHB7LA?X^)2)`v zF{0vfA}U-E?fovdEiy#Y-Mf3EDop}9bqfZ|q050blJ?FqM7Vd+6HQ|X=kU8X9gFba zkKCSeG-V^VHw6*l0=>W?eBVw{;tLi>mv&zRTX-!Rgzo__BU~_pgh32Xv#^!dHgMLo&V=hr!G&=442H;v5KWuJPOh!*%$9{g_*!GTz5JBZ z{&~I{$Jv9Somi?Udf{_c4P9ofc>Wg*cKchn=?wa6&58F|3|ekZ^q{cJocI}qrRK!! zi*~r~nxJKUkdf3Z4v`~c8wF=%P|gtI0{=tJ;$=-T2kLvE*C?|PMtze~MO7+zF%|MAh@(Og^iud+ zgmP*y-!&nZ@j(-*lg{>pF|<^1oL+cWL#_wmHqymZgdc7epJ?fe!EOn;<9x6$%1l^X zbv5wx+;31`^x6R*Qc$$Yl#u~u#Kbbf`4qK43(3#Tz<09vW26P?4miKqOw#0tzHAb? z*ZX1raudm}XZfR4D3+GbC`)(wEHRTjT0YlIq6PJy-2Tr^c7JUw`eT3x~4#@{JQ|UqCl<3>LnS&da8v53}2g~Ufxw- zlA!MN*4@gtG+lj}F8Hn?{`;E6WfS3_LSZue>4BC_L1h+&Ym@nPQ6|!|mf`x9Ds0^- zmICcfpOh-JP7J?{Zg|{ywrnY-!NFlDx?&QYnnoL4v)I0ol)0*tXlXtLUKGFdYKH__v6(^?07LDxg~Ss8~Xl5L2^Bb zF%VF#xw2-A6DkO8;C^xUY-DK#rHW2Kdg_Cllu(TU&fVX%=n+E)+zxyG4?y=vS=LKu ztP#<+9=zdhw~D@7#YWK{F~Vwe^R}>`?2NsE>LWkwUMLcV0h#w>LxWif>}K>pA%V8q zV*@2`1jdcUZ)0Eh;TSM`Osse(%YX7NurPz9lIr#O-|CXjiOrVBfFBRso(ZpK5i+Fg z`}{2ph>8}ieiHVbiX@fInvBZG{lx=3@b<-!n`%eA(Z$q<!o}c^HukWE7IeL6)h8n1G_c`7<8$kj8!kMZq5M}%tAF?xF@6dRKU{3M zEmHnMCEEA4QHf+E(Q)|FyVDdp$dM1#0KW5<=F|Tw`-d~U$Ed~yCy=D`1;75Z?v2%J zAvBbH+&g=VN;`E+A39YueWl1a%kQ))-APFBXq;7g(wcOI$S8#p5I!q7wll82Ien-z-lvr7 z&eIdtsH2Q+m~*4^I%?*=2e0hiyu=d)UoWp|Kk&BXMoFQG{kSG}m-POCV zSC2FoI`IF<>y}V`ef7YPZkB7Tuy_78p~pm2w*T>|ll2S6xOM-?rb)dK)X+TVWr)?C zRC4Ju{caWJRz^LkS!~LeBQ-Ud@X09&K}@bUHJ$a_>&fWpWskIg4*DKq8cT$Dd&78= vku(&;{o4a2{B{YewX^s5Z?8R2b;T-L-_tm8a6q~3y$q&J3De|F(r*1f#mh?8 literal 0 HcmV?d00001 diff --git a/build/icons/128x128.png b/build/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..264b1ef18605f0f666a353388d1dc6d0166a3584 GIT binary patch literal 6175 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 literal 0 HcmV?d00001 diff --git a/build/icons/256x256.png b/build/icons/256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..678e3b6e156b39c2dde955f7665f89e0c855ac76 GIT binary patch literal 11181 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 Xj9RPJe!yd{00000NkvXXu0mjf9+K?5 literal 0 HcmV?d00001 diff --git a/build/icons/512x512.png b/build/icons/512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..518dc3596b4f3635652b9fe812fc4b99e720242a GIT binary patch literal 4524 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 literal 0 HcmV?d00001 diff --git a/build/icons/64x64.png b/build/icons/64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..758f0d1e8e4119ffe512f7096312381b8adbac4e GIT binary patch literal 3368 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.12.0" } }, + "node_modules/@electron/asar": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.4.1.tgz", + "integrity": "sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/@electron/asar/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@electron/asar/node_modules/brace-expansion": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", + "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@electron/asar/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@electron/fuses": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@electron/fuses/-/fuses-1.8.0.tgz", + "integrity": "sha512-zx0EIq78WlY/lBb1uXlziZmDZI4ubcCXIMJ4uGjXzZW0nS19TjSPeXPAjzzTmKQlJUZm0SbmZhPKP7tuQ1SsEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.1", + "fs-extra": "^9.0.1", + "minimist": "^1.2.5" + }, + "bin": { + "electron-fuses": "dist/bin.js" + } + }, + "node_modules/@electron/fuses/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@electron/get": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@electron/get/-/get-5.1.0.tgz", @@ -53,6 +134,72 @@ "undici": "^7.24.4" } }, + "node_modules/@electron/notarize": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.5.0.tgz", + "integrity": "sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@electron/notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/osx-sign": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.3.3.tgz", + "integrity": "sha512-KZ8mhXvWv2rIEgMbWZ4y33bDHyUKMXnx4M0sTyPNK/vcB81ImdeY9Ggdqy0SWbMDgmbqyQ+phgejh6V3R2QuSg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "compare-version": "^0.1.2", + "debug": "^4.3.4", + "fs-extra": "^10.0.0", + "isbinaryfile": "^4.0.8", + "minimist": "^1.2.6", + "plist": "^3.0.5" + }, + "bin": { + "electron-osx-flat": "bin/electron-osx-flat.js", + "electron-osx-sign": "bin/electron-osx-sign.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@electron/osx-sign/node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, "node_modules/@electron/rebuild": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-4.2.0.tgz", @@ -74,6 +221,112 @@ "node": ">=22.12.0" } }, + "node_modules/@electron/universal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-2.0.3.tgz", + "integrity": "sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron/asar": "^3.3.1", + "@malept/cross-spawn-promise": "^2.0.0", + "debug": "^4.3.1", + "dir-compare": "^4.2.0", + "fs-extra": "^11.1.1", + "minimatch": "^9.0.3", + "plist": "^3.1.0" + }, + "engines": { + "node": ">=16.4" + } + }, + "node_modules/@electron/universal/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@electron/universal/node_modules/brace-expansion": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz", + "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@electron/universal/node_modules/fs-extra": { + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.1.tgz", + "integrity": "sha512-KYAb4c9BJQI6QqGKthV68OHe0badztdXJWKo0WtBA9IuCFPTKvE5ZdUBglP833aMjhaSPNO4A5j/EkzZtGlKjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/universal/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@electron/windows-sign": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@electron/windows-sign/-/windows-sign-1.2.2.tgz", + "integrity": "sha512-dfZeox66AvdPtb2lD8OsIIQh12Tp0GNCRUDfBHIKGpbmopZto2/A8nSpYYLoedPIHpqkeblZ/k8OV0Gy7PYuyQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "peer": true, + "dependencies": { + "cross-dirname": "^0.1.0", + "debug": "^4.3.4", + "fs-extra": "^11.1.1", + "minimist": "^1.2.8", + "postject": "^1.0.0-alpha.6" + }, + "bin": { + "electron-windows-sign": "bin/electron-windows-sign.js" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/@electron/windows-sign/node_modules/fs-extra": { + "version": "11.4.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.1.tgz", + "integrity": "sha512-KYAb4c9BJQI6QqGKthV68OHe0badztdXJWKo0WtBA9IuCFPTKvE5ZdUBglP833aMjhaSPNO4A5j/EkzZtGlKjA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/@isaacs/fs-minipass": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", @@ -110,6 +363,189 @@ "node": ">= 12.13.0" } }, + "node_modules/@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@malept/flatpak-bundler/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@noble/hashes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.4.0.tgz", + "integrity": "sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@peculiar/asn1-schema": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.9.5.tgz", + "integrity": "sha512-Ez3wLKVjaxdsLcgeWN4OE31QkM7oBOgKuuBJxldRYAkfYw2C+8zJPcSd/SThnbhszsEOlAmoaS5kIIkN29fGKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/utils": "^2.0.2", + "asn1js": "^3.0.10", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@peculiar/json-schema": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@peculiar/json-schema/-/json-schema-1.1.12.tgz", + "integrity": "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@peculiar/utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@peculiar/utils/-/utils-2.0.3.tgz", + "integrity": "sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/webcrypto": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@peculiar/webcrypto/-/webcrypto-1.7.1.tgz", + "integrity": "sha512-ODOov0sGMJMf3jPonOkgGqPknTsu+DdQ7kD++gz8aI+aFMOMHFbWAA2taqXXVTdP+OTOQR/znGvSpmkeI0WTYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/json-schema": "^1.1.12", + "@peculiar/utils": "^2.0.2", + "tslib": "^2.8.1", + "webcrypto-core": "^1.9.2" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "license": "MIT", + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/debug": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { "version": "24.13.6", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.6.tgz", @@ -120,6 +556,26 @@ "undici-types": "~7.18.0" } }, + "node_modules/@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.15.tgz", + "integrity": "sha512-/5NV/vDALVFDXgLmfsy9TRCBlKwO2LNBFzpzvb9iIj+jR+eSc6DLYYvVOdivT/jm7MtU6TebYuRmzEOI7w40UA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/@xterm/addon-fit": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@xterm/addon-fit/-/addon-fit-0.11.0.tgz", @@ -163,6 +619,488 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", + "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/app-builder-lib": { + "version": "26.15.3", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-26.15.3.tgz", + "integrity": "sha512-2VnyWkqsP5v5XbBhL3tD5Syx8iNPBYsoU7kY4S2fz7wg8Rj/nztWKCUzGKaFRTv0Xwf3/H058CR1Kvtd/3lRow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron/asar": "3.4.1", + "@electron/fuses": "^1.8.0", + "@electron/get": "^3.0.0", + "@electron/notarize": "2.5.0", + "@electron/osx-sign": "1.3.3", + "@electron/rebuild": "^4.0.4", + "@electron/universal": "2.0.3", + "@malept/flatpak-bundler": "^0.4.0", + "@noble/hashes": "^2.2.0", + "@peculiar/webcrypto": "^1.7.1", + "@types/fs-extra": "9.0.13", + "ajv": "^8.18.0", + "asn1js": "^3.0.10", + "async-exit-hook": "^2.0.1", + "builder-util": "26.15.3", + "builder-util-runtime": "9.7.0", + "chromium-pickle-js": "^0.2.0", + "ci-info": "4.3.1", + "debug": "^4.3.4", + "dotenv": "^16.4.5", + "dotenv-expand": "^11.0.6", + "ejs": "^3.1.8", + "electron-publish": "26.15.3", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "isbinaryfile": "^5.0.0", + "jiti": "^2.4.2", + "js-yaml": "^4.1.0", + "json5": "^2.2.3", + "lazy-val": "^1.0.5", + "minimatch": "^10.2.5", + "pkijs": "^3.4.0", + "plist": "3.1.0", + "proper-lockfile": "^4.1.2", + "resedit": "^1.7.0", + "semver": "~7.7.3", + "tar": "^7.5.7", + "temp-file": "^3.4.0", + "tiny-async-pool": "1.3.0", + "unzipper": "^0.12.3", + "which": "^5.0.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "dmg-builder": "26.15.3", + "electron-builder-squirrel-windows": "26.15.3" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/get": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-3.1.0.tgz", + "integrity": "sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=14" + }, + "optionalDependencies": { + "global-agent": "^3.0.0" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/get/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/get/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/app-builder-lib/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/app-builder-lib/node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/app-builder-lib/node_modules/isexe": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/app-builder-lib/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/app-builder-lib/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/app-builder-lib/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/app-builder-lib/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/asn1js": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.10.tgz", + "integrity": "sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.5", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/aws4": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "dev": true, + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/brace-expansion": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/builder-util": { + "version": "26.15.3", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-26.15.3.tgz", + "integrity": "sha512-q2hn7Mbo2nFNkVekPiHFx6Nfo3hURmES3tfBn+k5Pqxl2RkmP3QGqZUhH/q9Pch/4G05NRhPjDlVj1O8q4Txvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/debug": "^4.1.6", + "builder-util-runtime": "9.7.0", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.6", + "debug": "^4.3.4", + "fs-extra": "^10.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "js-yaml": "^4.1.0", + "sanitize-filename": "^1.6.3", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0", + "tiny-async-pool": "1.3.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/builder-util-runtime": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.7.0.tgz", + "integrity": "sha512-g/kR520giAFYkSXTzcmF3kqQq7wi8F6N6SzeDgZrqTBN+VHdmgWOyTdD1yD7AATDId/yXLvuP34CxW46/BwCdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/bytestreamjs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", + "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/chownr": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", @@ -173,6 +1111,133 @@ "node": ">=18" } }, + "node_modules/chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-dirname": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cross-dirname/-/cross-dirname-0.1.0.tgz", + "integrity": "sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -206,6 +1271,226 @@ } } }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/dir-compare": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-4.2.0.tgz", + "integrity": "sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.5", + "p-limit": "^3.1.0 " + } + }, + "node_modules/dir-compare/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/dir-compare/node_modules/brace-expansion": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", + "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/dir-compare/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dmg-builder": { + "version": "26.15.3", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-26.15.3.tgz", + "integrity": "sha512-O3zJUFUYHJKgzPqioHxfxzBzlSC1eXCSr79gMSBKBP5AgjjpmrydMsMLotEg9fAJF36vdUncb+4ndRNxoPdlSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "app-builder-lib": "26.15.3", + "builder-util": "26.15.3", + "fs-extra": "^10.1.0", + "js-yaml": "^4.1.0" + } + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dotenv": "^16.4.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/electron": { "version": "44.4.3", "resolved": "https://registry.npmjs.org/electron/-/electron-44.4.3.tgz", @@ -225,6 +1510,140 @@ "node": ">= 22.12.0" } }, + "node_modules/electron-builder": { + "version": "26.15.3", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-26.15.3.tgz", + "integrity": "sha512-a1KM5heqS3gQCZzizXEI8RjJy3QVogULPdeSknt76uLDpBIW/HDGsMg/XgP0riP6PI9COsRvFITKKGDqA8fJxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "app-builder-lib": "26.15.3", + "builder-util": "26.15.3", + "builder-util-runtime": "9.7.0", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "dmg-builder": "26.15.3", + "fs-extra": "^10.1.0", + "lazy-val": "^1.0.5", + "simple-update-notifier": "2.0.0", + "yargs": "^17.6.2" + }, + "bin": { + "electron-builder": "cli.js", + "install-app-deps": "install-app-deps.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/electron-builder-squirrel-windows": { + "version": "26.15.3", + "resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-26.15.3.tgz", + "integrity": "sha512-Jc19XPV9y9+2bAdZPkXuVNGNIEFBq9poHC61l8Kv6FdK7DRG3+Ic0rerC0DXOaeHNz8yW0fg/JnF8GQROOF5MA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "app-builder-lib": "26.15.3", + "builder-util": "26.15.3", + "electron-winstaller": "5.4.0" + } + }, + "node_modules/electron-publish": { + "version": "26.15.3", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-26.15.3.tgz", + "integrity": "sha512-g/2bn8YTavY4cuS5F+jOS7zmZbXXBV8KZ8yHKfJjFPoKtzBqrpCdNPxBd3tqdBwP7BVd0lGzf7Bk2s0KesWZ4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/fs-extra": "^9.0.11", + "aws4": "^1.13.2", + "builder-util": "26.15.3", + "builder-util-runtime": "9.7.0", + "chalk": "^4.1.2", + "form-data": "^4.0.5", + "fs-extra": "^10.1.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" + } + }, + "node_modules/electron-winstaller": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/electron-winstaller/-/electron-winstaller-5.4.0.tgz", + "integrity": "sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@electron/asar": "^3.2.1", + "debug": "^4.1.1", + "fs-extra": "^7.0.1", + "lodash": "^4.17.21", + "temp": "^0.9.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "@electron/windows-sign": "^1.1.2" + } + }, + "node_modules/electron-winstaller/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/electron-winstaller/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-winstaller/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/env-paths": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", @@ -238,6 +1657,94 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/exponential-backoff": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", @@ -245,6 +1752,30 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.8.tgz", + "integrity": "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", @@ -263,6 +1794,289 @@ } } }, + "node_modules/filelist": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz", + "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.7.tgz", + "integrity": "sha512-uZbew1NqdmPDTMJ8ah1y+b+9QEJrfkXFk3RcTQw3X0jW/xRUvFKsg1CfQdSYGdTbXZWExtU3J3ccxtnfw1Fi0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/form-data": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.4", + "mime-types": "^2.1.35" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.21.tgz", + "integrity": "sha512-9zeA+KLZNNzglF2TPKRQEDyx6Yby7daAkuy8MiPzpXPsYDWi/DRM8jmwUDxokQjYqBpv5DgPiwD4h4ZZSy1Ujw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -270,6 +2084,183 @@ "dev": true, "license": "ISC" }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isbinaryfile": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.7.tgz", + "integrity": "sha512-gnWD14Jh3FzS3CPhF0AxNOJ8CxqeblPTADzI38r0wt8ZyQl5edpy75myt08EG2oKvpyiqSqsx+Wkz9vtkbTqYQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -277,12 +2268,261 @@ "dev": true, "license": "ISC" }, + "node_modules/jake": { + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jiti": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", + "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-yaml": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", + "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/lazy-val": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lru-cache/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, "node_modules/lucide": { "version": "1.47.0", "resolved": "https://registry.npmjs.org/lucide/-/lucide-1.47.0.tgz", "integrity": "sha512-gJoVJM5fvpBDGZTvhpJS9IEurz85HbD+wgOlCkXCIw35tHrqTxSdIYUN9sXvs7Aw3NCl67A+nlotNyoU4u7zOQ==", "license": "ISC" }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/minipass": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", @@ -306,6 +2546,20 @@ "node": ">= 18" } }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -413,6 +2667,13 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, "node_modules/node-pty": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/node-pty/-/node-pty-1.1.0.tgz", @@ -439,6 +2700,76 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -449,6 +2780,28 @@ "node": ">=8" } }, + "node_modules/pe-library": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pe-library/-/pe-library-0.4.1.tgz", + "integrity": "sha512-eRWB5LBz7PpDu4PUlwT0PhnQfTQJlDDdPa35urV4Osrm0t0AqQFGn+UIkU3klZvwJ8KPO3VbBFsXquA6p6kqZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jet2jet" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, "node_modules/picomatch": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", @@ -462,6 +2815,85 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pkijs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/pkijs/-/pkijs-3.4.1.tgz", + "integrity": "sha512-Oo/NZcSWccq8KyoG7gLE9fnltgHns+pNCjCAp/WmjsUySi+sX7y4z4Xqu4fVb42CDHzRPl33fjzT15V1wvcyhA==", + "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "website" + ], + "dependencies": { + "@noble/hashes": "1.8.0", + "asn1js": "^3.0.6", + "bytestreamjs": "^2.0.1", + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/pkijs/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/postject": { + "version": "1.0.0-alpha.6", + "resolved": "https://registry.npmjs.org/postject/-/postject-1.0.0-alpha.6.tgz", + "integrity": "sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "commander": "^9.4.0" + }, + "bin": { + "postject": "dist/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/postject/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, "node_modules/proc-log": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-6.1.0.tgz", @@ -472,6 +2904,13 @@ "node": "^20.17.0 || >=22.9.0" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -482,6 +2921,76 @@ "node": ">=0.4.0" } }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/pump": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pvtsutils": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/pvutils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.2.0.tgz", + "integrity": "sha512-BbubeCEyTuQjVMakvJQ/Sxbc93F2pwmbsxONT/ZRrwU7Ua38d8unYTwXpTVLAKJ4BDuH9IGztCjQcd/N/39Dvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/read-binary-file-arch": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/read-binary-file-arch/-/read-binary-file-arch-1.0.6.tgz", @@ -495,6 +3004,151 @@ "read-binary-file-arch": "cli.js" } }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resedit": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/resedit/-/resedit-1.7.2.tgz", + "integrity": "sha512-vHjcY2MlAITJhC0eRD/Vv8Vlgmu9Sd3LX9zZvtGzU5ZImdTN3+d6e/4mnTyV8vEbyf1sgNIrWxhWlrys52OkEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pe-library": "^0.4.1" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/jet2jet" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/sanitize-filename": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.4.tgz", + "integrity": "sha512-9ZyI08PsvdQl2r/bBIGubpVdR3RR9sY6RDiWFPreA21C/EFlQhmgo20UZlNjZMMZNubusLhAQozkA0Od5J21Eg==", + "dev": true, + "license": "WTFPL OR ISC", + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/sax": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz", + "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, "node_modules/semver": { "version": "7.8.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", @@ -508,6 +3162,31 @@ "node": ">=10" } }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -531,6 +3210,103 @@ "node": ">=8" } }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true, + "license": "BSD-3-Clause", + "optional": true + }, + "node_modules/stat-mode": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz", + "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/sumchecker": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", @@ -544,6 +3320,19 @@ "node": ">= 8.0" } }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/tar": { "version": "7.5.22", "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.22.tgz", @@ -561,6 +3350,52 @@ "node": ">=18" } }, + "node_modules/temp": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", + "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "mkdirp": "^0.5.1", + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp-file": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", + "integrity": "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-exit-hook": "^2.0.1", + "fs-extra": "^10.0.0" + } + }, + "node_modules/tiny-async-pool": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tiny-async-pool/-/tiny-async-pool-1.3.0.tgz", + "integrity": "sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^5.5.0" + } + }, + "node_modules/tiny-async-pool/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/tinyglobby": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", @@ -578,6 +3413,57 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/tmp": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.7.tgz", + "integrity": "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/tmp-promise": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-3.0.3.tgz", + "integrity": "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tmp": "^0.2.0" + } + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dev": true, + "license": "WTFPL", + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/undici": { "version": "7.29.1", "resolved": "https://registry.npmjs.org/undici/-/undici-7.29.1.tgz", @@ -596,6 +3482,73 @@ "dev": true, "license": "MIT" }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unzipper": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.12.5.tgz", + "integrity": "sha512-tXYOi9R57Uj/2Z25SOs5RRSzq886MBQj2gY8dPL+xl/kv6s6SvByoKfAtvfVeEuhntWDgjd2o9p2lb4TVPAz0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "bluebird": "~3.7.2", + "duplexer2": "~0.1.4", + "fs-extra": "11.3.1", + "graceful-fs": "^4.2.2", + "node-int64": "^0.4.0" + } + }, + "node_modules/unzipper/node_modules/fs-extra": { + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz", + "integrity": "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", + "dev": true, + "license": "(WTFPL OR MIT)" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/webcrypto-core": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/webcrypto-core/-/webcrypto-core-1.9.2.tgz", + "integrity": "sha512-gsXecm82UQNlTBURJGuqOWy1Ww08S3kZUcr3aOJS02Pk0xLtkfeUAVC0u0xhgdonFme80edSJUIJyuvL/7250Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@peculiar/asn1-schema": "^2.7.0", + "@peculiar/json-schema": "^1.1.12", + "@peculiar/utils": "^2.0.2", + "asn1js": "^3.0.10", + "tslib": "^2.8.1" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -612,6 +3565,51 @@ "node": ">= 8" } }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", @@ -621,6 +3619,48 @@ "engines": { "node": ">=18" } + }, + "node_modules/yargs": { + "version": "17.7.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", + "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/package.json b/package.json index d637002..0a59205 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,43 @@ "main": "src/main/index.cjs", "scripts": { "start": "electron .", - "rebuild": "electron-rebuild -f -w node-pty" + "rebuild": "electron-rebuild -f -w node-pty", + "package:deb": "electron-builder --linux deb", + "package:all": "electron-builder --linux deb AppImage", + "dist": "electron-builder" }, - "keywords": [], - "author": "", - "license": "ISC", + "build": { + "appId": "cloud.zzzjy.hatty", + "productName": "hatty", + "directories": { + "output": "dist", + "buildResources": "build" + }, + "files": [ + "src/**/*", + "node_modules/@xterm/**/*", + "node_modules/node-pty/**/*", + "package.json" + ], + "linux": { + "target": [ + "deb" + ], + "category": "TerminalEmulator", + "maintainer": "zzzjy ", + "icon": "build/icons" + }, + "deb": { + "packageName": "hatty", + "synopsis": "A modern, high-aesthetic Linux terminal emulator", + "description": "hatty is a fast, beautiful and modern terminal emulator for Linux built with Electron, WebGL and node-pty.", + "category": "Utility", + "priority": "optional" + } + }, + "homepage": "https://git.zzzjy.cloud/zzzjy/hatty", + "author": "zzzjy ", + "license": "MIT", "dependencies": { "@xterm/addon-fit": "^0.11.0", "@xterm/addon-search": "^0.16.0", @@ -21,6 +53,7 @@ }, "devDependencies": { "@electron/rebuild": "^4.2.0", - "electron": "^44.4.3" + "electron": "^44.4.3", + "electron-builder": "^26.15.3" } } diff --git a/scripts/generate-icon.py b/scripts/generate-icon.py new file mode 100644 index 0000000..479fa49 --- /dev/null +++ b/scripts/generate-icon.py @@ -0,0 +1,42 @@ +import os +from PIL import Image, ImageDraw + +os.makedirs('build/icons', exist_ok=True) + +size = (512, 512) +img = Image.new('RGBA', size, (0, 0, 0, 0)) +draw = ImageDraw.Draw(img) + +# 1. 绘制带有圆角的深色背景外框 (Tokyo Night 磨砂质感) +# 圆角矩形 +draw.rounded_rectangle([(16, 16), (496, 496)], radius=100, fill=(26, 27, 38, 255), outline=(122, 162, 247, 180), width=6) + +# 2. 内部顶部标题栏装饰小圆点 (macOS / Linux 风格微缩) +draw.ellipse([(60, 60), (76, 76)], fill=(247, 118, 142, 255)) # 红 +draw.ellipse([(92, 60), (108, 76)], fill=(224, 175, 104, 255)) # 黄 +draw.ellipse([(124, 60), (140, 76)], fill=(158, 206, 106, 255)) # 绿 + +# 3. 绘制终端提示符 > (青色发光) +points = [ + (110, 180), + (240, 290), + (110, 400), + (150, 400), + (280, 290), + (150, 180), +] +draw.polygon(points, fill=(125, 207, 255, 255)) + +# 4. 绘制光标下划线 _ (品红霓虹) +draw.rectangle([(300, 360), (410, 395)], fill=(187, 154, 247, 255)) + +# 保存 512x512 图标 +img.save('build/icon.png', 'PNG') +img.save('build/icons/512x512.png', 'PNG') + +# 同时也生成常见的 256x256, 128x128, 64x64, 32x32 备用 +for s in [256, 128, 64, 32]: + resized = img.resize((s, s), Image.Resampling.LANCZOS) + resized.save(f'build/icons/{s}x{s}.png', 'PNG') + +print('App icons generated successfully!') diff --git a/scripts/gitea-release.mjs b/scripts/gitea-release.mjs new file mode 100644 index 0000000..50769ff --- /dev/null +++ b/scripts/gitea-release.mjs @@ -0,0 +1,108 @@ +import fs from 'fs'; +import path from 'path'; + +async function main() { + const serverUrl = process.env.GITHUB_SERVER_URL || process.env.GITEA_SERVER_URL || 'https://git.zzzjy.cloud'; + const token = process.env.GITHUB_TOKEN || process.env.GITEA_TOKEN; + const repo = process.env.GITHUB_REPOSITORY || 'zzzjy/hatty'; + const tag = process.env.GITHUB_REF_NAME || 'v1.0.0'; + + if (!token) { + console.error('Error: GITHUB_TOKEN or GITEA_TOKEN is required.'); + process.exit(1); + } + + const [owner, repoName] = repo.split('/'); + const apiBase = `${serverUrl.replace(/\/+$/, '')}/api/v1/repos/${owner}/${repoName}`; + + console.log(`Connecting to Gitea at ${serverUrl} for repository ${repo}...`); + + // 1. 检查或创建 Release + let releaseId = null; + const tagCheckRes = await fetch(`${apiBase}/releases/tags/${tag}`, { + headers: { + Authorization: `token ${token}`, + Accept: 'application/json', + }, + }); + + if (tagCheckRes.ok) { + const existing = await tagCheckRes.json(); + releaseId = existing.id; + console.log(`Found existing release for tag ${tag} (id: ${releaseId})`); + } else { + console.log(`Creating new release for tag ${tag}...`); + const createRes = await fetch(`${apiBase}/releases`, { + method: 'POST', + headers: { + Authorization: `token ${token}`, + 'Content-Type': 'application/json', + Accept: 'application/json', + }, + body: JSON.stringify({ + tag_name: tag, + name: `hatty ${tag}`, + body: `### ⚡ hatty ${tag} 现代化 Linux 终端新版本发布\n\n- **架构**:Electron + xterm.js (WebGL 硬件加速) + Linux PTY\n- **特性**:无边框磨砂毛玻璃、5 套现代暗黑主题、多标签页、灵活多窗格分屏\n- **安装说明**:下载下方附件 \`.deb\` 文件,在终端运行 \`sudo dpkg -i hatty_*.deb\` 即可完成安装。`, + draft: false, + prerelease: false, + }), + }); + + if (!createRes.ok) { + const errText = await createRes.text(); + console.error(`Failed to create release: ${createRes.status} ${errText}`); + process.exit(1); + } + + const created = await createRes.json(); + releaseId = created.id; + console.log(`Release created successfully with id ${releaseId}`); + } + + // 2. 查找 dist/ 下的 .deb 安装包 + const distDir = path.resolve('dist'); + if (!fs.existsSync(distDir)) { + console.error('dist directory does not exist.'); + process.exit(1); + } + + const files = fs.readdirSync(distDir).filter((f) => f.endsWith('.deb') || f.endsWith('.AppImage')); + if (files.length === 0) { + console.error('No .deb or .AppImage files found in dist directory.'); + process.exit(1); + } + + // 3. 上传安装包到 Release 附件 + for (const fileName of files) { + const filePath = path.join(distDir, fileName); + const fileStat = fs.statSync(filePath); + console.log(`Uploading ${fileName} (${(fileStat.size / (1024 * 1024)).toFixed(2)} MB)...`); + + const fileBuffer = fs.readFileSync(filePath); + const formData = new FormData(); + const blob = new Blob([fileBuffer], { type: 'application/octet-stream' }); + formData.append('attachment', blob, fileName); + + const uploadRes = await fetch(`${apiBase}/releases/${releaseId}/assets?name=${encodeURIComponent(fileName)}`, { + method: 'POST', + headers: { + Authorization: `token ${token}`, + }, + body: formData, + }); + + if (uploadRes.ok) { + console.log(`✔ Successfully uploaded ${fileName}`); + } else { + const err = await uploadRes.text(); + console.warn(`Warning: Upload ${fileName} returned status ${uploadRes.status}: ${err}`); + } + } + + console.log('All release operations completed successfully!'); +} + +main().catch((err) => { + console.error('Unexpected error:', err); + process.exit(1); +});