jazz-tools 0.18.2 → 0.18.4
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 +43 -41
- package/CHANGELOG.md +20 -0
- package/dist/{chunk-IERUTUXB.js → chunk-LHQQZH7I.js} +121 -36
- package/dist/chunk-LHQQZH7I.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/media/{chunk-KR2V6X2N.js → chunk-W3S526L3.js} +96 -93
- package/dist/media/chunk-W3S526L3.js.map +1 -0
- package/dist/media/create-image/browser.d.ts +43 -0
- package/dist/media/create-image/browser.d.ts.map +1 -0
- package/dist/media/create-image/react-native.d.ts +37 -0
- package/dist/media/create-image/react-native.d.ts.map +1 -0
- package/dist/media/create-image/server.d.ts +34 -0
- package/dist/media/create-image/server.d.ts.map +1 -0
- package/dist/media/create-image/server.test.d.ts +2 -0
- package/dist/media/create-image/server.test.d.ts.map +1 -0
- package/dist/media/{create-image.d.ts → create-image-factory.d.ts} +8 -7
- package/dist/media/create-image-factory.d.ts.map +1 -0
- package/dist/media/create-image-factory.test.d.ts +2 -0
- package/dist/media/create-image-factory.test.d.ts.map +1 -0
- package/dist/media/exports.d.ts +3 -0
- package/dist/media/exports.d.ts.map +1 -0
- package/dist/media/index.browser.d.ts +2 -14
- package/dist/media/index.browser.d.ts.map +1 -1
- package/dist/media/index.browser.js +11 -20
- package/dist/media/index.browser.js.map +1 -1
- package/dist/media/index.d.ts +12 -4
- package/dist/media/index.d.ts.map +1 -1
- package/dist/media/index.js +1 -1
- package/dist/media/index.native.d.ts +2 -16
- package/dist/media/index.native.d.ts.map +1 -1
- package/dist/media/index.native.js +23 -42
- package/dist/media/index.native.js.map +1 -1
- package/dist/media/index.server.d.ts +3 -0
- package/dist/media/index.server.d.ts.map +1 -0
- package/dist/media/index.server.js +103 -0
- package/dist/media/index.server.js.map +1 -0
- package/dist/react/index.js +7 -7
- package/dist/react/index.js.map +1 -1
- package/dist/react-core/index.js +120 -35
- package/dist/react-core/index.js.map +1 -1
- package/dist/testing.js +1 -1
- package/dist/tools/coValues/account.d.ts.map +1 -1
- package/dist/tools/coValues/coFeed.d.ts +12 -0
- package/dist/tools/coValues/coFeed.d.ts.map +1 -1
- package/dist/tools/coValues/coMap.d.ts.map +1 -1
- package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts +19 -0
- package/dist/tools/implementation/zodSchema/schemaTypes/CoMapSchema.d.ts.map +1 -1
- package/dist/tools/subscribe/CoValueCoreSubscription.d.ts +61 -11
- package/dist/tools/subscribe/CoValueCoreSubscription.d.ts.map +1 -1
- package/dist/tools/subscribe/CoValueCoreSubscription.test.d.ts +2 -0
- package/dist/tools/subscribe/CoValueCoreSubscription.test.d.ts.map +1 -0
- package/dist/tools/testing.d.ts.map +1 -1
- package/package.json +27 -11
- package/src/media/create-image/browser.ts +161 -0
- package/src/media/create-image/react-native.ts +158 -0
- package/src/media/create-image/server.test.ts +74 -0
- package/src/media/create-image/server.ts +181 -0
- package/src/media/{create-image.test.ts → create-image-factory.test.ts} +1 -1
- package/src/media/{create-image.ts → create-image-factory.ts} +22 -12
- package/src/media/exports.ts +2 -0
- package/src/media/index.browser.ts +2 -150
- package/src/media/index.native.ts +2 -166
- package/src/media/index.server.ts +2 -0
- package/src/media/index.ts +16 -8
- package/src/tools/coValues/account.ts +3 -1
- package/src/tools/coValues/coFeed.ts +5 -0
- package/src/tools/coValues/coMap.ts +3 -1
- package/src/tools/implementation/zodSchema/schemaTypes/CoMapSchema.ts +19 -0
- package/src/tools/subscribe/CoValueCoreSubscription.test.ts +1000 -0
- package/src/tools/subscribe/CoValueCoreSubscription.ts +179 -43
- package/src/tools/tests/account.test.ts +12 -0
- package/src/tools/tests/coFeed.test.ts +25 -0
- package/src/tools/tests/coList.test.ts +20 -0
- package/src/tools/tests/coMap.record.test.ts +1 -0
- package/src/tools/tests/coMap.test.ts +12 -2
- package/tsup.config.ts +1 -0
- package/dist/chunk-IERUTUXB.js.map +0 -1
- package/dist/media/chunk-KR2V6X2N.js.map +0 -1
- package/dist/media/create-image.d.ts.map +0 -1
- package/dist/media/create-image.test.d.ts +0 -2
- package/dist/media/create-image.test.d.ts.map +0 -1
package/.turbo/turbo-build.log
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
|
2
|
-
> jazz-tools@0.18.
|
2
|
+
> jazz-tools@0.18.4 build /home/runner/_work/jazz/jazz/packages/jazz-tools
|
3
3
|
> tsup && pnpm types && pnpm build:svelte
|
4
4
|
|
5
5
|
[34mCLI[39m Building entry: {"index":"src/index.ts","testing":"src/testing.ts"}
|
6
6
|
[34mCLI[39m Using tsconfig: tsconfig.json
|
7
7
|
[34mCLI[39m Building entry: {"index":"src/browser/index.ts"}
|
8
8
|
[34mCLI[39m Using tsconfig: tsconfig.json
|
9
|
-
[34mCLI[39m Building entry: {"index":"src/media/index.ts","index.browser":"src/media/index.browser.ts","index.native":"src/media/index.native.ts"}
|
9
|
+
[34mCLI[39m Building entry: {"index":"src/media/index.ts","index.browser":"src/media/index.browser.ts","index.native":"src/media/index.native.ts","index.server":"src/media/index.server.ts"}
|
10
10
|
[34mCLI[39m Using tsconfig: tsconfig.json
|
11
11
|
[34mCLI[39m Building entry: {"index":"src/expo/index.ts","testing":"src/expo/testing.ts","crypto":"src/expo/crypto.ts"}
|
12
12
|
[34mCLI[39m Using tsconfig: tsconfig.json
|
@@ -109,35 +109,30 @@
|
|
109
109
|
[34mESM[39m Build start
|
110
110
|
[32mESM[39m [1mdist/tiptap/index.js [22m[32m564.00 B[39m
|
111
111
|
[32mESM[39m [1mdist/tiptap/index.js.map [22m[32m1.21 KB[39m
|
112
|
-
[32mESM[39m ⚡️ Build success in
|
112
|
+
[32mESM[39m ⚡️ Build success in 23ms
|
113
113
|
[32mESM[39m [1mdist/react/ssr.js [22m[32m688.00 B[39m
|
114
114
|
[32mESM[39m [1mdist/react/ssr.js.map [22m[32m1.12 KB[39m
|
115
|
-
[32mESM[39m ⚡️ Build success in
|
115
|
+
[32mESM[39m ⚡️ Build success in 26ms
|
116
116
|
[32mESM[39m [1mdist/worker/index.js [22m[32m2.33 KB[39m
|
117
117
|
[32mESM[39m [1mdist/worker/index.js.map [22m[32m4.79 KB[39m
|
118
|
-
[32mESM[39m ⚡️ Build success in
|
118
|
+
[32mESM[39m ⚡️ Build success in 24ms
|
119
119
|
[32mESM[39m [1mdist/media/index.js [22m[32m236.00 B[39m
|
120
|
-
[32mESM[39m [1mdist/media/index.browser.js [22m[
|
121
|
-
[32mESM[39m [1mdist/media/index.native.js [22m[
|
122
|
-
[32mESM[39m [1mdist/media/
|
120
|
+
[32mESM[39m [1mdist/media/index.browser.js [22m[32m2.79 KB[39m
|
121
|
+
[32mESM[39m [1mdist/media/index.native.js [22m[32m2.90 KB[39m
|
122
|
+
[32mESM[39m [1mdist/media/index.server.js [22m[32m2.95 KB[39m
|
123
|
+
[32mESM[39m [1mdist/media/chunk-W3S526L3.js [22m[32m6.47 KB[39m
|
123
124
|
[32mESM[39m [1mdist/media/index.js.map [22m[32m71.00 B[39m
|
124
|
-
[32mESM[39m [1mdist/media/index.browser.js.map [22m[32m6.
|
125
|
-
[32mESM[39m [1mdist/media/index.native.js.map [22m[32m6.
|
126
|
-
[32mESM[39m [1mdist/media/
|
127
|
-
[32mESM[39m
|
128
|
-
[32mESM[39m
|
125
|
+
[32mESM[39m [1mdist/media/index.browser.js.map [22m[32m6.15 KB[39m
|
126
|
+
[32mESM[39m [1mdist/media/index.native.js.map [22m[32m6.09 KB[39m
|
127
|
+
[32mESM[39m [1mdist/media/index.server.js.map [22m[32m6.37 KB[39m
|
128
|
+
[32mESM[39m [1mdist/media/chunk-W3S526L3.js.map [22m[32m16.57 KB[39m
|
129
|
+
[32mESM[39m ⚡️ Build success in 30ms
|
129
130
|
[32mESM[39m [1mdist/better-auth/auth/react.js [22m[32m1.19 KB[39m
|
130
131
|
[32mESM[39m [1mdist/better-auth/auth/server.js [22m[32m5.94 KB[39m
|
131
|
-
[32mESM[39m [1mdist/better-auth/auth/client.js
|
132
|
+
[32mESM[39m [1mdist/better-auth/auth/client.js [22m[32m4.36 KB[39m
|
132
133
|
[32mESM[39m [1mdist/better-auth/auth/react.js.map [22m[32m3.37 KB[39m
|
133
134
|
[32mESM[39m [1mdist/better-auth/auth/server.js.map [22m[32m10.66 KB[39m
|
134
|
-
[32mESM[39m
|
135
|
-
[32mESM[39m [1mdist/expo/index.js [22m[32m4.68 KB[39m
|
136
|
-
[32mESM[39m [1mdist/expo/testing.js [22m[32m112.00 B[39m
|
137
|
-
[32mESM[39m [1mdist/expo/crypto.js [22m[32m153.00 B[39m
|
138
|
-
[32mESM[39m [1mdist/expo/index.js.map [22m[32m10.23 KB[39m
|
139
|
-
[32mESM[39m [1mdist/expo/testing.js.map [22m[32m168.00 B[39m
|
140
|
-
[32mESM[39m [1mdist/expo/crypto.js.map [22m[32m189.00 B[39m
|
135
|
+
[32mESM[39m [1mdist/better-auth/auth/client.js.map [22m[32m8.12 KB[39m
|
141
136
|
[32mESM[39m ⚡️ Build success in 24ms
|
142
137
|
[32mESM[39m [1mdist/react-native/index.js [22m[32m2.53 KB[39m
|
143
138
|
[32mESM[39m [1mdist/react-native/testing.js [22m[32m120.00 B[39m
|
@@ -145,53 +140,60 @@
|
|
145
140
|
[32mESM[39m [1mdist/react-native/index.js.map [22m[32m5.68 KB[39m
|
146
141
|
[32mESM[39m [1mdist/react-native/testing.js.map [22m[32m176.00 B[39m
|
147
142
|
[32mESM[39m [1mdist/react-native/crypto.js.map [22m[32m197.00 B[39m
|
148
|
-
[32mESM[39m ⚡️ Build success in
|
143
|
+
[32mESM[39m ⚡️ Build success in 35ms
|
149
144
|
[32mESM[39m [1mdist/browser/index.js [22m[32m13.44 KB[39m
|
150
145
|
[32mESM[39m [1mdist/browser/index.js.map [22m[32m28.70 KB[39m
|
151
|
-
[32mESM[39m ⚡️ Build success in
|
152
|
-
[32mESM[39m [1mdist/
|
146
|
+
[32mESM[39m ⚡️ Build success in 39ms
|
147
|
+
[32mESM[39m [1mdist/expo/index.js [22m[32m4.68 KB[39m
|
148
|
+
[32mESM[39m [1mdist/expo/testing.js [22m[32m112.00 B[39m
|
149
|
+
[32mESM[39m [1mdist/expo/crypto.js [22m[32m153.00 B[39m
|
150
|
+
[32mESM[39m [1mdist/expo/index.js.map [22m[32m10.23 KB[39m
|
151
|
+
[32mESM[39m [1mdist/expo/testing.js.map [22m[32m168.00 B[39m
|
152
|
+
[32mESM[39m [1mdist/expo/crypto.js.map [22m[32m189.00 B[39m
|
153
|
+
[32mESM[39m ⚡️ Build success in 38ms
|
153
154
|
[32mESM[39m [1mdist/react-native-core/testing.js [22m[32m119.00 B[39m
|
155
|
+
[32mESM[39m [1mdist/react-native-core/index.js [22m[32m17.90 KB[39m
|
154
156
|
[32mESM[39m [1mdist/react-native-core/crypto.js [22m[32m2.10 KB[39m
|
155
|
-
[32mESM[39m [1mdist/react-native-core/index.js.map [22m[32m36.66 KB[39m
|
156
157
|
[32mESM[39m [1mdist/react-native-core/testing.js.map [22m[32m175.00 B[39m
|
158
|
+
[32mESM[39m [1mdist/react-native-core/index.js.map [22m[32m36.66 KB[39m
|
157
159
|
[32mESM[39m [1mdist/react-native-core/crypto.js.map [22m[32m4.25 KB[39m
|
158
|
-
[32mESM[39m ⚡️ Build success in
|
160
|
+
[32mESM[39m ⚡️ Build success in 45ms
|
159
161
|
[32mESM[39m [1mdist/react/index.js [22m[32m24.66 KB[39m
|
160
162
|
[32mESM[39m [1mdist/react/testing.js [22m[32m122.00 B[39m
|
161
|
-
[32mESM[39m [1mdist/react/index.js.map [22m[32m53.09 KB[39m
|
162
163
|
[32mESM[39m [1mdist/react/testing.js.map [22m[32m165.00 B[39m
|
163
|
-
[32mESM[39m
|
164
|
+
[32mESM[39m [1mdist/react/index.js.map [22m[32m53.43 KB[39m
|
165
|
+
[32mESM[39m ⚡️ Build success in 48ms
|
164
166
|
[32mESM[39m [1mdist/prosemirror/index.js [22m[32m77.63 KB[39m
|
165
167
|
[32mESM[39m [1mdist/prosemirror/index.js.map [22m[32m306.98 KB[39m
|
166
|
-
[32mESM[39m ⚡️ Build success in
|
168
|
+
[32mESM[39m ⚡️ Build success in 50ms
|
167
169
|
[32mESM[39m [1mdist/inspector/index.js [22m[32m61.52 KB[39m
|
168
170
|
[32mESM[39m [1mdist/inspector/index.js.map [22m[32m109.98 KB[39m
|
169
|
-
[32mESM[39m ⚡️ Build success in
|
170
|
-
[32mESM[39m [1mdist/index.js [22m[32m26.13 KB[39m
|
171
|
+
[32mESM[39m ⚡️ Build success in 70ms
|
171
172
|
[32mESM[39m [1mdist/testing.js [22m[32m7.17 KB[39m
|
172
|
-
[32mESM[39m [1mdist/
|
173
|
-
[32mESM[39m [1mdist/
|
173
|
+
[32mESM[39m [1mdist/index.js [22m[32m26.13 KB[39m
|
174
|
+
[32mESM[39m [1mdist/chunk-LHQQZH7I.js [22m[32m166.47 KB[39m
|
174
175
|
[32mESM[39m [1mdist/testing.js.map [22m[32m14.10 KB[39m
|
175
|
-
[32mESM[39m [1mdist/
|
176
|
-
[32mESM[39m
|
176
|
+
[32mESM[39m [1mdist/index.js.map [22m[32m52.92 KB[39m
|
177
|
+
[32mESM[39m [1mdist/chunk-LHQQZH7I.js.map [22m[32m395.85 KB[39m
|
178
|
+
[32mESM[39m ⚡️ Build success in 90ms
|
177
179
|
[32mESM[39m [1mdist/react-core/chunk-7DYMJ74I.js [22m[32m279.00 B[39m
|
178
180
|
[32mESM[39m [1mdist/react-core/testing.js [22m[32m1.17 KB[39m
|
179
|
-
[32mESM[39m [1mdist/react-core/index.js [22m[
|
181
|
+
[32mESM[39m [1mdist/react-core/index.js [22m[32m143.63 KB[39m
|
180
182
|
[32mESM[39m [1mdist/react-core/chunk-7DYMJ74I.js.map [22m[32m533.00 B[39m
|
181
183
|
[32mESM[39m [1mdist/react-core/testing.js.map [22m[32m1.82 KB[39m
|
182
|
-
[32mESM[39m [1mdist/react-core/index.js.map [22m[
|
183
|
-
[32mESM[39m ⚡️ Build success in
|
184
|
+
[32mESM[39m [1mdist/react-core/index.js.map [22m[32m390.27 KB[39m
|
185
|
+
[32mESM[39m ⚡️ Build success in 92ms
|
184
186
|
[32mESM[39m [1mdist/inspector/register-custom-element.js [22m[32m218.00 B[39m
|
185
187
|
[32mESM[39m [1mdist/inspector/register-custom-element.js.map [22m[32m314.00 B[39m
|
186
188
|
[32mESM[39m [1mdist/inspector/custom-element-WCY6D3QJ.js [22m[32m1.53 MB[39m
|
187
189
|
[32mESM[39m [1mdist/inspector/custom-element-WCY6D3QJ.js.map [22m[32m2.35 MB[39m
|
188
|
-
[32mESM[39m ⚡️ Build success in
|
190
|
+
[32mESM[39m ⚡️ Build success in 125ms
|
189
191
|
|
190
|
-
> jazz-tools@0.18.
|
192
|
+
> jazz-tools@0.18.4 types /home/runner/_work/jazz/jazz/packages/jazz-tools
|
191
193
|
> tsc --outDir dist
|
192
194
|
|
193
195
|
|
194
|
-
> jazz-tools@0.18.
|
196
|
+
> jazz-tools@0.18.4 build:svelte /home/runner/_work/jazz/jazz/packages/jazz-tools
|
195
197
|
> rm -rf dist/svelte && svelte-package -i src/svelte -o dist/svelte --tsconfig tsconfig.svelte.json
|
196
198
|
|
197
199
|
src/svelte -> dist/svelte
|
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,25 @@
|
|
1
1
|
# jazz-tools
|
2
2
|
|
3
|
+
## 0.18.4
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- 84313aa: Add `$jazz.id` to `toJSON` in Account, CoMap, CoFeed & FileStream
|
8
|
+
- 89aab7b: Deprecate `co.map().catchall`. Use a `co.record` nested inside a `co.map` if you need to store key-value properties.
|
9
|
+
- cojson@0.18.4
|
10
|
+
- cojson-storage-indexeddb@0.18.4
|
11
|
+
- cojson-transport-ws@0.18.4
|
12
|
+
|
13
|
+
## 0.18.3
|
14
|
+
|
15
|
+
### Patch Changes
|
16
|
+
|
17
|
+
- b526ab6: Set 18.x as latest
|
18
|
+
- d69aa68: Added a server implementation of `createImage()` to create images in server environments using the "sharp" library
|
19
|
+
- cojson@0.18.3
|
20
|
+
- cojson-storage-indexeddb@0.18.3
|
21
|
+
- cojson-transport-ws@0.18.3
|
22
|
+
|
3
23
|
## 0.18.2
|
4
24
|
|
5
25
|
### Patch Changes
|
@@ -228,7 +228,9 @@ var _CoMap = class _CoMap extends CoValueBase {
|
|
228
228
|
*/
|
229
229
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
230
230
|
toJSON(_key, processedValues) {
|
231
|
-
const result = {
|
231
|
+
const result = {
|
232
|
+
$jazz: { id: this.$jazz.id }
|
233
|
+
};
|
232
234
|
for (const key of this.$jazz.raw.keys()) {
|
233
235
|
const tKey = key;
|
234
236
|
const descriptor = this.$jazz.getDescriptor(tKey);
|
@@ -1557,6 +1559,7 @@ var _CoFeed = class _CoFeed extends CoValueBase {
|
|
1557
1559
|
const itemDescriptor = this.$jazz.schema[ItemsSym];
|
1558
1560
|
const mapper = itemDescriptor === "json" ? (v) => v : "encoded" in itemDescriptor ? itemDescriptor.encoded.encode : (v) => v && v.$jazz.id;
|
1559
1561
|
return {
|
1562
|
+
$jazz: { id: this.$jazz.id },
|
1560
1563
|
...Object.fromEntries(
|
1561
1564
|
Object.entries(this).map(([account, entry]) => [
|
1562
1565
|
account,
|
@@ -2005,6 +2008,7 @@ var FileStream = class extends CoValueBase {
|
|
2005
2008
|
*/
|
2006
2009
|
toJSON() {
|
2007
2010
|
return {
|
2011
|
+
$jazz: { id: this.$jazz.id },
|
2008
2012
|
...this.getChunks()
|
2009
2013
|
};
|
2010
2014
|
}
|
@@ -2216,7 +2220,9 @@ var Account = class extends CoValueBase {
|
|
2216
2220
|
}
|
2217
2221
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
2218
2222
|
toJSON() {
|
2219
|
-
return {
|
2223
|
+
return {
|
2224
|
+
$jazz: { id: this.$jazz.id }
|
2225
|
+
};
|
2220
2226
|
}
|
2221
2227
|
[inspect]() {
|
2222
2228
|
return this.toJSON();
|
@@ -3416,56 +3422,135 @@ function applyCoValueMigrations(instance) {
|
|
3416
3422
|
|
3417
3423
|
// src/tools/subscribe/CoValueCoreSubscription.ts
|
3418
3424
|
var CoValueCoreSubscription = class {
|
3419
|
-
constructor(
|
3420
|
-
this.node = node;
|
3421
|
-
this.id = id;
|
3422
|
-
this.listener = listener;
|
3423
|
-
this.skipRetry = skipRetry;
|
3425
|
+
constructor(localNode, id, listener, skipRetry, branch) {
|
3424
3426
|
this._unsubscribe = () => {
|
3425
3427
|
};
|
3426
3428
|
this.unsubscribed = false;
|
3427
|
-
|
3428
|
-
|
3429
|
-
|
3429
|
+
this.localNode = localNode;
|
3430
|
+
this.listener = listener;
|
3431
|
+
this.skipRetry = skipRetry;
|
3432
|
+
this.branchName = branch?.name;
|
3433
|
+
this.branchOwnerId = branch?.owner?.$jazz.raw.id;
|
3434
|
+
this.source = localNode.getCoValue(id);
|
3435
|
+
this.initializeSubscription();
|
3436
|
+
}
|
3437
|
+
/**
|
3438
|
+
* Main entry point for subscription initialization.
|
3439
|
+
* Determines the subscription strategy based on current availability and branch requirements.
|
3440
|
+
*/
|
3441
|
+
initializeSubscription() {
|
3442
|
+
const source = this.source;
|
3443
|
+
if (source.isAvailable()) {
|
3444
|
+
this.handleAvailableSource(source);
|
3445
|
+
return;
|
3446
|
+
}
|
3447
|
+
if (this.branchName) {
|
3448
|
+
this.handleBranchCheckout();
|
3449
|
+
return;
|
3450
|
+
}
|
3451
|
+
this.loadCoValue();
|
3452
|
+
}
|
3453
|
+
/**
|
3454
|
+
* Handles the case where the CoValue source is immediately available.
|
3455
|
+
* Either subscribes directly or attempts to get the requested branch.
|
3456
|
+
*/
|
3457
|
+
handleAvailableSource(source) {
|
3458
|
+
if (!this.branchName) {
|
3459
|
+
this.subscribe(source.getCurrentContent());
|
3460
|
+
return;
|
3461
|
+
}
|
3462
|
+
const branch = source.getBranch(this.branchName, this.branchOwnerId);
|
3463
|
+
if (branch.isAvailable()) {
|
3464
|
+
this.subscribe(branch.getCurrentContent());
|
3465
|
+
return;
|
3430
3466
|
} else {
|
3431
|
-
this.
|
3432
|
-
if (this.unsubscribed) return;
|
3433
|
-
if (value.isAvailable()) {
|
3434
|
-
this.subscribe(value.getCurrentContent());
|
3435
|
-
} else {
|
3436
|
-
this.subscribeToState();
|
3437
|
-
this.listener("unavailable");
|
3438
|
-
}
|
3439
|
-
}).catch((error) => {
|
3440
|
-
console.error("Unexpected error loading CoValue: ", error);
|
3441
|
-
this.listener("unavailable");
|
3442
|
-
});
|
3467
|
+
this.handleBranchCheckout();
|
3443
3468
|
}
|
3444
3469
|
}
|
3445
|
-
|
3446
|
-
|
3447
|
-
|
3448
|
-
|
3449
|
-
|
3450
|
-
|
3470
|
+
/**
|
3471
|
+
* Attempts to checkout a specific branch of the CoValue.
|
3472
|
+
* This is called when the source isn't available but a branch is requested.
|
3473
|
+
*/
|
3474
|
+
handleBranchCheckout() {
|
3475
|
+
this.localNode.checkoutBranch(this.source.id, this.branchName, this.branchOwnerId).then((value) => {
|
3476
|
+
if (this.unsubscribed) return;
|
3477
|
+
if (value !== "unavailable") {
|
3478
|
+
this.subscribe(value);
|
3479
|
+
} else {
|
3480
|
+
this.handleUnavailableBranch();
|
3451
3481
|
}
|
3452
|
-
|
3453
|
-
|
3454
|
-
|
3482
|
+
}).catch((error) => {
|
3483
|
+
console.error(error);
|
3484
|
+
this.emit("unavailable");
|
3485
|
+
});
|
3486
|
+
}
|
3487
|
+
/**
|
3488
|
+
* Handles the case where a branch checkout fails.
|
3489
|
+
* Determines whether to retry or report unavailability.
|
3490
|
+
*/
|
3491
|
+
handleUnavailableBranch() {
|
3492
|
+
const source = this.source;
|
3493
|
+
if (source.isAvailable()) {
|
3494
|
+
throw new Error("Branch is unavailable");
|
3495
|
+
}
|
3496
|
+
this.subscribeToUnavailableSource();
|
3497
|
+
this.emit("unavailable");
|
3498
|
+
}
|
3499
|
+
/**
|
3500
|
+
* Loads the CoValue core from the network/storage.
|
3501
|
+
* This is the fallback strategy when immediate availability fails.
|
3502
|
+
*/
|
3503
|
+
loadCoValue() {
|
3504
|
+
this.localNode.loadCoValueCore(this.source.id, void 0, this.skipRetry).then((value) => {
|
3505
|
+
if (this.unsubscribed) return;
|
3506
|
+
if (value.isAvailable()) {
|
3507
|
+
this.subscribe(value.getCurrentContent());
|
3508
|
+
} else {
|
3509
|
+
this.subscribeToUnavailableSource();
|
3510
|
+
this.emit("unavailable");
|
3511
|
+
}
|
3512
|
+
}).catch((error) => {
|
3513
|
+
console.error(error);
|
3514
|
+
this.emit("unavailable");
|
3515
|
+
});
|
3516
|
+
}
|
3517
|
+
/**
|
3518
|
+
* Subscribes to state changes of an unavailable CoValue source.
|
3519
|
+
* This allows the subscription to become active when the source becomes available after a first loading attempt.
|
3520
|
+
*/
|
3521
|
+
subscribeToUnavailableSource() {
|
3522
|
+
const source = this.source;
|
3523
|
+
const handleStateChange = (_, unsubFromStateChange) => {
|
3524
|
+
if (!source.isAvailable()) {
|
3525
|
+
return;
|
3455
3526
|
}
|
3456
|
-
};
|
3457
|
-
const unsubFromStateChange = entry.subscribe(handleStateChange);
|
3458
|
-
this._unsubscribe = () => {
|
3459
3527
|
unsubFromStateChange();
|
3528
|
+
if (this.branchName) {
|
3529
|
+
this.handleBranchCheckout();
|
3530
|
+
} else {
|
3531
|
+
this.subscribe(source.getCurrentContent());
|
3532
|
+
}
|
3460
3533
|
};
|
3534
|
+
this._unsubscribe = source.subscribe(handleStateChange);
|
3461
3535
|
}
|
3536
|
+
/**
|
3537
|
+
* Subscribes to a specific CoValue and notifies the listener.
|
3538
|
+
* This is the final step where we actually start receiving updates.
|
3539
|
+
*/
|
3462
3540
|
subscribe(value) {
|
3463
3541
|
if (this.unsubscribed) return;
|
3464
3542
|
this._unsubscribe = value.subscribe((value2) => {
|
3465
|
-
this.
|
3543
|
+
this.emit(value2);
|
3466
3544
|
});
|
3545
|
+
}
|
3546
|
+
emit(value) {
|
3547
|
+
if (this.unsubscribed) return;
|
3467
3548
|
this.listener(value);
|
3468
3549
|
}
|
3550
|
+
/**
|
3551
|
+
* Unsubscribes from all active subscriptions and marks the instance as unsubscribed.
|
3552
|
+
* This prevents any further operations and ensures proper cleanup.
|
3553
|
+
*/
|
3469
3554
|
unsubscribe() {
|
3470
3555
|
if (this.unsubscribed) return;
|
3471
3556
|
this.unsubscribed = true;
|
@@ -5731,4 +5816,4 @@ export {
|
|
5731
5816
|
JazzContextManager
|
5732
5817
|
};
|
5733
5818
|
/* istanbul ignore file -- @preserve */
|
5734
|
-
//# sourceMappingURL=chunk-
|
5819
|
+
//# sourceMappingURL=chunk-LHQQZH7I.js.map
|