jazz-tools 0.8.44 → 0.8.48

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. package/.turbo/turbo-build.log +16 -10
  2. package/CHANGELOG.md +21 -0
  3. package/dist/chunk-6OHBW32Q.js +2853 -0
  4. package/dist/chunk-6OHBW32Q.js.map +1 -0
  5. package/dist/index.native.js +63 -0
  6. package/dist/index.native.js.map +1 -0
  7. package/dist/index.web.js +61 -0
  8. package/dist/index.web.js.map +1 -0
  9. package/package.json +9 -12
  10. package/src/coValues/account.ts +29 -10
  11. package/src/coValues/coFeed.ts +4 -3
  12. package/src/coValues/coList.ts +8 -5
  13. package/src/coValues/coMap.ts +14 -5
  14. package/src/coValues/deepLoading.ts +6 -12
  15. package/src/coValues/extensions/imageDef.ts +3 -1
  16. package/src/coValues/group.ts +8 -11
  17. package/src/coValues/inbox.ts +377 -0
  18. package/src/coValues/interfaces.ts +9 -6
  19. package/src/coValues/profile.ts +11 -0
  20. package/src/coValues/registeredSchemas.ts +12 -0
  21. package/src/exports.ts +21 -15
  22. package/src/implementation/anonymousJazzAgent.ts +6 -0
  23. package/src/implementation/createContext.ts +8 -9
  24. package/src/implementation/refs.ts +1 -1
  25. package/src/implementation/subscriptionScope.ts +1 -1
  26. package/src/index.native.ts +0 -1
  27. package/src/internal.ts +1 -9
  28. package/src/tests/account.test.ts +2 -2
  29. package/src/tests/coFeed.test.ts +0 -9
  30. package/src/tests/coMap.test.ts +11 -8
  31. package/src/tests/groupsAndAccounts.test.ts +1 -63
  32. package/src/tests/inbox.test.ts +299 -0
  33. package/src/tests/schemaUnion.test.ts +1 -1
  34. package/src/tests/utils.ts +14 -0
  35. package/tsup.config.ts +13 -0
  36. package/dist/native/coValues/account.js +0 -221
  37. package/dist/native/coValues/account.js.map +0 -1
  38. package/dist/native/coValues/coFeed.js +0 -571
  39. package/dist/native/coValues/coFeed.js.map +0 -1
  40. package/dist/native/coValues/coList.js +0 -404
  41. package/dist/native/coValues/coList.js.map +0 -1
  42. package/dist/native/coValues/coMap.js +0 -537
  43. package/dist/native/coValues/coMap.js.map +0 -1
  44. package/dist/native/coValues/deepLoading.js +0 -63
  45. package/dist/native/coValues/deepLoading.js.map +0 -1
  46. package/dist/native/coValues/extensions/imageDef.js +0 -42
  47. package/dist/native/coValues/extensions/imageDef.js.map +0 -1
  48. package/dist/native/coValues/group.js +0 -136
  49. package/dist/native/coValues/group.js.map +0 -1
  50. package/dist/native/coValues/interfaces.js +0 -135
  51. package/dist/native/coValues/interfaces.js.map +0 -1
  52. package/dist/native/coValues/schemaUnion.js +0 -89
  53. package/dist/native/coValues/schemaUnion.js.map +0 -1
  54. package/dist/native/exports.js +0 -5
  55. package/dist/native/exports.js.map +0 -1
  56. package/dist/native/implementation/createContext.js +0 -157
  57. package/dist/native/implementation/createContext.js.map +0 -1
  58. package/dist/native/implementation/devtoolsFormatters.js +0 -95
  59. package/dist/native/implementation/devtoolsFormatters.js.map +0 -1
  60. package/dist/native/implementation/errors.js +0 -2
  61. package/dist/native/implementation/errors.js.map +0 -1
  62. package/dist/native/implementation/inspect.js +0 -2
  63. package/dist/native/implementation/inspect.js.map +0 -1
  64. package/dist/native/implementation/refs.js +0 -115
  65. package/dist/native/implementation/refs.js.map +0 -1
  66. package/dist/native/implementation/schema.js +0 -96
  67. package/dist/native/implementation/schema.js.map +0 -1
  68. package/dist/native/implementation/subscriptionScope.js +0 -91
  69. package/dist/native/implementation/subscriptionScope.js.map +0 -1
  70. package/dist/native/implementation/symbols.js +0 -4
  71. package/dist/native/implementation/symbols.js.map +0 -1
  72. package/dist/native/index.native.js +0 -3
  73. package/dist/native/index.native.js.map +0 -1
  74. package/dist/native/internal.js +0 -18
  75. package/dist/native/internal.js.map +0 -1
  76. package/dist/native/lib/cache.js +0 -13
  77. package/dist/native/lib/cache.js.map +0 -1
  78. package/dist/native/lib/cache.test.js +0 -52
  79. package/dist/native/lib/cache.test.js.map +0 -1
  80. package/dist/web/coValues/account.js +0 -221
  81. package/dist/web/coValues/account.js.map +0 -1
  82. package/dist/web/coValues/coFeed.js +0 -571
  83. package/dist/web/coValues/coFeed.js.map +0 -1
  84. package/dist/web/coValues/coList.js +0 -404
  85. package/dist/web/coValues/coList.js.map +0 -1
  86. package/dist/web/coValues/coMap.js +0 -537
  87. package/dist/web/coValues/coMap.js.map +0 -1
  88. package/dist/web/coValues/deepLoading.js +0 -63
  89. package/dist/web/coValues/deepLoading.js.map +0 -1
  90. package/dist/web/coValues/extensions/imageDef.js +0 -42
  91. package/dist/web/coValues/extensions/imageDef.js.map +0 -1
  92. package/dist/web/coValues/group.js +0 -136
  93. package/dist/web/coValues/group.js.map +0 -1
  94. package/dist/web/coValues/interfaces.js +0 -135
  95. package/dist/web/coValues/interfaces.js.map +0 -1
  96. package/dist/web/coValues/schemaUnion.js +0 -89
  97. package/dist/web/coValues/schemaUnion.js.map +0 -1
  98. package/dist/web/exports.js +0 -5
  99. package/dist/web/exports.js.map +0 -1
  100. package/dist/web/implementation/createContext.js +0 -157
  101. package/dist/web/implementation/createContext.js.map +0 -1
  102. package/dist/web/implementation/devtoolsFormatters.js +0 -95
  103. package/dist/web/implementation/devtoolsFormatters.js.map +0 -1
  104. package/dist/web/implementation/errors.js +0 -2
  105. package/dist/web/implementation/errors.js.map +0 -1
  106. package/dist/web/implementation/inspect.js +0 -2
  107. package/dist/web/implementation/inspect.js.map +0 -1
  108. package/dist/web/implementation/refs.js +0 -115
  109. package/dist/web/implementation/refs.js.map +0 -1
  110. package/dist/web/implementation/schema.js +0 -96
  111. package/dist/web/implementation/schema.js.map +0 -1
  112. package/dist/web/implementation/subscriptionScope.js +0 -91
  113. package/dist/web/implementation/subscriptionScope.js.map +0 -1
  114. package/dist/web/implementation/symbols.js +0 -4
  115. package/dist/web/implementation/symbols.js.map +0 -1
  116. package/dist/web/index.web.js +0 -3
  117. package/dist/web/index.web.js.map +0 -1
  118. package/dist/web/internal.js +0 -18
  119. package/dist/web/internal.js.map +0 -1
  120. package/dist/web/lib/cache.js +0 -13
  121. package/dist/web/lib/cache.js.map +0 -1
  122. package/dist/web/lib/cache.test.js +0 -52
  123. package/dist/web/lib/cache.test.js.map +0 -1
