@fluidframework/tree 2.60.0 → 2.61.0-355516

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 (126) hide show
  1. package/.mocharc.cjs +2 -3
  2. package/api-report/tree.alpha.api.md +11 -28
  3. package/api-report/tree.beta.api.md +6 -23
  4. package/api-report/tree.legacy.beta.api.md +71 -22
  5. package/api-report/tree.legacy.public.api.md +5 -22
  6. package/api-report/tree.public.api.md +5 -22
  7. package/dist/alpha.d.ts +10 -5
  8. package/dist/beta.d.ts +8 -4
  9. package/dist/core/tree/anchorSet.d.ts +3 -3
  10. package/dist/core/tree/anchorSet.d.ts.map +1 -1
  11. package/dist/core/tree/anchorSet.js.map +1 -1
  12. package/dist/index.d.ts +1 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/legacy.d.ts +22 -4
  16. package/dist/packageVersion.d.ts +1 -1
  17. package/dist/packageVersion.d.ts.map +1 -1
  18. package/dist/packageVersion.js +1 -1
  19. package/dist/packageVersion.js.map +1 -1
  20. package/dist/public.d.ts +6 -3
  21. package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
  22. package/dist/shared-tree/treeCheckout.js +1 -0
  23. package/dist/shared-tree/treeCheckout.js.map +1 -1
  24. package/dist/simple-tree/api/index.d.ts +1 -1
  25. package/dist/simple-tree/api/index.d.ts.map +1 -1
  26. package/dist/simple-tree/api/index.js.map +1 -1
  27. package/dist/simple-tree/api/schemaFactory.d.ts +11 -83
  28. package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
  29. package/dist/simple-tree/api/schemaFactory.js +26 -82
  30. package/dist/simple-tree/api/schemaFactory.js.map +1 -1
  31. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +5 -3
  32. package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  33. package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  34. package/dist/simple-tree/core/index.d.ts +1 -1
  35. package/dist/simple-tree/core/index.d.ts.map +1 -1
  36. package/dist/simple-tree/core/index.js +2 -1
  37. package/dist/simple-tree/core/index.js.map +1 -1
  38. package/dist/simple-tree/core/treeNodeKernel.d.ts +12 -1
  39. package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  40. package/dist/simple-tree/core/treeNodeKernel.js +188 -43
  41. package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
  42. package/dist/simple-tree/core/unhydratedFlexTree.d.ts +4 -3
  43. package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  44. package/dist/simple-tree/core/unhydratedFlexTree.js +22 -6
  45. package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  46. package/dist/simple-tree/index.d.ts +2 -2
  47. package/dist/simple-tree/index.d.ts.map +1 -1
  48. package/dist/simple-tree/index.js +3 -2
  49. package/dist/simple-tree/index.js.map +1 -1
  50. package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  51. package/dist/simple-tree/node-kinds/array/arrayNode.js +13 -6
  52. package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  53. package/dist/tableSchema.d.ts.map +1 -1
  54. package/dist/tableSchema.js +15 -10
  55. package/dist/tableSchema.js.map +1 -1
  56. package/dist/util/breakable.d.ts.map +1 -1
  57. package/dist/util/breakable.js +7 -1
  58. package/dist/util/breakable.js.map +1 -1
  59. package/lib/alpha.d.ts +10 -5
  60. package/lib/beta.d.ts +8 -4
  61. package/lib/core/tree/anchorSet.d.ts +3 -3
  62. package/lib/core/tree/anchorSet.d.ts.map +1 -1
  63. package/lib/core/tree/anchorSet.js.map +1 -1
  64. package/lib/index.d.ts +1 -1
  65. package/lib/index.d.ts.map +1 -1
  66. package/lib/index.js.map +1 -1
  67. package/lib/legacy.d.ts +22 -4
  68. package/lib/packageVersion.d.ts +1 -1
  69. package/lib/packageVersion.d.ts.map +1 -1
  70. package/lib/packageVersion.js +1 -1
  71. package/lib/packageVersion.js.map +1 -1
  72. package/lib/public.d.ts +6 -3
  73. package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
  74. package/lib/shared-tree/treeCheckout.js +1 -0
  75. package/lib/shared-tree/treeCheckout.js.map +1 -1
  76. package/lib/simple-tree/api/index.d.ts +1 -1
  77. package/lib/simple-tree/api/index.d.ts.map +1 -1
  78. package/lib/simple-tree/api/index.js.map +1 -1
  79. package/lib/simple-tree/api/schemaFactory.d.ts +11 -83
  80. package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
  81. package/lib/simple-tree/api/schemaFactory.js +25 -81
  82. package/lib/simple-tree/api/schemaFactory.js.map +1 -1
  83. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +5 -3
  84. package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
  85. package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
  86. package/lib/simple-tree/core/index.d.ts +1 -1
  87. package/lib/simple-tree/core/index.d.ts.map +1 -1
  88. package/lib/simple-tree/core/index.js +1 -1
  89. package/lib/simple-tree/core/index.js.map +1 -1
  90. package/lib/simple-tree/core/treeNodeKernel.d.ts +12 -1
  91. package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
  92. package/lib/simple-tree/core/treeNodeKernel.js +187 -43
  93. package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
  94. package/lib/simple-tree/core/unhydratedFlexTree.d.ts +4 -3
  95. package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
  96. package/lib/simple-tree/core/unhydratedFlexTree.js +22 -6
  97. package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
  98. package/lib/simple-tree/index.d.ts +2 -2
  99. package/lib/simple-tree/index.d.ts.map +1 -1
  100. package/lib/simple-tree/index.js +1 -1
  101. package/lib/simple-tree/index.js.map +1 -1
  102. package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
  103. package/lib/simple-tree/node-kinds/array/arrayNode.js +14 -7
  104. package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
  105. package/lib/tableSchema.d.ts.map +1 -1
  106. package/lib/tableSchema.js +16 -11
  107. package/lib/tableSchema.js.map +1 -1
  108. package/lib/tsdoc-metadata.json +1 -1
  109. package/lib/util/breakable.d.ts.map +1 -1
  110. package/lib/util/breakable.js +7 -1
  111. package/lib/util/breakable.js.map +1 -1
  112. package/package.json +27 -27
  113. package/src/core/tree/anchorSet.ts +2 -2
  114. package/src/index.ts +1 -0
  115. package/src/packageVersion.ts +1 -1
  116. package/src/shared-tree/treeCheckout.ts +1 -0
  117. package/src/simple-tree/api/index.ts +1 -0
  118. package/src/simple-tree/api/schemaFactory.ts +31 -103
  119. package/src/simple-tree/api/schemaFactoryRecursive.ts +41 -40
  120. package/src/simple-tree/core/index.ts +1 -0
  121. package/src/simple-tree/core/treeNodeKernel.ts +242 -44
  122. package/src/simple-tree/core/unhydratedFlexTree.ts +26 -3
  123. package/src/simple-tree/index.ts +2 -0
  124. package/src/simple-tree/node-kinds/array/arrayNode.ts +19 -11
  125. package/src/tableSchema.ts +15 -9
  126. package/src/util/breakable.ts +9 -1
