From c6c15c7222c73e19f217b411ea048b3813b3a3f3 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 15 Jul 2026 10:22:43 +0000 Subject: [PATCH 1/4] docs: reposition this repository as the ObjectOS product front door MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ObjectOS is now exclusively the commercial runtime environment for ObjectStack applications (Cloud & Enterprise). This public repository becomes its front door: the docs site (docs.objectos.ai), the issue tracker, and the trademark policy. - README: commercial positioning, editions table, pointer to the open-source ObjectStack framework (os start / official image) for self-hosting your own apps, and a 'what happened to the code here' section: @objectos/server superseded by the official runtime image; ObjectOS One discontinued (Docker image + Cloud trials cover demos/evals); all historical releases remain Apache-2.0 in git history. - CONTRIBUTING: scope narrowed to docs + issues. - AGENTS: repository description updated. Confirmed by maintainer: 确认执行 A+B,停更 One。 Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_0162o68e5w3bpUBEVRQboUGG --- AGENTS.md | 2 +- CONTRIBUTING.md | 46 +++++------- README.md | 194 ++++++++++++++---------------------------------- 3 files changed, 75 insertions(+), 167 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 120d436..912d471 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -4,7 +4,7 @@ Guidance for AI agents (Claude Code, Codex, Cursor, etc.) working in this reposi ## Repository -ObjectOS — customer-hosted runtime for ObjectStack applications. Monorepo with the marketing + docs site under `apps/docs`. +ObjectOS — the commercial runtime environment for ObjectStack applications (Cloud & Enterprise editions). This public repository is the product's front door: the marketing + docs site under `apps/docs` (content in `content/docs/`), the issue tracker, and the trademark policy. Product source is developed privately and does not live here. ## Critical rules diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 351289e..f515043 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,37 +1,31 @@ # Contributing to ObjectOS -ObjectOS is the **distribution layer** of the ObjectStack ecosystem. +ObjectOS is a **commercial product**; its source is developed privately. +This public repository hosts the **documentation site and issue tracker**. Read this before opening a PR. ## What belongs here -- Runtime distribution glue: `apps/objectos/objectstack.config.ts`, - Dockerfile, Helm chart, deployment examples. -- Documentation for installing, configuring, upgrading and operating - ObjectOS (`content/docs/`, `apps/docs/`). -- **Enterprise plugins** maintained by the ObjectStack team under - `packages/plugin-*`. +- **Documentation** for installing, configuring, upgrading, and operating + ObjectOS (`content/docs/`), authored **English-first** — other locales are + derived translations (see [AGENTS.md](AGENTS.md)). +- **Docs site** improvements (`apps/docs/` — Next.js + Fumadocs). +- **Issues**: bug reports and feature requests for ObjectOS Cloud and + ObjectOS Enterprise. ## What does NOT belong here -- Protocol schemas, kernel internals, drivers or community plugins — - those live in [`objectstack-ai/framework`](https://github.com/objectstack-ai/framework). - If a change needs to modify a `@objectstack/*` package, open the PR - there first; only after it ships to npm can ObjectOS consume it. -- Application metadata, business logic or sample apps — those belong - to the application's own repository or to `framework/examples/`. +- **Product source changes** — ObjectOS itself is developed privately. Report + behavior as an issue instead. +- **Framework changes** — protocol schemas, kernel internals, drivers, and + community plugins live in + [`objectstack-ai/framework`](https://github.com/objectstack-ai/framework) + (open source, Apache-2.0). Open PRs there. -## Development +## History -```bash -pnpm install -pnpm build -pnpm test -``` - -## License - -By contributing you agree your contributions are licensed under the -[Apache License 2.0](LICENSE), the same license that covers this -repository. Per Apache 2.0 § 5, contributions are submitted under the -terms of the License without any additional terms or conditions. +Until July 2026 this repository contained the free `@objectos/server` +reference distribution and the ObjectOS One desktop build. See the +[README](README.md#what-happened-to-the-code-that-used-to-live-here) for +where those capabilities went; historical source remains under Apache-2.0 +in git history. diff --git a/README.md b/README.md index 6c28c5d..59f4d37 100644 --- a/README.md +++ b/README.md @@ -1,162 +1,76 @@ # ObjectOS -> **The business platform AI can actually use — running in your own environment.** -> -> ObjectOS is the AI-native runtime for [ObjectStack](https://github.com/objectstack-ai/framework) -> applications. Put your business systems — CRM, contracts, tickets, -> approvals, anything modeled in ObjectStack metadata — on ObjectOS, and -> AI agents can safely query, analyze, and act on that data under your -> permissions, on your servers, with every step audited. - -**ObjectStack** is a metadata protocol for describing business -applications — objects, permissions, workflows, APIs, UI, and AI tools — -in one structured definition. -**ObjectOS** is where those applications run, and where AI plugs in. +> **The official runtime environment for ObjectStack applications** — operated +> for end-user organizations as **ObjectOS Cloud** (managed) and +> **ObjectOS Enterprise** (self-managed). -``` -ObjectStack → how a business application is described -ObjectOS → where it runs, and where AI plugs in -``` +ObjectOS is a **commercial product**. This repository is its public home: -## See it running - -ObjectStack metadata, running on ObjectOS — the business apps your team actually uses, with AI working the same data under the same permissions. - -

- A business application running on ObjectOS: an executive dashboard with revenue, account, and pipeline KPIs plus charts -
A business app running on ObjectOS — dashboards, KPIs, and reports over data you host. -

- -

- Pipeline as a kanban board - Delivery plan as a Gantt schedule -

-

- Records on a calendar - Records as a cover gallery -

-

The same records as boards, Gantt schedules, calendars, and galleries — rendered by the runtime from metadata, no extra UI code.

- -

- A record page with a guided stage path and actions - AI assistant querying business records -

-

Rich records with guided actions, and AI plugged into the same data — agents act as the signed-in user, every step audited.

- -## Why ObjectOS - -The promise of "AI inside the enterprise" usually breaks on two things: -AI can't actually use the business system, and security can't say yes -to letting it try. ObjectOS removes both blockers: - -- **Every object is an AI tool, automatically.** Define a business - object once in ObjectStack metadata; ObjectOS exposes it to AI agents - as a governed, callable tool — no glue code, no separate integration - layer to maintain. -- **AI acts as the signed-in user.** Whatever that person is allowed to - see or do, the agent can — nothing more. The boundary is enforced in - the runtime, not in the prompt. -- **One audit log for humans and agents.** Every read, write, and - escalation — by a person or an AI — is recorded with who, what, when, - and why. Compliance gets one log to look at, not two. -- **Permissions enforced at the runtime.** Role-based access, - record-level rules, and field-level redaction run inside ObjectOS, so - the same policy applies whether the call comes from the UI, an API - client, or an agent. -- **Your data, your network.** Runs in your environment — private cloud, - on-prem, or fully air-gapped. Business data and AI prompts stay - inside your perimeter; no third party in the loop. -- **Plugs into the identity you already operate.** OAuth, OIDC, SAML, - corporate SSO, or local accounts. AI sessions inherit the same - identity, MFA, and offboarding — no separate "AI account" to govern. - -## Positioning - -| | ObjectStack framework | **ObjectOS** | Plugins | -|---|---|---|---| -| Role | The protocol — *how* an application is described | The runtime — *where* it runs and where AI plugs in | Anyone-can-write extensions on top of the runtime | -| Repo | `objectstack-ai/framework` | `objectstack-ai/objectos` | Any repo publishing `@objectos/plugin-*` (or your own scope) | -| What it ships | Protocol, kernel, `@objectstack/*` packages, Console, control plane | Runtime distribution + Docker/Helm + ops docs | Drivers, identity providers, audit exporters, custom UI, AI tools, integrations — your call | -| Who builds it | Framework contributors | Distribution maintainers | **Anyone** — community, vendors, your own team | -| License | Apache-2.0 | **Apache-2.0** | Author's choice (Apache-2.0, MIT, commercial, internal-only) | -| Release cadence | Frequent (per `changeset`) | Distribution semver (e.g. `2026.05 LTS`) | Independent — plugins version themselves | - -Plugins are first-class: ObjectOS exposes the same extension points the -core uses. See [`packages/`](packages/) for reference plugins, and the -[plugin authoring guide](content/docs/extend/plugins.mdx) to publish -your own. - -## Boot modes - -ObjectOS boots in one of two modes, selected by environment variables: - -| Mode | Required env | Use case | -|---|---|---| -| **Cloud-connected** | `OS_CLOUD_URL`, `OS_PROJECT_ID` | Production with the ObjectStack control plane / Console | -| **Offline / air-gapped** | `OS_ARTIFACT_FILE` | Compile locally with the CLI, ship the JSON artifact, run anywhere | - -See [`apps/objectos/objectstack.config.ts`](apps/objectos/objectstack.config.ts). - -## Quick start +- 📚 **Documentation** — source for [docs.objectos.ai](https://docs.objectos.ai) + (`content/docs/`, built by `apps/docs/`), in seven languages. +- 🐛 **Issue tracker** — bug reports and feature requests for ObjectOS Cloud + and ObjectOS Enterprise. +- ™️ **Trademark policy** — [TRADEMARK.md](TRADEMARK.md). The "ObjectOS" name + and logo are trademarks and are not covered by the code license. -```bash -pnpm install +The product source is developed privately and is not published in this +repository. There is no open-source edition of ObjectOS. -# Build the runtime distribution and docs -pnpm build +## Editions -# Boot the runtime against a local compiled artifact -cd apps/objectos -OS_ARTIFACT_FILE=dist/objectstack.json PORT=3200 pnpm start +| Edition | Delivery | For | +|:---|:---|:---| +| **ObjectOS Cloud** | Managed service | Organizations that want the platform operated for them — orgs, environments, deploys, billing. | +| **ObjectOS Enterprise** | Self-managed deployment | Organizations that run the platform on their own infrastructure. | -# Or run the documentation site -pnpm docs:dev -``` +See [docs.objectos.ai](https://docs.objectos.ai) for capabilities, deployment, +and operations documentation. -### Docker +## Building and running your own apps? That's ObjectStack — and it's open source + +Everything you need to **build, run, and self-host your own applications** is +the open-source (Apache-2.0) **[ObjectStack framework](https://github.com/objectstack-ai/framework)**: -```bash -mkdir -p docker/artifacts -cp apps/objectos/dist/objectstack.json docker/artifacts/objectstack.json -docker compose -f docker/docker-compose.yml up --build +``` +ObjectStack → for builders — the open-source protocol, toolkit, and production runtime +ObjectOS → for end users — the commercial runtime environment (Cloud & Enterprise) ``` -Docker Compose publishes ObjectOS on `http://localhost:3000` by default. -Use `OBJECTOS_PORT=3200` to change the host port. +`os start` — or the official Docker image +[`ghcr.io/objectstack-ai/objectstack`](https://github.com/objectstack-ai/framework/tree/main/docker) — +serves your compiled app in production with the Console, permissions, and +audit included. No commercial license required. -## Repository layout +## What happened to the code that used to live here? -``` -objectos/ -├── apps/ -│ ├── objectos/ # Runtime entry — single objectstack.config.ts -│ └── docs/ # Product / operations site (Fumadocs + Next.js) -├── packages/ # Plugins (@objectos/plugin-*) — anyone can write one -├── content/docs/ # MDX content powering apps/docs -├── docker/ # Dockerfile + docker-compose -├── helm/ # Helm chart (planned) -├── examples/ # Reference deployments -├── e2e/ # Black-box smoke tests against the published image -└── scripts/ -``` +Until July 2026 this repository contained a free reference runtime +distribution (`@objectos/server`) and a desktop build (**ObjectOS One**). +As part of clarifying the ObjectStack / ObjectOS split: -## Documentation +- **`@objectos/server` is superseded** by the official ObjectStack runtime + image (`ghcr.io/objectstack-ai/objectstack`) — the same capability, + maintained where the runtime itself lives. +- **ObjectOS One is discontinued.** Demos and evaluations are served by the + official Docker image and ObjectOS Cloud trials. +- **Everything already released stays licensed as released**: historical + source remains available under Apache-2.0 in this repository's git history + (archive tag: `archive/apache-final`). Nothing is retroactively withdrawn. -- [Quickstart](content/docs/quickstart.mdx) -- [Architecture](content/docs/architecture.mdx) -- [Deployment](content/docs/deploy/index.mdx) — Docker, Kubernetes, air-gapped -- [Authentication](content/docs/configure/authentication.mdx) -- [Permissions](content/docs/configure/permissions.mdx) -- [Observability](content/docs/operate/observability.mdx) +## Working on the docs -## History +```bash +pnpm install +pnpm docs:dev # Fumadocs site at http://localhost:3000 +``` -The current `main` is a deliberate restart aligned with the -[ObjectStack North Star](https://github.com/objectstack-ai/framework/blob/main/content/docs/concepts/north-star.mdx). +Documentation is authored **English-first**; other locales are derived +translations (see [AGENTS.md](AGENTS.md)). Contributions are welcome — +see [CONTRIBUTING.md](CONTRIBUTING.md). ## License -ObjectOS is licensed under the [Apache License 2.0](LICENSE). +The contents of this repository (documentation and site code) are licensed +under the [Apache License 2.0](LICENSE). -"ObjectOS" and the ObjectOS logo are trademarks of the ObjectOS project -and are not covered by the Apache 2.0 grant. See [TRADEMARK.md](TRADEMARK.md). +"ObjectOS" and the ObjectOS logo are trademarks of the ObjectOS project and +are not covered by the Apache 2.0 grant. See [TRADEMARK.md](TRADEMARK.md). From bee77d5822fd11bd31a4a41a23f95b0f22d25bd5 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 15 Jul 2026 10:25:14 +0000 Subject: [PATCH 2/4] =?UTF-8?q?chore:=20remove=20superseded=20product=20co?= =?UTF-8?q?de=20=E2=80=94=20repository=20is=20now=20the=20docs=20+=20issue?= =?UTF-8?q?s=20front=20door?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Removes, per maintainer confirmation (see previous commit): - apps/objectos (@objectos/server — superseded by the official runtime image ghcr.io/objectstack-ai/objectstack) - apps/objectos-one (ObjectOS One — discontinued; demos/evals are served by the Docker image and ObjectOS Cloud trials) - packages/, docker/, helm/, e2e/, examples/, scripts/ - workflows: docker.yml, one.yml, release-one.yml Kept: apps/docs + content/ (docs.objectos.ai source), LICENSE, NOTICE, TRADEMARK.md, CHANGELOG.md. ci.yml trimmed to the docs-only workspace; package.json scripts and pnpm-workspace.yaml pruned; lockfile regenerated. All previously released source remains Apache-2.0 in git history — maintainers should place an 'archive/apache-final' tag on the pre-merge main before merging. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_0162o68e5w3bpUBEVRQboUGG --- .github/workflows/ci.yml | 9 +- .github/workflows/docker.yml | 41 - .github/workflows/one.yml | 311 - .github/workflows/release-one.yml | 159 - apps/objectos-one/README.md | 200 - apps/objectos-one/package.json | 19 - apps/objectos-one/scripts/stage-runtime.mjs | 167 - apps/objectos-one/scripts/sync-version.mjs | 167 - apps/objectos-one/src-tauri/Cargo.lock | 5911 ----------------- apps/objectos-one/src-tauri/Cargo.toml | 41 - .../src-tauri/assets/notification-bridge.js | 144 - .../src-tauri/assets/update-banner.js | 116 - apps/objectos-one/src-tauri/build.rs | 3 - .../src-tauri/capabilities/default.json | 24 - apps/objectos-one/src-tauri/icons/128x128.png | Bin 4609 -> 0 bytes .../src-tauri/icons/128x128@2x.png | Bin 9566 -> 0 bytes apps/objectos-one/src-tauri/icons/32x32.png | Bin 1356 -> 0 bytes apps/objectos-one/src-tauri/icons/64x64.png | Bin 2407 -> 0 bytes .../src-tauri/icons/Square107x107Logo.png | Bin 3933 -> 0 bytes .../src-tauri/icons/Square142x142Logo.png | Bin 5223 -> 0 bytes .../src-tauri/icons/Square150x150Logo.png | Bin 5531 -> 0 bytes .../src-tauri/icons/Square284x284Logo.png | Bin 11205 -> 0 bytes .../src-tauri/icons/Square30x30Logo.png | Bin 1280 -> 0 bytes .../src-tauri/icons/Square310x310Logo.png | Bin 12107 -> 0 bytes .../src-tauri/icons/Square44x44Logo.png | Bin 1335 -> 0 bytes .../src-tauri/icons/Square71x71Logo.png | Bin 2576 -> 0 bytes .../src-tauri/icons/Square89x89Logo.png | Bin 3100 -> 0 bytes .../src-tauri/icons/StoreLogo.png | Bin 1988 -> 0 bytes .../src-tauri/icons/_source/generate.py | 98 - .../src-tauri/icons/_source/icon-1024.png | Bin 116545 -> 0 bytes .../android/mipmap-anydpi-v26/ic_launcher.xml | 5 - .../icons/android/mipmap-hdpi/ic_launcher.png | Bin 2268 -> 0 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 5936 -> 0 bytes .../android/mipmap-hdpi/ic_launcher_round.png | Bin 1747 -> 0 bytes .../icons/android/mipmap-mdpi/ic_launcher.png | Bin 2180 -> 0 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 3991 -> 0 bytes .../android/mipmap-mdpi/ic_launcher_round.png | Bin 1635 -> 0 bytes .../android/mipmap-xhdpi/ic_launcher.png | Bin 4829 -> 0 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 8167 -> 0 bytes .../mipmap-xhdpi/ic_launcher_round.png | Bin 3493 -> 0 bytes .../android/mipmap-xxhdpi/ic_launcher.png | Bin 7058 -> 0 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 12272 -> 0 bytes .../mipmap-xxhdpi/ic_launcher_round.png | Bin 5588 -> 0 bytes .../android/mipmap-xxxhdpi/ic_launcher.png | Bin 9732 -> 0 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 17834 -> 0 bytes .../mipmap-xxxhdpi/ic_launcher_round.png | Bin 7442 -> 0 bytes .../android/values/ic_launcher_background.xml | 4 - apps/objectos-one/src-tauri/icons/icon.icns | Bin 99724 -> 0 bytes apps/objectos-one/src-tauri/icons/icon.ico | Bin 20571 -> 0 bytes apps/objectos-one/src-tauri/icons/icon.png | Bin 20708 -> 0 bytes .../src-tauri/icons/ios/AppIcon-20x20@1x.png | Bin 803 -> 0 bytes .../icons/ios/AppIcon-20x20@2x-1.png | Bin 1600 -> 0 bytes .../src-tauri/icons/ios/AppIcon-20x20@2x.png | Bin 1600 -> 0 bytes .../src-tauri/icons/ios/AppIcon-20x20@3x.png | Bin 2159 -> 0 bytes .../src-tauri/icons/ios/AppIcon-29x29@1x.png | Bin 1252 -> 0 bytes .../icons/ios/AppIcon-29x29@2x-1.png | Bin 2135 -> 0 bytes .../src-tauri/icons/ios/AppIcon-29x29@2x.png | Bin 2135 -> 0 bytes .../src-tauri/icons/ios/AppIcon-29x29@3x.png | Bin 2991 -> 0 bytes .../src-tauri/icons/ios/AppIcon-40x40@1x.png | Bin 1600 -> 0 bytes .../icons/ios/AppIcon-40x40@2x-1.png | Bin 2798 -> 0 bytes .../src-tauri/icons/ios/AppIcon-40x40@2x.png | Bin 2798 -> 0 bytes .../src-tauri/icons/ios/AppIcon-40x40@3x.png | Bin 4137 -> 0 bytes .../src-tauri/icons/ios/AppIcon-512@2x.png | Bin 25997 -> 0 bytes .../src-tauri/icons/ios/AppIcon-60x60@2x.png | Bin 4137 -> 0 bytes .../src-tauri/icons/ios/AppIcon-60x60@3x.png | Bin 6276 -> 0 bytes .../src-tauri/icons/ios/AppIcon-76x76@1x.png | Bin 2650 -> 0 bytes .../src-tauri/icons/ios/AppIcon-76x76@2x.png | Bin 5343 -> 0 bytes .../icons/ios/AppIcon-83.5x83.5@2x.png | Bin 5653 -> 0 bytes .../src-tauri/runtime-entitlements.plist | 17 - apps/objectos-one/src-tauri/src/commands.rs | 102 - apps/objectos-one/src-tauri/src/config.rs | 136 - apps/objectos-one/src-tauri/src/lib.rs | 111 - apps/objectos-one/src-tauri/src/logger.rs | 136 - apps/objectos-one/src-tauri/src/main.rs | 6 - apps/objectos-one/src-tauri/src/menu.rs | 220 - apps/objectos-one/src-tauri/src/paths.rs | 49 - apps/objectos-one/src-tauri/src/sidecar.rs | 353 - apps/objectos-one/src-tauri/src/updater.rs | 284 - apps/objectos-one/src-tauri/src/windows.rs | 98 - apps/objectos-one/src-tauri/tauri.conf.json | 77 - apps/objectos-one/src/index.html | 170 - apps/objectos-one/src/prefs.html | 334 - apps/objectos/README.md | 56 - apps/objectos/objectstack.config.ts | 65 - apps/objectos/one.mjs | 205 - apps/objectos/package.json | 32 - apps/objectos/tsconfig.json | 8 - docker/Dockerfile | 48 - docker/artifacts/.gitkeep | 0 docker/docker-compose.yml | 41 - e2e/README.md | 5 - examples/cloud-connected/README.md | 4 - examples/self-hosted-sqlite/README.md | 4 - helm/README.md | 2 - package.json | 10 +- packages/README.md | 8 - pnpm-lock.yaml | 4423 +----------- pnpm-workspace.yaml | 2 - scripts/README.md | 2 - scripts/build-one.sh | 176 - scripts/smoke-runtime.sh | 31 - 101 files changed, 58 insertions(+), 14576 deletions(-) delete mode 100644 .github/workflows/docker.yml delete mode 100644 .github/workflows/one.yml delete mode 100644 .github/workflows/release-one.yml delete mode 100644 apps/objectos-one/README.md delete mode 100644 apps/objectos-one/package.json delete mode 100644 apps/objectos-one/scripts/stage-runtime.mjs delete mode 100644 apps/objectos-one/scripts/sync-version.mjs delete mode 100644 apps/objectos-one/src-tauri/Cargo.lock delete mode 100644 apps/objectos-one/src-tauri/Cargo.toml delete mode 100644 apps/objectos-one/src-tauri/assets/notification-bridge.js delete mode 100644 apps/objectos-one/src-tauri/assets/update-banner.js delete mode 100644 apps/objectos-one/src-tauri/build.rs delete mode 100644 apps/objectos-one/src-tauri/capabilities/default.json delete mode 100644 apps/objectos-one/src-tauri/icons/128x128.png delete mode 100644 apps/objectos-one/src-tauri/icons/128x128@2x.png delete mode 100644 apps/objectos-one/src-tauri/icons/32x32.png delete mode 100644 apps/objectos-one/src-tauri/icons/64x64.png delete mode 100644 apps/objectos-one/src-tauri/icons/Square107x107Logo.png delete mode 100644 apps/objectos-one/src-tauri/icons/Square142x142Logo.png delete mode 100644 apps/objectos-one/src-tauri/icons/Square150x150Logo.png delete mode 100644 apps/objectos-one/src-tauri/icons/Square284x284Logo.png delete mode 100644 apps/objectos-one/src-tauri/icons/Square30x30Logo.png delete mode 100644 apps/objectos-one/src-tauri/icons/Square310x310Logo.png delete mode 100644 apps/objectos-one/src-tauri/icons/Square44x44Logo.png delete mode 100644 apps/objectos-one/src-tauri/icons/Square71x71Logo.png delete mode 100644 apps/objectos-one/src-tauri/icons/Square89x89Logo.png delete mode 100644 apps/objectos-one/src-tauri/icons/StoreLogo.png delete mode 100644 apps/objectos-one/src-tauri/icons/_source/generate.py delete mode 100644 apps/objectos-one/src-tauri/icons/_source/icon-1024.png delete mode 100644 apps/objectos-one/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml delete mode 100644 apps/objectos-one/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png delete mode 100644 apps/objectos-one/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png delete mode 100644 apps/objectos-one/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png delete mode 100644 apps/objectos-one/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png delete mode 100644 apps/objectos-one/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png delete mode 100644 apps/objectos-one/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png delete mode 100644 apps/objectos-one/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png delete mode 100644 apps/objectos-one/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png delete mode 100644 apps/objectos-one/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 apps/objectos-one/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png delete mode 100644 apps/objectos-one/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png delete mode 100644 apps/objectos-one/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 apps/objectos-one/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 apps/objectos-one/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png delete mode 100644 apps/objectos-one/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png delete mode 100644 apps/objectos-one/src-tauri/icons/android/values/ic_launcher_background.xml delete mode 100644 apps/objectos-one/src-tauri/icons/icon.icns delete mode 100644 apps/objectos-one/src-tauri/icons/icon.ico delete mode 100644 apps/objectos-one/src-tauri/icons/icon.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-20x20@1x.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-20x20@2x-1.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-20x20@2x.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-20x20@3x.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-29x29@1x.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-29x29@2x-1.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-29x29@2x.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-29x29@3x.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-40x40@1x.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-40x40@2x-1.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-40x40@2x.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-40x40@3x.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-512@2x.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-60x60@2x.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-60x60@3x.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-76x76@1x.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-76x76@2x.png delete mode 100644 apps/objectos-one/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png delete mode 100644 apps/objectos-one/src-tauri/runtime-entitlements.plist delete mode 100644 apps/objectos-one/src-tauri/src/commands.rs delete mode 100644 apps/objectos-one/src-tauri/src/config.rs delete mode 100644 apps/objectos-one/src-tauri/src/lib.rs delete mode 100644 apps/objectos-one/src-tauri/src/logger.rs delete mode 100644 apps/objectos-one/src-tauri/src/main.rs delete mode 100644 apps/objectos-one/src-tauri/src/menu.rs delete mode 100644 apps/objectos-one/src-tauri/src/paths.rs delete mode 100644 apps/objectos-one/src-tauri/src/sidecar.rs delete mode 100644 apps/objectos-one/src-tauri/src/updater.rs delete mode 100644 apps/objectos-one/src-tauri/src/windows.rs delete mode 100644 apps/objectos-one/src-tauri/tauri.conf.json delete mode 100644 apps/objectos-one/src/index.html delete mode 100644 apps/objectos-one/src/prefs.html delete mode 100644 apps/objectos/README.md delete mode 100644 apps/objectos/objectstack.config.ts delete mode 100644 apps/objectos/one.mjs delete mode 100644 apps/objectos/package.json delete mode 100644 apps/objectos/tsconfig.json delete mode 100644 docker/Dockerfile delete mode 100644 docker/artifacts/.gitkeep delete mode 100644 docker/docker-compose.yml delete mode 100644 e2e/README.md delete mode 100644 examples/cloud-connected/README.md delete mode 100644 examples/self-hosted-sqlite/README.md delete mode 100644 helm/README.md delete mode 100644 packages/README.md delete mode 100644 scripts/README.md delete mode 100755 scripts/build-one.sh delete mode 100755 scripts/smoke-runtime.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 436dcea..3775f40 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,9 +17,6 @@ jobs: node-version: 20 cache: pnpm - run: pnpm install --frozen-lockfile - # Exclude @objectos/one (Tauri desktop app): it requires native GTK/WebKit - # system libraries and is built separately by .github/workflows/one.yml - # on platform-specific runners. - - run: pnpm turbo run type-check --continue --filter=!@objectos/one - - run: pnpm turbo run build --filter=!@objectos/one - - run: pnpm turbo run test --filter=!@objectos/one + - run: pnpm turbo run type-check --continue + - run: pnpm turbo run build + - run: pnpm turbo run test diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml deleted file mode 100644 index 14f77a8..0000000 --- a/.github/workflows/docker.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: Docker - -on: - push: - branches: [main] - tags: ['v*'] - -jobs: - image: - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - steps: - - uses: actions/checkout@v4 - - uses: docker/setup-buildx-action@v3 - - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - uses: docker/metadata-action@v5 - id: meta - with: - images: ghcr.io/objectstack-ai/objectos - tags: | - type=ref,event=branch - type=ref,event=tag - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=sha,prefix=sha-,format=short - type=raw,value=latest,enable={{is_default_branch}} - - uses: docker/build-push-action@v6 - with: - context: . - file: docker/Dockerfile - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max diff --git a/.github/workflows/one.yml b/.github/workflows/one.yml deleted file mode 100644 index 44aaea8..0000000 --- a/.github/workflows/one.yml +++ /dev/null @@ -1,311 +0,0 @@ -name: one - -on: - push: - tags: - - 'one-v*' - workflow_dispatch: - inputs: - release: - description: 'Create a GitHub release with the artifacts' - type: boolean - default: false - -permissions: - contents: write - -jobs: - build: - name: ${{ matrix.label }} - runs-on: ${{ matrix.os }} - timeout-minutes: 45 - strategy: - fail-fast: false - matrix: - include: - - label: macOS (arm64) - os: macos-14 - target: aarch64-apple-darwin - target-arch: arm64 - bundle-dir: macos - - label: macOS (x64) - os: macos-14 - target: x86_64-apple-darwin - target-arch: x64 - bundle-dir: macos - - label: Windows (x64) - os: windows-2022 - target: x86_64-pc-windows-msvc - target-arch: x64 - bundle-dir: nsis - - label: Linux (x64) - os: ubuntu-22.04 - target: x86_64-unknown-linux-gnu - target-arch: x64 - bundle-dir: deb - - steps: - - uses: actions/checkout@v4 - - - name: Linux build deps - if: runner.os == 'Linux' - run: | - sudo apt-get update - sudo apt-get install -y \ - libwebkit2gtk-4.1-dev libssl-dev libayatana-appindicator3-dev \ - librsvg2-dev patchelf libgtk-3-dev libsoup-3.0-dev - - - uses: pnpm/action-setup@v4 - with: - version: 10.28.2 - - - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: pnpm - - - uses: dtolnay/rust-toolchain@stable - with: - targets: ${{ matrix.target }} - - - uses: Swatinem/rust-cache@v2 - with: - workspaces: apps/objectos-one/src-tauri - - - name: Install workspace deps - run: pnpm install --frozen-lockfile - - - name: Sync app version to @objectstack/cli - run: pnpm --filter @objectos/one sync-version - - - name: Verify tag matches @objectstack/cli version - if: startsWith(github.ref, 'refs/tags/one-v') - shell: bash - run: | - set -euo pipefail - # Tag form: one-v; must equal the resolved cli version that - # sync-version wrote into the bundle, otherwise the updater's - # latest.json (built from the tag) will not match the installed - # app version and auto-update will silently fail. - TAG_VERSION="${GITHUB_REF_NAME#one-v}" - PKG_VERSION=$(node -p "require('./apps/objectos-one/package.json').version") - echo "tag version : $TAG_VERSION" - echo "pkg version : $PKG_VERSION" - if [ "$TAG_VERSION" != "$PKG_VERSION" ]; then - echo "::error::tag $GITHUB_REF_NAME does not match @objectstack/cli version $PKG_VERSION. Re-tag as one-v$PKG_VERSION." - exit 1 - fi - - - name: Stage Node runtime - env: - TARGET_ARCH: ${{ matrix.target-arch }} - run: pnpm --filter @objectos/one stage - - - name: Import Apple signing certificate - if: runner.os == 'macOS' - env: - APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} - APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} - run: | - set -euo pipefail - if [ -z "${APPLE_CERTIFICATE:-}" ]; then - echo "APPLE_CERTIFICATE not set — skipping (build will be unsigned)." - exit 0 - fi - - KEYCHAIN="$RUNNER_TEMP/build.keychain-db" - KEYCHAIN_PASSWORD="$(openssl rand -base64 24)" - CERT_PATH="$RUNNER_TEMP/cert.p12" - - echo "$APPLE_CERTIFICATE" | base64 --decode > "$CERT_PATH" - - security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN" - security set-keychain-settings -lut 21600 "$KEYCHAIN" - security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN" - - security import "$CERT_PATH" -k "$KEYCHAIN" \ - -P "$APPLE_CERTIFICATE_PASSWORD" \ - -T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/productbuild - - security set-key-partition-list \ - -S apple-tool:,apple:,codesign: \ - -s -k "$KEYCHAIN_PASSWORD" "$KEYCHAIN" >/dev/null - - # Put new keychain first in the search list (keep existing ones too). - security list-keychains -d user -s "$KEYCHAIN" $(security list-keychains -d user | tr -d '"') - - echo "Available signing identities:" - security find-identity -v -p codesigning "$KEYCHAIN" - - rm -f "$CERT_PATH" - - - name: Debug Apple secret presence - if: runner.os == 'macOS' - env: - APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} - APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} - APPLE_ID: ${{ secrets.APPLE_ID }} - APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} - APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }} - APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} - run: | - # Print only the byte-length of each Apple secret so we can - # tell whether the value reached the runner without leaking it. - echo "APPLE_CERTIFICATE length=${#APPLE_CERTIFICATE}" - echo "APPLE_CERTIFICATE_PASSWORD length=${#APPLE_CERTIFICATE_PASSWORD}" - echo "APPLE_SIGNING_IDENTITY length=${#APPLE_SIGNING_IDENTITY}" - echo "APPLE_TEAM_ID length=${#APPLE_TEAM_ID}" - echo "APPLE_ID length=${#APPLE_ID}" - echo "APPLE_PASSWORD length=${#APPLE_PASSWORD}" - - - name: Pre-sign staged runtime binaries (macOS) - if: runner.os == 'macOS' - env: - APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} - run: | - set -euo pipefail - if [ -z "${APPLE_SIGNING_IDENTITY:-}" ]; then - echo "APPLE_SIGNING_IDENTITY not set — skipping pre-sign." - exit 0 - fi - - RUNTIME="apps/objectos-one/src-tauri/runtime" - if [ ! -d "$RUNTIME" ]; then - echo "Runtime dir not found at $RUNTIME" - exit 1 - fi - - # Notarization requires every Mach-O inside the .app to be signed - # with the same Developer ID, hardened runtime, and a secure - # timestamp. Tauri's own codesign pass doesn't deep-sign embedded - # Node native binaries, so we sign them here before Tauri bundles. - # - # CRITICAL: the Node binary runs V8, which maps executable (JIT) - # memory at startup. Under hardened runtime that is blocked unless - # the binary carries the JIT entitlements below — otherwise macOS - # kills node with SIGTRAP (exit 133) the instant it launches, which - # surfaces as the bundled runtime crash-looping on every start - # ("sidecar exited; restarting"). Always pass --entitlements. - ENTITLEMENTS="apps/objectos-one/src-tauri/runtime-entitlements.plist" - echo "Scanning $RUNTIME for Mach-O binaries..." - find "$RUNTIME" -type f \ - \( -name '*.node' -o -name '*.dylib' -o -name '*.so' \ - -o -path '*/bin/*' -o -name 'node' \) \ - | while read -r f; do - # Skip anything that isn't actually a Mach-O. - if file -b "$f" | grep -qE 'Mach-O'; then - echo " signing $f" - codesign --force --sign "$APPLE_SIGNING_IDENTITY" \ - --timestamp --options runtime \ - --entitlements "$ENTITLEMENTS" "$f" - fi - done - - echo "Done. Verifying a sample:" - find "$RUNTIME" -type f -name '*.node' | head -1 | while read -r f; do - codesign -dv --verbose=2 "$f" 2>&1 | head -10 || true - done - - # Guard against the JIT-entitlement regression: the node binary MUST - # carry com.apple.security.cs.allow-jit or the runtime crash-loops at - # launch. Fail the build loudly here rather than shipping a brick. - NODE_BIN="$RUNTIME/node" - if [ -f "$NODE_BIN" ]; then - echo "Verifying node JIT entitlement:" - if codesign -d --entitlements - --xml "$NODE_BIN" 2>/dev/null \ - | tr -d '\0' | grep -q 'com.apple.security.cs.allow-jit'; then - echo " ✓ allow-jit present on node" - else - echo " ✗ allow-jit MISSING on node — runtime would crash-loop." >&2 - exit 1 - fi - fi - - - name: Build Tauri bundle - env: - # AppImage tools need FUSE on Linux; ubuntu-22.04 dropped it. - # Setting this forces AppImage runtime to extract-and-run instead. - APPIMAGE_EXTRACT_AND_RUN: "1" - # Tauri updater key (no-password key generated via `signer generate --ci`). - TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }} - TAURI_SIGNING_PRIVATE_KEY_PASSWORD: "" - # macOS code signing (only used if cert was imported above). - APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }} - APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} - # macOS notarization (only triggered if APPLE_ID + APPLE_PASSWORD are set). - APPLE_ID: ${{ secrets.APPLE_ID }} - APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} - shell: bash - run: | - set -euo pipefail - # Tauri treats any defined APPLE_ID/APPLE_PASSWORD as a request to - # notarize; unset them when empty so we just sign without notarizing. - if [ -z "${APPLE_ID:-}" ] || [ -z "${APPLE_PASSWORD:-}" ]; then - unset APPLE_ID APPLE_PASSWORD - echo "APPLE_ID/APPLE_PASSWORD not set — will sign without notarization." - fi - pnpm --filter @objectos/one tauri build --target ${{ matrix.target }} - - - name: Rename macOS updater bundle (avoid name clash) - if: runner.os == 'macOS' - shell: bash - env: - TARGET_ARCH: ${{ matrix.target-arch }} - TARGET: ${{ matrix.target }} - run: | - set -euo pipefail - # Tauri names the macOS updater archive `ObjectOS.app.tar.gz` for - # both arm64 and x64 builds. Renaming includes the target so the - # GH release keeps both, and build-update-manifest.mjs can pick - # the correct one per platform key. - DIR="apps/objectos-one/src-tauri/target/$TARGET/release/bundle/macos" - if [ -f "$DIR/ObjectOS.app.tar.gz" ]; then - mv "$DIR/ObjectOS.app.tar.gz" "$DIR/ObjectOS-$TARGET.app.tar.gz" - mv "$DIR/ObjectOS.app.tar.gz.sig" "$DIR/ObjectOS-$TARGET.app.tar.gz.sig" - fi - - - name: Upload artifacts - uses: actions/upload-artifact@v4 - with: - name: objectos-one-${{ matrix.target }} - path: | - apps/objectos-one/src-tauri/target/${{ matrix.target }}/release/bundle/**/*.dmg - apps/objectos-one/src-tauri/target/${{ matrix.target }}/release/bundle/**/*-setup.exe - apps/objectos-one/src-tauri/target/${{ matrix.target }}/release/bundle/**/*.msi - apps/objectos-one/src-tauri/target/${{ matrix.target }}/release/bundle/**/*.deb - apps/objectos-one/src-tauri/target/${{ matrix.target }}/release/bundle/**/*.AppImage - apps/objectos-one/src-tauri/target/${{ matrix.target }}/release/bundle/**/*.app.tar.gz - apps/objectos-one/src-tauri/target/${{ matrix.target }}/release/bundle/**/*.nsis.zip - apps/objectos-one/src-tauri/target/${{ matrix.target }}/release/bundle/**/*.sig - if-no-files-found: warn - - release: - name: Publish release - needs: build - if: startsWith(github.ref, 'refs/tags/one-v') || inputs.release - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - - uses: actions/download-artifact@v4 - with: - path: artifacts - - name: Generate latest.json (updater manifest) - env: - TAG: ${{ github.ref_name }} - run: node .github/scripts/build-update-manifest.mjs artifacts "$TAG" > artifacts/latest.json - - name: Create release - uses: softprops/action-gh-release@v2 - with: - draft: false - generate_release_notes: true - name: ObjectOS One ${{ github.ref_name }} - files: | - artifacts/**/*.dmg - artifacts/**/*-setup.exe - artifacts/**/*.msi - artifacts/**/*.deb - artifacts/**/*.AppImage - artifacts/**/*.app.tar.gz - artifacts/**/*.nsis.zip - artifacts/**/*.sig - artifacts/latest.json diff --git a/.github/workflows/release-one.yml b/.github/workflows/release-one.yml deleted file mode 100644 index a9fe132..0000000 --- a/.github/workflows/release-one.yml +++ /dev/null @@ -1,159 +0,0 @@ -name: release-one - -# Manual release trigger for ObjectOS One. -# -# What it does: -# 1. Resolves the @objectstack/cli version (single source of truth). -# 2. Runs sync-version to write that version into package.json, -# tauri.conf.json and Cargo.toml. -# 3. If anything changed, commits the bump on the chosen branch. -# 4. Creates and pushes the matching `one-v` tag. -# 5. The tag push automatically triggers `one.yml`, which builds all -# four platforms and drafts the GitHub Release. -# -# Use this instead of tagging by hand — it guarantees the tag matches -# whatever cli version `pnpm install` resolves on a clean tree. - -on: - workflow_dispatch: - inputs: - ref: - description: "Branch to release from (default: main)" - required: false - default: "main" - dry_run: - description: "Resolve + sync but do NOT commit or push the tag" - type: boolean - default: false - force: - description: "Re-create the tag if it already exists (deletes the old tag)" - type: boolean - default: false - -permissions: - contents: write - actions: write - -concurrency: - group: release-one - cancel-in-progress: false - -jobs: - tag: - name: Resolve version & push tag - runs-on: ubuntu-22.04 - timeout-minutes: 10 - steps: - - uses: actions/checkout@v4 - with: - ref: ${{ inputs.ref }} - # We need full history so `git push` of the bump commit works - # against the branch tip. - fetch-depth: 0 - - - uses: pnpm/action-setup@v4 - with: - version: 10.28.2 - - - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: pnpm - - - name: Install workspace deps - # Required so sync-version sees the resolved @objectstack/cli - # version under node_modules (the most reliable source). - run: pnpm install --frozen-lockfile - - - name: Sync app version to @objectstack/cli - run: pnpm --filter @objectos/one sync-version - - - name: Resolve target version - id: ver - run: | - set -euo pipefail - VERSION=$(node -p "require('./apps/objectos-one/package.json').version") - if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9.-]+)?$ ]]; then - echo "::error::resolved version '$VERSION' is not valid semver" - exit 1 - fi - TAG="one-v$VERSION" - echo "version=$VERSION" >> "$GITHUB_OUTPUT" - echo "tag=$TAG" >> "$GITHUB_OUTPUT" - echo "Releasing $TAG" - - - name: Check tag uniqueness - env: - TAG: ${{ steps.ver.outputs.tag }} - FORCE: ${{ inputs.force }} - run: | - set -euo pipefail - if git ls-remote --exit-code --tags origin "$TAG" >/dev/null 2>&1; then - if [ "$FORCE" = "true" ]; then - echo "Tag $TAG exists — will overwrite (force=true)." - else - echo "::error::tag $TAG already exists on origin. Bump @objectstack/cli or rerun with force=true." - exit 1 - fi - else - echo "Tag $TAG is free." - fi - - - name: Commit version bump (if needed) - if: ${{ !inputs.dry_run }} - env: - VERSION: ${{ steps.ver.outputs.version }} - run: | - set -euo pipefail - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - - git add \ - apps/objectos-one/package.json \ - apps/objectos-one/src-tauri/tauri.conf.json \ - apps/objectos-one/src-tauri/Cargo.toml - - if git diff --cached --quiet; then - echo "Versions already at $VERSION — nothing to commit." - else - git commit -m "chore(one): release v$VERSION" - git push origin "HEAD:${{ inputs.ref }}" - fi - - - name: Create & push tag - if: ${{ !inputs.dry_run }} - env: - TAG: ${{ steps.ver.outputs.tag }} - VERSION: ${{ steps.ver.outputs.version }} - FORCE: ${{ inputs.force }} - run: | - set -euo pipefail - if [ "$FORCE" = "true" ]; then - # Delete remote tag first so the new one points at the latest commit. - git push origin ":refs/tags/$TAG" || true - git tag -d "$TAG" 2>/dev/null || true - fi - git tag -a "$TAG" -m "ObjectOS One v$VERSION" - git push origin "$TAG" - echo "Pushed $TAG." - - - name: Trigger one.yml build for the new tag - if: ${{ !inputs.dry_run }} - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - TAG: ${{ steps.ver.outputs.tag }} - # A tag pushed by GITHUB_TOKEN does NOT trigger other workflows - # (GitHub's loop-prevention rule). Dispatch one.yml explicitly so - # the platform builds and draft release actually run. - run: | - set -euo pipefail - gh workflow run one.yml --ref "$TAG" -f release=true - echo "Dispatched one.yml for $TAG." - echo "Watch it at: https://github.com/${GITHUB_REPOSITORY}/actions/workflows/one.yml" - - - name: Dry-run summary - if: ${{ inputs.dry_run }} - env: - TAG: ${{ steps.ver.outputs.tag }} - run: | - echo "::notice::Dry run complete. Would have pushed tag $TAG to trigger one.yml. No commit or push performed." diff --git a/apps/objectos-one/README.md b/apps/objectos-one/README.md deleted file mode 100644 index 3c23cbe..0000000 --- a/apps/objectos-one/README.md +++ /dev/null @@ -1,200 +0,0 @@ -# `apps/objectos-one` - -**ObjectOS the all-in-one local distribution of ObjectOS. AOne** -[Tauri](https://tauri.app) v2 shell that wraps the `@objectos/server` Node -runtime as a sidecar and exposes it through a native WebView. The goal - ready to use" experience on macOS, -Windows and no Node, no database, no extra dependencies toLinux -install. - -## Architecture - -``` - - Tauri shell (Rust) - splash WebView (src/index.html) - system tray (open / restart / data - folder / quit) - waits for sidecar port - navigates to http://localhost:N - - Sidecar: bundled Node runs - apps/objectos/one.mjs - objectstack serve --port N - SQLite + uploads under - $OBJECTOS_HOME - -``` - -The Node tree is staged under `runtime/` by -`scripts/stage-runtime.mjs` (called automatically by `dev` / `build`) -and bundled by Tauri as resources. The staging step also slims the -tree (~50 MB of source maps, markdown, and test fixtures removed). - -## Per-user data - -| OS | Path | -|---------|----------------------------------------------| -| macOS / Linux / Windows | `~/.objectstack` | - -(Override with `OBJECTOS_HOME=/some/path`.) - -The sidecar receives `OBJECTOS_HOME`, `OS_DATABASE_URL`, -`OS_STORAGE_ROOT`, and `OS_CACHE_DIR` pointed inside that folder, so a -clean uninstall is just deleting that directory. - -## Configuration - -Open **tray → Settings…** to edit environment variables passed to the -ObjectOS server. Variables are stored in `/one.config.json` as -a flat map and forwarded verbatim when the runtime starts. - -Commonly used keys: - -| Key | Default | Notes | -|-----------------|------------------|------------------------------------------------------------------| -| `PORT` | auto (8787+) | Fixed port. If in use, falls back to auto with a log line. | -| `HOST` | `127.0.0.1` | `0.0.0.0` exposes the server to the LAN. **Set up auth first.** | -| `OBJECTOS_HOME` | `~/.objectstack` | Data directory. Absolute path. | -| `LOG_LEVEL` | — | Forwarded to the Node server. | -| _anything else_ | — | Forwarded as-is to the sidecar process. | - -The Settings window also reflects values inherited from the parent -shell — those win over the saved file, so a one-off override still -works: - -``` -PORT=4001 HOST=0.0.0.0 open -a ObjectOS -``` - -Save in the Settings window triggers an automatic runtime restart. - -## Prerequisites - -- 20 + pnpm 10Node -- Rust ( `curl https://sh.rustup.rs -sSf | sh`stable) -- macOS: Xcode Command Line Tools -- Windows: WebView2 (preinstalled on Win10+) + MSVC build tools -- Linux: `libwebkit2gtk-4.1-dev`, `build-essential`, `libssl-dev`, - `libayatana-appindicator3-dev`, `librsvg2-dev` - -## Develop - -```bash -pnpm install -pnpm one:dev # = pnpm --filter @objectos/one dev -``` - -First run builds Rust dependencies (~4 min). Subsequent runs are2 -fast. The window opens on a splash page; once the sidecar is ready it -navigates to the live Studio URL. - -## Build distributables - -```bash -pnpm one:build -``` - -Output lands in `src-tauri/target/release/bundle/`: - -| Platform | Artifact | -|----------|-----------------------------------------| -| macOS | `dmg/ObjectOS__.dmg` + `.app` | -| Windows | `nsis/ObjectOS__x64-setup.exe` | -| Linux | `deb/objectos__amd64.deb`, AppImage | - -## Versioning - -ObjectOS One ships the bundled `@objectos/server` runtime, which in turn -depends on `@objectstack/cli`. We pin the app version to the cli version so -the installed app always advertises the underlying engine release. - -`apps/objectos-one/scripts/sync-version.mjs` reads the cli version (from -`node_modules/@objectstack/cli` after install, falling back to the declared -range in `apps/objectos/package.json`) and writes it into: - -- `apps/objectos-one/package.json` -- `apps/objectos-one/src-tauri/tauri.conf.json` -- `apps/objectos-one/src-tauri/Cargo.toml` - -`pnpm dev` / `pnpm build` run it automatically. To release: - -```bash -pnpm install # resolve the exact cli version -pnpm --filter @objectos/one sync-version # writes the three files -git commit -am "chore(one): bump to $(node -p \ - "require('./apps/objectos-one/package.json').version")" -git tag "one-v$(node -p \ - "require('./apps/objectos-one/package.json').version")" -git push --follow-tags -``` - -CI rejects the build if the `one-v` tag does not equal the cli -version sync-version computed, so a wrong tag fails fast instead of -shipping a broken updater manifest. - -## CI - -`.github/workflows/one.yml` builds all four platforms in parallel -(macOS arm64, macOS x64, Windows x64, Linux x64). Trigger: - - full build + draft GitHub release - artifacts only - -The workflow is wired for code provide the secrets below tosigning -enable. Without secrets the builds still succeed (unsigned binaries, -end users will see OS warnings on first launch). - -## Code signing - -### macOS (Developer ID + notarization) - -Required repo secrets: - -| Secret | Value | -|------------------------------|----------------------------------------------------| -| `APPLE_CERTIFICATE` | base64 of your `.p12` Developer ID Application cert | -| `APPLE_CERTIFICATE_PASSWORD` | the export password | -| `APPLE_SIGNING_IDENTITY` | `Developer ID Application: Company (TEAMID)` | -| `APPLE_ID` | Apple ID email used for notarization | - security) | -| `APPLE_TEAM_ID` | 10-char team ID from Apple Developer portal | - -Tauri picks these up automatically and runs `codesign` + `notarytool` -during `tauri build`. - -### Windows (Authenticode) - -| Secret | Value | -|---------------------------------|----------------------| -| `WINDOWS_CERTIFICATE` | base64 of your `.pfx`| -| `WINDOWS_CERTIFICATE_PASSWORD` | export password | - -Then in `tauri.conf.json` set `bundle.windows.certificateThumbprint` -to the SHA-1 thumbprint (or extend the workflow to import the .pfx -and sign post-build with `signtool`). - -### Tauri updater key (optional) - -To enable in-app auto-update: - -```bash -pnpm tauri signer generate -w ~/.tauri/objectos.key -``` - -Set `TAURI_SIGNING_PRIVATE_KEY` (file contents) and -`TAURI_SIGNING_PRIVATE_KEY_PASSWORD` in CI, paste the public key into - plugins.updater.pubkey`, and flip -`plugins.updater.active` to `true`. - -## Comparison with the portable zip - -| | Portable zip | Tauri | -|---|---|---| -| Brand | none (terminal) | dock icon, menu, tray | -| Size | ~110 MB zip | ~140 MB installer (signed) | -| Auto-update | no | yes (Tauri updater) | -| Code signing | manual | first-class | -| Dev effort | tiny | moderate (Rust toolchain) | - -Both share `one.mjs`, so the runtime behaviour is identical. diff --git a/apps/objectos-one/package.json b/apps/objectos-one/package.json deleted file mode 100644 index 40cd74c..0000000 --- a/apps/objectos-one/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "@objectos/one", - "version": "10.2.0", - "private": true, - "license": "Apache-2.0", - "description": "ObjectOS One — all-in-one local distribution (Tauri shell + bundled Node runtime + DB).", - "type": "module", - "scripts": { - "sync-version": "node scripts/sync-version.mjs", - "sync-version:check": "node scripts/sync-version.mjs --check", - "stage": "node scripts/stage-runtime.mjs", - "tauri": "tauri", - "dev": "pnpm run sync-version && pnpm run stage && tauri dev", - "build": "pnpm run sync-version && pnpm run stage && tauri build" - }, - "devDependencies": { - "@tauri-apps/cli": "^2.1.0" - } -} diff --git a/apps/objectos-one/scripts/stage-runtime.mjs b/apps/objectos-one/scripts/stage-runtime.mjs deleted file mode 100644 index 6306fa8..0000000 --- a/apps/objectos-one/scripts/stage-runtime.mjs +++ /dev/null @@ -1,167 +0,0 @@ -#!/usr/bin/env node -/** - * Stage the Node runtime + @objectos/server tree under - * `apps/objectos-one/runtime/`, so Tauri's resource bundler can ship it. - * - * Reuses the same bits scripts/build-one.sh produces, but in-tree - * (no zipping). Idempotent; re-run after changing @objectos/server. - * - * runtime/ - * node | node.exe - * app/ - * one.mjs - * package.json - * dist/objectstack.json - * node_modules/ - */ -import { execSync } from 'node:child_process'; -import { existsSync, mkdirSync, copyFileSync, rmSync, chmodSync, readdirSync, statSync, unlinkSync } from 'node:fs'; -import { dirname, join, resolve } from 'node:path'; -import { fileURLToPath } from 'node:url'; -import { platform, arch } from 'node:os'; - -const HERE = dirname(fileURLToPath(import.meta.url)); -const PKG = resolve(HERE, '..'); -const REPO = resolve(PKG, '../..'); -const APP = resolve(REPO, 'apps/objectos'); -const RUNTIME = resolve(PKG, 'src-tauri/runtime'); -const NODE_VERSION = process.env.NODE_VERSION ?? '22.22.0'; - -const osName = ({ darwin: 'darwin', linux: 'linux', win32: 'win' })[platform()]; -const archName = process.env.TARGET_ARCH ?? ({ x64: 'x64', arm64: 'arm64' })[arch()]; -if (!osName || !archName) { - console.error(`unsupported platform: ${platform()}/${arch()}`); - process.exit(1); -} - -const sh = (cmd, opts = {}) => { - console.log(`$ ${cmd}`); - execSync(cmd, { stdio: 'inherit', ...opts }); -}; - -/** - * Strip files that are useless at runtime. Conservative — only deletes - * patterns that are universally safe in npm packages: - * * .map (source maps) - * * .md / .markdown (docs) - * * directories named __tests__, .github, .nyc_output, coverage - * * cross-platform native prebuilds (we ship one platform per installer) - * - * NOTE: we deliberately do *not* touch directories called `doc`, - * `docs`, `example`, `examples`, `test`, or `tests` — some packages - * (e.g. `yaml`) ship real runtime code under those names. - */ -function slim(root) { - if (!existsSync(root)) return; - const dropFileExt = /\.(map|md|markdown)$/i; - const dropDirName = /^(__tests__|\.github|\.nyc_output|coverage)$/i; - const platformTag = `${platform() === 'win32' ? 'win32' : platform()}-${archName}`; - - let removed = 0; - let bytes = 0; - const walk = (dir) => { - let entries; - try { entries = readdirSync(dir, { withFileTypes: true }); } catch { return; } - for (const e of entries) { - const p = join(dir, e.name); - if (e.isDirectory()) { - if (dropDirName.test(e.name)) { - const sz = sizeOf(p); - rmSync(p, { recursive: true, force: true }); - removed++; bytes += sz; - continue; - } - // Drop other-platform prebuilds (e.g. @libsql/linux-x64 on darwin) - if (dir.endsWith('prebuilds') && !e.name.startsWith(platformTag)) { - const sz = sizeOf(p); - rmSync(p, { recursive: true, force: true }); - removed++; bytes += sz; - continue; - } - walk(p); - } else if (e.isFile()) { - if (dropFileExt.test(e.name)) { - try { - const sz = statSync(p).size; - unlinkSync(p); - removed++; bytes += sz; - } catch {} - } - } - } - }; - - function sizeOf(p) { - try { - let s = 0; - for (const e of readdirSync(p, { withFileTypes: true })) { - const c = join(p, e.name); - if (e.isDirectory()) s += sizeOf(c); - else { try { s += statSync(c).size; } catch {} } - } - return s; - } catch { return 0; } - } - - walk(root); - console.log(`✓ slimmed ${removed} entries (~${(bytes / 1024 / 1024).toFixed(1)} MB)`); -} - -if (!existsSync(join(APP, 'dist/objectstack.json'))) { - sh('pnpm --filter @objectos/server build', { cwd: REPO }); -} - -rmSync(RUNTIME, { recursive: true, force: true }); -mkdirSync(join(RUNTIME, 'app/dist'), { recursive: true }); -copyFileSync(join(APP, 'package.json'), join(RUNTIME, 'app/package.json')); -copyFileSync(join(APP, 'one.mjs'), join(RUNTIME, 'app/one.mjs')); -copyFileSync(join(APP, 'dist/objectstack.json'), join(RUNTIME, 'app/dist/objectstack.json')); - -// 3. Download the target Node first so native modules (better-sqlite3, -// libsql, etc.) can be installed against the *exact* ABI that ships -// in the bundle. Otherwise, building against the host Node (e.g. v22) -// yields a NODE_MODULE_VERSION mismatch at runtime. -const cache = resolve(REPO, '.cache/node'); -mkdirSync(cache, { recursive: true }); -const ext = osName === 'win' ? 'zip' : osName === 'linux' ? 'tar.xz' : 'tar.gz'; -const pkgName = `node-v${NODE_VERSION}-${osName === 'win' ? 'win' : osName}-${archName}.${ext}`; -const tarball = join(cache, pkgName); -if (!existsSync(tarball)) { - sh(`curl -fSL --retry 3 -o "${tarball}" https://nodejs.org/dist/v${NODE_VERSION}/${pkgName}`); -} -const extractDir = join(cache, pkgName.replace(/\.(tar\.(gz|xz)|zip)$/, '')); -if (!existsSync(extractDir)) { - if (ext === 'tar.gz') sh(`tar -xzf "${tarball}" -C "${cache}"`); - else if (ext === 'tar.xz') sh(`tar -xJf "${tarball}" -C "${cache}"`); - else sh(`cd "${cache}" && unzip -q "${tarball}"`); -} - -// 4. npm install — force prebuilt download for the bundled Node ABI, -// not the host's. node-gyp / prebuild-install read these flags. -const installEnv = { - ...process.env, - npm_config_target: NODE_VERSION, - npm_config_target_arch: archName, - npm_config_target_platform: osName === 'win' ? 'win32' : osName, - npm_config_runtime: 'node', - npm_config_disturl: 'https://nodejs.org/dist', - npm_config_build_from_source: 'false', -}; -sh( - 'npm install --omit=dev --no-audit --no-fund --loglevel=error --legacy-peer-deps better-sqlite3@^12.9.0', - { cwd: join(RUNTIME, 'app'), env: installEnv } -); - -// 3b. slim node_modules: drop source maps, docs, tests, .d.ts — these -// are useless at runtime and bloat the installer by ~30%. -slim(join(RUNTIME, 'app', 'node_modules')); - -if (osName === 'win') { - copyFileSync(join(extractDir, 'node.exe'), join(RUNTIME, 'node.exe')); -} else { - const dst = join(RUNTIME, 'node'); - copyFileSync(join(extractDir, 'bin/node'), dst); - chmodSync(dst, 0o755); -} - -console.log(`✓ staged runtime → ${RUNTIME}`); diff --git a/apps/objectos-one/scripts/sync-version.mjs b/apps/objectos-one/scripts/sync-version.mjs deleted file mode 100644 index 7d6bbe0..0000000 --- a/apps/objectos-one/scripts/sync-version.mjs +++ /dev/null @@ -1,167 +0,0 @@ -#!/usr/bin/env node -// Sync the ObjectOS One release version to the @objectstack/cli version that -// the bundled server depends on. -// -// Source of truth, in order of preference: -// 1. node_modules/@objectstack/cli/package.json (resolved/installed version) -// 2. apps/objectos/package.json `dependencies["@objectstack/cli"]` -// with any leading ^/~/= stripped -// -// Targets updated (skipped if already up to date): -// - apps/objectos-one/package.json "version" -// - apps/objectos-one/src-tauri/tauri.conf.json "version" -// - apps/objectos-one/src-tauri/Cargo.toml [package].version -// -// Flags: -// --check Exit non-zero if any file would change. Doesn't write. -// --quiet Suppress informational logs. -// -// Used by CI (.github/workflows/one.yml) and locally before tagging. - -import { readFileSync, writeFileSync, existsSync } from "node:fs"; -import { dirname, join, resolve } from "node:path"; -import { fileURLToPath } from "node:url"; - -const __dirname = dirname(fileURLToPath(import.meta.url)); -const REPO_ROOT = resolve(__dirname, "..", "..", ".."); - -const argv = process.argv.slice(2); -const CHECK_ONLY = argv.includes("--check"); -const QUIET = argv.includes("--quiet"); - -const log = (...a) => { - if (!QUIET) console.log("[sync-version]", ...a); -}; -const warn = (...a) => console.warn("[sync-version]", ...a); - -function readJson(path) { - return JSON.parse(readFileSync(path, "utf8")); -} - -function resolveCliVersion() { - // Prefer the actually-resolved version from node_modules — what the bundle - // will ship — but fall back to the declared dependency range if the - // workspace hasn't been installed yet (e.g. fresh CI before pnpm install). - const resolved = join( - REPO_ROOT, - "node_modules/@objectstack/cli/package.json" - ); - if (existsSync(resolved)) { - const v = readJson(resolved).version; - log(`resolved @objectstack/cli@${v} from node_modules`); - return v; - } - - const serverPkgPath = join(REPO_ROOT, "apps/objectos/package.json"); - const serverPkg = readJson(serverPkgPath); - const range = - serverPkg.dependencies?.["@objectstack/cli"] ?? - serverPkg.devDependencies?.["@objectstack/cli"]; - if (!range) { - throw new Error( - `@objectstack/cli not found in ${serverPkgPath}; cannot derive version` - ); - } - const v = range.replace(/^[\^~=v]+/, "").trim(); - if (!/^\d+\.\d+\.\d+/.test(v)) { - throw new Error( - `cannot extract a concrete version from "${range}"; run pnpm install first` - ); - } - log(`derived @objectstack/cli@${v} from ${serverPkgPath} (not installed)`); - return v; -} - -function updateJson(path, mutate) { - const before = readFileSync(path, "utf8"); - const data = JSON.parse(before); - mutate(data); - // Keep 2-space indent + trailing newline to match the rest of the repo - // and avoid noisy diffs. - const after = JSON.stringify(data, null, 2) + "\n"; - if (after === before) return false; - if (!CHECK_ONLY) writeFileSync(path, after); - return true; -} - -function updateCargoTomlVersion(path, version) { - const before = readFileSync(path, "utf8"); - // Only replace the version line inside the first `[package]` table. - // We don't pull in a TOML parser to avoid an extra dep for this one field. - const pkgIdx = before.indexOf("[package]"); - if (pkgIdx < 0) { - throw new Error(`no [package] section in ${path}`); - } - const before_pkg = before.slice(0, pkgIdx); - const rest = before.slice(pkgIdx); - // Replace only the FIRST version = "..." after [package] (before the next [table]). - const nextTableIdx = rest.indexOf("\n[", 1); - const head = nextTableIdx < 0 ? rest : rest.slice(0, nextTableIdx); - const tail = nextTableIdx < 0 ? "" : rest.slice(nextTableIdx); - - const versionRe = /^(version\s*=\s*)"([^"]*)"/m; - const match = head.match(versionRe); - if (!match) { - throw new Error(`could not find version line under [package] in ${path}`); - } - if (match[2] === version) { - return false; - } - const replaced = head.replace(versionRe, `$1"${version}"`); - const after = before_pkg + replaced + tail; - if (!CHECK_ONLY) writeFileSync(path, after); - return true; -} - -function main() { - const version = resolveCliVersion(); - - const targets = [ - { - path: join(REPO_ROOT, "apps/objectos-one/package.json"), - label: "apps/objectos-one/package.json", - apply: (p) => - updateJson(p, (data) => { - data.version = version; - }), - }, - { - path: join(REPO_ROOT, "apps/objectos-one/src-tauri/tauri.conf.json"), - label: "apps/objectos-one/src-tauri/tauri.conf.json", - apply: (p) => - updateJson(p, (data) => { - data.version = version; - }), - }, - { - path: join(REPO_ROOT, "apps/objectos-one/src-tauri/Cargo.toml"), - label: "apps/objectos-one/src-tauri/Cargo.toml", - apply: (p) => updateCargoTomlVersion(p, version), - }, - ]; - - let changedAny = false; - for (const t of targets) { - if (!existsSync(t.path)) { - warn(`skip: ${t.label} (not found)`); - continue; - } - const changed = t.apply(t.path); - if (changed) { - changedAny = true; - log(`${CHECK_ONLY ? "would update" : "updated"} ${t.label} → ${version}`); - } else { - log(`unchanged ${t.label} (already ${version})`); - } - } - - if (CHECK_ONLY && changedAny) { - console.error( - `[sync-version] FAIL: versions are out of sync with @objectstack/cli@${version}. ` + - `Run \`pnpm --filter @objectos/one sync-version\` and commit the result.` - ); - process.exit(1); - } -} - -main(); diff --git a/apps/objectos-one/src-tauri/Cargo.lock b/apps/objectos-one/src-tauri/Cargo.lock deleted file mode 100644 index 6a3d768..0000000 --- a/apps/objectos-one/src-tauri/Cargo.lock +++ /dev/null @@ -1,5911 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "adler2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" - -[[package]] -name = "aho-corasick" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" -dependencies = [ - "memchr", -] - -[[package]] -name = "alloc-no-stdlib" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" -dependencies = [ - "alloc-no-stdlib", -] - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "anyhow" -version = "1.0.102" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" - -[[package]] -name = "arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" -dependencies = [ - "derive_arbitrary", -] - -[[package]] -name = "async-broadcast" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" -dependencies = [ - "event-listener", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-channel" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" -dependencies = [ - "concurrent-queue", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-executor" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "pin-project-lite", - "slab", -] - -[[package]] -name = "async-io" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" -dependencies = [ - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-io", - "futures-lite", - "parking", - "polling", - "rustix", - "slab", - "windows-sys 0.61.2", -] - -[[package]] -name = "async-lock" -version = "3.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" -dependencies = [ - "event-listener", - "event-listener-strategy", - "pin-project-lite", -] - -[[package]] -name = "async-process" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" -dependencies = [ - "async-channel", - "async-io", - "async-lock", - "async-signal", - "async-task", - "blocking", - "cfg-if", - "event-listener", - "futures-lite", - "rustix", -] - -[[package]] -name = "async-recursion" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "async-signal" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52b5aaafa020cf5053a01f2a60e8ff5dccf550f0f77ec54a4e47285ac2bab485" -dependencies = [ - "async-io", - "async-lock", - "atomic-waker", - "cfg-if", - "futures-core", - "futures-io", - "rustix", - "signal-hook-registry", - "slab", - "windows-sys 0.61.2", -] - -[[package]] -name = "async-task" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" - -[[package]] -name = "async-trait" -version = "0.1.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "atk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" -dependencies = [ - "atk-sys", - "glib", - "libc", -] - -[[package]] -name = "atk-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - -[[package]] -name = "auto-launch" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f012b8cc0c850f34117ec8252a44418f2e34a2cf501de89e29b241ae5f79471" -dependencies = [ - "dirs 4.0.0", - "thiserror 1.0.69", - "winreg 0.10.1", -] - -[[package]] -name = "autocfg" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "base64" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" - -[[package]] -name = "bit-set" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" -dependencies = [ - "serde_core", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "block2" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" -dependencies = [ - "objc2", -] - -[[package]] -name = "blocking" -version = "1.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" -dependencies = [ - "async-channel", - "async-task", - "futures-io", - "futures-lite", - "piper", -] - -[[package]] -name = "brotli" -version = "8.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[package]] -name = "bs58" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "bumpalo" -version = "3.20.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" - -[[package]] -name = "bytemuck" -version = "1.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" -dependencies = [ - "serde", -] - -[[package]] -name = "cairo-rs" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" -dependencies = [ - "bitflags 2.11.1", - "cairo-sys-rs", - "glib", - "libc", - "once_cell", - "thiserror 1.0.69", -] - -[[package]] -name = "cairo-sys-rs" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" -dependencies = [ - "glib-sys", - "libc", - "system-deps", -] - -[[package]] -name = "camino" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" -dependencies = [ - "serde_core", -] - -[[package]] -name = "cargo-platform" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror 2.0.18", -] - -[[package]] -name = "cargo_toml" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77" -dependencies = [ - "serde", - "toml 0.9.12+spec-1.1.0", -] - -[[package]] -name = "cc" -version = "1.2.62" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98" -dependencies = [ - "find-msvc-tools", - "shlex", -] - -[[package]] -name = "cesu8" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" - -[[package]] -name = "cfb" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" -dependencies = [ - "byteorder", - "fnv", - "uuid", -] - -[[package]] -name = "cfg-expr" -version = "0.15.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" -dependencies = [ - "smallvec", - "target-lexicon", -] - -[[package]] -name = "cfg-if" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" - -[[package]] -name = "chrono" -version = "0.4.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" -dependencies = [ - "iana-time-zone", - "num-traits", - "serde", - "windows-link 0.2.1", -] - -[[package]] -name = "combine" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" -dependencies = [ - "bytes", - "memchr", -] - -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "cookie" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" -dependencies = [ - "time", - "version_check", -] - -[[package]] -name = "core-foundation" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - -[[package]] -name = "core-graphics" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "064badf302c3194842cf2c5d61f56cc88e54a759313879cdf03abdd27d0c3b97" -dependencies = [ - "bitflags 2.11.1", - "core-foundation", - "core-graphics-types", - "foreign-types", - "libc", -] - -[[package]] -name = "core-graphics-types" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" -dependencies = [ - "bitflags 2.11.1", - "core-foundation", - "libc", -] - -[[package]] -name = "cpufeatures" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-channel" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crypto-common" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "cssparser" -version = "0.36.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dae61cf9c0abb83bd659dab65b7e4e38d8236824c85f0f804f173567bda257d2" -dependencies = [ - "cssparser-macros", - "dtoa-short", - "itoa", - "phf", - "smallvec", -] - -[[package]] -name = "cssparser-macros" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" -dependencies = [ - "quote", - "syn 2.0.117", -] - -[[package]] -name = "ctor" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "352d39c2f7bef1d6ad73db6f5160efcaed66d94ef8c6c573a8410c00bf909a98" -dependencies = [ - "ctor-proc-macro", - "dtor", -] - -[[package]] -name = "ctor-proc-macro" -version = "0.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52560adf09603e58c9a7ee1fe1dcb95a16927b17c127f0ac02d6e768a0e25bc1" - -[[package]] -name = "darling" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" -dependencies = [ - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.117", -] - -[[package]] -name = "darling_macro" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "data-url" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376" - -[[package]] -name = "dbus" -version = "0.9.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b942602992bb7acfd1f51c49811c58a610ef9181b6e66f3e519d79b540a3bf73" -dependencies = [ - "libc", - "libdbus-sys", - "windows-sys 0.61.2", -] - -[[package]] -name = "deranged" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" -dependencies = [ - "powerfmt", - "serde_core", -] - -[[package]] -name = "derive_arbitrary" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "derive_more" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" -dependencies = [ - "derive_more-impl", -] - -[[package]] -name = "derive_more-impl" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" -dependencies = [ - "proc-macro2", - "quote", - "rustc_version", - "syn 2.0.117", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "dirs" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" -dependencies = [ - "dirs-sys 0.3.7", -] - -[[package]] -name = "dirs" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" -dependencies = [ - "dirs-sys 0.4.1", -] - -[[package]] -name = "dirs" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" -dependencies = [ - "dirs-sys 0.5.0", -] - -[[package]] -name = "dirs-sys" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" -dependencies = [ - "libc", - "redox_users 0.4.6", - "winapi", -] - -[[package]] -name = "dirs-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" -dependencies = [ - "libc", - "option-ext", - "redox_users 0.4.6", - "windows-sys 0.48.0", -] - -[[package]] -name = "dirs-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" -dependencies = [ - "libc", - "option-ext", - "redox_users 0.5.2", - "windows-sys 0.61.2", -] - -[[package]] -name = "dispatch2" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" -dependencies = [ - "bitflags 2.11.1", - "block2", - "libc", - "objc2", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "dlopen2" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4" -dependencies = [ - "dlopen2_derive", - "libc", - "once_cell", - "winapi", -] - -[[package]] -name = "dlopen2_derive" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "dom_query" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521e380c0c8afb8d9a1e83a1822ee03556fc3e3e7dbc1fd30be14e37f9cb3f89" -dependencies = [ - "bit-set", - "cssparser", - "foldhash 0.2.0", - "html5ever", - "precomputed-hash", - "selectors", - "tendril", -] - -[[package]] -name = "dpi" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" -dependencies = [ - "serde", -] - -[[package]] -name = "dtoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" - -[[package]] -name = "dtoa-short" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" -dependencies = [ - "dtoa", -] - -[[package]] -name = "dtor" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1057d6c64987086ff8ed0fd3fbf377a6b7d205cc7715868cd401705f715cbe4" -dependencies = [ - "dtor-proc-macro", -] - -[[package]] -name = "dtor-proc-macro" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f678cf4a922c215c63e0de95eb1ff08a958a81d47e485cf9da1e27bf6305cfa5" - -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[package]] -name = "dyn-clone" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" - -[[package]] -name = "embed-resource" -version = "3.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31a88c8d26de40ed18fe748c547845aa39de1db3afd958f8cb91579f3644bcb" -dependencies = [ - "cc", - "memchr", - "rustc_version", - "toml 1.1.2+spec-1.1.0", - "vswhom", - "winreg 0.55.0", -] - -[[package]] -name = "embed_plist" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" - -[[package]] -name = "endi" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" - -[[package]] -name = "enumflags2" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" -dependencies = [ - "enumflags2_derive", - "serde", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "equivalent" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" - -[[package]] -name = "erased-serde" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" -dependencies = [ - "serde", - "serde_core", - "typeid", -] - -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "event-listener" -version = "5.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" -dependencies = [ - "event-listener", - "pin-project-lite", -] - -[[package]] -name = "fastrand" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" - -[[package]] -name = "fdeflate" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" -dependencies = [ - "simd-adler32", -] - -[[package]] -name = "field-offset" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" -dependencies = [ - "memoffset", - "rustc_version", -] - -[[package]] -name = "filetime" -version = "0.2.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759" -dependencies = [ - "cfg-if", - "libc", -] - -[[package]] -name = "find-msvc-tools" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" - -[[package]] -name = "flate2" -version = "1.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "foldhash" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" - -[[package]] -name = "foreign-types" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" -dependencies = [ - "foreign-types-macros", - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-macros" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "foreign-types-shared" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" - -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futures-channel" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" - -[[package]] -name = "futures-executor" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" - -[[package]] -name = "futures-lite" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", -] - -[[package]] -name = "futures-macro" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "futures-sink" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" - -[[package]] -name = "futures-task" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" - -[[package]] -name = "futures-util" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" -dependencies = [ - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "slab", -] - -[[package]] -name = "gdk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" -dependencies = [ - "cairo-rs", - "gdk-pixbuf", - "gdk-sys", - "gio", - "glib", - "libc", - "pango", -] - -[[package]] -name = "gdk-pixbuf" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" -dependencies = [ - "gdk-pixbuf-sys", - "gio", - "glib", - "libc", - "once_cell", -] - -[[package]] -name = "gdk-pixbuf-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" -dependencies = [ - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gdk-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" -dependencies = [ - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "pkg-config", - "system-deps", -] - -[[package]] -name = "gdkwayland-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" -dependencies = [ - "gdk-sys", - "glib-sys", - "gobject-sys", - "libc", - "pkg-config", - "system-deps", -] - -[[package]] -name = "gdkx11" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" -dependencies = [ - "gdk", - "gdkx11-sys", - "gio", - "glib", - "libc", - "x11", -] - -[[package]] -name = "gdkx11-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" -dependencies = [ - "gdk-sys", - "glib-sys", - "libc", - "system-deps", - "x11", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "getrandom" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" -dependencies = [ - "cfg-if", - "libc", - "r-efi 5.3.0", - "wasip2", -] - -[[package]] -name = "getrandom" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" -dependencies = [ - "cfg-if", - "libc", - "r-efi 6.0.0", - "wasip2", - "wasip3", -] - -[[package]] -name = "gio" -version = "0.18.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-util", - "gio-sys", - "glib", - "libc", - "once_cell", - "pin-project-lite", - "smallvec", - "thiserror 1.0.69", -] - -[[package]] -name = "gio-sys" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", - "winapi", -] - -[[package]] -name = "glib" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" -dependencies = [ - "bitflags 2.11.1", - "futures-channel", - "futures-core", - "futures-executor", - "futures-task", - "futures-util", - "gio-sys", - "glib-macros", - "glib-sys", - "gobject-sys", - "libc", - "memchr", - "once_cell", - "smallvec", - "thiserror 1.0.69", -] - -[[package]] -name = "glib-macros" -version = "0.18.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" -dependencies = [ - "heck 0.4.1", - "proc-macro-crate 2.0.2", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "glib-sys" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" -dependencies = [ - "libc", - "system-deps", -] - -[[package]] -name = "glob" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" - -[[package]] -name = "gobject-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" -dependencies = [ - "glib-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gtk" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" -dependencies = [ - "atk", - "cairo-rs", - "field-offset", - "futures-channel", - "gdk", - "gdk-pixbuf", - "gio", - "glib", - "gtk-sys", - "gtk3-macros", - "libc", - "pango", - "pkg-config", -] - -[[package]] -name = "gtk-sys" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" -dependencies = [ - "atk-sys", - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "system-deps", -] - -[[package]] -name = "gtk3-macros" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "foldhash 0.1.5", -] - -[[package]] -name = "hashbrown" -version = "0.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" - -[[package]] -name = "html5ever" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1054432bae2f14e0061e33d23402fbaa67a921d319d56adc6bcf887ddad1cbc2" -dependencies = [ - "log", - "markup5ever", -] - -[[package]] -name = "http" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" -dependencies = [ - "bytes", - "itoa", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "http-body-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" -dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "hyper" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" -dependencies = [ - "atomic-waker", - "bytes", - "futures-channel", - "futures-core", - "http", - "http-body", - "httparse", - "itoa", - "pin-project-lite", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" -dependencies = [ - "http", - "hyper", - "hyper-util", - "rustls", - "tokio", - "tokio-rustls", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "hyper", - "ipnet", - "libc", - "percent-encoding", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.65" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "log", - "wasm-bindgen", - "windows-core 0.62.2", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "ico" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e795dff5605e0f04bff85ca41b51a96b83e80b281e96231bcaaf1ac35103371" -dependencies = [ - "byteorder", - "png 0.17.16", -] - -[[package]] -name = "icu_collections" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" -dependencies = [ - "displaydoc", - "potential_utf", - "utf8_iter", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" - -[[package]] -name = "icu_properties" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" -dependencies = [ - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" - -[[package]] -name = "icu_provider" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" -dependencies = [ - "equivalent", - "hashbrown 0.17.1", - "serde", - "serde_core", -] - -[[package]] -name = "infer" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" -dependencies = [ - "cfb", -] - -[[package]] -name = "ipnet" -version = "2.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" - -[[package]] -name = "is-docker" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" -dependencies = [ - "once_cell", -] - -[[package]] -name = "is-wsl" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" -dependencies = [ - "is-docker", - "once_cell", -] - -[[package]] -name = "itoa" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" - -[[package]] -name = "javascriptcore-rs" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" -dependencies = [ - "bitflags 1.3.2", - "glib", - "javascriptcore-rs-sys", -] - -[[package]] -name = "javascriptcore-rs-sys" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "jni" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" -dependencies = [ - "cesu8", - "cfg-if", - "combine", - "jni-sys 0.3.1", - "log", - "thiserror 1.0.69", - "walkdir", - "windows-sys 0.45.0", -] - -[[package]] -name = "jni" -version = "0.22.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" -dependencies = [ - "cfg-if", - "combine", - "jni-macros", - "jni-sys 0.4.1", - "log", - "simd_cesu8", - "thiserror 2.0.18", - "walkdir", - "windows-link 0.2.1", -] - -[[package]] -name = "jni-macros" -version = "0.22.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" -dependencies = [ - "proc-macro2", - "quote", - "rustc_version", - "simd_cesu8", - "syn 2.0.117", -] - -[[package]] -name = "jni-sys" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" -dependencies = [ - "jni-sys 0.4.1", -] - -[[package]] -name = "jni-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" -dependencies = [ - "jni-sys-macros", -] - -[[package]] -name = "jni-sys-macros" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" -dependencies = [ - "quote", - "syn 2.0.117", -] - -[[package]] -name = "js-sys" -version = "0.3.99" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11" -dependencies = [ - "cfg-if", - "futures-util", - "once_cell", - "wasm-bindgen", -] - -[[package]] -name = "json-patch" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" -dependencies = [ - "jsonptr", - "serde", - "serde_json", - "thiserror 1.0.69", -] - -[[package]] -name = "jsonptr" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" -dependencies = [ - "serde", - "serde_json", -] - -[[package]] -name = "keyboard-types" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" -dependencies = [ - "bitflags 2.11.1", - "serde", - "unicode-segmentation", -] - -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - -[[package]] -name = "libappindicator" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" -dependencies = [ - "glib", - "gtk", - "gtk-sys", - "libappindicator-sys", - "log", -] - -[[package]] -name = "libappindicator-sys" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" -dependencies = [ - "gtk-sys", - "libloading", - "once_cell", -] - -[[package]] -name = "libc" -version = "0.2.186" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" - -[[package]] -name = "libdbus-sys" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043" -dependencies = [ - "pkg-config", -] - -[[package]] -name = "libloading" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" -dependencies = [ - "cfg-if", - "winapi", -] - -[[package]] -name = "libredox" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" -dependencies = [ - "libc", -] - -[[package]] -name = "linux-raw-sys" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" - -[[package]] -name = "litemap" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" - -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616ec5685824bcc94416c6d4a7a446eea774a31efd7062c8480ba6fd06d7a6e5" - -[[package]] -name = "mac-notification-sys" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29a16783dd1a47849b8c8133c9cd3eb2112cfbc6901670af3dba47c8bbfb07d3" -dependencies = [ - "cc", - "objc2", - "objc2-foundation", - "time", -] - -[[package]] -name = "markup5ever" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8983d30f2915feeaaab2d6babdd6bc7e9ed1a00b66b5e6d74df19aa9c0e91862" -dependencies = [ - "log", - "tendril", - "web_atoms", -] - -[[package]] -name = "memchr" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" - -[[package]] -name = "memoffset" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "minisign-verify" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22f9645cb765ea72b8111f36c522475d2daa0d22c957a9826437e97534bc4e9e" - -[[package]] -name = "miniz_oxide" -version = "0.8.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" -dependencies = [ - "adler2", - "simd-adler32", -] - -[[package]] -name = "mio" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" -dependencies = [ - "libc", - "wasi", - "windows-sys 0.61.2", -] - -[[package]] -name = "muda" -version = "0.19.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47a2e3dff89cd322c66647942668faee0a2b1f88ea6cbb4d374b4a8d7e92528c" -dependencies = [ - "crossbeam-channel", - "dpi", - "gtk", - "keyboard-types", - "objc2", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation", - "once_cell", - "png 0.18.1", - "serde", - "thiserror 2.0.18", - "windows-sys 0.61.2", -] - -[[package]] -name = "ndk" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" -dependencies = [ - "bitflags 2.11.1", - "jni-sys 0.3.1", - "log", - "ndk-sys", - "num_enum", - "raw-window-handle", - "thiserror 1.0.69", -] - -[[package]] -name = "ndk-sys" -version = "0.6.0+11769913" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" -dependencies = [ - "jni-sys 0.3.1", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" - -[[package]] -name = "notify-rust" -version = "4.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50ff2e74231b72c832d82982193b417f230945be6bdb5575b251d941d31adb00" -dependencies = [ - "futures-lite", - "log", - "mac-notification-sys", - "serde", - "tauri-winrt-notification", - "zbus", -] - -[[package]] -name = "num-conv" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" - -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_enum" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" -dependencies = [ - "num_enum_derive", - "rustversion", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" -dependencies = [ - "proc-macro-crate 3.5.0", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "objc2" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" -dependencies = [ - "objc2-encode", - "objc2-exception-helper", -] - -[[package]] -name = "objc2-app-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" -dependencies = [ - "bitflags 2.11.1", - "block2", - "objc2", - "objc2-core-foundation", - "objc2-foundation", -] - -[[package]] -name = "objc2-cloud-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c" -dependencies = [ - "bitflags 2.11.1", - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-core-data" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa" -dependencies = [ - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-core-foundation" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" -dependencies = [ - "bitflags 2.11.1", - "dispatch2", - "objc2", -] - -[[package]] -name = "objc2-core-graphics" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" -dependencies = [ - "bitflags 2.11.1", - "dispatch2", - "objc2", - "objc2-core-foundation", - "objc2-io-surface", -] - -[[package]] -name = "objc2-core-image" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006" -dependencies = [ - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-core-location" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009" -dependencies = [ - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-core-text" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d" -dependencies = [ - "bitflags 2.11.1", - "objc2", - "objc2-core-foundation", - "objc2-core-graphics", -] - -[[package]] -name = "objc2-encode" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" - -[[package]] -name = "objc2-exception-helper" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" -dependencies = [ - "cc", -] - -[[package]] -name = "objc2-foundation" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" -dependencies = [ - "bitflags 2.11.1", - "block2", - "libc", - "objc2", - "objc2-core-foundation", -] - -[[package]] -name = "objc2-io-surface" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" -dependencies = [ - "bitflags 2.11.1", - "objc2", - "objc2-core-foundation", -] - -[[package]] -name = "objc2-osa-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f112d1746737b0da274ef79a23aac283376f335f4095a083a267a082f21db0c0" -dependencies = [ - "bitflags 2.11.1", - "objc2", - "objc2-app-kit", - "objc2-foundation", -] - -[[package]] -name = "objc2-quartz-core" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" -dependencies = [ - "bitflags 2.11.1", - "objc2", - "objc2-core-foundation", - "objc2-foundation", -] - -[[package]] -name = "objc2-ui-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" -dependencies = [ - "bitflags 2.11.1", - "block2", - "objc2", - "objc2-cloud-kit", - "objc2-core-data", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-core-image", - "objc2-core-location", - "objc2-core-text", - "objc2-foundation", - "objc2-quartz-core", - "objc2-user-notifications", -] - -[[package]] -name = "objc2-user-notifications" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e" -dependencies = [ - "objc2", - "objc2-foundation", -] - -[[package]] -name = "objc2-web-kit" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f" -dependencies = [ - "bitflags 2.11.1", - "block2", - "objc2", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation", -] - -[[package]] -name = "objectos-one" -version = "10.2.0" -dependencies = [ - "dirs 5.0.1", - "libc", - "serde", - "serde_json", - "tauri", - "tauri-build", - "tauri-plugin-autostart", - "tauri-plugin-dialog", - "tauri-plugin-notification", - "tauri-plugin-opener", - "tauri-plugin-single-instance", - "tauri-plugin-updater", - "tauri-plugin-window-state", - "tokio", - "url", -] - -[[package]] -name = "once_cell" -version = "1.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" - -[[package]] -name = "open" -version = "5.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fbaa89d2ddc8473c78a3adf69eea8cffa28c483b8e02a971ef31527cd0fc92c" -dependencies = [ - "dunce", - "is-wsl", - "libc", - "pathdiff", -] - -[[package]] -name = "openssl-probe" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" - -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - -[[package]] -name = "ordered-stream" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" -dependencies = [ - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "osakit" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "732c71caeaa72c065bb69d7ea08717bd3f4863a4f451402fc9513e29dbd5261b" -dependencies = [ - "objc2", - "objc2-foundation", - "objc2-osa-kit", - "serde", - "serde_json", - "thiserror 2.0.18", -] - -[[package]] -name = "pango" -version = "0.18.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" -dependencies = [ - "gio", - "glib", - "libc", - "once_cell", - "pango-sys", -] - -[[package]] -name = "pango-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-link 0.2.1", -] - -[[package]] -name = "pathdiff" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" - -[[package]] -name = "percent-encoding" -version = "2.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" - -[[package]] -name = "phf" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" -dependencies = [ - "phf_macros", - "phf_shared", - "serde", -] - -[[package]] -name = "phf_codegen" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" -dependencies = [ - "phf_generator", - "phf_shared", -] - -[[package]] -name = "phf_generator" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" -dependencies = [ - "fastrand", - "phf_shared", -] - -[[package]] -name = "phf_macros" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "phf_shared" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" - -[[package]] -name = "piper" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1" -dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", -] - -[[package]] -name = "pkg-config" -version = "0.3.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" - -[[package]] -name = "plist" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "092791278e026273c1b65bbdcfbba3a300f2994c896bd01ab01da613c29c46f1" -dependencies = [ - "base64 0.22.1", - "indexmap 2.14.0", - "quick-xml 0.39.4", - "serde", - "time", -] - -[[package]] -name = "png" -version = "0.17.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" -dependencies = [ - "bitflags 1.3.2", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", -] - -[[package]] -name = "png" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" -dependencies = [ - "bitflags 2.11.1", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", -] - -[[package]] -name = "polling" -version = "3.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" -dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi", - "pin-project-lite", - "rustix", - "windows-sys 0.61.2", -] - -[[package]] -name = "potential_utf" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" -dependencies = [ - "zerovec", -] - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" - -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn 2.0.117", -] - -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit 0.19.15", -] - -[[package]] -name = "proc-macro-crate" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" -dependencies = [ - "toml_datetime 0.6.3", - "toml_edit 0.20.2", -] - -[[package]] -name = "proc-macro-crate" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" -dependencies = [ - "toml_edit 0.25.11+spec-1.1.0", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro2" -version = "1.0.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quick-xml" -version = "0.37.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" -dependencies = [ - "memchr", -] - -[[package]] -name = "quick-xml" -version = "0.39.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e" -dependencies = [ - "memchr", -] - -[[package]] -name = "quote" -version = "1.0.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - -[[package]] -name = "r-efi" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" - -[[package]] -name = "rand" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" -dependencies = [ - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", -] - -[[package]] -name = "raw-window-handle" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags 2.11.1", -] - -[[package]] -name = "redox_users" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -dependencies = [ - "getrandom 0.2.17", - "libredox", - "thiserror 1.0.69", -] - -[[package]] -name = "redox_users" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" -dependencies = [ - "getrandom 0.2.17", - "libredox", - "thiserror 2.0.18", -] - -[[package]] -name = "ref-cast" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" -dependencies = [ - "ref-cast-impl", -] - -[[package]] -name = "ref-cast-impl" -version = "1.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "regex" -version = "1.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" - -[[package]] -name = "reqwest" -version = "0.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-core", - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-rustls", - "hyper-util", - "js-sys", - "log", - "percent-encoding", - "pin-project-lite", - "rustls", - "rustls-pki-types", - "rustls-platform-verifier", - "serde", - "serde_json", - "sync_wrapper", - "tokio", - "tokio-rustls", - "tokio-util", - "tower", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-streams", - "web-sys", -] - -[[package]] -name = "rfd" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15ad77d9e70a92437d8f74c35d99b4e4691128df018833e99f90bcd36152672" -dependencies = [ - "block2", - "dispatch2", - "glib-sys", - "gobject-sys", - "gtk-sys", - "js-sys", - "log", - "objc2", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation", - "raw-window-handle", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "windows-sys 0.60.2", -] - -[[package]] -name = "ring" -version = "0.17.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" -dependencies = [ - "cc", - "cfg-if", - "getrandom 0.2.17", - "libc", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustc-hash" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" - -[[package]] -name = "rustc_version" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] - -[[package]] -name = "rustix" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" -dependencies = [ - "bitflags 2.11.1", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.61.2", -] - -[[package]] -name = "rustls" -version = "0.23.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" -dependencies = [ - "once_cell", - "ring", - "rustls-pki-types", - "rustls-webpki", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-native-certs" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" -dependencies = [ - "openssl-probe", - "rustls-pki-types", - "schannel", - "security-framework", -] - -[[package]] -name = "rustls-pki-types" -version = "1.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" -dependencies = [ - "zeroize", -] - -[[package]] -name = "rustls-platform-verifier" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0" -dependencies = [ - "core-foundation", - "core-foundation-sys", - "jni 0.22.4", - "log", - "once_cell", - "rustls", - "rustls-native-certs", - "rustls-platform-verifier-android", - "rustls-webpki", - "security-framework", - "security-framework-sys", - "webpki-root-certs", - "windows-sys 0.61.2", -] - -[[package]] -name = "rustls-platform-verifier-android" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" - -[[package]] -name = "rustls-webpki" -version = "0.103.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "schannel" -version = "0.1.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "schemars" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" -dependencies = [ - "dyn-clone", - "indexmap 1.9.3", - "schemars_derive", - "serde", - "serde_json", - "url", - "uuid", -] - -[[package]] -name = "schemars" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" -dependencies = [ - "dyn-clone", - "ref-cast", - "serde", - "serde_json", -] - -[[package]] -name = "schemars_derive" -version = "0.8.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.117", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "security-framework" -version = "3.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" -dependencies = [ - "bitflags 2.11.1", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "selectors" -version = "0.36.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5d9c0c92a92d33f08817311cf3f2c29a3538a8240e94a6a3c622ce652d7e00c" -dependencies = [ - "bitflags 2.11.1", - "cssparser", - "derive_more", - "log", - "new_debug_unreachable", - "phf", - "phf_codegen", - "precomputed-hash", - "rustc-hash", - "servo_arc", - "smallvec", -] - -[[package]] -name = "semver" -version = "1.0.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" -dependencies = [ - "serde", - "serde_core", -] - -[[package]] -name = "serde" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" -dependencies = [ - "serde_core", - "serde_derive", -] - -[[package]] -name = "serde-untagged" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" -dependencies = [ - "erased-serde", - "serde", - "serde_core", - "typeid", -] - -[[package]] -name = "serde_core" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.228" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "serde_derive_internals" -version = "0.29.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "serde_json" -version = "1.0.150" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" -dependencies = [ - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - -[[package]] -name = "serde_repr" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "serde_spanned" -version = "0.6.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_spanned" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" -dependencies = [ - "serde_core", -] - -[[package]] -name = "serde_with" -version = "3.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e72c1c2cb7b223fafb600a619537a871c2818583d619401b785e7c0b746ccde2" -dependencies = [ - "base64 0.22.1", - "bs58", - "chrono", - "hex", - "indexmap 1.9.3", - "indexmap 2.14.0", - "schemars 0.9.0", - "schemars 1.2.1", - "serde_core", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "3.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b90c488738ecb4fb0262f41f43bc40efc5868d9fb744319ddf5f5317f417bfac" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "serialize-to-javascript" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5" -dependencies = [ - "serde", - "serde_json", - "serialize-to-javascript-impl", -] - -[[package]] -name = "serialize-to-javascript-impl" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "servo_arc" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "170fb83ab34de17dc69aa7c67482b22218ddb85da56546f9bd6b929e32a05930" -dependencies = [ - "stable_deref_trait", -] - -[[package]] -name = "sha2" -version = "0.10.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signal-hook-registry" -version = "1.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" -dependencies = [ - "errno", - "libc", -] - -[[package]] -name = "simd-adler32" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" - -[[package]] -name = "simd_cesu8" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" -dependencies = [ - "rustc_version", - "simdutf8", -] - -[[package]] -name = "simdutf8" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" - -[[package]] -name = "siphasher" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" - -[[package]] -name = "slab" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" - -[[package]] -name = "smallvec" -version = "1.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" - -[[package]] -name = "socket2" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" -dependencies = [ - "libc", - "windows-sys 0.61.2", -] - -[[package]] -name = "softbuffer" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3" -dependencies = [ - "bytemuck", - "js-sys", - "ndk", - "objc2", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-foundation", - "objc2-quartz-core", - "raw-window-handle", - "redox_syscall", - "tracing", - "wasm-bindgen", - "web-sys", - "windows-sys 0.61.2", -] - -[[package]] -name = "soup3" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" -dependencies = [ - "futures-channel", - "gio", - "glib", - "libc", - "soup3-sys", -] - -[[package]] -name = "soup3-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" -dependencies = [ - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "stable_deref_trait" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" - -[[package]] -name = "string_cache" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901" -dependencies = [ - "new_debug_unreachable", - "parking_lot", - "phf_shared", - "precomputed-hash", -] - -[[package]] -name = "string_cache_codegen" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", -] - -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - -[[package]] -name = "subtle" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" - -[[package]] -name = "swift-rs" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" -dependencies = [ - "base64 0.21.7", - "serde", - "serde_json", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.117" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -dependencies = [ - "futures-core", -] - -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "system-deps" -version = "6.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" -dependencies = [ - "cfg-expr", - "heck 0.5.0", - "pkg-config", - "toml 0.8.2", - "version-compare", -] - -[[package]] -name = "tao" -version = "0.35.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1c93047acf68669466a34690ac58cca7010bd1b201e1ec86f1fd0a75d3dd4a9" -dependencies = [ - "bitflags 2.11.1", - "block2", - "core-foundation", - "core-graphics", - "crossbeam-channel", - "dbus", - "dispatch2", - "dlopen2", - "dpi", - "gdkwayland-sys", - "gdkx11-sys", - "gtk", - "jni 0.21.1", - "libc", - "log", - "ndk", - "ndk-sys", - "objc2", - "objc2-app-kit", - "objc2-foundation", - "objc2-ui-kit", - "once_cell", - "parking_lot", - "percent-encoding", - "raw-window-handle", - "tao-macros", - "unicode-segmentation", - "url", - "windows", - "windows-core 0.61.2", - "windows-version", - "x11-dl", -] - -[[package]] -name = "tao-macros" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "tar" -version = "0.4.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840" -dependencies = [ - "filetime", - "libc", - "xattr", -] - -[[package]] -name = "target-lexicon" -version = "0.12.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" - -[[package]] -name = "tauri" -version = "2.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "437404997acf375d85f1177afa7e11bb971f274ed6a7b83a2a3e339015f4cc28" -dependencies = [ - "anyhow", - "bytes", - "cookie", - "data-url", - "dirs 6.0.0", - "dunce", - "embed_plist", - "getrandom 0.3.4", - "glob", - "gtk", - "heck 0.5.0", - "http", - "jni 0.21.1", - "libc", - "log", - "mime", - "muda", - "objc2", - "objc2-app-kit", - "objc2-foundation", - "objc2-ui-kit", - "objc2-web-kit", - "percent-encoding", - "plist", - "raw-window-handle", - "reqwest", - "serde", - "serde_json", - "serde_repr", - "serialize-to-javascript", - "swift-rs", - "tauri-build", - "tauri-macros", - "tauri-runtime", - "tauri-runtime-wry", - "tauri-utils", - "thiserror 2.0.18", - "tokio", - "tray-icon", - "url", - "webkit2gtk", - "webview2-com", - "window-vibrancy", - "windows", -] - -[[package]] -name = "tauri-build" -version = "2.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aa1f9055fc23919a54e4e125052bed16ed04aef0487086e758fe01a67b451c7" -dependencies = [ - "anyhow", - "cargo_toml", - "dirs 6.0.0", - "glob", - "heck 0.5.0", - "json-patch", - "schemars 0.8.22", - "semver", - "serde", - "serde_json", - "tauri-utils", - "tauri-winres", - "walkdir", -] - -[[package]] -name = "tauri-codegen" -version = "2.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a0319528a025a38c4078e7dae2c446f4e63620ddb0659a643ede1cb38f90e9" -dependencies = [ - "base64 0.22.1", - "brotli", - "ico", - "json-patch", - "plist", - "png 0.17.16", - "proc-macro2", - "quote", - "semver", - "serde", - "serde_json", - "sha2", - "syn 2.0.117", - "tauri-utils", - "thiserror 2.0.18", - "time", - "url", - "uuid", - "walkdir", -] - -[[package]] -name = "tauri-macros" -version = "2.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae6cb4e3896c21d2f6da5b31251d2faea0153bba56ed0e970f918115dbee4924" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "syn 2.0.117", - "tauri-codegen", - "tauri-utils", -] - -[[package]] -name = "tauri-plugin" -version = "2.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e126abc9e84e35cdfd01596140a73a1850cdb0df0a23acf0185776c30b469a6e" -dependencies = [ - "anyhow", - "glob", - "plist", - "schemars 0.8.22", - "serde", - "serde_json", - "tauri-utils", - "walkdir", -] - -[[package]] -name = "tauri-plugin-autostart" -version = "2.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459383cebc193cdd03d1ba4acc40f2c408a7abce419d64bdcd2d745bc2886f70" -dependencies = [ - "auto-launch", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "thiserror 2.0.18", -] - -[[package]] -name = "tauri-plugin-dialog" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65981abb771e74e571a38196c3baa11c459379164791eba0e67abc1a5fac9884" -dependencies = [ - "log", - "raw-window-handle", - "rfd", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "tauri-plugin-fs", - "thiserror 2.0.18", - "url", -] - -[[package]] -name = "tauri-plugin-fs" -version = "2.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7ecc274121aca0c036a2b42d1cbe83d368d348f54e0bb8a735c2b1548e8f371" -dependencies = [ - "anyhow", - "dunce", - "glob", - "log", - "objc2-foundation", - "percent-encoding", - "schemars 0.8.22", - "serde", - "serde_json", - "serde_repr", - "tauri", - "tauri-plugin", - "tauri-utils", - "thiserror 2.0.18", - "toml 1.1.2+spec-1.1.0", - "url", -] - -[[package]] -name = "tauri-plugin-notification" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01fc2c5ff41105bd1f7242d8201fdf3efd70749b82fa013a17f2126357d194cc" -dependencies = [ - "log", - "notify-rust", - "rand", - "serde", - "serde_json", - "serde_repr", - "tauri", - "tauri-plugin", - "thiserror 2.0.18", - "time", - "url", -] - -[[package]] -name = "tauri-plugin-opener" -version = "2.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17e1bea14edce6b793a04e2417e3fd924b9bc4faae83cdee7d714156cceeed29" -dependencies = [ - "dunce", - "glob", - "objc2-app-kit", - "objc2-foundation", - "open", - "schemars 0.8.22", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "thiserror 2.0.18", - "url", - "windows", - "zbus", -] - -[[package]] -name = "tauri-plugin-single-instance" -version = "2.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8f29386f5e9fdc699182388a33ee80a56de436d91b67459e86afef426282af" -dependencies = [ - "serde", - "serde_json", - "tauri", - "thiserror 2.0.18", - "tracing", - "windows-sys 0.60.2", - "zbus", -] - -[[package]] -name = "tauri-plugin-updater" -version = "2.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806d9dac662c2e4594ff03c647a552f2c9bd544e7d0f683ec58f872f952ce4af" -dependencies = [ - "base64 0.22.1", - "dirs 6.0.0", - "flate2", - "futures-util", - "http", - "infer", - "log", - "minisign-verify", - "osakit", - "percent-encoding", - "reqwest", - "rustls", - "semver", - "serde", - "serde_json", - "tar", - "tauri", - "tauri-plugin", - "tempfile", - "thiserror 2.0.18", - "time", - "tokio", - "url", - "windows-sys 0.60.2", - "zip", -] - -[[package]] -name = "tauri-plugin-window-state" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73736611e14142408d15353e21e3cca2f12a3cfb523ad0ce85999b6d2ef1a704" -dependencies = [ - "bitflags 2.11.1", - "log", - "serde", - "serde_json", - "tauri", - "tauri-plugin", - "thiserror 2.0.18", -] - -[[package]] -name = "tauri-runtime" -version = "2.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48222d7116c8807eaa6fe2f372e023fae125084e61e6eca6d70b7961cdf129ef" -dependencies = [ - "cookie", - "dpi", - "gtk", - "http", - "jni 0.21.1", - "objc2", - "objc2-ui-kit", - "objc2-web-kit", - "raw-window-handle", - "serde", - "serde_json", - "tauri-utils", - "thiserror 2.0.18", - "url", - "webkit2gtk", - "webview2-com", - "windows", -] - -[[package]] -name = "tauri-runtime-wry" -version = "2.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b83849ee63ecb27a8e8d0fe51915ca215076914aca43f96db1179f0f415f6cd9" -dependencies = [ - "gtk", - "http", - "jni 0.21.1", - "log", - "objc2", - "objc2-app-kit", - "once_cell", - "percent-encoding", - "raw-window-handle", - "softbuffer", - "tao", - "tauri-runtime", - "tauri-utils", - "url", - "webkit2gtk", - "webview2-com", - "windows", - "wry", -] - -[[package]] -name = "tauri-utils" -version = "2.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "092379df9a707631978e6c56b1bc2401d387f01e2d4a3c123360d167bbb9aa95" -dependencies = [ - "anyhow", - "brotli", - "cargo_metadata", - "ctor", - "dom_query", - "dunce", - "glob", - "http", - "infer", - "json-patch", - "log", - "memchr", - "phf", - "plist", - "proc-macro2", - "quote", - "regex", - "schemars 0.8.22", - "semver", - "serde", - "serde-untagged", - "serde_json", - "serde_with", - "swift-rs", - "thiserror 2.0.18", - "toml 1.1.2+spec-1.1.0", - "url", - "urlpattern", - "uuid", - "walkdir", -] - -[[package]] -name = "tauri-winres" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc65d45c68858bfe420dd29e834b5d15dbecf8a07a8a16cf4d532c7b1f69d4b6" -dependencies = [ - "dunce", - "embed-resource", - "toml 1.1.2+spec-1.1.0", -] - -[[package]] -name = "tauri-winrt-notification" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b1e66e07de489fe43a46678dd0b8df65e0c973909df1b60ba33874e297ba9b9" -dependencies = [ - "quick-xml 0.37.5", - "thiserror 2.0.18", - "windows", - "windows-version", -] - -[[package]] -name = "tempfile" -version = "3.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" -dependencies = [ - "fastrand", - "getrandom 0.4.2", - "once_cell", - "rustix", - "windows-sys 0.61.2", -] - -[[package]] -name = "tendril" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4790fc369d5a530f4b544b094e31388b9b3a37c0f4652ade4505945f5660d24" -dependencies = [ - "new_debug_unreachable", - "utf-8", -] - -[[package]] -name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" -dependencies = [ - "thiserror-impl 2.0.18", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "time" -version = "0.3.47" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde_core", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" - -[[package]] -name = "time-macros" -version = "0.2.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tinystr" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" -dependencies = [ - "displaydoc", - "zerovec", -] - -[[package]] -name = "tinyvec" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.52.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" -dependencies = [ - "bytes", - "libc", - "mio", - "pin-project-lite", - "socket2", - "windows-sys 0.61.2", -] - -[[package]] -name = "tokio-rustls" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" -dependencies = [ - "rustls", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "toml" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" -dependencies = [ - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.3", - "toml_edit 0.20.2", -] - -[[package]] -name = "toml" -version = "0.9.12+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" -dependencies = [ - "indexmap 2.14.0", - "serde_core", - "serde_spanned 1.1.1", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "toml_writer", - "winnow 0.7.15", -] - -[[package]] -name = "toml" -version = "1.1.2+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" -dependencies = [ - "indexmap 2.14.0", - "serde_core", - "serde_spanned 1.1.1", - "toml_datetime 1.1.1+spec-1.1.0", - "toml_parser", - "toml_writer", - "winnow 1.0.3", -] - -[[package]] -name = "toml_datetime" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_datetime" -version = "0.7.5+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_datetime" -version = "1.1.1+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" -dependencies = [ - "serde_core", -] - -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap 2.14.0", - "toml_datetime 0.6.3", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" -dependencies = [ - "indexmap 2.14.0", - "serde", - "serde_spanned 0.6.9", - "toml_datetime 0.6.3", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.25.11+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" -dependencies = [ - "indexmap 2.14.0", - "toml_datetime 1.1.1+spec-1.1.0", - "toml_parser", - "winnow 1.0.3", -] - -[[package]] -name = "toml_parser" -version = "1.1.2+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" -dependencies = [ - "winnow 1.0.3", -] - -[[package]] -name = "toml_writer" -version = "1.1.1+spec-1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" - -[[package]] -name = "tower" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper", - "tokio", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-http" -version = "0.6.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" -dependencies = [ - "bitflags 2.11.1", - "bytes", - "futures-util", - "http", - "http-body", - "pin-project-lite", - "tower", - "tower-layer", - "tower-service", - "url", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "tracing-core" -version = "0.1.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" -dependencies = [ - "once_cell", -] - -[[package]] -name = "tray-icon" -version = "0.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15edbb0d80583e85ee8df283410038e17314df5cba30da2087a54a85216c0773" -dependencies = [ - "crossbeam-channel", - "dirs 6.0.0", - "libappindicator", - "muda", - "objc2", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-core-graphics", - "objc2-foundation", - "once_cell", - "png 0.18.1", - "serde", - "thiserror 2.0.18", - "windows-sys 0.61.2", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "typeid" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" - -[[package]] -name = "typenum" -version = "1.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" - -[[package]] -name = "uds_windows" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" -dependencies = [ - "memoffset", - "tempfile", - "windows-sys 0.61.2", -] - -[[package]] -name = "unic-char-property" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" -dependencies = [ - "unic-char-range", -] - -[[package]] -name = "unic-char-range" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" - -[[package]] -name = "unic-common" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" - -[[package]] -name = "unic-ucd-ident" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" -dependencies = [ - "unic-char-property", - "unic-char-range", - "unic-ucd-version", -] - -[[package]] -name = "unic-ucd-version" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" -dependencies = [ - "unic-common", -] - -[[package]] -name = "unicode-ident" -version = "1.0.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" - -[[package]] -name = "unicode-segmentation" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" - -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[package]] -name = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", - "serde_derive", -] - -[[package]] -name = "urlpattern" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" -dependencies = [ - "regex", - "serde", - "unic-ucd-ident", - "url", -] - -[[package]] -name = "utf-8" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - -[[package]] -name = "uuid" -version = "1.23.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" -dependencies = [ - "getrandom 0.4.2", - "js-sys", - "serde_core", - "wasm-bindgen", -] - -[[package]] -name = "version-compare" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" - -[[package]] -name = "version_check" -version = "0.9.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" - -[[package]] -name = "vswhom" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" -dependencies = [ - "libc", - "vswhom-sys", -] - -[[package]] -name = "vswhom-sys" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.1+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" - -[[package]] -name = "wasip2" -version = "1.0.3+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" -dependencies = [ - "wit-bindgen 0.57.1", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen 0.51.0", -] - -[[package]] -name = "wasm-bindgen" -version = "0.2.122" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409" -dependencies = [ - "cfg-if", - "once_cell", - "rustversion", - "wasm-bindgen-macro", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.72" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9473dbd2991ae90b6291c3c32c30c6187ac49aa32f9905d1cce280ec1e110b0f" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.122" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.122" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e" -dependencies = [ - "bumpalo", - "proc-macro2", - "quote", - "syn 2.0.117", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.122" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap 2.14.0", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasm-streams" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" -dependencies = [ - "futures-util", - "js-sys", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags 2.11.1", - "hashbrown 0.15.5", - "indexmap 2.14.0", - "semver", -] - -[[package]] -name = "web-sys" -version = "0.3.99" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621441cfc37b84979402712047321980c178f299193a3589d05b99e8763436" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "web_atoms" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7cff6eef815df1834fd250e3a2ff436044d82a9f1bc1980ca1dbdf07effc538" -dependencies = [ - "phf", - "phf_codegen", - "string_cache", - "string_cache_codegen", -] - -[[package]] -name = "webkit2gtk" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1027150013530fb2eaf806408df88461ae4815a45c541c8975e61d6f2fc4793" -dependencies = [ - "bitflags 1.3.2", - "cairo-rs", - "gdk", - "gdk-sys", - "gio", - "gio-sys", - "glib", - "glib-sys", - "gobject-sys", - "gtk", - "gtk-sys", - "javascriptcore-rs", - "libc", - "once_cell", - "soup3", - "webkit2gtk-sys", -] - -[[package]] -name = "webkit2gtk-sys" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916a5f65c2ef0dfe12fff695960a2ec3d4565359fdbb2e9943c974e06c734ea5" -dependencies = [ - "bitflags 1.3.2", - "cairo-sys-rs", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "gtk-sys", - "javascriptcore-rs-sys", - "libc", - "pkg-config", - "soup3-sys", - "system-deps", -] - -[[package]] -name = "webpki-root-certs" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31141ce3fc3e300ae89b78c0dd67f9708061d1d2eda54b8209346fd6be9a92c" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "webview2-com" -version = "0.38.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a" -dependencies = [ - "webview2-com-macros", - "webview2-com-sys", - "windows", - "windows-core 0.61.2", - "windows-implement", - "windows-interface", -] - -[[package]] -name = "webview2-com-macros" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a921c1b6914c367b2b823cd4cde6f96beec77d30a939c8199bb377cf9b9b54" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "webview2-com-sys" -version = "0.38.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" -dependencies = [ - "thiserror 2.0.18", - "windows", - "windows-core 0.61.2", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" -dependencies = [ - "windows-sys 0.61.2", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "window-vibrancy" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" -dependencies = [ - "objc2", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation", - "raw-window-handle", - "windows-sys 0.59.0", - "windows-version", -] - -[[package]] -name = "windows" -version = "0.61.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" -dependencies = [ - "windows-collections", - "windows-core 0.61.2", - "windows-future", - "windows-link 0.1.3", - "windows-numerics", -] - -[[package]] -name = "windows-collections" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" -dependencies = [ - "windows-core 0.61.2", -] - -[[package]] -name = "windows-core" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link 0.1.3", - "windows-result 0.3.4", - "windows-strings 0.4.2", -] - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link 0.2.1", - "windows-result 0.4.1", - "windows-strings 0.5.1", -] - -[[package]] -name = "windows-future" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" -dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", - "windows-threading", -] - -[[package]] -name = "windows-implement" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "windows-interface" -version = "0.59.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "windows-link" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" - -[[package]] -name = "windows-link" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" - -[[package]] -name = "windows-numerics" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" -dependencies = [ - "windows-core 0.61.2", - "windows-link 0.1.3", -] - -[[package]] -name = "windows-result" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" -dependencies = [ - "windows-link 0.1.3", -] - -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-strings" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" -dependencies = [ - "windows-link 0.1.3", -] - -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.5", -] - -[[package]] -name = "windows-sys" -version = "0.61.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" -dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" -dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link 0.2.1", - "windows_aarch64_gnullvm 0.53.1", - "windows_aarch64_msvc 0.53.1", - "windows_i686_gnu 0.53.1", - "windows_i686_gnullvm 0.53.1", - "windows_i686_msvc 0.53.1", - "windows_x86_64_gnu 0.53.1", - "windows_x86_64_gnullvm 0.53.1", - "windows_x86_64_msvc 0.53.1", -] - -[[package]] -name = "windows-threading" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" -dependencies = [ - "windows-link 0.1.3", -] - -[[package]] -name = "windows-version" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" -dependencies = [ - "windows-link 0.2.1", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" - -[[package]] -name = "windows_i686_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" - -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - -[[package]] -name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "winnow" -version = "0.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" - -[[package]] -name = "winnow" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" -dependencies = [ - "winapi", -] - -[[package]] -name = "winreg" -version = "0.55.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" -dependencies = [ - "cfg-if", - "windows-sys 0.59.0", -] - -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - -[[package]] -name = "wit-bindgen" -version = "0.57.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" - -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck 0.5.0", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck 0.5.0", - "indexmap 2.14.0", - "prettyplease", - "syn 2.0.117", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn 2.0.117", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags 2.11.1", - "indexmap 2.14.0", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap 2.14.0", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] - -[[package]] -name = "writeable" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" - -[[package]] -name = "wry" -version = "0.55.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186f9871daa55fd9c016578b810d149de58367113db7fb72b462d2323ce19514" -dependencies = [ - "base64 0.22.1", - "block2", - "cookie", - "crossbeam-channel", - "dirs 6.0.0", - "dom_query", - "dpi", - "dunce", - "gdkx11", - "gtk", - "http", - "javascriptcore-rs", - "jni 0.21.1", - "libc", - "ndk", - "objc2", - "objc2-app-kit", - "objc2-core-foundation", - "objc2-foundation", - "objc2-ui-kit", - "objc2-web-kit", - "once_cell", - "percent-encoding", - "raw-window-handle", - "sha2", - "soup3", - "tao-macros", - "thiserror 2.0.18", - "url", - "webkit2gtk", - "webkit2gtk-sys", - "webview2-com", - "windows", - "windows-core 0.61.2", - "windows-version", - "x11-dl", -] - -[[package]] -name = "x11" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" -dependencies = [ - "libc", - "pkg-config", -] - -[[package]] -name = "x11-dl" -version = "2.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" -dependencies = [ - "libc", - "once_cell", - "pkg-config", -] - -[[package]] -name = "xattr" -version = "1.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" -dependencies = [ - "libc", - "rustix", -] - -[[package]] -name = "yoke" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", - "synstructure", -] - -[[package]] -name = "zbus" -version = "5.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3bcbf15c8708d7fc1be0c993622e0a5cbd5e8b52bfa40afa4c3e0cd8d724ac1" -dependencies = [ - "async-broadcast", - "async-executor", - "async-io", - "async-lock", - "async-process", - "async-recursion", - "async-task", - "async-trait", - "blocking", - "enumflags2", - "event-listener", - "futures-core", - "futures-lite", - "hex", - "libc", - "ordered-stream", - "rustix", - "serde", - "serde_repr", - "tracing", - "uds_windows", - "uuid", - "windows-sys 0.61.2", - "winnow 1.0.3", - "zbus_macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "zbus_macros" -version = "5.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51fa5406ad9175a8c825a931f8cf347116b531b3634fcb0b627c290f1f2516ff" -dependencies = [ - "proc-macro-crate 3.5.0", - "proc-macro2", - "quote", - "syn 2.0.117", - "zbus_names", - "zvariant", - "zvariant_utils", -] - -[[package]] -name = "zbus_names" -version = "4.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7074f3e50b894eac91750142016d30d0a89be8e67dbfd9704fb875825760e52d" -dependencies = [ - "serde", - "winnow 1.0.3", - "zvariant", -] - -[[package]] -name = "zerocopy" -version = "0.8.49" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bce33a6288fa3f072a8c2c7d0f2fdbb90e28298f0135c1f99b96c3db2efcc60b" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.49" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd425244944f4ab65ccff928e7323354c5a018c75838362fdce749dfad2ee1e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "zerofrom" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", - "synstructure", -] - -[[package]] -name = "zeroize" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" - -[[package]] -name = "zerotrie" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - -[[package]] -name = "zip" -version = "4.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caa8cd6af31c3b31c6631b8f483848b91589021b28fffe50adada48d4f4d2ed1" -dependencies = [ - "arbitrary", - "crc32fast", - "indexmap 2.14.0", - "memchr", -] - -[[package]] -name = "zmij" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" - -[[package]] -name = "zvariant" -version = "5.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c1567a6ec68df868cbbfde844cfc6d81649fe5109a62b116b19fabd53e618ee" -dependencies = [ - "endi", - "enumflags2", - "serde", - "winnow 1.0.3", - "zvariant_derive", - "zvariant_utils", -] - -[[package]] -name = "zvariant_derive" -version = "5.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d5b780599bbde114e39d9a0799577fad1ced5105d38515745f7b3099d8ceda" -dependencies = [ - "proc-macro-crate 3.5.0", - "proc-macro2", - "quote", - "syn 2.0.117", - "zvariant_utils", -] - -[[package]] -name = "zvariant_utils" -version = "3.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d464f5733ffa07a3164d656f18533caace9d0638596721355d73256a410d691" -dependencies = [ - "proc-macro2", - "quote", - "serde", - "syn 2.0.117", - "winnow 1.0.3", -] diff --git a/apps/objectos-one/src-tauri/Cargo.toml b/apps/objectos-one/src-tauri/Cargo.toml deleted file mode 100644 index 6901506..0000000 --- a/apps/objectos-one/src-tauri/Cargo.toml +++ /dev/null @@ -1,41 +0,0 @@ -[package] -name = "objectos-one" -version = "10.2.0" -description = "ObjectOS One shell" -edition = "2021" -rust-version = "1.77" - -[lib] -name = "objectos_one_lib" -crate-type = ["staticlib", "cdylib", "rlib"] - -[build-dependencies] -tauri-build = { version = "2", features = [] } - -[dependencies] -tauri = { version = "2", features = ["tray-icon", "webview-data-url"] } -tauri-plugin-opener = "2" -tauri-plugin-updater = "2" -tauri-plugin-notification = "2" -tauri-plugin-dialog = "2" -tauri-plugin-single-instance = "2" -tauri-plugin-window-state = "2" -tauri-plugin-autostart = "2" -serde = { version = "1", features = ["derive"] } -serde_json = "1" -dirs = "5" -tokio = { version = "1", features = ["time"] } -url = "2" - -[target.'cfg(unix)'.dependencies] -# Used to signal the whole sidecar process group (launcher + grandchild -# `objectstack serve`) so a graceful SIGTERM reaches the real server instead -# of only SIGKILLing the launcher and orphaning the server. -libc = "0.2" - -[profile.release] -panic = "abort" -codegen-units = 1 -lto = true -opt-level = "s" -strip = true diff --git a/apps/objectos-one/src-tauri/assets/notification-bridge.js b/apps/objectos-one/src-tauri/assets/notification-bridge.js deleted file mode 100644 index c9b942e..0000000 --- a/apps/objectos-one/src-tauri/assets/notification-bridge.js +++ /dev/null @@ -1,144 +0,0 @@ -// Native OS notification bridge for ObjectOS One. -// -// Injected into every page of the main webview (alongside update-banner.js). -// Activates only on the Console — where the in-app inbox lives — and only -// inside Tauri. It polls the in-app inbox and, when the window is in the -// background, surfaces each NEW message as a native OS notification (macOS -// Notification Center / Windows toast / Linux libnotify) and badges the dock -// with the count missed while away (cleared on focus). -// -// Source of truth is `sys_inbox_message` (ADR-0030 L5) — the same table the -// Console bell reads. The dedicated `/api/v1/notifications` route isn't mounted -// in this runtime, so we read the canonical inbox object via the data API. -// -// All native work goes through Rust commands (`notify_native`, `set_badge`, -// `notif_request_permission`) via `core.invoke` — matching this app's pattern. -// `withGlobalTauri` only exposes `core`/`event`, NOT the plugin/window JS APIs, -// so we must not call `__TAURI__.notification`/`.window`/`.app` directly. -(function () { - if (window.__objectosNotifyBridge) return; - // Only on the Console (its login/app routes live under /_console), and only - // when the Tauri bridge is present (no-op in a plain browser). - if (!/\/_console(\/|$)/.test(location.pathname)) return; - if (!window.__TAURI__ || !window.__TAURI__.core) return; - window.__objectosNotifyBridge = true; - - var invoke = window.__TAURI__.core.invoke; - var INBOX_URL = '/api/v1/data/sys_inbox_message?sort=-created_at&limit=25'; - var POLL_MS = 20000; - var SEEN_KEY = '__objectos_notif_seen_v1'; - var MAX_SEEN = 500; - - var baselined = false; // first successful poll adopts the backlog silently - var inFlight = false; - var fatal = false; // inbox object absent → stop - var unseen = 0; // count surfaced while backgrounded, cleared on focus - - function loadSeen() { - try { - return new Set(JSON.parse(localStorage.getItem(SEEN_KEY) || '[]')); - } catch (_) { - return new Set(); - } - } - function saveSeen(set) { - try { - var arr = Array.from(set); - if (arr.length > MAX_SEEN) arr = arr.slice(arr.length - MAX_SEEN); - localStorage.setItem(SEEN_KEY, JSON.stringify(arr)); - } catch (_) {} - } - var seen = loadSeen(); - - // Surface only when the user isn't actively looking at the window. - function backgrounded() { - return document.visibilityState === 'hidden' || !document.hasFocus(); - } - - function notify(title, body) { - try { - return invoke('notify_native', { title: title || 'Notification', body: body || '' }); - } catch (_) {} - } - function setBadge(count) { - try { - return invoke('set_badge', { count: count > 0 ? count : null }); - } catch (_) {} - } - - // sys_inbox_message → the minimal shape we need for a toast. - function view(row) { - return { - id: row && row.id, - title: (row && row.title) || (row && row.topic) || 'Notification', - body: (row && (row.body_md || row.body)) || '', - createdAt: (row && row.created_at) || '', - }; - } - - async function poll() { - if (fatal || inFlight) return; - inFlight = true; - try { - var res = await fetch(INBOX_URL, { - headers: { accept: 'application/json' }, - credentials: 'same-origin', - }); - if (res.status === 401) return; // not signed in yet - if (res.status === 404) { fatal = true; return; } // no inbox object - if (!res.ok) return; - - var json = await res.json(); - var rows = (json && (json.records || json.items || json.data)) || []; - // Oldest-first so a burst toasts in chronological order. - var list = rows - .map(view) - .filter(function (v) { return v.id; }) - .sort(function (a, b) { - return String(a.createdAt).localeCompare(String(b.createdAt)); - }); - var fresh = list.filter(function (v) { return !seen.has(v.id); }); - if (!fresh.length) return; - - if (!baselined) { - // First poll after a (re)load: adopt existing messages as baseline so - // we don't replay the backlog as a burst of toasts. - fresh.forEach(function (v) { seen.add(v.id); }); - baselined = true; - } else { - var allowed = backgrounded(); - fresh.forEach(function (v) { - seen.add(v.id); - if (allowed) { - notify(v.title, String(v.body).slice(0, 240)); - unseen += 1; - } - }); - if (allowed && unseen > 0) setBadge(unseen); - } - saveSeen(seen); - } catch (_) { - // transient (offline, mid-navigation) — retry next tick - } finally { - inFlight = false; - } - } - - function onForeground() { - // The user is looking now — clear the "missed while away" badge. - unseen = 0; - setBadge(0); - poll(); - } - - // Ask once up front, in the foreground, so the OS prompt isn't sprung from - // the background. - try { invoke('notif_request_permission'); } catch (_) {} - - poll(); - setInterval(poll, POLL_MS); - document.addEventListener('visibilitychange', function () { - if (document.visibilityState === 'visible') onForeground(); - }); - window.addEventListener('focus', onForeground); -})(); diff --git a/apps/objectos-one/src-tauri/assets/update-banner.js b/apps/objectos-one/src-tauri/assets/update-banner.js deleted file mode 100644 index 55bf7e5..0000000 --- a/apps/objectos-one/src-tauri/assets/update-banner.js +++ /dev/null @@ -1,116 +0,0 @@ -// Injected into every page of the main webview. Lets the user see update -// status, progress and prompts even after navigating away from the splash page. -(function () { - if (window.__objectosUpdateBanner) return; - window.__objectosUpdateBanner = true; - if (!window.__TAURI__) return; - const { event, core } = window.__TAURI__; - - function ensureRoot() { - let root = document.getElementById('__objectos_update_root'); - if (root) return root; - root = document.createElement('div'); - root.id = '__objectos_update_root'; - Object.assign(root.style, { - position: 'fixed', - right: '16px', - bottom: '16px', - maxWidth: '360px', - zIndex: 2147483647, - font: '13px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif', - }); - (document.body || document.documentElement).appendChild(root); - return root; - } - - function cardShell() { - const card = document.createElement('div'); - Object.assign(card.style, { - background: '#141826', - color: '#e6e8ee', - border: '1px solid rgba(110,168,255,0.4)', - borderRadius: '10px', - padding: '14px 16px', - boxShadow: '0 10px 30px rgba(0,0,0,0.35)', - }); - return card; - } - - function currentKind() { - const root = document.getElementById('__objectos_update_root'); - const el = root && root.firstElementChild; - return el ? el.getAttribute('data-kind') : null; - } - - function setStatusText(text) { - const root = document.getElementById('__objectos_update_root'); - if (!root) return; - const status = root.querySelector('[data-status]'); - if (status) status.textContent = text; - } - - // Lightweight, non-actionable status toast (e.g. "Checking for updates…"). - // Never overrides the real, actionable update card. - function showStatus(text) { - if (currentKind() === 'card') return; - const root = ensureRoot(); - root.innerHTML = ''; - const card = cardShell(); - card.setAttribute('data-kind', 'status'); - card.innerHTML = `
${text}
`; - root.appendChild(card); - } - - function clearStatus() { - if (currentKind() === 'status') { - const root = document.getElementById('__objectos_update_root'); - if (root) root.remove(); - } - } - - // The actionable "update available · restart to install" card. - function render(info) { - const root = ensureRoot(); - root.innerHTML = ''; - const card = cardShell(); - card.setAttribute('data-kind', 'card'); - card.innerHTML = ` -
Update available · v${info.version || '?'}
-
- You're on v${info.current || '?'}. Restart to install. -
-
- - -
-
- `; - root.appendChild(card); - const status = card.querySelector('[data-status]'); - card.querySelector('[data-act="later"]').onclick = () => { - root.remove(); - }; - card.querySelector('[data-act="install"]').onclick = async () => { - status.textContent = 'Starting update…'; - card.querySelectorAll('button').forEach((b) => (b.disabled = true)); - try { - await core.invoke('install_update'); - } catch (e) { - status.textContent = 'Failed: ' + e; - card.querySelectorAll('button').forEach((b) => (b.disabled = false)); - } - }; - } - - // "Checking for updates…" feedback for the user-initiated menu check. - event.listen('objectos://update-checking', (e) => { - if (e.payload) showStatus('Checking for updates…'); - else clearStatus(); - }); - event.listen('objectos://update-available', (e) => render(e.payload || {})); - event.listen('objectos://update-installing', () => setStatusText('Starting update…')); - event.listen('objectos://update-progress', (e) => { - const p = e.payload || {}; - setStatusText(p.pct != null ? `Downloading ${p.pct}%…` : 'Downloading…'); - }); -})(); diff --git a/apps/objectos-one/src-tauri/build.rs b/apps/objectos-one/src-tauri/build.rs deleted file mode 100644 index d860e1e..0000000 --- a/apps/objectos-one/src-tauri/build.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - tauri_build::build() -} diff --git a/apps/objectos-one/src-tauri/capabilities/default.json b/apps/objectos-one/src-tauri/capabilities/default.json deleted file mode 100644 index ce61428..0000000 --- a/apps/objectos-one/src-tauri/capabilities/default.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "$schema": "../gen/schemas/desktop-schema.json", - "identifier": "default", - "description": "Default capabilities for ObjectOS One", - "windows": ["main", "settings"], - "permissions": [ - "core:default", - "core:window:allow-show", - "core:window:allow-hide", - "core:window:allow-close", - "core:window:allow-set-focus", - "core:window:allow-unminimize", - "core:event:default", - "opener:default", - "opener:allow-open-path", - "opener:allow-open-url", - "updater:default", - "notification:default", - "dialog:default", - "autostart:allow-enable", - "autostart:allow-disable", - "autostart:allow-is-enabled" - ] -} diff --git a/apps/objectos-one/src-tauri/icons/128x128.png b/apps/objectos-one/src-tauri/icons/128x128.png deleted file mode 100644 index ef2026d5d9430b606a1ad534b83f02fb3d9be452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4609 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 diff --git a/apps/objectos-one/src-tauri/icons/128x128@2x.png b/apps/objectos-one/src-tauri/icons/128x128@2x.png deleted file mode 100644 index c71c30a1f7b17703dd1df420cefde7051919a8da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9566 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 O0000h)AOI}+t|x)e0Oc{ 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 diff --git a/apps/objectos-one/src-tauri/icons/Square142x142Logo.png b/apps/objectos-one/src-tauri/icons/Square142x142Logo.png deleted file mode 100644 index 5447faade57e7cad0d0eda98b724e3d89d438a32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5223 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 diff --git a/apps/objectos-one/src-tauri/icons/Square150x150Logo.png b/apps/objectos-one/src-tauri/icons/Square150x150Logo.png deleted file mode 100644 index eb014b22b4f5bafe675fe089e944f50d4fcb79ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5531 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 diff --git a/apps/objectos-one/src-tauri/icons/Square284x284Logo.png b/apps/objectos-one/src-tauri/icons/Square284x284Logo.png deleted file mode 100644 index 07126fe841383d455af271cb13374faceafe8e3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11205 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 r^INZ-^DW8z=vw`bUewWh10r+49t3*(M zpKbKX?KaE81i{C$;uEo9WLAj?hM*wC_JBjU!Y#!?fXoN?(Rc0ZG6^t()ke4_6TyUN z7u5FyxW0Z#uT1vQ(dndF{h8Ax%3Ug(cl}9O>)Q@8qO3U@OuleUZwGX(6u^ug>ZK!7 z{WLsMA8S^wdUS4~M2kO`Ykk`XXY~68-U@Ve*`w26l+69qn@M_T*p3yvWnd@_45qoj5wh z5+4bEx4OdM^J{eJ;+>jDX$86^Uo&2mszx;fc?v^$6?iEe9 zIDA&VqiIjCpeLW&Lo>&dG;%PI_#eMj=)-q!@bR@Zv$wk`mUX{MEU-%a&;gYQp|Nc+ zsMJ15&yMxdt93@_8i1{g4*kC3eoKqxn(v0X#cp&S|8cQxNJ3CP@0%?I_%mbm-eM!S z)(DD8(`k!$LD$BP-RR~%-A}0jN%IV}lq*xQ8hV?7uLq7m@*$|{&tp8z{ik_B#e$;Q zcVafWa3FvWJz&$@AEeDTMn*SBfua@l|*G^3rJFPZnzg*B>D;Z~(?j@XTEY`igG zG~a5p%~U7+-Q{d~XN+zmfS(}ILRF$E?)Tj03*2?1TVbPH__AaG{x`b+hS6;i2wF9| zFhVYN(&)_bl8vsv|KI1}R*h~)j+ggyfZxdIcKiU}HGh#f0qAch+Y<$cPlb**{t1l( zw3bVroVa#VNGlzrQ-z2FJedmCUn<4}3REF%!TFTDMCKdGWY)QD<*7oT0rm*+srcYN z`mTLk(qJ^Kq*WG~Z;C0g7P`OC6~>jVGK|bBwPl_1yrRcy9A9E7_AI8fzz9}ZEr4Va z&OVd*?m}J{Y`py$uo@+^Y&lzT^N_L=X1=>6p$#Um+01B)GDyQCv&~j=95sb#y1pAq z28M~*zz9}}`UVOfs3D*Lf|`Pqw%ld)a8W7%3z)zLMz9){2un+-*0`0z3}*^GEttLe*nfzOBLGE2T1?`002ovPDHLkV1gLJioO5< diff --git a/apps/objectos-one/src-tauri/icons/Square71x71Logo.png b/apps/objectos-one/src-tauri/icons/Square71x71Logo.png deleted file mode 100644 index 5b051c09f0f4ca2f1eda2767a30897e227ac6e1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2576 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

C`I{VHwG1~ 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

%JP#?p^Q4NK!hqXdDbN-t%r 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%0D4Z?)vY4YOw)eqKl+5+ezMN6zJ%& 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 diff --git a/apps/objectos-one/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml b/apps/objectos-one/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index 2ffbf24..0000000 --- a/apps/objectos-one/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/apps/objectos-one/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png b/apps/objectos-one/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 2a6a634c29de81b74eed1817e237ab1ee341f8e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 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 diff --git a/apps/objectos-one/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png b/apps/objectos-one/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index e089d8b32e8b78353c9f2d00a4c1d3f4ece6892b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2180 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 diff --git a/apps/objectos-one/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png b/apps/objectos-one/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index c17def88314d2a4a89d0550e9ff1cb182941f12c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4829 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 A_W%F@ diff --git a/apps/objectos-one/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png b/apps/objectos-one/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png deleted file mode 100644 index 908ddc65616e58b8ae623266a6464108010d51f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3493 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 T)&>zk00000NkvXXu0mjfxvHi5 diff --git a/apps/objectos-one/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png b/apps/objectos-one/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index 1a4fab2825770517e263398b69cc811d1ab5d084..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7058 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 diff --git a/apps/objectos-one/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png b/apps/objectos-one/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png deleted file mode 100644 index 118721601126dfecd80caec831e0c2bb7ff9a91e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12272 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 diff --git a/apps/objectos-one/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png b/apps/objectos-one/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png deleted file mode 100644 index 9152092c20fc74040c11558d72c58670c3b33a95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5588 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 diff --git a/apps/objectos-one/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png b/apps/objectos-one/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png deleted file mode 100644 index 521253fe4d1a94bdefe81c29489c2dc197fd8356..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7442 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�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 diff --git a/apps/objectos-one/src-tauri/icons/android/values/ic_launcher_background.xml b/apps/objectos-one/src-tauri/icons/android/values/ic_launcher_background.xml deleted file mode 100644 index ea9c223..0000000 --- a/apps/objectos-one/src-tauri/icons/android/values/ic_launcher_background.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - #fff - \ No newline at end of file diff --git a/apps/objectos-one/src-tauri/icons/icon.icns b/apps/objectos-one/src-tauri/icons/icon.icns deleted file mode 100644 index 1ac69843a355be53afd65aa203f185193696c49f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99724 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 diff --git a/apps/objectos-one/src-tauri/icons/icon.ico b/apps/objectos-one/src-tauri/icons/icon.ico deleted file mode 100644 index b6ddf10b806d1668839e40de3ff65fc99a3079ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20571 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 diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-20x20@1x.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-20x20@1x.png deleted file mode 100644 index 244d43edb4c1588ee04e81c0b052d1ef3ff669f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 803 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 diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-29x29@1x.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-29x29@1x.png deleted file mode 100644 index b99a4b7377c155568d974a156a88d1aa076c0856..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1252 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 N002ovPDHLkV1nUO2s!`& diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-29x29@2x.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-29x29@2x.png deleted file mode 100644 index 86ce990477d25d0f4793239c26aab5bf7ce68961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2135 zcmV-d2&ngoP)?y?KED5$7tOhB5Tpn@X71PjP282Mr(L`A>g2Q@K*Ch7WQtX1UphQKanJ5|+DN>ZOWoCA#yyE%aH*cI}hiU9QoaJUGGyCfOy>str_dJiq zjq)_pH2Fj1@ksUmp@TYY{w_f~wk2ur?liTxnUqT5R6*`Ei+nyojRPbNKHp2jukg{> z@c}yf9Ix7|>n2I=s+2PC*&-h(PI3T$-I=7dt#R7&eS*Qmd_Rj!E5%<1e@t?-2_gBT zkrY1s!+$XveWl-;(Gn5EF7x&3dqGfLxA;IoU0o)#Ge7rr%dkqT`SUJTgrLp=fBcrFryf5-U9m<=rH?VF;ETCA zOiPD$`sVXCQC+x$9)GHthF&ko77m+6ePn) z(&A?Z(1=li9j>ZMRO-;FJ(Wqqa&9g(NEpe&$9M{U&CDU%q#@K@w329Q0~I z0uYjGZ#Na#%$6|Cyd$iBV;lD2m}*HBY+w|(PW`JYbJLMvJZ4fuqogU*LNuc#L}#7t z$%K6dtz8+TPd|xM2Lp$~)s(OW(EXO1fXBDL8F-BgzH}8{%E3OnTBQT--J?^m zPLSVkLnV{!k#<>h-jL$JP+DOImQZY_i=eQF=qQHXjW>mq7CrMUtteow?R0EvQQ$)i zydp;HKaNv^hd!=TiTy1b6dg=)=Pu+}@3BQqoSd>Hh@sWlVbE7!bn`rn)9zjAynrWi zA{^i$7kC*sMAuFZQhkG#H9ZFp==AiWW3-E7W?u!cvV3RRme_=Af(jA}#?URb{f*Z; z>Dk3?3bLtLQ;>K7g*t_OI0nb!oIQW0)irP}#2AKdD>2*)_r$%WtU#AsI&|Tpa!*2f zV*g*dQYc70I#JK~2|*frRX{0`KX>Vz4z&SmjGtQWim310w(W-`tymtVt(%h>mrrDUTn7*hfM}&$ z$IB^Puh*qHnhUFGLTOzj2+IX72M_}WW`?sq6$b(*Wk;brJp7cAmx)D-1Fz(cZ^;0c z3K)(^zK^L!50snhb`*2viqU@7v?l%ZW0L%AYDxj#^i4v2kGne1WBb<3gUAI$!VZe) z^5K4JXpppROS0ksplndw2yi#g2-8CkH>%v}*I#zis&``a%g-qau<{9(09;Ih306#( z@-oBiv%_@Fq@Yqr&p+2r@2`om*^y;?N}h^?_Z$s8c}g8kx}lD~{H&`7aF~I&vlJjL z1w4m=$NKY1u)f{~Y-=;JfY)7L*V~i`mp!92ucTeYc5U|E5tS&;wTl}Vxb-**BjCoq zkv!bdSx6GsiR6*sBnA{YfJm&r{Z^E|{kogHzEhxep>g4*OuQ~gvt~!=qDu+`2N)RV zDDBHyG;ti@@e=%<0b5z>8#i<-Zw%+Su5|&5VT){AG>WxLDh)Ujn!#@^2`~kz3+0qR zAGiwYI1KP)5L{wtVv)A9(<}`9c{iN57rC?|k1GZPmNgY=R5IP{n!yHk~49+t(57g+jmpka_VS{aV z`LGq4m$qXj&3mAM=FE-s2+P)H0&8UWiUAh{j5A=Kz)^sdRC`z6jI$B=9bnS;z(MfR@e-VLl)6W-&mOY2fRu z|H$RQyW&(z4zM#<hwN{*d&>CPHTV4o&S5-rpBTj{i{S{0ZB4CCL(z&A{- zQ_uCYbzNB{Q_WR1RGWFdyvQ_f?m_FwVNF$Exv^{rP3zXOpOzuY0^8v8JtRkr^k?#iRbPJ2=5UMUdizqMU>h+qKyu7DKmU%Z z0zx-n$;CQBFi9CxxnhZW*D>RelZo`Z@*6OXzA~URy^02Jn-x;Z$gbd|ep7w}Ca@`R z6a@~u%+H~eT?&dS$(om@X0w0^Y<6{aCc>ZpU?bPNwyRQ5RV7I^T=d8cU;&e}{2@UK zVkDnY)Qfsol!DeGtW(Ac2C&%G*tRsKotw4Gvxi>nqbHwj;>5GAN|z z^h_x)57gf4AW_&!ejOw%pk2#)9i;dRJ_)X^(@*&eK5$*()s^~!&%Za>Bo+95wqgJP N002ovPDHLkV1nUO2s!`& diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-29x29@3x.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-29x29@3x.png deleted file mode 100644 index 17417523bea7bb4fb5a0fc3e692621b24a6c4e45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2991 zcmV;g3sCflP)4Q@1rmd~48O*6OndH>N29X^zyqyNs*$rCya4eCZRK_ZtU*EgS! zs3|I_qti#1&h}H!yZ~MP=@9kI4UiC`;yKsaM6Gb~wOr01zu!Eo$KdV@;qyhv zr$s2MpQFV~0>)QwZxwTT0_X9t1Xt}S9?#L{hev7mPQ7r@QNB%#!Y$KCAZrH>F_6y- z9z?Bj5M8_4Pj}tZM$xEN6X2?F@isouG(m43NYSQ;hAEY3r%ZOJc+i>B%=0xU80e&M z(>c2TfeyN2QCPkQ2~kZeYErnRUw-75=V<4SFl91>c#V%{E?EUkPAen=Jc?KKrReVOv{wbJoj+>F!S31- zVc9aM-k9;Tac|D*NN&IxPT8hffu-eUq!fT z_QT`_84FRMlxMG1H>kh~yuc0oN&#z1&MI{aS^*|6$XIX0)?$DN1H8Zu{J>GkU`1#YkdN_lD++AwKhdF_5tmwN0>R=4UB56lbPU|@kGc!FzD z=05(%F$0zt1hd!bGc>>tu7UCQG}8&Q|BbAGN$X8w^-gX=x&+{J0Z(w1BNyH+IAP!` z@S2s;Ye5xou|!GFSg=7ggZuU538MZZ8PeYV zS6Vu{O@FM{tot4e13VAE#c=zNWT_FH+wh5Ck`TiEqZd38^3o9VlA#%w(gjS!xpek; z#$txt;Q8D!9Dc!*8mWWo?; zFj2Vb_RnO967f7;bg_>(ennsUO0xtzI+CaD+v2qS**Lxbp3ae5je9wLsOgJPOz>2Uq}R zHx&5;!u60pFu0YWHZ#=dIMjk~R7F`c84eN#Ma9qD2zlD!)-+Nlfa6J*p579pS6)ui z)ypEZc6~E-&GNY(^0dLN2kPM29BtbgqZgh}NWkHUpj6VJjxHZve`6DUd7Zl z)Io-dB#c171cQBL+3tz+zB*kF*)h0wLoEfN_U(4aj=;sqV^)vH?1ftG0$PC_ZPug~ z;sjvZ;o^j|tU6(2tXW$=`vbTFVg+hFkkvj*_2lOm^0ud9^3DnbgzbQBg^QEKNkCot z*``^fvH}5B0mXNQhw>8Yj_2Z*piTz4iy`;j6lKU!nSZPHjpHcD$NRJNgZs})H4neF z6R>9Ys7>;0KL7Hd1e;D9#nEDB@({iDw-nuR%X^%uG9pi?lTW&699TRt{9ajc*e~v& z-|}(pSa*hAeI+T6U)mq^5B)@c(Qmu`6q?OG3kvZh@$P@KQr?C_=B<`58M#;XhUiB> z?V{x?Bl3hs`SvUo6?Oy)u|MoLkuYc(Coez9$6It&csygVa3Rq@^b`F>zg;aBROg|K z&f&E8JMV6#MZMu7_|n@EZU5dBZG9|8Z|+Y^zfm+Q%F^VgdR#O(OmM8vE(*~t8=Gly z0cxpuQX}->zBFxqWQ2}$GzL1f-C-_Av;_rN=aabtC%J)7a>+Pkl{%$P@&H4AvQEeq zq1Jf3gM2(cUu-A9I;!VdIq6y;JH7vgu+Z#=&M`Lv8pJ`gi&xozRZG57dDpb`E7!KItf;nM8IA)xKNEV_Ev-Wr4b(VjCOFQ#h>A7nX(TqnG+=&#ok$ zVKZ2%jjp!P0Is=N(57E?OTU7Gvh{KH$L>i|DrFrq?uvS$UcEfb`)?^;q=7Rzy6@fr z8Cka5$6za5fI=sia+LPR4|Op}L*8;qx3wFx6{t8SE>buw=)ngD>2*#)!l1Bol5=F_ zM!Aze|8+NYU*s!}G)=PyvK>(I{8*q6gBy51N8kJQ09$GcBozd#DCA#G~t#CT;z3ia_4{XyKYv>wMhe!wL(Vu6SMAt`4HWdp;if8#u)Z@zcD~V z+(*C7T7x4N8uDm=Qn1kc{@Oz5wLmVd&S4cQ_Jtf@SZF_F3+;_Yu+S<+f2WeCP#JOy z8zT|6^oRKmT6VX&h z>cr%bhRR!TBI9P_NXE<_wg|OhGj5#96&o+)V-M7Z%@y;q9KHNpFSDGy%yRFU2=8g0 znFjYm{T$lbzEeg{*0eFm&5#@C2}<)RN*|Xd6t}NCZN$bj`Mj!|o~jO%!ev#u%Us#?M-kr|Gkjt-4Rc*MfF0t*eV zP45_y8y~X=+>Xv1X(%O)s+z*3WtvMN!)t}D9a-p3R$Bm1$rTO}Galp8-coru#xNSA ziuBz10n!#M49FVYC?!o^vtbYj0iFvM21)DTa14r{qegdQ6mWO%^%ttjd##r0`^*d6?!2dkN_lFk1V8+v(WsB^`+mECg~7$f zgr}NKu6ltJc!3-EfumZ|peS=yF>|ckv4Izu2nM@6)vN~93!K0U+$Jt5Q-%*8Aph!S zUb$oS4QV6bpHd`8>`cV7zoALcNiO{&>R6lSslwVkhPO6P+1fl11vgK1ZJtW2O8w)YTvf_Q#@oeAUsVcP z0Vc1ySCyg)>!Bf8c=N*}oCK#!=fsR$4~^{rsH;jVsCzxMYAg92<8=_W%&?XGVA8^Z zg`s8ZN`BSXpv=(AyHhBBZgBRv_%N3<3!7$68%I_5ZHLQD|LZkgNaz002ovPDHLkV1n-6zEA)F diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-40x40@1x.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-40x40@1x.png deleted file mode 100644 index 5b308e9b31895c5842b19a8e64209cf5aca2ba78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1600 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 Az5oCK diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-40x40@2x.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-40x40@2x.png deleted file mode 100644 index 3dc2ed21292cbadc0f98f8ba386cf2e78e9f03a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2798 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 Az5oCK diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-40x40@3x.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-40x40@3x.png deleted file mode 100644 index 28bf52267bb7ec1af3c234f58db80e9560ce5cbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4137 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 diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-512@2x.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-512@2x.png deleted file mode 100644 index 9401ead730846fd49d3a3df0c73ae74500eeefea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25997 zcmc$`1yq$=7byB|T3ShIk4lJ?k|JTEq5`6zw19wgNJ;Fi96?D1B_tIQq!H;>LO`TM zIt1zN*!9-h;5p~sH{QGNjd#a*gEPke?-jG>TyxH~KA&k`S7V^%qD2sd;qs;PHxPsZ z{9g)$h6?--npe~hLGInWeE!T$kG{FVeQ^f2;^h{MUENC+>IS_e-P4(Q&tjGlo2L-B~=JrIwK^|eX z4K$Jd;!gJsdWH+XSH?NTk4U{Fv^J$2+36&DmatA&ZA=!0omGBjDrIJZGI{yw(~JojSku1m*J9$`?4R9Nlx?`KC?iU%ib8Js zd1v#8>PDJ&t(a!s)(XBQ>L0O2O#DDWD9BLP`Gvw{$=VwnP+S;@n=5xww}>*-H!V_n zZQ5qZu=p*dIQ(J`nlM$g7|}q17(W1z|<1Pl~WNFaL|l2mxY zBzQuF`1tv@u_@|T5*nzH866jw177c+R99j{gM2#9nhaOn5AjJ<5!cgyMFuvW>gc)^ zEX2nhO6fw^SguAlJnBF5mFjtl*kWE z(=p$B7l`d@D^l*)m1E>`p67+|BPN|!ukiDGv=g%Oi0b{O#Hdg8s~dK_o;E0eDV+vK zH#s@hUa}p%x#alGOPasr&=?sa$yFcLdIZbc#zoB|DV|S!l(mfGC={gt$}zLNwbNG- zV98;+kvZ@+u_jXrg>cf@+3lC;aWLTVaMb5{u(b8Ug#w{Of?wMfvbtD|oBi}FiC#51 z^fTK@j~`K$>A4?uRgdD+QR)hB?}>Zp{>TN+TqPjx+!&o4uIuNBjsxzCCP#5XDQ`Qi z5F{P1S;JADCgWL`(RTv9IkTKMnczl^Awy)7R%C8}65!t)e5JuxtisV88A;)bV7Lmq zUGzuC(cSDh4_mg@<`4%CKudcM_14im6Qe_X#d1*tF1q4|>l`~MWTyQS?@6s*Hpj1` z{bLyN{Dmu?CY6^#WeYsP*u_R6pNeN?Du^n1%;}?I>=PAU4m@1de4pBX$QMD*UyXTvIS8}7yqUw#kDVW$kwUQ|ni&a3 zCwSZkPI0;q$g*bW(&7=scEH8WA+Wph&0!;=|3;5bjt==_GUV-yaj$OZ@bF32qVGIc zi*`6Z6@#UPlS)-bJ@IdNW6m*g^Ro!aa5J+a%(vX4hs93jJ2kYFyn8<3n@omO|Fph; zdGxt%NZ6O*pZlr#1}vQRQ6jbyvt|Bc?`NsaCPL2TxrK-k07yl}`S53QRVjyu)_#7E zmTk!fijWkXXlZGX(KR2dEOR-WxO9a8O9)X&$l{L}sF({sZEeDN&$^fa_c4_9*(+i0I?ryW6#{$U|Mf=TT|+5mCW5kqJ{y9_j6K1Is1NxVSWZ0GEsSk= zi(o<;C!3sBLwbvMX!~&}B+afYHH^A^R*7Y7-N8DjP&R-HEZW~|t6)K}m$bkYsyr+; z3`LM1Vc##ucr@(iZBz`K`F1t#9gQkV)o;egIFLL0;HB(@7cKORTucZuqpPo98{5%M zQ;DsJ&l|hWNPixsD*e62H;P~(uu$wOeC4Pj9)(!(w1{0^ssD27#Iyn`uit(Q@;TGl z^s26SZnUy^+yBj4l1dHW^kQUfhOwfu^45#*Jw6f+i~wu=?Si+QQ3RbOYQPN}YLPfq z+vB34NT!KsCPzw$)n4GBuZ=HaxFs$_PKF@dbQbqdcnxy*oow*&xG`5)_7|{bnYT9A zq{K_x0#$$pv){i5((d3}#J0WbaZ(GQe2XMqS>Jp$x)MYkZj;UPm7a+XXgW9Lb!>#k z*stk>DE@dJ?bL@p0<=haZJVY-cIhV-3xmjzf#=Hzf@$w)-|zH8ie>cc=GEYh4MAXy znE7Ob>!S&Z0j4{xJK@>cACICDr03%Mt1Y$E$|n>Uy=)r3nt{M&^6guU3~SZa9plpl z#paR-ViG)8spi5%3}YE%LwDbm)I@Ualq$^SeO-Lfr7MXiIRRPm<-hNZjq)qYC~Wkm zc9{Su4;a=s#y%S})UNAV#?JwzbS=+Rd-U&T89mpa5g58Jfld`wt&?uR2V5g~dUE5a zPenKo#Ld|6-!FyYN8WwguXgQHE4Ac3HB>dbhqu-t-;FN`w?8FW0g95ElolQIMk5kq zcz{z{K#K0~V6QAUukM&mF!;Svuf-sUYRje3rJ@iGW!!RO%rll)25MSFb|Jf;ddyN~ zDx^|5iV_%9`sIj|jmwE~FFnWZ@=o7Dv9D_)OF}xCoS})nRdN%jZ%P90G=(-)l4O+E zOBzAc8l$J8#az@qCMY%bkx)FPi`P1CO@%^|hJv}HYRiWEW6CFeSWaeT4Y4O7Nr#lS zZ!1@#Ej0E-ne=_WL|5B;gHExQ&gh4=Br75v=w10TdyDCau7T|H%86F;GYHZqiIR+{ z)mogsI<)!X`&Iqeb7XADj{?e7=jn8`L*{LZE`9{z>Jo3g>`w0OYt7@Bq)T-SNmJZ5 zQ1D$38YtR?kBT`K!|H-}!y0TEa0DEz)@4J-{O5X_!QYNk2hs_x9fWv~auZy)Do= zMoY@B;i@-5RIwH%v0kc5iS!#Pv|yu*J2*J5^K)){L9165SgPQkx*CdY`+YT{i1HZH zqg+}V=rmDO*4ah8>xTl4rY+$)UA$$mQ(Aq$^Yj5=s8?I!Bf?HrRwzI8^7aOl^i0LQ zd?t|~DPy#;;^y}T5vU(|NzAZ#mx?21%Hh2nwt#5saW61Oe2xeJMDNyKATj4r)w1o~ z+QIqXr$X+a9h-n5=lbw^U$XHgG;5oUo)4oCMmTQ;u}_StXiQ%(Ep0j`3#|Cq+$VLx z%AEq(Ob19byBNLny}W0L*RIi_mM@^HEv6Sm>(B|M%6u{NY-r#Fb{@UW`VkV|uGaM> z2ylS*QK6OP`G_*J`PUz701E3S@z(o+IlevtJzj}AfZdUp(_7V=aZc9mzx{)OdNpJF zI!>ahwz@=?19e@Y?zo-DT>X~E7TwjtJuE;Howl4C^S*`2*Vc3*dQ9*jSV7FVeRXtF zW%{yx@xx0i)Clr+h>;ri;Gw)p{udM*5|Uk|qBOUtKO3=@t1=8AB#HBSXxeyB*NU_& z)(>gH6$EKmjljA6cEUD(Wk-<}kgktfZIVW*| zPqXL~1tQmXCVqGft@hLVlO;*PD3%)E5kb$OFb~3y)p5J|{l>~p0Uq0j=7B6VhwUpw zxF@}f;D9ZGAZxY+bIw#IMw)P zWggLDPL<`RCU$e^8imUM14huJQ)Yrk`0>BZGv3i+`gD6|h{^e7W)lqOsDQzkkTat7 z)x2kn1=X}8_*7Av$$@pwaoh0=#hcmXP!AqdIi804xPD!?rxWau!TR6M<7@AT>r&X7 z$8bRp1vSx5-+S9eJGr8w5y;5;oUDGR_H~1(<8dmPrQne1p$EBMxHmpl(V|cBB|?ii zCKv5b%t053^6B4}hBWGrJi!*!UQS)$WDyibU5sewxj>Gulb`Gg zydp3b$=4fwsS4Xa?<-meil9CpM)L5wgeuRsOF#j+V#f^)ns5!erJu(DaXmw=IJA<_ z1hG-b;3W<&CPu47e74iNY`2tYZ71*z;&7uiij%W}1l;FvdW zoV{0VW_h-NX-WDYE6b_c=AZp5_EjA#V#Z3)Ak37S6OzA>yHbd zT^@AE;cv7SMlN0pKe7xIJ2q6d0udx#8E|(vux~5X3VqeiX znnh+p_bnzqXfd%j!u$jy4se?0_G-@UySvxe8x;?4eN^s2b_wy?>EYY_DR0++e3@m| zHVQkdx_C8|wIn%dF_zs0g`C5uoeV)vLSS~uR+NzmtOsCSmNQm&=Jx?9 zq-js$izPfqjDji|43Xo$fAL$!l`4nV&Vn=tnYndzHQw_fJU5dNtMhoD6#4m=2}crF z?}5puR31trAB3{Ph7!Wbl3u**lsgmWspp<)bnD{^5Ja26&uozf_s-+D#YGXWdQX-4 z&|W5X1CXU7?H&$PTjS`>V+dDGmfXFuK2d*zbui8_)1>~<2`hGoQdLR+lO(^&>1IU% zKqJ>6Q)M@|hH|7X@*^2!%5lqC3&QM58xYHse`o6FDj#R}j&ALn$azEFov7NF;X5kM zBY<^$JPCoSW9BPsf%%COn7cLS1`F`X)$R0^dQHkC^AzM*IQCN_4rZk zJqBQl{&6Z5DlvGI>nP3UpIM@Ho7XdJC%<|u@dNoYq?^|-CJeT*9F zwLt}#u#FtXrAvS^K@_n*gGP&dzmhn(G@t@z^0p^Y!Q~e#t8(4}yPJHs=$KjF+%>v z{UhqQu@0DsFqL|iPs|WHC|(T8P=u5B$yxL7%E^|$WmZAFa%z0y(>NC7ue1pST%D%( zDJi;=E7usM$-rlP^QpRT1RD$nPwm#Nt3e(^iF(Khg%>cRr=J0jw^TZv>QUbiJBIJylLqKoMv33R$fks+R8zgZEf z_d-&UV{s?FMEfN(2|!Vj7f&qvH&J$CFBTdDG}X8DURbmb8};OX-JtRw zO>fRGgzIw+4Sbzs*~PwzBBtC9cp?Gay8}2;we2n=LagC zx1S!pVNst#4#J^ej)CyI{^L7_(86y%2|^EYWazN6A<6SXlWQ0AtR|say6$?&v#4yJ z(Rhn+UML!P8KP#vR8|Tm(vIcxA2$c3jV4Nx3#7tQcuSw`V_+h^!&7BCgg^)pLb8@KP~-%u3LB#T78DE(!#OLz({u=7nWu4>-UNRTJ{NP@hW8tyb74 z?6mES!EZNBDD)uxMTB-DkIHppbAngnZ{=#5X&+N$WD?QuvYV zl8zZDlhY9ymh?wn(HrJdR`W0L2eLI^QN9euJ*YsF=|n#Nw=R2>V+(x-)C6eM?-;U!Rdk+!=@UWhOPnPA>6GQ+Y90{d?BioHLdcR<`W|y>ugz?lz7H zv0J`UttEl*`3iH0Mn%~XL9D`v<(l3R;qxih#8ayF-Mo#5V_8i<$-4}Z%tfwH?4sD- znB(wZ$&`_C`ViR&Xb2@6Y@7kosQxMZ>V%Wa!)o7K?8qx}T8km+DQ%EjV6>LXY}7U- ztKYYu#yQMehY^9OtF1tJ#pA-?sB4UpT&+JuV&r1GSn?KUbs8(;*XulvAq#+}R4rVJ z-7pAmiA+yLit&*(oZ?$1fD038Hrf{@*ieIYRz$9!0PG0quWd{X*>0H3a1G!6O;)$GZ#;bQFL(Gf&veIqFA)DA15Y`G>sowC{>zVQURl!A$w7&X&CtlSD%CF#FVaWbm6 zqX8*QL(*&&rsnhT5LNw+qd^kUx}0TXBMD{x!7yUjQiJo3JC;n~a`+Zr3A!!P!?#dr z=6EF5VU;ZDW0#3x)I1T4<|^Ghv27Ma+h2(k6BFWKu7>otN6vj4#*vLw8q{k-J#4I2 z`)u3kBbf$wg2$V$T;u|a3X@YbUYV|^|FY9XaK9?!w4jR}TMEFg_U9s76+ovTj@S5A z4PT^Gwa9@zTymM@7NgGu5*0Q6QwGi2hOBG8SNFv9-5wZY^k22vrD zZobjL-|XOnTADhXK-z09yZ8bunoy2A84mZ=P1t`P_36x4B33yXNlCo~W6Zb8$&;R2 zY?(LHVd^yK8`?C(_r`q~tHbM_hyfo;P%>u)mYPI$dS^+86gp!8I?kzluoYy%XB;#RWau(D_@Z(hjcTUApen;1 zNi-cTrh%QFTLCOdI~2tJTaHMNvD`6+I!JFlDK_EYNUf@D99S0=bdeE)`N|T;B=qF0 zXD1y-h)?w5hu=VAfHQRv3N4mdp0tP{r-{%I3Z|By)Ll~{A88aS-zA`ZwC+o69=U*z zMfG!tecp5B8H43c)iDH=jK_`j9za0IkEEm1jF=lzo*QH!73M|Y*{1b{8YOOc!()TY zBySS>tbjF63Uf^u;gjHks!ap7|KTw?0%nr@#eCAY=5kQp4?jSkLy{tuD&DcS7LzA| zijLd|1}H>TY<5~)4Q+gXjI#P;3L^sU%`gv_);dP(L7e37`3tW3k#J8v@h)|Br+UCV zNtdT`A6!=MojQb>K7`ucaw_-t2UCk=MMUR#J_*-MP1C&;b3aN|aoy1M*(Nsdg07A5d`$nE@k(rNM|Ia{Vqg&nc!en=?*mi(|pY3__2 z!p!dK(e?g(pNc1i$>3{e(@PKnAyXeKq=@`cZ@&oibYeSHSsiATc;W6=Xt{gWQ)jzx*C3D=V9|jAbjL4pF8q0;>w1@hrfv* zaZHG-<>6)0C~VlRb(nrj)PL$3 z#{RadwHDM@AQf#ir@qqOVFQlnnTs|yf<{>X<>k_I4Gky>yP%1Q5Tci&;>qd6_dPyg zk)UU?UyV27I&%l_V;BDK4ZKD4b)dU_;mwHD86=ImVsQKlO7p}4M04zvpmZJR+&(Sh zSGa5b3ax&N){mUYntOZoMVLn5Y<5$9m#(>)q)iQQkvl|HJ;a<^8Vhbzz)e+ce`qxG zqH?y2xeQwRR^Z>8Xme8@S6fR1w5zOmm4^To6>x6NAS$YkBE)J9rMiSJBxbr-6}kLY z(bx|h>HcqeL=otFNtXgq{jtr6SrbF<{5!D8hGOfM{<)k;JUj5t^UsUQO_lW|G-n?{(khb`VNtE-`;|TmF**);mxA|END(qL{22) z8*Vjrr1DVEAdiVXoLpA`$&&ROLq!TF5_hJW%*U^&RPNz7nlDt-LwJalY~u^-m+Ku7 z%t#Im$SbAo8s2~PUW#UGR84gG1HIz4v=n%e?{t1$+Wbrp@c97Py*-Ev+;C@>*Y(QT}1d`gExFA=XY<1%i@ zG7xoJzt-QH2G@unB*^NK0jUXOZUyjyt~i9j4@e*hQVjqD4#$ksqChYtGJtsg@0Zl@ zgC%>LlV}iC5ECA&1On#)p=cxwpksxUC(|GZC4$fpgvsC%%!tIFp~otJhM2%E(qccb zi?sM3cwh;DSIzHw)hh6CSOT-!JG3ATK^kMrMaW5b5t7lN;&%t|07(BFsPgwNTdGUc zU}3}tQd9Nlan)a{`$uI4>Z63p2aE!NK=T2Ns_jpL zG9ame63vR*)$!vhk^%e+Rg2^{1+;KrMkp{qx=_16*R5?Ai?|v%}QYFFfc11 zWuRn8s}|$|7!IUW81ewffKdNK1~9r^%>NQ9-~m_# zU=Bdt+YF)ZN(K@KEc?PAFlT^d{t)*^Mvyp7D2iP$4yvmEEZQZABx9%&5+ooO$mW^- zyL3Y~lOX%T2tE1#868+elEq_{y+uG4HT)1AD~be(a_=X=4qSJHX-@*GOKMBhB#}{) zBpbx1hL%KHHagh}Xns?xT$hu9+jXo*;2w zhO=;o{8u{?Ms+h4Uc7A_RLb+d({2J6u2!tb%rBQnTnpJ)7JR6KLwyd#SQCA~m8bk{ z@Ivw8LR<~tsrtR*O!W7yDIviN^#j+Js5L2m1Rsg-C9X{RIMt<)Q;`GOS{Ib2rwROo zfXh^8Nh{J;iDeGI_e(+EwH!`o9ww}-Yt#R232+=l70jzyuGfZiGjV~-a|BnwvCz#m ze9BBOnA>vHqK;o+jwa3N%a_ZzhNz!)pSLOfP~ZiQO8V7~N^EkxY0;oQy+0colY2Nx z8MIpiTYapr(KE!XkneAi=-Z?d;-(r&PK@S3dtEAf)N{Rt_*(R%Q~ifQr$xh(7usDT!IL8IxLG%fd#QLxaN;=_5X5MWF|BSY#BRE ztKvGSVfp4qc=*hUSHGHv#=x_5;YApQG)Vv5cGp1*a7u9VXACeq4A6!)F z^7*T%^+Baqx_BL5Y?J~$cnG38)=NB^MO721qI&BCYieifd{8r5(L}9Uc4?Gcj}7`a zSNp1Q8j?$ri}Z8&tj50FzD*T)*;A?k+NZnvxqI4Dt_lxVcZiprA`Am~J^R~K-F!la zeSy(1d@y?~_egJ+2R{6~68304nKGK|ze9UHY~Q-LeM1A+HM2DQAg^xhwzh zNGHF(l5?0vXO9eu7D+n8z$8ROYPl8Tn1GAFpXca%NW8*IfUj7>QWL4Ssw0x~$8bt0hnaPh-WSIWTytPgZB{{+78CA*e_VBA&ojcNwA5`E;QsJdlzOz3Onm zEL6#H1XL7!F#$1#f_Tauv|?Ti`$F2&Vyd`rBJ#(X1$Y*8iT0IFZ2~|wR_1gQY!`LX zL=U}kye)uXBbKi9y#4iJ*gGlj-jM6oO0A@-nc^0kol{5A`-4xV-qV2iS>GfglpS;j zolDN}nGs29Z+R%d5BgRO%|`ZT+4&d{8h!k%`na6Y7B!e2LC=HG6Sp1_Z-(0nt^s-l z=?dEL>v;H9QEO%hTXPU8TA&|n^(&5^B%Z2MwY7AkK+Jo_9=L2yvuGdTe29&!kVlnc|zj-e*QXQG2L1;t?TFH~xxQ8n{!fe;p zQIyCMeSJuC?LMJvAyNDt_LAVFdW;V7Tp}36xm|ImXNsL52hop3T29S-j$f!jF>FO% z)k7K)uwBn#cr}Sf?|d;5B?5W%cn4IL99CYAX>4!*HILj?Lzs1NSzEfPH8n?k3CTmn z`|N7LDd#fD=$)OWV#Dts(A97#jlJEpT&5iAbK>K;O6Vp4z%B zhzSIzL+X_UY*oS#N0_pKBqzW|)9UMgk_;J`9GnEtBryBl?)wXaEybP!1|oS^`Yy#l zgA+eBI5q{J3qHqSWf%Iv9?3V-;E!S;)hUq*?hzD>#$Zn@G{dQ1wSTiX^1Ja<0oxNy zipG#Flr5A2+o}GWmF0$GqAU2Lgi~qJNsqC|7Baw|>c81obR7BXd|1ImboJ|ME_%n| zS|1kptL=3g*+K;Tg9|CTDL5RB9~eW!j$V4bM7H3!;0J+I^ngFkflbF@crFOmMl<_i zc@|tqQwLeh9gV;EFu*;MW}oR7%!m2Mu`Rp`pDH> zsT!)yqnk&8_%Qp5z@Oa0xnd^LRQ0v$8XxLSUeZ*_K851e5oK~Ht21(Es5jXLbivVu z2+j%4jVO;Qlfj8c4HSF>aszUtiM8mqG37^C3KBE?EZzfv9eA)uFPVJ~!y*ghfMNs% z{)WB07lA$yG87rAauWWLX3nTGGcQ$aR8Rq$1te+cN4(~|=m8d03^RBDQn$$t#xbgg zG)KGw7exRP1a+>udh@`rI;6MyQT3z6LzMv}NE9fFVZ~uZNEO*WvVE17m6oJ5j+KIS zSQP$|X6VR*7WY@G!5tKw6r97{-VSh_Mw&*tQfMoIlz%!>@OVqWKhn%;GNwxEN@~&! zhC;w#Guw+aexB^bEKj!r33sCj&82J`gKiQ+K?=ccscbV6I##lmv+Uhsknl&ekD6R( zPEkUJFi$Y!r4J0DI8{f^jyUs{GNORc1Tb2gsBf;5rQ{^8FY;2K=#H7C2dpAwT&_HA z2D;fKE@*6jIGMQcmV`n{C($H@lE=-~yOKjJ7Z6vTDFdNw7KmP$ENu)kS?XvAj~dne zs=U<7-H&ET*>@l^BaiG1P@;F&(F0s(6Z1!yAPkDyQ;biQb-{BvfS4xOm50+O^sx$L z6yz*Un6;991jwjKQ2E?Qq5Q%*7PBh6KEp+}*F>vB;sjUX*I{g2I??5|k|;<40EOVp zSG~PV4WR{sJQM|(3$DBz5o?+n|2jDfycDdzXA0gBy)gjYx=2%xo~(;7ZLCQQ`GB)u zSc#k9OeFZbUA5xc9{iSC^~R<<@@-C$Ee3$g<#phTdCF1sPKNPRvCr=uFBJ!a2M^3; zw-&E;lzr=yNx3bb!yNWqtQNmHVTvyeKXa3UlOE)-cB}xd%4Zo@?W{3(WeUT2N4`@ z3W}|E{57(Zkq?rhb6Opg!ek&Cp+Gn+pIK~ZfISe2>x+-L>2R&@%gT6)T6ltOa=u;c z)>C;4q|A9w+ue$9pG^SYkkpAs2gP2+qoPtGet`og*tC6KxLgML{DJTzHZt-m&qidZ zM=SP}n$C`zdWve*czsRrk}kfz!U!ht7_FWe;>Ka2+5i<2xOrNE*g)?q#UM%=>=@JQs{6ghC`>imqjDRk5Q&Wmn{t;4G? zA=%}&0>19^Cakpfx=`64lw0mEp$EC^Qzv5{)MvNe?_D7JP*F84ue1EDV+muxIzl}< zmCX+wNcC}ONT(r!;~@|nn4bfQk!h!?96wK%nbtWgqTn*rSm!yybrrAF7xTofrce@5 zf3p#v8Kf@OIQ(owcP&~MmQ|o$B3imn+MPR0O%9qG7~<;d z?vOBvc=>_}f|r*xaGS>}?bZ5txw?a?ZViL(^xFd9{9|tKi+si(U*s}ZtnJc5IN1ZM zmYT%e(W*1ErB{|)`Hfjh;)c~Uff|y2@nQ+jmTSg@e%7f3@q*fy8TX9JczO6a-TTdk zqgB(JzaEnT!w<0?D83r!MG%*|XRU3Bcj?^)Y1PI??D?vXQeOVmrS%nijRK@VxkC>; z)W8En?U{|l)?H@LlV@)^d{waAsBMvB+^Gh4MAGTn*JIfwl+p-(FaBWF16ZLxXN59X zYy3dIavr=)u3HOo3z?Xx-?l6~Oky|W<0vueO3Kr*;i6+Z*d}rC-W3U%c$ITMjOBXY zn?uCjc~Bt=Y_Wg@tIfSKPuUk8Hp>r^+Aj)(h=|cNvs2s;>F54g@|7)$u@*iPU~Nm= zJa-NWv1zRsAUnoVqk(V!EkA*eccYL_gSlvdM2~)no%`*dp)J>;$*EL`Tp?0ze`CbdFoXYgrSZ^=iW&6JLtrB~+P6Ks-B#=9zq{A7ZeDRGRycHhJ%fSlst(KB>G60x z#~c{q0>mx}fo4=uZ~ltYif;Eo8mP*dYXR=HmQ|8#D@pH(riK@Egq+fjo&8v3k%@i8l3K+Ij}r*|Uk+ z4)6$IEPQy48z2Mb-(FC7Z!|zR)$QdR1@h@YVzBC0X7U=vB3z7j`(`M9RGFS z@~^OKfg5YjRasHe7Qo~{LkYd!#BdZmHrp93&G`6YO9b-#^L6RD)k|MJv`?XIoux5< zVbWJW`t^?%GhOEqp}5$ID|u49^_UP1PTc2|X!0BPnx@YZTc&-8pN-emHh02NFjP;a z$L(867$c<8Sjln#d%j_3RBUWhzG}ztjmk$5_@pug7y|jNMH|5#xtQIR8c03XQ8)!S*3NEo-tC5kuJkPD1n@1O}0&#s0DyhQ;J9B_jQilza{trnKTcD=g4G*w^`TraPD+=ls zxB!ppY);Rt})Bl;gO0O%eVNc11#peS}(2Hfo81?mC1-Ng&k1MvO{*syfj?Nmaj z$ez4+q3$sXJE2fs(0-tmz(uU22)Uc_1|nR=AY}hZjnl?Jc-<8ZOtphxvw9aJ=9D<# zk_(}Vh1runDu1;@1PzzfO{ zoNH=)fppjVIQEm^MFnS+fjqNl+xxgB;7~0R*qdv zI6QP$Py17m+=b?1P6gY{oTAeo2R$yF$}=oBk%#ANjcxCU2rwKVPxO~raIJ(*sd^*f z-Co>d7Z&-V!5Q9*{QP;9HQ+FK1e9s43vM!l^0uD+ijE@qi=#{Bo$F<2F7MwupUYERu@NJNDJY&AF478wUmG zddVpc&;%Vn(7UO0*Z909>+>5oY3nFOvu0CWi>#|Ubjm)Y(DDn5yV?{KSQlhHwh?82 zg(2H_*&_U^#RPunq#Y&gqvQE;7g9S&b`3rXDmZ8G2+`nUKejH=&h(Fc2AgG@>z<#yjdh6VtUkPSDm$AUY(Lc?lDinD~O)_p6LT zAl$4$m&;e&AC4uRJJz}5bbB|Ul^m-YtXvPdwj4RE&!S(rB?ZHJtAO#PQJJE(x<}Me zvlC`FK(iml;9=!q!o-Bfm{^$JK4=D6Uem6Fz5D9AN^w253^1N(+@7gwsaz^~c~Kn6xduQ(ezyTHvy?yZpubn+^$= z(6=p>+0CZeob6kum*`r>fQbz7?=o)2o>a%fo`#C_eW0r?mRKw=A7i+oR&qF%n9ScTU~kTLW}G_gIh z_?H}doRW$Xs79|h+~>-2q&uVZ_@spmh-DP$w@)H>RAO~2M}KYAZ2DL90Fv~&3c5FI zm+#11TkMgoXIoF4{!z(Mxfq{K32TG!l_y7(*Io?1%@^%HkeEX{M^v&nal{6H1~aE^ zN~XH6Px*&n|dvodH%0{sSrSNrG67D<%n4p{hYUZEBY1H5|UH z7ArHuv@Ckrfx)KRoEl}cmGlTGugzN7ZStFN6yDLCl;9;wjt!q3?iW98Q?NI^JbmXy zK2jZsBy?r=K9OG>4V9niaWg*YYH=JJjw_R3tg}NG9OB!0GQw|xWB4lT-4f^1L{2Iu zGPb|+o=nbaVN%zjVAi4d`yl#rFj^g4@sEw((m{ZltQ63=sIm)046E5c*#F}5^pMUj z{tdEJkUDpjPtTL*wSEkLluJ6PNDOTHy2~56eECAPC%5$Zs9VTfao@MjY0(TPT;seB z#iz6YKAw=xDla=7vMgPg`5y#z&<@I2jadglvZmg3_Kl@Hj-CtC`fpoBkM-_v zmy`w2gAb1|I{Davv*n9nZZgb!b&v&4|4V_y_B|ZV*H|AKPY2e1P{u9MOzt_nfd#cx zFgn6Z0NYnO5opW>D}$_=@Mgua@}N@;fB&<>rELE2?3jegry)`?b*pUdbr_ScmE4H{NR7`jrA@bXTstR4&2&X6%1NaNQVR7P5?W&@%(IRT3aq&TI2* z`6QG3Gw&KEQ)tX2JGf>cjb&e5$v_`e0nh)0K^~ym!lvuqa4;jC>hnJcO9ouACb(s4 z{*%lA->w+^wu#nzt7P#e1^fxlC!f_NQx%yrM=K9A?8z z+nKEY!O39X94T#Ix%^`5*Jc0%6_8ZIO!Qd)*gd%oP8t|MNV=%sAh>6RwE8^!stVEq zliBYjNr%OKw4(mQ<5e_4Xttit9EO-oorM1VQ5D6a2UMD2F9r5U+AsAxDtphC7LPgn z4bxQHfG;{XN5|zhE~d0Fx$ScI7(Iwae`Vb9>hAwptAhU`NV=QjrQ_-zY~xnn6gx<7 zNzwKhWHDc^QB^O+0Sj1#uoXl-%^)+l2NI&|BU2hDM8mASKpWjb*iWOBzrRm<6 zQ6j%q^2%dj^;n*5RmT=_nEjlenNzE~|Co*OAo!T5@BK0ngl-MP-st&N;+mn~^0T?B zWp3FmE=tg4he2z3i#?%aHAu?R{;u~ERZCs*CZbYonS$5FpE=yziNA=w_`^;_jiTFU zkHg9cUh?eb0x%~g<%f`?YK-u1Rk4Q)wh;aYTzl#G|A_0K#F_LWfP@R4 zAMhOmFfy3g{=caTKnf0Jv_}((<^Nx*0+_bLV|iBsPzx}p{)bnR8veuUZt1b>LjOaN zK+5@H3?fxqyS3LJsF2ZrGj&q>xtGrWQ^5cM>{b$cx+U2N@C+bfQilhs2NsF{>#9Jn z;6GJ?)hOvGg;ay8;Msqx0>S@Q1+V{G75snSq)8#|MCuYi5vlHPs|CCPa|Ut*B{>TR z3Kp(_QDElR3_w)aEpB@5&UYEam85f7nmgROplZmD0vYAV)}n@T1=p)U=H{VjB>RN~Yl1TNUzjAKL7l$K%D;R-=p;0Ii=h#b>XSe4V9`ukva5ce15PSH<}R{- zCSl%4LiT^X-^95<*Trcf-8$|?#Vt0J>wQT&toxucr@Mv2IX{5Hwg8b|{W~%BayWP_ z2o8zQ!77Nf<(5W=^c~NR*3LPOWE3zj!0zjt%83`9H$JHFbMxkb=bg}85$Oz5DN*FR zBA&zS%a=D$Ly(|r=?0C3Co%#7YD9846<9Fx$z_*Bd`$I!7 zMW}!G5g5$R9{rF-ECMzms4(X{nj;rXJ)|Q6kw!m!<$U0Yv&en|3c3QhDvM}j_$N&p)E=cR z88A`&3u?%wSO{Cj);ALp*ipo~?CEOh0#TG&7 z%W{QRfEoT&J|1baeYiuXH8uBLO7dqk$$E3oVe318&ZWrvNAL;J3DRQgMP4q*t?-(gwW50yVDB5fj5LlxG_pqV)l19kFogFoV_iSg-HGd zezpBgd1vr!YU(&xQ@bUL$N_r*Uler{ zh-+wH;_Q#AS@hyQxb^ip+1|v{DM*hU)FAlXnAuxrOeA!FK-V9qMu9Qalf8Bpzdle_ zXWjwXE&Ls`{dXgwK^OV9`&*k0(YTFz?uFz3srTr|6kMWxDPIiPPGv{NuZZvL7*f)J z!FC>9QCg=}$aSbo5 zUeRdU($Hg)bTDeC0eq;kL@NsMlNPyvFEGHr3Zrd{61KRl-$m3I|dn zrCD}`KJ{F6Go=IH4=7S6#c^GMqsHp_ifm)#XR)w38QDl82>0IGredYWy zgwfMJc0aIF%>Bss_j$Z~j<6$T3wlpWR%uBe6}@kNT=#^tCq>c|2&yI^GFTdHznbjF zG(=$A={H1pO5YA%0_IySeQM3~RrDH}Nmxaol;m?4egU}9&(N)KQE4Uf|FgO!L0`1X=F?;K?{=w7sU#-5x3W0FrEV#6P_9v%N6 z3O?*R!l+Pg`WtSi&60O+h$JpLqL>x)e#6~8QUO_3!@o{$yA>ln4xXOg(~o`u8^<(u zt2_@%!A6=k(P8>zF>GpuW#BwRkoVOu8Vcu^R*3P(5W;MHKgm(GZy-DsE(g6+X)#Kh z#~Qx%D(q5rpk+vjpN{>NSsyKi(?OuG`~ZL;`7HEQwofWCbbw;+j3X(iUJaMNCS<;% zRJ7X6d?jx({4w~n033D=7`zHX+G{tzn52s4A9W#Vf^C7xeH~Z4vVCbGj6xC*rlwIujh-4Tiw-hZ zRL)b@@-@|n4=nESJZU*$x_FPJsL%H^E#}DO(P9?SYzjaNW}oBd#`&>3WeWhz*!6{{ z2H%4qiHe64#d1|F9y<)gwiOQzCx(G)vit^^$Yo(vc`NqNYjs^8`4Q)#SEdX7*zNP> z)N8miSQZfA(W*x+785qDfm*5=)9%dxSY@QagBfts4-8z(?xzRpiZ@=ws&k-`hF z-#azML=>g?cFjdU+#uHZ`nK zj%|ltMJwiv+=Anll9u-3k&DLm17t}PYp-~XE&~uARF?7m3L?71Yxhx(Ys;^urdvE^ z081nH*EWt$w>K1A+rh@HnHwD&AN`b{ZUjS@2bX2M_BGlk24ldlQZ2eUKNTEZAPHG0 z?cO+xM$GH1RbWszLH)Y?qp(&To}yujGWt@(MlCWLC{33Mg?KID+fe+7OhIs5R&?UW z#uX7!@Qvtd?<35-(Ood{mB;Ib>uFIrL$H2>lDD^jN(WGdwDmdP;WBnLYWPvv`oY^W z--2yy%B)`of;w;0O3*c(_;z-c9gzY5a@gTKs4O{f!XR7K76I)ll zMc;ZF3I5dp@ybla70(Qa){3Ek-h1eRVdn-RH490bcb8wNO&5ZgBON>LcioT0C;kKo zK2Pc<-(G=gZX39ga;dc}%|%be|GpTqLlx*Wb7z;if$yiv4o}ZF7uf@@hbX(Ox=B30 zvyR#P=8~$ib=?cq)_&*dt4X(qe?in&CJlNH#>a14ZIcPqN1eTyj22kF2~phK*@=*! z|F&~`!-#`YwInY)la-wZ-l`kvBhLLp-z4!dZTpP z1Gpe~4C(Pp{nR`>o|8lj2;te6!q20Y9&8v6u~YNiSa}Jtv@z;yU5T34&CUoD(RJ`! z`z%`eu?yj22XkE7%8B)K*;CnNYzwX&1(V+->O?FHJx#%s)g{a9nM;-};{IeN+y=PE z3scht@D#w*cML|Y?saGQCYNPr<87kJk}Q@JQsjS`QNvZngc~I1F8+Z#70D>Q8`o)p^2CFLx$CCwVF^!)b!<;iu6%Dcg zF;#z(Cys_b0Id3Bi@BY}@sHKZOgBqBNnA^&fM6BoB5wO_bsA(p!mpf{W4qmjdOy+~ z{XaUo@<1rN??3d)TZ%R*OZ3ue%To5`+a?KRFUwR)vQ1+d6UI#S77>cFWGzKm3)z|R zvt{2BGZ@2IiGR& zT0Tq1A~Rl!g}99Pv%ltwiq`U%rR~Hw^l^iWSo$HEv&f~^ zEbpB2=at^K+2CPFiG%Fvh}l+l)$4J;yAgtN31;KBwQjYk9Y0`!{PcW1aLyCsEoXPMKt#)RiOKWAC zI;T1jOE`{YP0FOX!*JU7N!8g1Li|botKZ6MTA`iXRP3OiS(*njHu1c^b#{O5HRcYk zlcy8&`N$Z@(ctsYvydMwP`C`YsdlI8^|Ii&Yi>aFMRe!sVShhMs}jU0WlX**7Uyf# z6d2KR^ZneN%w%H9K((sJv(heDiy&%#%~pB0OE4j@9o>D+zPW6e%Ly|oG_XrsxNHm( zvkTyzOT{+y^vADNJN|xH-RAO5T-Y#s?j!8UU2RR)=Avq4UhW~I6(>(RE3rY*B}rzh zw#M`b`#%a5d!rsICzJH_*sPp^Kj+?eNC08uVoyvAJ^(j^o+oka`g^Sz zY>AiSP4+9d2maFC18bLiz3jo!^a(M?v?tkn&0^iTCl`fftez?s{P+z|7E#^rTtdtP zr5B~!$ledTQfhNFEDSR{)L}~`x3*v?9ng||9$G_U`_;hGVX$rL2tRt1j_@Ry=j;Qd z{uZL}Yxm2+0+$<8DxQFGk(1=LmxYurkX3#ENfTtume~8TDz(JU@<}&J$fgWqH+rZm* z%WZvJa_UX8k^>_|ONfGVD6N)Ot$L&Nv>TDZH?pP+)*3Tcoac3P4{B)Pt1FFJBoQbH zKP2g{jORix-;4Rprv*MS?NSHCr=4aFf^L7XmvFK&w?yCmZ6|O-K!tF_GNrVr!x)(^ zDXz=iOf~3#fj1TQpmtA1=FMDdFe>Bc9yigOP~C@BI+imWrMrFKo6*_0ey?8*O^C`3`nvGD~K zi7EuED#NQx6zN#$0R1t(V`15(B1H=zm_8m8@ChXlmFUIph&iI{p}H2HUhkAz%j{KY zJ&ww{{N;7zXs{Wv2>Wmob)cWiit+n%wq>CbH_u<)a<9#C)phJZClXX7D)~uF z^mz%M($#wm#5I4+C^aZ!W-L9#-u1w6_?C1oal>(QY(W|#fJ@|pw2^AYUulg1bkdoXmRgIdH_88ga5 zg;(nDmUDc)%Pis5HaKe(QJP{EZsQL|W(Q9k^(P-E)98sFl?Yb#J0S<7%d|l9&0+OW z8o6Au6s7rOZ0s{i;!0 zAa=lOWT%P!e`SwaIYY2YHr{y527|`=CWBN^!?drHAOPdtoaC7NNHQmG zI|81?*kYIJXs#M;S~dZbt3Vn@#c;{wr@W~?ME%COW=!y;%xAVTPfiPTr|?*cXIRl? zc`cp7m*Kal{A1_~eLsC>%%gR)My?-4y&ekWd%IS1<4>w--ckbDe(!aO!uKl^r~yRr zM{giLGOEF7yAau#tgrR12ojk4mKuWTsvc&>Y_HOBsck~Wp4`bZ@>jPk-dmpwMa17d zJf-@zxdSs3^WXs@qLQq-x*mKm?l7f{to9$oVO9zMfA5!?29^%>dvwAgt_?Yqq8Q)B z@}jC1{Es42I7J)1-(`;;l6w5`QMWj1oi_dJK!jNJ9rJe|RY3zY>gwI%PZi?t+WW3v zO@(tx>EkYIX*CYf%MXu~UqM1v%`9IWg^#Jp(Gu0k>i{C*cPb7tI>>A8`X#h65^%~j zNk>njFw~g{hDUSXR@BX8QDN!Gz}i1OoN1!3wj89Bw)+mE)qK9X@$__4mkLqWtG>Cs zj^S}DmokZ;54P+BQdDSgCRK*43A;jRlrgTB(>g z1)j0Y(=I|-p7^&BmoKN$83k($NaialyaTv^#vC*XV56H8Q@oWSFvE(L^N>MfsmoQegHGM1+GGQmNQQ1;8g`n<6P zttNP(*gXCs%-}ejnt;k-K2(p3#Zh|~-=eM`@gCOR8#r8QxRD&=9p1B(Zwopz8{cNf zNe>CCn&iQWkS3QCwRyk0PBj>X-bPfObk~=0@I9W@KLQo)zKtuW6D_sGg(;S|fYEAQ zIP$@QRR!=5$G-OruGu`d|?vv zQy59W$=>(Oa{bThK1of;I-IzYBeQclWngD^{#>|kqahKnU!Q`(;w&8zW|op^&tC~P z!P&sseB3j8_l_MiMI_hMa4DGi9Dkae;J{6Kv)pf-QM~t zoN3_|Q>;1@{y-ob6i4pb$||Lch;tpr4z2okWQu~r&baR%aAfvab{RAwI8BEMqC&m# zc%|AUZWOC!XrQ_4mn_0@&AbXW8#_gn!7gFF!Lz0aK#PqdyC(Ql^O1#p&k6|vuFL=G z9)X3Qf8JEPmM{)U4D8n%uP&_biv)!3kxk@5b(gTpOp1VPr%sC{qtab) z<$PAbmYxIBxYj3sG!M1+HdUz{U1WSXtxK?2_i+o7&>JnJCi7Pg6a#d4V(3q3hrq-aG(% znwC`Thdqsp8f6`^&&)l7F^0aJOY9s{VF=b5td>5KtZKX|DJ<(&Dhput?>my4#*@*b zd(vxyPt>wi>v{6q0bks)+ys!3zeP`c%~ZT{x2z04Ju5#fxA+Pga7GFDt@RlUSp0aB z*pl9Hy%zpg*BnT|EF&aX%wI)hO*daS_%*R{<;ZXTnwZ)+)$*A-#7WvXxP@e z8Je9mQuuE1U4hy9aY;_8pATl11J0ROJ|gjXNqj-(L1_Ma0#_1sk4#N$Ou#r6Au z!*IU{C9%05wXK{>d`MfqXxp*@ZR+ngX2O!0Kl$ZqdS~zX1@Q@)wTd9tPh64T*u^*A z*qMln5aQi3HWolxVmdN2S*oM7J^b}Q9jtsz`L!JoSuWh4+?9tPSKNV37JmV+tBcGUC>~4 zF`h%OaRinQ?HgU4n)0uI^2r(ez*c|%vz2J&MOlZZlfrvl%l4mpB)An7eyqxtF-p`= z8BzMA^NU+HHvk1E_wI6#qYb0bxvR{dY*pk%zNqA2bB_cBGD5dL;J5qiEnm^AhlY%@ zhLwd8>6rXKhc*LvYfz9Mv@TiA6=T#yHYNc>>F6TVeI%Rf#bO$W>v*$uM%q|O>1oCh zzF~?NbzEvclGLK&Hn@>nXJc#3TE-0`Ki|Wu=~ay0g;&X>!|Lkl@#2E@tOXA5l z6681ITAEd=CU1UkzuBJX9G;}%2fB>gptpy-ycoX#EKJ1x9EfSECrh``i%v7_A)b`a zWX;ICev#VJ`^D44QRF=Hb90l`v?$8BWFmC^*Dt5ugw*oUe#Z+{!LjcOjU+ZUt`2qy z@+r?wd*eng8A8LCo4Tg<-WYvd$wyaje7bR_f$@Y^cz4-Tm$z0|r@0o`yN?>1C8ZU0 zs6M%GP<_{I({|UEukOnWV$mCg#oPWlg*jD#+Ob<(BwbaXn{Jz1ar73oI$u6vugHs+ zt)?ZmzIWdwD$MsQtg+|vU5; Qng`1CoWiJ*iuA+ck7ZSVDV`u*qmZFZfty=(9Jb|!jW zXT8UJ^Lz8nH{UfL$&HHCQYjpgJRXsLF4~)-ojVh>y)8jIK90-XyDYJPpCx-DDG`fF ze!UYm-UIuNQn2@B2kD00S(M zeR61>offTM8>Myc#;9#eoZ9yhnP!l`O^}opAIbhlsov-ACit>(n0$EDBbsIPQcEk* ziPL;EYqpV(z*8xMeBKtCGA%+sx~ql4tcVo?IWNG@2X5OMqX+J3 zr)XajS+a}g3q8MPd+0Ta4jne9ok;W=~fwGtp-+-S)}M!ONo4JAvG`&L=4DvL@c8hfEkn-9hXBSp7i%qO%iq6gFZJ~J7;aRHrK+y~f6^s~dyw0^`r`DFMxPc9p ztFTFc8Q6hgP7&=4ZSmetBj6%-mM8IhQV-C^0&*ziz6p^vqZI#>DEG9_IM}3 z{0Iw`hFcr%NU#F4Wsh~yKu?|FxTRp|{_y=MtzXBcFt#mg^JDEaumUqUeLngins!=b zj9^=CulQ3$d4=5Xgm>%G$zZo_cb5Ozut%?;%^PFNpPNi}YpuCPwQ8^fLj+!csbXt8 zMeA=Vs7g3br0(`Ps9ta1~fsb)r$Jj)|Pbw_st2=A08$i-!jBDmTO4u)J{ue>@$7hl#uUT^jdoMhGG z^;ddn<#TQYEm%Uate$_-E?Ey?G50!lc0e@E`T$+ifC~YO*E+zQ-|GQ%O#&VX*i4v1 z{mpHlYYOma!FF|}l&aAjHims|f}QapeqI#9R-7bUxmSz8g!5$ z`!eSLx&VyM>E+IwaFmCxx+X*yU0Qjt#RiRa^xt3YrRScG(C52YgKww|54j>E7#I1Q zC&$w<$9mMA4#>H{vOkknz1c@Euk4{uKS?NGZn?k?37T)XW5493c~>^ld0!6_7a7e7 z8gL<*{>wMzZHxC-B&ont?oLW_Y(bb!g{@=ls~rq3+VjswP;5#nyLj4bvZn+rXnHMO_@N??h>oU2o`*{=hllTrS{q!nx&w>qsffvPmNN z4cA<5xD^r6=%jdD(&0yVXvy6zG@sq0k{=i2RnB?#|^1Fd&C`BWY9$e zn{i&wNUuv%WhpvzB%rJ1JY4H+s8k2L6>QbI3(M8vZUtSC-Y8?)*ZFrcAWh{ZXrUbgx;w%t;I z-o7nCPc83KoqpY-CYn4YPq4iHhQlCVuxPMZC)nai~VR z*P>Tm>Y9s)TB2l(k*H6_nPUN>zlIvhEak}-ME24oB4q*WJG7q!NnBC3M`u?r=R4f ztFH~w*sDN9h@Y0SM z&CyQV-ex;5vX)UsZjCqJ5$l}uK&QVgqB~hc8};GvPb*nhhE(S}4)ftazs;ii&rgp4 zH2aew5zfD$LH%vj8@=@QNJKI3DR}jD`Gaj|7a{6@zO=HAl&sA8xSMl@T3SsNY=@w` zafg{D8__+H?43><3mLHmf<+Jjg6>cr5|EoPebl3~0UeTL<3of~Nm@${dJrY6RAAxY zZ{$=N7*#B*j!l)0!c#8LgXsmO09y^g?^R=qt^{Z|gRNR;Lpea#1K6q((YYcXN(EX_ zdB6^KU3C|-gQbeeoj+7Z6$|vH4Kbxh7rKru6fDjKo-0IEVl7^GAv;cFB`$r!(H`n% z!^hq|){uei#Q^;eUjO2Azjk3m$-p8oKFTJ^!wxs8i47a5Hiwt`>LutdGi(+c9-lbP zr`E%7yxv<-Uhil?mkO+t!!-Y@5M6L_gIfP0Y!d-4SB7&VL%fgPBf=3Ltc|B2C0ez;HBxLpl6Gj-+h<>OTcIu|_JO#MPebTPr^ zN=C~px`x-o({;-Ydn=N()g>G%ST;%Y&w;Xz z$|~tHO1g}aE`+8Fq3KeFx|E?VMydhpa>BYGxGo5;OZw}Q{(4gmy(x#@R>wWt>gbKJ zT)r{Zwexq$Xw*S)5|JTpv=k8}K1el&Mg#k~T2w6>PQm&Vg>~g${W$QR1ur&e=22GjjU2L%ox!FpvxyhVQe&<;wC76P(lOm;lev=E6*-i(oaMhw> z1$HQroXOO1WH)THUp^&3UpbBU_c5D=Vdz0zJ9Dp8%ubzUNiYOUN0-XnrAYm}@w?4j zzoOGMKH_@NoWTmrzI{ux$YhxX7!xwIt|KRSY0=_l;q$ie(n*Wzsvo_~2&`_nDJ;Ow z)|^G|t?iJ?i4wRA7IH=OY29Rs=5#KtZq>Q31sF}49+8M#amp7Dxp$$XKQFnfm3^q) z{Dfa?)m5rBgAEuhxvNDCR>{Z6Wy{1c$3pqu2ghs%~bSzBi1*ONEgf&gbiMq9a}o0c!*wXzZBUA_*aCx4Bl zSaYpV=0{klV0eOUVjzQ}117RPPpY5^|Jc1NLCc=#lIzz&`GUEuo1m%Nne>`<;jvV9 z-+4T?(+7S5n2uqg0w#MyufqDZV8FRX^9J6M4qL};-XN5=olHjf2C&jMgoZs7RHv?` zshssGE5>eHOL_L-I2g&OEehaFc#h{{%cdB;#?|BAUERl_xMS1>Abb;PG0yTzN{6ey@ScY6X`r)(faqIwCI(n*kUaQtL1 nO`7CUp{<$Io*iaWyc768FRxq=m^J};00000NkvXXu0mjfDSh!N diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-60x60@3x.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-60x60@3x.png deleted file mode 100644 index 68cb4035c246a1e5a3fef88628412ac92e137d55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6276 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 diff --git a/apps/objectos-one/src-tauri/runtime-entitlements.plist b/apps/objectos-one/src-tauri/runtime-entitlements.plist deleted file mode 100644 index 3cd3784..0000000 --- a/apps/objectos-one/src-tauri/runtime-entitlements.plist +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - com.apple.security.cs.allow-jit - - com.apple.security.cs.allow-unsigned-executable-memory - - com.apple.security.cs.disable-library-validation - - - diff --git a/apps/objectos-one/src-tauri/src/commands.rs b/apps/objectos-one/src-tauri/src/commands.rs deleted file mode 100644 index 35394bc..0000000 --- a/apps/objectos-one/src-tauri/src/commands.rs +++ /dev/null @@ -1,102 +0,0 @@ -//! Tauri commands invoked from the settings window / injected scripts. - -use std::collections::BTreeMap; - -use tauri::{AppHandle, Emitter, Manager}; -use tauri_plugin_autostart::ManagerExt; -use tauri_plugin_notification::NotificationExt; -use tauri_plugin_opener::OpenerExt; - -use crate::{config, logger, paths, sidecar}; - -/// Post a native OS notification (macOS Notification Center / Windows toast / -/// Linux libnotify). Invoked by the injected notification bridge when a new -/// inbox message arrives while the window is backgrounded. -#[tauri::command] -pub fn notify_native(app: AppHandle, title: String, body: String) -> Result<(), String> { - logger::log_line("INFO", "native notification surfaced"); - app.notification() - .builder() - .title(title) - .body(body) - .show() - .map_err(|e| e.to_string()) -} - -/// Set (or clear, with `None`) the dock/taskbar unread badge. -#[tauri::command] -pub fn set_badge(app: AppHandle, count: Option) -> Result<(), String> { - if let Some(win) = app.get_webview_window("main") { - win.set_badge_count(count).map_err(|e| e.to_string())?; - } - Ok(()) -} - -/// Ask the OS for notification authorization (no-op once the user has decided). -/// Called once when the Console loads, so the prompt appears in the foreground. -#[tauri::command] -pub fn notif_request_permission(app: AppHandle) -> Result<(), String> { - app.notification() - .request_permission() - .map(|_| ()) - .map_err(|e| e.to_string()) -} - -#[tauri::command] -pub fn get_config_snapshot() -> config::ConfigSnapshot { - config::snapshot() -} - -#[tauri::command] -pub fn save_config( - app: AppHandle, - env: BTreeMap, -) -> Result { - let cfg = config::StoredConfig { env }; - let path = config::save(&cfg).map_err(|e| e.to_string())?; - let _ = app.emit( - "objectos://log", - format!( - "saved config to {} (restart runtime to apply)", - path.display() - ), - ); - Ok(config::snapshot()) -} - -#[tauri::command] -pub fn restart_runtime(app: AppHandle) { - sidecar::start_or_restart(&app); -} - -#[tauri::command] -pub fn reveal_logs(app: AppHandle) -> Result<(), String> { - let dir = logger::log_dir().unwrap_or_else(paths::log_dir); - std::fs::create_dir_all(&dir).map_err(|e| e.to_string())?; - app.opener() - .open_path(dir.to_string_lossy().to_string(), None::<&str>) - .map_err(|e| e.to_string()) -} - -#[tauri::command] -pub fn open_data_dir(app: AppHandle) -> Result<(), String> { - app.opener() - .open_path(paths::data_dir().to_string_lossy().to_string(), None::<&str>) - .map_err(|e| e.to_string()) -} - -#[tauri::command] -pub fn autostart_get(app: AppHandle) -> Result { - app.autolaunch().is_enabled().map_err(|e| e.to_string()) -} - -#[tauri::command] -pub fn autostart_set(app: AppHandle, enabled: bool) -> Result { - let mgr = app.autolaunch(); - if enabled { - mgr.enable().map_err(|e| e.to_string())?; - } else { - mgr.disable().map_err(|e| e.to_string())?; - } - mgr.is_enabled().map_err(|e| e.to_string()) -} diff --git a/apps/objectos-one/src-tauri/src/config.rs b/apps/objectos-one/src-tauri/src/config.rs deleted file mode 100644 index e534df5..0000000 --- a/apps/objectos-one/src-tauri/src/config.rs +++ /dev/null @@ -1,136 +0,0 @@ -//! User configuration for ObjectOS One. -//! -//! Model: a flat map of environment variables that get merged into the -//! sidecar process. This intentionally avoids hard-coding "known" config -//! fields — anything the Node server reads from env is configurable. -//! -//! Resolution order (later overrides earlier) for the values handed to the -//! sidecar: -//! 1. Inherited process env (parent shell) -//! 2. `one.config.json` `env` map (user-edited via Settings window) -//! 3. Explicit `OBJECTOS_*` env vars in the parent shell (always win, -//! so a one-off `OBJECTOS_PORT=4001 open -a ObjectOS` overrides the -//! saved config) - -use std::{collections::BTreeMap, fs, path::PathBuf}; - -use serde::{Deserialize, Serialize}; - -pub const CONFIG_FILE: &str = "one.config.json"; - -/// Persisted user configuration. `env` is the only field on purpose — -/// keeping the schema flat means new server-side env vars don't require any -/// shell change. -#[derive(Debug, Clone, Default, Serialize, Deserialize)] -pub struct StoredConfig { - /// Environment variables to pass to the sidecar. BTreeMap so the file - /// stays diff-friendly (sorted keys). - #[serde(default)] - pub env: BTreeMap, -} - -/// Defaults for the data dir when nothing is set. -pub fn default_data_dir() -> PathBuf { - let mut p = dirs::home_dir().expect("home dir"); - p.push(".objectstack"); - p -} - -/// Path to the JSON config file. Lives next to the user data dir so a clean -/// uninstall (rm of data dir) also clears the config. -pub fn config_file_path() -> PathBuf { - let base = std::env::var("OBJECTOS_HOME") - .map(PathBuf::from) - .unwrap_or_else(|_| default_data_dir()); - base.join(CONFIG_FILE) -} - -/// Read the config file. Missing → empty config. Malformed → empty config -/// (with a warning) so a typo never bricks the app. -pub fn load() -> StoredConfig { - let path = config_file_path(); - let Ok(raw) = fs::read_to_string(&path) else { - return StoredConfig::default(); - }; - match serde_json::from_str::(&raw) { - Ok(cfg) => cfg, - Err(e) => { - eprintln!( - "[one] config: ignoring malformed {} ({e}); using defaults", - path.display() - ); - StoredConfig::default() - } - } -} - -/// Persist the StoredConfig to disk (pretty-printed for hand-edits). -pub fn save(cfg: &StoredConfig) -> std::io::Result { - let path = config_file_path(); - if let Some(parent) = path.parent() { - fs::create_dir_all(parent)?; - } - let json = serde_json::to_string_pretty(cfg) - .map_err(|e| std::io::Error::new(std::io::ErrorKind::InvalidData, e))?; - fs::write(&path, json + "\n")?; - Ok(path) -} - -/// Read an effective env var with the same resolution the sidecar will see. -/// Useful for Rust-side decisions (port binding, data dir creation) that -/// must agree with what the Node process gets. -pub fn effective(key: &str) -> Option { - // Parent-shell value wins so debug overrides always work. - if let Ok(v) = std::env::var(key) { - if !v.is_empty() { - return Some(v); - } - } - load().env.get(key).cloned() -} - -/// Convenience: parse an env var as u16. -pub fn effective_u16(key: &str) -> Option { - effective(key).and_then(|s| s.parse().ok()) -} - -/// Effective host the sidecar will bind to. Default: 127.0.0.1. -pub fn effective_host() -> String { - effective("HOST").unwrap_or_else(|| "127.0.0.1".to_string()) -} - -/// Effective data dir. Default: ~/.objectstack. -pub fn effective_data_dir() -> PathBuf { - effective("OBJECTOS_HOME") - .map(PathBuf::from) - .unwrap_or_else(default_data_dir) -} - -/// Snapshot returned to the Settings window. Includes the stored map plus -/// indicators for keys that are currently overridden by the parent shell -/// (so the UI can show "(set in shell — saved value ignored)"). -#[derive(Debug, Clone, Serialize)] -pub struct ConfigSnapshot { - pub env: BTreeMap, - pub shell_overrides: BTreeMap, - pub config_path: PathBuf, -} - -pub fn snapshot() -> ConfigSnapshot { - let stored = load(); - let mut shell_overrides = BTreeMap::new(); - for key in stored.env.keys() { - if let Ok(v) = std::env::var(key) { - if !v.is_empty() { - shell_overrides.insert(key.clone(), v); - } - } - } - ConfigSnapshot { - env: stored.env, - shell_overrides, - config_path: config_file_path(), - } -} - - diff --git a/apps/objectos-one/src-tauri/src/lib.rs b/apps/objectos-one/src-tauri/src/lib.rs deleted file mode 100644 index b77d3e5..0000000 --- a/apps/objectos-one/src-tauri/src/lib.rs +++ /dev/null @@ -1,111 +0,0 @@ -//! ObjectOS One — Tauri shell entry point. -//! -//! See per-module docs for responsibilities. This file only wires the -//! plugins, builds the windows, and registers the cross-cutting handlers. - -mod commands; -mod config; -mod logger; -mod menu; -mod paths; -mod sidecar; -mod updater; -mod windows; - -use std::sync::Mutex; - -use tauri::{RunEvent, WindowEvent}; -use tauri_plugin_autostart::MacosLauncher; - -use crate::sidecar::Sidecar; - -#[cfg_attr(mobile, tauri::mobile_entry_point)] -pub fn run() { - tauri::Builder::default() - .plugin(tauri_plugin_single_instance::init(|app, _argv, _cwd| { - // Second instance: focus the existing window instead of starting again. - windows::focus_main(app); - })) - .plugin(tauri_plugin_window_state::Builder::default().build()) - .plugin(tauri_plugin_opener::init()) - .plugin(tauri_plugin_updater::Builder::new().build()) - .plugin(tauri_plugin_notification::init()) - .plugin(tauri_plugin_dialog::init()) - .plugin(tauri_plugin_autostart::init( - MacosLauncher::LaunchAgent, - None, - )) - .manage(Sidecar(Mutex::new(None))) - .invoke_handler(tauri::generate_handler![ - updater::install_update, - updater::check_now, - commands::get_config_snapshot, - commands::save_config, - commands::restart_runtime, - commands::reveal_logs, - commands::open_data_dir, - commands::autostart_get, - commands::autostart_set, - commands::notify_native, - commands::set_badge, - commands::notif_request_permission, - ]) - .setup(|app| { - let handle = app.handle().clone(); - - // Logger first so every later step can log to disk. - logger::init(paths::log_dir()); - std::panic::set_hook(Box::new(|info| { - logger::log_line("PANIC", &format!("{info}")); - })); - logger::log_line( - "INFO", - &format!("ObjectOS One v{} starting", handle.package_info().version), - ); - - // Build the main window in code so the init script is attached. - if let Err(e) = windows::build_main(&handle) { - logger::log_line("ERROR", &format!("main window failed: {e}")); - } - - // Start sidecar + supervisor. - sidecar::start_or_restart(&handle); - sidecar::start_supervisor(handle.clone()); - - // Tray + app menu. - if let Err(e) = menu::build_tray(&handle) { - logger::log_line("ERROR", &format!("tray setup failed: {e}")); - } - match menu::build_app_menu(&handle) { - Ok(m) => { - if let Err(e) = handle.set_menu(m) { - logger::log_line("ERROR", &format!("set_menu failed: {e}")); - } - handle - .on_menu_event(|app, event| menu::handle_menu_id(app, event.id.as_ref())); - } - Err(e) => logger::log_line("ERROR", &format!("app menu setup failed: {e}")), - } - - // First auto-update probe (delayed). - updater::schedule_update_check(handle.clone()); - - Ok(()) - }) - .on_window_event(|window, event| { - // Close-to-tray for the main window so the runtime keeps serving. - if let WindowEvent::CloseRequested { api, .. } = event { - if window.label() == "main" { - let _ = window.hide(); - api.prevent_close(); - } - } - }) - .build(tauri::generate_context!()) - .expect("error while building tauri application") - .run(|app, event| { - if let RunEvent::ExitRequested { .. } = event { - windows::shutdown(app); - } - }); -} diff --git a/apps/objectos-one/src-tauri/src/logger.rs b/apps/objectos-one/src-tauri/src/logger.rs deleted file mode 100644 index 2a75ebd..0000000 --- a/apps/objectos-one/src-tauri/src/logger.rs +++ /dev/null @@ -1,136 +0,0 @@ -//! Tiny file logger for ObjectOS One. -//! -//! Why roll our own: pulling in `log` + `simplelog` + `chrono` bloats the -//! binary noticeably and we only need three things: -//! -//! 1. One line per event with a coarse timestamp. -//! 2. Daily file rotation (`one-YYYY-MM-DD.log`). -//! 3. A best-effort size cap per file (so a crash-loop can't fill the disk). -//! -//! The logger is process-global; callers go through `log_line()`. - -use std::{ - fs::{File, OpenOptions}, - io::Write, - path::PathBuf, - sync::{Mutex, OnceLock}, - time::{SystemTime, UNIX_EPOCH}, -}; - -/// Hard ceiling per log file. Past this we truncate-and-rotate within the -/// same day rather than chasing weeks of rollover edge cases. -const MAX_FILE_BYTES: u64 = 5 * 1024 * 1024; - -struct Sink { - dir: PathBuf, - /// (date_yyyymmdd, handle). - current: Option<(String, File)>, -} - -static SINK: OnceLock> = OnceLock::new(); - -/// Initialize the logger. Safe to call once; subsequent calls are no-ops. -pub fn init(log_dir: PathBuf) { - let _ = std::fs::create_dir_all(&log_dir); - SINK.get_or_init(|| { - Mutex::new(Sink { - dir: log_dir, - current: None, - }) - }); -} - -/// Resolve the directory the logger is writing to (if initialized). -pub fn log_dir() -> Option { - SINK.get() - .and_then(|m| m.lock().ok().map(|s| s.dir.clone())) -} - -/// Append a single line to today's log file. Mirrors to stderr so `cargo run` -/// users still see output. -pub fn log_line(level: &str, msg: &str) { - let stamp = format_utc_now(); - let line = format!("{stamp} [{level}] {msg}\n"); - eprint!("{line}"); - if let Some(mu) = SINK.get() { - if let Ok(mut sink) = mu.lock() { - let _ = sink.write_line(&line); - } - } -} - -impl Sink { - fn write_line(&mut self, line: &str) -> std::io::Result<()> { - let today = today_yyyymmdd(); - let needs_open = match &self.current { - None => true, - Some((d, _)) if d != &today => true, - Some((_, f)) => f.metadata().map(|m| m.len() > MAX_FILE_BYTES).unwrap_or(false), - }; - if needs_open { - let path = self.dir.join(format!("one-{today}.log")); - // If the file already exceeds the cap (same-day rollover) we - // truncate; otherwise append. Past days always append. - let truncate = path - .metadata() - .map(|m| m.len() > MAX_FILE_BYTES) - .unwrap_or(false); - let mut opts = OpenOptions::new(); - opts.create(true).write(true); - if truncate { - opts.truncate(true); - } else { - opts.append(true); - } - let f = opts.open(&path)?; - self.current = Some((today, f)); - } - if let Some((_, f)) = self.current.as_mut() { - f.write_all(line.as_bytes())?; - } - Ok(()) - } -} - -// --------------------------------------------------------------------------- -// Time helpers (no chrono dependency) -// --------------------------------------------------------------------------- - -fn unix_seconds() -> i64 { - SystemTime::now() - .duration_since(UNIX_EPOCH) - .map(|d| d.as_secs() as i64) - .unwrap_or(0) -} - -fn today_yyyymmdd() -> String { - let (y, m, d, _, _, _) = civil_from_unix(unix_seconds()); - format!("{y:04}-{m:02}-{d:02}") -} - -fn format_utc_now() -> String { - let (y, m, d, h, mi, s) = civil_from_unix(unix_seconds()); - format!("{y:04}-{m:02}-{d:02}T{h:02}:{mi:02}:{s:02}Z") -} - -/// Howard Hinnant's days-from-civil algorithm. Returns (year, month, day, -/// hour, minute, second) in UTC. Pure arithmetic — no system locale. -fn civil_from_unix(secs: i64) -> (i32, u32, u32, u32, u32, u32) { - let days = secs.div_euclid(86_400); - let rem = secs.rem_euclid(86_400); - let h = (rem / 3600) as u32; - let mi = ((rem % 3600) / 60) as u32; - let s = (rem % 60) as u32; - - let z = days + 719_468; - let era = if z >= 0 { z } else { z - 146_096 } / 146_097; - let doe = (z - era * 146_097) as u64; - let yoe = (doe - doe / 1460 + doe / 36_524 - doe / 146_096) / 365; - let y = yoe as i64 + era * 400; - let doy = doe - (365 * yoe + yoe / 4 - yoe / 100); - let mp = (5 * doy + 2) / 153; - let d = (doy - (153 * mp + 2) / 5 + 1) as u32; - let m = (if mp < 10 { mp + 3 } else { mp - 9 }) as u32; - let year = (y + if m <= 2 { 1 } else { 0 }) as i32; - (year, m, d, h, mi, s) -} diff --git a/apps/objectos-one/src-tauri/src/main.rs b/apps/objectos-one/src-tauri/src/main.rs deleted file mode 100644 index 0303b92..0000000 --- a/apps/objectos-one/src-tauri/src/main.rs +++ /dev/null @@ -1,6 +0,0 @@ -// Prevents an extra console window on Windows in release. -#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] - -fn main() { - objectos_one_lib::run(); -} diff --git a/apps/objectos-one/src-tauri/src/menu.rs b/apps/objectos-one/src-tauri/src/menu.rs deleted file mode 100644 index 926ea14..0000000 --- a/apps/objectos-one/src-tauri/src/menu.rs +++ /dev/null @@ -1,220 +0,0 @@ -//! Menu construction (tray context menu + app menu bar). -//! -//! Both surfaces share `handle_menu_id` so the menu IDs stay in sync. macOS -//! reads the first submenu as the "application menu", so that's where the -//! standard About / Settings / Quit items live. - -use std::{ - sync::Mutex, - time::{Duration, Instant}, -}; - -use tauri::{ - menu::{AboutMetadataBuilder, Menu, MenuItem, PredefinedMenuItem, Submenu}, - tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent}, - AppHandle, Wry, -}; -use tauri_plugin_opener::OpenerExt; - -use crate::{logger, paths, sidecar, updater, windows}; - -/// A single menu click is delivered to BOTH the tray's own `on_menu_event` and -/// the global app `on_menu_event`, so every action would otherwise run twice — -/// popping two dialogs, opening two Finder windows, etc. Track the last event -/// and drop a repeat of the same id within a short window. -static LAST_MENU_EVENT: Mutex> = Mutex::new(None); -const MENU_DEDUP_WINDOW: Duration = Duration::from_millis(400); - -fn is_duplicate_event(id: &str) -> bool { - let now = Instant::now(); - let mut guard = LAST_MENU_EVENT.lock().unwrap(); - if let Some((last_id, last_at)) = guard.as_ref() { - if last_id == id && now.duration_since(*last_at) < MENU_DEDUP_WINDOW { - return true; - } - } - *guard = Some((id.to_string(), now)); - false -} - -/// Central dispatch for both menus. -pub fn handle_menu_id(app: &AppHandle, id: &str) { - if is_duplicate_event(id) { - return; - } - match id { - "open" => windows::focus_main(app), - "reload" => windows::reload_main(app), - "restart" => sidecar::start_or_restart(app), - "data" => { - let _ = app - .opener() - .open_path(paths::data_dir().to_string_lossy(), None::<&str>); - } - "logs" => { - if let Some(dir) = logger::log_dir() { - let _ = app - .opener() - .open_path(dir.to_string_lossy().to_string(), None::<&str>); - } - } - "settings" => windows::open_settings(app), - "update" => { - let handle = app.clone(); - tauri::async_runtime::spawn(async move { - updater::check_for_update(&handle, true).await; - }); - } - "quit" => { - sidecar::SHUTTING_DOWN.store(true, std::sync::atomic::Ordering::SeqCst); - sidecar::kill_current(app); - app.exit(0); - } - _ => {} - } -} - -pub fn build_tray(app: &AppHandle) -> tauri::Result<()> { - let open_item = MenuItem::with_id(app, "open", "Open ObjectOS", true, None::<&str>)?; - let reload_item = - MenuItem::with_id(app, "reload", "Reload page", true, Some("CmdOrCtrl+R"))?; - let restart_item = MenuItem::with_id(app, "restart", "Restart runtime", true, None::<&str>)?; - let data_item = MenuItem::with_id(app, "data", "Open data folder", true, None::<&str>)?; - let logs_item = MenuItem::with_id(app, "logs", "Reveal logs", true, None::<&str>)?; - let settings_item = MenuItem::with_id(app, "settings", "Settings…", true, None::<&str>)?; - let update_item = - MenuItem::with_id(app, "update", "Check for updates…", true, None::<&str>)?; - let sep = PredefinedMenuItem::separator(app)?; - let quit_item = MenuItem::with_id(app, "quit", "Quit", true, None::<&str>)?; - - let menu = Menu::with_items( - app, - &[ - &open_item, - &reload_item, - &restart_item, - &data_item, - &logs_item, - &settings_item, - &update_item, - &sep, - &quit_item, - ], - )?; - - TrayIconBuilder::with_id("main-tray") - .icon(app.default_window_icon().unwrap().clone()) - .tooltip("ObjectOS") - .menu(&menu) - .show_menu_on_left_click(false) - .on_menu_event(|app, event| handle_menu_id(app, event.id.as_ref())) - .on_tray_icon_event(|tray, event| { - if let TrayIconEvent::Click { - button: MouseButton::Left, - button_state: MouseButtonState::Up, - .. - } = event - { - windows::focus_main(tray.app_handle()); - } - }) - .build(app)?; - Ok(()) -} - -pub fn build_app_menu(app: &AppHandle) -> tauri::Result> { - let pkg = app.package_info(); - - let about_meta = AboutMetadataBuilder::new() - .name(Some(pkg.name.clone())) - .version(Some(pkg.version.to_string())) - .website(Some("https://objectstack.ai".to_string())) - .copyright(Some("Copyright © ObjectStack".to_string())) - .build(); - let about_item = - PredefinedMenuItem::about(app, Some(&format!("About {}", pkg.name)), Some(about_meta))?; - let update_item = - MenuItem::with_id(app, "update", "Check for updates…", true, None::<&str>)?; - let settings_item = - MenuItem::with_id(app, "settings", "Settings…", true, Some("CmdOrCtrl+,"))?; - let services_item = PredefinedMenuItem::services(app, None)?; - let hide_item = PredefinedMenuItem::hide(app, None)?; - let hide_others_item = PredefinedMenuItem::hide_others(app, None)?; - let quit_item = PredefinedMenuItem::quit(app, None)?; - let sep = || PredefinedMenuItem::separator(app); - - let app_submenu = Submenu::with_items( - app, - &pkg.name, - true, - &[ - &about_item, - &sep()?, - &update_item, - &sep()?, - &settings_item, - &sep()?, - &services_item, - &sep()?, - &hide_item, - &hide_others_item, - &sep()?, - &quit_item, - ], - )?; - - let reload_item = MenuItem::with_id(app, "reload", "Reload Page", true, Some("CmdOrCtrl+R"))?; - let fullscreen_item = PredefinedMenuItem::fullscreen(app, None)?; - let view_submenu = - Submenu::with_items(app, "View", true, &[&reload_item, &fullscreen_item])?; - - // Standard Edit submenu — without this, ⌘C/⌘V/⌘X/⌘Z/⌘A stop working. - let edit_submenu = Submenu::with_items( - app, - "Edit", - true, - &[ - &PredefinedMenuItem::undo(app, None)?, - &PredefinedMenuItem::redo(app, None)?, - &sep()?, - &PredefinedMenuItem::cut(app, None)?, - &PredefinedMenuItem::copy(app, None)?, - &PredefinedMenuItem::paste(app, None)?, - &PredefinedMenuItem::select_all(app, None)?, - ], - )?; - - // Standard Window submenu — minimize / zoom / front. - let window_submenu = Submenu::with_items( - app, - "Window", - true, - &[ - &PredefinedMenuItem::minimize(app, None)?, - &PredefinedMenuItem::maximize(app, None)?, - &sep()?, - &PredefinedMenuItem::close_window(app, None)?, - ], - )?; - - let restart_item = MenuItem::with_id(app, "restart", "Restart Runtime", true, None::<&str>)?; - let data_item = MenuItem::with_id(app, "data", "Open Data Folder", true, None::<&str>)?; - let logs_item = MenuItem::with_id(app, "logs", "Reveal Logs", true, None::<&str>)?; - let runtime_submenu = Submenu::with_items( - app, - "Runtime", - true, - &[&restart_item, &data_item, &logs_item], - )?; - - Menu::with_items( - app, - &[ - &app_submenu, - &edit_submenu, - &view_submenu, - &window_submenu, - &runtime_submenu, - ], - ) -} diff --git a/apps/objectos-one/src-tauri/src/paths.rs b/apps/objectos-one/src-tauri/src/paths.rs deleted file mode 100644 index b34cc23..0000000 --- a/apps/objectos-one/src-tauri/src/paths.rs +++ /dev/null @@ -1,49 +0,0 @@ -//! Filesystem locations used by the shell. - -use std::path::PathBuf; - -use tauri::{AppHandle, Manager}; - -use crate::config; - -/// Effective user data dir (honors `OBJECTOS_HOME`). -pub fn data_dir() -> PathBuf { - config::effective_data_dir() -} - -/// Log directory under the data dir. -pub fn log_dir() -> PathBuf { - data_dir().join("logs") -} - -/// Resolve the staged Node runtime directory. -/// -/// Tries the bundled resource dir first (production), then `CARGO_MANIFEST_DIR/runtime` -/// for `cargo run` / `tauri dev`. -pub fn locate_runtime_dir(app: &AppHandle) -> Result { - if let Ok(res) = app.path().resource_dir() { - let candidate = res.join("runtime"); - if candidate.join("app").join("one.mjs").exists() { - return Ok(candidate); - } - } - if let Some(manifest) = option_env!("CARGO_MANIFEST_DIR") { - let candidate = PathBuf::from(manifest).join("runtime"); - if candidate.join("app").join("one.mjs").exists() { - return Ok(candidate.canonicalize().unwrap_or(candidate)); - } - } - Err("runtime not staged — run `pnpm --filter @objectos/one stage`".into()) -} - -/// Platform-specific Node binary inside the staged runtime. -pub fn node_binary(runtime_dir: &PathBuf) -> PathBuf { - #[cfg(windows)] - { - runtime_dir.join("node.exe") - } - #[cfg(not(windows))] - { - runtime_dir.join("node") - } -} diff --git a/apps/objectos-one/src-tauri/src/sidecar.rs b/apps/objectos-one/src-tauri/src/sidecar.rs deleted file mode 100644 index ae666e3..0000000 --- a/apps/objectos-one/src-tauri/src/sidecar.rs +++ /dev/null @@ -1,353 +0,0 @@ -//! Sidecar (Node) process supervision. -//! -//! Responsibilities: -//! * Pick a free port (honoring saved `PORT`). -//! * Spawn `node one.mjs` with the merged env. -//! * Stream stdout/stderr to both the file log and the splash WebView. -//! * Watch `child.wait()` — if the process exits unexpectedly, re-spawn -//! with exponential backoff. After too many failures we surface a fatal -//! event so the UI can show a "copy logs" button instead of looping -//! forever. -//! * Probe `GET /` until the HTTP server actually answers (not just a TCP -//! accept), then emit `objectos://ready` and navigate the main window. - -use std::{ - io::{BufRead, BufReader, Read, Write}, - net::TcpStream, - process::{Child, Command, Stdio}, - sync::{ - atomic::{AtomicBool, AtomicU16, AtomicU32, Ordering}, - Mutex, - }, - thread, - time::{Duration, Instant}, -}; - -use tauri::{AppHandle, Emitter, Manager}; - -use crate::{config, logger::log_line, paths}; - -/// Process handle for the sidecar; held in Tauri state. -pub struct Sidecar(pub Mutex>); - -/// Port the sidecar is actually listening on (0 = unknown). -pub static PORT: AtomicU16 = AtomicU16::new(0); - -/// Set to true when the user/app is shutting down. The supervisor checks -/// this before respawning so a clean Quit doesn't trigger restart. -pub static SHUTTING_DOWN: AtomicBool = AtomicBool::new(false); - -/// Monotonic counter of consecutive crash restarts; resets to 0 once the -/// sidecar stays alive longer than `STABLE_AFTER`. -static CRASH_COUNT: AtomicU32 = AtomicU32::new(0); - -/// Restart attempts before we give up and ask the user to intervene. -const MAX_CRASH_RESTARTS: u32 = 5; - -/// Sidecar considered "healthy" after this much uptime; resets crash count. -const STABLE_AFTER: Duration = Duration::from_secs(60); - -/// Default port to start scanning from when the user hasn't pinned `PORT`. -/// Deliberately *not* 3000 — that range collides with Next.js, Vite, CRA and -/// most other local dev servers, which both causes frequent fallback churn -/// (a different port every launch) and widens the window for the -/// pick-a-port / bind-a-port race the Node launcher used to have. -const DEFAULT_PORT: u16 = 8787; - -/// Max time we wait for a graceful shutdown before force-killing. -const SHUTDOWN_GRACE: Duration = Duration::from_millis(3000); - -pub fn kill_current(app: &AppHandle) { - let state: tauri::State = app.state(); - let taken = state.0.lock().unwrap().take(); - if let Some(mut child) = taken { - let pid = child.id(); - terminate_tree(pid, &mut child); - } -} - -/// Terminate the sidecar *process tree*. -/// -/// The thing we spawn (`node one.mjs`) is only a launcher — it spawns the real -/// `objectstack serve` as a grandchild. A plain `Child::kill()` sends SIGKILL, -/// which the launcher can't catch or forward, so the server is orphaned and -/// keeps holding the port and the SQLite DB. Instead we signal the whole -/// process group (we spawn the launcher as a group leader, so pgid == pid): -/// SIGTERM first so the launcher forwards a clean shutdown to the server and -/// it releases its resources, then SIGKILL as a fallback if it doesn't exit. -fn terminate_tree(pid: u32, child: &mut Child) { - #[cfg(unix)] - { - // Negative pid targets the entire process group. - unsafe { libc::kill(-(pid as i32), libc::SIGTERM) }; - let deadline = Instant::now() + SHUTDOWN_GRACE; - loop { - match child.try_wait() { - Ok(Some(_)) => return, // exited cleanly - Ok(None) if Instant::now() < deadline => { - thread::sleep(Duration::from_millis(100)); - } - _ => break, - } - } - // Didn't exit in time — force-kill the whole group, then reap. - unsafe { libc::kill(-(pid as i32), libc::SIGKILL) }; - let _ = child.wait(); - } - #[cfg(windows)] - { - // No process groups here; taskkill /T terminates the whole tree. - let _ = Command::new("taskkill") - .args(["/PID", &pid.to_string(), "/T", "/F"]) - .stdout(Stdio::null()) - .stderr(Stdio::null()) - .status(); - let _ = child.wait(); - } -} - -/// Public entry: kill any running sidecar and start a fresh one with the -/// crash counter reset. -pub fn start_or_restart(app: &AppHandle) { - SHUTTING_DOWN.store(false, Ordering::SeqCst); - CRASH_COUNT.store(0, Ordering::SeqCst); - kill_current(app); - log_line("INFO", "(re)starting sidecar"); - spawn_supervised(app); -} - -fn spawn_supervised(app: &AppHandle) { - match spawn_sidecar(app) { - Ok(child) => { - let state: tauri::State = app.state(); - *state.0.lock().unwrap() = Some(child); - } - Err(e) => { - log_line("ERROR", &format!("sidecar spawn failed: {e}")); - let _ = app.emit("objectos://sidecar-fatal", e); - } - } -} - -fn pick_free_port(host: &str, start: u16) -> u16 { - for port in start..start + 100 { - if std::net::TcpListener::bind((host, port)).is_ok() { - return port; - } - } - 0 -} - -/// Probe `/` (or `/healthz` if present) until the server actually responds. -/// A TCP-only check races the HTTP server: the port can be listening before -/// any routes are registered. We do a real GET and look for a status line. -fn wait_until_http_ready(host: &str, port: u16, deadline: Instant) -> bool { - let probe_host = if host == "0.0.0.0" { "127.0.0.1" } else { host }; - while Instant::now() < deadline { - if http_get_ok(probe_host, port, "/healthz") || http_get_ok(probe_host, port, "/") { - return true; - } - thread::sleep(Duration::from_millis(300)); - } - false -} - -fn http_get_ok(host: &str, port: u16, path: &str) -> bool { - let Ok(mut s) = TcpStream::connect_timeout( - &format!("{host}:{port}").parse().unwrap(), - Duration::from_millis(500), - ) else { - return false; - }; - let _ = s.set_read_timeout(Some(Duration::from_millis(800))); - let req = format!( - "GET {path} HTTP/1.0\r\nHost: {host}\r\nConnection: close\r\nUser-Agent: objectos-one-probe\r\n\r\n" - ); - if s.write_all(req.as_bytes()).is_err() { - return false; - } - let mut buf = [0u8; 16]; - let Ok(n) = s.read(&mut buf) else { return false }; - // Accept any HTTP response — even 404 means the server is up. - buf[..n].starts_with(b"HTTP/") -} - -fn spawn_sidecar(app: &AppHandle) -> Result { - let runtime_dir = paths::locate_runtime_dir(app)?; - let node = paths::node_binary(&runtime_dir); - let entry = runtime_dir.join("app").join("one.mjs"); - - if !node.exists() { - return Err(format!("node binary not found at {}", node.display())); - } - if !entry.exists() { - return Err(format!("one.mjs not found at {}", entry.display())); - } - - let stored = config::load(); - let host = config::effective_host(); - let data_dir = config::effective_data_dir(); - std::fs::create_dir_all(&data_dir).ok(); - - let port = match config::effective_u16("PORT") { - Some(fixed) if std::net::TcpListener::bind((host.as_str(), fixed)).is_ok() => fixed, - Some(fixed) => { - log_line( - "WARN", - &format!("PORT {fixed} on {host} in use; auto-selecting"), - ); - pick_free_port(&host, DEFAULT_PORT) - } - None => pick_free_port(&host, DEFAULT_PORT), - }; - if port == 0 { - return Err("no free port available".into()); - } - PORT.store(port, Ordering::SeqCst); - - log_line("INFO", &format!("starting sidecar on {host}:{port}")); - let _ = app.emit("objectos://log", format!("starting sidecar on {host}:{port}")); - - let mut cmd = Command::new(&node); - cmd.arg(&entry).stdout(Stdio::piped()).stderr(Stdio::piped()); - for (k, v) in &stored.env { - cmd.env(k, v); - } - cmd.env("OBJECTOS_HOME", &data_dir) - .env("PORT", port.to_string()) - .env("HOST", &host) - .env("OBJECTOS_NO_OPEN", "1") - // We already picked a free port above and the readiness probe below - // watches *this exact* port. Tell the launcher not to re-select its - // own port: if it bound a different one, the probe would wait out its - // full deadline on a dead port and the UI would hang on the splash. - .env("OBJECTOS_MANAGED", "1"); - - // Run the launcher in its own process group (pgid == its pid) so shutdown - // can signal the whole tree — launcher + the `objectstack serve` - // grandchild — at once instead of orphaning the server. See terminate_tree. - #[cfg(unix)] - { - use std::os::unix::process::CommandExt; - cmd.process_group(0); - } - - let mut child = cmd.spawn().map_err(|e| format!("spawn node: {e}"))?; - - if let Some(stdout) = child.stdout.take() { - let app = app.clone(); - thread::spawn(move || { - for line in BufReader::new(stdout).lines().map_while(Result::ok) { - log_line("node", &line); - let _ = app.emit("objectos://log", line); - } - }); - } - if let Some(stderr) = child.stderr.take() { - let app = app.clone(); - thread::spawn(move || { - for line in BufReader::new(stderr).lines().map_while(Result::ok) { - log_line("node!", &line); - let _ = app.emit("objectos://log", line); - } - }); - } - - // Readiness probe — waits for actual HTTP response, not just TCP open. - { - let app = app.clone(); - let host = host.clone(); - thread::spawn(move || { - let deadline = Instant::now() + Duration::from_secs(120); - if wait_until_http_ready(&host, port, deadline) { - let url = format!("http://localhost:{port}/_console/"); - let _ = app.emit("objectos://ready", &url); - if let Some(win) = app.get_webview_window("main") { - match url.parse() { - Ok(parsed) => { - if let Err(e) = win.navigate(parsed) { - log_line("WARN", &format!("navigate failed: {e}")); - let _ = win.eval(&format!("window.location.replace('{url}')")); - } - } - Err(e) => log_line("ERROR", &format!("bad url: {e}")), - } - } - } else { - log_line( - "ERROR", - &format!("timeout: server did not respond on port {port}"), - ); - let _ = app.emit( - "objectos://log", - format!("timeout: server did not respond on port {port}"), - ); - } - }); - } - - Ok(child) -} - -/// Spawn a thread that watches the child PID; respawns on unexpected exit. -/// -/// Tracking the child is awkward because `Child::wait` consumes the handle -/// and `try_wait` requires `&mut`. We poll the Mutex every few hundred ms. -pub fn start_supervisor(app: AppHandle) { - thread::spawn(move || { - let mut last_spawn_at = Instant::now(); - loop { - thread::sleep(Duration::from_millis(500)); - if SHUTTING_DOWN.load(Ordering::SeqCst) { - return; - } - let exited = { - let state: tauri::State = app.state(); - let mut guard = state.0.lock().unwrap(); - match guard.as_mut() { - None => false, - Some(child) => matches!(child.try_wait(), Ok(Some(_))), - } - }; - if !exited { - if last_spawn_at.elapsed() > STABLE_AFTER { - CRASH_COUNT.store(0, Ordering::SeqCst); - } - continue; - } - if SHUTTING_DOWN.load(Ordering::SeqCst) { - return; - } - let n = CRASH_COUNT.fetch_add(1, Ordering::SeqCst) + 1; - log_line( - "WARN", - &format!("sidecar exited unexpectedly (restart #{n})"), - ); - let _ = app.emit( - "objectos://log", - format!("sidecar exited; restarting (attempt {n}/{MAX_CRASH_RESTARTS})"), - ); - - // Clear the dead handle. - { - let state: tauri::State = app.state(); - *state.0.lock().unwrap() = None; - } - - if n > MAX_CRASH_RESTARTS { - log_line("FATAL", "too many crash restarts; giving up"); - let _ = app.emit( - "objectos://sidecar-fatal", - "Runtime kept crashing; check logs.".to_string(), - ); - return; - } - - // Exponential backoff: 1s, 2s, 4s, 8s, 16s, capped. - let backoff = Duration::from_secs(1u64 << (n - 1).min(4)); - thread::sleep(backoff); - spawn_supervised(&app); - last_spawn_at = Instant::now(); - } - }); -} diff --git a/apps/objectos-one/src-tauri/src/updater.rs b/apps/objectos-one/src-tauri/src/updater.rs deleted file mode 100644 index 44f5d1d..0000000 --- a/apps/objectos-one/src-tauri/src/updater.rs +++ /dev/null @@ -1,284 +0,0 @@ -//! Tauri updater integration. -//! -//! Two paths into this module: -//! * Background `schedule_update_check` — runs 30s after launch. Stays -//! silent on the no-news path; on the update-available path it emits -//! an event the splash WebView listens for and falls back to an OS -//! notification when the splash is already gone. -//! * Menu / tray "Check for updates…" — `check_now` command. Always -//! surfaces *some* visible feedback (info / confirm / error dialog) -//! because the user explicitly asked for a result. We use the native -//! dialog plugin instead of OS notifications: dialogs always render -//! regardless of macOS notification permissions and regardless of -//! which WebView is currently loaded in the main window. - -use std::{ - sync::{ - atomic::{AtomicBool, AtomicU64, Ordering}, - Arc, - }, - time::Duration, -}; - -use serde::Serialize; -use tauri::{AppHandle, Emitter}; -use tauri_plugin_dialog::{DialogExt, MessageDialogButtons, MessageDialogKind}; -use tauri_plugin_notification::NotificationExt; -use tauri_plugin_updater::UpdaterExt; - -use crate::{logger::log_line, sidecar}; - -pub static UPDATE_PENDING: AtomicBool = AtomicBool::new(false); - -/// True while an update check is running. Guards against a second click (or a -/// background check) starting an overlapping check — which is what let the -/// "Check for updates…" item fire repeatedly with no feedback. -static CHECKING: AtomicBool = AtomicBool::new(false); - -/// True while a download+install is running. This is the guard that makes it -/// impossible to launch two installs at once (the cause of multiple installer -/// windows on a slow network). -static INSTALLING: AtomicBool = AtomicBool::new(false); - -/// RAII guard over an atomic flag: acquires it via compare-exchange and clears -/// it on drop, so any early return / error path releases it for a later retry. -struct FlagGuard(&'static AtomicBool); - -impl FlagGuard { - /// `Some(guard)` only if we flipped the flag false→true; `None` if it was - /// already held (i.e. an operation is already in flight). - fn acquire(flag: &'static AtomicBool) -> Option { - flag.compare_exchange(false, true, Ordering::SeqCst, Ordering::SeqCst) - .ok() - .map(|_| FlagGuard(flag)) - } -} - -impl Drop for FlagGuard { - fn drop(&mut self) { - self.0.store(false, Ordering::SeqCst); - } -} - -#[derive(Serialize, Clone)] -pub struct UpdateInfo { - pub version: String, - pub current: String, - pub notes: Option, -} - -/// Kick off the first auto-check 30s after launch (gives the sidecar room). -pub fn schedule_update_check(app: AppHandle) { - tauri::async_runtime::spawn(async move { - tokio::time::sleep(Duration::from_secs(30)).await; - check_for_update(&app, false).await; - }); -} - -/// Run an update check. -/// -/// `verbose=true` means the user explicitly clicked "Check for updates…", -/// so we always show a native dialog with the outcome. The background check -/// (verbose=false) stays silent on the no-news path. -pub async fn check_for_update(app: &AppHandle, verbose: bool) { - // Only one check at a time. A second click (or a background check racing a - // manual one) is ignored rather than stacking another network call + dialog. - let Some(_check_guard) = FlagGuard::acquire(&CHECKING) else { - log_line("INFO", "update check already running; ignoring duplicate request"); - return; - }; - // Give the user immediate feedback that the click registered. - if verbose { - let _ = app.emit("objectos://update-checking", true); - } - - let updater = match app.updater() { - Ok(u) => u, - Err(e) => { - log_line("WARN", &format!("updater unavailable: {e}")); - if verbose { - let _ = app.emit("objectos://update-checking", false); - show_error(app, &e.to_string()); - } - return; - } - }; - let outcome = updater.check().await; - // Clear the "checking" indicator before surfacing the result. - if verbose { - let _ = app.emit("objectos://update-checking", false); - } - match outcome { - Ok(Some(update)) => { - UPDATE_PENDING.store(true, Ordering::SeqCst); - let info = UpdateInfo { - version: update.version.clone(), - current: update.current_version.clone(), - notes: update.body.clone(), - }; - log_line( - "INFO", - &format!("update available: {} → {}", info.current, info.version), - ); - if verbose { - // User-initiated: the native confirm dialog below is the - // single, authoritative prompt. Do NOT emit the in-app card - // event here — if the splash WebView is still loaded it would - // surface a second prompt alongside the dialog. - prompt_install(app, &info).await; - } else { - // Background: surface the update silently via the in-app card - // (the splash WebView listens for this) plus a best-effort OS - // notification. If the user hasn't granted notification - // permission the splash event is the only signal — acceptable - // since the single background check fires 30s after launch - // while the splash is still up. - let _ = app.emit("objectos://update-available", &info); - notify( - app, - &format!("ObjectOS {} available", info.version), - "Open the app and choose Install & Restart, or use the menu.", - ); - } - } - Ok(None) => { - log_line("INFO", "up to date"); - if verbose { - show_info( - app, - "You're up to date", - &format!( - "ObjectOS {} is the latest version.", - app.package_info().version - ), - ); - } - } - Err(e) => { - log_line("WARN", &format!("update check failed: {e}")); - if verbose { - show_error(app, &e.to_string()); - } - } - } -} - -fn notify(app: &AppHandle, title: &str, body: &str) { - let _ = app - .notification() - .builder() - .title(title) - .body(body) - .show(); -} - -fn show_info(app: &AppHandle, title: &str, body: &str) { - app.dialog() - .message(body) - .title(title) - .kind(MessageDialogKind::Info) - .buttons(MessageDialogButtons::Ok) - .show(|_| {}); -} - -fn show_error(app: &AppHandle, body: &str) { - app.dialog() - .message(format!("Update check failed:\n\n{body}")) - .title("Update check failed") - .kind(MessageDialogKind::Error) - .buttons(MessageDialogButtons::Ok) - .show(|_| {}); -} - -/// Confirm-to-install dialog. Triggered from the verbose path so the user -/// always sees *something* after clicking the menu item. -async fn prompt_install(app: &AppHandle, info: &UpdateInfo) { - let body = match &info.notes { - Some(notes) if !notes.is_empty() => format!( - "A new version of ObjectOS is available.\n\n\ - Current: {}\nNew: {}\n\n{}", - info.current, - info.version, - notes.chars().take(400).collect::(), - ), - _ => format!( - "A new version of ObjectOS is available.\n\n\ - Current: {}\nNew: {}", - info.current, info.version, - ), - }; - - let handle = app.clone(); - app.dialog() - .message(body) - .title(format!("ObjectOS {} available", info.version)) - .kind(MessageDialogKind::Info) - .buttons(MessageDialogButtons::OkCancelCustom( - "Install & Restart".into(), - "Later".into(), - )) - .show(move |confirmed| { - if confirmed { - tauri::async_runtime::spawn(async move { - if let Err(e) = run_install(&handle).await { - log_line("WARN", &format!("install failed: {e}")); - show_error(&handle, &e); - } - }); - } - }); -} - -#[tauri::command] -pub async fn check_now(app: AppHandle) { - check_for_update(&app, true).await; -} - -#[tauri::command] -pub async fn install_update(app: AppHandle) -> Result<(), String> { - run_install(&app).await -} - -/// Shared install path used by both the IPC command (called from the -/// splash UI) and the verbose-check confirm dialog. -async fn run_install(app: &AppHandle) -> Result<(), String> { - // Single install ever. A second invocation (double-click, or both the - // splash card and the injected banner firing) is a no-op while one runs — - // this is what prevents two downloads / two installer windows. - let Some(_install_guard) = FlagGuard::acquire(&INSTALLING) else { - log_line("INFO", "install already in progress; ignoring duplicate request"); - return Ok(()); - }; - - let updater = app.updater().map_err(|e| e.to_string())?; - let update = updater - .check() - .await - .map_err(|e| e.to_string())? - .ok_or_else(|| "no update available".to_string())?; - let _ = app.emit("objectos://update-installing", &update.version); - - // Stream download progress to the UI so the user can see it's working and - // doesn't click again. - let app_progress = app.clone(); - let downloaded = Arc::new(AtomicU64::new(0)); - let counter = downloaded.clone(); - update - .download_and_install( - move |chunk, total| { - let so_far = counter.fetch_add(chunk as u64, Ordering::SeqCst) + chunk as u64; - let pct = total.map(|t| if t > 0 { ((so_far * 100) / t).min(100) } else { 0 }); - let _ = app_progress.emit( - "objectos://update-progress", - serde_json::json!({ "downloaded": so_far, "total": total, "pct": pct }), - ); - }, - || {}, - ) - .await - .map_err(|e| e.to_string())?; - // Make sure the sidecar is gone before the relaunch swaps the binary. - sidecar::SHUTTING_DOWN.store(true, Ordering::SeqCst); - sidecar::kill_current(app); - app.restart(); -} diff --git a/apps/objectos-one/src-tauri/src/windows.rs b/apps/objectos-one/src-tauri/src/windows.rs deleted file mode 100644 index 9082583..0000000 --- a/apps/objectos-one/src-tauri/src/windows.rs +++ /dev/null @@ -1,98 +0,0 @@ -//! Window builders + lifecycle helpers. -//! -//! Main window is created in code (not tauri.conf.json) so we can attach an -//! initialization script that forwards update events to the user even after -//! the splash page is navigated away. - -use tauri::{ - AppHandle, Emitter, Manager, WebviewUrl, WebviewWindowBuilder, -}; -use url::Url; - -use crate::{logger::log_line, sidecar}; - -/// Bootstrap script injected into every page the main webview loads. -/// -/// It listens for `objectos://update-available` / `objectos://update-installing` -/// and renders a non-intrusive bottom-right toast — so the user sees update -/// prompts even after navigating to the running runtime (which would -/// otherwise discard the splash page's listeners). -const UPDATE_BANNER_JS: &str = include_str!("../assets/update-banner.js"); - -/// Mirrors the Console's in-app inbox to native OS notifications when the -/// window is backgrounded (and keeps the dock badge in sync). Injected into -/// every page; it no-ops outside the Console and outside Tauri. -const NOTIFICATION_BRIDGE_JS: &str = include_str!("../assets/notification-bridge.js"); - -pub fn build_main(app: &AppHandle) -> tauri::Result<()> { - let app_handle = app.clone(); - // Combine the injected bootstrap scripts into one so both reliably run on - // every page the webview loads. - let bootstrap = format!("{UPDATE_BANNER_JS}\n{NOTIFICATION_BRIDGE_JS}"); - let _win = WebviewWindowBuilder::new(app, "main", WebviewUrl::App("index.html".into())) - .title("ObjectOS") - .inner_size(1280.0, 820.0) - .min_inner_size(960.0, 600.0) - .resizable(true) - .center() - .initialization_script(bootstrap.as_str()) - .on_navigation(move |url| { - if is_external_link(url) { - use tauri_plugin_opener::OpenerExt; - let _ = app_handle.opener().open_url(url.as_str(), None::<&str>); - return false; - } - true - }) - .build()?; - Ok(()) -} - -fn is_external_link(url: &Url) -> bool { - // Allow the splash (tauri://, asset:// etc.) and local runtime. - let host = url.host_str().unwrap_or(""); - let scheme = url.scheme(); - if scheme == "http" || scheme == "https" { - return !(host == "localhost" || host == "127.0.0.1"); - } - // tauri:// / asset:// / data: all stay in-app. - false -} - -pub fn focus_main(app: &AppHandle) { - if let Some(win) = app.get_webview_window("main") { - let _ = win.show(); - let _ = win.unminimize(); - let _ = win.set_focus(); - } -} - -pub fn reload_main(app: &AppHandle) { - if let Some(win) = app.get_webview_window("main") { - let _ = win.eval("window.location.reload()"); - } -} - -pub fn open_settings(app: &AppHandle) { - if let Some(win) = app.get_webview_window("settings") { - let _ = win.show(); - let _ = win.unminimize(); - let _ = win.set_focus(); - return; - } - let builder = WebviewWindowBuilder::new(app, "settings", WebviewUrl::App("prefs.html".into())) - .title("ObjectOS Settings") - .inner_size(640.0, 560.0) - .min_inner_size(520.0, 420.0) - .resizable(true); - if let Err(e) = builder.build() { - log_line("WARN", &format!("settings window failed: {e}")); - let _ = app.emit("objectos://log", format!("settings window failed: {e}")); - } -} - -/// Final shutdown — kill sidecar and exit. -pub fn shutdown(app: &AppHandle) { - sidecar::SHUTTING_DOWN.store(true, std::sync::atomic::Ordering::SeqCst); - sidecar::kill_current(app); -} diff --git a/apps/objectos-one/src-tauri/tauri.conf.json b/apps/objectos-one/src-tauri/tauri.conf.json deleted file mode 100644 index 8c43f9c..0000000 --- a/apps/objectos-one/src-tauri/tauri.conf.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "$schema": "https://schema.tauri.app/config/2", - "productName": "ObjectOS", - "version": "10.2.0", - "identifier": "ai.objectstack.objectos", - "build": { - "frontendDist": "../src", - "devUrl": null, - "beforeDevCommand": null, - "beforeBuildCommand": null - }, - "app": { - "withGlobalTauri": true, - "windows": [], - "security": { - "csp": null - } - }, - "bundle": { - "active": true, - "createUpdaterArtifacts": true, - "targets": [ - "dmg", - "app", - "msi", - "nsis", - "deb", - "appimage" - ], - "icon": [ - "icons/32x32.png", - "icons/128x128.png", - "icons/128x128@2x.png", - "icons/icon.icns", - "icons/icon.ico" - ], - "resources": [ - "runtime" - ], - "category": "DeveloperTool", - "shortDescription": "ObjectOS local runtime", - "longDescription": "Run an ObjectStack environment locally. Bundles a Node runtime, the @objectos/server process and a compiled artifact.", - "macOS": { - "minimumSystemVersion": "11.0", - "entitlements": null, - "signingIdentity": null, - "providerShortName": null - }, - "windows": { - "certificateThumbprint": null, - "digestAlgorithm": "sha256", - "timestampUrl": "http://timestamp.digicert.com", - "nsis": { - "installerIcon": "icons/icon.ico", - "installMode": "perMachine" - } - }, - "linux": { - "deb": { - "depends": [ - "libwebkit2gtk-4.1-0", - "libgtk-3-0" - ] - } - } - }, - "plugins": { - "updater": { - "active": true, - "endpoints": [ - "https://github.com/objectstack-ai/objectos/releases/latest/download/latest.json" - ], - "dialog": false, - "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IDE1NzgxRUMwMkQxQTZGQjYKUldTMmJ4b3R3QjU0RloyK21lYW4xUDVuU1dTM2tEWXpZU2RGellsZ28rMUtLWVh6eFdmbFp3M20K" - } - } -} diff --git a/apps/objectos-one/src/index.html b/apps/objectos-one/src/index.html deleted file mode 100644 index 430ae77..0000000 --- a/apps/objectos-one/src/index.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - ObjectOS - - - -
    - -
    Starting local runtime…
    -
    - - -
    -
    - - - diff --git a/apps/objectos-one/src/prefs.html b/apps/objectos-one/src/prefs.html deleted file mode 100644 index 2935ca8..0000000 --- a/apps/objectos-one/src/prefs.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - - - ObjectOS Settings - - - -
    -

    Environment variables

    -

    Any variable here is passed to the ObjectOS server on next start. Reserved keys (PORT, HOST, OBJECTOS_HOME) are honored — others are forwarded as-is.

    -
    -
    -
    - KEY - VALUE - -
    -
    - - -
    - Quick add: - - - - -
    - -
    - -
    -
    -
    - -
    - - -
    -
    -
    - - - - diff --git a/apps/objectos/README.md b/apps/objectos/README.md deleted file mode 100644 index 5624722..0000000 --- a/apps/objectos/README.md +++ /dev/null @@ -1,56 +0,0 @@ -# `apps/objectos` - -The reference **ObjectOS runtime distribution** — a thin wrapper that -boots an `@objectstack/runtime` kernel from either: - -- a compiled artifact pulled from the Artifact API (cloud mode), or -- a local `dist/objectstack.json` file (offline / air-gapped mode). - -This package intentionally contains **no protocol code**. All schemas, -the kernel, drivers and official plugins come from `@objectstack/*` -packages on npm. Enterprise plugins maintained in this monorepo live under `../../packages/` -and are composed into the runtime stack returned by -[`createStandaloneStack`](https://www.npmjs.com/package/@objectstack/runtime) -in [`objectstack.config.ts`](./objectstack.config.ts). - -See the repository [README](../../README.md) for positioning and the -[ObjectStack North Star](https://docs.objectstack.ai/concepts/north-star) -for the architectural rationale. - -## ObjectOS One distribution - -`one.mjs` is a thin launcher that turns this app into a "download & -double‑click" experience (the **ObjectOS One** bundle). It picks an -OS‑appropriate per‑user data directory, points the runtime at the -bundled `dist/objectstack.json`, finds a free port and opens the -default browser. - -Local dev: - -```bash -pnpm --filter @objectos/server one -``` - -Build a portable bundle (Node runtime + production deps + launcher), -zipped per target platform: - -```bash -# Defaults to the host platform. -scripts/build-one.sh - -# Cross‑build the Node binary for another target (native modules still -# need to be rebuilt on that OS): -scripts/build-one.sh --target linux-x64 -scripts/build-one.sh --target win-x64 -``` - -Output lives in `dist/one/ObjectOS---.zip`. -End users unzip and run `ObjectOS.sh` (macOS / Linux) or -`ObjectOS.cmd` (Windows). Per‑user data lives in `~/.objectstack` -on all platforms (override with `OBJECTOS_HOME`). - -For the richer Tauri-based installer (DMG / MSI / AppImage with a -native shell + tray icon), see [`apps/objectos-one`](../objectos-one/). - -Override with `OBJECTOS_HOME`, `PORT`, or any standard `OS_*` env -variable (e.g. `OS_CLOUD_URL` to leave offline mode). diff --git a/apps/objectos/objectstack.config.ts b/apps/objectos/objectstack.config.ts deleted file mode 100644 index 53e52c0..0000000 --- a/apps/objectos/objectstack.config.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * ObjectOS — Reference Runtime Distribution - * - * This is the single source of truth for the runtime image shipped to - * end customers. It pulls every protocol implementation from the - * `@objectstack/*` packages on npm; this repository deliberately - * contains no protocol code of its own. - * - * As of @objectstack 8.0 the runtime ships a single-tenant *standalone* - * stack (`createStandaloneStack`); the 7.x cloud-connected, hostname-routed - * multi-tenant wrapper (`createObjectOSStack`) has been removed from the - * public runtime API. A cloud deployment now points `OS_ARTIFACT_FILE` at a - * published artifact URL — `artifactPath` accepts `http(s)://` sources and - * is fetched lazily by the loader. - * - * Boot is governed by environment variables (all optional — sensible - * defaults are applied by `createStandaloneStack`): - * - * OS_ARTIFACT_FILE — Path or URL to a compiled `dist/objectstack.json` - * (default: /dist/objectstack.json) - * OS_ENVIRONMENT_ID — Environment/project to serve (legacy: OS_PROJECT_ID; - * default: proj_local) - * OS_BUSINESS_DB_URL — Per-project business database (legacy: OS_DATABASE_URL; - * default: file-backed sqlite under the ObjectStack home) - * - * Artifact hot-reload follows `NODE_ENV` (on outside production). - * - * NOTE — marketplace + Console SPA are intentionally NOT wired here. The - * `objectstack` CLI (dev / serve / start, which every entry point — Docker and - * the ObjectOS One desktop via one.mjs — routes through) auto-provisions them - * on top of this standalone stack: it injects marketplace browse/install + - * cloud-connection + runtime-config from `@objectstack/cloud-connection` - * (gated on `resolveCloudUrl()`; `OS_CLOUD_URL=off` → fully offline, nothing - * mounts) and serves the `@objectstack/console` SPA at `/_console/`. Both - * packages are declared as dependencies so this distribution pins their - * versions. Re-adding them to `plugins` below would double-mount; only wire - * them explicitly here if a future framework drops the CLI auto-injection - * (ADR-0006 Phase 4). - */ - -import { createStandaloneStack } from '@objectstack/runtime'; - -const artifactFile = process.env.OS_ARTIFACT_FILE; -const environmentId = - process.env.OS_ENVIRONMENT_ID ?? process.env.OS_PROJECT_ID; -const databaseUrl = - process.env.OS_BUSINESS_DB_URL ?? process.env.OS_DATABASE_URL; - -const stack = await createStandaloneStack({ - artifactPath: artifactFile, - environmentId, - databaseUrl, -}); - -// @objectstack workaround (12.1, still required as of 14.7): -// createStandaloneStack hard-codes `api.projectResolution: 'none'` for the -// single-tenant standalone case, but the protocol validator's -// `api.projectResolution` enum only accepts required|optional|auto (the field -// is optional). Since standalone runs with `enableProjectScoping: false`, -// drop the field so compile/validate passes. -const { projectResolution: _drop, ...api } = stack.api as { - projectResolution?: string; -} & Record; - -export default { ...stack, api }; diff --git a/apps/objectos/one.mjs b/apps/objectos/one.mjs deleted file mode 100644 index 12daed3..0000000 --- a/apps/objectos/one.mjs +++ /dev/null @@ -1,205 +0,0 @@ -#!/usr/bin/env node -/** - * ObjectOS One launcher. - * - * Boots `objectstack serve` with sensible defaults for a local, - * single-user "double-click to run" experience: - * - * - Uses an OS-appropriate per-user data directory for the SQLite - * business DB and the artifact cache. - * - Defaults to the bundled `dist/objectstack.json` artifact (offline - * mode) when no cloud URL is configured. - * - Picks a free port if the requested one is busy. - * - Opens the default browser once the server is ready. - * - * Designed to be the entry point for a portable distributable - * (`scripts/build-one.sh`). - */ - -import { spawn } from 'node:child_process'; -import { createRequire } from 'node:module'; -import { createServer } from 'node:net'; -import { homedir, platform } from 'node:os'; -import { dirname, join, resolve } from 'node:path'; -import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'; -import { randomBytes } from 'node:crypto'; -import { fileURLToPath } from 'node:url'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); -const APP_NAME = 'ObjectOS'; - -// Default port to start from when PORT isn't pinned. Deliberately off 3000 — -// that range collides with Next.js/Vite/CRA and most local dev servers, so a -// quieter default means a stable, predictable URL across launches. -const DEFAULT_PORT = 8787; - -function userDataDir() { - if (process.env.OBJECTOS_HOME) return process.env.OBJECTOS_HOME; - return join(homedir(), '.objectstack'); -} - -function legacyDataDir() { - const home = homedir(); - switch (platform()) { - case 'darwin': - return join(home, 'Library', 'Application Support', APP_NAME); - case 'win32': - return join(process.env.APPDATA ?? join(home, 'AppData', 'Roaming'), APP_NAME); - default: - return join(process.env.XDG_DATA_HOME ?? join(home, '.local', 'share'), 'objectos'); - } -} - -function ensureDir(p) { - if (!existsSync(p)) mkdirSync(p, { recursive: true }); - return p; -} - -function isPortFree(port) { - return new Promise((resolveTry) => { - const srv = createServer(); - srv.once('error', () => resolveTry(false)); - srv.once('listening', () => srv.close(() => resolveTry(true))); - srv.listen(port, '127.0.0.1'); - }); -} - -async function findFreePort(preferred) { - if (await isPortFree(preferred)) return preferred; - for (let p = preferred + 1; p < preferred + 50; p++) { - if (await isPortFree(p)) return p; - } - return 0; -} - -/** - * Resolve the port to serve on. - * - * Two modes: - * - Managed (OBJECTOS_MANAGED=1): the ObjectOS One shell already picked a - * free port, set PORT, and is probing/navigating to *that exact* port. - * We must honor it verbatim — re-selecting our own would strand the UI on - * a port nobody serves. If it was taken in the race window since the shell - * checked it, exit so the shell's supervisor respawns us with a fresh one. - * - Standalone (plain `node one.mjs`): pick a free port ourselves, falling - * forward from the preferred/default if it's busy. - */ -async function resolvePort() { - const preferred = Number(process.env.PORT ?? DEFAULT_PORT); - if (process.env.OBJECTOS_MANAGED === '1') { - if (await isPortFree(preferred)) return preferred; - console.error( - `[one] managed port ${preferred} no longer free; exiting for supervisor restart`, - ); - process.exit(75); // EX_TEMPFAIL — supervised restart will pick a new port - } - const port = await findFreePort(preferred); - if (!port) { - console.error('[one] no free port available'); - process.exit(1); - } - if (port !== preferred) { - console.log(`[one] port ${preferred} busy → using ${port}`); - } - return port; -} - -function openBrowser(url) { - const cmd = - platform() === 'darwin' ? 'open' - : platform() === 'win32' ? 'cmd' - : 'xdg-open'; - const args = platform() === 'win32' ? ['/c', 'start', '""', url] : [url]; - try { - spawn(cmd, args, { detached: true, stdio: 'ignore' }).unref(); - } catch (err) { - console.warn(`[one] could not open browser: ${err.message}`); - } -} - -async function main() { - const dataDir = ensureDir(userDataDir()); - - const legacy = legacyDataDir(); - if (!process.env.OBJECTOS_HOME && legacy !== dataDir && existsSync(legacy) && !existsSync(join(dataDir, 'data'))) { - console.warn(`[one] found legacy data at ${legacy}`); - console.warn(`[one] not migrated automatically — set OBJECTOS_HOME='${legacy}' to keep using it,`); - console.warn(`[one] or move it with: mv "${legacy}"/* "${dataDir}"/`); - } - - const cacheDir = ensureDir(join(dataDir, 'cache')); - const storageDir = ensureDir(join(dataDir, 'uploads')); - const dbPath = join(ensureDir(join(dataDir, 'data')), 'standalone.db'); - - const bundledArtifact = resolve(__dirname, 'dist', 'objectstack.json'); - - // Defaults — env wins so users can still override. - process.env.OS_CACHE_DIR ??= cacheDir; - process.env.OS_DATABASE_URL ??= `file:${dbPath}`; - process.env.OS_BUSINESS_DB_URL ??= `file:${dbPath}`; - process.env.OS_STORAGE_ROOT ??= storageDir; - if (!process.env.OS_CLOUD_URL && !process.env.OS_ARTIFACT_FILE && existsSync(bundledArtifact)) { - process.env.OS_ARTIFACT_FILE = bundledArtifact; - } - process.env.OS_PROJECT_ID ??= 'proj_local'; - - // Persist a per-install AUTH_SECRET so AuthPlugin is enabled (required - // for /_account/register and /_account/login). 64 bytes hex = 512 bit. - if (!process.env.AUTH_SECRET) { - const secretFile = join(dataDir, 'auth.secret'); - if (existsSync(secretFile)) { - process.env.AUTH_SECRET = readFileSync(secretFile, 'utf8').trim(); - } else { - const secret = randomBytes(64).toString('hex'); - writeFileSync(secretFile, secret, { mode: 0o600 }); - process.env.AUTH_SECRET = secret; - console.log(`[one] generated AUTH_SECRET → ${secretFile}`); - } - } - - const port = await resolvePort(); - process.env.PORT = String(port); - - const url = `http://localhost:${port}`; - - console.log(`[one] data dir : ${dataDir}`); - console.log(`[one] artifact : ${process.env.OS_ARTIFACT_FILE ?? '(cloud)'}`); - console.log(`[one] starting ObjectOS on ${url}`); - - // Resolve the objectstack CLI bin from this app's node_modules so the - // portable bundle works regardless of cwd. - const require = createRequire(import.meta.url); - const cliPkgJson = require.resolve('@objectstack/cli/package.json'); - const cliRoot = dirname(cliPkgJson); - const cliBin = join(cliRoot, 'bin', 'run.js'); - - const child = spawn(process.execPath, [cliBin, 'serve', '--port', String(port)], { - cwd: __dirname, - stdio: 'inherit', - env: process.env, - }); - - let opened = false; - const openOnce = () => { - if (opened) return; - opened = true; - if (process.env.OBJECTOS_NO_OPEN === '1') return; - setTimeout(() => openBrowser(url), 800); - }; - - // Best-effort: open after a short delay; the serve command prints - // its own ready banner so we don't need to parse stdout. - openOnce(); - - const shutdown = (sig) => { - if (!child.killed) child.kill(sig); - }; - process.on('SIGINT', () => shutdown('SIGINT')); - process.on('SIGTERM', () => shutdown('SIGTERM')); - child.on('exit', (code) => process.exit(code ?? 0)); -} - -main().catch((err) => { - console.error('[one] fatal:', err); - process.exit(1); -}); diff --git a/apps/objectos/package.json b/apps/objectos/package.json deleted file mode 100644 index 97e9609..0000000 --- a/apps/objectos/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "@objectos/server", - "version": "6.0.0", - "private": true, - "license": "Apache-2.0", - "description": "ObjectOS — the reference runtime distribution of the ObjectStack framework.", - "type": "module", - "scripts": { - "dev": "objectstack dev", - "build": "objectstack compile", - "start": "objectstack serve --port ${PORT:-8787}", - "one": "node one.mjs", - "type-check": "tsc --noEmit" - }, - "dependencies": { - "@objectstack/cli": "14.7.0", - "@objectstack/cloud-connection": "14.7.0", - "@objectstack/console": "14.7.0", - "@objectstack/core": "14.7.0", - "@objectstack/driver-memory": "14.7.0", - "@objectstack/driver-sql": "14.7.0", - "@objectstack/metadata": "14.7.0", - "@objectstack/objectql": "14.7.0", - "@objectstack/runtime": "14.7.0", - "@objectstack/spec": "14.7.0", - "pg": "^8.0.0" - }, - "devDependencies": { - "@types/node": "^25.9.1", - "typescript": "^5.7.0" - } -} diff --git a/apps/objectos/tsconfig.json b/apps/objectos/tsconfig.json deleted file mode 100644 index daf4493..0000000 --- a/apps/objectos/tsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "dist", - "rootDir": "." - }, - "include": ["objectstack.config.ts", "src/**/*.ts"] -} diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index 589176a..0000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -# syntax=docker/dockerfile:1.7 -# -# ObjectOS runtime image -# ----------------------------------------------------------------------- -# Multi-stage build producing a minimal Node 22 runtime that boots -# `apps/objectos` against either an Artifact API or a local artifact file. -# ----------------------------------------------------------------------- - -ARG NODE_VERSION=22 -ARG PNPM_VERSION=10.28.2 - -# ---------- builder ---------- -FROM node:${NODE_VERSION}-alpine AS builder -WORKDIR /workspace - -RUN corepack enable && corepack prepare pnpm@${PNPM_VERSION} --activate - -COPY pnpm-lock.yaml pnpm-workspace.yaml package.json turbo.json tsconfig.base.json ./ -COPY apps/objectos/package.json apps/objectos/ -COPY packages ./packages - -RUN pnpm install --frozen-lockfile --filter "@objectos/server..." - -COPY apps/objectos ./apps/objectos -RUN pnpm --filter @objectos/server build - -# ---------- runtime ---------- -FROM node:${NODE_VERSION}-alpine AS runtime -WORKDIR /app - -RUN corepack enable && corepack prepare pnpm@${PNPM_VERSION} --activate \ - && apk add --no-cache tini - -COPY --from=builder /workspace/node_modules ./node_modules -COPY --from=builder /workspace/apps/objectos ./apps/objectos -COPY --from=builder /workspace/packages ./packages -COPY --from=builder /workspace/package.json /workspace/pnpm-lock.yaml /workspace/pnpm-workspace.yaml ./ - -RUN mkdir -p /var/cache/objectos /var/lib/objectos /artifacts -ENV NODE_ENV=production \ - OS_CACHE_DIR=/var/cache/objectos \ - PORT=3000 - -EXPOSE 3000 -HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \ - CMD wget -qO- "http://127.0.0.1:${PORT}/" >/dev/null || exit 1 -ENTRYPOINT ["/sbin/tini", "--"] -CMD ["pnpm", "--filter", "@objectos/server", "start"] diff --git a/docker/artifacts/.gitkeep b/docker/artifacts/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml deleted file mode 100644 index f3875e8..0000000 --- a/docker/docker-compose.yml +++ /dev/null @@ -1,41 +0,0 @@ -# =========================================================================== -# ⚠️ REQUIRED in production (image runs with NODE_ENV=production): -# - OS_SECRET_KEY : 32-byte hex, stable across restarts/nodes. Without it -# the container REFUSES TO START (LocalCryptoProvider -# guards sys_secret / datasource credentials). It is NOT -# auto-generated on purpose — a minted-then-lost key would -# make every encrypted value undecryptable. -# - OS_AUTH_SECRET : session signing secret; plugin-auth refuses a temporary -# dev secret in production. -# Generate each once and keep them: openssl rand -hex 32 -# Set them in a .env file next to this compose (or export in the shell): -# OS_SECRET_KEY=... OS_AUTH_SECRET=... -# =========================================================================== -services: - objectos: - build: - context: .. - dockerfile: docker/Dockerfile - image: ghcr.io/objectstack-ai/objectos:dev - container_name: objectos - restart: unless-stopped - ports: - - "${OBJECTOS_PORT:-3000}:3000" - environment: - OS_CLOUD_URL: ${OS_CLOUD_URL:-} - OS_PROJECT_ID: ${OS_PROJECT_ID:-} - OS_ARTIFACT_FILE: ${OS_ARTIFACT_FILE:-/artifacts/objectstack.json} - OS_BUSINESS_DB_URL: ${OS_BUSINESS_DB_URL:-file:/var/lib/objectos/data.db} - OS_SECRET_KEY: ${OS_SECRET_KEY:-} # REQUIRED — empty = container won't boot (see header) - OS_AUTH_SECRET: ${OS_AUTH_SECRET:-} # REQUIRED in production (see header) - OS_CORS_ORIGIN: ${OS_CORS_ORIGIN:-} - OS_CACHE_DIR: /var/cache/objectos - PORT: 3000 - volumes: - - objectos-cache:/var/cache/objectos - - objectos-data:/var/lib/objectos - - ./artifacts:/artifacts:ro - -volumes: - objectos-cache: - objectos-data: diff --git a/e2e/README.md b/e2e/README.md deleted file mode 100644 index e535975..0000000 --- a/e2e/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# End-to-end tests - -Black-box smoke tests against the published ObjectOS image: -container starts, healthcheck responds, artifact loads, sample REST -endpoint serves rows. TODO. diff --git a/examples/cloud-connected/README.md b/examples/cloud-connected/README.md deleted file mode 100644 index 6d80f07..0000000 --- a/examples/cloud-connected/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Cloud-connected example - -Boot ObjectOS against the ObjectStack Cloud Artifact API and a -managed Turso / Postgres business DB. TODO. diff --git a/examples/self-hosted-sqlite/README.md b/examples/self-hosted-sqlite/README.md deleted file mode 100644 index 415b179..0000000 --- a/examples/self-hosted-sqlite/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Self-hosted SQLite example - -Minimal `docker run` recipe that boots ObjectOS against a local -compiled artifact and a single-file SQLite business DB. TODO. diff --git a/helm/README.md b/helm/README.md deleted file mode 100644 index 1a2aac5..0000000 --- a/helm/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Helm chart for ObjectOS will live here. -# Tracked separately; see docs/install/kubernetes.mdx (TODO). diff --git a/package.json b/package.json index 704ce45..2c0eee0 100644 --- a/package.json +++ b/package.json @@ -14,17 +14,9 @@ "type-check": "turbo run type-check --continue", "clean": "turbo run clean && rm -rf node_modules", "docs:dev": "turbo run dev --filter=@objectos/docs", - "docs:build": "turbo run build --filter=@objectos/docs", - "objectos:dev": "turbo run dev --filter=@objectos/server", - "objectos:build": "turbo run build --filter=@objectos/server", - "one:dev": "pnpm --filter @objectos/one dev", - "one:build": "pnpm --filter @objectos/one build", - "smoke:runtime": "bash scripts/smoke-runtime.sh", - "release": "pnpm run build && changeset publish", - "changeset": "changeset" + "docs:build": "turbo run build --filter=@objectos/docs" }, "devDependencies": { - "@changesets/cli": "^2.29.0", "turbo": "^2.5.0", "typescript": "^5.7.0" }, diff --git a/packages/README.md b/packages/README.md deleted file mode 100644 index ae5dd91..0000000 --- a/packages/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Enterprise plugins live here. -# -# Each package is a standalone pnpm workspace member published under -# the `@objectos/plugin-*` scope. They are composed into the runtime -# manifest from `apps/objectos/objectstack.config.ts`. -# -# Naming: `plugin-sso-saml`, `plugin-scim`, `plugin-audit-export`, -# `plugin-ha-scheduler`, ... diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index abe93cc..934c8b5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,9 +8,6 @@ importers: .: devDependencies: - '@changesets/cli': - specifier: ^2.29.0 - version: 2.31.0(@types/node@25.9.1) turbo: specifier: ^2.5.0 version: 2.9.14 @@ -82,55 +79,6 @@ importers: specifier: ^4.50.0 version: 4.95.0 - apps/objectos: - dependencies: - '@objectstack/cli': - specifier: 14.7.0 - version: 14.7.0(@aws-sdk/client-s3@3.984.0)(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(better-sqlite3@12.11.1)(kysely@0.29.2)(mongodb@7.5.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@objectstack/cloud-connection': - specifier: 14.7.0 - version: 14.7.0(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(better-sqlite3@12.11.1)(kysely@0.29.2)(mongodb@7.5.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@objectstack/console': - specifier: 14.7.0 - version: 14.7.0 - '@objectstack/core': - specifier: 14.7.0 - version: 14.7.0 - '@objectstack/driver-memory': - specifier: 14.7.0 - version: 14.7.0 - '@objectstack/driver-sql': - specifier: 14.7.0 - version: 14.7.0(pg@8.22.0) - '@objectstack/metadata': - specifier: 14.7.0 - version: 14.7.0 - '@objectstack/objectql': - specifier: 14.7.0 - version: 14.7.0 - '@objectstack/runtime': - specifier: 14.7.0 - version: 14.7.0(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(better-sqlite3@12.11.1)(kysely@0.29.2)(mongodb@7.5.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@objectstack/spec': - specifier: 14.7.0 - version: 14.7.0 - pg: - specifier: ^8.0.0 - version: 8.22.0 - devDependencies: - '@types/node': - specifier: ^25.9.1 - version: 25.9.1 - typescript: - specifier: ^5.7.0 - version: 5.9.3 - - apps/objectos-one: - devDependencies: - '@tauri-apps/cli': - specifier: ^2.1.0 - version: 2.11.2 - packages: '@alloc/quick-lru@5.2.0': @@ -199,10 +147,6 @@ packages: resolution: {integrity: sha512-hJA62OeBKUQT68DD2gDyhOqJxZxycqg8wLxbqjgqSzYttCMSDL9tiAQ9abgekBYNHudbJosm9sWOEbmCDfpX2A==} engines: {node: '>= 10'} - '@authenio/xml-encryption@2.0.2': - resolution: {integrity: sha512-cTlrKttbrRHEw3W+0/I609A2Matj5JQaRvfLtEIGZvlN0RaPi+3ANsMeqAyCAVlH/lUIW2tmtBlSMni74lcXeg==} - engines: {node: '>=12'} - '@aws-crypto/crc32@5.2.0': resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} engines: {node: '>=16.0.0'} @@ -389,170 +333,6 @@ packages: resolution: {integrity: sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==} engines: {node: '>=18.0.0'} - '@babel/runtime@7.29.2': - resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} - engines: {node: '>=6.9.0'} - - '@better-auth/core@1.6.23': - resolution: {integrity: sha512-beEhOs0uVeOxYOZKUfIEBd/nQV2Bd4/6wyLxZ0OFkn6CMTK2Vi+hXuZLnyPBeB6RdHpebEoJWiHqwHxBIxgPDQ==} - peerDependencies: - '@better-auth/utils': 0.4.2 - '@better-fetch/fetch': 1.3.1 - '@cloudflare/workers-types': '>=4' - '@opentelemetry/api': ^1.9.0 - better-call: 1.3.7 - jose: ^6.1.0 - kysely: ^0.28.5 || ^0.29.0 - nanostores: ^1.0.1 - peerDependenciesMeta: - '@cloudflare/workers-types': - optional: true - '@opentelemetry/api': - optional: true - - '@better-auth/drizzle-adapter@1.6.23': - resolution: {integrity: sha512-2+/PTVfIP9E7iz6af8TB3lhnowHUj9ljC66kECmHaFEdUqPgzHoWux9epotKwO7XDg2ui4ttWQ8CMeNFLvQeKQ==} - peerDependencies: - '@better-auth/core': ^1.6.23 - '@better-auth/utils': 0.4.2 - drizzle-orm: ^0.45.2 - peerDependenciesMeta: - drizzle-orm: - optional: true - - '@better-auth/kysely-adapter@1.6.23': - resolution: {integrity: sha512-zbNJsMbG09exfkGyvFqBLLqWoMPAUWjxCuUnEK5AsjbYoZeIjj/QGZgdf4CapVWryKxjA9Q6Jlr6fbiPpC3VAg==} - peerDependencies: - '@better-auth/core': ^1.6.23 - '@better-auth/utils': 0.4.2 - kysely: ^0.28.17 || ^0.29.0 - peerDependenciesMeta: - kysely: - optional: true - - '@better-auth/memory-adapter@1.6.23': - resolution: {integrity: sha512-krIiR0pIVkaKlAzm690n5bcMW4NGbqeMg0HQSD9fz/KcQF/eWLqcq9gG/BhHTj2i/y96qH+W5JWPmaSOS5iTgQ==} - peerDependencies: - '@better-auth/core': ^1.6.23 - '@better-auth/utils': 0.4.2 - - '@better-auth/mongo-adapter@1.6.23': - resolution: {integrity: sha512-7+QdevitGlKBbP6JbiSk5SBnzPsKV/mDrQBGBn8hwByQLeJwqpqbuBPw7ZI8vzUlFfAAnyFiqwP3Eb8mxnp7pA==} - peerDependencies: - '@better-auth/core': ^1.6.23 - '@better-auth/utils': 0.4.2 - mongodb: ^6.0.0 || ^7.0.0 - peerDependenciesMeta: - mongodb: - optional: true - - '@better-auth/oauth-provider@1.6.23': - resolution: {integrity: sha512-1sDN+N4Sztmpk8ziCU3MXicxOTfvYoHvHvhJMQ7PSfr+pLXnYN+dJFI9S3zBRwstmTeJx/OhRIZWrwFJ0TgBnA==} - peerDependencies: - '@better-auth/core': ^1.6.23 - '@better-auth/utils': 0.4.2 - '@better-fetch/fetch': 1.3.1 - better-auth: ^1.6.23 - better-call: 1.3.7 - - '@better-auth/prisma-adapter@1.6.23': - resolution: {integrity: sha512-2qSdzidq4tkb1eS5TTqb4Nzg0mdZWm3Qky9SYeXeb8PpVQbC2sxqJhEM5mK7y12uU6I8hc64wO9f7AFVNL+6UQ==} - peerDependencies: - '@better-auth/core': ^1.6.23 - '@better-auth/utils': 0.4.2 - '@prisma/client': ^5.0.0 || ^6.0.0 || ^7.0.0 - prisma: ^5.0.0 || ^6.0.0 || ^7.0.0 - peerDependenciesMeta: - '@prisma/client': - optional: true - prisma: - optional: true - - '@better-auth/scim@1.7.0-rc.1': - resolution: {integrity: sha512-pcnliU2eewYq2SF4cRDn1XvQ2I7+WhufoDv5lx9yH7fmrfsU6mYQpZX3mu2Fj/AFCHauCI7Ld617pnz5+yTtOw==} - peerDependencies: - '@better-auth/core': ^1.7.0-rc.1 - '@better-auth/utils': 0.4.2 - better-auth: ^1.7.0-rc.1 - better-call: 1.3.7 - - '@better-auth/sso@1.6.23': - resolution: {integrity: sha512-nAO25rH25SL2t/BkK/iPqGsnhwI7tOGxktVupuyIBysju13QpV4tJjytnSbVnnDwPo5p6M4Ld6WF83XCEJYCzg==} - peerDependencies: - '@better-auth/core': ^1.6.23 - '@better-auth/utils': 0.4.2 - '@better-fetch/fetch': 1.3.1 - better-auth: ^1.6.23 - better-call: 1.3.7 - - '@better-auth/telemetry@1.6.23': - resolution: {integrity: sha512-/R2Kb+z2BpDOOWwVHqOk+c0VNpuwfCv4Hp5Yr9003WIZPax/zyNraGLB9CFE8qF2gZW8Dsz419k4I8CPrGzpDA==} - peerDependencies: - '@better-auth/core': ^1.6.23 - '@better-auth/utils': 0.4.2 - '@better-fetch/fetch': 1.3.1 - - '@better-auth/utils@0.4.2': - resolution: {integrity: sha512-AUxrvu+HaaODsUyzDxFgwd/8RZ1yZaYo42LXKSrU2oGgR38pS1ij8nqQKNgtTWoYGpNevNXtCfgTy6loHveW9A==} - - '@better-fetch/fetch@1.3.1': - resolution: {integrity: sha512-ABkD1WhyfPZprKRQI3bhATjeiFuNWC9PXhfGWqL+sg/gKrM977oFrYkdb4msM3hgUGonr7KlOsOFT5TU2rht9g==} - - '@changesets/apply-release-plan@7.1.1': - resolution: {integrity: sha512-9qPCm/rLx/xoOFXIHGB229+4GOL76S4MC+7tyOuTsR6+1jYlfFDQORdvwR5hDA6y4FL2BPt3qpbcQIS+dW85LA==} - - '@changesets/assemble-release-plan@6.0.10': - resolution: {integrity: sha512-rSDcqdJ9KbVyjpBIuCidhvZNIiVt1XaIYp73ycVQRIA5n/j6wQaEk0ChRLMUQ1vkxZe51PTQ9OIhbg6HQMW45A==} - - '@changesets/changelog-git@0.2.1': - resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} - - '@changesets/cli@2.31.0': - resolution: {integrity: sha512-AhI4enNTgHu2IZr6K4WZyf0EPch4XVMn1yOMFmCD9gsfBGqMYaHXls5HyDv6/CL5axVQABz68eG30eCtbr2wFg==} - hasBin: true - - '@changesets/config@3.1.4': - resolution: {integrity: sha512-pf0bvD/v6WI2cRlZ6hzpjtZdSlXDXMAJ+Iz7xfFzV4ZxJ8OGGAON+1qYc99ZPrijnt4xp3VGG7eNvAOGS24V1Q==} - - '@changesets/errors@0.2.0': - resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - - '@changesets/get-dependents-graph@2.1.4': - resolution: {integrity: sha512-ZsS00x6WvmHq3sQv8oCMwL0f/z3wbXCVuSVTJwCnnmbC/iBdNJGFx1EcbMG4PC6sXRyH69liM4A2WKXzn/kRPg==} - - '@changesets/get-release-plan@4.0.16': - resolution: {integrity: sha512-2K5Om6CrMPm45rtvckfzWo7e9jOVCKLCnXia5eUPaURH7/LWzri7pK1TycdzAuAtehLkW7VPbWLCSExTHmiI6g==} - - '@changesets/get-version-range-type@0.4.0': - resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - - '@changesets/git@3.0.4': - resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} - - '@changesets/logger@0.1.1': - resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} - - '@changesets/parse@0.4.3': - resolution: {integrity: sha512-ZDmNc53+dXdWEv7fqIUSgRQOLYoUom5Z40gmLgmATmYR9NbL6FJJHwakcCpzaeCy+1D0m0n7mT4jj2B/MQPl7A==} - - '@changesets/pre@2.0.2': - resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} - - '@changesets/read@0.6.7': - resolution: {integrity: sha512-D1G4AUYGrBEk8vj8MGwf75k9GpN6XL3wg8i42P2jZZwFLXnlr2Pn7r9yuQNbaMCarP7ZQWNJbV6XLeysAIMhTA==} - - '@changesets/should-skip-package@0.1.2': - resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} - - '@changesets/types@4.1.0': - resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} - - '@changesets/types@6.1.0': - resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} - - '@changesets/write@0.4.0': - resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} - '@cloudflare/kv-asset-handler@0.5.0': resolution: {integrity: sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg==} engines: {node: '>=22.0.0'} @@ -631,12 +411,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.28.1': - resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/android-arm64@0.25.4': resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} engines: {node: '>=18'} @@ -655,12 +429,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.28.1': - resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm@0.25.4': resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} engines: {node: '>=18'} @@ -679,12 +447,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.28.1': - resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-x64@0.25.4': resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} engines: {node: '>=18'} @@ -703,12 +465,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.28.1': - resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/darwin-arm64@0.25.4': resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} engines: {node: '>=18'} @@ -727,12 +483,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.28.1': - resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-x64@0.25.4': resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} engines: {node: '>=18'} @@ -751,12 +501,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.28.1': - resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/freebsd-arm64@0.25.4': resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} engines: {node: '>=18'} @@ -775,12 +519,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.28.1': - resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-x64@0.25.4': resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} engines: {node: '>=18'} @@ -799,12 +537,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.28.1': - resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/linux-arm64@0.25.4': resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} engines: {node: '>=18'} @@ -823,12 +555,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.28.1': - resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm@0.25.4': resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} engines: {node: '>=18'} @@ -847,12 +573,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.28.1': - resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-ia32@0.25.4': resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} engines: {node: '>=18'} @@ -871,12 +591,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.28.1': - resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-loong64@0.25.4': resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} engines: {node: '>=18'} @@ -895,12 +609,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.28.1': - resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-mips64el@0.25.4': resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} engines: {node: '>=18'} @@ -919,12 +627,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.28.1': - resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-ppc64@0.25.4': resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} engines: {node: '>=18'} @@ -943,12 +645,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.28.1': - resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-riscv64@0.25.4': resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} engines: {node: '>=18'} @@ -967,12 +663,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.28.1': - resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-s390x@0.25.4': resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} engines: {node: '>=18'} @@ -991,12 +681,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.28.1': - resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-x64@0.25.4': resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} engines: {node: '>=18'} @@ -1015,12 +699,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.28.1': - resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/netbsd-arm64@0.25.4': resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} engines: {node: '>=18'} @@ -1039,12 +717,6 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.28.1': - resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-x64@0.25.4': resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} engines: {node: '>=18'} @@ -1063,12 +735,6 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.28.1': - resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/openbsd-arm64@0.25.4': resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} engines: {node: '>=18'} @@ -1087,12 +753,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.28.1': - resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-x64@0.25.4': resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} engines: {node: '>=18'} @@ -1111,12 +771,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.28.1': - resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openharmony-arm64@0.27.3': resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} engines: {node: '>=18'} @@ -1129,12 +783,6 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.28.1': - resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - '@esbuild/sunos-x64@0.25.4': resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} engines: {node: '>=18'} @@ -1153,12 +801,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.28.1': - resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/win32-arm64@0.25.4': resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} engines: {node: '>=18'} @@ -1177,12 +819,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.28.1': - resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-ia32@0.25.4': resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} engines: {node: '>=18'} @@ -1201,12 +837,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.28.1': - resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-x64@0.25.4': resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} engines: {node: '>=18'} @@ -1225,18 +855,6 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.28.1': - resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@fast-csv/format@4.3.5': - resolution: {integrity: sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==} - - '@fast-csv/parse@4.3.6': - resolution: {integrity: sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==} - '@floating-ui/core@1.7.5': resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} @@ -1263,18 +881,6 @@ packages: tailwindcss: optional: true - '@hono/node-server@1.19.14': - resolution: {integrity: sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==} - engines: {node: '>=18.14.1'} - peerDependencies: - hono: ^4 - - '@hono/node-server@2.0.8': - resolution: {integrity: sha512-GuCWzLxwg218fy1JaHculFsdcuY12hxit83V+algozTPnwhNjLrRL/Alg9OYjLZLoUZ1rw/S4CdTMsnkSKCmFA==} - engines: {node: '>=20'} - peerDependencies: - hono: ^4 - '@img/colour@1.1.0': resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} @@ -1428,34 +1034,10 @@ packages: cpu: [x64] os: [win32] - '@inquirer/external-editor@1.0.3': - resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} - engines: {node: '>=18'} - peerDependencies: - '@types/node': '>=18' - peerDependenciesMeta: - '@types/node': - optional: true - '@isaacs/cliui@9.0.0': resolution: {integrity: sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==} engines: {node: '>=18'} - '@jitl/quickjs-ffi-types@0.32.0': - resolution: {integrity: sha512-v9T+GQpmk43VDJ7d72sf0Nexhk+ArvtUihW27dy7lqAl0zBObFKtSBBIm5RBjwIhE8VwsPPm9PNuvPvNqLWUEg==} - - '@jitl/quickjs-wasmfile-debug-asyncify@0.32.0': - resolution: {integrity: sha512-EX8zbXwGqCgAE764M+qvkHtyXDi/FUoMBea0JnES7vCM3P7a2+EOZOjGv85wtZ2sJhI1oJ+nekmqpOODFDY+hw==} - - '@jitl/quickjs-wasmfile-debug-sync@0.32.0': - resolution: {integrity: sha512-LeYWrPGC1uNCTBWvibo3ZLJj0CSVNYUXvJpXMCmuQ5Sap2cCACc3uvGvYV4homHHBAzfw5akoTqMMS4YFRtw+Q==} - - '@jitl/quickjs-wasmfile-release-asyncify@0.32.0': - resolution: {integrity: sha512-3oSwPfja12ICz4aIblB58cuY8JlEq5Txt8Cut4VLo+LH47QN+mzCnSgnbB03hWzg1LBcc+VyyI9UOag7a1NF+Q==} - - '@jitl/quickjs-wasmfile-release-sync@0.32.0': - resolution: {integrity: sha512-BKNDI/TPBfGlLNGYpLrhcDGXmIk4xHm4MRAisOBnOzpXVn9HZWsfmMAc9WMBrAHjvvds6HOikKeaOBKdPdpVrg==} - '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1478,33 +1060,9 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@manypkg/find-root@1.1.0': - resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} - - '@manypkg/get-packages@1.1.3': - resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} - - '@marcbachmann/cel-js@8.0.0': - resolution: {integrity: sha512-oaTrAziGr3zDLFiMt/yLU3nZuRMawyWQB5X1a0I7s9eGy3JYzX9l8ZXXHyMd64nzbeVFZTewuUShwsZQdK6UCA==} - engines: {node: '>=20.19.0'} - hasBin: true - '@mdx-js/mdx@3.1.1': resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} - '@modelcontextprotocol/sdk@1.29.0': - resolution: {integrity: sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==} - engines: {node: '>=18'} - peerDependencies: - '@cfworker/json-schema': ^4.1.1 - zod: ^3.25 || ^4.0 - peerDependenciesMeta: - '@cfworker/json-schema': - optional: true - - '@mongodb-js/saslprep@1.4.11': - resolution: {integrity: sha512-o9rAHc0IpIjuPSxRutWpE1F62x7n+4mVS4rCNHkzhIUMQcc18bb6xEq5wd2NdN0WjepIyXIppRshYI2kQDOZVA==} - '@next/env@16.2.6': resolution: {integrity: sha512-gd8HoHN4ufj73WmR3JmVolrpJR47ILK6LouP5xElPglaVxir6e1a7VzvTvDWkOoPXT9rkkTzyCxBu4yeZfZwcw==} @@ -1564,10 +1122,6 @@ packages: resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} engines: {node: ^14.21.3 || >=16} - '@noble/ciphers@2.2.0': - resolution: {integrity: sha512-Z6pjIZ/8IJcCGzb2S/0Px5J81yij85xASuk1teLNeg75bfT07MV3a/O2Mtn1I2se43k3lkVEcFaR10N4cgQcZA==} - engines: {node: '>= 20.19.0'} - '@noble/curves@1.9.7': resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==} engines: {node: ^14.21.3 || >=16} @@ -1576,10 +1130,6 @@ packages: resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} engines: {node: ^14.21.3 || >=16} - '@noble/hashes@2.2.0': - resolution: {integrity: sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg==} - engines: {node: '>= 20.19.0'} - '@nodable/entities@2.2.0': resolution: {integrity: sha512-9uGyhaQavEUMC8AIddIjau4NsnsXhou+j5sBAGojCM1oxmQpVKTWR/9JxABD6UAv12vpIms55fPZKFQEhG6uBg==} @@ -1595,306 +1145,53 @@ packages: resolution: {integrity: sha512-csY4qcR7jUwiZmkreNTJhcypQfts2aY2CK+a+rXgXUImZiZiySh0FvwHjRnlqWKvg+y6ae9lHFzDRjBTmqlTIQ==} engines: {node: '>=16.0.0'} - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@objectstack/account@14.7.0': - resolution: {integrity: sha512-2ld+QIUpSd7XV41nWy/4GEn6CJ9B0NZyW6083c4fdcTtSos6gdo3yn7FuG0rIj031ifThhMvZZL3VUERbTdurA==} - engines: {node: '>=18.0.0'} + '@opennextjs/aws@4.0.2': + resolution: {integrity: sha512-nXQPT8GZDV+NWMJV9mD/Ywxyo+tCZfFvrR6jpEOYNcxK/AqiEDlJzPybGOrHUDWAYdR1b6tmh+MoR3VbqIao3w==} + hasBin: true + peerDependencies: + next: '>=15.5.18 <16 || >=16.2.6' - '@objectstack/cli@14.7.0': - resolution: {integrity: sha512-r2ialZ0fIwWLNLk617hxWT0cX8qE+QmlmcyCPIVm1CmbZkjiv1KCB7kRVRjkzo2MOtJfhjfou27SpQtB68Xz0A==} - engines: {node: '>=18.0.0'} + '@opennextjs/cloudflare@1.19.11': + resolution: {integrity: sha512-spZ7YsZZW9q/OJStaZlJhuklYKei5e2tNQ7PMi3DDSJ7x7167m7EYYHQZfVN5gwJBDkMR2jUDW88oHjnGz4YYw==} hasBin: true + peerDependencies: + next: '>=15.5.18 <16 || >=16.2.6' + wrangler: ^4.86.0 - '@objectstack/client@14.7.0': - resolution: {integrity: sha512-9PoH0XfFSzaNzWM23KSQqjErJxWCv1QzFL50ni2uIQ3g4TQq0r196RXilbY8VQ1uCSHwZDwBsD4oijX/WiQODw==} - engines: {node: '>=18.0.0'} + '@opentelemetry/api@1.9.1': + resolution: {integrity: sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==} + engines: {node: '>=8.0.0'} - '@objectstack/cloud-connection@14.7.0': - resolution: {integrity: sha512-ubSNgaM58yDTcUFvg/J5p7bgqh6z7zC1c9JY7bvRVUMxW7jdf7WTpF6MlH6XjtRti/aP4Ry2XJvS+Dwoafwqag==} - engines: {node: '>=18.0.0'} + '@orama/orama@3.1.18': + resolution: {integrity: sha512-a61ljmRVVyG5MC/698C8/FfFDw5a8LOIvyOLW5fztgUXqUpc1jOfQzOitSCbge657OgXXThmY3Tk8fpiDb4UcA==} + engines: {node: '>= 20.0.0'} - '@objectstack/console@14.7.0': - resolution: {integrity: sha512-jq4QFzBDweg36pJIOvTBWCnr33ebH5UqEVcQMr1XsrN7W2u4SVLjrCgEkIkpMKvoNtUsOhaARkm5GasjT8Vl+w==} + '@poppinss/colors@4.1.6': + resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} - '@objectstack/core@14.7.0': - resolution: {integrity: sha512-2PcAS+rbZL2DK95IOBeIiqtysL0j1SrWtJrgDBaVjQETqmZRwdKUB/eZSc/oh/h9KcrcMDc0NCAIRzyCM08Xqg==} - engines: {node: '>=18.0.0'} + '@poppinss/dumper@0.6.5': + resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==} - '@objectstack/driver-memory@14.7.0': - resolution: {integrity: sha512-xW2M+T1+W7dgkZoyc1Whmpib3AxbOQMpt0MS7dIa6QACL2WQzxSofRv5m9YhPwN2zqm5jBMrLp7HvlBnk9bLjw==} - engines: {node: '>=18.0.0'} + '@poppinss/exception@1.2.3': + resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} - '@objectstack/driver-mongodb@14.7.0': - resolution: {integrity: sha512-QOMrpaw8LXuKdABbiqgHHAR+qQ0cV/aXT45fUsPrnjxrcAcGgpPYhtrrwA/HkRxvqfJx0Cml6/ofXkgX/fHhCw==} - engines: {node: '>=18.0.0'} + '@radix-ui/number@1.1.1': + resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} - '@objectstack/driver-sql@14.7.0': - resolution: {integrity: sha512-nFJLsAsMPRQbPzbq8HX89MxzPyeIyqzRQKJF120c7U+Ldf88RgL0LblCpY5JKf7cVpm6Dj46WSy1e+lcJH7QnQ==} - engines: {node: '>=18.0.0'} + '@radix-ui/primitive@1.1.3': + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} + + '@radix-ui/react-accordion@1.2.12': + resolution: {integrity: sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==} peerDependencies: - mysql2: ^3.0.0 - pg: ^8.0.0 - sqlite3: ^5.0.0 - tedious: ^18.0.0 + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: - mysql2: - optional: true - pg: - optional: true - sqlite3: + '@types/react': optional: true - tedious: - optional: true - - '@objectstack/driver-sqlite-wasm@14.7.0': - resolution: {integrity: sha512-hZFNQZGLtPBp/YYOOqScJD4/ZZmtT/Aiat4XoFSciojEtK2VMiwhxICX3Eaxxc3Z1GCa9J90a8O7qQi2f0yPXg==} - engines: {node: '>=18.0.0'} - - '@objectstack/formula@14.7.0': - resolution: {integrity: sha512-ZBrQiy+RQUxnC3cDRmUAIknx6+FA0Pb3XM/aYq6hZGRLHpy2qZNN1PDnYLAWXbggeQnCzTlDAI34HpU3ypzSIA==} - - '@objectstack/lint@14.7.0': - resolution: {integrity: sha512-i+I8uRS9lYus3V9Nh0mb2wwa60IxuIU3SdnrQrJBXh/6/wAkg2EHM2vMIugcrG8HtNCUQcD3u8eTMp73F0MNEg==} - engines: {node: '>=18.0.0'} - - '@objectstack/mcp@14.7.0': - resolution: {integrity: sha512-jg0NVGaQSK8tDH6NOqUI00NUgz1uImxTXBMzVjhGfjko7ejpasVdxYZujJ8pq6U7EbRzpd/hnDhYNLhEjOVVxA==} - engines: {node: '>=18.0.0'} - - '@objectstack/metadata-core@14.7.0': - resolution: {integrity: sha512-hHhF3S7bgcmPLSumroPlCHz7YGogu6Aw5+r+Gpyg6Dij59rb/VODWyQk2XXPPZnBZoerSo8rD+IOCJ9sjhBIbg==} - engines: {node: '>=18.0.0'} - peerDependencies: - vitest: ^4.0.0 - peerDependenciesMeta: - vitest: - optional: true - - '@objectstack/metadata-fs@14.7.0': - resolution: {integrity: sha512-d4VkI0cuez9h9bwqec8P6n+5/bLysdo4Qm28cqwZes445qXdj+riOf/oPd+lrS792W66/Zso/S6gbO/KGMgRDQ==} - engines: {node: '>=18.0.0'} - - '@objectstack/metadata-protocol@14.7.0': - resolution: {integrity: sha512-Pj2hDD9IERvpZ6oT/namEYUWeISJGHaIQJ3A36hP2KpyS5eEu4O2uTWhhpzUoD98M/HDMl7ZmcxkCvLP+JnyVA==} - engines: {node: '>=18.0.0'} - - '@objectstack/metadata@14.7.0': - resolution: {integrity: sha512-jPsuOH6KH3D+97l5nQNQLZbaoaHuINXWcVua54ynj8NpHJgvF+ryAecIOmZNq8e6D/oemWWOSfViv046IUK88Q==} - engines: {node: '>=18.0.0'} - - '@objectstack/objectql@14.7.0': - resolution: {integrity: sha512-el7sKH6XKnCBAcZaz8qMD6sg8gBIABdXOIL8bIPjzXhoema9sanAbDwXVS3YcqCs29xFi3p3W05DwrHGYBGWXg==} - engines: {node: '>=18.0.0'} - - '@objectstack/observability@14.7.0': - resolution: {integrity: sha512-VI9IdRmX971Zb1c1wY/rw/5HzHp775TEVAXgTZFkR7anPL9vUchWGnMG7QzVwxqp67DYDDS1Erb9q56xGn0diQ==} - engines: {node: '>=18.0.0'} - - '@objectstack/platform-objects@14.7.0': - resolution: {integrity: sha512-fXLbvHZkJqcKqVW20HY4Nb0bCKmqoFErnyK+ofnr7it8j2TABHUoOxkTrV3kkG2aSZgv49oohcXuGH9o5NZ/dw==} - engines: {node: '>=18.0.0'} - - '@objectstack/plugin-approvals@14.7.0': - resolution: {integrity: sha512-jk3YlFUHKi0um8bFU8phKDkEjjr9UPV8Te/c5bAWCrnJOVk6Inc+Ub/lewbC+ph2r5Ltp5f6yG6d//IS9Ehtmg==} - - '@objectstack/plugin-audit@14.7.0': - resolution: {integrity: sha512-nkkfS5JH2ZWg3Ms4iJOINRJoe08pmWEhvCZheqtiG8XWJEpe7Aowpysc938tCK9ghynY/VZc2aDRsaAPzQdANg==} - engines: {node: '>=18.0.0'} - - '@objectstack/plugin-auth@14.7.0': - resolution: {integrity: sha512-lxADtGcpNCQunvj4NVXIGl6oGMt2F9QqulSKXeokCd7QpB4vjxlykKnGc28tsJqkAkxeDBlh0kk7+ObN57C/kQ==} - engines: {node: '>=18.0.0'} - - '@objectstack/plugin-email@14.7.0': - resolution: {integrity: sha512-GneZNutUo0/jxjmSJrEYReKXa8BZdP0pW/8eAi+U2GiEj/jp/Me9eHkMvgJZgHj8Cb9GX8yJCeZeFEOVeE4q8g==} - - '@objectstack/plugin-hono-server@14.7.0': - resolution: {integrity: sha512-7vOFsfd6rDB9sXCfjKoF5yXNADpdiO8lWWeQNBezItkx1DRvJqQTLk3EAFaMSXvFWzoZvpC71DQ8uJd+4AfGNA==} - engines: {node: '>=18.0.0'} - - '@objectstack/plugin-reports@14.7.0': - resolution: {integrity: sha512-rjSqC0hb9N3E/6P8H/aBMtR8/zQZ23iXVzWOzR0YBRYSUcWiUxZ3vUi0JDsy3mcOv8c1h9YuZM4XDevCz2YqfQ==} - - '@objectstack/plugin-security@14.7.0': - resolution: {integrity: sha512-fT/ERYAXhD3c3UiAA7hom8JJ3PKRLNpuI9+ZNarQRG9gb5jT0umXwiMSCPmCBBmSgFbj0OhZl63xijlQZ8sfvA==} - engines: {node: '>=18.0.0'} - - '@objectstack/plugin-sharing@14.7.0': - resolution: {integrity: sha512-QlFVd6X/Lzbd72xu2iqIAbkMeKG3FgR6RWkgHBGoRltT6GmNOalhNEavoXOBIf5JeUtTc/ro+NX83E6tW3tNbg==} - - '@objectstack/plugin-webhooks@14.7.0': - resolution: {integrity: sha512-At0bE4fQ454C/RHS3TvWgZ+kPcit6C01S0tAEvT68deZ4aty2e5dNMsEEedqzzYLkR7rpT7hTlPQQb2umB4NOw==} - - '@objectstack/rest@14.7.0': - resolution: {integrity: sha512-bIkGaadPdjqyCGyMBX3Gs8H+4d/Hrh4TjPJ0keE1xswxUGqoODNVsYA+qdKqMb9nGMZT7V9XpYHhXDIVqLgA4A==} - engines: {node: '>=18.0.0'} - - '@objectstack/runtime@14.7.0': - resolution: {integrity: sha512-b9wiONYRwEWrYRKBy9uEmg0EGA0FMjGozfpfVzseW52u6JS8FDKnq1NEZMXA7Y/W87peG4eryAthKNgdKIHHfw==} - engines: {node: '>=18.0.0'} - - '@objectstack/sdui-parser@14.7.0': - resolution: {integrity: sha512-/ZdWvO10PXNLJ/zsvIykt2GvZIjjacR+HuzMjXO5mf4Pkm9zSUX1VOlRnWntyx587pTN3M0b0MYeIoasRv6gWQ==} - - '@objectstack/service-analytics@14.7.0': - resolution: {integrity: sha512-nFWFLPTFAdtGBY2ejdIvELzR6SaQ4jg2Z7f0tyzvxlOeqcke9IXis0LDOObTYuKeUknXfa2kLC7CxVWPvQwcSQ==} - engines: {node: '>=18.0.0'} - - '@objectstack/service-automation@14.7.0': - resolution: {integrity: sha512-oFL8rllqBGCOJoS3354IUUOOEQt142B6LPawsJEJ03BiEMBFGITsoj6qy0sVZd27vntpf+ZsigAewODYGoOjiw==} - engines: {node: '>=18.0.0'} - - '@objectstack/service-cache@14.7.0': - resolution: {integrity: sha512-A5pkgil4qpG57maD32imitsC6MKM3opkrxvvgWeHNoDAIUqZZlulJHfPnW7iMLTcUuB7E3Yx7sZSGhWxXOe82Q==} - engines: {node: '>=18.0.0'} - - '@objectstack/service-cluster@14.7.0': - resolution: {integrity: sha512-K5dTb5UpQnGymuefWgommt4Zs6ZChq5vScK08OSBC/eINwgPSkjZiw6WEj4MjMCryo9dLBzNA3AsQwnA42e8HQ==} - - '@objectstack/service-datasource@14.7.0': - resolution: {integrity: sha512-LXBANrWfkjfFPd838IjblJXlj4NvAUE3U5ob89XM3yZ60LxIKygZbsrhChiKYsSiL/jMGnCyF6VThgki9EWIYA==} - - '@objectstack/service-i18n@14.7.0': - resolution: {integrity: sha512-2ymG7Gttq7ExhO+12OtQ6hjHeYtTOIpxhXNXhvkiiKGQmM93V/1qRYw0NVkP8UJibXPBavCOf1b6uL1tEtYU8w==} - engines: {node: '>=18.0.0'} - - '@objectstack/service-job@14.7.0': - resolution: {integrity: sha512-JJnrBfD5OyWH+V5+WTcDguSIkx1STitp0fDRY7cqvrZkZ7048Hqq42eMEFZekOnvcw63COAq8cl24VYrX0BlFA==} - engines: {node: '>=18.0.0'} - - '@objectstack/service-messaging@14.7.0': - resolution: {integrity: sha512-yC/9XICMnmhq9sKKPibiRdUiwinip94h/DJoNuv8OUB2FhugSr/+RnJc/jjrAxyDCb2TP4pCklcNqeI9y9/XcQ==} - engines: {node: '>=18.0.0'} - - '@objectstack/service-package@14.7.0': - resolution: {integrity: sha512-QH2cMaduWjD+de5kKYWwf6+a8SUEoA23tW/9IFlkhub1lDEmBUKTF753w0IGfPVy0xagghSPakPtlchVbl6G/A==} - engines: {node: '>=18.0.0'} - - '@objectstack/service-queue@14.7.0': - resolution: {integrity: sha512-CLyJ3k2lZKsRJSTrSL1emkhluwUxXAlN3YmMoSgRtU+zSWX3WNfvl6+89638xsSNG6KUISq0Rn5O1CrJiLwlhA==} - engines: {node: '>=18.0.0'} - - '@objectstack/service-realtime@14.7.0': - resolution: {integrity: sha512-uBpJ4+toCP0cBRSmD70xg+3pvyZmKrMtXfliNW6wFCvIXxmTUCxr0MFEy6DbRjRRfnLKmzUJt10Nr2wvX8F1yA==} - engines: {node: '>=18.0.0'} - - '@objectstack/service-settings@14.7.0': - resolution: {integrity: sha512-+Tt/VHNQJuSnDp4NApcWJhH77QXDk4Zin6SZ9v90owbYRYp5DacGVN9PZah89CVUF+v3XnHctOD4SkqzOLNjKQ==} - engines: {node: '>=18.0.0'} - - '@objectstack/service-sms@14.7.0': - resolution: {integrity: sha512-r5k2rRhW4AE8+neAcs9mhFvrlkQ9qi49rIz129CB7dTHTAticEkoauiEX8F3Mia6toAYZLV9AM86paX7d3vHLw==} - - '@objectstack/service-storage@14.7.0': - resolution: {integrity: sha512-+96l8nGEUyp18deMupHv7zlmlEE0PRiLhrj5JFLJCA7M0fgXZBMIaMgeQLLWxByUqU/XpsC5b4YiiPWt3OFTbQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@aws-sdk/client-s3': ^3.0.0 - '@aws-sdk/s3-request-presigner': ^3.0.0 - peerDependenciesMeta: - '@aws-sdk/client-s3': - optional: true - '@aws-sdk/s3-request-presigner': - optional: true - - '@objectstack/setup@14.7.0': - resolution: {integrity: sha512-A/S9Jiqstv5zCfKB8UgvDT5ZsN60ulkxrs0cjrfrfizmmWQf0dLceLxpQasK9VrzXTrJ5o/CLZm+Ga8TOpmyTA==} - engines: {node: '>=18.0.0'} - - '@objectstack/spec@14.7.0': - resolution: {integrity: sha512-ZSn60tK3+wHCsfQVutGiITaB+PUuSqsv3cphsce0+jQe+No5ZItUy86eR4zP5nvY5RwNHokcKpvhvjgYlo+hlA==} - engines: {node: '>=18.0.0'} - peerDependencies: - ai: ^7.0.0 - peerDependenciesMeta: - ai: - optional: true - - '@objectstack/trigger-api@14.7.0': - resolution: {integrity: sha512-YWn5ZnJcz9cLVBa2S2NIFGPpP37GZk9/f6CChAjKjsZ5l9pXh9CF7hH8x6fIC4SKaZIBFMTT4EchKqdHetfCkQ==} - - '@objectstack/trigger-record-change@14.7.0': - resolution: {integrity: sha512-WRSUgOzVHFgFO6wPNj53snlH+kekDM6cGlBVEpH25uUMi10KzjjTKzpFtMXaW1otTvH93RkVv6qXeDk0gqwbYQ==} - engines: {node: '>=18.0.0'} - - '@objectstack/trigger-schedule@14.7.0': - resolution: {integrity: sha512-oFt96J+7jZtX/KjkYZbbWvR0LVrRVAo8MP6y87uM+ZShoIVRKZGFi15mkiOGDioqZj9g2INU3OBo0mML1IGZSw==} - engines: {node: '>=18.0.0'} - - '@objectstack/types@14.7.0': - resolution: {integrity: sha512-rr0IxpRpEjCweoq2u00ivGixKTI+Yq2sF6ar7h5lIabzwF8MECX6IICysR0ag/skli3ZsYZH2DANPd7ymLK7qg==} - engines: {node: '>=18.0.0'} - - '@objectstack/verify@14.7.0': - resolution: {integrity: sha512-2nH0Bee4NH+c1wV0E22tKynx1eelx+kMn9YSugCrtm1lc9Kj+UGJkqhhUj0gj9Gxl0zBtQpZARV4GCNHiKqlJA==} - engines: {node: '>=18.0.0'} - - '@oclif/core@4.11.14': - resolution: {integrity: sha512-cZ5Ktd+rT0PO+o7KBH4vRFTgg+xMLf8F41WK39p8MkXEViZA/Qqe+4lzZT6102zgUxMORET1HtF9t5w8CB3tnQ==} - engines: {node: '>=18.0.0'} - - '@opennextjs/aws@4.0.2': - resolution: {integrity: sha512-nXQPT8GZDV+NWMJV9mD/Ywxyo+tCZfFvrR6jpEOYNcxK/AqiEDlJzPybGOrHUDWAYdR1b6tmh+MoR3VbqIao3w==} - hasBin: true - peerDependencies: - next: '>=15.5.18 <16 || >=16.2.6' - - '@opennextjs/cloudflare@1.19.11': - resolution: {integrity: sha512-spZ7YsZZW9q/OJStaZlJhuklYKei5e2tNQ7PMi3DDSJ7x7167m7EYYHQZfVN5gwJBDkMR2jUDW88oHjnGz4YYw==} - hasBin: true - peerDependencies: - next: '>=15.5.18 <16 || >=16.2.6' - wrangler: ^4.86.0 - - '@opentelemetry/api@1.9.1': - resolution: {integrity: sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==} - engines: {node: '>=8.0.0'} - - '@opentelemetry/semantic-conventions@1.41.1': - resolution: {integrity: sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==} - engines: {node: '>=14'} - - '@orama/orama@3.1.18': - resolution: {integrity: sha512-a61ljmRVVyG5MC/698C8/FfFDw5a8LOIvyOLW5fztgUXqUpc1jOfQzOitSCbge657OgXXThmY3Tk8fpiDb4UcA==} - engines: {node: '>= 20.0.0'} - - '@poppinss/colors@4.1.6': - resolution: {integrity: sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==} - - '@poppinss/dumper@0.6.5': - resolution: {integrity: sha512-NBdYIb90J7LfOI32dOewKI1r7wnkiH6m920puQ3qHUeZkxNkQiFnXVWoE6YtFSv6QOiPPf7ys6i+HWWecDz7sw==} - - '@poppinss/exception@1.2.3': - resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} - - '@radix-ui/number@1.1.1': - resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} - - '@radix-ui/primitive@1.1.3': - resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} - - '@radix-ui/react-accordion@1.2.12': - resolution: {integrity: sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': + '@types/react-dom': optional: true '@radix-ui/react-arrow@1.1.7': @@ -2555,85 +1852,6 @@ packages: '@tanstack/store@0.9.3': resolution: {integrity: sha512-8reSzl/qGWGGVKhBoxXPMWzATSbZLZFWhwBAFO9NAyp0TxzfBP0mIrGb8CP8KrQTmvzXlR/vFPPUrHTLBGyFyw==} - '@tauri-apps/cli-darwin-arm64@2.11.2': - resolution: {integrity: sha512-+4UZzLt+eOAEQCwgd+TqKgyUJMrvx+BgdXLLaqJYmPqzP+nE6YZr/hY6CWLYGQb8jFn99jEkmC6uA3tNvamA1w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@tauri-apps/cli-darwin-x64@2.11.2': - resolution: {integrity: sha512-VjYYtZUPqDMLutSfJEyxFE3Bz+DPi7c8wC3imckgvciLDZLq4qwKJxBicg0BXGhXjJsl8vKWgWRFNMPELQ+Xyg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@tauri-apps/cli-linux-arm-gnueabihf@2.11.2': - resolution: {integrity: sha512-yMemD6f4i95AQriS8EazyOFzbE34yjnP16i3IOzpHGQvBoy2DjypFMFBq0NtPuITURv/cOGguRtHR5d79/9CSA==} - engines: {node: '>= 10'} - cpu: [arm] - os: [linux] - - '@tauri-apps/cli-linux-arm64-gnu@2.11.2': - resolution: {integrity: sha512-cgI91D2wL8GSgoWwZXDqt+DwnuZCP2/bz03QAE4TrhgAKIsrB4hX26W/H1EONPUUNkqrsgeCD0wU6pcNjV/5kw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@tauri-apps/cli-linux-arm64-musl@2.11.2': - resolution: {integrity: sha512-X1rm0BERqAAggtYTESSgXrS3sz4Sb/OiPiz54UqISlXW+GkR3vNIGnsy/lejNmoXGVqri3Q53BCfQiclOIyRPw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@tauri-apps/cli-linux-riscv64-gnu@2.11.2': - resolution: {integrity: sha512-usbMLJbT3KtkOrBMDVeGYNM35aTHXx38SJSzTMSqqjeUIOQ+iVPjb2yAGNAE+KqmBbAx4FOFIyMeKXx2M/JKGQ==} - engines: {node: '>= 10'} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@tauri-apps/cli-linux-x64-gnu@2.11.2': - resolution: {integrity: sha512-Ru4gwJKPG0ctVGchRGpRup4Y4lW2SSfFnrbQcyHhCliKy4g8Qz97TrUgCur4CbWyAgKxvGh3SjrkA0LDYzDGiw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@tauri-apps/cli-linux-x64-musl@2.11.2': - resolution: {integrity: sha512-eUm7T6clN1MMmNSRQ9gaWsQdyehQx2Gmn5hht/QUlqZQI/qcP2OJK5dnaxqwFzCr2HdsEo9ydxaqcS1oJzMvUw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - libc: [musl] - - '@tauri-apps/cli-win32-arm64-msvc@2.11.2': - resolution: {integrity: sha512-HeeZW80jU+gVTOEX4X/hC6NVSAdDVXajwP5fxIZ/3z9WvUC7qrudX2GMTilYq6Dg0e0sk0XgsAJD1hZ5wPBXUA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@tauri-apps/cli-win32-ia32-msvc@2.11.2': - resolution: {integrity: sha512-YhjQNZcXfbkCLyazSv1nPnJ9iRFE1wm6kc51FDbU10/Dk09io+6PAGMLjkxnX2GdM0qMnDmTjstY8mTDVvtKeA==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@tauri-apps/cli-win32-x64-msvc@2.11.2': - resolution: {integrity: sha512-d2JchlFIpZevZVReyqhQOekJmb1UH3rhZ5VX6sH3ty9ETE0TKQavpihvoScUXfKKpW6HZC0MrFGRU0ZtD+w3gA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@tauri-apps/cli@2.11.2': - resolution: {integrity: sha512-bk3HemqvGRoy+5D/dVMUQHKMYLglD0jVnMm/0iGMH6ufZ+p8r14m6BpIixwij3PBvZdvORUp1YifTD8QxVZ1Nw==} - engines: {node: '>= 10'} - hasBin: true - - '@ts-morph/common@0.29.0': - resolution: {integrity: sha512-35oUmphHbJvQ/+UTwFNme/t2p3FoKiGJ5auTjjpNTop2dyREspirjMy82PLSC1pnDJ8ah1GU98hwpVt64YXQsg==} - '@tsconfig/node18@1.0.3': resolution: {integrity: sha512-RbwvSJQsuN9TB04AQbGULYfOGE/RnSFk/FLQ5b0NmDf5Kx2q/lABZbHQPKCO1vZ6Fiwkplu+yb9pGdLy1iGseQ==} @@ -2694,12 +1912,6 @@ packages: '@types/node-fetch@2.6.13': resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} - '@types/node@12.20.55': - resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - - '@types/node@14.18.63': - resolution: {integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==} - '@types/node@18.19.130': resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} @@ -2720,23 +1932,9 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@types/webidl-conversions@7.0.3': - resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} - - '@types/whatwg-url@13.0.0': - resolution: {integrity: sha512-N8WXpbE6Wgri7KUSvrmQcqrMllKZ9uxkYWMt+mCSGwNc0Hsw9VQTW7ApqI4XNrx6/SaM2QQJCzMPDEXE058s+Q==} - '@ungap/structured-clone@1.3.1': resolution: {integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==} - '@xmldom/is-dom-node@1.0.1': - resolution: {integrity: sha512-CJDxIgE5I0FH+ttq/Fxy6nRpxP70+e2O048EPe85J2use3XKdatVM7dDVvFNjQudd9B49NPoZ+8PG49zj4Er8Q==} - engines: {node: '>= 16'} - - '@xmldom/xmldom@0.8.13': - resolution: {integrity: sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==} - engines: {node: '>=10.0.0'} - abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -2759,25 +1957,10 @@ packages: resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} - ajv-formats@3.0.1: - resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv@8.20.0: - resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} - ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -2786,39 +1969,13 @@ packages: resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - ansi-styles@6.2.3: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - ansis@3.17.0: - resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} - engines: {node: '>=14'} - - any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - anynum@1.0.1: resolution: {integrity: sha512-N6//FLET/tXYNM/F6ABca1oH6fWB+KlTt909Le28WMDBk8oaT4vY17DCrwg2MvmuqUKt3Ni4N5dGJ/EoBgcO6A==} - archiver-utils@2.1.0: - resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} - engines: {node: '>= 6'} - - archiver-utils@3.0.4: - resolution: {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==} - engines: {node: '>= 10'} - - archiver@5.3.2: - resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==} - engines: {node: '>= 10'} - - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -2829,20 +1986,10 @@ packages: array-timsort@1.0.3: resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - asn1@0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} - astring@1.9.0: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true - async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -2859,111 +2006,14 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.32: resolution: {integrity: sha512-wbPvpyjJPC0zdfdKXxqEL3Ea+bOMD/87X4lftiJkkaBiuG6ALQy1SLmEd7BSmVCuwCQsBrCamgBoLyfFDD1EPg==} engines: {node: '>=6.0.0'} hasBin: true - better-auth@1.6.23: - resolution: {integrity: sha512-4vOaRd9UiKGKm9R+ej0jjU1es3MiJIiNc9Qq3VCnYqOZ4/nb5272QqTxWYoDxyUXl5x6A2x2we5KZKQO9teTQQ==} - peerDependencies: - '@lynx-js/react': '*' - '@prisma/client': ^5.0.0 || ^6.0.0 || ^7.0.0 - '@sveltejs/kit': ^2.0.0 - '@tanstack/react-start': ^1.0.0 - '@tanstack/solid-start': ^1.0.0 - better-sqlite3: ^12.0.0 - drizzle-kit: '>=0.31.4' - drizzle-orm: ^0.45.2 - mongodb: ^6.0.0 || ^7.0.0 - mysql2: ^3.0.0 - next: ^14.0.0 || ^15.0.0 || ^16.0.0 - pg: ^8.0.0 - prisma: ^5.0.0 || ^6.0.0 || ^7.0.0 - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 - solid-js: ^1.0.0 - svelte: ^4.0.0 || ^5.0.0 - vitest: ^2.0.0 || ^3.0.0 || ^4.0.0 - vue: ^3.0.0 - peerDependenciesMeta: - '@lynx-js/react': - optional: true - '@prisma/client': - optional: true - '@sveltejs/kit': - optional: true - '@tanstack/react-start': - optional: true - '@tanstack/solid-start': - optional: true - better-sqlite3: - optional: true - drizzle-kit: - optional: true - drizzle-orm: - optional: true - mongodb: - optional: true - mysql2: - optional: true - next: - optional: true - pg: - optional: true - prisma: - optional: true - react: - optional: true - react-dom: - optional: true - solid-js: - optional: true - svelte: - optional: true - vitest: - optional: true - vue: - optional: true - - better-call@1.3.7: - resolution: {integrity: sha512-Al51/hjp2SSp6CRTa3F2ptcx4yQVS1xWKoY6jcVXqNYOap6mHFP2jUBn5EwIL4iIed1/Sq4hlQ+Umm6EflZG+w==} - peerDependencies: - zod: ^4.0.0 - peerDependenciesMeta: - zod: - optional: true - - better-path-resolve@1.0.0: - resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} - engines: {node: '>=4'} - - better-sqlite3@12.11.1: - resolution: {integrity: sha512-dq9AtApgg5PGFtBzPFSBl3HZQjHok5gaQCM6zh2Yk0aSmDCs1CbnVI8/HgASQkNKsWFpseIO9beg5xxpYhbIfA==} - engines: {node: 20.x || 22.x || 23.x || 24.x || 25.x || 26.x} - - big-integer@1.6.52: - resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} - engines: {node: '>=0.6'} - - binary@0.3.0: - resolution: {integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==} - - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - blake3-wasm@2.1.5: resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} - bluebird@3.4.7: - resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} - body-parser@2.2.2: resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} engines: {node: '>=18'} @@ -2971,9 +2021,6 @@ packages: bowser@2.14.1: resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} - brace-expansion@1.1.15: - resolution: {integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==} - brace-expansion@2.1.1: resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==} @@ -2981,37 +2028,9 @@ packages: resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} engines: {node: 18 || 20 || >=22} - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - bson@7.2.0: - resolution: {integrity: sha512-YCEo7KjMlbNlyHhz7zAZNDpIpQbd+wOEHJYezv0nMYTn4x31eIUM2yomNNubclAt63dObUzKHWsBLJ9QcZNSnQ==} - engines: {node: '>=20.19.0'} - - buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer-indexof-polyfill@1.0.2: - resolution: {integrity: sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==} - engines: {node: '>=0.10'} - - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - - buffers@0.1.1: - resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==} - engines: {node: '>=0.2.0'} - - bundle-require@5.1.0: - resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.18' - bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -3030,9 +2049,6 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chainsaw@0.1.0: - resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==} - chalk@5.6.2: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} @@ -3049,16 +2065,10 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chardet@2.1.1: - resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} - chokidar@5.0.0: resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} engines: {node: '>= 20.19.0'} - chownr@1.1.4: - resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} - ci-info@4.4.0: resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} engines: {node: '>=8'} @@ -3066,14 +2076,6 @@ packages: class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} - clean-stack@3.0.1: - resolution: {integrity: sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==} - engines: {node: '>=10'} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -3088,32 +2090,15 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - code-block-writer@13.0.3: - resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} - collapse-white-space@2.1.0: resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - colorette@2.0.19: - resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} - combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} commander@11.1.0: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} @@ -3122,24 +2107,13 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - comment-json@4.6.2: resolution: {integrity: sha512-R2rze/hDX30uul4NZoIZ76ImSJLFxn/1/ZxtKC1L77y2X1k+yYu1joKbAtMA2Fg3hZrTOiw0I5mwVMo0cf250w==} engines: {node: '>= 6'} - compress-commons@4.1.2: - resolution: {integrity: sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==} - engines: {node: '>= 10'} - compute-scroll-into-view@3.1.1: resolution: {integrity: sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==} - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - content-disposition@1.1.0: resolution: {integrity: sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==} engines: {node: '>=18'} @@ -3167,26 +2141,6 @@ packages: resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} - core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - cors@2.8.6: - resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} - engines: {node: '>= 0.10'} - - crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - - crc32-stream@4.0.3: - resolution: {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==} - engines: {node: '>= 10'} - - croner@10.0.1: - resolution: {integrity: sha512-ixNtAJndqh173VQ4KodSdJEI6nuioBWI0V1ITNKhZZsO0pEMoDxz539T4FTTbSZ/xIOSuDnzxLVRqBVSvPNE2g==} - engines: {node: '>=18.0'} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -3194,18 +2148,6 @@ packages: csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - dayjs@1.11.21: - resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==} - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -3218,17 +2160,6 @@ packages: decode-named-character-reference@1.3.0: resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} - decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - - deep-extend@0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - - defu@6.1.7: - resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} - delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -3241,10 +2172,6 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - detect-indent@6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -3255,14 +2182,6 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - dotenv-flow@4.1.0: - resolution: {integrity: sha512-0cwP9jpQBQfyHwvE0cRhraZMkdV45TQedA8AAUZMsFzvmLcQyc1HPv+oX0OOYwLFjIlvgVepQ+WuQHbqDaHJZg==} - engines: {node: '>= 12.0.0'} - dotenv@16.6.1: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} @@ -3271,9 +2190,6 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - duplexer2@0.1.4: - resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} - duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} @@ -3284,24 +2200,13 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} - hasBin: true - emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - encodeurl@2.0.0: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} - end-of-stream@1.4.5: - resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} - enhanced-resolve@5.22.0: resolution: {integrity: sha512-xYcDWrpELkFzz9SpZ3PlI6Eu6eD93Yf0WLDRxikGhWJ3MAir2SNZTIVCVZqZ/NUyx8AdMc2gT9C0gPiw18kG+A==} engines: {node: '>=10.13.0'} @@ -3354,11 +2259,6 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.28.1: - resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} - engines: {node: '>=18'} - hasBin: true - escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -3366,18 +2266,10 @@ packages: escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - esm@3.2.25: - resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} - engines: {node: '>=6'} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -3415,32 +2307,10 @@ packages: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} - eventsource-parser@3.1.0: - resolution: {integrity: sha512-kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg==} - engines: {node: '>=18.0.0'} - - eventsource@3.0.7: - resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} - engines: {node: '>=18.0.0'} - - exceljs@4.4.0: - resolution: {integrity: sha512-XctvKaEMaj1Ii9oDOqbW/6e1gXknSY4g/aLCDicOXqBE4M0nRWkUu0PTp++UPNzoFY12BNHMfs/VadKIS6llvg==} - engines: {node: '>=8.3.0'} - execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - expand-template@2.0.3: - resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} - engines: {node: '>=6'} - - express-rate-limit@8.5.2: - resolution: {integrity: sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==} - engines: {node: '>= 16'} - peerDependencies: - express: '>= 4.11' - express@5.2.1: resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} engines: {node: '>= 18'} @@ -3448,23 +2318,6 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - extendable-error@0.1.7: - resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} - - fast-csv@4.3.6: - resolution: {integrity: sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==} - engines: {node: '>=10.0.0'} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - - fast-uri@3.1.2: - resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} - fast-xml-builder@1.2.0: resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==} @@ -3472,13 +2325,6 @@ packages: resolution: {integrity: sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==} hasBin: true - fast-xml-parser@5.9.3: - resolution: {integrity: sha512-brCNCeScma/kqa54J4PIDriSSSLssRkuYaUCpvHJulGc3HGI/xxKUCTDcYkAdqJsyb//ydpbxecjC3hB9+tb/g==} - hasBin: true - - fastq@1.20.1: - resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} - fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -3488,24 +2334,10 @@ packages: picomatch: optional: true - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - - filelist@1.0.6: - resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - finalhandler@2.1.1: resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} engines: {node: '>= 18.0.0'} - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - foreground-child@3.3.1: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} @@ -3543,17 +2375,6 @@ packages: resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} engines: {node: '>= 0.8'} - fs-constants@1.0.0: - resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - - fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - - fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -3562,11 +2383,6 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - fstream@1.0.12: - resolution: {integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==} - engines: {node: '>=0.6'} - deprecated: This package is no longer supported. - fumadocs-core@16.8.12: resolution: {integrity: sha512-xEGUbOWTmZCRx6nScvj7cDrdpoZD44B+ZTUUcpSMpInmuH5GZTh/I3wxWQr9rEtsjMH3qgL7i6i+8BIMRfn44A==} peerDependencies: @@ -3696,10 +2512,6 @@ packages: resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} engines: {node: '>=6'} - get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - get-proto@1.0.1: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} @@ -3708,41 +2520,19 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - getopts@2.3.0: - resolution: {integrity: sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==} - - github-from-package@0.0.0: - resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} - github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - glob@12.0.0: resolution: {integrity: sha512-5Qcll1z7IKgHr5g485ePDdHcNQY0k2dtv/bjYy0iuyGxQw2qSOiiXUXJ+AYQpg3HNoUMHqAruX478Jeev7UULw==} engines: {node: 20 || >=22} hasBin: true - glob@13.0.6: - resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} - engines: {node: 18 || 20 || >=22} - - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - glob@9.3.5: resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} engines: {node: '>=16 || 14 >=14.17'} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -3754,10 +2544,6 @@ packages: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - has-symbols@1.1.0: resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} @@ -3801,14 +2587,6 @@ packages: hastscript@9.0.1: resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} - hono@4.12.28: - resolution: {integrity: sha512-YwUvVpSF7m1yOblFPrU3Hbo8XhPheBoiyfGuII6z19LnOr6JpDnyyp7LFNrfV56wS8tpvtBFGRISHN02pDdLOA==} - engines: {node: '>=16.9.0'} - - hono@4.12.30: - resolution: {integrity: sha512-emn+JoJjrN9YTpRDS5it/UI2SO9BAE37T6I3d963RxcZ81G9A4pr2SZTEiiaiKbzx+NKRg5BZ89fCL7gCJCUog==} - engines: {node: '>=16.9.0'} - html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} @@ -3816,10 +2594,6 @@ packages: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} - human-id@4.1.3: - resolution: {integrity: sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==} - hasBin: true - human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -3831,41 +2605,16 @@ packages: resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ini@1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - inline-style-parser@0.2.7: resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} - interpret@2.2.0: - resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} - engines: {node: '>= 0.10'} - - ip-address@10.2.0: - resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==} - engines: {node: '>= 12'} - ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -3876,37 +2625,12 @@ packages: is-alphanumerical@2.0.1: resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - is-core-module@2.16.2: - resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} - engines: {node: '>= 0.4'} - is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} @@ -3918,24 +2642,6 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-subdir@1.2.0: - resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} - engines: {node: '>=4'} - - is-unsafe@1.0.1: - resolution: {integrity: sha512-CLK2+VdgERgD96EYm5lUQssZYlRg2tkZnbsxZoacmSiRxiFJ4Nk4SzjCl+Ur+v3kXIY9dTIdb3IH22y1mZ56LA==} - - is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - isbot@5.1.40: resolution: {integrity: sha512-yNeeynhhtIVRBk12tBV4eHNxwB42HzR4Q3Ea7vCOiJhImGaAIdIMrbJtacQlBizGLjUPw+akkFI5Dn9T70XoVQ==} engines: {node: '>=18'} @@ -3951,91 +2657,18 @@ packages: resolution: {integrity: sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==} engines: {node: 20 || >=22} - jake@10.9.4: - resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} - engines: {node: '>=10'} - hasBin: true - jiti@2.7.0: resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true - jose@6.2.3: - resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==} - - js-yaml@3.14.2: - resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} - hasBin: true - js-yaml@4.1.1: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true - js-yaml@5.2.1: - resolution: {integrity: sha512-zfLtNfQqxVqq3uaTqSkh4x4hZw3KHobGUA0fJUj4wawW8bsQLTVqpHdXSIzidh7o+4lEW36tANuAGdaFx6Zgnw==} - hasBin: true - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-schema-typed@8.0.2: - resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==} - - jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} - - jszip@3.10.1: - resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} - kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - knex@3.3.0: - resolution: {integrity: sha512-LgWl031hNuLv9Lhxdd9093zULa2aNcoP04Bk29e5NidgRcEr/T0rAr2WYi4BhjTiCDoQiRU56meUE5rppLKZzQ==} - engines: {node: '>=16'} - hasBin: true - peerDependencies: - better-sqlite3: '*' - mariadb: '*' - mysql: '*' - mysql2: '*' - pg: '*' - pg-native: '*' - pg-query-stream: ^4.14.0 - sqlite3: '*' - tedious: '*' - peerDependenciesMeta: - better-sqlite3: - optional: true - mariadb: - optional: true - mysql: - optional: true - mysql2: - optional: true - pg: - optional: true - pg-native: - optional: true - pg-query-stream: - optional: true - sqlite3: - optional: true - tedious: - optional: true - - kysely@0.29.2: - resolution: {integrity: sha512-s6WVJyEZrbm6jhBpiKHsGHyePMrVQKJ85wZCFCr9W4QHv6WTjWIrdvTmO9hDEA3bNK0xkrE2DqrHsXMLWuZpQg==} - engines: {node: '>=22.0.0'} - - lazystream@1.0.1: - resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} - engines: {node: '>= 0.6.3'} - - lie@3.3.0: - resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} - lightningcss-android-arm64@1.32.0: resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} engines: {node: '>= 12.0.0'} @@ -4110,70 +2743,6 @@ packages: resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} engines: {node: '>= 12.0.0'} - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - listenercount@1.0.1: - resolution: {integrity: sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==} - - load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - - lodash.difference@4.5.0: - resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} - - lodash.escaperegexp@4.1.2: - resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} - - lodash.flatten@4.4.0: - resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} - - lodash.groupby@4.6.0: - resolution: {integrity: sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==} - - lodash.isboolean@3.0.3: - resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} - - lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. - - lodash.isfunction@3.0.9: - resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} - - lodash.isnil@4.0.0: - resolution: {integrity: sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==} - - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - lodash.isundefined@3.0.1: - resolution: {integrity: sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==} - - lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - - lodash.union@4.6.0: - resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} - - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - - lodash@4.18.1: - resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} - longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -4255,9 +2824,6 @@ packages: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} - memory-pager@1.5.0: - resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} - merge-descriptors@2.0.0: resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} engines: {node: '>=18'} @@ -4265,10 +2831,6 @@ packages: merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} @@ -4374,10 +2936,6 @@ packages: micromark@4.0.2: resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -4398,13 +2956,6 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - - mingo@7.2.2: - resolution: {integrity: sha512-ll8DV+C5RnV2zF3Jwendxhgqknofzp7KaDwmlpvqo4xrdMC5F7JTc2ToZOz//de84QymZTFY7LPHMViE8uNHhA==} - miniflare@4.20260526.0: resolution: {integrity: sha512-JYQ7jPZZWoaaj9jWHb8Ucp6Cu2SbDVqIsAJhumqdzzLkkfq0pYkDeino/sZfW1ixJWPjv/C44zjm9gVJC2izCA==} engines: {node: '>=22.0.0'} @@ -4414,20 +2965,10 @@ packages: resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} - minimatch@3.1.5: - resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - - minimatch@5.1.9: - resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} - engines: {node: '>=10'} - minimatch@8.0.7: resolution: {integrity: sha512-V+1uQNdzybxa14e/p00HZnQNNcTjnRJjDxg2V8wtkjFctq4M7hXFws4oekyTP0Jebeq7QYtpFyOeBAjc88zvYg==} engines: {node: '>=16 || 14 >=14.17'} - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@4.2.8: resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} engines: {node: '>=8'} @@ -4436,13 +2977,6 @@ packages: resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} - mkdirp-classic@0.5.3: - resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} - - mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} @@ -4451,37 +2985,6 @@ packages: mnemonist@0.38.3: resolution: {integrity: sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==} - mongodb-connection-string-url@7.0.1: - resolution: {integrity: sha512-h0AZ9A7IDVwwHyMxmdMXKy+9oNlF0zFoahHiX3vQ8e3KFcSP3VmsmfvtRSuLPxmyv2vjIDxqty8smTgie/SNRQ==} - engines: {node: '>=20.19.0'} - - mongodb@7.5.0: - resolution: {integrity: sha512-5FnrEDLnvp6ycUOGLNLLU33BfCx2qmp2mJjGPDwKLruYsVzXVSK5fsGpoDXvsXJwBfBsD7ebMRdawbDxC2814g==} - engines: {node: '>=20.19.0'} - peerDependencies: - '@aws-sdk/credential-providers': ^3.806.0 - '@mongodb-js/zstd': ^7.0.0 - gcp-metadata: ^7.0.1 - kerberos: ^7.0.0 - mongodb-client-encryption: ^7.2.0 - snappy: ^7.3.2 - socks: ^2.8.6 - peerDependenciesMeta: - '@aws-sdk/credential-providers': - optional: true - '@mongodb-js/zstd': - optional: true - gcp-metadata: - optional: true - kerberos: - optional: true - mongodb-client-encryption: - optional: true - snappy: - optional: true - socks: - optional: true - motion-dom@12.40.0: resolution: {integrity: sha512-HxU3ZaBwNPVQUBQf1xxgq+7JrPNZvjLVxgbpEZL7RrWJnsxOf0/OM+yrHG9ogLQ31Do/r57Oz2gQWPK+6q62mg==} @@ -4502,36 +3005,14 @@ packages: react-dom: optional: true - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nanoid@3.3.12: resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@6.0.0: - resolution: {integrity: sha512-mkUH+rPkwU2qPadJ0oJZOjeZ5Mxn8Q1UhevwkTRWNuUZzyia3h4rhzK39hxaHTk0o2OxB8W2SQ6A8k23ZDi1pQ==} - engines: {node: ^22 || ^24 || >=26} - hasBin: true - - nanostores@1.3.0: - resolution: {integrity: sha512-XPUa/jz+P1oJvN9VBxw4L9MtdFfaH3DAryqPssqhb2kXjmb9npz0dly6rCsgFWOPr4Yg9mTfM3MDZgZZ+7A3lA==} - engines: {node: ^20.0.0 || >=22.0.0} - - napi-build-utils@2.0.0: - resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} - negotiator@1.0.0: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} @@ -4563,10 +3044,6 @@ packages: sass: optional: true - node-abi@3.92.0: - resolution: {integrity: sha512-KdHvFWZjEKDf0cakgFjebl371GPsISX2oZHcuyKqM7DtogIsHrqKeLTo8wBHxaXRAQlY2PsPlZmfo+9ZCxEREQ==} - engines: {node: '>=10'} - node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -4581,21 +3058,10 @@ packages: encoding: optional: true - node-rsa@1.1.1: - resolution: {integrity: sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - object-inspect@1.13.4: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} @@ -4624,38 +3090,9 @@ packages: oniguruma-to-es@4.3.6: resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==} - outdent@0.5.0: - resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} - - p-filter@2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-map@2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@0.2.11: - resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} - - pako@1.0.11: - resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} - parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} @@ -4666,28 +3103,14 @@ packages: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - path-expression-matcher@1.5.0: resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==} engines: {node: '>=14.0.0'} - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - path-scurry@1.11.1: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} @@ -4697,78 +3120,21 @@ packages: engines: {node: 18 || 20 || >=22} path-to-regexp@6.3.0: - resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} - - path-to-regexp@8.4.2: - resolution: {integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - - pg-cloudflare@1.4.0: - resolution: {integrity: sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==} - - pg-connection-string@2.14.0: - resolution: {integrity: sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==} - - pg-connection-string@2.6.2: - resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} - - pg-int8@1.0.1: - resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} - engines: {node: '>=4.0.0'} - - pg-pool@3.14.0: - resolution: {integrity: sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==} - peerDependencies: - pg: '>=8.0' - - pg-protocol@1.15.0: - resolution: {integrity: sha512-cq9sECI5s0+uPUXjbz8ioyPJni6RzsRib0US67i5IoTZKw8fNeYlVE7u8F4dG7vEJJtc5wdD1K189lCCUwqWTQ==} - - pg-types@2.2.0: - resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} - engines: {node: '>=4'} - - pg@8.22.0: - resolution: {integrity: sha512-8wih1vVIBMxoUM2oB4soJsD9tDnDpLv4OXBJ+EJzFsvycD+lfyIreC2gGHq78f8jbLLt+bvlPTFdFZfJkOuzAA==} - engines: {node: '>= 16.0.0'} - peerDependencies: - pg-native: '>=3.0.1' - peerDependenciesMeta: - pg-native: - optional: true + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + + path-to-regexp@8.4.2: + resolution: {integrity: sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==} - pgpass@1.0.5: - resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.2: - resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} - engines: {node: '>=8.6'} - picomatch@4.0.4: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} - pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - - pirates@4.0.7: - resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} - engines: {node: '>= 6'} - - pkce-challenge@5.0.1: - resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} - engines: {node: '>=16.20.0'} - postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} @@ -4777,36 +3143,6 @@ packages: resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} - postgres-array@2.0.0: - resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} - engines: {node: '>=4'} - - postgres-bytea@1.0.1: - resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} - engines: {node: '>=0.10.0'} - - postgres-date@1.0.7: - resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} - engines: {node: '>=0.10.0'} - - postgres-interval@1.2.0: - resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} - engines: {node: '>=0.10.0'} - - prebuild-install@7.1.3: - resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} - engines: {node: '>=10'} - deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available. - hasBin: true - - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - - process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} @@ -4814,30 +3150,10 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} - pump@3.0.4: - resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - qs@6.15.2: resolution: {integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==} engines: {node: '>=0.6'} - quansync@0.2.11: - resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - quickjs-emscripten-core@0.32.0: - resolution: {integrity: sha512-QFnPfjFey8EqknSrSxe1hZrf1/8z7/6s1QzGOmKo6++02r7QRRX7ZoyNaZh7JuVjWsVW87KnQrbZqnHkOAzUyg==} - - quickjs-emscripten@0.32.0: - resolution: {integrity: sha512-So0Sqw869y/S2oE3Nuc0uT3Dhqgvsj8FSrwBdsuTosVsG8ME5/OcudU1GxsrIFdFABgy17GHnTVO9TYV/bLQcA==} - engines: {node: '>=16.0.0'} - range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -4846,10 +3162,6 @@ packages: resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} engines: {node: '>= 0.10'} - rc@1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - react-dom@19.2.6: resolution: {integrity: sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==} peerDependencies: @@ -4889,28 +3201,10 @@ packages: resolution: {integrity: sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==} engines: {node: '>=0.10.0'} - read-yaml-file@1.1.0: - resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} - engines: {node: '>=6'} - - readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - - readdir-glob@1.1.3: - resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} - readdirp@5.0.0: resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} engines: {node: '>= 20.19.0'} - rechoir@0.8.0: - resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} - engines: {node: '>= 10.13.0'} - recma-build-jsx@1.0.0: resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} @@ -4958,28 +3252,6 @@ packages: remark@15.0.1: resolution: {integrity: sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==} - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve@1.22.12: - resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} - engines: {node: '>= 0.4'} - hasBin: true - - reusify@1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rimraf@2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rosie-skills-darwin-arm64@0.6.4: resolution: {integrity: sha512-rn1s5hqFKcxeiDEWWoFa1hdGPshR8TkwHLzy/cBavb9XJNAaUxbe3oQ78W9sQkRHAgRyzJYyk9tw68Qrdnizgg==} cpu: [arm64] @@ -5000,32 +3272,13 @@ packages: engines: {node: '>=18'} hasBin: true - rou3@0.7.12: - resolution: {integrity: sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg==} - router@2.2.0: resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} engines: {node: '>= 18'} - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - samlify@2.13.1: - resolution: {integrity: sha512-vdYr/zohDGBbfWNU4miEzc1jmWOtkLySPViapC6nfGkv9KxzLq4UlGkKyryzwLw4jVlZk88Rw93HaCRVpe+t+g==} - - saxes@5.0.1: - resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} - engines: {node: '>=10'} - scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} @@ -5055,12 +3308,6 @@ packages: resolution: {integrity: sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==} engines: {node: '>= 18'} - set-cookie-parser@3.1.0: - resolution: {integrity: sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==} - - setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -5103,16 +3350,6 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - simple-concat@1.0.1: - resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} - - simple-get@4.0.1: - resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -5131,40 +3368,14 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - sparse-bitfield@3.0.3: - resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} - - spawndamnit@3.0.1: - resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} - - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - - sql.js@1.14.1: - resolution: {integrity: sha512-gcj8zBWU5cFsi9WUP+4bFNXAyF1iRpA3LLyS/DP5xlrNzGmPIizUeBggKa8DbDwdqaKwUcTEnChtd2grWo/x/A==} - statuses@2.0.2: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - string-width@7.2.0: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} - string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - - string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - stringify-entities@4.0.4: resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} @@ -5176,18 +3387,10 @@ packages: resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - strip-json-comments@2.0.1: - resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} - engines: {node: '>=0.10.0'} - strnum@2.4.1: resolution: {integrity: sha512-M9eUSMT2dCB2cTNPG7UYj6KuK7RJR2SN2+yCV/fTW3xzTCS6EaGZ5pSMgDIjB7r8zSfTGk+dvvn9rTjpVS9Mwg==} @@ -5210,23 +3413,10 @@ packages: babel-plugin-macros: optional: true - sucrase@3.35.1: - resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - supports-color@10.2.2: resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} engines: {node: '>=18'} - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - tailwind-merge@3.6.0: resolution: {integrity: sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==} @@ -5237,37 +3427,11 @@ packages: resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} - tar-fs@2.1.4: - resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} - - tar-stream@2.2.0: - resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} - engines: {node: '>=6'} - - tarn@3.1.0: - resolution: {integrity: sha512-QDihlHbXxQ4SnuQcRd1TPNBHUYo/hafDRDP82COYSVfRcx/3qnfGDkn1WFjozVl+AYr8ZyDKSQ/kIgHH1ri1yg==} - engines: {node: '>=8.0.0'} - - term-size@2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - terser@5.16.9: resolution: {integrity: sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg==} engines: {node: '>=10'} hasBin: true - thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - - thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - - tildify@2.0.0: - resolution: {integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==} - engines: {node: '>=8'} - tinyexec@1.2.2: resolution: {integrity: sha512-M/Q0B2cp4K7kynaT/vnED1j8TlLY+Pp7C6Wl2bl/7u/F0mUVwdyOpwomQb8JpYLitHUssAJRmLZdMCGsrx7i+g==} engines: {node: '>=18'} @@ -5276,25 +3440,6 @@ packages: resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} engines: {node: '>=12.0.0'} - tinyglobby@0.2.17: - resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} - engines: {node: '>=12.0.0'} - - tldts-core@6.1.86: - resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} - - tldts@6.1.86: - resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} - hasBin: true - - tmp@0.2.7: - resolution: {integrity: sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==} - engines: {node: '>=14.14'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} @@ -5302,47 +3447,22 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@5.1.1: - resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} - engines: {node: '>=18'} - - traverse@0.3.9: - resolution: {integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==} - trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - - ts-morph@28.0.0: - resolution: {integrity: sha512-Wp3tnZ2bzwxyTZMtgWVzXDfm7lB1Drz+y9DmmYH/L702PQhPyVrp3pkou3yIz4qjS14GY9kcpmLiOOMvl8oG1g==} - ts-tqdm@0.8.6: resolution: {integrity: sha512-3X3M1PZcHtgQbnwizL+xU8CAgbYbeLHrrDwL9xxcZZrV5J+e7loJm1XrXozHjSkl44J0Zg0SgA8rXbh83kCkcQ==} tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsx@4.23.0: - resolution: {integrity: sha512-eUdUIaCr963q2h5u3+QwvYp0+eqPvn+egeqZUm0hwERCqqx1E3kK5ehbGCvqSE5MQAULr67ww0cA3jKc3YkM1w==} - engines: {node: '>=18.0.0'} - hasBin: true - - tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} - turbo@2.9.14: resolution: {integrity: sha512-BQqXRr4UoWI3UPFrtznCLykYHxwxWh53iCB57x092jPMjIlW1wnm3N895g5irpiXmnxUhREBB0n6+y8BHhs4nw==} hasBin: true - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - type-is@2.1.0: resolution: {integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==} engines: {node: '>= 18'} @@ -5352,11 +3472,6 @@ packages: engines: {node: '>=14.17'} hasBin: true - typescript@6.0.3: - resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} - engines: {node: '>=14.17'} - hasBin: true - undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -5394,17 +3509,10 @@ packages: unist-util-visit@5.1.0: resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} - universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unzipper@0.10.14: - resolution: {integrity: sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==} - urlpattern-polyfill@10.1.0: resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==} @@ -5433,14 +3541,6 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). - hasBin: true - vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -5464,14 +3564,6 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - - whatwg-url@14.2.0: - resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} - engines: {node: '>=18'} - whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -5485,13 +3577,6 @@ packages: engines: {node: ^16.13.0 || >=18.0.0} hasBin: true - widest-line@3.1.0: - resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} - engines: {node: '>=8'} - - wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - workerd@1.20260526.1: resolution: {integrity: sha512-IHzymht98p10JH1zzwdCpbViAqw97HrwKl7+KfZeASFMsYSrIsAULWdPn0LRC5FTUzBpamLNyKCCKxbgXHgRHQ==} engines: {node: '>=16'} @@ -5507,10 +3592,6 @@ packages: '@cloudflare/workers-types': optional: true - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - wrap-ansi@9.0.2: resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} @@ -5530,39 +3611,10 @@ packages: utf-8-validate: optional: true - xml-crypto@6.1.2: - resolution: {integrity: sha512-leBOVQdVi8FvPJrMYoum7Ici9qyxfE4kVi+AkpUoYCSXaQF4IlBm1cneTK9oAxR61LpYxTx7lNcsnBIeRpGW2w==} - engines: {node: '>=16'} - - xml-escape@1.1.0: - resolution: {integrity: sha512-B/T4sDK8Z6aUh/qNr7mjKAwwncIljFuUP+DO/D5hloYFj+90O88z8Wf7oSucZTHxBAsC1/CTP4rtx/x1Uf72Mg==} - xml-naming@0.1.0: resolution: {integrity: sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==} engines: {node: '>=16.0.0'} - xml@1.0.1: - resolution: {integrity: sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==} - - xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - - xpath@0.0.32: - resolution: {integrity: sha512-rxMJhSIoiO8vXcWvSifKqhvV96GjiD5wYb8/QHdoRyQvraTpp4IEv944nhGausZZ3u7dhQXteZuZbaqfpB7uYw==} - engines: {node: '>=0.6.0'} - - xpath@0.0.33: - resolution: {integrity: sha512-NNXnzrkDrAzalLhIUc01jO2mOzXGXh1JwPgkihcLLzw98c0WgYDmmjSh1Kl3wzaxSVWMuA+fe0WTWOBDWCBmNA==} - engines: {node: '>=0.6.0'} - - xpath@0.0.34: - resolution: {integrity: sha512-FxF6+rkr1rNSQrhUNYrAFJpRXNzlDoMxeXN5qI84939ylEv3qqPFKa85Oxr6tDaJKqwW6KKyo2v26TSv3k6LeA==} - engines: {node: '>=0.6.0'} - - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -5586,15 +3638,6 @@ packages: youch@4.1.0-beta.10: resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==} - zip-stream@4.1.1: - resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} - engines: {node: '>= 10'} - - zod-to-json-schema@3.25.2: - resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==} - peerDependencies: - zod: ^3.25.28 || ^4 - zod@4.4.3: resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} @@ -5644,12 +3687,6 @@ snapshots: '@ast-grep/napi-win32-ia32-msvc': 0.40.5 '@ast-grep/napi-win32-x64-msvc': 0.40.5 - '@authenio/xml-encryption@2.0.2': - dependencies: - '@xmldom/xmldom': 0.8.13 - escape-html: 1.0.3 - xpath: 0.0.32 - '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 @@ -6208,237 +4245,6 @@ snapshots: '@aws/lambda-invoke-store@0.2.4': {} - '@babel/runtime@7.29.2': {} - - '@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0)': - dependencies: - '@better-auth/utils': 0.4.2 - '@better-fetch/fetch': 1.3.1 - '@opentelemetry/semantic-conventions': 1.41.1 - '@standard-schema/spec': 1.1.0 - better-call: 1.3.7(zod@4.4.3) - jose: 6.2.3 - kysely: 0.29.2 - nanostores: 1.3.0 - zod: 4.4.3 - optionalDependencies: - '@opentelemetry/api': 1.9.1 - - '@better-auth/drizzle-adapter@1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)': - dependencies: - '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0) - '@better-auth/utils': 0.4.2 - - '@better-auth/kysely-adapter@1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(kysely@0.29.2)': - dependencies: - '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0) - '@better-auth/utils': 0.4.2 - optionalDependencies: - kysely: 0.29.2 - - '@better-auth/memory-adapter@1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)': - dependencies: - '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0) - '@better-auth/utils': 0.4.2 - - '@better-auth/mongo-adapter@1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(mongodb@7.5.0)': - dependencies: - '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0) - '@better-auth/utils': 0.4.2 - optionalDependencies: - mongodb: 7.5.0 - - '@better-auth/oauth-provider@1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-auth@1.6.23(@opentelemetry/api@1.9.1)(better-sqlite3@12.11.1)(mongodb@7.5.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(better-call@1.3.7(zod@4.4.3))': - dependencies: - '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0) - '@better-auth/utils': 0.4.2 - '@better-fetch/fetch': 1.3.1 - better-auth: 1.6.23(@opentelemetry/api@1.9.1)(better-sqlite3@12.11.1)(mongodb@7.5.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - better-call: 1.3.7(zod@4.4.3) - jose: 6.2.3 - zod: 4.4.3 - - '@better-auth/prisma-adapter@1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)': - dependencies: - '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0) - '@better-auth/utils': 0.4.2 - - '@better-auth/scim@1.7.0-rc.1(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(better-auth@1.6.23(@opentelemetry/api@1.9.1)(better-sqlite3@12.11.1)(mongodb@7.5.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(better-call@1.3.7(zod@4.4.3))': - dependencies: - '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0) - '@better-auth/utils': 0.4.2 - better-auth: 1.6.23(@opentelemetry/api@1.9.1)(better-sqlite3@12.11.1)(mongodb@7.5.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - better-call: 1.3.7(zod@4.4.3) - zod: 4.4.3 - - '@better-auth/sso@1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-auth@1.6.23(@opentelemetry/api@1.9.1)(better-sqlite3@12.11.1)(mongodb@7.5.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(better-call@1.3.7(zod@4.4.3))': - dependencies: - '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0) - '@better-auth/utils': 0.4.2 - '@better-fetch/fetch': 1.3.1 - better-auth: 1.6.23(@opentelemetry/api@1.9.1)(better-sqlite3@12.11.1)(mongodb@7.5.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - better-call: 1.3.7(zod@4.4.3) - fast-xml-parser: 5.9.3 - jose: 6.2.3 - samlify: 2.13.1 - tldts: 6.1.86 - zod: 4.4.3 - - '@better-auth/telemetry@1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)': - dependencies: - '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0) - '@better-auth/utils': 0.4.2 - '@better-fetch/fetch': 1.3.1 - - '@better-auth/utils@0.4.2': - dependencies: - '@noble/hashes': 2.2.0 - - '@better-fetch/fetch@1.3.1': {} - - '@changesets/apply-release-plan@7.1.1': - dependencies: - '@changesets/config': 3.1.4 - '@changesets/get-version-range-type': 0.4.0 - '@changesets/git': 3.0.4 - '@changesets/should-skip-package': 0.1.2 - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - detect-indent: 6.1.0 - fs-extra: 7.0.1 - lodash.startcase: 4.4.0 - outdent: 0.5.0 - prettier: 2.8.8 - resolve-from: 5.0.0 - semver: 7.8.1 - - '@changesets/assemble-release-plan@6.0.10': - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.4 - '@changesets/should-skip-package': 0.1.2 - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - semver: 7.8.1 - - '@changesets/changelog-git@0.2.1': - dependencies: - '@changesets/types': 6.1.0 - - '@changesets/cli@2.31.0(@types/node@25.9.1)': - dependencies: - '@changesets/apply-release-plan': 7.1.1 - '@changesets/assemble-release-plan': 6.0.10 - '@changesets/changelog-git': 0.2.1 - '@changesets/config': 3.1.4 - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.4 - '@changesets/get-release-plan': 4.0.16 - '@changesets/git': 3.0.4 - '@changesets/logger': 0.1.1 - '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.7 - '@changesets/should-skip-package': 0.1.2 - '@changesets/types': 6.1.0 - '@changesets/write': 0.4.0 - '@inquirer/external-editor': 1.0.3(@types/node@25.9.1) - '@manypkg/get-packages': 1.1.3 - ansi-colors: 4.1.3 - enquirer: 2.4.1 - fs-extra: 7.0.1 - mri: 1.2.0 - package-manager-detector: 0.2.11 - picocolors: 1.1.1 - resolve-from: 5.0.0 - semver: 7.8.1 - spawndamnit: 3.0.1 - term-size: 2.2.1 - transitivePeerDependencies: - - '@types/node' - - '@changesets/config@3.1.4': - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.4 - '@changesets/logger': 0.1.1 - '@changesets/should-skip-package': 0.1.2 - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - micromatch: 4.0.8 - - '@changesets/errors@0.2.0': - dependencies: - extendable-error: 0.1.7 - - '@changesets/get-dependents-graph@2.1.4': - dependencies: - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - picocolors: 1.1.1 - semver: 7.8.1 - - '@changesets/get-release-plan@4.0.16': - dependencies: - '@changesets/assemble-release-plan': 6.0.10 - '@changesets/config': 3.1.4 - '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.7 - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - - '@changesets/get-version-range-type@0.4.0': {} - - '@changesets/git@3.0.4': - dependencies: - '@changesets/errors': 0.2.0 - '@manypkg/get-packages': 1.1.3 - is-subdir: 1.2.0 - micromatch: 4.0.8 - spawndamnit: 3.0.1 - - '@changesets/logger@0.1.1': - dependencies: - picocolors: 1.1.1 - - '@changesets/parse@0.4.3': - dependencies: - '@changesets/types': 6.1.0 - js-yaml: 4.1.1 - - '@changesets/pre@2.0.2': - dependencies: - '@changesets/errors': 0.2.0 - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - fs-extra: 7.0.1 - - '@changesets/read@0.6.7': - dependencies: - '@changesets/git': 3.0.4 - '@changesets/logger': 0.1.1 - '@changesets/parse': 0.4.3 - '@changesets/types': 6.1.0 - fs-extra: 7.0.1 - p-filter: 2.1.0 - picocolors: 1.1.1 - - '@changesets/should-skip-package@0.1.2': - dependencies: - '@changesets/types': 6.1.0 - '@manypkg/get-packages': 1.1.3 - - '@changesets/types@4.1.0': {} - - '@changesets/types@6.1.0': {} - - '@changesets/write@0.4.0': - dependencies: - '@changesets/types': 6.1.0 - fs-extra: 7.0.1 - human-id: 4.1.3 - prettier: 2.8.8 - '@cloudflare/kv-asset-handler@0.5.0': {} '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260526.1)': @@ -6496,9 +4302,6 @@ snapshots: '@esbuild/aix-ppc64@0.28.0': optional: true - '@esbuild/aix-ppc64@0.28.1': - optional: true - '@esbuild/android-arm64@0.25.4': optional: true @@ -6508,9 +4311,6 @@ snapshots: '@esbuild/android-arm64@0.28.0': optional: true - '@esbuild/android-arm64@0.28.1': - optional: true - '@esbuild/android-arm@0.25.4': optional: true @@ -6520,9 +4320,6 @@ snapshots: '@esbuild/android-arm@0.28.0': optional: true - '@esbuild/android-arm@0.28.1': - optional: true - '@esbuild/android-x64@0.25.4': optional: true @@ -6532,9 +4329,6 @@ snapshots: '@esbuild/android-x64@0.28.0': optional: true - '@esbuild/android-x64@0.28.1': - optional: true - '@esbuild/darwin-arm64@0.25.4': optional: true @@ -6544,9 +4338,6 @@ snapshots: '@esbuild/darwin-arm64@0.28.0': optional: true - '@esbuild/darwin-arm64@0.28.1': - optional: true - '@esbuild/darwin-x64@0.25.4': optional: true @@ -6556,9 +4347,6 @@ snapshots: '@esbuild/darwin-x64@0.28.0': optional: true - '@esbuild/darwin-x64@0.28.1': - optional: true - '@esbuild/freebsd-arm64@0.25.4': optional: true @@ -6568,9 +4356,6 @@ snapshots: '@esbuild/freebsd-arm64@0.28.0': optional: true - '@esbuild/freebsd-arm64@0.28.1': - optional: true - '@esbuild/freebsd-x64@0.25.4': optional: true @@ -6580,9 +4365,6 @@ snapshots: '@esbuild/freebsd-x64@0.28.0': optional: true - '@esbuild/freebsd-x64@0.28.1': - optional: true - '@esbuild/linux-arm64@0.25.4': optional: true @@ -6592,9 +4374,6 @@ snapshots: '@esbuild/linux-arm64@0.28.0': optional: true - '@esbuild/linux-arm64@0.28.1': - optional: true - '@esbuild/linux-arm@0.25.4': optional: true @@ -6604,9 +4383,6 @@ snapshots: '@esbuild/linux-arm@0.28.0': optional: true - '@esbuild/linux-arm@0.28.1': - optional: true - '@esbuild/linux-ia32@0.25.4': optional: true @@ -6616,9 +4392,6 @@ snapshots: '@esbuild/linux-ia32@0.28.0': optional: true - '@esbuild/linux-ia32@0.28.1': - optional: true - '@esbuild/linux-loong64@0.25.4': optional: true @@ -6628,9 +4401,6 @@ snapshots: '@esbuild/linux-loong64@0.28.0': optional: true - '@esbuild/linux-loong64@0.28.1': - optional: true - '@esbuild/linux-mips64el@0.25.4': optional: true @@ -6640,9 +4410,6 @@ snapshots: '@esbuild/linux-mips64el@0.28.0': optional: true - '@esbuild/linux-mips64el@0.28.1': - optional: true - '@esbuild/linux-ppc64@0.25.4': optional: true @@ -6652,9 +4419,6 @@ snapshots: '@esbuild/linux-ppc64@0.28.0': optional: true - '@esbuild/linux-ppc64@0.28.1': - optional: true - '@esbuild/linux-riscv64@0.25.4': optional: true @@ -6664,9 +4428,6 @@ snapshots: '@esbuild/linux-riscv64@0.28.0': optional: true - '@esbuild/linux-riscv64@0.28.1': - optional: true - '@esbuild/linux-s390x@0.25.4': optional: true @@ -6676,9 +4437,6 @@ snapshots: '@esbuild/linux-s390x@0.28.0': optional: true - '@esbuild/linux-s390x@0.28.1': - optional: true - '@esbuild/linux-x64@0.25.4': optional: true @@ -6688,9 +4446,6 @@ snapshots: '@esbuild/linux-x64@0.28.0': optional: true - '@esbuild/linux-x64@0.28.1': - optional: true - '@esbuild/netbsd-arm64@0.25.4': optional: true @@ -6700,9 +4455,6 @@ snapshots: '@esbuild/netbsd-arm64@0.28.0': optional: true - '@esbuild/netbsd-arm64@0.28.1': - optional: true - '@esbuild/netbsd-x64@0.25.4': optional: true @@ -6712,9 +4464,6 @@ snapshots: '@esbuild/netbsd-x64@0.28.0': optional: true - '@esbuild/netbsd-x64@0.28.1': - optional: true - '@esbuild/openbsd-arm64@0.25.4': optional: true @@ -6724,9 +4473,6 @@ snapshots: '@esbuild/openbsd-arm64@0.28.0': optional: true - '@esbuild/openbsd-arm64@0.28.1': - optional: true - '@esbuild/openbsd-x64@0.25.4': optional: true @@ -6736,18 +4482,12 @@ snapshots: '@esbuild/openbsd-x64@0.28.0': optional: true - '@esbuild/openbsd-x64@0.28.1': - optional: true - '@esbuild/openharmony-arm64@0.27.3': optional: true '@esbuild/openharmony-arm64@0.28.0': optional: true - '@esbuild/openharmony-arm64@0.28.1': - optional: true - '@esbuild/sunos-x64@0.25.4': optional: true @@ -6757,9 +4497,6 @@ snapshots: '@esbuild/sunos-x64@0.28.0': optional: true - '@esbuild/sunos-x64@0.28.1': - optional: true - '@esbuild/win32-arm64@0.25.4': optional: true @@ -6769,9 +4506,6 @@ snapshots: '@esbuild/win32-arm64@0.28.0': optional: true - '@esbuild/win32-arm64@0.28.1': - optional: true - '@esbuild/win32-ia32@0.25.4': optional: true @@ -6781,9 +4515,6 @@ snapshots: '@esbuild/win32-ia32@0.28.0': optional: true - '@esbuild/win32-ia32@0.28.1': - optional: true - '@esbuild/win32-x64@0.25.4': optional: true @@ -6793,28 +4524,6 @@ snapshots: '@esbuild/win32-x64@0.28.0': optional: true - '@esbuild/win32-x64@0.28.1': - optional: true - - '@fast-csv/format@4.3.5': - dependencies: - '@types/node': 14.18.63 - lodash.escaperegexp: 4.1.2 - lodash.isboolean: 3.0.3 - lodash.isequal: 4.5.0 - lodash.isfunction: 3.0.9 - lodash.isnil: 4.0.0 - - '@fast-csv/parse@4.3.6': - dependencies: - '@types/node': 14.18.63 - lodash.escaperegexp: 4.1.2 - lodash.groupby: 4.6.0 - lodash.isfunction: 3.0.9 - lodash.isnil: 4.0.0 - lodash.isundefined: 3.0.1 - lodash.uniq: 4.5.0 - '@floating-ui/core@1.7.5': dependencies: '@floating-ui/utils': 0.2.11 @@ -6837,14 +4546,6 @@ snapshots: '@tailwindcss/oxide': 4.3.0 tailwindcss: 4.3.0 - '@hono/node-server@1.19.14(hono@4.12.28)': - dependencies: - hono: 4.12.28 - - '@hono/node-server@2.0.8(hono@4.12.30)': - dependencies: - hono: 4.12.30 - '@img/colour@1.1.0': {} '@img/sharp-darwin-arm64@0.34.5': @@ -6941,33 +4642,8 @@ snapshots: '@img/sharp-win32-x64@0.34.5': optional: true - '@inquirer/external-editor@1.0.3(@types/node@25.9.1)': - dependencies: - chardet: 2.1.1 - iconv-lite: 0.7.2 - optionalDependencies: - '@types/node': 25.9.1 - '@isaacs/cliui@9.0.0': {} - '@jitl/quickjs-ffi-types@0.32.0': {} - - '@jitl/quickjs-wasmfile-debug-asyncify@0.32.0': - dependencies: - '@jitl/quickjs-ffi-types': 0.32.0 - - '@jitl/quickjs-wasmfile-debug-sync@0.32.0': - dependencies: - '@jitl/quickjs-ffi-types': 0.32.0 - - '@jitl/quickjs-wasmfile-release-asyncify@0.32.0': - dependencies: - '@jitl/quickjs-ffi-types': 0.32.0 - - '@jitl/quickjs-wasmfile-release-sync@0.32.0': - dependencies: - '@jitl/quickjs-ffi-types': 0.32.0 - '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -6997,24 +4673,6 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@manypkg/find-root@1.1.0': - dependencies: - '@babel/runtime': 7.29.2 - '@types/node': 12.20.55 - find-up: 4.1.0 - fs-extra: 8.1.0 - - '@manypkg/get-packages@1.1.3': - dependencies: - '@babel/runtime': 7.29.2 - '@changesets/types': 4.1.0 - '@manypkg/find-root': 1.1.0 - fs-extra: 8.1.0 - globby: 11.1.0 - read-yaml-file: 1.1.0 - - '@marcbachmann/cel-js@8.0.0': {} - '@mdx-js/mdx@3.1.1': dependencies: '@types/estree': 1.0.9 @@ -7045,32 +4703,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@modelcontextprotocol/sdk@1.29.0(zod@4.4.3)': - dependencies: - '@hono/node-server': 1.19.14(hono@4.12.28) - ajv: 8.20.0 - ajv-formats: 3.0.1(ajv@8.20.0) - content-type: 1.0.5 - cors: 2.8.6 - cross-spawn: 7.0.6 - eventsource: 3.0.7 - eventsource-parser: 3.1.0 - express: 5.2.1 - express-rate-limit: 8.5.2(express@5.2.1) - hono: 4.12.28 - jose: 6.2.3 - json-schema-typed: 8.0.2 - pkce-challenge: 5.0.1 - raw-body: 3.0.2 - zod: 4.4.3 - zod-to-json-schema: 3.25.2(zod@4.4.3) - transitivePeerDependencies: - - supports-color - - '@mongodb-js/saslprep@1.4.11': - dependencies: - sparse-bitfield: 3.0.3 - '@next/env@16.2.6': {} '@next/swc-darwin-arm64@16.2.6': @@ -7099,16 +4731,12 @@ snapshots: '@noble/ciphers@1.3.0': {} - '@noble/ciphers@2.2.0': {} - '@noble/curves@1.9.7': dependencies: '@noble/hashes': 1.8.0 '@noble/hashes@1.8.0': {} - '@noble/hashes@2.2.0': {} - '@nodable/entities@2.2.0': {} '@node-minify/core@8.0.6': @@ -7126,796 +4754,6 @@ snapshots: dependencies: gzip-size: 6.0.0 - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.20.1 - - '@objectstack/account@14.7.0': - dependencies: - '@objectstack/platform-objects': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/cli@14.7.0(@aws-sdk/client-s3@3.984.0)(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(better-sqlite3@12.11.1)(kysely@0.29.2)(mongodb@7.5.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': - dependencies: - '@objectstack/account': 14.7.0 - '@objectstack/client': 14.7.0 - '@objectstack/cloud-connection': 14.7.0(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(better-sqlite3@12.11.1)(kysely@0.29.2)(mongodb@7.5.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@objectstack/console': 14.7.0 - '@objectstack/core': 14.7.0 - '@objectstack/driver-memory': 14.7.0 - '@objectstack/driver-mongodb': 14.7.0 - '@objectstack/driver-sql': 14.7.0(pg@8.22.0) - '@objectstack/driver-sqlite-wasm': 14.7.0(better-sqlite3@12.11.1)(pg@8.22.0) - '@objectstack/formula': 14.7.0 - '@objectstack/lint': 14.7.0 - '@objectstack/mcp': 14.7.0 - '@objectstack/metadata': 14.7.0 - '@objectstack/objectql': 14.7.0 - '@objectstack/observability': 14.7.0 - '@objectstack/platform-objects': 14.7.0 - '@objectstack/plugin-approvals': 14.7.0 - '@objectstack/plugin-audit': 14.7.0 - '@objectstack/plugin-auth': 14.7.0(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(better-sqlite3@12.11.1)(kysely@0.29.2)(mongodb@7.5.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@objectstack/plugin-email': 14.7.0 - '@objectstack/plugin-hono-server': 14.7.0 - '@objectstack/plugin-reports': 14.7.0 - '@objectstack/plugin-security': 14.7.0 - '@objectstack/plugin-sharing': 14.7.0 - '@objectstack/plugin-webhooks': 14.7.0 - '@objectstack/rest': 14.7.0 - '@objectstack/runtime': 14.7.0(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(better-sqlite3@12.11.1)(kysely@0.29.2)(mongodb@7.5.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@objectstack/service-analytics': 14.7.0 - '@objectstack/service-automation': 14.7.0 - '@objectstack/service-cache': 14.7.0 - '@objectstack/service-datasource': 14.7.0 - '@objectstack/service-job': 14.7.0 - '@objectstack/service-messaging': 14.7.0 - '@objectstack/service-package': 14.7.0 - '@objectstack/service-queue': 14.7.0 - '@objectstack/service-realtime': 14.7.0 - '@objectstack/service-settings': 14.7.0 - '@objectstack/service-sms': 14.7.0 - '@objectstack/service-storage': 14.7.0(@aws-sdk/client-s3@3.984.0) - '@objectstack/setup': 14.7.0 - '@objectstack/spec': 14.7.0 - '@objectstack/trigger-api': 14.7.0 - '@objectstack/trigger-record-change': 14.7.0 - '@objectstack/trigger-schedule': 14.7.0 - '@objectstack/types': 14.7.0 - '@objectstack/verify': 14.7.0(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(better-sqlite3@12.11.1)(kysely@0.29.2)(mongodb@7.5.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@oclif/core': 4.11.14 - bundle-require: 5.1.0(esbuild@0.28.1) - chalk: 5.6.2 - chokidar: 5.0.0 - dotenv-flow: 4.1.0 - esbuild: 0.28.1 - ts-morph: 28.0.0 - tsx: 4.23.0 - yaml: 2.9.0 - zod: 4.4.3 - transitivePeerDependencies: - - '@aws-sdk/client-s3' - - '@aws-sdk/credential-providers' - - '@aws-sdk/s3-request-presigner' - - '@better-auth/utils' - - '@better-fetch/fetch' - - '@cfworker/json-schema' - - '@cloudflare/workers-types' - - '@lynx-js/react' - - '@mongodb-js/zstd' - - '@opentelemetry/api' - - '@prisma/client' - - '@sveltejs/kit' - - '@tanstack/react-start' - - '@tanstack/solid-start' - - ai - - better-call - - better-sqlite3 - - drizzle-kit - - drizzle-orm - - gcp-metadata - - kerberos - - kysely - - mariadb - - mongodb - - mongodb-client-encryption - - mysql - - mysql2 - - nanostores - - next - - pg - - pg-native - - pg-query-stream - - prisma - - react - - react-dom - - snappy - - socks - - solid-js - - sqlite3 - - supports-color - - svelte - - tedious - - vitest - - vue - - '@objectstack/client@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - '@objectstack/cloud-connection@14.7.0(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(better-sqlite3@12.11.1)(kysely@0.29.2)(mongodb@7.5.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/runtime': 14.7.0(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(better-sqlite3@12.11.1)(kysely@0.29.2)(mongodb@7.5.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@objectstack/spec': 14.7.0 - '@objectstack/types': 14.7.0 - transitivePeerDependencies: - - '@aws-sdk/credential-providers' - - '@better-auth/utils' - - '@better-fetch/fetch' - - '@cloudflare/workers-types' - - '@lynx-js/react' - - '@mongodb-js/zstd' - - '@opentelemetry/api' - - '@prisma/client' - - '@sveltejs/kit' - - '@tanstack/react-start' - - '@tanstack/solid-start' - - ai - - better-call - - better-sqlite3 - - drizzle-kit - - drizzle-orm - - gcp-metadata - - kerberos - - kysely - - mariadb - - mongodb - - mongodb-client-encryption - - mysql - - mysql2 - - nanostores - - next - - pg - - pg-native - - pg-query-stream - - prisma - - react - - react-dom - - snappy - - socks - - solid-js - - sqlite3 - - supports-color - - svelte - - tedious - - vitest - - vue - - '@objectstack/console@14.7.0': {} - - '@objectstack/core@14.7.0': - dependencies: - '@objectstack/spec': 14.7.0 - zod: 4.4.3 - transitivePeerDependencies: - - ai - - '@objectstack/driver-memory@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/spec': 14.7.0 - mingo: 7.2.2 - transitivePeerDependencies: - - ai - - '@objectstack/driver-mongodb@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/spec': 14.7.0 - mongodb: 7.5.0 - nanoid: 6.0.0 - transitivePeerDependencies: - - '@aws-sdk/credential-providers' - - '@mongodb-js/zstd' - - ai - - gcp-metadata - - kerberos - - mongodb-client-encryption - - snappy - - socks - - '@objectstack/driver-sql@14.7.0(pg@8.22.0)': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/spec': 14.7.0 - '@objectstack/types': 14.7.0 - knex: 3.3.0(better-sqlite3@12.11.1)(pg@8.22.0) - nanoid: 6.0.0 - optionalDependencies: - better-sqlite3: 12.11.1 - pg: 8.22.0 - transitivePeerDependencies: - - ai - - mariadb - - mysql - - pg-native - - pg-query-stream - - supports-color - - '@objectstack/driver-sqlite-wasm@14.7.0(better-sqlite3@12.11.1)(pg@8.22.0)': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/driver-sql': 14.7.0(pg@8.22.0) - '@objectstack/spec': 14.7.0 - knex: 3.3.0(better-sqlite3@12.11.1)(pg@8.22.0) - nanoid: 6.0.0 - sql.js: 1.14.1 - transitivePeerDependencies: - - ai - - better-sqlite3 - - mariadb - - mysql - - mysql2 - - pg - - pg-native - - pg-query-stream - - sqlite3 - - supports-color - - tedious - - '@objectstack/formula@14.7.0': - dependencies: - '@marcbachmann/cel-js': 8.0.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - '@objectstack/lint@14.7.0': - dependencies: - '@objectstack/formula': 14.7.0 - '@objectstack/sdui-parser': 14.7.0 - '@objectstack/spec': 14.7.0 - sucrase: 3.35.1 - typescript: 6.0.3 - transitivePeerDependencies: - - ai - - '@objectstack/mcp@14.7.0': - dependencies: - '@modelcontextprotocol/sdk': 1.29.0(zod@4.4.3) - '@objectstack/core': 14.7.0 - '@objectstack/spec': 14.7.0 - '@objectstack/types': 14.7.0 - zod: 4.4.3 - transitivePeerDependencies: - - '@cfworker/json-schema' - - ai - - supports-color - - '@objectstack/metadata-core@14.7.0': - dependencies: - '@objectstack/spec': 14.7.0 - zod: 4.4.3 - transitivePeerDependencies: - - ai - - '@objectstack/metadata-fs@14.7.0': - dependencies: - '@objectstack/metadata-core': 14.7.0 - chokidar: 5.0.0 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/metadata-protocol@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/formula': 14.7.0 - '@objectstack/metadata-core': 14.7.0 - '@objectstack/spec': 14.7.0 - '@objectstack/types': 14.7.0 - zod: 4.4.3 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/metadata@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/metadata-core': 14.7.0 - '@objectstack/metadata-fs': 14.7.0 - '@objectstack/platform-objects': 14.7.0 - '@objectstack/spec': 14.7.0 - '@objectstack/types': 14.7.0 - chokidar: 5.0.0 - glob: 13.0.6 - js-yaml: 5.2.1 - zod: 4.4.3 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/objectql@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/formula': 14.7.0 - '@objectstack/metadata-core': 14.7.0 - '@objectstack/metadata-protocol': 14.7.0 - '@objectstack/spec': 14.7.0 - '@objectstack/types': 14.7.0 - ajv: 8.20.0 - zod: 4.4.3 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/observability@14.7.0': - dependencies: - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - '@objectstack/platform-objects@14.7.0': - dependencies: - '@objectstack/metadata-core': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/plugin-approvals@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/formula': 14.7.0 - '@objectstack/metadata-core': 14.7.0 - '@objectstack/platform-objects': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/plugin-audit@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/platform-objects': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/plugin-auth@14.7.0(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(better-sqlite3@12.11.1)(kysely@0.29.2)(mongodb@7.5.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': - dependencies: - '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0) - '@better-auth/oauth-provider': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-auth@1.6.23(@opentelemetry/api@1.9.1)(better-sqlite3@12.11.1)(mongodb@7.5.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(better-call@1.3.7(zod@4.4.3)) - '@better-auth/scim': 1.7.0-rc.1(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(better-auth@1.6.23(@opentelemetry/api@1.9.1)(better-sqlite3@12.11.1)(mongodb@7.5.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(better-call@1.3.7(zod@4.4.3)) - '@better-auth/sso': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(better-auth@1.6.23(@opentelemetry/api@1.9.1)(better-sqlite3@12.11.1)(mongodb@7.5.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(better-call@1.3.7(zod@4.4.3)) - '@noble/hashes': 2.2.0 - '@objectstack/core': 14.7.0 - '@objectstack/platform-objects': 14.7.0 - '@objectstack/rest': 14.7.0 - '@objectstack/spec': 14.7.0 - '@objectstack/types': 14.7.0 - better-auth: 1.6.23(@opentelemetry/api@1.9.1)(better-sqlite3@12.11.1)(mongodb@7.5.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - jose: 6.2.3 - transitivePeerDependencies: - - '@better-auth/utils' - - '@better-fetch/fetch' - - '@cloudflare/workers-types' - - '@lynx-js/react' - - '@opentelemetry/api' - - '@prisma/client' - - '@sveltejs/kit' - - '@tanstack/react-start' - - '@tanstack/solid-start' - - ai - - better-call - - better-sqlite3 - - drizzle-kit - - drizzle-orm - - kysely - - mongodb - - mysql2 - - nanostores - - next - - pg - - prisma - - react - - react-dom - - solid-js - - svelte - - vitest - - vue - - '@objectstack/plugin-email@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/formula': 14.7.0 - '@objectstack/platform-objects': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/plugin-hono-server@14.7.0': - dependencies: - '@hono/node-server': 2.0.8(hono@4.12.30) - '@objectstack/core': 14.7.0 - '@objectstack/observability': 14.7.0 - '@objectstack/spec': 14.7.0 - '@objectstack/types': 14.7.0 - hono: 4.12.30 - transitivePeerDependencies: - - ai - - '@objectstack/plugin-reports@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/platform-objects': 14.7.0 - '@objectstack/spec': 14.7.0 - croner: 10.0.1 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/plugin-security@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/formula': 14.7.0 - '@objectstack/platform-objects': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/plugin-sharing@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/formula': 14.7.0 - '@objectstack/objectql': 14.7.0 - '@objectstack/platform-objects': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/plugin-webhooks@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/service-messaging': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - '@objectstack/rest@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/platform-objects': 14.7.0 - '@objectstack/service-package': 14.7.0 - '@objectstack/spec': 14.7.0 - '@objectstack/types': 14.7.0 - exceljs: 4.4.0 - zod: 4.4.3 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/runtime@14.7.0(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(better-sqlite3@12.11.1)(kysely@0.29.2)(mongodb@7.5.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/driver-memory': 14.7.0 - '@objectstack/driver-sql': 14.7.0(pg@8.22.0) - '@objectstack/driver-sqlite-wasm': 14.7.0(better-sqlite3@12.11.1)(pg@8.22.0) - '@objectstack/formula': 14.7.0 - '@objectstack/metadata': 14.7.0 - '@objectstack/objectql': 14.7.0 - '@objectstack/observability': 14.7.0 - '@objectstack/plugin-auth': 14.7.0(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(better-sqlite3@12.11.1)(kysely@0.29.2)(mongodb@7.5.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@objectstack/plugin-security': 14.7.0 - '@objectstack/rest': 14.7.0 - '@objectstack/service-cluster': 14.7.0 - '@objectstack/service-datasource': 14.7.0 - '@objectstack/service-i18n': 14.7.0 - '@objectstack/spec': 14.7.0 - '@objectstack/types': 14.7.0 - quickjs-emscripten: 0.32.0 - zod: 4.4.3 - optionalDependencies: - '@objectstack/driver-mongodb': 14.7.0 - transitivePeerDependencies: - - '@aws-sdk/credential-providers' - - '@better-auth/utils' - - '@better-fetch/fetch' - - '@cloudflare/workers-types' - - '@lynx-js/react' - - '@mongodb-js/zstd' - - '@opentelemetry/api' - - '@prisma/client' - - '@sveltejs/kit' - - '@tanstack/react-start' - - '@tanstack/solid-start' - - ai - - better-call - - better-sqlite3 - - drizzle-kit - - drizzle-orm - - gcp-metadata - - kerberos - - kysely - - mariadb - - mongodb - - mongodb-client-encryption - - mysql - - mysql2 - - nanostores - - next - - pg - - pg-native - - pg-query-stream - - prisma - - react - - react-dom - - snappy - - socks - - solid-js - - sqlite3 - - supports-color - - svelte - - tedious - - vitest - - vue - - '@objectstack/sdui-parser@14.7.0': {} - - '@objectstack/service-analytics@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - '@objectstack/service-automation@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/formula': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - '@objectstack/service-cache@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/observability': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - '@objectstack/service-cluster@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - '@objectstack/service-datasource@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - '@objectstack/service-i18n@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - '@objectstack/service-job@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/platform-objects': 14.7.0 - '@objectstack/spec': 14.7.0 - croner: 10.0.1 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/service-messaging@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - '@objectstack/service-package@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - '@objectstack/service-queue@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/platform-objects': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/service-realtime@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/platform-objects': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/service-settings@14.7.0': - dependencies: - '@noble/ciphers': 2.2.0 - '@objectstack/core': 14.7.0 - '@objectstack/platform-objects': 14.7.0 - '@objectstack/spec': 14.7.0 - '@objectstack/types': 14.7.0 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/service-sms@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - '@objectstack/service-storage@14.7.0(@aws-sdk/client-s3@3.984.0)': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/observability': 14.7.0 - '@objectstack/platform-objects': 14.7.0 - '@objectstack/spec': 14.7.0 - optionalDependencies: - '@aws-sdk/client-s3': 3.984.0 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/setup@14.7.0': - dependencies: - '@objectstack/platform-objects': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - vitest - - '@objectstack/spec@14.7.0': - dependencies: - zod: 4.4.3 - - '@objectstack/trigger-api@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - '@objectstack/trigger-record-change@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - '@objectstack/trigger-schedule@14.7.0': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - '@objectstack/types@14.7.0': - dependencies: - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - ai - - '@objectstack/verify@14.7.0(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(better-sqlite3@12.11.1)(kysely@0.29.2)(mongodb@7.5.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': - dependencies: - '@objectstack/core': 14.7.0 - '@objectstack/driver-sqlite-wasm': 14.7.0(better-sqlite3@12.11.1)(pg@8.22.0) - '@objectstack/objectql': 14.7.0 - '@objectstack/plugin-auth': 14.7.0(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(better-sqlite3@12.11.1)(kysely@0.29.2)(mongodb@7.5.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@objectstack/plugin-hono-server': 14.7.0 - '@objectstack/plugin-security': 14.7.0 - '@objectstack/plugin-sharing': 14.7.0 - '@objectstack/rest': 14.7.0 - '@objectstack/runtime': 14.7.0(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(better-sqlite3@12.11.1)(kysely@0.29.2)(mongodb@7.5.0)(nanostores@1.3.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - '@objectstack/service-analytics': 14.7.0 - '@objectstack/service-automation': 14.7.0 - '@objectstack/service-datasource': 14.7.0 - '@objectstack/service-settings': 14.7.0 - '@objectstack/spec': 14.7.0 - transitivePeerDependencies: - - '@aws-sdk/credential-providers' - - '@better-auth/utils' - - '@better-fetch/fetch' - - '@cloudflare/workers-types' - - '@lynx-js/react' - - '@mongodb-js/zstd' - - '@opentelemetry/api' - - '@prisma/client' - - '@sveltejs/kit' - - '@tanstack/react-start' - - '@tanstack/solid-start' - - ai - - better-call - - better-sqlite3 - - drizzle-kit - - drizzle-orm - - gcp-metadata - - kerberos - - kysely - - mariadb - - mongodb - - mongodb-client-encryption - - mysql - - mysql2 - - nanostores - - next - - pg - - pg-native - - pg-query-stream - - prisma - - react - - react-dom - - snappy - - socks - - solid-js - - sqlite3 - - supports-color - - svelte - - tedious - - vitest - - vue - - '@oclif/core@4.11.14': - dependencies: - ansi-escapes: 4.3.2 - ansis: 3.17.0 - clean-stack: 3.0.1 - cli-spinners: 2.9.2 - debug: 4.4.3(supports-color@8.1.1) - ejs: 3.1.10 - get-package-type: 0.1.0 - indent-string: 4.0.0 - is-wsl: 2.2.0 - lilconfig: 3.1.3 - minimatch: 10.2.5 - semver: 7.8.1 - string-width: 4.2.3 - supports-color: 8.1.1 - tinyglobby: 0.2.17 - widest-line: 3.1.0 - wordwrap: 1.0.0 - wrap-ansi: 7.0.0 - '@opennextjs/aws@4.0.2(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))': dependencies: '@ast-grep/napi': 0.40.5 @@ -7960,8 +4798,6 @@ snapshots: '@opentelemetry/api@1.9.1': optional: true - '@opentelemetry/semantic-conventions@1.41.1': {} - '@orama/orama@3.1.18': {} '@poppinss/colors@4.1.6': @@ -8677,59 +5513,6 @@ snapshots: '@tanstack/store@0.9.3': optional: true - '@tauri-apps/cli-darwin-arm64@2.11.2': - optional: true - - '@tauri-apps/cli-darwin-x64@2.11.2': - optional: true - - '@tauri-apps/cli-linux-arm-gnueabihf@2.11.2': - optional: true - - '@tauri-apps/cli-linux-arm64-gnu@2.11.2': - optional: true - - '@tauri-apps/cli-linux-arm64-musl@2.11.2': - optional: true - - '@tauri-apps/cli-linux-riscv64-gnu@2.11.2': - optional: true - - '@tauri-apps/cli-linux-x64-gnu@2.11.2': - optional: true - - '@tauri-apps/cli-linux-x64-musl@2.11.2': - optional: true - - '@tauri-apps/cli-win32-arm64-msvc@2.11.2': - optional: true - - '@tauri-apps/cli-win32-ia32-msvc@2.11.2': - optional: true - - '@tauri-apps/cli-win32-x64-msvc@2.11.2': - optional: true - - '@tauri-apps/cli@2.11.2': - optionalDependencies: - '@tauri-apps/cli-darwin-arm64': 2.11.2 - '@tauri-apps/cli-darwin-x64': 2.11.2 - '@tauri-apps/cli-linux-arm-gnueabihf': 2.11.2 - '@tauri-apps/cli-linux-arm64-gnu': 2.11.2 - '@tauri-apps/cli-linux-arm64-musl': 2.11.2 - '@tauri-apps/cli-linux-riscv64-gnu': 2.11.2 - '@tauri-apps/cli-linux-x64-gnu': 2.11.2 - '@tauri-apps/cli-linux-x64-musl': 2.11.2 - '@tauri-apps/cli-win32-arm64-msvc': 2.11.2 - '@tauri-apps/cli-win32-ia32-msvc': 2.11.2 - '@tauri-apps/cli-win32-x64-msvc': 2.11.2 - - '@ts-morph/common@0.29.0': - dependencies: - minimatch: 10.2.5 - path-browserify: 1.0.1 - tinyglobby: 0.2.17 - '@tsconfig/node18@1.0.3': {} '@turbo/darwin-64@2.9.14': @@ -8779,10 +5562,6 @@ snapshots: '@types/node': 25.9.1 form-data: 4.0.5 - '@types/node@12.20.55': {} - - '@types/node@14.18.63': {} - '@types/node@18.19.130': dependencies: undici-types: 5.26.5 @@ -8803,18 +5582,8 @@ snapshots: '@types/unist@3.0.3': {} - '@types/webidl-conversions@7.0.3': {} - - '@types/whatwg-url@13.0.0': - dependencies: - '@types/webidl-conversions': 7.0.3 - '@ungap/structured-clone@1.3.1': {} - '@xmldom/is-dom-node@1.0.1': {} - - '@xmldom/xmldom@0.8.13': {} - abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -8834,79 +5603,16 @@ snapshots: dependencies: humanize-ms: 1.2.1 - ajv-formats@3.0.1(ajv@8.20.0): - optionalDependencies: - ajv: 8.20.0 - - ajv@8.20.0: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.1.2 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - ansi-colors@4.1.3: {} - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - ansi-regex@5.0.1: {} ansi-regex@6.2.2: {} - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - ansi-styles@6.2.3: {} - ansis@3.17.0: {} - - any-promise@1.3.0: {} - anynum@1.0.1: {} - archiver-utils@2.1.0: - dependencies: - glob: 7.2.3 - graceful-fs: 4.2.11 - lazystream: 1.0.1 - lodash.defaults: 4.2.0 - lodash.difference: 4.5.0 - lodash.flatten: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.union: 4.6.0 - normalize-path: 3.0.0 - readable-stream: 2.3.8 - - archiver-utils@3.0.4: - dependencies: - glob: 7.2.3 - graceful-fs: 4.2.11 - lazystream: 1.0.1 - lodash.defaults: 4.2.0 - lodash.difference: 4.5.0 - lodash.flatten: 4.4.0 - lodash.isplainobject: 4.0.6 - lodash.union: 4.6.0 - normalize-path: 3.0.0 - readable-stream: 3.6.2 - - archiver@5.3.2: - dependencies: - archiver-utils: 2.1.0 - async: 3.2.6 - buffer-crc32: 0.2.13 - readable-stream: 3.6.2 - readdir-glob: 1.1.3 - tar-stream: 2.2.0 - zip-stream: 4.1.1 - - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - argparse@2.0.1: {} aria-hidden@1.2.6: @@ -8915,16 +5621,8 @@ snapshots: array-timsort@1.0.3: {} - array-union@2.1.0: {} - - asn1@0.2.6: - dependencies: - safer-buffer: 2.1.2 - astring@1.9.0: {} - async@3.2.6: {} - asynckit@0.4.0: {} aws4fetch@1.0.20: {} @@ -8935,86 +5633,15 @@ snapshots: balanced-match@4.0.4: {} - base64-js@1.5.1: {} - baseline-browser-mapping@2.10.32: {} - better-auth@1.6.23(@opentelemetry/api@1.9.1)(better-sqlite3@12.11.1)(mongodb@7.5.0)(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(pg@8.22.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6): - dependencies: - '@better-auth/core': 1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0) - '@better-auth/drizzle-adapter': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2) - '@better-auth/kysely-adapter': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(kysely@0.29.2) - '@better-auth/memory-adapter': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2) - '@better-auth/mongo-adapter': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(mongodb@7.5.0) - '@better-auth/prisma-adapter': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2) - '@better-auth/telemetry': 1.6.23(@better-auth/core@1.6.23(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.3)(kysely@0.29.2)(nanostores@1.3.0))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1) - '@better-auth/utils': 0.4.2 - '@better-fetch/fetch': 1.3.1 - '@noble/ciphers': 2.2.0 - '@noble/hashes': 2.2.0 - better-call: 1.3.7(zod@4.4.3) - defu: 6.1.7 - jose: 6.2.3 - kysely: 0.29.2 - nanostores: 1.3.0 - zod: 4.4.3 - optionalDependencies: - better-sqlite3: 12.11.1 - mongodb: 7.5.0 - next: 16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) - pg: 8.22.0 - react: 19.2.6 - react-dom: 19.2.6(react@19.2.6) - transitivePeerDependencies: - - '@cloudflare/workers-types' - - '@opentelemetry/api' - - better-call@1.3.7(zod@4.4.3): - dependencies: - '@better-auth/utils': 0.4.2 - '@better-fetch/fetch': 1.3.1 - rou3: 0.7.12 - set-cookie-parser: 3.1.0 - optionalDependencies: - zod: 4.4.3 - - better-path-resolve@1.0.0: - dependencies: - is-windows: 1.0.2 - - better-sqlite3@12.11.1: - dependencies: - bindings: 1.5.0 - prebuild-install: 7.1.3 - optional: true - - big-integer@1.6.52: {} - - binary@0.3.0: - dependencies: - buffers: 0.1.1 - chainsaw: 0.1.0 - - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - optional: true - - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - blake3-wasm@2.1.5: {} - bluebird@3.4.7: {} - body-parser@2.2.2: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 http-errors: 2.0.1 iconv-lite: 0.7.2 on-finished: 2.4.1 @@ -9026,11 +5653,6 @@ snapshots: bowser@2.14.1: {} - brace-expansion@1.1.15: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - brace-expansion@2.1.1: dependencies: balanced-match: 1.0.2 @@ -9039,30 +5661,8 @@ snapshots: dependencies: balanced-match: 4.0.4 - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - bson@7.2.0: {} - - buffer-crc32@0.2.13: {} - buffer-from@1.1.2: {} - buffer-indexof-polyfill@1.0.2: {} - - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - buffers@0.1.1: {} - - bundle-require@5.1.0(esbuild@0.28.1): - dependencies: - esbuild: 0.28.1 - load-tsconfig: 0.2.5 - bytes@3.1.2: {} call-bind-apply-helpers@1.0.2: @@ -9079,10 +5679,6 @@ snapshots: ccount@2.0.1: {} - chainsaw@0.1.0: - dependencies: - traverse: 0.3.9 - chalk@5.6.2: {} character-entities-html4@2.1.0: {} @@ -9093,27 +5689,16 @@ snapshots: character-reference-invalid@2.0.1: {} - chardet@2.1.1: {} - chokidar@5.0.0: dependencies: readdirp: 5.0.0 - chownr@1.1.4: - optional: true - ci-info@4.4.0: {} class-variance-authority@0.7.1: dependencies: clsx: 2.1.1 - clean-stack@3.0.1: - dependencies: - escape-string-regexp: 4.0.0 - - cli-spinners@2.9.2: {} - client-only@0.0.1: {} cliui@9.0.1: @@ -9136,48 +5721,25 @@ snapshots: clsx@2.1.1: {} - code-block-writer@13.0.3: {} - collapse-white-space@2.1.0: {} - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - colorette@2.0.19: {} - combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 comma-separated-tokens@2.0.3: {} - commander@10.0.1: {} - commander@11.1.0: {} commander@2.20.3: {} - commander@4.1.1: {} - comment-json@4.6.2: dependencies: array-timsort: 1.0.3 esprima: 4.0.1 - compress-commons@4.1.2: - dependencies: - buffer-crc32: 0.2.13 - crc32-stream: 4.0.3 - normalize-path: 3.0.0 - readable-stream: 3.6.2 - compute-scroll-into-view@3.1.1: {} - concat-map@0.0.1: {} - content-disposition@1.1.0: {} content-type@1.0.5: {} @@ -9193,22 +5755,6 @@ snapshots: cookie@1.1.1: {} - core-util-is@1.0.3: {} - - cors@2.8.6: - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - - crc-32@1.2.2: {} - - crc32-stream@4.0.3: - dependencies: - crc-32: 1.2.2 - readable-stream: 3.6.2 - - croner@10.0.1: {} - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -9217,40 +5763,20 @@ snapshots: csstype@3.2.3: {} - dayjs@1.11.21: {} - - debug@4.3.4: - dependencies: - ms: 2.1.2 - - debug@4.4.3(supports-color@8.1.1): + debug@4.4.3: dependencies: ms: 2.1.3 - optionalDependencies: - supports-color: 8.1.1 decode-named-character-reference@1.3.0: dependencies: character-entities: 2.0.2 - decompress-response@6.0.0: - dependencies: - mimic-response: 3.1.0 - optional: true - - deep-extend@0.6.0: - optional: true - - defu@6.1.7: {} - delayed-stream@1.0.0: {} depd@2.0.0: {} dequal@2.0.3: {} - detect-indent@6.1.0: {} - detect-libc@2.1.2: {} detect-node-es@1.1.0: {} @@ -9259,14 +5785,6 @@ snapshots: dependencies: dequal: 2.0.3 - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - dotenv-flow@4.1.0: - dependencies: - dotenv: 16.6.1 - dotenv@16.6.1: {} dunder-proto@1.0.1: @@ -9275,10 +5793,6 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - duplexer2@0.1.4: - dependencies: - readable-stream: 2.3.8 - duplexer@0.1.2: {} eciesjs@0.4.18: @@ -9290,20 +5804,10 @@ snapshots: ee-first@1.1.1: {} - ejs@3.1.10: - dependencies: - jake: 10.9.4 - emoji-regex@10.6.0: {} - emoji-regex@8.0.0: {} - encodeurl@2.0.0: {} - end-of-stream@1.4.5: - dependencies: - once: 1.4.0 - enhanced-resolve@5.22.0: dependencies: graceful-fs: 4.2.11 @@ -9433,45 +5937,12 @@ snapshots: '@esbuild/win32-ia32': 0.28.0 '@esbuild/win32-x64': 0.28.0 - esbuild@0.28.1: - optionalDependencies: - '@esbuild/aix-ppc64': 0.28.1 - '@esbuild/android-arm': 0.28.1 - '@esbuild/android-arm64': 0.28.1 - '@esbuild/android-x64': 0.28.1 - '@esbuild/darwin-arm64': 0.28.1 - '@esbuild/darwin-x64': 0.28.1 - '@esbuild/freebsd-arm64': 0.28.1 - '@esbuild/freebsd-x64': 0.28.1 - '@esbuild/linux-arm': 0.28.1 - '@esbuild/linux-arm64': 0.28.1 - '@esbuild/linux-ia32': 0.28.1 - '@esbuild/linux-loong64': 0.28.1 - '@esbuild/linux-mips64el': 0.28.1 - '@esbuild/linux-ppc64': 0.28.1 - '@esbuild/linux-riscv64': 0.28.1 - '@esbuild/linux-s390x': 0.28.1 - '@esbuild/linux-x64': 0.28.1 - '@esbuild/netbsd-arm64': 0.28.1 - '@esbuild/netbsd-x64': 0.28.1 - '@esbuild/openbsd-arm64': 0.28.1 - '@esbuild/openbsd-x64': 0.28.1 - '@esbuild/openharmony-arm64': 0.28.1 - '@esbuild/sunos-x64': 0.28.1 - '@esbuild/win32-arm64': 0.28.1 - '@esbuild/win32-ia32': 0.28.1 - '@esbuild/win32-x64': 0.28.1 - escalade@3.2.0: {} escape-html@1.0.3: {} - escape-string-regexp@4.0.0: {} - escape-string-regexp@5.0.0: {} - esm@3.2.25: {} - esprima@4.0.1: {} estree-util-attach-comments@3.0.0: @@ -9515,24 +5986,6 @@ snapshots: event-target-shim@5.0.1: {} - eventsource-parser@3.1.0: {} - - eventsource@3.0.7: - dependencies: - eventsource-parser: 3.1.0 - - exceljs@4.4.0: - dependencies: - archiver: 5.3.2 - dayjs: 1.11.21 - fast-csv: 4.3.6 - jszip: 3.10.1 - readable-stream: 3.6.2 - saxes: 5.0.1 - tmp: 0.2.7 - unzipper: 0.10.14 - uuid: 8.3.2 - execa@5.1.1: dependencies: cross-spawn: 7.0.6 @@ -9545,14 +5998,6 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - expand-template@2.0.3: - optional: true - - express-rate-limit@8.5.2(express@5.2.1): - dependencies: - express: 5.2.1 - ip-address: 10.2.0 - express@5.2.1: dependencies: accepts: 2.0.0 @@ -9561,7 +6006,7 @@ snapshots: content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 depd: 2.0.0 encodeurl: 2.0.0 escape-html: 1.0.3 @@ -9588,25 +6033,6 @@ snapshots: extend@3.0.2: {} - extendable-error@0.1.7: {} - - fast-csv@4.3.6: - dependencies: - '@fast-csv/format': 4.3.5 - '@fast-csv/parse': 4.3.6 - - fast-deep-equal@3.1.3: {} - - fast-glob@3.3.3: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fast-uri@3.1.2: {} - fast-xml-builder@1.2.0: dependencies: path-expression-matcher: 1.5.0 @@ -9619,37 +6045,13 @@ snapshots: path-expression-matcher: 1.5.0 strnum: 2.4.1 - fast-xml-parser@5.9.3: - dependencies: - '@nodable/entities': 2.2.0 - fast-xml-builder: 1.2.0 - is-unsafe: 1.0.1 - path-expression-matcher: 1.5.0 - strnum: 2.4.1 - xml-naming: 0.1.0 - - fastq@1.20.1: - dependencies: - reusify: 1.1.0 - fdir@6.5.0(picomatch@4.0.4): optionalDependencies: picomatch: 4.0.4 - file-uri-to-path@1.0.0: - optional: true - - filelist@1.0.6: - dependencies: - minimatch: 5.1.9 - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - finalhandler@2.1.1: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -9658,11 +6060,6 @@ snapshots: transitivePeerDependencies: - supports-color - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 @@ -9696,32 +6093,11 @@ snapshots: fresh@2.0.0: {} - fs-constants@1.0.0: {} - - fs-extra@7.0.1: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs-extra@8.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - fs.realpath@1.0.0: {} fsevents@2.3.3: optional: true - fstream@1.0.12: - dependencies: - graceful-fs: 4.2.11 - inherits: 2.0.4 - mkdirp: 0.5.6 - rimraf: 2.7.1 - fumadocs-core@16.8.12(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.8(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.15)(lucide-react@1.16.0(react@19.2.6))(next@16.2.6(@opentelemetry/api@1.9.1)(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(react-dom@19.2.6(react@19.2.6))(react@19.2.6)(zod@4.4.3): dependencies: '@orama/orama': 3.1.18 @@ -9841,8 +6217,6 @@ snapshots: get-nonce@1.0.1: {} - get-package-type@0.1.0: {} - get-proto@1.0.1: dependencies: dunder-proto: 1.0.1 @@ -9850,17 +6224,8 @@ snapshots: get-stream@6.0.1: {} - getopts@2.3.0: {} - - github-from-package@0.0.0: - optional: true - github-slugger@2.0.0: {} - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - glob@12.0.0: dependencies: foreground-child: 3.3.1 @@ -9870,21 +6235,6 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 2.0.2 - glob@13.0.6: - dependencies: - minimatch: 10.2.5 - minipass: 7.1.3 - path-scurry: 2.0.2 - - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.5 - once: 1.4.0 - path-is-absolute: 1.0.1 - glob@9.3.5: dependencies: fs.realpath: 1.0.0 @@ -9892,15 +6242,6 @@ snapshots: minipass: 4.2.8 path-scurry: 1.11.1 - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -9909,8 +6250,6 @@ snapshots: dependencies: duplexer: 0.1.2 - has-flag@4.0.0: {} - has-symbols@1.1.0: {} has-tostringtag@1.0.2: @@ -10033,10 +6372,6 @@ snapshots: property-information: 7.1.0 space-separated-tokens: 2.0.2 - hono@4.12.28: {} - - hono@4.12.30: {} - html-void-elements@3.0.0: {} http-errors@2.0.1: @@ -10047,8 +6382,6 @@ snapshots: statuses: 2.0.2 toidentifier: 1.0.1 - human-id@4.1.3: {} - human-signals@2.1.0: {} humanize-ms@1.2.1: @@ -10059,30 +6392,12 @@ snapshots: dependencies: safer-buffer: 2.1.2 - ieee754@1.2.1: {} - ignore@5.3.2: {} - immediate@3.0.6: {} - - indent-string@4.0.0: {} - - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - inherits@2.0.4: {} - ini@1.3.8: - optional: true - inline-style-parser@0.2.7: {} - interpret@2.2.0: {} - - ip-address@10.2.0: {} - ipaddr.js@1.9.1: {} is-alphabetical@2.0.1: {} @@ -10092,46 +6407,16 @@ snapshots: is-alphabetical: 2.0.1 is-decimal: 2.0.1 - is-core-module@2.16.2: - dependencies: - hasown: 2.0.4 - is-decimal@2.0.1: {} - is-docker@2.2.1: {} - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - is-hexadecimal@2.0.1: {} - is-number@7.0.0: {} - is-plain-obj@4.1.0: {} is-promise@4.0.0: {} is-stream@2.0.1: {} - is-subdir@1.2.0: - dependencies: - better-path-resolve: 1.0.0 - - is-unsafe@1.0.1: {} - - is-windows@1.0.2: {} - - is-wsl@2.2.0: - dependencies: - is-docker: 2.2.1 - - isarray@1.0.0: {} - isbot@5.1.40: optional: true @@ -10141,79 +6426,15 @@ snapshots: jackspeak@4.2.3: dependencies: - '@isaacs/cliui': 9.0.0 - - jake@10.9.4: - dependencies: - async: 3.2.6 - filelist: 1.0.6 - picocolors: 1.1.1 - - jiti@2.7.0: {} - - jose@6.2.3: {} - - js-yaml@3.14.2: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - - js-yaml@4.1.1: - dependencies: - argparse: 2.0.1 - - js-yaml@5.2.1: - dependencies: - argparse: 2.0.1 - - json-schema-traverse@1.0.0: {} - - json-schema-typed@8.0.2: {} - - jsonfile@4.0.0: - optionalDependencies: - graceful-fs: 4.2.11 - - jszip@3.10.1: - dependencies: - lie: 3.3.0 - pako: 1.0.11 - readable-stream: 2.3.8 - setimmediate: 1.0.5 - - kleur@4.1.5: {} - - knex@3.3.0(better-sqlite3@12.11.1)(pg@8.22.0): - dependencies: - colorette: 2.0.19 - commander: 10.0.1 - debug: 4.3.4 - escalade: 3.2.0 - esm: 3.2.25 - get-package-type: 0.1.0 - getopts: 2.3.0 - interpret: 2.2.0 - lodash: 4.18.1 - pg-connection-string: 2.6.2 - rechoir: 0.8.0 - resolve-from: 5.0.0 - tarn: 3.1.0 - tildify: 2.0.0 - optionalDependencies: - better-sqlite3: 12.11.1 - pg: 8.22.0 - transitivePeerDependencies: - - supports-color + '@isaacs/cliui': 9.0.0 - kysely@0.29.2: {} + jiti@2.7.0: {} - lazystream@1.0.1: + js-yaml@4.1.1: dependencies: - readable-stream: 2.3.8 + argparse: 2.0.1 - lie@3.3.0: - dependencies: - immediate: 3.0.6 + kleur@4.1.5: {} lightningcss-android-arm64@1.32.0: optional: true @@ -10264,48 +6485,6 @@ snapshots: lightningcss-win32-arm64-msvc: 1.32.0 lightningcss-win32-x64-msvc: 1.32.0 - lilconfig@3.1.3: {} - - lines-and-columns@1.2.4: {} - - listenercount@1.0.1: {} - - load-tsconfig@0.2.5: {} - - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - - lodash.defaults@4.2.0: {} - - lodash.difference@4.5.0: {} - - lodash.escaperegexp@4.1.2: {} - - lodash.flatten@4.4.0: {} - - lodash.groupby@4.6.0: {} - - lodash.isboolean@3.0.3: {} - - lodash.isequal@4.5.0: {} - - lodash.isfunction@3.0.9: {} - - lodash.isnil@4.0.0: {} - - lodash.isplainobject@4.0.6: {} - - lodash.isundefined@3.0.1: {} - - lodash.startcase@4.4.0: {} - - lodash.union@4.6.0: {} - - lodash.uniq@4.5.0: {} - - lodash@4.18.1: {} - longest-streak@3.1.0: {} lru-cache@10.4.3: {} @@ -10491,14 +6670,10 @@ snapshots: media-typer@1.1.0: {} - memory-pager@1.5.0: {} - merge-descriptors@2.0.0: {} merge-stream@2.0.0: {} - merge2@1.4.1: {} - micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.3.0 @@ -10744,7 +6919,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.13 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 decode-named-character-reference: 1.3.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -10763,11 +6938,6 @@ snapshots: transitivePeerDependencies: - supports-color - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.2 - mime-db@1.52.0: {} mime-db@1.54.0: {} @@ -10782,11 +6952,6 @@ snapshots: mimic-fn@2.1.0: {} - mimic-response@3.1.0: - optional: true - - mingo@7.2.2: {} - miniflare@4.20260526.0: dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -10803,48 +6968,20 @@ snapshots: dependencies: brace-expansion: 5.0.6 - minimatch@3.1.5: - dependencies: - brace-expansion: 1.1.15 - - minimatch@5.1.9: - dependencies: - brace-expansion: 2.1.1 - minimatch@8.0.7: dependencies: brace-expansion: 2.1.1 - minimist@1.2.8: {} - minipass@4.2.8: {} minipass@7.1.3: {} - mkdirp-classic@0.5.3: - optional: true - - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - mkdirp@1.0.4: {} mnemonist@0.38.3: dependencies: obliterator: 1.6.1 - mongodb-connection-string-url@7.0.1: - dependencies: - '@types/whatwg-url': 13.0.0 - whatwg-url: 14.2.0 - - mongodb@7.5.0: - dependencies: - '@mongodb-js/saslprep': 1.4.11 - bson: 7.2.0 - mongodb-connection-string-url: 7.0.1 - motion-dom@12.40.0: dependencies: motion-utils: 12.39.0 @@ -10859,27 +6996,10 @@ snapshots: react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - mri@1.2.0: {} - - ms@2.1.2: {} - ms@2.1.3: {} - mz@2.7.0: - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - nanoid@3.3.12: {} - nanoid@6.0.0: {} - - nanostores@1.3.0: {} - - napi-build-utils@2.0.0: - optional: true - negotiator@1.0.0: {} next-themes@0.4.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6): @@ -10912,29 +7032,16 @@ snapshots: - '@babel/core' - babel-plugin-macros - node-abi@3.92.0: - dependencies: - semver: 7.8.1 - optional: true - node-domexception@1.0.0: {} node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 - node-rsa@1.1.1: - dependencies: - asn1: 0.2.6 - - normalize-path@3.0.0: {} - npm-run-path@4.0.1: dependencies: path-key: 3.1.1 - object-assign@4.1.1: {} - object-inspect@1.13.4: {} object-treeify@1.1.33: {} @@ -10961,32 +7068,8 @@ snapshots: regex: 6.1.0 regex-recursion: 6.0.2 - outdent@0.5.0: {} - - p-filter@2.1.0: - dependencies: - p-map: 2.1.0 - - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - - p-map@2.1.0: {} - - p-try@2.2.0: {} - package-json-from-dist@1.0.1: {} - package-manager-detector@0.2.11: - dependencies: - quansync: 0.2.11 - - pako@1.0.11: {} - parse-entities@4.0.2: dependencies: '@types/unist': 2.0.11 @@ -11003,18 +7086,10 @@ snapshots: parseurl@1.3.3: {} - path-browserify@1.0.1: {} - - path-exists@4.0.0: {} - path-expression-matcher@1.5.0: {} - path-is-absolute@1.0.1: {} - path-key@3.1.1: {} - path-parse@1.0.7: {} - path-scurry@1.11.1: dependencies: lru-cache: 10.4.3 @@ -11029,59 +7104,12 @@ snapshots: path-to-regexp@8.4.2: {} - path-type@4.0.0: {} - pathe@2.0.3: {} - pg-cloudflare@1.4.0: - optional: true - - pg-connection-string@2.14.0: {} - - pg-connection-string@2.6.2: {} - - pg-int8@1.0.1: {} - - pg-pool@3.14.0(pg@8.22.0): - dependencies: - pg: 8.22.0 - - pg-protocol@1.15.0: {} - - pg-types@2.2.0: - dependencies: - pg-int8: 1.0.1 - postgres-array: 2.0.0 - postgres-bytea: 1.0.1 - postgres-date: 1.0.7 - postgres-interval: 1.2.0 - - pg@8.22.0: - dependencies: - pg-connection-string: 2.14.0 - pg-pool: 3.14.0(pg@8.22.0) - pg-protocol: 1.15.0 - pg-types: 2.2.0 - pgpass: 1.0.5 - optionalDependencies: - pg-cloudflare: 1.4.0 - - pgpass@1.0.5: - dependencies: - split2: 4.2.0 - picocolors@1.1.1: {} - picomatch@2.3.2: {} - picomatch@4.0.4: {} - pify@4.0.1: {} - - pirates@4.0.7: {} - - pkce-challenge@5.0.1: {} - postcss@8.4.31: dependencies: nanoid: 3.3.12 @@ -11094,36 +7122,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postgres-array@2.0.0: {} - - postgres-bytea@1.0.1: {} - - postgres-date@1.0.7: {} - - postgres-interval@1.2.0: - dependencies: - xtend: 4.0.2 - - prebuild-install@7.1.3: - dependencies: - detect-libc: 2.1.2 - expand-template: 2.0.3 - github-from-package: 0.0.0 - minimist: 1.2.8 - mkdirp-classic: 0.5.3 - napi-build-utils: 2.0.0 - node-abi: 3.92.0 - pump: 3.0.4 - rc: 1.2.8 - simple-get: 4.0.1 - tar-fs: 2.1.4 - tunnel-agent: 0.6.0 - optional: true - - prettier@2.8.8: {} - - process-nextick-args@2.0.1: {} - property-information@7.1.0: {} proxy-addr@2.0.7: @@ -11131,34 +7129,10 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - pump@3.0.4: - dependencies: - end-of-stream: 1.4.5 - once: 1.4.0 - optional: true - - punycode@2.3.1: {} - qs@6.15.2: dependencies: side-channel: 1.1.0 - quansync@0.2.11: {} - - queue-microtask@1.2.3: {} - - quickjs-emscripten-core@0.32.0: - dependencies: - '@jitl/quickjs-ffi-types': 0.32.0 - - quickjs-emscripten@0.32.0: - dependencies: - '@jitl/quickjs-wasmfile-debug-asyncify': 0.32.0 - '@jitl/quickjs-wasmfile-debug-sync': 0.32.0 - '@jitl/quickjs-wasmfile-release-asyncify': 0.32.0 - '@jitl/quickjs-wasmfile-release-sync': 0.32.0 - quickjs-emscripten-core: 0.32.0 - range-parser@1.2.1: {} raw-body@3.0.2: @@ -11168,14 +7142,6 @@ snapshots: iconv-lite: 0.7.2 unpipe: 1.0.0 - rc@1.2.8: - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.8 - strip-json-comments: 2.0.1 - optional: true - react-dom@19.2.6(react@19.2.6): dependencies: react: 19.2.6 @@ -11210,39 +7176,8 @@ snapshots: react@19.2.6: {} - read-yaml-file@1.1.0: - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.2 - pify: 4.0.1 - strip-bom: 3.0.0 - - readable-stream@2.3.8: - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - readdir-glob@1.1.3: - dependencies: - minimatch: 5.1.9 - readdirp@5.0.0: {} - rechoir@0.8.0: - dependencies: - resolve: 1.22.12 - recma-build-jsx@1.0.0: dependencies: '@types/estree': 1.0.9 @@ -11346,23 +7281,6 @@ snapshots: transitivePeerDependencies: - supports-color - require-from-string@2.0.2: {} - - resolve-from@5.0.0: {} - - resolve@1.22.12: - dependencies: - es-errors: 1.3.0 - is-core-module: 2.16.2 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - reusify@1.1.0: {} - - rimraf@2.7.1: - dependencies: - glob: 7.2.3 - rosie-skills-darwin-arm64@0.6.4: optional: true @@ -11378,11 +7296,9 @@ snapshots: rosie-skills-freebsd-x64: 0.6.4 rosie-skills-linux-x64: 0.6.4 - rou3@0.7.12: {} - router@2.2.0: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 @@ -11390,30 +7306,8 @@ snapshots: transitivePeerDependencies: - supports-color - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - safe-buffer@5.1.2: {} - - safe-buffer@5.2.1: {} - safer-buffer@2.1.2: {} - samlify@2.13.1: - dependencies: - '@authenio/xml-encryption': 2.0.2 - '@xmldom/xmldom': 0.8.13 - node-rsa: 1.1.1 - xml: 1.0.1 - xml-crypto: 6.1.2 - xml-escape: 1.1.0 - xpath: 0.0.34 - - saxes@5.0.1: - dependencies: - xmlchars: 2.2.0 - scheduler@0.27.0: {} scroll-into-view-if-needed@3.1.0: @@ -11424,7 +7318,7 @@ snapshots: send@1.2.1: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -11455,10 +7349,6 @@ snapshots: transitivePeerDependencies: - supports-color - set-cookie-parser@3.1.0: {} - - setimmediate@1.0.5: {} - setprototypeof@1.2.0: {} sharp@0.34.5: @@ -11541,18 +7431,6 @@ snapshots: signal-exit@4.1.0: {} - simple-concat@1.0.1: - optional: true - - simple-get@4.0.1: - dependencies: - decompress-response: 6.0.0 - once: 1.4.0 - simple-concat: 1.0.1 - optional: true - - slash@3.0.0: {} - source-map-js@1.2.1: {} source-map-support@0.5.21: @@ -11566,43 +7444,14 @@ snapshots: space-separated-tokens@2.0.2: {} - sparse-bitfield@3.0.3: - dependencies: - memory-pager: 1.5.0 - - spawndamnit@3.0.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - - split2@4.2.0: {} - - sprintf-js@1.0.3: {} - - sql.js@1.14.1: {} - statuses@2.0.2: {} - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - string-width@7.2.0: dependencies: emoji-regex: 10.6.0 get-east-asian-width: 1.6.0 strip-ansi: 7.2.0 - string_decoder@1.1.1: - dependencies: - safe-buffer: 5.1.2 - - string_decoder@1.3.0: - dependencies: - safe-buffer: 5.2.1 - stringify-entities@4.0.4: dependencies: character-entities-html4: 2.1.0 @@ -11616,13 +7465,8 @@ snapshots: dependencies: ansi-regex: 6.2.2 - strip-bom@3.0.0: {} - strip-final-newline@2.0.0: {} - strip-json-comments@2.0.1: - optional: true - strnum@2.4.1: dependencies: anynum: 1.0.1 @@ -11640,50 +7484,14 @@ snapshots: client-only: 0.0.1 react: 19.2.6 - sucrase@3.35.1: - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - commander: 4.1.1 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.7 - tinyglobby: 0.2.17 - ts-interface-checker: 0.1.13 - supports-color@10.2.2: {} - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - tailwind-merge@3.6.0: {} tailwindcss@4.3.0: {} tapable@2.3.3: {} - tar-fs@2.1.4: - dependencies: - chownr: 1.1.4 - mkdirp-classic: 0.5.3 - pump: 3.0.4 - tar-stream: 2.2.0 - optional: true - - tar-stream@2.2.0: - dependencies: - bl: 4.1.0 - end-of-stream: 1.4.5 - fs-constants: 1.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - - tarn@3.1.0: {} - - term-size@2.2.1: {} - terser@5.16.9: dependencies: '@jridgewell/source-map': 0.3.11 @@ -11691,16 +7499,6 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - thenify-all@1.6.0: - dependencies: - thenify: 3.3.1 - - thenify@3.3.1: - dependencies: - any-promise: 1.3.0 - - tildify@2.0.0: {} - tinyexec@1.2.2: {} tinyglobby@0.2.16: @@ -11708,59 +7506,18 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - tinyglobby@0.2.17: - dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - - tldts-core@6.1.86: {} - - tldts@6.1.86: - dependencies: - tldts-core: 6.1.86 - - tmp@0.2.7: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - toidentifier@1.0.1: {} tr46@0.0.3: {} - tr46@5.1.1: - dependencies: - punycode: 2.3.1 - - traverse@0.3.9: {} - trim-lines@3.0.1: {} trough@2.2.0: {} - ts-interface-checker@0.1.13: {} - - ts-morph@28.0.0: - dependencies: - '@ts-morph/common': 0.29.0 - code-block-writer: 13.0.3 - ts-tqdm@0.8.6: {} tslib@2.8.1: {} - tsx@4.23.0: - dependencies: - esbuild: 0.28.1 - optionalDependencies: - fsevents: 2.3.3 - - tunnel-agent@0.6.0: - dependencies: - safe-buffer: 5.2.1 - optional: true - turbo@2.9.14: optionalDependencies: '@turbo/darwin-64': 2.9.14 @@ -11770,8 +7527,6 @@ snapshots: '@turbo/windows-64': 2.9.14 '@turbo/windows-arm64': 2.9.14 - type-fest@0.21.3: {} - type-is@2.1.0: dependencies: content-type: 2.0.0 @@ -11780,8 +7535,6 @@ snapshots: typescript@5.9.3: {} - typescript@6.0.3: {} - undici-types@5.26.5: {} undici-types@7.24.6: {} @@ -11834,23 +7587,8 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - universalify@0.1.2: {} - unpipe@1.0.0: {} - unzipper@0.10.14: - dependencies: - big-integer: 1.6.52 - binary: 0.3.0 - bluebird: 3.4.7 - buffer-indexof-polyfill: 1.0.2 - duplexer2: 0.1.4 - fstream: 1.0.12 - graceful-fs: 4.2.11 - listenercount: 1.0.1 - readable-stream: 2.3.8 - setimmediate: 1.0.5 - urlpattern-polyfill@10.1.0: {} use-callback-ref@1.3.3(@types/react@19.2.15)(react@19.2.6): @@ -11873,10 +7611,6 @@ snapshots: react: 19.2.6 optional: true - util-deprecate@1.0.2: {} - - uuid@8.3.2: {} - vary@1.1.2: {} vfile-location@5.0.3: @@ -11900,13 +7634,6 @@ snapshots: webidl-conversions@3.0.1: {} - webidl-conversions@7.0.0: {} - - whatwg-url@14.2.0: - dependencies: - tr46: 5.1.1 - webidl-conversions: 7.0.0 - whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -11920,12 +7647,6 @@ snapshots: dependencies: isexe: 3.1.5 - widest-line@3.1.0: - dependencies: - string-width: 4.2.3 - - wordwrap@1.0.0: {} - workerd@1.20260526.1: optionalDependencies: '@cloudflare/workerd-darwin-64': 1.20260526.1 @@ -11951,12 +7672,6 @@ snapshots: - bufferutil - utf-8-validate - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi@9.0.2: dependencies: ansi-styles: 6.2.3 @@ -11967,28 +7682,8 @@ snapshots: ws@8.20.1: {} - xml-crypto@6.1.2: - dependencies: - '@xmldom/is-dom-node': 1.0.1 - '@xmldom/xmldom': 0.8.13 - xpath: 0.0.33 - - xml-escape@1.1.0: {} - xml-naming@0.1.0: {} - xml@1.0.1: {} - - xmlchars@2.2.0: {} - - xpath@0.0.32: {} - - xpath@0.0.33: {} - - xpath@0.0.34: {} - - xtend@4.0.2: {} - y18n@5.0.8: {} yaml@2.9.0: {} @@ -12017,16 +7712,6 @@ snapshots: cookie: 1.1.1 youch-core: 0.3.3 - zip-stream@4.1.1: - dependencies: - archiver-utils: 3.0.4 - compress-commons: 4.1.2 - readable-stream: 3.6.2 - - zod-to-json-schema@3.25.2(zod@4.4.3): - dependencies: - zod: 4.4.3 - zod@4.4.3: {} zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index c5c36c8..852bf6b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,4 +1,2 @@ packages: - apps/* - - packages/* - - examples/* diff --git a/scripts/README.md b/scripts/README.md deleted file mode 100644 index e3f6ed7..0000000 --- a/scripts/README.md +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env bash -# Repository-local helper scripts (release tagging, smoke checks, etc.) go here. diff --git a/scripts/build-one.sh b/scripts/build-one.sh deleted file mode 100755 index 6475d2d..0000000 --- a/scripts/build-one.sh +++ /dev/null @@ -1,176 +0,0 @@ -#!/usr/bin/env bash -# ------------------------------------------------------------------ -# Build a portable ObjectOS One distributable. -# -# Produces, under dist/one/: -# -# ObjectOS---/ -# ├── node (bundled Node runtime) -# ├── ObjectOS(.cmd|.sh) (double-click launcher) -# ├── app/ -# │ ├── one.mjs -# │ ├── package.json -# │ ├── dist/objectstack.json -# │ └── node_modules/ (production deps, native bins built for target) -# └── README.txt -# ObjectOS---.zip -# -# Usage: -# scripts/build-one.sh [--target -] [--node ] -# -# Defaults to the current host platform. Cross-platform packaging works -# for the *Node binary* (downloaded from nodejs.org), but native npm -# modules (better-sqlite3) must be rebuilt on the target OS — so for -# production you should run this on each OS or in CI matrix. -# ------------------------------------------------------------------ -set -euo pipefail - -NODE_VERSION="${NODE_VERSION:-20.18.1}" -TARGET="" -while [[ $# -gt 0 ]]; do - case "$1" in - --target) TARGET="$2"; shift 2;; - --node) NODE_VERSION="$2"; shift 2;; - -h|--help) - sed -n '2,25p' "$0"; exit 0;; - *) echo "unknown arg: $1" >&2; exit 1;; - esac -done - -ROOT="$(cd "$(dirname "$0")/.." && pwd)" -APP_DIR="$ROOT/apps/objectos" -OUT_ROOT="$ROOT/dist/one" - -# --- detect target ------------------------------------------------- -host_os() { - case "$(uname -s)" in - Darwin) echo "darwin";; - Linux) echo "linux";; - MINGW*|MSYS*|CYGWIN*) echo "win";; - *) echo "unknown";; - esac -} -host_arch() { - case "$(uname -m)" in - x86_64|amd64) echo "x64";; - arm64|aarch64) echo "arm64";; - *) echo "unknown";; - esac -} -TARGET="${TARGET:-$(host_os)-$(host_arch)}" -OS="${TARGET%-*}" -ARCH="${TARGET#*-}" - -case "$OS" in darwin|linux|win) ;; *) echo "unsupported os: $OS" >&2; exit 1;; esac -case "$ARCH" in x64|arm64) ;; *) echo "unsupported arch: $ARCH" >&2; exit 1;; esac - -VERSION="$(node -p "require('$APP_DIR/package.json').version")" -DIST_NAME="ObjectOS-${VERSION}-${OS}-${ARCH}" -STAGE="$OUT_ROOT/$DIST_NAME" - -echo "==> Building $DIST_NAME (Node v$NODE_VERSION)" -rm -rf "$STAGE" "$OUT_ROOT/$DIST_NAME.zip" -mkdir -p "$STAGE/app" - -# --- 1. ensure the app is built ------------------------------------ -if [[ ! -f "$APP_DIR/dist/objectstack.json" ]]; then - echo "==> Compiling artifact" - (cd "$ROOT" && pnpm --filter @objectos/server build) -fi - -# --- 2. install production deps into a clean tree ------------------ -echo "==> Installing production deps" -STAGE_APP="$STAGE/app" -cp "$APP_DIR/package.json" "$STAGE_APP/package.json" -cp "$APP_DIR/one.mjs" "$STAGE_APP/one.mjs" -mkdir -p "$STAGE_APP/dist" -cp "$APP_DIR/dist/objectstack.json" "$STAGE_APP/dist/objectstack.json" - -# Use a flat node_modules layout (npm) so the launcher can `require.resolve` -# without pnpm's symlink tree. This bloats the bundle a bit but is the -# most portable form. -( - cd "$STAGE_APP" - npm install --omit=dev --no-audit --no-fund --loglevel=error \ - --legacy-peer-deps \ - better-sqlite3@^12.9.0 -) - -# --- 3. download Node binary -------------------------------------- -echo "==> Fetching Node v$NODE_VERSION for $OS-$ARCH" -NODE_CACHE="$ROOT/.cache/node" -mkdir -p "$NODE_CACHE" - -case "$OS" in - darwin) NODE_PKG="node-v${NODE_VERSION}-darwin-${ARCH}.tar.gz"; NODE_BIN_REL="bin/node";; - linux) NODE_PKG="node-v${NODE_VERSION}-linux-${ARCH}.tar.xz"; NODE_BIN_REL="bin/node";; - win) NODE_PKG="node-v${NODE_VERSION}-win-${ARCH}.zip"; NODE_BIN_REL="node.exe";; -esac - -NODE_URL="https://nodejs.org/dist/v${NODE_VERSION}/${NODE_PKG}" -NODE_TARBALL="$NODE_CACHE/$NODE_PKG" -if [[ ! -f "$NODE_TARBALL" ]]; then - curl -fSL --retry 3 -o "$NODE_TARBALL" "$NODE_URL" -fi - -NODE_EXTRACT="$NODE_CACHE/${NODE_PKG%.tar.*}" -NODE_EXTRACT="${NODE_EXTRACT%.zip}" -if [[ ! -d "$NODE_EXTRACT" ]]; then - case "$NODE_PKG" in - *.tar.gz) tar -xzf "$NODE_TARBALL" -C "$NODE_CACHE";; - *.tar.xz) tar -xJf "$NODE_TARBALL" -C "$NODE_CACHE";; - *.zip) (cd "$NODE_CACHE" && unzip -q "$NODE_TARBALL");; - esac -fi - -if [[ "$OS" == "win" ]]; then - cp "$NODE_EXTRACT/$NODE_BIN_REL" "$STAGE/node.exe" -else - cp "$NODE_EXTRACT/$NODE_BIN_REL" "$STAGE/node" - chmod +x "$STAGE/node" -fi - -# --- 4. launcher scripts ------------------------------------------ -echo "==> Writing launcher" -if [[ "$OS" == "win" ]]; then - cat > "$STAGE/ObjectOS.cmd" <<'EOF' -@echo off -setlocal -cd /d "%~dp0" -".\node.exe" "app\one.mjs" -EOF -else - cat > "$STAGE/ObjectOS.sh" <<'EOF' -#!/usr/bin/env bash -set -e -HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -exec "$HERE/node" "$HERE/app/one.mjs" -EOF - chmod +x "$STAGE/ObjectOS.sh" -fi - -# --- 5. README ---------------------------------------------------- -cat > "$STAGE/README.txt" < Packaging" -(cd "$OUT_ROOT" && rm -f "$DIST_NAME.zip" && zip -qr "$DIST_NAME.zip" "$DIST_NAME") - -SIZE=$(du -sh "$OUT_ROOT/$DIST_NAME.zip" | awk '{print $1}') -echo "==> Built $OUT_ROOT/$DIST_NAME.zip ($SIZE)" -echo "==> Stage dir: $STAGE" diff --git a/scripts/smoke-runtime.sh b/scripts/smoke-runtime.sh deleted file mode 100755 index 2b880bd..0000000 --- a/scripts/smoke-runtime.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -PORT="${PORT:-3200}" -LOG_FILE="${ROOT_DIR}/.objectos-smoke.log" - -cd "${ROOT_DIR}" - -pnpm --filter @objectos/server build >/dev/null - -cd "${ROOT_DIR}/apps/objectos" -OS_ARTIFACT_FILE=dist/objectstack.json \ -OS_PROJECT_ID="${OS_PROJECT_ID:-proj_local}" \ -PORT="${PORT}" \ -pnpm start >"${LOG_FILE}" 2>&1 & - -PID="$!" -trap 'kill "${PID}" >/dev/null 2>&1 || true' EXIT - -for _ in $(seq 1 30); do - if curl -fsS "http://127.0.0.1:${PORT}/api/v1/health" >/dev/null 2>&1; then - echo "ObjectOS smoke test passed on http://127.0.0.1:${PORT}" - exit 0 - fi - sleep 1 -done - -echo "ObjectOS smoke test failed. Last server logs:" >&2 -tail -80 "${LOG_FILE}" >&2 || true -exit 1 From c28abd528c9b3c8a2cbcb75294b5eecb48ee6215 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 15 Jul 2026 11:46:09 +0000 Subject: [PATCH 3/4] fix(docs): remove the ObjectOS One download surface from the docs site apps/docs imported apps/objectos-one/package.json for the user-visible version (lib/version.ts), breaking type-check after One's removal. One is discontinued, so the whole download surface goes with it: - app/[lang]/download page, components/download/*, lib/download-i18n.ts, lib/version.ts (no importers remain) - nav: drop the Download item across all 7 locales (layout.shared.tsx) - sitemap: drop the download entry Verified locally: turbo type-check + build + test all green on the docs-only workspace. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_0162o68e5w3bpUBEVRQboUGG --- apps/docs/app/[lang]/download/page.tsx | 261 ----------- apps/docs/app/sitemap.ts | 1 - apps/docs/components/download/client-card.tsx | 60 --- .../components/download/command-block.tsx | 42 -- .../download/command-tabs-client.tsx | 31 -- .../docs/components/download/command-tabs.tsx | 74 --- apps/docs/components/download/copy-button.tsx | 39 -- .../components/download/download-table.tsx | 60 --- apps/docs/components/download/os-detect.tsx | 111 ----- .../components/download/platform-card.tsx | 66 --- apps/docs/lib/download-i18n.ts | 425 ------------------ apps/docs/lib/layout.shared.tsx | 21 +- apps/docs/lib/version.ts | 28 -- 13 files changed, 8 insertions(+), 1211 deletions(-) delete mode 100644 apps/docs/app/[lang]/download/page.tsx delete mode 100644 apps/docs/components/download/client-card.tsx delete mode 100644 apps/docs/components/download/command-block.tsx delete mode 100644 apps/docs/components/download/command-tabs-client.tsx delete mode 100644 apps/docs/components/download/command-tabs.tsx delete mode 100644 apps/docs/components/download/copy-button.tsx delete mode 100644 apps/docs/components/download/download-table.tsx delete mode 100644 apps/docs/components/download/os-detect.tsx delete mode 100644 apps/docs/components/download/platform-card.tsx delete mode 100644 apps/docs/lib/download-i18n.ts delete mode 100644 apps/docs/lib/version.ts diff --git a/apps/docs/app/[lang]/download/page.tsx b/apps/docs/app/[lang]/download/page.tsx deleted file mode 100644 index 0ef80f8..0000000 --- a/apps/docs/app/[lang]/download/page.tsx +++ /dev/null @@ -1,261 +0,0 @@ -import Link from 'next/link'; -import { - Container, - Boxes, - Terminal, - Globe, - Code2, - Network, - Bot, - ShieldCheck, - ArrowRight, - GitBranch, -} from 'lucide-react'; -import { HomeLayout } from 'fumadocs-ui/layouts/home'; -import { baseOptions } from '@/lib/layout.shared'; -import { - CLIENT_COMMANDS, - CLI_INSTALLS, - SERVER_COMMANDS, - getDownloadTranslations, -} from '@/lib/download-i18n'; -import { PlatformCard } from '@/components/download/platform-card'; -import { CommandTabsClient } from '@/components/download/command-tabs-client'; -import { DesktopDownloadTable } from '@/components/download/download-table'; -import { ClientCard } from '@/components/download/client-card'; -import { OsDetectHero } from '@/components/download/os-detect'; - -export default async function DownloadPage({ - params, -}: { - params: Promise<{ lang: string }>; -}) { - const { lang } = await params; - const t = getDownloadTranslations(lang); - - const cliTabs = [ - { key: 'npm', label: t.cli.tabs.npm, commands: CLI_INSTALLS.npm }, - { key: 'pnpm', label: t.cli.tabs.pnpm, commands: CLI_INSTALLS.pnpm }, - { key: 'yarn', label: t.cli.tabs.yarn, commands: CLI_INSTALLS.yarn }, - ]; - - return ( - -
    -
    - - {/* Hero */} -
    -
    - - {t.badge} -
    -

    - {t.hero.title} -

    -

    - {t.hero.subtitle} -

    -
    - -
    -
    - - {/* Server */} -
    -
    -

    - {t.server.heading} -

    -

    {t.server.subheading}

    -
    -
    - } - title={t.server.docker.title} - tagline={t.server.docker.tagline} - description={t.server.docker.description} - command={SERVER_COMMANDS.docker} - commandLabel="docker" - cta={t.server.docker.cta} - href={t.server.docker.href} - copyLabel={t.copy.copy} - copiedLabel={t.copy.copied} - /> - } - title={t.server.kubernetes.title} - tagline={t.server.kubernetes.tagline} - description={t.server.kubernetes.description} - command={SERVER_COMMANDS.kubernetes} - commandLabel="helm" - cta={t.server.kubernetes.cta} - href={t.server.kubernetes.href} - copyLabel={t.copy.copy} - copiedLabel={t.copy.copied} - /> - } - title={t.server.source.title} - tagline={t.server.source.tagline} - description={t.server.source.description} - command={SERVER_COMMANDS.source} - commandLabel="shell" - cta={t.server.source.cta} - href={t.server.source.href} - copyLabel={t.copy.copy} - copiedLabel={t.copy.copied} - /> -
    -
    - - {/* CLI */} -
    -
    -
    - -
    -

    {t.cli.heading}

    -

    {t.cli.subheading}

    -
    - - -

    {t.cli.requires}

    -
    - - {/* Desktop installers */} -
    - -
    - - {/* Clients / SDKs */} -
    -
    -

    - {t.clients.heading} -

    -

    {t.clients.subheading}

    -
    -
    - } - title={t.clients.items.studio.title} - description={t.clients.items.studio.description} - cta={t.clients.items.studio.cta} - href={t.clients.items.studio.href} - copyLabel={t.copy.copy} - copiedLabel={t.copy.copied} - /> - } - title={t.clients.items.js.title} - description={t.clients.items.js.description} - cta={t.clients.items.js.cta} - href={t.clients.items.js.href} - command={CLIENT_COMMANDS.js} - copyLabel={t.copy.copy} - copiedLabel={t.copy.copied} - /> - } - title={t.clients.items.rest.title} - description={t.clients.items.rest.description} - cta={t.clients.items.rest.cta} - href={t.clients.items.rest.href} - copyLabel={t.copy.copy} - copiedLabel={t.copy.copied} - /> - } - title={t.clients.items.mcp.title} - description={t.clients.items.mcp.description} - cta={t.clients.items.mcp.cta} - href={t.clients.items.mcp.href} - command={CLIENT_COMMANDS.mcp} - copyLabel={t.copy.copy} - copiedLabel={t.copy.copied} - /> - } - title={t.clients.items.vscode.title} - description={t.clients.items.vscode.description} - cta={t.clients.items.vscode.cta} - href={t.clients.items.vscode.href} - command={CLIENT_COMMANDS.vscode} - copyLabel={t.copy.copy} - copiedLabel={t.copy.copied} - /> -
    -
    - - {/* Verify + requirements */} -
    -
    -
    -
    - -
    -

    {t.verify.heading}

    -

    {t.verify.body}

    -
    - - {t.verify.releaseCta} ↗ - - - {t.verify.signingCta} ↗ - -
    -
    -
    -

    {t.requirements.heading}

    -
    - {t.requirements.rows.map((row) => ( -
    -
    {row.label}
    -
    {row.value}
    -
    - ))} -
    -
    -
    -
    - - {/* Past releases */} -
    -
    -

    {t.past.heading}

    -

    {t.past.body}

    - - {t.past.cta} - - -
    -
    -
    -
    - ); -} diff --git a/apps/docs/app/sitemap.ts b/apps/docs/app/sitemap.ts index 6da721b..079b27b 100644 --- a/apps/docs/app/sitemap.ts +++ b/apps/docs/app/sitemap.ts @@ -11,7 +11,6 @@ export default function sitemap(): MetadataRoute.Sitemap { // Top-level static pages (paths are locale-independent slugs). const staticPaths: Array<{ path: string; priority: number }> = [ { path: '', priority: 1 }, - { path: 'download', priority: 0.6 }, { path: 'privacy', priority: 0.3 }, { path: 'terms', priority: 0.3 }, ]; diff --git a/apps/docs/components/download/client-card.tsx b/apps/docs/components/download/client-card.tsx deleted file mode 100644 index f791538..0000000 --- a/apps/docs/components/download/client-card.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import Link from 'next/link'; -import { ArrowRight } from 'lucide-react'; -import { CommandBlock } from './command-block'; -import { Card } from '@/components/ui/card'; -import { cn } from '@/lib/utils'; - -interface ClientCardProps { - icon: React.ReactNode; - title: string; - description: string; - cta: string; - href: string; - command?: string; - copyLabel: string; - copiedLabel: string; - className?: string; -} - -export function ClientCard({ - icon, - title, - description, - cta, - href, - command, - copyLabel, - copiedLabel, - className, -}: ClientCardProps) { - return ( - -
    - {icon} -
    -

    {title}

    -

    {description}

    - {command ? ( -
    - -
    - ) : null} - - {cta} - - -
    - ); -} diff --git a/apps/docs/components/download/command-block.tsx b/apps/docs/components/download/command-block.tsx deleted file mode 100644 index 06744e7..0000000 --- a/apps/docs/components/download/command-block.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { CopyButton } from './copy-button'; -import { cn } from '@/lib/utils'; - -interface CommandBlockProps { - command: string; - label?: string; - copyLabel: string; - copiedLabel: string; - className?: string; -} - -/** - * Terminal-style command block with a copy button. Renders the - * command on multiple lines (split on newline) with a `$` prompt - * per line for visual fidelity. - */ -export function CommandBlock({ command, label, copyLabel, copiedLabel, className }: CommandBlockProps) { - const lines = command.split('\n'); - return ( -
    -
    -
    -
    -
    -
    - {label ? ( - {label} - ) : null} -
    - -
    -
    -        {lines.map((line, i) => (
    -          
    - $ - {line} -
    - ))} -
    -
    - ); -} diff --git a/apps/docs/components/download/command-tabs-client.tsx b/apps/docs/components/download/command-tabs-client.tsx deleted file mode 100644 index 84011a6..0000000 --- a/apps/docs/components/download/command-tabs-client.tsx +++ /dev/null @@ -1,31 +0,0 @@ -'use client'; - -import { useEffect, useState } from 'react'; -import { CommandTabs, type CommandTab } from './command-tabs'; -import { detectOs } from './os-detect'; - -interface CommandTabsClientProps { - tabs: CommandTab[]; - copyLabel: string; - copiedLabel: string; -} - -/** - * Wraps CommandTabs and seeds the default tab based on the detected - * operating system, so the page lands on the right install method. - */ -export function CommandTabsClient(props: CommandTabsClientProps) { - const [detected, setDetected] = useState(null); - - useEffect(() => { - setDetected(detectOs()); - }, []); - - return ( - - ); -} diff --git a/apps/docs/components/download/command-tabs.tsx b/apps/docs/components/download/command-tabs.tsx deleted file mode 100644 index 39f5681..0000000 --- a/apps/docs/components/download/command-tabs.tsx +++ /dev/null @@ -1,74 +0,0 @@ -'use client'; - -import { useState } from 'react'; -import { CommandBlock } from './command-block'; -import type { InstallCommand } from '@/lib/download-i18n'; -import { cn } from '@/lib/utils'; - -export interface CommandTab { - key: string; - label: string; - commands: InstallCommand[]; -} - -interface CommandTabsProps { - tabs: CommandTab[]; - defaultKey?: string; - copyLabel: string; - copiedLabel: string; - highlightKey?: string | null; -} - -export function CommandTabs({ - tabs, - defaultKey, - copyLabel, - copiedLabel, - highlightKey, -}: CommandTabsProps) { - const initial = defaultKey ?? highlightKey ?? tabs[0]?.key; - const [active, setActive] = useState(initial); - const current = tabs.find((t) => t.key === active) ?? tabs[0]; - - return ( -
    -
    - {tabs.map((tab) => { - const isActive = tab.key === current.key; - const isDetected = tab.key === highlightKey; - return ( - - ); - })} -
    -
    - {current.commands.map((cmd, i) => ( - - ))} -
    -
    - ); -} diff --git a/apps/docs/components/download/copy-button.tsx b/apps/docs/components/download/copy-button.tsx deleted file mode 100644 index 9110c08..0000000 --- a/apps/docs/components/download/copy-button.tsx +++ /dev/null @@ -1,39 +0,0 @@ -'use client'; - -import { useState } from 'react'; -import { Check, Copy } from 'lucide-react'; -import { cn } from '@/lib/utils'; - -interface CopyButtonProps { - value: string; - copyLabel: string; - copiedLabel: string; - className?: string; -} - -export function CopyButton({ value, copyLabel, copiedLabel, className }: CopyButtonProps) { - const [copied, setCopied] = useState(false); - - return ( - - ); -} diff --git a/apps/docs/components/download/download-table.tsx b/apps/docs/components/download/download-table.tsx deleted file mode 100644 index 010fc5f..0000000 --- a/apps/docs/components/download/download-table.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import Link from 'next/link'; -import { Download } from 'lucide-react'; -import { DESKTOP_DOWNLOADS } from '@/lib/download-i18n'; - -interface DesktopDownloadTableProps { - heading: string; - subheading: string; - cols: { platform: string; file: string; size: string }; -} - -/** - * Lists every desktop installer published in the latest `one-v*` release. - * Rows are sourced from DESKTOP_DOWNLOADS, which must stay in sync with - * `.github/workflows/one.yml`'s `Upload artifacts` step. - */ -export function DesktopDownloadTable({ heading, subheading, cols }: DesktopDownloadTableProps) { - return ( -
    -
    -

    {heading}

    -

    {subheading}

    -
    -
    - - - - - - - - - - - {DESKTOP_DOWNLOADS.map((d) => ( - - - - - - - ))} - -
    {cols.platform}{cols.file}{cols.size}{''}
    - {d.os}{' '} - {d.arch} - {d.file}{d.size} - - .{d.kind} - -
    -
    -
    - ); -} diff --git a/apps/docs/components/download/os-detect.tsx b/apps/docs/components/download/os-detect.tsx deleted file mode 100644 index fa70939..0000000 --- a/apps/docs/components/download/os-detect.tsx +++ /dev/null @@ -1,111 +0,0 @@ -'use client'; - -import { useEffect, useState } from 'react'; -import Link from 'next/link'; -import { Apple, Monitor, ArrowRight } from 'lucide-react'; -import type { OsKey } from '@/lib/download-i18n'; -import { recommendedDownload } from '@/lib/download-i18n'; -import { cn } from '@/lib/utils'; - -interface OsDetectHeroProps { - primaryCta: string; - secondaryCta: string; - secondaryHref: string; - detected: string; - detecting: string; - notSure: string; - onDetect?: (os: OsKey) => void; -} - -const OS_LABEL: Record = { - macos: 'macOS', - linux: 'Linux', - windows: 'Windows', -}; - -function detectOs(): OsKey | null { - if (typeof navigator === 'undefined') return null; - const ua = navigator.userAgent.toLowerCase(); - const platform = (navigator.platform || '').toLowerCase(); - if (platform.includes('mac') || ua.includes('mac os')) return 'macos'; - if (platform.includes('win') || ua.includes('windows')) return 'windows'; - if (platform.includes('linux') || ua.includes('linux')) return 'linux'; - return null; -} - -function detectArch(os: OsKey): 'arm64' | 'x64' { - if (typeof navigator === 'undefined') return 'x64'; - const ua = navigator.userAgent.toLowerCase(); - if (os === 'macos') { - // Apple Silicon Macs still report x86_64; assume arm64 by default on macOS. - return 'arm64'; - } - if (ua.includes('arm64') || ua.includes('aarch64')) return 'arm64'; - return 'x64'; -} - -function downloadFor(os: OsKey, arch: 'arm64' | 'x64') { - return recommendedDownload(os, arch); -} - -export function OsDetectHero({ - primaryCta, - secondaryCta, - secondaryHref, - detected, - detecting, - notSure, - onDetect, -}: OsDetectHeroProps) { - const [os, setOs] = useState(null); - const [arch, setArch] = useState<'arm64' | 'x64'>('x64'); - const [ready, setReady] = useState(false); - - useEffect(() => { - const detectedOs = detectOs(); - setOs(detectedOs); - if (detectedOs) { - setArch(detectArch(detectedOs)); - onDetect?.(detectedOs); - } - setReady(true); - }, [onDetect]); - - const dl = os ? downloadFor(os, arch) : null; - const Icon = os === 'macos' ? Apple : os === 'windows' ? Monitor : Monitor; - - return ( -
    -
    - -
    -
    - {ready - ? os - ? `${detected}: ${OS_LABEL[os]} · ${arch}${dl ? ` · ${dl.file} (${dl.size})` : ''}` - : notSure - : detecting} -
    -
    - ); -} - -export { detectOs }; diff --git a/apps/docs/components/download/platform-card.tsx b/apps/docs/components/download/platform-card.tsx deleted file mode 100644 index 56ebe7e..0000000 --- a/apps/docs/components/download/platform-card.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import Link from 'next/link'; -import { ArrowRight } from 'lucide-react'; -import { CommandBlock } from './command-block'; -import { Card } from '@/components/ui/card'; -import { cn } from '@/lib/utils'; - -interface PlatformCardProps { - icon: React.ReactNode; - title: string; - tagline: string; - description: string; - command: string; - commandLabel?: string; - cta: string; - href: string; - copyLabel: string; - copiedLabel: string; - className?: string; -} - -export function PlatformCard({ - icon, - title, - tagline, - description, - command, - commandLabel, - cta, - href, - copyLabel, - copiedLabel, - className, -}: PlatformCardProps) { - return ( - -
    - {icon} -
    -
    - {tagline} -
    -

    {title}

    -

    {description}

    -
    - - - {cta} - - -
    -
    - ); -} diff --git a/apps/docs/lib/download-i18n.ts b/apps/docs/lib/download-i18n.ts deleted file mode 100644 index b6129b6..0000000 --- a/apps/docs/lib/download-i18n.ts +++ /dev/null @@ -1,425 +0,0 @@ -/** - * Download page translations + static install data. - * - * English is the source of truth — edit `en` first, then sync `zhHans`. - * - * Only include install methods that have a real, published artifact: - * - Docker image: ghcr.io/objectstack-ai/objectos:latest (docker.yml) - * - Desktop bundles: github.com/objectstack-ai/objectos/releases/one-v* (one.yml) - * - npm packages: @objectstack/cli, @objectstack/client - * - * Aspirational entries (brew tap, scoop bucket, winget, install.sh, - * helm chart, standalone CLI tarball) are intentionally NOT shipped here. - * Add them back once the corresponding release pipeline lands. - */ - -import { ONE_VERSION, ONE_RELEASE_TAG } from './version'; - -export interface DownloadTranslations { - badge: string; - hero: { - title: string; - subtitle: string; - primaryCta: string; - secondaryCta: string; - secondaryHref: string; - detected: string; - detecting: string; - notSure: string; - }; - server: { - heading: string; - subheading: string; - docker: { title: string; tagline: string; description: string; cta: string; href: string }; - kubernetes: { title: string; tagline: string; description: string; cta: string; href: string }; - source: { title: string; tagline: string; description: string; cta: string; href: string }; - }; - cli: { - heading: string; - subheading: string; - tabs: { npm: string; pnpm: string; yarn: string }; - requires: string; - }; - desktop: { - heading: string; - subheading: string; - cols: { platform: string; file: string; size: string }; - }; - clients: { - heading: string; - subheading: string; - items: { - studio: { title: string; description: string; cta: string; href: string }; - js: { title: string; description: string; cta: string; href: string }; - rest: { title: string; description: string; cta: string; href: string }; - mcp: { title: string; description: string; cta: string; href: string }; - vscode: { title: string; description: string; cta: string; href: string }; - }; - }; - verify: { - heading: string; - body: string; - releaseCta: string; - releaseHref: string; - signingCta: string; - signingHref: string; - }; - requirements: { - heading: string; - rows: { label: string; value: string }[]; - }; - past: { - heading: string; - body: string; - cta: string; - href: string; - }; - copy: { copy: string; copied: string }; -} - -const RELEASE_BASE = 'https://github.com/objectstack-ai/objectos/releases'; -const ONE_RELEASE = `${RELEASE_BASE}/tag/${ONE_RELEASE_TAG}`; -const ONE_DL = `${RELEASE_BASE}/download/${ONE_RELEASE_TAG}`; - -export const en: DownloadTranslations = { - badge: `Latest release · v${ONE_VERSION}`, - hero: { - title: 'Get ObjectOS', - subtitle: - 'Install the desktop app for the fastest local start, or run the server in your own environment. Same runtime, same data model, same governance.', - primaryCta: 'Download for', - secondaryCta: 'View on GitHub', - secondaryHref: ONE_RELEASE, - detected: 'Detected', - detecting: 'Detecting your platform…', - notSure: 'Not what you wanted? Pick an installer below.', - }, - server: { - heading: 'Run the server', - subheading: - 'One container image, two ways to run it. Same image, same behavior — pick what matches your infrastructure.', - docker: { - title: 'Docker', - tagline: 'Single host · single command', - description: 'Pull the official image and run a container against your own database. Best for evaluation and small deployments.', - cta: 'Docker guide', - href: '/docs/deploy/docker', - }, - kubernetes: { - title: 'Kubernetes', - tagline: 'Production · your cluster', - description: 'Run the same image as a Deployment in your own cluster — wire up secrets, ingress, and storage the way you already do.', - cta: 'Kubernetes guide', - href: '/docs/deploy/kubernetes', - }, - source: { - title: 'Build from source', - tagline: 'Hackable · all platforms', - description: 'Clone the monorepo and run the server directly with pnpm. Best for contributors, custom builds, and air-gapped setups.', - cta: 'Build guide', - href: '/docs/deploy/source', - }, - }, - cli: { - heading: 'Install the CLI', - subheading: - 'The `os` command builds, boots, and inspects ObjectStack applications. Distributed as an npm package — works on every OS.', - tabs: { npm: 'npm', pnpm: 'pnpm', yarn: 'yarn' }, - requires: 'Requires Node.js 20 LTS or newer.', - }, - desktop: { - heading: 'All desktop installers', - subheading: 'Every installer published in the latest release. All bundles are code-signed.', - cols: { platform: 'Platform', file: 'File', size: 'Size' }, - }, - clients: { - heading: 'Connect from your app', - subheading: - 'Every business object on ObjectOS is reachable from your code, your AI agents, and your editor — through the same governed runtime.', - items: { - studio: { - title: 'Studio (web)', - description: 'The built-in admin console. No download — opens at the runtime URL once ObjectOS is up.', - cta: 'Open Studio guide', - href: '/docs/architecture', - }, - js: { - title: 'JavaScript / TypeScript SDK', - description: 'Typed client for ObjectQL, REST, realtime, and file upload. Install once, share types across your stack.', - cta: 'SDK reference', - href: '/docs/reference/rest-api', - }, - rest: { - title: 'REST / OpenAPI', - description: 'Auto-generated REST endpoints for every object, plus a live OpenAPI spec served by the runtime.', - cta: 'REST reference', - href: '/docs/reference/rest-api', - }, - mcp: { - title: 'MCP server (AI agents)', - description: 'Expose objects and actions as Model Context Protocol tools — for Claude, Cursor, Copilot, and any MCP client.', - cta: 'Configure AI', - href: '/docs/configure/ai', - }, - vscode: { - title: 'Editor skills', - description: 'Skills for Claude Code, Cursor, and Codex that teach your agent the ObjectStack metadata model.', - cta: 'Skills CLI', - href: '/docs/reference/skills-cli', - }, - }, - }, - verify: { - heading: 'Signed & verifiable', - body: - 'Desktop bundles are code-signed; the Tauri updater ships a detached `.sig` alongside every macOS / Linux / Windows installer. The Docker image is tagged by both semver and commit SHA, so production deployments can pin an exact digest.', - releaseCta: 'Release notes & signatures', - releaseHref: ONE_RELEASE, - signingCta: 'Security & signing', - signingHref: '/docs/reference/security', - }, - requirements: { - heading: 'System requirements', - rows: [ - { label: 'CPU', value: '2 cores (4 recommended for production)' }, - { label: 'Memory', value: '1 GB (4 GB recommended)' }, - { label: 'Disk', value: '500 MB for the runtime + your data directory' }, - { label: 'Database', value: 'SQLite (built-in), PostgreSQL 14+, or libSQL / Turso' }, - { label: 'Node.js', value: '20 LTS or newer (for the CLI and from-source builds)' }, - { label: 'OS', value: 'macOS 12+ (arm64 / x64), Windows 10/11 (x64), Linux x64 (glibc 2.31+)' }, - ], - }, - past: { - heading: 'Looking for an older release?', - body: 'Every release is permanently archived on GitHub with notes, installers, and updater manifests.', - cta: 'All releases & changelogs', - href: RELEASE_BASE, - }, - copy: { copy: 'Copy', copied: 'Copied' }, -}; - -export const zhHans: DownloadTranslations = { - badge: `最新发布 · v${ONE_VERSION}`, - hero: { - title: '下载 ObjectOS', - subtitle: - '装上桌面端,本地最快上手;或在你自己的环境里运行服务端。同一份运行时、同一套数据模型、同一套治理。', - primaryCta: '下载', - secondaryCta: '在 GitHub 上查看', - secondaryHref: ONE_RELEASE, - detected: '已识别', - detecting: '正在识别你的平台…', - notSure: '不是你想要的? 从下面选一个安装方式。', - }, - server: { - heading: '运行服务端', - subheading: '同一个镜像,两种跑法。挑一种贴合你基础设施的方式即可 —— 行为完全一致。', - docker: { - title: 'Docker', - tagline: '单机 · 单条命令', - description: '拉取官方镜像,对接你自己的数据库,跑起一个容器。适合评估和小规模部署。', - cta: 'Docker 指南', - href: '/docs/deploy/docker', - }, - kubernetes: { - title: 'Kubernetes', - tagline: '生产环境 · 自有集群', - description: '把同一个镜像当作 Deployment 跑在你自己的集群里 —— 密钥、Ingress、存储按你既有的方式接。', - cta: 'Kubernetes 指南', - href: '/docs/deploy/kubernetes', - }, - source: { - title: '从源码构建', - tagline: '可改造 · 全平台', - description: '克隆 monorepo,用 pnpm 直接启动服务端。适合贡献者、定制构建,以及离线部署。', - cta: '构建指南', - href: '/docs/deploy/source', - }, - }, - cli: { - heading: '安装 CLI', - subheading: '`os` 命令用于构建、启动、查看 ObjectStack 应用。通过 npm 发布 —— 适配所有系统。', - tabs: { npm: 'npm', pnpm: 'pnpm', yarn: 'yarn' }, - requires: '需要 Node.js 20 LTS 或更高版本。', - }, - desktop: { - heading: '全部桌面端安装包', - subheading: '最新发布中的所有安装包。每个包都经过代码签名。', - cols: { platform: '平台', file: '文件', size: '大小' }, - }, - clients: { - heading: '从你的应用接入', - subheading: - 'ObjectOS 上的每个业务对象,都能从你的代码、AI Agent 和编辑器里访问 —— 走的是同一套受管运行时。', - items: { - studio: { - title: 'Studio(Web)', - description: '内置的管理控制台。无需下载 —— ObjectOS 启动后,在运行时地址就能打开。', - cta: '了解 Studio', - href: '/docs/architecture', - }, - js: { - title: 'JavaScript / TypeScript SDK', - description: '面向 ObjectQL、REST、Realtime 和文件上传的强类型客户端。安装一次,前后端共享类型。', - cta: 'SDK 参考', - href: '/docs/reference/rest-api', - }, - rest: { - title: 'REST / OpenAPI', - description: '每个对象自动生成 REST 接口,运行时同时暴露实时的 OpenAPI 规范。', - cta: 'REST 参考', - href: '/docs/reference/rest-api', - }, - mcp: { - title: 'MCP 服务端(AI Agent)', - description: '把对象和 action 暴露为 Model Context Protocol 工具 —— Claude、Cursor、Copilot 等 MCP 客户端都能接。', - cta: '配置 AI', - href: '/docs/configure/ai', - }, - vscode: { - title: '编辑器 Skills', - description: '为 Claude Code、Cursor、Codex 准备的 Skills,让你的 Agent 立刻理解 ObjectStack 元数据模型。', - cta: 'Skills CLI', - href: '/docs/reference/skills-cli', - }, - }, - }, - verify: { - heading: '已签名 · 可校验', - body: - '桌面端安装包经过代码签名,Tauri 自动更新器为每个 macOS / Linux / Windows 包附带独立 `.sig` 签名文件。Docker 镜像同时打 semver 与 commit SHA 标签,生产部署可以锁到指定 digest。', - releaseCta: '发布说明与签名', - releaseHref: ONE_RELEASE, - signingCta: '安全与签名', - signingHref: '/docs/reference/security', - }, - requirements: { - heading: '系统要求', - rows: [ - { label: 'CPU', value: '2 核(生产环境建议 4 核)' }, - { label: '内存', value: '1 GB(建议 4 GB)' }, - { label: '磁盘', value: '500 MB 运行时 + 你的数据目录' }, - { label: '数据库', value: 'SQLite(内置)、PostgreSQL 14+,或 libSQL / Turso' }, - { label: 'Node.js', value: '20 LTS 或更高(用于 CLI 与从源码构建)' }, - { label: '操作系统', value: 'macOS 12+(arm64 / x64)、Windows 10/11(x64)、Linux x64(glibc 2.31+)' }, - ], - }, - past: { - heading: '想找旧版本?', - body: '每个发布都会永久归档在 GitHub 上,附带发布说明、安装包与自动更新清单。', - cta: '全部发布与变更日志', - href: RELEASE_BASE, - }, - copy: { copy: '复制', copied: '已复制' }, -}; - -/** - * Registry of available download-page translations. Locales absent - * here (ja, de, es, fr until translated) resolve to English. - */ -const DOWNLOAD_TRANSLATIONS: Partial> = { - en, - 'zh-Hans': zhHans, -}; - -export function getDownloadTranslations(lang: string): DownloadTranslations { - return DOWNLOAD_TRANSLATIONS[lang] ?? en; -} - -/* ------------------------------------------------------------------ */ -/* Static data shared across locales */ -/* ------------------------------------------------------------------ */ - -export type OsKey = 'macos' | 'linux' | 'windows'; - -export interface InstallCommand { - label: string; - command: string; - note?: string; -} - -/** - * CLI installers. ObjectOS CLI ships as `@objectstack/cli` on npm — every - * Node package manager works. We do NOT advertise brew/scoop/winget here - * because there is no release pipeline producing those packages. - */ -export const CLI_INSTALLS: Record<'npm' | 'pnpm' | 'yarn', InstallCommand[]> = { - npm: [{ label: 'npm', command: 'npm install -g @objectstack/cli' }], - pnpm: [{ label: 'pnpm', command: 'pnpm add -g @objectstack/cli' }], - yarn: [{ label: 'yarn', command: 'yarn global add @objectstack/cli' }], -}; - -/** - * Server install commands. Each MUST resolve to a real, published artifact. - * - docker: ghcr image, built by docker.yml on every push. - * - kubernetes: same ghcr image, wrapped in a minimal kubectl example. - * - source: git clone — always works, the repo is public. - */ -export const SERVER_COMMANDS = { - docker: - 'docker run -p 3000:3000 -v objectos-data:/var/lib/objectos \\\n ghcr.io/objectstack-ai/objectos:latest', - kubernetes: - 'kubectl create deployment objectos \\\n --image=ghcr.io/objectstack-ai/objectos:latest --port=3000\nkubectl expose deployment objectos --port=80 --target-port=3000', - source: - 'git clone https://github.com/objectstack-ai/objectos.git\ncd objectos && pnpm install\npnpm --filter @objectos/server start', -} as const; - -/** - * Client / SDK install commands. All resolve to real npm packages. - */ -export const CLIENT_COMMANDS = { - js: 'npm install @objectstack/client', - mcp: 'npx @objectstack/plugin-mcp-server --url http://localhost:3000', - vscode: 'npx @objectstack/skills install --target claude-code', -} as const; - -/** - * Desktop installers. Each entry MUST correspond to a real asset on the - * latest `one-v*` GitHub release — see one.yml `Upload artifacts` step. - * - * If you add a new platform target in one.yml, add the row here too. Size - * values are taken from the published release and are accurate to ±1 MB. - */ -export interface DesktopDownload { - os: 'macOS' | 'Windows' | 'Linux'; - arch: 'arm64' | 'x64'; - file: string; - size: string; - href: string; - kind: 'dmg' | 'exe' | 'msi' | 'deb' | 'AppImage'; -} - -export const DESKTOP_DOWNLOADS: DesktopDownload[] = [ - { os: 'macOS', arch: 'arm64', kind: 'dmg', file: `ObjectOS_${ONE_VERSION}_aarch64.dmg`, size: '86 MB', href: `${ONE_DL}/ObjectOS_${ONE_VERSION}_aarch64.dmg` }, - { os: 'macOS', arch: 'x64', kind: 'dmg', file: `ObjectOS_${ONE_VERSION}_x64.dmg`, size: '87 MB', href: `${ONE_DL}/ObjectOS_${ONE_VERSION}_x64.dmg` }, - { os: 'Windows', arch: 'x64', kind: 'exe', file: `ObjectOS_${ONE_VERSION}_x64-setup.exe`, size: '46 MB', href: `${ONE_DL}/ObjectOS_${ONE_VERSION}_x64-setup.exe` }, - { os: 'Windows', arch: 'x64', kind: 'msi', file: `ObjectOS_${ONE_VERSION}_x64_en-US.msi`, size: '79 MB', href: `${ONE_DL}/ObjectOS_${ONE_VERSION}_x64_en-US.msi` }, - { os: 'Linux', arch: 'x64', kind: 'AppImage', file: `ObjectOS_${ONE_VERSION}_amd64.AppImage`, size: '148 MB', href: `${ONE_DL}/ObjectOS_${ONE_VERSION}_amd64.AppImage` }, - { os: 'Linux', arch: 'x64', kind: 'deb', file: `ObjectOS_${ONE_VERSION}_amd64.deb`, size: '94 MB', href: `${ONE_DL}/ObjectOS_${ONE_VERSION}_amd64.deb` }, -]; - -/** - * Pick the recommended installer for a detected OS+arch. Falls back to - * the closest available bundle (e.g. Linux arm64 → Linux x64 AppImage, - * Windows arm64 → Windows x64 setup) since the release pipeline only - * publishes a subset of architectures today. - */ -export function recommendedDownload( - os: OsKey, - arch: 'arm64' | 'x64', -): DesktopDownload | null { - const osName = os === 'macos' ? 'macOS' : os === 'linux' ? 'Linux' : 'Windows'; - if (osName === 'macOS') { - return ( - DESKTOP_DOWNLOADS.find((d) => d.os === 'macOS' && d.arch === arch) ?? - DESKTOP_DOWNLOADS.find((d) => d.os === 'macOS') ?? - null - ); - } - if (osName === 'Windows') { - // Prefer the smaller NSIS setup over MSI. - return DESKTOP_DOWNLOADS.find((d) => d.os === 'Windows' && d.kind === 'exe') ?? null; - } - // Linux: AppImage is the most universal install path. - return DESKTOP_DOWNLOADS.find((d) => d.os === 'Linux' && d.kind === 'AppImage') ?? null; -} diff --git a/apps/docs/lib/layout.shared.tsx b/apps/docs/lib/layout.shared.tsx index cbd8375..0cfd316 100644 --- a/apps/docs/lib/layout.shared.tsx +++ b/apps/docs/lib/layout.shared.tsx @@ -7,14 +7,14 @@ export const gitConfig = { branch: 'main', }; -const NAV_LABELS: Record = { - en: { website: 'Website', docs: 'Docs', download: 'Download', changelog: 'Changelog' }, - 'zh-Hans': { website: '官网', docs: '文档', download: '下载', changelog: '更新日志' }, - ja: { website: '公式サイト', docs: 'ドキュメント', download: 'ダウンロード', changelog: '変更履歴' }, - de: { website: 'Website', docs: 'Dokumentation', download: 'Download', changelog: 'Änderungen' }, - es: { website: 'Sitio web', docs: 'Documentación', download: 'Descargar', changelog: 'Cambios' }, - fr: { website: 'Site web', docs: 'Documentation', download: 'Télécharger', changelog: 'Journal' }, - ko: { website: '웹사이트', docs: '문서', download: '다운로드', changelog: '변경 내역' }, +const NAV_LABELS: Record = { + en: { website: 'Website', docs: 'Docs', changelog: 'Changelog' }, + 'zh-Hans': { website: '官网', docs: '文档', changelog: '更新日志' }, + ja: { website: '公式サイト', docs: 'ドキュメント', changelog: '変更履歴' }, + de: { website: 'Website', docs: 'Dokumentation', changelog: 'Änderungen' }, + es: { website: 'Sitio web', docs: 'Documentación', changelog: 'Cambios' }, + fr: { website: 'Site web', docs: 'Documentation', changelog: 'Journal' }, + ko: { website: '웹사이트', docs: '문서', changelog: '변경 내역' }, }; const RELEASES_URL = 'https://github.com/objectstack-ai/objectos/releases'; @@ -56,11 +56,6 @@ export function baseOptions(lang: string = 'en'): BaseLayoutProps { url: `${prefix}/docs`, active: 'nested-url', }, - { - text: labels.download, - url: `${prefix}/download`, - active: 'nested-url', - }, { text: labels.changelog, url: RELEASES_URL, diff --git a/apps/docs/lib/version.ts b/apps/docs/lib/version.ts deleted file mode 100644 index ffb139b..0000000 --- a/apps/docs/lib/version.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Version utilities - * - * Single source of truth for the user-visible "current ObjectOS version". - * - * We pull from `apps/objectos-one/package.json` because: - * - `release-one` workflow keeps this in lockstep with the resolved - * `@objectstack/cli` version (via scripts/sync-version), - * - it's what actually gets shipped to GitHub Releases under - * `one-v` and is what users download. - * - * The legacy `apps/objectos/package.json` version is stale and - * intentionally not surfaced anywhere in the UI. - */ - -import onePkg from '../../objectos-one/package.json'; - -/** Bare semver, e.g. "7.1.0". */ -export const ONE_VERSION = onePkg.version; - -/** Display form used in headers/badges, e.g. "v7.1.0". */ -export const OBJECTOS_VERSION = `v${onePkg.version}`; - -/** GitHub release tag matching one.yml output, e.g. "one-v7.1.0". */ -export const ONE_RELEASE_TAG = `one-v${onePkg.version}`; - -/** @deprecated Use OBJECTOS_VERSION instead. */ -export const SPEC_VERSION = OBJECTOS_VERSION; From 1f64173b3443f200a69c17ffc739cbe2d9dd836a Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 15 Jul 2026 11:56:47 +0000 Subject: [PATCH 4/4] docs: link the archive branch (tag push not available; branch ref created instead) Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_0162o68e5w3bpUBEVRQboUGG --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 59f4d37..ddc9999 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,8 @@ As part of clarifying the ObjectStack / ObjectOS split: official Docker image and ObjectOS Cloud trials. - **Everything already released stays licensed as released**: historical source remains available under Apache-2.0 in this repository's git history - (archive tag: `archive/apache-final`). Nothing is retroactively withdrawn. + (archive branch: [`archive/apache-final`](https://github.com/objectstack-ai/objectos/tree/archive/apache-final)). + Nothing is retroactively withdrawn. ## Working on the docs