jazz-tools 0.10.14 → 0.11.0

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.
Files changed (150) hide show
  1. package/.turbo/turbo-build.log +11 -7
  2. package/CHANGELOG.md +31 -0
  3. package/dist/auth/AuthSecretStorage.d.ts +25 -0
  4. package/dist/auth/AuthSecretStorage.d.ts.map +1 -0
  5. package/dist/auth/DemoAuth.d.ts +27 -0
  6. package/dist/auth/DemoAuth.d.ts.map +1 -0
  7. package/dist/auth/InMemoryKVStore.d.ts +9 -0
  8. package/dist/auth/InMemoryKVStore.d.ts.map +1 -0
  9. package/dist/auth/KvStoreContext.d.ts +17 -0
  10. package/dist/auth/KvStoreContext.d.ts.map +1 -0
  11. package/dist/auth/PassphraseAuth.d.ts +35 -0
  12. package/dist/auth/PassphraseAuth.d.ts.map +1 -0
  13. package/dist/{chunk-5YDDEUNX.js → chunk-RTRX7HIO.js} +193 -81
  14. package/dist/chunk-RTRX7HIO.js.map +1 -0
  15. package/dist/coValues/account.d.ts +120 -0
  16. package/dist/coValues/account.d.ts.map +1 -0
  17. package/dist/coValues/coFeed.d.ts +361 -0
  18. package/dist/coValues/coFeed.d.ts.map +1 -0
  19. package/dist/coValues/coList.d.ts +221 -0
  20. package/dist/coValues/coList.d.ts.map +1 -0
  21. package/dist/coValues/coMap.d.ts +500 -0
  22. package/dist/coValues/coMap.d.ts.map +1 -0
  23. package/dist/coValues/coPlainText.d.ts +69 -0
  24. package/dist/coValues/coPlainText.d.ts.map +1 -0
  25. package/dist/coValues/coRichText.d.ts +259 -0
  26. package/dist/coValues/coRichText.d.ts.map +1 -0
  27. package/dist/coValues/deepLoading.d.ts +81 -0
  28. package/dist/coValues/deepLoading.d.ts.map +1 -0
  29. package/dist/coValues/extensions/imageDef.d.ts +17 -0
  30. package/dist/coValues/extensions/imageDef.d.ts.map +1 -0
  31. package/dist/coValues/group.d.ts +67 -0
  32. package/dist/coValues/group.d.ts.map +1 -0
  33. package/dist/coValues/inbox.d.ts +52 -0
  34. package/dist/coValues/inbox.d.ts.map +1 -0
  35. package/dist/coValues/interfaces.d.ts +97 -0
  36. package/dist/coValues/interfaces.d.ts.map +1 -0
  37. package/dist/coValues/profile.d.ts +28 -0
  38. package/dist/coValues/profile.d.ts.map +1 -0
  39. package/dist/coValues/registeredSchemas.d.ts +12 -0
  40. package/dist/coValues/registeredSchemas.d.ts.map +1 -0
  41. package/dist/coValues/schemaUnion.d.ts +79 -0
  42. package/dist/coValues/schemaUnion.d.ts.map +1 -0
  43. package/dist/exports.d.ts +27 -0
  44. package/dist/exports.d.ts.map +1 -0
  45. package/dist/implementation/ContextManager.d.ts +65 -0
  46. package/dist/implementation/ContextManager.d.ts.map +1 -0
  47. package/dist/implementation/activeAccountContext.d.ts +12 -0
  48. package/dist/implementation/activeAccountContext.d.ts.map +1 -0
  49. package/dist/implementation/anonymousJazzAgent.d.ts +7 -0
  50. package/dist/implementation/anonymousJazzAgent.d.ts.map +1 -0
  51. package/dist/implementation/createContext.d.ts +91 -0
  52. package/dist/implementation/createContext.d.ts.map +1 -0
  53. package/dist/implementation/devtoolsFormatters.d.ts +2 -0
  54. package/dist/implementation/devtoolsFormatters.d.ts.map +1 -0
  55. package/dist/implementation/errors.d.ts +2 -0
  56. package/dist/implementation/errors.d.ts.map +1 -0
  57. package/dist/implementation/inspect.d.ts +3 -0
  58. package/dist/implementation/inspect.d.ts.map +1 -0
  59. package/dist/implementation/invites.d.ts +23 -0
  60. package/dist/implementation/invites.d.ts.map +1 -0
  61. package/dist/implementation/refs.d.ts +21 -0
  62. package/dist/implementation/refs.d.ts.map +1 -0
  63. package/dist/implementation/schema.d.ts +72 -0
  64. package/dist/implementation/schema.d.ts.map +1 -0
  65. package/dist/implementation/subscriptionScope.d.ts +33 -0
  66. package/dist/implementation/subscriptionScope.d.ts.map +1 -0
  67. package/dist/implementation/symbols.d.ts +8 -0
  68. package/dist/implementation/symbols.d.ts.map +1 -0
  69. package/dist/index.d.ts +3 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +1 -1
  72. package/dist/internal.d.ts +12 -0
  73. package/dist/internal.d.ts.map +1 -0
  74. package/dist/lib/cache.d.ts +6 -0
  75. package/dist/lib/cache.d.ts.map +1 -0
  76. package/dist/lib/cache.test.d.ts +2 -0
  77. package/dist/lib/cache.test.d.ts.map +1 -0
  78. package/dist/testing.d.ts +41 -0
  79. package/dist/testing.d.ts.map +1 -0
  80. package/dist/testing.js +11 -16
  81. package/dist/testing.js.map +1 -1
  82. package/dist/tests/AuthSecretStorage.test.d.ts +2 -0
  83. package/dist/tests/AuthSecretStorage.test.d.ts.map +1 -0
  84. package/dist/tests/ContextManager.test.d.ts +2 -0
  85. package/dist/tests/ContextManager.test.d.ts.map +1 -0
  86. package/dist/tests/DemoAuth.test.d.ts +2 -0
  87. package/dist/tests/DemoAuth.test.d.ts.map +1 -0
  88. package/dist/tests/PassphraseAuth.test.d.ts +2 -0
  89. package/dist/tests/PassphraseAuth.test.d.ts.map +1 -0
  90. package/dist/tests/account.test.d.ts +2 -0
  91. package/dist/tests/account.test.d.ts.map +1 -0
  92. package/dist/tests/coFeed.test.d.ts +2 -0
  93. package/dist/tests/coFeed.test.d.ts.map +1 -0
  94. package/dist/tests/coList.test.d.ts +2 -0
  95. package/dist/tests/coList.test.d.ts.map +1 -0
  96. package/dist/tests/coMap.test.d.ts +2 -0
  97. package/dist/tests/coMap.test.d.ts.map +1 -0
  98. package/dist/tests/coPlainText.test.d.ts +2 -0
  99. package/dist/tests/coPlainText.test.d.ts.map +1 -0
  100. package/dist/tests/coRichText.test.d.ts +2 -0
  101. package/dist/tests/coRichText.test.d.ts.map +1 -0
  102. package/dist/tests/createContext.test.d.ts +2 -0
  103. package/dist/tests/createContext.test.d.ts.map +1 -0
  104. package/dist/tests/deepLoading.test.d.ts +2 -0
  105. package/dist/tests/deepLoading.test.d.ts.map +1 -0
  106. package/dist/tests/fixtures.d.ts +2 -0
  107. package/dist/tests/fixtures.d.ts.map +1 -0
  108. package/dist/tests/groupsAndAccounts.test.d.ts +2 -0
  109. package/dist/tests/groupsAndAccounts.test.d.ts.map +1 -0
  110. package/dist/tests/inbox.test.d.ts +2 -0
  111. package/dist/tests/inbox.test.d.ts.map +1 -0
  112. package/dist/tests/interfaces.test.d.ts +2 -0
  113. package/dist/tests/interfaces.test.d.ts.map +1 -0
  114. package/dist/tests/invites.test.d.ts +2 -0
  115. package/dist/tests/invites.test.d.ts.map +1 -0
  116. package/dist/tests/schema.test.d.ts +2 -0
  117. package/dist/tests/schema.test.d.ts.map +1 -0
  118. package/dist/tests/schemaUnion.test.d.ts +2 -0
  119. package/dist/tests/schemaUnion.test.d.ts.map +1 -0
  120. package/dist/tests/subscribe.test.d.ts +2 -0
  121. package/dist/tests/subscribe.test.d.ts.map +1 -0
  122. package/dist/tests/testing.test.d.ts +2 -0
  123. package/dist/tests/testing.test.d.ts.map +1 -0
  124. package/dist/tests/utils.d.ts +21 -0
  125. package/dist/tests/utils.d.ts.map +1 -0
  126. package/dist/types.d.ts +52 -0
  127. package/dist/types.d.ts.map +1 -0
  128. package/package.json +8 -7
  129. package/src/coValues/account.ts +69 -11
  130. package/src/coValues/coMap.ts +2 -2
  131. package/src/coValues/coRichText.ts +42 -17
  132. package/src/coValues/group.ts +76 -31
  133. package/src/coValues/inbox.ts +10 -0
  134. package/src/coValues/interfaces.ts +1 -1
  135. package/src/coValues/profile.ts +35 -2
  136. package/src/implementation/ContextManager.ts +63 -15
  137. package/src/implementation/schema.ts +1 -3
  138. package/src/testing.ts +10 -16
  139. package/src/tests/AuthSecretStorage.test.ts +1 -2
  140. package/src/tests/ContextManager.test.ts +27 -14
  141. package/src/tests/PassphraseAuth.test.ts +7 -3
  142. package/src/tests/coMap.test.ts +20 -21
  143. package/src/tests/deepLoading.test.ts +8 -17
  144. package/src/tests/groupsAndAccounts.test.ts +429 -89
  145. package/src/tests/inbox.test.ts +24 -0
  146. package/src/tests/schema.test.ts +45 -5
  147. package/src/tests/utils.ts +7 -3
  148. package/src/types.ts +6 -0
  149. package/tsconfig.json +4 -1
  150. package/dist/chunk-5YDDEUNX.js.map +0 -1