package/.mocharc.cjs CHANGED
@@ -7,10 +7,9 @@
7
7
 
8
8
  const getFluidTestMochaConfig = require("@fluid-internal/mocha-test-setup/mocharc-common");
9
9
 
10
- const packageDir = __dirname;
11
- const config = getFluidTestMochaConfig(packageDir);
12
- config.spec = process.env.MOCHA_SPEC ?? "lib/test";
10
+ const config = getFluidTestMochaConfig(__dirname);
13
11
  // TODO: figure out why this package needs the --exit flag, tests might not be cleaning up correctly after themselves
12
+ // In this package, tests which use `TestTreeProvider.create` cause this issue, but there might be other cases as well.
14
13
  // AB#7856
15
14
  config.exit = true;
16
15
  module.exports = config;
@@ -258,7 +258,7 @@ export interface ForestOptions {
258
258
  }
259
259
 
260
260
  // @beta @sealed
261
- export interface ForestType extends ErasedType_2<"ForestType"> {
261
+ export interface ForestType extends ErasedType<"ForestType"> {
262
262
  }
263
263
 
264
264
  // @alpha
@@ -271,7 +271,7 @@ export const ForestTypeOptimized: ForestType;
271
271
  export const ForestTypeReference: ForestType;
272
272
 
273
273
  // @alpha @sealed
274
- export interface FormatValidator extends ErasedType_2<"FormatValidator"> {
274
+ export interface FormatValidator extends ErasedType<"FormatValidator"> {
275
275
  }
276
276
 
277
277
  // @alpha
@@ -323,7 +323,7 @@ export function independentInitializedView<const TSchema extends ImplicitFieldSc
323
323
 
324
324
  // @alpha
325
325
  export function independentView<const TSchema extends ImplicitFieldSchema>(config: TreeViewConfiguration<TSchema>, options: ForestOptions & {
326
- idCompressor?: IIdCompressor_2 | undefined;
326
+ idCompressor?: IIdCompressor | undefined;
327
327
  }): TreeViewAlpha<TSchema>;
328
328
 
329
329
  // @public @system
@@ -780,7 +780,7 @@ export interface SchemaCompatibilityStatus {
780
780
  }
781
781
 
782
782
  // @public @sealed
783
- export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> implements SchemaStatics {
783
+ export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> extends SchemaFactory_base {
784
784
  constructor(
785
785
  scope: TScope);
786
786
  array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T, undefined>;
@@ -788,14 +788,8 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
788
788
  arrayRecursive<const Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array, unknown>, {
789
789
  [Symbol.iterator](): Iterator<System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>;
790
790
  }, false, T, undefined>;
791
- readonly boolean: LeafSchema<"boolean", boolean>;
792
- static readonly boolean: LeafSchema<"boolean", boolean>;
793
791
  protected getStructuralType(fullName: string, types: TreeNodeSchema | readonly TreeNodeSchema[], builder: () => TreeNodeSchema): TreeNodeSchema;
794
- readonly handle: LeafSchema<"handle", IFluidHandle<unknown>>;
795
- static readonly handle: LeafSchema<"handle", IFluidHandle<unknown>>;
796
792
  get identifier(): FieldSchema<FieldKind.Identifier, typeof SchemaFactory.string>;
797
- readonly leaves: readonly [LeafSchema<"string", string>, LeafSchema<"number", number>, LeafSchema<"boolean", boolean>, LeafSchema<"null", null>, LeafSchema<"handle", IFluidHandle<unknown>>];
798
- static readonly leaves: readonly [LeafSchema<"string", string>, LeafSchema<"number", number>, LeafSchema<"boolean", boolean>, LeafSchema<"null", null>, LeafSchema<"handle", IFluidHandle<unknown>>];
799
793
  map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T, undefined>;
800
794
  map<Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map>, MapNodeInsertableData<T>, true, T, undefined>;
801
795
  mapRecursive<Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map, unknown>, {
@@ -806,32 +800,21 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
806
800
  } | {
807
801
  readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>;
808
802
  }, false, T, undefined>;
809
- readonly null: LeafSchema<"null", null>;
810
- static readonly null: LeafSchema<"null", null>;
811
- readonly number: LeafSchema<"number", number>;
812
- static readonly number: LeafSchema<"number", number>;
813
803
  object<const Name extends TName, const T extends RestrictiveStringRecord<ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
814
804
  objectRecursive<const Name extends TName, const T extends RestrictiveStringRecord<System_Unsafe.ImplicitFieldSchemaUnsafe>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe<T>, false, T>;
815
- readonly optional: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
816
- static readonly optional: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
817
- readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Optional, T, TCustomMetadata>;
818
- static readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Optional, T, TCustomMetadata>;
819
- readonly required: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Required, T, TCustomMetadata>;
820
- static readonly required: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Required, T, TCustomMetadata>;
821
- readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Required, T, TCustomMetadata>;
822
- static readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Required, T, TCustomMetadata>;
823
805
  readonly scope: TScope;
824
- readonly string: LeafSchema<"string", string>;
825
- static readonly string: LeafSchema<"string", string>;
826
806
  }
827
807
 
808
+ // @public @system
809
+ export const SchemaFactory_base: SchemaStatics & (new () => SchemaStatics);
810
+
828
811
  // @alpha
829
812
  export class SchemaFactoryAlpha<out TScope extends string | undefined = string | undefined, TName extends number | string = string> extends SchemaFactoryBeta<TScope, TName> {
830
813
  arrayAlpha<const Name extends TName, const T extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): ArrayNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata>;
831
814
  arrayRecursive<const Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): ArrayNodeCustomizableSchemaUnsafe<ScopedSchemaName<TScope, Name>, T, TCustomMetadata>;
832
815
  static readonly identifier: <const TCustomMetadata = unknown>(props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlpha<FieldKind.Identifier, LeafSchema<"string", string> & SimpleLeafNodeSchema, TCustomMetadata>;
833
- static readonly leaves: readonly [LeafSchema<"string", string> & SimpleLeafNodeSchema, LeafSchema<"number", number> & SimpleLeafNodeSchema, LeafSchema<"boolean", boolean> & SimpleLeafNodeSchema, LeafSchema<"null", null> & SimpleLeafNodeSchema, LeafSchema<"handle", IFluidHandle<unknown>> & SimpleLeafNodeSchema];
834
- readonly leaves: readonly [LeafSchema<"string", string> & SimpleLeafNodeSchema, LeafSchema<"number", number> & SimpleLeafNodeSchema, LeafSchema<"boolean", boolean> & SimpleLeafNodeSchema, LeafSchema<"null", null> & SimpleLeafNodeSchema, LeafSchema<"handle", IFluidHandle<unknown>> & SimpleLeafNodeSchema];
816
+ static readonly leaves: readonly [LeafSchema<"string", string> & SimpleLeafNodeSchema, LeafSchema<"number", number> & SimpleLeafNodeSchema, LeafSchema<"boolean", boolean> & SimpleLeafNodeSchema, LeafSchema<"null", null> & SimpleLeafNodeSchema, LeafSchema<"handle", IFluidHandle_2<unknown>> & SimpleLeafNodeSchema];
817
+ readonly leaves: readonly [LeafSchema<"string", string> & SimpleLeafNodeSchema, LeafSchema<"number", number> & SimpleLeafNodeSchema, LeafSchema<"boolean", boolean> & SimpleLeafNodeSchema, LeafSchema<"null", null> & SimpleLeafNodeSchema, LeafSchema<"handle", IFluidHandle_2<unknown>> & SimpleLeafNodeSchema];
835
818
  mapAlpha<Name extends TName, const T extends ImplicitAnnotatedAllowedTypes, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): MapNodeCustomizableSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata>;
836
819
  mapRecursive<Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(name: Name, allowedTypes: T, options?: NodeSchemaOptionsAlpha<TCustomMetadata>): MapNodeCustomizableSchemaUnsafe<ScopedSchemaName<TScope, Name>, T, TCustomMetadata>;
837
820
  objectAlpha<const Name extends TName, const T extends RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>, const TCustomMetadata = unknown>(name: Name, fields: T, options?: SchemaFactoryObjectOptions<TCustomMetadata>): ObjectNodeSchema<ScopedSchemaName<TScope, Name>, T, true, TCustomMetadata> & {
@@ -1614,7 +1597,7 @@ export type UnsafeUnknownSchema = typeof UnsafeUnknownSchema;
1614
1597
  export type ValidateRecursiveSchema<T extends ValidateRecursiveSchemaTemplate<T>> = true;
1615
1598
 
1616
1599
  // @public @system
1617
- export type ValidateRecursiveSchemaTemplate<T extends TreeNodeSchema> = TreeNodeSchema<string, NodeKind.Array | NodeKind.Map | NodeKind.Object | NodeKind.Record, TreeNode & WithType<T["identifier"], T["kind"]>, {
1600
+ export type ValidateRecursiveSchemaTemplate<T extends TreeNodeSchemaClass> = TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object | NodeKind.Record, TreeNode & WithType<T["identifier"], T["kind"]>, {
1618
1601
  [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
1619
1602
  [NodeKind.Array]: T["info"] extends ImplicitAllowedTypes ? Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>> : unknown;
1620
1603
  [NodeKind.Map]: T["info"] extends ImplicitAllowedTypes ? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]> : unknown;
@@ -1662,7 +1645,7 @@ export interface ViewableTree {
1662
1645
 
1663
1646
  // @alpha
1664
1647
  export interface ViewContent {
1665
- readonly idCompressor: IIdCompressor_2;
1648
+ readonly idCompressor: IIdCompressor;
1666
1649
  readonly schema: JsonCompatible;
1667
1650
  readonly tree: JsonCompatible<IFluidHandle>;
1668
1651
  }
@@ -118,7 +118,7 @@ export interface ForestOptions {
118
118
  }
119
119
 
120
120
  // @beta @sealed
121
- export interface ForestType extends ErasedType_2<"ForestType"> {
121
+ export interface ForestType extends ErasedType<"ForestType"> {
122
122
  }
123
123
 
124
124
  // @public
@@ -339,7 +339,7 @@ export interface SchemaCompatibilityStatus {
339
339
  }
340
340
 
341
341
  // @public @sealed
342
- export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> implements SchemaStatics {
342
+ export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> extends SchemaFactory_base {
343
343
  constructor(
344
344
  scope: TScope);
345
345
  array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T, undefined>;
@@ -347,14 +347,8 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
347
347
  arrayRecursive<const Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array, unknown>, {
348
348
  [Symbol.iterator](): Iterator<System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>;
349
349
  }, false, T, undefined>;
350
- readonly boolean: LeafSchema<"boolean", boolean>;
351
- static readonly boolean: LeafSchema<"boolean", boolean>;
352
350
  protected getStructuralType(fullName: string, types: TreeNodeSchema | readonly TreeNodeSchema[], builder: () => TreeNodeSchema): TreeNodeSchema;
353
- readonly handle: LeafSchema<"handle", IFluidHandle<unknown>>;
354
- static readonly handle: LeafSchema<"handle", IFluidHandle<unknown>>;
355
351
  get identifier(): FieldSchema<FieldKind.Identifier, typeof SchemaFactory.string>;
356
- readonly leaves: readonly [LeafSchema<"string", string>, LeafSchema<"number", number>, LeafSchema<"boolean", boolean>, LeafSchema<"null", null>, LeafSchema<"handle", IFluidHandle<unknown>>];
357
- static readonly leaves: readonly [LeafSchema<"string", string>, LeafSchema<"number", number>, LeafSchema<"boolean", boolean>, LeafSchema<"null", null>, LeafSchema<"handle", IFluidHandle<unknown>>];
358
352
  map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T, undefined>;
359
353
  map<Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map>, MapNodeInsertableData<T>, true, T, undefined>;
360
354
  mapRecursive<Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map, unknown>, {
@@ -365,25 +359,14 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
365
359
  } | {
366
360
  readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>;
367
361
  }, false, T, undefined>;
368
- readonly null: LeafSchema<"null", null>;
369
- static readonly null: LeafSchema<"null", null>;
370
- readonly number: LeafSchema<"number", number>;
371
- static readonly number: LeafSchema<"number", number>;
372
362
  object<const Name extends TName, const T extends RestrictiveStringRecord<ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
373
363
  objectRecursive<const Name extends TName, const T extends RestrictiveStringRecord<System_Unsafe.ImplicitFieldSchemaUnsafe>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe<T>, false, T>;
374
- readonly optional: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
375
- static readonly optional: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
376
- readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Optional, T, TCustomMetadata>;
377
- static readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Optional, T, TCustomMetadata>;
378
- readonly required: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Required, T, TCustomMetadata>;
379
- static readonly required: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Required, T, TCustomMetadata>;
380
- readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Required, T, TCustomMetadata>;
381
- static readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Required, T, TCustomMetadata>;
382
364
  readonly scope: TScope;
383
- readonly string: LeafSchema<"string", string>;
384
- static readonly string: LeafSchema<"string", string>;
385
365
  }
386
366
 
367
+ // @public @system
368
+ export const SchemaFactory_base: SchemaStatics & (new () => SchemaStatics);
369
+
387
370
  // @beta
388
371
  export class SchemaFactoryBeta<out TScope extends string | undefined = string | undefined, TName extends number | string = string> extends SchemaFactory<TScope, TName> {
389
372
  scopedFactory<const T extends TName, TNameInner extends number | string = string>(name: T): SchemaFactoryBeta<ScopedSchemaName<TScope, T>, TNameInner>;
@@ -695,7 +678,7 @@ export type UnionToTuple<Union, A extends unknown[] = [], First = PopUnion<Union
695
678
  export type ValidateRecursiveSchema<T extends ValidateRecursiveSchemaTemplate<T>> = true;
696
679
 
697
680
  // @public @system
698
- export type ValidateRecursiveSchemaTemplate<T extends TreeNodeSchema> = TreeNodeSchema<string, NodeKind.Array | NodeKind.Map | NodeKind.Object | NodeKind.Record, TreeNode & WithType<T["identifier"], T["kind"]>, {
681
+ export type ValidateRecursiveSchemaTemplate<T extends TreeNodeSchemaClass> = TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object | NodeKind.Record, TreeNode & WithType<T["identifier"], T["kind"]>, {
699
682
  [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
700
683
  [NodeKind.Array]: T["info"] extends ImplicitAllowedTypes ? Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>> : unknown;
701
684
  [NodeKind.Map]: T["info"] extends ImplicitAllowedTypes ? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]> : unknown;
@@ -4,6 +4,17 @@
4
4
 
5
5
  ```ts
6
6
 
7
+ // @beta
8
+ export function adaptEnum<TScope extends string, const TEnum extends Record<string, string | number>>(factory: SchemaFactory<TScope>, members: TEnum): (<TValue extends TEnum[keyof TEnum]>(value: TValue) => TValue extends unknown ? TreeNode & {
9
+ readonly value: TValue;
10
+ } : never) & { readonly [Property in keyof TEnum]: TreeNodeSchemaClass<ScopedSchemaName<TScope, TEnum[Property]>, NodeKind.Object, TreeNode & {
11
+ readonly value: TEnum[Property];
12
+ }, Record<string, never>, true, Record<string, never>, undefined>; } & {
13
+ readonly schema: UnionToTuple<{ readonly [Property in keyof TEnum]: TreeNodeSchemaClass<ScopedSchemaName<TScope, TEnum[Property]>, NodeKind.Object, TreeNode & {
14
+ readonly value: TEnum[Property];
15
+ }, Record<string, never>, true, Record<string, never>, undefined>; }[keyof TEnum]>;
16
+ };
17
+
7
18
  // @public @system
8
19
  export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
9
20
 
@@ -36,6 +47,17 @@ export interface CommitMetadata {
36
47
  interface DefaultProvider extends ErasedType<"@fluidframework/tree.FieldProvider"> {
37
48
  }
38
49
 
50
+ // @beta
51
+ export function enumFromStrings<TScope extends string, const Members extends readonly string[]>(factory: SchemaFactory<TScope>, members: Members): (<TValue extends Members[number]>(value: TValue) => TValue extends unknown ? TreeNode & {
52
+ readonly value: TValue;
53
+ } : never) & { [Index in Extract<keyof Members, `${number}`> extends `${infer N extends number}` ? N : never as Members[Index]]: TreeNodeSchemaClass<ScopedSchemaName<TScope, Members[Index]>, NodeKind.Object, TreeNode & {
54
+ readonly value: Members[Index];
55
+ }, Record<string, never>, true, Record<string, never>, undefined>; } & {
56
+ readonly schema: UnionToTuple<Members[number] extends unknown ? { [Index in Extract<keyof Members, `${number}`> extends `${infer N extends number}` ? N : never as Members[Index]]: TreeNodeSchemaClass<ScopedSchemaName<TScope, Members[Index]>, NodeKind.Object, TreeNode & {
57
+ readonly value: Members[Index];
58
+ }, Record<string, never>, true, Record<string, never>, undefined>; }[Members[number]] : never>;
59
+ };
60
+
39
61
  // @public @system
40
62
  type ExtractItemType<Item extends LazyItem> = Item extends () => infer Result ? Result : Item;
41
63
 
@@ -90,6 +112,15 @@ type FlexList<Item = unknown> = readonly LazyItem<Item>[];
90
112
  // @public @system
91
113
  type FlexListToUnion<TList extends FlexList> = ExtractItemType<TList[number]>;
92
114
 
115
+ // @beta @input
116
+ export interface ForestOptions {
117
+ readonly forest?: ForestType;
118
+ }
119
+
120
+ // @beta @sealed
121
+ export interface ForestType extends ErasedType<"ForestType"> {
122
+ }
123
+
93
124
  // @public
94
125
  export type ImplicitAllowedTypes = AllowedTypes | TreeNodeSchema;
95
126
 
@@ -199,6 +230,11 @@ export type MapNodeInsertableData<T extends ImplicitAllowedTypes> = Iterable<rea
199
230
  // @public @system
200
231
  type NodeBuilderData<T extends TreeNodeSchemaCore<string, NodeKind, boolean>> = T extends TreeNodeSchemaCore<string, NodeKind, boolean, unknown, infer TBuild> ? TBuild : never;
201
232
 
233
+ // @beta @sealed
234
+ export interface NodeChangedData<TNode extends TreeNode = TreeNode> {
235
+ readonly changedProperties?: ReadonlySet<TNode extends WithType<string, NodeKind.Object, infer TInfo> ? string & keyof TInfo : string>;
236
+ }
237
+
202
238
  // @public
203
239
  export type NodeFromSchema<T extends TreeNodeSchema> = T extends TreeNodeSchemaClass<string, NodeKind, infer TNode> ? TNode : T extends TreeNodeSchemaNonClass<string, NodeKind, infer TNode> ? TNode : never;
204
240
 
@@ -238,6 +274,9 @@ export type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFie
238
274
  // @public @deprecated
239
275
  export type Off = Off_2;
240
276
 
277
+ // @beta @system
278
+ export type PopUnion<Union, AsOverloadedFunction = UnionToIntersection<Union extends unknown ? (f: Union) => void : never>> = AsOverloadedFunction extends (a: infer First) => void ? First : never;
279
+
241
280
  // @public @sealed @system
242
281
  export interface ReadonlyArrayNode<out T = TreeNode | TreeLeafValue> extends ReadonlyArray<T>, Awaited<TreeNode & WithType<string, NodeKind.Array>> {
243
282
  }
@@ -300,7 +339,7 @@ export interface SchemaCompatibilityStatus {
300
339
  }
301
340
 
302
341
  // @public @sealed
303
- export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> implements SchemaStatics {
342
+ export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> extends SchemaFactory_base {
304
343
  constructor(
305
344
  scope: TScope);
306
345
  array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T, undefined>;
@@ -308,14 +347,8 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
308
347
  arrayRecursive<const Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array, unknown>, {
309
348
  [Symbol.iterator](): Iterator<System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>;
310
349
  }, false, T, undefined>;
311
- readonly boolean: LeafSchema<"boolean", boolean>;
312
- static readonly boolean: LeafSchema<"boolean", boolean>;
313
350
  protected getStructuralType(fullName: string, types: TreeNodeSchema | readonly TreeNodeSchema[], builder: () => TreeNodeSchema): TreeNodeSchema;
314
- readonly handle: LeafSchema<"handle", IFluidHandle<unknown>>;
315
- static readonly handle: LeafSchema<"handle", IFluidHandle<unknown>>;
316
351
  get identifier(): FieldSchema<FieldKind.Identifier, typeof SchemaFactory.string>;
317
- readonly leaves: readonly [LeafSchema<"string", string>, LeafSchema<"number", number>, LeafSchema<"boolean", boolean>, LeafSchema<"null", null>, LeafSchema<"handle", IFluidHandle<unknown>>];
318
- static readonly leaves: readonly [LeafSchema<"string", string>, LeafSchema<"number", number>, LeafSchema<"boolean", boolean>, LeafSchema<"null", null>, LeafSchema<"handle", IFluidHandle<unknown>>];
319
352
  map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T, undefined>;
320
353
  map<Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map>, MapNodeInsertableData<T>, true, T, undefined>;
321
354
  mapRecursive<Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map, unknown>, {
@@ -326,23 +359,17 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
326
359
  } | {
327
360
  readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>;
328
361
  }, false, T, undefined>;
329
- readonly null: LeafSchema<"null", null>;
330
- static readonly null: LeafSchema<"null", null>;
331
- readonly number: LeafSchema<"number", number>;
332
- static readonly number: LeafSchema<"number", number>;
333
362
  object<const Name extends TName, const T extends RestrictiveStringRecord<ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
334
363
  objectRecursive<const Name extends TName, const T extends RestrictiveStringRecord<System_Unsafe.ImplicitFieldSchemaUnsafe>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe<T>, false, T>;
335
- readonly optional: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
336
- static readonly optional: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
337
- readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Optional, T, TCustomMetadata>;
338
- static readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Optional, T, TCustomMetadata>;
339
- readonly required: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Required, T, TCustomMetadata>;
340
- static readonly required: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Required, T, TCustomMetadata>;
341
- readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Required, T, TCustomMetadata>;
342
- static readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Required, T, TCustomMetadata>;
343
364
  readonly scope: TScope;
344
- readonly string: LeafSchema<"string", string>;
345
- static readonly string: LeafSchema<"string", string>;
365
+ }
366
+
367
+ // @public @system
368
+ export const SchemaFactory_base: SchemaStatics & (new () => SchemaStatics);
369
+
370
+ // @beta
371
+ export class SchemaFactoryBeta<out TScope extends string | undefined = string | undefined, TName extends number | string = string> extends SchemaFactory<TScope, TName> {
372
+ scopedFactory<const T extends TName, TNameInner extends number | string = string>(name: T): SchemaFactoryBeta<ScopedSchemaName<TScope, T>, TNameInner>;
346
373
  }
347
374
 
348
375
  // @public @sealed @system
@@ -383,6 +410,11 @@ export interface SimpleNodeSchemaBase<out TNodeKind extends NodeKind, out TCusto
383
410
  readonly metadata: NodeSchemaMetadata<TCustomMetadata>;
384
411
  }
385
412
 
413
+ // @beta
414
+ export function singletonSchema<TScope extends string, TName extends string | number>(factory: SchemaFactory<TScope, TName>, name: TName): TreeNodeSchemaClass<ScopedSchemaName<TScope, TName>, NodeKind.Object, TreeNode & {
415
+ readonly value: TName;
416
+ }, Record<string, never>, true, Record<string, never>, undefined>;
417
+
386
418
  // @public @system
387
419
  export namespace System_Unsafe {
388
420
  // @system
@@ -505,12 +537,26 @@ export const TreeArrayNode: {
505
537
  readonly spread: <T>(content: Iterable<T>) => IterableTreeArrayContent<T>;
506
538
  };
507
539
 
540
+ // @beta @sealed @system
541
+ export interface TreeBeta {
542
+ clone<const TSchema extends ImplicitFieldSchema>(node: TreeFieldFromImplicitField<TSchema>): TreeFieldFromImplicitField<TSchema>;
543
+ on<K extends keyof TreeChangeEventsBeta<TNode>, TNode extends TreeNode>(node: TNode, eventName: K, listener: NoInfer<TreeChangeEventsBeta<TNode>[K]>): () => void;
544
+ }
545
+
546
+ // @beta
547
+ export const TreeBeta: TreeBeta;
548
+
508
549
  // @public @sealed
509
550
  export interface TreeChangeEvents {
510
551
  nodeChanged(unstable?: unknown): void;
511
552
  treeChanged(): void;
512
553
  }
513
554
 
555
+ // @beta @sealed
556
+ export interface TreeChangeEventsBeta<TNode extends TreeNode = TreeNode> extends TreeChangeEvents {
557
+ nodeChanged: (data: NodeChangedData<TNode> & (TNode extends WithType<string, NodeKind.Map | NodeKind.Object | NodeKind.Record> ? Required<Pick<NodeChangedData<TNode>, "changedProperties">> : unknown)) => void;
558
+ }
559
+
514
560
  // @public
515
561
  export type TreeFieldFromImplicitField<TSchema extends ImplicitFieldSchema = FieldSchema> = TSchema extends FieldSchema<infer Kind, infer Types> ? ApplyKind<TreeNodeFromImplicitAllowedTypes<Types>, Kind> : TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TreeNode | TreeLeafValue | undefined;
516
562
 
@@ -634,11 +680,14 @@ export type Unhydrated<T> = T;
634
680
  // @public @system
635
681
  export type UnionToIntersection<T> = (T extends T ? (k: T) => unknown : never) extends (k: infer U) => unknown ? U : never;
636
682
 
683
+ // @beta @system
684
+ export type UnionToTuple<Union, A extends unknown[] = [], First = PopUnion<Union>> = IsUnion<Union> extends true ? UnionToTuple<Exclude<Union, First>, [First, ...A]> : [Union, ...A];
685
+
637
686
  // @public
638
687
  export type ValidateRecursiveSchema<T extends ValidateRecursiveSchemaTemplate<T>> = true;
639
688
 
640
689
  // @public @system
641
- export type ValidateRecursiveSchemaTemplate<T extends TreeNodeSchema> = TreeNodeSchema<string, NodeKind.Array | NodeKind.Map | NodeKind.Object | NodeKind.Record, TreeNode & WithType<T["identifier"], T["kind"]>, {
690
+ export type ValidateRecursiveSchemaTemplate<T extends TreeNodeSchemaClass> = TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object | NodeKind.Record, TreeNode & WithType<T["identifier"], T["kind"]>, {
642
691
  [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
643
692
  [NodeKind.Array]: T["info"] extends ImplicitAllowedTypes ? Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>> : unknown;
644
693
  [NodeKind.Map]: T["info"] extends ImplicitAllowedTypes ? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]> : unknown;
@@ -300,7 +300,7 @@ export interface SchemaCompatibilityStatus {
300
300
  }
301
301
 
302
302
  // @public @sealed
303
- export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> implements SchemaStatics {
303
+ export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> extends SchemaFactory_base {
304
304
  constructor(
305
305
  scope: TScope);
306
306
  array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T, undefined>;
@@ -308,14 +308,8 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
308
308
  arrayRecursive<const Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array, unknown>, {
309
309
  [Symbol.iterator](): Iterator<System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>;
310
310
  }, false, T, undefined>;
311
- readonly boolean: LeafSchema<"boolean", boolean>;
312
- static readonly boolean: LeafSchema<"boolean", boolean>;
313
311
  protected getStructuralType(fullName: string, types: TreeNodeSchema | readonly TreeNodeSchema[], builder: () => TreeNodeSchema): TreeNodeSchema;
314
- readonly handle: LeafSchema<"handle", IFluidHandle<unknown>>;
315
- static readonly handle: LeafSchema<"handle", IFluidHandle<unknown>>;
316
312
  get identifier(): FieldSchema<FieldKind.Identifier, typeof SchemaFactory.string>;
317
- readonly leaves: readonly [LeafSchema<"string", string>, LeafSchema<"number", number>, LeafSchema<"boolean", boolean>, LeafSchema<"null", null>, LeafSchema<"handle", IFluidHandle<unknown>>];
318
- static readonly leaves: readonly [LeafSchema<"string", string>, LeafSchema<"number", number>, LeafSchema<"boolean", boolean>, LeafSchema<"null", null>, LeafSchema<"handle", IFluidHandle<unknown>>];
319
313
  map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T, undefined>;
320
314
  map<Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map>, MapNodeInsertableData<T>, true, T, undefined>;
321
315
  mapRecursive<Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map, unknown>, {
@@ -326,25 +320,14 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
326
320
  } | {
327
321
  readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>;
328
322
  }, false, T, undefined>;
329
- readonly null: LeafSchema<"null", null>;
330
- static readonly null: LeafSchema<"null", null>;
331
- readonly number: LeafSchema<"number", number>;
332
- static readonly number: LeafSchema<"number", number>;
333
323
  object<const Name extends TName, const T extends RestrictiveStringRecord<ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
334
324
  objectRecursive<const Name extends TName, const T extends RestrictiveStringRecord<System_Unsafe.ImplicitFieldSchemaUnsafe>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe<T>, false, T>;
335
- readonly optional: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
336
- static readonly optional: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
337
- readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Optional, T, TCustomMetadata>;
338
- static readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Optional, T, TCustomMetadata>;
339
- readonly required: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Required, T, TCustomMetadata>;
340
- static readonly required: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Required, T, TCustomMetadata>;
341
- readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Required, T, TCustomMetadata>;
342
- static readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Required, T, TCustomMetadata>;
343
325
  readonly scope: TScope;
344
- readonly string: LeafSchema<"string", string>;
345
- static readonly string: LeafSchema<"string", string>;
346
326
  }
347
327
 
328
+ // @public @system
329
+ export const SchemaFactory_base: SchemaStatics & (new () => SchemaStatics);
330
+
348
331
  // @public @sealed @system
349
332
  export interface SchemaStatics {
350
333
  readonly boolean: LeafSchema<"boolean", boolean>;
@@ -629,7 +612,7 @@ export type UnionToIntersection<T> = (T extends T ? (k: T) => unknown : never) e
629
612
  export type ValidateRecursiveSchema<T extends ValidateRecursiveSchemaTemplate<T>> = true;
630
613
 
631
614
  // @public @system
632
- export type ValidateRecursiveSchemaTemplate<T extends TreeNodeSchema> = TreeNodeSchema<string, NodeKind.Array | NodeKind.Map | NodeKind.Object | NodeKind.Record, TreeNode & WithType<T["identifier"], T["kind"]>, {
615
+ export type ValidateRecursiveSchemaTemplate<T extends TreeNodeSchemaClass> = TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object | NodeKind.Record, TreeNode & WithType<T["identifier"], T["kind"]>, {
633
616
  [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
634
617
  [NodeKind.Array]: T["info"] extends ImplicitAllowedTypes ? Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>> : unknown;
635
618
  [NodeKind.Map]: T["info"] extends ImplicitAllowedTypes ? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]> : unknown;
@@ -300,7 +300,7 @@ export interface SchemaCompatibilityStatus {
300
300
  }
301
301
 
302
302
  // @public @sealed
303
- export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> implements SchemaStatics {
303
+ export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> extends SchemaFactory_base {
304
304
  constructor(
305
305
  scope: TScope);
306
306
  array<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array, TreeArrayNode<T> & WithType<ScopedSchemaName<TScope, `Array<${string}>`>, NodeKind.Array>, Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>>, true, T, undefined>;
@@ -308,14 +308,8 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
308
308
  arrayRecursive<const Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Array, System_Unsafe.TreeArrayNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Array, unknown>, {
309
309
  [Symbol.iterator](): Iterator<System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>>;
310
310
  }, false, T, undefined>;
311
- readonly boolean: LeafSchema<"boolean", boolean>;
312
- static readonly boolean: LeafSchema<"boolean", boolean>;
313
311
  protected getStructuralType(fullName: string, types: TreeNodeSchema | readonly TreeNodeSchema[], builder: () => TreeNodeSchema): TreeNodeSchema;
314
- readonly handle: LeafSchema<"handle", IFluidHandle<unknown>>;
315
- static readonly handle: LeafSchema<"handle", IFluidHandle<unknown>>;
316
312
  get identifier(): FieldSchema<FieldKind.Identifier, typeof SchemaFactory.string>;
317
- readonly leaves: readonly [LeafSchema<"string", string>, LeafSchema<"number", number>, LeafSchema<"boolean", boolean>, LeafSchema<"null", null>, LeafSchema<"handle", IFluidHandle<unknown>>];
318
- static readonly leaves: readonly [LeafSchema<"string", string>, LeafSchema<"number", number>, LeafSchema<"boolean", boolean>, LeafSchema<"null", null>, LeafSchema<"handle", IFluidHandle<unknown>>];
319
313
  map<const T extends TreeNodeSchema | readonly TreeNodeSchema[]>(allowedTypes: T): TreeNodeSchemaNonClass<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, `Map<${string}>`>, NodeKind.Map>, MapNodeInsertableData<T>, true, T, undefined>;
320
314
  map<Name extends TName, const T extends ImplicitAllowedTypes>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, TreeMapNode<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map>, MapNodeInsertableData<T>, true, T, undefined>;
321
315
  mapRecursive<Name extends TName, const T extends System_Unsafe.ImplicitAllowedTypesUnsafe>(name: Name, allowedTypes: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Map, System_Unsafe.TreeMapNodeUnsafe<T> & WithType<ScopedSchemaName<TScope, Name>, NodeKind.Map, unknown>, {
@@ -326,25 +320,14 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
326
320
  } | {
327
321
  readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>;
328
322
  }, false, T, undefined>;
329
- readonly null: LeafSchema<"null", null>;
330
- static readonly null: LeafSchema<"null", null>;
331
- readonly number: LeafSchema<"number", number>;
332
- static readonly number: LeafSchema<"number", number>;
333
323
  object<const Name extends TName, const T extends RestrictiveStringRecord<ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
334
324
  objectRecursive<const Name extends TName, const T extends RestrictiveStringRecord<System_Unsafe.ImplicitFieldSchemaUnsafe>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, System_Unsafe.TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & System_Unsafe.InsertableObjectFromSchemaRecordUnsafe<T>, false, T>;
335
- readonly optional: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
336
- static readonly optional: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Optional, T, TCustomMetadata>;
337
- readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Optional, T, TCustomMetadata>;
338
- static readonly optionalRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Optional, T, TCustomMetadata>;
339
- readonly required: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Required, T, TCustomMetadata>;
340
- static readonly required: <const T extends ImplicitAllowedTypes, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchema<FieldKind.Required, T, TCustomMetadata>;
341
- readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Required, T, TCustomMetadata>;
342
- static readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldProps<TCustomMetadata>, "defaultProvider"> | undefined) => System_Unsafe.FieldSchemaUnsafe<FieldKind.Required, T, TCustomMetadata>;
343
325
  readonly scope: TScope;
344
- readonly string: LeafSchema<"string", string>;
345
- static readonly string: LeafSchema<"string", string>;
346
326
  }
347
327
 
328
+ // @public @system
329
+ export const SchemaFactory_base: SchemaStatics & (new () => SchemaStatics);
330
+
348
331
  // @public @sealed @system
349
332
  export interface SchemaStatics {
350
333
  readonly boolean: LeafSchema<"boolean", boolean>;
@@ -629,7 +612,7 @@ export type UnionToIntersection<T> = (T extends T ? (k: T) => unknown : never) e
629
612
  export type ValidateRecursiveSchema<T extends ValidateRecursiveSchemaTemplate<T>> = true;
630
613
 
631
614
  // @public @system
632
- export type ValidateRecursiveSchemaTemplate<T extends TreeNodeSchema> = TreeNodeSchema<string, NodeKind.Array | NodeKind.Map | NodeKind.Object | NodeKind.Record, TreeNode & WithType<T["identifier"], T["kind"]>, {
615
+ export type ValidateRecursiveSchemaTemplate<T extends TreeNodeSchemaClass> = TreeNodeSchemaClass<string, NodeKind.Array | NodeKind.Map | NodeKind.Object | NodeKind.Record, TreeNode & WithType<T["identifier"], T["kind"]>, {
633
616
  [NodeKind.Object]: T["info"] extends RestrictiveStringRecord<ImplicitFieldSchema> ? InsertableObjectFromSchemaRecord<T["info"]> : unknown;
634
617
  [NodeKind.Array]: T["info"] extends ImplicitAllowedTypes ? Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>> : unknown;
635
618
  [NodeKind.Map]: T["info"] extends ImplicitAllowedTypes ? Iterable<[string, InsertableTreeNodeFromImplicitAllowedTypes<T["info"]>]> : unknown;
package/dist/alpha.d.ts CHANGED
@@ -9,10 +9,11 @@
9
9
  */
10
10
 
11
11
  export {
12
- // Unrestricted APIs
12
+ // #region Unrestricted APIs
13
13
  InternalTypes,
14
-
15
- // @public APIs
14
+ // #endregion
15
+
16
+ // #region @public APIs
16
17
  AllowedTypes,
17
18
  CommitKind,
18
19
  CommitMetadata,
@@ -56,6 +57,7 @@ export {
56
57
  RunTransaction,
57
58
  SchemaCompatibilityStatus,
58
59
  SchemaFactory,
60
+ SchemaFactory_base,
59
61
  SchemaStatics,
60
62
  SimpleNodeSchemaBase,
61
63
  System_Unsafe,
@@ -87,8 +89,9 @@ export {
87
89
  WithType,
88
90
  rollback,
89
91
  typeSchemaSymbol,
92
+ // #endregion
90
93
 
91
- // @beta APIs
94
+ // #region @beta APIs
92
95
  ForestOptions,
93
96
  ForestType,
94
97
  NodeChangedData,
@@ -100,8 +103,9 @@ export {
100
103
  adaptEnum,
101
104
  enumFromStrings,
102
105
  singletonSchema,
106
+ // #endregion
103
107
 
104
- // @alpha APIs
108
+ // #region @alpha APIs
105
109
  AllowedTypeMetadata,
106
110
  AllowedTypesMetadata,
107
111
  AnnotatedAllowedType,
@@ -249,4 +253,5 @@ export {
249
253
  replaceHandles,
250
254
  replaceVerboseTreeHandles,
251
255
  typeboxValidator
256
+ // #endregion
252
257
  } from "./index.js";
package/dist/beta.d.ts CHANGED
@@ -9,10 +9,11 @@
9
9
  */
10
10
 
11
11
  export {
12
- // Unrestricted APIs
12
+ // #region Unrestricted APIs
13
13
  InternalTypes,
14
-
15
- // @public APIs
14
+ // #endregion
15
+
16
+ // #region @public APIs
16
17
  AllowedTypes,
17
18
  CommitKind,
18
19
  CommitMetadata,
@@ -56,6 +57,7 @@ export {
56
57
  RunTransaction,
57
58
  SchemaCompatibilityStatus,
58
59
  SchemaFactory,
60
+ SchemaFactory_base,
59
61
  SchemaStatics,
60
62
  SimpleNodeSchemaBase,
61
63
  System_Unsafe,
@@ -87,8 +89,9 @@ export {
87
89
  WithType,
88
90
  rollback,
89
91
  typeSchemaSymbol,
92
+ // #endregion
90
93
 
91
- // @beta APIs
94
+ // #region @beta APIs
92
95
  ForestOptions,
93
96
  ForestType,
94
97
  NodeChangedData,
@@ -100,4 +103,5 @@ export {
100
103
  adaptEnum,
101
104
  enumFromStrings,
102
105
  singletonSchema
106
+ // #endregion
103
107
  } from "./index.js";