jazz-tools 0.15.0 → 0.15.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +47 -47
- package/CHANGELOG.md +23 -0
- package/dist/{chunk-FSIM7N33.js → chunk-VBDJM6Z5.js} +142 -31
- package/dist/chunk-VBDJM6Z5.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/inspector/index.js +147 -102
- package/dist/inspector/index.js.map +1 -1
- package/dist/inspector/viewer/co-plain-text-view.d.ts +5 -0
- package/dist/inspector/viewer/co-plain-text-view.d.ts.map +1 -0
- package/dist/inspector/viewer/new-app.d.ts.map +1 -1
- package/dist/inspector/viewer/page.d.ts.map +1 -1
- package/dist/inspector/viewer/type-icon.d.ts.map +1 -1
- package/dist/inspector/viewer/use-open-inspector.d.ts +2 -0
- package/dist/inspector/viewer/use-open-inspector.d.ts.map +1 -0
- package/dist/inspector/viewer/use-page-path.d.ts.map +1 -1
- package/dist/inspector/viewer/use-resolve-covalue.d.ts +1 -1
- package/dist/inspector/viewer/use-resolve-covalue.d.ts.map +1 -1
- package/dist/inspector/viewer/value-renderer.d.ts.map +1 -1
- package/dist/react-native-core/index.js +2 -18
- package/dist/react-native-core/index.js.map +1 -1
- package/dist/react-native-core/media.d.ts.map +1 -1
- package/dist/testing.js +1 -1
- package/dist/tools/coValues/coFeed.d.ts +9 -0
- package/dist/tools/coValues/coFeed.d.ts.map +1 -1
- package/dist/tools/coValues/coMap.d.ts +98 -2
- package/dist/tools/coValues/coMap.d.ts.map +1 -1
- package/dist/tools/coValues/interfaces.d.ts +3 -0
- package/dist/tools/coValues/interfaces.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts +12 -0
- package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/zodCo.d.ts.map +1 -1
- package/dist/tools/subscribe/CoValueCoreSubscription.d.ts +2 -1
- package/dist/tools/subscribe/CoValueCoreSubscription.d.ts.map +1 -1
- package/dist/tools/subscribe/SubscriptionScope.d.ts +2 -1
- package/dist/tools/subscribe/SubscriptionScope.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/inspector/viewer/co-plain-text-view.tsx +17 -0
- package/src/inspector/viewer/new-app.tsx +2 -1
- package/src/inspector/viewer/page.tsx +5 -0
- package/src/inspector/viewer/type-icon.tsx +1 -0
- package/src/inspector/viewer/use-open-inspector.ts +18 -0
- package/src/inspector/viewer/use-page-path.ts +14 -1
- package/src/inspector/viewer/use-resolve-covalue.ts +1 -1
- package/src/inspector/viewer/value-renderer.tsx +4 -0
- package/src/react-native-core/media.tsx +2 -22
- package/src/tools/coValues/coFeed.ts +38 -0
- package/src/tools/coValues/coMap.ts +118 -14
- package/src/tools/coValues/interfaces.ts +14 -4
- package/src/tools/implementation/zodSchema/schemaTypes/CoMapSchema.ts +38 -0
- package/src/tools/implementation/zodSchema/zodCo.ts +6 -0
- package/src/tools/subscribe/CoValueCoreSubscription.ts +12 -9
- package/src/tools/subscribe/SubscriptionScope.ts +31 -19
- package/src/tools/tests/coFeed.test.ts +69 -0
- package/src/tools/tests/coMap.test.ts +480 -4
- package/src/tools/tests/load.test.ts +2 -1
- package/dist/chunk-FSIM7N33.js.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"CoMapSchema.d.ts","sourceRoot":"","sources":["../../../../../src/tools/implementation/zodSchema/schemaTypes/CoMapSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EACL,OAAO,EACP,KAAK,EACL,KAAK,EACL,aAAa,EACb,mBAAmB,EACnB,QAAQ,EACR,QAAQ,EACR,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AAC/F,OAAO,EAAE,2CAA2C,EAAE,MAAM,kEAAkE,CAAC;AAC/H,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,MAAM,WAAW,CACrB,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,cAAc,EACnC,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAChE,KAAK,SAAS,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,IAC7C,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,GAClC,CAAC,CAAC,qBAAqB,GAAG;IACxB,aAAa,EAAE,IAAI,CAAC;IAEpB,MAAM,EAAE,CACN,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EACnC,OAAO,CAAC,EACJ;QACE,KAAK,EAAE,KAAK,CAAC;QACb,MAAM,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;KAC1C,GACD,KAAK,KACN,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACrC,EAAE,GACF;QACE,CAAC,UAAU,GAAG,IAAI,MAAM,KAAK,GAAG,2BAA2B,CACzD,KAAK,CAAC,GAAG,CAAC,CACX;KACF,CAAC,GACJ,CAAC,OAAO,SAAS,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAClC,EAAE,GACF;QACE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;KACtC,CAAC,GACN,KAAK,CAAC;IAER,IAAI,CACF,KAAK,CAAC,CAAC,SAAS,aAAa,CAC3B,QAAQ,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CACvD,GAAG,IAAI,EAER,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,mBAAmB,CAC3B,QAAQ,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,EACtD,CAAC,CACF,CAAC;QACF,MAAM,CAAC,EAAE,OAAO,GAAG,kBAAkB,CAAC;
|
1
|
+
{"version":3,"file":"CoMapSchema.d.ts","sourceRoot":"","sources":["../../../../../src/tools/implementation/zodSchema/schemaTypes/CoMapSchema.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"zodCo.d.ts","sourceRoot":"","sources":["../../../../src/tools/implementation/zodSchema/zodCo.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,EACb,cAAc,EAEd,YAAY,EACZ,YAAY,EACZ,WAAW,EAEX,eAAe,EACf,cAAc,EAId,gBAAgB,EAChB,eAAe,EACf,eAAe,EAGhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;
|
1
|
+
{"version":3,"file":"zodCo.d.ts","sourceRoot":"","sources":["../../../../src/tools/implementation/zodSchema/zodCo.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,EACb,cAAc,EAEd,YAAY,EACZ,YAAY,EACZ,WAAW,EAEX,eAAe,EACf,cAAc,EAId,gBAAgB,EAChB,eAAe,EACf,eAAe,EAGhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AAoDrC,eAAO,MAAM,YAAY,GAAI,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,cAAc,SACvD,KAAK,KACX,WAAW,CAAC,KAAK,CAMnB,CAAC;AA8DF,eAAO,MAAM,gBAAgB,GAC3B,KAAK,SAAS;IACZ,OAAO,EAAE,cAAc,CAAC;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAChC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/C,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACtD,CAAC,CAAC;IACH,IAAI,EAAE,cAAc,CAAC;CACtB,UAEM,KAAK,KAQX,aAAa,CAAC,KAAK,CAMrB,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EACnC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,YAEf,CAAC,aACA,CAAC,KACX,cAAc,CAAC,CAAC,EAAE,CAAC,CAKrB,CAAC;AA4BF,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,WAC5C,CAAC,KACT,YAAY,CAAC,CAAC,CAMhB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,cAAc;UAhJf,EAAG,IACxB,CAAC,UAAU;WAAkB,EAAG,IAAI,CAAC,YAClC,CAAC,EAAE,IAAI,CAAC,UAAU;iBAGf,EAAG,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,UAEnC;WA2IS,KAAK,GAAG;IACb,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/C,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;CACtD,KACA,eAAe,CAAC,KAAK,CAQvB,CAAC;AAiCF,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,WAC5C,CAAC,KACT,YAAY,CAAC,CAAC,CAEhB,CAAC;AAgCF,eAAO,MAAM,mBAAmB,QAAO,gBAEtC,CAAC;AA6BF,eAAO,MAAM,kBAAkB,QAAO,eAErC,CAAC;AA0BF,eAAO,MAAM,iBAAiB,QAAO,cAEpC,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,OAAO,eAExC,CAAC"}
|
@@ -3,10 +3,11 @@ export declare class CoValueCoreSubscription {
|
|
3
3
|
node: LocalNode;
|
4
4
|
id: string;
|
5
5
|
listener: (value: RawCoValue | "unavailable") => void;
|
6
|
+
skipRetry?: boolean | undefined;
|
6
7
|
_unsubscribe: () => void;
|
7
8
|
unsubscribed: boolean;
|
8
9
|
value: RawCoMap | undefined;
|
9
|
-
constructor(node: LocalNode, id: string, listener: (value: RawCoValue | "unavailable") => void);
|
10
|
+
constructor(node: LocalNode, id: string, listener: (value: RawCoValue | "unavailable") => void, skipRetry?: boolean | undefined);
|
10
11
|
subscribeToState(): void;
|
11
12
|
subscribe(value: RawCoValue): void;
|
12
13
|
unsubscribe(): void;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"CoValueCoreSubscription.d.ts","sourceRoot":"","sources":["../../../src/tools/subscribe/CoValueCoreSubscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEtE,qBAAa,uBAAuB;IAOzB,IAAI,EAAE,SAAS;IACf,EAAE,EAAE,MAAM;IACV,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,KAAK,IAAI;
|
1
|
+
{"version":3,"file":"CoValueCoreSubscription.d.ts","sourceRoot":"","sources":["../../../src/tools/subscribe/CoValueCoreSubscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEtE,qBAAa,uBAAuB;IAOzB,IAAI,EAAE,SAAS;IACf,EAAE,EAAE,MAAM;IACV,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,KAAK,IAAI;IACrD,SAAS,CAAC,EAAE,OAAO;IAT5B,YAAY,EAAE,MAAM,IAAI,CAAY;IACpC,YAAY,UAAS;IAErB,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;gBAGnB,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,KAAK,IAAI,EACrD,SAAS,CAAC,EAAE,OAAO,YAAA;IAsB5B,gBAAgB;IAwBhB,SAAS,CAAC,KAAK,EAAE,UAAU;IAU3B,WAAW;CAKZ"}
|
@@ -7,6 +7,7 @@ export declare class SubscriptionScope<D extends CoValue> {
|
|
7
7
|
node: LocalNode;
|
8
8
|
id: ID<D>;
|
9
9
|
schema: RefEncoded<D>;
|
10
|
+
skipRetry?: boolean | undefined;
|
10
11
|
childNodes: Map<string, SubscriptionScope<CoValue>>;
|
11
12
|
childValues: Map<string, SubscriptionValue<any, any> | Unloaded>;
|
12
13
|
value: SubscriptionValue<D, any> | Unloaded;
|
@@ -24,7 +25,7 @@ export declare class SubscriptionScope<D extends CoValue> {
|
|
24
25
|
migrated: boolean;
|
25
26
|
migrating: boolean;
|
26
27
|
silenceUpdates: boolean;
|
27
|
-
constructor(node: LocalNode, resolve: RefsToResolve<D>, id: ID<D>, schema: RefEncoded<D
|
28
|
+
constructor(node: LocalNode, resolve: RefsToResolve<D>, id: ID<D>, schema: RefEncoded<D>, skipRetry?: boolean | undefined);
|
28
29
|
updateValue(value: SubscriptionValue<D, any>): void;
|
29
30
|
handleUpdate(update: RawCoValue | "unavailable"): void;
|
30
31
|
computeChildErrors(): JazzError | undefined;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"SubscriptionScope.d.ts","sourceRoot":"","sources":["../../../src/tools/subscribe/SubscriptionScope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,EAEL,MAAM,EACN,KAAK,EACL,KAAK,OAAO,EACZ,KAAK,EAAE,EACP,KAAK,UAAU,EACf,KAAK,aAAa,EAGnB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG9D,qBAAa,iBAAiB,CAAC,CAAC,SAAS,OAAO;IAwBrC,IAAI,EAAE,SAAS;IAEf,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACT,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"SubscriptionScope.d.ts","sourceRoot":"","sources":["../../../src/tools/subscribe/SubscriptionScope.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -139,7 +139,7 @@
|
|
139
139
|
},
|
140
140
|
"type": "module",
|
141
141
|
"license": "MIT",
|
142
|
-
"version": "0.15.
|
142
|
+
"version": "0.15.2",
|
143
143
|
"dependencies": {
|
144
144
|
"@manuscripts/prosemirror-recreate-steps": "^0.1.4",
|
145
145
|
"@op-engineering/op-sqlite": "^11.4.8",
|
@@ -164,10 +164,10 @@
|
|
164
164
|
"react-native-nitro-modules": "0.25.2",
|
165
165
|
"react-native-quick-crypto": "1.0.0-beta.16",
|
166
166
|
"zod": "3.25.28",
|
167
|
-
"cojson": "0.15.
|
168
|
-
"cojson-storage": "0.15.
|
169
|
-
"cojson-storage-indexeddb": "0.15.
|
170
|
-
"cojson-transport-ws": "0.15.
|
167
|
+
"cojson": "0.15.2",
|
168
|
+
"cojson-storage": "0.15.2",
|
169
|
+
"cojson-storage-indexeddb": "0.15.2",
|
170
|
+
"cojson-transport-ws": "0.15.2"
|
171
171
|
},
|
172
172
|
"devDependencies": {
|
173
173
|
"@scure/bip39": "^1.3.0",
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { JsonObject } from "cojson";
|
2
|
+
import { RawDataCard } from "./raw-data-card.js";
|
3
|
+
|
4
|
+
export function CoPlainTextView({
|
5
|
+
data,
|
6
|
+
}: {
|
7
|
+
data: JsonObject;
|
8
|
+
}) {
|
9
|
+
if (!data) return;
|
10
|
+
|
11
|
+
return (
|
12
|
+
<>
|
13
|
+
<p>{Object.values(data).join("")}</p>
|
14
|
+
<RawDataCard data={data} />
|
15
|
+
</>
|
16
|
+
);
|
17
|
+
}
|
@@ -12,6 +12,7 @@ import { Account } from "jazz-tools";
|
|
12
12
|
import { GlobalStyles } from "../ui/global-styles.js";
|
13
13
|
import { Heading } from "../ui/heading.js";
|
14
14
|
import { InspectorButton, type Position } from "./inpsector-button.js";
|
15
|
+
import { useOpenInspector } from "./use-open-inspector.js";
|
15
16
|
|
16
17
|
const InspectorContainer = styled("div")`
|
17
18
|
position: fixed;
|
@@ -85,7 +86,7 @@ export function JazzInspectorInternal({
|
|
85
86
|
localNode?: LocalNode;
|
86
87
|
accountId?: CoID<RawAccount>;
|
87
88
|
}) {
|
88
|
-
const [open, setOpen] =
|
89
|
+
const [open, setOpen] = useOpenInspector();
|
89
90
|
const [coValueId, setCoValueId] = useState<CoID<RawCoValue> | "">("");
|
90
91
|
const { path, addPages, goToIndex, goBack, setPage } = usePagePath();
|
91
92
|
|
@@ -6,6 +6,7 @@ import { Heading } from "../ui/heading.js";
|
|
6
6
|
import { Text } from "../ui/text.js";
|
7
7
|
import { AccountOrGroupText } from "./account-or-group-text.js";
|
8
8
|
import { AccountView } from "./account-view.js";
|
9
|
+
import { CoPlainTextView } from "./co-plain-text-view.js";
|
9
10
|
import { CoStreamView } from "./co-stream-view.js";
|
10
11
|
import { GridView } from "./grid-view.js";
|
11
12
|
import { GroupView } from "./group-view.js";
|
@@ -113,6 +114,10 @@ function View(
|
|
113
114
|
return <AccountView data={snapshot} node={node} onNavigate={onNavigate} />;
|
114
115
|
}
|
115
116
|
|
117
|
+
if (type === "coplaintext") {
|
118
|
+
return <CoPlainTextView data={snapshot} />;
|
119
|
+
}
|
120
|
+
|
116
121
|
if (type === "colist" || extendedType === "record") {
|
117
122
|
return <TableView data={snapshot} node={node} onNavigate={onNavigate} />;
|
118
123
|
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { useEffect, useState } from "react";
|
2
|
+
|
3
|
+
const STORAGE_KEY = "jazz-inspector-open";
|
4
|
+
|
5
|
+
export function useOpenInspector() {
|
6
|
+
const [open, setOpen] = useState(() => {
|
7
|
+
// Initialize from localStorage if available
|
8
|
+
const stored = localStorage.getItem(STORAGE_KEY);
|
9
|
+
return stored ? JSON.parse(stored) : false;
|
10
|
+
});
|
11
|
+
|
12
|
+
// Update localStorage when open state changes
|
13
|
+
useEffect(() => {
|
14
|
+
localStorage.setItem(STORAGE_KEY, JSON.stringify(open));
|
15
|
+
}, [open]);
|
16
|
+
|
17
|
+
return [open, setOpen];
|
18
|
+
}
|
@@ -2,11 +2,24 @@ import { CoID, RawCoValue } from "cojson";
|
|
2
2
|
import { useCallback, useEffect, useState } from "react";
|
3
3
|
import { PageInfo } from "./types.js";
|
4
4
|
|
5
|
+
const STORAGE_KEY = "jazz-inspector-paths";
|
6
|
+
|
5
7
|
export function usePagePath(defaultPath?: PageInfo[]) {
|
6
|
-
const [path, setPath] = useState<PageInfo[]>(
|
8
|
+
const [path, setPath] = useState<PageInfo[]>(() => {
|
9
|
+
const stored = localStorage.getItem(STORAGE_KEY);
|
10
|
+
if (stored) {
|
11
|
+
try {
|
12
|
+
return JSON.parse(stored);
|
13
|
+
} catch (e) {
|
14
|
+
console.warn("Failed to parse stored path:", e);
|
15
|
+
}
|
16
|
+
}
|
17
|
+
return defaultPath || [];
|
18
|
+
});
|
7
19
|
|
8
20
|
const updatePath = useCallback((newPath: PageInfo[]) => {
|
9
21
|
setPath(newPath);
|
22
|
+
localStorage.setItem(STORAGE_KEY, JSON.stringify(newPath));
|
10
23
|
}, []);
|
11
24
|
|
12
25
|
useEffect(() => {
|
@@ -8,7 +8,7 @@ import {
|
|
8
8
|
import { useEffect, useState } from "react";
|
9
9
|
import { detectCoStreamType } from "./co-stream-view.js";
|
10
10
|
|
11
|
-
export type CoJsonType = "comap" | "costream" | "colist";
|
11
|
+
export type CoJsonType = "comap" | "costream" | "colist" | "coplaintext";
|
12
12
|
export type ExtendedCoJsonType =
|
13
13
|
| "image"
|
14
14
|
| "record"
|
@@ -26,28 +26,8 @@ export function useProgressiveImgNative({
|
|
26
26
|
if (highestRes && highestRes.res !== lastHighestRes) {
|
27
27
|
lastHighestRes = highestRes.res;
|
28
28
|
// use the base64 data directly
|
29
|
-
const
|
30
|
-
if (
|
31
|
-
// convert chunks to base64
|
32
|
-
const totalLength = chunks.chunks.reduce(
|
33
|
-
(acc, chunk) => acc + chunk.length,
|
34
|
-
0,
|
35
|
-
);
|
36
|
-
const combinedArray = new Uint8Array(totalLength);
|
37
|
-
let offset = 0;
|
38
|
-
chunks.chunks.forEach((chunk) => {
|
39
|
-
combinedArray.set(chunk, offset);
|
40
|
-
offset += chunk.length;
|
41
|
-
});
|
42
|
-
|
43
|
-
// Create data URL
|
44
|
-
const base64 = btoa(
|
45
|
-
Array.from(combinedArray, (byte) => String.fromCharCode(byte)).join(
|
46
|
-
"",
|
47
|
-
),
|
48
|
-
);
|
49
|
-
const dataUrl = `data:${chunks.mimeType};base64,${base64}`;
|
50
|
-
|
29
|
+
const dataUrl = highestRes.stream.asBase64({ dataURL: true });
|
30
|
+
if (dataUrl) {
|
51
31
|
setCurrent({
|
52
32
|
src: dataUrl,
|
53
33
|
res: highestRes.res,
|
@@ -774,6 +774,44 @@ export class FileStream extends CoValueBase implements CoValue {
|
|
774
774
|
});
|
775
775
|
}
|
776
776
|
|
777
|
+
static async loadAsBase64(
|
778
|
+
id: ID<FileStream>,
|
779
|
+
options?: {
|
780
|
+
allowUnfinished?: boolean;
|
781
|
+
loadAs?: Account | AnonymousJazzAgent;
|
782
|
+
dataURL?: boolean;
|
783
|
+
},
|
784
|
+
): Promise<string | undefined> {
|
785
|
+
const stream = await this.load(id, options);
|
786
|
+
|
787
|
+
return stream?.asBase64(options);
|
788
|
+
}
|
789
|
+
|
790
|
+
asBase64(options?: {
|
791
|
+
allowUnfinished?: boolean;
|
792
|
+
dataURL?: boolean;
|
793
|
+
}): string | undefined {
|
794
|
+
const chunks = this.getChunks(options);
|
795
|
+
|
796
|
+
if (!chunks) return undefined;
|
797
|
+
|
798
|
+
const output = [];
|
799
|
+
|
800
|
+
for (const chunk of chunks.chunks) {
|
801
|
+
for (const byte of chunk) {
|
802
|
+
output.push(String.fromCharCode(byte));
|
803
|
+
}
|
804
|
+
}
|
805
|
+
|
806
|
+
const base64 = btoa(output.join(""));
|
807
|
+
|
808
|
+
if (options?.dataURL) {
|
809
|
+
return `data:${chunks.mimeType};base64,${base64}`;
|
810
|
+
}
|
811
|
+
|
812
|
+
return base64;
|
813
|
+
}
|
814
|
+
|
777
815
|
/**
|
778
816
|
* Create a `FileStream` from a `Blob` or `File`
|
779
817
|
*
|
@@ -10,12 +10,10 @@ import {
|
|
10
10
|
} from "cojson";
|
11
11
|
import type {
|
12
12
|
AnonymousJazzAgent,
|
13
|
-
AnyAccountSchema,
|
14
13
|
CoValue,
|
15
14
|
CoValueClass,
|
16
15
|
Group,
|
17
16
|
ID,
|
18
|
-
InstanceOfSchema,
|
19
17
|
RefEncoded,
|
20
18
|
RefIfCoValue,
|
21
19
|
RefsToResolve,
|
@@ -319,18 +317,7 @@ export class CoMap extends CoValueBase implements CoValue {
|
|
319
317
|
) {
|
320
318
|
const instance = new this();
|
321
319
|
|
322
|
-
|
323
|
-
const raw = instance.rawFromInit(init, owner, uniqueness);
|
324
|
-
|
325
|
-
Object.defineProperties(instance, {
|
326
|
-
id: {
|
327
|
-
value: raw.id,
|
328
|
-
enumerable: false,
|
329
|
-
},
|
330
|
-
_raw: { value: raw, enumerable: false },
|
331
|
-
});
|
332
|
-
|
333
|
-
return instance;
|
320
|
+
return instance._createCoMap(init, options);
|
334
321
|
}
|
335
322
|
|
336
323
|
/**
|
@@ -388,6 +375,30 @@ export class CoMap extends CoValueBase implements CoValue {
|
|
388
375
|
return this.toJSON();
|
389
376
|
}
|
390
377
|
|
378
|
+
_createCoMap(
|
379
|
+
init: Simplify<CoMapInit<typeof this>>,
|
380
|
+
options?:
|
381
|
+
| {
|
382
|
+
owner: Account | Group;
|
383
|
+
unique?: CoValueUniqueness["uniqueness"];
|
384
|
+
}
|
385
|
+
| Account
|
386
|
+
| Group,
|
387
|
+
): typeof this {
|
388
|
+
const { owner, uniqueness } = parseCoValueCreateOptions(options);
|
389
|
+
const raw = this.rawFromInit(init, owner, uniqueness);
|
390
|
+
|
391
|
+
Object.defineProperties(this, {
|
392
|
+
id: {
|
393
|
+
value: raw.id,
|
394
|
+
enumerable: false,
|
395
|
+
},
|
396
|
+
_raw: { value: raw, enumerable: false },
|
397
|
+
});
|
398
|
+
|
399
|
+
return this;
|
400
|
+
}
|
401
|
+
|
391
402
|
/**
|
392
403
|
* Create a new `RawCoMap` from an initialization object
|
393
404
|
* @internal
|
@@ -490,6 +501,7 @@ export class CoMap extends CoValueBase implements CoValue {
|
|
490
501
|
options?: {
|
491
502
|
resolve?: RefsToResolveStrict<M, R>;
|
492
503
|
loadAs?: Account | AnonymousJazzAgent;
|
504
|
+
skipRetry?: boolean;
|
493
505
|
},
|
494
506
|
): Promise<Resolved<M, R> | null> {
|
495
507
|
return loadCoValueWithoutMe(this, id, options);
|
@@ -542,11 +554,22 @@ export class CoMap extends CoValueBase implements CoValue {
|
|
542
554
|
return subscribeToCoValueWithoutMe<M, R>(this, id, options, listener);
|
543
555
|
}
|
544
556
|
|
557
|
+
/** @deprecated Use `CoMap.upsertUnique` and `CoMap.loadUnique` instead. */
|
545
558
|
static findUnique<M extends CoMap>(
|
546
559
|
this: CoValueClass<M>,
|
547
560
|
unique: CoValueUniqueness["uniqueness"],
|
548
561
|
ownerID: ID<Account> | ID<Group>,
|
549
562
|
as?: Account | Group | AnonymousJazzAgent,
|
563
|
+
) {
|
564
|
+
return CoMap._findUnique(unique, ownerID, as);
|
565
|
+
}
|
566
|
+
|
567
|
+
/** @internal */
|
568
|
+
static _findUnique<M extends CoMap>(
|
569
|
+
this: CoValueClass<M>,
|
570
|
+
unique: CoValueUniqueness["uniqueness"],
|
571
|
+
ownerID: ID<Account> | ID<Group>,
|
572
|
+
as?: Account | Group | AnonymousJazzAgent,
|
550
573
|
) {
|
551
574
|
as ||= activeAccountContext.get();
|
552
575
|
|
@@ -564,6 +587,87 @@ export class CoMap extends CoValueBase implements CoValue {
|
|
564
587
|
return cojsonInternals.idforHeader(header, crypto) as ID<M>;
|
565
588
|
}
|
566
589
|
|
590
|
+
/**
|
591
|
+
* Given some data, updates an existing CoMap or initialises a new one if none exists.
|
592
|
+
*
|
593
|
+
* Note: This method respects resolve options, and thus can return `null` if the references cannot be resolved.
|
594
|
+
*
|
595
|
+
* @example
|
596
|
+
* ```ts
|
597
|
+
* const activeEvent = await Event.upsertUnique(
|
598
|
+
* sourceData.identifier,
|
599
|
+
* workspace.id,
|
600
|
+
* {
|
601
|
+
* title: sourceData.title,
|
602
|
+
* identifier: sourceData.identifier,
|
603
|
+
* external_id: sourceData._id,
|
604
|
+
* },
|
605
|
+
* workspace
|
606
|
+
* );
|
607
|
+
* ```
|
608
|
+
*
|
609
|
+
* @param options The options for creating or loading the CoMap. This includes the intended state of the CoMap, its unique identifier, its owner, and the references to resolve.
|
610
|
+
* @returns Either an existing & modified CoMap, or a new initialised CoMap if none exists.
|
611
|
+
* @category Subscription & Loading
|
612
|
+
*/
|
613
|
+
static async upsertUnique<
|
614
|
+
M extends CoMap,
|
615
|
+
const R extends RefsToResolve<M> = true,
|
616
|
+
>(
|
617
|
+
this: CoValueClass<M>,
|
618
|
+
options: {
|
619
|
+
value: Simplify<CoMapInit<M>>;
|
620
|
+
unique: CoValueUniqueness["uniqueness"];
|
621
|
+
owner: Account | Group;
|
622
|
+
resolve?: RefsToResolveStrict<M, R>;
|
623
|
+
},
|
624
|
+
): Promise<Resolved<M, R> | null> {
|
625
|
+
let mapId = CoMap._findUnique(options.unique, options.owner.id);
|
626
|
+
let map: Resolved<M, R> | null = await loadCoValueWithoutMe(this, mapId, {
|
627
|
+
...options,
|
628
|
+
loadAs: options.owner._loadedAs,
|
629
|
+
skipRetry: true,
|
630
|
+
});
|
631
|
+
if (!map) {
|
632
|
+
const instance = new this();
|
633
|
+
map = instance._createCoMap(options.value, {
|
634
|
+
owner: options.owner,
|
635
|
+
unique: options.unique,
|
636
|
+
}) as Resolved<M, R>;
|
637
|
+
} else {
|
638
|
+
(map as M).applyDiff(options.value as Partial<CoMapInit<M>>);
|
639
|
+
}
|
640
|
+
|
641
|
+
return await loadCoValueWithoutMe(this, mapId, {
|
642
|
+
...options,
|
643
|
+
loadAs: options.owner._loadedAs,
|
644
|
+
skipRetry: true,
|
645
|
+
});
|
646
|
+
}
|
647
|
+
|
648
|
+
/**
|
649
|
+
* Loads a CoMap by its unique identifier and owner's ID.
|
650
|
+
* @param unique The unique identifier of the CoMap to load.
|
651
|
+
* @param ownerID The ID of the owner of the CoMap.
|
652
|
+
* @param options Additional options for loading the CoMap.
|
653
|
+
* @returns The loaded CoMap, or null if unavailable.
|
654
|
+
*/
|
655
|
+
static loadUnique<M extends CoMap, const R extends RefsToResolve<M> = true>(
|
656
|
+
this: CoValueClass<M>,
|
657
|
+
unique: CoValueUniqueness["uniqueness"],
|
658
|
+
ownerID: ID<Account> | ID<Group>,
|
659
|
+
options?: {
|
660
|
+
resolve?: RefsToResolveStrict<M, R>;
|
661
|
+
loadAs?: Account | AnonymousJazzAgent;
|
662
|
+
},
|
663
|
+
): Promise<Resolved<M, R> | null> {
|
664
|
+
return loadCoValueWithoutMe(
|
665
|
+
this,
|
666
|
+
CoMap._findUnique(unique, ownerID, options?.loadAs),
|
667
|
+
{ ...options, skipRetry: true },
|
668
|
+
);
|
669
|
+
}
|
670
|
+
|
567
671
|
/**
|
568
672
|
* Given an already loaded `CoMap`, ensure that the specified fields are loaded to the specified depth.
|
569
673
|
*
|
@@ -90,6 +90,7 @@ export function loadCoValueWithoutMe<
|
|
90
90
|
options?: {
|
91
91
|
resolve?: RefsToResolveStrict<V, R>;
|
92
92
|
loadAs?: Account | AnonymousJazzAgent;
|
93
|
+
skipRetry?: boolean;
|
93
94
|
},
|
94
95
|
): Promise<Resolved<V, R> | null> {
|
95
96
|
return loadCoValue(cls, id, {
|
@@ -107,6 +108,7 @@ export function loadCoValue<
|
|
107
108
|
options: {
|
108
109
|
resolve?: RefsToResolveStrict<V, R>;
|
109
110
|
loadAs: Account | AnonymousJazzAgent;
|
111
|
+
skipRetry?: boolean;
|
110
112
|
},
|
111
113
|
): Promise<Resolved<V, R> | null> {
|
112
114
|
return new Promise((resolve) => {
|
@@ -117,6 +119,7 @@ export function loadCoValue<
|
|
117
119
|
resolve: options.resolve,
|
118
120
|
loadAs: options.loadAs,
|
119
121
|
syncResolution: true,
|
122
|
+
skipRetry: options.skipRetry,
|
120
123
|
onUnavailable: () => {
|
121
124
|
resolve(null);
|
122
125
|
},
|
@@ -242,6 +245,7 @@ export function subscribeToCoValue<
|
|
242
245
|
onUnavailable?: () => void;
|
243
246
|
onUnauthorized?: () => void;
|
244
247
|
syncResolution?: boolean;
|
248
|
+
skipRetry?: boolean;
|
245
249
|
},
|
246
250
|
listener: SubscribeListener<V, R>,
|
247
251
|
): () => void {
|
@@ -252,10 +256,16 @@ export function subscribeToCoValue<
|
|
252
256
|
|
253
257
|
let unsubscribed = false;
|
254
258
|
|
255
|
-
const rootNode = new SubscriptionScope<V>(
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
+
const rootNode = new SubscriptionScope<V>(
|
260
|
+
node,
|
261
|
+
resolve,
|
262
|
+
id as ID<V>,
|
263
|
+
{
|
264
|
+
ref: cls,
|
265
|
+
optional: false,
|
266
|
+
},
|
267
|
+
options.skipRetry,
|
268
|
+
);
|
259
269
|
|
260
270
|
const handleUpdate = (value: SubscriptionValue<V, any>) => {
|
261
271
|
if (unsubscribed) return;
|
@@ -57,6 +57,7 @@ export type CoMapSchema<
|
|
57
57
|
R
|
58
58
|
>;
|
59
59
|
loadAs?: Account | AnonymousJazzAgent;
|
60
|
+
skipRetry?: boolean;
|
60
61
|
},
|
61
62
|
): Promise<Resolved<
|
62
63
|
Simplify<CoMapInstanceCoValuesNullable<Shape>> & CoMap,
|
@@ -82,12 +83,49 @@ export type CoMapSchema<
|
|
82
83
|
) => void,
|
83
84
|
): () => void;
|
84
85
|
|
86
|
+
/** @deprecated Use `CoMap.upsertUnique` and `CoMap.loadUnique` instead. */
|
85
87
|
findUnique(
|
86
88
|
unique: CoValueUniqueness["uniqueness"],
|
87
89
|
ownerID: string,
|
88
90
|
as?: Account | Group | AnonymousJazzAgent,
|
89
91
|
): string;
|
90
92
|
|
93
|
+
upsertUnique: <
|
94
|
+
const R extends RefsToResolve<
|
95
|
+
Simplify<CoMapInstanceCoValuesNullable<Shape>> & CoMap
|
96
|
+
> = true,
|
97
|
+
>(options: {
|
98
|
+
value: Simplify<CoMapInitZod<Shape>>;
|
99
|
+
unique: CoValueUniqueness["uniqueness"];
|
100
|
+
owner: Owner;
|
101
|
+
resolve?: RefsToResolveStrict<
|
102
|
+
Simplify<CoMapInstanceCoValuesNullable<Shape>> & CoMap,
|
103
|
+
R
|
104
|
+
>;
|
105
|
+
}) => Promise<Resolved<
|
106
|
+
Simplify<CoMapInstanceCoValuesNullable<Shape>> & CoMap,
|
107
|
+
R
|
108
|
+
> | null>;
|
109
|
+
|
110
|
+
loadUnique<
|
111
|
+
const R extends RefsToResolve<
|
112
|
+
Simplify<CoMapInstanceCoValuesNullable<Shape>> & CoMap
|
113
|
+
> = true,
|
114
|
+
>(
|
115
|
+
unique: CoValueUniqueness["uniqueness"],
|
116
|
+
ownerID: string,
|
117
|
+
options?: {
|
118
|
+
resolve?: RefsToResolveStrict<
|
119
|
+
Simplify<CoMapInstanceCoValuesNullable<Shape>> & CoMap,
|
120
|
+
R
|
121
|
+
>;
|
122
|
+
loadAs?: Account | AnonymousJazzAgent;
|
123
|
+
},
|
124
|
+
): Promise<Resolved<
|
125
|
+
Simplify<CoMapInstanceCoValuesNullable<Shape>> & CoMap,
|
126
|
+
R
|
127
|
+
> | null>;
|
128
|
+
|
91
129
|
catchall<T extends z.core.$ZodType>(
|
92
130
|
schema: T,
|
93
131
|
): CoMapSchema<Shape, z.core.$catchall<T>>;
|
@@ -44,6 +44,12 @@ function enrichCoMapSchema<Shape extends z.core.$ZodLooseShape>(
|
|
44
44
|
findUnique: (...args: any[]) => {
|
45
45
|
return coSchema.findUnique(...args);
|
46
46
|
},
|
47
|
+
upsertUnique: (...args: any[]) => {
|
48
|
+
return coSchema.upsertUnique(...args);
|
49
|
+
},
|
50
|
+
loadUnique: (...args: any[]) => {
|
51
|
+
return coSchema.loadUnique(...args);
|
52
|
+
},
|
47
53
|
catchall: (index: z.core.$ZodType) => {
|
48
54
|
return enrichCoMapSchema(baseCatchall(index));
|
49
55
|
},
|
@@ -10,22 +10,25 @@ export class CoValueCoreSubscription {
|
|
10
10
|
public node: LocalNode,
|
11
11
|
public id: string,
|
12
12
|
public listener: (value: RawCoValue | "unavailable") => void,
|
13
|
+
public skipRetry?: boolean,
|
13
14
|
) {
|
14
15
|
const entry = this.node.getCoValue(this.id as any);
|
15
16
|
|
16
17
|
if (entry?.isAvailable()) {
|
17
18
|
this.subscribe(entry.getCurrentContent());
|
18
19
|
} else {
|
19
|
-
this.node
|
20
|
-
|
20
|
+
this.node
|
21
|
+
.loadCoValueCore(this.id as any, undefined, skipRetry)
|
22
|
+
.then((value) => {
|
23
|
+
if (this.unsubscribed) return;
|
21
24
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
if (value.isAvailable()) {
|
26
|
+
this.subscribe(value.getCurrentContent());
|
27
|
+
} else {
|
28
|
+
this.subscribeToState();
|
29
|
+
this.listener("unavailable");
|
30
|
+
}
|
31
|
+
});
|
29
32
|
}
|
30
33
|
}
|
31
34
|
|