diff --git a/apps/desktop/README.md b/apps/desktop/README.md new file mode 100644 index 0000000..87f7eb2 --- /dev/null +++ b/apps/desktop/README.md @@ -0,0 +1,42 @@ +# CommiTea (desktop) + +An AI project manager for Gitea, as an Electron desktop app. The token stays in +the main process (OS keychain via `safeStorage`); the renderer never sees it. + +## Develop + +```bash +yarn dev # electron-vite dev, HMR renderer + main (logs → desktop.log) +yarn typecheck +yarn e2e # builds, then Playwright against the built main (fixtures/demo) +``` + +For a live pass against a real Gitea, put a token in `.env.local` +(`GITEA_TOKEN=…`) and run `GITEA_LIVE=1 yarn e2e live-onboarding`. + +## Package (shareable macOS .dmg) + +```bash +yarn pack # unpacked .app for the host arch (fast sanity check) → dist/ +yarn dist # arm64 + x64 .dmg → dist/CommiTea-[-arm64].dmg +``` + +Config is `electron-builder.yml`. Builds are **unsigned** (no Apple certs, by +decision) — electron-builder ad-hoc signs so the app can run, but it is not +notarized. Bump `version` in `package.json` for a new release; keep +`electronVersion` in `electron-builder.yml` in sync with the `electron` +devDependency. + +### Installing a shared build (teammates) + +macOS Gatekeeper blocks unsigned apps on first launch. To open: + +1. Open the `.dmg` and drag **CommiTea** to **Applications**. +2. In Applications, **right-click CommiTea → Open**, then confirm **Open** in the + dialog. (Double-clicking the first time just shows "cannot be opened".) +3. It opens to the connection screen — enter your Gitea base URL, `owner/repo`, + and a personal access token (repo scope). Each teammate uses their own token, + so activity is attributed correctly. A model URL is optional; chat is disabled + until one is configured, everything else works without it. + +Grab the `-arm64` dmg on Apple Silicon, the plain one on Intel. diff --git a/apps/desktop/build/icon.png b/apps/desktop/build/icon.png new file mode 100644 index 0000000..3fb0699 Binary files /dev/null and b/apps/desktop/build/icon.png differ diff --git a/apps/desktop/e2e/live-onboarding.spec.ts b/apps/desktop/e2e/live-onboarding.spec.ts index 410c1c2..98d9973 100644 --- a/apps/desktop/e2e/live-onboarding.spec.ts +++ b/apps/desktop/e2e/live-onboarding.spec.ts @@ -38,6 +38,11 @@ test.describe('live onboarding', () => { const win = await app.firstWindow() await win.waitForLoadState('domcontentloaded') + // Any uncaught render error in a real-data view builder must fail the test — + // this is the "it actually works on real data" guarantee. + const pageErrors: string[] = [] + win.on('pageerror', (e) => pageErrors.push(e.message)) + // the connection gate, not the app await expect(win.getByText(/Connect your Gitea/)).toBeVisible({ timeout: 15000 }) await win.getByPlaceholder('your-org').fill('christian') @@ -45,11 +50,35 @@ test.describe('live onboarding', () => { await win.getByPlaceholder(/gitea PAT/).fill(token!) await win.getByRole('button', { name: 'Connect' }).click() - // it validated + saved + reconciled into the real board — real issue titles prove it const rail = win.getByRole('navigation', { name: 'Primary' }) + const realTitle = /Model router|SQLite cache bootstrap|Purity\/rebuild/ + + // Board (real reconciled columns) — real issue titles prove the sync landed. await rail.getByRole('button', { name: 'The pot' }).click() - await expect(win.getByText(/Model router|SQLite cache bootstrap|Purity\/rebuild/).first()).toBeVisible({ timeout: 30000 }) + await expect(win.getByText(realTitle).first()).toBeVisible({ timeout: 30000 }) + + // Gantt tab — scheduler-derived bars over the real open backlog. + await win.getByRole('tab', { name: 'Gantt' }).click() + await expect(win.getByText(realTitle).first()).toBeVisible() + + // Dependencies tab — real dep graph. Just needs to render without throwing. + await win.getByRole('tab', { name: 'Dependencies' }).click() + await win.waitForTimeout(300) + + // Issue drill-in — the machine-derived sidecar (lifecycle/forecast/deps) on a real issue. + await win.getByRole('tab', { name: 'Board' }).click() + await win.getByText(realTitle).first().click() + await expect(win.getByText('Machine-derived')).toBeVisible() + await win.getByRole('button', { name: 'Back' }).click() + + // Standup + Inbox — scheduler plan / nag / inbox feed over real data. + await rail.getByRole('button', { name: 'Standup' }).click() + await expect(win.getByRole('heading', { name: 'Morning standup' })).toBeVisible() + await rail.getByRole('button', { name: 'Inbox' }).click() + await expect(win.getByRole('heading', { name: 'Inbox' })).toBeVisible() + await win.screenshot({ path: join(here, '.artifacts', 'screens', 'live-onboarding.png'), fullPage: true, animations: 'disabled' }) + expect(pageErrors, `uncaught render errors: ${pageErrors.join(' · ')}`).toEqual([]) await app.close() }) diff --git a/apps/desktop/electron-builder.yml b/apps/desktop/electron-builder.yml new file mode 100644 index 0000000..596aa67 --- /dev/null +++ b/apps/desktop/electron-builder.yml @@ -0,0 +1,51 @@ +appId: io.stephenmann.commitea +productName: CommiTea +copyright: © CommiTea + +# Pinned because electron is hoisted by the yarn workspace and declared with a +# caret range, which electron-builder can't resolve on its own. Keep in sync with +# the electron devDependency. +electronVersion: 34.5.8 + +directories: + buildResources: build + output: dist + +# The renderer, preload, and main are already bundled into out/ by electron-vite +# (@commitea/core, react, react-dom are all inlined). So the packaged app needs +# nothing from node_modules except the Electron runtime that electron-builder +# supplies — ship only the build output. +files: + - out/** + - '!**/*.map' +npmRebuild: false +electronLanguages: + - en + +mac: + target: + - target: dmg + arch: + - arm64 + - x64 + category: public.app-category.developer-tools + icon: build/icon.png + # Unsigned, per the distribution decision (macOS, no certs). Teammates + # right-click → Open the first time to get past Gatekeeper. + identity: null + # Keep hardened-runtime off — it only matters for signed/notarized builds + # and can block an unsigned app from launching. + hardenedRuntime: false + gatekeeperAssess: false + +dmg: + title: CommiTea ${version} + # A plain drag-to-Applications layout. + contents: + - x: 130 + y: 220 + type: file + - x: 410 + y: 220 + type: link + path: /Applications diff --git a/apps/desktop/package.json b/apps/desktop/package.json index f2e04af..7ea06d6 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -1,5 +1,8 @@ { "name": "@commitea/desktop", + "version": "0.1.0", + "description": "CommiTea — an AI project manager for Gitea", + "author": "CommiTea", "private": true, "type": "module", "main": "./out/main/index.js", @@ -10,7 +13,9 @@ "typecheck": "tsc --noEmit", "e2e": "electron-vite build && playwright test", "e2e:only": "playwright test", - "e2e:report": "playwright show-report e2e/.artifacts/report" + "e2e:report": "playwright show-report e2e/.artifacts/report", + "pack": "electron-vite build && electron-builder --dir", + "dist": "electron-vite build && electron-builder --mac" }, "dependencies": { "@commitea/core": "workspace:*", @@ -25,9 +30,11 @@ "@vitejs/plugin-react": "^4.3.4", "autoprefixer": "^10.4.20", "electron": "^34.0.0", + "electron-builder": "^25", "electron-vite": "^3.1.0", "postcss": "^8.5.1", "tailwindcss": "^3.4.17", + "tsx": "^4", "typescript": "^5.7.3", "vite": "^6.1.0" } diff --git a/apps/desktop/scripts/dogfood-report.ts b/apps/desktop/scripts/dogfood-report.ts new file mode 100644 index 0000000..466b0b2 --- /dev/null +++ b/apps/desktop/scripts/dogfood-report.ts @@ -0,0 +1,142 @@ +/** + * Dogfood (#31): run CommiTea's own deterministic engine against the live + * christian/commitea backlog and print the project report each screen derives — + * board, critical path, schedule, Monte Carlo forecast, per-milestone runway. + * + * This is the core brain (schedule + forecast + capacity), the exact code the + * desktop app runs. Read-only. Run: yarn tsx scripts/dogfood-report.ts + */ +import { readFileSync } from 'node:fs' +import { dirname, join } from 'node:path' +import { fileURLToPath } from 'node:url' + +import { + createGiteaClient, + forecast, + inferLifecycle, + parseCapacityConfig, + capacityPerWorkday, + scheduleWithCapacity, + type GiteaIssue, + type DependencyEdge, + type Worker, +} from '@commitea/core' + +const here = dirname(fileURLToPath(import.meta.url)) + +function token(): string { + let dir = here + for (let i = 0; i < 6; i++) { + try { + const m = /^GITEA_TOKEN\s*=\s*(.+?)\s*$/m.exec(readFileSync(join(dir, '.env.local'), 'utf8')) + if (m) return m[1].trim() + } catch { + /* keep walking up */ + } + dir = dirname(dir) + } + throw new Error('no GITEA_TOKEN in any .env.local up the tree') +} + +/** working-day offset → calendar date (skip Sat/Sun), then a short label. */ +function addWorkingDays(base: Date, n: number): Date { + const d = new Date(base) + let left = Math.ceil(n) + while (left > 0) { + d.setDate(d.getDate() + 1) + const day = d.getDay() + if (day !== 0 && day !== 6) left-- + } + return d +} +const fmt = (d: Date) => d.toLocaleDateString('en-US', { month: 'short', day: 'numeric' }) + +async function main() { + const client = createGiteaClient( + { baseUrl: 'https://gitea.stephenmann.io', owner: 'christian', repo: 'commitea', token: token() }, + fetch, + ) + + const all = await client.listIssues({ state: 'all' }) + const open = all.filter((i) => i.state === 'open') + const closed = all.filter((i) => i.state === 'closed') + + // Real dependency edges (open issues only — the scheduler drops out-of-scope endpoints anyway). + const edges: DependencyEdge[] = [] + for (const i of open) { + for (const dep of await client.getIssueDependencies(i.number)) edges.push({ issue: i.number, dependsOn: dep }) + } + + // Capacity lanes from the pm-state repo (a separate repo, exactly like the app's + // pmStateClient — NOT the managed repo). + const pmClient = createGiteaClient( + { baseUrl: 'https://gitea.stephenmann.io', owner: 'christian', repo: 'commitea-pm-state', token: token() }, + fetch, + ) + let workers: Worker[] = [] + try { + const f = await pmClient.getFile('capacity/members.json') + if (f) { + const members = parseCapacityConfig(JSON.parse(Buffer.from(f.contentBase64, 'base64').toString('utf8'))) + workers = members.map((m) => ({ person: m.person, speed: capacityPerWorkday(m) })) + } + } catch { + /* no capacity → single serial worker */ + } + + const toSchedulable = (issues: GiteaIssue[]) => + issues.map((i) => ({ + number: i.number, + title: i.title, + labels: i.labels, + estimateDays: i.facts.estimateDays, + priority: i.facts.priority, + assignee: i.assignee, + })) + + const plan = scheduleWithCapacity(toSchedulable(open), edges, workers) + const today = new Date() + const f = forecast(toSchedulable(open), edges, { workers }) + + const bar = '─'.repeat(64) + console.log(`\n${bar}\n CommiTea, on itself — ${fmt(today)} ${today.getFullYear()}\n${bar}`) + console.log(` Board: ${open.length} open · ${closed.length} done`) + console.log(` Team: ${workers.length ? workers.map((w) => `${w.person} (${w.speed.toFixed(2)}/day)`).join(', ') : 'single serial worker'}`) + const unassigned = open.filter((i) => !i.assignee).length + if (unassigned) console.log(` ⚠ ${unassigned}/${open.length} open issues have no assignee`) + + console.log(`\n Schedule (dependency + priority order, ${workers.length || 1} lane${workers.length === 1 ? '' : 's'}):`) + for (const it of plan.items) { + const crit = it.critical ? ' ★crit' : '' + const lane = it.worker ? ` [${it.worker}]` : '' + const blocks = it.blocks.length ? ` blocks ${it.blocks.map((b) => '#' + b).join(',')}` : '' + console.log( + ` #${String(it.number).padEnd(3)} ${fmt(addWorkingDays(today, it.startDay))}→${fmt(addWorkingDays(today, it.endDay))}${crit.padEnd(7)}${lane} ${it.title.slice(0, 38)}${blocks}`, + ) + } + if (plan.cycle) console.log(` ⚠ dependency cycle: ${plan.cycle.join(' → ')}`) + + const p90 = f.curve.length ? f.curve[f.curve.length - 1].p90Day : f.p95Day + console.log(`\n Forecast (Monte Carlo, ${f.trials} trials, ${f.coldStart ? 'cold-start priors' : 'fitted'}):`) + console.log(` whole backlog lands p50 ${fmt(addWorkingDays(today, f.p50Day))} · p80 ${fmt(addWorkingDays(today, f.p80Day))} · p90 ${fmt(addWorkingDays(today, p90))}`) + + // Per-milestone runway. + const ms = await client.listMilestones() + console.log(`\n Runway (per open milestone):`) + for (const m of ms.filter((x) => x.state === 'open')) { + const scope = open.filter((i) => i.milestone?.id === m.id) + if (!scope.length) continue + const mf = forecast(toSchedulable(scope), edges, { workers }) + const mp90 = mf.curve.length ? mf.curve[mf.curve.length - 1].p90Day : mf.p95Day + const due = m.dueOn ? fmt(new Date(m.dueOn)) : 'no due date' + console.log( + ` ${m.title.padEnd(28)} ${scope.length} open · p50 ${fmt(addWorkingDays(today, mf.p50Day))}–p90 ${fmt(addWorkingDays(today, mp90))} (due: ${due})`, + ) + } + console.log(`\n${bar}\n`) +} + +main().catch((e) => { + console.error(e) + process.exit(1) +}) diff --git a/apps/desktop/src/renderer/src/components/screens/board-screen.tsx b/apps/desktop/src/renderer/src/components/screens/board-screen.tsx index a51fcb9..da3fe31 100644 --- a/apps/desktop/src/renderer/src/components/screens/board-screen.tsx +++ b/apps/desktop/src/renderer/src/components/screens/board-screen.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { COLUMNS, type BoardColumn, type BoardIssue, type IssueRef } from '../../data/fixtures.js' +import { COLUMNS, type BoardColumn, type BoardIssue, type DepsData, type GanttData, type IssueRef } from '../../data/fixtures.js' import { Card, Tag, Badge, Tabs, IconButton, Input, Icon } from '../ui/index.js' import { EmptyState } from '../shell/states.js' import { GanttView } from './gantt-view.js' @@ -12,10 +12,14 @@ import { DepsGraph } from './deps-graph.js' export function BoardScreen({ onOpenIssue, columns = COLUMNS, + gantt, + deps, loading = false, }: { onOpenIssue: (issue: IssueRef) => void columns?: BoardColumn[] + gantt?: GanttData + deps?: DepsData loading?: boolean }) { const [tab, setTab] = React.useState('board'); @@ -90,9 +94,9 @@ export function BoardScreen({ ) ) : tab === 'deps' ? ( - + ) : ( - + )} ); diff --git a/apps/desktop/src/renderer/src/components/screens/deps-graph.tsx b/apps/desktop/src/renderer/src/components/screens/deps-graph.tsx index ca108ac..e7d7ce9 100644 --- a/apps/desktop/src/renderer/src/components/screens/deps-graph.tsx +++ b/apps/desktop/src/renderer/src/components/screens/deps-graph.tsx @@ -1,11 +1,11 @@ import React from 'react' -import { DEPS, type IssueRef } from '../../data/fixtures.js' +import { DEPS, type DepsData, type IssueRef } from '../../data/fixtures.js' import { Tag, Icon } from '../ui/index.js' // Dependency graph drill-in — layered DAG, critical path in spruce -export function DepsGraph({ onOpenIssue }: { onOpenIssue: (issue: IssueRef) => void }) { - const g = DEPS +export function DepsGraph({ onOpenIssue, data }: { onOpenIssue: (issue: IssueRef) => void; data?: DepsData }) { + const g = data ?? DEPS const PAD = 14, COLW = 206, ROWH = 106, NW = 176, NH = 84 const X = (c: number) => PAD + c * COLW diff --git a/apps/desktop/src/renderer/src/components/screens/gantt-view.tsx b/apps/desktop/src/renderer/src/components/screens/gantt-view.tsx index 14b2a68..52908cc 100644 --- a/apps/desktop/src/renderer/src/components/screens/gantt-view.tsx +++ b/apps/desktop/src/renderer/src/components/screens/gantt-view.tsx @@ -1,11 +1,11 @@ import React from 'react' -import { GANTT, type IssueRef } from '../../data/fixtures.js' +import { GANTT, type GanttData, type IssueRef } from '../../data/fixtures.js' import { Icon } from '../ui/index.js' // Gantt drill-in — scheduler-derived bars, critical chain, 80% forecast tails -export function GanttView({ onOpenIssue }: { onOpenIssue: (issue: IssueRef) => void }) { - const g = GANTT; +export function GanttView({ onOpenIssue, data }: { onOpenIssue: (issue: IssueRef) => void; data?: GanttData }) { + const g = data ?? GANTT; const LABELW = 232, DAYW = 21, ROWH = 36, HEADH = 30; const chartW = g.days * DAYW; diff --git a/apps/desktop/src/renderer/src/components/screens/inbox-screen.tsx b/apps/desktop/src/renderer/src/components/screens/inbox-screen.tsx index 46f0519..7079862 100644 --- a/apps/desktop/src/renderer/src/components/screens/inbox-screen.tsx +++ b/apps/desktop/src/renderer/src/components/screens/inbox-screen.tsx @@ -9,13 +9,15 @@ export function InboxScreen({ onOpenDirectives, readIds, setReadIds, + data, }: { onOpenIssue: (issue: IssueRef) => void onOpenDirectives: () => void readIds: number[] setReadIds: React.Dispatch> + data?: InboxItem[] }) { - const all = INBOX + const all = data ?? INBOX const [tab, setTab] = React.useState('all') const isRead = (n: InboxItem) => !n.unread || readIds.includes(n.id) diff --git a/apps/desktop/src/renderer/src/components/screens/issue-screen.tsx b/apps/desktop/src/renderer/src/components/screens/issue-screen.tsx index fb2f76d..7ab09b6 100644 --- a/apps/desktop/src/renderer/src/components/screens/issue-screen.tsx +++ b/apps/desktop/src/renderer/src/components/screens/issue-screen.tsx @@ -18,18 +18,20 @@ const NONE = '—' export function IssueScreen({ issue, + detail, onBack, onOpenIssue, canWrite = false, onApplyChange, }: { issue: IssueRef + detail?: IssueDetail onBack: () => void onOpenIssue: (issue: IssueRef) => void canWrite?: boolean onApplyChange?: (change: IssueChange) => Promise<{ ok: boolean }> }) { - const det: IssueDetail = ISSUE_DETAIL[issue.id] || { + const det: IssueDetail = detail ?? ISSUE_DETAIL[issue.id] ?? { state: 'triage', assignee: 'Stephen', milestone: 'Beta', @@ -267,7 +269,7 @@ export function IssueScreen({ blocks {det.blocks.map((b) => ( diff --git a/apps/desktop/src/renderer/src/components/screens/standup-screen.tsx b/apps/desktop/src/renderer/src/components/screens/standup-screen.tsx index 51e2e0a..ff43818 100644 --- a/apps/desktop/src/renderer/src/components/screens/standup-screen.tsx +++ b/apps/desktop/src/renderer/src/components/screens/standup-screen.tsx @@ -1,6 +1,6 @@ import React from 'react' -import { type IssueRef, STANDUP } from '../../data/fixtures.js' +import { type IssueRef, STANDUP, type StandupData } from '../../data/fixtures.js' import { Badge, Button, Icon } from '../ui/index.js' const standupCSS = ` @@ -36,15 +36,15 @@ const toneColor: Record = { export function StandupScreen({ onBegin, onOpenIssue, + data, }: { onBegin: () => void onOpenIssue: (issue: IssueRef) => void + data?: StandupData }) { - const s = STANDUP + const s = data ?? STANDUP const NAG_REF: IssueRef = { id: s.nag.id, - title: 'Fix lifecycle inference on merge events', - labels: ['est/2d', 'p/1'], days: s.nag.days, } diff --git a/apps/desktop/src/renderer/src/components/shell/app-shell.tsx b/apps/desktop/src/renderer/src/components/shell/app-shell.tsx index c7e8187..1506d6e 100644 --- a/apps/desktop/src/renderer/src/components/shell/app-shell.tsx +++ b/apps/desktop/src/renderer/src/components/shell/app-shell.tsx @@ -17,6 +17,12 @@ import { } from '../../lib/backlog.js' import { useBacklog } from '../../lib/use-backlog.js' import { useCapacity } from '../../lib/use-capacity.js' +import { depsGraphView } from '../../lib/views/deps-graph.js' +import { ganttView } from '../../lib/views/gantt-view.js' +import { inboxView } from '../../lib/views/inbox-view.js' +import { issueDetailView } from '../../lib/views/issue-detail.js' +import type { ProjectData } from '../../lib/views/project-data.js' +import { standupView } from '../../lib/views/standup-view.js' import { PrimitivesGallery } from '../gallery.js' import { BoardScreen } from '../screens/board-screen.js' import { CalibrationScreen } from '../screens/calibration-screen.js' @@ -100,6 +106,7 @@ export function AppShell() { const [readIds, setReadIds] = useState([]) const [milestoneId, setMilestoneId] = useState(null) const [gate, setGate] = useState<'checking' | 'connect' | 'ready'>('checking') + const [demo, setDemo] = useState(false) const [pubConfig, setPubConfig] = useState(null) const [backlog, refetchBacklog] = useBacklog() const capacityMembers = useCapacity() @@ -132,6 +139,41 @@ export function AppShell() { ) ?? undefined) : undefined + // The uniform input every real-data view builder consumes. Assembled once from + // the reconciled backlog + capacity; undefined until the first reconcile lands. + const projectData: ProjectData | undefined = + backlog.status === 'ready' + ? { + issues: backlog.issues, + milestones: backlog.milestones, + deps: backlog.deps, + timelines: backlog.timelines, + calibration: calibration?.model, + workers, + today: new Date(), + } + : undefined + const issueDetail = + projectData && issue ? (issueDetailView(issue.id, projectData) ?? undefined) : undefined + const standup = projectData ? standupView(projectData) : undefined + const inbox = projectData ? inboxView(projectData) : undefined + const gantt = projectData ? ganttView(projectData) : undefined + const depsGraph = projectData ? depsGraphView(projectData) : undefined + // The rail's unread badge tracks the real inbox once reconciled (still-unread + // minus what's been opened); demo shows the fixture count. + const inboxUnread = inbox + ? inbox.filter((n) => n.unread && !readIds.includes(n.id)).length + : INBOX_UNREAD + + // The real connected host (from the saved config), for the rail's status line. + const hostLabel = (() => { + try { + return pubConfig?.baseUrl ? new URL(pubConfig.baseUrl).host : 'gitea' + } catch { + return pubConfig?.baseUrl ?? 'gitea' + } + })() + useEffect(() => { document.documentElement.setAttribute('data-theme', dark ? 'dark' : 'light') }, [dark]) @@ -141,14 +183,25 @@ export function AppShell() { useEffect(() => { window.commitea.gitea .status() - .then((s) => setGate(s.demo || s.configured ? 'ready' : 'connect')) + .then((s) => { + setDemo(s.demo) + setGate(s.demo || s.configured ? 'ready' : 'connect') + }) .catch(() => setGate('connect')) window.commitea.config.get().then(setPubConfig).catch(() => {}) }, []) const openIssue = (ref: IssueRef) => { if (view !== 'issue') setPrevView(view) - setIssue(ref) + // Callers into the sidecar (e.g. a "blocks #N" chip) may know only the id. + // Backfill the real title + labels from the reconciled backlog so the header + // isn't blank; fall back to whatever the caller passed (demo fixtures). + let full = ref + if (backlog.status === 'ready' && (!ref.title || !ref.labels)) { + const found = backlog.issues.find((i) => i.number === ref.id) + if (found) full = { ...ref, id: found.number, title: found.title, labels: found.labels } + } + setIssue(full) setView('issue') } @@ -166,7 +219,7 @@ export function AppShell() { const NAV: NavEntry[] = [ { id: 'standup', label: 'Standup', icon: 'sun' }, { id: 'focus', label: 'Morning service', icon: 'coffee' }, - { id: 'inbox', label: 'Inbox', icon: 'bell', count: INBOX_UNREAD || null }, + { id: 'inbox', label: 'Inbox', icon: 'bell', count: inboxUnread || null }, { id: 'capture', label: 'Capture', icon: 'plus' }, { id: 'board', label: 'The pot', icon: 'square-kanban' }, { id: 'runway', label: 'Runway', icon: 'chart-line' }, @@ -224,12 +277,14 @@ export function AppShell() { case 'focus': return case 'standup': - return setView('focus')} onOpenIssue={openIssue} /> + return setView('focus')} onOpenIssue={openIssue} data={standup} /> case 'board': return ( ) @@ -257,6 +312,7 @@ export function AppShell() { onOpenDirectives={() => setView('directives')} readIds={readIds} setReadIds={setReadIds} + data={inbox} /> ) case 'capture': @@ -282,6 +338,7 @@ export function AppShell() { return issue ? ( setView(prevView)} onOpenIssue={openIssue} canWrite={backlog.status === 'ready'} @@ -356,9 +413,15 @@ export function AppShell() {
- - - + {/* Dev-only surfaces (fixture galleries / onboarding preview) — shown in dev + and in demo/e2e mode; hidden in a real configured, packaged app. */} + {import.meta.env.DEV || demo ? ( + <> + + + + + ) : null}
Evening service} diff --git a/apps/desktop/src/renderer/src/lib/views/deps-graph.ts b/apps/desktop/src/renderer/src/lib/views/deps-graph.ts new file mode 100644 index 0000000..ccb77f4 --- /dev/null +++ b/apps/desktop/src/renderer/src/lib/views/deps-graph.ts @@ -0,0 +1,195 @@ +import { inferLifecycle, schedule } from '@commitea/core' + +import type { DepEdge, DepNode, DepsData } from '../../data/fixtures.js' +import { formatShort } from '../dates.js' +import type { ProjectData } from './project-data.js' + +/** Copy of backlog.ts's private toSchedulable — open issues → scheduler input. Not exported there. */ +function toSchedulable(issues: ProjectData['issues']) { + return issues + .filter((i) => i.state === 'open') + .map((i) => ({ + number: i.number, + title: i.title, + labels: i.labels, + estimateDays: i.facts.estimateDays, + priority: i.facts.priority, + assignee: i.assignee, + })) +} + +function median(values: number[]): number { + if (values.length === 0) return 0 + const sorted = [...values].sort((a, b) => a - b) + const mid = Math.floor(sorted.length / 2) + return sorted.length % 2 ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2 +} + +/** + * Real Deps-graph view: dependency topology of every issue that appears in a + * real gitea dependency edge, laid out into columns (longest dependency depth) + * and rows (index within its column, ordered by issue number). Critical path + * comes from the deterministic scheduler over the open backlog — closed issues + * never schedule, so they can't be critical, which is honest (they're done). + * The milestone node is the open milestone with the most open in-scope issues; + * when nothing links to a real milestone we fall back to the first open one, + * then to a bare '—' placeholder — never a fabricated name/date. + */ +export function depsGraphView(d: ProjectData): DepsData { + const byNumber = new Map(d.issues.map((i) => [i.number, i])) + + // Participating set: anything that shows up as either end of a real edge, + // restricted to issues we actually have (dangling refs to unknown issues + // are dropped — nothing honest to draw for them). + const participating = new Set() + for (const e of d.deps) { + if (byNumber.has(e.issue)) participating.add(e.issue) + if (byNumber.has(e.dependsOn)) participating.add(e.dependsOn) + } + + if (participating.size === 0) { + const fallback = d.milestones.find((m) => m.state === 'open') + return { + nodes: [], + milestone: fallback + ? { name: fallback.title, due: fallback.dueOn ? formatShort(new Date(fallback.dueOn)) : 'no date', col: 0, row: 0 } + : { name: '—', due: 'no date', col: 0, row: 0 }, + edges: [], + critical: [], + unattached: [], + } + } + + // In-scope deps: both endpoints participating. + const depsMap = new Map() // issue -> its dependencies + const dependentsMap = new Map() // issue -> who depends on it + for (const id of participating) { + depsMap.set(id, []) + dependentsMap.set(id, []) + } + for (const e of d.deps) { + if (participating.has(e.issue) && participating.has(e.dependsOn)) { + depsMap.get(e.issue)!.push(e.dependsOn) + dependentsMap.get(e.dependsOn)!.push(e.issue) + } + } + + // Column = longest dependency depth. Cycle-guarded (shouldn't happen — real + // gitea deps are DAG-shaped in practice — but recursion must not hang). + const colMemo = new Map() + function colOf(id: number, visiting: Set): number { + const cached = colMemo.get(id) + if (cached != null) return cached + if (visiting.has(id)) return 0 // cycle guard: treat as a root + visiting.add(id) + const deps = depsMap.get(id) ?? [] + const col = deps.length === 0 ? 0 : 1 + Math.max(...deps.map((dep) => colOf(dep, visiting))) + visiting.delete(id) + colMemo.set(id, col) + return col + } + for (const id of participating) colOf(id, new Set()) + + // Row = index within column, ordered deterministically by issue number. + const byCol = new Map() + for (const id of participating) { + const col = colMemo.get(id)! + if (!byCol.has(col)) byCol.set(col, []) + byCol.get(col)!.push(id) + } + const rowOf = new Map() + for (const ids of byCol.values()) { + ids.sort((a, b) => a - b) + ids.forEach((id, i) => rowOf.set(id, i)) + } + + const maxCol = Math.max(...[...colMemo.values()]) + + // Critical path from the real scheduler over the open backlog. + const plan = schedule(toSchedulable(d.issues), d.deps) + const critical = new Set(plan.items.filter((i) => i.critical).map((i) => i.number)) + const scheduledByNumber = new Map(plan.items.map((i) => [i.number, i])) + + const nodes: DepNode[] = [...participating].sort((a, b) => a - b).map((id) => { + const issue = byNumber.get(id)! + const inf = inferLifecycle(issue, d.timelines[id] ?? [], d.today) + const scheduled = scheduledByNumber.get(id) + return { + id, + title: issue.title, + tags: issue.labels, + state: inf.column, + days: inf.steepingDays != null ? `${inf.steepingDays}d` : undefined, + col: colMemo.get(id)!, + row: rowOf.get(id)!, + // Reuse the scheduler's own rationale where one exists (open issues + // only) — never invented commentary for closed/unscheduled nodes. + rationale: scheduled?.rationale, + } + }) + + // Nearest open milestone with the most open in-scope issues. + const openMilestones = d.milestones.filter((m) => m.state === 'open') + let chosenMilestoneId: number | null = null + let milestone: DepsData['milestone'] + const medianRow = median(nodes.map((n) => n.row)) + if (openMilestones.length === 0) { + milestone = { name: '—', due: 'no date', col: maxCol + 1, row: medianRow } + } else { + let best: { id: number; title: string; dueOn: string | null | undefined; count: number } | null = null + for (const m of openMilestones) { + const count = [...participating].filter((id) => { + const issue = byNumber.get(id)! + return issue.milestone?.id === m.id && issue.state === 'open' + }).length + if ( + best === null || + count > best.count || + (count === best.count && dueRank(m.dueOn) < dueRank(best.dueOn)) + ) { + best = { id: m.id, title: m.title, dueOn: m.dueOn, count } + } + } + // best is non-null since openMilestones.length > 0 + chosenMilestoneId = best!.count > 0 ? best!.id : null + milestone = { + name: best!.title, + due: best!.dueOn ? formatShort(new Date(best!.dueOn)) : 'no date', + col: maxCol + 1, + row: medianRow, + } + } + + const edges: DepEdge[] = [] + for (const e of d.deps) { + if (!participating.has(e.issue) || !participating.has(e.dependsOn)) continue + const crit = critical.has(e.dependsOn) && critical.has(e.issue) + edges.push(crit ? { from: e.dependsOn, to: e.issue, crit: true } : { from: e.dependsOn, to: e.issue }) + } + + // Terminal nodes (nothing in scope depends on them) that belong to the + // chosen milestone's scope get an edge into it. + if (chosenMilestoneId != null) { + for (const id of participating) { + const dependents = dependentsMap.get(id) ?? [] + if (dependents.length > 0) continue + const issue = byNumber.get(id)! + if (issue.milestone?.id !== chosenMilestoneId) continue + edges.push(critical.has(id) ? { from: id, to: 'ms', crit: true } : { from: id, to: 'ms' }) + } + } + + const linked = new Set() + for (const e of edges) { + linked.add(e.from) + if (e.to !== 'ms') linked.add(e.to) + } + const unattached = [...participating].filter((id) => !linked.has(id)).sort((a, b) => a - b) + + return { nodes, milestone, edges, critical: [...critical], unattached } +} + +/** Rank a due date for "nearest" comparisons; undated milestones sort last. */ +function dueRank(dueOn: string | null | undefined): number { + return dueOn ? new Date(dueOn).getTime() : Number.POSITIVE_INFINITY +} diff --git a/apps/desktop/src/renderer/src/lib/views/gantt-view.ts b/apps/desktop/src/renderer/src/lib/views/gantt-view.ts new file mode 100644 index 0000000..2a4707a --- /dev/null +++ b/apps/desktop/src/renderer/src/lib/views/gantt-view.ts @@ -0,0 +1,130 @@ +import { forecast, inferLifecycle, scheduleWithCapacity, workingDaysBetween } from '@commitea/core' + +import type { GanttData, GanttRow, GanttWeek } from '../../data/fixtures.js' +import { addWorkingDays, formatShort } from '../dates.js' +import type { ProjectData } from './project-data.js' + +/** Same 2-char scheme as backlog.ts's `initials()`; copied inline (not exported there). */ +function initials(login: string): string { + return login.slice(0, 2).toUpperCase() +} + +/** Copy of backlog.ts's private `toSchedulable` — not exported, so mirrored here. */ +function toSchedulable(issues: ProjectData['issues']) { + return issues + .filter((i) => i.state === 'open') + .map((i) => ({ + number: i.number, + title: i.title, + labels: i.labels, + estimateDays: i.facts.estimateDays, + priority: i.facts.priority, + assignee: i.assignee, + })) +} + +const roundUpToWeek = (n: number): number => Math.ceil(Math.max(n, 1) / 7) * 7 + +/** + * Real Gantt: the capacity-aware scheduler's lane layout over the open backlog + * (startDay/endDay/critical/worker) — the SAME layout the Monte Carlo forecast + * runs each trial on, so the bars you see match what's forecast. Plus a handful + * of recently-closed issues shown as already-done bars. No per-issue Monte Carlo + * exists at this grain, so `p80` is a rough single-issue buffer (endDay padded by + * half its own duration) rather than a simulated percentile — flagged below. + */ +export function ganttView(d: ProjectData): GanttData { + const plan = scheduleWithCapacity(toSchedulable(d.issues), d.deps, d.workers) + const issueByNumber = new Map(d.issues.map((i) => [i.number, i])) + + const scheduledRows: GanttRow[] = plan.items.map((item) => { + const issue = issueByNumber.get(item.number) + const inf = issue ? inferLifecycle(issue, d.timelines[item.number] ?? [], d.today) : null + const state: GanttRow['state'] = + inf?.column === 'done' ? 'done' : inf?.column === 'steeping' ? 'steeping' : inf?.column === 'review' ? 'review' : 'scheduled' + return { + id: item.number, + title: item.title, + // The lane it actually landed on (capacity-aware) — falls back to the + // assignee, then blank, so an unassigned issue shows the lane doing it. + who: initials(item.worker ?? issue?.assignee ?? ''), + start: item.startDay, + end: item.endDay, + crit: item.critical, + state, + // Rough single-issue buffer (no Monte Carlo at this grain): pad the end + // by half its own duration as a stand-in p80. + p80: Math.ceil(item.endDay + (item.endDay - item.startDay) * 0.5), + } + }) + + // Recently-closed issues (closed within ~14 calendar days) as already-done bars. + const doneRows: GanttRow[] = d.issues + .filter((i) => { + if (i.state !== 'closed' || !i.closedAt) return false + const ageDays = (d.today.getTime() - new Date(i.closedAt).getTime()) / (24 * 60 * 60 * 1000) + return ageDays >= 0 && ageDays <= 14 + }) + .map((i) => ({ + id: i.number, + title: i.title, + who: initials(i.assignee ?? ''), + start: 0, + end: 1, + state: 'done' as const, + })) + + const rows = [...doneRows, ...scheduledRows] + + // Nearest open milestone with a due date, for the horizon + `due` marker. + const dueCandidates = d.milestones + .filter((m) => m.state === 'open' && m.dueOn) + .map((m) => ({ m, day: Math.max(0, workingDaysBetween(d.today, new Date(m.dueOn as string))) })) + .sort((a, b) => a.day - b.day) + const nearestDue = dueCandidates[0] ?? null + + const days = roundUpToWeek(Math.max(7, ...rows.map((r) => r.end), nearestDue?.day ?? 0)) + + const weeks: GanttWeek[] = [] + for (let at = 0; at <= days; at += 7) { + weeks.push({ at, label: formatShort(addWorkingDays(d.today, at)) }) + } + + const due = nearestDue + ? { at: nearestDue.day, label: `${nearestDue.m.title} due` } + : { at: days, label: 'horizon' } + + // 80% window: forecast the nearest open milestone's open scope, if any has + // one; otherwise fall back to a generic band over the last third of the + // horizon (no milestone scope to anchor it to). + const open = d.issues.filter((i) => i.state === 'open') + const milestoneWithScope = d.milestones + .filter((m) => m.state === 'open') + .map((m) => ({ m, scope: open.filter((i) => i.milestone?.id === m.id) })) + .filter((x) => x.scope.length > 0) + .sort((a, b) => { + const da = a.m.dueOn ? workingDaysBetween(d.today, new Date(a.m.dueOn)) : Number.POSITIVE_INFINITY + const db = b.m.dueOn ? workingDaysBetween(d.today, new Date(b.m.dueOn)) : Number.POSITIVE_INFINITY + return da - db + })[0] + + let band: GanttData['band'] + if (milestoneWithScope) { + const f = forecast(toSchedulable(milestoneWithScope.scope), d.deps, { workers: d.workers }) + const p90 = f.curve.length ? f.curve[f.curve.length - 1].p90Day : f.p95Day + band = { from: Math.round(f.p50Day), to: Math.round(p90), label: '80% window' } + } else { + // No milestone with open scope to anchor a real forecast to — degrade to + // a generic band over the last third of the horizon. + band = { from: Math.round((days * 2) / 3), to: days, label: '80% window' } + } + + return { + days, + weeks, + today: 0, + band, + due, + rows, + } +} diff --git a/apps/desktop/src/renderer/src/lib/views/inbox-view.ts b/apps/desktop/src/renderer/src/lib/views/inbox-view.ts new file mode 100644 index 0000000..cf845be --- /dev/null +++ b/apps/desktop/src/renderer/src/lib/views/inbox-view.ts @@ -0,0 +1,112 @@ +import { inferLifecycle } from '@commitea/core' + +import type { InboxItem } from '../../data/fixtures.js' +import type { ProjectData } from './project-data.js' + +const CLOSED_CAP = 5 +const TOTAL_CAP = 12 + +/** "HH:MM" from an ISO timestamp; '—' when absent (never fabricated). */ +function hhmm(iso: string | null | undefined): string { + if (!iso) return '—' + const d = new Date(iso) + const hh = String(d.getHours()).padStart(2, '0') + const mm = String(d.getMinutes()).padStart(2, '0') + return `${hh}:${mm}` +} + +/** + * Real Inbox feed: steeping nags, review-waiting issues, recently-closed + * issues, and closed milestones — all derived straight from the reconciled + * backlog + inferred lifecycle. No mentions, no outages, no people-activity: + * ProjectData carries none of that, so those fixture item `type`s never + * appear here (an honest degrade, not an oversight). + */ +export function inboxView(d: ProjectData): InboxItem[] { + const items: InboxItem[] = [] + let id = 1 + + const open = d.issues.filter((i) => i.state === 'open') + + // 1. Steeping nags — open issues that have sat past first-commit for 2+ working days. + for (const issue of open) { + const inf = inferLifecycle(issue, d.timelines[issue.number] ?? [], d.today) + if (inf.steepingDays == null || inf.steepingDays < 2) continue + const blocks = d.deps.filter((e) => e.dependsOn === issue.number).map((e) => e.issue) + items.push({ + id: id++, + day: 'Today', + type: 'nag', + icon: 'clock', + tone: 'warn', + text: `#${issue.number} is steeping · ${inf.steepingDays}d`, + detail: blocks.length ? `blocks ${blocks.map((b) => `#${b}`).join(' and ')}` : 'worth a look', + time: hhmm(inf.stages.steeping), + unread: true, + issue: { id: issue.number, title: issue.title, labels: issue.labels, days: `${inf.steepingDays}d` }, + }) + } + + // 2. Review-waiting — open issues whose lifecycle has reached the review column. + for (const issue of open) { + const inf = inferLifecycle(issue, d.timelines[issue.number] ?? [], d.today) + if (inf.column !== 'review') continue + items.push({ + id: id++, + day: 'Today', + type: 'review', + icon: 'git-pull-request', + tone: 'info', + text: `#${issue.number} awaits review`, + detail: issue.title, + time: hhmm(inf.stages.review), + unread: true, + issue: { id: issue.number, title: issue.title, labels: issue.labels }, + }) + } + + // 3. Recently shipped — closed issues, newest close first, capped. + const closed = d.issues + .filter((i) => i.state === 'closed') + .slice() + .sort((a, b) => { + const at = a.closedAt ? new Date(a.closedAt).getTime() : -Infinity + const bt = b.closedAt ? new Date(b.closedAt).getTime() : -Infinity + return bt - at + }) + .slice(0, CLOSED_CAP) + for (const issue of closed) { + items.push({ + id: id++, + day: 'Yesterday', + type: 'milestone', + icon: 'circle-check', + tone: 'ok', + text: `#${issue.number} shipped`, + detail: issue.title, + time: hhmm(issue.closedAt), + unread: false, + issue: { id: issue.number, title: issue.title, labels: issue.labels }, + }) + } + + // 4. Milestone completion — milestones gitea reports as closed. + for (const m of d.milestones) { + if (m.state !== 'closed') continue + items.push({ + id: id++, + day: 'Earlier', + type: 'milestone', + icon: 'milestone', + tone: 'ok', + // No milestone-close timestamp is available on GiteaMilestone, so time is + // left at the honest placeholder rather than borrowed from an issue. + text: `${m.title} closed`, + detail: 'milestone complete', + time: '—', + unread: false, + }) + } + + return items.slice(0, TOTAL_CAP) +} diff --git a/apps/desktop/src/renderer/src/lib/views/issue-detail.ts b/apps/desktop/src/renderer/src/lib/views/issue-detail.ts new file mode 100644 index 0000000..5c31e44 --- /dev/null +++ b/apps/desktop/src/renderer/src/lib/views/issue-detail.ts @@ -0,0 +1,72 @@ +import { + forecast, + inferLifecycle, + type LifecycleStages, + toDurationModel, +} from '@commitea/core' + +import type { IssueDetail } from '../../data/fixtures.js' +import { addWorkingDays, formatRange, formatShort } from '../dates.js' +import type { ProjectData } from './project-data.js' + +const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] + +/** "Feb 6 · 11:47" from an ISO timestamp; "pending" when absent. */ +function when(iso: string | undefined): string { + if (!iso) return 'pending' + const d = new Date(iso) + const hh = String(d.getHours()).padStart(2, '0') + const mm = String(d.getMinutes()).padStart(2, '0') + return `${MONTHS[d.getMonth()]} ${d.getDate()} · ${hh}:${mm}` +} + +function lifecycle(stages: LifecycleStages): IssueDetail['lifecycle'] { + return [ + { stage: 'Diagnosis', event: 'issue opened', when: when(stages.opened), icon: 'circle-dot', done: true }, + { stage: 'Triage', event: 'labeled / milestoned', when: when(stages.triaged), icon: 'tag', done: !!stages.triaged }, + { stage: 'Work start', event: 'first commit ref', when: when(stages.steeping), icon: 'git-commit-horizontal', done: !!stages.steeping }, + { stage: 'In review', event: 'PR referenced', when: when(stages.review), icon: 'git-merge', done: !!stages.review }, + { stage: 'Complete', event: 'issue closed', when: when(stages.done), icon: 'circle-check', done: !!stages.done }, + ] +} + +/** + * Real Issue-detail sidecar: lifecycle timeline (from event inference), a + * single-issue forecast range, and the real dependency edges. Returns null for + * an unknown id → the screen shows the demo fixture. Comments aren't reconciled, + * so they stay empty (the screen degrades gracefully). + */ +export function issueDetailView(id: number, d: ProjectData): IssueDetail | null { + const issue = d.issues.find((i) => i.number === id) + if (!issue) return null + const inf = inferLifecycle(issue, d.timelines[id] ?? [], d.today) + const blockedBy = d.deps.filter((e) => e.issue === id).map((e) => e.dependsOn) + const blocks = d.deps.filter((e) => e.dependsOn === id).map((e) => e.issue) + + let forecastLine = { p80: 'closed', note: 'shipped' } + if (issue.state === 'open') { + const f = forecast( + [{ number: id, title: issue.title, labels: issue.labels, estimateDays: issue.facts.estimateDays, priority: issue.facts.priority, assignee: issue.assignee }], + [], + { ...(d.calibration ? { model: toDurationModel(d.calibration) } : {}), workers: d.workers }, + ) + const p90 = f.curve.length ? f.curve[f.curve.length - 1].p90Day : f.p95Day + forecastLine = { + p80: `done ${formatRange(addWorkingDays(d.today, f.p50Day), addWorkingDays(d.today, p90))}`, + note: d.calibration && !d.calibration.coldStart ? `from your history · n=${d.calibration.n}` : 'cold-start priors', + } + } + + return { + state: inf.column === 'review' ? 'review' : inf.column, + assignee: issue.assignee ?? 'unassigned', + milestone: issue.milestone?.title ?? '—', + body: issue.body, + comments: [], + lifecycle: lifecycle(inf.stages), + forecast: forecastLine, + blocks, + blockedBy, + note: inf.steepingDays != null ? `Steeping ${inf.steepingDays}d.${blocks.length ? ` Blocks ${blocks.map((b) => `#${b}`).join(', ')}.` : ''}` : '', + } +} diff --git a/apps/desktop/src/renderer/src/lib/views/project-data.ts b/apps/desktop/src/renderer/src/lib/views/project-data.ts new file mode 100644 index 0000000..4436009 --- /dev/null +++ b/apps/desktop/src/renderer/src/lib/views/project-data.ts @@ -0,0 +1,17 @@ +import type { CalibrationModel, DependencyEdge, GiteaIssue, GiteaMilestone, LifecycleEvent, Worker } from '@commitea/core' + +/** + * The reconciled backlog + derived config that every real-data view builder + * consumes. AppShell assembles it once from the backlog + capacity, so each + * screen's builder gets a uniform input. `calibration`/`workers` are optional — + * views degrade to cold-start / single-worker when absent. + */ +export interface ProjectData { + issues: GiteaIssue[] + milestones: GiteaMilestone[] + deps: DependencyEdge[] + timelines: Record + calibration?: CalibrationModel + workers: Worker[] + today: Date +} diff --git a/apps/desktop/src/renderer/src/lib/views/standup-view.ts b/apps/desktop/src/renderer/src/lib/views/standup-view.ts new file mode 100644 index 0000000..7821a73 --- /dev/null +++ b/apps/desktop/src/renderer/src/lib/views/standup-view.ts @@ -0,0 +1,157 @@ +import { + type DependencyEdge, + type GiteaIssue, + inferLifecycle, + schedule, + type ScheduledItem, +} from '@commitea/core' + +import type { DriftItem, Nag, PlanItem, StandupData } from '../../data/fixtures.js' +import type { ProjectData } from './project-data.js' + +/** Same shape as backlog.ts's private toSchedulable — not exported there, so copied inline. */ +function toSchedulable(issues: GiteaIssue[]) { + return issues + .filter((i) => i.state === 'open') + .map((i) => ({ + number: i.number, + title: i.title, + labels: i.labels, + estimateDays: i.facts.estimateDays, + priority: i.facts.priority, + assignee: i.assignee, + })) +} + +function whyFor(item: ScheduledItem): string { + if (item.critical) return 'On the critical path.' + if (item.blocks.length) return `Blocks ${item.blocks.map((b) => `#${b}`).join(', ')}.` + return 'Next by dependency + priority order.' +} + +/** + * Top scheduled pick per distinct assignee. Iterates the (already dependency- + * + priority-ordered) plan once, keeping the first item seen per assignee — + * that's their earliest-starting pick since the v0 scheduler lays out a single + * serial lane (order ascending ⇒ startDay ascending). Ordered by `d.workers` + * when present (assignees absent from the roster are appended after the named + * workers; unassigned work last), else by discovery order. Capped at 4 people. + */ +function buildPlan(d: ProjectData, open: GiteaIssue[], items: ScheduledItem[]): PlanItem[] { + const assigneeByNumber = new Map(open.map((i) => [i.number, i.assignee])) + const firstPickByPerson = new Map() + for (const item of items) { + const key = assigneeByNumber.get(item.number) ?? 'Unassigned' + if (!firstPickByPerson.has(key)) firstPickByPerson.set(key, item) + } + + let order: string[] + if (d.workers.length) { + const workerOrder = d.workers.map((w) => w.person) + const known = workerOrder.filter((p) => firstPickByPerson.has(p)) + const extra = [...firstPickByPerson.keys()].filter((k) => k !== 'Unassigned' && !workerOrder.includes(k)) + order = [...known, ...extra] + if (firstPickByPerson.has('Unassigned')) order.push('Unassigned') + } else { + order = [...firstPickByPerson.keys()] + } + + return order.slice(0, 4).map((who) => { + const item = firstPickByPerson.get(who)! + return { who, pick: `#${item.number}`, title: item.title, why: whyFor(item) } + }) +} + +/** + * The single longest-steeping open issue (inferLifecycle's steepingDays, whole + * working days since first commit ref). `blocks` comes from the scheduler's + * in-scope dependents of that same issue. Falls back to a calm, honest nag + * when nothing is currently steeping. + */ +function buildNag(d: ProjectData, open: GiteaIssue[], items: ScheduledItem[]): Nag { + let worst: { issue: GiteaIssue; days: number } | null = null + for (const issue of open) { + const inf = inferLifecycle(issue, d.timelines[issue.number] ?? [], d.today) + if (inf.steepingDays != null && (worst == null || inf.steepingDays > worst.days)) { + worst = { issue, days: inf.steepingDays } + } + } + if (!worst) { + return { id: 0, days: '0d', blocks: [], text: 'Nothing is over-steeping. The pot is calm.' } + } + + const scheduled = items.find((it) => it.number === worst!.issue.number) + const blocks = (scheduled?.blocks ?? []).map((n) => `#${n}`) + const days = `${worst.days}d` + return { + id: worst.issue.number, + days, + blocks, + text: `${days} steeping. ${blocks.length ? `Blocks ${blocks.join(', ')}.` : 'Worth a look.'}`, + } +} + +/** + * Honest drift signals only — ProjectData carries no notification/webhook + * stream, so drift is limited to what lifecycle inference can actually see: + * open issues sitting in review (age isn't measurable from the data we have, + * so every review-column issue is flagged rather than fabricating a duration) + * and open issues steeping past their own estimate. Sorted most-severe first + * (steeping overage ranks by days over estimate; review-sitting is a flat, + * lower severity since it has no measured age) and capped at 4. + */ +function buildDrift(d: ProjectData, open: GiteaIssue[]): DriftItem[] { + const candidates: (DriftItem & { severity: number })[] = [] + for (const issue of open) { + const inf = inferLifecycle(issue, d.timelines[issue.number] ?? [], d.today) + if (inf.column === 'review') { + candidates.push({ + tone: 'warn', + text: `#${issue.number} ${issue.title} is sitting in review.`, + delta: 'idle in review', + severity: 1, + }) + } + if (inf.steepingDays != null) { + const est = issue.facts.estimateDays ?? 2 + if (inf.steepingDays > est) { + candidates.push({ + tone: 'warn', + text: `#${issue.number} ${issue.title} has steeped past its estimate.`, + delta: `${inf.steepingDays}d vs ${est}d est`, + severity: inf.steepingDays - est + 1, + }) + } + } + } + return candidates + .sort((a, b) => b.severity - a.severity) + .slice(0, 4) + .map(({ tone, text, delta }) => ({ tone, text, delta })) +} + +/** + * Morning-standup sidecar: per-person top pick from the deterministic + * scheduler, the single longest-steeping issue as the day's nag, and drift + * limited to real lifecycle anomalies (review-sitting, steeping-past-estimate). + * Never throws — an empty/cold backlog degrades to an empty plan, empty drift, + * and a calm nag. + */ +export function standupView(d: ProjectData): StandupData { + const date = d.today.toLocaleDateString('en-GB', { + weekday: 'long', + day: 'numeric', + month: 'long', + year: 'numeric', + }) + const open = d.issues.filter((i) => i.state === 'open') + const deps: DependencyEdge[] = d.deps + const { items } = schedule(toSchedulable(open), deps) + + return { + date, + plan: buildPlan(d, open, items), + nag: buildNag(d, open, items), + drift: buildDrift(d, open), + } +} diff --git a/yarn.lock b/yarn.lock index d4cec25..9428d12 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,13 @@ __metadata: version: 8 cacheKey: 10c0 +"7zip-bin@npm:~5.2.0": + version: 5.2.0 + resolution: "7zip-bin@npm:5.2.0" + checksum: 10c0/7f6c69b4cb10c4060fb8fda258ae2ab88d30516b5a52941efa0e2cbd9ce362ab7d8d568549cd85e9f125c1c68f95c7bb076cc314c2f3c0cb306d3b638080c2ce + languageName: node + linkType: hard + "@alloc/quick-lru@npm:^5.2.0": version: 5.2.0 resolution: "@alloc/quick-lru@npm:5.2.0" @@ -248,16 +255,41 @@ __metadata: "@vitejs/plugin-react": "npm:^4.3.4" autoprefixer: "npm:^10.4.20" electron: "npm:^34.0.0" + electron-builder: "npm:^25" electron-vite: "npm:^3.1.0" postcss: "npm:^8.5.1" react: "npm:^18.3.1" react-dom: "npm:^18.3.1" tailwindcss: "npm:^3.4.17" + tsx: "npm:^4" typescript: "npm:^5.7.3" vite: "npm:^6.1.0" languageName: unknown linkType: soft +"@develar/schema-utils@npm:~2.6.5": + version: 2.6.5 + resolution: "@develar/schema-utils@npm:2.6.5" + dependencies: + ajv: "npm:^6.12.0" + ajv-keywords: "npm:^3.4.1" + checksum: 10c0/7c6075ce6742dd5c89b3cebf81351ec1d73dafc7c3409748860e4f8262fb26ffe6d998c5baab4eca579cd436e7c6c12c615fe89819c19484a22d25b3e6825cb5 + languageName: node + linkType: hard + +"@electron/asar@npm:^3.2.7": + version: 3.4.1 + resolution: "@electron/asar@npm:3.4.1" + dependencies: + commander: "npm:^5.0.0" + glob: "npm:^7.1.6" + minimatch: "npm:^3.0.4" + bin: + asar: bin/asar.js + checksum: 10c0/9df7983125faaa29c266e4beec6ceb205e139ede0e8fb81dde84c73ac8114388a99aad21379412a972163d8879ca959621f4e4896214bf8d296ba217e7cf8170 + languageName: node + linkType: hard + "@electron/get@npm:^2.0.0": version: 2.0.3 resolution: "@electron/get@npm:2.0.3" @@ -277,6 +309,73 @@ __metadata: languageName: node linkType: hard +"@electron/notarize@npm:2.5.0": + version: 2.5.0 + resolution: "@electron/notarize@npm:2.5.0" + dependencies: + debug: "npm:^4.1.1" + fs-extra: "npm:^9.0.1" + promise-retry: "npm:^2.0.1" + checksum: 10c0/262c6a90db4b18c82abb2a8f5349d1bf19ac34a440fe6c01b8aee302b1c886a79906693e6c3fdba2a4efa23a6519abf2113a882b438f7b6687eb2daed3da2afa + languageName: node + linkType: hard + +"@electron/osx-sign@npm:1.3.1": + version: 1.3.1 + resolution: "@electron/osx-sign@npm:1.3.1" + dependencies: + compare-version: "npm:^0.1.2" + debug: "npm:^4.3.4" + fs-extra: "npm:^10.0.0" + isbinaryfile: "npm:^4.0.8" + minimist: "npm:^1.2.6" + plist: "npm:^3.0.5" + bin: + electron-osx-flat: bin/electron-osx-flat.js + electron-osx-sign: bin/electron-osx-sign.js + checksum: 10c0/207be0df4ad4d76b0041de97d12b8d8793f3a5ddaff28e73c34a9b1939c83b3224191c7aae3c95d62eeb4a9146204c1db24577f43f91f6fab26783784856e49b + languageName: node + linkType: hard + +"@electron/rebuild@npm:3.6.1": + version: 3.6.1 + resolution: "@electron/rebuild@npm:3.6.1" + dependencies: + "@malept/cross-spawn-promise": "npm:^2.0.0" + chalk: "npm:^4.0.0" + debug: "npm:^4.1.1" + detect-libc: "npm:^2.0.1" + fs-extra: "npm:^10.0.0" + got: "npm:^11.7.0" + node-abi: "npm:^3.45.0" + node-api-version: "npm:^0.2.0" + node-gyp: "npm:^9.0.0" + ora: "npm:^5.1.0" + read-binary-file-arch: "npm:^1.0.6" + semver: "npm:^7.3.5" + tar: "npm:^6.0.5" + yargs: "npm:^17.0.1" + bin: + electron-rebuild: lib/cli.js + checksum: 10c0/7d72ea5a0ab656b356cfe300ccdfdb25c06292a31e1729142243460aebe1a9b4c2a50469c6fb114b756575f8713a0532ec6b128e16eb944e8df446a5786ec581 + languageName: node + linkType: hard + +"@electron/universal@npm:2.0.1": + version: 2.0.1 + resolution: "@electron/universal@npm:2.0.1" + dependencies: + "@electron/asar": "npm:^3.2.7" + "@malept/cross-spawn-promise": "npm:^2.0.0" + debug: "npm:^4.3.1" + dir-compare: "npm:^4.2.0" + fs-extra: "npm:^11.1.1" + minimatch: "npm:^9.0.3" + plist: "npm:^3.1.0" + checksum: 10c0/d3cd87184ee561e4fa4bddbd8a2f9f8db4b3f7c92fe108bcd3e06eef2dd6bdfc378eaf0758b85e8066b3f88f9dd9775d83b3ac9281b491017747786c5cce50a4 + languageName: node + linkType: hard + "@esbuild/aix-ppc64@npm:0.25.12": version: 0.25.12 resolution: "@esbuild/aix-ppc64@npm:0.25.12" @@ -641,6 +740,27 @@ __metadata: languageName: node linkType: hard +"@gar/promisify@npm:^1.1.3": + version: 1.1.3 + resolution: "@gar/promisify@npm:1.1.3" + checksum: 10c0/0b3c9958d3cd17f4add3574975e3115ae05dc7f1298a60810414b16f6f558c137b5fb3cd3905df380bacfd955ec13f67c1e6710cbb5c246a7e8d65a8289b2bff + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + "@isaacs/fs-minipass@npm:^4.0.0": version: 4.0.1 resolution: "@isaacs/fs-minipass@npm:4.0.1" @@ -694,6 +814,27 @@ __metadata: languageName: node linkType: hard +"@malept/cross-spawn-promise@npm:^2.0.0": + version: 2.0.0 + resolution: "@malept/cross-spawn-promise@npm:2.0.0" + dependencies: + cross-spawn: "npm:^7.0.1" + checksum: 10c0/84d60b8d467f4252114849f0a33c3763f07898335269eec5c94978ccac9d5680e1e268d993dd1a6d25a91476f9e0992759d7e1f385f9f3a090d862f9bb949603 + languageName: node + linkType: hard + +"@malept/flatpak-bundler@npm:^0.4.0": + version: 0.4.0 + resolution: "@malept/flatpak-bundler@npm:0.4.0" + dependencies: + debug: "npm:^4.1.1" + fs-extra: "npm:^9.0.0" + lodash: "npm:^4.17.15" + tmp-promise: "npm:^3.0.2" + checksum: 10c0/b3c87f6482b1956411af1118c771afb39cd9a0568fbb5e86015547ff6d68d2e73a7f0d74b75a57f0a156391c347c8d0adc1037e75172b92da72b96e0a05a2f4f + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -721,6 +862,33 @@ __metadata: languageName: node linkType: hard +"@npmcli/fs@npm:^2.1.0": + version: 2.1.2 + resolution: "@npmcli/fs@npm:2.1.2" + dependencies: + "@gar/promisify": "npm:^1.1.3" + semver: "npm:^7.3.5" + checksum: 10c0/c50d087733d0d8df23be24f700f104b19922a28677aa66fdbe06ff6af6431cc4a5bb1e27683cbc661a5dafa9bafdc603e6a0378121506dfcd394b2b6dd76a187 + languageName: node + linkType: hard + +"@npmcli/move-file@npm:^2.0.0": + version: 2.0.1 + resolution: "@npmcli/move-file@npm:2.0.1" + dependencies: + mkdirp: "npm:^1.0.4" + rimraf: "npm:^3.0.2" + checksum: 10c0/11b2151e6d1de6f6eb23128de5aa8a429fd9097d839a5190cb77aa47a6b627022c42d50fa7c47a00f1c9f8f0c1560092b09b061855d293fa0741a2a94cfb174d + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + "@playwright/test@npm:^1.61.1": version: 1.61.1 resolution: "@playwright/test@npm:1.61.1" @@ -930,6 +1098,13 @@ __metadata: languageName: node linkType: hard +"@tootallnate/once@npm:2": + version: 2.0.1 + resolution: "@tootallnate/once@npm:2.0.1" + checksum: 10c0/23b01a341485be711c602077936d70f8e695405bb88ab4433dc6d1e6cb4556401518789574d399eded790b70b27738136c9a8f02df7ae4219f4ba28bb22d586b + languageName: node + linkType: hard + "@types/babel__core@npm:^7.20.5": version: 7.20.5 resolution: "@types/babel__core@npm:7.20.5" @@ -993,6 +1168,15 @@ __metadata: languageName: node linkType: hard +"@types/debug@npm:^4.1.6": + version: 4.1.13 + resolution: "@types/debug@npm:4.1.13" + dependencies: + "@types/ms": "npm:*" + checksum: 10c0/e5e124021bbdb23a82727eee0a726ae0fc8a3ae1f57253cbcc47497f259afb357de7f6941375e773e1abbfa1604c1555b901a409d762ec2bb4c1612131d4afb7 + languageName: node + linkType: hard + "@types/deep-eql@npm:*": version: 4.0.2 resolution: "@types/deep-eql@npm:4.0.2" @@ -1007,6 +1191,15 @@ __metadata: languageName: node linkType: hard +"@types/fs-extra@npm:9.0.13, @types/fs-extra@npm:^9.0.11": + version: 9.0.13 + resolution: "@types/fs-extra@npm:9.0.13" + dependencies: + "@types/node": "npm:*" + checksum: 10c0/576d4e9d382393316ed815c593f7f5c157408ec5e184521d077fcb15d514b5a985245f153ef52142b9b976cb9bd8f801850d51238153ebd0dc9e96b7a7548588 + languageName: node + linkType: hard + "@types/http-cache-semantics@npm:*": version: 4.2.0 resolution: "@types/http-cache-semantics@npm:4.2.0" @@ -1023,6 +1216,13 @@ __metadata: languageName: node linkType: hard +"@types/ms@npm:*": + version: 2.1.0 + resolution: "@types/ms@npm:2.1.0" + checksum: 10c0/5ce692ffe1549e1b827d99ef8ff71187457e0eb44adbae38fdf7b9a74bae8d20642ee963c14516db1d35fa2652e65f47680fdf679dcbde52bbfadd021f497225 + languageName: node + linkType: hard + "@types/node@npm:*": version: 26.1.0 resolution: "@types/node@npm:26.1.0" @@ -1050,6 +1250,16 @@ __metadata: languageName: node linkType: hard +"@types/plist@npm:^3.0.1": + version: 3.0.5 + resolution: "@types/plist@npm:3.0.5" + dependencies: + "@types/node": "npm:*" + xmlbuilder: "npm:>=11.0.1" + checksum: 10c0/2a929f4482e3bea8c3288a46ae589a2ae2d01df5b7841ead7032d7baa79d79af6c875a5798c90705eea9306c2fb1544d7ed12ab3c905c5626d5dd5dc9f464b94 + languageName: node + linkType: hard + "@types/prop-types@npm:*": version: 15.7.15 resolution: "@types/prop-types@npm:15.7.15" @@ -1085,6 +1295,13 @@ __metadata: languageName: node linkType: hard +"@types/verror@npm:^1.10.3": + version: 1.10.11 + resolution: "@types/verror@npm:1.10.11" + checksum: 10c0/6d815cb2b76501f976cf9fa0feaf572e83b2ec3043eff92507c9976e52b7844453bd47c84f1298bf583f8e6568f39063a2541f80656f4af8e179072a711f9ab5 + languageName: node + linkType: hard + "@types/yauzl@npm:^2.9.1": version: 2.10.3 resolution: "@types/yauzl@npm:2.10.3" @@ -1193,6 +1410,20 @@ __metadata: languageName: node linkType: hard +"@xmldom/xmldom@npm:^0.9.10": + version: 0.9.10 + resolution: "@xmldom/xmldom@npm:0.9.10" + checksum: 10c0/38a9c9b95450d7fccebc61371c8e0b90ceaae992886484108333d29ccbd2640e3555b6af012f15ce1beb5067aeb40486659b6183fad38af179e82d28028bfc5d + languageName: node + linkType: hard + +"abbrev@npm:^1.0.0": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: 10c0/3f762677702acb24f65e813070e306c61fafe25d4b2583f9dfc935131f774863f3addd5741572ed576bd69cabe473c5af18e1e108b829cb7b6b4747884f726e6 + languageName: node + linkType: hard + "abbrev@npm:^5.0.0": version: 5.0.0 resolution: "abbrev@npm:5.0.0" @@ -1200,6 +1431,92 @@ __metadata: languageName: node linkType: hard +"agent-base@npm:6, agent-base@npm:^6.0.2": + version: 6.0.2 + resolution: "agent-base@npm:6.0.2" + dependencies: + debug: "npm:4" + checksum: 10c0/dc4f757e40b5f3e3d674bc9beb4f1048f4ee83af189bae39be99f57bf1f48dde166a8b0a5342a84b5944ee8e6ed1e5a9d801858f4ad44764e84957122fe46261 + languageName: node + linkType: hard + +"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": + version: 7.1.4 + resolution: "agent-base@npm:7.1.4" + checksum: 10c0/c2c9ab7599692d594b6a161559ada307b7a624fa4c7b03e3afdb5a5e31cd0e53269115b620fcab024c5ac6a6f37fa5eb2e004f076ad30f5f7e6b8b671f7b35fe + languageName: node + linkType: hard + +"agentkeepalive@npm:^4.2.1": + version: 4.6.0 + resolution: "agentkeepalive@npm:4.6.0" + dependencies: + humanize-ms: "npm:^1.2.1" + checksum: 10c0/235c182432f75046835b05f239708107138a40103deee23b6a08caee5136873709155753b394ec212e49e60e94a378189562cb01347765515cff61b692c69187 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: "npm:^2.0.0" + indent-string: "npm:^4.0.0" + checksum: 10c0/a42f67faa79e3e6687a4923050e7c9807db3848a037076f791d10e092677d65c1d2d863b7848560699f40fc0502c19f40963fb1cd1fb3d338a7423df8e45e039 + languageName: node + linkType: hard + +"ajv-keywords@npm:^3.4.1": + version: 3.5.2 + resolution: "ajv-keywords@npm:3.5.2" + peerDependencies: + ajv: ^6.9.1 + checksum: 10c0/0c57a47cbd656e8cdfd99d7c2264de5868918ffa207c8d7a72a7f63379d4333254b2ba03d69e3c035e996a3fd3eb6d5725d7a1597cca10694296e32510546360 + languageName: node + linkType: hard + +"ajv@npm:^6.10.0, ajv@npm:^6.12.0": + version: 6.15.0 + resolution: "ajv@npm:6.15.0" + dependencies: + fast-deep-equal: "npm:^3.1.1" + fast-json-stable-stringify: "npm:^2.0.0" + json-schema-traverse: "npm:^0.4.1" + uri-js: "npm:^4.2.2" + checksum: 10c0/67966499dd272ecde1c2e467084411132891523d057487587879d39ac04207f4351b7b2324c83198013967fbfa632c1612adc960114a30770fbe07a0773b32c2 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.2.2": + version: 6.2.2 + resolution: "ansi-regex@npm:6.2.2" + checksum: 10c0/05d4acb1d2f59ab2cf4b794339c7b168890d44dda4bf0ce01152a8da0213aca207802f930442ce8cd22d7a92f44907664aac6508904e75e038fa944d2601b30f + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0": + version: 6.2.3 + resolution: "ansi-styles@npm:6.2.3" + checksum: 10c0/23b8a4ce14e18fb854693b95351e286b771d23d8844057ed2e7d083cd3e708376c3323707ec6a24365f7d7eda3ca00327fe04092e29e551499ec4c8b7bfac868 + languageName: node + linkType: hard + "any-promise@npm:^1.0.0": version: 1.3.0 resolution: "any-promise@npm:1.3.0" @@ -1217,6 +1534,73 @@ __metadata: languageName: node linkType: hard +"app-builder-bin@npm:5.0.0-alpha.10": + version: 5.0.0-alpha.10 + resolution: "app-builder-bin@npm:5.0.0-alpha.10" + checksum: 10c0/1c913f09c78769454f7fffa7f0d5f3644169c3a4d258d0af0d050fc3368a57054490482b190d533c66cecf66c693281895f08f0702bdbe497199de40d235b48f + languageName: node + linkType: hard + +"app-builder-lib@npm:25.1.8": + version: 25.1.8 + resolution: "app-builder-lib@npm:25.1.8" + dependencies: + "@develar/schema-utils": "npm:~2.6.5" + "@electron/notarize": "npm:2.5.0" + "@electron/osx-sign": "npm:1.3.1" + "@electron/rebuild": "npm:3.6.1" + "@electron/universal": "npm:2.0.1" + "@malept/flatpak-bundler": "npm:^0.4.0" + "@types/fs-extra": "npm:9.0.13" + async-exit-hook: "npm:^2.0.1" + bluebird-lst: "npm:^1.0.9" + builder-util: "npm:25.1.7" + builder-util-runtime: "npm:9.2.10" + chromium-pickle-js: "npm:^0.2.0" + config-file-ts: "npm:0.2.8-rc1" + debug: "npm:^4.3.4" + dotenv: "npm:^16.4.5" + dotenv-expand: "npm:^11.0.6" + ejs: "npm:^3.1.8" + electron-publish: "npm:25.1.7" + form-data: "npm:^4.0.0" + fs-extra: "npm:^10.1.0" + hosted-git-info: "npm:^4.1.0" + is-ci: "npm:^3.0.0" + isbinaryfile: "npm:^5.0.0" + js-yaml: "npm:^4.1.0" + json5: "npm:^2.2.3" + lazy-val: "npm:^1.0.5" + minimatch: "npm:^10.0.0" + resedit: "npm:^1.7.0" + sanitize-filename: "npm:^1.6.3" + semver: "npm:^7.3.8" + tar: "npm:^6.1.12" + temp-file: "npm:^3.4.0" + peerDependencies: + dmg-builder: 25.1.8 + electron-builder-squirrel-windows: 25.1.8 + checksum: 10c0/e646d4b45872b51ae562788df87024cf0b0c09db66538712837043561712976dbd511ecc56c1172114f676b14518c23b78c412db22173a91cc42f23e88c556d0 + languageName: node + linkType: hard + +"aproba@npm:^1.0.3 || ^2.0.0": + version: 2.1.0 + resolution: "aproba@npm:2.1.0" + checksum: 10c0/ec8c1d351bac0717420c737eb062766fb63bde1552900e0f4fdad9eb064c3824fef23d1c416aa5f7a80f21ca682808e902d79b7c9ae756d342b5f1884f36932f + languageName: node + linkType: hard + +"are-we-there-yet@npm:^3.0.0": + version: 3.0.1 + resolution: "are-we-there-yet@npm:3.0.1" + dependencies: + delegates: "npm:^1.0.0" + readable-stream: "npm:^3.6.0" + checksum: 10c0/8373f289ba42e4b5ec713bb585acdac14b5702c75f2a458dc985b9e4fa5762bc5b46b40a21b72418a3ed0cfb5e35bdc317ef1ae132f3035f633d581dd03168c3 + languageName: node + linkType: hard + "arg@npm:^5.0.2": version: 5.0.2 resolution: "arg@npm:5.0.2" @@ -1224,6 +1608,20 @@ __metadata: languageName: node linkType: hard +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"assert-plus@npm:^1.0.0": + version: 1.0.0 + resolution: "assert-plus@npm:1.0.0" + checksum: 10c0/b194b9d50c3a8f872ee85ab110784911e696a4d49f7ee6fc5fb63216dedbefd2c55999c70cb2eaeb4cf4a0e0338b44e9ace3627117b5bf0d42460e9132f21b91 + languageName: node + linkType: hard + "assertion-error@npm:^2.0.1": version: 2.0.1 resolution: "assertion-error@npm:2.0.1" @@ -1231,6 +1629,55 @@ __metadata: languageName: node linkType: hard +"astral-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "astral-regex@npm:2.0.0" + checksum: 10c0/f63d439cc383db1b9c5c6080d1e240bd14dae745f15d11ec5da863e182bbeca70df6c8191cffef5deba0b566ef98834610a68be79ac6379c95eeb26e1b310e25 + languageName: node + linkType: hard + +"async-exit-hook@npm:^2.0.1": + version: 2.0.1 + resolution: "async-exit-hook@npm:2.0.1" + checksum: 10c0/81407a440ef0aab328df2369f1a9d957ee53e9a5a43e3b3dcb2be05151a68de0e4ff5e927f4718c88abf85800731f5b3f69a47a6642ce135f5e7d43ca0fce41d + languageName: node + linkType: hard + +"async-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-function@npm:1.0.0" + checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73 + languageName: node + linkType: hard + +"async-generator-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-generator-function@npm:1.0.0" + checksum: 10c0/2c50ef856c543ad500d8d8777d347e3c1ba623b93e99c9263ecc5f965c1b12d2a140e2ab6e43c3d0b85366110696f28114649411cbcd10b452a92a2318394186 + languageName: node + linkType: hard + +"async@npm:^3.2.6": + version: 3.2.6 + resolution: "async@npm:3.2.6" + checksum: 10c0/36484bb15ceddf07078688d95e27076379cc2f87b10c03b6dd8a83e89475a3c8df5848859dd06a4c95af1e4c16fc973de0171a77f18ea00be899aca2a4f85e70 + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: 10c0/d73e2ddf20c4eb9337e1b3df1a0f6159481050a5de457c55b14ea2e5cb6d90bb69e004c9af54737a5ee0917fcf2c9e25de67777bbe58261847846066ba75bc9d + languageName: node + linkType: hard + +"at-least-node@npm:^1.0.0": + version: 1.0.0 + resolution: "at-least-node@npm:1.0.0" + checksum: 10c0/4c058baf6df1bc5a1697cf182e2029c58cd99975288a13f9e70068ef5d6f4e1f1fd7c4d2c3c4912eae44797d1725be9700995736deca441b39f3e66d8dee97ef + languageName: node + linkType: hard + "autoprefixer@npm:^10.4.20": version: 10.5.2 resolution: "autoprefixer@npm:10.5.2" @@ -1248,6 +1695,27 @@ __metadata: languageName: node linkType: hard +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"balanced-match@npm:^4.0.2": + version: 4.0.4 + resolution: "balanced-match@npm:4.0.4" + checksum: 10c0/07e86102a3eb2ee2a6a1a89164f29d0dbaebd28f2ca3f5ca786f36b8b23d9e417eb3be45a4acf754f837be5ac0a2317de90d3fcb7f4f4dc95720a1f36b26a17b + languageName: node + linkType: hard + +"base64-js@npm:^1.3.1, base64-js@npm:^1.5.1": + version: 1.5.1 + resolution: "base64-js@npm:1.5.1" + checksum: 10c0/f23823513b63173a001030fae4f2dabe283b99a9d324ade3ad3d148e218134676f1ee8568c877cd79ec1c53158dcf2d2ba527a97c606618928ba99dd930102bf + languageName: node + linkType: hard + "baseline-browser-mapping@npm:^2.10.42": version: 2.10.42 resolution: "baseline-browser-mapping@npm:2.10.42" @@ -1264,6 +1732,33 @@ __metadata: languageName: node linkType: hard +"bl@npm:^4.1.0": + version: 4.1.0 + resolution: "bl@npm:4.1.0" + dependencies: + buffer: "npm:^5.5.0" + inherits: "npm:^2.0.4" + readable-stream: "npm:^3.4.0" + checksum: 10c0/02847e1d2cb089c9dc6958add42e3cdeaf07d13f575973963335ac0fdece563a50ac770ac4c8fa06492d2dd276f6cc3b7f08c7cd9c7a7ad0f8d388b2a28def5f + languageName: node + linkType: hard + +"bluebird-lst@npm:^1.0.9": + version: 1.0.9 + resolution: "bluebird-lst@npm:1.0.9" + dependencies: + bluebird: "npm:^3.5.5" + checksum: 10c0/701eef18f37a53277adeacb21281a70fc4536e521fe0deb665a284f4d8480056c6932988c3dfa6a0c46b4d55f4599f716a15873f30ed5fc2470928093438f87e + languageName: node + linkType: hard + +"bluebird@npm:^3.5.5": + version: 3.7.2 + resolution: "bluebird@npm:3.7.2" + checksum: 10c0/680de03adc54ff925eaa6c7bb9a47a0690e8b5de60f4792604aae8ed618c65e6b63a7893b57ca924beaf53eee69c5af4f8314148c08124c550fe1df1add897d2 + languageName: node + linkType: hard + "boolean@npm:^3.0.1": version: 3.2.0 resolution: "boolean@npm:3.2.0" @@ -1271,6 +1766,34 @@ __metadata: languageName: node linkType: hard +"brace-expansion@npm:^1.1.7": + version: 1.1.16 + resolution: "brace-expansion@npm:1.1.16" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10c0/b2a915bbedbf4e45840d1fb9a4d391bbf26a79475bd134714d3cee34f1f0edb0ce982738028843be5fbaf8039429f71fa487df8c915b6065ced542c83e58fae6 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1, brace-expansion@npm:^2.0.2": + version: 2.1.2 + resolution: "brace-expansion@npm:2.1.2" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10c0/5442ecab84045d21826268bc56c81a6ef4215327ee1f5ee153f67928e93f7a915d130ecec9966623143277fa3cce036ebb50020024bcc4d78853cdd6af9a19f8 + languageName: node + linkType: hard + +"brace-expansion@npm:^5.0.5": + version: 5.0.7 + resolution: "brace-expansion@npm:5.0.7" + dependencies: + balanced-match: "npm:^4.0.2" + checksum: 10c0/4769109c3c082de178e449a371bcad50d51ab468f644bce2dd9188efe0cf0a080ed102105d7fc8577382cedc45bad7e6443a91bf3d8102264ee8cf927dbaf205 + languageName: node + linkType: hard + "braces@npm:^3.0.3, braces@npm:~3.0.2": version: 3.0.3 resolution: "braces@npm:3.0.3" @@ -1302,6 +1825,57 @@ __metadata: languageName: node linkType: hard +"buffer-from@npm:^1.0.0": + version: 1.1.2 + resolution: "buffer-from@npm:1.1.2" + checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 + languageName: node + linkType: hard + +"buffer@npm:^5.1.0, buffer@npm:^5.5.0": + version: 5.7.1 + resolution: "buffer@npm:5.7.1" + dependencies: + base64-js: "npm:^1.3.1" + ieee754: "npm:^1.1.13" + checksum: 10c0/27cac81cff434ed2876058d72e7c4789d11ff1120ef32c9de48f59eab58179b66710c488987d295ae89a228f835fc66d088652dffeb8e3ba8659f80eb091d55e + languageName: node + linkType: hard + +"builder-util-runtime@npm:9.2.10": + version: 9.2.10 + resolution: "builder-util-runtime@npm:9.2.10" + dependencies: + debug: "npm:^4.3.4" + sax: "npm:^1.2.4" + checksum: 10c0/28681b8037ad0fb6a33c79532656f7eeddcf7c1d3c922253630d8794929c20a78adc6e4028111708643a1d10e25812c65ac1241886570ff12d6aa6308abe9015 + languageName: node + linkType: hard + +"builder-util@npm:25.1.7": + version: 25.1.7 + resolution: "builder-util@npm:25.1.7" + dependencies: + 7zip-bin: "npm:~5.2.0" + "@types/debug": "npm:^4.1.6" + app-builder-bin: "npm:5.0.0-alpha.10" + bluebird-lst: "npm:^1.0.9" + builder-util-runtime: "npm:9.2.10" + chalk: "npm:^4.1.2" + cross-spawn: "npm:^7.0.3" + debug: "npm:^4.3.4" + fs-extra: "npm:^10.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.0" + is-ci: "npm:^3.0.0" + js-yaml: "npm:^4.1.0" + source-map-support: "npm:^0.5.19" + stat-mode: "npm:^1.0.0" + temp-file: "npm:^3.4.0" + checksum: 10c0/30766b5fc6cacf90f20086bc2cff6a4a1b3e149a2c1072ce50de2e28c4608211aa3687a60208fd462a6ab4a3f6723a236e311aa5b6524102d75528e4a8a2b482 + languageName: node + linkType: hard + "cac@npm:^6.7.14": version: 6.7.14 resolution: "cac@npm:6.7.14" @@ -1309,6 +1883,32 @@ __metadata: languageName: node linkType: hard +"cacache@npm:^16.1.0": + version: 16.1.3 + resolution: "cacache@npm:16.1.3" + dependencies: + "@npmcli/fs": "npm:^2.1.0" + "@npmcli/move-file": "npm:^2.0.0" + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.1.0" + glob: "npm:^8.0.1" + infer-owner: "npm:^1.0.4" + lru-cache: "npm:^7.7.1" + minipass: "npm:^3.1.6" + minipass-collect: "npm:^1.0.2" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + mkdirp: "npm:^1.0.4" + p-map: "npm:^4.0.0" + promise-inflight: "npm:^1.0.1" + rimraf: "npm:^3.0.2" + ssri: "npm:^9.0.0" + tar: "npm:^6.1.11" + unique-filename: "npm:^2.0.0" + checksum: 10c0/cdf6836e1c457d2a5616abcaf5d8240c0346b1f5bd6fdb8866b9d84b6dff0b54e973226dc11e0d099f35394213d24860d1989c8358d2a41b39eb912b3000e749 + languageName: node + linkType: hard + "cacheable-lookup@npm:^5.0.3": version: 5.0.4 resolution: "cacheable-lookup@npm:5.0.4" @@ -1331,6 +1931,16 @@ __metadata: languageName: node linkType: hard +"call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind-apply-helpers@npm:1.0.2" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938 + languageName: node + linkType: hard + "camelcase-css@npm:^2.0.1": version: 2.0.1 resolution: "camelcase-css@npm:2.0.1" @@ -1358,6 +1968,16 @@ __metadata: languageName: node linkType: hard +"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + "check-error@npm:^2.1.1": version: 2.1.3 resolution: "check-error@npm:2.1.3" @@ -1384,6 +2004,13 @@ __metadata: languageName: node linkType: hard +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: 10c0/594754e1303672171cc04e50f6c398ae16128eb134a88f801bf5354fd96f205320f23536a045d9abd8b51024a149696e51231565891d4efdab8846021ecf88e6 + languageName: node + linkType: hard + "chownr@npm:^3.0.0": version: 3.0.0 resolution: "chownr@npm:3.0.0" @@ -1391,6 +2018,64 @@ __metadata: languageName: node linkType: hard +"chromium-pickle-js@npm:^0.2.0": + version: 0.2.0 + resolution: "chromium-pickle-js@npm:0.2.0" + checksum: 10c0/0a95bd280acdf05b0e08fa1a0e1db58c815dd24e92d639add8f494d23a8a49c26e4829721224d68f2f0e57a69047714db29bcff6deb5d029332321223416cb29 + languageName: node + linkType: hard + +"ci-info@npm:^3.2.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 10c0/6f0109e36e111684291d46123d491bc4e7b7a1934c3a20dea28cba89f1d4a03acd892f5f6a81ed3855c38647e285a150e3c9ba062e38943bef57fee6c1554c3a + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: 10c0/1f90262d5f6230a17e27d0c190b09d47ebe7efdd76a03b5a1127863f7b3c9aec4c3e6c8bb3a7bbf81d553d56a1fd35728f5a8ef4c63f867ac8d690109742a8c1 + languageName: node + linkType: hard + +"cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: "npm:^3.1.0" + checksum: 10c0/92a2f98ff9037d09be3dfe1f0d749664797fb674bf388375a2207a1203b69d41847abf16434203e0089212479e47a358b13a0222ab9fccfe8e2644a7ccebd111 + languageName: node + linkType: hard + +"cli-spinners@npm:^2.5.0": + version: 2.9.2 + resolution: "cli-spinners@npm:2.9.2" + checksum: 10c0/907a1c227ddf0d7a101e7ab8b300affc742ead4b4ebe920a5bf1bc6d45dce2958fcd195eb28fa25275062fe6fa9b109b93b63bc8033396ed3bcb50297008b3a3 + languageName: node + linkType: hard + +"cli-truncate@npm:^2.1.0": + version: 2.1.0 + resolution: "cli-truncate@npm:2.1.0" + dependencies: + slice-ansi: "npm:^3.0.0" + string-width: "npm:^4.2.0" + checksum: 10c0/dfaa3df675bcef7a3254773de768712b590250420345a4c7ac151f041a4bacb4c25864b1377bee54a39b5925a030c00eabf014e312e3a4ac130952ed3b3879e9 + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + languageName: node + linkType: hard + "clone-response@npm:^1.0.2": version: 1.0.3 resolution: "clone-response@npm:1.0.3" @@ -1400,6 +2085,47 @@ __metadata: languageName: node linkType: hard +"clone@npm:^1.0.2": + version: 1.0.4 + resolution: "clone@npm:1.0.4" + checksum: 10c0/2176952b3649293473999a95d7bebfc9dc96410f6cbd3d2595cf12fd401f63a4bf41a7adbfd3ab2ff09ed60cb9870c58c6acdd18b87767366fabfc163700f13b + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + +"color-support@npm:^1.1.3": + version: 1.1.3 + resolution: "color-support@npm:1.1.3" + bin: + color-support: bin.js + checksum: 10c0/8ffeaa270a784dc382f62d9be0a98581db43e11eee301af14734a6d089bd456478b1a8b3e7db7ca7dc5b18a75f828f775c44074020b51c05fc00e6d0992b1cc6 + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.8": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: "npm:~1.0.0" + checksum: 10c0/0dbb829577e1b1e839fa82b40c07ffaf7de8a09b935cadd355a73652ae70a88b4320db322f6634a4ad93424292fa80973ac6480986247f1734a1137debf271d5 + languageName: node + linkType: hard + "commander@npm:^4.0.0": version: 4.1.1 resolution: "commander@npm:4.1.1" @@ -1407,12 +2133,50 @@ __metadata: languageName: node linkType: hard +"commander@npm:^5.0.0": + version: 5.1.0 + resolution: "commander@npm:5.1.0" + checksum: 10c0/da9d71dbe4ce039faf1fe9eac3771dca8c11d66963341f62602f7b66e36d2a3f8883407af4f9a37b1db1a55c59c0c1325f186425764c2e963dc1d67aec2a4b6d + languageName: node + linkType: hard + "commitea@workspace:.": version: 0.0.0-use.local resolution: "commitea@workspace:." languageName: unknown linkType: soft +"compare-version@npm:^0.1.2": + version: 0.1.2 + resolution: "compare-version@npm:0.1.2" + checksum: 10c0/f38b853cf0d244c0af5f444409abde3d2198cd97312efa1dbc4ab41b520009327c2a63db59bbaf2d69288eff6167ef22be9788dc5476157d073ecdff1a8eeb2d + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + languageName: node + linkType: hard + +"config-file-ts@npm:0.2.8-rc1": + version: 0.2.8-rc1 + resolution: "config-file-ts@npm:0.2.8-rc1" + dependencies: + glob: "npm:^10.3.12" + typescript: "npm:^5.4.3" + checksum: 10c0/9839a8e33111156665c45c4e5dd6bfa81ee80596f9dc0a078465769b951e28c0fa4bd75bb9bc56f747da285b993fb7998c4c07c0f368ab6bdb019d203764cdc8 + languageName: node + linkType: hard + +"console-control-strings@npm:^1.1.0": + version: 1.1.0 + resolution: "console-control-strings@npm:1.1.0" + checksum: 10c0/7ab51d30b52d461412cd467721bb82afe695da78fff8f29fe6f6b9cbaac9a2328e27a22a966014df9532100f6dd85370460be8130b9c677891ba36d96a343f50 + languageName: node + linkType: hard + "convert-source-map@npm:^2.0.0": version: 2.0.0 resolution: "convert-source-map@npm:2.0.0" @@ -1420,6 +2184,33 @@ __metadata: languageName: node linkType: hard +"core-util-is@npm:1.0.2": + version: 1.0.2 + resolution: "core-util-is@npm:1.0.2" + checksum: 10c0/980a37a93956d0de8a828ce508f9b9e3317039d68922ca79995421944146700e4aaf490a6dbfebcb1c5292a7184600c7710b957d724be1e37b8254c6bc0fe246 + languageName: node + linkType: hard + +"crc@npm:^3.8.0": + version: 3.8.0 + resolution: "crc@npm:3.8.0" + dependencies: + buffer: "npm:^5.1.0" + checksum: 10c0/1a0da36e5f95b19cd2a7b2eab5306a08f1c47bdd22da6f761ab764e2222e8e90a877398907cea94108bd5e41a6d311ea84d7914eaca67da2baa4050bd6384b3d + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 + languageName: node + linkType: hard + "cssesc@npm:^3.0.0": version: 3.0.0 resolution: "cssesc@npm:3.0.0" @@ -1436,7 +2227,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.4.1": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.4.1": version: 4.4.3 resolution: "debug@npm:4.4.3" dependencies: @@ -1464,6 +2255,15 @@ __metadata: languageName: node linkType: hard +"defaults@npm:^1.0.3": + version: 1.0.4 + resolution: "defaults@npm:1.0.4" + dependencies: + clone: "npm:^1.0.2" + checksum: 10c0/9cfbe498f5c8ed733775db62dfd585780387d93c17477949e1670bfcfb9346e0281ce8c4bf9f4ac1fc0f9b851113bd6dc9e41182ea1644ccd97de639fa13c35a + languageName: node + linkType: hard + "defer-to-connect@npm:^2.0.0": version: 2.0.1 resolution: "defer-to-connect@npm:2.0.1" @@ -1493,6 +2293,27 @@ __metadata: languageName: node linkType: hard +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: 10c0/d758899da03392e6712f042bec80aa293bbe9e9ff1b2634baae6a360113e708b91326594c8a486d475c69d6259afb7efacdc3537bfcda1c6c648e390ce601b19 + languageName: node + linkType: hard + +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: 10c0/ba05874b91148e1db4bf254750c042bf2215febd23a6d3cda2e64896aef79745fbd4b9996488bd3cafb39ce19dbce0fd6e3b6665275638befffe1c9b312b91b5 + languageName: node + linkType: hard + +"detect-libc@npm:^2.0.1": + version: 2.1.2 + resolution: "detect-libc@npm:2.1.2" + checksum: 10c0/acc675c29a5649fa1fb6e255f993b8ee829e510b6b56b0910666949c80c364738833417d0edb5f90e4e46be17228b0f2b66a010513984e18b15deeeac49369c4 + languageName: node + linkType: hard + "detect-node@npm:^2.0.4": version: 2.1.0 resolution: "detect-node@npm:2.1.0" @@ -1507,6 +2328,16 @@ __metadata: languageName: node linkType: hard +"dir-compare@npm:^4.2.0": + version: 4.2.0 + resolution: "dir-compare@npm:4.2.0" + dependencies: + minimatch: "npm:^3.0.5" + p-limit: "npm:^3.1.0 " + checksum: 10c0/615c6f6804095f912d98d49f9b56798ceebbc83612d660b7faa6bdb4894d978c02cfa1a30853a7319a269141e4f2a2034d4988a1985b58382614a3942f94e5b2 + languageName: node + linkType: hard + "dlv@npm:^1.1.3": version: 1.1.3 resolution: "dlv@npm:1.1.3" @@ -1514,6 +2345,123 @@ __metadata: languageName: node linkType: hard +"dmg-builder@npm:25.1.8": + version: 25.1.8 + resolution: "dmg-builder@npm:25.1.8" + dependencies: + app-builder-lib: "npm:25.1.8" + builder-util: "npm:25.1.7" + builder-util-runtime: "npm:9.2.10" + dmg-license: "npm:^1.0.11" + fs-extra: "npm:^10.1.0" + iconv-lite: "npm:^0.6.2" + js-yaml: "npm:^4.1.0" + dependenciesMeta: + dmg-license: + optional: true + checksum: 10c0/a472aba3398664259713f4baf6557509ce0a3832ff49fae2f580e97168a33dcee8f99be2f990a15d795cd28b5477b10fbb8a17bed4f8d410c8181b4b9e2d0063 + languageName: node + linkType: hard + +"dmg-license@npm:^1.0.11": + version: 1.0.11 + resolution: "dmg-license@npm:1.0.11" + dependencies: + "@types/plist": "npm:^3.0.1" + "@types/verror": "npm:^1.10.3" + ajv: "npm:^6.10.0" + crc: "npm:^3.8.0" + iconv-corefoundation: "npm:^1.1.7" + plist: "npm:^3.0.4" + smart-buffer: "npm:^4.0.2" + verror: "npm:^1.10.0" + bin: + dmg-license: bin/dmg-license.js + conditions: os=darwin + languageName: node + linkType: hard + +"dotenv-expand@npm:^11.0.6": + version: 11.0.7 + resolution: "dotenv-expand@npm:11.0.7" + dependencies: + dotenv: "npm:^16.4.5" + checksum: 10c0/d80b8a7be085edf351270b96ac0e794bc3ddd7f36157912939577cb4d33ba6492ebee349d59798b71b90e36f498d24a2a564fb4aa00073b2ef4c2a3a49c467b1 + languageName: node + linkType: hard + +"dotenv@npm:^16.4.5": + version: 16.6.1 + resolution: "dotenv@npm:16.6.1" + checksum: 10c0/15ce56608326ea0d1d9414a5c8ee6dcf0fffc79d2c16422b4ac2268e7e2d76ff5a572d37ffe747c377de12005f14b3cc22361e79fc7f1061cce81f77d2c973dc + languageName: node + linkType: hard + +"dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.2.0" + checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + +"ejs@npm:^3.1.8": + version: 3.1.10 + resolution: "ejs@npm:3.1.10" + dependencies: + jake: "npm:^10.8.5" + bin: + ejs: bin/cli.js + checksum: 10c0/52eade9e68416ed04f7f92c492183340582a36482836b11eab97b159fcdcfdedc62233a1bf0bf5e5e1851c501f2dca0e2e9afd111db2599e4e7f53ee29429ae1 + languageName: node + linkType: hard + +"electron-builder@npm:^25": + version: 25.1.8 + resolution: "electron-builder@npm:25.1.8" + dependencies: + app-builder-lib: "npm:25.1.8" + builder-util: "npm:25.1.7" + builder-util-runtime: "npm:9.2.10" + chalk: "npm:^4.1.2" + dmg-builder: "npm:25.1.8" + fs-extra: "npm:^10.1.0" + is-ci: "npm:^3.0.0" + lazy-val: "npm:^1.0.5" + simple-update-notifier: "npm:2.0.0" + yargs: "npm:^17.6.2" + bin: + electron-builder: cli.js + install-app-deps: install-app-deps.js + checksum: 10c0/9602a19f8c647fb75b07e44dc856012d2b1fe1afcb257ffd24cf17e07d7ae3b51405cf31da10403965ddcc7b194d60aca6bc5d7890e367b1be2ec95219edcbe8 + languageName: node + linkType: hard + +"electron-publish@npm:25.1.7": + version: 25.1.7 + resolution: "electron-publish@npm:25.1.7" + dependencies: + "@types/fs-extra": "npm:^9.0.11" + builder-util: "npm:25.1.7" + builder-util-runtime: "npm:9.2.10" + chalk: "npm:^4.1.2" + fs-extra: "npm:^10.1.0" + lazy-val: "npm:^1.0.5" + mime: "npm:^2.5.2" + checksum: 10c0/cdb58049c24b38ba7879514224cfd2245fd364e125391ed6e12eeed2a96d95ede192a1ad961ff1287f344ca7b3b62e1096ce4a4c41be40fd402d0688fcf5c505 + languageName: node + linkType: hard + "electron-to-chromium@npm:^1.5.387": version: 1.5.389 resolution: "electron-to-chromium@npm:1.5.389" @@ -1556,6 +2504,29 @@ __metadata: languageName: node linkType: hard +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + "end-of-stream@npm:^1.1.0": version: 1.4.5 resolution: "end-of-stream@npm:1.4.5" @@ -1572,7 +2543,14 @@ __metadata: languageName: node linkType: hard -"es-define-property@npm:^1.0.0": +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": version: 1.0.1 resolution: "es-define-property@npm:1.0.1" checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c @@ -1593,6 +2571,27 @@ __metadata: languageName: node linkType: hard +"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": + version: 1.1.2 + resolution: "es-object-atoms@npm:1.1.2" + dependencies: + es-errors: "npm:^1.3.0" + checksum: 10c0/1772861f094f739d6f41b579cfb9a18579daffeb434552a370a5fbef50a32d22227e27b63fdbb757b7ddd429d1b42fe52ccae7966d9302a2ec221b6f1b41bbc4 + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" + dependencies: + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af + languageName: node + linkType: hard + "es6-error@npm:^4.1.1": version: 4.1.1 resolution: "es6-error@npm:4.1.1" @@ -1689,7 +2688,7 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.27.0 || ^0.28.0": +"esbuild@npm:^0.27.0 || ^0.28.0, esbuild@npm:~0.28.0": version: 0.28.1 resolution: "esbuild@npm:0.28.1" dependencies: @@ -1778,7 +2777,7 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.2.0": +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 @@ -1832,6 +2831,20 @@ __metadata: languageName: node linkType: hard +"extsprintf@npm:^1.2.0": + version: 1.4.1 + resolution: "extsprintf@npm:1.4.1" + checksum: 10c0/e10e2769985d0e9b6c7199b053a9957589d02e84de42832c295798cb422a025e6d4a92e0259c1fb4d07090f5bfde6b55fd9f880ac5855bd61d775f8ab75a7ab0 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + languageName: node + linkType: hard + "fast-glob@npm:^3.3.2": version: 3.3.3 resolution: "fast-glob@npm:3.3.3" @@ -1845,6 +2858,13 @@ __metadata: languageName: node linkType: hard +"fast-json-stable-stringify@npm:^2.0.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + languageName: node + linkType: hard + "fastq@npm:^1.6.0": version: 1.20.1 resolution: "fastq@npm:1.20.1" @@ -1875,6 +2895,15 @@ __metadata: languageName: node linkType: hard +"filelist@npm:^1.0.4": + version: 1.0.6 + resolution: "filelist@npm:1.0.6" + dependencies: + minimatch: "npm:^5.0.1" + checksum: 10c0/6ee725bec3e1936d680a45f14439b224d9f7c71658c145addcf551dd82f03d608522eb6b191aa086b392bc3e52ed4ce0ed8d78e24b203e6c5e867560a05d1121 + languageName: node + linkType: hard + "fill-range@npm:^7.1.1": version: 7.1.1 resolution: "fill-range@npm:7.1.1" @@ -1884,6 +2913,29 @@ __metadata: languageName: node linkType: hard +"foreground-child@npm:^3.1.0": + version: 3.3.1 + resolution: "foreground-child@npm:3.3.1" + dependencies: + cross-spawn: "npm:^7.0.6" + signal-exit: "npm:^4.0.1" + checksum: 10c0/8986e4af2430896e65bc2788d6679067294d6aee9545daefc84923a0a4b399ad9c7a3ea7bd8c0b2b80fdf4a92de4c69df3f628233ff3224260e9c1541a9e9ed3 + languageName: node + linkType: hard + +"form-data@npm:^4.0.0": + version: 4.0.6 + resolution: "form-data@npm:4.0.6" + dependencies: + asynckit: "npm:^0.4.0" + combined-stream: "npm:^1.0.8" + es-set-tostringtag: "npm:^2.1.0" + hasown: "npm:^2.0.4" + mime-types: "npm:^2.1.35" + checksum: 10c0/43947a77bf0ff45c6ceed789778982d47a3f3e720a74b71721174ebf3310a5f1a8be1d6b38a3ee3688e8a18a2c4273073ec0844cd37efda3eaf46d41c9c318ff + languageName: node + linkType: hard + "fraction.js@npm:^5.3.4": version: 5.3.4 resolution: "fraction.js@npm:5.3.4" @@ -1891,6 +2943,28 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^10.0.0, fs-extra@npm:^10.1.0": + version: 10.1.0 + resolution: "fs-extra@npm:10.1.0" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/5f579466e7109719d162a9249abbeffe7f426eb133ea486e020b89bc6d67a741134076bf439983f2eb79276ceaf6bd7b7c1e43c3fd67fe889863e69072fb0a5e + languageName: node + linkType: hard + +"fs-extra@npm:^11.1.1": + version: 11.3.6 + resolution: "fs-extra@npm:11.3.6" + dependencies: + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/191c96bf71519fe08595f7920b6e568f6e44b48ed968624f35cb3bb7f4f9b05718b99cd6bf81938c0f7b1daa6d151383c33e0cbfdfe4d95419d7ea121de8e91a + languageName: node + linkType: hard + "fs-extra@npm:^8.1.0": version: 8.1.0 resolution: "fs-extra@npm:8.1.0" @@ -1902,6 +2976,34 @@ __metadata: languageName: node linkType: hard +"fs-extra@npm:^9.0.0, fs-extra@npm:^9.0.1": + version: 9.1.0 + resolution: "fs-extra@npm:9.1.0" + dependencies: + at-least-node: "npm:^1.0.0" + graceful-fs: "npm:^4.2.0" + jsonfile: "npm:^6.0.1" + universalify: "npm:^2.0.0" + checksum: 10c0/9b808bd884beff5cb940773018179a6b94a966381d005479f00adda6b44e5e3d4abf765135773d849cc27efe68c349e4a7b86acd7d3306d5932c14f3a4b17a92 + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/703d16522b8282d7299337539c3ed6edddd1afe82435e4f5b76e34a79cd74e488a8a0e26a636afc2440e1a23b03878e2122e3a2cfe375a5cf63c37d92b86a004 + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 + languageName: node + linkType: hard + "fsevents@npm:2.3.2": version: 2.3.2 resolution: "fsevents@npm:2.3.2" @@ -1947,6 +3049,29 @@ __metadata: languageName: node linkType: hard +"gauge@npm:^4.0.3": + version: 4.0.4 + resolution: "gauge@npm:4.0.4" + dependencies: + aproba: "npm:^1.0.3 || ^2.0.0" + color-support: "npm:^1.1.3" + console-control-strings: "npm:^1.1.0" + has-unicode: "npm:^2.0.1" + signal-exit: "npm:^3.0.7" + string-width: "npm:^4.2.3" + strip-ansi: "npm:^6.0.1" + wide-align: "npm:^1.1.5" + checksum: 10c0/ef10d7981113d69225135f994c9f8c4369d945e64a8fc721d655a3a38421b738c9fe899951721d1b47b73c41fdb5404ac87cc8903b2ecbed95d2800363e7e58c + languageName: node + linkType: hard + +"generator-function@npm:^2.0.0": + version: 2.0.1 + resolution: "generator-function@npm:2.0.1" + checksum: 10c0/8a9f59df0f01cfefafdb3b451b80555e5cf6d76487095db91ac461a0e682e4ff7a9dbce15f4ecec191e53586d59eece01949e05a4b4492879600bbbe8e28d6b8 + languageName: node + linkType: hard + "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" @@ -1954,6 +3079,44 @@ __metadata: languageName: node linkType: hard +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.2.6": + version: 1.3.1 + resolution: "get-intrinsic@npm:1.3.1" + dependencies: + async-function: "npm:^1.0.0" + async-generator-function: "npm:^1.0.0" + call-bind-apply-helpers: "npm:^1.0.2" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + function-bind: "npm:^1.1.2" + generator-function: "npm:^2.0.0" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + math-intrinsics: "npm:^1.1.0" + checksum: 10c0/9f4ab0cf7efe0fd2c8185f52e6f637e708f3a112610c88869f8f041bb9ecc2ce44bf285dfdbdc6f4f7c277a5b88d8e94a432374d97cca22f3de7fc63795deb5d + languageName: node + linkType: hard + +"get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: "npm:^1.0.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c + languageName: node + linkType: hard + "get-stream@npm:^5.1.0": version: 5.2.0 resolution: "get-stream@npm:5.2.0" @@ -1981,6 +3144,49 @@ __metadata: languageName: node linkType: hard +"glob@npm:^10.3.12": + version: 10.5.0 + resolution: "glob@npm:10.5.0" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^1.11.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/100705eddbde6323e7b35e1d1ac28bcb58322095bd8e63a7d0bef1a2cdafe0d0f7922a981b2b48369a4f8c1b077be5c171804534c3509dfe950dde15fbe6d828 + languageName: node + linkType: hard + +"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.1.6": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe + languageName: node + linkType: hard + +"glob@npm:^8.0.1": + version: 8.1.0 + resolution: "glob@npm:8.1.0" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^5.0.1" + once: "npm:^1.3.0" + checksum: 10c0/cb0b5cab17a59c57299376abe5646c7070f8acb89df5595b492dba3bfb43d301a46c01e5695f01154e6553168207cb60d4eaf07d3be4bc3eb9b0457c5c561d0f + languageName: node + linkType: hard + "global-agent@npm:^3.0.0": version: 3.0.0 resolution: "global-agent@npm:3.0.0" @@ -2005,14 +3211,14 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.0.1": +"gopd@npm:^1.0.1, gopd@npm:^1.2.0": version: 1.2.0 resolution: "gopd@npm:1.2.0" checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead languageName: node linkType: hard -"got@npm:^11.8.5": +"got@npm:^11.7.0, got@npm:^11.8.5": version: 11.8.6 resolution: "got@npm:11.8.6" dependencies: @@ -2038,6 +3244,13 @@ __metadata: languageName: node linkType: hard +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + languageName: node + linkType: hard + "has-property-descriptors@npm:^1.0.0": version: 1.0.2 resolution: "has-property-descriptors@npm:1.0.2" @@ -2047,7 +3260,30 @@ __metadata: languageName: node linkType: hard -"hasown@npm:^2.0.3": +"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c + languageName: node + linkType: hard + +"has-unicode@npm:^2.0.1": + version: 2.0.1 + resolution: "has-unicode@npm:2.0.1" + checksum: 10c0/ebdb2f4895c26bb08a8a100b62d362e49b2190bcfd84b76bc4be1a3bd4d254ec52d0dd9f2fbcc093fc5eb878b20c52146f9dfd33e2686ed28982187be593b47c + languageName: node + linkType: hard + +"hasown@npm:^2.0.2, hasown@npm:^2.0.3, hasown@npm:^2.0.4": version: 2.0.4 resolution: "hasown@npm:2.0.4" dependencies: @@ -2056,13 +3292,43 @@ __metadata: languageName: node linkType: hard -"http-cache-semantics@npm:^4.0.0": +"hosted-git-info@npm:^4.1.0": + version: 4.1.0 + resolution: "hosted-git-info@npm:4.1.0" + dependencies: + lru-cache: "npm:^6.0.0" + checksum: 10c0/150fbcb001600336d17fdbae803264abed013548eea7946c2264c49ebe2ebd8c4441ba71dd23dd8e18c65de79d637f98b22d4760ba5fb2e0b15d62543d0fff07 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.0.0, http-cache-semantics@npm:^4.1.0": version: 4.2.0 resolution: "http-cache-semantics@npm:4.2.0" checksum: 10c0/45b66a945cf13ec2d1f29432277201313babf4a01d9e52f44b31ca923434083afeca03f18417f599c9ab3d0e7b618ceb21257542338b57c54b710463b4a53e37 languageName: node linkType: hard +"http-proxy-agent@npm:^5.0.0": + version: 5.0.0 + resolution: "http-proxy-agent@npm:5.0.0" + dependencies: + "@tootallnate/once": "npm:2" + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/32a05e413430b2c1e542e5c74b38a9f14865301dd69dff2e53ddb684989440e3d2ce0c4b64d25eb63cf6283e6265ff979a61cf93e3ca3d23047ddfdc8df34a32 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + "http2-wrapper@npm:^1.0.0-beta.5.2": version: 1.0.3 resolution: "http2-wrapper@npm:1.0.3" @@ -2073,6 +3339,106 @@ __metadata: languageName: node linkType: hard +"https-proxy-agent@npm:^5.0.0": + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" + dependencies: + agent-base: "npm:6" + debug: "npm:4" + checksum: 10c0/6dd639f03434003577c62b27cafdb864784ef19b2de430d8ae2a1d45e31c4fd60719e5637b44db1a88a046934307da7089e03d6089ec3ddacc1189d8de8897d1 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.0": + version: 7.0.6 + resolution: "https-proxy-agent@npm:7.0.6" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:4" + checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac + languageName: node + linkType: hard + +"humanize-ms@npm:^1.2.1": + version: 1.2.1 + resolution: "humanize-ms@npm:1.2.1" + dependencies: + ms: "npm:^2.0.0" + checksum: 10c0/f34a2c20161d02303c2807badec2f3b49cbfbbb409abd4f95a07377ae01cfe6b59e3d15ac609cffcd8f2521f0eb37b7e1091acf65da99aa2a4f1ad63c21e7e7a + languageName: node + linkType: hard + +"iconv-corefoundation@npm:^1.1.7": + version: 1.1.7 + resolution: "iconv-corefoundation@npm:1.1.7" + dependencies: + cli-truncate: "npm:^2.1.0" + node-addon-api: "npm:^1.6.3" + conditions: os=darwin + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"ieee754@npm:^1.1.13": + version: 1.2.1 + resolution: "ieee754@npm:1.2.1" + checksum: 10c0/b0782ef5e0935b9f12883a2e2aa37baa75da6e66ce6515c168697b42160807d9330de9a32ec1ed73149aea02e0d822e572bca6f1e22bdcbd2149e13b050b17bb + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 10c0/1e1904ddb0cb3d6cce7cd09e27a90184908b7a5d5c21b92e232c93579d314f0b83c246ffb035493d0504b1e9147ba2c9b21df0030f48673fba0496ecd698161f + languageName: node + linkType: hard + +"infer-owner@npm:^1.0.4": + version: 1.0.4 + resolution: "infer-owner@npm:1.0.4" + checksum: 10c0/a7b241e3149c26e37474e3435779487f42f36883711f198c45794703c7556bc38af224088bd4d1a221a45b8208ae2c2bcf86200383621434d0c099304481c5b9 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 + languageName: node + linkType: hard + +"ip-address@npm:^10.1.1": + version: 10.2.0 + resolution: "ip-address@npm:10.2.0" + checksum: 10c0/5a00aada6e922c9c69dfc800ed5d0fa3348675ebdeed0e1575f503f27ca385b5f534363c9af7ad1daf64c1f1409388cdd3cc2e9b9b0fe1c924a431378d55075a + languageName: node + linkType: hard + "is-binary-path@npm:~2.1.0": version: 2.1.0 resolution: "is-binary-path@npm:2.1.0" @@ -2082,6 +3448,17 @@ __metadata: languageName: node linkType: hard +"is-ci@npm:^3.0.0": + version: 3.0.1 + resolution: "is-ci@npm:3.0.1" + dependencies: + ci-info: "npm:^3.2.0" + bin: + is-ci: bin.js + checksum: 10c0/0e81caa62f4520d4088a5bef6d6337d773828a88610346c4b1119fb50c842587ed8bef1e5d9a656835a599e7209405b5761ddf2339668f2d0f4e889a92fe6051 + languageName: node + linkType: hard + "is-core-module@npm:^2.16.1": version: 2.16.2 resolution: "is-core-module@npm:2.16.2" @@ -2098,6 +3475,13 @@ __metadata: languageName: node linkType: hard +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + "is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -2107,6 +3491,20 @@ __metadata: languageName: node linkType: hard +"is-interactive@npm:^1.0.0": + version: 1.0.0 + resolution: "is-interactive@npm:1.0.0" + checksum: 10c0/dd47904dbf286cd20aa58c5192161be1a67138485b9836d5a70433b21a45442e9611b8498b8ab1f839fc962c7620667a50535fdfb4a6bc7989b8858645c06b4d + languageName: node + linkType: hard + +"is-lambda@npm:^1.0.1": + version: 1.0.1 + resolution: "is-lambda@npm:1.0.1" + checksum: 10c0/85fee098ae62ba6f1e24cf22678805473c7afd0fb3978a3aa260e354cb7bcb3a5806cf0a98403188465efedec41ab4348e8e4e79305d409601323855b3839d4d + languageName: node + linkType: hard + "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" @@ -2114,6 +3512,34 @@ __metadata: languageName: node linkType: hard +"is-unicode-supported@npm:^0.1.0": + version: 0.1.0 + resolution: "is-unicode-supported@npm:0.1.0" + checksum: 10c0/00cbe3455c3756be68d2542c416cab888aebd5012781d6819749fefb15162ff23e38501fe681b3d751c73e8ff561ac09a5293eba6f58fdf0178462ce6dcb3453 + languageName: node + linkType: hard + +"isbinaryfile@npm:^4.0.8": + version: 4.0.10 + resolution: "isbinaryfile@npm:4.0.10" + checksum: 10c0/0703d8cfeb69ed79e6d173120f327450011a066755150a6bbf97ffecec1069a5f2092777868315b21359098c84b54984871cad1abce877ad9141fb2caf3dcabf + languageName: node + linkType: hard + +"isbinaryfile@npm:^5.0.0": + version: 5.0.7 + resolution: "isbinaryfile@npm:5.0.7" + checksum: 10c0/4cd98a91aaf969d7cae91f74d041dd1df35d9e140c522b7879180035f7eab9ba9c0c3d678e00e72a2777ee7245fd8f20b60c0787132c5fdbf6fc113492325e11 + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + "isexe@npm:^4.0.0": version: 4.0.0 resolution: "isexe@npm:4.0.0" @@ -2121,6 +3547,32 @@ __metadata: languageName: node linkType: hard +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9 + languageName: node + linkType: hard + +"jake@npm:^10.8.5": + version: 10.9.4 + resolution: "jake@npm:10.9.4" + dependencies: + async: "npm:^3.2.6" + filelist: "npm:^1.0.4" + picocolors: "npm:^1.1.1" + bin: + jake: bin/cli.js + checksum: 10c0/bb52f000340d4a32f1a3893b9abe56ef2b77c25da4dbf2c0c874a8159d082dddda50a5ad10e26060198bd645b928ba8dba3b362710f46a247e335321188c5a9c + languageName: node + linkType: hard + "jiti@npm:^1.21.7": version: 1.21.7 resolution: "jiti@npm:1.21.7" @@ -2144,6 +3596,17 @@ __metadata: languageName: node linkType: hard +"js-yaml@npm:^4.1.0": + version: 4.3.0 + resolution: "js-yaml@npm:4.3.0" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/058b30473d6915ca5b4feb11e2f7d4d97242f98d00a798ed48dd90b46b7c640398afe9128c5db22c5300f8c6528fe2a174b9a93f351a70ebc28c6203938d8bff + languageName: node + linkType: hard + "jsesc@npm:^3.0.2": version: 3.1.0 resolution: "jsesc@npm:3.1.0" @@ -2160,6 +3623,13 @@ __metadata: languageName: node linkType: hard +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce + languageName: node + linkType: hard + "json-stringify-safe@npm:^5.0.1": version: 5.0.1 resolution: "json-stringify-safe@npm:5.0.1" @@ -2188,6 +3658,19 @@ __metadata: languageName: node linkType: hard +"jsonfile@npm:^6.0.1": + version: 6.2.1 + resolution: "jsonfile@npm:6.2.1" + dependencies: + graceful-fs: "npm:^4.1.6" + universalify: "npm:^2.0.0" + dependenciesMeta: + graceful-fs: + optional: true + checksum: 10c0/e1abf000ecee9942d4d028a8e02dc752617face227d72afd1cfb2187e2433079e625bf82b807a313689db71b6472c6b2b389a2340d2798737b1199a39631c28a + languageName: node + linkType: hard + "keyv@npm:^4.0.0": version: 4.5.4 resolution: "keyv@npm:4.5.4" @@ -2197,6 +3680,13 @@ __metadata: languageName: node linkType: hard +"lazy-val@npm:^1.0.5": + version: 1.0.5 + resolution: "lazy-val@npm:1.0.5" + checksum: 10c0/28ba7a0e704895a444eed47d110274090f485b991f2ea6fff2ab0878c529c53f60f2eb2d944cbbd68b91408e7455eabc62861c48289d4757fa9c818b97454f24 + languageName: node + linkType: hard + "lilconfig@npm:^3.1.1, lilconfig@npm:^3.1.3": version: 3.1.3 resolution: "lilconfig@npm:3.1.3" @@ -2211,6 +3701,23 @@ __metadata: languageName: node linkType: hard +"lodash@npm:^4.17.15": + version: 4.18.1 + resolution: "lodash@npm:4.18.1" + checksum: 10c0/757228fc68805c59789e82185135cf85f05d0b2d3d54631d680ca79ec21944ec8314d4533639a14b8bcfbd97a517e78960933041a5af17ecb693ec6eecb99a27 + languageName: node + linkType: hard + +"log-symbols@npm:^4.1.0": + version: 4.1.0 + resolution: "log-symbols@npm:4.1.0" + dependencies: + chalk: "npm:^4.1.0" + is-unicode-supported: "npm:^0.1.0" + checksum: 10c0/67f445a9ffa76db1989d0fa98586e5bc2fd5247260dafb8ad93d9f0ccd5896d53fb830b0e54dade5ad838b9de2006c826831a3c528913093af20dff8bd24aca6 + languageName: node + linkType: hard + "loose-envify@npm:^1.1.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" @@ -2236,6 +3743,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^10.2.0": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb + languageName: node + linkType: hard + "lru-cache@npm:^5.1.1": version: 5.1.1 resolution: "lru-cache@npm:5.1.1" @@ -2245,6 +3759,22 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/cb53e582785c48187d7a188d3379c181b5ca2a9c78d2bce3e7dee36f32761d1c42983da3fe12b55cb74e1779fa94cdc2e5367c028a9b35317184ede0c07a30a9 + languageName: node + linkType: hard + +"lru-cache@npm:^7.7.1": + version: 7.18.3 + resolution: "lru-cache@npm:7.18.3" + checksum: 10c0/b3a452b491433db885beed95041eb104c157ef7794b9c9b4d647be503be91769d11206bb573849a16b4cc0d03cbd15ffd22df7960997788b74c1d399ac7a4fed + languageName: node + linkType: hard + "magic-string@npm:^0.30.17": version: 0.30.21 resolution: "magic-string@npm:0.30.21" @@ -2254,6 +3784,30 @@ __metadata: languageName: node linkType: hard +"make-fetch-happen@npm:^10.0.3": + version: 10.2.1 + resolution: "make-fetch-happen@npm:10.2.1" + dependencies: + agentkeepalive: "npm:^4.2.1" + cacache: "npm:^16.1.0" + http-cache-semantics: "npm:^4.1.0" + http-proxy-agent: "npm:^5.0.0" + https-proxy-agent: "npm:^5.0.0" + is-lambda: "npm:^1.0.1" + lru-cache: "npm:^7.7.1" + minipass: "npm:^3.1.6" + minipass-collect: "npm:^1.0.2" + minipass-fetch: "npm:^2.0.3" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^0.6.3" + promise-retry: "npm:^2.0.1" + socks-proxy-agent: "npm:^7.0.0" + ssri: "npm:^9.0.0" + checksum: 10c0/28ec392f63ab93511f400839dcee83107eeecfaad737d1e8487ea08b4332cd89a8f3319584222edd9f6f1d0833cf516691469496d46491863f9e88c658013949 + languageName: node + linkType: hard + "matcher@npm:^3.0.0": version: 3.0.0 resolution: "matcher@npm:3.0.0" @@ -2263,6 +3817,13 @@ __metadata: languageName: node linkType: hard +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f + languageName: node + linkType: hard + "merge2@npm:^1.3.0": version: 1.4.1 resolution: "merge2@npm:1.4.1" @@ -2280,6 +3841,38 @@ __metadata: languageName: node linkType: hard +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 10c0/0557a01deebf45ac5f5777fe7740b2a5c309c6d62d40ceab4e23da9f821899ce7a900b7ac8157d4548ddbb7beffe9abc621250e6d182b0397ec7f10c7b91a5aa + languageName: node + linkType: hard + +"mime-types@npm:^2.1.35": + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" + dependencies: + mime-db: "npm:1.52.0" + checksum: 10c0/82fb07ec56d8ff1fc999a84f2f217aa46cb6ed1033fefaabd5785b9a974ed225c90dc72fff460259e66b95b73648596dbcc50d51ed69cdf464af2d237d3149b2 + languageName: node + linkType: hard + +"mime@npm:^2.5.2": + version: 2.6.0 + resolution: "mime@npm:2.6.0" + bin: + mime: cli.js + checksum: 10c0/a7f2589900d9c16e3bdf7672d16a6274df903da958c1643c9c45771f0478f3846dcb1097f31eb9178452570271361e2149310931ec705c037210fc69639c8e6c + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 + languageName: node + linkType: hard + "mimic-response@npm:^1.0.0": version: 1.0.1 resolution: "mimic-response@npm:1.0.1" @@ -2294,13 +3887,133 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^7.0.4, minipass@npm:^7.1.2": +"minimatch@npm:^10.0.0": + version: 10.2.5 + resolution: "minimatch@npm:10.2.5" + dependencies: + brace-expansion: "npm:^5.0.5" + checksum: 10c0/6bb058bd6324104b9ec2f763476a35386d05079c1f5fe4fbf1f324a25237cd4534d6813ecd71f48208f4e635c1221899bef94c3c89f7df55698fe373aaae20fd + languageName: node + linkType: hard + +"minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1": + version: 3.1.5 + resolution: "minimatch@npm:3.1.5" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/2ecbdc0d33f07bddb0315a8b5afbcb761307a8778b48f0b312418ccbced99f104a2d17d8aca7573433c70e8ccd1c56823a441897a45e384ea76ef401a26ace70 + languageName: node + linkType: hard + +"minimatch@npm:^5.0.1": + version: 5.1.9 + resolution: "minimatch@npm:5.1.9" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/4202718683815a7288b13e470160a4f9560cf392adef4f453927505817e01ef6b3476ecde13cfcaed17e7326dd3b69ad44eb2daeb19a217c5500f9277893f1d6 + languageName: node + linkType: hard + +"minimatch@npm:^9.0.3, minimatch@npm:^9.0.4": + version: 9.0.9 + resolution: "minimatch@npm:9.0.9" + dependencies: + brace-expansion: "npm:^2.0.2" + checksum: 10c0/0b6a58530dbb00361745aa6c8cffaba4c90f551afe7c734830bd95fd88ebf469dd7355a027824ea1d09e37181cfeb0a797fb17df60c15ac174303ac110eb7e86 + languageName: node + linkType: hard + +"minimist@npm:^1.2.6": + version: 1.2.8 + resolution: "minimist@npm:1.2.8" + checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6 + languageName: node + linkType: hard + +"minipass-collect@npm:^1.0.2": + version: 1.0.2 + resolution: "minipass-collect@npm:1.0.2" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/8f82bd1f3095b24f53a991b04b67f4c710c894e518b813f0864a31de5570441a509be1ca17e0bb92b047591a8fdbeb886f502764fefb00d2f144f4011791e898 + languageName: node + linkType: hard + +"minipass-fetch@npm:^2.0.3": + version: 2.1.2 + resolution: "minipass-fetch@npm:2.1.2" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^3.1.6" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^2.1.2" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/33ab2c5bdb3d91b9cb8bc6ae42d7418f4f00f7f7beae14b3bb21ea18f9224e792f560a6e17b6f1be12bbeb70dbe99a269f4204c60e5d99130a0777b153505c43 + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.7 + resolution: "minipass-flush@npm:1.0.7" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/960915c02aa0991662c37c404517dd93708d17f96533b2ca8c1e776d158715d8107c5ced425ffc61674c167d93607f07f48a83c139ce1057f8781e5dfb4b90c2 + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + languageName: node + linkType: hard + +"minipass@npm:^3.0.0, minipass@npm:^3.1.1, minipass@npm:^3.1.6": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass@npm:5.0.0" + checksum: 10c0/a91d8043f691796a8ac88df039da19933ef0f633e3d7f0d35dcd5373af49131cf2399bfc355f41515dc495e3990369c3858cd319e5c2722b4753c90bf3152462 + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.4, minipass@npm:^7.1.2": version: 7.1.3 resolution: "minipass@npm:7.1.3" checksum: 10c0/539da88daca16533211ea5a9ee98dc62ff5742f531f54640dd34429e621955e91cc280a91a776026264b7f9f6735947629f920944e9c1558369e8bf22eb33fbb languageName: node linkType: hard +"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: "npm:^3.0.0" + yallist: "npm:^4.0.0" + checksum: 10c0/64fae024e1a7d0346a1102bb670085b17b7f95bf6cfdf5b128772ec8faf9ea211464ea4add406a3a6384a7d87a0cd1a96263692134323477b4fb43659a6cab78 + languageName: node + linkType: hard + "minizlib@npm:^3.1.0": version: 3.1.0 resolution: "minizlib@npm:3.1.0" @@ -2310,7 +4023,16 @@ __metadata: languageName: node linkType: hard -"ms@npm:^2.1.3": +"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 10c0/46ea0f3ffa8bc6a5bc0c7081ffc3907777f0ed6516888d40a518c5111f8366d97d2678911ad1a6882bf592fa9de6c784fea32e1687bb94e1f4944170af48a5cf + languageName: node + linkType: hard + +"ms@npm:^2.0.0, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 @@ -2337,6 +4059,61 @@ __metadata: languageName: node linkType: hard +"negotiator@npm:^0.6.3": + version: 0.6.4 + resolution: "negotiator@npm:0.6.4" + checksum: 10c0/3e677139c7fb7628a6f36335bf11a885a62c21d5390204590a1a214a5631fcbe5ea74ef6a610b60afe84b4d975cbe0566a23f20ee17c77c73e74b80032108dea + languageName: node + linkType: hard + +"node-abi@npm:^3.45.0": + version: 3.94.0 + resolution: "node-abi@npm:3.94.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/0df171a73f2646594ed63b78e78e060813131aeb326062164859016e2143513e59cd0f15e1d853fe80de1b329a59c2f8e9c8160be89872f218782dbc66df4044 + languageName: node + linkType: hard + +"node-addon-api@npm:^1.6.3": + version: 1.7.2 + resolution: "node-addon-api@npm:1.7.2" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/bcf526f2ce788182730d3c3df5206585873d1e837a6e1378ff84abccf2f19cf3f93a8274f9c1245af0de63a0dbd1bb95ca2f767ecf5c678d6930326aaf396c4e + languageName: node + linkType: hard + +"node-api-version@npm:^0.2.0": + version: 0.2.1 + resolution: "node-api-version@npm:0.2.1" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/3fe6c273e4f9dd184bb8b959ba3d8afae7eade663611d82c8538c79ac3a7b8f1d136632ceb4bf8cdc46a851fc169407746996cf7d1096de9a186e0e70fca95fa + languageName: node + linkType: hard + +"node-gyp@npm:^9.0.0": + version: 9.4.1 + resolution: "node-gyp@npm:9.4.1" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + glob: "npm:^7.1.4" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^10.0.3" + nopt: "npm:^6.0.0" + npmlog: "npm:^6.0.0" + rimraf: "npm:^3.0.2" + semver: "npm:^7.3.5" + tar: "npm:^6.1.2" + which: "npm:^2.0.2" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/f7d676cfa79f27d35edf17fe9c80064123670362352d19729e5dc9393d7e99f1397491c3107eddc0c0e8941442a6244a7ba6c860cfbe4b433b4cae248a55fe10 + languageName: node + linkType: hard + "node-gyp@npm:latest": version: 13.0.1 resolution: "node-gyp@npm:13.0.1" @@ -2375,6 +4152,17 @@ __metadata: languageName: node linkType: hard +"nopt@npm:^6.0.0": + version: 6.0.0 + resolution: "nopt@npm:6.0.0" + dependencies: + abbrev: "npm:^1.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/837b52c330df16fcaad816b1f54fec6b2854ab1aa771d935c1603fbcf9b023bb073f1466b1b67f48ea4dce127ae675b85b9d9355700e9b109de39db490919786 + languageName: node + linkType: hard + "normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" @@ -2389,6 +4177,18 @@ __metadata: languageName: node linkType: hard +"npmlog@npm:^6.0.0": + version: 6.0.2 + resolution: "npmlog@npm:6.0.2" + dependencies: + are-we-there-yet: "npm:^3.0.0" + console-control-strings: "npm:^1.1.0" + gauge: "npm:^4.0.3" + set-blocking: "npm:^2.0.0" + checksum: 10c0/0cacedfbc2f6139c746d9cd4a85f62718435ad0ca4a2d6459cd331dd33ae58206e91a0742c1558634efcde3f33f8e8e7fd3adf1bfe7978310cf00bd55cccf890 + languageName: node + linkType: hard + "object-assign@npm:^4.0.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" @@ -2410,7 +4210,7 @@ __metadata: languageName: node linkType: hard -"once@npm:^1.3.1, once@npm:^1.4.0": +"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: @@ -2419,6 +4219,32 @@ __metadata: languageName: node linkType: hard +"onetime@npm:^5.1.0": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: "npm:^2.1.0" + checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f + languageName: node + linkType: hard + +"ora@npm:^5.1.0": + version: 5.4.1 + resolution: "ora@npm:5.4.1" + dependencies: + bl: "npm:^4.1.0" + chalk: "npm:^4.1.0" + cli-cursor: "npm:^3.1.0" + cli-spinners: "npm:^2.5.0" + is-interactive: "npm:^1.0.0" + is-unicode-supported: "npm:^0.1.0" + log-symbols: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + wcwidth: "npm:^1.0.1" + checksum: 10c0/10ff14aace236d0e2f044193362b22edce4784add08b779eccc8f8ef97195cae1248db8ec1ec5f5ff076f91acbe573f5f42a98c19b78dba8c54eefff983cae85 + languageName: node + linkType: hard + "p-cancelable@npm:^2.0.0": version: 2.1.1 resolution: "p-cancelable@npm:2.1.1" @@ -2426,6 +4252,45 @@ __metadata: languageName: node linkType: hard +"p-limit@npm:^3.1.0 ": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: "npm:^0.1.0" + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: "npm:^3.0.0" + checksum: 10c0/592c05bd6262c466ce269ff172bb8de7c6975afca9b50c975135b974e9bdaafbfe80e61aaaf5be6d1200ba08b30ead04b88cfa7e25ff1e3b93ab28c9f62a2c75 + languageName: node + linkType: hard + +"package-json-from-dist@npm:^1.0.0": + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 + languageName: node + linkType: hard + +"path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + "path-parse@npm:^1.0.7": version: 1.0.7 resolution: "path-parse@npm:1.0.7" @@ -2433,6 +4298,16 @@ __metadata: languageName: node linkType: hard +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: "npm:^10.2.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d + languageName: node + linkType: hard + "pathe@npm:^2.0.3": version: 2.0.3 resolution: "pathe@npm:2.0.3" @@ -2447,6 +4322,13 @@ __metadata: languageName: node linkType: hard +"pe-library@npm:^0.4.1": + version: 0.4.1 + resolution: "pe-library@npm:0.4.1" + checksum: 10c0/75c772e74c75d9710a2bf6b7e88fb57e4c26788422abd3b38c8100c796e311c72102ef71159b9e0b56f05f616a968e11b8ec218bcd625c896df067235af8da77 + languageName: node + linkType: hard + "pend@npm:~1.2.0": version: 1.2.0 resolution: "pend@npm:1.2.0" @@ -2513,6 +4395,17 @@ __metadata: languageName: node linkType: hard +"plist@npm:^3.0.4, plist@npm:^3.0.5, plist@npm:^3.1.0": + version: 3.1.1 + resolution: "plist@npm:3.1.1" + dependencies: + "@xmldom/xmldom": "npm:^0.9.10" + base64-js: "npm:^1.5.1" + xmlbuilder: "npm:^15.1.1" + checksum: 10c0/af681277c2e541c6aab0ddee57f59459c43beeea1ee7aa2d4218aa39595fb41c068e2d2be3e4abb17e3252eaf2c1b806ecfb1d402fa5a3f4a6e1a7a32c880c9a + languageName: node + linkType: hard + "postcss-import@npm:^15.1.0": version: 15.1.0 resolution: "postcss-import@npm:15.1.0" @@ -2613,6 +4506,23 @@ __metadata: languageName: node linkType: hard +"promise-inflight@npm:^1.0.1": + version: 1.0.1 + resolution: "promise-inflight@npm:1.0.1" + checksum: 10c0/d179d148d98fbff3d815752fa9a08a87d3190551d1420f17c4467f628214db12235ae068d98cd001f024453676d8985af8f28f002345646c4ece4600a79620bc + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + "pump@npm:^3.0.0": version: 3.0.4 resolution: "pump@npm:3.0.4" @@ -2623,6 +4533,13 @@ __metadata: languageName: node linkType: hard +"punycode@npm:^2.1.0": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 + languageName: node + linkType: hard + "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -2665,6 +4582,17 @@ __metadata: languageName: node linkType: hard +"read-binary-file-arch@npm:^1.0.6": + version: 1.0.6 + resolution: "read-binary-file-arch@npm:1.0.6" + dependencies: + debug: "npm:^4.3.4" + bin: + read-binary-file-arch: cli.js + checksum: 10c0/7665cb4ec61da1f4da7ba6c0fb64f53f6e739373d427dd0e1c4d19f240b3ebff0f596377c01e290a6370f611899b82df09edafa758200bf31216d855e3230058 + languageName: node + linkType: hard + "read-cache@npm:^1.0.0": version: 1.0.0 resolution: "read-cache@npm:1.0.0" @@ -2674,6 +4602,17 @@ __metadata: languageName: node linkType: hard +"readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": + version: 3.6.2 + resolution: "readable-stream@npm:3.6.2" + dependencies: + inherits: "npm:^2.0.3" + string_decoder: "npm:^1.1.1" + util-deprecate: "npm:^1.0.1" + checksum: 10c0/e37be5c79c376fdd088a45fa31ea2e423e5d48854be7a22a58869b4e84d25047b193f6acb54f1012331e1bcd667ffb569c01b99d36b0bd59658fb33f513511b7 + languageName: node + linkType: hard + "readdirp@npm:~3.6.0": version: 3.6.0 resolution: "readdirp@npm:3.6.0" @@ -2683,6 +4622,22 @@ __metadata: languageName: node linkType: hard +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + +"resedit@npm:^1.7.0": + version: 1.7.2 + resolution: "resedit@npm:1.7.2" + dependencies: + pe-library: "npm:^0.4.1" + checksum: 10c0/1d21438d22ca9010611b8db3d0b122122b9d3588fa6e608eaadca38ab86d5d1c0348f7656a9c2e7f2609c30db62d1f62ddc9184e7e11920d47d2c238b1587847 + languageName: node + linkType: hard + "resolve-alpn@npm:^1.0.0": version: 1.2.1 resolution: "resolve-alpn@npm:1.2.1" @@ -2727,6 +4682,23 @@ __metadata: languageName: node linkType: hard +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: "npm:^5.1.0" + signal-exit: "npm:^3.0.2" + checksum: 10c0/8051a371d6aa67ff21625fa94e2357bd81ffdc96267f3fb0fc4aaf4534028343836548ef34c240ffa8c25b280ca35eb36be00b3cb2133fa4f51896d7e73c6b4f + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + "reusify@npm:^1.0.4": version: 1.1.0 resolution: "reusify@npm:1.1.0" @@ -2734,6 +4706,17 @@ __metadata: languageName: node linkType: hard +"rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: "npm:^7.1.3" + bin: + rimraf: bin.js + checksum: 10c0/9cb7757acb489bd83757ba1a274ab545eafd75598a9d817e0c3f8b164238dd90eba50d6b848bd4dcc5f3040912e882dc7ba71653e35af660d77b25c381d402e8 + languageName: node + linkType: hard + "roarr@npm:^2.15.3": version: 2.15.4 resolution: "roarr@npm:2.15.4" @@ -2847,6 +4830,36 @@ __metadata: languageName: node linkType: hard +"safe-buffer@npm:~5.2.0": + version: 5.2.1 + resolution: "safe-buffer@npm:5.2.1" + checksum: 10c0/6501914237c0a86e9675d4e51d89ca3c21ffd6a31642efeba25ad65720bce6921c9e7e974e5be91a786b25aa058b5303285d3c15dbabf983a919f5f630d349f3 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"sanitize-filename@npm:^1.6.3": + version: 1.6.4 + resolution: "sanitize-filename@npm:1.6.4" + dependencies: + truncate-utf8-bytes: "npm:^1.0.0" + checksum: 10c0/b56415a95e4f90dc992cd126b5f45c7b39d178662fbd0dc48f03203e35c58ab8e9eb3f5cebfaabc46f1438093d65a3a3cc96875e2b036a1474e19593bee9a540 + languageName: node + linkType: hard + +"sax@npm:^1.2.4": + version: 1.6.0 + resolution: "sax@npm:1.6.0" + checksum: 10c0/e5593f4a91eb25761a688c4d96902e4e95a0dd6017bc65146b6f21236e3d715cf893333b76bc758923c9574c2fb5a7a76c3a81e96ea15432f2624f906c027c1e + languageName: node + linkType: hard + "scheduler@npm:^0.23.2": version: 0.23.2 resolution: "scheduler@npm:0.23.2" @@ -2872,7 +4885,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.2, semver@npm:^7.3.5": +"semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.8, semver@npm:^7.5.3": version: 7.8.5 resolution: "semver@npm:7.8.5" bin: @@ -2890,6 +4903,29 @@ __metadata: languageName: node linkType: hard +"set-blocking@npm:^2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 10c0/9f8c1b2d800800d0b589de1477c753492de5c1548d4ade52f57f1d1f5e04af5481554d75ce5e5c43d4004b80a3eb714398d6907027dc0534177b7539119f4454 + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + "siginfo@npm:^2.0.0": version: 2.0.0 resolution: "siginfo@npm:2.0.0" @@ -2897,6 +4933,68 @@ __metadata: languageName: node linkType: hard +"signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.7": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + +"simple-update-notifier@npm:2.0.0": + version: 2.0.0 + resolution: "simple-update-notifier@npm:2.0.0" + dependencies: + semver: "npm:^7.5.3" + checksum: 10c0/2a00bd03bfbcbf8a737c47ab230d7920f8bfb92d1159d421bdd194479f6d01ebc995d13fbe13d45dace23066a78a3dc6642999b4e3b38b847e6664191575b20c + languageName: node + linkType: hard + +"slice-ansi@npm:^3.0.0": + version: 3.0.0 + resolution: "slice-ansi@npm:3.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + astral-regex: "npm:^2.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + checksum: 10c0/88083c9d0ca67d09f8b4c78f68833d69cabbb7236b74df5d741ad572bbf022deaf243fa54009cd434350622a1174ab267710fcc80a214ecc7689797fe00cb27c + languageName: node + linkType: hard + +"smart-buffer@npm:^4.0.2, smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "socks-proxy-agent@npm:7.0.0" + dependencies: + agent-base: "npm:^6.0.2" + debug: "npm:^4.3.3" + socks: "npm:^2.6.2" + checksum: 10c0/b859f7eb8e96ec2c4186beea233ae59c02404094f3eb009946836af27d6e5c1627d1975a69b4d2e20611729ed543b6db3ae8481eb38603433c50d0345c987600 + languageName: node + linkType: hard + +"socks@npm:^2.6.2": + version: 2.8.9 + resolution: "socks@npm:2.8.9" + dependencies: + ip-address: "npm:^10.1.1" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/2d4350c31142b0931eb1758825b426bcbf4bfb5eed682ca48bc46dc9e7d1930ec366ea574ad49fc6c1fd9e9e17ce243be0ef13e31fc4b0319d9093f1fb19743c + languageName: node + linkType: hard + "source-map-js@npm:^1.2.1": version: 1.2.1 resolution: "source-map-js@npm:1.2.1" @@ -2904,6 +5002,23 @@ __metadata: languageName: node linkType: hard +"source-map-support@npm:^0.5.19": + version: 0.5.21 + resolution: "source-map-support@npm:0.5.21" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d + languageName: node + linkType: hard + +"source-map@npm:^0.6.0": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 + languageName: node + linkType: hard + "sprintf-js@npm:^1.1.2": version: 1.1.3 resolution: "sprintf-js@npm:1.1.3" @@ -2911,6 +5026,15 @@ __metadata: languageName: node linkType: hard +"ssri@npm:^9.0.0": + version: 9.0.1 + resolution: "ssri@npm:9.0.1" + dependencies: + minipass: "npm:^3.1.1" + checksum: 10c0/c5d153ce03b5980d683ecaa4d805f6a03d8dc545736213803e168a1907650c46c08a4e5ce6d670a0205482b35c35713d9d286d9133bdd79853a406e22ad81f04 + languageName: node + linkType: hard + "stackback@npm:0.0.2": version: 0.0.2 resolution: "stackback@npm:0.0.2" @@ -2918,6 +5042,13 @@ __metadata: languageName: node linkType: hard +"stat-mode@npm:^1.0.0": + version: 1.0.0 + resolution: "stat-mode@npm:1.0.0" + checksum: 10c0/89b66a538dbfd45038fefdaf5b2104dc6e911605af1c201793e9629592ed9fdc7bdd1bca42806d0d4167c6d9cacac1f3fda41ddfe334a5c1f898113da38fae74 + languageName: node + linkType: hard + "std-env@npm:^3.9.0": version: 3.10.0 resolution: "std-env@npm:3.10.0" @@ -2925,6 +5056,55 @@ __metadata: languageName: node linkType: hard +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + +"string_decoder@npm:^1.1.1": + version: 1.3.0 + resolution: "string_decoder@npm:1.3.0" + dependencies: + safe-buffer: "npm:~5.2.0" + checksum: 10c0/810614ddb030e271cd591935dcd5956b2410dd079d64ff92a1844d6b7588bf992b3e1b69b0f4d34a3e06e0bd73046ac646b5264c1987b20d0601f81ef35d731d + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1": + version: 7.2.0 + resolution: "strip-ansi@npm:7.2.0" + dependencies: + ansi-regex: "npm:^6.2.2" + checksum: 10c0/544d13b7582f8254811ea97db202f519e189e59d35740c46095897e254e4f1aa9fe1524a83ad6bc5ad67d4dd6c0281d2e0219ed62b880a6238a16a17d375f221 + languageName: node + linkType: hard + "strip-literal@npm:^3.0.0": version: 3.1.0 resolution: "strip-literal@npm:3.1.0" @@ -2961,6 +5141,15 @@ __metadata: languageName: node linkType: hard +"supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + languageName: node + linkType: hard + "supports-preserve-symlinks-flag@npm:^1.0.0": version: 1.0.0 resolution: "supports-preserve-symlinks-flag@npm:1.0.0" @@ -3001,6 +5190,20 @@ __metadata: languageName: node linkType: hard +"tar@npm:^6.0.5, tar@npm:^6.1.11, tar@npm:^6.1.12, tar@npm:^6.1.2": + version: 6.2.1 + resolution: "tar@npm:6.2.1" + dependencies: + chownr: "npm:^2.0.0" + fs-minipass: "npm:^2.0.0" + minipass: "npm:^5.0.0" + minizlib: "npm:^2.1.1" + mkdirp: "npm:^1.0.3" + yallist: "npm:^4.0.0" + checksum: 10c0/a5eca3eb50bc11552d453488344e6507156b9193efd7635e98e867fab275d527af53d8866e2370cd09dfe74378a18111622ace35af6a608e5223a7d27fe99537 + languageName: node + linkType: hard + "tar@npm:^7.5.4": version: 7.5.19 resolution: "tar@npm:7.5.19" @@ -3014,6 +5217,16 @@ __metadata: languageName: node linkType: hard +"temp-file@npm:^3.4.0": + version: 3.4.0 + resolution: "temp-file@npm:3.4.0" + dependencies: + async-exit-hook: "npm:^2.0.1" + fs-extra: "npm:^10.0.0" + checksum: 10c0/70e441909097346a930ae02278df9b0133cd02dddf0b49e5ddaade735fef1410a50a448a2a812106f97c045294c99cc19f26943eb88f1d728d41fbc445a40298 + languageName: node + linkType: hard + "thenify-all@npm:^1.0.0": version: 1.6.0 resolution: "thenify-all@npm:1.6.0" @@ -3077,6 +5290,22 @@ __metadata: languageName: node linkType: hard +"tmp-promise@npm:^3.0.2": + version: 3.0.3 + resolution: "tmp-promise@npm:3.0.3" + dependencies: + tmp: "npm:^0.2.0" + checksum: 10c0/23b47dcb2e82b14bbd8f61ed7a9d9353cdb6a6f09d7716616cfd27d0087040cd40152965a518e598d7aabe1489b9569bf1eebde0c5fadeaf3ec8098adcebea4e + languageName: node + linkType: hard + +"tmp@npm:^0.2.0": + version: 0.2.7 + resolution: "tmp@npm:0.2.7" + checksum: 10c0/59eb55584f2f07210d3231b6a1f6b5c2b9794d8a7b509c8ee867ed2acad6d2245ee2448b7937b676ffbff3155a70077edde8a69f9d7cf0f90c86a62e8910c357 + languageName: node + linkType: hard + "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -3086,6 +5315,15 @@ __metadata: languageName: node linkType: hard +"truncate-utf8-bytes@npm:^1.0.0": + version: 1.0.2 + resolution: "truncate-utf8-bytes@npm:1.0.2" + dependencies: + utf8-byte-length: "npm:^1.0.1" + checksum: 10c0/af2b431fc4314f119b551e5fccfad49d4c0ef82e13ba9ca61be6567801195b08e732ce9643542e8ad1b3df44f3df2d7345b3dd34f723954b6bb43a14584d6b3c + languageName: node + linkType: hard + "ts-interface-checker@npm:^0.1.9": version: 0.1.13 resolution: "ts-interface-checker@npm:0.1.13" @@ -3093,6 +5331,21 @@ __metadata: languageName: node linkType: hard +"tsx@npm:^4": + version: 4.23.0 + resolution: "tsx@npm:4.23.0" + dependencies: + esbuild: "npm:~0.28.0" + fsevents: "npm:~2.3.3" + dependenciesMeta: + fsevents: + optional: true + bin: + tsx: dist/cli.mjs + checksum: 10c0/e4fade6bf8a4447424652da3a68f5ab7b927d1cbe5f697dba876c626c5fb7bf7663c4f71777992c9cbbdc8148c63ee1ddcf15536ff9d1863f9fbea25247ee0a9 + languageName: node + linkType: hard + "type-fest@npm:^0.13.1": version: 0.13.1 resolution: "type-fest@npm:0.13.1" @@ -3100,7 +5353,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.7.3": +"typescript@npm:^5.4.3, typescript@npm:^5.7.3": version: 5.9.3 resolution: "typescript@npm:5.9.3" bin: @@ -3110,7 +5363,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^5.7.3#optional!builtin": +"typescript@patch:typescript@npm%3A^5.4.3#optional!builtin, typescript@patch:typescript@npm%3A^5.7.3#optional!builtin": version: 5.9.3 resolution: "typescript@patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=8c6c40" bin: @@ -3141,6 +5394,24 @@ __metadata: languageName: node linkType: hard +"unique-filename@npm:^2.0.0": + version: 2.0.1 + resolution: "unique-filename@npm:2.0.1" + dependencies: + unique-slug: "npm:^3.0.0" + checksum: 10c0/55d95cd670c4a86117ebc34d394936d712d43b56db6bc511f9ca00f666373818bf9f075fb0ab76bcbfaf134592ef26bb75aad20786c1ff1ceba4457eaba90fb8 + languageName: node + linkType: hard + +"unique-slug@npm:^3.0.0": + version: 3.0.0 + resolution: "unique-slug@npm:3.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/617240eb921af803b47d322d75a71a363dacf2e56c29ae5d1404fad85f64f4ec81ef10ee4fd79215d0202cbe1e5a653edb0558d59c9c81d3bd538c2d58e4c026 + languageName: node + linkType: hard + "universalify@npm:^0.1.0": version: 0.1.2 resolution: "universalify@npm:0.1.2" @@ -3148,6 +5419,13 @@ __metadata: languageName: node linkType: hard +"universalify@npm:^2.0.0": + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: 10c0/73e8ee3809041ca8b818efb141801a1004e3fc0002727f1531f4de613ea281b494a40909596dae4a042a4fb6cd385af5d4db2e137b1362e0e91384b828effd3a + languageName: node + linkType: hard + "update-browserslist-db@npm:^1.2.3": version: 1.2.3 resolution: "update-browserslist-db@npm:1.2.3" @@ -3162,13 +5440,40 @@ __metadata: languageName: node linkType: hard -"util-deprecate@npm:^1.0.2": +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: "npm:^2.1.0" + checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c + languageName: node + linkType: hard + +"utf8-byte-length@npm:^1.0.1": + version: 1.0.5 + resolution: "utf8-byte-length@npm:1.0.5" + checksum: 10c0/e69bda3299608f4cc75976da9fb74ac94801a58b9ca29fdad03a20ec952e7477d7f226c12716b5f36bd4cff8151d1d152d02ee1df3752f017d4b2c725ce3e47a + languageName: node + linkType: hard + +"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" checksum: 10c0/41a5bdd214df2f6c3ecf8622745e4a366c4adced864bc3c833739791aeeeb1838119af7daed4ba36428114b5c67dcda034a79c882e97e43c03e66a4dd7389942 languageName: node linkType: hard +"verror@npm:^1.10.0": + version: 1.10.1 + resolution: "verror@npm:1.10.1" + dependencies: + assert-plus: "npm:^1.0.0" + core-util-is: "npm:1.0.2" + extsprintf: "npm:^1.2.0" + checksum: 10c0/293fb060a4c9b07965569a0c3e45efa954127818707995a8a4311f691b5d6687be99f972c759838ba6eecae717f9af28e3c49d2afc7bbdf5f0b675238f1426e8 + languageName: node + linkType: hard + "vite-node@npm:3.2.4": version: 3.2.4 resolution: "vite-node@npm:3.2.4" @@ -3350,6 +5655,26 @@ __metadata: languageName: node linkType: hard +"wcwidth@npm:^1.0.1": + version: 1.0.1 + resolution: "wcwidth@npm:1.0.1" + dependencies: + defaults: "npm:^1.0.3" + checksum: 10c0/5b61ca583a95e2dd85d7078400190efd452e05751a64accb8c06ce4db65d7e0b0cde9917d705e826a2e05cc2548f61efde115ffa374c3e436d04be45c889e5b4 + languageName: node + linkType: hard + +"which@npm:^2.0.1, which@npm:^2.0.2": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + "which@npm:^7.0.0": version: 7.0.0 resolution: "which@npm:7.0.0" @@ -3373,6 +5698,37 @@ __metadata: languageName: node linkType: hard +"wide-align@npm:^1.1.5": + version: 1.1.5 + resolution: "wide-align@npm:1.1.5" + dependencies: + string-width: "npm:^1.0.2 || 2 || 3 || 4" + checksum: 10c0/1d9c2a3e36dfb09832f38e2e699c367ef190f96b82c71f809bc0822c306f5379df87bab47bed27ea99106d86447e50eb972d3c516c2f95782807a9d082fbea95 + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + "wrappy@npm:1": version: 1.0.2 resolution: "wrappy@npm:1.0.2" @@ -3380,6 +5736,20 @@ __metadata: languageName: node linkType: hard +"xmlbuilder@npm:>=11.0.1, xmlbuilder@npm:^15.1.1": + version: 15.1.1 + resolution: "xmlbuilder@npm:15.1.1" + checksum: 10c0/665266a8916498ff8d82b3d46d3993913477a254b98149ff7cff060d9b7cc0db7cf5a3dae99aed92355254a808c0e2e3ec74ad1b04aa1061bdb8dfbea26c18b8 + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + "yallist@npm:^3.0.2": version: 3.1.1 resolution: "yallist@npm:3.1.1" @@ -3387,6 +5757,13 @@ __metadata: languageName: node linkType: hard +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + "yallist@npm:^5.0.0": version: 5.0.0 resolution: "yallist@npm:5.0.0" @@ -3394,6 +5771,28 @@ __metadata: languageName: node linkType: hard +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 + languageName: node + linkType: hard + +"yargs@npm:^17.0.1, yargs@npm:^17.6.2": + version: 17.7.3 + resolution: "yargs@npm:17.7.3" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/7a28572f7e785a57886e34fdbddb9b28756dec552e1453d5f6e7cdd00ad8721a4e8c4321d33683f5e61cacb36ad43258adbb48396b71ec4ed14abee0fc0d0c1f + languageName: node + linkType: hard + "yauzl@npm:^2.10.0": version: 2.10.0 resolution: "yauzl@npm:2.10.0" @@ -3403,3 +5802,10 @@ __metadata: checksum: 10c0/f265002af7541b9ec3589a27f5fb8f11cf348b53cc15e2751272e3c062cd73f3e715bc72d43257de71bbaecae446c3f1b14af7559e8ab0261625375541816422 languageName: node linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + languageName: node + linkType: hard