Skip to content

Commit b8dc38f

Browse files
daesunpJosmithr
authored andcommitted
Expose staged, types, stagedRecursive and typesRecursive on `… (microsoft#25779)
## Description This PR promotes SchemaStaticsAlpha to SchemaStaticsBeta, and exposes `staged`, `types`, `stagedRecursive` and `typesRecursive` to be used in beta apps. --------- Co-authored-by: Joshua Smithrud <54606601+Josmithr@users.noreply.github.com>
1 parent e932f9e commit b8dc38f

File tree

20 files changed

+410
-235
lines changed

20 files changed

+410
-235
lines changed

.changeset/metal-games-love.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"@fluidframework/tree": minor
3+
"__section": feature
4+
---
5+
Expose staged, types, stagedRecursive and typesRecursive on SchemaFactoryBeta
6+
7+
These APIs were previously only available on `SchemaFactoryAlpha`, but are now available on `SchemaFactoryBeta`.

docs/docs/data-structures/tree/schema-evolution/allowed-types-rollout.mdx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ synchronizeTrees();
3232

3333
### Step 1: Define and Stage the New Allowed Type
3434

35-
To add support for reading strings, we import the alpha APIs and use [`staged`](../../../api/fluid-framework/schemafactoryalpha-class#staged-property) to mark the new allowed type:
35+
To add support for reading strings, we import the alpha APIs and use [`staged`](../../../api/fluid-framework/schemafactorybeta-class.md) to mark the new allowed type:
3636

3737
```typescript
3838
// Schema B: number or string (string is staged)
@@ -63,7 +63,7 @@ assert.throws(() => {
6363
});
6464
```
6565

66-
For this schema change, the schema does not need to be [upgraded](./index.mdx#schema-upgrade-process) because [`staged`](../../../api/fluid-framework/schemafactoryalpha-class#staged-property) allowed types are removed from stored schemas.
66+
For this schema change, the schema does not need to be [upgraded](./index.mdx#schema-upgrade-process) because [`staged`](../../../api/fluid-framework/schemafactorybeta-class.md) allowed types are removed from stored schemas.
6767
Upgrading the schema would result in a noop.
6868

6969
### Step 3: Wait for Client Saturation
@@ -75,7 +75,7 @@ See the [staged rollouts](./index.mdx#staged-rollouts) section for more details
7575

7676
### Step 4: Upgrade to Allow Inserting the New Allowed Type
7777

78-
Once client saturation has been reached, remove the [`staged()`](../../../api/fluid-framework/schemafactoryalpha-class#staged-property) wrapper from the new allowed type and call `upgradeSchema` to make a change to the stored schema:
78+
Once client saturation has been reached, remove the [`staged()`](../../../api/fluid-framework/schemafactorybeta-class.md) wrapper from the new allowed type and call `upgradeSchema` to make a change to the stored schema:
7979

8080
```typescript
8181
// Schema C: number or string, both fully allowed
@@ -101,6 +101,6 @@ Any client code changes to add functionality for inserting the new allowed type
101101

102102
## See Also
103103

104-
- [`SchemaStaticsAlpha.staged()` API](../../../api/fluid-framework/schemafactoryalpha-class#staged-property) - API documentation
104+
- [`SchemaStaticsBeta.staged()` API](../../../api/fluid-framework/schemafactorybeta-class.md) - API documentation
105105
- [Schema Definition](../schema-definition.mdx) - How to define schemas
106106
- [Node Types](../node-types.mdx) - Understanding different node types

packages/dds/tree/api-report/tree.alpha.api.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export type AllowedTypesFullEvaluated = AllowedTypesFull<readonly AnnotatedAllow
3333
// @beta @sealed @system
3434
export type AllowedTypesFullFromMixed<T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[]> = UnannotateAllowedTypesList<T> & AnnotatedAllowedTypes<AnnotateAllowedTypesList<T>>;
3535

36-
// @alpha @sealed @system
36+
// @beta @sealed @system
3737
export type AllowedTypesFullFromMixedUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = UnannotateAllowedTypesListUnsafe<T> & AnnotatedAllowedTypes<AnnotateAllowedTypesListUnsafe<T>>;
3838

3939
// @alpha @sealed @system
@@ -52,7 +52,7 @@ export type AnnotateAllowedTypesList<T extends readonly (AnnotatedAllowedType |
5252
[I in keyof T]: T[I] extends AnnotatedAllowedType<unknown> ? T[I] : AnnotatedAllowedType<T[I]>;
5353
};
5454

55-
// @alpha @sealed @system
55+
// @beta @sealed @system
5656
export type AnnotateAllowedTypesListUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = {
5757
[I in keyof T]: T[I] extends AnnotatedAllowedTypeUnsafe ? T[I] : AnnotatedAllowedTypeUnsafe<T[I]>;
5858
};
@@ -72,11 +72,11 @@ export interface AnnotatedAllowedTypes<T = readonly AnnotatedAllowedType[]> exte
7272
readonly types: T;
7373
}
7474

