@fluidframework/cell 2.0.0-internal.7.2.2 → 2.0.0-internal.7.4.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 (66) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +1 -2
  3. package/api-extractor-lint.json +13 -0
  4. package/api-extractor.json +3 -4
  5. package/api-report/cell.api.md +8 -8
  6. package/dist/cell-alpha.d.ts +30 -0
  7. package/dist/cell-beta.d.ts +52 -0
  8. package/dist/cell-public.d.ts +52 -0
  9. package/dist/cell-untrimmed.d.ts +263 -0
  10. package/dist/{cell.js → cell.cjs} +3 -7
  11. package/dist/cell.cjs.map +1 -0
  12. package/dist/cell.d.ts +1 -5
  13. package/dist/cell.d.ts.map +1 -1
  14. package/dist/{cellFactory.js → cellFactory.cjs} +3 -3
  15. package/dist/cellFactory.cjs.map +1 -0
  16. package/dist/{index.js → index.cjs} +2 -2
  17. package/dist/index.cjs.map +1 -0
  18. package/dist/{interfaces.js → interfaces.cjs} +1 -1
  19. package/dist/interfaces.cjs.map +1 -0
  20. package/dist/interfaces.d.ts +4 -9
  21. package/dist/interfaces.d.ts.map +1 -1
  22. package/dist/{packageVersion.js → packageVersion.cjs} +2 -2
  23. package/dist/packageVersion.cjs.map +1 -0
  24. package/dist/packageVersion.d.ts +1 -1
  25. package/dist/tsdoc-metadata.json +1 -1
  26. package/lib/cell-alpha.d.ts +30 -0
  27. package/lib/cell-beta.d.ts +52 -0
  28. package/lib/cell-public.d.ts +52 -0
  29. package/lib/cell-untrimmed.d.ts +263 -0
  30. package/lib/cell.d.ts +2 -6
  31. package/lib/cell.d.ts.map +1 -1
  32. package/lib/{cell.js → cell.mjs} +3 -7
  33. package/lib/cell.mjs.map +1 -0
  34. package/lib/cellFactory.d.ts +1 -1
  35. package/lib/cellFactory.d.ts.map +1 -1
  36. package/lib/{cellFactory.js → cellFactory.mjs} +3 -3
  37. package/lib/cellFactory.mjs.map +1 -0
  38. package/lib/index.d.ts +2 -7
  39. package/lib/index.d.ts.map +1 -1
  40. package/lib/index.mjs +6 -0
  41. package/lib/index.mjs.map +1 -0
  42. package/lib/interfaces.d.ts +4 -9
  43. package/lib/interfaces.d.ts.map +1 -1
  44. package/lib/{interfaces.js → interfaces.mjs} +1 -1
  45. package/lib/interfaces.mjs.map +1 -0
  46. package/lib/packageVersion.d.ts +1 -1
  47. package/lib/{packageVersion.js → packageVersion.mjs} +2 -2
  48. package/lib/packageVersion.mjs.map +1 -0
  49. package/package.json +47 -27
  50. package/src/cell.ts +1 -5
  51. package/src/interfaces.ts +4 -9
  52. package/src/packageVersion.ts +1 -1
  53. package/tsc-multi.test.json +4 -0
  54. package/tsconfig.json +5 -3
  55. package/dist/cell.js.map +0 -1
  56. package/dist/cellFactory.js.map +0 -1
  57. package/dist/index.js.map +0 -1
  58. package/dist/interfaces.js.map +0 -1
  59. package/dist/packageVersion.js.map +0 -1
  60. package/lib/cell.js.map +0 -1
  61. package/lib/cellFactory.js.map +0 -1
  62. package/lib/index.js +0 -11
  63. package/lib/index.js.map +0 -1
  64. package/lib/interfaces.js.map +0 -1
  65. package/lib/packageVersion.js.map +0 -1
  66. package/tsconfig.esnext.json +0 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @fluidframework/cell
2
2
 
3
+ ## 2.0.0-internal.7.4.0
4
+
5
+ Dependency updates only.
6
+
7
+ ## 2.0.0-internal.7.3.0
8
+
9
+ Dependency updates only.
10
+
3
11
  ## 2.0.0-internal.7.2.0
4
12
 
5
13
  Dependency updates only.
package/README.md CHANGED
@@ -109,8 +109,7 @@ Thank you!
109
109
 
110
110
  This project may contain Microsoft trademarks or logos for Microsoft projects, products, or services.
111
111
 
112
- Use of these trademarks or logos must follow Microsoft's [Trademark & Brand
113
- Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).
112
+ Use of these trademarks or logos must follow Microsoft's [Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general).
114
113
 
115
114
  Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
