Compare commits

...

24 Commits

Author SHA1 Message Date
Anselm Eickhoff
61b346a948 Merge pull request #691 from gardencmp/changeset-release/main
Version Packages
2024-11-05 09:38:34 +00:00
github-actions[bot]
c2dfe6a0dd Version Packages 2024-11-05 09:35:46 +00:00
Anselm Eickhoff
81e8910519 Merge pull request #676 from gardencmp/benjamin-jazz-452
Store clerk authentication locally
2024-11-05 09:34:29 +00:00
Benjamin S. Leveritt
cce679b031 Split changesets 2024-11-05 09:32:29 +00:00
Anselm Eickhoff
c2dbf45f26 Merge pull request #689 from gardencmp/changeset-release/main 2024-11-05 09:13:32 +00:00
github-actions[bot]
04d3a8c677 Version Packages 2024-11-05 09:05:45 +00:00
Anselm Eickhoff
91019f3f85 Merge pull request #687 from gardencmp/optimize-account-load-2
perf: optimize _loadedAs in CoList and CoValueBase
2024-11-05 09:04:20 +00:00
Benjamin S. Leveritt
06278c3d97 Update saveCredentials mock 2024-11-05 06:53:32 +00:00
Guido D'Orsi
36273b3114 chore: changeset 2024-11-04 23:09:34 +01:00
Guido D'Orsi
51a0a9f23f perf: optimize _loadedAs in CoList and CoValueBase 2024-11-04 23:07:51 +01:00
Anselm Eickhoff
fc24a65264 Merge pull request #685 from gardencmp/changeset-release/main
Version Packages
2024-11-04 20:10:10 +00:00
github-actions[bot]
fa0b9003dc Version Packages 2024-11-04 20:05:27 +00:00
Anselm Eickhoff
8a0da655e8 Merge pull request #686 from gardencmp/optimize-account-loadas
perf: cache the account refs resolution
2024-11-04 20:04:15 +00:00
Benjamin S. Leveritt
221c58f1f7 Add changeset 2024-11-04 18:51:03 +00:00
Benjamin S. Leveritt
ebca75bf70 Add check for existance and await 2024-11-04 18:43:01 +00:00
Benjamin S. Leveritt
b5e516f974 Add tests
Particularly covering log out and checking for storing creds
2024-11-04 17:37:47 +00:00
Benjamin S. Leveritt
8fc5a49ca8 Refactor setItem into fn 2024-11-04 17:37:40 +00:00
Benjamin S. Leveritt
00054aa9a5 Export Credential type from jazz-tools 2024-11-04 17:11:05 +00:00
Benjamin S. Leveritt
6f3c98f704 Make saveCredentials optional 2024-11-04 17:00:28 +00:00
Benjamin S. Leveritt
47ec0cd8fe Rename type 2024-11-04 16:53:42 +00:00
Benjamin S. Leveritt
685031c39c Remove check for user before passing to BrowserClerkAuth 2024-11-04 16:53:22 +00:00
Benjamin S. Leveritt
e4fd89dbbb Add saveCredentials to existing Clerk accounts authentications 2024-11-04 16:32:37 +00:00
Benjamin S. Leveritt
57deec451a Check for local credentials before Clerk checks 2024-11-04 10:47:42 +00:00
Benjamin S. Leveritt
bc8ea23e6d Store clerk authentication locally
Introduce LocallyStoredCredentials for storing and validating local storage values
2024-11-04 09:39:46 +00:00
57 changed files with 866 additions and 208 deletions

View File

@@ -1,5 +0,0 @@
---
"jazz-tools": patch
---
Add a cache layer on the loadedAs account reads

View File

@@ -1,5 +0,0 @@
---
"cojson-transport-ws": patch
---
Add the onClose handler and improve the closing operation

View File

@@ -1,5 +0,0 @@
---
"jazz-browser": patch
---
Improve the WebSocket reconnect logic

View File

@@ -1,5 +1,29 @@
# @jazz-e2e/binarycostream
## 0.0.93
### Patch Changes
- Updated dependencies [cce679b]
- jazz-tools@0.8.15
- jazz-react@0.8.15
## 0.0.92
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
- jazz-react@0.8.14
## 0.0.91
### Patch Changes
- Updated dependencies [fd011d7]
- jazz-tools@0.8.13
- jazz-react@0.8.13
## 0.0.90
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "@jazz-e2e/binarycostream",
"private": true,
"version": "0.0.90",
"version": "0.0.93",
"type": "module",
"scripts": {
"dev": "vite",
@@ -17,8 +17,8 @@
"cojson": "workspace:0.8.12",
"hash-slash": "workspace:0.2.1",
"is-ci": "^3.0.1",
"jazz-react": "workspace:0.8.12",
"jazz-tools": "workspace:0.8.12",
"jazz-react": "workspace:0.8.15",
"jazz-tools": "workspace:0.8.15",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},

View File

