@fluid-experimental/property-changeset 2.0.0-rc.2.0.2 → 2.0.0-rc.3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ajvFactory.cjs +19 -0
- package/dist/ajvFactory.cjs.map +1 -0
- package/dist/ajvFactory.d.cts +7 -0
- package/dist/ajvFactory.d.cts.map +1 -0
- package/dist/changeset.d.ts +3 -6
- package/dist/changeset.d.ts.map +1 -1
- package/dist/changeset.js +75 -75
- package/dist/changeset.js.map +1 -1
- package/dist/changeset_operations/array.d.ts +6 -2
- package/dist/changeset_operations/array.d.ts.map +1 -1
- package/dist/changeset_operations/array.js +94 -96
- package/dist/changeset_operations/array.js.map +1 -1
- package/dist/changeset_operations/arrayChangesetIterator.d.ts +2 -5
- package/dist/changeset_operations/arrayChangesetIterator.d.ts.map +1 -1
- package/dist/changeset_operations/arrayChangesetIterator.js +11 -12
- package/dist/changeset_operations/arrayChangesetIterator.js.map +1 -1
- package/dist/changeset_operations/changesetConflictTypes.d.ts.map +1 -1
- package/dist/changeset_operations/changesetConflictTypes.js +2 -2
- package/dist/changeset_operations/changesetConflictTypes.js.map +1 -1
- package/dist/changeset_operations/indexedCollection.d.ts +1 -4
- package/dist/changeset_operations/indexedCollection.d.ts.map +1 -1
- package/dist/changeset_operations/indexedCollection.js +48 -49
- package/dist/changeset_operations/indexedCollection.js.map +1 -1
- package/dist/changeset_operations/isEmptyChangeset.d.ts +1 -4
- package/dist/changeset_operations/isEmptyChangeset.d.ts.map +1 -1
- package/dist/changeset_operations/isEmptyChangeset.js +9 -9
- package/dist/changeset_operations/isEmptyChangeset.js.map +1 -1
- package/dist/helpers/typeidHelper.d.ts +0 -3
- package/dist/helpers/typeidHelper.d.ts.map +1 -1
- package/dist/helpers/typeidHelper.js +10 -10
- package/dist/helpers/typeidHelper.js.map +1 -1
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -19
- package/dist/index.js.map +1 -1
- package/dist/isReservedKeyword.d.ts.map +1 -1
- package/dist/isReservedKeyword.js +2 -2
- package/dist/isReservedKeyword.js.map +1 -1
- package/dist/package.json +3 -0
- package/dist/pathHelper.d.ts +0 -3
- package/dist/pathHelper.d.ts.map +1 -1
- package/dist/pathHelper.js +2 -2
- package/dist/pathHelper.js.map +1 -1
- package/dist/rebase.js +8 -8
- package/dist/rebase.js.map +1 -1
- package/dist/templateSchema.d.ts.map +1 -1
- package/dist/templateSchema.js +2 -2
- package/dist/templateSchema.js.map +1 -1
- package/dist/templateValidator.d.ts +1 -1
- package/dist/templateValidator.d.ts.map +1 -1
- package/dist/templateValidator.js +49 -54
- package/dist/templateValidator.js.map +1 -1
- package/dist/test/array.spec.js +34 -36
- package/dist/test/array.spec.js.map +1 -1
- package/dist/test/indexedCollection.spec.js +9 -6
- package/dist/test/indexedCollection.spec.js.map +1 -1
- package/dist/test/map.spec.js +4 -4
- package/dist/test/map.spec.js.map +1 -1
- package/dist/test/pathHelper.spec.js +185 -185
- package/dist/test/pathHelper.spec.js.map +1 -1
- package/dist/test/reversibleCs.spec.js +5 -5
- package/dist/test/reversibleCs.spec.js.map +1 -1
- package/dist/test/schemaValidator.js +12 -11
- package/dist/test/schemaValidator.js.map +1 -1
- package/dist/test/schemas/badBothPropertiesAndTypeid.js +18 -18
- package/dist/test/schemas/badBothPropertiesAndTypeid.js.map +1 -1
- package/dist/test/schemas/badInvalidSemverInTypeid.js +40 -40
- package/dist/test/schemas/badInvalidSemverInTypeid.js.map +1 -1
- package/dist/test/schemas/badMissingSemverInTypeid.js +40 -40
- package/dist/test/schemas/badMissingSemverInTypeid.js.map +1 -1
- package/dist/test/schemas/badNestedProperties.js +40 -40
- package/dist/test/schemas/badNestedProperties.js.map +1 -1
- package/dist/test/schemas/badPrimitiveTypeid.js +25 -25
- package/dist/test/schemas/badPrimitiveTypeid.js.map +1 -1
- package/dist/test/schemas/badVersionedTypeid.js +41 -41
- package/dist/test/schemas/badVersionedTypeid.js.map +1 -1
- package/dist/test/schemas/goodColorPalette.js +15 -15
- package/dist/test/schemas/goodColorPalette.js.map +1 -1
- package/dist/test/schemas/goodDraftAsVersion.js +12 -12
- package/dist/test/schemas/goodDraftAsVersion.js.map +1 -1
- package/dist/test/schemas/goodPointId.js +40 -40
- package/dist/test/schemas/goodPointId.js.map +1 -1
- package/dist/test/schemas/goodReferenceAndRegular.js +16 -16
- package/dist/test/schemas/goodReferenceAndRegular.js.map +1 -1
- package/dist/test/schemas/goodReservedTypes.js +22 -22
- package/dist/test/schemas/goodReservedTypes.js.map +1 -1
- package/dist/test/schemas/goodUIBorder.js +34 -34
- package/dist/test/schemas/goodUIBorder.js.map +1 -1
- package/dist/test/schemas/index.js +55 -0
- package/dist/test/schemas/index.js.map +1 -0
- package/dist/test/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/test/validator/templateSyntax.spec.js +20 -25
- package/dist/test/validator/templateSyntax.spec.js.map +1 -1
- package/dist/test/validator/templateValidator.spec.js +118 -89
- package/dist/test/validator/templateValidator.spec.js.map +1 -1
- package/dist/test/validator/typeidHelper.spec.js +42 -41
- package/dist/test/validator/typeidHelper.spec.js.map +1 -1
- package/dist/utils.d.ts +17 -13
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +79 -79
- package/dist/utils.js.map +1 -1
- package/dist/validationResultBuilder.d.ts +2 -1
- package/dist/validationResultBuilder.d.ts.map +1 -1
- package/dist/validationResultBuilder.js.map +1 -1
- package/lib/ajvFactory.cjs +19 -0
- package/lib/ajvFactory.cjs.map +1 -0
- package/lib/ajvFactory.d.cts +7 -0
- package/lib/ajvFactory.d.cts.map +1 -0
- package/lib/changeset.d.ts +3 -6
- package/lib/changeset.d.ts.map +1 -1
- package/lib/changeset.js +16 -16
- package/lib/changeset.js.map +1 -1
- package/lib/changeset_operations/array.d.ts +6 -2
- package/lib/changeset_operations/array.d.ts.map +1 -1
- package/lib/changeset_operations/array.js +7 -9
- package/lib/changeset_operations/array.js.map +1 -1
- package/lib/changeset_operations/arrayChangesetIterator.d.ts +2 -5
- package/lib/changeset_operations/arrayChangesetIterator.d.ts.map +1 -1
- package/lib/changeset_operations/arrayChangesetIterator.js +3 -4
- package/lib/changeset_operations/arrayChangesetIterator.js.map +1 -1
- package/lib/changeset_operations/changesetConflictTypes.d.ts.map +1 -1
- package/lib/changeset_operations/changesetConflictTypes.js.map +1 -1
- package/lib/changeset_operations/indexedCollection.d.ts +1 -4
- package/lib/changeset_operations/indexedCollection.d.ts.map +1 -1
- package/lib/changeset_operations/indexedCollection.js +10 -11
- package/lib/changeset_operations/indexedCollection.js.map +1 -1
- package/lib/changeset_operations/isEmptyChangeset.d.ts +1 -4
- package/lib/changeset_operations/isEmptyChangeset.d.ts.map +1 -1
- package/lib/changeset_operations/isEmptyChangeset.js +3 -3
- package/lib/changeset_operations/isEmptyChangeset.js.map +1 -1
- package/lib/helpers/typeidHelper.d.ts +0 -3
- package/lib/helpers/typeidHelper.d.ts.map +1 -1
- package/lib/helpers/typeidHelper.js +1 -1
- package/lib/helpers/typeidHelper.js.map +1 -1
- package/lib/index.d.ts +8 -8
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +8 -8
- package/lib/index.js.map +1 -1
- package/lib/isReservedKeyword.d.ts.map +1 -1
- package/lib/isReservedKeyword.js.map +1 -1
- package/lib/pathHelper.d.ts +0 -3
- package/lib/pathHelper.d.ts.map +1 -1
- package/lib/pathHelper.js.map +1 -1
- package/lib/rebase.js +2 -2
- package/lib/rebase.js.map +1 -1
- package/lib/templateSchema.d.ts.map +1 -1
- package/lib/templateSchema.js.map +1 -1
- package/lib/templateValidator.d.ts +1 -1
- package/lib/templateValidator.d.ts.map +1 -1
- package/lib/templateValidator.js +24 -29
- package/lib/templateValidator.js.map +1 -1
- package/lib/test/array.spec.js +768 -0
- package/lib/test/array.spec.js.map +1 -0
- package/lib/test/indexedCollection.spec.js +75 -0
- package/lib/test/indexedCollection.spec.js.map +1 -0
- package/lib/test/map.spec.js +17 -0
- package/lib/test/map.spec.js.map +1 -0
- package/lib/test/pathHelper.spec.js +435 -0
- package/lib/test/pathHelper.spec.js.map +1 -0
- package/lib/test/reversibleCs.spec.js +42 -0
- package/lib/test/reversibleCs.spec.js.map +1 -0
- package/lib/test/schemaValidator.js +103 -0
- package/lib/test/schemaValidator.js.map +1 -0
- package/lib/test/schemas/badBothPropertiesAndTypeid.js +24 -0
- package/lib/test/schemas/badBothPropertiesAndTypeid.js.map +1 -0
- package/lib/test/schemas/badInvalidSemverInTypeid.js +46 -0
- package/lib/test/schemas/badInvalidSemverInTypeid.js.map +1 -0
- package/lib/test/schemas/badMissingSemverInTypeid.js +46 -0
- package/lib/test/schemas/badMissingSemverInTypeid.js.map +1 -0
- package/lib/test/schemas/badNestedProperties.js +46 -0
- package/lib/test/schemas/badNestedProperties.js.map +1 -0
- package/lib/test/schemas/badPrimitiveTypeid.js +31 -0
- package/lib/test/schemas/badPrimitiveTypeid.js.map +1 -0
- package/lib/test/schemas/badVersionedTypeid.js +47 -0
- package/lib/test/schemas/badVersionedTypeid.js.map +1 -0
- package/lib/test/schemas/goodColorPalette.js +21 -0
- package/lib/test/schemas/goodColorPalette.js.map +1 -0
- package/lib/test/schemas/goodDraftAsVersion.js +18 -0
- package/lib/test/schemas/goodDraftAsVersion.js.map +1 -0
- package/lib/test/schemas/goodPointId.js +46 -0
- package/lib/test/schemas/goodPointId.js.map +1 -0
- package/lib/test/schemas/goodReferenceAndRegular.js +22 -0
- package/lib/test/schemas/goodReferenceAndRegular.js.map +1 -0
- package/lib/test/schemas/goodReservedTypes.js +29 -0
- package/lib/test/schemas/goodReservedTypes.js.map +1 -0
- package/lib/test/schemas/goodUIBorder.js +41 -0
- package/lib/test/schemas/goodUIBorder.js.map +1 -0
- package/lib/test/schemas/index.js +29 -0
- package/lib/test/schemas/index.js.map +1 -0
- package/lib/test/tsconfig.tsbuildinfo +1 -0
- package/lib/test/validator/templateSyntax.spec.js +83 -0
- package/lib/test/validator/templateSyntax.spec.js.map +1 -0
- package/lib/test/validator/templateValidator.spec.js +1022 -0
- package/lib/test/validator/templateValidator.spec.js.map +1 -0
- package/lib/test/validator/typeidHelper.spec.js +142 -0
- package/lib/test/validator/typeidHelper.spec.js.map +1 -0
- package/lib/utils.d.ts +17 -13
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +23 -23
- package/lib/utils.js.map +1 -1
- package/lib/validationResultBuilder.d.ts +2 -1
- package/lib/validationResultBuilder.d.ts.map +1 -1
- package/lib/validationResultBuilder.js.map +1 -1
- package/package.json +37 -16
- package/dist/test/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templateValidator.spec.js","sourceRoot":"","sources":["../../../src/test/validator/templateValidator.spec.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint no-unused-expressions: 0 */\n\n// Lint disable to avoid needing to place `async` on many test functions\n// as validity of testing is in general questionable and trying to avoid\n// changes.\n/* eslint-disable @typescript-eslint/promise-function-async */\n\n/**\n * @fileoverview In this file, we will test template validation.\n */\n\nimport { constants } from \"@fluid-experimental/property-common\";\nimport { expect } from \"chai\";\nimport semver from \"semver\";\n\nimport { TemplateValidator } from \"../../templateValidator.js\";\nimport type { SchemaValidationResult } from \"../../validationResultBuilder.js\";\nimport { SchemaValidator } from \"../schemaValidator.js\";\nimport {\n\tbadInvalidSemverInTypeid,\n\tbadMissingSemverInTypeid,\n\tbadPrimitiveTypeid,\n\tgoodPointId,\n\tgoodReservedTypes,\n\tgoodUIBorder,\n} from \"../schemas/index.js\";\n\n(function () {\n\tconst MSG = constants.MSG;\n\n\tconst performValidation = function (\n\t\tasync: boolean,\n\t\ttemplate,\n\t\ttemplatePrevious,\n\t\tskipSemver,\n\t\tasyncErrorMessage?,\n\t): Promise<SchemaValidationResult> {\n\t\tlet schemaValidator = new SchemaValidator();\n\n\t\t// @ts-expect-error - per the catch and no throw below\n\t\treturn async\n\t\t\t? schemaValidator\n\t\t\t\t\t.validate(template, templatePrevious, async, skipSemver)\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\texpect(error.message).to.have.string(asyncErrorMessage);\n\t\t\t\t\t\t// This really should re-throw the error. As it stands this\n\t\t\t\t\t\t// catch returns `undefined` which is not SchemaValidationResult.\n\t\t\t\t\t\t// Throwing will cause \"fail: previous template: invalid semver\"\n\t\t\t\t\t\t// test case to fail with uncaught error.\n\t\t\t\t\t\t// This also has impact on the malformed validate function below.\n\t\t\t\t\t\t// throw error;\n\t\t\t\t\t})\n\t\t\t: // A better pattern is simply Promise.resolve(...). However without all callers\n\t\t\t // properly specifying they are `async` (lint disabled for file), they may fail.\n\t\t\t // In particular see test case\n\t\t\t // \"should fail if map with context key type typeid is not constant\"\n\t\t\t new Promise((resolve) => {\n\t\t\t\t\tresolve(\n\t\t\t\t\t\tschemaValidator.validate(template, templatePrevious, async, skipSemver),\n\t\t\t\t\t);\n\t\t\t });\n\t};\n\n\t// Performs both synchronous and asynchronous validation\n\tlet validate = function (\n\t\texpectations: (result: SchemaValidationResult) => SchemaValidationResult,\n\t\ttemplate?,\n\t\ttemplatePrevious?,\n\t\tskipSemver?,\n\t\tasyncErrorMessage?,\n\t) {\n\t\treturn performValidation(false, template, templatePrevious, skipSemver)\n\t\t\t.then(expectations)\n\t\t\t.then(\n\t\t\t\t// This patten is invalid. The `then` parameter is expected to be callable.\n\t\t\t\t// Instead performValidation is called and its result is is called. Or at least\n\t\t\t\t// should be. As set up the following .then is executed (apparently) on the\n\t\t\t\t// results of the prior performValidation. This could be address with this prefix:\n\t\t\t\t// async () =>\n\t\t\t\t// However doing so causes tests to fail. Testing coming through here appears\n\t\t\t\t// invalid.\n\t\t\t\t// @ts-expect-error\n\t\t\t\tperformValidation(true, template, templatePrevious, skipSemver, asyncErrorMessage),\n\t\t\t)\n\t\t\t.then(expectations);\n\t};\n\n\tdescribe(\"Template Validation\", function () {\n\t\t// --- INPUT ---\n\t\tdescribe(\"input validation\", function () {\n\t\t\tit(\"fail: empty template\", function () {\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.NO_TEMPLATE);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations);\n\t\t\t});\n\n\t\t\tit(\"fail: template with no typeid\", function () {\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.MISSING_TYPE_ID);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, {});\n\t\t\t});\n\t\t});\n\n\t\t// --- TYPEID ---\n\t\tdescribe(\"typeid validation\", function () {\n\t\t\tit(\"pass: valid typeid\", function () {\n\t\t\t\tlet template = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\texpect(result.typeid).to.equal(template.typeid);\n\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, template);\n\t\t\t});\n\n\t\t\tit(\"fail: missing semver\", function () {\n\t\t\t\tlet template = JSON.parse(JSON.stringify(badMissingSemverInTypeid.templateSchema));\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.typeid).to.equal(template.typeid);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\"'TeamLeoValidation2:PointID' is not valid\",\n\t\t\t\t\t);\n\t\t\t\t\texpect(result.errors[0].instancePath).to.equal(\"/typeid\");\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template);\n\t\t\t});\n\n\t\t\tit(\"fail: invalid semver 1\", function () {\n\t\t\t\tlet template = JSON.parse(JSON.stringify(badInvalidSemverInTypeid.templateSchema));\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.typeid).to.equal(template.typeid);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].instancePath).to.equal(\"/typeid\");\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, template);\n\t\t\t});\n\n\t\t\tit(\"fail: invalid semver 2\", function () {\n\t\t\t\tlet template = JSON.parse(JSON.stringify(badInvalidSemverInTypeid.templateSchema));\n\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-1.0.01\";\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.typeid).to.equal(template.typeid);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.INVALID_VERSION_1);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template);\n\t\t\t});\n\n\t\t\tit(\"fail: previous template: invalid semver\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\tlet badTypeId = \"TeamLeoValidation2:PointID-1.0.0.1\";\n\t\t\t\ttemplatePrevious.typeid = badTypeId;\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.typeid).to.equal(badTypeId);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(`'${badTypeId}' is not valid`);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(\n\t\t\t\t\texpectations,\n\t\t\t\t\ttemplate,\n\t\t\t\t\ttemplatePrevious,\n\t\t\t\t\tfalse,\n\t\t\t\t\t\"Invalid Version: 1.0.0.1\",\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\n\t\t// --- Template versioning ---\n\t\tdescribe(\"template versioning\", function () {\n\t\t\tit(\"fail: version regression: 1.0.0 -> 0.9.9\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-0.9.9\";\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.VERSION_REGRESSION_1);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t});\n\n\t\t\tdescribe(\"same version\", function () {\n\t\t\t\tit(\"pass: same content\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: changed 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.annotation.description = \"Changed!\";\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: deleted 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\tdelete template.annotation;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: added 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.annotation = { description: \"Test\" };\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: changed 'value'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: changed 'id'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.properties[0].properties[0].id = \"xx\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: changed 'inherits'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(\n\t\t\t\t\t\tJSON.stringify(goodReservedTypes.templateSchema),\n\t\t\t\t\t);\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.inherits = \"Reference<Adsk.Core:Math.Color-1.0.0>\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: added property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.properties[0].properties.push({ id: \"newPropId\", typeid: \"Float32\" });\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: deleted property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.properties[0].properties.pop();\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdescribe(\"incremented patch level\", function () {\n\t\t\t\tit(\"pass: same content\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: unstable with major content change: 0.0.1 -> 0.0.2\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.typeid = \"TeamLeoValidation2:PointID-0.0.1\";\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-0.0.2\";\n\t\t\t\t\ttemplate.properties[1].typeid = \"TeamLeoValidation2:ColorID-9.0.0\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.annotation.description = \"Changed!\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: deleted 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\tdelete template.annotation;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.annotation = { description: \"Test\" };\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'value'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"Adsk.Core:UI.Border-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'id' (delete, add)\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.properties[0].properties[0].id = \"xx\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(2); // 1st for the delete and the 2nd for the add\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'inherits'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(\n\t\t\t\t\t\tJSON.stringify(goodReservedTypes.templateSchema),\n\t\t\t\t\t);\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:Example-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.inherits = \"Reference<Adsk.Core:Math.Color-1.0.0>\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: added property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.properties[0].properties.push({ id: \"newPropId\", typeid: \"Float32\" });\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: deleted property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.properties[0].properties.pop();\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdescribe(\"incremented minor level\", function () {\n\t\t\t\tit(\"pass: same content\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.annotation.description = \"Changed!\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: deleted 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\tdelete template.annotation;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.annotation = { description: \"Test\" };\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'value'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"Adsk.Core:UI.Border-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'id' (delete, add)\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.properties[0].properties[0].id = \"xx\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'inherits'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(\n\t\t\t\t\t\tJSON.stringify(goodReservedTypes.templateSchema),\n\t\t\t\t\t);\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:Example-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.inherits = \"Reference<Adsk.Core:Math.Color-1.0.0>\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.properties[0].properties.push({ id: \"newPropId\", typeid: \"Float32\" });\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: deleted property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.properties[0].properties.pop();\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdescribe(\"incremented major level\", function () {\n\t\t\t\tit(\"pass: same content\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.annotation.description = \"Changed!\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: deleted 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\tdelete template.annotation;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.annotation = { description: \"Test\" };\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'value'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"Adsk.Core:UI.Border-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'id' (delete, add)\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.properties[0].properties[0].id = \"xx\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'inherits'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(\n\t\t\t\t\t\tJSON.stringify(goodReservedTypes.templateSchema),\n\t\t\t\t\t);\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:Example-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.inherits = \"Reference<Adsk.Core:Math.Color-1.0.0>\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.properties[0].properties.push({ id: \"newPropId\", typeid: \"Float32\" });\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: deleted property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.properties[0].properties.pop();\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"skip semver validation\", function () {\n\t\t\tit(\"pass: deep equal on scrambled arrays\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\tlet tmp = template.properties[0].properties[0];\n\t\t\t\ttemplate.properties[0].properties[0] = template.properties[0].properties[2];\n\t\t\t\ttemplate.properties[0].properties[2] = tmp;\n\t\t\t\ttmp = template.properties[1];\n\t\t\t\ttemplate.properties[1] = template.properties[2];\n\t\t\t\ttemplate.properties[2] = tmp;\n\t\t\t\t// Skip semver validation to cause a deep compare\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t});\n\n\t\t\tit(\"pass: deep equal with version regression\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t});\n\n\t\t\tit(\"pass: preserves input templates\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\n\t\t\t\tlet copies = [\n\t\t\t\t\tJSON.parse(JSON.stringify(templatePrevious)),\n\t\t\t\t\tJSON.parse(JSON.stringify(template)),\n\t\t\t\t];\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\texpect(templatePrevious).to.deep.equal(copies[0]);\n\t\t\t\t\texpect(template).to.deep.equal(copies[1]);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t});\n\n\t\t\tit(\"fail: changed value\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.MODIFIED_TEMPLATE_1);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"syntax validation\", function () {\n\t\t\tit(\"pass: validate a simple file\", function () {\n\t\t\t\tlet template = goodPointId.templateSchema;\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, null, true);\n\t\t\t});\n\n\t\t\tit(\"fail: invalid file\", function () {\n\t\t\t\tlet template = badPrimitiveTypeid.templateSchema;\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\texpect(result.errors.length).to.be.greaterThan(0);\n\t\t\t\t\texpect(result.unresolvedTypes.length).to.equal(1);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, null, true);\n\t\t\t});\n\n\t\t\tit(\"should pass a schema with an empty array of properties\", function () {\n\t\t\t\tlet EmptyPropertySchema = {\n\t\t\t\t\ttypeid: \"Test:EmptyPropertySchema-1.0.0\",\n\t\t\t\t\tproperties: [],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, EmptyPropertySchema, null);\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"bugs\", function () {\n\t\t\tdescribe(\"@bugfix Template validation with multiple inheritance\", function () {\n\t\t\t\tit(\"pass: deep equal with multiple inheritance\", function () {\n\t\t\t\t\tlet templateString =\n\t\t\t\t\t\t'{\"typeid\":\"autodesk.core:translation.controller-1.0.0\",\"inherits\":[\"NamedProperty\",\"NodeProperty\"]}';\n\t\t\t\t\tlet templatePrevious = JSON.parse(templateString);\n\t\t\t\t\tlet template = JSON.parse(templateString);\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: deep equal with out of order multiple inheritance\", function () {\n\t\t\t\t\tlet template = JSON.parse(\n\t\t\t\t\t\t'{\"typeid\":\"autodesk.core:translation.controller-1.0.0\",' +\n\t\t\t\t\t\t\t'\"inherits\":[\"NamedProperty\",\"NodeProperty\"]}',\n\t\t\t\t\t);\n\t\t\t\t\tlet templatePrevious = JSON.parse(\n\t\t\t\t\t\t'{\"typeid\":\"autodesk.core:translation.controller-1.0.0\",' +\n\t\t\t\t\t\t\t'\"inherits\":[\"NodeProperty\",\"NamedProperty\"]}',\n\t\t\t\t\t);\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.greaterThan(0);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.MODIFIED_TEMPLATE_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdescribe(\n\t\t\t\t\"@bugfix Local templates with 'abstract' properties fail validation \" +\n\t\t\t\t\t\"with remote one.\",\n\t\t\t\t() => {\n\t\t\t\t\tdescribe(\"pass: deep equal between no properties and an empty properties array\", () => {\n\t\t\t\t\t\tlet templateArray = {\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:Shape-1.0.0\",\n\t\t\t\t\t\t\tproperties: [],\n\t\t\t\t\t\t};\n\t\t\t\t\t\tlet templateAbstract = {\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:Shape-1.0.0\",\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tit(\"source is abstract and target is an empty properties array\", function () {\n\t\t\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\treturn validate(expectations, templateAbstract, templateArray);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tit(\"target is abstract and source is an empty properties array\", function () {\n\t\t\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\treturn validate(expectations, templateArray, templateAbstract);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t);\n\t\t});\n\n\t\tdescribe(\"Constants\", function () {\n\t\t\tbefore(function () {\n\t\t\t\tlet schemaValidator = new SchemaValidator();\n\n\t\t\t\tnew TemplateValidator({\n\t\t\t\t\tskipSemver: true,\n\t\t\t\t\tinheritsFrom: schemaValidator.inheritsFrom as any,\n\t\t\t\t\thasSchema: schemaValidator.hasSchema as any,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tlet expectationsGenerator = function (msg) {\n\t\t\t\treturn function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\texpect(result.errors.length).to.equal(1);\n\t\t\t\t\texpect(result.errors[0].message).to.equal(msg);\n\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tit(\"should pass a valid template\", function () {\n\t\t\t\tlet ConstantValid = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantValid-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"valid\", typeid: \"String\", value: \"value\" }],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, ConstantValid, null);\n\t\t\t});\n\n\t\t\tit(\"should fail if constants array has no elements\", function () {\n\t\t\t\tlet ConstantEmptyArray = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantEmptyArray-1.0.0\",\n\t\t\t\t\tconstants: [],\n\t\t\t\t};\n\n\t\t\t\treturn validate(\n\t\t\t\t\texpectationsGenerator(\"/constants must NOT have fewer than 1 items\"),\n\t\t\t\t\tConstantEmptyArray,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail if constant does not have an id\", function () {\n\t\t\t\tlet ConstantNoId = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoId-1.0.0\",\n\t\t\t\t\tconstants: [{ typeid: \"String\", value: \"value\" }],\n\t\t\t\t};\n\n\t\t\t\treturn validate(\n\t\t\t\t\texpectationsGenerator(\"/constants/0 must have required property 'id'\"),\n\t\t\t\t\tConstantNoId,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail if constant does not have a typeid\", function () {\n\t\t\t\tlet ConstantNoTypeid = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoTypeid-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"id\", value: \"value\" }],\n\t\t\t\t};\n\n\t\t\t\treturn validate(\n\t\t\t\t\tfunction (result) {\n\t\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\t\t// console.log(result.errors);\n\t\t\t\t\t\texpect(result.errors.length).to.equal(5);\n\t\t\t\t\t\texpect(result.errors[3].message).to.include(\n\t\t\t\t\t\t\t\"must have required property 'inherits'\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\texpect(result.errors[4].message).to.include(\n\t\t\t\t\t\t\t\"/constants/0 must have required property 'typeid'\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t},\n\t\t\t\t\tConstantNoTypeid,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should pass if constant does not have a typeid but maybe inherits from elsewhere\", function () {\n\t\t\t\tlet ConstantNoTypeid = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoTypeid-1.0.0\",\n\t\t\t\t\tinherits: \"ConstantTest:ConstantParentWithTypeid-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"id\", value: \"value\" }],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, ConstantNoTypeid, null);\n\t\t\t});\n\n\t\t\tit(\"should not fail if constant does not have a value or typedValue\", function () {\n\t\t\t\tlet ConstantNoValue = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoValue-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"id\", typeid: \"String\" }],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, ConstantNoValue, null, true);\n\t\t\t});\n\n\t\t\tit(\"should pass if constant map with context key type typeid has typeids as keys\", function () {\n\t\t\t\tlet Constant = {\n\t\t\t\t\ttypeid: \"ConstantTest:Constant-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tcontextKeyType: \"typeid\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate1-1.0.0\": 1,\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate2-1.0.0\": -1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, Constant, null, true);\n\t\t\t});\n\n\t\t\tit(\"should fail if constant map with context key type that is not a valid value\", function () {\n\t\t\t\tlet ConstantNoValue = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoValue-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tcontextKeyType: \"badvalue\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate1-1.0.0\": 1,\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate2-1.0.0\": -1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\treturn validate(\n\t\t\t\t\tfunction (result) {\n\t\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\t\texpect(result.errors.length).to.equal(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.include(\n\t\t\t\t\t\t\t\"should match one of the following: typeid,string\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t},\n\t\t\t\t\tConstantNoValue,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail if constant map with context key type typeid has invalid typeids as keys\", function () {\n\t\t\t\tlet ConstantMapWithBadKeys = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantMapWithBadKeys-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tcontextKeyType: \"typeid\",\n\t\t\t\t\t\t\tvalue: { NotATypeId: 1, AlsoNotATypeId: -1 },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\texpect(result.errors.length).to.equal(2);\n\t\t\t\t\texpect(result.errors[0].message).to.include(\n\t\t\t\t\t\tMSG.KEY_MUST_BE_TYPEID + \"NotATypeId\",\n\t\t\t\t\t);\n\t\t\t\t\texpect(result.errors[1].message).to.include(\n\t\t\t\t\t\tMSG.KEY_MUST_BE_TYPEID + \"AlsoNotATypeId\",\n\t\t\t\t\t);\n\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, ConstantMapWithBadKeys, null, true);\n\t\t\t});\n\n\t\t\tit(\"should fail if map with context key type typeid is not constant\", function () {\n\t\t\t\tlet ConstantMapWithProperty = {\n\t\t\t\t\ttypeid: \"ConstantTest:Outerprop-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tcontextKeyType: \"typeid\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate1-1.0.0\": 1,\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate2-1.0.0\": -1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\tthrow new Error(\"This should not be called\");\n\t\t\t\t};\n\t\t\t\tlet failExpectations = function (error) {\n\t\t\t\t\texpect(error.toString()).to.include(\n\t\t\t\t\t\t\"SV-013: A map with typeids as keys must be constant\",\n\t\t\t\t\t);\n\t\t\t\t};\n\t\t\t\treturn performValidation(false, ConstantMapWithProperty, null, true)\n\t\t\t\t\t.then(expectations)\n\t\t\t\t\t.catch(failExpectations);\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"Async validation\", function () {\n\t\t\tit(\"can perform context validation asynchronously\", function (done) {\n\t\t\t\tlet schemaValidator = new SchemaValidator();\n\n\t\t\t\tlet templateValidator = new TemplateValidator({\n\t\t\t\t\tinheritsFromAsync: schemaValidator.inheritsFromAsync as any,\n\t\t\t\t\thasSchemaAsync: schemaValidator.hasSchemaAsync as any,\n\t\t\t\t});\n\n\t\t\t\t// Doesn't inherit from 'NamedProperty'. Will cause an error\n\t\t\t\tlet grandParentSchema = {\n\t\t\t\t\ttypeid: \"test:grandparentschema-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tlet parentSchema = {\n\t\t\t\t\ttypeid: \"test:parentschema-1.0.0\",\n\t\t\t\t\tinherits: [\"test:grandparentschema-1.0.0\"],\n\t\t\t\t};\n\n\t\t\t\tlet childSchema = {\n\t\t\t\t\ttypeid: \"test:childchema-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"test:parentschema-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tschemaValidator.register(grandParentSchema);\n\t\t\t\tschemaValidator.register(parentSchema);\n\n\t\t\t\ttemplateValidator.validateAsync(childSchema as any).then(\n\t\t\t\t\t() => {\n\t\t\t\t\t\tdone(new Error(\"Should not be valid!\"));\n\t\t\t\t\t},\n\t\t\t\t\t(error) => {\n\t\t\t\t\t\texpect(error).to.exist;\n\t\t\t\t\t\tdone();\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t});\n})();\n"]}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
/* eslint no-unused-expressions: 0 */
|
|
6
|
+
/**
|
|
7
|
+
* @fileoverview In this file, we will test typeid_helper functions.
|
|
8
|
+
*/
|
|
9
|
+
import { constants } from "@fluid-experimental/property-common";
|
|
10
|
+
import { expect } from "chai";
|
|
11
|
+
import { TypeIdHelper } from "../../helpers/typeidHelper.js";
|
|
12
|
+
(function () {
|
|
13
|
+
describe("Typeid helper", function () {
|
|
14
|
+
const MSG = constants.MSG;
|
|
15
|
+
it("getPrimitiveTypeId() should return all primitive typeids", () => {
|
|
16
|
+
const result = TypeIdHelper.getPrimitiveTypeIds();
|
|
17
|
+
expect(result).to.have.members([
|
|
18
|
+
"Float32",
|
|
19
|
+
"Float64",
|
|
20
|
+
"Int8",
|
|
21
|
+
"Uint8",
|
|
22
|
+
"Int16",
|
|
23
|
+
"Uint16",
|
|
24
|
+
"Int32",
|
|
25
|
+
"Uint32",
|
|
26
|
+
"Bool",
|
|
27
|
+
"String",
|
|
28
|
+
"Reference",
|
|
29
|
+
"Enum",
|
|
30
|
+
"Int64",
|
|
31
|
+
"Uint64",
|
|
32
|
+
]);
|
|
33
|
+
});
|
|
34
|
+
it("getReservedTypeId() should return all reserved typeids", () => {
|
|
35
|
+
const result = TypeIdHelper.getReservedTypeIds();
|
|
36
|
+
expect(result).to.have.members([
|
|
37
|
+
"BaseProperty",
|
|
38
|
+
"ContainerProperty",
|
|
39
|
+
"NamedProperty",
|
|
40
|
+
"NodeProperty",
|
|
41
|
+
"NamedNodeProperty",
|
|
42
|
+
"RelationshipProperty",
|
|
43
|
+
]);
|
|
44
|
+
});
|
|
45
|
+
describe("nativeInheritsFrom() method", function () {
|
|
46
|
+
it("should throw an error if the input is undefine", () => {
|
|
47
|
+
expect(() => {
|
|
48
|
+
TypeIdHelper.nativeInheritsFrom(undefined, "BaseProperty");
|
|
49
|
+
}).to.throw(MSG.TYPEID_NOT_DEFINED);
|
|
50
|
+
expect(() => {
|
|
51
|
+
// @ts-ignore
|
|
52
|
+
TypeIdHelper.nativeInheritsFrom("NodeProperty");
|
|
53
|
+
}).to.throw(MSG.TYPEID_NOT_DEFINED);
|
|
54
|
+
expect(() => {
|
|
55
|
+
// @ts-ignore
|
|
56
|
+
TypeIdHelper.nativeInheritsFrom();
|
|
57
|
+
}).to.throw(MSG.TYPEID_NOT_DEFINED);
|
|
58
|
+
});
|
|
59
|
+
it("should throw an error if the inputs are not native typeids", () => {
|
|
60
|
+
expect(() => {
|
|
61
|
+
TypeIdHelper.nativeInheritsFrom("template1", "BaseProperty");
|
|
62
|
+
}).to.throw(MSG.TYPEID_NOT_NATIVE + "template1");
|
|
63
|
+
expect(() => {
|
|
64
|
+
TypeIdHelper.nativeInheritsFrom("NodeProperty", "template1");
|
|
65
|
+
}).to.throw(MSG.TYPEID_NOT_NATIVE + "template1");
|
|
66
|
+
});
|
|
67
|
+
it("should recognize that all the native type inherit from BaseProperty", () => {
|
|
68
|
+
expect(TypeIdHelper.nativeInheritsFrom("Int8", "BaseProperty")).to.be.true;
|
|
69
|
+
expect(TypeIdHelper.nativeInheritsFrom("Uint8", "BaseProperty")).to.be.true;
|
|
70
|
+
expect(TypeIdHelper.nativeInheritsFrom("Int16", "BaseProperty")).to.be.true;
|
|
71
|
+
expect(TypeIdHelper.nativeInheritsFrom("Uint16", "BaseProperty")).to.be.true;
|
|
72
|
+
expect(TypeIdHelper.nativeInheritsFrom("Int32", "BaseProperty")).to.be.true;
|
|
73
|
+
expect(TypeIdHelper.nativeInheritsFrom("Uint32", "BaseProperty")).to.be.true;
|
|
74
|
+
expect(TypeIdHelper.nativeInheritsFrom("Float32", "BaseProperty")).to.be.true;
|
|
75
|
+
expect(TypeIdHelper.nativeInheritsFrom("Int64", "BaseProperty")).to.be.true;
|
|
76
|
+
expect(TypeIdHelper.nativeInheritsFrom("Uint64", "BaseProperty")).to.be.true;
|
|
77
|
+
expect(TypeIdHelper.nativeInheritsFrom("Float64", "BaseProperty")).to.be.true;
|
|
78
|
+
expect(TypeIdHelper.nativeInheritsFrom("Bool", "BaseProperty")).to.be.true;
|
|
79
|
+
expect(TypeIdHelper.nativeInheritsFrom("Reference", "BaseProperty")).to.be.true;
|
|
80
|
+
expect(TypeIdHelper.nativeInheritsFrom("Enum", "BaseProperty")).to.be.true;
|
|
81
|
+
expect(TypeIdHelper.nativeInheritsFrom("String", "BaseProperty")).to.be.true;
|
|
82
|
+
expect(TypeIdHelper.nativeInheritsFrom("NodeProperty", "BaseProperty")).to.be.true;
|
|
83
|
+
expect(TypeIdHelper.nativeInheritsFrom("ContainerProperty", "BaseProperty")).to.be
|
|
84
|
+
.true;
|
|
85
|
+
expect(TypeIdHelper.nativeInheritsFrom("NamedProperty", "BaseProperty")).to.be.true;
|
|
86
|
+
expect(TypeIdHelper.nativeInheritsFrom("NamedNodeProperty", "BaseProperty")).to.be
|
|
87
|
+
.true;
|
|
88
|
+
expect(TypeIdHelper.nativeInheritsFrom("RelationshipProperty", "BaseProperty")).to
|
|
89
|
+
.be.true;
|
|
90
|
+
expect(TypeIdHelper.nativeInheritsFrom("Reference<NodeProperty>", "Reference")).to
|
|
91
|
+
.be.true;
|
|
92
|
+
expect(TypeIdHelper.nativeInheritsFrom("NodeProperty", "Reference<NodeProperty>"))
|
|
93
|
+
.to.be.false;
|
|
94
|
+
});
|
|
95
|
+
it("should recognize that the Reference<NodeProperty> inherits from BaseProperty", () => {
|
|
96
|
+
const result = TypeIdHelper.nativeInheritsFrom("Reference<NodeProperty>", "BaseProperty");
|
|
97
|
+
expect(result).to.be.true;
|
|
98
|
+
});
|
|
99
|
+
it("should throw an error if in_typeid is enum<> ", () => {
|
|
100
|
+
expect(() => {
|
|
101
|
+
TypeIdHelper.nativeInheritsFrom("enum<NodeProperty>", "BaseProperty");
|
|
102
|
+
}).to.throw(MSG.TYPEID_NOT_NATIVE + "enum<NodeProperty>");
|
|
103
|
+
});
|
|
104
|
+
it("should throw an error if base_typeid is enum<> ", () => {
|
|
105
|
+
expect(() => {
|
|
106
|
+
TypeIdHelper.nativeInheritsFrom("NodeProperty", "enum<NodeProperty>");
|
|
107
|
+
}).to.throw(MSG.TYPEID_NOT_NATIVE + "enum<NodeProperty>");
|
|
108
|
+
});
|
|
109
|
+
it("should recognize that the Enum inherits from Int32", () => {
|
|
110
|
+
const result = TypeIdHelper.nativeInheritsFrom("Enum", "Int32");
|
|
111
|
+
expect(result).to.be.true;
|
|
112
|
+
});
|
|
113
|
+
it("should recognize that the NodeProperty inherits from ContainerProperty", () => {
|
|
114
|
+
const result = TypeIdHelper.nativeInheritsFrom("NodeProperty", "ContainerProperty");
|
|
115
|
+
expect(result).to.be.true;
|
|
116
|
+
});
|
|
117
|
+
it("should recognize that the NamedProperty inherits from ContainerProperty", () => {
|
|
118
|
+
const result = TypeIdHelper.nativeInheritsFrom("NamedProperty", "ContainerProperty");
|
|
119
|
+
expect(result).to.be.true;
|
|
120
|
+
});
|
|
121
|
+
it("should recognize that the String inherits from ContainerProperty", () => {
|
|
122
|
+
const result = TypeIdHelper.nativeInheritsFrom("String", "ContainerProperty");
|
|
123
|
+
expect(result).to.be.true;
|
|
124
|
+
});
|
|
125
|
+
it("should recognize that the NamedNodeProperty inherits from NamedProperty", () => {
|
|
126
|
+
const result = TypeIdHelper.nativeInheritsFrom("NamedNodeProperty", "NamedProperty");
|
|
127
|
+
expect(result).to.be.true;
|
|
128
|
+
});
|
|
129
|
+
it("should recognize that the NamedNodeProperty inherits from NodeProperty", () => {
|
|
130
|
+
const result = TypeIdHelper.nativeInheritsFrom("NamedNodeProperty", "NodeProperty");
|
|
131
|
+
expect(result).to.be.true;
|
|
132
|
+
});
|
|
133
|
+
it("should recognize that the RelationshipProperty inherits from NodeProperty and NamedProperty", () => {
|
|
134
|
+
expect(TypeIdHelper.nativeInheritsFrom("RelationshipProperty", "NodeProperty")).to
|
|
135
|
+
.be.true;
|
|
136
|
+
expect(TypeIdHelper.nativeInheritsFrom("RelationshipProperty", "NamedProperty")).to
|
|
137
|
+
.be.true;
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
})();
|
|
142
|
+
//# sourceMappingURL=typeidHelper.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeidHelper.spec.js","sourceRoot":"","sources":["../../../src/test/validator/typeidHelper.spec.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint no-unused-expressions: 0 */\n\n/**\n * @fileoverview In this file, we will test typeid_helper functions.\n */\n\nimport { constants } from \"@fluid-experimental/property-common\";\nimport { expect } from \"chai\";\n\nimport { TypeIdHelper } from \"../../helpers/typeidHelper.js\";\n\n(function () {\n\tdescribe(\"Typeid helper\", function () {\n\t\tconst MSG = constants.MSG;\n\n\t\tit(\"getPrimitiveTypeId() should return all primitive typeids\", () => {\n\t\t\tconst result = TypeIdHelper.getPrimitiveTypeIds();\n\t\t\texpect(result).to.have.members([\n\t\t\t\t\"Float32\",\n\t\t\t\t\"Float64\",\n\t\t\t\t\"Int8\",\n\t\t\t\t\"Uint8\",\n\t\t\t\t\"Int16\",\n\t\t\t\t\"Uint16\",\n\t\t\t\t\"Int32\",\n\t\t\t\t\"Uint32\",\n\t\t\t\t\"Bool\",\n\t\t\t\t\"String\",\n\t\t\t\t\"Reference\",\n\t\t\t\t\"Enum\",\n\t\t\t\t\"Int64\",\n\t\t\t\t\"Uint64\",\n\t\t\t]);\n\t\t});\n\n\t\tit(\"getReservedTypeId() should return all reserved typeids\", () => {\n\t\t\tconst result = TypeIdHelper.getReservedTypeIds();\n\n\t\t\texpect(result).to.have.members([\n\t\t\t\t\"BaseProperty\",\n\t\t\t\t\"ContainerProperty\",\n\t\t\t\t\"NamedProperty\",\n\t\t\t\t\"NodeProperty\",\n\t\t\t\t\"NamedNodeProperty\",\n\t\t\t\t\"RelationshipProperty\",\n\t\t\t]);\n\t\t});\n\n\t\tdescribe(\"nativeInheritsFrom() method\", function () {\n\t\t\tit(\"should throw an error if the input is undefine\", () => {\n\t\t\t\texpect(() => {\n\t\t\t\t\tTypeIdHelper.nativeInheritsFrom(undefined as unknown as string, \"BaseProperty\");\n\t\t\t\t}).to.throw(MSG.TYPEID_NOT_DEFINED);\n\t\t\t\texpect(() => {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tTypeIdHelper.nativeInheritsFrom(\"NodeProperty\");\n\t\t\t\t}).to.throw(MSG.TYPEID_NOT_DEFINED);\n\t\t\t\texpect(() => {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tTypeIdHelper.nativeInheritsFrom();\n\t\t\t\t}).to.throw(MSG.TYPEID_NOT_DEFINED);\n\t\t\t});\n\n\t\t\tit(\"should throw an error if the inputs are not native typeids\", () => {\n\t\t\t\texpect(() => {\n\t\t\t\t\tTypeIdHelper.nativeInheritsFrom(\"template1\", \"BaseProperty\");\n\t\t\t\t}).to.throw(MSG.TYPEID_NOT_NATIVE + \"template1\");\n\t\t\t\texpect(() => {\n\t\t\t\t\tTypeIdHelper.nativeInheritsFrom(\"NodeProperty\", \"template1\");\n\t\t\t\t}).to.throw(MSG.TYPEID_NOT_NATIVE + \"template1\");\n\t\t\t});\n\n\t\t\tit(\"should recognize that all the native type inherit from BaseProperty\", () => {\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Int8\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Uint8\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Int16\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Uint16\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Int32\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Uint32\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Float32\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Int64\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Uint64\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Float64\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Bool\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Reference\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Enum\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"String\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"NodeProperty\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"ContainerProperty\", \"BaseProperty\")).to.be\n\t\t\t\t\t.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"NamedProperty\", \"BaseProperty\")).to.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"NamedNodeProperty\", \"BaseProperty\")).to.be\n\t\t\t\t\t.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"RelationshipProperty\", \"BaseProperty\")).to\n\t\t\t\t\t.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"Reference<NodeProperty>\", \"Reference\")).to\n\t\t\t\t\t.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"NodeProperty\", \"Reference<NodeProperty>\"))\n\t\t\t\t\t.to.be.false;\n\t\t\t});\n\n\t\t\tit(\"should recognize that the Reference<NodeProperty> inherits from BaseProperty\", () => {\n\t\t\t\tconst result = TypeIdHelper.nativeInheritsFrom(\n\t\t\t\t\t\"Reference<NodeProperty>\",\n\t\t\t\t\t\"BaseProperty\",\n\t\t\t\t);\n\n\t\t\t\texpect(result).to.be.true;\n\t\t\t});\n\n\t\t\tit(\"should throw an error if in_typeid is enum<> \", () => {\n\t\t\t\texpect(() => {\n\t\t\t\t\tTypeIdHelper.nativeInheritsFrom(\"enum<NodeProperty>\", \"BaseProperty\");\n\t\t\t\t}).to.throw(MSG.TYPEID_NOT_NATIVE + \"enum<NodeProperty>\");\n\t\t\t});\n\n\t\t\tit(\"should throw an error if base_typeid is enum<> \", () => {\n\t\t\t\texpect(() => {\n\t\t\t\t\tTypeIdHelper.nativeInheritsFrom(\"NodeProperty\", \"enum<NodeProperty>\");\n\t\t\t\t}).to.throw(MSG.TYPEID_NOT_NATIVE + \"enum<NodeProperty>\");\n\t\t\t});\n\n\t\t\tit(\"should recognize that the Enum inherits from Int32\", () => {\n\t\t\t\tconst result = TypeIdHelper.nativeInheritsFrom(\"Enum\", \"Int32\");\n\n\t\t\t\texpect(result).to.be.true;\n\t\t\t});\n\n\t\t\tit(\"should recognize that the NodeProperty inherits from ContainerProperty\", () => {\n\t\t\t\tconst result = TypeIdHelper.nativeInheritsFrom(\"NodeProperty\", \"ContainerProperty\");\n\n\t\t\t\texpect(result).to.be.true;\n\t\t\t});\n\n\t\t\tit(\"should recognize that the NamedProperty inherits from ContainerProperty\", () => {\n\t\t\t\tconst result = TypeIdHelper.nativeInheritsFrom(\n\t\t\t\t\t\"NamedProperty\",\n\t\t\t\t\t\"ContainerProperty\",\n\t\t\t\t);\n\n\t\t\t\texpect(result).to.be.true;\n\t\t\t});\n\n\t\t\tit(\"should recognize that the String inherits from ContainerProperty\", () => {\n\t\t\t\tconst result = TypeIdHelper.nativeInheritsFrom(\"String\", \"ContainerProperty\");\n\n\t\t\t\texpect(result).to.be.true;\n\t\t\t});\n\n\t\t\tit(\"should recognize that the NamedNodeProperty inherits from NamedProperty\", () => {\n\t\t\t\tconst result = TypeIdHelper.nativeInheritsFrom(\n\t\t\t\t\t\"NamedNodeProperty\",\n\t\t\t\t\t\"NamedProperty\",\n\t\t\t\t);\n\n\t\t\t\texpect(result).to.be.true;\n\t\t\t});\n\n\t\t\tit(\"should recognize that the NamedNodeProperty inherits from NodeProperty\", () => {\n\t\t\t\tconst result = TypeIdHelper.nativeInheritsFrom(\"NamedNodeProperty\", \"NodeProperty\");\n\n\t\t\t\texpect(result).to.be.true;\n\t\t\t});\n\n\t\t\tit(\"should recognize that the RelationshipProperty inherits from NodeProperty and NamedProperty\", () => {\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"RelationshipProperty\", \"NodeProperty\")).to\n\t\t\t\t\t.be.true;\n\t\t\t\texpect(TypeIdHelper.nativeInheritsFrom(\"RelationshipProperty\", \"NamedProperty\")).to\n\t\t\t\t\t.be.true;\n\t\t\t});\n\t\t});\n\t});\n})();\n"]}
|
package/lib/utils.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
1
5
|
import { ErrorCallback } from "async";
|
|
2
|
-
import { SerializedChangeSet } from "./changeset";
|
|
3
|
-
import { ExtractedContext } from "./helpers/typeidHelper";
|
|
4
|
-
import { PathTree } from "./pathHelper";
|
|
6
|
+
import { SerializedChangeSet } from "./changeset.js";
|
|
7
|
+
import { ExtractedContext } from "./helpers/typeidHelper.js";
|
|
8
|
+
import { PathTree } from "./pathHelper.js";
|
|
5
9
|
/**
|
|
6
10
|
* Utils
|
|
7
11
|
* @alias property-changeset.Utils
|
|
@@ -357,11 +361,11 @@ export declare namespace Utils {
|
|
|
357
361
|
*
|
|
358
362
|
* ```typescript
|
|
359
363
|
* new Map([
|
|
360
|
-
*
|
|
361
|
-
*
|
|
362
|
-
*
|
|
363
|
-
*
|
|
364
|
-
*
|
|
364
|
+
* ['entry', new Map()],
|
|
365
|
+
* ['nested', new Map([
|
|
366
|
+
* ['entry2', new Map()],
|
|
367
|
+
* ['entry3', new Map()]
|
|
368
|
+
* ])]
|
|
365
369
|
* ])
|
|
366
370
|
* ```
|
|
367
371
|
*
|
|
@@ -369,11 +373,11 @@ export declare namespace Utils {
|
|
|
369
373
|
*
|
|
370
374
|
* ```typescript
|
|
371
375
|
* {
|
|
372
|
-
*
|
|
373
|
-
*
|
|
374
|
-
*
|
|
375
|
-
*
|
|
376
|
-
*
|
|
376
|
+
* entry: {},
|
|
377
|
+
* nested: {
|
|
378
|
+
* entry2: {}
|
|
379
|
+
* entry3: {}
|
|
380
|
+
* }
|
|
377
381
|
* }
|
|
378
382
|
* ```
|
|
379
383
|
*
|
package/lib/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,aAAa,EAAyD,MAAM,OAAO,CAAC;AAU7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD,OAAO,EAAE,gBAAgB,EAAgB,MAAM,2BAA2B,CAAC;AAE3E,OAAO,EAAc,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAMvD;;;;;GAKG;AAEH,yBAAiB,KAAK,CAAC;IACtB;;OAEG;IACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3D;;OAEG;IACH,MAAM,MAAM,qBAAqB,GAC9B,OAAO,GACP,KAAK,GACL,KAAK,GACL,MAAM,GACN,cAAc,GACd,UAAU,CAAC;IAEd,UAAU,gBAAgB;QACzB;;WAEG;QACH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,GAAG,CAAC;QACjD;;WAEG;QACH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,GAAG,CAAC;QAClD;;WAEG;QACH,QAAQ,CAAC,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;QAClC;;WAEG;QACH,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B;;WAEG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;KACpB;IAi9BD,UAAU,sBAAsB;QAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;QAC9C,aAAa,CAAC,EAAE,aAAa,CAAC;KAC9B;IAED;;;OAGG;IACH,MAAM,OAAO,gBAAgB;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;QAC9B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,YAAY,EAAE,GAAG,CAAC;QAClB,SAAS,EAAE,GAAG,CAAC;QACf,iBAAiB,EAAE,OAAO,CAAC;QAC3B,gBAAgB,EAAE,mBAAmB,CAAC;QACtC,sBAAsB,EAAE,mBAAmB,CAAC;QAC5C,sBAAsB,EAAE,qBAAqB,CAAC;QAC9C,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;QACrC,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;QACzC,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1C,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;QACzC,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,YAAY,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;QAClC,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,UAAU,EAAE,GAAG,EAAE,CAAC;QAClB,cAAc,EAAE,aAAa,CAAC;oBACzB,MAAM,GAAE,sBAA2B;QAyB/C;;WAEG;QACH,YAAY,IAAI,OAAO;QAIvB;;WAEG;QACH,aAAa;QAIb;;WAEG;QACH,cAAc;QAId;;;WAGG;QACH,gBAAgB,IAAI,aAAa;QAIjC;;;;WAIG;QACH,WAAW,IAAI,MAAM;QAIrB;;;;;;;;WAQG;QACH,cAAc,IAAI,MAAM,GAAG,MAAM;QAIjC;;;;;;;WAOG;QACH,qBAAqB,IAAI,MAAM,GAAG,MAAM;QAYxC;;;;;WAKG;QACH,cAAc,CAAC,UAAU,EAAE,gBAAgB;QAI3C;;;WAGG;QAGH,OAAO,CAAC,UAAU;QAQlB;;;;WAIG;QACH,kBAAkB,IAAI,MAAM,GAAG,MAAM;QAcrC;;;WAGG;QACH,SAAS,IAAI,MAAM,GAAG,SAAS;QAI/B;;;;;WAKG;QACH,kBAAkB,IAAI,mBAAmB;QAIzC;;;;WAIG;QACH,sBAAsB,CAAC,qBAAqB,EAAE,mBAAmB;QA2BjE;;;;WAIG;QACH,wBAAwB,IAAI,mBAAmB;QAI/C;;;WAGG;QACH,cAAc,IAAI,gBAAgB;QAIlC;;WAEG;QACH,cAAc,CAAC,WAAW,EAAE,gBAAgB;QAI5C;;;;WAIG;QACH,WAAW,CAAC,WAAW,EAAE,GAAG;QAI5B;;;;WAIG;QACH,WAAW,IAAI,GAAG;QAIlB;;;WAGG;QACH,KAAK,IAAI,gBAAgB;QA2BzB;;;;;WAKG;QACH,wBAAwB,IAAI,qBAAqB;QAIjD;;;;WAIG;QACH,sBAAsB,IAAI,MAAM,GAAG,SAAS;QAI5C;;;;WAIG;QACH,uBAAuB,IAAI,MAAM,GAAG,SAAS;QAI7C;;;;;;WAMG;QACH,kBAAkB;QAIlB;;;;WAIG;QACH,sBAAsB,IAAI,MAAM,GAAG,SAAS;QAI5C;;;;;;WAMG;QACH,eAAe,IAAI,MAAM;QAIzB;;;WAGG;QACH,aAAa,IAAI,MAAM;QAIvB;;;WAGG;QACH,YAAY,IAAI,MAAM,EAAE;QAIxB;;;WAGG;QACH,cAAc,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE;QAIrC;;;WAGG;QACH,iBAAiB,IAAI,MAAM,EAAE;QAI7B;;;WAGG;QACH,YAAY,IAAI,MAAM,EAAE;QAIxB;;WAEG;QACH,oBAAoB,IAAI,MAAM;KAG9B;IAED;;;;;;;OAOG;IACH,MAAM,UAAU,4BAA4B,CAC3C,YAAY,EAAE,mBAAmB,EACjC,SAAS,CAAC,EAAE,gBAAgB,QAyB5B;IAED;;;;;;;;OAQG;IACH,MAAM,UAAU,iCAAiC,CAChD,YAAY,EAAE,mBAAmB,EACjC,SAAS,CAAC,EAAE,gBAAgB,EAC5B,YAAY,CAAC,EAAE,CAAC,GAAG,KAAA,KAAK,GAAG,QA8B3B;IAED;;;;;;;OAOG;IACH,MAAM,UAAU,cAAc,CAAC,YAAY,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAc1E;IAED;;;;;;;;;;OAUG;IACH,MAAM,UAAU,gBAAgB,CAC/B,YAAY,EAAE,mBAAmB,EACjC,WAAW,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,EAAE,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,IAAI,EACpF,YAAY,EAAE,aAAa,CAAC,KAAK,CAAC,GAChC,MAAM,EAAE,CAuBV;IAED;;;;;;OAMG;IACH,MAAM,UAAU,aAAa,CAAC,YAAY,EAAE,mBAAmB,QA4D9D;IAED;;;;;;;;OAQG;IACH,MAAM,UAAU,gBAAgB,CAC/B,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,mBAAmB,EACjC,iBAAiB,EAAE,OAAO,GACxB;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAkCtC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,UAAU,gBAAgB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,KAAA,EACP,YAAY,EAAE,mBAAmB,EACjC,iBAAiB,EAAE,OAAO,GACxB,MAAM,CA2ER;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4EG;IACH,MAAM,UAAU,0BAA0B,CACzC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAChE,YAAY,EAAE,GAAG,EACjB,WAAW,EAAE;QACZ,CACC,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,GAAG,EACd,aAAa,EAAE,MAAM,EAAE,EACvB,qBAAqB,EAAE,OAAO,GAC5B,IAAI,CAAC;QACR,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;KACtE,EACD,UAAU,GAAE;QACX,6BAA6B,CAAC,EAAE,OAAO,CAAC;QACxC,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;KACgD,QA4KrE;IAED,KAAK,SAAS,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC;IAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCG;IACH,MAAM,UAAU,2BAA2B,CAC1C,YAAY,EAAE,mBAAmB,EACjC,QAAQ,EAAE,SAAS,GACjB,mBAAmB,CAuNrB;IAED;;;;;;;;OAQG;IACH,MAAM,UAAU,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,QAAQ,CAuCnE;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH,MAAM,UAAU,yBAAyB,CACxC,YAAY,EAAE,mBAAmB,EACjC,QAAQ,EAAE,MAAM,EAAE,GAChB,mBAAmB,CA6BrB;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAM,UAAU,yBAAyB,CACxC,YAAY,EAAE,mBAAmB,EACjC,UAAU,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GACtE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAiB5D;;CACD"}
|
package/lib/utils.js
CHANGED
|
@@ -3,21 +3,21 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
// @ts-ignore
|
|
6
|
-
import {
|
|
6
|
+
import { constants, ConsoleUtils } from "@fluid-experimental/property-common";
|
|
7
7
|
import { eachOfSeries, eachSeries, series, timesSeries, whilst } from "async";
|
|
8
8
|
import { copy as cloneDeep } from "fastest-json-copy";
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import { ArrayChangeSetIterator } from "./changeset_operations/arrayChangesetIterator";
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
9
|
+
import each from "lodash/each.js";
|
|
10
|
+
import extend from "lodash/extend.js";
|
|
11
|
+
import find from "lodash/find.js";
|
|
12
|
+
import isEmpty from "lodash/isEmpty.js";
|
|
13
|
+
import isEqual from "lodash/isEqual.js";
|
|
14
|
+
import isNumber from "lodash/isNumber.js";
|
|
15
|
+
import isString from "lodash/isString.js";
|
|
16
|
+
import { ArrayChangeSetIterator } from "./changeset_operations/arrayChangesetIterator.js";
|
|
17
|
+
import { ArrayIteratorOperationTypes } from "./changeset_operations/operationTypes.js";
|
|
18
|
+
import { TypeIdHelper } from "./helpers/typeidHelper.js";
|
|
19
|
+
import { isReservedKeyword } from "./isReservedKeyword.js";
|
|
20
|
+
import { PathHelper } from "./pathHelper.js";
|
|
21
21
|
const { PROPERTY_PATH_DELIMITER, MSG } = constants;
|
|
22
22
|
/**
|
|
23
23
|
* Utils
|
|
@@ -1311,11 +1311,11 @@ export var Utils;
|
|
|
1311
1311
|
*
|
|
1312
1312
|
* ```typescript
|
|
1313
1313
|
* new Map([
|
|
1314
|
-
*
|
|
1315
|
-
*
|
|
1316
|
-
*
|
|
1317
|
-
*
|
|
1318
|
-
*
|
|
1314
|
+
* ['entry', new Map()],
|
|
1315
|
+
* ['nested', new Map([
|
|
1316
|
+
* ['entry2', new Map()],
|
|
1317
|
+
* ['entry3', new Map()]
|
|
1318
|
+
* ])]
|
|
1319
1319
|
* ])
|
|
1320
1320
|
* ```
|
|
1321
1321
|
*
|
|
@@ -1323,11 +1323,11 @@ export var Utils;
|
|
|
1323
1323
|
*
|
|
1324
1324
|
* ```typescript
|
|
1325
1325
|
* {
|
|
1326
|
-
*
|
|
1327
|
-
*
|
|
1328
|
-
*
|
|
1329
|
-
*
|
|
1330
|
-
*
|
|
1326
|
+
* entry: {},
|
|
1327
|
+
* nested: {
|
|
1328
|
+
* entry2: {}
|
|
1329
|
+
* entry3: {}
|
|
1330
|
+
* }
|
|
1331
1331
|
* }
|
|
1332
1332
|
* ```
|
|
1333
1333
|
*
|