Compare commits

..

11 Commits

Author SHA1 Message Date
Anselm Eickhoff
e4fcafd576 Merge pull request #857 from garden-co/changeset-release/main
Version Packages
2024-11-22 15:46:42 +00:00
github-actions[bot]
a9cff03bcb Version Packages 2024-11-22 15:35:56 +00:00
Anselm Eickhoff
26324d4b1e Merge pull request #853 from garden-co/fix/improve-peers-close
fix: clean the queues on peers close
2024-11-22 15:32:43 +00:00
Anselm Eickhoff
bd022ffd5e Merge pull request #854 from garden-co/fix/offline-support-and-faster-load
fix: restore offline support and faster load when storage is active
2024-11-22 15:32:31 +00:00
Guido D'Orsi
dcc9c2e376 chore: changeset 2024-11-22 15:53:14 +01:00
Guido D'Orsi
48edcaff37 fix: clean the queues on peers close 2024-11-22 15:49:42 +01:00
Guido D'Orsi
7780346208 fix(jazz-browser): fix unitialized variable when loading offline 2024-11-22 15:36:02 +01:00
Guido D'Orsi
699553fe9f chore: changeset 2024-11-22 10:11:30 +01:00
Guido D'Orsi
bdd5ad7eb1 fix: restore offline support and faster load when storage is active 2024-11-22 10:09:56 +01:00
Guido D'Orsi
a6942030d4 Merge pull request #848 from garden-co/benjamin-jazz-528
Chore: Bump turbo to v2
2024-11-21 18:21:05 +01:00
Benjamin S. Leveritt
905c6b312b Chore: Bump turbo to v2 2024-11-21 17:00:10 +00:00
76 changed files with 642 additions and 211 deletions

View File

@@ -1,5 +1,15 @@
# @jazz-e2e/binarycostream
## 0.0.106
### Patch Changes
- Updated dependencies [dcc9c2e]
- Updated dependencies [699553f]
- cojson@0.8.29
- jazz-react@0.8.29
- jazz-tools@0.8.29
## 0.0.105
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "@jazz-e2e/filestream",
"private": true,
"version": "0.0.105",
"version": "0.0.106",
"type": "module",
"scripts": {
"dev": "vite",
@@ -13,11 +13,11 @@
"test:ui": "playwright test --ui"
},
"dependencies": {
"cojson": "workspace:0.8.28",
"cojson": "workspace:0.8.29",
"hash-slash": "workspace:0.2.1",
"is-ci": "^3.0.1",
"jazz-react": "workspace:0.8.28",
"jazz-tools": "workspace:0.8.28",
"jazz-react": "workspace:0.8.29",
"jazz-tools": "workspace:0.8.29",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},

View File

@@ -1,5 +1,15 @@
# @jazz-e2e/covalues
## 0.0.105
### Patch Changes
- Updated dependencies [dcc9c2e]
- Updated dependencies [699553f]
- cojson@0.8.29
- jazz-react@0.8.29
- jazz-tools@0.8.29
## 0.0.104
### Patch Changes

View File

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

View File

@@ -1,5 +1,13 @@
# jazz-example-book-shelf
## 0.1.21
### Patch Changes
- jazz-react@0.8.29
- jazz-tools@0.8.29
- jazz-browser-media-images@0.8.29
## 0.1.20
### Patch Changes

View File

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

View File

