Compare commits
16 Commits
jazz-tools
...
jazz-brows
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
61b346a948 | ||
|
|
c2dfe6a0dd | ||
|
|
81e8910519 | ||
|
|
cce679b031 | ||
|
|
06278c3d97 | ||
|
|
221c58f1f7 | ||
|
|
ebca75bf70 | ||
|
|
b5e516f974 | ||
|
|
8fc5a49ca8 | ||
|
|
00054aa9a5 | ||
|
|
6f3c98f704 | ||
|
|
47ec0cd8fe | ||
|
|
685031c39c | ||
|
|
e4fd89dbbb | ||
|
|
57deec451a | ||
|
|
bc8ea23e6d |
@@ -1,5 +1,13 @@
|
||||
# @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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@jazz-e2e/binarycostream",
|
||||
"private": true,
|
||||
"version": "0.0.92",
|
||||
"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.14",
|
||||
"jazz-tools": "workspace:0.8.14",
|
||||
"jazz-react": "workspace:0.8.15",
|
||||
"jazz-tools": "workspace:0.8.15",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0"
|
||||
},
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# @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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@jazz-e2e/covalues",
|
||||
"private": true,
|
||||
"version": "0.0.91",
|
||||
"version": "0.0.92",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jazz-example-book-shelf",
|
||||
"version": "0.1.7",
|
||||
"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.14",
|
||||
"jazz-react": "workspace:0.8.14",
|
||||
"jazz-tools": "workspace:0.8.14",
|
||||
"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"
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "jazz-example-chat-clerk",
|
||||
"private": true,
|
||||
"version": "0.0.91",
|
||||
"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.14",
|
||||
"jazz-react-auth-clerk": "workspace:0.8.14",
|
||||
"jazz-tools": "workspace:0.8.14",
|
||||
"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",
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "chat-rn-clerk",
|
||||
"main": "index.js",
|
||||
"version": "1.0.7",
|
||||
"version": "1.0.8",
|
||||
"scripts": {
|
||||
"build": "expo export -p ios",
|
||||
"start": "expo start",
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "chat-rn",
|
||||
"version": "1.0.9",
|
||||
"version": "1.0.10",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "expo export -p ios",
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "jazz-example-chat",
|
||||
"private": true,
|
||||
"version": "0.0.93",
|
||||
"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.14",
|
||||
"jazz-tools": "workspace:0.8.14",
|
||||
"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",
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "jazz-example-music-player",
|
||||
"private": true,
|
||||
"version": "0.0.13",
|
||||
"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.14",
|
||||
"jazz-tools": "workspace:0.8.14",
|
||||
"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",
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "jazz-password-manager",
|
||||
"private": true,
|
||||
"version": "0.0.12",
|
||||
"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.14",
|
||||
"jazz-tools": "workspace:0.8.14",
|
||||
"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",
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "jazz-example-pets",
|
||||
"private": true,
|
||||
"version": "0.0.110",
|
||||
"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.14",
|
||||
"jazz-react": "workspace:0.8.14",
|
||||
"jazz-tools": "workspace:0.8.14",
|
||||
"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.14",
|
||||
"jazz-run": "workspace:0.8.15",
|
||||
"postcss": "^8.4.27",
|
||||
"tailwindcss": "3.3.2",
|
||||
"typescript": "^5.3.3",
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "jazz-example-todo",
|
||||
"private": true,
|
||||
"version": "0.0.109",
|
||||
"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.14",
|
||||
"jazz-tools": "workspace:0.8.14",
|
||||
"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",
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jazz-browser-auth-clerk",
|
||||
"version": "0.8.14",
|
||||
"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.14",
|
||||
"jazz-tools": "workspace:0.8.14"
|
||||
"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"
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -1,5 +1,13 @@
|
||||
# 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jazz-browser-media-images",
|
||||
"version": "0.8.14",
|
||||
"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.14",
|
||||
"jazz-tools": "workspace:0.8.14",
|
||||
"jazz-browser": "workspace:0.8.15",
|
||||
"jazz-tools": "workspace:0.8.15",
|
||||
"pica": "^9.0.1",
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# jazz-browser
|
||||
|
||||
## 0.8.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cce679b]
|
||||
- jazz-tools@0.8.15
|
||||
|
||||
## 0.8.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jazz-browser",
|
||||
"version": "0.8.14",
|
||||
"version": "0.8.15",
|
||||
"type": "module",
|
||||
"main": "dist/index.js",
|
||||
"types": "src/index.ts",
|
||||
@@ -10,7 +10,7 @@
|
||||
"cojson": "workspace:0.8.12",
|
||||
"cojson-storage-indexeddb": "workspace:0.8.12",
|
||||
"cojson-transport-ws": "workspace:0.8.13",
|
||||
"jazz-tools": "workspace:0.8.14",
|
||||
"jazz-tools": "workspace:0.8.15",
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# jazz-autosub
|
||||
|
||||
## 0.8.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cce679b]
|
||||
- jazz-tools@0.8.15
|
||||
|
||||
## 0.8.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
"types": "src/index.ts",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"version": "0.8.14",
|
||||
"version": "0.8.15",
|
||||
"dependencies": {
|
||||
"cojson": "workspace:0.8.12",
|
||||
"cojson-transport-ws": "workspace:0.8.13",
|
||||
"jazz-tools": "workspace:0.8.14",
|
||||
"jazz-tools": "workspace:0.8.15",
|
||||
"ws": "^8.14.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jazz-react-auth-clerk",
|
||||
"version": "0.8.14",
|
||||
"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.14",
|
||||
"jazz-react": "workspace:0.8.14",
|
||||
"jazz-tools": "workspace:0.8.14"
|
||||
"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"
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# jazz-browser-media-images
|
||||
|
||||
## 0.8.11
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cce679b]
|
||||
- jazz-tools@0.8.15
|
||||
|
||||
## 0.8.10
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jazz-react-native-media-images",
|
||||
"version": "0.8.10",
|
||||
"version": "0.8.11",
|
||||
"type": "module",
|
||||
"main": "dist/index.js",
|
||||
"types": "src/index.ts",
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# jazz-browser
|
||||
|
||||
## 0.8.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cce679b]
|
||||
- jazz-tools@0.8.15
|
||||
|
||||
## 0.8.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jazz-react-native",
|
||||
"version": "0.8.14",
|
||||
"version": "0.8.15",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
"module": "./dist/index.js",
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# 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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jazz-react",
|
||||
"version": "0.8.14",
|
||||
"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.14",
|
||||
"jazz-tools": "workspace:0.8.14",
|
||||
"jazz-browser": "workspace:0.8.15",
|
||||
"jazz-tools": "workspace:0.8.15",
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# jazz-run
|
||||
|
||||
## 0.8.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [cce679b]
|
||||
- jazz-tools@0.8.15
|
||||
|
||||
## 0.8.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"bin": "./dist/index.js",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"version": "0.8.14",
|
||||
"version": "0.8.15",
|
||||
"scripts": {
|
||||
"lint": "eslint . --ext ts,tsx",
|
||||
"format": "prettier --write './src/**/*.{ts,tsx}'",
|
||||
@@ -21,7 +21,7 @@
|
||||
"cojson-storage-sqlite": "workspace:0.8.12",
|
||||
"cojson-transport-ws": "workspace:0.8.13",
|
||||
"effect": "^3.6.5",
|
||||
"jazz-tools": "workspace:0.8.14",
|
||||
"jazz-tools": "workspace:0.8.15",
|
||||
"ws": "^8.14.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# 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
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
},
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"version": "0.8.14",
|
||||
"version": "0.8.15",
|
||||
"dependencies": {
|
||||
"cojson": "workspace:*",
|
||||
"fast-check": "^3.17.2"
|
||||
|
||||
@@ -26,6 +26,7 @@ export { loadCoValue, subscribeToCoValue, createCoValueObservable } from "./inte
|
||||
export {
|
||||
type AuthMethod,
|
||||
type AuthResult,
|
||||
type Credentials,
|
||||
createJazzContext,
|
||||
fixedCredentialsAuth,
|
||||
ephemeralCredentialsAuth,
|
||||
|
||||
@@ -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 {
|
||||
|
||||
64
pnpm-lock.yaml
generated
64
pnpm-lock.yaml
generated
@@ -52,10 +52,10 @@ importers:
|
||||
specifier: ^3.0.1
|
||||
version: 3.0.1
|
||||
jazz-react:
|
||||
specifier: workspace:0.8.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../../packages/jazz-react
|
||||
jazz-tools:
|
||||
specifier: workspace:0.8.14
|
||||
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.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../../packages/jazz-browser-media-images
|
||||
jazz-react:
|
||||
specifier: workspace:0.8.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../../packages/jazz-react
|
||||
jazz-tools:
|
||||
specifier: workspace:0.8.14
|
||||
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.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../../packages/jazz-react
|
||||
jazz-tools:
|
||||
specifier: workspace:0.8.14
|
||||
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.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../../packages/jazz-react
|
||||
jazz-react-auth-clerk:
|
||||
specifier: workspace:0.8.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../../packages/jazz-react-auth-clerk
|
||||
jazz-tools:
|
||||
specifier: workspace:0.8.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../../packages/jazz-tools
|
||||
lucide-react:
|
||||
specifier: ^0.274.0
|
||||
@@ -825,10 +825,10 @@ importers:
|
||||
specifier: ^2.0.0
|
||||
version: 2.0.0
|
||||
jazz-react:
|
||||
specifier: workspace:0.8.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../../packages/jazz-react
|
||||
jazz-tools:
|
||||
specifier: workspace:0.8.14
|
||||
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.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../../packages/jazz-react
|
||||
jazz-tools:
|
||||
specifier: workspace:0.8.14
|
||||
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.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../../packages/jazz-browser-media-images
|
||||
jazz-react:
|
||||
specifier: workspace:0.8.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../../packages/jazz-react
|
||||
jazz-tools:
|
||||
specifier: workspace:0.8.14
|
||||
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.14
|
||||
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.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../../packages/jazz-react
|
||||
jazz-tools:
|
||||
specifier: workspace:0.8.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../../packages/jazz-tools
|
||||
lucide-react:
|
||||
specifier: ^0.274.0
|
||||
@@ -1306,7 +1306,7 @@ importers:
|
||||
specifier: workspace:0.8.13
|
||||
version: link:../cojson-transport-ws
|
||||
jazz-tools:
|
||||
specifier: workspace:0.8.14
|
||||
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.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../jazz-browser
|
||||
jazz-tools:
|
||||
specifier: workspace:0.8.14
|
||||
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.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../jazz-browser
|
||||
jazz-tools:
|
||||
specifier: workspace:0.8.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../jazz-tools
|
||||
pica:
|
||||
specifier: ^9.0.1
|
||||
@@ -1362,7 +1362,7 @@ importers:
|
||||
specifier: workspace:0.8.13
|
||||
version: link:../cojson-transport-ws
|
||||
jazz-tools:
|
||||
specifier: workspace:0.8.14
|
||||
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.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../jazz-browser
|
||||
jazz-tools:
|
||||
specifier: workspace:0.8.14
|
||||
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.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../jazz-browser-auth-clerk
|
||||
jazz-react:
|
||||
specifier: workspace:0.8.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../jazz-react
|
||||
jazz-tools:
|
||||
specifier: workspace:0.8.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../jazz-tools
|
||||
react:
|
||||
specifier: 18.3.1
|
||||
@@ -1511,7 +1511,7 @@ importers:
|
||||
specifier: ^3.6.5
|
||||
version: 3.6.5
|
||||
jazz-tools:
|
||||
specifier: workspace:0.8.14
|
||||
specifier: workspace:0.8.15
|
||||
version: link:../jazz-tools
|
||||
ws:
|
||||
specifier: ^8.14.2
|
||||
|
||||
Reference in New Issue
Block a user