@@ -1,404 +0,0 @@
1
- var _a;
2
- import { RawAccount } from "cojson";
3
- import { Account, AnonymousJazzAgent, Group, ItemsSym, Ref, SchemaInit, co, ensureCoValueLoaded, inspect, isRefEncoded, loadCoValue, makeRefs, subscribeToCoValue, subscribeToExistingCoValue, subscriptionsScopes, } from "../internal.js";
4
- import { coValuesCache } from "../lib/cache.js";
5
- /**
6
- * CoLists are collaborative versions of plain arrays.
7
- *
8
- * @categoryDescription Content
9
- * You can access items on a `CoList` as if they were normal items on a plain array, using `[]` notation, etc.
10
- *
11
- * Since `CoList` is a subclass of `Array`, you can use all the normal array methods like `push`, `pop`, `splice`, etc.
12
- *
13
- * ```ts
14
- * colorList[0];
15
- * colorList[3] = "yellow";
16
- * colorList.push("Kawazaki Green");
17
- * colorList.splice(1, 1);
18
- * ```
19
- *
20
- * @category CoValues
21
- */
22
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
23
- export class CoList extends Array {
24
- /**
25
- * Declare a `CoList` by subclassing `CoList.Of(...)` and passing the item schema using `co`.
26
- *
27
- * @example
28
- * ```ts
29
- * class ColorList extends CoList.Of(
30
- * co.string
31
- * ) {}
32
- * class AnimalList extends CoList.Of(
33
- * co.ref(Animal)
34
- * ) {}
35
- * ```
36
- *
37
- * @category Declaration
38
- */
39
- static Of(item) {
40
- var _b, _c;
41
- // TODO: cache superclass for item class
42
- return _c = class CoListOf extends _a {
43
- constructor() {
44
- super(...arguments);
45
- this[_b] = item;
46
- }
47
- },
48
- _b = co.items,
49
- _c;
50
- }
51
- /**
52
- * @ignore
53
- * @deprecated Use UPPERCASE `CoList.Of` instead! */
54
- static of(..._args) {
55
- throw new Error("Can't use Array.of with CoLists");
56
- }
57
- /** @internal */
58
- get _schema() {
59
- return this.constructor._schema;
60
- }
61
- /** @category Collaboration */
62
- get _owner() {
63
- return this._raw.group instanceof RawAccount
64
- ? Account.fromRaw(this._raw.group)
65
- : Group.fromRaw(this._raw.group);
66
- }
67
- /**
68
- * If a `CoList`'s items are a `co.ref(...)`, you can use `coList._refs[i]` to access
69
- * the `Ref` instead of the potentially loaded/null value.
70
- *
71
- * This allows you to always get the ID or load the value manually.
72
- *
73
- * @example
74
- * ```ts
75
- * animals._refs[0].id; // => ID<Animal>
76
- * animals._refs[0].value;
77
- * // => Animal | null
78
- * const animal = await animals._refs[0].load();
79
- * ```
80
- *
81
- * @category Content
82
- **/
83
- get _refs() {
84
- return makeRefs((idx) => this._raw.get(idx), () => Array.from({ length: this._raw.entries().length }, (_, idx) => idx), this._loadedAs, (_idx) => this._schema[ItemsSym]);
85
- }
86
- get _edits() {
87
- throw new Error("Not implemented");
88
- }
89
- get _loadedAs() {
90
- const rawAccount = this._raw.core.node.account;
91
- if (rawAccount instanceof RawAccount) {
92
- return coValuesCache.get(rawAccount, () => Account.fromRaw(rawAccount));
93
- }
94
- return new AnonymousJazzAgent(this._raw.core.node);
95
- }
96
- static get [Symbol.species]() {
97
- return Array;
98
- }
99
- constructor(options) {
100
- super();
101
- Object.defineProperty(this, "_instanceID", {
102
- value: `instance-${Math.random().toString(36).slice(2)}`,
103
- enumerable: false,
104
- });
105
- if (options && "fromRaw" in options) {
106
- Object.defineProperties(this, {
107
- id: {
108
- value: options.fromRaw.id,
109
- enumerable: false,
110
- },
111
- _raw: { value: options.fromRaw, enumerable: false },
112
- });
113
- }
114
- return new Proxy(this, CoListProxyHandler);
115
- }
116
- /**
117
- * Create a new CoList with the given initial values and owner.
118
- *
119
- * The owner (a Group or Account) determines access rights to the CoMap.
120
- *
121
- * The CoList will immediately be persisted and synced to connected peers.
122
- *
123
- * @example
124
- * ```ts
125
- * const colours = ColorList.create(
126
- * ["red", "green", "blue"],
127
- * { owner: me }
128
- * );
129
- * const animals = AnimalList.create(
130
- * [cat, dog, fish],
131
- * { owner: me }
132
- * );
133
- * ```
134
- *
135
- * @category Creation
136
- **/
137
- static create(items, options) {
138
- const instance = new this({ init: items, owner: options.owner });
139
- const raw = options.owner._raw.createList(toRawItems(items, instance._schema[ItemsSym]));
140
- Object.defineProperties(instance, {
141
- id: {
142
- value: raw.id,
143
- enumerable: false,
144
- },
145
- _raw: { value: raw, enumerable: false },
146
- });
147
- return instance;
148
- }
149
- push(...items) {
150
- for (const item of toRawItems(items, this._schema[ItemsSym])) {
151
- this._raw.append(item);
152
- }
153
- return this._raw.entries().length;
154
- }
155
- unshift(...items) {
156
- for (const item of toRawItems(items, this._schema[ItemsSym])) {
157
- this._raw.prepend(item);
158
- }
159
- return this._raw.entries().length;
160
- }
161
- pop() {
162
- const last = this[this.length - 1];
163
- this._raw.delete(this.length - 1);
164
- return last;
165
- }
166
- shift() {
167
- const first = this[0];
168
- this._raw.delete(0);
169
- return first;
170
- }
171
- splice(start, deleteCount, ...items) {
172
- const deleted = this.slice(start, start + deleteCount);
173
- for (let idxToDelete = start + deleteCount - 1; idxToDelete >= start; idxToDelete--) {
174
- this._raw.delete(idxToDelete);
175
- }
176
- let appendAfter = Math.max(start - 1, 0);
177
- for (const item of toRawItems(items, this._schema[ItemsSym])) {
178
- console.log(this._raw.asArray(), appendAfter);
179
- this._raw.append(item, appendAfter);
180
- appendAfter++;
181
- }
182
- return deleted;
183
- }
184
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
185
- toJSON(_key, seenAbove) {
186
- const itemDescriptor = this._schema[ItemsSym];
187
- if (itemDescriptor === "json") {
188
- return this._raw.asArray();
189
- }
190
- else if ("encoded" in itemDescriptor) {
191
- return this._raw.asArray().map((e) => itemDescriptor.encoded.encode(e));
192
- }
193
- else if (isRefEncoded(itemDescriptor)) {
194
- return this.map((item, idx) => seenAbove?.includes(item?.id)
195
- ? { _circular: item.id }
196
- : item?.toJSON(idx + "", [
197
- ...(seenAbove || []),
198
- this.id,
199
- ]));
200
- }
201
- else {
202
- return [];
203
- }
204
- }
205
- [inspect]() {
206
- return this.toJSON();
207
- }
208
- /** @category Internals */
209
- static fromRaw(raw) {
210
- return new this({ fromRaw: raw });
211
- }
212
- /** @internal */
213
- static schema(def) {
214
- this._schema ||= {};
215
- Object.assign(this._schema, def);
216
- }
217
- /**
218
- * Load a `CoList` with a given ID, as a given account.
219
- *
220
- * `depth` specifies if item CoValue references should be loaded as well before resolving.
221
- * The `DeeplyLoaded` return type guarantees that corresponding referenced CoValues are loaded to the specified depth.
222
- *
223
- * You can pass `[]` or for shallowly loading only this CoList, or `[itemDepth]` for recursively loading referenced CoValues.
224
- *
225
- * Check out the `load` methods on `CoMap`/`CoList`/`CoFeed`/`Group`/`Account` to see which depth structures are valid to nest.
226
- *
227
- * @example
228
- * ```ts
229
- * const animalsWithVets =
230
- * await ListOfAnimals.load(
231
- * "co_zdsMhHtfG6VNKt7RqPUPvUtN2Ax",
232
- * me,
233
- * [{ vet: {} }]
234
- * );
235
- * ```
236
- *
237
- * @category Subscription & Loading
238
- */
239
- static load(id, as, depth) {
240
- return loadCoValue(this, id, as, depth);
241
- }
242
- /**
243
- * Load and subscribe to a `CoList` with a given ID, as a given account.
244
- *
245
- * Automatically also subscribes to updates to all referenced/nested CoValues as soon as they are accessed in the listener.
246
- *
247
- * `depth` specifies if item CoValue references should be loaded as well before calling `listener` for the first time.
248
- * The `DeeplyLoaded` return type guarantees that corresponding referenced CoValues are loaded to the specified depth.
249
- *
250
- * You can pass `[]` or for shallowly loading only this CoList, or `[itemDepth]` for recursively loading referenced CoValues.
251
- *
252
- * Check out the `load` methods on `CoMap`/`CoList`/`CoFeed`/`Group`/`Account` to see which depth structures are valid to nest.
253
- *
254
- * Returns an unsubscribe function that you should call when you no longer need updates.
255
- *
256
- * Also see the `useCoState` hook to reactively subscribe to a CoValue in a React component.
257
- *
258
- * @example
259
- * ```ts
260
- * const unsub = ListOfAnimals.subscribe(
261
- * "co_zdsMhHtfG6VNKt7RqPUPvUtN2Ax",
262
- * me,
263
- * { vet: {} },
264
- * (animalsWithVets) => console.log(animalsWithVets)
265
- * );
266
- * ```
267
- *
268
- * @category Subscription & Loading
269
- */
270
- static subscribe(id, as, depth, listener) {
271
- return subscribeToCoValue(this, id, as, depth, listener);
272
- }
273
- /**
274
- * Given an already loaded `CoList`, ensure that items are loaded to the specified depth.
275
- *
276
- * Works like `CoList.load()`, but you don't need to pass the ID or the account to load as again.
277
- *
278
- * @category Subscription & Loading
279
- */
280
- ensureLoaded(depth) {
281
- return ensureCoValueLoaded(this, depth);
282
- }
283
- /**
284
- * Given an already loaded `CoList`, subscribe to updates to the `CoList` and ensure that items are loaded to the specified depth.
285
- *
286
- * Works like `CoList.subscribe()`, but you don't need to pass the ID or the account to load as again.
287
- *
288
- * Returns an unsubscribe function that you should call when you no longer need updates.
289
- *
290
- * @category Subscription & Loading
291
- **/
292
- subscribe(depth, listener) {
293
- return subscribeToExistingCoValue(this, depth, listener);
294
- }
295
- /** @category Type Helpers */
296
- castAs(cl) {
297
- const casted = cl.fromRaw(this._raw);
298
- const subscriptionScope = subscriptionsScopes.get(this);
299
- if (subscriptionScope) {
300
- subscriptionsScopes.set(casted, subscriptionScope);
301
- }
302
- return casted;
303
- }
304
- /**
305
- * Wait for the `CoList` to be uploaded to the other peers.
306
- *
307
- * @category Subscription & Loading
308
- */
309
- waitForSync(options) {
310
- return this._raw.core.waitForSync(options);
311
- }
312
- }
313
- _a = CoList;
314
- (() => {
315
- _a.prototype._type = "CoList";
316
- })();
317
- function toRawItems(items, itemDescriptor) {
318
- const rawItems = itemDescriptor === "json"
319
- ? items
320
- : "encoded" in itemDescriptor
321
- ? items?.map((e) => itemDescriptor.encoded.encode(e))
322
- : isRefEncoded(itemDescriptor)
323
- ? items?.map((v) => v.id)
324
- : (() => {
325
- throw new Error("Invalid element descriptor");
326
- })();
327
- return rawItems;
328
- }
329
- const CoListProxyHandler = {
330
- get(target, key, receiver) {
331
- if (typeof key === "string" && !isNaN(+key)) {
332
- const itemDescriptor = target._schema[ItemsSym];
333
- const rawValue = target._raw.get(Number(key));
334
- if (itemDescriptor === "json") {
335
- return rawValue;
336
- }
337
- else if ("encoded" in itemDescriptor) {
338
- return rawValue === undefined
339
- ? undefined
340
- : itemDescriptor.encoded.decode(rawValue);
341
- }
342
- else if (isRefEncoded(itemDescriptor)) {
343
- return rawValue === undefined
344
- ? undefined
345
- : new Ref(rawValue, target._loadedAs, itemDescriptor).accessFrom(receiver, Number(key));
346
- }
347
- }
348
- else if (key === "length") {
349
- return target._raw.entries().length;
350
- }
351
- else {
352
- return Reflect.get(target, key, receiver);
353
- }
354
- },
355
- set(target, key, value, receiver) {
356
- if (key === ItemsSym && typeof value === "object" && SchemaInit in value) {
357
- target.constructor._schema ||= {};
358
- target.constructor._schema[ItemsSym] =
359
- value[SchemaInit];
360
- return true;
361
- }
362
- if (typeof key === "string" && !isNaN(+key)) {
363
- const itemDescriptor = target._schema[ItemsSym];
364
- let rawValue;
365
- if (itemDescriptor === "json") {
366
- rawValue = value;
367
- }
368
- else if ("encoded" in itemDescriptor) {
369
- rawValue = itemDescriptor.encoded.encode(value);
370
- }
371
- else if (isRefEncoded(itemDescriptor)) {
372
- rawValue = value.id;
373
- }
374
- target._raw.replace(Number(key), rawValue);
375
- return true;
376
- }
377
- else {
378
- return Reflect.set(target, key, value, receiver);
379
- }
380
- },
381
- defineProperty(target, key, descriptor) {
382
- if (descriptor.value &&
383
- key === ItemsSym &&
384
- typeof descriptor.value === "object" &&
385
- SchemaInit in descriptor.value) {
386
- target.constructor._schema ||= {};
387
- target.constructor._schema[ItemsSym] =
388
- descriptor.value[SchemaInit];
389
- return true;
390
- }
391
- else {
392
- return Reflect.defineProperty(target, key, descriptor);
393
- }
394
- },
395
- has(target, key) {
396
- if (typeof key === "string" && !isNaN(+key)) {
397
- return Number(key) < target._raw.entries().length;
398
- }
399
- else {
400
- return Reflect.has(target, key);
401
- }
402
- },
403
- };
404
- //# sourceMappingURL=coList.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"coList.js","sourceRoot":"","sources":["../../../src/coValues/coList.ts"],"names":[],"mappings":"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"}