fluid-framework 2.82.0 → 2.83.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,48 @@
1
1
  # fluid-framework
2
2
 
3
+ ## 2.83.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Fix false positive error from FormatValidator ([#26372](https://github.com/microsoft/FluidFramework/pull/26372)) [adad917d30](https://github.com/microsoft/FluidFramework/commit/adad917d30e251f4bfd510e7a1ebc4a73bd1f7ee)
8
+
9
+ Users of the alpha API [FormatValidatorBasic](https://fluidframework.com/docs/api/fluid-framework/#formatvalidatorbasic-variable)
10
+ could hit an "Invalid JSON." error when parsing data.
11
+ This would occur where the result of evaluating "[MinimumVersionForCollab](https://fluidframework.com/docs/api/runtime-definitions/minimumversionforcollab-typealias) \< 2.74.0"
12
+ differed between the client encoding the data and the client decoding it.
13
+ For example opening an old document with a new client that sets `MinimumVersionForCollab = 2.74.0` would throw this error.
14
+ This has been fixed: this case will no longer throw.
15
+
16
+ - New beta ExtensibleUnionNode API ([#26438](https://github.com/microsoft/FluidFramework/pull/26438)) [05f716ffb5](https://github.com/microsoft/FluidFramework/commit/05f716ffb56e280624e65853dd9291411ee752ff)
17
+
18
+ The new `ExtensibleUnionNode` API allows for creation of unions which can tolerate future additions not yet known to the current code.
19
+
20
+ ```typescript
21
+ const sf = new SchemaFactoryBeta("extensibleUnionNodeExample.items");
22
+ class ItemA extends sf.object("A", { x: sf.string }) {}
23
+ class ItemB extends sf.object("B", { x: sf.number }) {}
24
+
25
+ class AnyItem extends ExtensibleUnionNode.createSchema(
26
+ [ItemA, ItemB], // Future versions may add more members here
27
+ sf,
28
+ "ExtensibleUnion",
29
+ ) {}
30
+ // Instances of the union are created using `create`.
31
+ const anyItem = AnyItem.create(new ItemA({ x: "hello" }));
32
+ // Reading the content from the union is done via the `union` property,
33
+ // which can be `undefined` to handle the case where a future version of this schema allows a type unknown to the current version.
34
+ const childNode: ItemA | ItemB | undefined = anyItem.union;
35
+ // To determine which member of the union was present, its schema can be inspected:
36
+ const aSchema = Tree.schema(childNode ?? assert.fail("No child"));
37
+ assert.equal(aSchema, ItemA);
38
+ ```
39
+
40
+ - Improve error messages when failing to construct nodes ([#26433](https://github.com/microsoft/FluidFramework/pull/26433)) [8c612c6f2b](https://github.com/microsoft/FluidFramework/commit/8c612c6f2bc04a1fc1cdc54e620c2180eb73b107)
41
+
42
+ The error messages when constructing tree nodes have been improved.
43
+ Several cases now list not only the schema identifiers, but also schema names which can help when there are identifier collisions and make it easier to find the implementations.
44
+ Additionally some cases which did not include what schema were encountered and which were allowed now include both.
45
+
3
46
  ## 2.82.0
4
47
 
5
48
  ### Minor Changes
@@ -152,9 +152,6 @@ export type ChangeMetadata = LocalChangeMetadata | RemoteChangeMetadata;
152
152
  // @alpha
153
153
  export function checkCompatibility(viewWhichCreatedStoredSchema: TreeViewConfiguration, view: TreeViewConfiguration): Omit<SchemaCompatibilityStatus, "canInitialize">;
154
154
 
155
- // @alpha
156
- export function checkSchemaCompatibilitySnapshots(options: SchemaCompatibilitySnapshotsOptions): void;
157
-
158
155
  // @alpha
159
156
  export function cloneWithReplacements(root: unknown, rootKey: string, replacer: (key: string, value: unknown) => {
160
157
  clone: boolean;
@@ -328,11 +325,12 @@ export function evaluateLazySchema<T extends TreeNodeSchema>(value: LazyItem<T>)
328
325
  // @alpha
329
326
  export function exportCompatibilitySchemaSnapshot(config: Pick<TreeViewConfiguration, "schema">): JsonCompatibleReadOnly;
330
327
 
331
- // @alpha
332
- export namespace ExtensibleSchemaUnion {
333
- export function extensibleSchemaUnion<const T extends readonly TreeNodeSchema[], const TScope extends string, const TName extends string>(types: T, inputSchemaFactory: SchemaFactoryBeta<TScope>, name: TName): Statics<T> & TreeNodeSchemaCore_2<ScopedSchemaName_2<`com.fluidframework.extensibleSchemaUnion<${TScope}>`, TName>, NodeKind_2, false, unknown, never, unknown> & (new (data: InternalTreeNode_2) => Members<TreeNodeFromImplicitAllowedTypes<T>> & TreeNode_2 & WithType_2<ScopedSchemaName_2<`com.fluidframework.extensibleSchemaUnion<${TScope}>`, TName>, NodeKind_2, unknown>);
328
+ // @beta
329
+ export namespace ExtensibleUnionNode {
330
+ export function createSchema<const T extends readonly TreeNodeSchema[], const TScope extends string, const TName extends string>(types: T, inputSchemaFactory: SchemaFactoryBeta<TScope>, name: TName): Statics<T> & TreeNodeSchemaCore_2<ScopedSchemaName_2<`com.fluidframework.extensibleUnionNode<${TScope}>`, TName>, NodeKind_2, false, unknown, never, unknown> & (new (data: InternalTreeNode_2) => Members<TreeNodeFromImplicitAllowedTypes<T>> & TreeNode_2 & WithType_2<ScopedSchemaName_2<`com.fluidframework.extensibleUnionNode<${TScope}>`, TName>, NodeKind_2, unknown>);
334
331
  export interface Members<T> {
335
- readonly child: T | undefined;
332
+ isValid(): boolean;
333
+ readonly union: T | undefined;
336
334
  }
337
335
  export interface Statics<T extends readonly TreeNodeSchema[]> {
338
336
  create<TThis extends TreeNodeSchema>(this: TThis, child: TreeNodeFromImplicitAllowedTypes<T>): TreeFieldFromImplicitField<TThis>;
@@ -1346,17 +1344,6 @@ export interface RunTransactionParams {
1346
1344
  readonly preconditions?: readonly TransactionConstraintAlpha[];
1347
1345
  }
1348
1346
 
1349
- // @alpha @input
1350
- export interface SchemaCompatibilitySnapshotsOptions {
1351
- readonly fileSystem: SnapshotFileSystem;
1352
- readonly minVersionForCollaboration: string;
1353
- readonly mode: "test" | "update";
1354
- readonly schema: TreeViewConfiguration;
1355
- readonly snapshotDirectory: string;
1356
- readonly snapshotUnchangedVersions?: true;
1357
- readonly version: string;
1358
- }
1359
-
1360
1347
  // @public @sealed
1361
1348
  export interface SchemaCompatibilityStatus {
1362
1349
  readonly canInitialize: boolean;
@@ -1601,6 +1588,23 @@ export interface SnapshotFileSystem {
1601
1588
  }): void;
1602
1589
  }
1603
1590
 
1591
+ // @alpha
1592
+ export function snapshotSchemaCompatibility(options: SnapshotSchemaCompatibilityOptions): void;
1593
+
1594
+ // @alpha @input
1595
+ export interface SnapshotSchemaCompatibilityOptions {
1596
+ readonly fileSystem: SnapshotFileSystem;
1597
+ readonly minVersionForCollaboration: string;
1598
+ readonly mode: "assert" | "update";
1599
+ readonly rejectSchemaChangesWithNoVersionChange?: true;
1600
+ readonly rejectVersionsWithNoSchemaChange?: true;
1601
+ readonly schema: TreeViewConfiguration;
1602
+ readonly snapshotDirectory: string;
1603
+ readonly snapshotUnchangedVersions?: true;
1604
+ readonly version: string;
1605
+ readonly versionComparer?: (a: string, b: string) => number;
1606
+ }
1607
+
1604
1608
  // @beta @system
1605
1609
  export namespace System_TableSchema {
1606
1610
  // @sealed @system
@@ -1879,7 +1883,7 @@ export interface TransactionResultSuccess<TSuccessValue> {
1879
1883
  // @public
1880
1884
  export type TransformedEvent<TThis, E, A extends any[]> = (event: E, listener: (...args: ReplaceIEventThisPlaceHolder<A, TThis>) => void) => TThis;
1881
1885
 
1882
- // @public @sealed @system
1886
+ // @public @sealed
1883
1887
  export interface Tree extends TreeNodeApi {
1884
1888
  contains(node: TreeNode, other: TreeNode): boolean;
1885
1889
  readonly runTransaction: RunTransaction;
@@ -1888,7 +1892,7 @@ export interface Tree extends TreeNodeApi {
1888
1892
  // @public
1889
1893
  export const Tree: Tree;
1890
1894
 
1891
- // @alpha @sealed @system
1895
+ // @alpha @sealed
1892
1896
  export interface TreeAlpha {
1893
1897
  branch(node: TreeNode): TreeBranchAlpha | undefined;
1894
1898
  child(node: TreeNode, key: string | number): TreeNode | TreeLeafValue | undefined;
@@ -1943,7 +1947,7 @@ export const TreeArrayNode: {
1943
1947
  readonly spread: <T>(content: Iterable<T>) => IterableTreeArrayContent<T>;
1944
1948
  };
1945
1949
 
1946
- // @beta @sealed @system
1950
+ // @beta @sealed
1947
1951
  export interface TreeBeta {
1948
1952
  clone<const TSchema extends ImplicitFieldSchema>(node: TreeFieldFromImplicitField<TSchema>): TreeFieldFromImplicitField<TSchema>;
1949
1953
  create<const TSchema extends ImplicitFieldSchema>(schema: TSchema, data: InsertableTreeFieldFromImplicitField<TSchema>): Unhydrated<TreeFieldFromImplicitField<TSchema>>;
@@ -184,6 +184,18 @@ export abstract class ErasedType<out Name = unknown> {
184
184
  protected abstract brand(dummy: never): Name;
185
185
  }
186
186
 
187
+ // @beta
188
+ export namespace ExtensibleUnionNode {
189
+ export function createSchema<const T extends readonly TreeNodeSchema[], const TScope extends string, const TName extends string>(types: T, inputSchemaFactory: SchemaFactoryBeta<TScope>, name: TName): Statics<T> & TreeNodeSchemaCore_2<ScopedSchemaName_2<`com.fluidframework.extensibleUnionNode<${TScope}>`, TName>, NodeKind_2, false, unknown, never, unknown> & (new (data: InternalTreeNode_2) => Members<TreeNodeFromImplicitAllowedTypes<T>> & TreeNode_2 & WithType_2<ScopedSchemaName_2<`com.fluidframework.extensibleUnionNode<${TScope}>`, TName>, NodeKind_2, unknown>);
190
+ export interface Members<T> {
191
+ isValid(): boolean;
192
+ readonly union: T | undefined;
193
+ }
194
+ export interface Statics<T extends readonly TreeNodeSchema[]> {
195
+ create<TThis extends TreeNodeSchema>(this: TThis, child: TreeNodeFromImplicitAllowedTypes<T>): TreeFieldFromImplicitField<TThis>;
196
+ }
197
+ }
198
+
187
199
  // @public @system
188
200
  type ExtractItemType<Item extends LazyItem> = Item extends () => infer Result ? Result : Item;
189
201
 
@@ -1195,7 +1207,7 @@ export type TransactionConstraint = NodeInDocumentConstraint;
1195
1207
  // @public
1196
1208
  export type TransformedEvent<TThis, E, A extends any[]> = (event: E, listener: (...args: ReplaceIEventThisPlaceHolder<A, TThis>) => void) => TThis;
1197
1209
 
1198
- // @public @sealed @system
1210
+ // @public @sealed
1199
1211
  export interface Tree extends TreeNodeApi {
1200
1212
  contains(node: TreeNode, other: TreeNode): boolean;
1201
1213
  readonly runTransaction: RunTransaction;
@@ -1232,7 +1244,7 @@ export const TreeArrayNode: {
1232
1244
  readonly spread: <T>(content: Iterable<T>) => IterableTreeArrayContent<T>;
1233
1245
  };
1234
1246
 
1235
- // @beta @sealed @system
1247
+ // @beta @sealed
1236
1248
  export interface TreeBeta {
1237
1249
  clone<const TSchema extends ImplicitFieldSchema>(node: TreeFieldFromImplicitField<TSchema>): TreeFieldFromImplicitField<TSchema>;
1238
1250
  create<const TSchema extends ImplicitFieldSchema>(schema: TSchema, data: InsertableTreeFieldFromImplicitField<TSchema>): Unhydrated<TreeFieldFromImplicitField<TSchema>>;
@@ -187,6 +187,18 @@ export abstract class ErasedType<out Name = unknown> {
187
187
  protected abstract brand(dummy: never): Name;
188
188
  }
189
189
 
190
+ // @beta
191
+ export namespace ExtensibleUnionNode {
192
+ export function createSchema<const T extends readonly TreeNodeSchema[], const TScope extends string, const TName extends string>(types: T, inputSchemaFactory: SchemaFactoryBeta<TScope>, name: TName): Statics<T> & TreeNodeSchemaCore_2<ScopedSchemaName_2<`com.fluidframework.extensibleUnionNode<${TScope}>`, TName>, NodeKind_2, false, unknown, never, unknown> & (new (data: InternalTreeNode_2) => Members<TreeNodeFromImplicitAllowedTypes<T>> & TreeNode_2 & WithType_2<ScopedSchemaName_2<`com.fluidframework.extensibleUnionNode<${TScope}>`, TName>, NodeKind_2, unknown>);
193
+ export interface Members<T> {
194
+ isValid(): boolean;
195
+ readonly union: T | undefined;
196
+ }
197
+ export interface Statics<T extends readonly TreeNodeSchema[]> {
198
+ create<TThis extends TreeNodeSchema>(this: TThis, child: TreeNodeFromImplicitAllowedTypes<T>): TreeFieldFromImplicitField<TThis>;
199
+ }
200
+ }
201
+
190
202
  // @public @system
191
203
  type ExtractItemType<Item extends LazyItem> = Item extends () => infer Result ? Result : Item;
192
204
 
@@ -1555,7 +1567,7 @@ export type TransactionConstraint = NodeInDocumentConstraint;
1555
1567
  // @public
1556
1568
  export type TransformedEvent<TThis, E, A extends any[]> = (event: E, listener: (...args: ReplaceIEventThisPlaceHolder<A, TThis>) => void) => TThis;
1557
1569
 
1558
- // @public @sealed @system
1570
+ // @public @sealed
1559
1571
  export interface Tree extends TreeNodeApi {
1560
1572
  contains(node: TreeNode, other: TreeNode): boolean;
1561
1573
  readonly runTransaction: RunTransaction;
@@ -1592,7 +1604,7 @@ export const TreeArrayNode: {
1592
1604
  readonly spread: <T>(content: Iterable<T>) => IterableTreeArrayContent<T>;
1593
1605
  };
1594
1606
 
1595
- // @beta @sealed @system
1607
+ // @beta @sealed
1596
1608
  export interface TreeBeta {
1597
1609
  clone<const TSchema extends ImplicitFieldSchema>(node: TreeFieldFromImplicitField<TSchema>): TreeFieldFromImplicitField<TSchema>;
1598
1610
  create<const TSchema extends ImplicitFieldSchema>(schema: TSchema, data: InsertableTreeFieldFromImplicitField<TSchema>): Unhydrated<TreeFieldFromImplicitField<TSchema>>;
@@ -864,7 +864,7 @@ export type TransactionConstraint = NodeInDocumentConstraint;
864
864
  // @public
865
865
  export type TransformedEvent<TThis, E, A extends any[]> = (event: E, listener: (...args: ReplaceIEventThisPlaceHolder<A, TThis>) => void) => TThis;
866
866
 
867
- // @public @sealed @system
867
+ // @public @sealed
868
868
  export interface Tree extends TreeNodeApi {
869
869
  contains(node: TreeNode, other: TreeNode): boolean;
870
870
  readonly runTransaction: RunTransaction;
@@ -830,7 +830,7 @@ export type TransactionConstraint = NodeInDocumentConstraint;
830
830
  // @public
831
831
  export type TransformedEvent<TThis, E, A extends any[]> = (event: E, listener: (...args: ReplaceIEventThisPlaceHolder<A, TThis>) => void) => TThis;
832
832
 
833
- // @public @sealed @system
833
+ // @public @sealed
834
834
  export interface Tree extends TreeNodeApi {
835
835
  contains(node: TreeNode, other: TreeNode): boolean;
836
836
  readonly runTransaction: RunTransaction;
package/dist/alpha.d.ts CHANGED
@@ -152,6 +152,7 @@ export {
152
152
  CodecWriteOptionsBeta,
153
153
  ConciseTree,
154
154
  ErasedBaseType,
155
+ ExtensibleUnionNode,
155
156
  FixRecursiveArraySchema,
156
157
  FluidSerializableAsTree,
157
158
  ForestOptions,
@@ -205,7 +206,6 @@ export {
205
206
  CreateIndependentTreeAlphaOptions,
206
207
  DirtyTreeMap,
207
208
  DirtyTreeStatus,
208
- ExtensibleSchemaUnion,
209
209
  FactoryContent,
210
210
  FactoryContentObject,
211
211
  FieldPropsAlpha,
@@ -262,7 +262,6 @@ export {
262
262
  RevertibleAlpha,
263
263
  RevertibleAlphaFactory,
264
264
  RunTransactionParams,
265
- SchemaCompatibilitySnapshotsOptions,
266
265
  SchemaFactoryAlpha,
267
266
  SchemaType,
268
267
  SharedTreeFormatOptions,
@@ -280,6 +279,7 @@ export {
280
279
  SimpleTreeIndex,
281
280
  SimpleTreeSchema,
282
281
  SnapshotFileSystem,
282
+ SnapshotSchemaCompatibilityOptions,
283
283
  TransactionCallbackStatus,
284
284
  TransactionConstraintAlpha,
285
285
  TransactionResult,
@@ -310,7 +310,6 @@ export {
310
310
  asAlpha,
311
311
  asTreeViewAlpha,
312
312
  checkCompatibility,
313
- checkSchemaCompatibilitySnapshots,
314
313
  cloneWithReplacements,
315
314
  comparePersistedSchema,
316
315
  configuredSharedTree,
@@ -342,6 +341,7 @@ export {
342
341
  replaceConciseTreeHandles,
343
342
  replaceHandles,
344
343
  replaceVerboseTreeHandles,
344
+ snapshotSchemaCompatibility,
345
345
  trackDirtyNodes
346
346
  // #endregion
347
347
  } from "./index.js";
package/dist/beta.d.ts CHANGED
@@ -152,6 +152,7 @@ export {
152
152
  CodecWriteOptionsBeta,
153
153
  ConciseTree,
154
154
  ErasedBaseType,
155
+ ExtensibleUnionNode,
155
156
  FixRecursiveArraySchema,
156
157
  FluidSerializableAsTree,
157
158
  ForestOptions,
package/dist/legacy.d.ts CHANGED
@@ -159,6 +159,7 @@ export {
159
159
  CodecWriteOptionsBeta,
160
160
  ConciseTree,
161
161
  ErasedBaseType,
162
+ ExtensibleUnionNode,
162
163
  FixRecursiveArraySchema,
163
164
  FluidSerializableAsTree,
164
165
  ForestOptions,
package/lib/alpha.d.ts CHANGED
@@ -152,6 +152,7 @@ export {
152
152
  CodecWriteOptionsBeta,
153
153
  ConciseTree,
154
154
  ErasedBaseType,
155
+ ExtensibleUnionNode,
155
156
  FixRecursiveArraySchema,
156
157
  FluidSerializableAsTree,
157
158
  ForestOptions,
@@ -205,7 +206,6 @@ export {
205
206
  CreateIndependentTreeAlphaOptions,
206
207
  DirtyTreeMap,
207
208
  DirtyTreeStatus,
208
- ExtensibleSchemaUnion,
209
209
  FactoryContent,
210
210
  FactoryContentObject,
211
211
  FieldPropsAlpha,
@@ -262,7 +262,6 @@ export {
262
262
  RevertibleAlpha,
263
263
  RevertibleAlphaFactory,
264
264
  RunTransactionParams,
265
- SchemaCompatibilitySnapshotsOptions,
266
265
  SchemaFactoryAlpha,
267
266
  SchemaType,
268
267
  SharedTreeFormatOptions,
@@ -280,6 +279,7 @@ export {
280
279
  SimpleTreeIndex,
281
280
  SimpleTreeSchema,
282
281
  SnapshotFileSystem,
282
+ SnapshotSchemaCompatibilityOptions,
283
283
  TransactionCallbackStatus,
284
284
  TransactionConstraintAlpha,
285
285
  TransactionResult,
@@ -310,7 +310,6 @@ export {
310
310
  asAlpha,
311
311
  asTreeViewAlpha,
312
312
  checkCompatibility,
313
- checkSchemaCompatibilitySnapshots,
314
313
  cloneWithReplacements,
315
314
  comparePersistedSchema,
316
315
  configuredSharedTree,
@@ -342,6 +341,7 @@ export {
342
341
  replaceConciseTreeHandles,
343
342
  replaceHandles,
344
343
  replaceVerboseTreeHandles,
344
+ snapshotSchemaCompatibility,
345
345
  trackDirtyNodes
346
346
  // #endregion
347
347
  } from "./index.js";
package/lib/beta.d.ts CHANGED
@@ -152,6 +152,7 @@ export {
152
152
  CodecWriteOptionsBeta,
153
153
  ConciseTree,
154
154
  ErasedBaseType,
155
+ ExtensibleUnionNode,
155
156
  FixRecursiveArraySchema,
156
157
  FluidSerializableAsTree,
157
158
  ForestOptions,
package/lib/legacy.d.ts CHANGED
@@ -159,6 +159,7 @@ export {
159
159
  CodecWriteOptionsBeta,
160
160
  ConciseTree,
161
161
  ErasedBaseType,
162
+ ExtensibleUnionNode,
162
163
  FixRecursiveArraySchema,
163
164
  FluidSerializableAsTree,
164
165
  ForestOptions,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fluid-framework",
3
- "version": "2.82.0",
3
+ "version": "2.83.0",
4
4
  "description": "The main entry point into Fluid Framework public packages",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -57,17 +57,17 @@
57
57
  "main": "lib/index.js",
58
58
  "types": "lib/public.d.ts",
59
59
  "dependencies": {
60
- "@fluidframework/container-definitions": "~2.82.0",
61
- "@fluidframework/container-loader": "~2.82.0",
62
- "@fluidframework/core-interfaces": "~2.82.0",
63
- "@fluidframework/core-utils": "~2.82.0",
64
- "@fluidframework/driver-definitions": "~2.82.0",
65
- "@fluidframework/fluid-static": "~2.82.0",
66
- "@fluidframework/map": "~2.82.0",
67
- "@fluidframework/runtime-utils": "~2.82.0",
68
- "@fluidframework/sequence": "~2.82.0",
69
- "@fluidframework/shared-object-base": "~2.82.0",
70
- "@fluidframework/tree": "~2.82.0"
60
+ "@fluidframework/container-definitions": "~2.83.0",
61
+ "@fluidframework/container-loader": "~2.83.0",
62
+ "@fluidframework/core-interfaces": "~2.83.0",
63
+ "@fluidframework/core-utils": "~2.83.0",
64
+ "@fluidframework/driver-definitions": "~2.83.0",
65
+ "@fluidframework/fluid-static": "~2.83.0",
66
+ "@fluidframework/map": "~2.83.0",
67
+ "@fluidframework/runtime-utils": "~2.83.0",
68
+ "@fluidframework/sequence": "~2.83.0",
69
+ "@fluidframework/shared-object-base": "~2.83.0",
70
+ "@fluidframework/tree": "~2.83.0"
71
71
  },
72
72
  "devDependencies": {
73
73
  "@arethetypeswrong/cli": "^0.18.2",
@@ -75,7 +75,7 @@
75
75
  "@fluid-tools/build-cli": "^0.63.0",
76
76
  "@fluidframework/build-common": "^2.0.3",
77
77
  "@fluidframework/build-tools": "^0.63.0",
78
- "@fluidframework/eslint-config-fluid": "~2.82.0",
78
+ "@fluidframework/eslint-config-fluid": "~2.83.0",
79
79
  "@microsoft/api-extractor": "7.52.11",
80
80
  "@types/node": "~20.19.30",
81
81
  "concurrently": "^9.2.1",
@@ -1,4 +0,0 @@
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.esm.primary.json"
4
- }