@@ -1,5 +1,16 @@
# jazz-example-chat
## 0.0.105
### Patch Changes
- Updated dependencies [dcc9c2e]
- Updated dependencies [699553f]
- cojson@0.8.29
- jazz-react@0.8.29
- jazz-react-auth-clerk@0.8.29
- jazz-tools@0.8.29
## 0.0.104
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-example-chat-clerk",
"private": true,
"version": "0.0.104",
"version": "0.0.105",
"type": "module",
"scripts": {
"dev": "vite",
@@ -17,11 +17,11 @@
"@radix-ui/react-toast": "^1.1.4",
"class-variance-authority": "^0.7.0",
"clsx": "^2.0.0",
"cojson": "workspace:0.8.28",
"cojson": "workspace:0.8.29",
"hash-slash": "workspace:0.2.1",
"jazz-react": "workspace:0.8.28",
"jazz-react-auth-clerk": "workspace:0.8.28",
"jazz-tools": "workspace:0.8.28",
"jazz-react": "workspace:0.8.29",
"jazz-react-auth-clerk": "workspace:0.8.29",
"jazz-tools": "workspace:0.8.29",
"lucide-react": "^0.274.0",
"qrcode": "^1.5.3",
"react": "^18.2.0",

View File

@@ -1,5 +1,14 @@
# chat-rn-clerk
## 1.0.21
### Patch Changes
- jazz-react-native@0.8.29
- jazz-react-auth-clerk@0.8.29
- jazz-tools@0.8.29
- jazz-react-native-media-images@0.8.21
## 1.0.20
### Patch Changes

View File

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

View File

@@ -1,5 +1,12 @@
# chat-rn
## 1.0.20
### Patch Changes
- jazz-react-native@0.8.29
- jazz-tools@0.8.29
## 1.0.19
### Patch Changes

View File

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

View File

@@ -1,5 +1,13 @@
# chat-vue
## 0.0.12
### Patch Changes
- jazz-browser@0.8.29
- jazz-tools@0.8.29
- jazz-vue@0.8.17
## 0.0.11
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "chat-vue",
"version": "0.0.11",
"version": "0.0.12",
"private": true,
"type": "module",
"scripts": {

View File

@@ -1,5 +1,15 @@
# jazz-example-chat
## 0.0.107
### Patch Changes
- Updated dependencies [dcc9c2e]
- Updated dependencies [699553f]
- cojson@0.8.29
- jazz-react@0.8.29
- jazz-tools@0.8.29
## 0.0.106
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-example-chat",
"private": true,
"version": "0.0.106",
"version": "0.0.107",
"type": "module",
"scripts": {
"dev": "vite",
@@ -18,10 +18,10 @@
"@radix-ui/react-toast": "^1.1.4",
"class-variance-authority": "^0.7.0",
"clsx": "^2.0.0",
"cojson": "workspace:0.8.28",
"cojson": "workspace:0.8.29",
"hash-slash": "workspace:0.2.1",
"jazz-react": "workspace:0.8.28",
"jazz-tools": "workspace:0.8.28",
"jazz-react": "workspace:0.8.29",
"jazz-tools": "workspace:0.8.29",
"lucide-react": "^0.274.0",
"qrcode": "^1.5.3",
"react": "^18.2.0",

View File

@@ -1,5 +1,14 @@
# jazz-example-inspector
## 0.0.77
### Patch Changes
- Updated dependencies [dcc9c2e]
- Updated dependencies [699553f]
- cojson-transport-ws@0.8.29
- cojson@0.8.29
## 0.0.76
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-inspector",
"private": true,
"version": "0.0.76",
"version": "0.0.77",
"type": "module",
"scripts": {
"dev": "vite",
@@ -16,8 +16,8 @@
"@radix-ui/react-toast": "^1.1.4",
"class-variance-authority": "^0.7.0",
"clsx": "^2.0.0",
"cojson": "workspace:0.8.28",
"cojson-transport-ws": "workspace:0.8.28",
"cojson": "workspace:0.8.29",
"cojson-transport-ws": "workspace:0.8.29",
"hash-slash": "workspace:0.2.1",
"lucide-react": "^0.274.0",
"qrcode": "^1.5.3",

View File

@@ -1,5 +1,13 @@
# minimal-auth-clerk
## 0.0.6
### Patch Changes
- jazz-react@0.8.29
- jazz-react-auth-clerk@0.8.29
- jazz-tools@0.8.29
## 0.0.5
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "minimal-auth-clerk",
"private": true,
"version": "0.0.5",
"version": "0.0.6",
"type": "module",
"scripts": {
"dev": "vite",
@@ -14,7 +14,7 @@
"@clerk/clerk-react": "^5.4.1",
"jazz-tools": "workspace:*",
"jazz-react": "workspace:*",
"jazz-react-auth-clerk": "workspace:0.8.28",
"jazz-react-auth-clerk": "workspace:0.8.29",
"react": "^18.3.1",
"react-dom": "^18.3.1"
},

View File

@@ -1,5 +1,12 @@
# minimal-auth-passkey
## 0.0.5
### Patch Changes
- jazz-react@0.8.29
- jazz-tools@0.8.29
## 0.0.4
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "minimal-auth-passkey",
"private": true,
"version": "0.0.4",
"version": "0.0.5",
"type": "module",
"scripts": {
"dev": "vite",

View File

@@ -1,5 +1,12 @@
# jazz-example-musicplayer
## 0.0.27
### Patch Changes
- jazz-react@0.8.29
- jazz-tools@0.8.29
## 0.0.26
### Patch Changes

View File

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

View File

@@ -1,5 +1,13 @@
# jazz-example-onboarding
## 0.0.8
### Patch Changes
- jazz-react@0.8.29
- jazz-tools@0.8.29
- jazz-browser-media-images@0.8.29
## 0.0.7
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-example-onboarding",
"private": true,
"version": "0.0.7",
"version": "0.0.8",
"type": "module",
"scripts": {
"dev": "vite",

View File

@@ -1,5 +1,12 @@
# jazz-password-manager
## 0.0.26
### Patch Changes
- jazz-react@0.8.29
- jazz-tools@0.8.29
## 0.0.25
### Patch Changes

View File

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

View File

@@ -1,5 +1,13 @@
# jazz-example-pets
## 0.0.124
### Patch Changes
- jazz-react@0.8.29
- jazz-tools@0.8.29
- jazz-browser-media-images@0.8.29
## 0.0.123
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"name": "jazz-example-pets",
"private": true,
"version": "0.0.123",
"version": "0.0.124",
"type": "module",
"scripts": {
"dev": "vite",
@@ -19,9 +19,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.28",
"jazz-react": "workspace:0.8.28",
"jazz-tools": "workspace:0.8.28",
"jazz-browser-media-images": "workspace:0.8.29",
"jazz-react": "workspace:0.8.29",
"jazz-tools": "workspace:0.8.29",
"lucide-react": "^0.274.0",
"qrcode": "^1.5.3",
"react": "^18.2.0",
@@ -41,7 +41,7 @@
"@vitejs/plugin-react-swc": "^3.3.2",
"autoprefixer": "^10.4.14",
"is-ci": "^3.0.1",
"jazz-run": "workspace:0.8.28",
"jazz-run": "workspace:0.8.29",
"postcss": "^8.4.27",
"tailwindcss": "3.3.2",
"typescript": "^5.3.3",

View File

@@ -1,5 +1,13 @@
# todo-vue
## 0.0.10
### Patch Changes
- jazz-browser@0.8.29
- jazz-tools@0.8.29
- jazz-vue@0.8.17
## 0.0.9
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "todo-vue",
"version": "0.0.9",
"version": "0.0.10",
"private": true,
"type": "module",
"scripts": {

View File

@@ -1,5 +1,12 @@
# jazz-example-todo
## 0.0.123
### Patch Changes
- jazz-react@0.8.29
- jazz-tools@0.8.29
## 0.0.122
### Patch Changes

View File

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

View File

@@ -12,7 +12,7 @@
"happy-dom": "^15.8.3",
"lefthook": "^1.8.2",
"ts-node": "^10.9.1",
"turbo": "^1.11.2",
"turbo": "^2.3.1",
"typedoc": "^0.25.13",
"vitest": "1.5.3"
},

View File

@@ -1,5 +1,13 @@
# cojson-storage-indexeddb
## 0.8.29
### Patch Changes
- Updated dependencies [dcc9c2e]
- Updated dependencies [699553f]
- cojson@0.8.29
## 0.8.28
### Patch Changes

View File

@@ -1,12 +1,12 @@
{
"name": "cojson-storage-indexeddb",
"version": "0.8.28",
"version": "0.8.29",
"main": "dist/index.js",
"type": "module",
"types": "src/index.ts",
"license": "MIT",
"dependencies": {
"cojson": "workspace:0.8.28"
"cojson": "workspace:0.8.29"
},
"devDependencies": {
"@vitest/browser": "^0.34.1",

View File

@@ -1,5 +1,13 @@
# cojson-storage-sqlite
## 0.8.29
### Patch Changes
- Updated dependencies [dcc9c2e]
- Updated dependencies [699553f]
- cojson@0.8.29
## 0.8.28
### Patch Changes

View File

@@ -1,13 +1,13 @@
{
"name": "cojson-storage-sqlite",
"type": "module",
"version": "0.8.28",
"version": "0.8.29",
"main": "dist/index.js",
"types": "src/index.ts",
"license": "MIT",
"dependencies": {
"better-sqlite3": "^8.5.2",
"cojson": "workspace:0.8.28",
"cojson": "workspace:0.8.29",
"typescript": "^5.3.3"
},
"devDependencies": {

View File

@@ -1,5 +1,14 @@
# cojson-transport-nodejs-ws
## 0.8.29
### Patch Changes
- dcc9c2e: Clear out the queues when closing a Peer
- Updated dependencies [dcc9c2e]
- Updated dependencies [699553f]
- cojson@0.8.29
## 0.8.28
### Patch Changes

View File

@@ -1,12 +1,12 @@
{
"name": "cojson-transport-ws",
"type": "module",
"version": "0.8.28",
"version": "0.8.29",
"main": "dist/index.js",
"types": "src/index.ts",
"license": "MIT",
"dependencies": {
"cojson": "workspace:0.8.28",
"cojson": "workspace:0.8.29",
"typescript": "^5.3.3"
},
"scripts": {

View File

@@ -59,6 +59,7 @@ function createOutgoingMessagesManager(
websocket: AnyWebSocket,
batchingByDefault: boolean,
) {
let closed = false;
const outgoingMessages = new BatchedOutgoingMessages((messages) => {
if (websocket.readyState === 1) {
websocket.send(messages);
@@ -68,6 +69,10 @@ function createOutgoingMessagesManager(
let batchingEnabled = batchingByDefault;
async function sendMessage(msg: SyncMessage) {
if (closed) {
return Promise.reject(new Error("WebSocket closed"));
}
if (websocket.readyState !== 1) {
await waitForWebSocketOpen(websocket);
}
@@ -98,6 +103,7 @@ function createOutgoingMessagesManager(
batchingEnabled = enabled;
},
close() {
closed = true;
outgoingMessages.close();
},
};

View File

@@ -153,6 +153,23 @@ describe("createWebSocketPeer", () => {
expect(mockWebSocket.close).toHaveBeenCalled();
});
test("should return a rejection if a message is sent after the peer is closed", async () => {
const { peer } = setup();
peer.outgoing.close();
const message: SyncMessage = {
action: "known",
id: "co_ztest",
header: false,
sessions: {},
};
await expect(peer.outgoing.push(message)).rejects.toThrow(
"WebSocket closed",
);
});
describe("batchingByDefault = true", () => {
test("should batch outgoing messages", async () => {
const { peer, mockWebSocket } = setup();

View File

@@ -1,5 +1,12 @@
# cojson
## 0.8.29
### Patch Changes
- dcc9c2e: Clear out the queues when closing a Peer
- 699553f: Restore offline support and improve loading perfromance when values are cached
## 0.8.28
### Patch Changes

View File

@@ -19,7 +19,7 @@
},
"type": "module",
"license": "MIT",
"version": "0.8.28",
"version": "0.8.29",
"devDependencies": {
"@types/jest": "^29.5.3",
"typescript": "^5.3.3",

View File

@@ -7,7 +7,6 @@ import { TryAddTransactionsError } from "./coValueCore.js";
import { RawCoID } from "./ids.js";
import { CO_VALUE_PRIORITY } from "./priority.js";
import { Peer, SyncMessage } from "./sync.js";
import { logSyncMessage } from "./utils.js";
export class PeerState {
constructor(
@@ -98,7 +97,9 @@ export class PeerState {
}
pushOutgoingMessage(msg: SyncMessage) {
logSyncMessage("to", this, msg);
if (this.closed) {
return Promise.resolve();
}
const promise = this.queue.push(msg);
@@ -117,8 +118,16 @@ export class PeerState {
return this.peer.incoming;
}
private closeQueue() {
let entry: QueueEntry | undefined;
while ((entry = this.queue.pull())) {
entry.reject(new Error("Peer disconnected"));
}
}
gracefulShutdown() {
console.debug("Gracefully closing", this.id);
this.closeQueue();
this.peer.outgoing.close();
this.closed = true;
}

View File

@@ -4,6 +4,7 @@ import { RawCoID } from "./ids.js";
import { PeerID } from "./sync.js";
export const CO_VALUE_LOADING_MAX_RETRIES = 5;
export const CO_VALUE_LOADING_TIMEOUT = 5000;
export class CoValueUnknownState {
type = "unknown" as const;
@@ -264,22 +265,53 @@ async function loadCoValueFromPeers(
peers: PeerState[],
) {
for (const peer of peers) {
if (peer.closed) {
continue;
}
if (coValueEntry.state.type === "available") {
await peer.pushOutgoingMessage({
action: "load",
...coValueEntry.state.coValue.knownState(),
});
/**
* We don't need to wait for the message to be delivered here.
*
* This way when the coValue becomes available because it's cached we don't wait for the server
* peer to consume the messages queue before moving forward.
*/
peer
.pushOutgoingMessage({
action: "load",
...coValueEntry.state.coValue.knownState(),
})
.catch((err) => {
console.error(`Failed to push load message to peer ${peer.id}`, err);
});
} else {
await peer.pushOutgoingMessage({
action: "load",
id: coValueEntry.id,
header: false,
sessions: {},
});
/**
* We only wait for the load state to be resolved.
*/
peer
.pushOutgoingMessage({
action: "load",
id: coValueEntry.id,
header: false,
sessions: {},
})
.catch((err) => {
console.error(`Failed to push load message to peer ${peer.id}`, err);
});
}
if (coValueEntry.state.type === "loading") {
const timeout = setTimeout(() => {
if (coValueEntry.state.type === "loading") {
console.error("Failed to load coValue from peer", peer.id);
coValueEntry.dispatch({
type: "not-found-in-peer",
peerId: peer.id,
});
}
}, CO_VALUE_LOADING_TIMEOUT);
await coValueEntry.state.waitForPeer(peer.id);
clearTimeout(timeout);
}
}
}

View File

@@ -6,7 +6,6 @@ import { Signature } from "./crypto/crypto.js";
import { RawCoID, SessionID } from "./ids.js";
import { LocalNode } from "./localNode.js";
import { CoValuePriority } from "./priority.js";
import { logSyncMessage } from "./utils.js";
export type CoValueKnownState = {
id: RawCoID;
@@ -143,7 +142,6 @@ export class SyncManager {
}
async handleSyncMessage(msg: SyncMessage, peer: PeerState) {
logSyncMessage("from", peer, msg);
if (peer.erroredCoValues.has(msg.id)) {
console.error(
`Skipping message ${msg.action} on errored coValue ${msg.id} from peer ${peer.id}`,
@@ -453,12 +451,17 @@ export class SyncManager {
dependencyEntry.state.type === "available" ||
dependencyEntry.state.type === "loading"
) {
this.local.loadCoValueCore(msg.id, peer.id).catch((e) => {
console.error(
`Error loading coValue ${msg.id} to create loading state, as dependency of ${msg.asDependencyOf}`,
e,
);
});
this.local
.loadCoValueCore(
msg.id,
peer.role === "storage" ? undefined : peer.id,
)
.catch((e) => {
console.error(
`Error loading coValue ${msg.id} to create loading state, as dependency of ${msg.asDependencyOf}`,
e,
);
});
} else {
throw new Error(
"Expected coValue dependency entry to be created, missing subscribe?",

View File

@@ -57,6 +57,36 @@ describe("PeerState", () => {
consoleSpy.mockRestore();
});
test("should empty the queue when closing", async () => {
const { mockPeer, peerState } = setup();
mockPeer.outgoing.push = vi.fn().mockImplementation((message) => {
return new Promise<void>((resolve) => {
setTimeout(resolve, 100);
});
});
const message1 = peerState.pushOutgoingMessage({
action: "content",
id: "co_z1",
new: {},
priority: CO_VALUE_PRIORITY.HIGH,
});
const message2 = peerState.pushOutgoingMessage({
action: "content",
id: "co_z1",
new: {},
priority: CO_VALUE_PRIORITY.HIGH,
});
peerState.gracefulShutdown();
await Promise.allSettled([message1, message2]);
await expect(message1).resolves.toBe(undefined);
await expect(message2).rejects.toThrow("Peer disconnected");
});
test("should schedule outgoing messages based on their priority", async () => {
const { peerState } = setup();

View File

@@ -388,6 +388,79 @@ describe("CoValueState", () => {
vi.useRealTimers();
});
test("should skip closed peers", async () => {
vi.useFakeTimers();
const mockCoValue = createMockCoValueCore(mockCoValueId);
const peer1 = createMockPeerState(
{
id: "peer1",
role: "storage",
},
async () => {
return new Promise(() => {});
},
);
const peer2 = createMockPeerState(
{
id: "peer1",
role: "server",
},
async () => {
state.dispatch({
type: "available",
coValue: mockCoValue,
});
},
);
peer1.closed = true;
const state = CoValueState.Unknown(mockCoValueId);
const loadPromise = state.loadFromPeers([peer1, peer2]);
for (let i = 0; i < CO_VALUE_LOADING_MAX_RETRIES; i++) {
await vi.runAllTimersAsync();
}
await loadPromise;
expect(peer1.pushOutgoingMessage).toHaveBeenCalledTimes(0);
expect(peer2.pushOutgoingMessage).toHaveBeenCalledTimes(1);
expect(state.state.type).toBe("available");
await expect(state.getCoValue()).resolves.toEqual({ id: mockCoValueId });
vi.useRealTimers();
});
test("should not be stuck in loading state when not getting a response", async () => {
vi.useFakeTimers();
const peer1 = createMockPeerState(
{
id: "peer1",
role: "server",
},
async () => {},
);
const state = CoValueState.Unknown(mockCoValueId);
const loadPromise = state.loadFromPeers([peer1]);
for (let i = 0; i < CO_VALUE_LOADING_MAX_RETRIES * 2; i++) {
await vi.runAllTimersAsync();
}
await loadPromise;
expect(peer1.pushOutgoingMessage).toHaveBeenCalledTimes(5);
expect(state.state.type).toBe("unavailable");
await expect(state.getCoValue()).resolves.toEqual("unavailable");
vi.useRealTimers();
});
});
function createMockPeerState(

View File

@@ -1,21 +0,0 @@
import type { PeerState } from "./PeerState";
import type { SyncMessage } from "./sync";
export function logSyncMessage(
direction: "to" | "from",
peer: PeerState,
msg: SyncMessage,
) {
const directionBox = `background-color: ${direction === "to" ? "yellow" : "red"}; color: ${direction === "to" ? "black" : "white"}; padding: 1px 2px; margin-bottom: 4px; font-style: italic; border: 1px solid hotpink`;
console.log(
`%c${direction === "to" ? "node --->" : "node <----"} ${peer.role}`,
directionBox,
msg.action,
msg.id,
`header:`,
(msg as any).header,
`sessions:`,
(msg as any).sessions,
);
}

View File

@@ -1,5 +1,15 @@
# jazz-browser-media-images
## 0.8.29
### Patch Changes
- Updated dependencies [dcc9c2e]
- Updated dependencies [699553f]
- cojson@0.8.29
- jazz-browser@0.8.29
- jazz-tools@0.8.29
## 0.8.28
### Patch Changes

View File

@@ -1,14 +1,14 @@
{
"name": "jazz-browser-auth-clerk",
"version": "0.8.28",
"version": "0.8.29",
"type": "module",
"main": "dist/index.js",
"types": "src/index.ts",
"license": "MIT",
"dependencies": {
"cojson": "workspace:0.8.28",
"jazz-browser": "workspace:0.8.28",
"jazz-tools": "workspace:0.8.28"
"cojson": "workspace:0.8.29",
"jazz-browser": "workspace:0.8.29",
"jazz-tools": "workspace:0.8.29"
},
"scripts": {
"format-and-lint": "biome check .",

View File

@@ -1,5 +1,12 @@
# jazz-browser-media-images
## 0.8.29
### Patch Changes
- jazz-browser@0.8.29
- jazz-tools@0.8.29
## 0.8.28
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "jazz-browser-media-images",
"version": "0.8.28",
"version": "0.8.29",
"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.28",
"jazz-tools": "workspace:0.8.28",
"jazz-browser": "workspace:0.8.29",
"jazz-tools": "workspace:0.8.29",
"pica": "^9.0.1",
"typescript": "^5.3.3"
},

View File

@@ -1,5 +1,16 @@
# jazz-browser
## 0.8.29
### Patch Changes
- Updated dependencies [dcc9c2e]
- Updated dependencies [699553f]
- cojson-transport-ws@0.8.29
- cojson@0.8.29
- cojson-storage-indexeddb@0.8.29
- jazz-tools@0.8.29
## 0.8.28
### Patch Changes

View File

@@ -1,16 +1,16 @@
{
"name": "jazz-browser",
"version": "0.8.28",
"version": "0.8.29",
"type": "module",
"main": "dist/index.js",
"types": "src/index.ts",
"license": "MIT",
"dependencies": {
"@scure/bip39": "^1.3.0",
"cojson": "workspace:0.8.28",
"cojson-storage-indexeddb": "workspace:0.8.28",
"cojson-transport-ws": "workspace:0.8.28",
"jazz-tools": "workspace:0.8.28",
"cojson": "workspace:0.8.29",
"cojson-storage-indexeddb": "workspace:0.8.29",
"cojson-transport-ws": "workspace:0.8.29",
"jazz-tools": "workspace:0.8.29",
"typescript": "^5.3.3"
},
"scripts": {

View File

@@ -1,4 +1,4 @@
import { LSMStorage, Peer, RawAccountID } from "cojson";
import { LSMStorage, LocalNode, Peer, RawAccountID } from "cojson";
import { IDBStorage } from "cojson-storage-indexeddb";
import {
Account,
@@ -64,12 +64,15 @@ export async function createJazzBrowserContext<Acc extends Account>(
options: BrowserContextOptions<Acc> | BaseBrowserContextOptions,
): Promise<BrowserContext<Acc> | BrowserGuestContext> {
const crypto = options.crypto || (await WasmCrypto.create());
let node: LocalNode | undefined = undefined;
const wsPeer = createWebSocketPeerWithReconnection(
options.peer,
options.reconnectionTimeout,
(peer) => {
node.syncManager.addPeer(peer);
if (node) {
node.syncManager.addPeer(peer);
}
},
);
@@ -106,7 +109,7 @@ export async function createJazzBrowserContext<Acc extends Account>(
peersToLoadFrom,
});
const node =
node =
"account" in context ? context.account._raw.core.node : context.agent.node;
return "account" in context

View File

@@ -1,5 +1,15 @@
# jazz-autosub
## 0.8.29
### Patch Changes
- Updated dependencies [dcc9c2e]
- Updated dependencies [699553f]
- cojson-transport-ws@0.8.29
- cojson@0.8.29
- jazz-tools@0.8.29
## 0.8.28
### Patch Changes

View File

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

View File

@@ -1,5 +1,16 @@
# jazz-browser-media-images
## 0.8.29
### Patch Changes
- Updated dependencies [dcc9c2e]
- Updated dependencies [699553f]
- cojson@0.8.29
- jazz-browser-auth-clerk@0.8.29
- jazz-react@0.8.29
- jazz-tools@0.8.29
## 0.8.28
### Patch Changes

View File

@@ -1,15 +1,15 @@
{
"name": "jazz-react-auth-clerk",
"version": "0.8.28",
"version": "0.8.29",
"type": "module",
"main": "dist/index.js",
"types": "src/index.tsx",
"license": "MIT",
"dependencies": {
"cojson": "workspace:0.8.28",
"jazz-browser-auth-clerk": "workspace:0.8.28",
"jazz-react": "workspace:0.8.28",
"jazz-tools": "workspace:0.8.28"
"cojson": "workspace:0.8.29",
"jazz-browser-auth-clerk": "workspace:0.8.29",
"jazz-react": "workspace:0.8.29",
"jazz-tools": "workspace:0.8.29"
},
"peerDependencies": {
"react": "^18.2.0"

View File

@@ -1,5 +1,11 @@
# jazz-browser-media-images
## 0.8.21
### Patch Changes
- jazz-tools@0.8.29
## 0.8.20
### Patch Changes

View File

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

View File

@@ -1,5 +1,15 @@
# jazz-browser
## 0.8.29
### Patch Changes
- Updated dependencies [dcc9c2e]
- Updated dependencies [699553f]
- cojson-transport-ws@0.8.29
- cojson@0.8.29
- jazz-tools@0.8.29
## 0.8.28
### Patch Changes

View File

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

View File

@@ -1,5 +1,15 @@
# jazz-react
## 0.8.29
### Patch Changes
- Updated dependencies [dcc9c2e]
- Updated dependencies [699553f]
- cojson@0.8.29
- jazz-browser@0.8.29
- jazz-tools@0.8.29
## 0.8.28
### Patch Changes

View File

@@ -1,15 +1,15 @@
{
"name": "jazz-react",
"version": "0.8.28",
"version": "0.8.29",
"type": "module",
"main": "dist/index.js",
"types": "src/index.ts",
"license": "MIT",
"dependencies": {
"@scure/bip39": "^1.3.0",
"cojson": "workspace:0.8.28",
"jazz-browser": "workspace:0.8.28",
"jazz-tools": "workspace:0.8.28"
"cojson": "workspace:0.8.29",
"jazz-browser": "workspace:0.8.29",
"jazz-tools": "workspace:0.8.29"
},
"devDependencies": {
"@types/react": "^18.2.19",

View File

@@ -1,5 +1,16 @@
# jazz-run
## 0.8.29
### Patch Changes
- Updated dependencies [dcc9c2e]
- Updated dependencies [699553f]
- cojson-transport-ws@0.8.29
- cojson@0.8.29
- cojson-storage-sqlite@0.8.29
- jazz-tools@0.8.29
## 0.8.28
### Patch Changes

View File

@@ -3,7 +3,7 @@
"bin": "./dist/index.js",
"type": "module",
"license": "MIT",
"version": "0.8.28",
"version": "0.8.29",
"scripts": {
"format-and-lint": "biome check .",
"format-and-lint:fix": "biome check . --write",
@@ -18,11 +18,11 @@
"@effect/printer-ansi": "^0.34.5",
"@effect/schema": "^0.71.1",
"@effect/typeclass": "^0.25.5",
"cojson": "workspace:0.8.28",
"cojson-storage-sqlite": "workspace:0.8.28",
"cojson-transport-ws": "workspace:0.8.28",
"cojson": "workspace:0.8.29",
"cojson-storage-sqlite": "workspace:0.8.29",
"cojson-transport-ws": "workspace:0.8.29",
"effect": "^3.6.5",
"jazz-tools": "workspace:0.8.28",
"jazz-tools": "workspace:0.8.29",
"ws": "^8.14.2"
},
"devDependencies": {

View File

@@ -1,5 +1,13 @@
# jazz-tools
## 0.8.29
### Patch Changes
- Updated dependencies [dcc9c2e]
- Updated dependencies [699553f]
- cojson@0.8.29
## 0.8.28
### Patch Changes

View File

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

View File

@@ -1,5 +1,15 @@
# jazz-react
## 0.8.17
### Patch Changes
- Updated dependencies [dcc9c2e]
- Updated dependencies [699553f]
- cojson@0.8.29
- jazz-browser@0.8.29
- jazz-tools@0.8.29
## 0.8.16
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "jazz-vue",
"version": "0.8.16",
"version": "0.8.17",
"type": "module",
"main": "dist/index.js",
"types": "src/index.ts",

162
pnpm-lock.yaml generated
View File

@@ -34,8 +34,8 @@ importers:
specifier: ^10.9.1
version: 10.9.2(@swc/core@1.7.22)(@types/node@22.5.1)(typescript@5.6.2)
turbo:
specifier: ^1.11.2
version: 1.11.2
specifier: ^2.3.1
version: 2.3.1
typedoc:
specifier: ^0.25.13
version: 0.25.13(typescript@5.6.2)
@@ -46,7 +46,7 @@ importers:
e2e/BinaryCoStream:
dependencies:
cojson:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/cojson
hash-slash:
specifier: workspace:0.2.1
@@ -55,10 +55,10 @@ importers:
specifier: ^3.0.1
version: 3.0.1
jazz-react:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-react
jazz-tools:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-tools
react:
specifier: 18.3.1
@@ -150,13 +150,13 @@ importers:
specifier: ^2.0.0
version: 2.0.0
jazz-browser-media-images:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-browser-media-images
jazz-react:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-react
jazz-tools:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-tools
next:
specifier: 14.2.5
@@ -205,16 +205,16 @@ importers:
specifier: ^2.0.0
version: 2.0.0
cojson:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/cojson
hash-slash:
specifier: workspace:0.2.1
version: link:../../packages/hash-slash
jazz-react:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-react
jazz-tools:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-tools
lucide-react:
specifier: ^0.274.0
@@ -302,19 +302,19 @@ importers:
specifier: ^2.0.0
version: 2.0.0
cojson:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/cojson
hash-slash:
specifier: workspace:0.2.1
version: link:../../packages/hash-slash
jazz-react:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-react
jazz-react-auth-clerk:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-react-auth-clerk
jazz-tools:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-tools
lucide-react:
specifier: ^0.274.0
@@ -732,10 +732,10 @@ importers:
specifier: ^2.0.0
version: 2.0.0
cojson:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/cojson
cojson-transport-ws:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/cojson-transport-ws
hash-slash:
specifier: workspace:0.2.1
@@ -808,7 +808,7 @@ importers:
specifier: workspace:*
version: link:../../packages/jazz-react
jazz-react-auth-clerk:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-react-auth-clerk
jazz-tools:
specifier: workspace:*
@@ -897,10 +897,10 @@ importers:
specifier: ^2.0.0
version: 2.0.0
jazz-react:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-react
jazz-tools:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-tools
lucide-react:
specifier: ^0.274.0
@@ -1007,10 +1007,10 @@ importers:
examples/password-manager:
dependencies:
jazz-react:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-react
jazz-tools:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-tools
react:
specifier: 18.3.1
@@ -1071,13 +1071,13 @@ importers:
specifier: ^2.0.0
version: 2.0.0
jazz-browser-media-images:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-browser-media-images
jazz-react:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-react
jazz-tools:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-tools
lucide-react:
specifier: ^0.274.0
@@ -1132,7 +1132,7 @@ importers:
specifier: ^3.0.1
version: 3.0.1
jazz-run:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-run
postcss:
specifier: ^8.4.27
@@ -1170,10 +1170,10 @@ importers:
specifier: ^2.0.0
version: 2.0.0
jazz-react:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-react
jazz-tools:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../../packages/jazz-tools
lucide-react:
specifier: ^0.274.0
@@ -1335,7 +1335,7 @@ importers:
packages/cojson-storage-indexeddb:
dependencies:
cojson:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../cojson
devDependencies:
'@vitest/browser':
@@ -1360,7 +1360,7 @@ importers:
specifier: ^8.5.2
version: 8.7.0
cojson:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../cojson
typescript:
specifier: ^5.3.3
@@ -1373,7 +1373,7 @@ importers:
packages/cojson-transport-ws:
dependencies:
cojson:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../cojson
typescript:
specifier: ^5.3.3
@@ -1401,16 +1401,16 @@ importers:
specifier: ^1.3.0
version: 1.3.0
cojson:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../cojson
cojson-storage-indexeddb:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../cojson-storage-indexeddb
cojson-transport-ws:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../cojson-transport-ws
jazz-tools:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../jazz-tools
typescript:
specifier: ^5.3.3
@@ -1419,13 +1419,13 @@ importers:
packages/jazz-browser-auth-clerk:
dependencies:
cojson:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../cojson
jazz-browser:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../jazz-browser
jazz-tools:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../jazz-tools
devDependencies:
typescript:
@@ -1441,10 +1441,10 @@ importers:
specifier: ^4.1.0
version: 4.1.0
jazz-browser:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../jazz-browser
jazz-tools:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../jazz-tools
pica:
specifier: ^9.0.1
@@ -1460,13 +1460,13 @@ importers:
packages/jazz-nodejs:
dependencies:
cojson:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../cojson
cojson-transport-ws:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../cojson-transport-ws
jazz-tools:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../jazz-tools
ws:
specifier: ^8.14.2
@@ -1485,13 +1485,13 @@ importers:
specifier: ^1.3.0
version: 1.3.0
cojson:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../cojson
jazz-browser:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../jazz-browser
jazz-tools:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../jazz-tools
devDependencies:
'@types/react':
@@ -1510,16 +1510,16 @@ importers:
packages/jazz-react-auth-clerk:
dependencies:
cojson:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../cojson
jazz-browser-auth-clerk:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../jazz-browser-auth-clerk
jazz-react:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../jazz-react
jazz-tools:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../jazz-tools
react:
specifier: 18.3.1
@@ -1603,19 +1603,19 @@ importers:
specifier: ^0.25.5
version: 0.25.5(effect@3.6.5)
cojson:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../cojson
cojson-storage-sqlite:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../cojson-storage-sqlite
cojson-transport-ws:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../cojson-transport-ws
effect:
specifier: ^3.6.5
version: 3.6.5
jazz-tools:
specifier: workspace:0.8.28
specifier: workspace:0.8.29
version: link:../jazz-tools
ws:
specifier: ^8.14.2
@@ -9939,41 +9939,41 @@ packages:
tunnel-agent@0.6.0:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
turbo-darwin-64@1.11.2:
resolution: {integrity: sha512-toFmRG/adriZY3hOps7nYCfqHAS+Ci6xqgX3fbo82kkLpC6OBzcXnleSwuPqjHVAaRNhVoB83L5njcE9Qwi2og==}
turbo-darwin-64@2.3.1:
resolution: {integrity: sha512-tjHfjW/Gs8Q9IO+9gPdIsSStZ8I09QYDRT/SyhFTPLnc7O2ZlxHPBVFfjUkHUjanHNYO8CpRGt+zdp1PaMCruw==}
cpu: [x64]
os: [darwin]
turbo-darwin-arm64@1.11.2:
resolution: {integrity: sha512-FCsEDZ8BUSFYEOSC3rrARQrj7x2VOrmVcfrMUIhexTxproRh4QyMxLfr6LALk4ymx6jbDCxWa6Szal8ckldFbA==}
turbo-darwin-arm64@2.3.1:
resolution: {integrity: sha512-At1WStnxCfrBQ4M2g6ynre8WsusGwA11okhVolBxyFUemYozDTtbZwelr+IqNggjT251vviokxOkcFzzogbiFw==}
cpu: [arm64]
os: [darwin]
turbo-linux-64@1.11.2:
resolution: {integrity: sha512-Vzda/o/QyEske5CxLf0wcu7UUS+7zB90GgHZV4tyN+WZtoouTvbwuvZ3V6b5Wgd3OJ/JwWR0CXDK7Sf4VEMr7A==}
turbo-linux-64@2.3.1:
resolution: {integrity: sha512-COwEev7s9fsxLM2eoRCyRLPj+BXvZjFIS+GxzdAubYhoSoZit8B8QGKczyDl6448xhuFEWKrpHhcR9aBuwB4ag==}
cpu: [x64]
os: [linux]
turbo-linux-arm64@1.11.2:
resolution: {integrity: sha512-bRLwovQRz0yxDZrM4tQEAYV0fBHEaTzUF0JZ8RG1UmZt/CqtpnUrJpYb1VK8hj1z46z9YehARpYCwQ2K0qU4yw==}
turbo-linux-arm64@2.3.1:
resolution: {integrity: sha512-AP0uE15Rhxza2Jl+Q3gxdXRA92IIeFAYaufz6CMcZuGy9yZsBlLt9w6T47H6g7XQPzWuw8pzfjM1omcTKkkDpQ==}
cpu: [arm64]
os: [linux]
turbo-stream@2.4.0:
resolution: {integrity: sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==}
turbo-windows-64@1.11.2:
resolution: {integrity: sha512-LgTWqkHAKgyVuLYcEPxZVGPInTjjeCnN5KQMdJ4uQZ+xMDROvMFS2rM93iQl4ieDJgidwHCxxCxaU9u8c3d/Kg==}
turbo-windows-64@2.3.1:
resolution: {integrity: sha512-HDSneq0dNZYZch74c2eygq+OiJE/JYDs7OsGM0yRYVj336383xkUnxz6W2I7qiyMCQXzp4UVUDZXvZhUYcX3BA==}
cpu: [x64]
os: [win32]
turbo-windows-arm64@1.11.2:
resolution: {integrity: sha512-829aVBU7IX0c/B4G7g1VI8KniAGutHhIupkYMgF6xPkYVev2G3MYe6DMS/vsLt9GGM9ulDtdWxWrH5P2ngK8IQ==}
turbo-windows-arm64@2.3.1:
resolution: {integrity: sha512-7/2/sJZiquwoT/jWBCfV0qKq4NarsJPmDRjMcR9dDMIwCYsGM8ljomkDRTCtkNeFcUvYw54MiRWHehWgbcRPsw==}
cpu: [arm64]
os: [win32]
turbo@1.11.2:
resolution: {integrity: sha512-jPC7LVQJzebs5gWf8FmEvsvXGNyKbN+O9qpvv98xpNaM59aS0/Irhd0H0KbcqnXfsz7ETlzOC3R+xFWthC4Z8A==}
turbo@2.3.1:
resolution: {integrity: sha512-vHZe/e6k1HZVKiMQPQ1BWFn53vjVQDFKdkjUq/pBKlRWi1gw9LQO6ntH4qZCcHY1rH6TXgsRmexXdgWl96YvVQ==}
hasBin: true
type-check@0.4.0:
@@ -20671,34 +20671,34 @@ snapshots:
dependencies:
safe-buffer: 5.2.1
turbo-darwin-64@1.11.2:
turbo-darwin-64@2.3.1:
optional: true
turbo-darwin-arm64@1.11.2:
turbo-darwin-arm64@2.3.1:
optional: true
turbo-linux-64@1.11.2:
turbo-linux-64@2.3.1:
optional: true
turbo-linux-arm64@1.11.2:
turbo-linux-arm64@2.3.1:
optional: true
turbo-stream@2.4.0: {}
turbo-windows-64@1.11.2:
turbo-windows-64@2.3.1:
optional: true
turbo-windows-arm64@1.11.2:
turbo-windows-arm64@2.3.1:
optional: true
turbo@1.11.2:
turbo@2.3.1:
optionalDependencies:
turbo-darwin-64: 1.11.2
turbo-darwin-arm64: 1.11.2
turbo-linux-64: 1.11.2
turbo-linux-arm64: 1.11.2
turbo-windows-64: 1.11.2
turbo-windows-arm64: 1.11.2
turbo-darwin-64: 2.3.1
turbo-darwin-arm64: 2.3.1
turbo-linux-64: 2.3.1
turbo-linux-arm64: 2.3.1
turbo-windows-64: 2.3.1
turbo-windows-arm64: 2.3.1
type-check@0.4.0:
dependencies:

View File

@@ -1,6 +1,7 @@
{
"$schema": "https://turbo.build/schema.json",
"pipeline": {
"remoteCache": {},
"tasks": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**"]