diff --git a/README.md b/README.md
index a74e0b0..2c699e2 100644
--- a/README.md
+++ b/README.md
@@ -107,22 +107,22 @@ instance without a lookup table.
```mermaid
sequenceDiagram
- participant A as Sender device
- participant IA as UserInbox sender
- participant C as Chat chatId
- participant N as Neon
- participant IB as UserInbox recipient
- participant B as Recipient device
-
- A->>IA: send · MLS ciphertext (msgpack)
- IA->>C: RPC forward
- Note over C: buffer ~100ms
assign monotonic serverSerial
- C->>N: batch INSERT over HTTP
- C-->>IA: ack (serverSerial)
- IA-->>A: ack
- C->>IB: msg (ciphertext)
- IB-->>B: WS deliver → MLS decrypt → SQLite
- Note over C,B: recipient offline →
SNS ChatDelivered → SQS → chat-push → APNs/FCM
+participant A as Sender device
+participant IA as UserInbox sender
+participant C as Chat chatId
+participant N as Neon
+participant IB as UserInbox recipient
+participant B as Recipient device
+
+A->>IA: send · MLS ciphertext (msgpack)
+IA->>C: RPC forward
+Note over C: buffer ~100ms
assign monotonic serverSerial
+C->>N: batch INSERT over HTTP
+C-->>IA: ack (serverSerial)
+IA-->>A: ack
+C->>IB: msg (ciphertext)
+IB-->>B: WS deliver → MLS decrypt → SQLite
+Note over C,B: recipient offline →
SNS ChatDelivered → SQS → chat-push → APNs/FCM
```
### Trust boundary
diff --git a/apps/mobile/app/_layout.tsx b/apps/mobile/app/_layout.tsx
index 8a816ef..4b16002 100644
--- a/apps/mobile/app/_layout.tsx
+++ b/apps/mobile/app/_layout.tsx
@@ -66,9 +66,12 @@ getOrCreateChatIdentity()
console.error("[chat-mvp/M3] chat-identity init failed", err);
});
+// chat-db is per-account (chat-.sqlite) and opens only once the auth
+// store pushes a signed-in user — this boot probe resolves after the first
+// sign-in rather than at launch, and stays pending on a signed-out cold boot.
getChatDb()
.then((handle) => {
- console.log("[chat-mvp/M2] chat-db ready", {
+ console.log("[chat-mvp/M2] chat-db ready (post-auth)", {
schemaVersion: handle.version,
keySource: handle.keySource,
});
diff --git a/apps/mobile/app/settings/blocks.tsx b/apps/mobile/app/settings/blocks.tsx
index cedc1ec..07aa404 100644
--- a/apps/mobile/app/settings/blocks.tsx
+++ b/apps/mobile/app/settings/blocks.tsx
@@ -104,7 +104,7 @@ export default function BlocksScreen() {
data={rows}
keyExtractor={(r) => r.accountId}
renderItem={({ item }) => (
- onUnblock(item)}
@@ -117,7 +117,7 @@ export default function BlocksScreen() {
);
}
-function BlockedRow({
+function BlockedRowItem({
row,
isPending,
onUnblock,
diff --git a/apps/mobile/eslint.config.mjs b/apps/mobile/eslint.config.mjs
index 3b8032a..97d8154 100644
--- a/apps/mobile/eslint.config.mjs
+++ b/apps/mobile/eslint.config.mjs
@@ -5,6 +5,6 @@ export default [
...expo,
eslintConfigPrettier,
{
- ignores: ["dist/**", "android/**", "ios/**", ".expo/**"],
+ ignores: ["dist/**", "android/**", "ios/**", ".expo/**", "sst-env.d.ts"],
},
];
diff --git a/apps/mobile/lib/chat/create-chat.ts b/apps/mobile/lib/chat/create-chat.ts
index c7a0447..700d35c 100644
--- a/apps/mobile/lib/chat/create-chat.ts
+++ b/apps/mobile/lib/chat/create-chat.ts
@@ -6,10 +6,20 @@
// step fails (e.g. peer has 0 KeyPackages right now), the chat row + member
// rows still exist on the server. UI surfaces the failure; user can retry.
+import { useChatStore } from "@repo/chat";
import { getChatDb, mls as mlsStore } from "@repo/chat-db";
import { trpc } from "@/lib/trpc/client";
import { getMlsClient } from "@/lib/chat/mls-auto-publish";
import { clearChatGroupCache } from "./group-resolver";
+import { createTrpcChatApi } from "./store-provider";
+
+// The chat screen renders from the zustand store, and nothing refreshes the
+// store after a create — the WS `open` refresh fired long before this chat
+// existed. Without this pull the freshly-created chat has no store record and
+// /chat/[chatId] shows an indefinite spinner. refresh() merges + never throws.
+async function syncChatStore(): Promise {
+ await useChatStore.getState().refresh(createTrpcChatApi());
+}
// GroupId (Uint8Array) → base64 for the linkMlsGroup wire. Mirrors the encoder
// in publish.ts (Hermes provides global btoa); avoids a Buffer polyfill dep.
@@ -58,6 +68,7 @@ export async function createNewChat(
if (created.existing) {
const chat = await trpc.chat.get.query({ chatId: created.chatId });
if (chat.mlsGroupIdB64) {
+ await syncChatStore();
return {
chatId: created.chatId,
existing: true,
@@ -115,6 +126,8 @@ export async function createNewChat(
}
}
+ await syncChatStore();
+
return {
chatId: created.chatId,
existing: created.existing,
diff --git a/apps/mobile/lib/chat/mls-auto-publish.ts b/apps/mobile/lib/chat/mls-auto-publish.ts
index 587df1d..4eceb94 100644
--- a/apps/mobile/lib/chat/mls-auto-publish.ts
+++ b/apps/mobile/lib/chat/mls-auto-publish.ts
@@ -12,6 +12,7 @@ import { trpc } from "@/lib/trpc/client";
import { loadSessionToken } from "@/lib/auth/session";
import { useAuthStore } from "@/store/auth";
import { getOrCreateChatIdentity } from "./identity";
+import { kickChatBackfill } from "./store-provider";
import { publishMyChatDevice } from "./publish";
import { getCurrentChatTransport } from "./transport";
import { clearChatGroupCache } from "./group-resolver";
@@ -196,6 +197,10 @@ async function tick(reason: string): Promise {
hexStr += (gid[i] ?? 0).toString(16).padStart(2, "0");
clearChatGroupCache(`mls-${hexStr}`);
}
+ // Newly-joined groups may have backfill rows sitting behind a capped
+ // cursor (dropped recoverably before the join) — re-request them now
+ // that the engine holds the group.
+ kickChatBackfill();
}
// Poll commits for every locally-known group. At Phase 1 scale the
@@ -267,6 +272,12 @@ async function onAuthChange(reason: string): Promise {
await tick(reason);
startTimer();
+
+ // Engine is initialised for this account only from here on. Any backfill
+ // page that arrived earlier (WS open races bootstrap, esp. on account
+ // switch) dropped its rows with "engine not initialised" and capped the
+ // cursor — re-request those rows now that decrypt can succeed.
+ kickChatBackfill();
}
// Foreground transitions trigger an immediate catch-up tick. Saves the user
diff --git a/apps/mobile/lib/chat/store-provider.tsx b/apps/mobile/lib/chat/store-provider.tsx
index e999aae..799feda 100644
--- a/apps/mobile/lib/chat/store-provider.tsx
+++ b/apps/mobile/lib/chat/store-provider.tsx
@@ -9,6 +9,7 @@ import { AppState } from "react-native";
import {
ChatStoreProvider,
createOutboxWorker,
+ useChatBackfill,
useChatStore,
type BackfillCursorApi,
type BoundOutboxApi,
@@ -66,7 +67,9 @@ async function mirrorChatsToLocalDb(
}
}
-function createTrpcChatApi(): ChatApi {
+// Exported for non-React callers that need a one-off store refresh with the
+// same list→local-mirror semantics the provider uses (e.g. create-chat).
+export function createTrpcChatApi(): ChatApi {
return {
chatList: async (input) => {
const res = await trpc.chat.list.query(input);
@@ -87,6 +90,30 @@ function createTrpcChatApi(): ChatApi {
};
}
+// Module-level bridge so non-React code (the MLS auto-publish loop) can kick
+// a backfill pass. The decisive consumer: a backfill page that raced
+// initEngine(accountId) drops its rows recoverably and caps the cursor — the
+// engine-ready kick is what re-requests those rows once decrypt can succeed.
+// Mirrors the getCurrentChatTransport() singleton pattern (transport.tsx).
+let backfillKicker: (() => void) | null = null;
+
+export function kickChatBackfill(): void {
+ backfillKicker?.();
+}
+
+// Rendered inside ChatStoreProvider so useChatBackfill is in scope; registers
+// the provider's runner into the module-level bridge above.
+function BackfillKickBridge() {
+ const kick = useChatBackfill();
+ useEffect(() => {
+ backfillKicker = kick;
+ return () => {
+ if (backfillKicker === kick) backfillKicker = null;
+ };
+ }, [kick]);
+ return null;
+}
+
// Curry chat-db's backfill_cursors helpers onto a handle → the injected
// BackfillCursorApi the store provider drives (docs/message-backfill.md).
function bindBackfillCursors(handle: ChatDbHandle): BackfillCursorApi {
@@ -113,6 +140,9 @@ function bindOutbox(handle: ChatDbHandle): BoundOutboxApi {
export function MobileChatStoreProvider({ children }: { children: ReactNode }) {
const authenticated = useAuthStore((s) => !!s.session);
+ // chat-db is per-account (chat-.sqlite) — bindings must be rebuilt
+ // when the signed-in user changes, not once per mount.
+ const userId = useAuthStore((s) => s.session?.user.id ?? null);
const transport = useChatTransport();
const api = useMemo(createTrpcChatApi, []);
@@ -143,6 +173,14 @@ export function MobileChatStoreProvider({ children }: { children: ReactNode }) {
);
useEffect(() => {
+ if (!userId) {
+ // Signed out (or not yet in) — detach the previous account's bindings
+ // so nothing keeps writing through a closed/foreign handle.
+ setPersistApi(undefined);
+ setBackfillApi(undefined);
+ setOutboxBindings(undefined);
+ return;
+ }
let active = true;
(async () => {
try {
@@ -175,7 +213,7 @@ export function MobileChatStoreProvider({ children }: { children: ReactNode }) {
return () => {
active = false;
};
- }, [confirmOptimisticMessage, failOptimisticMessage, transport]);
+ }, [userId, confirmOptimisticMessage, failOptimisticMessage, transport]);
// AppState foreground kick. The chat-store provider already wires
// worker.kick on transport.onState("open"), and the worker runs a 30s
@@ -200,6 +238,7 @@ export function MobileChatStoreProvider({ children }: { children: ReactNode }) {
backfillCursors={backfillApi}
authenticated={authenticated}
>
+
{children}
);
diff --git a/apps/mobile/lib/chat/transport.tsx b/apps/mobile/lib/chat/transport.tsx
index 4d04290..2c77e5c 100644
--- a/apps/mobile/lib/chat/transport.tsx
+++ b/apps/mobile/lib/chat/transport.tsx
@@ -88,11 +88,13 @@ export function ChatTransportProvider({ children }: { children: ReactNode }) {
} satisfies MlsApi,
onDecryptFailure: (msg, reason) => {
console.warn(
- "[chat/transport] decrypt failed",
+ "[DEBUG-bkfl] decrypt failed",
{
chatId: msg.chatId,
serverMsgId: msg.serverMsgId,
senderId: msg.senderId,
+ // version byte: 2 = MLS (v=2), anything else = v=1 libsodium.
+ v: msg.ciphertext.length > 0 ? msg.ciphertext[0] : -1,
},
reason,
);
diff --git a/apps/mobile/package.json b/apps/mobile/package.json
index 8468b6d..0e3475e 100644
--- a/apps/mobile/package.json
+++ b/apps/mobile/package.json
@@ -83,6 +83,7 @@
"@types/react": "~19.1.10",
"eslint": "^9.39.1",
"eslint-config-expo": "^10.0.0",
- "typescript": "5.9.2"
+ "typescript": "5.9.2",
+ "@react-native-community/cli": "latest"
}
}
diff --git a/apps/mobile/store/auth.ts b/apps/mobile/store/auth.ts
index 0277585..382b836 100644
--- a/apps/mobile/store/auth.ts
+++ b/apps/mobile/store/auth.ts
@@ -1,4 +1,8 @@
import { create } from "zustand";
+import { setActiveChatDbUser } from "@repo/chat-db";
+
+import { clearChatGroupCache } from "@/lib/chat/group-resolver";
+import { forgetMyAccount } from "@/lib/account/me";
type User = {
id: string;
@@ -25,12 +29,33 @@ type AuthState = {
setActiveProfile: (profileId: string) => void;
};
+// Per-account local state pivots on the signed-in Better Auth user id: the
+// chat DB file (chat-.sqlite), the chatId→groupId resolver cache and
+// the account.me singleton all belong to exactly one account. Token refreshes
+// for the SAME user must not churn any of them — only an actual user change.
+function onUserChange(prev: Session | null, next: Session | null): void {
+ const prevUser = prev?.user.id ?? null;
+ const nextUser = next?.user.id ?? null;
+ if (prevUser === nextUser) return;
+ setActiveChatDbUser(nextUser);
+ clearChatGroupCache();
+ forgetMyAccount();
+}
+
export const useAuthStore = create((set) => ({
session: null,
- setSession: (session) => set({ session }),
+ setSession: (session) =>
+ set((state) => {
+ onUserChange(state.session, session);
+ return { session };
+ }),
- clearSession: () => set({ session: null }),
+ clearSession: () =>
+ set((state) => {
+ onUserChange(state.session, null);
+ return { session: null };
+ }),
setActiveProfile: (profileId) =>
set((state) =>
diff --git a/packages/chat-db/src/client.ts b/packages/chat-db/src/client.ts
index 444b9f5..3b334e2 100644
--- a/packages/chat-db/src/client.ts
+++ b/packages/chat-db/src/client.ts
@@ -1,8 +1,20 @@
import { open, type DB } from "@op-engineering/op-sqlite";
+
import { getOrCreatePassphrase, type PassphraseSource } from "./key";
import { runMigrations, LATEST_VERSION } from "./migrations";
+import { importLegacyChatDb } from "./legacy-import";
-const DB_NAME = "chat.sqlite";
+// One DB file PER SIGNED-IN ACCOUNT, keyed by the Better Auth user id. The
+// shared-file era ("chat.sqlite") leaked state across accounts on the same
+// install: backfill cursors poisoned each other (account B inherited account
+// A's high-water mark and permanently skipped messages), the plaintext cache
+// crossed account boundaries, and the outbox could dispatch one account's
+// queued sends under another's session. The SQLCipher passphrase stays
+// install-wide (device-at-rest threat model doesn't change per account).
+//
+// The active account is pushed in by the auth store via setActiveChatDbUser();
+// getChatDb() callers all run post-auth, so a call that arrives before the
+// first sign-in simply waits for it.
export interface ChatDbHandle {
db: DB;
@@ -10,25 +22,111 @@ export interface ChatDbHandle {
keySource: PassphraseSource;
}
-let cached: ChatDbHandle | null = null;
+function dbNameForUser(userId: string): string {
+ // Auth user ids are url-safe today; sanitise anyway — a file name must
+ // never depend on that staying true.
+ return `chat-${userId.replace(/[^A-Za-z0-9_-]/g, "_")}.sqlite`;
+}
+
+let activeUserId: string | null = null;
+let cached: { userId: string; handle: ChatDbHandle } | null = null;
+let opening: { userId: string; promise: Promise } | null = null;
+let gate: Array<() => void> = [];
-export async function getChatDb(): Promise {
- if (cached) return cached;
+function closeQuietly(handle: ChatDbHandle): void {
+ void Promise.resolve()
+ .then(() => handle.db.close())
+ .catch((err: unknown) => {
+ console.warn("[chat-db] close failed", err);
+ });
+}
+
+/** Auth-store hook point. Call with the Better Auth user id on sign-in and
+ * null on sign-out. Switching users closes the previous handle; consumers
+ * re-resolve via getChatDb() and land on the new account's file. */
+export function setActiveChatDbUser(userId: string | null): void {
+ if (userId === activeUserId) return;
+ activeUserId = userId;
+ opening = null;
+ if (cached) {
+ const stale = cached;
+ cached = null;
+ closeQuietly(stale.handle);
+ }
+ if (userId) {
+ const waiters = gate;
+ gate = [];
+ for (const release of waiters) release();
+ }
+}
+function waitForActiveUser(): Promise {
+ return new Promise((resolve) => gate.push(resolve));
+}
+
+async function openForUser(userId: string): Promise {
const { passphrase, source } = await getOrCreatePassphrase();
- const db = open({ name: DB_NAME, encryptionKey: passphrase });
+ const db = open({ name: dbNameForUser(userId), encryptionKey: passphrase });
await db.execute("PRAGMA foreign_keys = ON");
await db.execute("PRAGMA journal_mode = WAL");
await runMigrations(db);
- cached = { db, version: LATEST_VERSION, keySource: source };
- return cached;
+ // One-time import from the shared-file era. The marker lives outside the
+ // import transaction; a crash in between only re-runs the idempotent copy
+ // (INSERT OR IGNORE). An import failure throws — better a loud open failure
+ // than silently abandoning the account's MLS engine snapshot.
+ await db.execute(
+ "CREATE TABLE IF NOT EXISTS legacy_import (done INTEGER PRIMARY KEY NOT NULL)",
+ );
+ const marker = await db.execute("SELECT done FROM legacy_import LIMIT 1");
+ if ((marker.rows ?? []).length === 0) {
+ const { imported, rows } = await importLegacyChatDb(db, passphrase);
+ await db.execute("INSERT OR IGNORE INTO legacy_import (done) VALUES (1)");
+ if (imported) {
+ console.log("[chat-db] imported legacy shared DB", { userId, rows });
+ }
+ }
+
+ return { db, version: LATEST_VERSION, keySource: source };
+}
+
+export async function getChatDb(): Promise {
+ for (;;) {
+ if (!activeUserId) {
+ await waitForActiveUser();
+ continue;
+ }
+ const userId = activeUserId;
+ if (cached?.userId === userId) return cached.handle;
+
+ if (!opening || opening.userId !== userId) {
+ opening = { userId, promise: openForUser(userId) };
+ }
+ const current = opening;
+ let handle: ChatDbHandle;
+ try {
+ handle = await current.promise;
+ } catch (err) {
+ if (opening === current) opening = null;
+ throw err;
+ }
+ if (opening === current) opening = null;
+
+ // Account switched while the open was in flight — discard and retry.
+ if (activeUserId !== userId) {
+ if (cached?.handle !== handle) closeQuietly(handle);
+ continue;
+ }
+ cached = { userId, handle };
+ return handle;
+ }
}
export async function closeChatDb(): Promise {
if (!cached) return;
- await cached.db.close();
+ const stale = cached;
cached = null;
+ await stale.handle.db.close();
}
diff --git a/packages/chat-db/src/index.ts b/packages/chat-db/src/index.ts
index 455dd8f..623fc3d 100644
--- a/packages/chat-db/src/index.ts
+++ b/packages/chat-db/src/index.ts
@@ -1,4 +1,9 @@
-export { getChatDb, closeChatDb, type ChatDbHandle } from "./client";
+export {
+ getChatDb,
+ closeChatDb,
+ setActiveChatDbUser,
+ type ChatDbHandle,
+} from "./client";
export { LATEST_VERSION as SCHEMA_VERSION } from "./migrations";
export * as outbox from "./outbox";
export * as peerKeys from "./peer-keys";
diff --git a/packages/chat-db/src/legacy-import.ts b/packages/chat-db/src/legacy-import.ts
new file mode 100644
index 0000000..c0339c4
--- /dev/null
+++ b/packages/chat-db/src/legacy-import.ts
@@ -0,0 +1,131 @@
+import { open, type DB } from "@op-engineering/op-sqlite";
+
+import { runMigrations } from "./migrations";
+
+// One-time import of the shared-file era database ("chat.sqlite") into a fresh
+// per-account file. Before the per-account split every signed-in user on an
+// install shared one DB, so the legacy file holds the union of their data —
+// crucially each account's mls_engine_state snapshot, which is unrecoverable
+// if dropped (MLS group state can't be re-derived; there is no re-Welcome
+// mechanism yet), and the plaintext message cache (forward secrecy means old
+// v=2 ciphertexts can never be re-decrypted).
+
+export const LEGACY_DB_NAME = "chat.sqlite";
+
+// Tables copied verbatim. Cursor + queue tables are deliberately absent:
+// - backfill_cursors / sync_cursor start at zero for the account — the
+// shared-file cursors are exactly the cross-account poisoning this split
+// fixes (account B inheriting account A's high-water mark skips messages
+// B has never seen).
+// - pending_outbox rows aren't account-attributable; a queued send must
+// never dispatch under a different signed-in user.
+const COPY_TABLES: ReadonlyArray<{ table: string; cols: string[] }> = [
+ {
+ table: "chats",
+ cols: [
+ "id",
+ "kind",
+ "title",
+ "created_at",
+ "updated_at",
+ "last_message_id",
+ "mls_group_id",
+ ],
+ },
+ {
+ table: "messages",
+ cols: [
+ "id",
+ "chat_id",
+ "sender_id",
+ "ciphertext",
+ "nonce",
+ "sent_at",
+ "received_at",
+ "status",
+ "plaintext",
+ "client_msg_id",
+ ],
+ },
+ {
+ table: "members",
+ cols: ["chat_id", "account_id", "role", "joined_at", "identity_pubkey"],
+ },
+ {
+ table: "key_material",
+ cols: ["account_id", "identity_pub", "identity_priv", "created_at"],
+ },
+ {
+ table: "peer_keys",
+ cols: [
+ "account_id",
+ "device_id",
+ "ed25519_pub",
+ "x25519_pub",
+ "refreshed_at",
+ "server_updated_at",
+ ],
+ },
+ {
+ table: "mls_engine_state",
+ cols: ["account_id", "snapshot", "updated_at"],
+ },
+ {
+ table: "mls_group",
+ cols: ["group_id", "chat_id", "last_applied_epoch", "joined_at"],
+ },
+];
+
+export interface LegacyImportResult {
+ imported: boolean;
+ rows: number;
+}
+
+// Copy the legacy DB's rows into `fresh`. INSERT OR IGNORE keeps this
+// idempotent — a crash between the copy and the caller's marker write only
+// causes a harmless re-run. Opening the legacy name creates an empty file
+// when none exists; user_version 0 identifies that case (no schema ever ran)
+// and we skip without copying.
+export async function importLegacyChatDb(
+ fresh: DB,
+ passphrase: string,
+): Promise {
+ const legacy = open({ name: LEGACY_DB_NAME, encryptionKey: passphrase });
+ try {
+ const vres = await legacy.execute("PRAGMA user_version");
+ const version = (vres.rows?.[0]?.user_version as number) ?? 0;
+ if (version === 0) return { imported: false, rows: 0 };
+
+ // Bring the legacy file up to the current schema so the column lists
+ // below are valid — same forward-only runner the shared-file era used.
+ await runMigrations(legacy);
+
+ let copied = 0;
+ await fresh.execute("BEGIN IMMEDIATE");
+ try {
+ for (const { table, cols } of COPY_TABLES) {
+ const res = await legacy.execute(
+ `SELECT ${cols.join(", ")} FROM ${table}`,
+ );
+ const rows = (res.rows ?? []) as Array>;
+ if (rows.length === 0) continue;
+ const sql = `INSERT OR IGNORE INTO ${table} (${cols.join(", ")})
+ VALUES (${cols.map(() => "?").join(", ")})`;
+ for (const row of rows) {
+ await fresh.execute(
+ sql,
+ cols.map((c) => row[c]) as Parameters[1],
+ );
+ copied++;
+ }
+ }
+ await fresh.execute("COMMIT");
+ } catch (err) {
+ await fresh.execute("ROLLBACK");
+ throw err;
+ }
+ return { imported: true, rows: copied };
+ } finally {
+ await legacy.close();
+ }
+}
diff --git a/packages/chat-db/src/migrations.ts b/packages/chat-db/src/migrations.ts
index a0ccceb..630a638 100644
--- a/packages/chat-db/src/migrations.ts
+++ b/packages/chat-db/src/migrations.ts
@@ -156,6 +156,17 @@ const MIGRATIONS: Migration[] = [
) WITHOUT ROWID`,
],
},
+ {
+ version: 6,
+ up: [
+ // Data repair, not schema: cursors written before 2026-07-16 could
+ // advance past rows dropped with "engine not initialised" (a backfill
+ // page racing initEngine on account switch) — those serials were
+ // skipped forever. Wiping cursors is always safe: the next backfill
+ // force-refetches from 0 and the store dedupes by serverMsgId.
+ `DELETE FROM backfill_cursors`,
+ ],
+ },
];
const LAST = MIGRATIONS[MIGRATIONS.length - 1];
diff --git a/packages/chat/src/backfill-decrypt.test.ts b/packages/chat/src/backfill-decrypt.test.ts
index 7549960..dc1fd31 100644
--- a/packages/chat/src/backfill-decrypt.test.ts
+++ b/packages/chat/src/backfill-decrypt.test.ts
@@ -134,3 +134,124 @@ describe("decryptBackfill — undecryptable rows advance the cursor (ADR-0020 §
expect(onDecryptFailure).toHaveBeenCalledTimes(1);
});
});
+
+// An engine that holds no state for the group — throws the same shape the
+// native ChatMlsCore surfaces when the device never processed a Welcome —
+// but only for a sentinel ciphertext, so a page can mix healthy + blocked rows.
+const GNF_SENTINEL = 0x99;
+const gnfMls: MlsApi = {
+ encryptApp: (_g, plaintext) => plaintext,
+ processMessage: (_g, bytes) => {
+ if (bytes.length <= 2 && bytes[bytes.length - 1] === GNF_SENTINEL) {
+ throw new Error('ChatMlsError.Internal("group not found")');
+ }
+ return { kind: "application", plaintext: bytes };
+ },
+};
+
+function gnfRowCiphertext(): Uint8Array {
+ return new Uint8Array([FRAME_VERSION_V2, GNF_SENTINEL]);
+}
+
+describe("decryptBackfill — recoverable failures pin the cursor", () => {
+ it("caps upTo below a 'group not found' row and stops paging", async () => {
+ const { push, page } = harness({
+ mls: gnfMls,
+ resolveChatGroupId: async () => GID,
+ });
+
+ const good = encryptOutboundMls({
+ body: { text: "hello" },
+ groupId: GID,
+ mls: gnfMls,
+ });
+
+ push({
+ t: "bfd",
+ chatId: "chat-1",
+ messages: [
+ bfdRow("8", good.ciphertext), // decrypts
+ bfdRow("9", gnfRowCiphertext()), // group not found → recoverable
+ bfdRow("10", good.ciphertext), // still delivered (dedupe on refetch)
+ ],
+ upTo: "10",
+ more: true,
+ });
+
+ const result = await page;
+ expect(result.messages.map((m) => m.serverMsgId)).toEqual(["8", "10"]);
+ // Cursor pinned just below the blocked serial → 9 is refetched after the
+ // Welcome lands, instead of being skipped forever.
+ expect(result.upTo).toBe("8");
+ // Same-session paging stops — otherwise the next page re-serves 9+ in a loop.
+ expect(result.more).toBe(false);
+ });
+
+ it("caps at serial-1 even for the first row of history", async () => {
+ const { push, page } = harness({
+ mls: gnfMls,
+ resolveChatGroupId: async () => GID,
+ });
+
+ push({
+ t: "bfd",
+ chatId: "chat-1",
+ messages: [bfdRow("1", gnfRowCiphertext())],
+ upTo: "1",
+ more: false,
+ });
+
+ const result = await page;
+ expect(result.upTo).toBe("0");
+ expect(result.more).toBe(false);
+ });
+
+ it("treats a not-yet-initialised engine as recoverable (init race on account switch)", async () => {
+ // Exact shape the native module surfaces when a backfill page races
+ // initEngine(accountId) — the 2026-07-16 alice regression.
+ const bootingMls: MlsApi = {
+ encryptApp: (_g, plaintext) => plaintext,
+ processMessage: () => {
+ throw new Error(
+ "UnexpectedException: ChatMlsCore: engine not initialised — call initEngine(accountId) first",
+ );
+ },
+ };
+ const { push, page } = harness({
+ mls: bootingMls,
+ resolveChatGroupId: async () => GID,
+ });
+
+ push({
+ t: "bfd",
+ chatId: "chat-1",
+ messages: [bfdRow("3", gnfRowCiphertext())],
+ upTo: "3",
+ more: false,
+ });
+
+ const result = await page;
+ expect(result.upTo).toBe("2");
+ expect(result.more).toBe(false);
+ });
+
+ it("treats a missing local chat↔group link as recoverable too", async () => {
+ // chat.list mirror hasn't landed yet → resolveChatGroupId yields null.
+ const { push, page, onDecryptFailure } = harness({
+ mls: gnfMls,
+ resolveChatGroupId: async () => null,
+ });
+
+ push({
+ t: "bfd",
+ chatId: "chat-1",
+ messages: [bfdRow("5", gnfRowCiphertext())],
+ upTo: "5",
+ more: false,
+ });
+
+ const result = await page;
+ expect(result.upTo).toBe("4");
+ expect(onDecryptFailure).toHaveBeenCalledTimes(1);
+ });
+});
diff --git a/packages/chat/src/encrypted-transport.ts b/packages/chat/src/encrypted-transport.ts
index c5a749b..8b82daf 100644
--- a/packages/chat/src/encrypted-transport.ts
+++ b/packages/chat/src/encrypted-transport.ts
@@ -31,6 +31,26 @@ export interface ReactionInput {
op: "add" | "del";
}
+// Outcome of a single-row decrypt. Failures carry the reason so the backfill
+// path can distinguish recoverable ones (cursor must not advance) from
+// expected-permanent ones (cursor advances, per ADR-0020 §5).
+type DecryptOutcome =
+ | { ok: true; frame: ChatFrame; frameVersion: 1 | 2 }
+ | { ok: false; reason: string };
+
+// Decrypt failures a later state change can cure: the engine gaining the
+// group from a pending Welcome ("group not found"), the chat.list mirror
+// landing the local chat↔group link ("no mls_group_id locally"), or the
+// native engine still booting ("engine not initialised" — a backfill page
+// that races initEngine(accountId), seen on account switch). If the backfill
+// cursor advances past such a row it is never refetched — the message is
+// lost even after the state heals.
+export function isRecoverableDecryptReason(reason: string): boolean {
+ return /group not found|no mls_group_id locally|engine not initialised/i.test(
+ reason,
+ );
+}
+
// Discriminated on payload: exactly one of `text` (a message) or `reaction`
// (a reaction that rides the same encrypted frame — Option A). Both share the
// routing fields below.
@@ -184,42 +204,37 @@ export function createEncryptedTransport(
}
// Decrypt a single inbound row (live `msg` or a backfilled `bfd` row — both
- // carry the same fields). Returns the decrypted frame + version, or null on
- // any failure (empty/unknown/undecryptable), having already reported it via
- // onDecryptFailure. Shared by the live path and backfill so both stay in
- // lock-step on v=1/v=2 handling.
- async function decryptOne(
- msg: IncomingMessage,
- ): Promise<{ frame: ChatFrame; frameVersion: 1 | 2 } | null> {
+ // carry the same fields). Failures are reported via onDecryptFailure AND
+ // surfaced in the outcome so decryptBackfill can classify them (recoverable
+ // failures must not advance the cursor). Shared by the live path and
+ // backfill so both stay in lock-step on v=1/v=2 handling.
+ async function decryptOne(msg: IncomingMessage): Promise {
+ const fail = (reason: string): DecryptOutcome => {
+ opts.onDecryptFailure?.(msg, reason);
+ return { ok: false, reason };
+ };
+
// Peek the version byte before doing any lookups — v=2 skips the v=1
// peer-pub directory hit entirely.
if (msg.ciphertext.length === 0) {
- opts.onDecryptFailure?.(msg, "empty ciphertext");
- return null;
+ return fail("empty ciphertext");
}
const version = msg.ciphertext[0];
if (version === FRAME_VERSION_V2) {
if (!opts.mls || !opts.resolveChatGroupId) {
- opts.onDecryptFailure?.(
- msg,
- "v=2 frame received but no MLS engine configured",
- );
- return null;
+ return fail("v=2 frame received but no MLS engine configured");
}
let groupId: Uint8Array | null;
try {
groupId = await opts.resolveChatGroupId(msg.chatId);
} catch (err) {
- opts.onDecryptFailure?.(msg, `groupId lookup failed: ${String(err)}`);
- return null;
+ return fail(`groupId lookup failed: ${String(err)}`);
}
if (!groupId) {
- opts.onDecryptFailure?.(
- msg,
+ return fail(
`v=2 frame for chat ${msg.chatId} but no mls_group_id locally`,
);
- return null;
}
try {
const result = decryptInbound({
@@ -236,10 +251,9 @@ export function createEncryptedTransport(
if (result.frameVersion !== 2) {
throw new Error("expected v=2 result for v=2 ciphertext");
}
- return { frame: result.frame, frameVersion: 2 };
+ return { ok: true, frame: result.frame, frameVersion: 2 };
} catch (err) {
- opts.onDecryptFailure?.(msg, String(err));
- return null;
+ return fail(String(err));
}
}
@@ -250,8 +264,7 @@ export function createEncryptedTransport(
seed = await opts.getMySeed();
candidates = await opts.resolveSenderX25519Pubs(msg.senderId);
} catch (err) {
- opts.onDecryptFailure?.(msg, `pre-decrypt lookup failed: ${String(err)}`);
- return null;
+ return fail(`pre-decrypt lookup failed: ${String(err)}`);
}
try {
const result = decryptInbound({
@@ -264,27 +277,31 @@ export function createEncryptedTransport(
if (result.frameVersion !== 1) {
throw new Error("expected v=1 result for v=1 ciphertext");
}
- return { frame: result.frame, frameVersion: 1 };
+ return { ok: true, frame: result.frame, frameVersion: 1 };
} catch (err) {
- opts.onDecryptFailure?.(msg, String(err));
- return null;
+ return fail(String(err));
}
}
async function handleInbound(msg: IncomingMessage) {
const res = await decryptOne(msg);
- if (res) dispatch(msg, res.frame, res.frameVersion);
+ if (res.ok) dispatch(msg, res.frame, res.frameVersion);
}
// Decrypt one `bfd` page: map each row through decryptOne (dropping the ones
// that fail), split messages from reactions. Ordering is preserved from the
- // server's ascending-serial page. `upTo`/`more` pass through untouched so the
- // caller advances its cursor even past undecryptable rows.
+ // server's ascending-serial page. `upTo`/`more` pass through for
+ // expected-permanent drops (cursor advances, no refetch loop), but a
+ // RECOVERABLE drop (see isRecoverableDecryptReason) caps `upTo` below the
+ // failing serial + forces more:false so the row is refetched after heal.
async function decryptBackfill(
bfd: IncomingBackfill,
): Promise {
const messages: BackfilledMessage[] = [];
const reactions: BackfilledReaction[] = [];
+ let dropped = 0;
+ // serverMsgId of the first recoverably-undecryptable row, if any.
+ let blockedAt: string | null = null;
for (const row of bfd.messages) {
const asMsg: IncomingMessage = {
t: "msg",
@@ -296,7 +313,17 @@ export function createEncryptedTransport(
ts: row.ts,
};
const res = await decryptOne(asMsg);
- if (!res) continue;
+ if (!res.ok) {
+ dropped++;
+ // First RECOVERABLE failure pins the cursor: the row will decrypt
+ // once the pending Welcome / chat-link lands, but only if we refetch
+ // it. Later rows still process — the store dedupes the overlap by
+ // serverMsgId on the post-heal refetch.
+ if (blockedAt === null && isRecoverableDecryptReason(res.reason)) {
+ blockedAt = row.serverMsgId;
+ }
+ continue;
+ }
const base = {
chatId: bfd.chatId,
serverMsgId: row.serverMsgId,
@@ -310,12 +337,41 @@ export function createEncryptedTransport(
messages.push({ ...base, frame: res.frame });
}
}
+
+ // Non-recoverable drops (own v=2 sends, v=1 sealed to other devices)
+ // advance the cursor as before (ADR-0020 §5 — no refetch loop). A
+ // recoverable drop caps upTo just below the failing serial so the next
+ // backfill re-requests it, and stops same-session paging (more:false) —
+ // otherwise the follow-up page would re-serve the same rows in a loop.
+ let upTo = bfd.upTo;
+ let more = bfd.more;
+ if (blockedAt !== null) {
+ const capped = (BigInt(blockedAt) - 1n).toString();
+ if (BigInt(capped) < BigInt(bfd.upTo)) upTo = capped;
+ more = false;
+ }
+
+ // [DEBUG-bkfl] The decisive probe: fetched>0 & dropped==fetched → wholesale
+ // decrypt-drop; fetched==0 → fetch/identity/cursor gap upstream.
+ console.log(
+ "[DEBUG-bkfl] page",
+ JSON.stringify({
+ chatId: bfd.chatId,
+ fetched: bfd.messages.length,
+ decryptedMsgs: messages.length,
+ decryptedRx: reactions.length,
+ dropped,
+ blockedAt,
+ upTo,
+ more,
+ }),
+ );
return {
chatId: bfd.chatId,
messages,
reactions,
- upTo: bfd.upTo,
- more: bfd.more,
+ upTo,
+ more,
};
}
diff --git a/packages/chat/src/outbox-worker.test.ts b/packages/chat/src/outbox-worker.test.ts
new file mode 100644
index 0000000..4222d66
--- /dev/null
+++ b/packages/chat/src/outbox-worker.test.ts
@@ -0,0 +1,105 @@
+import { describe, expect, it, vi } from "vitest";
+import { encode } from "@msgpack/msgpack";
+import type { PendingOutboxRow } from "@repo/chat-db";
+
+import {
+ createOutboxWorker,
+ isTerminalSendReason,
+ type BoundOutboxApi,
+ type OutboxWorkerStoreApi,
+} from "./outbox-worker";
+import type { EncryptedChatTransport } from "./encrypted-transport";
+
+function row(overrides: Partial = {}): PendingOutboxRow {
+ return {
+ id: "client-msg-1",
+ chat_id: "chat-1",
+ payload: encode({ text: "hi" }),
+ idempotency_key: "client-msg-1",
+ attempts: 0,
+ next_attempt_at: 0,
+ created_at: 0,
+ last_error: null,
+ ...overrides,
+ } as PendingOutboxRow;
+}
+
+// One-shot outbox: due() hands out the row exactly once, then records which
+// terminal/transient transition the worker chose.
+function harness(sendError: Error) {
+ let handed = false;
+ const calls = {
+ markFailed: vi.fn(async () => {}),
+ markPermanentlyFailed: vi.fn(async () => {}),
+ markSent: vi.fn(async () => {}),
+ };
+ const outbox: BoundOutboxApi = {
+ enqueue: async () => {},
+ due: async () => {
+ if (handed) return [];
+ handed = true;
+ return [row()];
+ },
+ markSent: calls.markSent,
+ markFailed: calls.markFailed,
+ markPermanentlyFailed: calls.markPermanentlyFailed,
+ requeue: async () => {},
+ };
+ const store: OutboxWorkerStoreApi = {
+ confirmOptimisticMessage: vi.fn(),
+ failOptimisticMessage: vi.fn(),
+ };
+ const transport = {
+ send: vi.fn(async () => {
+ throw sendError;
+ }),
+ } as unknown as EncryptedChatTransport;
+
+ let resolveSettled!: (v: { kind: "terminal" | "transient" }) => void;
+ const settled = new Promise<{ kind: "terminal" | "transient" }>((resolve) => {
+ resolveSettled = resolve;
+ });
+ const worker = createOutboxWorker({
+ outbox,
+ transport,
+ store,
+ onTerminalFailure: () => resolveSettled({ kind: "terminal" }),
+ onTransientFailure: () => resolveSettled({ kind: "transient" }),
+ });
+ worker.start();
+ return { settled, calls, store, worker };
+}
+
+describe("outbox-worker — 'group not found' is terminal, not transient", () => {
+ it("marks the row permanently failed on the FIRST attempt", async () => {
+ const { settled, calls, store, worker } = harness(
+ new Error('ChatMlsError.Internal("group not found")'),
+ );
+ const outcome = await settled;
+ worker.stop();
+ expect(outcome.kind).toBe("terminal");
+ expect(calls.markPermanentlyFailed).toHaveBeenCalledTimes(1);
+ expect(calls.markFailed).not.toHaveBeenCalled();
+ expect(store.failOptimisticMessage).toHaveBeenCalledWith({
+ chatId: "chat-1",
+ clientMsgId: "client-msg-1",
+ });
+ });
+
+ it("still retries genuinely transient failures with backoff", async () => {
+ const { settled, calls, worker } = harness(
+ new Error("network request failed"),
+ );
+ const outcome = await settled;
+ worker.stop();
+ expect(outcome.kind).toBe("transient");
+ expect(calls.markFailed).toHaveBeenCalledTimes(1);
+ expect(calls.markPermanentlyFailed).not.toHaveBeenCalled();
+ });
+
+ it("classifier matches the engine error shape case-insensitively", () => {
+ expect(isTerminalSendReason('Internal("group not found")')).toBe(true);
+ expect(isTerminalSendReason("Group Not Found")).toBe(true);
+ expect(isTerminalSendReason("timeout waiting for ack")).toBe(false);
+ });
+});
diff --git a/packages/chat/src/outbox-worker.ts b/packages/chat/src/outbox-worker.ts
index 7242a50..95919b1 100644
--- a/packages/chat/src/outbox-worker.ts
+++ b/packages/chat/src/outbox-worker.ts
@@ -87,6 +87,17 @@ const BACKOFFS_MS = [5_000, 30_000, 120_000, 600_000];
const TICK_LIMIT = 20;
const PERIODIC_TICK_MS = 30_000;
+// "group not found" = the MLS engine holds no state for this chat's group
+// (crypto-membership gap — the device never processed a Welcome). No retry
+// can fix it: the ratchet the ciphertext needs doesn't exist on this device.
+// Retrying used to leave the bubble at "sending" (opacity < 1) forever;
+// terminal-failing flips it to "failed" so the user sees the truth.
+const TERMINAL_REASONS = /group not found/i;
+
+export function isTerminalSendReason(reason: string): boolean {
+ return TERMINAL_REASONS.test(reason);
+}
+
function backoffFor(attemptsAfter: number): number {
const idx = Math.max(0, Math.min(attemptsAfter - 1, BACKOFFS_MS.length - 1));
return BACKOFFS_MS[idx]!;
@@ -157,7 +168,7 @@ export function createOutboxWorker(deps: OutboxWorkerDeps): OutboxWorker {
} catch (err) {
const reason = err instanceof Error ? err.message : String(err);
const attemptsAfter = row.attempts + 1;
- if (attemptsAfter >= MAX_ATTEMPTS) {
+ if (attemptsAfter >= MAX_ATTEMPTS || isTerminalSendReason(reason)) {
await deps.outbox.markPermanentlyFailed(row.id, reason);
deps.store.failReaction?.({
chatId: row.chat_id,
@@ -216,7 +227,7 @@ export function createOutboxWorker(deps: OutboxWorkerDeps): OutboxWorker {
} catch (err) {
const reason = err instanceof Error ? err.message : String(err);
const attemptsAfter = row.attempts + 1;
- if (attemptsAfter >= MAX_ATTEMPTS) {
+ if (attemptsAfter >= MAX_ATTEMPTS || isTerminalSendReason(reason)) {
await deps.outbox.markPermanentlyFailed(row.id, reason);
deps.store.failOptimisticMessage({
chatId: row.chat_id,
diff --git a/packages/chat/src/provider.tsx b/packages/chat/src/provider.tsx
index 97d39b1..a0b9d22 100644
--- a/packages/chat/src/provider.tsx
+++ b/packages/chat/src/provider.tsx
@@ -122,9 +122,15 @@ export function ChatStoreProvider({
// Build + fire one batched `bf` covering every known chat's cursor. No-op
// without a cursor store or before chats have loaded.
const runBackfill = useCallback(() => {
- if (!backfillCursors) return;
+ if (!backfillCursors) {
+ console.log("[DEBUG-bkfl] runBackfill skipped — no backfillCursors");
+ return;
+ }
const chatIds = Array.from(useChatStore.getState().chats.keys());
- if (chatIds.length === 0) return;
+ if (chatIds.length === 0) {
+ console.log("[DEBUG-bkfl] runBackfill skipped — 0 chats in store");
+ return;
+ }
void (async () => {
let cursors: Record = {};
try {
@@ -138,6 +144,16 @@ export function ChatStoreProvider({
backfilledThisLaunch.current.add(chatId);
return forced ? { chatId, after, force: true } : { chatId, after };
});
+ console.log(
+ "[DEBUG-bkfl] sendBackfill",
+ JSON.stringify(
+ batch.map((b) => ({
+ chatId: b.chatId,
+ after: b.after,
+ force: "force" in b ? !!b.force : false,
+ })),
+ ),
+ );
transport.sendBackfill(batch);
})();
}, [backfillCursors, transport]);
@@ -257,7 +273,10 @@ export function ChatStoreProvider({
// decrypted + split by the transport. Merge messages via the store's
// serial-sorted ingest, fold reactions onto their targets (serial-ascending
// order guarantees a target lands before its reaction), advance the cursor to
- // `upTo` (even past undecryptable rows → no refetch loop), and page while more.
+ // `upTo`, and page while more. The transport advances `upTo` past
+ // expected-permanent drops (no refetch loop) but caps it below a RECOVERABLE
+ // drop (e.g. "group not found" before the Welcome lands) so that row is
+ // refetched — never silently lost — once the group state heals.
useEffect(() => {
if (!authenticated) return;
return transport.onBackfill((page) => {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index a9c67d1..749fade 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -10,13 +10,13 @@ importers:
dependencies:
expo:
specifier: ~54.0.34
- version: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ version: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
react:
specifier: 19.1.0
version: 19.1.0
react-native:
specifier: 0.81.5
- version: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ version: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
devDependencies:
'@repo/eslint-config':
specifier: workspace:*
@@ -93,7 +93,7 @@ importers:
version: 0.4.2
'@op-engineering/op-sqlite':
specifier: ^14.1.0
- version: 14.1.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 14.1.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@repo/api-server':
specifier: workspace:*
version: link:../../services/api
@@ -120,16 +120,16 @@ importers:
version: link:../../packages/ui
'@shopify/flash-list':
specifier: ^2.3.1
- version: 2.3.1(@babel/runtime@7.29.2)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 2.3.1(@babel/runtime@7.29.2)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/animations-react-native':
specifier: ^2.0.0-rc.41
version: 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/config':
specifier: ^2.0.0-rc.41
- version: 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react@19.1.0)
+ version: 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react@19.1.0)
'@tamagui/metro-plugin':
specifier: 2.0.0-rc.41
- version: 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ version: 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
'@tamagui/native':
specifier: ^2.0.0-rc.41
version: 2.0.0-rc.42(react@19.1.0)
@@ -147,19 +147,19 @@ importers:
version: 1.6.9(@cloudflare/workers-types@4.20260509.1)(@prisma/client@6.19.3(prisma@6.19.3(typescript@5.9.2))(typescript@5.9.2))(next@16.1.0(@babel/core@7.29.0)(babel-plugin-react-compiler@1.0.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(prisma@6.19.3(typescript@5.9.2))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(vitest@2.1.9(@types/node@22.19.18)(lightningcss@1.32.0)(terser@5.47.1))
expo:
specifier: ~54.0.0
- version: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ version: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
expo-blur:
specifier: ~15.0.8
- version: 15.0.8(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 15.0.8(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-build-properties:
specifier: ~0.14.0
version: 0.14.8(expo@54.0.34)
expo-clipboard:
specifier: ~8.0.8
- version: 8.0.8(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 8.0.8(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-constants:
specifier: ~18.0.0
- version: 18.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
+ version: 18.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
expo-crypto:
specifier: ~15.0.0
version: 15.0.9(expo@54.0.34)
@@ -171,25 +171,25 @@ importers:
version: 8.0.10(expo@54.0.34)
expo-file-system:
specifier: ~19.0.18
- version: 19.0.22(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
+ version: 19.0.22(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
expo-font:
specifier: ~14.0.0
- version: 14.0.11(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 14.0.11(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-haptics:
specifier: ~15.0.8
version: 15.0.8(expo@54.0.34)
expo-linear-gradient:
specifier: ~15.0.8
- version: 15.0.8(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 15.0.8(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-linking:
specifier: ~8.0.0
- version: 8.0.12(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 8.0.12(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-notifications:
specifier: ~0.32.12
- version: 0.32.17(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ version: 0.32.17(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
expo-router:
specifier: ~6.0.0
- version: 6.0.23(d270f903a381d04171c7e3105bcc3cd4)
+ version: 6.0.23(04d3d8526ab825d13bb1e48e5046dce1)
expo-secure-store:
specifier: ~15.0.0
version: 15.0.8(expo@54.0.34)
@@ -198,10 +198,10 @@ importers:
version: 31.0.13(expo@54.0.34)(typescript@5.9.2)
expo-status-bar:
specifier: ~3.0.0
- version: 3.0.9(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 3.0.9(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-system-ui:
specifier: ~6.0.9
- version: 6.0.9(expo@54.0.34)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
+ version: 6.0.9(expo@54.0.34)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
react:
specifier: 19.1.0
version: 19.1.0
@@ -210,25 +210,25 @@ importers:
version: 19.1.0(react@19.1.0)
react-native:
specifier: 0.81.5
- version: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ version: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
react-native-gesture-handler:
specifier: ~2.28.0
- version: 2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react-native-get-random-values:
specifier: ~1.11.0
- version: 1.11.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
+ version: 1.11.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
react-native-reanimated:
specifier: ~4.1.1
- version: 4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react-native-safe-area-context:
specifier: ~5.6.0
- version: 5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react-native-screens:
specifier: ~4.16.0
- version: 4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
tamagui:
specifier: ^2.0.0-rc.41
- version: 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
zustand:
specifier: ^5.0.3
version: 5.0.13(@types/react@19.1.17)(react@19.1.0)(use-sync-external-store@1.6.0(react@19.1.0))
@@ -236,6 +236,9 @@ importers:
'@babel/core':
specifier: ^7.25.2
version: 7.29.0
+ '@react-native-community/cli':
+ specifier: latest
+ version: 20.2.0(typescript@5.9.2)
'@repo/eslint-config':
specifier: workspace:*
version: link:../../packages/eslint-config
@@ -277,7 +280,7 @@ importers:
version: 19.1.0
react-native:
specifier: '*'
- version: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ version: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
zustand:
specifier: ^5.0.3
version: 5.0.13(@types/react@19.1.17)(react@19.1.0)(use-sync-external-store@1.6.0(react@19.1.0))
@@ -305,13 +308,13 @@ importers:
dependencies:
expo:
specifier: '*'
- version: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ version: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
react:
specifier: '*'
version: 19.1.0
react-native:
specifier: '*'
- version: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ version: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
devDependencies:
'@repo/eslint-config':
specifier: workspace:*
@@ -333,13 +336,13 @@ importers:
dependencies:
expo:
specifier: '*'
- version: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ version: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
react:
specifier: '*'
version: 19.1.0
react-native:
specifier: '*'
- version: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ version: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
devDependencies:
'@repo/eslint-config':
specifier: workspace:*
@@ -361,10 +364,10 @@ importers:
dependencies:
'@op-engineering/op-sqlite':
specifier: ^14.1.0
- version: 14.1.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 14.1.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo:
specifier: '*'
- version: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ version: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
expo-crypto:
specifier: ~15.0.0
version: 15.0.9(expo@54.0.34)
@@ -376,7 +379,7 @@ importers:
version: 19.1.0
react-native:
specifier: '*'
- version: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ version: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
devDependencies:
'@repo/eslint-config':
specifier: workspace:*
@@ -404,13 +407,13 @@ importers:
version: link:../chat-db
expo:
specifier: '*'
- version: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ version: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
react:
specifier: '*'
version: 19.1.0
react-native:
specifier: '*'
- version: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ version: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
zod:
specifier: ^3.24.1
version: 3.25.76
@@ -598,7 +601,7 @@ importers:
version: 19.1.0
tamagui:
specifier: 2.0.0-rc.42
- version: 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ version: 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
devDependencies:
'@repo/eslint-config':
specifier: workspace:*
@@ -748,6 +751,34 @@ importers:
specifier: ^4.90.0
version: 4.90.0(@cloudflare/workers-types@4.20260509.1)
+ services/demo-bot:
+ dependencies:
+ '@noble/ed25519':
+ specifier: ^2.3.0
+ version: 2.3.0
+ '@repo/chat-mls-core':
+ specifier: workspace:*
+ version: link:../../packages/chat-mls-core
+ '@repo/chat-mls-core-node':
+ specifier: file:../../packages/chat-mls-core/node
+ version: file:packages/chat-mls-core/node
+ '@trpc/client':
+ specifier: ^11.17.0
+ version: 11.17.0(@trpc/server@11.17.0(typescript@5.9.2))(typescript@5.9.2)
+ devDependencies:
+ '@repo/api-server':
+ specifier: workspace:*
+ version: link:../api
+ '@types/node':
+ specifier: ^22.10.0
+ version: 22.19.18
+ tsx:
+ specifier: ^4.21.0
+ version: 4.21.0
+ typescript:
+ specifier: 5.9.2
+ version: 5.9.2
+
services/upload:
dependencies:
'@aws-sdk/client-s3':
@@ -2413,6 +2444,12 @@ packages:
'@floating-ui/utils@0.2.11':
resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==}
+ '@hapi/hoek@9.3.0':
+ resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==}
+
+ '@hapi/topo@5.1.0':
+ resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
+
'@humanfs/core@0.19.2':
resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==}
engines: {node: '>=18.18.0'}
@@ -3098,6 +3135,44 @@ packages:
'@types/react':
optional: true
+ '@react-native-community/cli-clean@20.2.0':
+ resolution: {integrity: sha512-krqbhFiwHN8l5wZ2XTcrNq9N+DqDWHxW8RK0bIcrK0O+fMvjYi9e/1Pnx2W0CTotOVcZpHzUbgZ4TQVF231Skw==}
+
+ '@react-native-community/cli-config-android@20.2.0':
+ resolution: {integrity: sha512-lASofUNBVK0Pq3VEJ1JrCfAW94Rnk38DikauycRcoHl0hWjHIN3XhsN20dEq+CaIJoq37aCg5NSSSpmkET+ShA==}
+
+ '@react-native-community/cli-config-apple@20.2.0':
+ resolution: {integrity: sha512-oohr6BV2riWJ5PYjayi1u52bG3H95MwKPkJCZo9pnOlYTjifZQVkMxZ8VTuk392efh0bijVTYfxH8iJPi97SIQ==}
+
+ '@react-native-community/cli-config@20.2.0':
+ resolution: {integrity: sha512-GF5FxgDfOSLPi/bSiE/xvOGELwzV2GLQnDED+7ArbPi01W1Vu+hD/m+J+bwX34Pocpo767eXAVxc2h9WFUTUfQ==}
+
+ '@react-native-community/cli-doctor@20.2.0':
+ resolution: {integrity: sha512-eZjlwmjPoBXgyD6nV5oDDocL1VH5UW4LxZcMAqyN3rQw5vq3CeJikFpNedKTtSl3P6JizIkInyIHpfrW+9qfJA==}
+
+ '@react-native-community/cli-platform-android@20.2.0':
+ resolution: {integrity: sha512-fRglzcf/Yq5lnIkqdA8uf1GvlG18x3Dm48Yvo+l7KiWgh/SVtfVhfvalrtX5rmx+KeJkDA534bGoPvi5+ruWjw==}
+
+ '@react-native-community/cli-platform-apple@20.2.0':
+ resolution: {integrity: sha512-jkEPLAd8C/ZRu39a3nhxwSXe0iisUiJC808GExnrnTcViLtg3sad2ciQ/HjjvbdsPCS9sT+Jr7xh3MzBsPojsQ==}
+
+ '@react-native-community/cli-platform-ios@20.2.0':
+ resolution: {integrity: sha512-bCKlBt2HoD7WTl/HX60+4HFhR1lKY64Y9MPWu7yWQwOCEqYRMi6MkRxLimiONj9M2/lNf0z9BPHDzdDe5HM2ag==}
+
+ '@react-native-community/cli-server-api@20.2.0':
+ resolution: {integrity: sha512-AI1fsl+6LNuOoDcdWsnF3s9ozqminGCUlbFcrgdZIJWyOuFBeQclNydI22VO3vWaO4dHQkfVa3Zo10AncWQvwA==}
+
+ '@react-native-community/cli-tools@20.2.0':
+ resolution: {integrity: sha512-A5W2nqlTidPzGyXzS57jvHsMpQd8iOGSjePj4H318uMbhIdeIHQ5e59fNbdHahS62ISs+2p9s78sVHMbGVa1bg==}
+
+ '@react-native-community/cli-types@20.2.0':
+ resolution: {integrity: sha512-K60zY/ly8G9rGJQzZ+bFRyLEckAUzyF8Fu9a2Kw6JipCrOl7SiVRBVqjvOr/XnCRKuOpH8i9y7RVg07wkSGRBQ==}
+
+ '@react-native-community/cli@20.2.0':
+ resolution: {integrity: sha512-5RZKkBeUFC4hhrzySzxWmRJwXBTc2PE3L6QUgvnJk3QDxNYMY7aGuI8Gr9eZRS1DbiY10IPWqpJfqSIplzVG6A==}
+ engines: {node: '>=20.19.4'}
+ hasBin: true
+
'@react-native/assets-registry@0.81.5':
resolution: {integrity: sha512-705B6x/5Kxm1RKRvSv0ADYWm5JOnoiQ1ufW7h8uu2E6G9Of/eE6hP/Ivw3U5jI16ERqZxiKQwk34VJbB0niX9w==}
engines: {node: '>= 20.19.4'}
@@ -3240,6 +3315,9 @@ packages:
'@react-navigation/routers@7.5.5':
resolution: {integrity: sha512-9/hhMte12Kgu+pMnLfA4EWJ0OQmIEAMVMX06FPH2yGkEQSQ3JhhCN/GkcRikzQhtEi97VYYQA15umptBUShcOQ==}
+ '@repo/chat-mls-core-node@file:packages/chat-mls-core/node':
+ resolution: {directory: packages/chat-mls-core/node, type: directory}
+
'@rollup/rollup-android-arm-eabi@4.60.4':
resolution: {integrity: sha512-F5QXMSiFebS9hKZj02XhWLLnRpJ3B3AROP0tWbFBSj+6kCbg5m9j5JoHKd4mmSVy5mS/IMQloYgYxCuJC0fxEQ==}
cpu: [arm]
@@ -3388,6 +3466,15 @@ packages:
react: '*'
react-native: '*'
+ '@sideway/address@4.1.5':
+ resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==}
+
+ '@sideway/formula@3.0.1':
+ resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==}
+
+ '@sideway/pinpoint@2.0.0':
+ resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==}
+
'@sinclair/typebox@0.27.10':
resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==}
@@ -4724,6 +4811,9 @@ packages:
'@vitest/utils@2.1.9':
resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==}
+ '@vscode/sudo-prompt@9.3.2':
+ resolution: {integrity: sha512-gcXoCN00METUNFeQOFJ+C9xUI0DKB+0EGMVg7wbVYRHBw2Eq3fKisDZOkRdOz3kqXRKOENMfShPOmypw1/8nOw==}
+
'@xmldom/xmldom@0.8.13':
resolution: {integrity: sha512-KRYzxepc14G/CEpEGc3Yn+JKaAeT63smlDr+vjB8jRfgTBBI9wRj/nkQEO+ucV8p8I9bfKLWp37uHgFrbntPvw==}
engines: {node: '>=10.0.0'}
@@ -4775,6 +4865,9 @@ packages:
resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==}
engines: {node: '>=18'}
+ ansi-fragments@0.2.1:
+ resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==}
+
ansi-regex@4.1.1:
resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==}
engines: {node: '>=6'}
@@ -4810,6 +4903,9 @@ packages:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
+ appdirsjs@1.2.7:
+ resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==}
+
arg@5.0.2:
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
@@ -4865,6 +4961,10 @@ packages:
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
engines: {node: '>=12'}
+ astral-regex@1.0.0:
+ resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==}
+ engines: {node: '>=4'}
+
astral-regex@2.0.0:
resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
engines: {node: '>=8'}
@@ -5062,6 +5162,9 @@ packages:
bignumber.js@9.3.1:
resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==}
+ bl@4.1.0:
+ resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
+
blake3-wasm@2.1.5:
resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==}
@@ -5225,6 +5328,10 @@ packages:
resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==}
engines: {node: '>=4'}
+ cli-cursor@3.1.0:
+ resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
+ engines: {node: '>=8'}
+
cli-cursor@5.0.0:
resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==}
engines: {node: '>=18'}
@@ -5240,6 +5347,9 @@ packages:
client-only@0.0.1:
resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
+ cliui@6.0.0:
+ resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
+
cliui@8.0.1:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
@@ -5278,9 +5388,15 @@ packages:
resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
engines: {node: '>=12.5.0'}
+ colorette@1.4.0:
+ resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==}
+
colorette@2.0.20:
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
+ command-exists@1.2.9:
+ resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==}
+
commander@11.1.0:
resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
engines: {node: '>=16'}
@@ -5304,6 +5420,10 @@ packages:
resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
engines: {node: '>= 10'}
+ commander@9.5.0:
+ resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==}
+ engines: {node: ^12.20.0 || >=14}
+
commondir@1.0.1:
resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
@@ -5359,6 +5479,15 @@ packages:
resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==}
engines: {node: '>= 0.10'}
+ cosmiconfig@9.0.2:
+ resolution: {integrity: sha512-gtTZxTDau1wL7Y7zifc2dd8jHSK/k6BTx/2Xp/BpdlAdnlYWFVt7qhJqgwi7637yRwRQ3qL4ZidbB4I8tA5VOg==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ typescript: '>=4.9.5'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
create-jest@29.7.0:
resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -5389,6 +5518,9 @@ packages:
resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
engines: {node: '>= 0.4'}
+ dayjs@1.11.21:
+ resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==}
+
debug@2.6.9:
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
peerDependencies:
@@ -5414,6 +5546,10 @@ packages:
supports-color:
optional: true
+ decamelize@1.2.0:
+ resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
+ engines: {node: '>=0.10.0'}
+
decode-uri-component@0.2.2:
resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
engines: {node: '>=0.10'}
@@ -5554,6 +5690,15 @@ packages:
resolution: {integrity: sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==}
engines: {node: '>=8'}
+ env-paths@2.2.1:
+ resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
+ engines: {node: '>=6'}
+
+ envinfo@7.21.0:
+ resolution: {integrity: sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==}
+ engines: {node: '>=4'}
+ hasBin: true
+
environment@1.1.0:
resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==}
engines: {node: '>=18'}
@@ -5567,6 +5712,10 @@ packages:
error-stack-parser@2.1.4:
resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==}
+ errorhandler@1.5.2:
+ resolution: {integrity: sha512-kNAL7hESndBCrWwS72QyV3IVOTrVmj9D062FV5BQswNL5zEdeRmz/WJFyh6Aj/plvvSOrzddkxW57HgkZcR9Fw==}
+ engines: {node: '>= 0.8'}
+
es-abstract@1.24.2:
resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==}
engines: {node: '>= 0.4'}
@@ -6201,6 +6350,10 @@ packages:
resolution: {integrity: sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==}
engines: {node: '>=14.14'}
+ 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==}
@@ -6544,6 +6697,10 @@ packages:
resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
engines: {node: '>= 0.4'}
+ is-fullwidth-code-point@2.0.0:
+ resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==}
+ engines: {node: '>=4'}
+
is-fullwidth-code-point@3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'}
@@ -6564,6 +6721,10 @@ packages:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
+ is-interactive@1.0.0:
+ resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==}
+ engines: {node: '>=8'}
+
is-map@2.0.3:
resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
engines: {node: '>= 0.4'}
@@ -6623,6 +6784,10 @@ packages:
resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
engines: {node: '>= 0.4'}
+ is-unicode-supported@0.1.0:
+ resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==}
+ engines: {node: '>=10'}
+
is-weakmap@2.0.2:
resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
engines: {node: '>= 0.4'}
@@ -6635,6 +6800,10 @@ packages:
resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
engines: {node: '>= 0.4'}
+ is-wsl@1.1.0:
+ resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==}
+ engines: {node: '>=4'}
+
is-wsl@2.2.0:
resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
engines: {node: '>=8'}
@@ -6831,6 +7000,9 @@ packages:
resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==}
engines: {node: '>= 0.6.0'}
+ joi@17.13.4:
+ resolution: {integrity: sha512-1RuuER6kmt8K8I3nIWvPZKi5RQCb568ZPyY4Pwjlua+yo+63ZTmIwxLZH0heBmiKN4uxjvCiarDrjaeH84xicQ==}
+
jose@4.15.9:
resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==}
@@ -6889,6 +7061,9 @@ packages:
engines: {node: '>=6'}
hasBin: true
+ jsonfile@4.0.0:
+ resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
+
jsonfile@6.2.1:
resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==}
@@ -6921,6 +7096,9 @@ packages:
resolution: {integrity: sha512-ONPnazC96VKDntab9j9JKwIWhZ4ZUceB4A9Epu4Ssg0hYFmtHZSeQ+n15nIwTFmcBUKtExOer8WTJ4GF9MO64A==}
hasBin: true
+ launch-editor@2.14.1:
+ resolution: {integrity: sha512-QWBrQsMpH7gPr965dsKD/3cKWiNoTjpATQf++Xq63N6sKRGMwlVXz41O1IZTMfZQgBctD/K5Zt06+/I6pP6+HA==}
+
leven@3.1.0:
resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==}
engines: {node: '>=6'}
@@ -7042,10 +7220,18 @@ packages:
resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==}
engines: {node: '>=4'}
+ log-symbols@4.1.0:
+ resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
+ engines: {node: '>=10'}
+
log-update@6.1.0:
resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==}
engines: {node: '>=18'}
+ logkitty@0.7.1:
+ resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==}
+ hasBin: true
+
loose-envify@1.4.0:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
@@ -7308,6 +7494,11 @@ packages:
engines: {node: '>=4'}
hasBin: true
+ mime@2.6.0:
+ resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==}
+ engines: {node: '>=4.0.0'}
+ hasBin: true
+
mimic-fn@1.2.0:
resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==}
engines: {node: '>=4'}
@@ -7443,6 +7634,10 @@ packages:
sass:
optional: true
+ nocache@3.0.4:
+ resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==}
+ engines: {node: '>=12.0.0'}
+
node-exports-info@1.6.0:
resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==}
engines: {node: '>= 0.4'}
@@ -7469,6 +7664,10 @@ packages:
node-releases@2.0.38:
resolution: {integrity: sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==}
+ node-stream-zip@1.15.0:
+ resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==}
+ engines: {node: '>=0.12.0'}
+
normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
@@ -7578,6 +7777,10 @@ packages:
resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
engines: {node: '>=18'}
+ open@6.4.0:
+ resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==}
+ engines: {node: '>=8'}
+
open@7.4.2:
resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==}
engines: {node: '>=8'}
@@ -7601,6 +7804,10 @@ packages:
resolution: {integrity: sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==}
engines: {node: '>=6'}
+ ora@5.4.1:
+ resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
+ engines: {node: '>=10'}
+
own-keys@1.0.1:
resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
engines: {node: '>= 0.4'}
@@ -8010,6 +8217,10 @@ packages:
resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==}
engines: {node: '>=0.10.0'}
+ readable-stream@3.6.2:
+ resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+ engines: {node: '>= 6'}
+
readdirp@4.1.2:
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
engines: {node: '>= 14.18.0'}
@@ -8055,6 +8266,9 @@ packages:
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
engines: {node: '>=0.10.0'}
+ require-main-filename@2.0.0:
+ resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
+
requireg@0.2.2:
resolution: {integrity: sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==}
engines: {node: '>= 4.0.0'}
@@ -8107,6 +8321,10 @@ packages:
resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==}
engines: {node: '>=4'}
+ restore-cursor@3.1.0:
+ resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
+ engines: {node: '>=8'}
+
restore-cursor@5.1.0:
resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==}
engines: {node: '>=18'}
@@ -8206,6 +8424,9 @@ packages:
server-only@0.0.1:
resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==}
+ set-blocking@2.0.0:
+ resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
+
set-cookie-parser@3.1.0:
resolution: {integrity: sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==}
@@ -8254,6 +8475,10 @@ packages:
resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==}
engines: {node: '>= 0.4'}
+ shell-quote@1.9.0:
+ resolution: {integrity: sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA==}
+ engines: {node: '>= 0.4'}
+
side-channel-list@1.0.1:
resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==}
engines: {node: '>= 0.4'}
@@ -8297,6 +8522,10 @@ packages:
resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
engines: {node: '>=12'}
+ slice-ansi@2.1.0:
+ resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==}
+ engines: {node: '>=6'}
+
slice-ansi@4.0.0:
resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
engines: {node: '>=10'}
@@ -8464,6 +8693,9 @@ packages:
resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
engines: {node: '>= 0.4'}
+ string_decoder@1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+
strip-ansi@5.2.0:
resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==}
engines: {node: '>=6'}
@@ -8749,6 +8981,10 @@ packages:
resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==}
engines: {node: '>=4'}
+ universalify@0.1.2:
+ resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
+ engines: {node: '>= 4.0.0'}
+
universalify@2.0.1:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
@@ -8802,6 +9038,9 @@ 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==}
+
util@0.12.5:
resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==}
@@ -8949,6 +9188,9 @@ packages:
resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
engines: {node: '>= 0.4'}
+ which-module@2.0.1:
+ resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
+
which-typed-array@1.1.20:
resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==}
engines: {node: '>= 0.4'}
@@ -8985,6 +9227,10 @@ packages:
'@cloudflare/workers-types':
optional: true
+ wrap-ansi@6.2.0:
+ resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ engines: {node: '>=8'}
+
wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
@@ -9071,6 +9317,9 @@ packages:
resolution: {integrity: sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==}
engines: {node: '>=8.0'}
+ y18n@4.0.3:
+ resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
+
y18n@5.0.8:
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
engines: {node: '>=10'}
@@ -9090,10 +9339,18 @@ packages:
engines: {node: '>= 14.6'}
hasBin: true
+ yargs-parser@18.1.3:
+ resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
+ engines: {node: '>=6'}
+
yargs-parser@21.1.1:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'}
+ yargs@15.4.1:
+ resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
+ engines: {node: '>=8'}
+
yargs@17.7.2:
resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
engines: {node: '>=12'}
@@ -10683,7 +10940,7 @@ snapshots:
'@expo-google-fonts/sora@0.4.2': {}
- '@expo/cli@54.0.24(expo-router@6.0.23)(expo@54.0.34)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(typescript@5.9.2)':
+ '@expo/cli@54.0.24(expo-router@6.0.23)(expo@54.0.34)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(typescript@5.9.2)':
dependencies:
'@0no-co/graphql.web': 1.2.0(graphql@16.14.0)
'@expo/code-signing-certificates': 0.0.6
@@ -10717,7 +10974,7 @@ snapshots:
connect: 3.7.0
debug: 4.4.3
env-editor: 0.4.2
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
expo-server: 1.0.6
freeport-async: 2.0.0
getenv: 2.0.0
@@ -10750,8 +11007,8 @@ snapshots:
wrap-ansi: 7.0.0
ws: 8.20.0
optionalDependencies:
- expo-router: 6.0.23(d270f903a381d04171c7e3105bcc3cd4)
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ expo-router: 6.0.23(04d3d8526ab825d13bb1e48e5046dce1)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
transitivePeerDependencies:
- bufferutil
- graphql
@@ -10809,18 +11066,18 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@expo/devtools@0.1.8(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@expo/devtools@0.1.8(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
chalk: 4.1.2
optionalDependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
- '@expo/dom-webview@55.0.6(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@expo/dom-webview@55.0.6(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
optional: true
'@expo/env@2.0.11':
@@ -10891,19 +11148,19 @@ snapshots:
postcss: 8.4.49
resolve-from: 5.0.0
optionalDependencies:
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
- '@expo/metro-runtime@6.1.2(expo@54.0.34)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@expo/metro-runtime@6.1.2(expo@54.0.34)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
anser: 1.4.10
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
pretty-format: 29.7.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
stacktrace-parser: 0.1.11
whatwg-fetch: 3.6.20
optionalDependencies:
@@ -10958,7 +11215,7 @@ snapshots:
'@expo/json-file': 10.0.14
'@react-native/normalize-colors': 0.81.5
debug: 4.4.3
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
resolve-from: 5.0.0
semver: 7.8.0
xml2js: 0.6.0
@@ -10986,11 +11243,11 @@ snapshots:
'@expo/sudo-prompt@9.3.2': {}
- '@expo/vector-icons@15.1.1(expo-font@14.0.11(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@expo/vector-icons@15.1.1(expo-font@14.0.11(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
- expo-font: 14.0.11(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo-font: 14.0.11(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
'@expo/ws-tunnel@1.0.6': {}
@@ -11017,14 +11274,20 @@ snapshots:
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
- '@floating-ui/react-native@0.10.9(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@floating-ui/react-native@0.10.9(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
'@floating-ui/core': 1.7.5
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
'@floating-ui/utils@0.2.11': {}
+ '@hapi/hoek@9.3.0': {}
+
+ '@hapi/topo@5.1.0':
+ dependencies:
+ '@hapi/hoek': 9.3.0
+
'@humanfs/core@0.19.2':
dependencies:
'@humanfs/types': 0.15.0
@@ -11449,10 +11712,10 @@ snapshots:
'@nolyfill/is-core-module@1.0.39': {}
- '@op-engineering/op-sqlite@14.1.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@op-engineering/op-sqlite@14.1.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
'@opentelemetry/semantic-conventions@1.40.0': {}
@@ -11716,6 +11979,135 @@ snapshots:
optionalDependencies:
'@types/react': 19.1.17
+ '@react-native-community/cli-clean@20.2.0':
+ dependencies:
+ '@react-native-community/cli-tools': 20.2.0
+ execa: 5.1.1
+ fast-glob: 3.3.3
+ picocolors: 1.1.1
+
+ '@react-native-community/cli-config-android@20.2.0':
+ dependencies:
+ '@react-native-community/cli-tools': 20.2.0
+ fast-glob: 3.3.3
+ fast-xml-parser: 5.7.2
+ picocolors: 1.1.1
+
+ '@react-native-community/cli-config-apple@20.2.0':
+ dependencies:
+ '@react-native-community/cli-tools': 20.2.0
+ execa: 5.1.1
+ fast-glob: 3.3.3
+ picocolors: 1.1.1
+
+ '@react-native-community/cli-config@20.2.0(typescript@5.9.2)':
+ dependencies:
+ '@react-native-community/cli-tools': 20.2.0
+ cosmiconfig: 9.0.2(typescript@5.9.2)
+ deepmerge: 4.3.1
+ fast-glob: 3.3.3
+ joi: 17.13.4
+ picocolors: 1.1.1
+ transitivePeerDependencies:
+ - typescript
+
+ '@react-native-community/cli-doctor@20.2.0(typescript@5.9.2)':
+ dependencies:
+ '@react-native-community/cli-config': 20.2.0(typescript@5.9.2)
+ '@react-native-community/cli-platform-android': 20.2.0
+ '@react-native-community/cli-platform-apple': 20.2.0
+ '@react-native-community/cli-platform-ios': 20.2.0
+ '@react-native-community/cli-tools': 20.2.0
+ command-exists: 1.2.9
+ deepmerge: 4.3.1
+ envinfo: 7.21.0
+ execa: 5.1.1
+ node-stream-zip: 1.15.0
+ ora: 5.4.1
+ picocolors: 1.1.1
+ semver: 7.8.0
+ wcwidth: 1.0.1
+ yaml: 2.8.4
+ transitivePeerDependencies:
+ - typescript
+
+ '@react-native-community/cli-platform-android@20.2.0':
+ dependencies:
+ '@react-native-community/cli-config-android': 20.2.0
+ '@react-native-community/cli-tools': 20.2.0
+ execa: 5.1.1
+ logkitty: 0.7.1
+ picocolors: 1.1.1
+
+ '@react-native-community/cli-platform-apple@20.2.0':
+ dependencies:
+ '@react-native-community/cli-config-apple': 20.2.0
+ '@react-native-community/cli-tools': 20.2.0
+ execa: 5.1.1
+ fast-xml-parser: 5.7.2
+ picocolors: 1.1.1
+
+ '@react-native-community/cli-platform-ios@20.2.0':
+ dependencies:
+ '@react-native-community/cli-platform-apple': 20.2.0
+
+ '@react-native-community/cli-server-api@20.2.0':
+ dependencies:
+ '@react-native-community/cli-tools': 20.2.0
+ body-parser: 2.2.2
+ compression: 1.8.1
+ connect: 3.7.0
+ errorhandler: 1.5.2
+ nocache: 3.0.4
+ open: 6.4.0
+ pretty-format: 29.7.0
+ serve-static: 1.16.3
+ ws: 6.2.3
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+
+ '@react-native-community/cli-tools@20.2.0':
+ dependencies:
+ '@vscode/sudo-prompt': 9.3.2
+ appdirsjs: 1.2.7
+ execa: 5.1.1
+ find-up: 5.0.0
+ launch-editor: 2.14.1
+ mime: 2.6.0
+ ora: 5.4.1
+ picocolors: 1.1.1
+ prompts: 2.4.2
+ semver: 7.8.0
+
+ '@react-native-community/cli-types@20.2.0':
+ dependencies:
+ joi: 17.13.4
+
+ '@react-native-community/cli@20.2.0(typescript@5.9.2)':
+ dependencies:
+ '@react-native-community/cli-clean': 20.2.0
+ '@react-native-community/cli-config': 20.2.0(typescript@5.9.2)
+ '@react-native-community/cli-doctor': 20.2.0(typescript@5.9.2)
+ '@react-native-community/cli-server-api': 20.2.0
+ '@react-native-community/cli-tools': 20.2.0
+ '@react-native-community/cli-types': 20.2.0
+ commander: 9.5.0
+ deepmerge: 4.3.1
+ execa: 5.1.1
+ find-up: 5.0.0
+ fs-extra: 8.1.0
+ graceful-fs: 4.2.11
+ picocolors: 1.1.1
+ prompts: 2.4.2
+ semver: 7.8.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - typescript
+ - utf-8-validate
+
'@react-native/assets-registry@0.81.5': {}
'@react-native/babel-plugin-codegen@0.81.5(@babel/core@7.29.0)':
@@ -11842,7 +12234,7 @@ snapshots:
tinyglobby: 0.2.16
yargs: 17.7.2
- '@react-native/community-cli-plugin@0.81.5(@react-native/metro-config@0.85.3(@babel/core@7.29.0))':
+ '@react-native/community-cli-plugin@0.81.5(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))':
dependencies:
'@react-native/dev-middleware': 0.81.5
debug: 4.4.3
@@ -11852,6 +12244,7 @@ snapshots:
metro-core: 0.83.7
semver: 7.8.0
optionalDependencies:
+ '@react-native-community/cli': 20.2.0(typescript@5.9.2)
'@react-native/metro-config': 0.85.3(@babel/core@7.29.0)
transitivePeerDependencies:
- bufferutil
@@ -11911,24 +12304,24 @@ snapshots:
'@react-native/normalize-colors@0.81.5': {}
- '@react-native/virtualized-lists@0.81.5(@types/react@19.1.17)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-native/virtualized-lists@0.81.5(@types/react@19.1.17)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
invariant: 2.2.4
nullthrows: 1.1.1
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
optionalDependencies:
'@types/react': 19.1.17
- '@react-navigation/bottom-tabs@7.15.13(@react-navigation/native@7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/bottom-tabs@7.15.13(@react-navigation/native@7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@react-navigation/elements': 2.9.17(@react-navigation/native@7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native': 7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/elements': 2.9.17(@react-navigation/native@7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native': 7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
color: 4.2.3
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
sf-symbols-typescript: 2.2.0
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
@@ -11945,44 +12338,46 @@ snapshots:
use-latest-callback: 0.2.6(react@19.1.0)
use-sync-external-store: 1.6.0(react@19.1.0)
- '@react-navigation/elements@2.9.17(@react-navigation/native@7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/elements@2.9.17(@react-navigation/native@7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@react-navigation/native': 7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native': 7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
color: 4.2.3
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
use-latest-callback: 0.2.6(react@19.1.0)
use-sync-external-store: 1.6.0(react@19.1.0)
- '@react-navigation/native-stack@7.14.14(@react-navigation/native@7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/native-stack@7.14.14(@react-navigation/native@7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@react-navigation/elements': 2.9.17(@react-navigation/native@7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native': 7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/elements': 2.9.17(@react-navigation/native@7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native': 7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
color: 4.2.3
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
sf-symbols-typescript: 2.2.0
warn-once: 0.1.1
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
- '@react-navigation/native@7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@react-navigation/native@7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
'@react-navigation/core': 7.17.4(react@19.1.0)
escape-string-regexp: 4.0.0
fast-deep-equal: 3.1.3
nanoid: 3.3.12
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
use-latest-callback: 0.2.6(react@19.1.0)
'@react-navigation/routers@7.5.5':
dependencies:
nanoid: 3.3.12
+ '@repo/chat-mls-core-node@file:packages/chat-mls-core/node': {}
+
'@rollup/rollup-android-arm-eabi@4.60.4':
optional: true
@@ -12060,11 +12455,19 @@ snapshots:
'@rtsao/scc@1.1.0': {}
- '@shopify/flash-list@2.3.1(@babel/runtime@7.29.2)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@shopify/flash-list@2.3.1(@babel/runtime@7.29.2)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
'@babel/runtime': 7.29.2
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+
+ '@sideway/address@4.1.5':
+ dependencies:
+ '@hapi/hoek': 9.3.0
+
+ '@sideway/formula@3.0.1': {}
+
+ '@sideway/pinpoint@2.0.0': {}
'@sinclair/typebox@0.27.10': {}
@@ -12497,13 +12900,13 @@ snapshots:
'@tamagui/animation-helpers@2.0.0-rc.42': {}
- '@tamagui/animations-css@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
+ '@tamagui/animations-css@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
dependencies:
'@tamagui/animation-helpers': 2.0.0-rc.41
- '@tamagui/constants': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/constants': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/cubic-bezier-animator': 2.0.0-rc.41
- '@tamagui/use-presence': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
- '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/use-presence': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
transitivePeerDependencies:
@@ -12541,14 +12944,14 @@ snapshots:
- '@emotion/is-prop-valid'
- react-dom
- '@tamagui/animations-react-native@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
+ '@tamagui/animations-react-native@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
dependencies:
'@tamagui/animation-helpers': 2.0.0-rc.41
- '@tamagui/constants': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@tamagui/use-presence': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
- '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/constants': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/use-presence': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
transitivePeerDependencies:
- '@react-native-menu/menu'
- burnt
@@ -12573,13 +12976,13 @@ snapshots:
transitivePeerDependencies:
- react-dom
- '@tamagui/animations-reanimated@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react@19.1.0)':
+ '@tamagui/animations-reanimated@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react@19.1.0)':
dependencies:
'@tamagui/animation-helpers': 2.0.0-rc.42
'@tamagui/core': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/use-presence': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
react: 19.1.0
- react-native-reanimated: 4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-reanimated: 4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- react-dom
@@ -12713,13 +13116,13 @@ snapshots:
dependencies:
react: 19.1.0
- '@tamagui/config-default@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
+ '@tamagui/config-default@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
dependencies:
- '@tamagui/animations-css': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
- '@tamagui/animations-react-native': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
- '@tamagui/core': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
- '@tamagui/shorthands': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
- '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/animations-css': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/animations-react-native': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/core': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/shorthands': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
transitivePeerDependencies:
- '@react-native-menu/menu'
- burnt
@@ -12747,12 +13150,12 @@ snapshots:
- react
- react-dom
- '@tamagui/config@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react@19.1.0)':
+ '@tamagui/config@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react@19.1.0)':
dependencies:
'@tamagui/animations-css': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/animations-motion': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/animations-react-native': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@tamagui/animations-reanimated': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react@19.1.0)
+ '@tamagui/animations-reanimated': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native-reanimated@4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react@19.1.0)
'@tamagui/colors': 2.0.0-rc.42
'@tamagui/core': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/font-inter': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
@@ -12768,19 +13171,19 @@ snapshots:
- react-dom
- react-native-reanimated
- '@tamagui/constants@2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@tamagui/constants@2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
'@tamagui/constants@2.0.0-rc.42(react@19.1.0)':
dependencies:
react: 19.1.0
- '@tamagui/context-menu@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@tamagui/context-menu@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@tamagui/create-menu': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@tamagui/popover': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/create-menu': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/popover': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/use-callback-ref': 2.0.0-rc.42(react@19.1.0)
'@tamagui/use-controllable-state': 2.0.0-rc.42(react@19.1.0)
'@tamagui/web': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
@@ -12789,16 +13192,16 @@ snapshots:
- react-dom
- react-native
- '@tamagui/core@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
+ '@tamagui/core@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
dependencies:
- '@tamagui/helpers': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@tamagui/react-native-media-driver': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/helpers': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/react-native-media-driver': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
'@tamagui/react-native-use-pressable': 2.0.0-rc.41(react@19.1.0)
- '@tamagui/use-element-layout': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/use-element-layout': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/use-event': 2.0.0-rc.41(react@19.1.0)
- '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
transitivePeerDependencies:
- '@react-native-menu/menu'
- burnt
@@ -12829,7 +13232,7 @@ snapshots:
dependencies:
react: 19.1.0
- '@tamagui/create-menu@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@tamagui/create-menu@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
'@tamagui/animate': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/animate-presence': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
@@ -12841,8 +13244,8 @@ snapshots:
'@tamagui/get-token': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/image': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/native': 2.0.0-rc.42(react@19.1.0)
- '@tamagui/popover': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@tamagui/popper': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/popover': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/popper': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/portal': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/remove-scroll': 2.0.0-rc.42(react@19.1.0)
'@tamagui/roving-focus': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
@@ -12855,9 +13258,9 @@ snapshots:
- react-dom
- react-native
- '@tamagui/create-theme@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
+ '@tamagui/create-theme@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
dependencies:
- '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
transitivePeerDependencies:
- '@react-native-menu/menu'
- burnt
@@ -12935,10 +13338,10 @@ snapshots:
'@tamagui/fake-react-native@2.0.0-rc.42': {}
- '@tamagui/floating@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@tamagui/floating@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
'@floating-ui/react-dom': 2.1.8(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@floating-ui/react-native': 0.10.9(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@floating-ui/react-native': 0.10.9(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/use-event': 2.0.0-rc.42(react@19.1.0)
react: 19.1.0
transitivePeerDependencies:
@@ -12998,10 +13401,10 @@ snapshots:
transitivePeerDependencies:
- react-dom
- '@tamagui/generate-themes@2.0.0-rc.41(esbuild@0.27.7)(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
+ '@tamagui/generate-themes@2.0.0-rc.41(esbuild@0.27.7)(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
dependencies:
- '@tamagui/create-theme': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
- '@tamagui/theme-builder': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/create-theme': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/theme-builder': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
'@tamagui/types': 2.0.0-rc.41
esbuild-register: 3.6.0(esbuild@0.27.7)
fs-extra: 11.3.5
@@ -13087,9 +13490,9 @@ snapshots:
transitivePeerDependencies:
- react-dom
- '@tamagui/helpers@2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@tamagui/helpers@2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@tamagui/constants': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/constants': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/simple-hash': 2.0.0-rc.41
react: 19.1.0
transitivePeerDependencies:
@@ -13173,13 +13576,13 @@ snapshots:
transitivePeerDependencies:
- react-dom
- '@tamagui/menu@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@tamagui/menu@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
'@tamagui/core': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@tamagui/create-menu': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/create-menu': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/helpers': 2.0.0-rc.42(react@19.1.0)
- '@tamagui/popover': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@tamagui/popper': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/popover': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/popper': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/use-controllable-state': 2.0.0-rc.42(react@19.1.0)
'@tamagui/web': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
react: 19.1.0
@@ -13187,9 +13590,9 @@ snapshots:
- react-dom
- react-native
- '@tamagui/metro-plugin@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
+ '@tamagui/metro-plugin@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
dependencies:
- '@tamagui/static': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/static': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
transitivePeerDependencies:
- '@react-native-menu/menu'
- burnt
@@ -13208,13 +13611,13 @@ snapshots:
- supports-color
- zeego
- '@tamagui/native@2.0.0-rc.41(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
+ '@tamagui/native@2.0.0-rc.41(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
optionalDependencies:
- react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
sf-symbols-typescript: 2.2.0
'@tamagui/native@2.0.0-rc.42(react@19.1.0)':
@@ -13231,7 +13634,7 @@ snapshots:
'@tamagui/polyfill-dev@2.0.0-rc.42': {}
- '@tamagui/popover@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@tamagui/popover@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
'@tamagui/adapt': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/animate': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
@@ -13240,11 +13643,11 @@ snapshots:
'@tamagui/constants': 2.0.0-rc.42(react@19.1.0)
'@tamagui/core': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/dismissable': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@tamagui/floating': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/floating': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/focus-scope': 2.0.0-rc.42(react@19.1.0)
'@tamagui/helpers': 2.0.0-rc.42(react@19.1.0)
'@tamagui/polyfill-dev': 2.0.0-rc.42
- '@tamagui/popper': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/popper': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/portal': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/remove-scroll': 2.0.0-rc.42(react@19.1.0)
'@tamagui/scroll-view': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
@@ -13258,12 +13661,12 @@ snapshots:
- react-dom
- react-native
- '@tamagui/popper@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@tamagui/popper@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
'@tamagui/compose-refs': 2.0.0-rc.42(react@19.1.0)
'@tamagui/constants': 2.0.0-rc.42(react@19.1.0)
'@tamagui/core': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@tamagui/floating': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/floating': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/get-token': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/stacks': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/start-transition': 2.0.0-rc.42(react@19.1.0)
@@ -13335,10 +13738,10 @@ snapshots:
transitivePeerDependencies:
- react-dom
- '@tamagui/react-native-media-driver@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
+ '@tamagui/react-native-media-driver@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
dependencies:
- '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
transitivePeerDependencies:
- '@react-native-menu/menu'
- burnt
@@ -13377,14 +13780,14 @@ snapshots:
dependencies:
react: 19.1.0
- '@tamagui/react-native-web-internals@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
+ '@tamagui/react-native-web-internals@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
dependencies:
'@tamagui/normalize-css-color': 2.0.0-rc.41
'@tamagui/react-native-use-pressable': 2.0.0-rc.41(react@19.1.0)
'@tamagui/react-native-use-responder-events': 2.0.0-rc.41(react@19.1.0)
'@tamagui/simple-hash': 2.0.0-rc.41
- '@tamagui/use-element-layout': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/use-element-layout': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
transitivePeerDependencies:
@@ -13412,13 +13815,13 @@ snapshots:
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
- '@tamagui/react-native-web-lite@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
+ '@tamagui/react-native-web-lite@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
dependencies:
'@tamagui/normalize-css-color': 2.0.0-rc.41
'@tamagui/react-native-use-pressable': 2.0.0-rc.41(react@19.1.0)
'@tamagui/react-native-use-responder-events': 2.0.0-rc.41(react@19.1.0)
- '@tamagui/react-native-web-internals': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
- '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/react-native-web-internals': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
invariant: 2.2.4
memoize-one: 6.0.0
react: 19.1.0
@@ -13476,7 +13879,7 @@ snapshots:
transitivePeerDependencies:
- react-dom
- '@tamagui/select@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@tamagui/select@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
'@tamagui/adapt': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/animate-presence': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
@@ -13485,7 +13888,7 @@ snapshots:
'@tamagui/core': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/create-context': 2.0.0-rc.42(react@19.1.0)
'@tamagui/dismissable': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@tamagui/floating': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/floating': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/focus-scope': 2.0.0-rc.42(react@19.1.0)
'@tamagui/focusable': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/get-token': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
@@ -13548,9 +13951,9 @@ snapshots:
transitivePeerDependencies:
- react-dom
- '@tamagui/shorthands@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
+ '@tamagui/shorthands@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
dependencies:
- '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
transitivePeerDependencies:
- '@react-native-menu/menu'
- burnt
@@ -13641,7 +14044,7 @@ snapshots:
- react-dom
- supports-color
- '@tamagui/static@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
+ '@tamagui/static@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
dependencies:
'@babel/core': 7.29.0
'@babel/generator': 7.29.1
@@ -13653,18 +14056,18 @@ snapshots:
'@babel/traverse': 7.29.0
'@babel/types': 7.29.0
'@tamagui/cli-color': 2.0.0-rc.41
- '@tamagui/config-default': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
- '@tamagui/core': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/config-default': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/core': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
'@tamagui/fake-react-native': 2.0.0-rc.41
- '@tamagui/generate-themes': 2.0.0-rc.41(esbuild@0.27.7)(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
- '@tamagui/helpers': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/generate-themes': 2.0.0-rc.41(esbuild@0.27.7)(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/helpers': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/helpers-node': 2.0.0-rc.41
'@tamagui/proxy-worm': 2.0.0-rc.41
- '@tamagui/react-native-web-internals': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
- '@tamagui/react-native-web-lite': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
- '@tamagui/shorthands': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/react-native-web-internals': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/react-native-web-lite': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/shorthands': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
'@tamagui/types': 2.0.0-rc.41
- '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
babel-literal-to-ast: 2.1.0(@babel/core@7.29.0)
browserslist: 4.28.2
check-dependency-version-consistency: 4.1.1
@@ -13678,7 +14081,7 @@ snapshots:
invariant: 2.2.4
js-yaml: 4.1.1
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
react-native-web: 0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- '@react-native-menu/menu'
@@ -13796,10 +14199,10 @@ snapshots:
transitivePeerDependencies:
- react-dom
- '@tamagui/theme-builder@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
+ '@tamagui/theme-builder@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
dependencies:
- '@tamagui/create-theme': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
- '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/create-theme': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
color2k: 2.0.3
transitivePeerDependencies:
- '@react-native-menu/menu'
@@ -13891,17 +14294,17 @@ snapshots:
transitivePeerDependencies:
- react-dom
- '@tamagui/tooltip@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@tamagui/tooltip@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
'@tamagui/compose-refs': 2.0.0-rc.42(react@19.1.0)
'@tamagui/core': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/create-context': 2.0.0-rc.42(react@19.1.0)
- '@tamagui/floating': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/floating': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/get-token': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/helpers': 2.0.0-rc.42(react@19.1.0)
'@tamagui/polyfill-dev': 2.0.0-rc.42
- '@tamagui/popover': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@tamagui/popper': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/popover': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/popper': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/stacks': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/text': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/use-controllable-state': 2.0.0-rc.42(react@19.1.0)
@@ -13948,9 +14351,9 @@ snapshots:
dependencies:
react: 19.1.0
- '@tamagui/use-element-layout@2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
+ '@tamagui/use-element-layout@2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)':
dependencies:
- '@tamagui/constants': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/constants': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/is-equal-shallow': 2.0.0-rc.41(react@19.1.0)
react: 19.1.0
transitivePeerDependencies:
@@ -13987,9 +14390,9 @@ snapshots:
dependencies:
react: 19.1.0
- '@tamagui/use-presence@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
+ '@tamagui/use-presence@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
dependencies:
- '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/web': 2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
react: 19.1.0
transitivePeerDependencies:
- '@react-native-menu/menu'
@@ -14029,13 +14432,13 @@ snapshots:
transitivePeerDependencies:
- react-dom
- '@tamagui/web@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
+ '@tamagui/web@2.0.0-rc.41(react-dom@19.1.0(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)':
dependencies:
'@tamagui/compose-refs': 2.0.0-rc.41(react@19.1.0)
- '@tamagui/constants': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@tamagui/helpers': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/constants': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/helpers': 2.0.0-rc.41(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/is-equal-shallow': 2.0.0-rc.41(react@19.1.0)
- '@tamagui/native': 2.0.0-rc.41(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
+ '@tamagui/native': 2.0.0-rc.41(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(sf-symbols-typescript@2.2.0)
'@tamagui/normalize-css-color': 2.0.0-rc.41
'@tamagui/timer': 2.0.0-rc.41
'@tamagui/types': 2.0.0-rc.41
@@ -14044,7 +14447,7 @@ snapshots:
'@tamagui/use-force-update': 2.0.0-rc.41(react@19.1.0)
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
transitivePeerDependencies:
- '@react-native-menu/menu'
- burnt
@@ -14085,13 +14488,13 @@ snapshots:
'@tanstack/query-core': 5.100.9
react: 19.1.0
- '@testing-library/react-native@13.3.3(jest@29.7.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.2.0(react@19.1.0))(react@19.1.0)':
+ '@testing-library/react-native@13.3.3(jest@29.7.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.2.0(react@19.1.0))(react@19.1.0)':
dependencies:
jest-matcher-utils: 30.4.1
picocolors: 1.1.1
pretty-format: 30.4.1
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
react-test-renderer: 19.2.0(react@19.1.0)
redent: 3.0.0
optionalDependencies:
@@ -14411,6 +14814,8 @@ snapshots:
loupe: 3.2.1
tinyrainbow: 1.2.0
+ '@vscode/sudo-prompt@9.3.2': {}
+
'@xmldom/xmldom@0.8.13': {}
'@xmldom/xmldom@0.9.10': {}
@@ -14461,6 +14866,12 @@ snapshots:
dependencies:
environment: 1.1.0
+ ansi-fragments@0.2.1:
+ dependencies:
+ colorette: 1.4.0
+ slice-ansi: 2.1.0
+ strip-ansi: 5.2.0
+
ansi-regex@4.1.1: {}
ansi-regex@5.0.1: {}
@@ -14486,6 +14897,8 @@ snapshots:
normalize-path: 3.0.0
picomatch: 2.3.2
+ appdirsjs@1.2.7: {}
+
arg@5.0.2: {}
argparse@1.0.10:
@@ -14577,6 +14990,8 @@ snapshots:
assertion-error@2.0.1: {}
+ astral-regex@1.0.0: {}
+
astral-regex@2.0.0: {}
async-function@1.0.0: {}
@@ -14733,7 +15148,7 @@ snapshots:
resolve-from: 5.0.0
optionalDependencies:
'@babel/runtime': 7.29.2
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
transitivePeerDependencies:
- '@babel/core'
- supports-color
@@ -14801,6 +15216,12 @@ snapshots:
bignumber.js@9.3.1: {}
+ bl@4.1.0:
+ dependencies:
+ buffer: 5.7.1
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+
blake3-wasm@2.1.5: {}
body-parser@2.2.2:
@@ -15000,6 +15421,10 @@ snapshots:
dependencies:
restore-cursor: 2.0.0
+ cli-cursor@3.1.0:
+ dependencies:
+ restore-cursor: 3.1.0
+
cli-cursor@5.0.0:
dependencies:
restore-cursor: 5.1.0
@@ -15013,6 +15438,12 @@ snapshots:
client-only@0.0.1: {}
+ cliui@6.0.0:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 6.2.0
+
cliui@8.0.1:
dependencies:
string-width: 4.2.3
@@ -15051,8 +15482,12 @@ snapshots:
color-convert: 2.0.1
color-string: 1.9.1
+ colorette@1.4.0: {}
+
colorette@2.0.20: {}
+ command-exists@1.2.9: {}
+
commander@11.1.0: {}
commander@12.1.0: {}
@@ -15065,6 +15500,8 @@ snapshots:
commander@7.2.0: {}
+ commander@9.5.0: {}
+
commondir@1.0.1: {}
compressible@2.0.18:
@@ -15119,6 +15556,15 @@ snapshots:
object-assign: 4.1.1
vary: 1.1.2
+ cosmiconfig@9.0.2(typescript@5.9.2):
+ dependencies:
+ env-paths: 2.2.1
+ import-fresh: 3.3.1
+ js-yaml: 4.1.1
+ parse-json: 5.2.0
+ optionalDependencies:
+ typescript: 5.9.2
+
create-jest@29.7.0(@types/node@22.19.18):
dependencies:
'@jest/types': 29.6.3
@@ -15171,6 +15617,8 @@ snapshots:
es-errors: 1.3.0
is-data-view: 1.0.2
+ dayjs@1.11.21: {}
+
debug@2.6.9:
dependencies:
ms: 2.0.0
@@ -15183,6 +15631,8 @@ snapshots:
dependencies:
ms: 2.1.3
+ decamelize@1.2.0: {}
+
decode-uri-component@0.2.2: {}
dedent@1.7.2:
@@ -15292,12 +15742,15 @@ snapshots:
env-editor@0.4.2: {}
+ env-paths@2.2.1: {}
+
+ envinfo@7.21.0: {}
+
environment@1.1.0: {}
error-ex@1.3.4:
dependencies:
is-arrayish: 0.2.1
- optional: true
error-stack-parser-es@1.0.5: {}
@@ -15305,6 +15758,11 @@ snapshots:
dependencies:
stackframe: 1.3.4
+ errorhandler@1.5.2:
+ dependencies:
+ accepts: 1.3.8
+ escape-html: 1.0.3
+
es-abstract@1.24.2:
dependencies:
array-buffer-byte-length: 1.0.2
@@ -15759,7 +16217,6 @@ snapshots:
onetime: 5.1.2
signal-exit: 3.0.7
strip-final-newline: 2.0.0
- optional: true
exit@0.1.2:
optional: true
@@ -15777,54 +16234,54 @@ snapshots:
expo-application@7.0.8(expo@54.0.34):
dependencies:
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
- expo-asset@12.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2):
+ expo-asset@12.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2):
dependencies:
'@expo/image-utils': 0.8.14(typescript@5.9.2)
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
- expo-constants: 18.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo-constants: 18.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
transitivePeerDependencies:
- supports-color
- typescript
- expo-blur@15.0.8(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-blur@15.0.8(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
expo-build-properties@0.14.8(expo@54.0.34):
dependencies:
ajv: 8.20.0
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
semver: 7.8.0
- expo-clipboard@8.0.8(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-clipboard@8.0.8(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
- expo-constants@18.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)):
+ expo-constants@18.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)):
dependencies:
'@expo/config': 12.0.13
'@expo/env': 2.0.11
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
transitivePeerDependencies:
- supports-color
expo-crypto@15.0.9(expo@54.0.34):
dependencies:
base64-js: 1.5.1
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
expo-dev-client@6.0.21(expo@54.0.34):
dependencies:
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
expo-dev-launcher: 6.0.21(expo@54.0.34)
expo-dev-menu: 7.0.19(expo@54.0.34)
expo-dev-menu-interface: 2.0.0(expo@54.0.34)
@@ -15836,7 +16293,7 @@ snapshots:
expo-dev-launcher@6.0.21(expo@54.0.34):
dependencies:
ajv: 8.20.0
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
expo-dev-menu: 7.0.19(expo@54.0.34)
expo-manifests: 1.0.11(expo@54.0.34)
transitivePeerDependencies:
@@ -15844,53 +16301,53 @@ snapshots:
expo-dev-menu-interface@2.0.0(expo@54.0.34):
dependencies:
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
expo-dev-menu@7.0.19(expo@54.0.34):
dependencies:
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
expo-dev-menu-interface: 2.0.0(expo@54.0.34)
expo-device@8.0.10(expo@54.0.34):
dependencies:
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
ua-parser-js: 0.7.41
- expo-file-system@19.0.22(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)):
+ expo-file-system@19.0.22(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)):
dependencies:
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
- expo-font@14.0.11(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-font@14.0.11(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
fontfaceobserver: 2.3.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
expo-haptics@15.0.8(expo@54.0.34):
dependencies:
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
expo-json-utils@0.15.0: {}
expo-keep-awake@15.0.8(expo@54.0.34)(react@19.1.0):
dependencies:
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
react: 19.1.0
- expo-linear-gradient@15.0.8(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-linear-gradient@15.0.8(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
- expo-linking@8.0.12(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-linking@8.0.12(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
- expo-constants: 18.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
+ expo-constants: 18.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
transitivePeerDependencies:
- expo
- supports-color
@@ -15898,7 +16355,7 @@ snapshots:
expo-manifests@1.0.11(expo@54.0.34):
dependencies:
'@expo/config': 12.0.13
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
expo-json-utils: 0.15.0
transitivePeerDependencies:
- supports-color
@@ -15911,43 +16368,43 @@ snapshots:
require-from-string: 2.0.2
resolve-from: 5.0.0
- expo-modules-core@3.0.30(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-modules-core@3.0.30(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
- expo-notifications@0.32.17(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2):
+ expo-notifications@0.32.17(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2):
dependencies:
'@expo/image-utils': 0.8.14(typescript@5.9.2)
'@ide/backoff': 1.0.0
abort-controller: 3.0.0
assert: 2.1.0
badgin: 1.2.3
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
expo-application: 7.0.8(expo@54.0.34)
- expo-constants: 18.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
+ expo-constants: 18.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
transitivePeerDependencies:
- supports-color
- typescript
- expo-router@6.0.23(d270f903a381d04171c7e3105bcc3cd4):
+ expo-router@6.0.23(04d3d8526ab825d13bb1e48e5046dce1):
dependencies:
- '@expo/metro-runtime': 6.1.2(expo@54.0.34)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@expo/metro-runtime': 6.1.2(expo@54.0.34)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@expo/schema-utils': 0.1.8
'@radix-ui/react-slot': 1.2.0(@types/react@19.1.17)(react@19.1.0)
'@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@react-navigation/bottom-tabs': 7.15.13(@react-navigation/native@7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native': 7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@react-navigation/native-stack': 7.14.14(@react-navigation/native@7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/bottom-tabs': 7.15.13(@react-navigation/native@7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native': 7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-navigation/native-stack': 7.14.14(@react-navigation/native@7.2.4(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
client-only: 0.0.1
debug: 4.4.3
escape-string-regexp: 4.0.0
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
- expo-constants: 18.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
- expo-linking: 8.0.12(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo-constants: 18.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
+ expo-linking: 8.0.12(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-server: 1.0.6
fast-deep-equal: 3.1.3
invariant: 2.2.4
@@ -15955,10 +16412,10 @@ snapshots:
query-string: 7.1.3
react: 19.1.0
react-fast-compare: 3.2.2
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
- react-native-is-edge-to-edge: 1.3.1(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native-is-edge-to-edge: 1.3.1(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
semver: 7.6.3
server-only: 0.0.1
sf-symbols-typescript: 2.2.0
@@ -15966,10 +16423,10 @@ snapshots:
use-latest-callback: 0.2.6(react@19.1.0)
vaul: 1.1.2(@types/react-dom@19.1.11(@types/react@19.1.17))(@types/react@19.1.17)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
optionalDependencies:
- '@testing-library/react-native': 13.3.3(jest@29.7.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.2.0(react@19.1.0))(react@19.1.0)
+ '@testing-library/react-native': 13.3.3(jest@29.7.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react-test-renderer@19.2.0(react@19.1.0))(react@19.1.0)
react-dom: 19.1.0(react@19.1.0)
- react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-reanimated: 4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-reanimated: 4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
react-native-web: 0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
@@ -15979,30 +16436,30 @@ snapshots:
expo-secure-store@15.0.8(expo@54.0.34):
dependencies:
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
expo-server@1.0.6: {}
expo-splash-screen@31.0.13(expo@54.0.34)(typescript@5.9.2):
dependencies:
'@expo/prebuild-config': 54.0.8(expo@54.0.34)(typescript@5.9.2)
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
transitivePeerDependencies:
- supports-color
- typescript
- expo-status-bar@3.0.9(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ expo-status-bar@3.0.9(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
- react-native-is-edge-to-edge: 1.3.1(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native-is-edge-to-edge: 1.3.1(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- expo-system-ui@6.0.9(expo@54.0.34)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)):
+ expo-system-ui@6.0.9(expo@54.0.34)(react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)):
dependencies:
'@react-native/normalize-colors': 0.81.5
debug: 4.4.3
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
optionalDependencies:
react-native-web: 0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
@@ -16010,36 +16467,36 @@ snapshots:
expo-updates-interface@2.0.0(expo@54.0.34):
dependencies:
- expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo: 54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
- expo@54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2):
+ expo@54.0.34(@babel/core@7.29.0)(@expo/dom-webview@55.0.6)(@expo/metro-runtime@6.1.2)(expo-router@6.0.23)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2):
dependencies:
'@babel/runtime': 7.29.2
- '@expo/cli': 54.0.24(expo-router@6.0.23)(expo@54.0.34)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(typescript@5.9.2)
+ '@expo/cli': 54.0.24(expo-router@6.0.23)(expo@54.0.34)(graphql@16.14.0)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(typescript@5.9.2)
'@expo/config': 12.0.13
'@expo/config-plugins': 54.0.4
- '@expo/devtools': 0.1.8(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@expo/devtools': 0.1.8(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@expo/fingerprint': 0.15.5
'@expo/metro': 54.2.0
'@expo/metro-config': 54.0.15(expo@54.0.34)
- '@expo/vector-icons': 15.1.1(expo-font@14.0.11(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@expo/vector-icons': 15.1.1(expo-font@14.0.11(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@ungap/structured-clone': 1.3.1
babel-preset-expo: 54.0.10(@babel/core@7.29.0)(@babel/runtime@7.29.2)(expo@54.0.34)(react-refresh@0.14.2)
- expo-asset: 12.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
- expo-constants: 18.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
- expo-file-system: 19.0.22(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
- expo-font: 14.0.11(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo-asset: 12.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)(typescript@5.9.2)
+ expo-constants: 18.0.13(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
+ expo-file-system: 19.0.22(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))
+ expo-font: 14.0.11(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
expo-keep-awake: 15.0.8(expo@54.0.34)(react@19.1.0)
expo-modules-autolinking: 3.0.25
- expo-modules-core: 3.0.30(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ expo-modules-core: 3.0.30(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
pretty-format: 29.7.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
react-refresh: 0.14.2
whatwg-url-without-unicode: 8.0.0-3
optionalDependencies:
- '@expo/dom-webview': 55.0.6(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@expo/metro-runtime': 6.1.2(expo@54.0.34)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@expo/dom-webview': 55.0.6(expo@54.0.34)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@expo/metro-runtime': 6.1.2(expo@54.0.34)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
transitivePeerDependencies:
- '@babel/core'
- bufferutil
@@ -16253,6 +16710,12 @@ snapshots:
jsonfile: 6.2.1
universalify: 2.0.1
+ 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:
@@ -16321,8 +16784,7 @@ snapshots:
dunder-proto: 1.0.1
es-object-atoms: 1.1.1
- get-stream@6.0.1:
- optional: true
+ get-stream@6.0.1: {}
get-symbol-description@1.1.0:
dependencies:
@@ -16490,8 +16952,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- human-signals@2.1.0:
- optional: true
+ human-signals@2.1.0: {}
husky@9.1.7: {}
@@ -16565,8 +17026,7 @@ snapshots:
call-bound: 1.0.4
get-intrinsic: 1.3.0
- is-arrayish@0.2.1:
- optional: true
+ is-arrayish@0.2.1: {}
is-arrayish@0.3.4: {}
@@ -16616,6 +17076,8 @@ snapshots:
dependencies:
call-bound: 1.0.4
+ is-fullwidth-code-point@2.0.0: {}
+
is-fullwidth-code-point@3.0.0: {}
is-fullwidth-code-point@5.1.0:
@@ -16637,6 +17099,8 @@ snapshots:
dependencies:
is-extglob: 2.1.1
+ is-interactive@1.0.0: {}
+
is-map@2.0.3: {}
is-nan@1.3.2:
@@ -16691,6 +17155,8 @@ snapshots:
dependencies:
which-typed-array: 1.1.20
+ is-unicode-supported@0.1.0: {}
+
is-weakmap@2.0.2: {}
is-weakref@1.1.1:
@@ -16702,6 +17168,8 @@ snapshots:
call-bound: 1.0.4
get-intrinsic: 1.3.0
+ is-wsl@1.1.0: {}
+
is-wsl@2.2.0:
dependencies:
is-docker: 2.2.1
@@ -17117,6 +17585,14 @@ snapshots:
jmespath@0.16.0: {}
+ joi@17.13.4:
+ dependencies:
+ '@hapi/hoek': 9.3.0
+ '@hapi/topo': 5.1.0
+ '@sideway/address': 4.1.5
+ '@sideway/formula': 3.0.1
+ '@sideway/pinpoint': 2.0.0
+
jose@4.15.9: {}
jose@5.10.0: {}
@@ -17146,8 +17622,7 @@ snapshots:
json-buffer@3.0.1: {}
- json-parse-even-better-errors@2.3.1:
- optional: true
+ json-parse-even-better-errors@2.3.1: {}
json-schema-traverse@0.4.1: {}
@@ -17161,6 +17636,10 @@ snapshots:
json5@2.2.3: {}
+ jsonfile@4.0.0:
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
jsonfile@6.2.1:
dependencies:
universalify: 2.0.1
@@ -17197,6 +17676,11 @@ snapshots:
lan-network@0.2.1: {}
+ launch-editor@2.14.1:
+ dependencies:
+ picocolors: 1.1.1
+ shell-quote: 1.9.0
+
leven@3.1.0: {}
levn@0.4.1:
@@ -17300,6 +17784,11 @@ snapshots:
dependencies:
chalk: 2.4.2
+ log-symbols@4.1.0:
+ dependencies:
+ chalk: 4.1.2
+ is-unicode-supported: 0.1.0
+
log-update@6.1.0:
dependencies:
ansi-escapes: 7.3.0
@@ -17308,6 +17797,12 @@ snapshots:
strip-ansi: 7.2.0
wrap-ansi: 9.0.2
+ logkitty@0.7.1:
+ dependencies:
+ ansi-fragments: 0.2.1
+ dayjs: 1.11.21
+ yargs: 15.4.1
+
loose-envify@1.4.0:
dependencies:
js-tokens: 4.0.0
@@ -17901,10 +18396,11 @@ snapshots:
mime@1.6.0: {}
+ mime@2.6.0: {}
+
mimic-fn@1.2.0: {}
- mimic-fn@2.1.0:
- optional: true
+ mimic-fn@2.1.0: {}
mimic-function@5.0.1: {}
@@ -18012,6 +18508,8 @@ snapshots:
- '@babel/core'
- babel-plugin-macros
+ nocache@3.0.4: {}
+
node-exports-info@1.6.0:
dependencies:
array.prototype.flatmap: 1.3.3
@@ -18031,6 +18529,8 @@ snapshots:
node-releases@2.0.38: {}
+ node-stream-zip@1.15.0: {}
+
normalize-path@3.0.0: {}
npm-package-arg@11.0.3:
@@ -18043,7 +18543,6 @@ snapshots:
npm-run-path@4.0.1:
dependencies:
path-key: 3.1.1
- optional: true
nullthrows@1.1.1: {}
@@ -18141,12 +18640,15 @@ snapshots:
onetime@5.1.2:
dependencies:
mimic-fn: 2.1.0
- optional: true
onetime@7.0.0:
dependencies:
mimic-function: 5.0.1
+ open@6.4.0:
+ dependencies:
+ is-wsl: 1.1.0
+
open@7.4.2:
dependencies:
is-docker: 2.2.1
@@ -18193,6 +18695,18 @@ snapshots:
strip-ansi: 5.2.0
wcwidth: 1.0.1
+ ora@5.4.1:
+ dependencies:
+ bl: 4.1.0
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-spinners: 2.9.2
+ is-interactive: 1.0.0
+ is-unicode-supported: 0.1.0
+ log-symbols: 4.1.0
+ strip-ansi: 6.0.1
+ wcwidth: 1.0.1
+
own-keys@1.0.1:
dependencies:
get-intrinsic: 1.3.0
@@ -18227,7 +18741,6 @@ snapshots:
error-ex: 1.3.4
json-parse-even-better-errors: 2.3.1
lines-and-columns: 1.2.4
- optional: true
parse-png@2.1.0:
dependencies:
@@ -18472,43 +18985,43 @@ snapshots:
react-is@19.2.6: {}
- react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
'@egjs/hammerjs': 2.0.17
hoist-non-react-statics: 3.3.2
invariant: 2.2.4
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
- react-native-get-random-values@1.11.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)):
+ react-native-get-random-values@1.11.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)):
dependencies:
fast-base64-decode: 1.0.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
- react-native-is-edge-to-edge@1.3.1(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-is-edge-to-edge@1.3.1(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
- react-native-reanimated@4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-reanimated@4.1.7(react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
- react-native-is-edge-to-edge: 1.3.1(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- react-native-worklets: 0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native-is-edge-to-edge: 1.3.1(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native-worklets: 0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
semver: 7.8.0
- react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
- react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
react: 19.1.0
react-freeze: 1.0.4(react@19.1.0)
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
- react-native-is-edge-to-edge: 1.3.1(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native-is-edge-to-edge: 1.3.1(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
warn-once: 0.1.1
react-native-web@0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0):
@@ -18526,7 +19039,7 @@ snapshots:
transitivePeerDependencies:
- encoding
- react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ react-native-worklets@0.8.3(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
'@babel/core': 7.29.0
'@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.29.0)
@@ -18541,21 +19054,21 @@ snapshots:
'@react-native/metro-config': 0.85.3(@babel/core@7.29.0)
convert-source-map: 2.0.0
react: 19.1.0
- react-native: 0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
+ react-native: 0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0)
semver: 7.8.0
transitivePeerDependencies:
- supports-color
- react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0):
+ react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0):
dependencies:
'@jest/create-cache-key-function': 29.7.0
'@react-native/assets-registry': 0.81.5
'@react-native/codegen': 0.81.5(@babel/core@7.29.0)
- '@react-native/community-cli-plugin': 0.81.5(@react-native/metro-config@0.85.3(@babel/core@7.29.0))
+ '@react-native/community-cli-plugin': 0.81.5(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))
'@react-native/gradle-plugin': 0.81.5
'@react-native/js-polyfills': 0.81.5
'@react-native/normalize-colors': 0.81.5
- '@react-native/virtualized-lists': 0.81.5(@types/react@19.1.17)(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@react-native/virtualized-lists': 0.81.5(@types/react@19.1.17)(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
abort-controller: 3.0.0
anser: 1.4.10
ansi-regex: 5.0.1
@@ -18631,6 +19144,12 @@ snapshots:
react@19.1.0: {}
+ readable-stream@3.6.2:
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+
readdirp@4.1.2: {}
redent@3.0.0:
@@ -18686,6 +19205,8 @@ snapshots:
require-from-string@2.0.2: {}
+ require-main-filename@2.0.0: {}
+
requireg@0.2.2:
dependencies:
nested-error-stacks: 2.0.1
@@ -18737,6 +19258,11 @@ snapshots:
onetime: 2.0.1
signal-exit: 3.0.7
+ restore-cursor@3.1.0:
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+
restore-cursor@5.1.0:
dependencies:
onetime: 7.0.0
@@ -18891,6 +19417,8 @@ snapshots:
server-only@0.0.1: {}
+ set-blocking@2.0.0: {}
+
set-cookie-parser@3.1.0: {}
set-function-length@1.2.2:
@@ -18967,6 +19495,8 @@ snapshots:
shell-quote@1.8.3: {}
+ shell-quote@1.9.0: {}
+
side-channel-list@1.0.1:
dependencies:
es-errors: 1.3.0
@@ -19017,6 +19547,12 @@ snapshots:
slash@4.0.0: {}
+ slice-ansi@2.1.0:
+ dependencies:
+ ansi-styles: 3.2.1
+ astral-regex: 1.0.0
+ is-fullwidth-code-point: 2.0.0
+
slice-ansi@4.0.0:
dependencies:
ansi-styles: 4.3.0
@@ -19202,6 +19738,10 @@ snapshots:
define-properties: 1.2.1
es-object-atoms: 1.1.1
+ string_decoder@1.3.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
strip-ansi@5.2.0:
dependencies:
ansi-regex: 4.1.1
@@ -19219,8 +19759,7 @@ snapshots:
strip-bom@4.0.0:
optional: true
- strip-final-newline@2.0.0:
- optional: true
+ strip-final-newline@2.0.0: {}
strip-indent@3.0.0:
dependencies:
@@ -19288,7 +19827,7 @@ snapshots:
string-width: 4.2.3
strip-ansi: 6.0.1
- tamagui@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
+ tamagui@2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0):
dependencies:
'@tamagui/accordion': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/adapt': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
@@ -19302,10 +19841,10 @@ snapshots:
'@tamagui/collapsible': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/compose-refs': 2.0.0-rc.42(react@19.1.0)
'@tamagui/constants': 2.0.0-rc.42(react@19.1.0)
- '@tamagui/context-menu': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/context-menu': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/core': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/create-context': 2.0.0-rc.42(react@19.1.0)
- '@tamagui/create-menu': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/create-menu': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/dialog': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/element': 2.0.0-rc.42(react@19.1.0)
'@tamagui/elements': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
@@ -19323,16 +19862,16 @@ snapshots:
'@tamagui/label': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/linear-gradient': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/list-item': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@tamagui/menu': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/menu': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/polyfill-dev': 2.0.0-rc.42
- '@tamagui/popover': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
- '@tamagui/popper': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/popover': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/popper': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/portal': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/progress': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/radio-group': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/react-native-media-driver': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/scroll-view': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@tamagui/select': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/select': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/separator': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/shapes': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/sheet': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
@@ -19346,7 +19885,7 @@ snapshots:
'@tamagui/theme': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/toast': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@tamagui/toggle-group': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
- '@tamagui/tooltip': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
+ '@tamagui/tooltip': 2.0.0-rc.42(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.29.0)(@react-native-community/cli@20.2.0(typescript@5.9.2))(@react-native/metro-config@0.85.3(@babel/core@7.29.0))(@types/react@19.1.17)(react@19.1.0))(react@19.1.0)
'@tamagui/use-controllable-state': 2.0.0-rc.42(react@19.1.0)
'@tamagui/use-debounce': 2.0.0-rc.42(react@19.1.0)
'@tamagui/use-force-update': 2.0.0-rc.42(react@19.1.0)
@@ -19548,6 +20087,8 @@ snapshots:
unicode-property-aliases-ecmascript@2.2.0: {}
+ universalify@0.1.2: {}
+
universalify@2.0.1: {}
unpipe@1.0.0: {}
@@ -19614,6 +20155,8 @@ snapshots:
dependencies:
react: 19.1.0
+ util-deprecate@1.0.2: {}
+
util@0.12.5:
dependencies:
inherits: 2.0.4
@@ -19778,6 +20321,8 @@ snapshots:
is-weakmap: 2.0.2
is-weakset: 2.0.4
+ which-module@2.0.1: {}
+
which-typed-array@1.1.20:
dependencies:
available-typed-arrays: 1.0.7
@@ -19826,6 +20371,12 @@ snapshots:
- bufferutil
- utf-8-validate
+ wrap-ansi@6.2.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
wrap-ansi@7.0.0:
dependencies:
ansi-styles: 4.3.0
@@ -19876,6 +20427,8 @@ snapshots:
xmlbuilder@15.1.1: {}
+ y18n@4.0.3: {}
+
y18n@5.0.8: {}
yallist@3.1.1: {}
@@ -19886,8 +20439,27 @@ snapshots:
yaml@2.8.4: {}
+ yargs-parser@18.1.3:
+ dependencies:
+ camelcase: 5.3.1
+ decamelize: 1.2.0
+
yargs-parser@21.1.1: {}
+ yargs@15.4.1:
+ dependencies:
+ cliui: 6.0.0
+ decamelize: 1.2.0
+ find-up: 4.1.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ require-main-filename: 2.0.0
+ set-blocking: 2.0.0
+ string-width: 4.2.3
+ which-module: 2.0.1
+ y18n: 4.0.3
+ yargs-parser: 18.1.3
+
yargs@17.7.2:
dependencies:
cliui: 8.0.1
diff --git a/services/api/src/lib/chat-ws-push.ts b/services/api/src/lib/chat-ws-push.ts
index ecf923b..2fb7f7a 100644
--- a/services/api/src/lib/chat-ws-push.ts
+++ b/services/api/src/lib/chat-ws-push.ts
@@ -30,7 +30,16 @@ const SECRET_HEADER = "x-chat-ws-secret";
// Until that's done the secret resolves to an empty string and push becomes
// a no-op — the 30s client poll remains the correctness fallback.
function chatWsUrl(): string | null {
- const v = Resource.ChatWsInternalUrl.value;
+ // Resolves to "" when the secret is declared-but-unset (push no-op), and
+ // THROWS when SST links aren't active at all (a bare `pnpm api` outside the
+ // sst dev multiplexer). Both must degrade to a no-op — push is best-effort and
+ // must never crash the request/process (the 30s client poll is the fallback).
+ let v: string;
+ try {
+ v = Resource.ChatWsInternalUrl.value;
+ } catch {
+ return null;
+ }
if (!v) return null;
return v.replace(/\/$/, "");
}
diff --git a/services/demo-bot/.env.example b/services/demo-bot/.env.example
new file mode 100644
index 0000000..f799cdc
--- /dev/null
+++ b/services/demo-bot/.env.example
@@ -0,0 +1,13 @@
+# Concierge bot credentials — the account the demo bot signs in as (or signs up
+# on first run). Use a dedicated address, not a real user.
+DEMO_BOT_EMAIL=concierge@mortstack.demo
+DEMO_BOT_PASSWORD=change-me-min-8-chars
+DEMO_BOT_NAME=Mortstack Concierge
+
+# Backend endpoints (defaults target the local stack: API :3001, chat-ws :8787).
+# MORTSTACK_API_URL=http://localhost:3001
+# MORTSTACK_WS_URL=ws://localhost:8787
+
+# Where the bot persists its MLS state (engine snapshot + group registry +
+# identity). Defaults to services/demo-bot/.demo-bot-state.
+# DEMO_BOT_STATE_DIR=.demo-bot-state
diff --git a/services/demo-bot/.gitignore b/services/demo-bot/.gitignore
new file mode 100644
index 0000000..dbcb36d
--- /dev/null
+++ b/services/demo-bot/.gitignore
@@ -0,0 +1,2 @@
+.env
+.demo-bot-state/
diff --git a/services/demo-bot/package.json b/services/demo-bot/package.json
new file mode 100644
index 0000000..90d4261
--- /dev/null
+++ b/services/demo-bot/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "@repo/demo-bot",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "description": "Headless MLS 'concierge' bot — founds demo groups and adds new signups (real Add+Welcome) so a fresh user has a working two-way E2EE chat. Tracer-bullet (local Node); productionises to an SST Lambda later.",
+ "scripts": {
+ "bot": "tsx src/index.ts",
+ "check-types": "tsc --noEmit"
+ },
+ "dependencies": {
+ "@noble/ed25519": "^2.3.0",
+ "@repo/chat-mls-core": "workspace:*",
+ "@repo/chat-mls-core-node": "file:../../packages/chat-mls-core/node",
+ "@trpc/client": "^11.17.0"
+ },
+ "devDependencies": {
+ "@repo/api-server": "workspace:*",
+ "@types/node": "^22.10.0",
+ "tsx": "^4.21.0",
+ "typescript": "5.9.2"
+ }
+}
diff --git a/services/demo-bot/src/auth.ts b/services/demo-bot/src/auth.ts
new file mode 100644
index 0000000..d5d4b16
--- /dev/null
+++ b/services/demo-bot/src/auth.ts
@@ -0,0 +1,58 @@
+export interface AuthOpts {
+ apiUrl: string;
+ email: string;
+ password: string;
+ name: string;
+}
+
+// Obtain a Better Auth bearer for an account. Mirrors the mobile auth client
+// (apps/mobile/lib/auth/client.ts): the token rides back in the `set-auth-token`
+// response header (bearer plugin), and Origin must be set so Better Auth's CSRF
+// origin-check passes for a non-browser client.
+//
+// First run signs up (requireEmailVerification is false server-side, so the
+// account is immediately usable); subsequent runs sign in. Idempotent from the
+// caller's view — always returns a usable token or throws.
+export async function authenticate(opts: AuthOpts): Promise {
+ const signIn = await postAuth(opts, "/auth/sign-in/email", {
+ email: opts.email,
+ password: opts.password,
+ });
+ if (signIn.token) return signIn.token;
+
+ // Sign-in failed (most likely account doesn't exist yet) → sign up.
+ const signUp = await postAuth(opts, "/auth/sign-up/email", {
+ email: opts.email,
+ password: opts.password,
+ name: opts.name,
+ });
+ if (signUp.token) return signUp.token;
+
+ throw new Error(
+ `[demo-bot/auth] could not obtain a session for ${opts.email}. ` +
+ `sign-in: ${signIn.status} ${signIn.body} | sign-up: ${signUp.status} ${signUp.body}`,
+ );
+}
+
+async function postAuth(
+ opts: AuthOpts,
+ path: string,
+ body: Record,
+): Promise<{ token: string | null; status: number; body: string }> {
+ const res = await fetch(`${opts.apiUrl}${path}`, {
+ method: "POST",
+ headers: {
+ "content-type": "application/json",
+ // RN doesn't send Origin either; set it so the CSRF origin-check passes.
+ origin: opts.apiUrl,
+ },
+ body: JSON.stringify(body),
+ });
+ const token = res.headers.get("set-auth-token");
+ const text = await res.text().catch(() => "");
+ return {
+ token: res.ok ? token : null,
+ status: res.status,
+ body: text.slice(0, 200),
+ };
+}
diff --git a/services/demo-bot/src/bot.ts b/services/demo-bot/src/bot.ts
new file mode 100644
index 0000000..10e3e0f
--- /dev/null
+++ b/services/demo-bot/src/bot.ts
@@ -0,0 +1,249 @@
+import { createRequire } from "node:module";
+import { tmpdir } from "node:os";
+import { join } from "node:path";
+
+// @repo/chat-mls-core ships raw .ts (no "type":"module"), so tsx loads it as
+// CommonJS at runtime while tsc sees the ESM source — a mismatch no single
+// import form satisfies (default import runs but won't typecheck; namespace
+// typechecks but hides the class under .default at runtime). Resolve it the
+// canonical way: require() the value (tsx transpiles the .ts on demand) and
+// take the class *type* from a type-only import (erased, so no runtime effect).
+import type { MlsClient as MlsClientCtor } from "@repo/chat-mls-core/client";
+
+const { MlsClient } = createRequire(import.meta.url)(
+ "@repo/chat-mls-core/client",
+) as {
+ MlsClient: typeof MlsClientCtor;
+};
+type MlsClient = MlsClientCtor;
+
+import type { BotConfig } from "./config.js";
+import { authenticate } from "./auth.js";
+import { createTrpc, makeMlsRpc, type TrpcClient } from "./rpc.js";
+import { createFileStore, type BotStore } from "./store.js";
+import { createNodeMlsEngineModule } from "./engine.js";
+import { nodeMlsCrypto, ed25519PubFromSeed } from "./crypto.js";
+
+function b64(bytes: Uint8Array): string {
+ return Buffer.from(bytes).toString("base64");
+}
+
+// Canonical device-bundle bytes the server re-verifies. Byte-for-byte identical
+// to apps/mobile/lib/chat/publish.ts + services/api/src/routers/user.ts:
+// 0x01 ‖ deviceId-utf8 ‖ ed25519Pub ‖ x25519Pub
+const BUNDLE_VERSION = 0x01;
+function canonicalBundleBytes(
+ deviceId: string,
+ ed25519Pub: Uint8Array,
+ x25519Pub: Uint8Array,
+): Uint8Array {
+ const deviceIdBytes = new TextEncoder().encode(deviceId);
+ const out = new Uint8Array(
+ 1 + deviceIdBytes.length + ed25519Pub.length + x25519Pub.length,
+ );
+ out[0] = BUNDLE_VERSION;
+ out.set(deviceIdBytes, 1);
+ out.set(ed25519Pub, 1 + deviceIdBytes.length);
+ out.set(x25519Pub, 1 + deviceIdBytes.length + ed25519Pub.length);
+ return out;
+}
+
+// Register the bot's device server-side (user.keys.publish). The mls.keys.*
+// routes gate on a registered device, so this must run before bootstrap's
+// orphan-KP cleanup and any add. Idempotent — server upserts on (account, device).
+async function registerDevice(
+ trpc: TrpcClient,
+ id: { deviceId: string; seed: Uint8Array; x25519Pub: Uint8Array },
+): Promise {
+ const ed25519Pub = ed25519PubFromSeed(id.seed);
+ const bundle = canonicalBundleBytes(id.deviceId, ed25519Pub, id.x25519Pub);
+ const sig = nodeMlsCrypto.signEd25519Detached(bundle, id.seed);
+ await trpc.user.keys.publish.mutate({
+ deviceId: id.deviceId,
+ ed25519PubB64: b64(ed25519Pub),
+ x25519PubB64: b64(id.x25519Pub),
+ bundleSigB64: b64(sig),
+ });
+}
+
+export interface Bot {
+ cfg: BotConfig;
+ trpc: TrpcClient;
+ store: BotStore;
+ client: MlsClient;
+ accountId: string;
+ deviceId: string;
+}
+
+interface BuildClientOpts {
+ apiUrl: string;
+ email: string;
+ password: string;
+ name: string;
+ stateDir: string;
+}
+
+type Client = Omit & { source: "fresh" | "snapshot" };
+
+// Authenticate → resolve domain accountId → construct an MlsClient with the Node
+// engine + file store + real RPC → register device → bootstrap. This is the
+// mobile bootstrap (mls-auto-publish.ts) minus the RN-specific poll loop, and is
+// shared by both the concierge (createBot) and the verify harness's synthetic user.
+async function buildClient(opts: BuildClientOpts): Promise {
+ const token = await authenticate(opts);
+ const trpc = createTrpc(opts.apiUrl, token);
+
+ // Domain Account.id ≠ Better Auth user id — the engine + snapshot key off it.
+ const me = await trpc.account.me.query();
+ const accountId = me.accountId;
+
+ const store = createFileStore(opts.stateDir);
+ const { seed, deviceId, x25519Pub } = store.getOrCreateIdentity();
+
+ // Register the device before any mls.keys.* call (bootstrap's fresh path
+ // clears orphan KPs; add fetches peer KPs) — both gate on a registered device.
+ await registerDevice(trpc, { deviceId, seed, x25519Pub });
+
+ const client = new MlsClient({
+ accountId,
+ deviceId,
+ identitySeed: seed,
+ rpc: makeMlsRpc(trpc),
+ engine: createNodeMlsEngineModule(),
+ crypto: nodeMlsCrypto,
+ mlsStore: store,
+ });
+
+ const { source } = await client.bootstrap();
+ return { trpc, store, client, accountId, deviceId, source };
+}
+
+// Boot the concierge from config.
+export async function createBot(cfg: BotConfig): Promise {
+ const { source, ...rest } = await buildClient({
+ apiUrl: cfg.apiUrl,
+ email: cfg.email,
+ password: cfg.password,
+ name: cfg.name,
+ stateDir: cfg.stateDir,
+ });
+ console.log(
+ `[demo-bot] engine ready (source=${source}, account=${rest.accountId}, device=${rest.deviceId})`,
+ );
+ return { cfg, ...rest };
+}
+
+// End-to-end proof of slice 1 against the REAL server, no sim required: stand up
+// a throwaway KeyPackage-publishing "user", have the bot add it to a lobby, and
+// assert the user joins from the bot's Welcome. A join means the user is now
+// cryptographically in the group — the exact thing "group not found" denied.
+export async function verifySlice1(cfg: BotConfig): Promise {
+ const bot = await createBot(cfg);
+
+ const email = `verify-user-${Date.now()}@mortstack.demo`;
+ const user = await buildClient({
+ apiUrl: cfg.apiUrl,
+ email,
+ password: "verify-user-pw-123",
+ name: "Verify User",
+ stateDir: join(tmpdir(), `demo-bot-verify-${Date.now()}`),
+ });
+ console.log(`[verify] synthetic user ready — account=${user.accountId}`);
+
+ // The user must publish KeyPackages before the bot can add it (the KP-timing
+ // dependency the real signup flow also has).
+ const top = await user.client.topUpKeyPackagesIfBelow(10, 8);
+ console.log(`[verify] user published ${top.published} KeyPackage(s)`);
+
+ await addUserToDemo(bot, user.accountId, "Verify Lobby");
+
+ const joined = await user.client.pollPendingWelcomes();
+ const ok = joined.joinedGroupIds.length >= 1;
+ console.log(
+ ok
+ ? `[verify] ✅ SLICE 1 PASS — user joined ${joined.joinedGroupIds.length} group(s) from the bot's Welcome. The "group not found" root is fixed off-device.`
+ : `[verify] ❌ SLICE 1 FAIL — user received no Welcome (joinedGroupIds=0). Inspect publishWelcomes / fetchPendingWelcomes.`,
+ );
+ return ok;
+}
+
+// Ensure a signed-up user is a full member of a demo lobby — the whole point of
+// the bot. `chat.create` requires ≥1 non-caller member, so a lobby can't exist
+// before its first user; this founds one WITH the first user, and adds later
+// users to the existing lobby. Either way it does the two-fact membership
+// correctly: (1) the server ChatMember row (so the user's chat.list surfaces the
+// lobby) and (2) the real MLS Add — fetch the user's KeyPackage → engine.addMembers
+// → publish Commit + Welcome — so the user's device can actually join and decrypt.
+// This is the fix for the "group not found" root: no DB membership without a Welcome.
+export async function addUserToDemo(
+ bot: Bot,
+ userAccountId: string,
+ lobbyName: string,
+): Promise {
+ if (userAccountId === bot.accountId) {
+ throw new Error("[demo-bot] can't add the bot to its own lobby");
+ }
+
+ // Reuse the first lobby the bot already founded (tracer keeps one); else found.
+ const existing = bot.store.listChats().find((c) => c.mlsGroupIdB64);
+
+ let chatId: string;
+ let groupId: Uint8Array;
+
+ if (existing) {
+ chatId = existing.id;
+ groupId = bot.store.getChatGroupId(chatId)!;
+ // Server membership for a NEW member of an existing lobby. Note: addMembers'
+ // input is `accountIds` (chat.create's is `memberAccountIds` — asymmetric).
+ await bot.trpc.chat.addMembers.mutate({
+ chatId,
+ accountIds: [userAccountId],
+ });
+ } else {
+ // Found the lobby WITH this user as the initial member (server rows for
+ // bot+user), then have the bot mint + link the MLS group. Mirrors the
+ // founder half of apps/mobile/lib/chat/create-chat.ts.
+ const created = await bot.trpc.chat.create.mutate({
+ kind: "group",
+ name: lobbyName,
+ memberAccountIds: [userAccountId],
+ });
+ chatId = created.chatId;
+ await bot.store.upsertChat({ id: chatId, kind: "group", name: lobbyName });
+ const g = await bot.client.createGroup({ chatId });
+ groupId = g.groupId;
+ await bot.trpc.chat.linkMlsGroup.mutate({
+ chatId,
+ mlsGroupIdB64: b64(groupId),
+ });
+ console.log(`[demo-bot] founded lobby "${lobbyName}" chatId=${chatId}`);
+ }
+
+ // The real MLS Add + Welcome — same call for both paths. Fails when the user
+ // has no published KeyPackage (they've never opened the app) — surface that as
+ // actionable guidance rather than a stack trace; the server rows already exist,
+ // so a retry after they sign in completes the join.
+ let res: { devicesAdded: unknown[]; epoch: number };
+ try {
+ res = await bot.client.addMembersByAccounts({
+ groupId,
+ accountIds: [userAccountId],
+ });
+ } catch (err) {
+ console.warn(
+ `[demo-bot] ⚠ MLS add failed for ${userAccountId} — most likely no published KeyPackage yet. ` +
+ `Have them sign into the app once (it publishes KPs on bootstrap), then re-run 'bot add ${userAccountId}'. ` +
+ `Lobby ${chatId} + server membership already exist, so the retry only does the MLS Welcome.\n cause: ${String(err)}`,
+ );
+ return;
+ }
+ console.log(
+ `[demo-bot] added ${userAccountId} → lobby ${chatId}: devices=${res.devicesAdded.length} epoch=${res.epoch}`,
+ );
+ if (res.devicesAdded.length === 0) {
+ console.warn(
+ "[demo-bot] ⚠ 0 devices added — the user has no published KeyPackage yet. " +
+ "Have them open the app (sign in) once so it publishes KPs, then retry.",
+ );
+ }
+}
diff --git a/services/demo-bot/src/config.ts b/services/demo-bot/src/config.ts
new file mode 100644
index 0000000..56f4b51
--- /dev/null
+++ b/services/demo-bot/src/config.ts
@@ -0,0 +1,36 @@
+import { resolve } from "node:path";
+
+// Runtime config for the demo bot. Everything overridable by env so the same
+// binary runs against a local stack (defaults) or a deployed stage. The
+// concierge credentials MUST be provided — the bot signs in (or signs up on
+// first run) to obtain a Better Auth bearer, exactly like a device does.
+export interface BotConfig {
+ apiUrl: string;
+ wsUrl: string;
+ email: string;
+ password: string;
+ name: string;
+ stateDir: string;
+}
+
+export function loadConfig(): BotConfig {
+ const email = process.env.DEMO_BOT_EMAIL;
+ const password = process.env.DEMO_BOT_PASSWORD;
+ if (!email || !password) {
+ throw new Error(
+ "DEMO_BOT_EMAIL and DEMO_BOT_PASSWORD must be set (add them to services/demo-bot/.env or export them). See .env.example.",
+ );
+ }
+ return {
+ apiUrl: process.env.MORTSTACK_API_URL ?? "http://localhost:3001",
+ wsUrl: process.env.MORTSTACK_WS_URL ?? "ws://localhost:8787",
+ email,
+ password,
+ name: process.env.DEMO_BOT_NAME ?? "Mortstack Concierge",
+ // Bot MLS state (engine snapshot + group/chat registry + identity seed)
+ // lives here for the tracer. Productionises to a Neon table for Lambda.
+ stateDir: process.env.DEMO_BOT_STATE_DIR
+ ? resolve(process.env.DEMO_BOT_STATE_DIR)
+ : resolve(process.cwd(), ".demo-bot-state"),
+ };
+}
diff --git a/services/demo-bot/src/crypto.ts b/services/demo-bot/src/crypto.ts
new file mode 100644
index 0000000..e71eb68
--- /dev/null
+++ b/services/demo-bot/src/crypto.ts
@@ -0,0 +1,53 @@
+// Node MlsCryptoApi adapter — the three primitives MlsClient needs out of band
+// of the MLS engine. Mirrors packages/chat-mls-core/test/lib/node-crypto.ts,
+// but installs the ed25519 sha512 sync provider via node:crypto so this file
+// carries no @noble/hashes dependency.
+
+import { createHash, generateKeyPairSync, webcrypto } from "node:crypto";
+import * as ed25519 from "@noble/ed25519";
+
+// @noble/ed25519 v2 doesn't bundle sha512 — provide a sync implementation so
+// `sign()` works without going async. node:crypto's sha512 is exact-parity
+// with the @noble/hashes provider the test harness uses.
+ed25519.etc.sha512Sync = (...messages: Uint8Array[]) =>
+ new Uint8Array(
+ createHash("sha512")
+ .update(Buffer.from(ed25519.etc.concatBytes(...messages)))
+ .digest(),
+ );
+
+export const nodeMlsCrypto = {
+ digestSha256: async (bytes: Uint8Array): Promise => {
+ // A Uint8Array is a valid BufferSource (ArrayBufferView); digest hashes
+ // exactly the view's range, so no manual slice is needed.
+ const buf = await webcrypto.subtle.digest("SHA-256", bytes);
+ return new Uint8Array(buf);
+ },
+ getRandomBytes: (n: number): Uint8Array => {
+ const out = new Uint8Array(n);
+ webcrypto.getRandomValues(out);
+ return out;
+ },
+ signEd25519Detached: (message: Uint8Array, seed: Uint8Array): Uint8Array =>
+ // @noble/ed25519 sign takes the 32-byte seed (private key) — matches the
+ // M3 identity_seed semantics used by chat-crypto on device.
+ ed25519.sign(message, seed),
+};
+
+// The Ed25519 public half of the identity seed — the device bundle's signing
+// key. Sync because crypto.ts installs the sha512Sync provider above.
+export function ed25519PubFromSeed(seed: Uint8Array): Uint8Array {
+ return ed25519.getPublicKey(seed);
+}
+
+// A fresh raw (32-byte) X25519 public key. The device bundle format carries an
+// x25519 pub for the v=1 pairwise path; the bot only ever speaks v=2 (MLS), so
+// the private half is discarded — this key exists solely to satisfy the bundle
+// shape the server stores. Generated once and persisted so re-registration is
+// idempotent on the same key.
+export function newX25519PubRaw(): Uint8Array {
+ const { publicKey } = generateKeyPairSync("x25519");
+ // SPKI DER for X25519 is a fixed 44-byte structure ending in the 32-byte key.
+ const der = publicKey.export({ type: "spki", format: "der" });
+ return new Uint8Array(der.subarray(der.length - 32));
+}
diff --git a/services/demo-bot/src/engine.ts b/services/demo-bot/src/engine.ts
new file mode 100644
index 0000000..9f619f0
--- /dev/null
+++ b/services/demo-bot/src/engine.ts
@@ -0,0 +1,114 @@
+// Per-instance MlsEngineModule for the bot, wrapping the napi MlsEngine.
+// Mirrors packages/chat-mls-core/node/module.ts (the acceptance-harness wrapper)
+// but is self-contained so the bot depends only on the published napi package
+// (@repo/chat-mls-core-node), not on the harness's internal relative imports.
+//
+// The napi surface speaks Buffer; MlsClient's engine surface speaks Uint8Array.
+// This wrapper is the sole Buffer↔Uint8Array boundary.
+
+// The napi package is a CommonJS native addon (module.exports = require(.node)),
+// so ESM can't statically see its named exports — import the default and pull
+// the class off it.
+import ChatMlsCoreNode from "@repo/chat-mls-core-node";
+
+const NapiMlsEngine = ChatMlsCoreNode.MlsEngine;
+type NapiMlsEngine = InstanceType;
+
+function toBuffer(b: Uint8Array): Buffer {
+ return Buffer.from(b.buffer, b.byteOffset, b.byteLength);
+}
+
+function fromBuffer(b: Buffer): Uint8Array {
+ return new Uint8Array(b.buffer, b.byteOffset, b.byteLength);
+}
+
+// Structural shape MlsClient consumes (ProcessedKind carries Uint8Array, not
+// the napi Buffer). Discriminated union so it's assignable to chat-mls-core's
+// MlsEngineModule.processMessage return; duck-typed at the construction site,
+// same as the harness wrapper.
+type ProcessedKind =
+ | { kind: "application"; plaintext: Uint8Array }
+ | { kind: "commitApplied" }
+ | { kind: "proposalQueued" };
+
+export function createNodeMlsEngineModule() {
+ let engine: NapiMlsEngine | null = null;
+
+ const require_ = (): NapiMlsEngine => {
+ if (!engine) throw new Error("[demo-bot/engine] engine not initialised");
+ return engine;
+ };
+
+ return {
+ initEngine(accountId: string, identitySeed: Uint8Array): void {
+ if (engine) {
+ if (engine.accountId() !== accountId) {
+ throw new Error(
+ `[demo-bot/engine] engine already bound to ${engine.accountId()} — resetEngine() before switching to ${accountId}`,
+ );
+ }
+ return;
+ }
+ engine = new NapiMlsEngine(accountId, toBuffer(identitySeed));
+ },
+ engineAccountId(): string {
+ return require_().accountId();
+ },
+ resetEngine(): void {
+ engine = null;
+ },
+ dumpState(): Uint8Array {
+ return fromBuffer(require_().dumpState());
+ },
+ loadState(snapshot: Uint8Array): void {
+ require_().loadState(toBuffer(snapshot));
+ },
+ createKeyPackage(): Uint8Array {
+ return fromBuffer(require_().createKeyPackage());
+ },
+ createGroup(groupId: Uint8Array): void {
+ require_().createGroup(toBuffer(groupId));
+ },
+ addMembers(groupId: Uint8Array, keyPackages: Uint8Array[]) {
+ const r = require_().addMembers(
+ toBuffer(groupId),
+ keyPackages.map(toBuffer),
+ );
+ return { commit: fromBuffer(r.commit), welcome: fromBuffer(r.welcome) };
+ },
+ removeMembersByAccounts(
+ groupId: Uint8Array,
+ accountIds: string[],
+ ): Uint8Array {
+ return fromBuffer(
+ require_().removeMembersByAccounts(toBuffer(groupId), accountIds),
+ );
+ },
+ joinFromWelcome(welcomeBytes: Uint8Array): Uint8Array {
+ return fromBuffer(require_().joinFromWelcome(toBuffer(welcomeBytes)));
+ },
+ encryptApp(groupId: Uint8Array, plaintext: Uint8Array): Uint8Array {
+ return fromBuffer(
+ require_().encryptApp(toBuffer(groupId), toBuffer(plaintext)),
+ );
+ },
+ processMessage(groupId: Uint8Array, msgBytes: Uint8Array): ProcessedKind {
+ const r = require_().processMessage(
+ toBuffer(groupId),
+ toBuffer(msgBytes),
+ );
+ if (r.kind === "application" && r.plaintext) {
+ return { kind: "application", plaintext: fromBuffer(r.plaintext) };
+ }
+ if (r.kind === "commitApplied") return { kind: "commitApplied" };
+ if (r.kind === "proposalQueued") return { kind: "proposalQueued" };
+ throw new Error(`[demo-bot/engine] unknown ProcessedKind: ${r.kind}`);
+ },
+ currentEpoch(groupId: Uint8Array): number {
+ return require_().currentEpoch(toBuffer(groupId));
+ },
+ memberCount(groupId: Uint8Array): number {
+ return require_().memberCount(toBuffer(groupId));
+ },
+ };
+}
diff --git a/services/demo-bot/src/index.ts b/services/demo-bot/src/index.ts
new file mode 100644
index 0000000..0fc9957
--- /dev/null
+++ b/services/demo-bot/src/index.ts
@@ -0,0 +1,62 @@
+import { loadConfig } from "./config.js";
+import { createBot, addUserToDemo, verifySlice1 } from "./bot.js";
+
+const USAGE = `demo-bot — headless MLS concierge (tracer)
+
+ pnpm --filter @repo/demo-bot bot whoami
+ Authenticate, print the bot's domain accountId + deviceId.
+
+ pnpm --filter @repo/demo-bot bot add [lobbyName]
+ Ensure the user is in a demo lobby (founding one with them if none exists)
+ via a real MLS Add + Welcome. Default lobby name "Welcome Lobby".
+
+ pnpm --filter @repo/demo-bot bot lobbies
+ List the lobbies this bot has founded (from local state).
+
+ pnpm --filter @repo/demo-bot bot verify
+ Sim-free end-to-end proof: spin up a throwaway KP-publishing user, add it,
+ assert it joins from the bot's Welcome. Exits non-zero on failure.
+
+Env: DEMO_BOT_EMAIL, DEMO_BOT_PASSWORD required (see .env.example).`;
+
+async function main(): Promise {
+ const [cmd, ...args] = process.argv.slice(2);
+ const cfg = loadConfig();
+
+ switch (cmd) {
+ case "whoami": {
+ const bot = await createBot(cfg);
+ console.log(`accountId=${bot.accountId} deviceId=${bot.deviceId}`);
+ break;
+ }
+ case "add": {
+ const [userAccountId, lobbyName] = args;
+ if (!userAccountId)
+ throw new Error("usage: bot add [lobbyName]");
+ const bot = await createBot(cfg);
+ await addUserToDemo(bot, userAccountId, lobbyName ?? "Welcome Lobby");
+ break;
+ }
+ case "lobbies": {
+ const bot = await createBot(cfg);
+ for (const c of bot.store.listChats()) {
+ console.log(
+ `${c.id} ${c.name ?? "(no name)"} ${c.mlsGroupIdB64 ? "linked" : "unlinked"}`,
+ );
+ }
+ break;
+ }
+ case "verify": {
+ const ok = await verifySlice1(cfg);
+ if (!ok) process.exitCode = 1;
+ break;
+ }
+ default:
+ console.log(USAGE);
+ }
+}
+
+main().catch((err) => {
+ console.error(err);
+ process.exit(1);
+});
diff --git a/services/demo-bot/src/rpc.ts b/services/demo-bot/src/rpc.ts
new file mode 100644
index 0000000..4a75f66
--- /dev/null
+++ b/services/demo-bot/src/rpc.ts
@@ -0,0 +1,40 @@
+import { createTRPCClient, httpBatchLink } from "@trpc/client";
+import type { AppRouter } from "@repo/api-server";
+import type { MlsRpc } from "@repo/chat-mls-core/client";
+
+export type TrpcClient = ReturnType;
+
+// Typed tRPC client against the API's /trpc endpoint with the concierge bearer.
+// Same shape as apps/mobile/lib/trpc/client.ts; token is captured for the run
+// (the bot authenticates once at startup).
+export function createTrpc(apiUrl: string, token: string) {
+ return createTRPCClient({
+ links: [
+ httpBatchLink({
+ url: `${apiUrl}/trpc`,
+ headers: () => ({ authorization: `Bearer ${token}` }),
+ }),
+ ],
+ });
+}
+
+// The MlsRpc adapter MlsClient injects — the exact 8-method surface mobile's
+// makeRpc() binds (apps/mobile/lib/chat/mls-auto-publish.ts), pointed at the
+// Node tRPC client instead of the RN one.
+export function makeMlsRpc(trpc: TrpcClient): MlsRpc {
+ return {
+ keysCount: (input) => trpc.mls.keys.count.query(input),
+ keysDeleteAllForDevice: (input) =>
+ trpc.mls.keys.deleteAllForDevice.mutate(input),
+ keysPublish: (input) => trpc.mls.keys.publish.mutate(input),
+ keysFetchForAccounts: (input) =>
+ trpc.mls.keys.fetchForAccounts.query(input),
+ groupsPublishCommit: (input) => trpc.mls.groups.publishCommit.mutate(input),
+ groupsFetchPendingCommits: (input) =>
+ trpc.mls.groups.fetchPendingCommits.query(input),
+ groupsPublishWelcomes: (input) =>
+ trpc.mls.groups.publishWelcomes.mutate(input),
+ groupsFetchPendingWelcomes: () =>
+ trpc.mls.groups.fetchPendingWelcomes.query(),
+ };
+}
diff --git a/services/demo-bot/src/store.ts b/services/demo-bot/src/store.ts
new file mode 100644
index 0000000..c6c8846
--- /dev/null
+++ b/services/demo-bot/src/store.ts
@@ -0,0 +1,212 @@
+import { randomUUID, webcrypto } from "node:crypto";
+import { mkdirSync, readFileSync, writeFileSync, existsSync } from "node:fs";
+import { join } from "node:path";
+
+import type { MlsStoreApi } from "@repo/chat-mls-core/client";
+
+import { newX25519PubRaw } from "./crypto.js";
+
+// File-backed persistence for the tracer bot. One JSON file holds the whole
+// bot state: engine snapshots (per account), the local MLS group registry, the
+// chat mirror, and the bot's stable identity (seed + deviceId). Bytes are
+// base64. Single-writer by construction (one CLI invocation at a time) — the
+// Lambda version swaps this for a Neon table + a per-account advisory lock.
+//
+// Implements MlsStoreApi (what MlsClient injects) plus a few bot-only helpers
+// (identity, chatId→groupId forward lookup) the orchestration needs.
+
+interface GroupRec {
+ groupIdB64: string;
+ chat_id: string | null;
+ last_applied_epoch: number;
+ joined_at: number;
+}
+interface ChatRec {
+ id: string;
+ kind: "direct" | "group";
+ name: string | null;
+ mlsGroupIdB64: string | null;
+}
+interface Persisted {
+ identity?: { seedB64: string; deviceId: string; x25519PubB64: string };
+ snapshots: Record;
+ groups: Record; // keyed by groupId hex
+ chats: Record; // keyed by chatId
+}
+
+function b64(bytes: Uint8Array): string {
+ return Buffer.from(bytes).toString("base64");
+}
+function unb64(s: string): Uint8Array {
+ return new Uint8Array(Buffer.from(s, "base64"));
+}
+function hex(bytes: Uint8Array): string {
+ return Buffer.from(bytes).toString("hex");
+}
+
+export interface BotStore extends MlsStoreApi {
+ getOrCreateIdentity(): {
+ seed: Uint8Array;
+ deviceId: string;
+ x25519Pub: Uint8Array;
+ };
+ /** Forward lookup the MlsStoreApi doesn't expose: chatId → GroupId bytes. */
+ getChatGroupId(chatId: string): Uint8Array | null;
+ listChats(): ChatRec[];
+}
+
+export function createFileStore(stateDir: string): BotStore {
+ const file = join(stateDir, "state.json");
+
+ function load(): Persisted {
+ if (!existsSync(file)) {
+ return { snapshots: {}, groups: {}, chats: {} };
+ }
+ return JSON.parse(readFileSync(file, "utf8")) as Persisted;
+ }
+ function save(state: Persisted): void {
+ mkdirSync(stateDir, { recursive: true });
+ writeFileSync(file, JSON.stringify(state, null, 2), "utf8");
+ }
+
+ return {
+ getOrCreateIdentity() {
+ const state = load();
+ if (state.identity) {
+ return {
+ seed: unb64(state.identity.seedB64),
+ deviceId: state.identity.deviceId,
+ x25519Pub: unb64(state.identity.x25519PubB64),
+ };
+ }
+ const seed = new Uint8Array(32);
+ webcrypto.getRandomValues(seed);
+ const deviceId = randomUUID();
+ const x25519Pub = newX25519PubRaw();
+ state.identity = {
+ seedB64: b64(seed),
+ deviceId,
+ x25519PubB64: b64(x25519Pub),
+ };
+ save(state);
+ return { seed, deviceId, x25519Pub };
+ },
+
+ getChatGroupId(chatId) {
+ const rec = load().chats[chatId];
+ return rec?.mlsGroupIdB64 ? unb64(rec.mlsGroupIdB64) : null;
+ },
+
+ listChats() {
+ return Object.values(load().chats);
+ },
+
+ // ── MlsStoreApi ──────────────────────────────────────────────────────────
+ async loadEngineSnapshot(accountId) {
+ const row = load().snapshots[accountId];
+ return row
+ ? { snapshot: unb64(row.snapshotB64), updated_at: row.updated_at }
+ : null;
+ },
+ async saveEngineSnapshot(accountId, snapshot) {
+ const state = load();
+ state.snapshots[accountId] = {
+ snapshotB64: b64(snapshot),
+ updated_at: Date.now(),
+ };
+ save(state);
+ },
+ async clearEngineSnapshot(accountId) {
+ const state = load();
+ delete state.snapshots[accountId];
+ save(state);
+ },
+
+ async upsertGroup(input) {
+ const state = load();
+ const key = hex(input.groupId);
+ const existing = state.groups[key];
+ // Mirror mls-store.ts ON CONFLICT: keep last_applied_epoch, COALESCE chat_id.
+ state.groups[key] = {
+ groupIdB64: b64(input.groupId),
+ chat_id: input.chatId ?? existing?.chat_id ?? null,
+ last_applied_epoch:
+ existing?.last_applied_epoch ?? input.initialEpoch ?? 0,
+ joined_at: existing?.joined_at ?? Date.now(),
+ };
+ save(state);
+ },
+ async setLastAppliedEpoch(groupId, epoch) {
+ const state = load();
+ const rec = state.groups[hex(groupId)];
+ if (rec) {
+ rec.last_applied_epoch = epoch;
+ save(state);
+ }
+ },
+ async getGroup(groupId) {
+ const rec = load().groups[hex(groupId)];
+ if (!rec) return null;
+ return {
+ group_id: unb64(rec.groupIdB64),
+ chat_id: rec.chat_id,
+ last_applied_epoch: rec.last_applied_epoch,
+ joined_at: rec.joined_at,
+ };
+ },
+ async listGroups() {
+ return Object.values(load().groups).map((r) => ({
+ groupId: unb64(r.groupIdB64),
+ chatId: r.chat_id,
+ lastAppliedEpoch: r.last_applied_epoch,
+ }));
+ },
+ async clearAllGroups() {
+ const state = load();
+ state.groups = {};
+ save(state);
+ },
+
+ async setChatMlsGroupId(chatId, groupId) {
+ const state = load();
+ const rec = state.chats[chatId];
+ if (!rec) return { updates: 0 };
+ rec.mlsGroupIdB64 = b64(groupId);
+ save(state);
+ return { updates: 1 };
+ },
+ async ensureChatForDebug(chatId, kind = "group") {
+ const state = load();
+ if (state.chats[chatId]) return { created: false };
+ state.chats[chatId] = {
+ id: chatId,
+ kind,
+ name: null,
+ mlsGroupIdB64: null,
+ };
+ save(state);
+ return { created: true };
+ },
+ async upsertChat(input) {
+ const state = load();
+ const existing = state.chats[input.id];
+ state.chats[input.id] = {
+ id: input.id,
+ kind: input.kind,
+ name: input.name ?? existing?.name ?? null,
+ // COALESCE: don't drop an existing link if this upsert omits it.
+ mlsGroupIdB64: input.mlsGroupId
+ ? b64(input.mlsGroupId)
+ : (existing?.mlsGroupIdB64 ?? null),
+ };
+ save(state);
+ },
+ async chatIdByGroupId(groupId) {
+ const target = b64(groupId);
+ const hit = Object.values(load().chats).find(
+ (c) => c.mlsGroupIdB64 === target,
+ );
+ return hit?.id ?? null;
+ },
+ };
+}
diff --git a/services/demo-bot/tsconfig.json b/services/demo-bot/tsconfig.json
new file mode 100644
index 0000000..332fb48
--- /dev/null
+++ b/services/demo-bot/tsconfig.json
@@ -0,0 +1,15 @@
+{
+ "compilerOptions": {
+ "target": "ES2022",
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "lib": ["ES2022"],
+ "types": ["node"],
+ "strict": true,
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "resolveJsonModule": true,
+ "noEmit": true
+ },
+ "include": ["src"]
+}