diff --git a/.github/workflows/code-release.yml b/.github/workflows/code-release.yml index ae3317bf15..c3f8d5a3ca 100644 --- a/.github/workflows/code-release.yml +++ b/.github/workflows/code-release.yml @@ -273,11 +273,13 @@ jobs: token: ${{ steps.app-token.outputs.token }} persist-credentials: false - - name: Install AppImage build tooling + - name: Install Linux packaging tooling + # squashfs-tools/zsync/libfuse2t64: AppImage. fakeroot: maker-deb. + # rpm: maker-rpm (provides rpmbuild). run: | sudo apt-get update sudo apt-get install -y --no-install-recommends \ - squashfs-tools zsync libfuse2t64 + squashfs-tools zsync libfuse2t64 fakeroot rpm - name: Setup pnpm uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4 diff --git a/apps/code/forge.config.ts b/apps/code/forge.config.ts index e64e4f57a9..8955729cab 100644 --- a/apps/code/forge.config.ts +++ b/apps/code/forge.config.ts @@ -2,7 +2,9 @@ import type { ChildProcess } from "node:child_process"; import { execSync } from "node:child_process"; import { cpSync, existsSync, mkdirSync, rmSync } from "node:fs"; import path from "node:path"; +import { MakerDeb } from "@electron-forge/maker-deb"; import { MakerDMG } from "@electron-forge/maker-dmg"; +import { MakerRpm } from "@electron-forge/maker-rpm"; import { MakerSquirrel } from "@electron-forge/maker-squirrel"; import { MakerZIP } from "@electron-forge/maker-zip"; import { VitePlugin } from "@electron-forge/plugin-vite"; @@ -206,6 +208,35 @@ const config: ForgeConfig = { bin: "PostHog Code", }, }), + new MakerDeb({ + options: { + name: "posthog-code", + productName: "PostHog Code", + genericName: "Code Editor", + description: "PostHog Code desktop app", + bin: "PostHog Code", + icon: "./build/app-icon.png", + categories: ["Development"], + section: "devel", + maintainer: "PostHog ", + homepage: "https://github.com/PostHog/code", + mimeType: ["x-scheme-handler/posthog-code"], + }, + }), + new MakerRpm({ + options: { + name: "posthog-code", + productName: "PostHog Code", + genericName: "Code Editor", + description: "PostHog Code desktop app", + bin: "PostHog Code", + license: "MIT", + icon: "./build/app-icon.png", + categories: ["Development"], + homepage: "https://github.com/PostHog/code", + mimeType: ["x-scheme-handler/posthog-code"], + }, + }), new MakerZIP({}, ["darwin", "linux"]), ], hooks: { diff --git a/apps/code/package.json b/apps/code/package.json index dee944027f..12b76f386f 100644 --- a/apps/code/package.json +++ b/apps/code/package.json @@ -45,7 +45,9 @@ "devDependencies": { "@biomejs/biome": "2.2.4", "@electron-forge/cli": "^7.11.1", + "@electron-forge/maker-deb": "^7.11.1", "@electron-forge/maker-dmg": "^7.11.1", + "@electron-forge/maker-rpm": "^7.11.1", "@electron-forge/maker-squirrel": "^7.11.1", "@electron-forge/maker-zip": "^7.11.1", "@electron-forge/plugin-vite": "^7.11.1", diff --git a/apps/code/scripts/build-linux-docker.sh b/apps/code/scripts/build-linux-docker.sh index 7497d53c1f..19e51fa9b5 100755 --- a/apps/code/scripts/build-linux-docker.sh +++ b/apps/code/scripts/build-linux-docker.sh @@ -8,6 +8,36 @@ case "$ARCH" in *) echo "Unsupported ARCH=$ARCH (expected x64 or arm64)" >&2; exit 1 ;; esac +# Optional maker targets. Without any, all configured makers run (default). +# Accept friendly aliases or full maker package names, via repeatable +# --target/--targets flags (comma-separated) or the TARGETS env var. +RAW_TARGETS="${TARGETS:-}" +while [ $# -gt 0 ]; do + case "$1" in + --target|--targets) RAW_TARGETS="${RAW_TARGETS:+$RAW_TARGETS,}$2"; shift 2 ;; + --target=*|--targets=*) RAW_TARGETS="${RAW_TARGETS:+$RAW_TARGETS,}${1#*=}"; shift ;; + *) echo "Unknown argument: $1" >&2; exit 1 ;; + esac +done + +MAKE_TARGETS="" +if [ -n "$RAW_TARGETS" ]; then + IFS=',' read -ra _targets <<< "$RAW_TARGETS" + for t in "${_targets[@]}"; do + t="$(echo "$t" | tr '[:upper:]' '[:lower:]' | xargs)" # lowercase + trim + [ -z "$t" ] && continue + case "$t" in + deb) pkg="@electron-forge/maker-deb" ;; + rpm) pkg="@electron-forge/maker-rpm" ;; + zip) pkg="@electron-forge/maker-zip" ;; + appimage) pkg="@reforged/maker-appimage" ;; + */*) pkg="$t" ;; # already a maker package name + *) echo "Unknown target '$t' (expected: deb, rpm, zip, appimage, or a maker package name)" >&2; exit 1 ;; + esac + MAKE_TARGETS="${MAKE_TARGETS:+$MAKE_TARGETS,}$pkg" + done +fi + REPO_ROOT="$(cd "$(dirname "$0")/../../.." && pwd)" OUT_DIR="$REPO_ROOT/apps/code/out" mkdir -p "$OUT_DIR" @@ -40,6 +70,7 @@ COPYFILE_DISABLE=1 tar -cf - \ -e NODE_ENV=production \ -e ARCH="$ARCH" \ -e BUILD_COMMIT="$HOST_COMMIT" \ + -e MAKE_TARGETS="$MAKE_TARGETS" \ -v "$OUT_DIR":/out \ node:22-bookworm bash -lc ' set -euo pipefail @@ -47,7 +78,8 @@ COPYFILE_DISABLE=1 tar -cf - \ mkdir -p /work && cd /work && tar -xf - corepack enable apt-get update && apt-get install -y --no-install-recommends \ - libsecret-1-dev fuse libfuse2 ca-certificates git squashfs-tools zsync zip + libsecret-1-dev fuse libfuse2 ca-certificates git squashfs-tools zsync zip \ + fakeroot rpm # Tarball arrived owned by the host uid; tell git not to refuse on uid mismatch. git config --global --add safe.directory /work # Postinstall scripts call `git rev-parse` — give them a repo to find. @@ -59,7 +91,9 @@ COPYFILE_DISABLE=1 tar -cf - \ pnpm --filter @posthog/git build pnpm --filter @posthog/enricher build pnpm --filter @posthog/agent build - pnpm --filter code make --platform=linux --arch="$ARCH" + MAKE_TARGETS_FLAG="" + [ -n "${MAKE_TARGETS:-}" ] && MAKE_TARGETS_FLAG="--targets=$MAKE_TARGETS" + pnpm --filter code make --platform=linux --arch="$ARCH" $MAKE_TARGETS_FLAG mkdir -p /out cp -r apps/code/out/make /out/ ' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5e7c6a229c..624d5eb0ba 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -398,9 +398,15 @@ importers: '@electron-forge/cli': specifier: ^7.11.1 version: 7.11.1(encoding@0.1.13)(esbuild@0.25.12) + '@electron-forge/maker-deb': + specifier: ^7.11.1 + version: 7.11.2 '@electron-forge/maker-dmg': specifier: ^7.11.1 version: 7.11.1 + '@electron-forge/maker-rpm': + specifier: ^7.11.1 + version: 7.11.2 '@electron-forge/maker-squirrel': specifier: ^7.11.1 version: 7.11.1 @@ -1796,10 +1802,22 @@ packages: resolution: {integrity: sha512-yhZrCGoN6bDeiB5DHFaueZ1h84AReElEj+f0hl2Ph4UbZnO0cnLpbx+Bs+XfMLAiA+beC8muB5UDK5ysfuT9BQ==} engines: {node: '>= 16.4.0'} + '@electron-forge/maker-base@7.11.2': + resolution: {integrity: sha512-9934zYu9WVdgCYQXvtS+eL1oyLagsY8JlWhZmoK8yWTYftSAydH7jb3seVpfy6n85SYmY/yjcAy2lvOTy5dUwA==} + engines: {node: '>= 16.4.0'} + + '@electron-forge/maker-deb@7.11.2': + resolution: {integrity: sha512-MYSdCTsqzKNmsmaq7CIFh2kJdBWUZ4njxnVGrIRClzueVITk5Kots3+eQo+e5QQLvXTVn2XTNDc2nYjvtBh+Mw==} + engines: {node: '>= 16.4.0'} + '@electron-forge/maker-dmg@7.11.1': resolution: {integrity: sha512-7zs5/Ewz1PcOl4N1102stFgBiFGWxU18+UPFUSd/fgf9MErBl4HBWuVNMIHyeJ/56rdfkcmTxTqE+9TBEYrZcg==} engines: {node: '>= 16.4.0'} + '@electron-forge/maker-rpm@7.11.2': + resolution: {integrity: sha512-BEj/DcW6bSpmOyKUa3UsOgT7Hm3ZuP0Wa6OuQEunjxeCWn7yoDTDtjuYA0xRvzk+T4NCyDO3RBGjy6nYNSPU2Q==} + engines: {node: '>= 16.4.0'} + '@electron-forge/maker-squirrel@7.11.1': resolution: {integrity: sha512-oSg7fgad6l+X0DjtRkSpMzB0AjzyDO4mb2gzM4kTodkP1ADeiMi08bxy0ZeCESqLm5+fG72cAPmEr3BAPvI1yw==} engines: {node: '>= 16.4.0'} @@ -1828,6 +1846,10 @@ packages: resolution: {integrity: sha512-vvBWdAEh53UJlDGUevpaJk1+sqDMQibfrbHR+0IPA4MPyQex7/Uhv3vYH9oGHujBVAChQahjAuJt0fG6IJBLZg==} engines: {node: '>= 16.4.0'} + '@electron-forge/shared-types@7.11.2': + resolution: {integrity: sha512-Tcles7y74xy3jN5dEC+Pt1duJYk4c7W2xu98tjWW8RewmfKD2uHkie6I1I3yifPFZXZ/QfTlaFOOoKIQ9ENZjg==} + engines: {node: '>= 16.4.0'} + '@electron-forge/template-base@7.11.1': resolution: {integrity: sha512-XpTaEf+EfQw+0BlSAtSpZKYIKYvKu4raNzSGHZZoSYHp+HDC7R+MlpFQmSJiGdYQzQ14C+uxO42tVjgM0DMbpw==} engines: {node: '>= 16.4.0'} @@ -1852,6 +1874,10 @@ packages: resolution: {integrity: sha512-tiB6cglVQFcSw9N8GRwVwZUeB9u0DOx2Mj7aFXBUsFLUYQapvVGv51tUSy/UAW5lvmubGscYIILuVko+II3+NA==} engines: {node: '>= 14.17.5'} + '@electron-forge/tracer@7.11.2': + resolution: {integrity: sha512-U8j5Hyj2Zt7I5PciJvPJfmEv69Gb/Da9v+k655z3Jj1cuY0UnToEJ61IhXrzlTYqo+jUKC+fgAjDJ6vltJTS0A==} + engines: {node: '>= 14.17.5'} + '@electron/asar@3.4.1': resolution: {integrity: sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA==} engines: {node: '>=10.12.0'} @@ -3174,6 +3200,10 @@ packages: peerDependencies: '@inquirer/prompts': '>= 3 < 8' + '@malept/cross-spawn-promise@1.1.1': + resolution: {integrity: sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==} + engines: {node: '>= 10'} + '@malept/cross-spawn-promise@2.0.0': resolution: {integrity: sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==} engines: {node: '>= 12.13.0'} @@ -5366,6 +5396,9 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/fs-extra@9.0.13': + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} + '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} @@ -6318,6 +6351,9 @@ packages: client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -6894,11 +6930,27 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + electron-installer-common@0.10.4: + resolution: {integrity: sha512-8gMNPXfAqUE5CfXg8RL0vXpLE9HAaPkgLXVoHE3BMUzogMWenf4LmwQ27BdCUrEhkjrKl+igs2IHJibclR3z3Q==} + engines: {node: '>= 10.0.0'} + + electron-installer-debian@3.2.0: + resolution: {integrity: sha512-58ZrlJ1HQY80VucsEIG9tQ//HrTlG6sfofA3nRGr6TmkX661uJyu4cMPPh6kXW+aHdq/7+q25KyQhDrXvRL7jw==} + engines: {node: '>= 10.0.0'} + os: [darwin, linux] + hasBin: true + electron-installer-dmg@5.0.1: resolution: {integrity: sha512-qOa1aAQdX57C+vzhDk3549dd/PRlNL4F8y736MTD1a43qptD+PvHY97Bo9gSf+OZ8iUWE7BrYSpk/FgLUe40EA==} engines: {node: '>= 16'} hasBin: true + electron-installer-redhat@3.4.0: + resolution: {integrity: sha512-gEISr3U32Sgtj+fjxUAlSDo3wyGGq6OBx7rF5UdpIgbnpUvMN4W5uYb0ThpnAZ42VEJh/3aODQXHbFS4f5J3Iw==} + engines: {node: '>= 10.0.0'} + os: [darwin, linux] + hasBin: true + electron-log@5.4.3: resolution: {integrity: sha512-sOUsM3LjZdugatazSQ/XTyNcw8dfvH1SYhXWiJyfYodAAKOZdHs0txPiLDXFzOZbhXgAgshQkshH2ccq0feyLQ==} engines: {node: '>= 14'} @@ -7699,6 +7751,10 @@ packages: resolution: {integrity: sha512-R1fam6D4CyKQGNlvJne4dkNF+PvUUl7TAJInvTGa9fti9qAv95quQz29GXapA4d8Ec266mJJxFVh82M4GIIGDQ==} engines: {node: '>= 12'} + gar@1.0.4: + resolution: {integrity: sha512-w4n9cPWyP7aHxKxYHFQMegj7WIAsL/YX/C4Bs5Rr8s1H9M1rNtRWRsw+ovYMkXDQ5S4ZbYHsHAPmevPjPgw44w==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + generate-function@2.3.1: resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} @@ -7721,6 +7777,10 @@ packages: resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} engines: {node: '>=18'} + get-folder-size@2.0.1: + resolution: {integrity: sha512-+CEb+GDCM7tkOS2wdMKTn9vU7DgnKUTuDlehkNJKNSovdCOVxs14OfKCk4cvSaR3za4gj+OBdl9opPN9xrJ0zA==} + hasBin: true + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -11313,6 +11373,9 @@ packages: throat@5.0.0: resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + tiny-each-async@2.0.3: + resolution: {integrity: sha512-5ROII7nElnAirvFn8g7H7MtpfV1daMcyfTGQwsn/x2VtyV+VPiO5CjReCJtWLvoKTDEDmZocf3cNPraiMnBXLA==} + tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} @@ -11382,10 +11445,17 @@ packages: resolution: {integrity: sha512-nqpKFC53CgopKPjT6Wfb6tpIcZXHcI6G37hesvikhx0EmUGPkZrujRyAjgnmp1SHNgpQfKVanZ+KfpANFt2Hxw==} hasBin: true + tmp-promise@3.0.3: + resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} + tmp@0.2.5: + resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} + engines: {node: '>=14.14'} + tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -12150,6 +12220,10 @@ packages: wonka@6.3.5: resolution: {integrity: sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==} + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -12269,10 +12343,18 @@ packages: engines: {node: '>= 14.6'} hasBin: true + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -13542,6 +13624,25 @@ snapshots: - bluebird - supports-color + '@electron-forge/maker-base@7.11.2': + dependencies: + '@electron-forge/shared-types': 7.11.2 + fs-extra: 10.1.0 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + + '@electron-forge/maker-deb@7.11.2': + dependencies: + '@electron-forge/maker-base': 7.11.2 + '@electron-forge/shared-types': 7.11.2 + optionalDependencies: + electron-installer-debian: 3.2.0 + transitivePeerDependencies: + - bluebird + - supports-color + '@electron-forge/maker-dmg@7.11.1': dependencies: '@electron-forge/maker-base': 7.11.1 @@ -13553,6 +13654,16 @@ snapshots: - bluebird - supports-color + '@electron-forge/maker-rpm@7.11.2': + dependencies: + '@electron-forge/maker-base': 7.11.2 + '@electron-forge/shared-types': 7.11.2 + optionalDependencies: + electron-installer-redhat: 3.4.0 + transitivePeerDependencies: + - bluebird + - supports-color + '@electron-forge/maker-squirrel@7.11.1': dependencies: '@electron-forge/maker-base': 7.11.1 @@ -13629,6 +13740,16 @@ snapshots: - bluebird - supports-color + '@electron-forge/shared-types@7.11.2': + dependencies: + '@electron-forge/tracer': 7.11.2 + '@electron/packager': 18.4.4 + '@electron/rebuild': 3.7.2 + listr2: 7.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + '@electron-forge/template-base@7.11.1': dependencies: '@electron-forge/core-utils': 7.11.1 @@ -13688,6 +13809,10 @@ snapshots: dependencies: chrome-trace-event: 1.0.4 + '@electron-forge/tracer@7.11.2': + dependencies: + chrome-trace-event: 1.0.4 + '@electron/asar@3.4.1': dependencies: commander: 5.1.0 @@ -15236,6 +15361,11 @@ snapshots: '@inquirer/prompts': 6.0.1 '@inquirer/type': 1.5.5 + '@malept/cross-spawn-promise@1.1.1': + dependencies: + cross-spawn: 7.0.6 + optional: true + '@malept/cross-spawn-promise@2.0.0': dependencies: cross-spawn: 7.0.6 @@ -17551,6 +17681,11 @@ snapshots: '@types/estree@1.0.8': {} + '@types/fs-extra@9.0.13': + dependencies: + '@types/node': 24.12.0 + optional: true + '@types/graceful-fs@4.1.9': dependencies: '@types/node': 24.12.0 @@ -18698,6 +18833,13 @@ snapshots: client-only@0.0.1: {} + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + optional: true + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -19156,6 +19298,37 @@ snapshots: ee-first@1.1.1: {} + electron-installer-common@0.10.4: + dependencies: + '@electron/asar': 3.4.1 + '@malept/cross-spawn-promise': 1.1.1 + debug: 4.4.3 + fs-extra: 9.1.0 + glob: 7.2.3 + lodash: 4.17.23 + parse-author: 2.0.0 + semver: 7.7.3 + tmp-promise: 3.0.3 + optionalDependencies: + '@types/fs-extra': 9.0.13 + transitivePeerDependencies: + - supports-color + optional: true + + electron-installer-debian@3.2.0: + dependencies: + '@malept/cross-spawn-promise': 1.1.1 + debug: 4.4.3 + electron-installer-common: 0.10.4 + fs-extra: 9.1.0 + get-folder-size: 2.0.1 + lodash: 4.17.23 + word-wrap: 1.2.5 + yargs: 16.2.0 + transitivePeerDependencies: + - supports-color + optional: true + electron-installer-dmg@5.0.1: dependencies: '@types/appdmg': 0.5.5 @@ -19167,6 +19340,19 @@ snapshots: - supports-color optional: true + electron-installer-redhat@3.4.0: + dependencies: + '@malept/cross-spawn-promise': 1.1.1 + debug: 4.4.3 + electron-installer-common: 0.10.4 + fs-extra: 9.1.0 + lodash: 4.17.23 + word-wrap: 1.2.5 + yargs: 16.2.0 + transitivePeerDependencies: + - supports-color + optional: true + electron-log@5.4.3: {} electron-store@11.0.2: @@ -20148,6 +20334,9 @@ snapshots: transitivePeerDependencies: - supports-color + gar@1.0.4: + optional: true + generate-function@2.3.1: dependencies: is-property: 1.0.2 @@ -20166,6 +20355,12 @@ snapshots: get-east-asian-width@1.4.0: {} + get-folder-size@2.0.1: + dependencies: + gar: 1.0.4 + tiny-each-async: 2.0.3 + optional: true + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -24540,6 +24735,9 @@ snapshots: throat@5.0.0: {} + tiny-each-async@2.0.3: + optional: true + tiny-invariant@1.3.3: {} tiny-lru@11.4.7: {} @@ -24587,10 +24785,18 @@ snapshots: dependencies: tldts-core: 7.0.22 + tmp-promise@3.0.3: + dependencies: + tmp: 0.2.5 + optional: true + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 + tmp@0.2.5: + optional: true + tmpl@1.0.5: {} tn1150@0.1.0: @@ -25375,6 +25581,9 @@ snapshots: wonka@6.3.5: {} + word-wrap@1.2.5: + optional: true + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -25461,8 +25670,22 @@ snapshots: yaml@2.8.2: {} + yargs-parser@20.2.9: + optional: true + yargs-parser@21.1.1: {} + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + optional: true + yargs@17.7.2: dependencies: cliui: 8.0.1