@fluidframework/tree 2.33.2 → 2.40.0-336023
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/.vscode/settings.json +2 -0
- package/api-report/tree.alpha.api.md +120 -50
- package/api-report/tree.beta.api.md +31 -27
- package/api-report/tree.legacy.alpha.api.md +24 -23
- package/api-report/tree.legacy.public.api.md +24 -23
- package/api-report/tree.public.api.md +24 -23
- package/dist/alpha.d.ts +16 -1
- package/dist/beta.d.ts +2 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internalTypes.d.ts +0 -1
- package/dist/internalTypes.d.ts.map +1 -1
- package/dist/internalTypes.js.map +1 -1
- package/dist/jsonDomainSchema.d.ts +2 -2
- package/dist/jsonDomainSchema.js +2 -2
- package/dist/jsonDomainSchema.js.map +1 -1
- package/dist/legacy.d.ts +2 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +2 -0
- package/dist/serializableDomainSchema.d.ts +3 -3
- package/dist/serializableDomainSchema.js +2 -2
- package/dist/serializableDomainSchema.js.map +1 -1
- package/dist/shared-tree/independentView.d.ts +1 -1
- package/dist/shared-tree/independentView.js.map +1 -1
- package/dist/shared-tree/index.d.ts +3 -2
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +4 -4
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizeTree.d.ts +4 -4
- package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
- package/dist/shared-tree/schematizeTree.js +2 -3
- package/dist/shared-tree/schematizeTree.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +3 -3
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +4 -4
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/{treeApi.d.ts → tree.d.ts} +34 -34
- package/dist/shared-tree/tree.d.ts.map +1 -0
- package/dist/shared-tree/{treeApi.js → tree.js} +6 -6
- package/dist/shared-tree/tree.js.map +1 -0
- package/dist/shared-tree/{treeApiAlpha.d.ts → treeAlpha.d.ts} +22 -14
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -0
- package/dist/shared-tree/{treeApiAlpha.js → treeAlpha.js} +4 -3
- package/dist/shared-tree/treeAlpha.js.map +1 -0
- package/dist/simple-tree/api/conciseTree.d.ts +1 -1
- package/dist/simple-tree/api/conciseTree.js.map +1 -1
- package/dist/simple-tree/api/configuration.d.ts +177 -0
- package/dist/simple-tree/api/configuration.d.ts.map +1 -0
- package/dist/simple-tree/api/configuration.js +163 -0
- package/dist/simple-tree/api/configuration.js.map +1 -0
- package/dist/simple-tree/api/getJsonSchema.js +2 -2
- package/dist/simple-tree/api/getJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +7 -4
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +8 -7
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/{view.d.ts → schemaCompatibilityTester.d.ts} +8 -10
- package/dist/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -0
- package/dist/simple-tree/api/{view.js → schemaCompatibilityTester.js} +9 -9
- package/dist/simple-tree/api/schemaCompatibilityTester.js.map +1 -0
- package/dist/simple-tree/api/schemaFactory.d.ts +16 -10
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +20 -12
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +12 -6
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.js +2 -2
- package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +67 -4
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/dist/simple-tree/api/schemaFromSimple.d.ts +1 -1
- package/dist/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFromSimple.js +1 -1
- package/dist/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/dist/simple-tree/api/storedSchema.d.ts +3 -3
- package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/storedSchema.js +3 -2
- package/dist/simple-tree/api/storedSchema.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +5 -174
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js +1 -156
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/{lib/simple-tree/api/treeApiBeta.d.ts → dist/simple-tree/api/treeBeta.d.ts} +13 -5
- package/dist/simple-tree/api/treeBeta.d.ts.map +1 -0
- package/dist/simple-tree/api/{treeApiBeta.js → treeBeta.js} +5 -4
- package/dist/simple-tree/api/treeBeta.js.map +1 -0
- package/dist/simple-tree/api/typesUnsafe.d.ts +4 -9
- package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
- package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
- package/dist/simple-tree/arrayNode.d.ts +2 -2
- package/dist/simple-tree/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/arrayNode.js +3 -2
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/arrayNodeTypes.d.ts +3 -3
- package/dist/simple-tree/arrayNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/arrayNodeTypes.js.map +1 -1
- package/dist/simple-tree/index.d.ts +3 -3
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +2 -2
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/mapNode.d.ts +2 -2
- package/dist/simple-tree/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/mapNode.js +1 -1
- package/dist/simple-tree/mapNode.js.map +1 -1
- package/dist/simple-tree/mapNodeTypes.d.ts +3 -3
- package/dist/simple-tree/mapNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/mapNodeTypes.js.map +1 -1
- package/dist/simple-tree/objectNode.d.ts +18 -5
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js +4 -3
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/objectNodeTypes.d.ts +4 -4
- package/dist/simple-tree/objectNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/objectNodeTypes.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +163 -13
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js +107 -8
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/treeNodeValid.js +2 -2
- package/dist/simple-tree/treeNodeValid.js.map +1 -1
- package/dist/tableSchema.d.ts +197 -86
- package/dist/tableSchema.d.ts.map +1 -1
- package/dist/tableSchema.js +100 -45
- package/dist/tableSchema.js.map +1 -1
- package/dist/util/typeUtils.d.ts +1 -1
- package/dist/util/typeUtils.js.map +1 -1
- package/lib/alpha.d.ts +16 -1
- package/lib/beta.d.ts +2 -0
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/internalTypes.d.ts +0 -1
- package/lib/internalTypes.d.ts.map +1 -1
- package/lib/internalTypes.js.map +1 -1
- package/lib/jsonDomainSchema.d.ts +2 -2
- package/lib/jsonDomainSchema.js +2 -2
- package/lib/jsonDomainSchema.js.map +1 -1
- package/lib/legacy.d.ts +2 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +2 -0
- package/lib/serializableDomainSchema.d.ts +3 -3
- package/lib/serializableDomainSchema.js +2 -2
- package/lib/serializableDomainSchema.js.map +1 -1
- package/lib/shared-tree/independentView.d.ts +1 -1
- package/lib/shared-tree/independentView.js.map +1 -1
- package/lib/shared-tree/index.d.ts +3 -2
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js +2 -2
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizeTree.d.ts +4 -4
- package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
- package/lib/shared-tree/schematizeTree.js +2 -3
- package/lib/shared-tree/schematizeTree.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +3 -3
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +5 -5
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/{treeApi.d.ts → tree.d.ts} +34 -34
- package/lib/shared-tree/tree.d.ts.map +1 -0
- package/lib/shared-tree/{treeApi.js → tree.js} +5 -5
- package/lib/shared-tree/tree.js.map +1 -0
- package/lib/shared-tree/{treeApiAlpha.d.ts → treeAlpha.d.ts} +22 -14
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -0
- package/lib/shared-tree/{treeApiAlpha.js → treeAlpha.js} +4 -3
- package/lib/shared-tree/treeAlpha.js.map +1 -0
- package/lib/simple-tree/api/conciseTree.d.ts +1 -1
- package/lib/simple-tree/api/conciseTree.js.map +1 -1
- package/lib/simple-tree/api/configuration.d.ts +177 -0
- package/lib/simple-tree/api/configuration.d.ts.map +1 -0
- package/lib/simple-tree/api/configuration.js +157 -0
- package/lib/simple-tree/api/configuration.js.map +1 -0
- package/lib/simple-tree/api/getJsonSchema.js +1 -1
- package/lib/simple-tree/api/getJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +7 -4
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +4 -3
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/{view.d.ts → schemaCompatibilityTester.d.ts} +8 -10
- package/lib/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -0
- package/lib/simple-tree/api/{view.js → schemaCompatibilityTester.js} +7 -7
- package/lib/simple-tree/api/schemaCompatibilityTester.js.map +1 -0
- package/lib/simple-tree/api/schemaFactory.d.ts +16 -10
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +20 -12
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +12 -6
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.js +2 -2
- package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +67 -4
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/lib/simple-tree/api/schemaFromSimple.d.ts +1 -1
- package/lib/simple-tree/api/schemaFromSimple.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFromSimple.js +1 -1
- package/lib/simple-tree/api/schemaFromSimple.js.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/simpleSchemaToJsonSchema.js.map +1 -1
- package/lib/simple-tree/api/storedSchema.d.ts +3 -3
- package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/storedSchema.js +3 -2
- package/lib/simple-tree/api/storedSchema.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +5 -174
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js +0 -152
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/{dist/simple-tree/api/treeApiBeta.d.ts → lib/simple-tree/api/treeBeta.d.ts} +13 -5
- package/lib/simple-tree/api/treeBeta.d.ts.map +1 -0
- package/lib/simple-tree/api/{treeApiBeta.js → treeBeta.js} +5 -4
- package/lib/simple-tree/api/treeBeta.js.map +1 -0
- package/lib/simple-tree/api/typesUnsafe.d.ts +4 -9
- package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
- package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
- package/lib/simple-tree/arrayNode.d.ts +2 -2
- package/lib/simple-tree/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/arrayNode.js +4 -3
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/arrayNodeTypes.d.ts +3 -3
- package/lib/simple-tree/arrayNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/arrayNodeTypes.js.map +1 -1
- package/lib/simple-tree/index.d.ts +3 -3
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +1 -1
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/mapNode.d.ts +2 -2
- package/lib/simple-tree/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/mapNode.js +2 -2
- package/lib/simple-tree/mapNode.js.map +1 -1
- package/lib/simple-tree/mapNodeTypes.d.ts +3 -3
- package/lib/simple-tree/mapNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/mapNodeTypes.js.map +1 -1
- package/lib/simple-tree/objectNode.d.ts +18 -5
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js +5 -4
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/objectNodeTypes.d.ts +4 -4
- package/lib/simple-tree/objectNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/objectNodeTypes.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +163 -13
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js +96 -8
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/treeNodeValid.js +2 -2
- package/lib/simple-tree/treeNodeValid.js.map +1 -1
- package/lib/tableSchema.d.ts +197 -86
- package/lib/tableSchema.d.ts.map +1 -1
- package/lib/tableSchema.js +100 -45
- package/lib/tableSchema.js.map +1 -1
- package/lib/util/typeUtils.d.ts +1 -1
- package/lib/util/typeUtils.js.map +1 -1
- package/package.json +20 -20
- package/src/index.ts +17 -1
- package/src/internalTypes.ts +0 -2
- package/src/jsonDomainSchema.ts +2 -2
- package/src/packageVersion.ts +1 -1
- package/src/serializableDomainSchema.ts +3 -3
- package/src/shared-tree/independentView.ts +1 -1
- package/src/shared-tree/index.ts +3 -6
- package/src/shared-tree/schematizeTree.ts +5 -5
- package/src/shared-tree/schematizingTreeView.ts +11 -8
- package/src/shared-tree/{treeApi.ts → tree.ts} +51 -51
- package/src/shared-tree/{treeApiAlpha.ts → treeAlpha.ts} +22 -13
- package/src/simple-tree/api/conciseTree.ts +1 -1
- package/src/simple-tree/api/configuration.ts +353 -0
- package/src/simple-tree/api/getJsonSchema.ts +1 -1
- package/src/simple-tree/api/index.ts +21 -15
- package/src/simple-tree/api/{view.ts → schemaCompatibilityTester.ts} +8 -15
- package/src/simple-tree/api/schemaFactory.ts +130 -19
- package/src/simple-tree/api/schemaFactoryAlpha.ts +7 -5
- package/src/simple-tree/api/schemaFactoryRecursive.ts +102 -38
- package/src/simple-tree/api/schemaFromSimple.ts +2 -2
- package/src/simple-tree/api/simpleSchemaToJsonSchema.ts +1 -1
- package/src/simple-tree/api/storedSchema.ts +8 -4
- package/src/simple-tree/api/tree.ts +13 -354
- package/src/simple-tree/api/{treeApiBeta.ts → treeBeta.ts} +17 -5
- package/src/simple-tree/api/typesUnsafe.ts +15 -11
- package/src/simple-tree/arrayNode.ts +10 -5
- package/src/simple-tree/arrayNodeTypes.ts +8 -7
- package/src/simple-tree/index.ts +17 -1
- package/src/simple-tree/mapNode.ts +11 -3
- package/src/simple-tree/mapNodeTypes.ts +10 -7
- package/src/simple-tree/objectNode.ts +39 -15
- package/src/simple-tree/objectNodeTypes.ts +9 -5
- package/src/simple-tree/schemaTypes.ts +353 -25
- package/src/simple-tree/treeNodeValid.ts +2 -2
- package/src/tableSchema.ts +749 -445
- package/src/util/typeUtils.ts +1 -1
- package/dist/shared-tree/treeApi.d.ts.map +0 -1
- package/dist/shared-tree/treeApi.js.map +0 -1
- package/dist/shared-tree/treeApiAlpha.d.ts.map +0 -1
- package/dist/shared-tree/treeApiAlpha.js.map +0 -1
- package/dist/simple-tree/api/treeApiBeta.d.ts.map +0 -1
- package/dist/simple-tree/api/treeApiBeta.js.map +0 -1
- package/dist/simple-tree/api/view.d.ts.map +0 -1
- package/dist/simple-tree/api/view.js.map +0 -1
- package/lib/shared-tree/treeApi.d.ts.map +0 -1
- package/lib/shared-tree/treeApi.js.map +0 -1
- package/lib/shared-tree/treeApiAlpha.d.ts.map +0 -1
- package/lib/shared-tree/treeApiAlpha.js.map +0 -1
- package/lib/simple-tree/api/treeApiBeta.d.ts.map +0 -1
- package/lib/simple-tree/api/treeApiBeta.js.map +0 -1
- package/lib/simple-tree/api/view.d.ts.map +0 -1
- package/lib/simple-tree/api/view.js.map +0 -1
|
@@ -15,10 +15,13 @@ import {
|
|
|
15
15
|
createFieldSchema,
|
|
16
16
|
FieldKind,
|
|
17
17
|
normalizeAllowedTypes,
|
|
18
|
+
unannotateImplicitAllowedTypes,
|
|
18
19
|
type ImplicitAllowedTypes,
|
|
20
|
+
type ImplicitAnnotatedAllowedTypes,
|
|
19
21
|
type InsertableTreeNodeFromImplicitAllowedTypes,
|
|
20
22
|
type NodeSchemaMetadata,
|
|
21
23
|
type TreeNodeFromImplicitAllowedTypes,
|
|
24
|
+
type UnannotateImplicitAllowedTypes,
|
|
22
25
|
} from "./schemaTypes.js";
|
|
23
26
|
import {
|
|
24
27
|
getKernel,
|
|
@@ -233,7 +236,7 @@ abstract class CustomMapNodeBase<const T extends ImplicitAllowedTypes> extends T
|
|
|
233
236
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
234
237
|
export function mapSchema<
|
|
235
238
|
TName extends string,
|
|
236
|
-
const T extends
|
|
239
|
+
const T extends ImplicitAnnotatedAllowedTypes,
|
|
237
240
|
const ImplicitlyConstructable extends boolean,
|
|
238
241
|
const TCustomMetadata = unknown,
|
|
239
242
|
>(
|
|
@@ -243,14 +246,19 @@ export function mapSchema<
|
|
|
243
246
|
useMapPrototype: boolean,
|
|
244
247
|
metadata?: NodeSchemaMetadata<TCustomMetadata>,
|
|
245
248
|
) {
|
|
246
|
-
const lazyChildTypes = new Lazy(() =>
|
|
249
|
+
const lazyChildTypes = new Lazy(() =>
|
|
250
|
+
normalizeAllowedTypes(unannotateImplicitAllowedTypes(info)),
|
|
251
|
+
);
|
|
247
252
|
const lazyAllowedTypesIdentifiers = new Lazy(
|
|
248
253
|
() => new Set([...lazyChildTypes.value].map((type) => type.identifier)),
|
|
249
254
|
);
|
|
250
255
|
|
|
251
256
|
let unhydratedContext: Context;
|
|
252
257
|
|
|
253
|
-
class Schema
|
|
258
|
+
class Schema
|
|
259
|
+
extends CustomMapNodeBase<UnannotateImplicitAllowedTypes<T>>
|
|
260
|
+
implements TreeMapNode<UnannotateImplicitAllowedTypes<T>>
|
|
261
|
+
{
|
|
254
262
|
public static override prepareInstance<T2>(
|
|
255
263
|
this: typeof TreeNodeValid<T2>,
|
|
256
264
|
instance: TreeNodeValid<T2>,
|
|
@@ -4,7 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type { MapNodeInsertableData, TreeMapNode } from "./mapNode.js";
|
|
7
|
-
import type {
|
|
7
|
+
import type {
|
|
8
|
+
ImplicitAnnotatedAllowedTypes,
|
|
9
|
+
UnannotateImplicitAllowedTypes,
|
|
10
|
+
} from "./schemaTypes.js";
|
|
8
11
|
import {
|
|
9
12
|
NodeKind,
|
|
10
13
|
type TreeNodeSchemaClass,
|
|
@@ -21,14 +24,14 @@ import type { SimpleMapNodeSchema } from "./simpleSchema.js";
|
|
|
21
24
|
*/
|
|
22
25
|
export interface MapNodeCustomizableSchema<
|
|
23
26
|
out TName extends string = string,
|
|
24
|
-
in out T extends
|
|
27
|
+
in out T extends ImplicitAnnotatedAllowedTypes = ImplicitAnnotatedAllowedTypes,
|
|
25
28
|
out ImplicitlyConstructable extends boolean = true,
|
|
26
29
|
out TCustomMetadata = unknown,
|
|
27
30
|
> extends TreeNodeSchemaClass<
|
|
28
31
|
TName,
|
|
29
32
|
NodeKind.Map,
|
|
30
|
-
TreeMapNode<T
|
|
31
|
-
MapNodeInsertableData<T
|
|
33
|
+
TreeMapNode<UnannotateImplicitAllowedTypes<T>> & WithType<TName, NodeKind.Map, T>,
|
|
34
|
+
MapNodeInsertableData<UnannotateImplicitAllowedTypes<T>>,
|
|
32
35
|
ImplicitlyConstructable,
|
|
33
36
|
T,
|
|
34
37
|
undefined,
|
|
@@ -42,14 +45,14 @@ export interface MapNodeCustomizableSchema<
|
|
|
42
45
|
*/
|
|
43
46
|
export interface MapNodePojoEmulationSchema<
|
|
44
47
|
out TName extends string = string,
|
|
45
|
-
in out T extends
|
|
48
|
+
in out T extends ImplicitAnnotatedAllowedTypes = ImplicitAnnotatedAllowedTypes,
|
|
46
49
|
out ImplicitlyConstructable extends boolean = true,
|
|
47
50
|
out TCustomMetadata = unknown,
|
|
48
51
|
> extends TreeNodeSchemaNonClass<
|
|
49
52
|
TName,
|
|
50
53
|
NodeKind.Map,
|
|
51
|
-
TreeMapNode<T
|
|
52
|
-
MapNodeInsertableData<T
|
|
54
|
+
TreeMapNode<UnannotateImplicitAllowedTypes<T>> & WithType<TName, NodeKind.Map, T>,
|
|
55
|
+
MapNodeInsertableData<UnannotateImplicitAllowedTypes<T>>,
|
|
53
56
|
ImplicitlyConstructable,
|
|
54
57
|
T,
|
|
55
58
|
undefined,
|
|
@@ -29,6 +29,9 @@ import {
|
|
|
29
29
|
type NodeSchemaMetadata,
|
|
30
30
|
type FieldSchemaAlpha,
|
|
31
31
|
ObjectFieldSchema,
|
|
32
|
+
type ImplicitAnnotatedFieldSchema,
|
|
33
|
+
unannotateSchemaRecord,
|
|
34
|
+
type UnannotateSchemaRecord,
|
|
32
35
|
} from "./schemaTypes.js";
|
|
33
36
|
import {
|
|
34
37
|
type TreeNodeSchema,
|
|
@@ -59,7 +62,7 @@ import type { SimpleObjectFieldSchema } from "./simpleSchema.js";
|
|
|
59
62
|
* @remarks
|
|
60
63
|
* Due to {@link https://github.com/microsoft/TypeScript/issues/43826}, we can't enable implicit construction of {@link TreeNode|TreeNodes} for setters.
|
|
61
64
|
* Therefore code assigning to these fields must explicitly construct nodes using the schema's constructor or create method,
|
|
62
|
-
* or using some other method like {@link TreeAlpha.create}.
|
|
65
|
+
* or using some other method like {@link (TreeAlpha:interface).create}.
|
|
63
66
|
* @system @public
|
|
64
67
|
*/
|
|
65
68
|
export type ObjectFromSchemaRecord<T extends RestrictiveStringRecord<ImplicitFieldSchema>> =
|
|
@@ -92,7 +95,9 @@ export type TreeObjectNode<
|
|
|
92
95
|
> = TreeNode & ObjectFromSchemaRecord<T> & WithType<TypeName, NodeKind.Object, T>;
|
|
93
96
|
|
|
94
97
|
/**
|
|
95
|
-
* Type utility for determining
|
|
98
|
+
* Type utility for determining if an implicit field schema is known to have a default value.
|
|
99
|
+
*
|
|
100
|
+
* @remarks Yields `false` when unknown.
|
|
96
101
|
*
|
|
97
102
|
* @privateRemarks
|
|
98
103
|
* TODO: Account for field schemas with default value providers.
|
|
@@ -100,9 +105,9 @@ export type TreeObjectNode<
|
|
|
100
105
|
*
|
|
101
106
|
* @system @public
|
|
102
107
|
*/
|
|
103
|
-
export type FieldHasDefault<T extends ImplicitFieldSchema> = T extends
|
|
104
|
-
FieldKind.Optional | FieldKind.Identifier
|
|
105
|
-
|
|
108
|
+
export type FieldHasDefault<T extends ImplicitFieldSchema> = [T] extends [
|
|
109
|
+
FieldSchema<FieldKind.Optional | FieldKind.Identifier>,
|
|
110
|
+
]
|
|
106
111
|
? true
|
|
107
112
|
: false;
|
|
108
113
|
|
|
@@ -154,6 +159,18 @@ export type InsertableObjectFromSchemaRecord<
|
|
|
154
159
|
}
|
|
155
160
|
>;
|
|
156
161
|
|
|
162
|
+
/**
|
|
163
|
+
* Helper used to remove annotations from a schema record and produce insertable objects,
|
|
164
|
+
*
|
|
165
|
+
* @privateremarks
|
|
166
|
+
* This calls {@link InsertableObjectFromSchemaRecord} in order to produce the insertable objects.
|
|
167
|
+
*
|
|
168
|
+
* @system @alpha
|
|
169
|
+
*/
|
|
170
|
+
export type InsertableObjectFromAnnotatedSchemaRecord<
|
|
171
|
+
T extends RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>,
|
|
172
|
+
> = InsertableObjectFromSchemaRecord<UnannotateSchemaRecord<T>>;
|
|
173
|
+
|
|
157
174
|
/**
|
|
158
175
|
* Maps from simple field keys ("property" keys) to information about the field.
|
|
159
176
|
*
|
|
@@ -354,7 +371,7 @@ abstract class CustomObjectNodeBase<
|
|
|
354
371
|
*/
|
|
355
372
|
export function objectSchema<
|
|
356
373
|
TName extends string,
|
|
357
|
-
const T extends RestrictiveStringRecord<
|
|
374
|
+
const T extends RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>,
|
|
358
375
|
const ImplicitlyConstructable extends boolean,
|
|
359
376
|
const TCustomMetadata = unknown,
|
|
360
377
|
>(
|
|
@@ -368,12 +385,14 @@ export function objectSchema<
|
|
|
368
385
|
// Field set can't be modified after this since derived data is stored in maps.
|
|
369
386
|
Object.freeze(info);
|
|
370
387
|
|
|
388
|
+
const unannotatedInfo = unannotateSchemaRecord(info);
|
|
389
|
+
|
|
371
390
|
// Ensure no collisions between final set of property keys, and final set of stored keys (including those
|
|
372
391
|
// implicitly derived from property keys)
|
|
373
|
-
assertUniqueKeys(identifier,
|
|
392
|
+
assertUniqueKeys(identifier, unannotatedInfo);
|
|
374
393
|
|
|
375
394
|
// Performance optimization: cache property key => stored key and schema.
|
|
376
|
-
const flexKeyMap: SimpleKeyMap = createFlexKeyMapping(
|
|
395
|
+
const flexKeyMap: SimpleKeyMap = createFlexKeyMapping(unannotatedInfo);
|
|
377
396
|
|
|
378
397
|
const identifierFieldKeys: FieldKey[] = [];
|
|
379
398
|
for (const item of flexKeyMap.values()) {
|
|
@@ -390,17 +409,22 @@ export function objectSchema<
|
|
|
390
409
|
let customizable: boolean;
|
|
391
410
|
let unhydratedContext: Context;
|
|
392
411
|
|
|
393
|
-
class CustomObjectNode extends CustomObjectNodeBase<T
|
|
412
|
+
class CustomObjectNode extends CustomObjectNodeBase<UnannotateSchemaRecord<T>> {
|
|
394
413
|
public static readonly fields: ReadonlyMap<
|
|
395
414
|
string,
|
|
396
415
|
FieldSchemaAlpha & SimpleObjectFieldSchema
|
|
397
416
|
> = new Map(
|
|
398
417
|
Array.from(flexKeyMap, ([key, value]) => [
|
|
399
418
|
key as string,
|
|
400
|
-
new ObjectFieldSchema(
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
419
|
+
new ObjectFieldSchema(
|
|
420
|
+
value.schema.kind,
|
|
421
|
+
value.schema.allowedTypes,
|
|
422
|
+
(value.schema as FieldSchemaAlpha).annotatedAllowedTypes,
|
|
423
|
+
{
|
|
424
|
+
...value.schema.props,
|
|
425
|
+
key: getStoredKey(key as string, value.schema),
|
|
426
|
+
},
|
|
427
|
+
),
|
|
404
428
|
]),
|
|
405
429
|
);
|
|
406
430
|
public static readonly flexKeyMap: SimpleKeyMap = flexKeyMap;
|
|
@@ -513,8 +537,8 @@ export function objectSchema<
|
|
|
513
537
|
}
|
|
514
538
|
type Output = typeof CustomObjectNode &
|
|
515
539
|
(new (
|
|
516
|
-
input:
|
|
517
|
-
) => TreeObjectNode<T
|
|
540
|
+
input: InsertableObjectFromAnnotatedSchemaRecord<T> | InternalTreeNode,
|
|
541
|
+
) => TreeObjectNode<UnannotateSchemaRecord<T>, TName>);
|
|
518
542
|
return CustomObjectNode as Output;
|
|
519
543
|
}
|
|
520
544
|
|
|
@@ -6,10 +6,14 @@
|
|
|
6
6
|
import type { RestrictiveStringRecord } from "../util/index.js";
|
|
7
7
|
import type {
|
|
8
8
|
TreeObjectNode,
|
|
9
|
-
InsertableObjectFromSchemaRecord,
|
|
10
9
|
SimpleKeyMap,
|
|
10
|
+
InsertableObjectFromAnnotatedSchemaRecord,
|
|
11
11
|
} from "./objectNode.js";
|
|
12
|
-
import type {
|
|
12
|
+
import type {
|
|
13
|
+
FieldSchemaAlpha,
|
|
14
|
+
ImplicitAnnotatedFieldSchema,
|
|
15
|
+
UnannotateSchemaRecord,
|
|
16
|
+
} from "./schemaTypes.js";
|
|
13
17
|
import { NodeKind, type TreeNodeSchemaClass, type TreeNodeSchema } from "./core/index.js";
|
|
14
18
|
import type { FieldKey } from "../core/index.js";
|
|
15
19
|
import type { SimpleObjectFieldSchema, SimpleObjectNodeSchema } from "./simpleSchema.js";
|
|
@@ -22,14 +26,14 @@ import type { SimpleObjectFieldSchema, SimpleObjectNodeSchema } from "./simpleSc
|
|
|
22
26
|
export interface ObjectNodeSchema<
|
|
23
27
|
out TName extends string = string,
|
|
24
28
|
in out T extends
|
|
25
|
-
RestrictiveStringRecord<
|
|
29
|
+
RestrictiveStringRecord<ImplicitAnnotatedFieldSchema> = RestrictiveStringRecord<ImplicitAnnotatedFieldSchema>,
|
|
26
30
|
ImplicitlyConstructable extends boolean = boolean,
|
|
27
31
|
out TCustomMetadata = unknown,
|
|
28
32
|
> extends TreeNodeSchemaClass<
|
|
29
33
|
TName,
|
|
30
34
|
NodeKind.Object,
|
|
31
|
-
TreeObjectNode<T
|
|
32
|
-
|
|
35
|
+
TreeObjectNode<UnannotateSchemaRecord<T>, TName>,
|
|
36
|
+
InsertableObjectFromAnnotatedSchemaRecord<T>,
|
|
33
37
|
ImplicitlyConstructable,
|
|
34
38
|
T,
|
|
35
39
|
never,
|