116
115
 
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
+ "extends": "../../../common/build/build-common/api-extractor-lint.json",
4
+ "messages": {
5
+ "extractorMessageReporting": {
6
+ // TODO: remove once base config has this enabled as an error
7
+ "ae-incompatible-release-tags": {
8
+ "logLevel": "error",
9
+ "addToApiReportFile": false
10
+ }
11
+ }
12
+ }
13
+ }
@@ -1,11 +1,10 @@
1
1
  {
2
2
  "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
- "extends": "@fluidframework/build-common/api-extractor-base.json",
4
-
5
- // TODO: Fix violations and remove these rule overrides
3
+ "extends": "../../../common/build/build-common/api-extractor-base.json",
6
4
  "messages": {
7
5
  "extractorMessageReporting": {
8
- "ae-forgotten-export": {
6
+ // TODO: Add missing documentation and remove this rule override
7
+ "ae-undocumented": {
9
8
  "logLevel": "none"
10
9
  }
11
10
  }
@@ -17,44 +17,44 @@ import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
17
17
  import { Serializable } from '@fluidframework/datastore-definitions';
18
18
  import { SharedObject } from '@fluidframework/shared-object-base';
19
19
 
20
- // @alpha
20
+ // @internal
21
21
  export interface ICellAttributionOptions {
22
22
  // (undocumented)
23
23
  track?: boolean;
24
24
  }
25
25
 
26
- // @alpha
26
+ // @internal
27
27
  export interface ICellOptions {
28
28
  // (undocumented)
29
29
  attribution?: ICellAttributionOptions;
30
30
  }
31
31
 
32
- // @public
32
+ // @internal
33
33
  export interface ISharedCell<T = any> extends ISharedObject<ISharedCellEvents<T>> {
34
34
  delete(): void;
35
35
  empty(): boolean;
36
36
  get(): Serializable<T> | undefined;
37
- // @alpha (undocumented)
37
+ // (undocumented)
38
38
  getAttribution(): AttributionKey | undefined;
39
39
  set(value: Serializable<T>): void;
40
40
  }
41
41
 
42
- // @public
42
+ // @internal
43
43
  export interface ISharedCellEvents<T> extends ISharedObjectEvents {
44
44
  (event: "valueChanged", listener: (value: Serializable<T>) => void): any;
45
45
  (event: "delete", listener: () => void): any;
46
46
  }
47
47
 
48
- // @public
48
+ // @internal
49
49
  export class SharedCell<T = any> extends SharedObject<ISharedCellEvents<T>> implements ISharedCell<T> {
50
50
  constructor(id: string, runtime: IFluidDataStoreRuntime, attributes: IChannelAttributes);
51
- // @internal (undocumented)
51
+ // (undocumented)
52
52
  protected applyStashedOp(content: unknown): unknown;
53
53
  static create(runtime: IFluidDataStoreRuntime, id?: string): SharedCell;
54
54
  delete(): void;
55
55
  empty(): boolean;
56
56
  get(): Serializable<T> | undefined;
57
- // @alpha (undocumented)
57
+ // (undocumented)
58
58
  getAttribution(): AttributionKey | undefined;
59
59
  static getFactory(): IChannelFactory;
60
60
  protected initializeLocalCore(): void;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The `SharedCell` Distributed Data Structure (DDS) stores a single, shared value that can be edited or deleted.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+
7
+ import { AttributionKey } from '@fluidframework/runtime-definitions';
8
+ import { IChannelAttributes } from '@fluidframework/datastore-definitions';
9
+ import { IChannelFactory } from '@fluidframework/datastore-definitions';
10
+ import { IChannelStorageService } from '@fluidframework/datastore-definitions';
11
+ import { IFluidDataStoreRuntime } from '@fluidframework/datastore-definitions';
12
+ import { IFluidSerializer } from '@fluidframework/shared-object-base';
13
+ import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
14
+ import { ISharedObject } from '@fluidframework/shared-object-base';
15
+ import { ISharedObjectEvents } from '@fluidframework/shared-object-base';
16
+ import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
17
+ import { Serializable } from '@fluidframework/datastore-definitions';
18
+ import { SharedObject } from '@fluidframework/shared-object-base';
19
+
20
+ /* Excluded from this release type: ICellAttributionOptions */
21
+
22
+ /* Excluded from this release type: ICellOptions */
23
+
24
+ /* Excluded from this release type: ISharedCell */
25
+
26
+ /* Excluded from this release type: ISharedCellEvents */
27
+
28
+ /* Excluded from this release type: SharedCell */
29
+
30
+ export { }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * The `SharedCell` Distributed Data Structure (DDS) stores a single, shared value that can be edited or deleted.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+
7
+ import { AttributionKey } from '@fluidframework/runtime-definitions';
8
+ import { IChannelAttributes } from '@fluidframework/datastore-definitions';
9
+ import { IChannelFactory } from '@fluidframework/datastore-definitions';
10
+ import { IChannelStorageService } from '@fluidframework/datastore-definitions';
11
+ import { IFluidDataStoreRuntime } from '@fluidframework/datastore-definitions';
12
+ import { IFluidSerializer } from '@fluidframework/shared-object-base';
13
+ import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
14
+ import { ISharedObject } from '@fluidframework/shared-object-base';
15
+ import { ISharedObjectEvents } from '@fluidframework/shared-object-base';
16
+ import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
17
+ import { Serializable } from '@fluidframework/datastore-definitions';
18
+ import { SharedObject } from '@fluidframework/shared-object-base';
19
+
20
+ /* Excluded from this release type: AttributionKey */
21
+
22
+ /* Excluded from this release type: ICellAttributionOptions */
23
+
24
+ /* Excluded from this release type: ICellOptions */
25
+
26
+ /* Excluded from this release type: IChannelAttributes */
27
+
28
+ /* Excluded from this release type: IChannelFactory */
29
+
30
+ /* Excluded from this release type: IChannelStorageService */
31
+
32
+ /* Excluded from this release type: IFluidDataStoreRuntime */
33
+
34
+ /* Excluded from this release type: IFluidSerializer */
35
+
36
+ /* Excluded from this release type: ISharedCell */
37
+
38
+ /* Excluded from this release type: ISharedCellEvents */
39
+
40
+ /* Excluded from this release type: ISharedObject */
41
+
42
+ /* Excluded from this release type: ISharedObjectEvents */
43
+
44
+ /* Excluded from this release type: ISummaryTreeWithStats */
45
+
46
+ /* Excluded from this release type: Serializable */
47
+
48
+ /* Excluded from this release type: SharedCell */
49
+
50
+ /* Excluded from this release type: SharedObject */
51
+
52
+ export { }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * The `SharedCell` Distributed Data Structure (DDS) stores a single, shared value that can be edited or deleted.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+
7
+ import { AttributionKey } from '@fluidframework/runtime-definitions';
8
+ import { IChannelAttributes } from '@fluidframework/datastore-definitions';
9
+ import { IChannelFactory } from '@fluidframework/datastore-definitions';
10
+ import { IChannelStorageService } from '@fluidframework/datastore-definitions';
11
+ import { IFluidDataStoreRuntime } from '@fluidframework/datastore-definitions';
12
+ import { IFluidSerializer } from '@fluidframework/shared-object-base';
13
+ import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
14
+ import { ISharedObject } from '@fluidframework/shared-object-base';
15
+ import { ISharedObjectEvents } from '@fluidframework/shared-object-base';
16
+ import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
17
+ import { Serializable } from '@fluidframework/datastore-definitions';
18
+ import { SharedObject } from '@fluidframework/shared-object-base';
19
+
20
+ /* Excluded from this release type: AttributionKey */
21
+
22
+ /* Excluded from this release type: ICellAttributionOptions */
23
+
24
+ /* Excluded from this release type: ICellOptions */
25
+
26
+ /* Excluded from this release type: IChannelAttributes */
27
+
28
+ /* Excluded from this release type: IChannelFactory */
29
+
30
+ /* Excluded from this release type: IChannelStorageService */
31
+
32
+ /* Excluded from this release type: IFluidDataStoreRuntime */
33
+
34
+ /* Excluded from this release type: IFluidSerializer */
35
+
36
+ /* Excluded from this release type: ISharedCell */
37
+
38
+ /* Excluded from this release type: ISharedCellEvents */
39
+
40
+ /* Excluded from this release type: ISharedObject */
41
+
42
+ /* Excluded from this release type: ISharedObjectEvents */
43
+
44
+ /* Excluded from this release type: ISummaryTreeWithStats */
45
+
46
+ /* Excluded from this release type: Serializable */
47
+
48
+ /* Excluded from this release type: SharedCell */
49
+
50
+ /* Excluded from this release type: SharedObject */
51
+
52
+ export { }
@@ -0,0 +1,263 @@
1
+ /**
2
+ * The `SharedCell` Distributed Data Structure (DDS) stores a single, shared value that can be edited or deleted.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+
7
+ import { AttributionKey } from '@fluidframework/runtime-definitions';
8
+ import { IChannelAttributes } from '@fluidframework/datastore-definitions';
9
+ import { IChannelFactory } from '@fluidframework/datastore-definitions';
10
+ import { IChannelStorageService } from '@fluidframework/datastore-definitions';
11
+ import { IFluidDataStoreRuntime } from '@fluidframework/datastore-definitions';
12
+ import { IFluidSerializer } from '@fluidframework/shared-object-base';
13
+ import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
14
+ import { ISharedObject } from '@fluidframework/shared-object-base';
15
+ import { ISharedObjectEvents } from '@fluidframework/shared-object-base';
16
+ import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
17
+ import { Serializable } from '@fluidframework/datastore-definitions';
18
+ import { SharedObject } from '@fluidframework/shared-object-base';
19
+
20
+ /**
21
+ * This enables the cell to store the attribution information which can be accessed with the runtime
22
+ * (i.e. who creeated the content and when it was created)
23
+ *
24
+ * default: false
25
+ * @internal
26
+ */
27
+ export declare interface ICellAttributionOptions {
28
+ track?: boolean;
29
+ }
30
+
31
+ /**
32
+ * Options related to attribution
33
+ * @internal
34
+ */
35
+ export declare interface ICellOptions {
36
+ attribution?: ICellAttributionOptions;
37
+ }
38
+
39
+ /**
40
+ * A Distributed Data Structure (DDS), which stores a single shared value that can be edited or deleted.
41
+ *
42
+ * @typeParam T - The type of cell data. Must be serializable.
43
+ *
44
+ * @example Creation
45
+ *
46
+ * To create a `SharedCell`, call the static create method:
47
+ *
48
+ * ```typescript
49
+ * const myCell = SharedCell.create(this.runtime, id);
50
+ * ```
51
+ *
52
+ * @example Usage
53
+ *
54
+ * The value stored in the cell can be set with the `.set()` method and retrieved with the `.get()` method:
55
+ *
56
+ * ```typescript
57
+ * myCell.set(3);
58
+ * console.log(myCell.get()); // 3
59
+ * ```
60
+ *
61
+ * The value must only be plain JS objects or `SharedObject` handles (e.g. to another DDS or Fluid object).
62
+ * In collaborative scenarios, the value is settled with a policy of _last write wins_.
63
+ *
64
+ * The `.delete()` method will delete the stored value from the cell:
65
+ *
66
+ * ```typescript
67
+ * myCell.delete();
68
+ * console.log(myCell.get()); // undefined
69
+ * ```
70
+ *
71
+ * The `.empty()` method will check if the value is undefined.
72
+ *
73
+ * ```typescript
74
+ * if (myCell.empty()) {
75
+ * // myCell.get() will return undefined
76
+ * } else {
77
+ * // myCell.get() will return a non-undefined value
78
+ * }
79
+ * ```
80
+ *
81
+ * @example Eventing
82
+ *
83
+ * `SharedCell` is an `EventEmitter`, and will emit events when other clients make modifications. You should
84
+ * register for these events and respond appropriately as the data is modified. `valueChanged` will be emitted
85
+ * in response to a `set`, and `delete` will be emitted in response to a `delete`.
86
+ * @internal
87
+ */
88
+ export declare interface ISharedCell<T = any> extends ISharedObject<ISharedCellEvents<T>> {
89
+ /**
90
+ * Retrieves the cell value.
91
+ *
92
+ * @returns The value of the cell
93
+ */
94
+ get(): Serializable<T> | undefined;
95
+ /**
96
+ * Sets the cell value.
97
+ *
98
+ * @param value - a JSON-able or SharedObject value to set the cell to
99
+ */
100
+ set(value: Serializable<T>): void;
101
+ /**
102
+ * Checks whether cell is empty or not.
103
+ *
104
+ * @returns `true` if the value of cell is `undefined`, `false` otherwise
105
+ */
106
+ empty(): boolean;
107
+ /**
108
+ * Delete the value from the cell.
109
+ */
110
+ delete(): void;
111
+ /**
112
+ * @returns the AttributionKey associated with the cell's most recent change.
113
+ */
114
+ getAttribution(): AttributionKey | undefined;
115
+ }
116
+
117
+ /**
118
+ * Events emitted by {@link ISharedCell}.
119
+ * @internal
120
+ */
121
+ export declare interface ISharedCellEvents<T> extends ISharedObjectEvents {
122
+ /**
123
+ * Emitted when the value has changed.
124
+ *
125
+ * @remarks Event paramters:
126
+ *
127
+ * - `value`: The new value of the cell.
128
+ */
129
+ (event: "valueChanged", listener: (value: Serializable<T>) => void): any;
130
+ /**
131
+ * Emitted when the value has been deleted.
132
+ */
133
+ (event: "delete", listener: () => void): any;
134
+ }
135
+
136
+ /**
137
+ * {@inheritDoc ISharedCell}
138
+ * @internal
139
+ */
140
+ export declare class SharedCell<T = any> extends SharedObject<ISharedCellEvents<T>> implements ISharedCell<T> {
141
+ /**
142
+ * Create a new `SharedCell`.
143
+ *
144
+ * @param runtime - The data store runtime to which the `SharedCell` belongs.
145
+ * @param id - Unique identifier for the `SharedCell`.
146
+ *
147
+ * @returns The newly create `SharedCell`. Note that it will not yet be attached.
148
+ */
149
+ static create(runtime: IFluidDataStoreRuntime, id?: string): SharedCell;
150
+ /**
151
+ * Gets the factory for the `SharedCell` to register with the data store.
152
+ *
153
+ * @returns A factory that creates and loads `SharedCell`s.
154
+ */
155
+ static getFactory(): IChannelFactory;
156
+ /**
157
+ * The data held by this cell.
158
+ */
159
+ private data;
160
+ /**
161
+ * This is used to assign a unique id to outgoing messages. It is used to track messages until
162
+ * they are ack'd.
163
+ */
164
+ private messageId;
165
+ /**
166
+ * This keeps track of the messageId of messages that have been ack'd. It is updated every time
167
+ * we a message is ack'd with it's messageId.
168
+ */
169
+ private messageIdObserved;
170
+ private readonly pendingMessageIds;
171
+ private attribution;
172
+ private readonly options;
173
+ /**
174
+ * Constructs a new `SharedCell`.
175
+ * If the object is non-local an id and service interfaces will be provided.
176
+ *
177
+ * @param runtime - The data store runtime to which the `SharedCell` belongs.
178
+ * @param id - Unique identifier for the `SharedCell`.
179
+ */
180
+ constructor(id: string, runtime: IFluidDataStoreRuntime, attributes: IChannelAttributes);
181
+ /**
182
+ * {@inheritDoc ISharedCell.get}
183
+ */
184
+ get(): Serializable<T> | undefined;
185
+ /**
186
+ * {@inheritDoc ISharedCell.set}
187
+ */
188
+ set(value: Serializable<T>): void;
189
+ /**
190
+ * {@inheritDoc ISharedCell.delete}
191
+ */
192
+ delete(): void;
193
+ /**
194
+ * {@inheritDoc ISharedCell.empty}
195
+ */
196
+ empty(): boolean;
197
+ /**
198
+ * {@inheritDoc ISharedCell.getAttribution}
199
+ */
200
+ getAttribution(): AttributionKey | undefined;
201
+ /**
202
+ * Set the Op-based attribution through the SequencedDocumentMessage,
203
+ * or set the local/detached attribution.
204
+ */
205
+ private setAttribution;
206
+ /**
207
+ * Creates a summary for the Cell.
208
+ *
209
+ * @returns The summary of the current state of the Cell.
210
+ */
211
+ protected summarizeCore(serializer: IFluidSerializer): ISummaryTreeWithStats;
212
+ /**
213
+ * {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}
214
+ */
215
+ protected loadCore(storage: IChannelStorageService): Promise<void>;
216
+ /**
217
+ * Initialize a local instance of cell.
218
+ */
219
+ protected initializeLocalCore(): void;
220
+ /**
221
+ * Call back on disconnect.
222
+ */
223
+ protected onDisconnect(): void;
224
+ /**
225
+ * Apply inner op.
226
+ *
227
+ * @param content - ICellOperation content
228
+ */
229
+ private applyInnerOp;
230
+ /**
231
+ * Process a cell operation (op).
232
+ *
233
+ * @param message - The message to prepare.
234
+ * @param local - Whether or not the message was sent by the local client.
235
+ * @param localOpMetadata - For local client messages, this is the metadata that was submitted with the message.
236
+ * For messages from a remote client, this will be `undefined`.
237
+ */
238
+ protected processCore(message: ISequencedDocumentMessage, local: boolean, localOpMetadata: unknown): void;
239
+ private setCore;
240
+ private deleteCore;
241
+ private decode;
242
+ private createLocalOpMetadata;
243
+ /**
244
+ * {@inheritDoc @fluidframework/shared-object-base#SharedObjectCore.applyStashedOp}
245
+ */
246
+ protected applyStashedOp(content: unknown): unknown;
247
+ /**
248
+ * Rollback a local op.
249
+ *
250
+ * @param content - The operation to rollback.
251
+ * @param localOpMetadata - The local metadata associated with the op.
252
+ */
253
+ protected rollback(content: any, localOpMetadata: unknown): void;
254
+ /**
255
+ * Submit a cell message to remote clients.
256
+ *
257
+ * @param op - The cell message.
258
+ * @param previousValue - The value of the cell before this op.
259
+ */
260
+ private submitCellMessage;
261
+ }
262
+
263
+ export { }
@@ -9,12 +9,11 @@ const core_utils_1 = require("@fluidframework/core-utils");
9
9
  const protocol_definitions_1 = require("@fluidframework/protocol-definitions");
10
10
  const driver_utils_1 = require("@fluidframework/driver-utils");
11
11
  const shared_object_base_1 = require("@fluidframework/shared-object-base");
12
- const cellFactory_1 = require("./cellFactory");
12
+ const cellFactory_1 = require("./cellFactory.cjs");
13
13
  const snapshotFileName = "header";
14
14
  /**
15
15
  * {@inheritDoc ISharedCell}
16
- *
17
- * @public
16
+ * @internal
18
17
  */
19
18
  // TODO: use `unknown` instead (breaking change).
20
19
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -112,7 +111,6 @@ class SharedCell extends shared_object_base_1.SharedObject {
112
111
  }
113
112
  /**
114
113
  * {@inheritDoc ISharedCell.getAttribution}
115
- * @alpha
116
114
  */
117
115
  getAttribution() {
118
116
  return this.attribution;
@@ -237,8 +235,6 @@ class SharedCell extends shared_object_base_1.SharedObject {
237
235
  }
238
236
  /**
239
237
  * {@inheritDoc @fluidframework/shared-object-base#SharedObjectCore.applyStashedOp}
240
- *
241
- * @internal
242
238
  */
243
239
  applyStashedOp(content) {
244
240
  const cellContent = content;
@@ -284,4 +280,4 @@ class SharedCell extends shared_object_base_1.SharedObject {
284
280
  }
285
281
  }
286
282
  exports.SharedCell = SharedCell;
287
- //# sourceMappingURL=cell.js.map
283
+ //# sourceMappingURL=cell.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cell.cjs","sourceRoot":"","sources":["../src/cell.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from \"@fluidframework/core-utils\";\nimport { type ISequencedDocumentMessage, MessageType } from \"@fluidframework/protocol-definitions\";\nimport {\n\ttype IChannelAttributes,\n\ttype IFluidDataStoreRuntime,\n\ttype IChannelStorageService,\n\ttype IChannelFactory,\n\ttype Serializable,\n} from \"@fluidframework/datastore-definitions\";\nimport {\n\ttype AttributionKey,\n\ttype ISummaryTreeWithStats,\n} from \"@fluidframework/runtime-definitions\";\nimport { readAndParse } from \"@fluidframework/driver-utils\";\nimport {\n\tcreateSingleBlobSummary,\n\ttype IFluidSerializer,\n\tSharedObject,\n} from \"@fluidframework/shared-object-base\";\nimport { CellFactory } from \"./cellFactory\";\nimport {\n\ttype ISharedCell,\n\ttype ISharedCellEvents,\n\ttype ICellLocalOpMetadata,\n\ttype ICellOptions,\n} from \"./interfaces\";\n\n/**\n * Description of a cell delta operation\n */\ntype ICellOperation = ISetCellOperation | IDeleteCellOperation;\n\ninterface ISetCellOperation {\n\ttype: \"setCell\";\n\tvalue: ICellValue;\n}\n\ninterface IDeleteCellOperation {\n\ttype: \"deleteCell\";\n}\n\ninterface ICellValue {\n\t/**\n\t * The actual value contained in the `Cell`, which needs to be wrapped to handle `undefined`.\n\t */\n\tvalue: unknown;\n\t/**\n\t * The attribution key contained in the `Cell`.\n\t * @alpha\n\t */\n\tattribution?: AttributionKey;\n}\n\nconst snapshotFileName = \"header\";\n\n/**\n * {@inheritDoc ISharedCell}\n * @internal\n */\n// TODO: use `unknown` instead (breaking change).\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class SharedCell<T = any>\n\textends SharedObject<ISharedCellEvents<T>>\n\timplements ISharedCell<T>\n{\n\t/**\n\t * Create a new `SharedCell`.\n\t *\n\t * @param runtime - The data store runtime to which the `SharedCell` belongs.\n\t * @param id - Unique identifier for the `SharedCell`.\n\t *\n\t * @returns The newly create `SharedCell`. Note that it will not yet be attached.\n\t */\n\tpublic static create(runtime: IFluidDataStoreRuntime, id?: string): SharedCell {\n\t\treturn runtime.createChannel(id, CellFactory.Type) as SharedCell;\n\t}\n\n\t/**\n\t * Gets the factory for the `SharedCell` to register with the data store.\n\t *\n\t * @returns A factory that creates and loads `SharedCell`s.\n\t */\n\tpublic static getFactory(): IChannelFactory {\n\t\treturn new CellFactory();\n\t}\n\n\t/**\n\t * The data held by this cell.\n\t */\n\tprivate data: Serializable<T> | undefined;\n\n\t/**\n\t * This is used to assign a unique id to outgoing messages. It is used to track messages until\n\t * they are ack'd.\n\t */\n\tprivate messageId: number = -1;\n\n\t/**\n\t * This keeps track of the messageId of messages that have been ack'd. It is updated every time\n\t * we a message is ack'd with it's messageId.\n\t */\n\tprivate messageIdObserved: number = -1;\n\n\tprivate readonly pendingMessageIds: number[] = [];\n\n\tprivate attribution: AttributionKey | undefined;\n\n\tprivate readonly options: ICellOptions | undefined;\n\n\t/**\n\t * Constructs a new `SharedCell`.\n\t * If the object is non-local an id and service interfaces will be provided.\n\t *\n\t * @param runtime - The data store runtime to which the `SharedCell` belongs.\n\t * @param id - Unique identifier for the `SharedCell`.\n\t */\n\t// eslint-disable-next-line @typescript-eslint/explicit-member-accessibility\n\tconstructor(id: string, runtime: IFluidDataStoreRuntime, attributes: IChannelAttributes) {\n\t\tsuper(id, runtime, attributes, \"fluid_cell_\");\n\n\t\tthis.options = runtime.options as ICellOptions;\n\t}\n\n\t/**\n\t * {@inheritDoc ISharedCell.get}\n\t */\n\tpublic get(): Serializable<T> | undefined {\n\t\treturn this.data;\n\t}\n\n\t/**\n\t * {@inheritDoc ISharedCell.set}\n\t */\n\tpublic set(value: Serializable<T>): void {\n\t\t// Serialize the value if required.\n\t\tconst operationValue: ICellValue = {\n\t\t\tvalue: this.serializer.encode(value, this.handle),\n\t\t};\n\n\t\t// Set the value locally.\n\t\tconst previousValue = this.setCore(value);\n\t\tthis.setAttribution();\n\n\t\t// If we are not attached, don't submit the op.\n\t\tif (!this.isAttached()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst op: ISetCellOperation = {\n\t\t\ttype: \"setCell\",\n\t\t\tvalue: operationValue,\n\t\t};\n\t\tthis.submitCellMessage(op, previousValue);\n\t}\n\n\t/**\n\t * {@inheritDoc ISharedCell.delete}\n\t */\n\tpublic delete(): void {\n\t\t// Delete the value locally.\n\t\tconst previousValue = this.deleteCore();\n\t\tthis.setAttribution();\n\n\t\t// If we are not attached, don't submit the op.\n\t\tif (!this.isAttached()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst op: IDeleteCellOperation = {\n\t\t\ttype: \"deleteCell\",\n\t\t};\n\t\tthis.submitCellMessage(op, previousValue);\n\t}\n\n\t/**\n\t * {@inheritDoc ISharedCell.empty}\n\t */\n\tpublic empty(): boolean {\n\t\treturn this.data === undefined;\n\t}\n\n\t/**\n\t * {@inheritDoc ISharedCell.getAttribution}\n\t */\n\tpublic getAttribution(): AttributionKey | undefined {\n\t\treturn this.attribution;\n\t}\n\n\t/**\n\t * Set the Op-based attribution through the SequencedDocumentMessage,\n\t * or set the local/detached attribution.\n\t */\n\tprivate setAttribution(message?: ISequencedDocumentMessage): void {\n\t\tif (this.options?.attribution?.track ?? false) {\n\t\t\tthis.attribution = message\n\t\t\t\t? { type: \"op\", seq: message.sequenceNumber }\n\t\t\t\t: this.isAttached()\n\t\t\t\t? { type: \"local\" }\n\t\t\t\t: { type: \"detached\", id: 0 };\n\t\t}\n\t}\n\n\t/**\n\t * Creates a summary for the Cell.\n\t *\n\t * @returns The summary of the current state of the Cell.\n\t */\n\tprotected summarizeCore(serializer: IFluidSerializer): ISummaryTreeWithStats {\n\t\tconst content: ICellValue =\n\t\t\tthis.attribution?.type === \"local\"\n\t\t\t\t? { value: this.data, attribution: undefined }\n\t\t\t\t: { value: this.data, attribution: this.attribution };\n\t\treturn createSingleBlobSummary(\n\t\t\tsnapshotFileName,\n\t\t\tserializer.stringify(content, this.handle),\n\t\t);\n\t}\n\n\t/**\n\t * {@inheritDoc @fluidframework/shared-object-base#SharedObject.loadCore}\n\t */\n\tprotected async loadCore(storage: IChannelStorageService): Promise<void> {\n\t\tconst content = await readAndParse<ICellValue>(storage, snapshotFileName);\n\n\t\tthis.data = this.decode(content);\n\t\tthis.attribution = content.attribution;\n\t}\n\n\t/**\n\t * Initialize a local instance of cell.\n\t */\n\tprotected initializeLocalCore(): void {\n\t\tthis.data = undefined;\n\t}\n\n\t/**\n\t * Call back on disconnect.\n\t */\n\tprotected onDisconnect(): void {}\n\n\t/**\n\t * Apply inner op.\n\t *\n\t * @param content - ICellOperation content\n\t */\n\tprivate applyInnerOp(content: ICellOperation): Serializable<T> | undefined {\n\t\tswitch (content.type) {\n\t\t\tcase \"setCell\": {\n\t\t\t\treturn this.setCore(this.decode(content.value));\n\t\t\t}\n\n\t\t\tcase \"deleteCell\": {\n\t\t\t\treturn this.deleteCore();\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\tthrow new Error(\"Unknown operation\");\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Process a cell operation (op).\n\t *\n\t * @param message - The message to prepare.\n\t * @param local - Whether or not the message was sent by the local client.\n\t * @param localOpMetadata - For local client messages, this is the metadata that was submitted with the message.\n\t * For messages from a remote client, this will be `undefined`.\n\t */\n\tprotected processCore(\n\t\tmessage: ISequencedDocumentMessage,\n\t\tlocal: boolean,\n\t\tlocalOpMetadata: unknown,\n\t): void {\n\t\tconst cellOpMetadata = localOpMetadata as ICellLocalOpMetadata;\n\t\tif (this.messageId !== this.messageIdObserved) {\n\t\t\t// We are waiting for an ACK on our change to this cell - we will ignore all messages until we get it.\n\t\t\tif (local) {\n\t\t\t\tconst messageIdReceived = cellOpMetadata.pendingMessageId;\n\t\t\t\tassert(\n\t\t\t\t\tmessageIdReceived !== undefined && messageIdReceived <= this.messageId,\n\t\t\t\t\t0x00c /* \"messageId is incorrect from from the local client's ACK\" */,\n\t\t\t\t);\n\t\t\t\tassert(\n\t\t\t\t\tthis.pendingMessageIds !== undefined &&\n\t\t\t\t\t\tthis.pendingMessageIds[0] === cellOpMetadata.pendingMessageId,\n\t\t\t\t\t0x471 /* Unexpected pending message received */,\n\t\t\t\t);\n\t\t\t\tthis.pendingMessageIds.shift();\n\t\t\t\t// We got an ACK. Update messageIdObserved.\n\t\t\t\tthis.messageIdObserved = cellOpMetadata.pendingMessageId;\n\t\t\t\t// update the attributor\n\t\t\t\tthis.setAttribution(message);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison\n\t\tif (message.type === MessageType.Operation && !local) {\n\t\t\tconst op = message.contents as ICellOperation;\n\t\t\t// update the attributor\n\t\t\tthis.setAttribution(message);\n\t\t\tthis.applyInnerOp(op);\n\t\t}\n\t}\n\n\tprivate setCore(value: Serializable<T>): Serializable<T> | undefined {\n\t\tconst previousLocalValue = this.get();\n\t\tthis.data = value;\n\t\tthis.emit(\"valueChanged\", value);\n\t\treturn previousLocalValue;\n\t}\n\n\tprivate deleteCore(): Serializable<T> | undefined {\n\t\tconst previousLocalValue = this.get();\n\t\tthis.data = undefined;\n\t\tthis.emit(\"delete\");\n\t\treturn previousLocalValue;\n\t}\n\n\tprivate decode(cellValue: ICellValue): Serializable<T> {\n\t\tconst value = cellValue.value;\n\t\treturn this.serializer.decode(value) as Serializable<T>;\n\t}\n\n\tprivate createLocalOpMetadata(\n\t\top: ICellOperation,\n\t\tpreviousValue?: Serializable<T>,\n\t): ICellLocalOpMetadata {\n\t\tconst pendingMessageId = ++this.messageId;\n\t\tthis.pendingMessageIds.push(pendingMessageId);\n\t\tconst localMetadata: ICellLocalOpMetadata = {\n\t\t\tpendingMessageId,\n\t\t\tpreviousValue,\n\t\t};\n\t\treturn localMetadata;\n\t}\n\n\t/**\n\t * {@inheritDoc @fluidframework/shared-object-base#SharedObjectCore.applyStashedOp}\n\t */\n\tprotected applyStashedOp(content: unknown): unknown {\n\t\tconst cellContent = content as ICellOperation;\n\t\tconst previousValue = this.applyInnerOp(cellContent);\n\t\treturn this.createLocalOpMetadata(cellContent, previousValue);\n\t}\n\n\t/**\n\t * Rollback a local op.\n\t *\n\t * @param content - The operation to rollback.\n\t * @param localOpMetadata - The local metadata associated with the op.\n\t */\n\t// TODO: use `unknown` instead (breaking change).\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n\tprotected rollback(content: any, localOpMetadata: unknown): void {\n\t\tconst cellOpMetadata = localOpMetadata as ICellLocalOpMetadata;\n\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\tif (content.type === \"setCell\" || content.type === \"deleteCell\") {\n\t\t\tif (cellOpMetadata.previousValue === undefined) {\n\t\t\t\tthis.deleteCore();\n\t\t\t} else {\n\t\t\t\tthis.setCore(cellOpMetadata.previousValue as Serializable<T>);\n\t\t\t}\n\n\t\t\tconst lastPendingMessageId = this.pendingMessageIds.pop();\n\t\t\tif (lastPendingMessageId !== cellOpMetadata.pendingMessageId) {\n\t\t\t\tthrow new Error(\"Rollback op does not match last pending\");\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new Error(\"Unsupported op for rollback\");\n\t\t}\n\t}\n\n\t/**\n\t * Submit a cell message to remote clients.\n\t *\n\t * @param op - The cell message.\n\t * @param previousValue - The value of the cell before this op.\n\t */\n\tprivate submitCellMessage(op: ICellOperation, previousValue?: Serializable<T>): void {\n\t\tconst localMetadata = this.createLocalOpMetadata(op, previousValue);\n\t\tthis.submitLocalMessage(op, localMetadata);\n\t}\n}\n"]}
package/dist/cell.d.ts CHANGED
@@ -9,8 +9,7 @@ import { type IFluidSerializer, SharedObject } from "@fluidframework/shared-obje
9
9
  import { type ISharedCell, type ISharedCellEvents } from "./interfaces";
10
10
  /**
11
11
  * {@inheritDoc ISharedCell}
12
- *
13
- * @public
12
+ * @internal
14
13
  */
15
14
  export declare class SharedCell<T = any> extends SharedObject<ISharedCellEvents<T>> implements ISharedCell<T> {
16
15
  /**
@@ -71,7 +70,6 @@ export declare class SharedCell<T = any> extends SharedObject<ISharedCellEvents<
71
70
  empty(): boolean;
72
71
  /**
73
72
  * {@inheritDoc ISharedCell.getAttribution}
74
- * @alpha
75
73
  */
76
74
  getAttribution(): AttributionKey | undefined;
77
75
  /**
@@ -118,8 +116,6 @@ export declare class SharedCell<T = any> extends SharedObject<ISharedCellEvents<
118
116
  private createLocalOpMetadata;
119
117
  /**
120
118
  * {@inheritDoc @fluidframework/shared-object-base#SharedObjectCore.applyStashedOp}
121
- *
122
- * @internal
123
119
  */
124
120
  protected applyStashedOp(content: unknown): unknown;
125
121
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"cell.d.ts","sourceRoot":"","sources":["../src/cell.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,KAAK,yBAAyB,EAAe,MAAM,sCAAsC,CAAC;AACnG,OAAO,EACN,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAEN,KAAK,gBAAgB,EACrB,YAAY,EACZ,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,iBAAiB,EAGtB,MAAM,cAAc,CAAC;AA8BtB;;;;GAIG;AAGH,qBAAa,UAAU,CAAC,CAAC,GAAG,GAAG,CAC9B,SAAQ,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CACzC,YAAW,WAAW,CAAC,CAAC,CAAC;IAEzB;;;;;;;OAOG;WACW,MAAM,CAAC,OAAO,EAAE,sBAAsB,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU;IAI9E;;;;OAIG;WACW,UAAU,IAAI,eAAe;IAI3C;;OAEG;IACH,OAAO,CAAC,IAAI,CAA8B;IAE1C;;;OAGG;IACH,OAAO,CAAC,SAAS,CAAc;IAE/B;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAc;IAEvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgB;IAElD,OAAO,CAAC,WAAW,CAA6B;IAEhD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IAEnD;;;;;;OAMG;gBAES,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,kBAAkB;IAMvF;;OAEG;IACI,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS;IAIzC;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAsBxC;;OAEG;IACI,MAAM,IAAI,IAAI;IAgBrB;;OAEG;IACI,KAAK,IAAI,OAAO;IAIvB;;;OAGG;IACI,cAAc,IAAI,cAAc,GAAG,SAAS;IAInD;;;OAGG;IACH,OAAO,CAAC,cAAc;IAUtB;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,gBAAgB,GAAG,qBAAqB;IAW5E;;OAEG;cACa,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxE;;OAEG;IACH,SAAS,CAAC,mBAAmB,IAAI,IAAI;IAIrC;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IAE9B;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAgBpB;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,CACpB,OAAO,EAAE,yBAAyB,EAClC,KAAK,EAAE,OAAO,EACd,eAAe,EAAE,OAAO,GACtB,IAAI;IAiCP,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,qBAAqB;IAa7B;;;;OAIG;IACH,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAMnD;;;;;OAKG;IAGH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI;IAmBhE;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;CAIzB"}
1
+ {"version":3,"file":"cell.d.ts","sourceRoot":"","sources":["../src/cell.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,KAAK,yBAAyB,EAAe,MAAM,sCAAsC,CAAC;AACnG,OAAO,EACN,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAEN,KAAK,gBAAgB,EACrB,YAAY,EACZ,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,iBAAiB,EAGtB,MAAM,cAAc,CAAC;AA8BtB;;;GAGG;AAGH,qBAAa,UAAU,CAAC,CAAC,GAAG,GAAG,CAC9B,SAAQ,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CACzC,YAAW,WAAW,CAAC,CAAC,CAAC;IAEzB;;;;;;;OAOG;WACW,MAAM,CAAC,OAAO,EAAE,sBAAsB,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU;IAI9E;;;;OAIG;WACW,UAAU,IAAI,eAAe;IAI3C;;OAEG;IACH,OAAO,CAAC,IAAI,CAA8B;IAE1C;;;OAGG;IACH,OAAO,CAAC,SAAS,CAAc;IAE/B;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAc;IAEvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgB;IAElD,OAAO,CAAC,WAAW,CAA6B;IAEhD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IAEnD;;;;;;OAMG;gBAES,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,kBAAkB;IAMvF;;OAEG;IACI,GAAG,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS;IAIzC;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;IAsBxC;;OAEG;IACI,MAAM,IAAI,IAAI;IAgBrB;;OAEG;IACI,KAAK,IAAI,OAAO;IAIvB;;OAEG;IACI,cAAc,IAAI,cAAc,GAAG,SAAS;IAInD;;;OAGG;IACH,OAAO,CAAC,cAAc;IAUtB;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,gBAAgB,GAAG,qBAAqB;IAW5E;;OAEG;cACa,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxE;;OAEG;IACH,SAAS,CAAC,mBAAmB,IAAI,IAAI;IAIrC;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IAE9B;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAgBpB;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,CACpB,OAAO,EAAE,yBAAyB,EAClC,KAAK,EAAE,OAAO,EACd,eAAe,EAAE,OAAO,GACtB,IAAI;IAiCP,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAMnD;;;;;OAKG;IAGH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI;IAmBhE;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;CAIzB"}
@@ -5,8 +5,8 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.CellFactory = void 0;
8
- const cell_1 = require("./cell");
9
- const packageVersion_1 = require("./packageVersion");
8
+ const cell_1 = require("./cell.cjs");
9
+ const packageVersion_1 = require("./packageVersion.cjs");
10
10
  /**
11
11
  * {@link @fluidframework/datastore-definitions#IChannelFactory} for {@link ISharedCell}.
12
12
  *
@@ -55,4 +55,4 @@ CellFactory.Attributes = {
55
55
  snapshotFormatVersion: "0.1",
56
56
  packageVersion: packageVersion_1.pkgVersion,
57
57
  };
58
- //# sourceMappingURL=cellFactory.js.map
58
+ //# sourceMappingURL=cellFactory.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cellFactory.cjs","sourceRoot":"","sources":["../src/cellFactory.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAQH,qCAAoC;AAEpC,yDAA8C;AAE9C;;;;GAIG;AACH,MAAa,WAAW;IAevB;;OAEG;IACH,IAAW,IAAI;QACd,OAAO,WAAW,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACpB,OAAO,WAAW,CAAC,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI,CAChB,OAA+B,EAC/B,EAAU,EACV,QAA0B,EAC1B,UAA8B;QAE9B,MAAM,IAAI,GAAG,IAAI,iBAAU,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,QAAgC,EAAE,EAAU;QACzD,MAAM,IAAI,GAAG,IAAI,iBAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACb,CAAC;;AAlDF,kCAmDC;AAlDA;;GAEG;AACoB,gBAAI,GAAG,wCAAwC,CAAC;AAEvE;;GAEG;AACoB,sBAAU,GAAuB;IACvD,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,qBAAqB,EAAE,KAAK;IAC5B,cAAc,EAAE,2BAAU;CAC1B,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n\ttype IChannelAttributes,\n\ttype IFluidDataStoreRuntime,\n\ttype IChannelServices,\n\ttype IChannelFactory,\n} from \"@fluidframework/datastore-definitions\";\nimport { SharedCell } from \"./cell\";\nimport { type ISharedCell } from \"./interfaces\";\nimport { pkgVersion } from \"./packageVersion\";\n\n/**\n * {@link @fluidframework/datastore-definitions#IChannelFactory} for {@link ISharedCell}.\n *\n * @sealed\n */\nexport class CellFactory implements IChannelFactory {\n\t/**\n\t * {@inheritDoc CellFactory.\"type\"}\n\t */\n\tpublic static readonly Type = \"https://graph.microsoft.com/types/cell\";\n\n\t/**\n\t * {@inheritDoc CellFactory.attributes}\n\t */\n\tpublic static readonly Attributes: IChannelAttributes = {\n\t\ttype: CellFactory.Type,\n\t\tsnapshotFormatVersion: \"0.1\",\n\t\tpackageVersion: pkgVersion,\n\t};\n\n\t/**\n\t * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.\"type\"}\n\t */\n\tpublic get type(): string {\n\t\treturn CellFactory.Type;\n\t}\n\n\t/**\n\t * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.attributes}\n\t */\n\tpublic get attributes(): IChannelAttributes {\n\t\treturn CellFactory.Attributes;\n\t}\n\n\t/**\n\t * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.load}\n\t */\n\tpublic async load(\n\t\truntime: IFluidDataStoreRuntime,\n\t\tid: string,\n\t\tservices: IChannelServices,\n\t\tattributes: IChannelAttributes,\n\t): Promise<ISharedCell> {\n\t\tconst cell = new SharedCell(id, runtime, attributes);\n\t\tawait cell.load(services);\n\t\treturn cell;\n\t}\n\n\t/**\n\t * {@inheritDoc @fluidframework/datastore-definitions#IChannelFactory.create}\n\t */\n\tpublic create(document: IFluidDataStoreRuntime, id: string): ISharedCell {\n\t\tconst cell = new SharedCell(id, document, this.attributes);\n\t\tcell.initializeLocal();\n\t\treturn cell;\n\t}\n}\n"]}
@@ -10,6 +10,6 @@ exports.SharedCell = void 0;
10
10
  *
11
11
  * @packageDocumentation
12
12
  */
13
- var cell_1 = require("./cell");
13
+ var cell_1 = require("./cell.cjs");
14
14
  Object.defineProperty(exports, "SharedCell", { enumerable: true, get: function () { return cell_1.SharedCell; } });
15
- //# sourceMappingURL=index.js.map
15
+ //# sourceMappingURL=index.cjs.map