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/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..ddc9999 100644 --- a/README.md +++ b/README.md @@ -1,162 +1,77 @@ # 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 branch: [`archive/apache-final`](https://github.com/objectstack-ai/objectos/tree/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). 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; 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 ef2026d..0000000 Binary files a/apps/objectos-one/src-tauri/icons/128x128.png and /dev/null differ 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 c71c30a..0000000 Binary files a/apps/objectos-one/src-tauri/icons/128x128@2x.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/32x32.png b/apps/objectos-one/src-tauri/icons/32x32.png deleted file mode 100644 index 3a6d821..0000000 Binary files a/apps/objectos-one/src-tauri/icons/32x32.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/64x64.png b/apps/objectos-one/src-tauri/icons/64x64.png deleted file mode 100644 index 6fe0057..0000000 Binary files a/apps/objectos-one/src-tauri/icons/64x64.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/Square107x107Logo.png b/apps/objectos-one/src-tauri/icons/Square107x107Logo.png deleted file mode 100644 index 7fee5ce..0000000 Binary files a/apps/objectos-one/src-tauri/icons/Square107x107Logo.png and /dev/null differ 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 5447faa..0000000 Binary files a/apps/objectos-one/src-tauri/icons/Square142x142Logo.png and /dev/null differ 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 eb014b2..0000000 Binary files a/apps/objectos-one/src-tauri/icons/Square150x150Logo.png and /dev/null differ 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 07126fe..0000000 Binary files a/apps/objectos-one/src-tauri/icons/Square284x284Logo.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/Square30x30Logo.png b/apps/objectos-one/src-tauri/icons/Square30x30Logo.png deleted file mode 100644 index e288741..0000000 Binary files a/apps/objectos-one/src-tauri/icons/Square30x30Logo.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/Square310x310Logo.png b/apps/objectos-one/src-tauri/icons/Square310x310Logo.png deleted file mode 100644 index e704409..0000000 Binary files a/apps/objectos-one/src-tauri/icons/Square310x310Logo.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/Square44x44Logo.png b/apps/objectos-one/src-tauri/icons/Square44x44Logo.png deleted file mode 100644 index 1093146..0000000 Binary files a/apps/objectos-one/src-tauri/icons/Square44x44Logo.png and /dev/null differ 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 5b051c0..0000000 Binary files a/apps/objectos-one/src-tauri/icons/Square71x71Logo.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/Square89x89Logo.png b/apps/objectos-one/src-tauri/icons/Square89x89Logo.png deleted file mode 100644 index a38d94e..0000000 Binary files a/apps/objectos-one/src-tauri/icons/Square89x89Logo.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/StoreLogo.png b/apps/objectos-one/src-tauri/icons/StoreLogo.png deleted file mode 100644 index bdbcb67..0000000 Binary files a/apps/objectos-one/src-tauri/icons/StoreLogo.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/_source/generate.py b/apps/objectos-one/src-tauri/icons/_source/generate.py deleted file mode 100644 index 019bf21..0000000 --- a/apps/objectos-one/src-tauri/icons/_source/generate.py +++ /dev/null @@ -1,98 +0,0 @@ -""" -ObjectOS icon generator. - -Design concept: three stacked, slightly perspective-offset rounded plates -sitting on top of a deep gradient — reads as "stack of objects" at any -size, scales down cleanly to a 16x16 tray icon. - -Output: 1024x1024 PNG, suitable for `tauri icon` to fan out to all -platform formats. -""" -from PIL import Image, ImageDraw, ImageFilter - -SCALE = 4 -SIZE = 1024 -S = SIZE * SCALE - -bg = Image.new("RGB", (S, S)) -top = (29, 16, 84) -mid = (76, 29, 149) -bot = (37, 99, 235) -px = bg.load() -for y in range(S): - t = y / (S - 1) - if t < 0.55: - u = t / 0.55 - r = int(top[0] + (mid[0] - top[0]) * u) - g = int(top[1] + (mid[1] - top[1]) * u) - b = int(top[2] + (mid[2] - top[2]) * u) - else: - u = (t - 0.55) / 0.45 - r = int(mid[0] + (bot[0] - mid[0]) * u) - g = int(mid[1] + (bot[1] - mid[1]) * u) - b = int(mid[2] + (bot[2] - mid[2]) * u) - for x in range(S): - px[x, y] = (r, g, b) - -RADIUS = int(S * 0.225) -mask = Image.new("L", (S, S), 0) -ImageDraw.Draw(mask).rounded_rectangle((0, 0, S - 1, S - 1), RADIUS, fill=255) - -canvas = Image.new("RGBA", (S, S), (0, 0, 0, 0)) -canvas.paste(bg, (0, 0), mask) - -gloss = Image.new("L", (S, S), 0) -ImageDraw.Draw(gloss).ellipse( - (-int(S * 0.3), -int(S * 0.4), int(S * 0.85), int(S * 0.5)), fill=70 -) -gloss = gloss.filter(ImageFilter.GaussianBlur(S * 0.08)) -gloss_layer = Image.new("RGBA", (S, S), (255, 255, 255, 0)) -gloss_layer.putalpha(gloss) -gloss_layer = Image.composite(gloss_layer, Image.new("RGBA", (S, S), (0, 0, 0, 0)), mask) -canvas = Image.alpha_composite(canvas, gloss_layer) - -cx, cy = S // 2, int(S * 0.54) -plate_w = int(S * 0.62) -plate_h = int(S * 0.14) -gap = int(S * 0.025) -offset_x = int(S * 0.018) - -plates = [ - (-(plate_h + gap), 0.78, 235), - (0, 0.92, 250), - ((plate_h + gap), 1.00, 255), -] - -def draw_plate(target, dy, scale, alpha, stagger): - w = int(plate_w * scale) - h = int(plate_h * scale) - r = h // 2 - x0 = cx - w // 2 + stagger - y0 = cy + dy - h // 2 - sh = Image.new("RGBA", (S, S), (0, 0, 0, 0)) - ImageDraw.Draw(sh).rounded_rectangle( - (x0, y0 + int(S * 0.012), x0 + w, y0 + h + int(S * 0.012)), - r, fill=(0, 0, 0, 110), - ) - sh = sh.filter(ImageFilter.GaussianBlur(S * 0.012)) - target.alpha_composite(sh) - pl = Image.new("RGBA", (S, S), (0, 0, 0, 0)) - ImageDraw.Draw(pl).rounded_rectangle( - (x0, y0, x0 + w, y0 + h), - r, fill=(255, 255, 255, alpha), - ) - target.alpha_composite(pl) - -for i, (dy, scale, alpha) in enumerate(plates): - stagger = (i - 1) * offset_x - draw_plate(canvas, dy, scale, alpha, stagger) - -clipped = Image.new("RGBA", (S, S), (0, 0, 0, 0)) -clipped.paste(canvas, (0, 0), mask) - -out = clipped.resize((SIZE, SIZE), Image.LANCZOS) -import os -here = os.path.dirname(__file__) -out_path = os.path.join(here, "icon-1024.png") -out.save(out_path, optimize=True) -print(f"✓ wrote {out_path}") diff --git a/apps/objectos-one/src-tauri/icons/_source/icon-1024.png b/apps/objectos-one/src-tauri/icons/_source/icon-1024.png deleted file mode 100644 index 08dc09f..0000000 Binary files a/apps/objectos-one/src-tauri/icons/_source/icon-1024.png and /dev/null differ 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 2a6a634..0000000 Binary files a/apps/objectos-one/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png b/apps/objectos-one/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png deleted file mode 100644 index f084a9e..0000000 Binary files a/apps/objectos-one/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png b/apps/objectos-one/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png deleted file mode 100644 index 5050acb..0000000 Binary files a/apps/objectos-one/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png and /dev/null differ 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 e089d8b..0000000 Binary files a/apps/objectos-one/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png b/apps/objectos-one/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png deleted file mode 100644 index 7413f1b..0000000 Binary files a/apps/objectos-one/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png b/apps/objectos-one/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png deleted file mode 100644 index bd06611..0000000 Binary files a/apps/objectos-one/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png and /dev/null differ 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 c17def8..0000000 Binary files a/apps/objectos-one/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png b/apps/objectos-one/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png deleted file mode 100644 index 7c17ed1..0000000 Binary files a/apps/objectos-one/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png and /dev/null differ 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 908ddc6..0000000 Binary files a/apps/objectos-one/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ 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 1a4fab2..0000000 Binary files a/apps/objectos-one/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png and /dev/null differ 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 1187216..0000000 Binary files a/apps/objectos-one/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png and /dev/null differ 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 9152092..0000000 Binary files a/apps/objectos-one/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png b/apps/objectos-one/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 1af42cd..0000000 Binary files a/apps/objectos-one/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png b/apps/objectos-one/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png deleted file mode 100644 index 6d9aeb0..0000000 Binary files a/apps/objectos-one/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png and /dev/null differ 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 521253f..0000000 Binary files a/apps/objectos-one/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ 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 1ac6984..0000000 Binary files a/apps/objectos-one/src-tauri/icons/icon.icns and /dev/null differ 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 b6ddf10..0000000 Binary files a/apps/objectos-one/src-tauri/icons/icon.ico and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/icon.png b/apps/objectos-one/src-tauri/icons/icon.png deleted file mode 100644 index e08d8fb..0000000 Binary files a/apps/objectos-one/src-tauri/icons/icon.png and /dev/null differ 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 244d43e..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-20x20@1x.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-20x20@2x-1.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-20x20@2x-1.png deleted file mode 100644 index 5b308e9..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-20x20@2x-1.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-20x20@2x.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-20x20@2x.png deleted file mode 100644 index 5b308e9..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-20x20@2x.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-20x20@3x.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-20x20@3x.png deleted file mode 100644 index 1d3a17f..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-20x20@3x.png and /dev/null differ 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 b99a4b7..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-29x29@1x.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-29x29@2x-1.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-29x29@2x-1.png deleted file mode 100644 index 86ce990..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-29x29@2x-1.png and /dev/null differ 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 86ce990..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-29x29@2x.png and /dev/null differ 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 1741752..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-29x29@3x.png and /dev/null differ 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 5b308e9..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-40x40@1x.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-40x40@2x-1.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-40x40@2x-1.png deleted file mode 100644 index 3dc2ed2..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-40x40@2x-1.png and /dev/null differ 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 3dc2ed2..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-40x40@2x.png and /dev/null differ 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 28bf522..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-40x40@3x.png and /dev/null differ 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 9401ead..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-512@2x.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-60x60@2x.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-60x60@2x.png deleted file mode 100644 index 28bf522..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-60x60@2x.png and /dev/null differ 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 68cb403..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-60x60@3x.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-76x76@1x.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-76x76@1x.png deleted file mode 100644 index 98ccfa2..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-76x76@1x.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-76x76@2x.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-76x76@2x.png deleted file mode 100644 index b911393..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-76x76@2x.png and /dev/null differ diff --git a/apps/objectos-one/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png b/apps/objectos-one/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png deleted file mode 100644 index 73e745e..0000000 Binary files a/apps/objectos-one/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png and /dev/null differ 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