dragonfly-schema 1.1301.2 → 1.1301.4
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/index.cjs +7670 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +735 -0
- package/dist/index.d.ts +735 -0
- package/dist/index.js +7609 -0
- package/dist/index.js.map +1 -0
- package/package.json +14 -10
- package/dist/src/helpers/class-validator.d.ts +0 -5
- package/dist/src/helpers/class-validator.d.ts.map +0 -1
- package/dist/src/helpers/class-validator.js +0 -78
- package/dist/src/index.d.ts +0 -3
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -18
- package/dist/src/models/Building.d.ts +0 -24
- package/dist/src/models/Building.d.ts.map +0 -1
- package/dist/src/models/Building.js +0 -125
- package/dist/src/models/BuildingEnergyPropertiesAbridged.d.ts +0 -18
- package/dist/src/models/BuildingEnergyPropertiesAbridged.d.ts.map +0 -1
- package/dist/src/models/BuildingEnergyPropertiesAbridged.js +0 -106
- package/dist/src/models/BuildingPropertiesAbridged.d.ts +0 -17
- package/dist/src/models/BuildingPropertiesAbridged.d.ts.map +0 -1
- package/dist/src/models/BuildingPropertiesAbridged.js +0 -94
- package/dist/src/models/BuildingRadiancePropertiesAbridged.d.ts +0 -14
- package/dist/src/models/BuildingRadiancePropertiesAbridged.d.ts.map +0 -1
- package/dist/src/models/BuildingRadiancePropertiesAbridged.js +0 -78
- package/dist/src/models/ContextShade.d.ts +0 -21
- package/dist/src/models/ContextShade.d.ts.map +0 -1
- package/dist/src/models/ContextShade.js +0 -114
- package/dist/src/models/ContextShadeEnergyPropertiesAbridged.d.ts +0 -16
- package/dist/src/models/ContextShadeEnergyPropertiesAbridged.d.ts.map +0 -1
- package/dist/src/models/ContextShadeEnergyPropertiesAbridged.js +0 -93
- package/dist/src/models/ContextShadePropertiesAbridged.d.ts +0 -17
- package/dist/src/models/ContextShadePropertiesAbridged.d.ts.map +0 -1
- package/dist/src/models/ContextShadePropertiesAbridged.js +0 -94
- package/dist/src/models/ContextShadeRadiancePropertiesAbridged.d.ts +0 -14
- package/dist/src/models/ContextShadeRadiancePropertiesAbridged.d.ts.map +0 -1
- package/dist/src/models/ContextShadeRadiancePropertiesAbridged.js +0 -78
- package/dist/src/models/DetailedSkylights.d.ts +0 -16
- package/dist/src/models/DetailedSkylights.d.ts.map +0 -1
- package/dist/src/models/DetailedSkylights.js +0 -92
- package/dist/src/models/DetailedWindows.d.ts +0 -16
- package/dist/src/models/DetailedWindows.d.ts.map +0 -1
- package/dist/src/models/DetailedWindows.js +0 -92
- package/dist/src/models/ExteriorApertureGridParameter.d.ts +0 -17
- package/dist/src/models/ExteriorApertureGridParameter.d.ts.map +0 -1
- package/dist/src/models/ExteriorApertureGridParameter.js +0 -93
- package/dist/src/models/ExteriorApertureType.d.ts +0 -7
- package/dist/src/models/ExteriorApertureType.d.ts.map +0 -1
- package/dist/src/models/ExteriorApertureType.js +0 -11
- package/dist/src/models/ExteriorFaceGridParameter.d.ts +0 -19
- package/dist/src/models/ExteriorFaceGridParameter.d.ts.map +0 -1
- package/dist/src/models/ExteriorFaceGridParameter.js +0 -105
- package/dist/src/models/ExteriorFaceType.d.ts +0 -8
- package/dist/src/models/ExteriorFaceType.d.ts.map +0 -1
- package/dist/src/models/ExteriorFaceType.js +0 -12
- package/dist/src/models/ExtrudedBorder.d.ts +0 -14
- package/dist/src/models/ExtrudedBorder.d.ts.map +0 -1
- package/dist/src/models/ExtrudedBorder.js +0 -78
- package/dist/src/models/GriddedSkylightArea.d.ts +0 -17
- package/dist/src/models/GriddedSkylightArea.d.ts.map +0 -1
- package/dist/src/models/GriddedSkylightArea.js +0 -90
- package/dist/src/models/GriddedSkylightRatio.d.ts +0 -17
- package/dist/src/models/GriddedSkylightRatio.d.ts.map +0 -1
- package/dist/src/models/GriddedSkylightRatio.js +0 -90
- package/dist/src/models/LouversByCount.d.ts +0 -14
- package/dist/src/models/LouversByCount.d.ts.map +0 -1
- package/dist/src/models/LouversByCount.js +0 -78
- package/dist/src/models/LouversByDistance.d.ts +0 -14
- package/dist/src/models/LouversByDistance.d.ts.map +0 -1
- package/dist/src/models/LouversByDistance.js +0 -78
- package/dist/src/models/Model.d.ts +0 -30
- package/dist/src/models/Model.d.ts.map +0 -1
- package/dist/src/models/Model.js +0 -164
- package/dist/src/models/ModelEnergyProperties.d.ts +0 -79
- package/dist/src/models/ModelEnergyProperties.d.ts.map +0 -1
- package/dist/src/models/ModelEnergyProperties.js +0 -769
- package/dist/src/models/ModelProperties.d.ts +0 -17
- package/dist/src/models/ModelProperties.d.ts.map +0 -1
- package/dist/src/models/ModelProperties.js +0 -94
- package/dist/src/models/ModelRadianceProperties.d.ts +0 -30
- package/dist/src/models/ModelRadianceProperties.d.ts.map +0 -1
- package/dist/src/models/ModelRadianceProperties.js +0 -306
- package/dist/src/models/Overhang.d.ts +0 -16
- package/dist/src/models/Overhang.d.ts.map +0 -1
- package/dist/src/models/Overhang.js +0 -92
- package/dist/src/models/RectangularWindows.d.ts +0 -20
- package/dist/src/models/RectangularWindows.d.ts.map +0 -1
- package/dist/src/models/RectangularWindows.js +0 -116
- package/dist/src/models/RepeatingWindowRatio.d.ts +0 -22
- package/dist/src/models/RepeatingWindowRatio.d.ts.map +0 -1
- package/dist/src/models/RepeatingWindowRatio.js +0 -125
- package/dist/src/models/RoofSpecification.d.ts +0 -15
- package/dist/src/models/RoofSpecification.d.ts.map +0 -1
- package/dist/src/models/RoofSpecification.js +0 -82
- package/dist/src/models/Room2D.d.ts +0 -63
- package/dist/src/models/Room2D.d.ts.map +0 -1
- package/dist/src/models/Room2D.js +0 -328
- package/dist/src/models/Room2DEnergyPropertiesAbridged.d.ts +0 -29
- package/dist/src/models/Room2DEnergyPropertiesAbridged.d.ts.map +0 -1
- package/dist/src/models/Room2DEnergyPropertiesAbridged.js +0 -162
- package/dist/src/models/Room2DPropertiesAbridged.d.ts +0 -17
- package/dist/src/models/Room2DPropertiesAbridged.d.ts.map +0 -1
- package/dist/src/models/Room2DPropertiesAbridged.js +0 -94
- package/dist/src/models/Room2DRadiancePropertiesAbridged.d.ts +0 -20
- package/dist/src/models/Room2DRadiancePropertiesAbridged.d.ts.map +0 -1
- package/dist/src/models/Room2DRadiancePropertiesAbridged.js +0 -105
- package/dist/src/models/RoomGridParameter.d.ts +0 -16
- package/dist/src/models/RoomGridParameter.d.ts.map +0 -1
- package/dist/src/models/RoomGridParameter.js +0 -91
- package/dist/src/models/RoomRadialGridParameter.d.ts +0 -19
- package/dist/src/models/RoomRadialGridParameter.d.ts.map +0 -1
- package/dist/src/models/RoomRadialGridParameter.js +0 -103
- package/dist/src/models/SimpleWindowArea.d.ts +0 -16
- package/dist/src/models/SimpleWindowArea.d.ts.map +0 -1
- package/dist/src/models/SimpleWindowArea.js +0 -90
- package/dist/src/models/SimpleWindowRatio.d.ts +0 -16
- package/dist/src/models/SimpleWindowRatio.d.ts.map +0 -1
- package/dist/src/models/SimpleWindowRatio.js +0 -90
- package/dist/src/models/SingleWindow.d.ts +0 -18
- package/dist/src/models/SingleWindow.d.ts.map +0 -1
- package/dist/src/models/SingleWindow.js +0 -101
- package/dist/src/models/Story.d.ts +0 -31
- package/dist/src/models/Story.d.ts.map +0 -1
- package/dist/src/models/Story.js +0 -160
- package/dist/src/models/StoryEnergyPropertiesAbridged.d.ts +0 -14
- package/dist/src/models/StoryEnergyPropertiesAbridged.d.ts.map +0 -1
- package/dist/src/models/StoryEnergyPropertiesAbridged.js +0 -80
- package/dist/src/models/StoryPropertiesAbridged.d.ts +0 -17
- package/dist/src/models/StoryPropertiesAbridged.d.ts.map +0 -1
- package/dist/src/models/StoryPropertiesAbridged.js +0 -94
- package/dist/src/models/StoryRadiancePropertiesAbridged.d.ts +0 -14
- package/dist/src/models/StoryRadiancePropertiesAbridged.d.ts.map +0 -1
- package/dist/src/models/StoryRadiancePropertiesAbridged.js +0 -78
- package/dist/src/models/StoryType.d.ts +0 -7
- package/dist/src/models/StoryType.d.ts.map +0 -1
- package/dist/src/models/StoryType.js +0 -11
- package/dist/src/models/_GridParameterBase.d.ts +0 -16
- package/dist/src/models/_GridParameterBase.d.ts.map +0 -1
- package/dist/src/models/_GridParameterBase.js +0 -90
- package/dist/src/models/_LouversBase.d.ts +0 -22
- package/dist/src/models/_LouversBase.d.ts.map +0 -1
- package/dist/src/models/_LouversBase.js +0 -130
- package/dist/src/models/_OpenAPIGenBaseModel.d.ts +0 -9
- package/dist/src/models/_OpenAPIGenBaseModel.d.ts.map +0 -1
- package/dist/src/models/_OpenAPIGenBaseModel.js +0 -53
- package/dist/src/models/_WindowParameterBase.d.ts +0 -14
- package/dist/src/models/_WindowParameterBase.d.ts.map +0 -1
- package/dist/src/models/_WindowParameterBase.js +0 -77
- package/dist/src/models/index.d.ts +0 -46
- package/dist/src/models/index.d.ts.map +0 -1
- package/dist/src/models/index.js +0 -62
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../node_modules/reflect-metadata/Reflect.js","../node_modules/validator/lib/util/assertString.js","../node_modules/validator/lib/isLength.js","../node_modules/validator/lib/matches.js","../src/models/index.ts","../node_modules/src/metadata/ValidationMetadata.ts","../node_modules/src/validation-schema/ValidationSchemaToMetadataTransformer.ts","../node_modules/src/utils/convert-to-array.util.ts","../node_modules/src/utils/get-global.util.ts","../node_modules/src/utils/is-promise.util.ts","../node_modules/src/metadata/MetadataStorage.ts","../node_modules/src/validation/ValidationError.ts","../node_modules/src/validation/ValidationTypes.ts","../node_modules/src/validation/ValidationUtils.ts","../node_modules/src/validation/ValidationExecutor.ts","../node_modules/src/validation/Validator.ts","../node_modules/src/container.ts","../node_modules/src/metadata/ConstraintMetadata.ts","../node_modules/src/register-decorator.ts","../node_modules/src/decorator/common/ValidateBy.ts","../node_modules/src/decorator/common/IsDefined.ts","../node_modules/src/decorator/common/IsOptional.ts","../node_modules/src/decorator/common/ValidateNested.ts","../node_modules/src/decorator/number/Max.ts","../node_modules/src/decorator/number/Min.ts","../node_modules/src/decorator/string/MaxLength.ts","../node_modules/src/decorator/string/MinLength.ts","../node_modules/src/decorator/string/Matches.ts","../node_modules/src/decorator/typechecker/IsBoolean.ts","../node_modules/src/decorator/typechecker/IsNumber.ts","../node_modules/src/decorator/typechecker/IsEnum.ts","../node_modules/src/decorator/typechecker/IsInt.ts","../node_modules/src/decorator/typechecker/IsString.ts","../node_modules/src/decorator/typechecker/IsArray.ts","../node_modules/src/decorator/object/IsInstance.ts","../node_modules/src/index.ts","../node_modules/src/enums/transformation-type.enum.ts","../node_modules/src/MetadataStorage.ts","../node_modules/src/storage.ts","../node_modules/src/utils/get-global.util.ts","../node_modules/src/utils/is-promise.util.ts","../node_modules/src/TransformOperationExecutor.ts","../node_modules/src/constants/default-options.constant.ts","../node_modules/src/ClassTransformer.ts","../node_modules/src/decorators/transform.decorator.ts","../node_modules/src/decorators/type.decorator.ts","../node_modules/src/index.ts","../src/models/_OpenAPIGenBaseModel.ts","../src/models/_GridParameterBase.ts","../src/models/_LouversBase.ts","../src/models/_WindowParameterBase.ts","../src/models/BuildingEnergyPropertiesAbridged.ts","../src/models/BuildingRadiancePropertiesAbridged.ts","../src/models/BuildingPropertiesAbridged.ts","../src/models/Building.ts","../src/models/RoofSpecification.ts","../src/models/Story.ts","../src/helpers/class-validator.ts","../src/models/Room2D.ts","../src/models/DetailedSkylights.ts","../src/models/DetailedWindows.ts","../src/models/ExtrudedBorder.ts","../src/models/GriddedSkylightArea.ts","../src/models/GriddedSkylightRatio.ts","../src/models/LouversByCount.ts","../src/models/LouversByDistance.ts","../src/models/Overhang.ts","../src/models/RectangularWindows.ts","../src/models/RepeatingWindowRatio.ts","../src/models/Room2DEnergyPropertiesAbridged.ts","../src/models/ExteriorApertureType.ts","../src/models/ExteriorApertureGridParameter.ts","../src/models/ExteriorFaceType.ts","../src/models/ExteriorFaceGridParameter.ts","../src/models/RoomGridParameter.ts","../src/models/RoomRadialGridParameter.ts","../src/models/Room2DRadiancePropertiesAbridged.ts","../src/models/Room2DPropertiesAbridged.ts","../src/models/SimpleWindowArea.ts","../src/models/SimpleWindowRatio.ts","../src/models/SingleWindow.ts","../src/models/StoryEnergyPropertiesAbridged.ts","../src/models/StoryRadiancePropertiesAbridged.ts","../src/models/StoryPropertiesAbridged.ts","../src/models/StoryType.ts","../src/models/ContextShadeEnergyPropertiesAbridged.ts","../src/models/ContextShadeRadiancePropertiesAbridged.ts","../src/models/ContextShadePropertiesAbridged.ts","../src/models/ContextShade.ts","../src/models/Model.ts","../src/models/ModelEnergyProperties.ts","../src/models/ModelRadianceProperties.ts","../src/models/ModelProperties.ts"],"sourcesContent":["/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof globalThis === \"object\" ? globalThis :\n typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n sloppyModeThis();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect !== \"undefined\") {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter, root);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n function makeExporter(target, previous) {\n return function (key, value) {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n if (previous)\n previous(key, value);\n };\n }\n function functionThis() {\n try {\n return Function(\"return this;\")();\n }\n catch (_) { }\n }\n function indirectEvalThis() {\n try {\n return (void 0, eval)(\"(function() { return this; })()\");\n }\n catch (_) { }\n }\n function sloppyModeThis() {\n return functionThis() || indirectEvalThis();\n }\n })(function (exporter, root) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var _Map = typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n var registrySymbol = supportsSymbol ? Symbol.for(\"@reflect-metadata:registry\") : undefined;\n var metadataRegistry = GetOrCreateMetadataRegistry();\n var metadataProvider = CreateMetadataProvider(metadataRegistry);\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var provider = GetMetadataProvider(target, propertyKey, /*Create*/ false);\n if (IsUndefined(provider))\n return false;\n return provider.OrdinaryDeleteMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ false);\n if (IsUndefined(provider))\n return false;\n return ToBoolean(provider.OrdinaryHasOwnMetadata(MetadataKey, O, P));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ false);\n if (IsUndefined(provider))\n return;\n return provider.OrdinaryGetOwnMetadata(MetadataKey, O, P);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var provider = GetMetadataProvider(O, P, /*Create*/ true);\n provider.OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var provider = GetMetadataProvider(O, P, /*create*/ false);\n if (!provider) {\n return [];\n }\n return provider.OrdinaryOwnMetadataKeys(O, P);\n }\n // 6 ECMAScript Data Types and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n function SameValueZero(x, y) {\n return x === y || x !== x && y !== y;\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // Global metadata registry\n // - Allows `import \"reflect-metadata\"` and `import \"reflect-metadata/no-conflict\"` to interoperate.\n // - Uses isolated metadata if `Reflect` is frozen before the registry can be installed.\n /**\n * Creates a registry used to allow multiple `reflect-metadata` providers.\n */\n function CreateMetadataRegistry() {\n var fallback;\n if (!IsUndefined(registrySymbol) &&\n typeof root.Reflect !== \"undefined\" &&\n !(registrySymbol in root.Reflect) &&\n typeof root.Reflect.defineMetadata === \"function\") {\n // interoperate with older version of `reflect-metadata` that did not support a registry.\n fallback = CreateFallbackProvider(root.Reflect);\n }\n var first;\n var second;\n var rest;\n var targetProviderMap = new _WeakMap();\n var registry = {\n registerProvider: registerProvider,\n getProvider: getProvider,\n setProvider: setProvider,\n };\n return registry;\n function registerProvider(provider) {\n if (!Object.isExtensible(registry)) {\n throw new Error(\"Cannot add provider to a frozen registry.\");\n }\n switch (true) {\n case fallback === provider: break;\n case IsUndefined(first):\n first = provider;\n break;\n case first === provider: break;\n case IsUndefined(second):\n second = provider;\n break;\n case second === provider: break;\n default:\n if (rest === undefined)\n rest = new _Set();\n rest.add(provider);\n break;\n }\n }\n function getProviderNoCache(O, P) {\n if (!IsUndefined(first)) {\n if (first.isProviderFor(O, P))\n return first;\n if (!IsUndefined(second)) {\n if (second.isProviderFor(O, P))\n return first;\n if (!IsUndefined(rest)) {\n var iterator = GetIterator(rest);\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n return undefined;\n }\n var provider = IteratorValue(next);\n if (provider.isProviderFor(O, P)) {\n IteratorClose(iterator);\n return provider;\n }\n }\n }\n }\n }\n if (!IsUndefined(fallback) && fallback.isProviderFor(O, P)) {\n return fallback;\n }\n return undefined;\n }\n function getProvider(O, P) {\n var providerMap = targetProviderMap.get(O);\n var provider;\n if (!IsUndefined(providerMap)) {\n provider = providerMap.get(P);\n }\n if (!IsUndefined(provider)) {\n return provider;\n }\n provider = getProviderNoCache(O, P);\n if (!IsUndefined(provider)) {\n if (IsUndefined(providerMap)) {\n providerMap = new _Map();\n targetProviderMap.set(O, providerMap);\n }\n providerMap.set(P, provider);\n }\n return provider;\n }\n function hasProvider(provider) {\n if (IsUndefined(provider))\n throw new TypeError();\n return first === provider || second === provider || !IsUndefined(rest) && rest.has(provider);\n }\n function setProvider(O, P, provider) {\n if (!hasProvider(provider)) {\n throw new Error(\"Metadata provider not registered.\");\n }\n var existingProvider = getProvider(O, P);\n if (existingProvider !== provider) {\n if (!IsUndefined(existingProvider)) {\n return false;\n }\n var providerMap = targetProviderMap.get(O);\n if (IsUndefined(providerMap)) {\n providerMap = new _Map();\n targetProviderMap.set(O, providerMap);\n }\n providerMap.set(P, provider);\n }\n return true;\n }\n }\n /**\n * Gets or creates the shared registry of metadata providers.\n */\n function GetOrCreateMetadataRegistry() {\n var metadataRegistry;\n if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n metadataRegistry = root.Reflect[registrySymbol];\n }\n if (IsUndefined(metadataRegistry)) {\n metadataRegistry = CreateMetadataRegistry();\n }\n if (!IsUndefined(registrySymbol) && IsObject(root.Reflect) && Object.isExtensible(root.Reflect)) {\n Object.defineProperty(root.Reflect, registrySymbol, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: metadataRegistry\n });\n }\n return metadataRegistry;\n }\n function CreateMetadataProvider(registry) {\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var metadata = new _WeakMap();\n var provider = {\n isProviderFor: function (O, P) {\n var targetMetadata = metadata.get(O);\n if (IsUndefined(targetMetadata))\n return false;\n return targetMetadata.has(P);\n },\n OrdinaryDefineOwnMetadata: OrdinaryDefineOwnMetadata,\n OrdinaryHasOwnMetadata: OrdinaryHasOwnMetadata,\n OrdinaryGetOwnMetadata: OrdinaryGetOwnMetadata,\n OrdinaryOwnMetadataKeys: OrdinaryOwnMetadataKeys,\n OrdinaryDeleteMetadata: OrdinaryDeleteMetadata,\n };\n metadataRegistry.registerProvider(provider);\n return provider;\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = metadata.get(O);\n var createdTargetMetadata = false;\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n metadata.set(O, targetMetadata);\n createdTargetMetadata = true;\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n if (!registry.setProvider(O, P, provider)) {\n targetMetadata.delete(P);\n if (createdTargetMetadata) {\n metadata.delete(O);\n }\n throw new Error(\"Wrong provider for target.\");\n }\n }\n return metadataMap;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n function OrdinaryDeleteMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(MetadataKey))\n return false;\n if (metadataMap.size === 0) {\n var targetMetadata = metadata.get(O);\n if (!IsUndefined(targetMetadata)) {\n targetMetadata.delete(P);\n if (targetMetadata.size === 0) {\n metadata.delete(targetMetadata);\n }\n }\n }\n return true;\n }\n }\n function CreateFallbackProvider(reflect) {\n var defineMetadata = reflect.defineMetadata, hasOwnMetadata = reflect.hasOwnMetadata, getOwnMetadata = reflect.getOwnMetadata, getOwnMetadataKeys = reflect.getOwnMetadataKeys, deleteMetadata = reflect.deleteMetadata;\n var metadataOwner = new _WeakMap();\n var provider = {\n isProviderFor: function (O, P) {\n var metadataPropertySet = metadataOwner.get(O);\n if (!IsUndefined(metadataPropertySet) && metadataPropertySet.has(P)) {\n return true;\n }\n if (getOwnMetadataKeys(O, P).length) {\n if (IsUndefined(metadataPropertySet)) {\n metadataPropertySet = new _Set();\n metadataOwner.set(O, metadataPropertySet);\n }\n metadataPropertySet.add(P);\n return true;\n }\n return false;\n },\n OrdinaryDefineOwnMetadata: defineMetadata,\n OrdinaryHasOwnMetadata: hasOwnMetadata,\n OrdinaryGetOwnMetadata: getOwnMetadata,\n OrdinaryOwnMetadataKeys: getOwnMetadataKeys,\n OrdinaryDeleteMetadata: deleteMetadata,\n };\n return provider;\n }\n /**\n * Gets the metadata provider for an object. If the object has no metadata provider and this is for a create operation,\n * then this module's metadata provider is assigned to the object.\n */\n function GetMetadataProvider(O, P, Create) {\n var registeredProvider = metadataRegistry.getProvider(O, P);\n if (!IsUndefined(registeredProvider)) {\n return registeredProvider;\n }\n if (Create) {\n if (metadataRegistry.setProvider(O, P, metadataProvider)) {\n return metadataProvider;\n }\n throw new Error(\"Illegal state.\");\n }\n return undefined;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n var Map = /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (SameValueZero(key, this._cacheKey)) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (!SameValueZero(this._cacheKey, key)) {\n this._cacheIndex = -1;\n for (var i = 0; i < this._keys.length; i++) {\n if (SameValueZero(this._keys[i], key)) {\n this._cacheIndex = i;\n break;\n }\n }\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n return Map;\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n var Set = /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.keys(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n return Set;\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n var array = new Uint8Array(size);\n if (typeof crypto !== \"undefined\") {\n crypto.getRandomValues(array);\n }\n else if (typeof msCrypto !== \"undefined\") {\n msCrypto.getRandomValues(array);\n }\n else {\n FillRandomBytes(array, size);\n }\n return array;\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 § 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assertString;\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction assertString(input) {\n var isString = typeof input === 'string' || input instanceof String;\n if (!isString) {\n var invalidType = _typeof(input);\n if (input === null) invalidType = 'null';else if (invalidType === 'object') invalidType = input.constructor.name;\n throw new TypeError(\"Expected a string but received a \".concat(invalidType));\n }\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isLength;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n/* eslint-disable prefer-rest-params */\nfunction isLength(str, options) {\n (0, _assertString.default)(str);\n var min;\n var max;\n if (_typeof(options) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isLength(str, min [, max])\n min = arguments[1] || 0;\n max = arguments[2];\n }\n var presentationSequences = str.match(/(\\uFE0F|\\uFE0E)/g) || [];\n var surrogatePairs = str.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g) || [];\n var len = str.length - presentationSequences.length - surrogatePairs.length;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = matches;\nvar _assertString = _interopRequireDefault(require(\"./util/assertString\"));\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\nfunction matches(str, pattern, modifiers) {\n (0, _assertString.default)(str);\n if (Object.prototype.toString.call(pattern) !== '[object RegExp]') {\n pattern = new RegExp(pattern, modifiers);\n }\n return !!str.match(pattern);\n}\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","// Auto-generated\nimport 'reflect-metadata'; // Must have for class validator // Ensure this is at the top\nexport * from \"./_GridParameterBase\";\nexport * from \"./_LouversBase\";\nexport * from \"./_OpenAPIGenBaseModel\";\nexport * from \"./_WindowParameterBase\";\nexport * from \"./Building\";\nexport * from \"./BuildingEnergyPropertiesAbridged\";\nexport * from \"./BuildingPropertiesAbridged\";\nexport * from \"./BuildingRadiancePropertiesAbridged\";\nexport * from \"./ContextShade\";\nexport * from \"./ContextShadeEnergyPropertiesAbridged\";\nexport * from \"./ContextShadePropertiesAbridged\";\nexport * from \"./ContextShadeRadiancePropertiesAbridged\";\nexport * from \"./DetailedSkylights\";\nexport * from \"./DetailedWindows\";\nexport * from \"./ExteriorApertureGridParameter\";\nexport * from \"./ExteriorApertureType\";\nexport * from \"./ExteriorFaceGridParameter\";\nexport * from \"./ExteriorFaceType\";\nexport * from \"./ExtrudedBorder\";\nexport * from \"./GriddedSkylightArea\";\nexport * from \"./GriddedSkylightRatio\";\nexport * from \"./LouversByCount\";\nexport * from \"./LouversByDistance\";\nexport * from \"./Model\";\nexport * from \"./ModelEnergyProperties\";\nexport * from \"./ModelProperties\";\nexport * from \"./ModelRadianceProperties\";\nexport * from \"./Overhang\";\nexport * from \"./RectangularWindows\";\nexport * from \"./RepeatingWindowRatio\";\nexport * from \"./RoofSpecification\";\nexport * from \"./Room2D\";\nexport * from \"./Room2DEnergyPropertiesAbridged\";\nexport * from \"./Room2DPropertiesAbridged\";\nexport * from \"./Room2DRadiancePropertiesAbridged\";\nexport * from \"./RoomGridParameter\";\nexport * from \"./RoomRadialGridParameter\";\nexport * from \"./SimpleWindowArea\";\nexport * from \"./SimpleWindowRatio\";\nexport * from \"./SingleWindow\";\nexport * from \"./Story\";\nexport * from \"./StoryEnergyPropertiesAbridged\";\nexport * from \"./StoryPropertiesAbridged\";\nexport * from \"./StoryRadiancePropertiesAbridged\";\nexport * from \"./StoryType\";\n","import { ValidationMetadataArgs } from './ValidationMetadataArgs';\nimport { ValidationArguments } from '../validation/ValidationArguments';\n\n/**\n * This metadata contains validation rules.\n */\nexport class ValidationMetadata {\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n\n /**\n * Validation type.\n */\n type: string;\n\n /**\n * Validator name.\n */\n name?: string;\n\n /**\n * Target class to which this validation is applied.\n */\n target: Function | string;\n\n /**\n * Property of the object to be validated.\n */\n propertyName: string;\n\n /**\n * Constraint class that performs validation. Used only for custom validations.\n */\n constraintCls: Function;\n\n /**\n * Array of constraints of this validation.\n */\n constraints: any[];\n\n /**\n * Validation message to be shown in the case of error.\n */\n message: string | ((args: ValidationArguments) => string);\n\n /**\n * Validation groups used for this validation.\n */\n groups: string[] = [];\n\n /**\n * Indicates if validation must be performed always, no matter of validation groups used.\n */\n always?: boolean;\n\n /**\n * Specifies if validated value is an array and each of its item must be validated.\n */\n each: boolean = false;\n\n /*\n * A transient set of data passed through to the validation result for response mapping\n */\n context?: any = undefined;\n\n /**\n * Extra options specific to validation type.\n */\n validationTypeOptions: any;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(args: ValidationMetadataArgs) {\n this.type = args.type;\n this.name = args.name;\n this.target = args.target;\n this.propertyName = args.propertyName;\n this.constraints = args?.constraints;\n this.constraintCls = args.constraintCls;\n this.validationTypeOptions = args.validationTypeOptions;\n if (args.validationOptions) {\n this.message = args.validationOptions.message;\n this.groups = args.validationOptions.groups;\n this.always = args.validationOptions.always;\n this.each = args.validationOptions.each;\n this.context = args.validationOptions.context;\n }\n }\n}\n","import { ValidationSchema } from './ValidationSchema';\nimport { ValidationMetadata } from '../metadata/ValidationMetadata';\nimport { ValidationMetadataArgs } from '../metadata/ValidationMetadataArgs';\nimport { ValidationOptions } from '../decorator/ValidationOptions';\n\n/**\n * Used to transform validation schemas to validation metadatas.\n */\nexport class ValidationSchemaToMetadataTransformer {\n transform(schema: ValidationSchema): ValidationMetadata[] {\n const metadatas: ValidationMetadata[] = [];\n Object.keys(schema.properties).forEach(property => {\n schema.properties[property].forEach(validation => {\n const validationOptions: ValidationOptions = {\n message: validation.message,\n groups: validation.groups,\n always: validation.always,\n each: validation.each,\n };\n const args: ValidationMetadataArgs = {\n type: validation.type,\n name: validation.name,\n target: schema.name,\n propertyName: property,\n constraints: validation.constraints,\n validationTypeOptions: validation.options,\n validationOptions: validationOptions,\n };\n metadatas.push(new ValidationMetadata(args));\n });\n });\n return metadatas;\n }\n}\n","/**\n * Convert Map, Set to Array\n */\nexport function convertToArray<T>(val: Array<T> | Set<T> | Map<any, T>): Array<T> {\n if (val instanceof Map) {\n return Array.from(val.values());\n }\n return Array.isArray(val) ? val : Array.from(val);\n}\n","/**\n * This function returns the global object across Node and browsers.\n *\n * Note: `globalThis` is the standardized approach however it has been added to\n * Node.js in version 12. We need to include this snippet until Node 12 EOL.\n */\nexport function getGlobal() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n\n if (typeof global !== 'undefined') {\n return global;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'window'.\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'window'.\n return window;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'self'.\n if (typeof self !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'self'.\n return self;\n }\n}\n","// https://github.com/TylorS/typed-is-promise/blob/abf1514e1b6961adfc75765476b0debb96b2c3ae/src/index.ts\n\nexport function isPromise<T = any>(p: any): p is Promise<T> {\n return p !== null && typeof p === 'object' && typeof p.then === 'function';\n}\n","import { ValidationMetadata } from './ValidationMetadata';\nimport { ConstraintMetadata } from './ConstraintMetadata';\nimport { ValidationSchema } from '../validation-schema/ValidationSchema';\nimport { ValidationSchemaToMetadataTransformer } from '../validation-schema/ValidationSchemaToMetadataTransformer';\nimport { getGlobal } from '../utils';\n\n/**\n * Storage all metadatas.\n */\nexport class MetadataStorage {\n // -------------------------------------------------------------------------\n // Private properties\n // -------------------------------------------------------------------------\n\n private validationMetadatas: Map<any, ValidationMetadata[]> = new Map();\n private constraintMetadatas: Map<any, ConstraintMetadata[]> = new Map();\n\n get hasValidationMetaData(): boolean {\n return !!this.validationMetadatas.size;\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Adds a new validation metadata.\n */\n addValidationSchema(schema: ValidationSchema): void {\n const validationMetadatas = new ValidationSchemaToMetadataTransformer().transform(schema);\n validationMetadatas.forEach(validationMetadata => this.addValidationMetadata(validationMetadata));\n }\n\n /**\n * Adds a new validation metadata.\n */\n addValidationMetadata(metadata: ValidationMetadata): void {\n const existingMetadata = this.validationMetadatas.get(metadata.target);\n\n if (existingMetadata) {\n existingMetadata.push(metadata);\n } else {\n this.validationMetadatas.set(metadata.target, [metadata]);\n }\n }\n\n /**\n * Adds a new constraint metadata.\n */\n addConstraintMetadata(metadata: ConstraintMetadata): void {\n const existingMetadata = this.constraintMetadatas.get(metadata.target);\n\n if (existingMetadata) {\n existingMetadata.push(metadata);\n } else {\n this.constraintMetadatas.set(metadata.target, [metadata]);\n }\n }\n\n /**\n * Groups metadata by their property names.\n */\n groupByPropertyName(metadata: ValidationMetadata[]): { [propertyName: string]: ValidationMetadata[] } {\n const grouped: { [propertyName: string]: ValidationMetadata[] } = {};\n metadata.forEach(metadata => {\n if (!grouped[metadata.propertyName]) grouped[metadata.propertyName] = [];\n grouped[metadata.propertyName].push(metadata);\n });\n return grouped;\n }\n\n /**\n * Gets all validation metadatas for the given object with the given groups.\n */\n getTargetValidationMetadatas(\n targetConstructor: Function,\n targetSchema: string,\n always: boolean,\n strictGroups: boolean,\n groups?: string[]\n ): ValidationMetadata[] {\n const includeMetadataBecauseOfAlwaysOption = (metadata: ValidationMetadata): boolean => {\n // `metadata.always` overrides global default.\n if (typeof metadata.always !== 'undefined') return metadata.always;\n\n // `metadata.groups` overrides global default.\n if (metadata.groups && metadata.groups.length) return false;\n\n // Use global default.\n return always;\n };\n\n const excludeMetadataBecauseOfStrictGroupsOption = (metadata: ValidationMetadata): boolean => {\n if (strictGroups) {\n // Validation is not using groups.\n if (!groups || !groups.length) {\n // `metadata.groups` has at least one group.\n if (metadata.groups && metadata.groups.length) return true;\n }\n }\n\n return false;\n };\n\n // get directly related to a target metadatas\n const filteredForOriginalMetadatasSearch = this.validationMetadatas.get(targetConstructor) || [];\n const originalMetadatas = filteredForOriginalMetadatasSearch.filter(metadata => {\n if (metadata.target !== targetConstructor && metadata.target !== targetSchema) return false;\n if (includeMetadataBecauseOfAlwaysOption(metadata)) return true;\n if (excludeMetadataBecauseOfStrictGroupsOption(metadata)) return false;\n if (groups && groups.length > 0)\n return metadata.groups && !!metadata.groups.find(group => groups.indexOf(group) !== -1);\n\n return true;\n });\n\n // get metadatas for inherited classes\n const filteredForInheritedMetadatasSearch = [];\n for (const [key, value] of this.validationMetadatas.entries()) {\n if (targetConstructor.prototype instanceof key) {\n filteredForInheritedMetadatasSearch.push(...value);\n }\n }\n const inheritedMetadatas = filteredForInheritedMetadatasSearch.filter(metadata => {\n // if target is a string it's means we validate against a schema, and there is no inheritance support for schemas\n if (typeof metadata.target === 'string') return false;\n if (metadata.target === targetConstructor) return false;\n if (metadata.target instanceof Function && !(targetConstructor.prototype instanceof metadata.target))\n return false;\n if (includeMetadataBecauseOfAlwaysOption(metadata)) return true;\n if (excludeMetadataBecauseOfStrictGroupsOption(metadata)) return false;\n if (groups && groups.length > 0)\n return metadata.groups && !!metadata.groups.find(group => groups.indexOf(group) !== -1);\n\n return true;\n });\n\n // filter out duplicate metadatas, prefer original metadatas instead of inherited metadatas\n const uniqueInheritedMetadatas = inheritedMetadatas.filter(inheritedMetadata => {\n return !originalMetadatas.find(originalMetadata => {\n return (\n originalMetadata.propertyName === inheritedMetadata.propertyName &&\n originalMetadata.type === inheritedMetadata.type\n );\n });\n });\n\n return originalMetadatas.concat(uniqueInheritedMetadatas);\n }\n\n /**\n * Gets all validator constraints for the given object.\n */\n getTargetValidatorConstraints(target: Function): ConstraintMetadata[] {\n return this.constraintMetadatas.get(target) || [];\n }\n}\n\n/**\n * Gets metadata storage.\n * Metadata storage follows the best practices and stores metadata in a global variable.\n */\nexport function getMetadataStorage(): MetadataStorage {\n const global = getGlobal();\n\n if (!global.classValidatorMetadataStorage) {\n global.classValidatorMetadataStorage = new MetadataStorage();\n }\n\n return global.classValidatorMetadataStorage;\n}\n","/**\n * Validation error description.\n */\nexport class ValidationError {\n /**\n * Object that was validated.\n *\n * OPTIONAL - configurable via the ValidatorOptions.validationError.target option\n */\n target?: object;\n\n /**\n * Object's property that haven't pass validation.\n */\n property: string;\n\n /**\n * Value that haven't pass a validation.\n *\n * OPTIONAL - configurable via the ValidatorOptions.validationError.value option\n */\n value?: any;\n\n /**\n * Constraints that failed validation with error messages.\n */\n constraints?: {\n [type: string]: string;\n };\n\n /**\n * Contains all nested validation errors of the property.\n */\n children?: ValidationError[];\n\n /*\n * A transient set of data passed through to the validation result for response mapping\n */\n contexts?: {\n [type: string]: any;\n };\n\n /**\n *\n * @param shouldDecorate decorate the message with ANSI formatter escape codes for better readability\n * @param hasParent true when the error is a child of an another one\n * @param parentPath path as string to the parent of this property\n * @param showConstraintMessages show constraint messages instead of constraint names\n */\n toString(\n shouldDecorate: boolean = false,\n hasParent: boolean = false,\n parentPath: string = ``,\n showConstraintMessages: boolean = false\n ): string {\n const boldStart = shouldDecorate ? `\\x1b[1m` : ``;\n const boldEnd = shouldDecorate ? `\\x1b[22m` : ``;\n const constraintsToString = () =>\n (showConstraintMessages ? Object.values : Object.keys)(this.constraints ?? {}).join(`, `);\n const propConstraintFailed = (propertyName: string): string =>\n ` - property ${boldStart}${parentPath}${propertyName}${boldEnd} has failed the following constraints: ${boldStart}${constraintsToString()}${boldEnd} \\n`;\n\n if (!hasParent) {\n return (\n `An instance of ${boldStart}${\n this.target ? this.target.constructor.name : 'an object'\n }${boldEnd} has failed the validation:\\n` +\n (this.constraints ? propConstraintFailed(this.property) : ``) +\n (this.children\n ? this.children\n .map(childError => childError.toString(shouldDecorate, true, this.property, showConstraintMessages))\n .join(``)\n : ``)\n );\n } else {\n // we format numbers as array indexes for better readability.\n const formattedProperty = Number.isInteger(+this.property)\n ? `[${this.property}]`\n : `${parentPath ? `.` : ``}${this.property}`;\n\n if (this.constraints) {\n return propConstraintFailed(formattedProperty);\n } else {\n return this.children\n ? this.children\n .map(childError =>\n childError.toString(shouldDecorate, true, `${parentPath}${formattedProperty}`, showConstraintMessages)\n )\n .join(``)\n : ``;\n }\n }\n }\n}\n","/**\n * Validation types.\n */\nexport class ValidationTypes {\n /* system */\n static CUSTOM_VALIDATION = 'customValidation'; // done\n static NESTED_VALIDATION = 'nestedValidation'; // done\n static PROMISE_VALIDATION = 'promiseValidation'; // done\n static CONDITIONAL_VALIDATION = 'conditionalValidation'; // done\n static WHITELIST = 'whitelistValidation'; // done\n static IS_DEFINED = 'isDefined'; // done\n\n /**\n * Checks if validation type is valid.\n */\n static isValid(type: string): boolean {\n return (\n type !== 'isValid' &&\n type !== 'getMessage' &&\n Object.keys(this)\n .map(key => (this as any)[key])\n .indexOf(type) !== -1\n );\n }\n}\n","import { ValidationArguments } from './ValidationArguments';\n\n/**\n * Convert the constraint to a string to be shown in an error\n */\nexport function constraintToString(constraint: unknown): string {\n if (Array.isArray(constraint)) {\n return constraint.join(', ');\n }\n\n if (typeof constraint === 'symbol') {\n constraint = constraint.description;\n }\n\n return `${constraint}`;\n}\n\nexport class ValidationUtils {\n static replaceMessageSpecialTokens(\n message: string | ((args: ValidationArguments) => string),\n validationArguments: ValidationArguments\n ): string {\n let messageString: string;\n if (message instanceof Function) {\n messageString = (message as (args: ValidationArguments) => string)(validationArguments);\n } else if (typeof message === 'string') {\n messageString = message;\n }\n\n if (messageString && Array.isArray(validationArguments.constraints)) {\n validationArguments.constraints.forEach((constraint, index) => {\n messageString = messageString.replace(\n new RegExp(`\\\\$constraint${index + 1}`, 'g'),\n constraintToString(constraint)\n );\n });\n }\n\n if (\n messageString &&\n validationArguments.value !== undefined &&\n validationArguments.value !== null &&\n ['string', 'boolean', 'number'].includes(typeof validationArguments.value)\n )\n messageString = messageString.replace(/\\$value/g, validationArguments.value);\n if (messageString) messageString = messageString.replace(/\\$property/g, validationArguments.property);\n if (messageString) messageString = messageString.replace(/\\$target/g, validationArguments.targetName);\n\n return messageString;\n }\n}\n","import { Validator } from './Validator';\nimport { ValidationError } from './ValidationError';\nimport { ValidationMetadata } from '../metadata/ValidationMetadata';\nimport { ValidatorOptions } from './ValidatorOptions';\nimport { ValidationTypes } from './ValidationTypes';\nimport { ConstraintMetadata } from '../metadata/ConstraintMetadata';\nimport { ValidationArguments } from './ValidationArguments';\nimport { ValidationUtils } from './ValidationUtils';\nimport { isPromise, convertToArray } from '../utils';\nimport { getMetadataStorage } from '../metadata/MetadataStorage';\n\n/**\n * Executes validation over given object.\n */\nexport class ValidationExecutor {\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n\n awaitingPromises: Promise<any>[] = [];\n ignoreAsyncValidations: boolean = false;\n\n // -------------------------------------------------------------------------\n // Private Properties\n // -------------------------------------------------------------------------\n\n private metadataStorage = getMetadataStorage();\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private validator: Validator, private validatorOptions?: ValidatorOptions) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n execute(object: object, targetSchema: string, validationErrors: ValidationError[]): void {\n /**\n * If there is no metadata registered it means possibly the dependencies are not flatterned and\n * more than one instance is used.\n *\n * TODO: This needs proper handling, forcing to use the same container or some other proper solution.\n */\n if (!this.metadataStorage.hasValidationMetaData && this.validatorOptions?.enableDebugMessages === true) {\n console.warn(\n `No validation metadata found. No validation will be performed. There are multiple possible reasons:\\n` +\n ` - There may be multiple class-validator versions installed. You will need to flatten your dependencies to fix the issue.\\n` +\n ` - This validation runs before any file with validation decorator was parsed by NodeJS.`\n );\n }\n\n const groups = this.validatorOptions ? this.validatorOptions.groups : undefined;\n const strictGroups = (this.validatorOptions && this.validatorOptions.strictGroups) || false;\n const always = (this.validatorOptions && this.validatorOptions.always) || false;\n /** Forbid unknown values are turned on by default and any other value than false will enable it. */\n const forbidUnknownValues =\n this.validatorOptions?.forbidUnknownValues === undefined || this.validatorOptions.forbidUnknownValues !== false;\n\n const targetMetadatas = this.metadataStorage.getTargetValidationMetadatas(\n object.constructor,\n targetSchema,\n always,\n strictGroups,\n groups\n );\n const groupedMetadatas = this.metadataStorage.groupByPropertyName(targetMetadatas);\n\n if (this.validatorOptions && forbidUnknownValues && !targetMetadatas.length) {\n const validationError = new ValidationError();\n\n if (\n !this.validatorOptions ||\n !this.validatorOptions.validationError ||\n this.validatorOptions.validationError.target === undefined ||\n this.validatorOptions.validationError.target === true\n )\n validationError.target = object;\n\n validationError.value = undefined;\n validationError.property = undefined;\n validationError.children = [];\n validationError.constraints = { unknownValue: 'an unknown value was passed to the validate function' };\n\n validationErrors.push(validationError);\n\n return;\n }\n\n if (this.validatorOptions && this.validatorOptions.whitelist)\n this.whitelist(object, groupedMetadatas, validationErrors);\n\n // General validation\n Object.keys(groupedMetadatas).forEach(propertyName => {\n const value = (object as any)[propertyName];\n const definedMetadatas = groupedMetadatas[propertyName].filter(\n metadata => metadata.type === ValidationTypes.IS_DEFINED\n );\n const metadatas = groupedMetadatas[propertyName].filter(\n metadata => metadata.type !== ValidationTypes.IS_DEFINED && metadata.type !== ValidationTypes.WHITELIST\n );\n\n if (\n value instanceof Promise &&\n metadatas.find(metadata => metadata.type === ValidationTypes.PROMISE_VALIDATION)\n ) {\n this.awaitingPromises.push(\n value.then(resolvedValue => {\n this.performValidations(object, resolvedValue, propertyName, definedMetadatas, metadatas, validationErrors);\n })\n );\n } else {\n this.performValidations(object, value, propertyName, definedMetadatas, metadatas, validationErrors);\n }\n });\n }\n\n whitelist(\n object: any,\n groupedMetadatas: { [propertyName: string]: ValidationMetadata[] },\n validationErrors: ValidationError[]\n ): void {\n const notAllowedProperties: string[] = [];\n\n Object.keys(object).forEach(propertyName => {\n // does this property have no metadata?\n if (!groupedMetadatas[propertyName] || groupedMetadatas[propertyName].length === 0)\n notAllowedProperties.push(propertyName);\n });\n\n if (notAllowedProperties.length > 0) {\n if (this.validatorOptions && this.validatorOptions.forbidNonWhitelisted) {\n // throw errors\n notAllowedProperties.forEach(property => {\n const validationError: ValidationError = this.generateValidationError(object, object[property], property);\n validationError.constraints = { [ValidationTypes.WHITELIST]: `property ${property} should not exist` };\n validationError.children = undefined;\n validationErrors.push(validationError);\n });\n } else {\n // strip non allowed properties\n notAllowedProperties.forEach(property => delete object[property]);\n }\n }\n }\n\n stripEmptyErrors(errors: ValidationError[]): ValidationError[] {\n return errors.filter(error => {\n if (error.children) {\n error.children = this.stripEmptyErrors(error.children);\n }\n\n if (Object.keys(error.constraints).length === 0) {\n if (error.children.length === 0) {\n return false;\n } else {\n delete error.constraints;\n }\n }\n\n return true;\n });\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n private performValidations(\n object: any,\n value: any,\n propertyName: string,\n definedMetadatas: ValidationMetadata[],\n metadatas: ValidationMetadata[],\n validationErrors: ValidationError[]\n ): void {\n const customValidationMetadatas = metadatas.filter(metadata => metadata.type === ValidationTypes.CUSTOM_VALIDATION);\n const nestedValidationMetadatas = metadatas.filter(metadata => metadata.type === ValidationTypes.NESTED_VALIDATION);\n const conditionalValidationMetadatas = metadatas.filter(\n metadata => metadata.type === ValidationTypes.CONDITIONAL_VALIDATION\n );\n\n const validationError = this.generateValidationError(object, value, propertyName);\n validationErrors.push(validationError);\n\n const canValidate = this.conditionalValidations(object, value, conditionalValidationMetadatas);\n if (!canValidate) {\n return;\n }\n\n // handle IS_DEFINED validation type the special way - it should work no matter skipUndefinedProperties/skipMissingProperties is set or not\n this.customValidations(object, value, definedMetadatas, validationError);\n this.mapContexts(object, value, definedMetadatas, validationError);\n\n if (value === undefined && this.validatorOptions && this.validatorOptions.skipUndefinedProperties === true) {\n return;\n }\n\n if (value === null && this.validatorOptions && this.validatorOptions.skipNullProperties === true) {\n return;\n }\n\n if (\n (value === null || value === undefined) &&\n this.validatorOptions &&\n this.validatorOptions.skipMissingProperties === true\n ) {\n return;\n }\n\n this.customValidations(object, value, customValidationMetadatas, validationError);\n this.nestedValidations(value, nestedValidationMetadatas, validationError);\n\n this.mapContexts(object, value, metadatas, validationError);\n this.mapContexts(object, value, customValidationMetadatas, validationError);\n }\n\n private generateValidationError(object: object, value: any, propertyName: string): ValidationError {\n const validationError = new ValidationError();\n\n if (\n !this.validatorOptions ||\n !this.validatorOptions.validationError ||\n this.validatorOptions.validationError.target === undefined ||\n this.validatorOptions.validationError.target === true\n )\n validationError.target = object;\n\n if (\n !this.validatorOptions ||\n !this.validatorOptions.validationError ||\n this.validatorOptions.validationError.value === undefined ||\n this.validatorOptions.validationError.value === true\n )\n validationError.value = value;\n\n validationError.property = propertyName;\n validationError.children = [];\n validationError.constraints = {};\n\n return validationError;\n }\n\n private conditionalValidations(object: object, value: any, metadatas: ValidationMetadata[]): ValidationMetadata[] {\n return metadatas\n .map(metadata => metadata.constraints[0](object, value))\n .reduce((resultA, resultB) => resultA && resultB, true);\n }\n\n private customValidations(object: object, value: any, metadatas: ValidationMetadata[], error: ValidationError): void {\n metadatas.forEach(metadata => {\n this.metadataStorage.getTargetValidatorConstraints(metadata.constraintCls).forEach(customConstraintMetadata => {\n if (customConstraintMetadata.async && this.ignoreAsyncValidations) return;\n if (\n this.validatorOptions &&\n this.validatorOptions.stopAtFirstError &&\n Object.keys(error.constraints || {}).length > 0\n )\n return;\n\n const validationArguments: ValidationArguments = {\n targetName: object.constructor ? (object.constructor as any).name : undefined,\n property: metadata.propertyName,\n object: object,\n value: value,\n constraints: metadata.constraints,\n };\n\n if (!metadata.each || !(Array.isArray(value) || value instanceof Set || value instanceof Map)) {\n const validatedValue = customConstraintMetadata.instance.validate(value, validationArguments);\n if (isPromise(validatedValue)) {\n const promise = validatedValue.then(isValid => {\n if (!isValid) {\n const [type, message] = this.createValidationError(object, value, metadata, customConstraintMetadata);\n error.constraints[type] = message;\n if (metadata.context) {\n if (!error.contexts) {\n error.contexts = {};\n }\n error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context);\n }\n }\n });\n this.awaitingPromises.push(promise);\n } else {\n if (!validatedValue) {\n const [type, message] = this.createValidationError(object, value, metadata, customConstraintMetadata);\n error.constraints[type] = message;\n }\n }\n\n return;\n }\n\n // convert set and map into array\n const arrayValue = convertToArray(value);\n // Validation needs to be applied to each array item\n const validatedSubValues = arrayValue.map((subValue: any) =>\n customConstraintMetadata.instance.validate(subValue, validationArguments)\n );\n const validationIsAsync = validatedSubValues.some((validatedSubValue: boolean | Promise<boolean>) =>\n isPromise(validatedSubValue)\n );\n\n if (validationIsAsync) {\n // Wrap plain values (if any) in promises, so that all are async\n const asyncValidatedSubValues = validatedSubValues.map((validatedSubValue: boolean | Promise<boolean>) =>\n isPromise(validatedSubValue) ? validatedSubValue : Promise.resolve(validatedSubValue)\n );\n const asyncValidationIsFinishedPromise = Promise.all(asyncValidatedSubValues).then(\n (flatValidatedValues: boolean[]) => {\n const validationResult = flatValidatedValues.every((isValid: boolean) => isValid);\n if (!validationResult) {\n const [type, message] = this.createValidationError(object, value, metadata, customConstraintMetadata);\n error.constraints[type] = message;\n if (metadata.context) {\n if (!error.contexts) {\n error.contexts = {};\n }\n error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context);\n }\n }\n }\n );\n\n this.awaitingPromises.push(asyncValidationIsFinishedPromise);\n\n return;\n }\n\n const validationResult = validatedSubValues.every((isValid: boolean) => isValid);\n if (!validationResult) {\n const [type, message] = this.createValidationError(object, value, metadata, customConstraintMetadata);\n error.constraints[type] = message;\n }\n });\n });\n }\n\n private nestedValidations(value: any, metadatas: ValidationMetadata[], error: ValidationError): void {\n if (value === void 0) {\n return;\n }\n\n metadatas.forEach(metadata => {\n if (metadata.type !== ValidationTypes.NESTED_VALIDATION && metadata.type !== ValidationTypes.PROMISE_VALIDATION) {\n return;\n } else if (\n this.validatorOptions &&\n this.validatorOptions.stopAtFirstError &&\n Object.keys(error.constraints || {}).length > 0\n ) {\n return;\n }\n\n if (Array.isArray(value) || value instanceof Set || value instanceof Map) {\n // Treats Set as an array - as index of Set value is value itself and it is common case to have Object as value\n const arrayLikeValue = value instanceof Set ? Array.from(value) : value;\n arrayLikeValue.forEach((subValue: any, index: any) => {\n this.performValidations(value, subValue, index.toString(), [], metadatas, error.children);\n });\n } else if (value instanceof Object) {\n const targetSchema = typeof metadata.target === 'string' ? metadata.target : metadata.target.name;\n this.execute(value, targetSchema, error.children);\n } else {\n const [type, message] = this.createValidationError(metadata.target as object, value, metadata);\n error.constraints[type] = message;\n }\n });\n }\n\n private mapContexts(object: object, value: any, metadatas: ValidationMetadata[], error: ValidationError): void {\n return metadatas.forEach(metadata => {\n if (metadata.context) {\n let customConstraint;\n if (metadata.type === ValidationTypes.CUSTOM_VALIDATION) {\n const customConstraints = this.metadataStorage.getTargetValidatorConstraints(metadata.constraintCls);\n customConstraint = customConstraints[0];\n }\n\n const type = this.getConstraintType(metadata, customConstraint);\n\n if (error.constraints[type]) {\n if (!error.contexts) {\n error.contexts = {};\n }\n\n error.contexts[type] = Object.assign(error.contexts[type] || {}, metadata.context);\n }\n }\n });\n }\n\n private createValidationError(\n object: object,\n value: any,\n metadata: ValidationMetadata,\n customValidatorMetadata?: ConstraintMetadata\n ): [string, string] {\n const targetName = object.constructor ? (object.constructor as any).name : undefined;\n const type = this.getConstraintType(metadata, customValidatorMetadata);\n const validationArguments: ValidationArguments = {\n targetName: targetName,\n property: metadata.propertyName,\n object: object,\n value: value,\n constraints: metadata.constraints,\n };\n\n let message = metadata.message || '';\n if (\n !metadata.message &&\n (!this.validatorOptions || (this.validatorOptions && !this.validatorOptions.dismissDefaultMessages))\n ) {\n if (customValidatorMetadata && customValidatorMetadata.instance.defaultMessage instanceof Function) {\n message = customValidatorMetadata.instance.defaultMessage(validationArguments);\n }\n }\n\n const messageString = ValidationUtils.replaceMessageSpecialTokens(message, validationArguments);\n return [type, messageString];\n }\n\n private getConstraintType(metadata: ValidationMetadata, customValidatorMetadata?: ConstraintMetadata): string {\n const type = customValidatorMetadata && customValidatorMetadata.name ? customValidatorMetadata.name : metadata.type;\n return type;\n }\n}\n","import { ValidationError } from './ValidationError';\nimport { ValidatorOptions } from './ValidatorOptions';\nimport { ValidationExecutor } from './ValidationExecutor';\nimport { ValidationOptions } from '../decorator/ValidationOptions';\n\n/**\n * Validator performs validation of the given object based on its metadata.\n */\nexport class Validator {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs validation of the given object based on decorators used in given object class.\n */\n validate(object: object, options?: ValidatorOptions): Promise<ValidationError[]>;\n\n /**\n * Performs validation of the given object based on validation schema.\n */\n validate(schemaName: string, object: object, options?: ValidatorOptions): Promise<ValidationError[]>;\n\n /**\n * Performs validation of the given object based on decorators or validation schema.\n */\n validate(\n objectOrSchemaName: object | string,\n objectOrValidationOptions: object | ValidationOptions,\n maybeValidatorOptions?: ValidatorOptions\n ): Promise<ValidationError[]> {\n return this.coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions);\n }\n\n /**\n * Performs validation of the given object based on decorators used in given object class and reject on error.\n */\n validateOrReject(object: object, options?: ValidatorOptions): Promise<void>;\n\n /**\n * Performs validation of the given object based on validation schema and reject on error.\n */\n validateOrReject(schemaName: string, object: object, options?: ValidatorOptions): Promise<void>;\n\n /**\n * Performs validation of the given object based on decorators or validation schema and reject on error.\n */\n async validateOrReject(\n objectOrSchemaName: object | string,\n objectOrValidationOptions: object | ValidationOptions,\n maybeValidatorOptions?: ValidatorOptions\n ): Promise<void> {\n const errors = await this.coreValidate(objectOrSchemaName, objectOrValidationOptions, maybeValidatorOptions);\n if (errors.length) return Promise.reject(errors);\n }\n\n /**\n * Performs validation of the given object based on decorators used in given object class.\n * NOTE: This method completely ignores all async validations.\n */\n validateSync(object: object, options?: ValidatorOptions): ValidationError[];\n\n /**\n * Performs validation of the given object based on validation schema.\n */\n validateSync(schemaName: string, object: object, options?: ValidatorOptions): ValidationError[];\n\n /**\n * Performs validation of the given object based on decorators or validation schema.\n */\n validateSync(\n objectOrSchemaName: object | string,\n objectOrValidationOptions: object | ValidationOptions,\n maybeValidatorOptions?: ValidatorOptions\n ): ValidationError[] {\n const object = typeof objectOrSchemaName === 'string' ? (objectOrValidationOptions as object) : objectOrSchemaName;\n const options =\n typeof objectOrSchemaName === 'string' ? maybeValidatorOptions : (objectOrValidationOptions as ValidationOptions);\n const schema = typeof objectOrSchemaName === 'string' ? objectOrSchemaName : undefined;\n\n const executor = new ValidationExecutor(this, options);\n executor.ignoreAsyncValidations = true;\n const validationErrors: ValidationError[] = [];\n executor.execute(object, schema, validationErrors);\n return executor.stripEmptyErrors(validationErrors);\n }\n\n // -------------------------------------------------------------------------\n // Private Properties\n // -------------------------------------------------------------------------\n /**\n * Performs validation of the given object based on decorators or validation schema.\n * Common method for `validateOrReject` and `validate` methods.\n */\n private coreValidate(\n objectOrSchemaName: object | string,\n objectOrValidationOptions: object | ValidationOptions,\n maybeValidatorOptions?: ValidatorOptions\n ): Promise<ValidationError[]> {\n const object = typeof objectOrSchemaName === 'string' ? (objectOrValidationOptions as object) : objectOrSchemaName;\n const options =\n typeof objectOrSchemaName === 'string' ? maybeValidatorOptions : (objectOrValidationOptions as ValidationOptions);\n const schema = typeof objectOrSchemaName === 'string' ? objectOrSchemaName : undefined;\n\n const executor = new ValidationExecutor(this, options);\n const validationErrors: ValidationError[] = [];\n executor.execute(object, schema, validationErrors);\n\n return Promise.all(executor.awaitingPromises).then(() => {\n return executor.stripEmptyErrors(validationErrors);\n });\n }\n}\n","/**\n * Container options.\n */\nexport interface UseContainerOptions {\n /**\n * If set to true, then default container will be used in the case if given container haven't returned anything.\n */\n fallback?: boolean;\n\n /**\n * If set to true, then default container will be used in the case if given container thrown an exception.\n */\n fallbackOnErrors?: boolean;\n}\n\n/**\n * Container to be used by this library for inversion control. If container was not implicitly set then by default\n * container simply creates a new instance of the given class.\n */\nconst defaultContainer: { get<T>(someClass: { new (...args: any[]): T } | Function): T } = new (class {\n private instances: { type: Function; object: any }[] = [];\n get<T>(someClass: { new (...args: any[]): T }): T {\n let instance = this.instances.find(instance => instance.type === someClass);\n if (!instance) {\n instance = { type: someClass, object: new someClass() };\n this.instances.push(instance);\n }\n\n return instance.object;\n }\n})();\n\nlet userContainer: { get<T>(someClass: { new (...args: any[]): T } | Function): T };\nlet userContainerOptions: UseContainerOptions;\n\n/**\n * Sets container to be used by this library.\n */\nexport function useContainer(iocContainer: { get(someClass: any): any }, options?: UseContainerOptions): void {\n userContainer = iocContainer;\n userContainerOptions = options;\n}\n\n/**\n * Gets the IOC container used by this library.\n */\nexport function getFromContainer<T>(someClass: { new (...args: any[]): T } | Function): T {\n if (userContainer) {\n try {\n const instance = userContainer.get(someClass);\n if (instance) return instance;\n\n if (!userContainerOptions || !userContainerOptions.fallback) return instance;\n } catch (error) {\n if (!userContainerOptions || !userContainerOptions.fallbackOnErrors) throw error;\n }\n }\n return defaultContainer.get<T>(someClass);\n}\n","import { ValidatorConstraintInterface } from '../validation/ValidatorConstraintInterface';\nimport { getFromContainer } from '../container';\n\n/**\n * This metadata interface contains information for custom validators.\n */\nexport class ConstraintMetadata {\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n\n /**\n * Target class which performs validation.\n */\n target: Function;\n\n /**\n * Custom validation's name, that will be used as validation error type.\n */\n name: string;\n\n /**\n * Indicates if this validation is asynchronous or not.\n */\n async: boolean;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(target: Function, name?: string, async: boolean = false) {\n this.target = target;\n this.name = name;\n this.async = async;\n }\n\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n\n /**\n * Instance of the target custom validation class which performs validation.\n */\n get instance(): ValidatorConstraintInterface {\n return getFromContainer<ValidatorConstraintInterface>(this.target);\n }\n}\n","import { ConstraintMetadata } from './metadata/ConstraintMetadata';\nimport { ValidatorConstraintInterface } from './validation/ValidatorConstraintInterface';\nimport { ValidationMetadata } from './metadata/ValidationMetadata';\nimport { ValidationMetadataArgs } from './metadata/ValidationMetadataArgs';\nimport { ValidationTypes } from './validation/ValidationTypes';\nimport { ValidationArguments } from './validation/ValidationArguments';\nimport { getFromContainer } from './container';\nimport { MetadataStorage, getMetadataStorage } from './metadata/MetadataStorage';\nimport { ValidationOptions } from './decorator/ValidationOptions';\n\nexport interface ValidationDecoratorOptions {\n /**\n * Target object to be validated.\n */\n target: Function;\n\n /**\n * Target object's property name to be validated.\n */\n propertyName: string;\n\n /**\n * Name of the validation that is being registered.\n */\n name?: string;\n\n /**\n * Indicates if this decorator will perform async validation.\n */\n async?: boolean;\n\n /**\n * Validator options.\n */\n options?: ValidationOptions;\n\n /**\n * Array of validation constraints.\n */\n constraints?: any[];\n\n /**\n * Validator that performs validation.\n */\n validator: ValidatorConstraintInterface | Function;\n}\n\n/**\n * Registers a custom validation decorator.\n */\nexport function registerDecorator(options: ValidationDecoratorOptions): void {\n let constraintCls: Function;\n if (options.validator instanceof Function) {\n constraintCls = options.validator;\n const constraintClasses = getFromContainer(MetadataStorage).getTargetValidatorConstraints(options.validator);\n if (constraintClasses.length > 1) {\n throw `More than one implementation of ValidatorConstraintInterface found for validator on: ${options.target.name}:${options.propertyName}`;\n }\n } else {\n const validator = options.validator;\n constraintCls = class CustomConstraint implements ValidatorConstraintInterface {\n validate(value: any, validationArguments?: ValidationArguments): Promise<boolean> | boolean {\n return validator.validate(value, validationArguments);\n }\n\n defaultMessage(validationArguments?: ValidationArguments): string {\n if (validator.defaultMessage) {\n return validator.defaultMessage(validationArguments);\n }\n\n return '';\n }\n };\n getMetadataStorage().addConstraintMetadata(new ConstraintMetadata(constraintCls, options.name, options.async));\n }\n\n const validationMetadataArgs: ValidationMetadataArgs = {\n type: options.name && ValidationTypes.isValid(options.name) ? options.name : ValidationTypes.CUSTOM_VALIDATION,\n name: options.name,\n target: options.target,\n propertyName: options.propertyName,\n validationOptions: options.options,\n constraintCls: constraintCls,\n constraints: options.constraints,\n };\n getMetadataStorage().addValidationMetadata(new ValidationMetadata(validationMetadataArgs));\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { registerDecorator } from '../../register-decorator';\nimport { ValidationArguments } from '../../validation/ValidationArguments';\nimport { ValidatorConstraintInterface } from '../../validation/ValidatorConstraintInterface';\n\nexport interface ValidateByOptions {\n name: string;\n constraints?: any[];\n validator: ValidatorConstraintInterface | Function;\n async?: boolean;\n}\n\nexport function buildMessage(\n impl: (eachPrefix: string, args?: ValidationArguments) => string,\n validationOptions?: ValidationOptions\n): (validationArguments?: ValidationArguments) => string {\n return (validationArguments?: ValidationArguments): string => {\n const eachPrefix = validationOptions && validationOptions.each ? 'each value in ' : '';\n return impl(eachPrefix, validationArguments);\n };\n}\n\nexport function ValidateBy(options: ValidateByOptions, validationOptions?: ValidationOptions): PropertyDecorator {\n return function (object: object, propertyName: string): void {\n registerDecorator({\n name: options.name,\n target: object.constructor,\n propertyName: propertyName,\n options: validationOptions,\n constraints: options.constraints,\n validator: options.validator,\n });\n };\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from './ValidateBy';\nimport { ValidationTypes } from '../../validation/ValidationTypes';\n\n// isDefined is (yet) a special case\nexport const IS_DEFINED = ValidationTypes.IS_DEFINED;\n\n/**\n * Checks if value is defined (!== undefined, !== null).\n */\nexport function isDefined<T>(value: T | undefined | null): value is T {\n return value !== undefined && value !== null;\n}\n\n/**\n * Checks if value is defined (!== undefined, !== null).\n */\nexport function IsDefined(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_DEFINED,\n validator: {\n validate: (value): boolean => isDefined(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + '$property should not be null or undefined',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { ValidationMetadataArgs } from '../../metadata/ValidationMetadataArgs';\nimport { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\n\n/**\n * Checks if value is missing and if so, ignores all validators.\n */\nexport function IsOptional(validationOptions?: ValidationOptions): PropertyDecorator {\n return function (object: object, propertyName: string): void {\n const args: ValidationMetadataArgs = {\n type: ValidationTypes.CONDITIONAL_VALIDATION,\n target: object.constructor,\n propertyName: propertyName,\n constraints: [\n (object: any, value: any): boolean => {\n return object[propertyName] !== null && object[propertyName] !== undefined;\n },\n ],\n validationOptions: validationOptions,\n };\n getMetadataStorage().addValidationMetadata(new ValidationMetadata(args));\n };\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { ValidationMetadataArgs } from '../../metadata/ValidationMetadataArgs';\nimport { ValidationTypes } from '../../validation/ValidationTypes';\nimport { ValidationMetadata } from '../../metadata/ValidationMetadata';\nimport { getMetadataStorage } from '../../metadata/MetadataStorage';\n\n/**\n * Objects / object arrays marked with this decorator will also be validated.\n */\nexport function ValidateNested(validationOptions?: ValidationOptions): PropertyDecorator {\n const opts: ValidationOptions = { ...validationOptions };\n const eachPrefix = opts.each ? 'each value in ' : '';\n opts.message = opts.message || eachPrefix + 'nested property $property must be either object or array';\n\n return function (object: object, propertyName: string): void {\n const args: ValidationMetadataArgs = {\n type: ValidationTypes.NESTED_VALIDATION,\n target: object.constructor,\n propertyName: propertyName,\n validationOptions: opts,\n };\n getMetadataStorage().addValidationMetadata(new ValidationMetadata(args));\n };\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const MAX = 'max';\n\n/**\n * Checks if the first number is less than or equal to the second.\n */\nexport function max(num: unknown, max: number): boolean {\n return typeof num === 'number' && typeof max === 'number' && num <= max;\n}\n\n/**\n * Checks if the value is less than or equal to the allowed maximum value.\n */\nexport function Max(maxValue: number, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: MAX,\n constraints: [maxValue],\n validator: {\n validate: (value, args): boolean => max(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + '$property must not be greater than $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const MIN = 'min';\n\n/**\n * Checks if the first number is greater than or equal to the second.\n */\nexport function min(num: unknown, min: number): boolean {\n return typeof num === 'number' && typeof min === 'number' && num >= min;\n}\n\n/**\n * Checks if the value is greater than or equal to the allowed minimum value.\n */\nexport function Min(minValue: number, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: MIN,\n constraints: [minValue],\n validator: {\n validate: (value, args): boolean => min(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + '$property must not be less than $constraint1',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isLengthValidator from 'validator/lib/isLength';\n\nexport const MAX_LENGTH = 'maxLength';\n\n/**\n * Checks if the string's length is not more than given number. Note: this function takes into account surrogate pairs.\n * If given value is not a string, then it returns false.\n */\nexport function maxLength(value: unknown, max: number): boolean {\n return typeof value === 'string' && isLengthValidator(value, { min: 0, max });\n}\n\n/**\n * Checks if the string's length is not more than given number. Note: this function takes into account surrogate pairs.\n * If given value is not a string, then it returns false.\n */\nexport function MaxLength(max: number, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: MAX_LENGTH,\n constraints: [max],\n validator: {\n validate: (value, args): boolean => maxLength(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + '$property must be shorter than or equal to $constraint1 characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport isLengthValidator from 'validator/lib/isLength';\n\nexport const MIN_LENGTH = 'minLength';\n\n/**\n * Checks if the string's length is not less than given number. Note: this function takes into account surrogate pairs.\n * If given value is not a string, then it returns false.\n */\nexport function minLength(value: unknown, min: number): boolean {\n return typeof value === 'string' && isLengthValidator(value, { min });\n}\n\n/**\n * Checks if the string's length is not less than given number. Note: this function takes into account surrogate pairs.\n * If given value is not a string, then it returns false.\n */\nexport function MinLength(min: number, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: MIN_LENGTH,\n constraints: [min],\n validator: {\n validate: (value, args): boolean => minLength(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + '$property must be longer than or equal to $constraint1 characters',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\nimport matchesValidator from 'validator/lib/matches';\n\nexport const MATCHES = 'matches';\n\n/**\n * Checks if string matches the pattern. Either matches('foo', /foo/i).\n * If given value is not a string, then it returns false.\n */\nexport function matches(value: string, pattern: RegExp): boolean;\nexport function matches(value: string, pattern: string, modifiers: string): boolean;\nexport function matches(value: string, pattern: RegExp | string, modifiers?: string): boolean {\n return typeof value === 'string' && matchesValidator(value, pattern as unknown as any, modifiers);\n}\n\n/**\n * Checks if string matches the pattern. Either matches('foo', /foo/i)\n * If given value is not a string, then it returns false.\n */\nexport function Matches(pattern: RegExp, validationOptions?: ValidationOptions): PropertyDecorator;\nexport function Matches(pattern: string, modifiers?: string, validationOptions?: ValidationOptions): PropertyDecorator;\nexport function Matches(\n pattern: RegExp | string,\n modifiersOrAnnotationOptions?: string | ValidationOptions,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n let modifiers: string;\n if (modifiersOrAnnotationOptions && modifiersOrAnnotationOptions instanceof Object && !validationOptions) {\n validationOptions = modifiersOrAnnotationOptions;\n } else {\n modifiers = modifiersOrAnnotationOptions as string;\n }\n\n return ValidateBy(\n {\n name: MATCHES,\n constraints: [pattern, modifiers],\n validator: {\n validate: (value, args): boolean => matches(value, args?.constraints[0], args?.constraints[1]),\n defaultMessage: buildMessage(\n (eachPrefix, args) => eachPrefix + '$property must match $constraint1 regular expression',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_BOOLEAN = 'isBoolean';\n\n/**\n * Checks if a given value is a boolean.\n */\nexport function isBoolean(value: unknown): value is boolean {\n return value instanceof Boolean || typeof value === 'boolean';\n}\n\n/**\n * Checks if a value is a boolean.\n */\nexport function IsBoolean(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_BOOLEAN,\n validator: {\n validate: (value, args): boolean => isBoolean(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a boolean value', validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_NUMBER = 'isNumber';\n\n/**\n * Options to be passed to IsNumber decorator.\n */\nexport interface IsNumberOptions {\n allowNaN?: boolean;\n allowInfinity?: boolean;\n maxDecimalPlaces?: number;\n}\n\n/**\n * Checks if a given value is a number.\n */\nexport function isNumber(value: unknown, options: IsNumberOptions = {}): value is number {\n if (typeof value !== 'number') {\n return false;\n }\n\n if (value === Infinity || value === -Infinity) {\n return !!options.allowInfinity;\n }\n\n if (Number.isNaN(value)) {\n return !!options.allowNaN;\n }\n\n if (options.maxDecimalPlaces !== undefined) {\n let decimalPlaces = 0;\n if (value % 1 !== 0) {\n decimalPlaces = value.toString().split('.')[1].length;\n }\n if (decimalPlaces > options.maxDecimalPlaces) {\n return false;\n }\n }\n\n return Number.isFinite(value);\n}\n\n/**\n * Checks if a value is a number.\n */\nexport function IsNumber(options: IsNumberOptions = {}, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_NUMBER,\n constraints: [options],\n validator: {\n validate: (value, args): boolean => isNumber(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + '$property must be a number conforming to the specified constraints',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_ENUM = 'isEnum';\n\n/**\n * Checks if a given value is the member of the provided enum.\n */\nexport function isEnum(value: unknown, entity: any): boolean {\n const enumValues = Object.keys(entity).map(k => entity[k]);\n return enumValues.includes(value);\n}\n\n/**\n * Returns the possible values from an enum (both simple number indexed and string indexed enums).\n */\nfunction validEnumValues(entity: any): string[] {\n return Object.entries(entity)\n .filter(([key, value]) => isNaN(parseInt(key)))\n .map(([key, value]) => value as string);\n}\n\n/**\n * Checks if a given value is the member of the provided enum.\n */\nexport function IsEnum(entity: object, validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ENUM,\n constraints: [entity, validEnumValues(entity)],\n validator: {\n validate: (value, args): boolean => isEnum(value, args?.constraints[0]),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + '$property must be one of the following values: $constraint2',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_INT = 'isInt';\n\n/**\n * Checks if value is an integer.\n */\nexport function isInt(val: unknown): val is Number {\n return typeof val === 'number' && Number.isInteger(val);\n}\n\n/**\n * Checks if value is an integer.\n */\nexport function IsInt(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_INT,\n validator: {\n validate: (value, args): boolean => isInt(value),\n defaultMessage: buildMessage(\n eachPrefix => eachPrefix + '$property must be an integer number',\n validationOptions\n ),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_STRING = 'isString';\n\n/**\n * Checks if a given value is a real string.\n */\nexport function isString(value: unknown): value is string {\n return value instanceof String || typeof value === 'string';\n}\n\n/**\n * Checks if a given value is a real string.\n */\nexport function IsString(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_STRING,\n validator: {\n validate: (value, args): boolean => isString(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be a string', validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_ARRAY = 'isArray';\n\n/**\n * Checks if a given value is an array\n */\nexport function isArray<T = any>(value: unknown): value is Array<T> {\n return Array.isArray(value);\n}\n\n/**\n * Checks if a given value is an array\n */\nexport function IsArray(validationOptions?: ValidationOptions): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_ARRAY,\n validator: {\n validate: (value, args): boolean => isArray(value),\n defaultMessage: buildMessage(eachPrefix => eachPrefix + '$property must be an array', validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { ValidationOptions } from '../ValidationOptions';\nimport { buildMessage, ValidateBy } from '../common/ValidateBy';\n\nexport const IS_INSTANCE = 'isInstance';\n\n/**\n * Checks if the value is an instance of the specified object.\n */\nexport function isInstance(object: unknown, targetTypeConstructor: new (...args: any[]) => any): boolean {\n return (\n targetTypeConstructor && typeof targetTypeConstructor === 'function' && object instanceof targetTypeConstructor\n );\n}\n\n/**\n * Checks if the value is an instance of the specified object.\n */\nexport function IsInstance(\n targetType: new (...args: any[]) => any,\n validationOptions?: ValidationOptions\n): PropertyDecorator {\n return ValidateBy(\n {\n name: IS_INSTANCE,\n constraints: [targetType],\n validator: {\n validate: (value, args): boolean => isInstance(value, args?.constraints[0]),\n defaultMessage: buildMessage((eachPrefix, args) => {\n if (args?.constraints[0]) {\n return eachPrefix + `$property must be an instance of ${args?.constraints[0].name as string}`;\n } else {\n return eachPrefix + `${IS_INSTANCE} decorator expects and object as value, but got falsy value.`;\n }\n }, validationOptions),\n },\n },\n validationOptions\n );\n}\n","import { ValidationError } from './validation/ValidationError';\nimport { ValidatorOptions } from './validation/ValidatorOptions';\nimport { ValidationSchema } from './validation-schema/ValidationSchema';\nimport { getMetadataStorage } from './metadata/MetadataStorage';\nimport { Validator } from './validation/Validator';\nimport { getFromContainer } from './container';\n\n// -------------------------------------------------------------------------\n// Export everything api users needs\n// -------------------------------------------------------------------------\n\nexport * from './container';\nexport * from './decorator/decorators';\nexport * from './decorator/ValidationOptions';\nexport * from './validation/ValidatorConstraintInterface';\nexport * from './validation/ValidationError';\nexport * from './validation/ValidatorOptions';\nexport * from './validation/ValidationArguments';\nexport * from './validation/ValidationTypes';\nexport * from './validation/Validator';\nexport * from './validation-schema/ValidationSchema';\nexport * from './register-decorator';\nexport * from './metadata/MetadataStorage';\n\n// -------------------------------------------------------------------------\n// Shortcut methods for api users\n// -------------------------------------------------------------------------\n\n/**\n * Validates given object.\n */\nexport function validate(object: object, validatorOptions?: ValidatorOptions): Promise<ValidationError[]>;\n\n/**\n * Validates given object by a given validation schema.\n */\nexport function validate(\n schemaName: string,\n object: object,\n validatorOptions?: ValidatorOptions\n): Promise<ValidationError[]>;\n\n/**\n * Validates given object by object's decorators or given validation schema.\n */\nexport function validate(\n schemaNameOrObject: object | string,\n objectOrValidationOptions?: object | ValidatorOptions,\n maybeValidatorOptions?: ValidatorOptions\n): Promise<ValidationError[]> {\n if (typeof schemaNameOrObject === 'string') {\n return getFromContainer(Validator).validate(\n schemaNameOrObject,\n objectOrValidationOptions as object,\n maybeValidatorOptions\n );\n } else {\n return getFromContainer(Validator).validate(schemaNameOrObject, objectOrValidationOptions as ValidatorOptions);\n }\n}\n\n/**\n * Validates given object and reject on error.\n */\nexport function validateOrReject(object: object, validatorOptions?: ValidatorOptions): Promise<void>;\n\n/**\n * Validates given object by a given validation schema and reject on error.\n */\nexport function validateOrReject(\n schemaName: string,\n object: object,\n validatorOptions?: ValidatorOptions\n): Promise<void>;\n\n/**\n * Validates given object by object's decorators or given validation schema and reject on error.\n */\nexport function validateOrReject(\n schemaNameOrObject: object | string,\n objectOrValidationOptions?: object | ValidatorOptions,\n maybeValidatorOptions?: ValidatorOptions\n): Promise<void> {\n if (typeof schemaNameOrObject === 'string') {\n return getFromContainer(Validator).validateOrReject(\n schemaNameOrObject,\n objectOrValidationOptions as object,\n maybeValidatorOptions\n );\n } else {\n return getFromContainer(Validator).validateOrReject(\n schemaNameOrObject,\n objectOrValidationOptions as ValidatorOptions\n );\n }\n}\n\n/**\n * Performs sync validation of the given object.\n * Note that this method completely ignores async validations.\n * If you want to properly perform validation you need to call validate method instead.\n */\nexport function validateSync(object: object, validatorOptions?: ValidatorOptions): ValidationError[];\n\n/**\n * Validates given object by a given validation schema.\n * Note that this method completely ignores async validations.\n * If you want to properly perform validation you need to call validate method instead.\n */\nexport function validateSync(\n schemaName: string,\n object: object,\n validatorOptions?: ValidatorOptions\n): ValidationError[];\n\n/**\n * Validates given object by object's decorators or given validation schema.\n * Note that this method completely ignores async validations.\n * If you want to properly perform validation you need to call validate method instead.\n */\nexport function validateSync(\n schemaNameOrObject: object | string,\n objectOrValidationOptions?: object | ValidatorOptions,\n maybeValidatorOptions?: ValidatorOptions\n): ValidationError[] {\n if (typeof schemaNameOrObject === 'string') {\n return getFromContainer(Validator).validateSync(\n schemaNameOrObject,\n objectOrValidationOptions as object,\n maybeValidatorOptions\n );\n } else {\n return getFromContainer(Validator).validateSync(schemaNameOrObject, objectOrValidationOptions as ValidatorOptions);\n }\n}\n\n/**\n * Registers a new validation schema.\n */\nexport function registerSchema(schema: ValidationSchema): void {\n getMetadataStorage().addValidationSchema(schema);\n}\n","export enum TransformationType {\n PLAIN_TO_CLASS,\n CLASS_TO_PLAIN,\n CLASS_TO_CLASS,\n}\n","import { TypeMetadata, ExposeMetadata, ExcludeMetadata, TransformMetadata } from './interfaces';\nimport { TransformationType } from './enums';\n\n/**\n * Storage all library metadata.\n */\nexport class MetadataStorage {\n // -------------------------------------------------------------------------\n // Properties\n // -------------------------------------------------------------------------\n\n private _typeMetadatas = new Map<Function, Map<string, TypeMetadata>>();\n private _transformMetadatas = new Map<Function, Map<string, TransformMetadata[]>>();\n private _exposeMetadatas = new Map<Function, Map<string, ExposeMetadata>>();\n private _excludeMetadatas = new Map<Function, Map<string, ExcludeMetadata>>();\n private _ancestorsMap = new Map<Function, Function[]>();\n\n // -------------------------------------------------------------------------\n // Adder Methods\n // -------------------------------------------------------------------------\n\n addTypeMetadata(metadata: TypeMetadata): void {\n if (!this._typeMetadatas.has(metadata.target)) {\n this._typeMetadatas.set(metadata.target, new Map<string, TypeMetadata>());\n }\n this._typeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n }\n\n addTransformMetadata(metadata: TransformMetadata): void {\n if (!this._transformMetadatas.has(metadata.target)) {\n this._transformMetadatas.set(metadata.target, new Map<string, TransformMetadata[]>());\n }\n if (!this._transformMetadatas.get(metadata.target).has(metadata.propertyName)) {\n this._transformMetadatas.get(metadata.target).set(metadata.propertyName, []);\n }\n this._transformMetadatas.get(metadata.target).get(metadata.propertyName).push(metadata);\n }\n\n addExposeMetadata(metadata: ExposeMetadata): void {\n if (!this._exposeMetadatas.has(metadata.target)) {\n this._exposeMetadatas.set(metadata.target, new Map<string, ExposeMetadata>());\n }\n this._exposeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n }\n\n addExcludeMetadata(metadata: ExcludeMetadata): void {\n if (!this._excludeMetadatas.has(metadata.target)) {\n this._excludeMetadatas.set(metadata.target, new Map<string, ExcludeMetadata>());\n }\n this._excludeMetadatas.get(metadata.target).set(metadata.propertyName, metadata);\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n findTransformMetadatas(\n target: Function,\n propertyName: string,\n transformationType: TransformationType\n ): TransformMetadata[] {\n return this.findMetadatas(this._transformMetadatas, target, propertyName).filter(metadata => {\n if (!metadata.options) return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) return true;\n\n if (metadata.options.toClassOnly === true) {\n return (\n transformationType === TransformationType.CLASS_TO_CLASS ||\n transformationType === TransformationType.PLAIN_TO_CLASS\n );\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n\n return true;\n });\n }\n\n findExcludeMetadata(target: Function, propertyName: string): ExcludeMetadata {\n return this.findMetadata(this._excludeMetadatas, target, propertyName);\n }\n\n findExposeMetadata(target: Function, propertyName: string): ExposeMetadata {\n return this.findMetadata(this._exposeMetadatas, target, propertyName);\n }\n\n findExposeMetadataByCustomName(target: Function, name: string): ExposeMetadata {\n return this.getExposedMetadatas(target).find(metadata => {\n return metadata.options && metadata.options.name === name;\n });\n }\n\n findTypeMetadata(target: Function, propertyName: string): TypeMetadata {\n return this.findMetadata(this._typeMetadatas, target, propertyName);\n }\n\n getStrategy(target: Function): 'excludeAll' | 'exposeAll' | 'none' {\n const excludeMap = this._excludeMetadatas.get(target);\n const exclude = excludeMap && excludeMap.get(undefined);\n const exposeMap = this._exposeMetadatas.get(target);\n const expose = exposeMap && exposeMap.get(undefined);\n if ((exclude && expose) || (!exclude && !expose)) return 'none';\n return exclude ? 'excludeAll' : 'exposeAll';\n }\n\n getExposedMetadatas(target: Function): ExposeMetadata[] {\n return this.getMetadata(this._exposeMetadatas, target);\n }\n\n getExcludedMetadatas(target: Function): ExcludeMetadata[] {\n return this.getMetadata(this._excludeMetadatas, target);\n }\n\n getExposedProperties(target: Function, transformationType: TransformationType): string[] {\n return this.getExposedMetadatas(target)\n .filter(metadata => {\n if (!metadata.options) return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) return true;\n\n if (metadata.options.toClassOnly === true) {\n return (\n transformationType === TransformationType.CLASS_TO_CLASS ||\n transformationType === TransformationType.PLAIN_TO_CLASS\n );\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n\n return true;\n })\n .map(metadata => metadata.propertyName);\n }\n\n getExcludedProperties(target: Function, transformationType: TransformationType): string[] {\n return this.getExcludedMetadatas(target)\n .filter(metadata => {\n if (!metadata.options) return true;\n if (metadata.options.toClassOnly === true && metadata.options.toPlainOnly === true) return true;\n\n if (metadata.options.toClassOnly === true) {\n return (\n transformationType === TransformationType.CLASS_TO_CLASS ||\n transformationType === TransformationType.PLAIN_TO_CLASS\n );\n }\n if (metadata.options.toPlainOnly === true) {\n return transformationType === TransformationType.CLASS_TO_PLAIN;\n }\n\n return true;\n })\n .map(metadata => metadata.propertyName);\n }\n\n clear(): void {\n this._typeMetadatas.clear();\n this._exposeMetadatas.clear();\n this._excludeMetadatas.clear();\n this._ancestorsMap.clear();\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n private getMetadata<T extends { target: Function; propertyName: string }>(\n metadatas: Map<Function, Map<string, T>>,\n target: Function\n ): T[] {\n const metadataFromTargetMap = metadatas.get(target);\n let metadataFromTarget: T[];\n if (metadataFromTargetMap) {\n metadataFromTarget = Array.from(metadataFromTargetMap.values()).filter(meta => meta.propertyName !== undefined);\n }\n const metadataFromAncestors: T[] = [];\n for (const ancestor of this.getAncestors(target)) {\n const ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n const metadataFromAncestor = Array.from(ancestorMetadataMap.values()).filter(\n meta => meta.propertyName !== undefined\n );\n metadataFromAncestors.push(...metadataFromAncestor);\n }\n }\n return metadataFromAncestors.concat(metadataFromTarget || []);\n }\n\n private findMetadata<T extends { target: Function; propertyName: string }>(\n metadatas: Map<Function, Map<string, T>>,\n target: Function,\n propertyName: string\n ): T {\n const metadataFromTargetMap = metadatas.get(target);\n if (metadataFromTargetMap) {\n const metadataFromTarget = metadataFromTargetMap.get(propertyName);\n if (metadataFromTarget) {\n return metadataFromTarget;\n }\n }\n for (const ancestor of this.getAncestors(target)) {\n const ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n const ancestorResult = ancestorMetadataMap.get(propertyName);\n if (ancestorResult) {\n return ancestorResult;\n }\n }\n }\n return undefined;\n }\n\n private findMetadatas<T extends { target: Function; propertyName: string }>(\n metadatas: Map<Function, Map<string, T[]>>,\n target: Function,\n propertyName: string\n ): T[] {\n const metadataFromTargetMap = metadatas.get(target);\n let metadataFromTarget: T[];\n if (metadataFromTargetMap) {\n metadataFromTarget = metadataFromTargetMap.get(propertyName);\n }\n const metadataFromAncestorsTarget: T[] = [];\n for (const ancestor of this.getAncestors(target)) {\n const ancestorMetadataMap = metadatas.get(ancestor);\n if (ancestorMetadataMap) {\n if (ancestorMetadataMap.has(propertyName)) {\n metadataFromAncestorsTarget.push(...ancestorMetadataMap.get(propertyName));\n }\n }\n }\n return metadataFromAncestorsTarget\n .slice()\n .reverse()\n .concat((metadataFromTarget || []).slice().reverse());\n }\n\n private getAncestors(target: Function): Function[] {\n if (!target) return [];\n if (!this._ancestorsMap.has(target)) {\n const ancestors: Function[] = [];\n for (\n let baseClass = Object.getPrototypeOf(target.prototype.constructor);\n typeof baseClass.prototype !== 'undefined';\n baseClass = Object.getPrototypeOf(baseClass.prototype.constructor)\n ) {\n ancestors.push(baseClass);\n }\n this._ancestorsMap.set(target, ancestors);\n }\n return this._ancestorsMap.get(target);\n }\n}\n","import { MetadataStorage } from './MetadataStorage';\n\n/**\n * Default metadata storage is used as singleton and can be used to storage all metadatas.\n */\nexport const defaultMetadataStorage = new MetadataStorage();\n","/**\n * This function returns the global object across Node and browsers.\n *\n * Note: `globalThis` is the standardized approach however it has been added to\n * Node.js in version 12. We need to include this snippet until Node 12 EOL.\n */\nexport function getGlobal() {\n if (typeof globalThis !== 'undefined') {\n return globalThis;\n }\n\n if (typeof global !== 'undefined') {\n return global;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'window'.\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'window'.\n return window;\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'self'.\n if (typeof self !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Cannot find name 'self'.\n return self;\n }\n}\n","export function isPromise<T>(p: any): p is Promise<T> {\n return p !== null && typeof p === 'object' && typeof p.then === 'function';\n}\n","import { defaultMetadataStorage } from './storage';\nimport { ClassTransformOptions, TypeHelpOptions, TypeMetadata, TypeOptions } from './interfaces';\nimport { TransformationType } from './enums';\nimport { getGlobal, isPromise } from './utils';\n\nfunction instantiateArrayType(arrayType: Function): Array<any> | Set<any> {\n const array = new (arrayType as any)();\n if (!(array instanceof Set) && !('push' in array)) {\n return [];\n }\n return array;\n}\n\nexport class TransformOperationExecutor {\n // -------------------------------------------------------------------------\n // Private Properties\n // -------------------------------------------------------------------------\n\n private recursionStack = new Set<Record<string, any>>();\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private transformationType: TransformationType, private options: ClassTransformOptions) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transform(\n source: Record<string, any> | Record<string, any>[] | any,\n value: Record<string, any> | Record<string, any>[] | any,\n targetType: Function | TypeMetadata,\n arrayType: Function,\n isMap: boolean,\n level: number = 0\n ): any {\n if (Array.isArray(value) || value instanceof Set) {\n const newValue =\n arrayType && this.transformationType === TransformationType.PLAIN_TO_CLASS\n ? instantiateArrayType(arrayType)\n : [];\n (value as any[]).forEach((subValue, index) => {\n const subSource = source ? source[index] : undefined;\n if (!this.options.enableCircularCheck || !this.isCircular(subValue)) {\n let realTargetType;\n if (\n typeof targetType !== 'function' &&\n targetType &&\n targetType.options &&\n targetType.options.discriminator &&\n targetType.options.discriminator.property &&\n targetType.options.discriminator.subTypes\n ) {\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n realTargetType = targetType.options.discriminator.subTypes.find(\n subType =>\n subType.name === subValue[(targetType as { options: TypeOptions }).options.discriminator.property]\n );\n const options: TypeHelpOptions = { newObject: newValue, object: subValue, property: undefined };\n const newType = targetType.typeFunction(options);\n realTargetType === undefined ? (realTargetType = newType) : (realTargetType = realTargetType.value);\n if (!targetType.options.keepDiscriminatorProperty)\n delete subValue[targetType.options.discriminator.property];\n }\n\n if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n realTargetType = subValue.constructor;\n }\n if (this.transformationType === TransformationType.CLASS_TO_PLAIN) {\n subValue[targetType.options.discriminator.property] = targetType.options.discriminator.subTypes.find(\n subType => subType.value === subValue.constructor\n ).name;\n }\n } else {\n realTargetType = targetType;\n }\n const value = this.transform(\n subSource,\n subValue,\n realTargetType,\n undefined,\n subValue instanceof Map,\n level + 1\n );\n\n if (newValue instanceof Set) {\n newValue.add(value);\n } else {\n newValue.push(value);\n }\n } else if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n if (newValue instanceof Set) {\n newValue.add(subValue);\n } else {\n newValue.push(subValue);\n }\n }\n });\n return newValue;\n } else if (targetType === String && !isMap) {\n if (value === null || value === undefined) return value;\n return String(value);\n } else if (targetType === Number && !isMap) {\n if (value === null || value === undefined) return value;\n return Number(value);\n } else if (targetType === Boolean && !isMap) {\n if (value === null || value === undefined) return value;\n return Boolean(value);\n } else if ((targetType === Date || value instanceof Date) && !isMap) {\n if (value instanceof Date) {\n return new Date(value.valueOf());\n }\n if (value === null || value === undefined) return value;\n return new Date(value);\n } else if (!!getGlobal().Buffer && (targetType === Buffer || value instanceof Buffer) && !isMap) {\n if (value === null || value === undefined) return value;\n return Buffer.from(value);\n } else if (isPromise(value) && !isMap) {\n return new Promise((resolve, reject) => {\n value.then(\n (data: any) => resolve(this.transform(undefined, data, targetType, undefined, undefined, level + 1)),\n reject\n );\n });\n } else if (!isMap && value !== null && typeof value === 'object' && typeof value.then === 'function') {\n // Note: We should not enter this, as promise has been handled above\n // This option simply returns the Promise preventing a JS error from happening and should be an inaccessible path.\n return value; // skip promise transformation\n } else if (typeof value === 'object' && value !== null) {\n // try to guess the type\n if (!targetType && value.constructor !== Object /* && TransformationType === TransformationType.CLASS_TO_PLAIN*/)\n if (!Array.isArray(value) && value.constructor === Array) {\n // Somebody attempts to convert special Array like object to Array, eg:\n // const evilObject = { '100000000': '100000000', __proto__: [] };\n // This could be used to cause Denial-of-service attack so we don't allow it.\n // See prevent-array-bomb.spec.ts for more details.\n } else {\n // We are good we can use the built-in constructor\n targetType = value.constructor;\n }\n if (!targetType && source) targetType = source.constructor;\n\n if (this.options.enableCircularCheck) {\n // add transformed type to prevent circular references\n this.recursionStack.add(value);\n }\n\n const keys = this.getKeys(targetType as Function, value, isMap);\n let newValue: any = source ? source : {};\n if (\n !source &&\n (this.transformationType === TransformationType.PLAIN_TO_CLASS ||\n this.transformationType === TransformationType.CLASS_TO_CLASS)\n ) {\n if (isMap) {\n newValue = new Map();\n } else if (targetType) {\n newValue = new (targetType as any)();\n } else {\n newValue = {};\n }\n }\n\n // traverse over keys\n for (const key of keys) {\n if (key === '__proto__' || key === 'constructor') {\n continue;\n }\n\n const valueKey = key;\n let newValueKey = key,\n propertyName = key;\n if (!this.options.ignoreDecorators && targetType) {\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadataByCustomName(targetType as Function, key);\n if (exposeMetadata) {\n propertyName = exposeMetadata.propertyName;\n newValueKey = exposeMetadata.propertyName;\n }\n } else if (\n this.transformationType === TransformationType.CLASS_TO_PLAIN ||\n this.transformationType === TransformationType.CLASS_TO_CLASS\n ) {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(targetType as Function, key);\n if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) {\n newValueKey = exposeMetadata.options.name;\n }\n }\n }\n\n // get a subvalue\n let subValue: any = undefined;\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n /**\n * This section is added for the following report:\n * https://github.com/typestack/class-transformer/issues/596\n *\n * We should not call functions or constructors when transforming to class.\n */\n subValue = value[valueKey];\n } else {\n if (value instanceof Map) {\n subValue = value.get(valueKey);\n } else if (value[valueKey] instanceof Function) {\n subValue = value[valueKey]();\n } else {\n subValue = value[valueKey];\n }\n }\n\n // determine a type\n let type: any = undefined,\n isSubValueMap = subValue instanceof Map;\n if (targetType && isMap) {\n type = targetType;\n } else if (targetType) {\n const metadata = defaultMetadataStorage.findTypeMetadata(targetType as Function, propertyName);\n if (metadata) {\n const options: TypeHelpOptions = { newObject: newValue, object: value, property: propertyName };\n const newType = metadata.typeFunction ? metadata.typeFunction(options) : metadata.reflectedType;\n if (\n metadata.options &&\n metadata.options.discriminator &&\n metadata.options.discriminator.property &&\n metadata.options.discriminator.subTypes\n ) {\n if (!(value[valueKey] instanceof Array)) {\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n type = metadata.options.discriminator.subTypes.find(subType => {\n if (subValue && subValue instanceof Object && metadata.options.discriminator.property in subValue) {\n return subType.name === subValue[metadata.options.discriminator.property];\n }\n });\n type === undefined ? (type = newType) : (type = type.value);\n if (!metadata.options.keepDiscriminatorProperty) {\n if (subValue && subValue instanceof Object && metadata.options.discriminator.property in subValue) {\n delete subValue[metadata.options.discriminator.property];\n }\n }\n }\n if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n type = subValue.constructor;\n }\n if (this.transformationType === TransformationType.CLASS_TO_PLAIN) {\n if (subValue) {\n subValue[metadata.options.discriminator.property] = metadata.options.discriminator.subTypes.find(\n subType => subType.value === subValue.constructor\n ).name;\n }\n }\n } else {\n type = metadata;\n }\n } else {\n type = newType;\n }\n isSubValueMap = isSubValueMap || metadata.reflectedType === Map;\n } else if (this.options.targetMaps) {\n // try to find a type in target maps\n this.options.targetMaps\n .filter(map => map.target === targetType && !!map.properties[propertyName])\n .forEach(map => (type = map.properties[propertyName]));\n } else if (\n this.options.enableImplicitConversion &&\n this.transformationType === TransformationType.PLAIN_TO_CLASS\n ) {\n // if we have no registererd type via the @Type() decorator then we check if we have any\n // type declarations in reflect-metadata (type declaration is emited only if some decorator is added to the property.)\n const reflectedType = (Reflect as any).getMetadata(\n 'design:type',\n (targetType as Function).prototype,\n propertyName\n );\n\n if (reflectedType) {\n type = reflectedType;\n }\n }\n }\n\n // if value is an array try to get its custom array type\n const arrayType = Array.isArray(value[valueKey])\n ? this.getReflectedType(targetType as Function, propertyName)\n : undefined;\n\n // const subValueKey = TransformationType === TransformationType.PLAIN_TO_CLASS && newKeyName ? newKeyName : key;\n const subSource = source ? source[valueKey] : undefined;\n\n // if its deserialization then type if required\n // if we uncomment this types like string[] will not work\n // if (this.transformationType === TransformationType.PLAIN_TO_CLASS && !type && subValue instanceof Object && !(subValue instanceof Date))\n // throw new Error(`Cannot determine type for ${(targetType as any).name }.${propertyName}, did you forget to specify a @Type?`);\n\n // if newValue is a source object that has method that match newKeyName then skip it\n if (newValue.constructor.prototype) {\n const descriptor = Object.getOwnPropertyDescriptor(newValue.constructor.prototype, newValueKey);\n if (\n (this.transformationType === TransformationType.PLAIN_TO_CLASS ||\n this.transformationType === TransformationType.CLASS_TO_CLASS) &&\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ((descriptor && !descriptor.set) || newValue[newValueKey] instanceof Function)\n )\n // || TransformationType === TransformationType.CLASS_TO_CLASS\n continue;\n }\n\n if (!this.options.enableCircularCheck || !this.isCircular(subValue)) {\n const transformKey = this.transformationType === TransformationType.PLAIN_TO_CLASS ? newValueKey : key;\n let finalValue;\n\n if (this.transformationType === TransformationType.CLASS_TO_PLAIN) {\n // Get original value\n finalValue = value[transformKey];\n // Apply custom transformation\n finalValue = this.applyCustomTransformations(\n finalValue,\n targetType as Function,\n transformKey,\n value,\n this.transformationType\n );\n // If nothing change, it means no custom transformation was applied, so use the subValue.\n finalValue = value[transformKey] === finalValue ? subValue : finalValue;\n // Apply the default transformation\n finalValue = this.transform(subSource, finalValue, type, arrayType, isSubValueMap, level + 1);\n } else {\n if (subValue === undefined && this.options.exposeDefaultValues) {\n // Set default value if nothing provided\n finalValue = newValue[newValueKey];\n } else {\n finalValue = this.transform(subSource, subValue, type, arrayType, isSubValueMap, level + 1);\n finalValue = this.applyCustomTransformations(\n finalValue,\n targetType as Function,\n transformKey,\n value,\n this.transformationType\n );\n }\n }\n\n if (finalValue !== undefined || this.options.exposeUnsetFields) {\n if (newValue instanceof Map) {\n newValue.set(newValueKey, finalValue);\n } else {\n newValue[newValueKey] = finalValue;\n }\n }\n } else if (this.transformationType === TransformationType.CLASS_TO_CLASS) {\n let finalValue = subValue;\n finalValue = this.applyCustomTransformations(\n finalValue,\n targetType as Function,\n key,\n value,\n this.transformationType\n );\n if (finalValue !== undefined || this.options.exposeUnsetFields) {\n if (newValue instanceof Map) {\n newValue.set(newValueKey, finalValue);\n } else {\n newValue[newValueKey] = finalValue;\n }\n }\n }\n }\n\n if (this.options.enableCircularCheck) {\n this.recursionStack.delete(value);\n }\n\n return newValue;\n } else {\n return value;\n }\n }\n\n private applyCustomTransformations(\n value: any,\n target: Function,\n key: string,\n obj: any,\n transformationType: TransformationType\n ): boolean {\n let metadatas = defaultMetadataStorage.findTransformMetadatas(target, key, this.transformationType);\n\n // apply versioning options\n if (this.options.version !== undefined) {\n metadatas = metadatas.filter(metadata => {\n if (!metadata.options) return true;\n\n return this.checkVersion(metadata.options.since, metadata.options.until);\n });\n }\n\n // apply grouping options\n if (this.options.groups && this.options.groups.length) {\n metadatas = metadatas.filter(metadata => {\n if (!metadata.options) return true;\n\n return this.checkGroups(metadata.options.groups);\n });\n } else {\n metadatas = metadatas.filter(metadata => {\n return !metadata.options || !metadata.options.groups || !metadata.options.groups.length;\n });\n }\n\n metadatas.forEach(metadata => {\n value = metadata.transformFn({ value, key, obj, type: transformationType, options: this.options });\n });\n\n return value;\n }\n\n // preventing circular references\n private isCircular(object: Record<string, any>): boolean {\n return this.recursionStack.has(object);\n }\n\n private getReflectedType(target: Function, propertyName: string): Function | undefined {\n if (!target) return undefined;\n const meta = defaultMetadataStorage.findTypeMetadata(target, propertyName);\n return meta ? meta.reflectedType : undefined;\n }\n\n private getKeys(target: Function, object: Record<string, any>, isMap: boolean): string[] {\n // determine exclusion strategy\n let strategy = defaultMetadataStorage.getStrategy(target);\n if (strategy === 'none') strategy = this.options.strategy || 'exposeAll'; // exposeAll is default strategy\n\n // get all keys that need to expose\n let keys: any[] = [];\n if (strategy === 'exposeAll' || isMap) {\n if (object instanceof Map) {\n keys = Array.from(object.keys());\n } else {\n keys = Object.keys(object);\n }\n }\n\n if (isMap) {\n // expose & exclude do not apply for map keys only to fields\n return keys;\n }\n\n /**\n * If decorators are ignored but we don't want the extraneous values, then we use the\n * metadata to decide which property is needed, but doesn't apply the decorator effect.\n */\n if (this.options.ignoreDecorators && this.options.excludeExtraneousValues && target) {\n const exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType);\n const excludedProperties = defaultMetadataStorage.getExcludedProperties(target, this.transformationType);\n keys = [...exposedProperties, ...excludedProperties];\n }\n\n if (!this.options.ignoreDecorators && target) {\n // add all exposed to list of keys\n let exposedProperties = defaultMetadataStorage.getExposedProperties(target, this.transformationType);\n if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {\n exposedProperties = exposedProperties.map(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (exposeMetadata && exposeMetadata.options && exposeMetadata.options.name) {\n return exposeMetadata.options.name;\n }\n\n return key;\n });\n }\n if (this.options.excludeExtraneousValues) {\n keys = exposedProperties;\n } else {\n keys = keys.concat(exposedProperties);\n }\n\n // exclude excluded properties\n const excludedProperties = defaultMetadataStorage.getExcludedProperties(target, this.transformationType);\n if (excludedProperties.length > 0) {\n keys = keys.filter(key => {\n return !excludedProperties.includes(key);\n });\n }\n\n // apply versioning options\n if (this.options.version !== undefined) {\n keys = keys.filter(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (!exposeMetadata || !exposeMetadata.options) return true;\n\n return this.checkVersion(exposeMetadata.options.since, exposeMetadata.options.until);\n });\n }\n\n // apply grouping options\n if (this.options.groups && this.options.groups.length) {\n keys = keys.filter(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n if (!exposeMetadata || !exposeMetadata.options) return true;\n\n return this.checkGroups(exposeMetadata.options.groups);\n });\n } else {\n keys = keys.filter(key => {\n const exposeMetadata = defaultMetadataStorage.findExposeMetadata(target, key);\n return (\n !exposeMetadata ||\n !exposeMetadata.options ||\n !exposeMetadata.options.groups ||\n !exposeMetadata.options.groups.length\n );\n });\n }\n }\n\n // exclude prefixed properties\n if (this.options.excludePrefixes && this.options.excludePrefixes.length) {\n keys = keys.filter(key =>\n this.options.excludePrefixes.every(prefix => {\n return key.substr(0, prefix.length) !== prefix;\n })\n );\n }\n\n // make sure we have unique keys\n keys = keys.filter((key, index, self) => {\n return self.indexOf(key) === index;\n });\n\n return keys;\n }\n\n private checkVersion(since: number, until: number): boolean {\n let decision = true;\n if (decision && since) decision = this.options.version >= since;\n if (decision && until) decision = this.options.version < until;\n\n return decision;\n }\n\n private checkGroups(groups: string[]): boolean {\n if (!groups) return true;\n\n return this.options.groups.some(optionGroup => groups.includes(optionGroup));\n }\n}\n","import { ClassTransformOptions } from '../interfaces/class-transformer-options.interface';\n\n/**\n * These are the default options used by any transformation operation.\n */\nexport const defaultOptions: Partial<ClassTransformOptions> = {\n enableCircularCheck: false,\n enableImplicitConversion: false,\n excludeExtraneousValues: false,\n excludePrefixes: undefined,\n exposeDefaultValues: false,\n exposeUnsetFields: true,\n groups: undefined,\n ignoreDecorators: false,\n strategy: undefined,\n targetMaps: undefined,\n version: undefined,\n};\n","import { ClassTransformOptions } from './interfaces';\nimport { TransformOperationExecutor } from './TransformOperationExecutor';\nimport { TransformationType } from './enums';\nimport { ClassConstructor } from './interfaces';\nimport { defaultOptions } from './constants/default-options.constant';\n\nexport class ClassTransformer {\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Converts class (constructor) object to plain (literal) object. Also works with arrays.\n */\n instanceToPlain<T extends Record<string, any>>(object: T, options?: ClassTransformOptions): Record<string, any>;\n instanceToPlain<T extends Record<string, any>>(object: T[], options?: ClassTransformOptions): Record<string, any>[];\n instanceToPlain<T extends Record<string, any>>(\n object: T | T[],\n options?: ClassTransformOptions\n ): Record<string, any> | Record<string, any>[] {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(undefined, object, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Converts class (constructor) object to plain (literal) object.\n * Uses given plain object as source object (it means fills given plain object with data from class object).\n * Also works with arrays.\n */\n classToPlainFromExist<T extends Record<string, any>, P>(\n object: T,\n plainObject: P,\n options?: ClassTransformOptions\n ): T;\n classToPlainFromExist<T extends Record<string, any>, P>(\n object: T,\n plainObjects: P[],\n options?: ClassTransformOptions\n ): T[];\n classToPlainFromExist<T extends Record<string, any>, P>(\n object: T,\n plainObject: P | P[],\n options?: ClassTransformOptions\n ): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_PLAIN, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(plainObject, object, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Converts plain (literal) object to class (constructor) object. Also works with arrays.\n */\n plainToInstance<T extends Record<string, any>, V extends Array<any>>(\n cls: ClassConstructor<T>,\n plain: V,\n options?: ClassTransformOptions\n ): T[];\n plainToInstance<T extends Record<string, any>, V>(\n cls: ClassConstructor<T>,\n plain: V,\n options?: ClassTransformOptions\n ): T;\n plainToInstance<T extends Record<string, any>, V>(\n cls: ClassConstructor<T>,\n plain: V | V[],\n options?: ClassTransformOptions\n ): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(undefined, plain, cls, undefined, undefined, undefined);\n }\n\n /**\n * Converts plain (literal) object to class (constructor) object.\n * Uses given object as source object (it means fills given object with data from plain object).\n * Also works with arrays.\n */\n plainToClassFromExist<T extends Record<string, any>, V extends Array<any>>(\n clsObject: T,\n plain: V,\n options?: ClassTransformOptions\n ): T;\n plainToClassFromExist<T extends Record<string, any>, V>(clsObject: T, plain: V, options?: ClassTransformOptions): T[];\n plainToClassFromExist<T extends Record<string, any>, V>(\n clsObject: T,\n plain: V | V[],\n options?: ClassTransformOptions\n ): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.PLAIN_TO_CLASS, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(clsObject, plain, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Converts class (constructor) object to new class (constructor) object. Also works with arrays.\n */\n instanceToInstance<T>(object: T, options?: ClassTransformOptions): T;\n instanceToInstance<T>(object: T[], options?: ClassTransformOptions): T[];\n instanceToInstance<T>(object: T | T[], options?: ClassTransformOptions): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(undefined, object, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Converts class (constructor) object to plain (literal) object.\n * Uses given plain object as source object (it means fills given plain object with data from class object).\n * Also works with arrays.\n */\n classToClassFromExist<T>(object: T, fromObject: T, options?: ClassTransformOptions): T;\n classToClassFromExist<T>(object: T, fromObjects: T[], options?: ClassTransformOptions): T[];\n classToClassFromExist<T>(object: T, fromObject: T | T[], options?: ClassTransformOptions): T | T[] {\n const executor = new TransformOperationExecutor(TransformationType.CLASS_TO_CLASS, {\n ...defaultOptions,\n ...options,\n });\n return executor.transform(fromObject, object, undefined, undefined, undefined, undefined);\n }\n\n /**\n * Serializes given object to a JSON string.\n */\n serialize<T>(object: T, options?: ClassTransformOptions): string;\n serialize<T>(object: T[], options?: ClassTransformOptions): string;\n serialize<T>(object: T | T[], options?: ClassTransformOptions): string {\n return JSON.stringify(this.instanceToPlain(object, options));\n }\n\n /**\n * Deserializes given JSON string to a object of the given class.\n */\n deserialize<T>(cls: ClassConstructor<T>, json: string, options?: ClassTransformOptions): T {\n const jsonObject: T = JSON.parse(json);\n return this.plainToInstance(cls, jsonObject, options);\n }\n\n /**\n * Deserializes given JSON string to an array of objects of the given class.\n */\n deserializeArray<T>(cls: ClassConstructor<T>, json: string, options?: ClassTransformOptions): T[] {\n const jsonObject: any[] = JSON.parse(json);\n return this.plainToInstance(cls, jsonObject, options);\n }\n}\n","import { defaultMetadataStorage } from '../storage';\nimport { TransformFnParams, TransformOptions } from '../interfaces';\n\n/**\n * Defines a custom logic for value transformation.\n *\n * Can be applied to properties only.\n */\nexport function Transform(\n transformFn: (params: TransformFnParams) => any,\n options: TransformOptions = {}\n): PropertyDecorator {\n return function (target: any, propertyName: string | Symbol): void {\n defaultMetadataStorage.addTransformMetadata({\n target: target.constructor,\n propertyName: propertyName as string,\n transformFn,\n options,\n });\n };\n}\n","import { defaultMetadataStorage } from '../storage';\nimport { TypeHelpOptions, TypeOptions } from '../interfaces';\n\n/**\n * Specifies a type of the property.\n * The given TypeFunction can return a constructor. A discriminator can be given in the options.\n *\n * Can be applied to properties only.\n */\nexport function Type(\n typeFunction?: (type?: TypeHelpOptions) => Function,\n options: TypeOptions = {}\n): PropertyDecorator {\n return function (target: any, propertyName: string | Symbol): void {\n const reflectedType = (Reflect as any).getMetadata('design:type', target, propertyName);\n defaultMetadataStorage.addTypeMetadata({\n target: target.constructor,\n propertyName: propertyName as string,\n reflectedType,\n typeFunction,\n options,\n });\n };\n}\n","import { ClassTransformer } from './ClassTransformer';\nimport { ClassTransformOptions } from './interfaces';\nimport { ClassConstructor } from './interfaces';\n\nexport { ClassTransformer } from './ClassTransformer';\nexport * from './decorators';\nexport * from './interfaces';\nexport * from './enums';\n\nconst classTransformer = new ClassTransformer();\n\n/**\n * Converts class (constructor) object to plain (literal) object. Also works with arrays.\n *\n * @deprecated Function name changed, use the `instanceToPlain` method instead.\n */\nexport function classToPlain<T>(object: T, options?: ClassTransformOptions): Record<string, any>;\nexport function classToPlain<T>(object: T[], options?: ClassTransformOptions): Record<string, any>[];\nexport function classToPlain<T>(\n object: T | T[],\n options?: ClassTransformOptions\n): Record<string, any> | Record<string, any>[] {\n return classTransformer.instanceToPlain(object, options);\n}\n\n/**\n * Converts class (constructor) object to plain (literal) object. Also works with arrays.\n */\nexport function instanceToPlain<T>(object: T, options?: ClassTransformOptions): Record<string, any>;\nexport function instanceToPlain<T>(object: T[], options?: ClassTransformOptions): Record<string, any>[];\nexport function instanceToPlain<T>(\n object: T | T[],\n options?: ClassTransformOptions\n): Record<string, any> | Record<string, any>[] {\n return classTransformer.instanceToPlain(object, options);\n}\n\n/**\n * Converts class (constructor) object to plain (literal) object.\n * Uses given plain object as source object (it means fills given plain object with data from class object).\n * Also works with arrays.\n *\n * @deprecated This function is being removed.\n */\nexport function classToPlainFromExist<T>(\n object: T,\n plainObject: Record<string, any>,\n options?: ClassTransformOptions\n): Record<string, any>;\nexport function classToPlainFromExist<T>(\n object: T,\n plainObjects: Record<string, any>[],\n options?: ClassTransformOptions\n): Record<string, any>[];\nexport function classToPlainFromExist<T>(\n object: T,\n plainObject: Record<string, any> | Record<string, any>[],\n options?: ClassTransformOptions\n): Record<string, any> | Record<string, any>[] {\n return classTransformer.classToPlainFromExist(object, plainObject, options);\n}\n\n/**\n * Converts plain (literal) object to class (constructor) object. Also works with arrays.\n *\n * @deprecated Function name changed, use the `plainToInstance` method instead.\n */\nexport function plainToClass<T, V>(cls: ClassConstructor<T>, plain: V[], options?: ClassTransformOptions): T[];\nexport function plainToClass<T, V>(cls: ClassConstructor<T>, plain: V, options?: ClassTransformOptions): T;\nexport function plainToClass<T, V>(cls: ClassConstructor<T>, plain: V | V[], options?: ClassTransformOptions): T | T[] {\n return classTransformer.plainToInstance(cls, plain as any, options);\n}\n\n/**\n * Converts plain (literal) object to class (constructor) object. Also works with arrays.\n */\nexport function plainToInstance<T, V>(cls: ClassConstructor<T>, plain: V[], options?: ClassTransformOptions): T[];\nexport function plainToInstance<T, V>(cls: ClassConstructor<T>, plain: V, options?: ClassTransformOptions): T;\nexport function plainToInstance<T, V>(\n cls: ClassConstructor<T>,\n plain: V | V[],\n options?: ClassTransformOptions\n): T | T[] {\n return classTransformer.plainToInstance(cls, plain as any, options);\n}\n\n/**\n * Converts plain (literal) object to class (constructor) object.\n * Uses given object as source object (it means fills given object with data from plain object).\n * Also works with arrays.\n *\n * @deprecated This function is being removed. The current implementation is incorrect as it modifies the source object.\n */\nexport function plainToClassFromExist<T, V>(clsObject: T[], plain: V[], options?: ClassTransformOptions): T[];\nexport function plainToClassFromExist<T, V>(clsObject: T, plain: V, options?: ClassTransformOptions): T;\nexport function plainToClassFromExist<T, V>(clsObject: T, plain: V | V[], options?: ClassTransformOptions): T | T[] {\n return classTransformer.plainToClassFromExist(clsObject, plain, options);\n}\n\n/**\n * Converts class (constructor) object to new class (constructor) object. Also works with arrays.\n */\nexport function instanceToInstance<T>(object: T, options?: ClassTransformOptions): T;\nexport function instanceToInstance<T>(object: T[], options?: ClassTransformOptions): T[];\nexport function instanceToInstance<T>(object: T | T[], options?: ClassTransformOptions): T | T[] {\n return classTransformer.instanceToInstance(object, options);\n}\n\n/**\n * Converts class (constructor) object to plain (literal) object.\n * Uses given plain object as source object (it means fills given plain object with data from class object).\n * Also works with arrays.\n *\n * @deprecated This function is being removed. The current implementation is incorrect as it modifies the source object.\n */\nexport function classToClassFromExist<T>(object: T, fromObject: T, options?: ClassTransformOptions): T;\nexport function classToClassFromExist<T>(object: T, fromObjects: T[], options?: ClassTransformOptions): T[];\nexport function classToClassFromExist<T>(object: T, fromObject: T | T[], options?: ClassTransformOptions): T | T[] {\n return classTransformer.classToClassFromExist(object, fromObject, options);\n}\n\n/**\n * Serializes given object to a JSON string.\n *\n * @deprecated This function is being removed. Please use\n * ```\n * JSON.stringify(instanceToPlain(object, options))\n * ```\n */\nexport function serialize<T>(object: T, options?: ClassTransformOptions): string;\nexport function serialize<T>(object: T[], options?: ClassTransformOptions): string;\nexport function serialize<T>(object: T | T[], options?: ClassTransformOptions): string {\n return classTransformer.serialize(object, options);\n}\n\n/**\n * Deserializes given JSON string to a object of the given class.\n *\n * @deprecated This function is being removed. Please use the following instead:\n * ```\n * instanceToClass(cls, JSON.parse(json), options)\n * ```\n */\nexport function deserialize<T>(cls: ClassConstructor<T>, json: string, options?: ClassTransformOptions): T {\n return classTransformer.deserialize(cls, json, options);\n}\n\n/**\n * Deserializes given JSON string to an array of objects of the given class.\n *\n * @deprecated This function is being removed. Please use the following instead:\n * ```\n * JSON.parse(json).map(value => instanceToClass(cls, value, options))\n * ```\n *\n */\nexport function deserializeArray<T>(cls: ClassConstructor<T>, json: string, options?: ClassTransformOptions): T[] {\n return classTransformer.deserializeArray(cls, json, options);\n}\n","import { IsString, IsOptional, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\n\nexport abstract class _OpenAPIGenBaseModel {\n @IsString()\n @IsOptional()\n /** A base class to use when there is no baseclass available to fall on. */\n type?: string;\n\t\n\n constructor() {\n this.type = \"InvalidType\";\n }\n\n\n init(_data?: any) {\n }\n\n\n static fromJS(data: any): _OpenAPIGenBaseModel {\n data = typeof data === 'object' ? data : {};\n\n throw new Error(\"The abstract class '_OpenAPIGenBaseModel' cannot be instantiated.\");\n }\n\n\ttoJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n return removeUndefinedProperties(data);\n }\n\n}\n\nfunction removeUndefinedProperties(obj: any): any {\n if (Array.isArray(obj)) {\n return obj.map(removeUndefinedProperties);\n } else if (obj !== null && typeof obj === 'object') {\n return Object.entries(obj)\n .filter(([_, value]) => value !== undefined)\n .reduce((acc, [key, value]) => {\n acc[key] = removeUndefinedProperties(value);\n return acc;\n }, {} as any);\n }\n return obj;\n}\n","import { IsNumber, IsDefined, IsBoolean, IsOptional, IsString, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Base object for all GridParameters. */\nexport class _GridParameterBase extends _OpenAPIGenBaseModel {\n @IsNumber()\n @IsDefined()\n /** The dimension of the grid cells as a number. */\n dimension!: number;\n\t\n @IsBoolean()\n @IsOptional()\n /** A boolean to note whether the resulting SensorGrid should include the mesh. */\n include_mesh?: boolean;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^_GridParameterBase$/)\n /** Type */\n type?: string;\n\t\n\n constructor() {\n super();\n this.include_mesh = true;\n this.type = \"_GridParameterBase\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(_GridParameterBase, _data, { enableImplicitConversion: true });\n this.dimension = obj.dimension;\n this.include_mesh = obj.include_mesh;\n this.type = obj.type;\n }\n }\n\n\n static override fromJS(data: any): _GridParameterBase {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new _GridParameterBase();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dimension\"] = this.dimension;\n data[\"include_mesh\"] = this.include_mesh;\n data[\"type\"] = this.type;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsNumber, IsDefined, IsOptional, Min, Max, IsArray, IsBoolean, IsString, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Base class for for a series of louvered shades over a wall. */\nexport class _LouversBase extends _OpenAPIGenBaseModel {\n @IsNumber()\n @IsDefined()\n /** A number for the depth to extrude the louvers. */\n depth!: number;\n\t\n @IsNumber()\n @IsOptional()\n @Min(0)\n /** A number for the distance to louvers from the wall. */\n offset?: number;\n\t\n @IsNumber()\n @IsOptional()\n @Min(-90)\n @Max(90)\n /** A number between -90 and 90 for the for an angle to rotate the louvers in degrees. 0 indicates louvers perpendicular to the wall. Positive values indicate a downward rotation. Negative values indicate an upward rotation. */\n angle?: number;\n\t\n @IsArray()\n @IsNumber({},{ each: true })\n @IsOptional()\n /** A list of two float values representing the (x, y) of a 2D vector for the direction along which contours are generated. (0, 1) will generate horizontal contours, (1, 0) will generate vertical contours, and (1, 1) will generate diagonal contours. */\n contour_vector?: number [];\n\t\n @IsBoolean()\n @IsOptional()\n /** Boolean to note whether the side the louvers start from should be flipped. Default is False to have contours on top or right. Setting to True will start contours on the bottom or left. */\n flip_start_side?: boolean;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^_LouversBase$/)\n /** Type */\n type?: string;\n\t\n\n constructor() {\n super();\n this.offset = 0;\n this.angle = 0;\n this.contour_vector = [0, 1];\n this.flip_start_side = false;\n this.type = \"_LouversBase\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(_LouversBase, _data, { enableImplicitConversion: true });\n this.depth = obj.depth;\n this.offset = obj.offset;\n this.angle = obj.angle;\n this.contour_vector = obj.contour_vector;\n this.flip_start_side = obj.flip_start_side;\n this.type = obj.type;\n }\n }\n\n\n static override fromJS(data: any): _LouversBase {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new _LouversBase();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"depth\"] = this.depth;\n data[\"offset\"] = this.offset;\n data[\"angle\"] = this.angle;\n data[\"contour_vector\"] = this.contour_vector;\n data[\"flip_start_side\"] = this.flip_start_side;\n data[\"type\"] = this.type;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsOptional, IsString, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Base class for all window parameters. */\nexport class _WindowParameterBase extends _OpenAPIGenBaseModel {\n @IsOptional()\n /** Optional dictionary of user data associated with the object.All keys and values of this dictionary should be of a standard data type to ensure correct serialization of the object (eg. str, float, int, list). When a list is used, each item in the list will be assigned to the generated Honeybee apertures. */\n user_data?: Object;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^_WindowParameterBase$/)\n /** Type */\n type?: string;\n\t\n\n constructor() {\n super();\n this.type = \"_WindowParameterBase\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(_WindowParameterBase, _data, { enableImplicitConversion: true });\n this.user_data = obj.user_data;\n this.type = obj.type;\n }\n }\n\n\n static override fromJS(data: any): _WindowParameterBase {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new _WindowParameterBase();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"user_data\"] = this.user_data;\n data[\"type\"] = this.type;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsString, IsOptional, Matches, MinLength, MaxLength, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Base class for all objects that are not extensible with additional keys.\\n\\nThis effectively includes all objects except for the Properties classes\\nthat are assigned to geometry objects. */\nexport class BuildingEnergyPropertiesAbridged extends _OpenAPIGenBaseModel {\n @IsString()\n @IsOptional()\n @Matches(/^BuildingEnergyPropertiesAbridged$/)\n /** Type */\n type?: string;\n\t\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n /** Name of a ConstructionSet to specify all constructions for the Building. If None, the Model global_construction_set will be used. */\n construction_set?: string;\n\t\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n /** Identifier of an OpaqueConstruction for the bottoms of ceiling plenums. Materials should be ordered from the plenum side to the room side. By default, this is a simple acoustic tile construction. */\n ceiling_plenum_construction?: string;\n\t\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n /** Identifier of an OpaqueConstruction for the tops of floor plenums. Materials should be ordered from the plenum side to the room side. By default, this is a simple wood plank construction. */\n floor_plenum_construction?: string;\n\t\n\n constructor() {\n super();\n this.type = \"BuildingEnergyPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(BuildingEnergyPropertiesAbridged, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.construction_set = obj.construction_set;\n this.ceiling_plenum_construction = obj.ceiling_plenum_construction;\n this.floor_plenum_construction = obj.floor_plenum_construction;\n }\n }\n\n\n static override fromJS(data: any): BuildingEnergyPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new BuildingEnergyPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"construction_set\"] = this.construction_set;\n data[\"ceiling_plenum_construction\"] = this.ceiling_plenum_construction;\n data[\"floor_plenum_construction\"] = this.floor_plenum_construction;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsString, IsOptional, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Base class for all objects that are not extensible with additional keys.\\n\\nThis effectively includes all objects except for the Properties classes\\nthat are assigned to geometry objects. */\nexport class BuildingRadiancePropertiesAbridged extends _OpenAPIGenBaseModel {\n @IsString()\n @IsOptional()\n @Matches(/^BuildingRadiancePropertiesAbridged$/)\n /** Type */\n type?: string;\n\t\n @IsString()\n @IsOptional()\n /** Name of a ModifierSet to specify all modifiers for the Building. If None, the Model global_modifier_set will be used. */\n modifier_set?: string;\n\t\n\n constructor() {\n super();\n this.type = \"BuildingRadiancePropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(BuildingRadiancePropertiesAbridged, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.modifier_set = obj.modifier_set;\n }\n }\n\n\n static override fromJS(data: any): BuildingRadiancePropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new BuildingRadiancePropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"modifier_set\"] = this.modifier_set;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsString, IsOptional, Matches, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { BuildingEnergyPropertiesAbridged } from \"./BuildingEnergyPropertiesAbridged\";\nimport { BuildingRadiancePropertiesAbridged } from \"./BuildingRadiancePropertiesAbridged\";\n\nexport class BuildingPropertiesAbridged extends _OpenAPIGenBaseModel {\n @IsString()\n @IsOptional()\n @Matches(/^BuildingPropertiesAbridged$/)\n /** Type */\n type?: string;\n\t\n @IsInstance(BuildingEnergyPropertiesAbridged)\n @Type(() => BuildingEnergyPropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n /** Energy */\n energy?: BuildingEnergyPropertiesAbridged;\n\t\n @IsInstance(BuildingRadiancePropertiesAbridged)\n @Type(() => BuildingRadiancePropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n /** Radiance */\n radiance?: BuildingRadiancePropertiesAbridged;\n\t\n\n constructor() {\n super();\n this.type = \"BuildingPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(BuildingPropertiesAbridged, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.energy = obj.energy;\n this.radiance = obj.radiance;\n }\n }\n\n\n static override fromJS(data: any): BuildingPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new BuildingPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"energy\"] = this.energy;\n data[\"radiance\"] = this.radiance;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsInstance, ValidateNested, IsDefined, IsString, IsOptional, Matches, IsArray, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { BuildingPropertiesAbridged } from \"./BuildingPropertiesAbridged\";\nimport { IDdBaseModel } from \"honeybee-schema\";\nimport { RoofSpecification } from \"./RoofSpecification\";\nimport { Room } from \"honeybee-schema\";\nimport { Story } from \"./Story\";\n\n/** Base class for all objects requiring a identifiers acceptable for all engines. */\nexport class Building extends IDdBaseModel {\n @IsInstance(BuildingPropertiesAbridged)\n @Type(() => BuildingPropertiesAbridged)\n @ValidateNested()\n @IsDefined()\n /** Extension properties for particular simulation engines (Radiance, EnergyPlus). */\n properties!: BuildingPropertiesAbridged;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^Building$/)\n /** Type */\n type?: string;\n\t\n @IsArray()\n @IsInstance(Story, { each: true })\n @Type(() => Story)\n @ValidateNested({ each: true })\n @IsOptional()\n /** An array of unique dragonfly Story objects that together form the entire building. Stories should generally be ordered from lowest floor to highest floor, though this is not required. Note that, if a given Story is repeated several times over the height of the building and this is represented by the multiplier, the unique story included in this list should be the first (lowest) story of the repeated floors. */\n unique_stories?: Story [];\n\t\n @IsArray()\n @IsInstance(Room, { each: true })\n @Type(() => Room)\n @ValidateNested({ each: true })\n @IsOptional()\n /** An optional array of 3D Honeybee Room objects for additional Rooms that are a part of the Building but are not represented within the unique_stories. This is useful when there are parts of the Building geometry that cannot easily be represented with the extruded floor plate and sloped roof assumptions that underlie Dragonfly Room2Ds and RoofSpecification. Cases where this input is most useful include sloped walls and certain types of domed roofs that become tedious to implement with RoofSpecification. Matching the Honeybee Room.story property to the Dragonfly Story.display_name of an object within the unique_stories will effectively place the Honeybee Room on that Story for the purposes of floor_area, exterior_wall_area, etc. However, note that the Honeybee Room.multiplier property takes precedence over whatever multiplier is assigned to the Dragonfly Story that the Room.story may reference. (Default: None). */\n room_3ds?: Room [];\n\t\n @IsInstance(RoofSpecification)\n @Type(() => RoofSpecification)\n @ValidateNested()\n @IsOptional()\n /** An optional RoofSpecification object that provides an alternative way to describe roof geometry over rooms (instead of specifying roofs on each story). If trying to decide between the two, specifying geometry on each story is closer to how dragonfly natively works with roof geometry as it relates to rooms. However, when it is unknown which roof geometries correspond to which stories, this Building-level attribute may be used and each roof geometry will automatically be added to the best Story in the Building upon serialization to Python. This automatic assignment will happen by checking for overlaps between the Story Room2Ds and the Roof geometry in plan. When a given roof geometry overlaps with several Stories, the top-most Story will get the roof geometry assigned to it unless this top Story has a floor_height above the roof geometry, in which case the next highest story will be checked until a compatible one is found. */\n roof?: RoofSpecification;\n\t\n\n constructor() {\n super();\n this.type = \"Building\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(Building, _data, { enableImplicitConversion: true });\n this.properties = obj.properties;\n this.type = obj.type;\n this.unique_stories = obj.unique_stories;\n this.room_3ds = obj.room_3ds;\n this.roof = obj.roof;\n }\n }\n\n\n static override fromJS(data: any): Building {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Building();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"properties\"] = this.properties;\n data[\"type\"] = this.type;\n data[\"unique_stories\"] = this.unique_stories;\n data[\"room_3ds\"] = this.room_3ds;\n data[\"roof\"] = this.roof;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsArray, IsInstance, ValidateNested, IsDefined, IsString, IsOptional, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { Face3D } from \"honeybee-schema\";\n\n/** Geometry for specifying sloped roofs over a Story. */\nexport class RoofSpecification extends _OpenAPIGenBaseModel {\n @IsArray()\n @IsInstance(Face3D, { each: true })\n @Type(() => Face3D)\n @ValidateNested({ each: true })\n @IsDefined()\n /** An array of Face3D objects representing the geometry of the Roof. None of these geometries should overlap in plan and, together, these Face3D should either completely cover or skip each Room2D of the Story to which the RoofSpecification is assigned. */\n geometry!: Face3D [];\n\t\n @IsString()\n @IsOptional()\n @Matches(/^RoofSpecification$/)\n /** Type */\n type?: string;\n\t\n\n constructor() {\n super();\n this.type = \"RoofSpecification\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(RoofSpecification, _data, { enableImplicitConversion: true });\n this.geometry = obj.geometry;\n this.type = obj.type;\n }\n }\n\n\n static override fromJS(data: any): RoofSpecification {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new RoofSpecification();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"geometry\"] = this.geometry;\n data[\"type\"] = this.type;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsArray, IsInstance, ValidateNested, IsDefined, IsString, IsOptional, Matches, IsInt, Min, IsEnum, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { Autocalculate } from \"honeybee-schema\";\nimport { IDdBaseModel } from \"honeybee-schema\";\nimport { RoofSpecification } from \"./RoofSpecification\";\nimport { Room2D } from \"./Room2D\";\nimport { StoryPropertiesAbridged } from \"./StoryPropertiesAbridged\";\nimport { StoryType } from \"./StoryType\";\n\n/** Base class for all objects requiring a identifiers acceptable for all engines. */\nexport class Story extends IDdBaseModel {\n @IsArray()\n @IsInstance(Room2D, { each: true })\n @Type(() => Room2D)\n @ValidateNested({ each: true })\n @IsDefined()\n /** An array of dragonfly Room2D objects that together form an entire story of a building. */\n room_2ds!: Room2D [];\n\t\n @IsInstance(StoryPropertiesAbridged)\n @Type(() => StoryPropertiesAbridged)\n @ValidateNested()\n @IsDefined()\n /** Extension properties for particular simulation engines (Radiance, EnergyPlus). */\n properties!: StoryPropertiesAbridged;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^Story$/)\n /** Type */\n type?: string;\n\t\n @IsOptional()\n /** A number for the distance from the floor plate of this story to the floor of the story above this one (if it exists). If Autocalculate, this value will be the maximum floor_to_ceiling_height of the input room_2ds. */\n floor_to_floor_height?: (Autocalculate | number);\n\t\n @IsOptional()\n /** A number to indicate the height of the floor plane in the Z axis.If Autocalculate, this will be the minimum floor height of all the room_2ds, which is suitable for cases where there are no floor plenums. */\n floor_height?: (Autocalculate | number);\n\t\n @IsInt()\n @IsOptional()\n @Min(1)\n /** An integer that denotes the number of times that this Story is repeated over the height of the building. */\n multiplier?: number;\n\t\n @IsInstance(RoofSpecification)\n @Type(() => RoofSpecification)\n @ValidateNested()\n @IsOptional()\n /** An optional RoofSpecification object containing geometry for generating sloped roofs over the Story. The RoofSpecification will only affect the child Room2Ds that have a True is_top_exposed property and it will only be utilized in translation to Honeybee when the Story multiplier is 1. If None, all Room2D ceilings will be flat. */\n roof?: RoofSpecification;\n\t\n @IsEnum(StoryType)\n @Type(() => String)\n @IsOptional()\n /** Text to indicate the type of story. Stories that are plenums are translated to Honeybee with excluded floor areas. */\n story_type?: StoryType;\n\t\n\n constructor() {\n super();\n this.type = \"Story\";\n this.floor_to_floor_height = new Autocalculate();\n this.floor_height = new Autocalculate();\n this.multiplier = 1;\n this.story_type = StoryType.Standard;\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(Story, _data, { enableImplicitConversion: true });\n this.room_2ds = obj.room_2ds;\n this.properties = obj.properties;\n this.type = obj.type;\n this.floor_to_floor_height = obj.floor_to_floor_height;\n this.floor_height = obj.floor_height;\n this.multiplier = obj.multiplier;\n this.roof = obj.roof;\n this.story_type = obj.story_type;\n }\n }\n\n\n static override fromJS(data: any): Story {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Story();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"room_2ds\"] = this.room_2ds;\n data[\"properties\"] = this.properties;\n data[\"type\"] = this.type;\n data[\"floor_to_floor_height\"] = this.floor_to_floor_height;\n data[\"floor_height\"] = this.floor_height;\n data[\"multiplier\"] = this.multiplier;\n data[\"roof\"] = this.roof;\n data[\"story_type\"] = this.story_type;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { registerDecorator, ValidationOptions, ValidationArguments } from 'class-validator';\n\n\n// Custom decorator to validate nested arrays of numbers\nexport function IsNestedNumberArray(validationOptions?: ValidationOptions) {\n return function (object: Object, propertyName: string) {\n registerDecorator({\n name: 'isNestedNumberArray',\n target: object.constructor,\n propertyName: propertyName,\n options: validationOptions,\n validator: {\n validate(value: any, args: ValidationArguments) {\n if (value === undefined || value === null) return true; // Allow optional values\n if (!Array.isArray(value)) return false;\n return value.every(\n (arr: any) => Array.isArray(arr) && arr.every(\n (subArr: any) => \n (Array.isArray(subArr) && subArr.every(\n (num: any) => typeof num === 'number'\n )) || \n typeof subArr === 'number'\n )\n );\n },\n defaultMessage(args: ValidationArguments) {\n return `${args.property} must be number[][] or number[][][]`;\n }\n }\n });\n };\n}\n \n \n// Custom decorator to validate nested arrays of numbers\nexport function IsNestedIntegerArray(validationOptions?: ValidationOptions) {\n return function (object: Object, propertyName: string) {\n registerDecorator({\n name: 'isNestedIntegerArray',\n target: object.constructor,\n propertyName: propertyName,\n options: validationOptions,\n validator: {\n validate(value: any, args: ValidationArguments) {\n if (value === undefined || value === null) return true; // Allow optional values\n if (!Array.isArray(value)) return false;\n return value.every(\n (arr: any) => Array.isArray(arr) && arr.every(\n (subArr: any) => \n (Array.isArray(subArr) && subArr.every(\n (num: any) => Number.isInteger(num)\n )) || \n Number.isInteger(subArr)\n )\n );\n },\n defaultMessage(args: ValidationArguments) {\n return `${args.property} must be number[][] or number[][][]`;\n }\n }\n });\n };\n}\n\n\n// Custom decorator to validate nested arrays of numbers\nexport function IsNestedStringArray(validationOptions?: ValidationOptions) {\n return function (object: Object, propertyName: string) {\n registerDecorator({\n name: 'isNestedStringArray',\n target: object.constructor,\n propertyName: propertyName,\n options: validationOptions,\n validator: {\n validate(value: any, args: ValidationArguments) {\n if (value === undefined || value === null) return true; // Allow optional values\n if (!Array.isArray(value)) return false;\n return value.every(\n (arr: any) => Array.isArray(arr) && arr.every(\n (subArr: any) => \n (Array.isArray(subArr) && subArr.every(\n (num: any) => typeof num === 'string'\n )) || \n typeof subArr === 'string'\n )\n );\n },\n defaultMessage(args: ValidationArguments) {\n return `${args.property} must be string[][] or string[][][]`;\n }\n }\n });\n };\n}","import { IsArray, IsDefined, IsNumber, IsInstance, ValidateNested, IsString, IsOptional, Matches, IsBoolean, Min, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { IsNestedNumberArray } from \"./../helpers/class-validator\";\nimport { Adiabatic } from \"honeybee-schema\";\nimport { DetailedSkylights } from \"./DetailedSkylights\";\nimport { DetailedWindows } from \"./DetailedWindows\";\nimport { ExtrudedBorder } from \"./ExtrudedBorder\";\nimport { GriddedSkylightArea } from \"./GriddedSkylightArea\";\nimport { GriddedSkylightRatio } from \"./GriddedSkylightRatio\";\nimport { Ground } from \"honeybee-schema\";\nimport { IDdBaseModel } from \"honeybee-schema\";\nimport { LouversByCount } from \"./LouversByCount\";\nimport { LouversByDistance } from \"./LouversByDistance\";\nimport { OtherSideTemperature } from \"honeybee-schema\";\nimport { Outdoors } from \"honeybee-schema\";\nimport { Overhang } from \"./Overhang\";\nimport { RectangularWindows } from \"./RectangularWindows\";\nimport { RepeatingWindowRatio } from \"./RepeatingWindowRatio\";\nimport { Room2DPropertiesAbridged } from \"./Room2DPropertiesAbridged\";\nimport { SimpleWindowArea } from \"./SimpleWindowArea\";\nimport { SimpleWindowRatio } from \"./SimpleWindowRatio\";\nimport { SingleWindow } from \"./SingleWindow\";\nimport { Surface } from \"honeybee-schema\";\n\n/** Base class for all objects requiring a identifiers acceptable for all engines. */\nexport class Room2D extends IDdBaseModel {\n @IsArray()\n @IsNestedNumberArray()\n @IsDefined()\n /** A list of 2D points representing the outer boundary vertices of the Room2D. The list should include at least 3 points and each point should be a list of 2 (x, y) values. */\n floor_boundary!: number [] [];\n\t\n @IsNumber()\n @IsDefined()\n /** A number to indicate the height of the floor plane in the Z axis. */\n floor_height!: number;\n\t\n @IsNumber()\n @IsDefined()\n /** A number for the distance between the floor and the ceiling. */\n floor_to_ceiling_height!: number;\n\t\n @IsInstance(Room2DPropertiesAbridged)\n @Type(() => Room2DPropertiesAbridged)\n @ValidateNested()\n @IsDefined()\n /** Extension properties for particular simulation engines (Radiance, EnergyPlus). */\n properties!: Room2DPropertiesAbridged;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^Room2D$/)\n /** Type */\n type?: string;\n\t\n @IsArray()\n @IsNestedNumberArray()\n @IsOptional()\n /** Optional list of lists with one list for each hole in the floor plate. Each hole should be a list of at least 2 points and each point a list of 2 (x, y) values. If None, it will be assumed that there are no holes in the floor plate. */\n floor_holes?: number [] [] [];\n\t\n @IsBoolean()\n @IsOptional()\n /** A boolean noting whether this Room2D has its floor in contact with the ground. */\n is_ground_contact?: boolean;\n\t\n @IsBoolean()\n @IsOptional()\n /** A boolean noting whether this Room2D has its ceiling exposed to the outdoors. */\n is_top_exposed?: boolean;\n\t\n @IsBoolean()\n @IsOptional()\n /** A boolean for whether the room has a Floor (True) or an AirBoundary (False). If False, this property will only be meaningful if the model is translated to Honeybee with ceiling adjacency solved and there is a Room2D below this one with a has_ceiling property set to False. */\n has_floor?: boolean;\n\t\n @IsBoolean()\n @IsOptional()\n /** A boolean for whether the room has a RoofCeiling (True) or an AirBoundary (False). If False, this property will only be meaningful if the model is translated to Honeybee with ceiling adjacency solved and there is a Room2D above this one with a has_floor property set to False. */\n has_ceiling?: boolean;\n\t\n @IsNumber()\n @IsOptional()\n @Min(0)\n /** A number for the depth that a ceiling plenum extends into the room. Setting this to a positive value will result in a separate plenum room being split off of the Room2D volume during translation from Dragonfly to Honeybee. The bottom of this ceiling plenum will always be at this Room2D ceiling height minus the value specified here. Setting this to zero indicates that the room has no ceiling plenum. */\n ceiling_plenum_depth?: number;\n\t\n @IsNumber()\n @IsOptional()\n @Min(0)\n /** A number for the depth that a floor plenum extends into the room. Setting this to a positive value will result in a separate plenum room being split off of the Room2D volume during translation from Dragonfly to Honeybee. The top of this floor plenum will always be at this Room2D floor height plus the value specified here. Setting this to zero indicates that the room has no floor plenum. */\n floor_plenum_depth?: number;\n\t\n @IsArray()\n @IsOptional()\n @Transform(({ value }) => value.map((item: any) => {\n if (item?.type === 'Ground') return Ground.fromJS(item);\n else if (item?.type === 'Outdoors') return Outdoors.fromJS(item);\n else if (item?.type === 'Surface') return Surface.fromJS(item);\n else if (item?.type === 'Adiabatic') return Adiabatic.fromJS(item);\n else if (item?.type === 'OtherSideTemperature') return OtherSideTemperature.fromJS(item);\n else return item;\n }))\n /** A list of boundary conditions that match the number of segments in the input floor_geometry + floor_holes. These will be used to assign boundary conditions to each of the walls of the Room in the resulting model. Their order should align with the order of segments in the floor_boundary and then with each hole segment. If None, all boundary conditions will be Outdoors or Ground depending on whether ceiling height of the room is at or below 0 (the assumed ground plane). */\n boundary_conditions?: (Ground | Outdoors | Surface | Adiabatic | OtherSideTemperature) [];\n\t\n @IsArray()\n @IsOptional()\n @Transform(({ value }) => value.map((item: any) => {\n if (item?.type === 'SingleWindow') return SingleWindow.fromJS(item);\n else if (item?.type === 'SimpleWindowArea') return SimpleWindowArea.fromJS(item);\n else if (item?.type === 'SimpleWindowRatio') return SimpleWindowRatio.fromJS(item);\n else if (item?.type === 'RepeatingWindowRatio') return RepeatingWindowRatio.fromJS(item);\n else if (item?.type === 'RectangularWindows') return RectangularWindows.fromJS(item);\n else if (item?.type === 'DetailedWindows') return DetailedWindows.fromJS(item);\n else return item;\n }))\n /** A list of WindowParameter objects that dictate how the window geometries will be generated for each of the walls. If None, no windows will exist over the entire Room2D. */\n window_parameters?: (SingleWindow | SimpleWindowArea | SimpleWindowRatio | RepeatingWindowRatio | RectangularWindows | DetailedWindows) [];\n\t\n @IsArray()\n @IsOptional()\n @Transform(({ value }) => value.map((item: any) => {\n if (item?.type === 'ExtrudedBorder') return ExtrudedBorder.fromJS(item);\n else if (item?.type === 'Overhang') return Overhang.fromJS(item);\n else if (item?.type === 'LouversByDistance') return LouversByDistance.fromJS(item);\n else if (item?.type === 'LouversByCount') return LouversByCount.fromJS(item);\n else return item;\n }))\n /** A list of ShadingParameter objects that dictate how the shade geometries will be generated for each of the walls. If None, no shades will exist over the entire Room2D. */\n shading_parameters?: (ExtrudedBorder | Overhang | LouversByDistance | LouversByCount) [];\n\t\n @IsArray()\n @IsBoolean({ each: true })\n @IsOptional()\n /** A list of booleans for whether each wall has an air boundary type. False values indicate a standard opaque type while True values indicate an AirBoundary type. All walls will be False by default. Note that any walls with a True air boundary must have a Surface boundary condition without any windows. */\n air_boundaries?: boolean [];\n\t\n @IsOptional()\n @Transform(({ value }) => {\n const item = value;\n if (item?.type === 'GriddedSkylightArea') return GriddedSkylightArea.fromJS(item);\n else if (item?.type === 'GriddedSkylightRatio') return GriddedSkylightRatio.fromJS(item);\n else if (item?.type === 'DetailedSkylights') return DetailedSkylights.fromJS(item);\n else return item;\n })\n /** A SkylightParameter object describing how to generate skylights. If None, no skylights will exist on the Room2D. */\n skylight_parameters?: (GriddedSkylightArea | GriddedSkylightRatio | DetailedSkylights);\n\t\n\n constructor() {\n super();\n this.type = \"Room2D\";\n this.is_ground_contact = false;\n this.is_top_exposed = false;\n this.has_floor = true;\n this.has_ceiling = true;\n this.ceiling_plenum_depth = 0;\n this.floor_plenum_depth = 0;\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(Room2D, _data, { enableImplicitConversion: true });\n this.floor_boundary = obj.floor_boundary;\n this.floor_height = obj.floor_height;\n this.floor_to_ceiling_height = obj.floor_to_ceiling_height;\n this.properties = obj.properties;\n this.type = obj.type;\n this.floor_holes = obj.floor_holes;\n this.is_ground_contact = obj.is_ground_contact;\n this.is_top_exposed = obj.is_top_exposed;\n this.has_floor = obj.has_floor;\n this.has_ceiling = obj.has_ceiling;\n this.ceiling_plenum_depth = obj.ceiling_plenum_depth;\n this.floor_plenum_depth = obj.floor_plenum_depth;\n this.boundary_conditions = obj.boundary_conditions;\n this.window_parameters = obj.window_parameters;\n this.shading_parameters = obj.shading_parameters;\n this.air_boundaries = obj.air_boundaries;\n this.skylight_parameters = obj.skylight_parameters;\n }\n }\n\n\n static override fromJS(data: any): Room2D {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Room2D();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"floor_boundary\"] = this.floor_boundary;\n data[\"floor_height\"] = this.floor_height;\n data[\"floor_to_ceiling_height\"] = this.floor_to_ceiling_height;\n data[\"properties\"] = this.properties;\n data[\"type\"] = this.type;\n data[\"floor_holes\"] = this.floor_holes;\n data[\"is_ground_contact\"] = this.is_ground_contact;\n data[\"is_top_exposed\"] = this.is_top_exposed;\n data[\"has_floor\"] = this.has_floor;\n data[\"has_ceiling\"] = this.has_ceiling;\n data[\"ceiling_plenum_depth\"] = this.ceiling_plenum_depth;\n data[\"floor_plenum_depth\"] = this.floor_plenum_depth;\n data[\"boundary_conditions\"] = this.boundary_conditions;\n data[\"window_parameters\"] = this.window_parameters;\n data[\"shading_parameters\"] = this.shading_parameters;\n data[\"air_boundaries\"] = this.air_boundaries;\n data[\"skylight_parameters\"] = this.skylight_parameters;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsArray, IsDefined, IsString, IsOptional, Matches, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { IsNestedNumberArray } from \"./../helpers/class-validator\";\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Several detailed skylights defined by 2D Polygons (lists of 2D vertices). */\nexport class DetailedSkylights extends _OpenAPIGenBaseModel {\n @IsArray()\n @IsNestedNumberArray()\n @IsDefined()\n /** An array of arrays with each sub-array representing a polygonal boundary of a skylight. Each sub-array should consist of arrays representing points, which contain 2 values for 2D coordinates in the world XY system. These coordinate values should lie within the parent Room2D Polygon. */\n polygons!: number [] [] [];\n\t\n @IsString()\n @IsOptional()\n @Matches(/^DetailedSkylights$/)\n /** Type */\n type?: string;\n\t\n @IsArray()\n @IsBoolean({ each: true })\n @IsOptional()\n /** An array of booleans that align with the polygons and note whether each of the polygons represents an overhead door (True) or a skylight (False). If None, it will be assumed that all polygons represent skylights and they will be translated to Apertures in any resulting Honeybee model. */\n are_doors?: boolean [];\n\t\n\n constructor() {\n super();\n this.type = \"DetailedSkylights\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(DetailedSkylights, _data, { enableImplicitConversion: true });\n this.polygons = obj.polygons;\n this.type = obj.type;\n this.are_doors = obj.are_doors;\n }\n }\n\n\n static override fromJS(data: any): DetailedSkylights {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new DetailedSkylights();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"polygons\"] = this.polygons;\n data[\"type\"] = this.type;\n data[\"are_doors\"] = this.are_doors;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsArray, IsDefined, IsString, IsOptional, Matches, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { IsNestedNumberArray } from \"./../helpers/class-validator\";\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** Several detailed windows defined by 2D Polygons (lists of 2D vertices). */\nexport class DetailedWindows extends _WindowParameterBase {\n @IsArray()\n @IsNestedNumberArray()\n @IsDefined()\n /** An array of arrays with each sub-array representing a polygonal boundary of a window. Each sub-array should consist of arrays representing points, which can either contain 2 values (indicating they are 2D vertices within the plane of a parent wall segment) or they can contain 3 values (indicating they are 3D world coordinates). For 2D points, the wall plane is assumed to have an origin at the first point of the wall segment and an X-axis extending along the length of the segment. The wall plane Y-axis always points upwards. Therefore, both X and Y values of each point in the polygon should always be positive. Some sample code to convert from 2D vertices to 2D vertices in the plane of the wall can be found here: https://www.ladybug.tools/dragonfly-core/docs/dragonfly.windowparameter.html#dragonfly.windowparameter.DetailedWindows */\n polygons!: number [] [] [];\n\t\n @IsString()\n @IsOptional()\n @Matches(/^DetailedWindows$/)\n /** Type */\n type?: string;\n\t\n @IsArray()\n @IsBoolean({ each: true })\n @IsOptional()\n /** An array of booleans that align with the polygons and note whether each of the polygons represents a door (True) or a window (False). If None, it will be assumed that all polygons represent windows and they will be translated to Apertures in any resulting Honeybee model. */\n are_doors?: boolean [];\n\t\n\n constructor() {\n super();\n this.type = \"DetailedWindows\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(DetailedWindows, _data, { enableImplicitConversion: true });\n this.polygons = obj.polygons;\n this.type = obj.type;\n this.are_doors = obj.are_doors;\n }\n }\n\n\n static override fromJS(data: any): DetailedWindows {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new DetailedWindows();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"polygons\"] = this.polygons;\n data[\"type\"] = this.type;\n data[\"are_doors\"] = this.are_doors;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsNumber, IsDefined, IsString, IsOptional, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Extruded borders over all windows in the wall. */\nexport class ExtrudedBorder extends _OpenAPIGenBaseModel {\n @IsNumber()\n @IsDefined()\n /** A number for the depth of the border. */\n depth!: number;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^ExtrudedBorder$/)\n /** Type */\n type?: string;\n\t\n\n constructor() {\n super();\n this.type = \"ExtrudedBorder\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(ExtrudedBorder, _data, { enableImplicitConversion: true });\n this.depth = obj.depth;\n this.type = obj.type;\n }\n }\n\n\n static override fromJS(data: any): ExtrudedBorder {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ExtrudedBorder();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"depth\"] = this.depth;\n data[\"type\"] = this.type;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsNumber, IsDefined, IsString, IsOptional, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { Autocalculate } from \"honeybee-schema\";\n\n/** Gridded skylights defined by an absolute area. */\nexport class GriddedSkylightArea extends _OpenAPIGenBaseModel {\n @IsNumber()\n @IsDefined()\n /** A number for the skylight area in current model units. If this area is larger than the area of the roof that it is applied to, the skylight will fill the parent roof at a 99 percent ratio. */\n skylight_area!: number;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^GriddedSkylightArea$/)\n /** Type */\n type?: string;\n\t\n @IsOptional()\n /** A number for the spacing between the centers of each grid cell. This should be less than a third of the dimension of the Roof geometry if multiple, evenly-spaced skylights are desired. If Autocalculate, a spacing of one third the smaller dimension of the parent Roof will be automatically assumed. */\n spacing?: (Autocalculate | number);\n\t\n\n constructor() {\n super();\n this.type = \"GriddedSkylightArea\";\n this.spacing = new Autocalculate();\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(GriddedSkylightArea, _data, { enableImplicitConversion: true });\n this.skylight_area = obj.skylight_area;\n this.type = obj.type;\n this.spacing = obj.spacing;\n }\n }\n\n\n static override fromJS(data: any): GriddedSkylightArea {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new GriddedSkylightArea();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"skylight_area\"] = this.skylight_area;\n data[\"type\"] = this.type;\n data[\"spacing\"] = this.spacing;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsNumber, IsDefined, IsString, IsOptional, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { Autocalculate } from \"honeybee-schema\";\n\n/** Gridded skylights derived from an area ratio with the roof. */\nexport class GriddedSkylightRatio extends _OpenAPIGenBaseModel {\n @IsNumber()\n @IsDefined()\n /** A number between 0 and 1 for the ratio between the skylight area and the total Roof face area. */\n skylight_ratio!: number;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^GriddedSkylightRatio$/)\n /** Type */\n type?: string;\n\t\n @IsOptional()\n /** A number for the spacing between the centers of each grid cell. This should be less than a third of the dimension of the Roof geometry if multiple, evenly-spaced skylights are desired. If Autocalculate, a spacing of one third the smaller dimension of the parent Roof will be automatically assumed. */\n spacing?: (Autocalculate | number);\n\t\n\n constructor() {\n super();\n this.type = \"GriddedSkylightRatio\";\n this.spacing = new Autocalculate();\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(GriddedSkylightRatio, _data, { enableImplicitConversion: true });\n this.skylight_ratio = obj.skylight_ratio;\n this.type = obj.type;\n this.spacing = obj.spacing;\n }\n }\n\n\n static override fromJS(data: any): GriddedSkylightRatio {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new GriddedSkylightRatio();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"skylight_ratio\"] = this.skylight_ratio;\n data[\"type\"] = this.type;\n data[\"spacing\"] = this.spacing;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsInt, IsDefined, IsString, IsOptional, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _LouversBase } from \"./_LouversBase\";\n\n/** A specific number of louvered Shades over a wall. */\nexport class LouversByCount extends _LouversBase {\n @IsInt()\n @IsDefined()\n /** A positive integer for the number of louvers to generate. */\n louver_count!: number;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^LouversByCount$/)\n /** Type */\n type?: string;\n\t\n\n constructor() {\n super();\n this.type = \"LouversByCount\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(LouversByCount, _data, { enableImplicitConversion: true });\n this.louver_count = obj.louver_count;\n this.type = obj.type;\n }\n }\n\n\n static override fromJS(data: any): LouversByCount {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new LouversByCount();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"louver_count\"] = this.louver_count;\n data[\"type\"] = this.type;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsNumber, IsDefined, IsString, IsOptional, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _LouversBase } from \"./_LouversBase\";\n\n/** A series of louvered Shades at a given distance between each louver. */\nexport class LouversByDistance extends _LouversBase {\n @IsNumber()\n @IsDefined()\n /** A number for the approximate distance between each louver. */\n distance!: number;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^LouversByDistance$/)\n /** Type */\n type?: string;\n\t\n\n constructor() {\n super();\n this.type = \"LouversByDistance\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(LouversByDistance, _data, { enableImplicitConversion: true });\n this.distance = obj.distance;\n this.type = obj.type;\n }\n }\n\n\n static override fromJS(data: any): LouversByDistance {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new LouversByDistance();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"distance\"] = this.distance;\n data[\"type\"] = this.type;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsNumber, IsDefined, IsString, IsOptional, Matches, Min, Max, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** A single overhang over an entire wall. */\nexport class Overhang extends _OpenAPIGenBaseModel {\n @IsNumber()\n @IsDefined()\n /** A number for the overhang depth. */\n depth!: number;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^Overhang$/)\n /** Type */\n type?: string;\n\t\n @IsNumber()\n @IsOptional()\n @Min(-90)\n @Max(90)\n /** A number between -90 and 90 for the for an angle to rotate the overhang in degrees. 0 indicates an overhang perpendicular to the wall. Positive values indicate a downward rotation. Negative values indicate an upward rotation. */\n angle?: number;\n\t\n\n constructor() {\n super();\n this.type = \"Overhang\";\n this.angle = 0;\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(Overhang, _data, { enableImplicitConversion: true });\n this.depth = obj.depth;\n this.type = obj.type;\n this.angle = obj.angle;\n }\n }\n\n\n static override fromJS(data: any): Overhang {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Overhang();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"depth\"] = this.depth;\n data[\"type\"] = this.type;\n data[\"angle\"] = this.angle;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsArray, IsDefined, IsNumber, IsString, IsOptional, Matches, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { IsNestedNumberArray } from \"./../helpers/class-validator\";\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** Several rectangular windows, defined by origin, width and height. */\nexport class RectangularWindows extends _WindowParameterBase {\n @IsArray()\n @IsNestedNumberArray()\n @IsDefined()\n /** An array of 2D points within the plane of the wall for the origin of each window. Each point should be a list of 2 (x, y) values. The wall plane is assumed to have an origin at the first point of the wall segment and an X-axis extending along the length of the segment. The wall plane Y-axis always points upwards. Therefore, both X and Y values of each origin point should be positive. */\n origins!: number [] [];\n\t\n @IsArray()\n @IsNumber({},{ each: true })\n @IsDefined()\n /** An array of positive numbers for the window widths. The length of this list must match the length of the origins. */\n widths!: number [];\n\t\n @IsArray()\n @IsNumber({},{ each: true })\n @IsDefined()\n /** An array of positive numbers for the window heights. The length of this list must match the length of the origins. */\n heights!: number [];\n\t\n @IsString()\n @IsOptional()\n @Matches(/^RectangularWindows$/)\n /** Type */\n type?: string;\n\t\n @IsArray()\n @IsBoolean({ each: true })\n @IsOptional()\n /** An array of booleans that align with the origins and note whether each of the geometries represents a door (True) or a window (False). If None, it will be assumed that all geometries represent windows and they will be translated to Apertures in any resulting Honeybee model. */\n are_doors?: boolean [];\n\t\n\n constructor() {\n super();\n this.type = \"RectangularWindows\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(RectangularWindows, _data, { enableImplicitConversion: true });\n this.origins = obj.origins;\n this.widths = obj.widths;\n this.heights = obj.heights;\n this.type = obj.type;\n this.are_doors = obj.are_doors;\n }\n }\n\n\n static override fromJS(data: any): RectangularWindows {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new RectangularWindows();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"origins\"] = this.origins;\n data[\"widths\"] = this.widths;\n data[\"heights\"] = this.heights;\n data[\"type\"] = this.type;\n data[\"are_doors\"] = this.are_doors;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsNumber, IsDefined, Min, IsString, IsOptional, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** Repeating windows derived from an area ratio with the base wall. */\nexport class RepeatingWindowRatio extends _WindowParameterBase {\n @IsNumber()\n @IsDefined()\n /** A number between 0 and 1 for the ratio between the window area and the parent wall surface area. */\n window_ratio!: number;\n\t\n @IsNumber()\n @IsDefined()\n /** A number for the target height of the windows. Note that, if the window ratio is too large for the height, the ratio will take precedence and the actual window_height will be larger than this value. */\n window_height!: number;\n\t\n @IsNumber()\n @IsDefined()\n /** A number for the target height above the bottom edge of the wall to start the windows. Note that, if the ratio is too large for the height, the ratio will take precedence and the sill_height will be smaller than this value. */\n sill_height!: number;\n\t\n @IsNumber()\n @IsDefined()\n @Min(0)\n /** A number for the target separation between individual window centerlines. If this number is larger than the parent rectangle base, only one window will be produced. */\n horizontal_separation!: number;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^RepeatingWindowRatio$/)\n /** Type */\n type?: string;\n\t\n @IsNumber()\n @IsOptional()\n @Min(0)\n /** An optional number to create a single vertical separation between top and bottom windows. */\n vertical_separation?: number;\n\t\n\n constructor() {\n super();\n this.type = \"RepeatingWindowRatio\";\n this.vertical_separation = 0;\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(RepeatingWindowRatio, _data, { enableImplicitConversion: true });\n this.window_ratio = obj.window_ratio;\n this.window_height = obj.window_height;\n this.sill_height = obj.sill_height;\n this.horizontal_separation = obj.horizontal_separation;\n this.type = obj.type;\n this.vertical_separation = obj.vertical_separation;\n }\n }\n\n\n static override fromJS(data: any): RepeatingWindowRatio {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new RepeatingWindowRatio();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"window_ratio\"] = this.window_ratio;\n data[\"window_height\"] = this.window_height;\n data[\"sill_height\"] = this.sill_height;\n data[\"horizontal_separation\"] = this.horizontal_separation;\n data[\"type\"] = this.type;\n data[\"vertical_separation\"] = this.vertical_separation;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsString, IsOptional, Matches, MinLength, MaxLength, IsInstance, ValidateNested, IsArray, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { ProcessAbridged } from \"honeybee-schema\";\nimport { VentilationControlAbridged } from \"honeybee-schema\";\nimport { VentilationOpening } from \"honeybee-schema\";\n\n/** Base class for all objects that are not extensible with additional keys.\\n\\nThis effectively includes all objects except for the Properties classes\\nthat are assigned to geometry objects. */\nexport class Room2DEnergyPropertiesAbridged extends _OpenAPIGenBaseModel {\n @IsString()\n @IsOptional()\n @Matches(/^Room2DEnergyPropertiesAbridged$/)\n /** Type */\n type?: string;\n\t\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n /** Name of a ConstructionSet to specify all constructions for the Room2D. If None, the Room2D will use the Story or Building construction_set or the Model global_construction_set. Any ConstructionSet assigned here will override those assigned to these objects. */\n construction_set?: string;\n\t\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n /** Name of a ProgramType to specify all schedules and loads for the Room2D. If None, the Room2D will have no loads or setpoints. */\n program_type?: string;\n\t\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n /** An optional identifier of a HVAC system (such as an IdealAirSystem) that specifies how the Room2D is conditioned. If None, it will be assumed that the Room2D is not conditioned. */\n hvac?: string;\n\t\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n /** An optional identifier of a Service Hot Water (SHW) system that specifies how the hot water load of the Room is met. If None, the hot water load will be met with a generic system that only measures thermal loadand does not account for system efficiencies. */\n shw?: string;\n\t\n @IsInstance(VentilationControlAbridged)\n @Type(() => VentilationControlAbridged)\n @ValidateNested()\n @IsOptional()\n /** An optional VentilationControl object to dictate the opening of windows. If None, the windows will never open. */\n window_vent_control?: VentilationControlAbridged;\n\t\n @IsInstance(VentilationOpening)\n @Type(() => VentilationOpening)\n @ValidateNested()\n @IsOptional()\n /** An optional VentilationOpening to specify the operable portion of all windows of the Room2D. If None, the windows will never open. */\n window_vent_opening?: VentilationOpening;\n\t\n @IsArray()\n @IsInstance(ProcessAbridged, { each: true })\n @Type(() => ProcessAbridged)\n @ValidateNested({ each: true })\n @IsOptional()\n /** An optional list of Process objects for process loads within the room. These can represent wood burning fireplaces, kilns, manufacturing equipment, and various industrial processes. They can also be used to represent certain pieces of equipment to be separated from the other end uses, such as MRI machines, theatrical lighting, and elevators. */\n process_loads?: ProcessAbridged [];\n\t\n\n constructor() {\n super();\n this.type = \"Room2DEnergyPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(Room2DEnergyPropertiesAbridged, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.construction_set = obj.construction_set;\n this.program_type = obj.program_type;\n this.hvac = obj.hvac;\n this.shw = obj.shw;\n this.window_vent_control = obj.window_vent_control;\n this.window_vent_opening = obj.window_vent_opening;\n this.process_loads = obj.process_loads;\n }\n }\n\n\n static override fromJS(data: any): Room2DEnergyPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Room2DEnergyPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"construction_set\"] = this.construction_set;\n data[\"program_type\"] = this.program_type;\n data[\"hvac\"] = this.hvac;\n data[\"shw\"] = this.shw;\n data[\"window_vent_control\"] = this.window_vent_control;\n data[\"window_vent_opening\"] = this.window_vent_opening;\n data[\"process_loads\"] = this.process_loads;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","// Auto-generated\n\n/** An enumeration. */\nexport enum ExteriorApertureType {\n Window = \"Window\",\n Skylight = \"Skylight\",\n All = \"All\",\n}","import { IsString, IsOptional, Matches, IsNumber, IsEnum, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _GridParameterBase } from \"./_GridParameterBase\";\nimport { ExteriorApertureType } from \"./ExteriorApertureType\";\n\n/** Instructions for a SensorGrid generated from exterior Aperture. */\nexport class ExteriorApertureGridParameter extends _GridParameterBase {\n @IsString()\n @IsOptional()\n @Matches(/^ExteriorApertureGridParameter$/)\n /** Type */\n type?: string;\n\t\n @IsNumber()\n @IsOptional()\n /** A number for how far to offset the grid from the Apertures. (Default: 0.1, suitable for Models in Meters). */\n offset?: number;\n\t\n @IsEnum(ExteriorApertureType)\n @Type(() => String)\n @IsOptional()\n /** Text to specify the type of Aperture that will be used to generate grids. Window indicates Apertures in Walls. Skylights are in parent Roof faces. */\n aperture_type?: ExteriorApertureType;\n\t\n\n constructor() {\n super();\n this.type = \"ExteriorApertureGridParameter\";\n this.offset = 0.1;\n this.aperture_type = ExteriorApertureType.All;\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(ExteriorApertureGridParameter, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.offset = obj.offset;\n this.aperture_type = obj.aperture_type;\n }\n }\n\n\n static override fromJS(data: any): ExteriorApertureGridParameter {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ExteriorApertureGridParameter();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"offset\"] = this.offset;\n data[\"aperture_type\"] = this.aperture_type;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","// Auto-generated\n\n/** An enumeration. */\nexport enum ExteriorFaceType {\n Wall = \"Wall\",\n Roof = \"Roof\",\n Floor = \"Floor\",\n All = \"All\",\n}","import { IsString, IsOptional, Matches, IsNumber, IsEnum, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _GridParameterBase } from \"./_GridParameterBase\";\nimport { ExteriorFaceType } from \"./ExteriorFaceType\";\n\n/** Instructions for a SensorGrid generated from exterior Faces. */\nexport class ExteriorFaceGridParameter extends _GridParameterBase {\n @IsString()\n @IsOptional()\n @Matches(/^ExteriorFaceGridParameter$/)\n /** Type */\n type?: string;\n\t\n @IsNumber()\n @IsOptional()\n /** A number for how far to offset the grid from the Faces. (Default: 0.1, suitable for Models in Meters). */\n offset?: number;\n\t\n @IsEnum(ExteriorFaceType)\n @Type(() => String)\n @IsOptional()\n /** Text to specify the type of face that will be used to generate grids. Note that only Faces with Outdoors boundary conditions will be used, meaning that most Floors will typically be excluded unless they represent the underside of a cantilever. */\n face_type?: ExteriorFaceType;\n\t\n @IsBoolean()\n @IsOptional()\n /** A boolean to note whether the punched_geometry of the faces should be used (True) with the areas of sub-faces removed from the grid or the full geometry should be used (False). */\n punched_geometry?: boolean;\n\t\n\n constructor() {\n super();\n this.type = \"ExteriorFaceGridParameter\";\n this.offset = 0.1;\n this.face_type = ExteriorFaceType.Wall;\n this.punched_geometry = false;\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(ExteriorFaceGridParameter, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.offset = obj.offset;\n this.face_type = obj.face_type;\n this.punched_geometry = obj.punched_geometry;\n }\n }\n\n\n static override fromJS(data: any): ExteriorFaceGridParameter {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ExteriorFaceGridParameter();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"offset\"] = this.offset;\n data[\"face_type\"] = this.face_type;\n data[\"punched_geometry\"] = this.punched_geometry;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsString, IsOptional, Matches, IsNumber, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _GridParameterBase } from \"./_GridParameterBase\";\n\n/** Instructions for a SensorGrid generated from a Room2D's floors. */\nexport class RoomGridParameter extends _GridParameterBase {\n @IsString()\n @IsOptional()\n @Matches(/^RoomGridParameter$/)\n /** Type */\n type?: string;\n\t\n @IsNumber()\n @IsOptional()\n /** A number for how far to offset the grid from the Room2D floors. (Default: 1.0, suitable for Models in Meters). */\n offset?: number;\n\t\n @IsNumber()\n @IsOptional()\n /** A number for the distance at which sensors close to walls should be removed. Note that this option has no effect unless the value is more than half of the dimension. */\n wall_offset?: number;\n\t\n\n constructor() {\n super();\n this.type = \"RoomGridParameter\";\n this.offset = 1;\n this.wall_offset = 0;\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(RoomGridParameter, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.offset = obj.offset;\n this.wall_offset = obj.wall_offset;\n }\n }\n\n\n static override fromJS(data: any): RoomGridParameter {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new RoomGridParameter();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"offset\"] = this.offset;\n data[\"wall_offset\"] = this.wall_offset;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsInt, IsOptional, IsArray, IsNumber, IsString, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { Autocalculate } from \"honeybee-schema\";\nimport { RoomGridParameter } from \"./RoomGridParameter\";\n\n/** Instructions for a SensorGrid of radial directions around positions from floors.\\n\\nThis type of sensor grid is particularly helpful for studies of multiple\\nview directions, such as imageless glare studies. */\nexport class RoomRadialGridParameter extends RoomGridParameter {\n @IsInt()\n @IsOptional()\n /** A positive integer for the number of radial directions to be generated around each position. */\n dir_count?: number;\n\t\n @IsArray()\n @IsNumber({},{ each: true })\n @IsOptional()\n /** A vector as 3 (x, y, z) values to set the start direction of the generated directions. This can be used to orient the resulting sensors to specific parts of the scene. It can also change the elevation of the resulting directions since this start vector will always be rotated in the XY plane to generate the resulting directions. */\n start_vector?: number [];\n\t\n @IsOptional()\n /** An optional number to override the radius of the meshes generated around each sensor. If Autocalculate, it will be equal to 45 percent of the grid dimension. */\n mesh_radius?: (Autocalculate | number);\n\t\n @IsString()\n @IsOptional()\n @Matches(/^RoomRadialGridParameter$/)\n /** Type */\n type?: string;\n\t\n\n constructor() {\n super();\n this.dir_count = 8;\n this.mesh_radius = new Autocalculate();\n this.type = \"RoomRadialGridParameter\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(RoomRadialGridParameter, _data, { enableImplicitConversion: true });\n this.dir_count = obj.dir_count;\n this.start_vector = obj.start_vector;\n this.mesh_radius = obj.mesh_radius;\n this.type = obj.type;\n }\n }\n\n\n static override fromJS(data: any): RoomRadialGridParameter {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new RoomRadialGridParameter();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"dir_count\"] = this.dir_count;\n data[\"start_vector\"] = this.start_vector;\n data[\"mesh_radius\"] = this.mesh_radius;\n data[\"type\"] = this.type;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsString, IsOptional, Matches, IsArray, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { ExteriorApertureGridParameter } from \"./ExteriorApertureGridParameter\";\nimport { ExteriorFaceGridParameter } from \"./ExteriorFaceGridParameter\";\nimport { RoomGridParameter } from \"./RoomGridParameter\";\nimport { RoomRadialGridParameter } from \"./RoomRadialGridParameter\";\n\n/** Base class for all objects that are not extensible with additional keys.\\n\\nThis effectively includes all objects except for the Properties classes\\nthat are assigned to geometry objects. */\nexport class Room2DRadiancePropertiesAbridged extends _OpenAPIGenBaseModel {\n @IsString()\n @IsOptional()\n @Matches(/^Room2DRadiancePropertiesAbridged$/)\n /** Type */\n type?: string;\n\t\n @IsString()\n @IsOptional()\n /** Identifier of a ModifierSet to specify all modifiers for the Room2D. If None, the Room2D will use the Story or Building modifier_set or the Model global_modifier_set. Any ModifierSet assigned here will override those assigned to the parent objects. */\n modifier_set?: string;\n\t\n @IsArray()\n @IsOptional()\n @Transform(({ value }) => value.map((item: any) => {\n if (item?.type === 'RoomGridParameter') return RoomGridParameter.fromJS(item);\n else if (item?.type === 'RoomRadialGridParameter') return RoomRadialGridParameter.fromJS(item);\n else if (item?.type === 'ExteriorFaceGridParameter') return ExteriorFaceGridParameter.fromJS(item);\n else if (item?.type === 'ExteriorApertureGridParameter') return ExteriorApertureGridParameter.fromJS(item);\n else return item;\n }))\n /** An optional list of GridParameter objects to describe how sensor grids should be generated for the Room2D. */\n grid_parameters?: (RoomGridParameter | RoomRadialGridParameter | ExteriorFaceGridParameter | ExteriorApertureGridParameter) [];\n\t\n\n constructor() {\n super();\n this.type = \"Room2DRadiancePropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(Room2DRadiancePropertiesAbridged, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.modifier_set = obj.modifier_set;\n this.grid_parameters = obj.grid_parameters;\n }\n }\n\n\n static override fromJS(data: any): Room2DRadiancePropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Room2DRadiancePropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"modifier_set\"] = this.modifier_set;\n data[\"grid_parameters\"] = this.grid_parameters;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsString, IsOptional, Matches, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { Room2DEnergyPropertiesAbridged } from \"./Room2DEnergyPropertiesAbridged\";\nimport { Room2DRadiancePropertiesAbridged } from \"./Room2DRadiancePropertiesAbridged\";\n\nexport class Room2DPropertiesAbridged extends _OpenAPIGenBaseModel {\n @IsString()\n @IsOptional()\n @Matches(/^Room2DPropertiesAbridged$/)\n /** Type */\n type?: string;\n\t\n @IsInstance(Room2DEnergyPropertiesAbridged)\n @Type(() => Room2DEnergyPropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n /** Energy */\n energy?: Room2DEnergyPropertiesAbridged;\n\t\n @IsInstance(Room2DRadiancePropertiesAbridged)\n @Type(() => Room2DRadiancePropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n /** Radiance */\n radiance?: Room2DRadiancePropertiesAbridged;\n\t\n\n constructor() {\n super();\n this.type = \"Room2DPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(Room2DPropertiesAbridged, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.energy = obj.energy;\n this.radiance = obj.radiance;\n }\n }\n\n\n static override fromJS(data: any): Room2DPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Room2DPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"energy\"] = this.energy;\n data[\"radiance\"] = this.radiance;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsNumber, IsDefined, IsString, IsOptional, Matches, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** A single window defined by an absolute area. */\nexport class SimpleWindowArea extends _WindowParameterBase {\n @IsNumber()\n @IsDefined()\n /** A number for the window area in current model units. If this area is larger than the area of the Wall that it is appliedto, the window will fill the parent Wall at a 99 percent ratio. */\n window_area!: number;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^SimpleWindowArea$/)\n /** Type */\n type?: string;\n\t\n @IsBoolean()\n @IsOptional()\n /** Boolean to note whether rectangular portions of base Face should be extracted before scaling them to create apertures. For pentagonal gabled geometries, this results in one rectangle and one triangle, which can often look more realistic and is a better input for engines like EnergyPlus that cannot model windows with more than 4 vertices. However, if a single pentagonal window is desired for such a gabled shape, this input can be set to False to produce such a result. */\n rect_split?: boolean;\n\t\n\n constructor() {\n super();\n this.type = \"SimpleWindowArea\";\n this.rect_split = true;\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(SimpleWindowArea, _data, { enableImplicitConversion: true });\n this.window_area = obj.window_area;\n this.type = obj.type;\n this.rect_split = obj.rect_split;\n }\n }\n\n\n static override fromJS(data: any): SimpleWindowArea {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new SimpleWindowArea();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"window_area\"] = this.window_area;\n data[\"type\"] = this.type;\n data[\"rect_split\"] = this.rect_split;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsNumber, IsDefined, IsString, IsOptional, Matches, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** A single window defined by an area ratio with the base surface. */\nexport class SimpleWindowRatio extends _WindowParameterBase {\n @IsNumber()\n @IsDefined()\n /** A number between 0 and 1 for the ratio between the window area and the parent wall surface area. */\n window_ratio!: number;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^SimpleWindowRatio$/)\n /** Type */\n type?: string;\n\t\n @IsBoolean()\n @IsOptional()\n /** Boolean to note whether rectangular portions of base Face should be extracted before scaling them to create apertures. For pentagonal gabled geometries, this results in one rectangle and one triangle, which can often look more realistic and is a better input for engines like EnergyPlus that cannot model windows with more than 4 vertices. However, if a single pentagonal window is desired for such a gabled shape, this input can be set to False to produce such a result. */\n rect_split?: boolean;\n\t\n\n constructor() {\n super();\n this.type = \"SimpleWindowRatio\";\n this.rect_split = true;\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(SimpleWindowRatio, _data, { enableImplicitConversion: true });\n this.window_ratio = obj.window_ratio;\n this.type = obj.type;\n this.rect_split = obj.rect_split;\n }\n }\n\n\n static override fromJS(data: any): SimpleWindowRatio {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new SimpleWindowRatio();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"window_ratio\"] = this.window_ratio;\n data[\"type\"] = this.type;\n data[\"rect_split\"] = this.rect_split;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsNumber, IsDefined, IsString, IsOptional, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _WindowParameterBase } from \"./_WindowParameterBase\";\n\n/** A single window in the wall center defined by a width * height. */\nexport class SingleWindow extends _WindowParameterBase {\n @IsNumber()\n @IsDefined()\n /** A number for the window width. Note that, if this width is applied to a wall that is too narrow for this width, the generated window will automatically be shortened when it is applied to the wall. In this way, setting the width to be `float(\"\"inf\"\")` will create parameters that always generate a ribbon window. */\n width!: number;\n\t\n @IsNumber()\n @IsDefined()\n /** A number for the window height. Note that, if this height is applied to a wall that is too short for this height, the generated window will automatically be shortened when it is applied to the wall. */\n height!: number;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^SingleWindow$/)\n /** Type */\n type?: string;\n\t\n @IsNumber()\n @IsOptional()\n /** A number for the window sill height. */\n sill_height?: number;\n\t\n\n constructor() {\n super();\n this.type = \"SingleWindow\";\n this.sill_height = 1;\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(SingleWindow, _data, { enableImplicitConversion: true });\n this.width = obj.width;\n this.height = obj.height;\n this.type = obj.type;\n this.sill_height = obj.sill_height;\n }\n }\n\n\n static override fromJS(data: any): SingleWindow {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new SingleWindow();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"width\"] = this.width;\n data[\"height\"] = this.height;\n data[\"type\"] = this.type;\n data[\"sill_height\"] = this.sill_height;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsString, IsOptional, Matches, MinLength, MaxLength, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Base class for all objects that are not extensible with additional keys.\\n\\nThis effectively includes all objects except for the Properties classes\\nthat are assigned to geometry objects. */\nexport class StoryEnergyPropertiesAbridged extends _OpenAPIGenBaseModel {\n @IsString()\n @IsOptional()\n @Matches(/^StoryEnergyPropertiesAbridged$/)\n /** Type */\n type?: string;\n\t\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n /** Name of a ConstructionSet to specify all constructions for the Story. If None, the Story will use the Building construction_set or the Model global_construction_set. Any ConstructionSet assigned here will override those assigned to these objects. */\n construction_set?: string;\n\t\n\n constructor() {\n super();\n this.type = \"StoryEnergyPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(StoryEnergyPropertiesAbridged, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.construction_set = obj.construction_set;\n }\n }\n\n\n static override fromJS(data: any): StoryEnergyPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new StoryEnergyPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"construction_set\"] = this.construction_set;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsString, IsOptional, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Base class for all objects that are not extensible with additional keys.\\n\\nThis effectively includes all objects except for the Properties classes\\nthat are assigned to geometry objects. */\nexport class StoryRadiancePropertiesAbridged extends _OpenAPIGenBaseModel {\n @IsString()\n @IsOptional()\n @Matches(/^StoryRadiancePropertiesAbridged$/)\n /** Type */\n type?: string;\n\t\n @IsString()\n @IsOptional()\n /** Name of a ModifierSet to specify all modifiers for the Story. If None, the Story will use the Building modifier_set or the Model global_modifier_set. Any ModifierSet assigned here will override those assigned to the parent objects. */\n modifier_set?: string;\n\t\n\n constructor() {\n super();\n this.type = \"StoryRadiancePropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(StoryRadiancePropertiesAbridged, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.modifier_set = obj.modifier_set;\n }\n }\n\n\n static override fromJS(data: any): StoryRadiancePropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new StoryRadiancePropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"modifier_set\"] = this.modifier_set;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsString, IsOptional, Matches, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { StoryEnergyPropertiesAbridged } from \"./StoryEnergyPropertiesAbridged\";\nimport { StoryRadiancePropertiesAbridged } from \"./StoryRadiancePropertiesAbridged\";\n\nexport class StoryPropertiesAbridged extends _OpenAPIGenBaseModel {\n @IsString()\n @IsOptional()\n @Matches(/^StoryPropertiesAbridged$/)\n /** Type */\n type?: string;\n\t\n @IsInstance(StoryEnergyPropertiesAbridged)\n @Type(() => StoryEnergyPropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n /** Energy */\n energy?: StoryEnergyPropertiesAbridged;\n\t\n @IsInstance(StoryRadiancePropertiesAbridged)\n @Type(() => StoryRadiancePropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n /** Radiance */\n radiance?: StoryRadiancePropertiesAbridged;\n\t\n\n constructor() {\n super();\n this.type = \"StoryPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(StoryPropertiesAbridged, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.energy = obj.energy;\n this.radiance = obj.radiance;\n }\n }\n\n\n static override fromJS(data: any): StoryPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new StoryPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"energy\"] = this.energy;\n data[\"radiance\"] = this.radiance;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","// Auto-generated\n\n/** An enumeration. */\nexport enum StoryType {\n Standard = \"Standard\",\n CeilingPlenum = \"CeilingPlenum\",\n FloorPlenum = \"FloorPlenum\",\n}","import { IsString, IsOptional, Matches, MinLength, MaxLength, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Base class for all objects that are not extensible with additional keys.\\n\\nThis effectively includes all objects except for the Properties classes\\nthat are assigned to geometry objects. */\nexport class ContextShadeEnergyPropertiesAbridged extends _OpenAPIGenBaseModel {\n @IsString()\n @IsOptional()\n @Matches(/^ContextShadeEnergyPropertiesAbridged$/)\n /** Type */\n type?: string;\n\t\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n /** Name of a ShadeConstruction to set the reflectance and specularity of the ContextShade. If None, the the EnergyPlus default of 0.2 diffuse reflectance will be used. */\n construction?: string;\n\t\n @IsString()\n @IsOptional()\n @MinLength(1)\n @MaxLength(100)\n /** Name of a schedule to set the transmittance of the ContextShade, which can vary throughout the simulation. If None, the ContextShade will be completely opaque. */\n transmittance_schedule?: string;\n\t\n\n constructor() {\n super();\n this.type = \"ContextShadeEnergyPropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(ContextShadeEnergyPropertiesAbridged, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.construction = obj.construction;\n this.transmittance_schedule = obj.transmittance_schedule;\n }\n }\n\n\n static override fromJS(data: any): ContextShadeEnergyPropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ContextShadeEnergyPropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"construction\"] = this.construction;\n data[\"transmittance_schedule\"] = this.transmittance_schedule;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsString, IsOptional, Matches, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\n\n/** Base class for all objects that are not extensible with additional keys.\\n\\nThis effectively includes all objects except for the Properties classes\\nthat are assigned to geometry objects. */\nexport class ContextShadeRadiancePropertiesAbridged extends _OpenAPIGenBaseModel {\n @IsString()\n @IsOptional()\n @Matches(/^ContextShadeRadiancePropertiesAbridged$/)\n /** Type */\n type?: string;\n\t\n @IsString()\n @IsOptional()\n /** Name of a Modifier to set the reflectance and specularity of the ContextShade. If None, the the default of 0.2 diffuse reflectance will be used. */\n modifier?: string;\n\t\n\n constructor() {\n super();\n this.type = \"ContextShadeRadiancePropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(ContextShadeRadiancePropertiesAbridged, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.modifier = obj.modifier;\n }\n }\n\n\n static override fromJS(data: any): ContextShadeRadiancePropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ContextShadeRadiancePropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"modifier\"] = this.modifier;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsString, IsOptional, Matches, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { ContextShadeEnergyPropertiesAbridged } from \"./ContextShadeEnergyPropertiesAbridged\";\nimport { ContextShadeRadiancePropertiesAbridged } from \"./ContextShadeRadiancePropertiesAbridged\";\n\nexport class ContextShadePropertiesAbridged extends _OpenAPIGenBaseModel {\n @IsString()\n @IsOptional()\n @Matches(/^ContextShadePropertiesAbridged$/)\n /** Type */\n type?: string;\n\t\n @IsInstance(ContextShadeEnergyPropertiesAbridged)\n @Type(() => ContextShadeEnergyPropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n /** Energy */\n energy?: ContextShadeEnergyPropertiesAbridged;\n\t\n @IsInstance(ContextShadeRadiancePropertiesAbridged)\n @Type(() => ContextShadeRadiancePropertiesAbridged)\n @ValidateNested()\n @IsOptional()\n /** Radiance */\n radiance?: ContextShadeRadiancePropertiesAbridged;\n\t\n\n constructor() {\n super();\n this.type = \"ContextShadePropertiesAbridged\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(ContextShadePropertiesAbridged, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.energy = obj.energy;\n this.radiance = obj.radiance;\n }\n }\n\n\n static override fromJS(data: any): ContextShadePropertiesAbridged {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ContextShadePropertiesAbridged();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"energy\"] = this.energy;\n data[\"radiance\"] = this.radiance;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsArray, IsDefined, IsInstance, ValidateNested, IsString, IsOptional, Matches, IsBoolean, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { ContextShadePropertiesAbridged } from \"./ContextShadePropertiesAbridged\";\nimport { Face3D } from \"honeybee-schema\";\nimport { IDdBaseModel } from \"honeybee-schema\";\nimport { Mesh3D } from \"honeybee-schema\";\n\n/** Base class for all objects requiring a identifiers acceptable for all engines. */\nexport class ContextShade extends IDdBaseModel {\n @IsArray()\n @IsDefined()\n @Transform(({ value }) => value.map((item: any) => {\n if (item?.type === 'Face3D') return Face3D.fromJS(item);\n else if (item?.type === 'Mesh3D') return Mesh3D.fromJS(item);\n else return item;\n }))\n /** An array of planar Face3Ds and or Mesh3Ds that together represent the context shade. */\n geometry!: (Face3D | Mesh3D) [];\n\t\n @IsInstance(ContextShadePropertiesAbridged)\n @Type(() => ContextShadePropertiesAbridged)\n @ValidateNested()\n @IsDefined()\n /** Extension properties for particular simulation engines (Radiance, EnergyPlus). */\n properties!: ContextShadePropertiesAbridged;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^ContextShade$/)\n /** Type */\n type?: string;\n\t\n @IsBoolean()\n @IsOptional()\n /** Boolean to note whether this shade is detached from any of the other geometry in the model. Cases where this should be True include shade representing surrounding buildings or context. */\n is_detached?: boolean;\n\t\n\n constructor() {\n super();\n this.type = \"ContextShade\";\n this.is_detached = true;\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(ContextShade, _data, { enableImplicitConversion: true });\n this.geometry = obj.geometry;\n this.properties = obj.properties;\n this.type = obj.type;\n this.is_detached = obj.is_detached;\n }\n }\n\n\n static override fromJS(data: any): ContextShade {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ContextShade();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"geometry\"] = this.geometry;\n data[\"properties\"] = this.properties;\n data[\"type\"] = this.type;\n data[\"is_detached\"] = this.is_detached;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsInstance, ValidateNested, IsDefined, IsString, IsOptional, Matches, IsArray, IsEnum, IsNumber, Min, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { Building } from \"./Building\";\nimport { ContextShade } from \"./ContextShade\";\nimport { IDdBaseModel } from \"honeybee-schema\";\nimport { ModelProperties } from \"./ModelProperties\";\nimport { Units } from \"honeybee-schema\";\n\n/** Base class for all objects requiring a identifiers acceptable for all engines. */\nexport class Model extends IDdBaseModel {\n @IsInstance(ModelProperties)\n @Type(() => ModelProperties)\n @ValidateNested()\n @IsDefined()\n /** Extension properties for particular simulation engines (Radiance, EnergyPlus). */\n properties!: ModelProperties;\n\t\n @IsString()\n @IsOptional()\n @Matches(/^Model$/)\n /** Type */\n type?: string;\n\t\n @IsString()\n @IsOptional()\n @Matches(/([0-9]+)\\.([0-9]+)\\.([0-9]+)/)\n /** Text string for the current version of the schema. */\n version?: string;\n\t\n @IsArray()\n @IsInstance(Building, { each: true })\n @Type(() => Building)\n @ValidateNested({ each: true })\n @IsOptional()\n /** A list of Buildings in the model. */\n buildings?: Building [];\n\t\n @IsArray()\n @IsInstance(ContextShade, { each: true })\n @Type(() => ContextShade)\n @ValidateNested({ each: true })\n @IsOptional()\n /** A list of ContextShades in the model. */\n context_shades?: ContextShade [];\n\t\n @IsEnum(Units)\n @Type(() => String)\n @IsOptional()\n /** Text indicating the units in which the model geometry exists. This is used to scale the geometry to the correct units for simulation engines like EnergyPlus, which requires all geometry be in meters. */\n units?: Units;\n\t\n @IsNumber()\n @IsOptional()\n @Min(0)\n /** The maximum difference between x, y, and z values at which vertices are considered equivalent. This value should be in the Model units and is used in a variety of checks and operations. A value of 0 will result in bypassing all checks so it is recommended that this always be a positive number when checks have not already been performed on a Model. The default of 0.01 is suitable for models in meters. */\n tolerance?: number;\n\t\n @IsNumber()\n @IsOptional()\n @Min(0)\n /** The max angle difference in degrees that vertices are allowed to differ from one another in order to consider them colinear. This value is used in a variety of checks and operations that can be performed on geometry. A value of 0 will result in no checks and an inability to perform certain operations so it is recommended that this always be a positive number when checks have not already been performed on a given Model. */\n angle_tolerance?: number;\n\t\n\n constructor() {\n super();\n this.type = \"Model\";\n this.version = \"0.0.0\";\n this.units = Units.Meters;\n this.tolerance = 0.01;\n this.angle_tolerance = 1;\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(Model, _data, { enableImplicitConversion: true });\n this.properties = obj.properties;\n this.type = obj.type;\n this.version = obj.version;\n this.buildings = obj.buildings;\n this.context_shades = obj.context_shades;\n this.units = obj.units;\n this.tolerance = obj.tolerance;\n this.angle_tolerance = obj.angle_tolerance;\n }\n }\n\n\n static override fromJS(data: any): Model {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new Model();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"properties\"] = this.properties;\n data[\"type\"] = this.type;\n data[\"version\"] = this.version;\n data[\"buildings\"] = this.buildings;\n data[\"context_shades\"] = this.context_shades;\n data[\"units\"] = this.units;\n data[\"tolerance\"] = this.tolerance;\n data[\"angle_tolerance\"] = this.angle_tolerance;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsString, IsOptional, Matches, IsInstance, ValidateNested, IsArray, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { AirBoundaryConstruction } from \"honeybee-schema\";\nimport { AirBoundaryConstructionAbridged } from \"honeybee-schema\";\nimport { Baseboard } from \"honeybee-schema\";\nimport { ConstructionSet } from \"honeybee-schema\";\nimport { ConstructionSetAbridged } from \"honeybee-schema\";\nimport { DetailedHVAC } from \"honeybee-schema\";\nimport { EnergyMaterial } from \"honeybee-schema\";\nimport { EnergyMaterialNoMass } from \"honeybee-schema\";\nimport { EnergyMaterialVegetation } from \"honeybee-schema\";\nimport { EnergyWindowFrame } from \"honeybee-schema\";\nimport { EnergyWindowMaterialBlind } from \"honeybee-schema\";\nimport { EnergyWindowMaterialGas } from \"honeybee-schema\";\nimport { EnergyWindowMaterialGasCustom } from \"honeybee-schema\";\nimport { EnergyWindowMaterialGasMixture } from \"honeybee-schema\";\nimport { EnergyWindowMaterialGlazing } from \"honeybee-schema\";\nimport { EnergyWindowMaterialShade } from \"honeybee-schema\";\nimport { EnergyWindowMaterialSimpleGlazSys } from \"honeybee-schema\";\nimport { EvaporativeCooler } from \"honeybee-schema\";\nimport { FCU } from \"honeybee-schema\";\nimport { FCUwithDOASAbridged } from \"honeybee-schema\";\nimport { ForcedAirFurnace } from \"honeybee-schema\";\nimport { GasUnitHeater } from \"honeybee-schema\";\nimport { GlobalConstructionSet } from \"honeybee-schema\";\nimport { IdealAirSystemAbridged } from \"honeybee-schema\";\nimport { OpaqueConstruction } from \"honeybee-schema\";\nimport { OpaqueConstructionAbridged } from \"honeybee-schema\";\nimport { ProgramType } from \"honeybee-schema\";\nimport { ProgramTypeAbridged } from \"honeybee-schema\";\nimport { PSZ } from \"honeybee-schema\";\nimport { PTAC } from \"honeybee-schema\";\nimport { PVAV } from \"honeybee-schema\";\nimport { Radiant } from \"honeybee-schema\";\nimport { RadiantwithDOASAbridged } from \"honeybee-schema\";\nimport { Residential } from \"honeybee-schema\";\nimport { ScheduleFixedInterval } from \"honeybee-schema\";\nimport { ScheduleFixedIntervalAbridged } from \"honeybee-schema\";\nimport { ScheduleRuleset } from \"honeybee-schema\";\nimport { ScheduleRulesetAbridged } from \"honeybee-schema\";\nimport { ScheduleTypeLimit } from \"honeybee-schema\";\nimport { ShadeConstruction } from \"honeybee-schema\";\nimport { SHWSystem } from \"honeybee-schema\";\nimport { VAV } from \"honeybee-schema\";\nimport { VRF } from \"honeybee-schema\";\nimport { VRFwithDOASAbridged } from \"honeybee-schema\";\nimport { WindowAC } from \"honeybee-schema\";\nimport { WindowConstruction } from \"honeybee-schema\";\nimport { WindowConstructionAbridged } from \"honeybee-schema\";\nimport { WSHP } from \"honeybee-schema\";\nimport { WSHPwithDOASAbridged } from \"honeybee-schema\";\n\n/** Base class for all objects that are not extensible with additional keys.\\n\\nThis effectively includes all objects except for the Properties classes\\nthat are assigned to geometry objects. */\nexport class ModelEnergyProperties extends _OpenAPIGenBaseModel {\n @IsString()\n @IsOptional()\n @Matches(/^ModelEnergyProperties$/)\n /** Type */\n type?: string;\n\t\n @IsInstance(GlobalConstructionSet)\n @Type(() => GlobalConstructionSet)\n @ValidateNested()\n @IsOptional()\n /** Global Energy construction set. */\n global_construction_set?: GlobalConstructionSet;\n\t\n @IsArray()\n @IsOptional()\n @Transform(({ value }) => value.map((item: any) => {\n if (item?.type === 'ConstructionSetAbridged') return ConstructionSetAbridged.fromJS(item);\n else if (item?.type === 'ConstructionSet') return ConstructionSet.fromJS(item);\n else return item;\n }))\n /** List of all ConstructionSets in the Model. */\n construction_sets?: (ConstructionSetAbridged | ConstructionSet) [];\n\t\n @IsArray()\n @IsOptional()\n @Transform(({ value }) => value.map((item: any) => {\n if (item?.type === 'OpaqueConstructionAbridged') return OpaqueConstructionAbridged.fromJS(item);\n else if (item?.type === 'WindowConstructionAbridged') return WindowConstructionAbridged.fromJS(item);\n else if (item?.type === 'ShadeConstruction') return ShadeConstruction.fromJS(item);\n else if (item?.type === 'AirBoundaryConstructionAbridged') return AirBoundaryConstructionAbridged.fromJS(item);\n else if (item?.type === 'OpaqueConstruction') return OpaqueConstruction.fromJS(item);\n else if (item?.type === 'WindowConstruction') return WindowConstruction.fromJS(item);\n else if (item?.type === 'AirBoundaryConstruction') return AirBoundaryConstruction.fromJS(item);\n else return item;\n }))\n /** A list of all unique constructions in the model. This includes constructions across all the Model construction_sets. */\n constructions?: (OpaqueConstructionAbridged | WindowConstructionAbridged | ShadeConstruction | AirBoundaryConstructionAbridged | OpaqueConstruction | WindowConstruction | AirBoundaryConstruction) [];\n\t\n @IsArray()\n @IsOptional()\n @Transform(({ value }) => value.map((item: any) => {\n if (item?.type === 'EnergyMaterial') return EnergyMaterial.fromJS(item);\n else if (item?.type === 'EnergyMaterialNoMass') return EnergyMaterialNoMass.fromJS(item);\n else if (item?.type === 'EnergyMaterialVegetation') return EnergyMaterialVegetation.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialGlazing') return EnergyWindowMaterialGlazing.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialSimpleGlazSys') return EnergyWindowMaterialSimpleGlazSys.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialGas') return EnergyWindowMaterialGas.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialGasMixture') return EnergyWindowMaterialGasMixture.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialGasCustom') return EnergyWindowMaterialGasCustom.fromJS(item);\n else if (item?.type === 'EnergyWindowFrame') return EnergyWindowFrame.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialBlind') return EnergyWindowMaterialBlind.fromJS(item);\n else if (item?.type === 'EnergyWindowMaterialShade') return EnergyWindowMaterialShade.fromJS(item);\n else return item;\n }))\n /** A list of all unique materials in the model. This includes materials needed to make the Model constructions. */\n materials?: (EnergyMaterial | EnergyMaterialNoMass | EnergyMaterialVegetation | EnergyWindowMaterialGlazing | EnergyWindowMaterialSimpleGlazSys | EnergyWindowMaterialGas | EnergyWindowMaterialGasMixture | EnergyWindowMaterialGasCustom | EnergyWindowFrame | EnergyWindowMaterialBlind | EnergyWindowMaterialShade) [];\n\t\n @IsArray()\n @IsOptional()\n @Transform(({ value }) => value.map((item: any) => {\n if (item?.type === 'IdealAirSystemAbridged') return IdealAirSystemAbridged.fromJS(item);\n else if (item?.type === 'VAV') return VAV.fromJS(item);\n else if (item?.type === 'PVAV') return PVAV.fromJS(item);\n else if (item?.type === 'PSZ') return PSZ.fromJS(item);\n else if (item?.type === 'PTAC') return PTAC.fromJS(item);\n else if (item?.type === 'ForcedAirFurnace') return ForcedAirFurnace.fromJS(item);\n else if (item?.type === 'FCUwithDOASAbridged') return FCUwithDOASAbridged.fromJS(item);\n else if (item?.type === 'WSHPwithDOASAbridged') return WSHPwithDOASAbridged.fromJS(item);\n else if (item?.type === 'VRFwithDOASAbridged') return VRFwithDOASAbridged.fromJS(item);\n else if (item?.type === 'RadiantwithDOASAbridged') return RadiantwithDOASAbridged.fromJS(item);\n else if (item?.type === 'FCU') return FCU.fromJS(item);\n else if (item?.type === 'WSHP') return WSHP.fromJS(item);\n else if (item?.type === 'VRF') return VRF.fromJS(item);\n else if (item?.type === 'Baseboard') return Baseboard.fromJS(item);\n else if (item?.type === 'EvaporativeCooler') return EvaporativeCooler.fromJS(item);\n else if (item?.type === 'Residential') return Residential.fromJS(item);\n else if (item?.type === 'WindowAC') return WindowAC.fromJS(item);\n else if (item?.type === 'GasUnitHeater') return GasUnitHeater.fromJS(item);\n else if (item?.type === 'Radiant') return Radiant.fromJS(item);\n else if (item?.type === 'DetailedHVAC') return DetailedHVAC.fromJS(item);\n else return item;\n }))\n /** List of all HVAC systems in the Model. */\n hvacs?: (IdealAirSystemAbridged | VAV | PVAV | PSZ | PTAC | ForcedAirFurnace | FCUwithDOASAbridged | WSHPwithDOASAbridged | VRFwithDOASAbridged | RadiantwithDOASAbridged | FCU | WSHP | VRF | Baseboard | EvaporativeCooler | Residential | WindowAC | GasUnitHeater | Radiant | DetailedHVAC) [];\n\t\n @IsArray()\n @IsInstance(SHWSystem, { each: true })\n @Type(() => SHWSystem)\n @ValidateNested({ each: true })\n @IsOptional()\n /** List of all Service Hot Water (SHW) systems in the Model. */\n shws?: SHWSystem [];\n\t\n @IsArray()\n @IsOptional()\n @Transform(({ value }) => value.map((item: any) => {\n if (item?.type === 'ProgramTypeAbridged') return ProgramTypeAbridged.fromJS(item);\n else if (item?.type === 'ProgramType') return ProgramType.fromJS(item);\n else return item;\n }))\n /** List of all ProgramTypes in the Model. */\n program_types?: (ProgramTypeAbridged | ProgramType) [];\n\t\n @IsArray()\n @IsOptional()\n @Transform(({ value }) => value.map((item: any) => {\n if (item?.type === 'ScheduleRulesetAbridged') return ScheduleRulesetAbridged.fromJS(item);\n else if (item?.type === 'ScheduleFixedIntervalAbridged') return ScheduleFixedIntervalAbridged.fromJS(item);\n else if (item?.type === 'ScheduleRuleset') return ScheduleRuleset.fromJS(item);\n else if (item?.type === 'ScheduleFixedInterval') return ScheduleFixedInterval.fromJS(item);\n else return item;\n }))\n /** A list of all unique schedules in the model. This includes schedules across all HVAC systems, ProgramTypes and ContextShades. */\n schedules?: (ScheduleRulesetAbridged | ScheduleFixedIntervalAbridged | ScheduleRuleset | ScheduleFixedInterval) [];\n\t\n @IsArray()\n @IsInstance(ScheduleTypeLimit, { each: true })\n @Type(() => ScheduleTypeLimit)\n @ValidateNested({ each: true })\n @IsOptional()\n /** A list of all unique ScheduleTypeLimits in the model. This all ScheduleTypeLimits needed to make the Model schedules. */\n schedule_type_limits?: ScheduleTypeLimit [];\n\t\n\n constructor() {\n super();\n this.type = \"ModelEnergyProperties\";\n this.global_construction_set = GlobalConstructionSet.fromJS({\n \"type\": \"GlobalConstructionSet\",\n \"materials\": [\n {\n \"identifier\": \"Generic Roof Membrane\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"EnergyMaterial\",\n \"roughness\": \"MediumRough\",\n \"thickness\": 0.01,\n \"conductivity\": 0.16,\n \"density\": 1120.0,\n \"specific_heat\": 1460.0,\n \"thermal_absorptance\": 0.9,\n \"solar_absorptance\": 0.65,\n \"visible_absorptance\": 0.65\n },\n {\n \"identifier\": \"Generic Acoustic Tile\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"EnergyMaterial\",\n \"roughness\": \"MediumSmooth\",\n \"thickness\": 0.02,\n \"conductivity\": 0.06,\n \"density\": 368.0,\n \"specific_heat\": 590.0,\n \"thermal_absorptance\": 0.9,\n \"solar_absorptance\": 0.2,\n \"visible_absorptance\": 0.2\n },\n {\n \"identifier\": \"Generic 25mm Wood\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"EnergyMaterial\",\n \"roughness\": \"MediumSmooth\",\n \"thickness\": 0.0254,\n \"conductivity\": 0.15,\n \"density\": 608.0,\n \"specific_heat\": 1630.0,\n \"thermal_absorptance\": 0.9,\n \"solar_absorptance\": 0.5,\n \"visible_absorptance\": 0.5\n },\n {\n \"identifier\": \"Generic HW Concrete\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"EnergyMaterial\",\n \"roughness\": \"MediumRough\",\n \"thickness\": 0.2,\n \"conductivity\": 1.95,\n \"density\": 2240.0,\n \"specific_heat\": 900.0,\n \"thermal_absorptance\": 0.9,\n \"solar_absorptance\": 0.8,\n \"visible_absorptance\": 0.8\n },\n {\n \"identifier\": \"Generic Window Air Gap\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"EnergyWindowMaterialGas\",\n \"thickness\": 0.0127,\n \"gas_type\": \"Air\"\n },\n {\n \"identifier\": \"Generic Gypsum Board\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"EnergyMaterial\",\n \"roughness\": \"MediumSmooth\",\n \"thickness\": 0.0127,\n \"conductivity\": 0.16,\n \"density\": 800.0,\n \"specific_heat\": 1090.0,\n \"thermal_absorptance\": 0.9,\n \"solar_absorptance\": 0.5,\n \"visible_absorptance\": 0.5\n },\n {\n \"identifier\": \"Generic Wall Air Gap\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"EnergyMaterial\",\n \"roughness\": \"Smooth\",\n \"thickness\": 0.1,\n \"conductivity\": 0.667,\n \"density\": 1.28,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"solar_absorptance\": 0.7,\n \"visible_absorptance\": 0.7\n },\n {\n \"identifier\": \"Generic Ceiling Air Gap\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"EnergyMaterial\",\n \"roughness\": \"Smooth\",\n \"thickness\": 0.1,\n \"conductivity\": 0.556,\n \"density\": 1.28,\n \"specific_heat\": 1000.0,\n \"thermal_absorptance\": 0.9,\n \"solar_absorptance\": 0.7,\n \"visible_absorptance\": 0.7\n },\n {\n \"identifier\": \"Generic Brick\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"EnergyMaterial\",\n \"roughness\": \"MediumRough\",\n \"thickness\": 0.1,\n \"conductivity\": 0.9,\n \"density\": 1920.0,\n \"specific_heat\": 790.0,\n \"thermal_absorptance\": 0.9,\n \"solar_absorptance\": 0.65,\n \"visible_absorptance\": 0.65\n },\n {\n \"identifier\": \"Generic 50mm Insulation\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"EnergyMaterial\",\n \"roughness\": \"MediumRough\",\n \"thickness\": 0.05,\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"solar_absorptance\": 0.7,\n \"visible_absorptance\": 0.7\n },\n {\n \"identifier\": \"Generic Low-e Glass\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"thickness\": 0.006,\n \"solar_transmittance\": 0.45,\n \"solar_reflectance\": 0.36,\n \"solar_reflectance_back\": 0.36,\n \"visible_transmittance\": 0.71,\n \"visible_reflectance\": 0.21,\n \"visible_reflectance_back\": 0.21,\n \"infrared_transmittance\": 0.0,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.047,\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"solar_diffusing\": false\n },\n {\n \"identifier\": \"Generic Painted Metal\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"EnergyMaterial\",\n \"roughness\": \"Smooth\",\n \"thickness\": 0.0015,\n \"conductivity\": 45.0,\n \"density\": 7690.0,\n \"specific_heat\": 410.0,\n \"thermal_absorptance\": 0.9,\n \"solar_absorptance\": 0.5,\n \"visible_absorptance\": 0.5\n },\n {\n \"identifier\": \"Generic LW Concrete\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"EnergyMaterial\",\n \"roughness\": \"MediumRough\",\n \"thickness\": 0.1,\n \"conductivity\": 0.53,\n \"density\": 1280.0,\n \"specific_heat\": 840.0,\n \"thermal_absorptance\": 0.9,\n \"solar_absorptance\": 0.8,\n \"visible_absorptance\": 0.8\n },\n {\n \"identifier\": \"Generic 25mm Insulation\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"EnergyMaterial\",\n \"roughness\": \"MediumRough\",\n \"thickness\": 0.025,\n \"conductivity\": 0.03,\n \"density\": 43.0,\n \"specific_heat\": 1210.0,\n \"thermal_absorptance\": 0.9,\n \"solar_absorptance\": 0.7,\n \"visible_absorptance\": 0.7\n },\n {\n \"identifier\": \"Generic Clear Glass\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"EnergyWindowMaterialGlazing\",\n \"thickness\": 0.006,\n \"solar_transmittance\": 0.77,\n \"solar_reflectance\": 0.07,\n \"solar_reflectance_back\": 0.07,\n \"visible_transmittance\": 0.88,\n \"visible_reflectance\": 0.08,\n \"visible_reflectance_back\": 0.08,\n \"infrared_transmittance\": 0.0,\n \"emissivity\": 0.84,\n \"emissivity_back\": 0.84,\n \"conductivity\": 1.0,\n \"dirt_correction\": 1.0,\n \"solar_diffusing\": false\n }\n ],\n \"constructions\": [\n {\n \"identifier\": \"Generic Interior Door\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"OpaqueConstructionAbridged\",\n \"materials\": [\n \"Generic 25mm Wood\"\n ]\n },\n {\n \"identifier\": \"Generic Single Pane\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"WindowConstructionAbridged\",\n \"materials\": [\n \"Generic Clear Glass\"\n ],\n \"frame\": null\n },\n {\n \"identifier\": \"Generic Shade\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"ShadeConstruction\",\n \"solar_reflectance\": 0.35,\n \"visible_reflectance\": 0.35,\n \"is_specular\": false\n },\n {\n \"identifier\": \"Generic Context\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"ShadeConstruction\",\n \"solar_reflectance\": 0.2,\n \"visible_reflectance\": 0.2,\n \"is_specular\": false\n },\n {\n \"identifier\": \"Generic Interior Ceiling\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"OpaqueConstructionAbridged\",\n \"materials\": [\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ]\n },\n {\n \"identifier\": \"Generic Interior Wall\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"OpaqueConstructionAbridged\",\n \"materials\": [\n \"Generic Gypsum Board\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ]\n },\n {\n \"identifier\": \"Generic Exposed Floor\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"OpaqueConstructionAbridged\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic Ceiling Air Gap\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\"\n ]\n },\n {\n \"identifier\": \"Generic Interior Floor\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"OpaqueConstructionAbridged\",\n \"materials\": [\n \"Generic Acoustic Tile\",\n \"Generic Ceiling Air Gap\",\n \"Generic LW Concrete\"\n ]\n },\n {\n \"identifier\": \"Generic Ground Slab\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"OpaqueConstructionAbridged\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\"\n ]\n },\n {\n \"identifier\": \"Generic Roof\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"OpaqueConstructionAbridged\",\n \"materials\": [\n \"Generic Roof Membrane\",\n \"Generic 50mm Insulation\",\n \"Generic LW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ]\n },\n {\n \"identifier\": \"Generic Exterior Wall\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"OpaqueConstructionAbridged\",\n \"materials\": [\n \"Generic Brick\",\n \"Generic LW Concrete\",\n \"Generic 50mm Insulation\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ]\n },\n {\n \"identifier\": \"Generic Underground Wall\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"OpaqueConstructionAbridged\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Wall Air Gap\",\n \"Generic Gypsum Board\"\n ]\n },\n {\n \"identifier\": \"Generic Air Boundary\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"AirBoundaryConstructionAbridged\",\n \"air_mixing_per_area\": 0.1,\n \"air_mixing_schedule\": \"Always On\"\n },\n {\n \"identifier\": \"Generic Underground Roof\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"OpaqueConstructionAbridged\",\n \"materials\": [\n \"Generic 50mm Insulation\",\n \"Generic HW Concrete\",\n \"Generic Ceiling Air Gap\",\n \"Generic Acoustic Tile\"\n ]\n },\n {\n \"identifier\": \"Generic Double Pane\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"WindowConstructionAbridged\",\n \"materials\": [\n \"Generic Low-e Glass\",\n \"Generic Window Air Gap\",\n \"Generic Clear Glass\"\n ],\n \"frame\": null\n },\n {\n \"identifier\": \"Generic Exterior Door\",\n \"display_name\": null,\n \"user_data\": null,\n \"type\": \"OpaqueConstructionAbridged\",\n \"materials\": [\n \"Generic Painted Metal\",\n \"Generic 25mm Insulation\",\n \"Generic Painted Metal\"\n ]\n }\n ],\n \"wall_set\": {\n \"interior_construction\": \"Generic Interior Wall\",\n \"exterior_construction\": \"Generic Exterior Wall\",\n \"ground_construction\": \"Generic Underground Wall\",\n \"type\": \"WallConstructionSetAbridged\"\n },\n \"floor_set\": {\n \"interior_construction\": \"Generic Interior Floor\",\n \"exterior_construction\": \"Generic Exposed Floor\",\n \"ground_construction\": \"Generic Ground Slab\",\n \"type\": \"FloorConstructionSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"interior_construction\": \"Generic Interior Ceiling\",\n \"exterior_construction\": \"Generic Roof\",\n \"ground_construction\": \"Generic Underground Roof\",\n \"type\": \"RoofCeilingConstructionSetAbridged\"\n },\n \"aperture_set\": {\n \"type\": \"ApertureConstructionSetAbridged\",\n \"interior_construction\": \"Generic Single Pane\",\n \"window_construction\": \"Generic Double Pane\",\n \"skylight_construction\": \"Generic Double Pane\",\n \"operable_construction\": \"Generic Double Pane\"\n },\n \"door_set\": {\n \"type\": \"DoorConstructionSetAbridged\",\n \"interior_construction\": \"Generic Interior Door\",\n \"exterior_construction\": \"Generic Exterior Door\",\n \"overhead_construction\": \"Generic Exterior Door\",\n \"exterior_glass_construction\": \"Generic Double Pane\",\n \"interior_glass_construction\": \"Generic Single Pane\"\n },\n \"shade_construction\": \"Generic Shade\",\n \"context_construction\": \"Generic Context\",\n \"air_boundary_construction\": \"Generic Air Boundary\"\n});\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(ModelEnergyProperties, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.global_construction_set = obj.global_construction_set;\n this.construction_sets = obj.construction_sets;\n this.constructions = obj.constructions;\n this.materials = obj.materials;\n this.hvacs = obj.hvacs;\n this.shws = obj.shws;\n this.program_types = obj.program_types;\n this.schedules = obj.schedules;\n this.schedule_type_limits = obj.schedule_type_limits;\n }\n }\n\n\n static override fromJS(data: any): ModelEnergyProperties {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ModelEnergyProperties();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"global_construction_set\"] = this.global_construction_set;\n data[\"construction_sets\"] = this.construction_sets;\n data[\"constructions\"] = this.constructions;\n data[\"materials\"] = this.materials;\n data[\"hvacs\"] = this.hvacs;\n data[\"shws\"] = this.shws;\n data[\"program_types\"] = this.program_types;\n data[\"schedules\"] = this.schedules;\n data[\"schedule_type_limits\"] = this.schedule_type_limits;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsString, IsOptional, Matches, IsInstance, ValidateNested, IsArray, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { BSDF } from \"honeybee-schema\";\nimport { Glass } from \"honeybee-schema\";\nimport { GlobalModifierSet } from \"honeybee-schema\";\nimport { Glow } from \"honeybee-schema\";\nimport { Light } from \"honeybee-schema\";\nimport { Metal } from \"honeybee-schema\";\nimport { Mirror } from \"honeybee-schema\";\nimport { ModifierSet } from \"honeybee-schema\";\nimport { ModifierSetAbridged } from \"honeybee-schema\";\nimport { Plastic } from \"honeybee-schema\";\nimport { Trans } from \"honeybee-schema\";\nimport { Void } from \"honeybee-schema\";\n\n/** Base class for all objects that are not extensible with additional keys.\\n\\nThis effectively includes all objects except for the Properties classes\\nthat are assigned to geometry objects. */\nexport class ModelRadianceProperties extends _OpenAPIGenBaseModel {\n @IsString()\n @IsOptional()\n @Matches(/^ModelRadianceProperties$/)\n /** Type */\n type?: string;\n\t\n @IsInstance(GlobalModifierSet)\n @Type(() => GlobalModifierSet)\n @ValidateNested()\n @IsOptional()\n /** Global Radiance modifier set. */\n global_modifier_set?: GlobalModifierSet;\n\t\n @IsArray()\n @IsOptional()\n @Transform(({ value }) => value.map((item: any) => {\n if (item?.type === 'ModifierSet') return ModifierSet.fromJS(item);\n else if (item?.type === 'ModifierSetAbridged') return ModifierSetAbridged.fromJS(item);\n else return item;\n }))\n /** List of all ModifierSets in the Model. */\n modifier_sets?: (ModifierSet | ModifierSetAbridged) [];\n\t\n @IsArray()\n @IsOptional()\n @Transform(({ value }) => value.map((item: any) => {\n if (item?.type === 'Plastic') return Plastic.fromJS(item);\n else if (item?.type === 'Glass') return Glass.fromJS(item);\n else if (item?.type === 'BSDF') return BSDF.fromJS(item);\n else if (item?.type === 'Glow') return Glow.fromJS(item);\n else if (item?.type === 'Light') return Light.fromJS(item);\n else if (item?.type === 'Trans') return Trans.fromJS(item);\n else if (item?.type === 'Metal') return Metal.fromJS(item);\n else if (item?.type === 'Void') return Void.fromJS(item);\n else if (item?.type === 'Mirror') return Mirror.fromJS(item);\n else return item;\n }))\n /** A list of all unique modifiers in the model. This includes modifiers across all the Model modifier_sets. */\n modifiers?: (Plastic | Glass | BSDF | Glow | Light | Trans | Metal | Void | Mirror) [];\n\t\n\n constructor() {\n super();\n this.type = \"ModelRadianceProperties\";\n this.global_modifier_set = GlobalModifierSet.fromJS({\n \"type\": \"GlobalModifierSet\",\n \"modifiers\": [\n {\n \"identifier\": \"generic_floor_0.20\",\n \"display_name\": null,\n \"type\": \"Plastic\",\n \"modifier\": null,\n \"dependencies\": [],\n \"r_reflectance\": 0.2,\n \"g_reflectance\": 0.2,\n \"b_reflectance\": 0.2,\n \"specularity\": 0.0,\n \"roughness\": 0.0\n },\n {\n \"identifier\": \"generic_wall_0.50\",\n \"display_name\": null,\n \"type\": \"Plastic\",\n \"modifier\": null,\n \"dependencies\": [],\n \"r_reflectance\": 0.5,\n \"g_reflectance\": 0.5,\n \"b_reflectance\": 0.5,\n \"specularity\": 0.0,\n \"roughness\": 0.0\n },\n {\n \"identifier\": \"generic_ceiling_0.80\",\n \"display_name\": null,\n \"type\": \"Plastic\",\n \"modifier\": null,\n \"dependencies\": [],\n \"r_reflectance\": 0.8,\n \"g_reflectance\": 0.8,\n \"b_reflectance\": 0.8,\n \"specularity\": 0.0,\n \"roughness\": 0.0\n },\n {\n \"identifier\": \"generic_opaque_door_0.50\",\n \"display_name\": null,\n \"type\": \"Plastic\",\n \"modifier\": null,\n \"dependencies\": [],\n \"r_reflectance\": 0.5,\n \"g_reflectance\": 0.5,\n \"b_reflectance\": 0.5,\n \"specularity\": 0.0,\n \"roughness\": 0.0\n },\n {\n \"identifier\": \"generic_interior_shade_0.50\",\n \"display_name\": null,\n \"type\": \"Plastic\",\n \"modifier\": null,\n \"dependencies\": [],\n \"r_reflectance\": 0.5,\n \"g_reflectance\": 0.5,\n \"b_reflectance\": 0.5,\n \"specularity\": 0.0,\n \"roughness\": 0.0\n },\n {\n \"identifier\": \"generic_exterior_shade_0.35\",\n \"display_name\": null,\n \"type\": \"Plastic\",\n \"modifier\": null,\n \"dependencies\": [],\n \"r_reflectance\": 0.35,\n \"g_reflectance\": 0.35,\n \"b_reflectance\": 0.35,\n \"specularity\": 0.0,\n \"roughness\": 0.0\n },\n {\n \"identifier\": \"generic_context_0.20\",\n \"display_name\": null,\n \"type\": \"Plastic\",\n \"modifier\": null,\n \"dependencies\": [],\n \"r_reflectance\": 0.2,\n \"g_reflectance\": 0.2,\n \"b_reflectance\": 0.2,\n \"specularity\": 0.0,\n \"roughness\": 0.0\n },\n {\n \"identifier\": \"generic_interior_window_vis_0.88\",\n \"display_name\": null,\n \"type\": \"Glass\",\n \"modifier\": null,\n \"dependencies\": [],\n \"r_transmissivity\": 0.9584154328610596,\n \"g_transmissivity\": 0.9584154328610596,\n \"b_transmissivity\": 0.9584154328610596,\n \"refraction_index\": null\n },\n {\n \"identifier\": \"generic_exterior_window_vis_0.64\",\n \"display_name\": null,\n \"type\": \"Glass\",\n \"modifier\": null,\n \"dependencies\": [],\n \"r_transmissivity\": 0.6975761815384331,\n \"g_transmissivity\": 0.6975761815384331,\n \"b_transmissivity\": 0.6975761815384331,\n \"refraction_index\": null\n },\n {\n \"identifier\": \"air_boundary\",\n \"display_name\": null,\n \"type\": \"Trans\",\n \"modifier\": null,\n \"dependencies\": [],\n \"r_reflectance\": 1.0,\n \"g_reflectance\": 1.0,\n \"b_reflectance\": 1.0,\n \"specularity\": 0.0,\n \"roughness\": 0.0,\n \"transmitted_diff\": 1.0,\n \"transmitted_spec\": 1.0\n }\n ],\n \"wall_set\": {\n \"exterior_modifier\": \"generic_wall_0.50\",\n \"interior_modifier\": \"generic_wall_0.50\",\n \"type\": \"WallModifierSetAbridged\"\n },\n \"floor_set\": {\n \"exterior_modifier\": \"generic_floor_0.20\",\n \"interior_modifier\": \"generic_floor_0.20\",\n \"type\": \"FloorModifierSetAbridged\"\n },\n \"roof_ceiling_set\": {\n \"exterior_modifier\": \"generic_ceiling_0.80\",\n \"interior_modifier\": \"generic_ceiling_0.80\",\n \"type\": \"RoofCeilingModifierSetAbridged\"\n },\n \"aperture_set\": {\n \"type\": \"ApertureModifierSetAbridged\",\n \"window_modifier\": \"generic_exterior_window_vis_0.64\",\n \"interior_modifier\": \"generic_interior_window_vis_0.88\",\n \"skylight_modifier\": \"generic_exterior_window_vis_0.64\",\n \"operable_modifier\": \"generic_exterior_window_vis_0.64\"\n },\n \"door_set\": {\n \"exterior_modifier\": \"generic_opaque_door_0.50\",\n \"interior_modifier\": \"generic_opaque_door_0.50\",\n \"type\": \"DoorModifierSetAbridged\",\n \"interior_glass_modifier\": \"generic_interior_window_vis_0.88\",\n \"exterior_glass_modifier\": \"generic_exterior_window_vis_0.64\",\n \"overhead_modifier\": \"generic_opaque_door_0.50\"\n },\n \"shade_set\": {\n \"exterior_modifier\": \"generic_exterior_shade_0.35\",\n \"interior_modifier\": \"generic_interior_shade_0.50\",\n \"type\": \"ShadeModifierSetAbridged\"\n },\n \"air_boundary_modifier\": \"air_boundary\",\n \"context_modifier\": \"generic_context_0.20\"\n});\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(ModelRadianceProperties, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.global_modifier_set = obj.global_modifier_set;\n this.modifier_sets = obj.modifier_sets;\n this.modifiers = obj.modifiers;\n }\n }\n\n\n static override fromJS(data: any): ModelRadianceProperties {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ModelRadianceProperties();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"global_modifier_set\"] = this.global_modifier_set;\n data[\"modifier_sets\"] = this.modifier_sets;\n data[\"modifiers\"] = this.modifiers;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n","import { IsString, IsOptional, Matches, IsInstance, ValidateNested, validate, ValidationError as TsValidationError } from 'class-validator';\nimport { Type, plainToClass, instanceToPlain, Transform } from 'class-transformer';\nimport { _OpenAPIGenBaseModel } from \"./_OpenAPIGenBaseModel\";\nimport { ModelEnergyProperties } from \"./ModelEnergyProperties\";\nimport { ModelRadianceProperties } from \"./ModelRadianceProperties\";\n\nexport class ModelProperties extends _OpenAPIGenBaseModel {\n @IsString()\n @IsOptional()\n @Matches(/^ModelProperties$/)\n /** Type */\n type?: string;\n\t\n @IsInstance(ModelEnergyProperties)\n @Type(() => ModelEnergyProperties)\n @ValidateNested()\n @IsOptional()\n /** Energy */\n energy?: ModelEnergyProperties;\n\t\n @IsInstance(ModelRadianceProperties)\n @Type(() => ModelRadianceProperties)\n @ValidateNested()\n @IsOptional()\n /** Radiance */\n radiance?: ModelRadianceProperties;\n\t\n\n constructor() {\n super();\n this.type = \"ModelProperties\";\n }\n\n\n override init(_data?: any) {\n super.init(_data);\n if (_data) {\n const obj = plainToClass(ModelProperties, _data, { enableImplicitConversion: true });\n this.type = obj.type;\n this.energy = obj.energy;\n this.radiance = obj.radiance;\n }\n }\n\n\n static override fromJS(data: any): ModelProperties {\n data = typeof data === 'object' ? data : {};\n\n if (Array.isArray(data)) {\n const obj:any = {};\n for (var property in data) {\n obj[property] = data[property];\n }\n data = obj;\n }\n let result = new ModelProperties();\n result.init(data);\n return result;\n }\n\n\toverride toJSON(data?: any) {\n data = typeof data === 'object' ? data : {};\n data[\"type\"] = this.type;\n data[\"energy\"] = this.energy;\n data[\"radiance\"] = this.radiance;\n data = super.toJSON(data);\n return instanceToPlain(data);\n }\n\n\tasync validate(): Promise<boolean> {\n const errors = await validate(this);\n if (errors.length > 0){\n\t\t\tconst errorMessages = errors.map((error: TsValidationError) => Object.values(error.constraints || [error]).join(', ')).join('; ');\n \t\tthrow new Error(`Validation failed: ${errorMessages}`);\n\t\t}\n return true;\n }\n}\n\n"],"mappings":"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","names":["Reflect","IsArray","hasOwn","Type","metadataRegistry","metadata","OrdinaryDefineOwnMetadata","OrdinaryHasOwnMetadata","OrdinaryGetOwnMetadata","OrdinaryOwnMetadataKeys","defineMetadata","hasOwnMetadata","getOwnMetadata","getOwnMetadataKeys","deleteMetadata","MapIterator","Map","Set","WeakMap","o","isString","o","min","max","matches","ValidationMetadata","ValidationSchemaToMetadataTransformer","MetadataStorage","metadata","global","ValidationError","ValidationTypes","ValidationUtils","ValidationExecutor","_a","__read","type","message","validationResult","Validator","instance","ConstraintMetadata","object","max","min","max","isLengthValidator","import_isLength","min","isLengthValidator","matchesValidator","__read","TransformationType","MetadataStorage","MetadataStorage","getGlobal","isPromise","TransformOperationExecutor","getGlobal","isPromise","key","__spreadArray","self","ClassTransformer","__assign","IDdBaseModel","Autocalculate","IDdBaseModel","Autocalculate","Autocalculate","ExteriorApertureType","ExteriorFaceType","Autocalculate","Autocalculate","StoryType","IDdBaseModel","Autocalculate","IDdBaseModel","Face3D","IDdBaseModel","IDdBaseModel","Face3D","IDdBaseModel","IDdBaseModel"]}
|