@@ -0,0 +1,120 @@
1
+ import { AgentSecret, CryptoProvider, Everyone, InviteSecret, LocalNode, Peer, RawAccount, RawControlledAccount, Role, SessionID } from "cojson";
2
+ import { AnonymousJazzAgent, type CoValue, CoValueBase, CoValueClass, DeeplyLoaded, DepthsIn, ID, Ref, RefIfCoValue, type Schema, inspect } from "../internal.js";
3
+ import { RegisteredAccount } from "../types.js";
4
+ import { type CoMap } from "./coMap.js";
5
+ import { type Group } from "./group.js";
6
+ import { Profile } from "./profile.js";
7
+ export type AccountCreationProps = {
8
+ name: string;
9
+ onboarding?: boolean;
10
+ };
11
+ /** @category Identity & Permissions */
12
+ export declare class Account extends CoValueBase implements CoValue {
13
+ id: ID<this>;
14
+ _type: "Account";
15
+ _raw: RawAccount | RawControlledAccount;
16
+ static _schema: any;
17
+ get _schema(): {
18
+ profile: Schema;
19
+ root: Schema;
20
+ };
21
+ get _owner(): Account;
22
+ get _loadedAs(): Account | AnonymousJazzAgent;
23
+ profile: Profile | null;
24
+ root: CoMap | null;
25
+ get _refs(): {
26
+ profile: RefIfCoValue<Profile> | undefined;
27
+ root: RefIfCoValue<CoMap> | undefined;
28
+ };
29
+ /**
30
+ * Whether this account is the currently active account.
31
+ */
32
+ get isMe(): boolean;
33
+ /**
34
+ * Whether this account is the owner of the local node.
35
+ */
36
+ isLocalNodeOwner: boolean;
37
+ sessionID: SessionID | undefined;
38
+ constructor(options: {
39
+ fromRaw: RawAccount | RawControlledAccount;
40
+ });
41
+ myRole(): "admin" | undefined;
42
+ getRoleOf(member: Everyone | ID<Account> | "me"): "admin" | undefined;
43
+ getParentGroups(): Array<Group>;
44
+ get members(): Array<{
45
+ id: ID<RegisteredAccount> | "everyone";
46
+ role: Role;
47
+ ref: Ref<RegisteredAccount> | undefined;
48
+ account: RegisteredAccount | null | undefined;
49
+ }>;
50
+ canRead(value: CoValue): boolean;
51
+ canWrite(value: CoValue): boolean;
52
+ canAdmin(value: CoValue): boolean;
53
+ acceptInvite<V extends CoValue>(valueID: ID<V>, inviteSecret: InviteSecret, coValueClass: CoValueClass<V>): Promise<([V] extends [(infer Item)[]] ? V : [V] extends [{
54
+ _type: "CoMap" | "Group" | "Account";
55
+ }] ? V : [V] extends [{
56
+ _type: "CoStream";
57
+ byMe: import("./coFeed.js").CoFeedEntry<infer Item_1> | undefined;
58
+ }] ? V : [V] extends [{
59
+ _type: "BinaryCoStream";
60
+ }] ? V : [V] extends [{
61
+ _type: "CoPlainText";
62
+ }] ? V : never) | undefined>;
63
+ /** @private */
64
+ static create<A extends Account>(this: CoValueClass<A> & typeof Account, options: {
65
+ creationProps: {
66
+ name: string;
67
+ };
68
+ initialAgentSecret?: AgentSecret;
69
+ peersToLoadFrom?: Peer[];
70
+ crypto: CryptoProvider;
71
+ }): Promise<A>;
72
+ static getMe<A extends Account>(this: CoValueClass<A> & typeof Account): A;
73
+ static createAs<A extends Account>(this: CoValueClass<A> & typeof Account, as: Account, options: {
74
+ creationProps: {
75
+ name: string;
76
+ };
77
+ }): Promise<A>;
78
+ static fromNode<A extends Account>(this: CoValueClass<A>, node: LocalNode): A;
79
+ toJSON(): object | any[];
80
+ [inspect](): object | any[];
81
+ applyMigration(creationProps?: AccountCreationProps): Promise<void>;
82
+ migrate(creationProps?: AccountCreationProps): void;
83
+ /** @category Subscription & Loading */
84
+ static load<A extends Account, Depth>(this: CoValueClass<A>, id: ID<A>, depth: Depth & DepthsIn<A>): Promise<DeeplyLoaded<A, Depth> | undefined>;
85
+ static load<A extends Account, Depth>(this: CoValueClass<A>, id: ID<A>, as: Account, depth: Depth & DepthsIn<A>): Promise<DeeplyLoaded<A, Depth> | undefined>;
86
+ /** @category Subscription & Loading */
87
+ static subscribe<A extends Account, Depth>(this: CoValueClass<A>, id: ID<A>, depth: Depth & DepthsIn<A>, listener: (value: DeeplyLoaded<A, Depth>) => void): () => void;
88
+ static subscribe<A extends Account, Depth>(this: CoValueClass<A>, id: ID<A>, as: Account, depth: Depth & DepthsIn<A>, listener: (value: DeeplyLoaded<A, Depth>) => void): () => void;
89
+ /** @category Subscription & Loading */
90
+ ensureLoaded<A extends Account, Depth>(this: A, depth: Depth & DepthsIn<A>): Promise<DeeplyLoaded<A, Depth>>;
91
+ /** @category Subscription & Loading */
92
+ subscribe<A extends Account, Depth>(this: A, depth: Depth & DepthsIn<A>, listener: (value: DeeplyLoaded<A, Depth>) => void): () => void;
93
+ /**
94
+ * Wait for the `Account` to be uploaded to the other peers.
95
+ *
96
+ * @category Subscription & Loading
97
+ */
98
+ waitForSync(options?: {
99
+ timeout?: number;
100
+ }): Promise<unknown[]>;
101
+ /**
102
+ * Wait for all the available `CoValues` to be uploaded to the other peers.
103
+ *
104
+ * @category Subscription & Loading
105
+ */
106
+ waitForAllCoValuesSync(options?: {
107
+ timeout?: number;
108
+ }): Promise<unknown[][]>;
109
+ }
110
+ export declare const AccountAndGroupProxyHandler: ProxyHandler<Account | Group>;
111
+ /** @category Identity & Permissions */
112
+ export declare function isControlledAccount(account: Account): account is Account & {
113
+ isLocalNodeOwner: true;
114
+ sessionID: SessionID;
115
+ _raw: RawControlledAccount;
116
+ };
117
+ export type AccountClass<Acc extends Account> = CoValueClass<Acc> & {
118
+ fromNode: (typeof Account)["fromNode"];
119
+ };
120
+ //# sourceMappingURL=account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/coValues/account.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,361 @@
1
+ import type { BinaryStreamInfo, CojsonInternalTypes, RawBinaryCoStream, RawCoStream, SessionID } from "cojson";
2
+ import type { CoValue, CoValueClass, DeeplyLoaded, DepthsIn, ID, IfCo, SchemaFor, UnCo } from "../internal.js";
3
+ import { CoValueBase, ItemsSym, Ref, inspect } from "../internal.js";
4
+ import { type Account } from "./account.js";
5
+ import { type Group } from "./group.js";
6
+ /** @deprecated Use CoFeedEntry instead */
7
+ export type CoStreamEntry<Item> = CoFeedEntry<Item>;
8
+ export type CoFeedEntry<Item> = SingleCoFeedEntry<Item> & {
9
+ all: IterableIterator<SingleCoFeedEntry<Item>>;
10
+ };
11
+ /** @deprecated Use SingleCoFeedEntry instead */
12
+ export type SingleCoStreamEntry<Item> = SingleCoFeedEntry<Item>;
13
+ export type SingleCoFeedEntry<Item> = {
14
+ value: NonNullable<Item> extends CoValue ? NonNullable<Item> | null : Item;
15
+ ref: NonNullable<Item> extends CoValue ? Ref<NonNullable<Item>> : never;
16
+ by?: Account | null;
17
+ madeAt: Date;
18
+ tx: CojsonInternalTypes.TransactionID;
19
+ };
20
+ /** @deprecated Use CoFeed instead */
21
+ export { CoFeed as CoStream };
22
+ /**
23
+ * CoFeeds are collaborative logs of data.
24
+ *
25
+ * @categoryDescription Content
26
+ * They are similar to `CoList`s, but with a few key differences:
27
+ * - They are append-only
28
+ * - They consist of several internal append-only logs, one per account session (tab, device, app instance, etc.)
29
+ * - They expose those as a per-account aggregated view (default) or a precise per-session view
30
+ *
31
+ * ```ts
32
+ * favDog.push("Poodle");
33
+ * favDog.push("Schnowzer");
34
+ * ```
35
+ *
36
+ * @category CoValues
37
+ */
38
+ export declare class CoFeed<Item = any> extends CoValueBase implements CoValue {
39
+ /**
40
+ * Declare a `CoFeed` by subclassing `CoFeed.Of(...)` and passing the item schema using a `co` primitive or a `co.ref`.
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * class ColorFeed extends CoFeed.Of(co.string) {}
45
+ * class AnimalFeed extends CoFeed.Of(co.ref(Animal)) {}
46
+ * ```
47
+ *
48
+ * @category Declaration
49
+ */
50
+ static Of<Item>(item: IfCo<Item, Item>): typeof CoFeed<Item>;
51
+ /**
52
+ * The ID of this `CoFeed`
53
+ * @category Content */
54
+ id: ID<this>;
55
+ /** @category Type Helpers */
56
+ _type: "CoStream";
57
+ /** @category Internals */
58
+ _raw: RawCoStream;
59
+ /** @internal This is only a marker type and doesn't exist at runtime */
60
+ [ItemsSym]: Item;
61
+ /** @internal */
62
+ static _schema: any;
63
+ /** @internal */
64
+ get _schema(): {
65
+ [ItemsSym]: SchemaFor<Item>;
66
+ };
67
+ /**
68
+ * The per-account view of this `CoFeed`
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * // Access entries directly by account ID
73
+ * const aliceEntries = feed[aliceAccount.id];
74
+ * console.log(aliceEntries.value); // Latest value from Alice
75
+ *
76
+ * // Iterate through all accounts' entries
77
+ * for (const [accountId, entries] of Object.entries(feed)) {
78
+ * console.log(`Latest entry from ${accountId}:`, entries.value);
79
+ *
80
+ * // Access all entries from this account
81
+ * for (const entry of entries.all) {
82
+ * console.log(`Entry made at ${entry.madeAt}:`, entry.value);
83
+ * }
84
+ * }
85
+ * ```
86
+ *
87
+ * @category Content
88
+ */
89
+ [key: ID<Account>]: CoFeedEntry<Item>;
90
+ /**
91
+ * The current account's view of this `CoFeed`
92
+ * @category Content
93
+ */
94
+ get byMe(): CoFeedEntry<Item> | undefined;
95
+ /**
96
+ * The per-session view of this `CoFeed`
97
+ * @category Content
98
+ */
99
+ perSession: {
100
+ [key: SessionID]: CoFeedEntry<Item>;
101
+ };
102
+ /**
103
+ * The current session's view of this `CoFeed`
104
+ *
105
+ * This is a shortcut for `this.perSession` where the session ID is the current session ID.
106
+ *
107
+ * @category Content
108
+ */
109
+ get inCurrentSession(): CoFeedEntry<Item> | undefined;
110
+ constructor(options: {
111
+ init: Item[];
112
+ owner: Account | Group;
113
+ } | {
114
+ fromRaw: RawCoStream;
115
+ });
116
+ /**
117
+ * Create a new `CoFeed`
118
+ * @category Creation
119
+ */
120
+ static create<S extends CoFeed>(this: CoValueClass<S>, init: S extends CoFeed<infer Item> ? UnCo<Item>[] : never, options?: {
121
+ owner: Account | Group;
122
+ } | Account | Group): S;
123
+ /**
124
+ * Push items to this `CoFeed`
125
+ *
126
+ * Items are appended to the current session's log. Each session (tab, device, app instance)
127
+ * maintains its own append-only log, which is then aggregated into the per-account view.
128
+ *
129
+ * @example
130
+ * ```ts
131
+ * // Adds items to current session's log
132
+ * feed.push("item1", "item2");
133
+ *
134
+ * // View items from current session
135
+ * console.log(feed.inCurrentSession);
136
+ *
137
+ * // View aggregated items from all sessions for current account
138
+ * console.log(feed.byMe);
139
+ * ```
140
+ *
141
+ * @category Content
142
+ */
143
+ push(...items: Item[]): void;
144
+ private pushItem;
145
+ /**
146
+ * Get a JSON representation of the `CoFeed`
147
+ * @category
148
+ */
149
+ toJSON(): {
150
+ id: string;
151
+ _type: "CoStream";
152
+ [key: string]: unknown;
153
+ in: {
154
+ [key: string]: unknown;
155
+ };
156
+ };
157
+ /** @internal */
158
+ [inspect](): {
159
+ id: string;
160
+ _type: "CoStream";
161
+ [key: string]: unknown;
162
+ in: {
163
+ [key: string]: unknown;
164
+ };
165
+ };
166
+ /** @internal */
167
+ static schema<V extends CoFeed>(this: {
168
+ new (...args: any): V;
169
+ } & typeof CoFeed, def: {
170
+ [ItemsSym]: V["_schema"][ItemsSym];
171
+ }): void;
172
+ /**
173
+ * Load a `CoFeed`
174
+ * @category Subscription & Loading
175
+ */
176
+ static load<S extends CoFeed, Depth>(this: CoValueClass<S>, id: ID<S>, depth: Depth & DepthsIn<S>): Promise<DeeplyLoaded<S, Depth> | undefined>;
177
+ static load<S extends CoFeed, Depth>(this: CoValueClass<S>, id: ID<S>, as: Account, depth: Depth & DepthsIn<S>): Promise<DeeplyLoaded<S, Depth> | undefined>;
178
+ /**
179
+ * Subscribe to a `CoFeed`, when you have an ID but don't have a `CoFeed` instance yet
180
+ * @category Subscription & Loading
181
+ */
182
+ static subscribe<S extends CoFeed, Depth>(this: CoValueClass<S>, id: ID<S>, depth: Depth & DepthsIn<S>, listener: (value: DeeplyLoaded<S, Depth>) => void): () => void;
183
+ static subscribe<S extends CoFeed, Depth>(this: CoValueClass<S>, id: ID<S>, as: Account, depth: Depth & DepthsIn<S>, listener: (value: DeeplyLoaded<S, Depth>) => void): () => void;
184
+ /**
185
+ * Ensure a `CoFeed` is loaded to the specified depth
186
+ *
187
+ * @returns A new instance of the same CoFeed that's loaded to the specified depth,
188
+ * or undefined if it cannot be loaded that deeply
189
+ * @category Subscription & Loading
190
+ */
191
+ ensureLoaded<S extends CoFeed, Depth>(this: S, depth: Depth & DepthsIn<S>): Promise<DeeplyLoaded<S, Depth>>;
192
+ /**
193
+ * An instance method to subscribe to an existing `CoFeed`
194
+ *
195
+ * No need to provide an ID or Account since they're already part of the instance.
196
+ * @category Subscription & Loading
197
+ */
198
+ subscribe<S extends CoFeed, Depth>(this: S, depth: Depth & DepthsIn<S>, listener: (value: DeeplyLoaded<S, Depth>) => void): () => void;
199
+ /**
200
+ * Wait for the `CoFeed` to be uploaded to the other peers.
201
+ *
202
+ * @category Subscription & Loading
203
+ */
204
+ waitForSync(options?: {
205
+ timeout?: number;
206
+ }): Promise<unknown[]>;
207
+ }
208
+ /**
209
+ * The proxy handler for `CoFeed` instances
210
+ * @internal
211
+ */
212
+ export declare const CoStreamProxyHandler: ProxyHandler<CoFeed>;
213
+ /** @deprecated Use FileStream instead */
214
+ export { FileStream as BinaryCoStream };
215
+ /**
216
+ * FileStreams are `CoFeed`s that contain binary data, collaborative versions of `Blob`s.
217
+ *
218
+ * @categoryDescription Declaration
219
+ * `FileStream` can be referenced in schemas.
220
+ *
221
+ * ```ts
222
+ * import { co, FileStream } from "jazz-tools";
223
+ *
224
+ * class MyCoMap extends CoMap {
225
+ * file = co.ref(FileStream);
226
+ * }
227
+ * ```
228
+ *
229
+ * @category CoValues
230
+ */
231
+ export declare class FileStream extends CoValueBase implements CoValue {
232
+ /**
233
+ * The ID of this `FileStream`
234
+ * @category Content
235
+ */
236
+ id: ID<this>;
237
+ /** @category Type Helpers */
238
+ _type: "BinaryCoStream";
239
+ /** @internal */
240
+ _raw: RawBinaryCoStream;
241
+ constructor(options: {
242
+ owner: Account | Group;
243
+ } | {
244
+ fromRaw: RawBinaryCoStream;
245
+ });
246
+ /**
247
+ * Create a new empty `FileStream` instance.
248
+ *
249
+ * @param options - Configuration options for the new FileStream
250
+ * @param options.owner - The Account or Group that will own this FileStream and control access rights
251
+ *
252
+ * @example
253
+ * ```typescript
254
+ * // Create owned by an account
255
+ * const stream = FileStream.create({ owner: myAccount });
256
+ *
257
+ * // Create owned by a group
258
+ * const stream = FileStream.create({ owner: teamGroup });
259
+ *
260
+ * // Create with implicit owner
261
+ * const stream = FileStream.create(myAccount);
262
+ * ```
263
+ *
264
+ * @remarks
265
+ * For uploading an existing file or blob, use {@link FileStream.createFromBlob} instead.
266
+ *
267
+ * @category Creation
268
+ */
269
+ static create<S extends FileStream>(this: CoValueClass<S>, options?: {
270
+ owner?: Account | Group;
271
+ } | Account | Group): S;
272
+ getChunks(options?: {
273
+ allowUnfinished?: boolean;
274
+ }): (BinaryStreamInfo & {
275
+ chunks: Uint8Array[];
276
+ finished: boolean;
277
+ }) | undefined;
278
+ isBinaryStreamEnded(): boolean;
279
+ start(options: BinaryStreamInfo): void;
280
+ push(data: Uint8Array): void;
281
+ end(): void;
282
+ toBlob(options?: {
283
+ allowUnfinished?: boolean;
284
+ }): Blob | undefined;
285
+ /**
286
+ * Load a `FileStream` as a `Blob`
287
+ *
288
+ * @category Content
289
+ */
290
+ static loadAsBlob(id: ID<FileStream>, options?: {
291
+ allowUnfinished?: boolean;
292
+ }): Promise<Blob | undefined>;
293
+ static loadAsBlob(id: ID<FileStream>, as: Account, options?: {
294
+ allowUnfinished?: boolean;
295
+ }): Promise<Blob | undefined>;
296
+ /**
297
+ * Create a `FileStream` from a `Blob` or `File`
298
+ *
299
+ * @example
300
+ * ```ts
301
+ * import { co, FileStream } from "jazz-tools";
302
+ *
303
+ * const fileStream = await FileStream.createFromBlob(file, {owner: group})
304
+ * ```
305
+ * @category Content
306
+ */
307
+ static createFromBlob(blob: Blob | File, options?: {
308
+ owner?: Group | Account;
309
+ onProgress?: (progress: number) => void;
310
+ } | Account | Group): Promise<FileStream>;
311
+ /**
312
+ * Get a JSON representation of the `FileStream`
313
+ * @category Content
314
+ */
315
+ toJSON(): {
316
+ id: string;
317
+ _type: "BinaryCoStream";
318
+ mimeType?: string;
319
+ totalSizeBytes?: number;
320
+ fileName?: string;
321
+ chunks?: Uint8Array[];
322
+ finished?: boolean;
323
+ };
324
+ /** @internal */
325
+ [inspect](): {
326
+ id: string;
327
+ _type: "BinaryCoStream";
328
+ mimeType?: string;
329
+ totalSizeBytes?: number;
330
+ fileName?: string;
331
+ chunks?: Uint8Array[];
332
+ finished?: boolean;
333
+ };
334
+ /**
335
+ * Load a `FileStream`
336
+ * @category Subscription & Loading
337
+ */
338
+ static load<C extends FileStream, Depth>(this: CoValueClass<C>, id: ID<C>, depth: Depth & DepthsIn<C>): Promise<DeeplyLoaded<C, Depth> | undefined>;
339
+ static load<C extends FileStream, Depth>(this: CoValueClass<C>, id: ID<C>, as: Account, depth: Depth & DepthsIn<C>): Promise<DeeplyLoaded<C, Depth> | undefined>;
340
+ /**
341
+ * Subscribe to a `FileStream`, when you have an ID but don't have a `FileStream` instance yet
342
+ * @category Subscription & Loading
343
+ */
344
+ static subscribe<C extends FileStream, Depth>(this: CoValueClass<C>, id: ID<C>, depth: Depth & DepthsIn<C>, listener: (value: DeeplyLoaded<C, Depth>) => void): () => void;
345
+ static subscribe<C extends FileStream, Depth>(this: CoValueClass<C>, id: ID<C>, as: Account, depth: Depth & DepthsIn<C>, listener: (value: DeeplyLoaded<C, Depth>) => void): () => void;
346
+ ensureLoaded<B extends FileStream, Depth>(this: B, depth: Depth & DepthsIn<B>): Promise<DeeplyLoaded<B, Depth> | undefined>;
347
+ /**
348
+ * An instance method to subscribe to an existing `FileStream`
349
+ * @category Subscription & Loading
350
+ */
351
+ subscribe<B extends FileStream, Depth>(this: B, depth: Depth & DepthsIn<B>, listener: (value: DeeplyLoaded<B, Depth>) => void): () => void;
352
+ /**
353
+ * Wait for the `FileStream` to be uploaded to the other peers.
354
+ *
355
+ * @category Subscription & Loading
356
+ */
357
+ waitForSync(options?: {
358
+ timeout?: number;
359
+ }): Promise<unknown[]>;
360
+ }
361
+ //# sourceMappingURL=coFeed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coFeed.d.ts","sourceRoot":"","sources":["../../src/coValues/coFeed.ts"],"names":[],"mappings":"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"}