From a892db775eca41bf50f332bd21f05ca967388dd8 Mon Sep 17 00:00:00 2001 From: Georges-Antoine Assi Date: Tue, 2 Jun 2026 12:48:29 -0400 Subject: [PATCH] feat(packaging): build .deb and .rpm packages Add MakerDeb and MakerRpm to the Electron Forge config so Linux releases also produce .deb and .rpm packages alongside the AppImage and zip. Both declare mimeType x-scheme-handler/posthog-code, so installing registers the posthog-code:// deep-link handler system-wide via the generated .desktop file and the package manager's update-desktop-database trigger. The package name/bin yield /usr/bin/posthog-code, consistent with the AUR package. The publish-linux CI job (x64 + arm64) now installs fakeroot (maker-deb) and rpm (maker-rpm), so both arches are built and uploaded automatically. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/code-release.yml | 6 +- apps/code/forge.config.ts | 31 ++++ apps/code/package.json | 2 + apps/code/scripts/build-linux-docker.sh | 38 +++- pnpm-lock.yaml | 223 ++++++++++++++++++++++++ 5 files changed, 296 insertions(+), 4 deletions(-) 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