@@ -1,5 +1,29 @@
# @jazz-e2e/covalues
## 0.0.92
### Patch Changes
- Updated dependencies [cce679b]
- jazz-tools@0.8.15
- jazz-react@0.8.15
## 0.0.91
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
- jazz-react@0.8.14
## 0.0.90
### Patch Changes
- Updated dependencies [fd011d7]
- jazz-tools@0.8.13
- jazz-react@0.8.13
## 0.0.89
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "@jazz-e2e/covalues",
"private": true,
"version": "0.0.89",
"version": "0.0.92",
"type": "module",
"scripts": {
"dev": "vite",

View File

@@ -1,5 +1,32 @@
# jazz-example-book-shelf
## 0.1.8
### Patch Changes
- Updated dependencies [cce679b]
- jazz-tools@0.8.15
- jazz-browser-media-images@0.8.15
- jazz-react@0.8.15
## 0.1.7
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
- jazz-browser-media-images@0.8.14
- jazz-react@0.8.14
## 0.1.6
### Patch Changes
- Updated dependencies [fd011d7]
- jazz-tools@0.8.13
- jazz-browser-media-images@0.8.13
- jazz-react@0.8.13
## 0.1.5
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "jazz-example-book-shelf",
"version": "0.1.5",
"version": "0.1.8",
"private": true,
"scripts": {
"dev": "next dev",
@@ -11,9 +11,9 @@
},
"dependencies": {
"clsx": "^2.0.0",
"jazz-browser-media-images": "workspace:0.8.12",
"jazz-react": "workspace:0.8.12",
"jazz-tools": "workspace:0.8.12",
"jazz-browser-media-images": "workspace:0.8.15",
"jazz-react": "workspace:0.8.15",
"jazz-tools": "workspace:0.8.15",
"next": "14.2.5",
"react": "^18.2.0",
"react-dom": "^18.2.0"

View File

@@ -1,5 +1,33 @@
# jazz-example-chat
## 0.0.92
### Patch Changes
- Updated dependencies [cce679b]
- Updated dependencies [221c58f]
- jazz-tools@0.8.15
- jazz-react-auth-clerk@0.8.15
- jazz-react@0.8.15
## 0.0.91
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
- jazz-react@0.8.14
- jazz-react-auth-clerk@0.8.14
## 0.0.90
### Patch Changes
- Updated dependencies [fd011d7]
- jazz-tools@0.8.13
- jazz-react@0.8.13
- jazz-react-auth-clerk@0.8.13
## 0.0.89
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-example-chat-clerk",
"private": true,
"version": "0.0.89",
"version": "0.0.92",
"type": "module",
"scripts": {
"dev": "vite",
@@ -23,9 +23,9 @@
"clsx": "^2.0.0",
"cojson": "workspace:0.8.12",
"hash-slash": "workspace:0.2.1",
"jazz-react": "workspace:0.8.12",
"jazz-react-auth-clerk": "workspace:0.8.12",
"jazz-tools": "workspace:0.8.12",
"jazz-react": "workspace:0.8.15",
"jazz-react-auth-clerk": "workspace:0.8.15",
"jazz-tools": "workspace:0.8.15",
"lucide-react": "^0.274.0",
"qrcode": "^1.5.3",
"react": "^18.2.0",

View File

@@ -1,5 +1,36 @@
# chat-rn-clerk
## 1.0.8
### Patch Changes
- Updated dependencies [cce679b]
- Updated dependencies [221c58f]
- jazz-tools@0.8.15
- jazz-react-auth-clerk@0.8.15
- jazz-react-native@0.8.15
- jazz-react-native-media-images@0.8.11
## 1.0.7
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
- jazz-react-auth-clerk@0.8.14
- jazz-react-native@0.8.14
- jazz-react-native-media-images@0.8.10
## 1.0.6
### Patch Changes
- Updated dependencies [fd011d7]
- jazz-tools@0.8.13
- jazz-react-auth-clerk@0.8.13
- jazz-react-native@0.8.13
- jazz-react-native-media-images@0.8.9
## 1.0.5
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "chat-rn-clerk",
"main": "index.js",
"version": "1.0.5",
"version": "1.0.8",
"scripts": {
"build": "expo export -p ios",
"start": "expo start",

View File

@@ -1,5 +1,29 @@
# chat-rn
## 1.0.10
### Patch Changes
- Updated dependencies [cce679b]
- jazz-tools@0.8.15
- jazz-react-native@0.8.15
## 1.0.9
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
- jazz-react-native@0.8.14
## 1.0.8
### Patch Changes
- Updated dependencies [fd011d7]
- jazz-tools@0.8.13
- jazz-react-native@0.8.13
## 1.0.7
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "chat-rn",
"version": "1.0.7",
"version": "1.0.10",
"main": "index.js",
"scripts": {
"build": "expo export -p ios",

View File

@@ -1,5 +1,29 @@
# jazz-example-chat
## 0.0.94
### Patch Changes
- Updated dependencies [cce679b]
- jazz-tools@0.8.15
- jazz-react@0.8.15
## 0.0.93
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
- jazz-react@0.8.14
## 0.0.92
### Patch Changes
- Updated dependencies [fd011d7]
- jazz-tools@0.8.13
- jazz-react@0.8.13
## 0.0.91
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-example-chat",
"private": true,
"version": "0.0.91",
"version": "0.0.94",
"type": "module",
"scripts": {
"dev": "vite",
@@ -24,8 +24,8 @@
"clsx": "^2.0.0",
"cojson": "workspace:0.8.12",
"hash-slash": "workspace:0.2.1",
"jazz-react": "workspace:0.8.12",
"jazz-tools": "workspace:0.8.12",
"jazz-react": "workspace:0.8.15",
"jazz-tools": "workspace:0.8.15",
"lucide-react": "^0.274.0",
"qrcode": "^1.5.3",
"react": "^18.2.0",

View File

@@ -1,5 +1,12 @@
# jazz-example-inspector
## 0.0.68
### Patch Changes
- Updated dependencies [e0dd006]
- cojson-transport-ws@0.8.13
## 0.0.67
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-inspector",
"private": true,
"version": "0.0.67",
"version": "0.0.68",
"type": "module",
"scripts": {
"dev": "vite",
@@ -16,7 +16,7 @@
"class-variance-authority": "^0.7.0",
"clsx": "^2.0.0",
"cojson": "workspace:0.8.12",
"cojson-transport-ws": "workspace:0.8.12",
"cojson-transport-ws": "workspace:0.8.13",
"hash-slash": "workspace:0.2.1",
"lucide-react": "^0.274.0",
"qrcode": "^1.5.3",

View File

@@ -1,5 +1,29 @@
# jazz-example-musicplayer
## 0.0.14
### Patch Changes
- Updated dependencies [cce679b]
- jazz-tools@0.8.15
- jazz-react@0.8.15
## 0.0.13
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
- jazz-react@0.8.14
## 0.0.12
### Patch Changes
- Updated dependencies [fd011d7]
- jazz-tools@0.8.13
- jazz-react@0.8.13
## 0.0.11
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-example-music-player",
"private": true,
"version": "0.0.11",
"version": "0.0.14",
"type": "module",
"scripts": {
"dev": "vite",
@@ -22,8 +22,8 @@
"@radix-ui/react-toast": "^1.1.4",
"class-variance-authority": "^0.7.0",
"clsx": "^2.0.0",
"jazz-react": "workspace:0.8.12",
"jazz-tools": "workspace:0.8.12",
"jazz-react": "workspace:0.8.15",
"jazz-tools": "workspace:0.8.15",
"lucide-react": "^0.274.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",

View File

@@ -1,5 +1,29 @@
# jazz-password-manager
## 0.0.13
### Patch Changes
- Updated dependencies [cce679b]
- jazz-tools@0.8.15
- jazz-react@0.8.15
## 0.0.12
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
- jazz-react@0.8.14
## 0.0.11
### Patch Changes
- Updated dependencies [fd011d7]
- jazz-tools@0.8.13
- jazz-react@0.8.13
## 0.0.10
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-password-manager",
"private": true,
"version": "0.0.10",
"version": "0.0.13",
"type": "module",
"scripts": {
"dev": "vite",
@@ -11,8 +11,8 @@
"clean-install": "rm -rf node_modules pnpm-lock.yaml && pnpm install"
},
"dependencies": {
"jazz-react": "workspace:0.8.12",
"jazz-tools": "workspace:0.8.12",
"jazz-react": "workspace:0.8.15",
"jazz-tools": "workspace:0.8.15",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-hook-form": "^7.41.5",

View File

@@ -1,5 +1,32 @@
# jazz-example-pets
## 0.0.111
### Patch Changes
- Updated dependencies [cce679b]
- jazz-tools@0.8.15
- jazz-browser-media-images@0.8.15
- jazz-react@0.8.15
## 0.0.110
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
- jazz-browser-media-images@0.8.14
- jazz-react@0.8.14
## 0.0.109
### Patch Changes
- Updated dependencies [fd011d7]
- jazz-tools@0.8.13
- jazz-browser-media-images@0.8.13
- jazz-react@0.8.13
## 0.0.108
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-example-pets",
"private": true,
"version": "0.0.108",
"version": "0.0.111",
"type": "module",
"scripts": {
"dev": "vite",
@@ -23,9 +23,9 @@
"@radix-ui/react-toast": "^1.1.4",
"class-variance-authority": "^0.7.0",
"clsx": "^2.0.0",
"jazz-browser-media-images": "workspace:0.8.12",
"jazz-react": "workspace:0.8.12",
"jazz-tools": "workspace:0.8.12",
"jazz-browser-media-images": "workspace:0.8.15",
"jazz-react": "workspace:0.8.15",
"jazz-tools": "workspace:0.8.15",
"lucide-react": "^0.274.0",
"qrcode": "^1.5.3",
"react": "^18.2.0",
@@ -50,7 +50,7 @@
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.3",
"is-ci": "^3.0.1",
"jazz-run": "workspace:0.8.12",
"jazz-run": "workspace:0.8.15",
"postcss": "^8.4.27",
"tailwindcss": "3.3.2",
"typescript": "^5.3.3",

View File

@@ -1,5 +1,29 @@
# jazz-example-todo
## 0.0.110
### Patch Changes
- Updated dependencies [cce679b]
- jazz-tools@0.8.15
- jazz-react@0.8.15
## 0.0.109
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
- jazz-react@0.8.14
## 0.0.108
### Patch Changes
- Updated dependencies [fd011d7]
- jazz-tools@0.8.13
- jazz-react@0.8.13
## 0.0.107
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-example-todo",
"private": true,
"version": "0.0.107",
"version": "0.0.110",
"type": "module",
"scripts": {
"dev": "vite",
@@ -20,8 +20,8 @@
"@radix-ui/react-toast": "^1.1.4",
"class-variance-authority": "^0.7.0",
"clsx": "^2.0.0",
"jazz-react": "workspace:0.8.12",
"jazz-tools": "workspace:0.8.12",
"jazz-react": "workspace:0.8.15",
"jazz-tools": "workspace:0.8.15",
"lucide-react": "^0.274.0",
"qrcode": "^1.5.3",
"react": "^18.2.0",

View File

@@ -1,5 +1,11 @@
# cojson-transport-nodejs-ws
## 0.8.13
### Patch Changes
- e0dd006: Add the onClose handler and improve the closing operation
## 0.8.12
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "cojson-transport-ws",
"type": "module",
"version": "0.8.12",
"version": "0.8.13",
"main": "dist/index.js",
"types": "src/index.ts",
"license": "MIT",

View File

@@ -1,5 +1,31 @@
# jazz-browser-media-images
## 0.8.15
### Patch Changes
- 221c58f: Store clerk credentials in localStorage, and use if available
- Updated dependencies [cce679b]
- jazz-tools@0.8.15
- jazz-browser@0.8.15
## 0.8.14
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
- jazz-browser@0.8.14
## 0.8.13
### Patch Changes
- Updated dependencies [fd011d7]
- Updated dependencies [e0dd006]
- jazz-tools@0.8.13
- jazz-browser@0.8.13
## 0.8.12
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "jazz-browser-auth-clerk",
"version": "0.8.12",
"version": "0.8.15",
"type": "module",
"main": "dist/index.js",
"types": "src/index.ts",
@@ -11,14 +11,16 @@
},
"dependencies": {
"cojson": "workspace:0.8.12",
"jazz-browser": "workspace:0.8.12",
"jazz-tools": "workspace:0.8.12"
"jazz-browser": "workspace:0.8.15",
"jazz-tools": "workspace:0.8.15"
},
"scripts": {
"lint": "eslint . --ext ts,tsx",
"format": "prettier --write './src/**/*.{ts,tsx}'",
"build": "npm run lint && rm -rf ./dist && tsc --sourceMap --outDir dist",
"prepublishOnly": "npm run build"
"prepublishOnly": "npm run build",
"test": "vitest --run --root ../../ --project jazz-browser-auth-clerk",
"test:watch": "vitest --watch --root ../../ --project jazz-browser-auth-clerk"
},
"devDependencies": {
"typescript": "^5.3.3"

View File

@@ -1,5 +1,7 @@
import { Account, AuthMethod, AuthResult, ID } from "jazz-tools";
import { AgentSecret } from "cojson";
import { Account, AuthMethod, AuthResult, Credentials, ID } from "jazz-tools";
const localStorageKey = "jazz-clerk-auth";
export type MinimalClerkClient = {
user: {
@@ -16,6 +18,16 @@ export type MinimalClerkClient = {
signOut: () => Promise<void>;
}
function saveCredentialsToLocalStorage(credentials: Credentials) {
localStorage.setItem(
localStorageKey,
JSON.stringify({
accountID: credentials.accountID,
secret: credentials.secret,
}),
);
}
export class BrowserClerkAuth implements AuthMethod {
constructor(
public driver: BrowserClerkAuth.Driver,
@@ -23,7 +35,34 @@ export class BrowserClerkAuth implements AuthMethod {
) {}
async start(): Promise<AuthResult> {
// Check local storage for credentials
const locallyStoredCredentials = localStorage.getItem(localStorageKey);
if (locallyStoredCredentials) {
try {
const credentials = JSON.parse(
locallyStoredCredentials,
) as Credentials;
return {
type: "existing",
credentials,
saveCredentials: async () => {}, // No need to save credentials when recovering from local storage
onSuccess: () => {},
onError: (error: string | Error) => {
this.driver.onError(error);
},
logOut: () => {
localStorage.removeItem(localStorageKey);
void this.clerkClient.signOut();
},
};
} catch (e) {
console.error("Error parsing local storage credentials", e);
}
}
if (this.clerkClient.user) {
// Check clerk user metadata for credentials
const storedCredentials = this.clerkClient.user.unsafeMetadata;
if (storedCredentials.jazzAccountID) {
if (!storedCredentials.jazzAccountSecret) {
@@ -36,6 +75,15 @@ export class BrowserClerkAuth implements AuthMethod {
storedCredentials.jazzAccountID as ID<Account>,
secret: storedCredentials.jazzAccountSecret as AgentSecret,
},
saveCredentials: async ({
accountID,
secret,
}: Credentials) => {
saveCredentialsToLocalStorage({
accountID,
secret,
});
},
onSuccess: () => {},
onError: (error: string | Error) => {
this.driver.onError(error);
@@ -45,6 +93,7 @@ export class BrowserClerkAuth implements AuthMethod {
},
};
} else {
// No credentials found, so we need to create new credentials
return {
type: "new",
creationProps: {
@@ -53,14 +102,18 @@ export class BrowserClerkAuth implements AuthMethod {
this.clerkClient.user.username ||
this.clerkClient.user.id,
},
saveCredentials: async (credentials: {
accountID: ID<Account>;
secret: AgentSecret;
}) => {
saveCredentials: async ({
accountID,
secret,
}: Credentials) => {
saveCredentialsToLocalStorage({
accountID,
secret,
});
await this.clerkClient.user?.update({
unsafeMetadata: {
jazzAccountID: credentials.accountID,
jazzAccountSecret: credentials.secret,
jazzAccountID: accountID,
jazzAccountSecret: secret,
},
});
},
@@ -74,6 +127,7 @@ export class BrowserClerkAuth implements AuthMethod {
};
}
} else {
// Clerk user not found, so we can't authenticate
throw new Error("Not signed in");
}
}

View File

@@ -0,0 +1,119 @@
import { AgentSecret } from "cojson";
import { Account, ID } from "jazz-tools";
import { beforeEach, describe, expect, it, vi } from "vitest";
import { BrowserClerkAuth, MinimalClerkClient } from "../index.js";
describe("BrowserClerkAuth", () => {
let mockLocalStorage: { [key: string]: string };
let mockClerkClient: MinimalClerkClient;
let mockDriver: BrowserClerkAuth.Driver;
beforeEach(() => {
// Mock localStorage
mockLocalStorage = {};
global.localStorage = {
getItem: vi.fn((key: string) => mockLocalStorage[key] || null),
setItem: vi.fn((key: string, value: string) => {
mockLocalStorage[key] = value;
}),
removeItem: vi.fn((key: string) => {
delete mockLocalStorage[key];
}),
clear: vi.fn(),
length: 0,
key: vi.fn(),
};
// Mock Clerk client
mockClerkClient = {
user: {
unsafeMetadata: {},
fullName: "Test User",
username: "testuser",
id: "test-id",
update: vi.fn(),
},
signOut: vi.fn(),
};
// Mock driver
mockDriver = {
onError: vi.fn(),
};
});
describe("clerk credentials in localStorage", () => {
it("should get credentials from localStorage when clerk user is not signed in", async () => {
mockLocalStorage["jazz-clerk-auth"] = JSON.stringify({
accountID: "test-account-id",
accountSecret: "test-secret",
});
const auth = new BrowserClerkAuth(mockDriver, {
...mockClerkClient,
user: null,
});
const result = await auth.start();
expect(result.type).toBe("existing");
});
});
describe("clerk credentials not in localStorage", () => {
it("should return new credentials when clerk user signs up", async () => {
const auth = new BrowserClerkAuth(mockDriver, mockClerkClient);
const result = await auth.start();
expect(result.type).toBe("new");
});
it("should return existing credentials when clerk user is signed in", async () => {
mockClerkClient = {
user: {
unsafeMetadata: {
jazzAccountID: "test-account-id",
jazzAccountSecret: "test-secret",
},
fullName: "Test User",
username: "testuser",
id: "test-id",
update: vi.fn(),
},
signOut: vi.fn(),
};
const auth = new BrowserClerkAuth(mockDriver, mockClerkClient);
const result = await auth.start();
expect(result.type).toBe("existing");
});
it("should throw error when not signed in", async () => {
const auth = new BrowserClerkAuth(mockDriver, {
...mockClerkClient,
user: null,
});
await expect(auth.start()).rejects.toThrow("Not signed in");
});
it("should save credentials to localStorage", async () => {
const auth = new BrowserClerkAuth(mockDriver, mockClerkClient);
const result = await auth.start();
if (result.saveCredentials) {
await result.saveCredentials({
accountID: "test-account-id" as ID<Account>,
secret: "test-secret" as AgentSecret,
});
}
expect(mockLocalStorage["jazz-clerk-auth"]).toBeDefined();
});
it("should call clerk signOut when logging out", async () => {
const auth = new BrowserClerkAuth(mockDriver, mockClerkClient);
const result = await auth.start();
result.logOut();
expect(mockClerkClient.signOut).toHaveBeenCalled();
});
});
});

View File

@@ -1,5 +1,30 @@
# jazz-browser-media-images
## 0.8.15
### Patch Changes
- Updated dependencies [cce679b]
- jazz-tools@0.8.15
- jazz-browser@0.8.15
## 0.8.14
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
- jazz-browser@0.8.14
## 0.8.13
### Patch Changes
- Updated dependencies [fd011d7]
- Updated dependencies [e0dd006]
- jazz-tools@0.8.13
- jazz-browser@0.8.13
## 0.8.12
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "jazz-browser-media-images",
"version": "0.8.12",
"version": "0.8.15",
"type": "module",
"main": "dist/index.js",
"types": "src/index.ts",
@@ -8,8 +8,8 @@
"dependencies": {
"@types/image-blob-reduce": "^4.1.1",
"image-blob-reduce": "^4.1.0",
"jazz-browser": "workspace:0.8.12",
"jazz-tools": "workspace:0.8.12",
"jazz-browser": "workspace:0.8.15",
"jazz-tools": "workspace:0.8.15",
"pica": "^9.0.1",
"typescript": "^5.3.3"
},

View File

@@ -1,5 +1,29 @@
# jazz-browser
## 0.8.15
### Patch Changes
- Updated dependencies [cce679b]
- jazz-tools@0.8.15
## 0.8.14
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
## 0.8.13
### Patch Changes
- e0dd006: Improve the WebSocket reconnect logic
- Updated dependencies [fd011d7]
- Updated dependencies [e0dd006]
- jazz-tools@0.8.13
- cojson-transport-ws@0.8.13
## 0.8.12
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "jazz-browser",
"version": "0.8.12",
"version": "0.8.15",
"type": "module",
"main": "dist/index.js",
"types": "src/index.ts",
@@ -9,8 +9,8 @@
"@scure/bip39": "^1.3.0",
"cojson": "workspace:0.8.12",
"cojson-storage-indexeddb": "workspace:0.8.12",
"cojson-transport-ws": "workspace:0.8.12",
"jazz-tools": "workspace:0.8.12",
"cojson-transport-ws": "workspace:0.8.13",
"jazz-tools": "workspace:0.8.15",
"typescript": "^5.3.3"
},
"scripts": {

View File

@@ -1,5 +1,28 @@
# jazz-autosub
## 0.8.15
### Patch Changes
- Updated dependencies [cce679b]
- jazz-tools@0.8.15
## 0.8.14
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
## 0.8.13
### Patch Changes
- Updated dependencies [fd011d7]
- Updated dependencies [e0dd006]
- jazz-tools@0.8.13
- cojson-transport-ws@0.8.13
## 0.8.12
### Patch Changes

View File

@@ -5,11 +5,11 @@
"types": "src/index.ts",
"type": "module",
"license": "MIT",
"version": "0.8.12",
"version": "0.8.15",
"dependencies": {
"cojson": "workspace:0.8.12",
"cojson-transport-ws": "workspace:0.8.12",
"jazz-tools": "workspace:0.8.12",
"cojson-transport-ws": "workspace:0.8.13",
"jazz-tools": "workspace:0.8.15",
"ws": "^8.14.2"
},
"devDependencies": {

View File

@@ -1,5 +1,34 @@
# jazz-browser-media-images
## 0.8.15
### Patch Changes
- 221c58f: Store clerk credentials in localStorage, and use if available
- Updated dependencies [cce679b]
- Updated dependencies [221c58f]
- jazz-tools@0.8.15
- jazz-browser-auth-clerk@0.8.15
- jazz-react@0.8.15
## 0.8.14
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
- jazz-browser-auth-clerk@0.8.14
- jazz-react@0.8.14
## 0.8.13
### Patch Changes
- Updated dependencies [fd011d7]
- jazz-tools@0.8.13
- jazz-browser-auth-clerk@0.8.13
- jazz-react@0.8.13
## 0.8.12
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "jazz-react-auth-clerk",
"version": "0.8.12",
"version": "0.8.15",
"type": "module",
"main": "dist/index.js",
"types": "src/index.tsx",
@@ -11,9 +11,9 @@
},
"dependencies": {
"cojson": "workspace:0.8.12",
"jazz-browser-auth-clerk": "workspace:0.8.12",
"jazz-react": "workspace:0.8.12",
"jazz-tools": "workspace:0.8.12"
"jazz-browser-auth-clerk": "workspace:0.8.15",
"jazz-react": "workspace:0.8.15",
"jazz-tools": "workspace:0.8.15"
},
"peerDependencies": {
"react": "^18.2.0"

View File

@@ -7,22 +7,18 @@ export function useJazzClerkAuth(clerk: MinimalClerkClient & {
const [state, setState] = useState<{ errors: string[] }>({ errors: [] });
const authMethod = useMemo(() => {
if (clerk.user) {
return new BrowserClerkAuth(
{
onError: (error) => {
void clerk.signOut();
setState((state) => ({
...state,
errors: [...state.errors, error.toString()],
}));
},
return new BrowserClerkAuth(
{
onError: (error) => {
void clerk.signOut();
setState((state) => ({
...state,
errors: [...state.errors, error.toString()],
}));
},
clerk,
);
} else {
return undefined;
}
},
clerk,
);
}, [clerk.user]);
return [authMethod, state] as const;

View File

@@ -1,5 +1,26 @@
# jazz-browser-media-images
## 0.8.11
### Patch Changes
- Updated dependencies [cce679b]
- jazz-tools@0.8.15
## 0.8.10
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
## 0.8.9
### Patch Changes
- Updated dependencies [fd011d7]
- jazz-tools@0.8.13
## 0.8.8
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "jazz-react-native-media-images",
"version": "0.8.8",
"version": "0.8.11",
"type": "module",
"main": "dist/index.js",
"types": "src/index.ts",

View File

@@ -1,5 +1,28 @@
# jazz-browser
## 0.8.15
### Patch Changes
- Updated dependencies [cce679b]
- jazz-tools@0.8.15
## 0.8.14
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
## 0.8.13
### Patch Changes
- Updated dependencies [fd011d7]
- Updated dependencies [e0dd006]
- jazz-tools@0.8.13
- cojson-transport-ws@0.8.13
## 0.8.12
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "jazz-react-native",
"version": "0.8.12",
"version": "0.8.15",
"type": "module",
"main": "./dist/index.js",
"module": "./dist/index.js",

View File

@@ -1,5 +1,30 @@
# jazz-react
## 0.8.15
### Patch Changes
- Updated dependencies [cce679b]
- jazz-tools@0.8.15
- jazz-browser@0.8.15
## 0.8.14
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
- jazz-browser@0.8.14
## 0.8.13
### Patch Changes
- Updated dependencies [fd011d7]
- Updated dependencies [e0dd006]
- jazz-tools@0.8.13
- jazz-browser@0.8.13
## 0.8.12
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "jazz-react",
"version": "0.8.12",
"version": "0.8.15",
"type": "module",
"main": "dist/index.js",
"types": "src/index.ts",
@@ -8,8 +8,8 @@
"dependencies": {
"@scure/bip39": "^1.3.0",
"cojson": "workspace:0.8.12",
"jazz-browser": "workspace:0.8.12",
"jazz-tools": "workspace:0.8.12",
"jazz-browser": "workspace:0.8.15",
"jazz-tools": "workspace:0.8.15",
"typescript": "^5.3.3"
},
"devDependencies": {

View File

@@ -1,5 +1,28 @@
# jazz-run
## 0.8.15
### Patch Changes
- Updated dependencies [cce679b]
- jazz-tools@0.8.15
## 0.8.14
### Patch Changes
- Updated dependencies [36273b3]
- jazz-tools@0.8.14
## 0.8.13
### Patch Changes
- Updated dependencies [fd011d7]
- Updated dependencies [e0dd006]
- jazz-tools@0.8.13
- cojson-transport-ws@0.8.13
## 0.8.12
### Patch Changes

View File

@@ -3,7 +3,7 @@
"bin": "./dist/index.js",
"type": "module",
"license": "MIT",
"version": "0.8.12",
"version": "0.8.15",
"scripts": {
"lint": "eslint . --ext ts,tsx",
"format": "prettier --write './src/**/*.{ts,tsx}'",
@@ -19,9 +19,9 @@
"@effect/typeclass": "^0.25.5",
"cojson": "workspace:0.8.12",
"cojson-storage-sqlite": "workspace:0.8.12",
"cojson-transport-ws": "workspace:0.8.12",
"cojson-transport-ws": "workspace:0.8.13",
"effect": "^3.6.5",
"jazz-tools": "workspace:0.8.12",
"jazz-tools": "workspace:0.8.15",
"ws": "^8.14.2"
},
"devDependencies": {

View File

@@ -1,5 +1,23 @@
# jazz-tools
## 0.8.15
### Patch Changes
- cce679b: Export `type Credentials` and mark `AuthResult.saveCredentials` as optional and run if available
## 0.8.14
### Patch Changes
- 36273b3: Cache other usages of Account.fromRaw
## 0.8.13
### Patch Changes
- fd011d7: Add a cache layer on the loadedAs account reads
## 0.8.12
### Patch Changes

View File

@@ -19,7 +19,7 @@
},
"type": "module",
"license": "MIT",
"version": "0.8.12",
"version": "0.8.15",
"dependencies": {
"cojson": "workspace:*",
"fast-check": "^3.17.2"

View File

@@ -29,6 +29,7 @@ import {
subscribeToExistingCoValue,
subscriptionsScopes,
} from "../internal.js";
import { coValuesCache } from "../lib/cache.js";
/**
* CoLists are collaborative versions of plain arrays.
@@ -164,9 +165,12 @@ export class CoList<Item = any> extends Array<Item> implements CoValue {
}
get _loadedAs() {
if (this._raw.core.node.account instanceof RawAccount) {
return Account.fromRaw(this._raw.core.node.account);
const rawAccount = this._raw.core.node.account;
if (rawAccount instanceof RawAccount) {
return coValuesCache.get(rawAccount, () => Account.fromRaw(rawAccount)) ;
}
return new AnonymousJazzAgent(this._raw.core.node);
}

View File

@@ -11,6 +11,7 @@ import {
AnonymousJazzAgent,
} from "../internal.js";
import { fulfillsDepth } from "./deepLoading.js";
import { coValuesCache } from "../lib/cache.js";
/** @category Abstract interfaces */
// eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -87,9 +88,12 @@ export class CoValueBase implements CoValue {
/** @private */
get _loadedAs() {
if (this._raw.core.node.account instanceof RawAccount) {
return Account.fromRaw(this._raw.core.node.account);
const rawAccount = this._raw.core.node.account;
if (rawAccount instanceof RawAccount) {
return coValuesCache.get(rawAccount, () => Account.fromRaw(rawAccount)) ;
}
return new AnonymousJazzAgent(this._raw.core.node);
}

View File

@@ -26,6 +26,7 @@ export { loadCoValue, subscribeToCoValue, createCoValueObservable } from "./inte
export {
type AuthMethod,
type AuthResult,
type Credentials,
createJazzContext,
fixedCredentialsAuth,
ephemeralCredentialsAuth,

View File

@@ -11,10 +11,16 @@ import {
} from "cojson";
import { Account, AccountClass, ID } from "../internal.js";
export type Credentials = {
accountID: ID<Account>;
secret: AgentSecret;
};
export type AuthResult =
| {
type: "existing";
credentials: { accountID: ID<Account>; secret: AgentSecret };
credentials: Credentials;
saveCredentials?: (credentials: Credentials) => Promise<void>;
onSuccess: () => void;
onError: (error: string | Error) => void;
logOut: () => void;
@@ -23,10 +29,7 @@ export type AuthResult =
type: "new";
creationProps: { name: string };
initialSecret?: AgentSecret;
saveCredentials: (credentials: {
accountID: ID<Account>;
secret: AgentSecret;
}) => Promise<void>;
saveCredentials: (credentials: Credentials) => Promise<void>;
onSuccess: () => void;
onError: (error: string | Error) => void;
logOut: () => void;
@@ -44,6 +47,7 @@ export const fixedCredentialsAuth = (credentials: {
start: async () => ({
type: "existing",
credentials,
saveCredentials: async () => {},
onSuccess: () => {},
onError: () => {},
logOut: () => {},
@@ -168,6 +172,15 @@ export async function createJazzContext<Acc extends Account>(
});
const account = AccountSchema.fromNode(node);
if (authResult.saveCredentials) {
await authResult.saveCredentials({
accountID: node.account
.id as unknown as ID<Account>,
secret: node.account.agentSecret,
});
}
authResult.onSuccess();
return {

153
pnpm-lock.yaml generated
View File

@@ -52,10 +52,10 @@ importers:
specifier: ^3.0.1
version: 3.0.1
jazz-react:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-react
jazz-tools:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-tools
react:
specifier: 18.3.1
@@ -147,13 +147,13 @@ importers:
specifier: ^2.0.0
version: 2.0.0
jazz-browser-media-images:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-browser-media-images
jazz-react:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-react
jazz-tools:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-tools
next:
specifier: 14.2.5
@@ -226,10 +226,10 @@ importers:
specifier: workspace:0.2.1
version: link:../../packages/hash-slash
jazz-react:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-react
jazz-tools:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-tools
lucide-react:
specifier: ^0.274.0
@@ -338,13 +338,13 @@ importers:
specifier: workspace:0.2.1
version: link:../../packages/hash-slash
jazz-react:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-react
jazz-react-auth-clerk:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-react-auth-clerk
jazz-tools:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-tools
lucide-react:
specifier: ^0.274.0
@@ -728,7 +728,7 @@ importers:
specifier: workspace:0.8.12
version: link:../../packages/cojson
cojson-transport-ws:
specifier: workspace:0.8.12
specifier: workspace:0.8.13
version: link:../../packages/cojson-transport-ws
hash-slash:
specifier: workspace:0.2.1
@@ -825,10 +825,10 @@ importers:
specifier: ^2.0.0
version: 2.0.0
jazz-react:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-react
jazz-tools:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-tools
lucide-react:
specifier: ^0.274.0
@@ -901,10 +901,10 @@ importers:
examples/password-manager:
dependencies:
jazz-react:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-react
jazz-tools:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-tools
react:
specifier: 18.3.1
@@ -980,13 +980,13 @@ importers:
specifier: ^2.0.0
version: 2.0.0
jazz-browser-media-images:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-browser-media-images
jazz-react:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-react
jazz-tools:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-tools
lucide-react:
specifier: ^0.274.0
@@ -1056,7 +1056,7 @@ importers:
specifier: ^3.0.1
version: 3.0.1
jazz-run:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-run
postcss:
specifier: ^8.4.27
@@ -1094,10 +1094,10 @@ importers:
specifier: ^2.0.0
version: 2.0.0
jazz-react:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-react
jazz-tools:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../../packages/jazz-tools
lucide-react:
specifier: ^0.274.0
@@ -1303,10 +1303,10 @@ importers:
specifier: workspace:0.8.12
version: link:../cojson-storage-indexeddb
cojson-transport-ws:
specifier: workspace:0.8.12
specifier: workspace:0.8.13
version: link:../cojson-transport-ws
jazz-tools:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../jazz-tools
typescript:
specifier: ^5.3.3
@@ -1318,10 +1318,10 @@ importers:
specifier: workspace:0.8.12
version: link:../cojson
jazz-browser:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../jazz-browser
jazz-tools:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../jazz-tools
devDependencies:
typescript:
@@ -1337,10 +1337,10 @@ importers:
specifier: ^4.1.0
version: 4.1.0
jazz-browser:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../jazz-browser
jazz-tools:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../jazz-tools
pica:
specifier: ^9.0.1
@@ -1359,10 +1359,10 @@ importers:
specifier: workspace:0.8.12
version: link:../cojson
cojson-transport-ws:
specifier: workspace:0.8.12
specifier: workspace:0.8.13
version: link:../cojson-transport-ws
jazz-tools:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../jazz-tools
ws:
specifier: ^8.14.2
@@ -1384,10 +1384,10 @@ importers:
specifier: workspace:0.8.12
version: link:../cojson
jazz-browser:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../jazz-browser
jazz-tools:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../jazz-tools
typescript:
specifier: ^5.3.3
@@ -1409,13 +1409,13 @@ importers:
specifier: workspace:0.8.12
version: link:../cojson
jazz-browser-auth-clerk:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../jazz-browser-auth-clerk
jazz-react:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../jazz-react
jazz-tools:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../jazz-tools
react:
specifier: 18.3.1
@@ -1505,13 +1505,13 @@ importers:
specifier: workspace:0.8.12
version: link:../cojson-storage-sqlite
cojson-transport-ws:
specifier: workspace:0.8.12
specifier: workspace:0.8.13
version: link:../cojson-transport-ws
effect:
specifier: ^3.6.5
version: 3.6.5
jazz-tools:
specifier: workspace:0.8.12
specifier: workspace:0.8.15
version: link:../jazz-tools
ws:
specifier: ^8.14.2
@@ -2751,18 +2751,12 @@ packages:
'@expo/code-signing-certificates@0.0.5':
resolution: {integrity: sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==}
'@expo/config-plugins@7.2.5':
resolution: {integrity: sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==}
'@expo/config-plugins@8.0.10':
resolution: {integrity: sha512-KG1fnSKRmsudPU9BWkl59PyE0byrE2HTnqbOrgwr2FAhqh7tfr9nRs6A9oLS/ntpGzmFxccTEcsV0L4apsuxxg==}
'@expo/config-plugins@8.0.9':
resolution: {integrity: sha512-dNCG45C7BbDPV9MdWvCbsFtJtVn4w/TJbb5b7Yr6FA8HYIlaaVM0wqUMzTPmGj54iYXw8X/Vge8uCPxg7RWgeA==}
'@expo/config-types@49.0.0':
resolution: {integrity: sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA==}
'@expo/config-types@51.0.2':
resolution: {integrity: sha512-IglkIoiDwJMY01lYkF/ZSBoe/5cR+O3+Gx6fpLFjLfgZGBTdyPkKa1g8NWoWQCk+D3cKL2MDbszT2DyRRB0YqQ==}
@@ -2784,9 +2778,6 @@ packages:
'@expo/image-utils@0.5.1':
resolution: {integrity: sha512-U/GsFfFox88lXULmFJ9Shfl2aQGcwoKPF7fawSCLixIKtMCpsI+1r0h+5i0nQnmt9tHuzXZDL8+Dg1z6OhkI9A==}
'@expo/json-file@8.2.37':
resolution: {integrity: sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==}
'@expo/json-file@8.3.3':
resolution: {integrity: sha512-eZ5dld9AD0PrVRiIWpRkm5aIoWBw3kAyd8VkuWEy92sEthBKDDDHAnK2a0dw0Eil6j7rK7lS/Qaq/Zzngv2h5A==}
@@ -2805,9 +2796,6 @@ packages:
'@expo/package-manager@1.5.2':
resolution: {integrity: sha512-IuA9XtGBilce0q8cyxtWINqbzMB1Fia0Yrug/O53HNuRSwQguV/iqjV68bsa4z8mYerePhcFgtvISWLAlNEbUA==}
'@expo/plist@0.0.20':
resolution: {integrity: sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==}
'@expo/plist@0.1.3':
resolution: {integrity: sha512-GW/7hVlAylYg1tUrEASclw1MMk9FP4ZwyFAY/SUTJIhPDQHtfOlXREyWV3hhrHdX/K+pS73GNgdfT6E/e+kBbg==}
@@ -3322,7 +3310,7 @@ packages:
'@radix-ui/react-compose-refs@1.1.0':
resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==}
peerDependencies:
'@types/react': ^18.2.32
'@types/react': '*'
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -3406,8 +3394,8 @@ packages:
'@radix-ui/react-focus-scope@1.1.0':
resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==}
peerDependencies:
'@types/react': ^18.2.32
'@types/react-dom': ^18.2.14
'@types/react': '*'
'@types/react-dom': '*'
react: 18.3.1
react-dom: 18.3.1
peerDependenciesMeta:
@@ -3419,7 +3407,7 @@ packages:
'@radix-ui/react-id@1.1.0':
resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==}
peerDependencies:
'@types/react': ^18.2.32
'@types/react': '*'
react: 18.3.1
peerDependenciesMeta:
'@types/react':
@@ -3441,8 +3429,8 @@ packages:
'@radix-ui/react-popper@1.2.0':
resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==}
peerDependencies:
'@types/react': ^18.2.32
'@types/react-dom': ^18.2.14
'@types/react': '*'
'@types/react-dom': '*'
react: 18.3.1
react-dom: 18.3.1
peerDependenciesMeta:
@@ -3519,8 +3507,8 @@ packages:
'@radix-ui/react-primitive@2.0.0':
resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==}
peerDependencies:
'@types/react': ^18.2.32
'@types/react-dom': ^18.2.14
'@types/react': '*'
'@types/react-dom': '*'
react: 18.3.1
react-dom: 18.3.1
peerDependenciesMeta:
@@ -3804,9 +3792,6 @@ packages:
peerDependencies:
'@babel/core': '*'
'@react-native/normalize-color@2.1.0':
resolution: {integrity: sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA==}
'@react-native/normalize-colors@0.74.84':
resolution: {integrity: sha512-Y5W6x8cC5RuakUcTVUFNAIhUZ/tYpuqHZlRBoAuakrTwVuoNHXfQki8lj1KsYU7rW6e3VWgdEx33AfOQpdNp6A==}
@@ -11999,26 +11984,6 @@ snapshots:
node-forge: 1.3.1
nullthrows: 1.1.1
'@expo/config-plugins@7.2.5':
dependencies:
'@expo/config-types': 49.0.0
'@expo/json-file': 8.2.37
'@expo/plist': 0.0.20
'@expo/sdk-runtime-versions': 1.0.0
'@react-native/normalize-color': 2.1.0
chalk: 4.1.2
debug: 4.3.7
find-up: 5.0.0
getenv: 1.0.0
glob: 7.1.6
resolve-from: 5.0.0
semver: 7.6.3
slash: 3.0.0
xcode: 3.0.1
xml2js: 0.6.0
transitivePeerDependencies:
- supports-color
'@expo/config-plugins@8.0.10':
dependencies:
'@expo/config-types': 51.0.3
@@ -12059,8 +12024,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@expo/config-types@49.0.0': {}
'@expo/config-types@51.0.2': {}
'@expo/config-types@51.0.3': {}
@@ -12084,7 +12047,7 @@ snapshots:
'@expo/config@9.0.4':
dependencies:
'@babel/code-frame': 7.10.4
'@expo/config-plugins': 7.2.5
'@expo/config-plugins': 8.0.10
'@expo/config-types': 51.0.3
'@expo/json-file': 8.3.3
getenv: 1.0.0
@@ -12139,12 +12102,6 @@ snapshots:
transitivePeerDependencies:
- encoding
'@expo/json-file@8.2.37':
dependencies:
'@babel/code-frame': 7.10.4
json5: 2.2.3
write-file-atomic: 2.4.3
'@expo/json-file@8.3.3':
dependencies:
'@babel/code-frame': 7.10.4
@@ -12198,12 +12155,6 @@ snapshots:
split: 1.0.1
sudo-prompt: 9.1.1
'@expo/plist@0.0.20':
dependencies:
'@xmldom/xmldom': 0.7.13
base64-js: 1.5.1
xmlbuilder: 14.0.0
'@expo/plist@0.1.3':
dependencies:
'@xmldom/xmldom': 0.7.13
@@ -13508,8 +13459,6 @@ snapshots:
- '@babel/preset-env'
- supports-color
'@react-native/normalize-color@2.1.0': {}
'@react-native/normalize-colors@0.74.84': {}
'@react-native/normalize-colors@0.74.85': {}
@@ -15778,7 +15727,7 @@ snapshots:
'@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint@8.57.1)(typescript@5.3.3)
'@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.3.3)
eslint: 8.57.1
eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1)
eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint@8.57.1))(eslint@8.57.1)
eslint-plugin-expo: 0.0.1(eslint@8.57.1)(typescript@5.3.3)
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1)
eslint-plugin-react: 7.37.1(eslint@8.57.1)
@@ -15844,13 +15793,13 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1):
eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint@8.57.1))(eslint@8.57.1):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.3.7
enhanced-resolve: 5.17.1
eslint: 8.57.1
eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1)
eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1)
fast-glob: 3.3.2
get-tsconfig: 4.8.1
is-bun-module: 1.2.1
@@ -15874,14 +15823,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1):
eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1):
dependencies:
debug: 3.2.7
optionalDependencies:
'@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.3.3)
eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1)
eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint@8.57.1))(eslint@8.57.1)
transitivePeerDependencies:
- supports-color
@@ -15934,7 +15883,7 @@ snapshots:
doctrine: 2.1.0
eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1)
eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.3.3))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1)
hasown: 2.0.2
is-core-module: 2.15.1
is-glob: 4.0.3