75-
// @alpha @sealed @system
75+
// @beta @sealed @system
7676
export interface AnnotatedAllowedTypesUnsafe extends AnnotatedAllowedTypes<LazyItem<System_Unsafe.TreeNodeSchemaUnsafe>> {
7777
}
7878

79-
// @alpha @sealed @system
79+
// @beta @sealed @system
8080
export interface AnnotatedAllowedTypeUnsafe<T = Unenforced<LazyItem<TreeNodeSchema>>> extends AnnotatedAllowedType<T> {
8181
}
8282

@@ -937,14 +937,6 @@ export class SchemaFactoryAlpha<out TScope extends string | undefined = string |
937937
static readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlphaUnsafe<FieldKind.Required, T, TCustomMetadata>;
938938
readonly requiredRecursive: <const T extends System_Unsafe.ImplicitAllowedTypesUnsafe, const TCustomMetadata = unknown>(t: T, props?: Omit<FieldPropsAlpha<TCustomMetadata>, "defaultProvider"> | undefined) => FieldSchemaAlphaUnsafe<FieldKind.Required, T, TCustomMetadata>;
939939
scopedFactoryAlpha<const T extends TName, TNameInner extends number | string = string>(name: T): SchemaFactoryAlpha<ScopedSchemaName<TScope, T>, TNameInner>;
940-
static staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
941-
staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
942-
static stagedRecursive: <const T extends unknown>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
943-
stagedRecursive: <const T extends unknown>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
944-
static types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
945-
types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
946-
static typesRecursive: <const T extends readonly unknown[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixedUnsafe<T>;
947-
typesRecursive: <const T extends readonly unknown[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixedUnsafe<T>;
948940
}
949941

950942
// @beta
@@ -958,6 +950,14 @@ export class SchemaFactoryBeta<out TScope extends string | undefined = string |
958950
readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>;
959951
}, false, T, undefined, TCustomMetadata>;
960952
scopedFactory<const T extends TName, TNameInner extends number | string = string>(name: T): SchemaFactoryBeta<ScopedSchemaName<TScope, T>, TNameInner>;
953+
static staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
954+
staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
955+
static stagedRecursive: <const T extends unknown>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
956+
stagedRecursive: <const T extends unknown>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
957+
static types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
958+
types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
959+
static typesRecursive: <const T extends readonly unknown[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixedUnsafe<T>;
960+
typesRecursive: <const T extends readonly unknown[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixedUnsafe<T>;
961961
}
962962

963963
// @public @sealed @system
@@ -980,8 +980,8 @@ export interface SchemaStatics {
980980
readonly string: LeafSchema<"string", string>;
981981
}
982982

983-
// @alpha @sealed @system
984-
export interface SchemaStaticsAlpha {
983+
// @beta @sealed @system
984+
export interface SchemaStaticsBeta {
985985
readonly staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
986986
stagedRecursive: <const T extends Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
987987
readonly types: <const T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[]>(t: T, metadata?: AllowedTypesMetadata) => AllowedTypesFullFromMixed<T>;
@@ -1685,14 +1685,14 @@ export type UnannotateAllowedTypesList<T extends readonly (AnnotatedAllowedType
16851685
[I in keyof T]: T[I] extends AnnotatedAllowedType<infer X> ? X : T[I];
16861686
};
16871687

1688-
// @alpha @sealed @system
1688+
// @beta @sealed @system
16891689
export type UnannotateAllowedTypesListUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = {
16901690
readonly [I in keyof T]: T[I] extends {
16911691
type: infer X;
16921692
} ? X : T[I];
16931693
};
16941694

1695-
// @alpha @sealed @system
1695+
// @beta @sealed @system
16961696
export type UnannotateAllowedTypeUnsafe<T extends Unenforced<AnnotatedAllowedTypeUnsafe | LazyItem<System_Unsafe.TreeNodeSchemaUnsafe>>> = T extends AnnotatedAllowedTypeUnsafe<infer X> ? X : T;
16971697

16981698
// @public

packages/dds/tree/api-report/tree.beta.api.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ export type AllowedTypesFullEvaluated = AllowedTypesFull<readonly AnnotatedAllow
3333
// @beta @sealed @system
3434
export type AllowedTypesFullFromMixed<T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[]> = UnannotateAllowedTypesList<T> & AnnotatedAllowedTypes<AnnotateAllowedTypesList<T>>;
3535

36+
// @beta @sealed @system
37+
export type AllowedTypesFullFromMixedUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = UnannotateAllowedTypesListUnsafe<T> & AnnotatedAllowedTypes<AnnotateAllowedTypesListUnsafe<T>>;
38+
3639
// @beta @input
3740
export interface AllowedTypesMetadata {
3841
readonly custom?: unknown;
@@ -43,6 +46,11 @@ export type AnnotateAllowedTypesList<T extends readonly (AnnotatedAllowedType |
4346
[I in keyof T]: T[I] extends AnnotatedAllowedType<unknown> ? T[I] : AnnotatedAllowedType<T[I]>;
4447
};
4548

49+
// @beta @sealed @system
50+
export type AnnotateAllowedTypesListUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = {
51+
[I in keyof T]: T[I] extends AnnotatedAllowedTypeUnsafe ? T[I] : AnnotatedAllowedTypeUnsafe<T[I]>;
52+
};
53+
4654
// @beta @sealed
4755
export interface AnnotatedAllowedType<T = LazyItem<TreeNodeSchema>> {
4856
readonly metadata: AllowedTypeMetadata;
@@ -58,6 +66,14 @@ export interface AnnotatedAllowedTypes<T = readonly AnnotatedAllowedType[]> exte
5866
readonly types: T;
5967
}
6068

69+
// @beta @sealed @system
70+
export interface AnnotatedAllowedTypesUnsafe extends AnnotatedAllowedTypes<LazyItem<System_Unsafe.TreeNodeSchemaUnsafe>> {
71+
}
72+
73+
// @beta @sealed @system
74+
export interface AnnotatedAllowedTypeUnsafe<T = Unenforced<LazyItem<TreeNodeSchema>>> extends AnnotatedAllowedType<T> {
75+
}
76+
6177
// @public @system
6278
type ApplyKind<T, Kind extends FieldKind> = {
6379
[FieldKind.Required]: T;
@@ -498,6 +514,14 @@ export class SchemaFactoryBeta<out TScope extends string | undefined = string |
498514
readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>;
499515
}, false, T, undefined, TCustomMetadata>;
500516
scopedFactory<const T extends TName, TNameInner extends number | string = string>(name: T): SchemaFactoryBeta<ScopedSchemaName<TScope, T>, TNameInner>;
517+
static staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
518+
staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
519+
static stagedRecursive: <const T extends unknown>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
520+
stagedRecursive: <const T extends unknown>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
521+
static types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
522+
types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
523+
static typesRecursive: <const T extends readonly unknown[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixedUnsafe<T>;
524+
typesRecursive: <const T extends readonly unknown[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixedUnsafe<T>;
501525
}
502526

503527
// @public @sealed @system
@@ -520,6 +544,14 @@ export interface SchemaStatics {
520544
readonly string: LeafSchema<"string", string>;
521545
}
522546

547+
// @beta @sealed @system
548+
export interface SchemaStaticsBeta {
549+
readonly staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
550+
stagedRecursive: <const T extends Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
551+
readonly types: <const T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[]>(t: T, metadata?: AllowedTypesMetadata) => AllowedTypesFullFromMixed<T>;
552+
readonly typesRecursive: <const T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]>(t: T, metadata?: AllowedTypesMetadata) => AllowedTypesFullFromMixedUnsafe<T>;
553+
}
554+
523555
// @beta @sealed
524556
export class SchemaUpgrade {
525557
// (undocumented)
@@ -844,6 +876,16 @@ export type UnannotateAllowedTypesList<T extends readonly (AnnotatedAllowedType
844876
[I in keyof T]: T[I] extends AnnotatedAllowedType<infer X> ? X : T[I];
845877
};
846878

879+
// @beta @sealed @system
880+
export type UnannotateAllowedTypesListUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = {
881+
readonly [I in keyof T]: T[I] extends {
882+
type: infer X;
883+
} ? X : T[I];
884+
};
885+
886+
// @beta @sealed @system
887+
export type UnannotateAllowedTypeUnsafe<T extends Unenforced<AnnotatedAllowedTypeUnsafe | LazyItem<System_Unsafe.TreeNodeSchemaUnsafe>>> = T extends AnnotatedAllowedTypeUnsafe<infer X> ? X : T;
888+
847889
// @public
848890
export type Unenforced<_DesiredExtendsConstraint> = unknown;
849891

packages/dds/tree/api-report/tree.legacy.beta.api.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ export type AllowedTypesFullEvaluated = AllowedTypesFull<readonly AnnotatedAllow
3333
// @beta @sealed @system
3434
export type AllowedTypesFullFromMixed<T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[]> = UnannotateAllowedTypesList<T> & AnnotatedAllowedTypes<AnnotateAllowedTypesList<T>>;
3535

36+
// @beta @sealed @system
37+
export type AllowedTypesFullFromMixedUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = UnannotateAllowedTypesListUnsafe<T> & AnnotatedAllowedTypes<AnnotateAllowedTypesListUnsafe<T>>;
38+
3639
// @beta @input
3740
export interface AllowedTypesMetadata {
3841
readonly custom?: unknown;
@@ -43,6 +46,11 @@ export type AnnotateAllowedTypesList<T extends readonly (AnnotatedAllowedType |
4346
[I in keyof T]: T[I] extends AnnotatedAllowedType<unknown> ? T[I] : AnnotatedAllowedType<T[I]>;
4447
};
4548

49+
// @beta @sealed @system
50+
export type AnnotateAllowedTypesListUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = {
51+
[I in keyof T]: T[I] extends AnnotatedAllowedTypeUnsafe ? T[I] : AnnotatedAllowedTypeUnsafe<T[I]>;
52+
};
53+
4654
// @beta @sealed
4755
export interface AnnotatedAllowedType<T = LazyItem<TreeNodeSchema>> {
4856
readonly metadata: AllowedTypeMetadata;
@@ -58,6 +66,14 @@ export interface AnnotatedAllowedTypes<T = readonly AnnotatedAllowedType[]> exte
5866
readonly types: T;
5967
}
6068

69+
// @beta @sealed @system
70+
export interface AnnotatedAllowedTypesUnsafe extends AnnotatedAllowedTypes<LazyItem<System_Unsafe.TreeNodeSchemaUnsafe>> {
71+
}
72+
73+
// @beta @sealed @system
74+
export interface AnnotatedAllowedTypeUnsafe<T = Unenforced<LazyItem<TreeNodeSchema>>> extends AnnotatedAllowedType<T> {
75+
}
76+
6177
// @public @system
6278
type ApplyKind<T, Kind extends FieldKind> = {
6379
[FieldKind.Required]: T;
@@ -501,6 +517,14 @@ export class SchemaFactoryBeta<out TScope extends string | undefined = string |
501517
readonly [x: string]: System_Unsafe.InsertableTreeNodeFromImplicitAllowedTypesUnsafe<T>;
502518
}, false, T, undefined, TCustomMetadata>;
503519
scopedFactory<const T extends TName, TNameInner extends number | string = string>(name: T): SchemaFactoryBeta<ScopedSchemaName<TScope, T>, TNameInner>;
520+
static staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
521+
staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
522+
static stagedRecursive: <const T extends unknown>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
523+
stagedRecursive: <const T extends unknown>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
524+
static types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
525+
types: <const T extends readonly (LazyItem<TreeNodeSchema> | AnnotatedAllowedType<LazyItem<TreeNodeSchema>>)[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixed<T>;
526+
static typesRecursive: <const T extends readonly unknown[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixedUnsafe<T>;
527+
typesRecursive: <const T extends readonly unknown[]>(t: T, metadata?: AllowedTypesMetadata | undefined) => AllowedTypesFullFromMixedUnsafe<T>;
504528
}
505529

506530
// @public @sealed @system
@@ -523,6 +547,14 @@ export interface SchemaStatics {
523547
readonly string: LeafSchema<"string", string>;
524548
}
525549

550+
// @beta @sealed @system
551+
export interface SchemaStaticsBeta {
552+
readonly staged: <const T extends LazyItem<TreeNodeSchema>>(t: T | AnnotatedAllowedType<T>) => AnnotatedAllowedType<T>;
553+
stagedRecursive: <const T extends Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>>(t: T) => AnnotatedAllowedTypeUnsafe<UnannotateAllowedTypeUnsafe<T>>;
554+
readonly types: <const T extends readonly (AnnotatedAllowedType | LazyItem<TreeNodeSchema>)[]>(t: T, metadata?: AllowedTypesMetadata) => AllowedTypesFullFromMixed<T>;
555+
readonly typesRecursive: <const T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]>(t: T, metadata?: AllowedTypesMetadata) => AllowedTypesFullFromMixedUnsafe<T>;
556+
}
557+
526558
// @beta @sealed
527559
export class SchemaUpgrade {
528560
// (undocumented)
@@ -856,6 +888,16 @@ export type UnannotateAllowedTypesList<T extends readonly (AnnotatedAllowedType
856888
[I in keyof T]: T[I] extends AnnotatedAllowedType<infer X> ? X : T[I];
857889
};
858890

891+
// @beta @sealed @system
892+
export type UnannotateAllowedTypesListUnsafe<T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[]> = {
893+
readonly [I in keyof T]: T[I] extends {
894+
type: infer X;
895+
} ? X : T[I];
896+
};
897+
898+
// @beta @sealed @system
899+
export type UnannotateAllowedTypeUnsafe<T extends Unenforced<AnnotatedAllowedTypeUnsafe | LazyItem<System_Unsafe.TreeNodeSchemaUnsafe>>> = T extends AnnotatedAllowedTypeUnsafe<infer X> ? X : T;
900+
859901
// @public
860902
export type Unenforced<_DesiredExtendsConstraint> = unknown;
861903

packages/dds/tree/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ export {
9595
type TreeViewEvents,
9696
SchemaFactory,
9797
SchemaFactoryBeta,
98+
type SchemaStaticsBeta,
9899
SchemaFactoryAlpha,
99100
type ObjectSchemaOptionsAlpha,
100101
type ObjectSchemaOptions,
@@ -181,7 +182,6 @@ export {
181182
type AllowedTypeMetadata,
182183
type AllowedTypesMetadata,
183184
type UnannotateAllowedTypesList,
184-
type SchemaStaticsAlpha,
185185
type AnnotateAllowedTypesList,
186186
type AllowedTypesFull,
187187
type AllowedTypesFullFromMixed,

packages/dds/tree/src/shared-tree/treeAlpha.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ export interface TreeAlpha {
290290
* @remarks
291291
* This currently does not support input containing
292292
* {@link ObjectSchemaOptions.allowUnknownOptionalFields| unknown optional fields} but does support
293-
* {@link SchemaStaticsAlpha.staged | staged} allowed types.
293+
* {@link SchemaStaticsBeta.staged | staged} allowed types.
294294
* Non-empty default values for fields are currently not supported (must be provided in the input).
295295
* The content will be validated against the schema and an error will be thrown if out of schema.
296296
*/

0 commit comments

Comments
 (0)