typia 3.3.12
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/CODE_OF_CONDUCT.md +133 -0
- package/CONTRIBUTING.md +104 -0
- package/LICENSE +21 -0
- package/README.md +572 -0
- package/lib/IValidation.d.ts +11 -0
- package/lib/IValidation.js +3 -0
- package/lib/IValidation.js.map +1 -0
- package/lib/TypeGuardError.d.ts +16 -0
- package/lib/TypeGuardError.js +39 -0
- package/lib/TypeGuardError.js.map +1 -0
- package/lib/factories/CommentFactory.d.ts +4 -0
- package/lib/factories/CommentFactory.js +14 -0
- package/lib/factories/CommentFactory.js.map +1 -0
- package/lib/factories/ExpressionFactory.d.ts +6 -0
- package/lib/factories/ExpressionFactory.js +30 -0
- package/lib/factories/ExpressionFactory.js.map +1 -0
- package/lib/factories/IdentifierFactory.d.ts +7 -0
- package/lib/factories/IdentifierFactory.js +35 -0
- package/lib/factories/IdentifierFactory.js.map +1 -0
- package/lib/factories/LiteralFactory.d.ts +4 -0
- package/lib/factories/LiteralFactory.js +67 -0
- package/lib/factories/LiteralFactory.js.map +1 -0
- package/lib/factories/MetadataCollection.d.ts +20 -0
- package/lib/factories/MetadataCollection.js +141 -0
- package/lib/factories/MetadataCollection.js.map +1 -0
- package/lib/factories/MetadataFactory.d.ts +10 -0
- package/lib/factories/MetadataFactory.js +47 -0
- package/lib/factories/MetadataFactory.js.map +1 -0
- package/lib/factories/MetadataTagFactory.d.ts +6 -0
- package/lib/factories/MetadataTagFactory.js +317 -0
- package/lib/factories/MetadataTagFactory.js.map +1 -0
- package/lib/factories/StatementFactory.d.ts +7 -0
- package/lib/factories/StatementFactory.js +31 -0
- package/lib/factories/StatementFactory.js.map +1 -0
- package/lib/factories/TemplateFactory.d.ts +4 -0
- package/lib/factories/TemplateFactory.js +41 -0
- package/lib/factories/TemplateFactory.js.map +1 -0
- package/lib/factories/TypeFactory.d.ts +6 -0
- package/lib/factories/TypeFactory.js +71 -0
- package/lib/factories/TypeFactory.js.map +1 -0
- package/lib/factories/ValueFactory.d.ts +8 -0
- package/lib/factories/ValueFactory.js +23 -0
- package/lib/factories/ValueFactory.js.map +1 -0
- package/lib/factories/internal/MetadataHelper.d.ts +4 -0
- package/lib/factories/internal/MetadataHelper.js +17 -0
- package/lib/factories/internal/MetadataHelper.js.map +1 -0
- package/lib/factories/internal/emplace_metadata_object.d.ts +5 -0
- package/lib/factories/internal/emplace_metadata_object.js +149 -0
- package/lib/factories/internal/emplace_metadata_object.js.map +1 -0
- package/lib/factories/internal/explore_metadata.d.ts +5 -0
- package/lib/factories/internal/explore_metadata.js +88 -0
- package/lib/factories/internal/explore_metadata.js.map +1 -0
- package/lib/factories/internal/iterate_metadata.d.ts +5 -0
- package/lib/factories/internal/iterate_metadata.js +37 -0
- package/lib/factories/internal/iterate_metadata.js.map +1 -0
- package/lib/factories/internal/iterate_metadata_array.d.ts +5 -0
- package/lib/factories/internal/iterate_metadata_array.js +22 -0
- package/lib/factories/internal/iterate_metadata_array.js.map +1 -0
- package/lib/factories/internal/iterate_metadata_atomic.d.ts +3 -0
- package/lib/factories/internal/iterate_metadata_atomic.js +73 -0
- package/lib/factories/internal/iterate_metadata_atomic.js.map +1 -0
- package/lib/factories/internal/iterate_metadata_coalesce.d.ts +3 -0
- package/lib/factories/internal/iterate_metadata_coalesce.js +35 -0
- package/lib/factories/internal/iterate_metadata_coalesce.js.map +1 -0
- package/lib/factories/internal/iterate_metadata_constant.d.ts +4 -0
- package/lib/factories/internal/iterate_metadata_constant.js +40 -0
- package/lib/factories/internal/iterate_metadata_constant.js.map +1 -0
- package/lib/factories/internal/iterate_metadata_object.d.ts +5 -0
- package/lib/factories/internal/iterate_metadata_object.js +38 -0
- package/lib/factories/internal/iterate_metadata_object.js.map +1 -0
- package/lib/factories/internal/iterate_metadata_resolve.d.ts +5 -0
- package/lib/factories/internal/iterate_metadata_resolve.js +24 -0
- package/lib/factories/internal/iterate_metadata_resolve.js.map +1 -0
- package/lib/factories/internal/iterate_metadata_template.d.ts +5 -0
- package/lib/factories/internal/iterate_metadata_template.js +33 -0
- package/lib/factories/internal/iterate_metadata_template.js.map +1 -0
- package/lib/factories/internal/iterate_metadata_tuple.d.ts +5 -0
- package/lib/factories/internal/iterate_metadata_tuple.js +27 -0
- package/lib/factories/internal/iterate_metadata_tuple.js.map +1 -0
- package/lib/factories/internal/iterate_metadata_union.d.ts +5 -0
- package/lib/factories/internal/iterate_metadata_union.js +82 -0
- package/lib/factories/internal/iterate_metadata_union.js.map +1 -0
- package/lib/functional/$is_email.d.ts +1 -0
- package/lib/functional/$is_email.js +9 -0
- package/lib/functional/$is_email.js.map +1 -0
- package/lib/functional/$is_ipv4.d.ts +1 -0
- package/lib/functional/$is_ipv4.js +9 -0
- package/lib/functional/$is_ipv4.js.map +1 -0
- package/lib/functional/$is_ipv6.d.ts +1 -0
- package/lib/functional/$is_ipv6.js +9 -0
- package/lib/functional/$is_ipv6.js.map +1 -0
- package/lib/functional/$is_url.d.ts +1 -0
- package/lib/functional/$is_url.js +9 -0
- package/lib/functional/$is_url.js.map +1 -0
- package/lib/functional/$is_uuid.d.ts +1 -0
- package/lib/functional/$is_uuid.js +9 -0
- package/lib/functional/$is_uuid.js.map +1 -0
- package/lib/functional/$join.d.ts +1 -0
- package/lib/functional/$join.js +52 -0
- package/lib/functional/$join.js.map +1 -0
- package/lib/functional/$number.d.ts +1 -0
- package/lib/functional/$number.js +23 -0
- package/lib/functional/$number.js.map +1 -0
- package/lib/functional/$string.d.ts +1 -0
- package/lib/functional/$string.js +36 -0
- package/lib/functional/$string.js.map +1 -0
- package/lib/functional/$tail.d.ts +1 -0
- package/lib/functional/$tail.js +8 -0
- package/lib/functional/$tail.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +32 -0
- package/lib/index.js.map +1 -0
- package/lib/metadata/IJsDocTagInfo.d.ts +10 -0
- package/lib/metadata/IJsDocTagInfo.js +3 -0
- package/lib/metadata/IJsDocTagInfo.js.map +1 -0
- package/lib/metadata/IMetadata.d.ts +15 -0
- package/lib/metadata/IMetadata.js +3 -0
- package/lib/metadata/IMetadata.js.map +1 -0
- package/lib/metadata/IMetadataConstant.d.ts +8 -0
- package/lib/metadata/IMetadataConstant.js +3 -0
- package/lib/metadata/IMetadataConstant.js.map +1 -0
- package/lib/metadata/IMetadataObject.d.ts +8 -0
- package/lib/metadata/IMetadataObject.js +3 -0
- package/lib/metadata/IMetadataObject.js.map +1 -0
- package/lib/metadata/IMetadataProperty.d.ts +10 -0
- package/lib/metadata/IMetadataProperty.js +3 -0
- package/lib/metadata/IMetadataProperty.js.map +1 -0
- package/lib/metadata/IMetadataTag.d.ts +74 -0
- package/lib/metadata/IMetadataTag.js +3 -0
- package/lib/metadata/IMetadataTag.js.map +1 -0
- package/lib/metadata/Metadata.d.ts +33 -0
- package/lib/metadata/Metadata.js +568 -0
- package/lib/metadata/Metadata.js.map +1 -0
- package/lib/metadata/MetadataConstant.d.ts +2 -0
- package/lib/metadata/MetadataConstant.js +3 -0
- package/lib/metadata/MetadataConstant.js.map +1 -0
- package/lib/metadata/MetadataObject.d.ts +15 -0
- package/lib/metadata/MetadataObject.js +64 -0
- package/lib/metadata/MetadataObject.js.map +1 -0
- package/lib/metadata/MetadataProperty.d.ts +16 -0
- package/lib/metadata/MetadataProperty.js +37 -0
- package/lib/metadata/MetadataProperty.js.map +1 -0
- package/lib/module.d.ts +382 -0
- package/lib/module.js +187 -0
- package/lib/module.js.map +1 -0
- package/lib/programmers/ApplicationProgrammer.d.ts +11 -0
- package/lib/programmers/ApplicationProgrammer.js +48 -0
- package/lib/programmers/ApplicationProgrammer.js.map +1 -0
- package/lib/programmers/AssertProgrammer.d.ts +5 -0
- package/lib/programmers/AssertProgrammer.js +79 -0
- package/lib/programmers/AssertProgrammer.js.map +1 -0
- package/lib/programmers/CheckerProgrammer.d.ts +41 -0
- package/lib/programmers/CheckerProgrammer.js +279 -0
- package/lib/programmers/CheckerProgrammer.js.map +1 -0
- package/lib/programmers/FeatureProgrammer.d.ts +53 -0
- package/lib/programmers/FeatureProgrammer.js +211 -0
- package/lib/programmers/FeatureProgrammer.js.map +1 -0
- package/lib/programmers/IsProgrammer.d.ts +21 -0
- package/lib/programmers/IsProgrammer.js +78 -0
- package/lib/programmers/IsProgrammer.js.map +1 -0
- package/lib/programmers/StringifyProgrammer.d.ts +5 -0
- package/lib/programmers/StringifyProgrammer.js +433 -0
- package/lib/programmers/StringifyProgrammer.js.map +1 -0
- package/lib/programmers/ValidateProgrammer.d.ts +5 -0
- package/lib/programmers/ValidateProgrammer.js +96 -0
- package/lib/programmers/ValidateProgrammer.js.map +1 -0
- package/lib/programmers/helpers/FunctionImporeter.d.ts +9 -0
- package/lib/programmers/helpers/FunctionImporeter.js +58 -0
- package/lib/programmers/helpers/FunctionImporeter.js.map +1 -0
- package/lib/programmers/helpers/IExpressionEntry.d.ts +8 -0
- package/lib/programmers/helpers/IExpressionEntry.js +3 -0
- package/lib/programmers/helpers/IExpressionEntry.js.map +1 -0
- package/lib/programmers/helpers/OptionPredicator.d.ts +5 -0
- package/lib/programmers/helpers/OptionPredicator.js +17 -0
- package/lib/programmers/helpers/OptionPredicator.js.map +1 -0
- package/lib/programmers/helpers/StringifyJoinder.d.ts +8 -0
- package/lib/programmers/helpers/StringifyJoinder.js +95 -0
- package/lib/programmers/helpers/StringifyJoinder.js.map +1 -0
- package/lib/programmers/helpers/StringifyPredicator.d.ts +5 -0
- package/lib/programmers/helpers/StringifyPredicator.js +19 -0
- package/lib/programmers/helpers/StringifyPredicator.js.map +1 -0
- package/lib/programmers/helpers/UnionExplorer.d.ts +13 -0
- package/lib/programmers/helpers/UnionExplorer.js +117 -0
- package/lib/programmers/helpers/UnionExplorer.js.map +1 -0
- package/lib/programmers/helpers/UnionPredicator.d.ts +11 -0
- package/lib/programmers/helpers/UnionPredicator.js +111 -0
- package/lib/programmers/helpers/UnionPredicator.js.map +1 -0
- package/lib/programmers/internal/application_array.d.ts +1 -0
- package/lib/programmers/internal/application_array.js +63 -0
- package/lib/programmers/internal/application_array.js.map +1 -0
- package/lib/programmers/internal/application_boolean.d.ts +1 -0
- package/lib/programmers/internal/application_boolean.js +18 -0
- package/lib/programmers/internal/application_boolean.js.map +1 -0
- package/lib/programmers/internal/application_constant.d.ts +1 -0
- package/lib/programmers/internal/application_constant.js +26 -0
- package/lib/programmers/internal/application_constant.js.map +1 -0
- package/lib/programmers/internal/application_default.d.ts +1 -0
- package/lib/programmers/internal/application_default.js +40 -0
- package/lib/programmers/internal/application_default.js.map +1 -0
- package/lib/programmers/internal/application_default_string.d.ts +1 -0
- package/lib/programmers/internal/application_default_string.js +61 -0
- package/lib/programmers/internal/application_default_string.js.map +1 -0
- package/lib/programmers/internal/application_number.d.ts +1 -0
- package/lib/programmers/internal/application_number.js +86 -0
- package/lib/programmers/internal/application_number.js.map +1 -0
- package/lib/programmers/internal/application_object.d.ts +1 -0
- package/lib/programmers/internal/application_object.js +96 -0
- package/lib/programmers/internal/application_object.js.map +1 -0
- package/lib/programmers/internal/application_schema.d.ts +1 -0
- package/lib/programmers/internal/application_schema.js +246 -0
- package/lib/programmers/internal/application_schema.js.map +1 -0
- package/lib/programmers/internal/application_string.d.ts +1 -0
- package/lib/programmers/internal/application_string.js +66 -0
- package/lib/programmers/internal/application_string.js.map +1 -0
- package/lib/programmers/internal/application_templates.d.ts +1 -0
- package/lib/programmers/internal/application_templates.js +24 -0
- package/lib/programmers/internal/application_templates.js.map +1 -0
- package/lib/programmers/internal/application_tuple.d.ts +1 -0
- package/lib/programmers/internal/application_tuple.js +24 -0
- package/lib/programmers/internal/application_tuple.js.map +1 -0
- package/lib/programmers/internal/check_array.d.ts +1 -0
- package/lib/programmers/internal/check_array.js +52 -0
- package/lib/programmers/internal/check_array.js.map +1 -0
- package/lib/programmers/internal/check_dynamic_properties.d.ts +1 -0
- package/lib/programmers/internal/check_dynamic_properties.js +111 -0
- package/lib/programmers/internal/check_dynamic_properties.js.map +1 -0
- package/lib/programmers/internal/check_everything.d.ts +1 -0
- package/lib/programmers/internal/check_everything.js +17 -0
- package/lib/programmers/internal/check_everything.js.map +1 -0
- package/lib/programmers/internal/check_length.d.ts +1 -0
- package/lib/programmers/internal/check_length.js +28 -0
- package/lib/programmers/internal/check_length.js.map +1 -0
- package/lib/programmers/internal/check_number.d.ts +1 -0
- package/lib/programmers/internal/check_number.js +124 -0
- package/lib/programmers/internal/check_number.js.map +1 -0
- package/lib/programmers/internal/check_object.d.ts +1 -0
- package/lib/programmers/internal/check_object.js +35 -0
- package/lib/programmers/internal/check_object.js.map +1 -0
- package/lib/programmers/internal/check_string.d.ts +1 -0
- package/lib/programmers/internal/check_string.js +45 -0
- package/lib/programmers/internal/check_string.js.map +1 -0
- package/lib/programmers/internal/check_string_tags.d.ts +1 -0
- package/lib/programmers/internal/check_string_tags.js +51 -0
- package/lib/programmers/internal/check_string_tags.js.map +1 -0
- package/lib/programmers/internal/check_template.d.ts +1 -0
- package/lib/programmers/internal/check_template.js +50 -0
- package/lib/programmers/internal/check_template.js.map +1 -0
- package/lib/programmers/internal/decode_union_object.d.ts +1 -0
- package/lib/programmers/internal/decode_union_object.js +56 -0
- package/lib/programmers/internal/decode_union_object.js.map +1 -0
- package/lib/programmers/internal/metadata_to_pattern.d.ts +2 -0
- package/lib/programmers/internal/metadata_to_pattern.js +62 -0
- package/lib/programmers/internal/metadata_to_pattern.js.map +1 -0
- package/lib/programmers/internal/stringify_dynamic_properties.d.ts +1 -0
- package/lib/programmers/internal/stringify_dynamic_properties.js +76 -0
- package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -0
- package/lib/programmers/internal/stringify_regular_properties.d.ts +1 -0
- package/lib/programmers/internal/stringify_regular_properties.js +78 -0
- package/lib/programmers/internal/stringify_regular_properties.js.map +1 -0
- package/lib/programmers/internal/template_to_pattern.d.ts +1 -0
- package/lib/programmers/internal/template_to_pattern.js +13 -0
- package/lib/programmers/internal/template_to_pattern.js.map +1 -0
- package/lib/schemas/IJsonApplication.d.ts +8 -0
- package/lib/schemas/IJsonApplication.js +3 -0
- package/lib/schemas/IJsonApplication.js.map +1 -0
- package/lib/schemas/IJsonComponents.d.ts +19 -0
- package/lib/schemas/IJsonComponents.js +3 -0
- package/lib/schemas/IJsonComponents.js.map +1 -0
- package/lib/schemas/IJsonSchema.d.ts +62 -0
- package/lib/schemas/IJsonSchema.js +3 -0
- package/lib/schemas/IJsonSchema.js.map +1 -0
- package/lib/transform.d.ts +3 -0
- package/lib/transform.js +21 -0
- package/lib/transform.js.map +1 -0
- package/lib/transformers/CallExpressionTransformer.d.ts +5 -0
- package/lib/transformers/CallExpressionTransformer.js +45 -0
- package/lib/transformers/CallExpressionTransformer.js.map +1 -0
- package/lib/transformers/ExpressionWithArgumentTransformer.d.ts +0 -0
- package/lib/transformers/ExpressionWithArgumentTransformer.js +2 -0
- package/lib/transformers/ExpressionWithArgumentTransformer.js.map +1 -0
- package/lib/transformers/FileTransformer.d.ts +5 -0
- package/lib/transformers/FileTransformer.js +34 -0
- package/lib/transformers/FileTransformer.js.map +1 -0
- package/lib/transformers/IProject.d.ts +9 -0
- package/lib/transformers/IProject.js +3 -0
- package/lib/transformers/IProject.js.map +1 -0
- package/lib/transformers/ITransformOptions.d.ts +4 -0
- package/lib/transformers/ITransformOptions.js +3 -0
- package/lib/transformers/ITransformOptions.js.map +1 -0
- package/lib/transformers/NodeTransformer.d.ts +5 -0
- package/lib/transformers/NodeTransformer.js +18 -0
- package/lib/transformers/NodeTransformer.js.map +1 -0
- package/lib/transformers/features/ApplicationTransformer.d.ts +5 -0
- package/lib/transformers/features/ApplicationTransformer.js +63 -0
- package/lib/transformers/features/ApplicationTransformer.js.map +1 -0
- package/lib/transformers/features/AssertTransformer.d.ts +5 -0
- package/lib/transformers/features/AssertTransformer.js +30 -0
- package/lib/transformers/features/AssertTransformer.js.map +1 -0
- package/lib/transformers/features/CreateTransformer.d.ts +5 -0
- package/lib/transformers/features/CreateTransformer.js +29 -0
- package/lib/transformers/features/CreateTransformer.js.map +1 -0
- package/lib/transformers/features/IsTransformer.d.ts +5 -0
- package/lib/transformers/features/IsTransformer.js +30 -0
- package/lib/transformers/features/IsTransformer.js.map +1 -0
- package/lib/transformers/features/StringifyTransformer.d.ts +5 -0
- package/lib/transformers/features/StringifyTransformer.js +23 -0
- package/lib/transformers/features/StringifyTransformer.js.map +1 -0
- package/lib/transformers/features/ValidateTransformer.d.ts +5 -0
- package/lib/transformers/features/ValidateTransformer.js +30 -0
- package/lib/transformers/features/ValidateTransformer.js.map +1 -0
- package/lib/typings/Atomic.d.ts +11 -0
- package/lib/typings/Atomic.js +3 -0
- package/lib/typings/Atomic.js.map +1 -0
- package/lib/typings/ClassProperties.d.ts +4 -0
- package/lib/typings/ClassProperties.js +3 -0
- package/lib/typings/ClassProperties.js.map +1 -0
- package/lib/typings/OmitNever.d.ts +2 -0
- package/lib/typings/OmitNever.js +3 -0
- package/lib/typings/OmitNever.js.map +1 -0
- package/lib/typings/SpecialFields.d.ts +3 -0
- package/lib/typings/SpecialFields.js +3 -0
- package/lib/typings/SpecialFields.js.map +1 -0
- package/lib/typings/Writable.d.ts +5 -0
- package/lib/typings/Writable.js +8 -0
- package/lib/typings/Writable.js.map +1 -0
- package/lib/utils/ArrayUtil.d.ts +8 -0
- package/lib/utils/ArrayUtil.js +69 -0
- package/lib/utils/ArrayUtil.js.map +1 -0
- package/lib/utils/Escaper.d.ts +3 -0
- package/lib/utils/Escaper.js +52 -0
- package/lib/utils/Escaper.js.map +1 -0
- package/lib/utils/MapUtil.d.ts +3 -0
- package/lib/utils/MapUtil.js +16 -0
- package/lib/utils/MapUtil.js.map +1 -0
- package/lib/utils/PatternUtil.d.ts +7 -0
- package/lib/utils/PatternUtil.js +59 -0
- package/lib/utils/PatternUtil.js.map +1 -0
- package/lib/utils/Singleton.d.ts +6 -0
- package/lib/utils/Singleton.js +47 -0
- package/lib/utils/Singleton.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Metadata.js","sourceRoot":"","sources":["../../src/metadata/Metadata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetadataConstant.js","sourceRoot":"","sources":["../../src/metadata/MetadataConstant.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { IJsDocTagInfo } from "./IJsDocTagInfo";
|
|
2
|
+
import { IMetadataObject } from "./IMetadataObject";
|
|
3
|
+
import { MetadataProperty } from "./MetadataProperty";
|
|
4
|
+
export declare class MetadataObject {
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly properties: Array<MetadataProperty>;
|
|
7
|
+
readonly description: string | undefined;
|
|
8
|
+
readonly jsDocTags: IJsDocTagInfo[];
|
|
9
|
+
/**
|
|
10
|
+
* @hidden
|
|
11
|
+
*/
|
|
12
|
+
private constructor();
|
|
13
|
+
static _From_without_properties(obj: IMetadataObject): MetadataObject;
|
|
14
|
+
toJSON(): IMetadataObject;
|
|
15
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MetadataObject = void 0;
|
|
4
|
+
var MetadataObject = (function () {
|
|
5
|
+
function MetadataObject(props) {
|
|
6
|
+
this.nullables = [];
|
|
7
|
+
this.name = props.name;
|
|
8
|
+
this.properties = props.properties;
|
|
9
|
+
this.description = props.description;
|
|
10
|
+
this.jsDocTags = props.jsDocTags;
|
|
11
|
+
this.index = props.index;
|
|
12
|
+
this.validated = props.validated;
|
|
13
|
+
this.recursive = false;
|
|
14
|
+
this.nullables = [];
|
|
15
|
+
}
|
|
16
|
+
MetadataObject.create = function (props) {
|
|
17
|
+
return new MetadataObject(props);
|
|
18
|
+
};
|
|
19
|
+
MetadataObject._From_without_properties = function (obj) {
|
|
20
|
+
return this.create({
|
|
21
|
+
name: obj.name,
|
|
22
|
+
properties: [],
|
|
23
|
+
description: obj.description,
|
|
24
|
+
jsDocTags: obj.jsDocTags,
|
|
25
|
+
index: obj.index,
|
|
26
|
+
validated: obj.validated,
|
|
27
|
+
recursive: obj.recursive,
|
|
28
|
+
nullables: obj.nullables.slice(),
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
MetadataObject.prototype.toJSON = function () {
|
|
32
|
+
return {
|
|
33
|
+
name: this.name,
|
|
34
|
+
properties: this.properties.map(function (property) { return property.toJSON(); }),
|
|
35
|
+
description: this.description,
|
|
36
|
+
jsDocTags: this.jsDocTags,
|
|
37
|
+
index: this.index,
|
|
38
|
+
validated: this.validated,
|
|
39
|
+
recursive: this.recursive,
|
|
40
|
+
nullables: this.nullables.slice(),
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
return MetadataObject;
|
|
44
|
+
}());
|
|
45
|
+
exports.MetadataObject = MetadataObject;
|
|
46
|
+
(function (MetadataObject) {
|
|
47
|
+
function intersects(x, y) {
|
|
48
|
+
return x.properties.some(function (prop) {
|
|
49
|
+
return y.properties.find(function (oppo) { return prop.key === oppo.key; }) !==
|
|
50
|
+
undefined;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
MetadataObject.intersects = intersects;
|
|
54
|
+
function covers(x, y) {
|
|
55
|
+
return (x.properties.length >= y.properties.length &&
|
|
56
|
+
x.properties.every(function (prop) {
|
|
57
|
+
return y.properties.find(function (oppo) { return prop.key === oppo.key; }) !==
|
|
58
|
+
undefined;
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
MetadataObject.covers = covers;
|
|
62
|
+
})(MetadataObject = exports.MetadataObject || (exports.MetadataObject = {}));
|
|
63
|
+
exports.MetadataObject = MetadataObject;
|
|
64
|
+
//# sourceMappingURL=MetadataObject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetadataObject.js","sourceRoot":"","sources":["../../src/metadata/MetadataObject.ts"],"names":[],"mappings":";;;AAMA;IAgCI,wBAAoB,KAAsC;QARnD,cAAS,GAAc,EAAE,CAAC;QAS7B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAEjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACxB,CAAC;IAKa,qBAAM,GAApB,UAAqB,KAAsC;QACvD,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEa,uCAAwB,GAAtC,UACI,GAAoB;QAEpB,OAAO,IAAI,CAAC,MAAM,CAAC;YACf,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,UAAU,EAAE,EAAE;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;YAExB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE;SACnC,CAAC,CAAC;IACP,CAAC;IAEM,+BAAM,GAAb;QACI,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAC,QAAQ,IAAK,OAAA,QAAQ,CAAC,MAAM,EAAE,EAAjB,CAAiB,CAAC;YAChE,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;YAEzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;SACpC,CAAC;IACN,CAAC;IACL,qBAAC;AAAD,CAAC,AAhFD,IAgFC;AAhFY,wCAAc;AAqF3B,WAAiB,cAAc;IAC3B,SAAgB,UAAU,CAAC,CAAiB,EAAE,CAAiB;QAC3D,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CACpB,UAAC,IAAI;YACD,OAAA,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAArB,CAAqB,CAAC;gBAClD,SAAS;QADT,CACS,CAChB,CAAC;IACN,CAAC;IANe,yBAAU,aAMzB,CAAA;IAED,SAAgB,MAAM,CAAC,CAAiB,EAAE,CAAiB;QACvD,OAAO,CACH,CAAC,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM;YAC1C,CAAC,CAAC,UAAU,CAAC,KAAK,CACd,UAAC,IAAI;gBACD,OAAA,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EAArB,CAAqB,CAAC;oBAClD,SAAS;YADT,CACS,CAChB,CACJ,CAAC;IACN,CAAC;IATe,qBAAM,SASrB,CAAA;AACL,CAAC,EAnBgB,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAmB9B;AAxGY,wCAAc"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { IJsDocTagInfo } from "./IJsDocTagInfo";
|
|
2
|
+
import { IMetadataProperty } from "./IMetadataProperty";
|
|
3
|
+
import { IMetadataTag } from "./IMetadataTag";
|
|
4
|
+
import { Metadata } from "./Metadata";
|
|
5
|
+
export declare class MetadataProperty {
|
|
6
|
+
readonly key: Metadata;
|
|
7
|
+
readonly value: Metadata;
|
|
8
|
+
readonly description: string | undefined;
|
|
9
|
+
readonly tags: IMetadataTag[];
|
|
10
|
+
readonly jsDocTags: IJsDocTagInfo[];
|
|
11
|
+
/**
|
|
12
|
+
* @hidden
|
|
13
|
+
*/
|
|
14
|
+
private constructor();
|
|
15
|
+
toJSON(): IMetadataProperty;
|
|
16
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MetadataProperty = void 0;
|
|
4
|
+
var Metadata_1 = require("./Metadata");
|
|
5
|
+
var MetadataProperty = (function () {
|
|
6
|
+
function MetadataProperty(props) {
|
|
7
|
+
this.key = props.key;
|
|
8
|
+
this.value = props.value;
|
|
9
|
+
this.description = props.description;
|
|
10
|
+
this.tags = props.tags;
|
|
11
|
+
this.jsDocTags = props.jsDocTags;
|
|
12
|
+
}
|
|
13
|
+
MetadataProperty.create = function (props) {
|
|
14
|
+
return new MetadataProperty(props);
|
|
15
|
+
};
|
|
16
|
+
MetadataProperty._From = function (property, objects) {
|
|
17
|
+
return this.create({
|
|
18
|
+
key: Metadata_1.Metadata._From(property.key, objects),
|
|
19
|
+
value: Metadata_1.Metadata._From(property.value, objects),
|
|
20
|
+
description: property.description,
|
|
21
|
+
tags: property.tags.slice(),
|
|
22
|
+
jsDocTags: property.jsDocTags.slice(),
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
MetadataProperty.prototype.toJSON = function () {
|
|
26
|
+
return {
|
|
27
|
+
key: this.key.toJSON(),
|
|
28
|
+
value: this.value.toJSON(),
|
|
29
|
+
description: this.description,
|
|
30
|
+
tags: this.tags,
|
|
31
|
+
jsDocTags: this.jsDocTags,
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
return MetadataProperty;
|
|
35
|
+
}());
|
|
36
|
+
exports.MetadataProperty = MetadataProperty;
|
|
37
|
+
//# sourceMappingURL=MetadataProperty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetadataProperty.js","sourceRoot":"","sources":["../../src/metadata/MetadataProperty.ts"],"names":[],"mappings":";;;AAKA,uCAAsC;AAGtC;IAaI,0BAAoB,KAAwC;QACxD,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACrC,CAAC;IAKa,uBAAM,GAApB,UACI,KAAwC;QAExC,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAKa,sBAAK,GAAnB,UACI,QAA2B,EAC3B,OAAoC;QAEpC,OAAO,IAAI,CAAC,MAAM,CAAC;YACf,GAAG,EAAE,mBAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;YAC1C,KAAK,EAAE,mBAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;YAC9C,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;YAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE;SACxC,CAAC,CAAC;IACP,CAAC;IAEM,iCAAM,GAAb;QACI,OAAO;YACH,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACtB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;SAC5B,CAAC;IACN,CAAC;IACL,uBAAC;AAAD,CAAC,AAvDD,IAuDC;AAvDY,4CAAgB"}
|
package/lib/module.d.ts
ADDED
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
import { IJsonApplication } from "./schemas/IJsonApplication";
|
|
2
|
+
import { IValidation } from "./IValidation";
|
|
3
|
+
export * from "./schemas/IJsonApplication";
|
|
4
|
+
export * from "./schemas/IJsonComponents";
|
|
5
|
+
export * from "./schemas/IJsonSchema";
|
|
6
|
+
export * from "./TypeGuardError";
|
|
7
|
+
export * from "./IValidation";
|
|
8
|
+
/**
|
|
9
|
+
* Asserts a value type.
|
|
10
|
+
*
|
|
11
|
+
* Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
|
|
12
|
+
* reason, if the parametric value is not following the type `T`. Otherwise, the
|
|
13
|
+
* value is following the type `T`, just input parameter would be returned.
|
|
14
|
+
*
|
|
15
|
+
* If what you want is not asserting but just knowing whether the parametric value is
|
|
16
|
+
* following the type `T` or not, you can choose the {@link is} function instead.
|
|
17
|
+
* Otherwise you want to know all the errors, {@link validate} is the way to go.
|
|
18
|
+
*
|
|
19
|
+
* On the other and, if you don't want to allow any superfluous property that is not
|
|
20
|
+
* enrolled to the type `T`, you can use {@link assertEquals} function instead.
|
|
21
|
+
*
|
|
22
|
+
* @template T Type of the input value
|
|
23
|
+
* @param input A value to be asserted
|
|
24
|
+
* @returns Parametric input value
|
|
25
|
+
* @throws A {@link TypeGuardError} instance with detailed reason
|
|
26
|
+
*
|
|
27
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
28
|
+
*/
|
|
29
|
+
export declare function assertType<T>(input: T): T;
|
|
30
|
+
/**
|
|
31
|
+
* Asserts a value type.
|
|
32
|
+
*
|
|
33
|
+
* Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
|
|
34
|
+
* reason, if the parametric value is not following the type `T`. Otherwise, the
|
|
35
|
+
* value is following the type `T`, just input parameter would be returned.
|
|
36
|
+
*
|
|
37
|
+
* If what you want is not asserting but just knowing whether the parametric value is
|
|
38
|
+
* following the type `T` or not, you can choose the {@link is} function instead.
|
|
39
|
+
* Otherwise you want to know all the errors, {@link validate} is the way to go.
|
|
40
|
+
*
|
|
41
|
+
* On the other and, if you don't want to allow any superfluous property that is not
|
|
42
|
+
* enrolled to the type `T`, you can use {@link assertEquals} function instead.
|
|
43
|
+
*
|
|
44
|
+
* @template T Type of the input value
|
|
45
|
+
* @param input A value to be asserted
|
|
46
|
+
* @returns Parametric input value casted as `T`
|
|
47
|
+
* @throws A {@link TypeGuardError} instance with detailed reason
|
|
48
|
+
*
|
|
49
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
50
|
+
*/
|
|
51
|
+
export declare function assertType<T>(input: unknown): T;
|
|
52
|
+
/**
|
|
53
|
+
* Tests a value type.
|
|
54
|
+
*
|
|
55
|
+
* Tests a parametric value type and returns whether it's following the type `T` or not.
|
|
56
|
+
* If the parametric value is matched with the type `T`, `true` value would be returned.
|
|
57
|
+
* Otherwise, the parametric value is not following the type `T`, `false` value would be
|
|
58
|
+
* returned.
|
|
59
|
+
*
|
|
60
|
+
* If what you want is not just knowing whether the parametric value is following the
|
|
61
|
+
* type `T` or not, but throwing an exception with detailed reason, you can choose
|
|
62
|
+
* {@link assertType} function instead. Also, if you want to know all the errors with
|
|
63
|
+
* detailed reasons, {@link validate} function would be useful.
|
|
64
|
+
*
|
|
65
|
+
* On the other and, if you don't want to allow any superfluous property that is not
|
|
66
|
+
* enrolled to the type `T`, you can use {@link equals} function instead.
|
|
67
|
+
*
|
|
68
|
+
* @template T Type of the input value
|
|
69
|
+
* @param input A value to be tested
|
|
70
|
+
* @returns Whether the parametric value is following the type `T` or not
|
|
71
|
+
*
|
|
72
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
73
|
+
*/
|
|
74
|
+
export declare function is<T>(input: T): input is T;
|
|
75
|
+
/**
|
|
76
|
+
* Tests a value type.
|
|
77
|
+
*
|
|
78
|
+
* Tests a parametric value type and returns whether it's following the type `T` or not.
|
|
79
|
+
* If the parametric value is matched with the type `T`, `true` value would be returned.
|
|
80
|
+
* Otherwise, the parametric value is not following the type `T`, `false` value would be
|
|
81
|
+
* returned.
|
|
82
|
+
*
|
|
83
|
+
* If what you want is not just knowing whether the parametric value is following the
|
|
84
|
+
* type `T` or not, but throwing an exception with detailed reason, you can choose
|
|
85
|
+
* {@link assertType} function instead. Also, if you want to know all the errors with
|
|
86
|
+
* detailed reasons, {@link validate} function would be useful.
|
|
87
|
+
*
|
|
88
|
+
* On the other and, if you don't want to allow any superfluous property that is not
|
|
89
|
+
* enrolled to the type `T`, you can use {@link equals} function instead.
|
|
90
|
+
*
|
|
91
|
+
* @template T Type of the input value
|
|
92
|
+
* @param input A value to be tested
|
|
93
|
+
* @returns Whether the parametric value is following the type `T` or not
|
|
94
|
+
*
|
|
95
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
96
|
+
*/
|
|
97
|
+
export declare function is<T>(input: unknown): input is T;
|
|
98
|
+
/**
|
|
99
|
+
* Validates a value type.
|
|
100
|
+
*
|
|
101
|
+
* Validates a parametric value type and archives all the type errors into an
|
|
102
|
+
* {@link IValidation.errors} array, if the parametric value is not following the
|
|
103
|
+
* type `T`. Of course, if the parametric value is following the type `T`, the
|
|
104
|
+
* {@link IValidation.errors} array would be empty and {@link IValidation.success}
|
|
105
|
+
* would have the `true` value.
|
|
106
|
+
*
|
|
107
|
+
* If what you want is not finding all the error, but asserting the parametric value
|
|
108
|
+
* type with exception throwing, you can choose {@link assertType} function instead.
|
|
109
|
+
* Otherwise, you just want to know whether the parametric value is matched with the
|
|
110
|
+
* type `T`, {@link is} function is the way to go.
|
|
111
|
+
*
|
|
112
|
+
* On the other and, if you don't want to allow any superfluous property that is not
|
|
113
|
+
* enrolled to the type `T`, you can use {@link validateEquals} function instead.
|
|
114
|
+
*
|
|
115
|
+
* @template Type of the input value
|
|
116
|
+
* @param input A value to be validated
|
|
117
|
+
* @returns Validation result
|
|
118
|
+
*/
|
|
119
|
+
export declare function validate<T>(input: T): IValidation;
|
|
120
|
+
/**
|
|
121
|
+
* Validates a value type.
|
|
122
|
+
*
|
|
123
|
+
* Validates a parametric value type and archives all the type errors into an
|
|
124
|
+
* {@link IValidation.errors} array, if the parametric value is not following the
|
|
125
|
+
* type `T`. Of course, if the parametric value is following the type `T`, the
|
|
126
|
+
* {@link IValidation.errors} array would be empty and {@link IValidation.success}
|
|
127
|
+
* would have the `true` value.
|
|
128
|
+
*
|
|
129
|
+
* If what you want is not finding all the error, but asserting the parametric value
|
|
130
|
+
* type with exception throwing, you can choose {@link assertType} function instead.
|
|
131
|
+
* Otherwise, you just want to know whether the parametric value is matched with the
|
|
132
|
+
* type `T`, {@link is} function is the way to go.
|
|
133
|
+
*
|
|
134
|
+
* On the other and, if you don't want to allow any superfluous property that is not
|
|
135
|
+
* enrolled to the type `T`, you can use {@link validateEquals} function instead.
|
|
136
|
+
*
|
|
137
|
+
* @template Type of the input value
|
|
138
|
+
* @param input A value to be validated
|
|
139
|
+
* @returns Validation result
|
|
140
|
+
*/
|
|
141
|
+
export declare function validate<T>(input: unknown): IValidation;
|
|
142
|
+
/**
|
|
143
|
+
* Asserts equality between a value and its type.
|
|
144
|
+
*
|
|
145
|
+
* Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
|
|
146
|
+
* reason, if the parametric value is not following the type `T` or some superfluous
|
|
147
|
+
* property that is not listed on the type `T` has been found. Otherwise, the value is
|
|
148
|
+
* following the type `T` without any superfluous property, just input parameter would
|
|
149
|
+
* be returned.
|
|
150
|
+
*
|
|
151
|
+
* If what you want is not asserting but just knowing whether the parametric value is
|
|
152
|
+
* following the type `T` or not, you can choose the {@link equals} function instead.
|
|
153
|
+
* Otherwise you want to know all the errors, {@link validateEquals} is the way to go.
|
|
154
|
+
*
|
|
155
|
+
* On the other hand, if you want to allow superfluous property that is not enrolled
|
|
156
|
+
* to the type `T`, you can use {@link assertType} function instead.
|
|
157
|
+
*
|
|
158
|
+
* @template T Type of the input value
|
|
159
|
+
* @param input A value to be asserted
|
|
160
|
+
* @returns Parametric input value
|
|
161
|
+
* @throws A {@link TypeGuardError} instance with detailed reason
|
|
162
|
+
*
|
|
163
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
164
|
+
*/
|
|
165
|
+
export declare function assertEquals<T>(input: T): T;
|
|
166
|
+
/**
|
|
167
|
+
* Asserts equality between a value and its type.
|
|
168
|
+
*
|
|
169
|
+
* Asserts a parametric value type and throws a {@link TypeGuardError} with detailed
|
|
170
|
+
* reason, if the parametric value is not following the type `T` or some superfluous
|
|
171
|
+
* property that is not listed on the type `T` has been found. Otherwise, the value is
|
|
172
|
+
* following the type `T` without any superfluous property, just input parameter would
|
|
173
|
+
* be returned.
|
|
174
|
+
*
|
|
175
|
+
* If what you want is not asserting but just knowing whether the parametric value is
|
|
176
|
+
* following the type `T` or not, you can choose the {@link equals} function instead.
|
|
177
|
+
* Otherwise you want to know all the errors, {@link validateEquals} is the way to go.
|
|
178
|
+
*
|
|
179
|
+
* On the other hand, if you want to allow superfluous property that is not enrolled
|
|
180
|
+
* to the type `T`, you can use {@link assertType} function instead.
|
|
181
|
+
*
|
|
182
|
+
* @template T Type of the input value
|
|
183
|
+
* @param input A value to be asserted
|
|
184
|
+
* @returns Parametric input value casted as `T`
|
|
185
|
+
* @throws A {@link TypeGuardError} instance with detailed reason
|
|
186
|
+
*
|
|
187
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
188
|
+
*/
|
|
189
|
+
export declare function assertEquals<T>(input: unknown): T;
|
|
190
|
+
/**
|
|
191
|
+
* Tests equality between a value and its type.
|
|
192
|
+
*
|
|
193
|
+
* Tests a parametric value type and returns whether it's equivalent to the type `T`
|
|
194
|
+
* or not. If the parametric value is matched with the type `T` and there's not any
|
|
195
|
+
* superfluous property that is not listed on the type `T`, `true` value would be
|
|
196
|
+
* returned. Otherwise, the parametric value is not following the type `T` or some
|
|
197
|
+
* superfluous property exists, `false` value would be returned.
|
|
198
|
+
*
|
|
199
|
+
* If what you want is not just knowing whether the parametric value is following the
|
|
200
|
+
* type `T` or not, but throwing an exception with detailed reason, you can choose
|
|
201
|
+
* {@link assertEquals} function instead. Also, if you want to know all the errors with
|
|
202
|
+
* detailed reasons, {@link validateEquals} function would be useful.
|
|
203
|
+
*
|
|
204
|
+
* On the other hand, if you want to allow superfluous property that is not enrolled
|
|
205
|
+
* to the type `T`, you can use {@link is} function instead.
|
|
206
|
+
*
|
|
207
|
+
* @template T Type of the input value
|
|
208
|
+
* @param input A value to be tested
|
|
209
|
+
* @returns Whether the parametric value is equivalent to the type `T` or not
|
|
210
|
+
*
|
|
211
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
212
|
+
*/
|
|
213
|
+
export declare function equals<T>(input: T): input is T;
|
|
214
|
+
/**
|
|
215
|
+
* Tests equality between a value and its type.
|
|
216
|
+
*
|
|
217
|
+
* Tests a parametric value type and returns whether it's equivalent to the type `T`
|
|
218
|
+
* or not. If the parametric value is matched with the type `T` and there's not any
|
|
219
|
+
* superfluous property that is not listed on the type `T`, `true` value would be
|
|
220
|
+
* returned. Otherwise, the parametric value is not following the type `T` or some
|
|
221
|
+
* superfluous property exists, `false` value would be returned.
|
|
222
|
+
*
|
|
223
|
+
* If what you want is not just knowing whether the parametric value is following the
|
|
224
|
+
* type `T` or not, but throwing an exception with detailed reason, you can choose
|
|
225
|
+
* {@link assertEquals} function instead. Also, if you want to know all the errors with
|
|
226
|
+
* detailed reasons, {@link validateEquals} function would be useful.
|
|
227
|
+
*
|
|
228
|
+
* On the other hand, if you want to allow superfluous property that is not enrolled
|
|
229
|
+
* to the type `T`, you can use {@link is} function instead.
|
|
230
|
+
*
|
|
231
|
+
* @template T Type of the input value
|
|
232
|
+
* @param input A value to be tested
|
|
233
|
+
* @returns Whether the parametric value is equivalent to the type `T` or not
|
|
234
|
+
*
|
|
235
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
236
|
+
*/
|
|
237
|
+
export declare function equals<T>(input: unknown): input is T;
|
|
238
|
+
/**
|
|
239
|
+
* Validates equaility between a value and itstype.
|
|
240
|
+
*
|
|
241
|
+
* Validates a parametric value type and archives all the type errors into an
|
|
242
|
+
* {@link IValidation.errors} array, if the parametric value is not following the
|
|
243
|
+
* type `T` or some superfluous property that is not listed on the type `T` has been
|
|
244
|
+
* found. Of course, if the parametric value is following the type `T` and no
|
|
245
|
+
* superfluous property exists, the {@link IValidation.errors} array would be empty
|
|
246
|
+
* and {@link IValidation.success} would have the `true` value.
|
|
247
|
+
*
|
|
248
|
+
* If what you want is not finding all the error, but asserting the parametric value
|
|
249
|
+
* type with exception throwing, you can choose {@link assertType} function instead.
|
|
250
|
+
* Otherwise, you just want to know whether the parametric value is matched with the
|
|
251
|
+
* type `T`, {@link is} function is the way to go.
|
|
252
|
+
*
|
|
253
|
+
* On the other and, if you don't want to allow any superfluous property that is not
|
|
254
|
+
* enrolled to the type `T`, you can use {@link validateEquals} function instead.
|
|
255
|
+
*
|
|
256
|
+
* @template Type of the input value
|
|
257
|
+
* @param input A value to be validated
|
|
258
|
+
* @returns Validation result
|
|
259
|
+
*/
|
|
260
|
+
export declare function validateEquals<T>(input: T): IValidation;
|
|
261
|
+
/**
|
|
262
|
+
* Validates equaility between a value and itstype.
|
|
263
|
+
*
|
|
264
|
+
* Validates a parametric value type and archives all the type errors into an
|
|
265
|
+
* {@link IValidation.errors} array, if the parametric value is not following the
|
|
266
|
+
* type `T` or some superfluous property that is not listed on the type `T` has been
|
|
267
|
+
* found. Of course, if the parametric value is following the type `T` and no
|
|
268
|
+
* superfluous property exists, the {@link IValidation.errors} array would be empty
|
|
269
|
+
* and {@link IValidation.success} would have the `true` value.
|
|
270
|
+
*
|
|
271
|
+
* If what you want is not finding all the error, but asserting the parametric value
|
|
272
|
+
* type with exception throwing, you can choose {@link assertType} function instead.
|
|
273
|
+
* Otherwise, you just want to know whether the parametric value is matched with the
|
|
274
|
+
* type `T`, {@link is} function is the way to go.
|
|
275
|
+
*
|
|
276
|
+
* On the other and, if you don't want to allow any superfluous property that is not
|
|
277
|
+
* enrolled to the type `T`, you can use {@link validateEquals} function instead.
|
|
278
|
+
*
|
|
279
|
+
* @template Type of the input value
|
|
280
|
+
* @param input A value to be validated
|
|
281
|
+
* @returns Validation result
|
|
282
|
+
*/
|
|
283
|
+
export declare function validateEquals<T>(input: unknown): IValidation;
|
|
284
|
+
/**
|
|
285
|
+
* 5x faster `JSON.stringify()` function.
|
|
286
|
+
*
|
|
287
|
+
* Converts an input value to a JSON (JavaSript Object Noation) string, about 5x faster
|
|
288
|
+
* than the native `JSON.stringify()` function. The 5x faster principle is because
|
|
289
|
+
* it writes an optmized JSON conversion plan, only for the type `T`.
|
|
290
|
+
*
|
|
291
|
+
* If you want to create a stringify function which is reusable, just assign this function
|
|
292
|
+
* to a (constant) variable like below, with the generic argument `T`. Then the variable
|
|
293
|
+
* would be a stringify fuction reusable.
|
|
294
|
+
*
|
|
295
|
+
* ```typescript
|
|
296
|
+
* const stringify = TSON.stringify<MyType>;
|
|
297
|
+
* stringify(x);
|
|
298
|
+
* stringify(y);
|
|
299
|
+
* stringify(z);
|
|
300
|
+
* ```
|
|
301
|
+
*
|
|
302
|
+
* For reference, this `TSON.stringify()` does not validate the input value type. It
|
|
303
|
+
* just believes that the input value is following the type `T`. Therefore, if you
|
|
304
|
+
* can't ensure the input value type, it would better to call {@link assertType} or
|
|
305
|
+
* {@link is} function before.
|
|
306
|
+
*
|
|
307
|
+
* @template T Type of the input value
|
|
308
|
+
* @param input A value to be converted
|
|
309
|
+
* @return JSON string value
|
|
310
|
+
*
|
|
311
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
312
|
+
*/
|
|
313
|
+
export declare function stringify<T>(input: T): string;
|
|
314
|
+
/**
|
|
315
|
+
* 2x faster constant object creator.
|
|
316
|
+
*
|
|
317
|
+
* You know what? `JSON.parse()` is faster than literal object construction, when the
|
|
318
|
+
* object would be constructed only one time.
|
|
319
|
+
*
|
|
320
|
+
* - [Faster apps with JSON.parse (Chrome Dev Summit 2019)](https://www.youtube.com/watch?v=ff4fgQxPaO0)
|
|
321
|
+
* - [The cost of parsing JSON](https://v8.dev/blog/cost-of-javascript-2019#json)
|
|
322
|
+
*
|
|
323
|
+
* `TSON.create()` is a transformer function which converts a literal object construction
|
|
324
|
+
* to a `JSON.parse()` function call expression with JSON string argument. Therefore, if
|
|
325
|
+
* you construct a literal object via this `TSON.create()`, you can get benefit from both
|
|
326
|
+
* type safe and performance tuning at the same time.
|
|
327
|
+
*
|
|
328
|
+
* @template T Type of the input value
|
|
329
|
+
* @param input A value to be converted
|
|
330
|
+
* @return Same with the parametric value
|
|
331
|
+
*
|
|
332
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
333
|
+
*/
|
|
334
|
+
export declare function create<T>(input: T): T;
|
|
335
|
+
/**
|
|
336
|
+
* > You must configure the generic argument `T`.
|
|
337
|
+
*
|
|
338
|
+
* JSON Schema Application.
|
|
339
|
+
*
|
|
340
|
+
* Creates a JSON schema application which contains both main JSON schemas and components.
|
|
341
|
+
* Note that, all of the object types are stored in the {@link IJsonApplication.components}
|
|
342
|
+
* property for the `$ref` referencing.
|
|
343
|
+
*
|
|
344
|
+
* Also, `TSON.application()` has additional generic arguments, *Purpose*.
|
|
345
|
+
* As JSON schema definitions used by `swagger` and `ajv` are different a little bit,
|
|
346
|
+
* you should configure the *Purpose* apprpriately.
|
|
347
|
+
*
|
|
348
|
+
* For an example, `ajv` has an extra property "$recursiveRef" that are not exists
|
|
349
|
+
* in the standard JSON schema definition spec. Otherwise, `swagger` can't identify
|
|
350
|
+
* the tuple definition.
|
|
351
|
+
*
|
|
352
|
+
* @template Types Tuple of target types
|
|
353
|
+
* @template Purpose Purpose of the JSON schema
|
|
354
|
+
* @template Prefix Prefix of the JSON components referenced by `$ref` tag
|
|
355
|
+
* @return JSON schema application
|
|
356
|
+
*
|
|
357
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
358
|
+
*/
|
|
359
|
+
export declare function application(): never;
|
|
360
|
+
/**
|
|
361
|
+
* JSON Schema Application.
|
|
362
|
+
*
|
|
363
|
+
* Creates a JSON schema application which contains both main JSON schemas and components.
|
|
364
|
+
* Note that, all of the object types are stored in the {@link IJsonApplication.components}
|
|
365
|
+
* property for the `$ref` referencing.
|
|
366
|
+
*
|
|
367
|
+
* Also, `TSON.application()` has additional generic arguments, *Purpose*.
|
|
368
|
+
* As JSON schema definitions used by `swagger` and `ajv` are different a little bit,
|
|
369
|
+
* you should configure the *Purpose* apprpriately.
|
|
370
|
+
*
|
|
371
|
+
* For an example, `ajv` has an extra property "$recursiveRef" that are not exists
|
|
372
|
+
* in the standard JSON schema definition spec. Otherwise, `swagger` can't identify
|
|
373
|
+
* the tuple definition.
|
|
374
|
+
*
|
|
375
|
+
* @template Types Tuple of target types
|
|
376
|
+
* @template Purpose Purpose of the JSON schema
|
|
377
|
+
* @template Prefix Prefix of the JSON components referenced by `$ref` tag
|
|
378
|
+
* @return JSON schema application
|
|
379
|
+
*
|
|
380
|
+
* @author Jeongho Nam - https://github.com/samchon
|
|
381
|
+
*/
|
|
382
|
+
export declare function application<Types extends unknown[], Purpose extends "swagger" | "ajv" = "swagger", Prefix extends string = Purpose extends "swagger" ? "#/components/schemas" : "components#/schemas">(): IJsonApplication;
|