typia 7.0.0-dev.20240916 → 7.0.0-dev.20240918
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/lib/factories/JsonMetadataFactory.d.ts +7 -1
- package/lib/factories/JsonMetadataFactory.js +17 -15
- package/lib/factories/JsonMetadataFactory.js.map +1 -1
- package/lib/factories/MetadataFactory.d.ts +14 -2
- package/lib/factories/MetadataFactory.js +287 -324
- package/lib/factories/MetadataFactory.js.map +1 -1
- package/lib/factories/ProtobufFactory.d.ts +8 -1
- package/lib/factories/ProtobufFactory.js +22 -17
- package/lib/factories/ProtobufFactory.js.map +1 -1
- package/lib/factories/internal/metadata/IMetadataIteratorProps.d.ts +13 -0
- package/lib/factories/internal/metadata/IMetadataIteratorProps.js +3 -0
- package/lib/factories/internal/metadata/IMetadataIteratorProps.js.map +1 -0
- package/lib/factories/internal/metadata/emplace_metadata_alias.d.ts +2 -4
- package/lib/factories/internal/metadata/emplace_metadata_alias.js +10 -18
- package/lib/factories/internal/metadata/emplace_metadata_alias.js.map +1 -1
- package/lib/factories/internal/metadata/emplace_metadata_array_type.d.ts +6 -3
- package/lib/factories/internal/metadata/emplace_metadata_array_type.js +10 -18
- package/lib/factories/internal/metadata/emplace_metadata_array_type.js.map +1 -1
- package/lib/factories/internal/metadata/emplace_metadata_object.d.ts +2 -4
- package/lib/factories/internal/metadata/emplace_metadata_object.js +171 -158
- package/lib/factories/internal/metadata/emplace_metadata_object.js.map +1 -1
- package/lib/factories/internal/metadata/emplace_metadata_tuple.d.ts +2 -3
- package/lib/factories/internal/metadata/emplace_metadata_tuple.js +26 -34
- package/lib/factories/internal/metadata/emplace_metadata_tuple.js.map +1 -1
- package/lib/factories/internal/metadata/explore_metadata.d.ts +6 -3
- package/lib/factories/internal/metadata/explore_metadata.js +24 -21
- package/lib/factories/internal/metadata/explore_metadata.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata.d.ts +2 -5
- package/lib/factories/internal/metadata/iterate_metadata.js +27 -36
- package/lib/factories/internal/metadata/iterate_metadata.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_alias.d.ts +2 -5
- package/lib/factories/internal/metadata/iterate_metadata_alias.js +11 -19
- package/lib/factories/internal/metadata/iterate_metadata_alias.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_array.d.ts +2 -5
- package/lib/factories/internal/metadata/iterate_metadata_array.js +59 -56
- package/lib/factories/internal/metadata/iterate_metadata_array.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_atomic.d.ts +4 -1
- package/lib/factories/internal/metadata/iterate_metadata_atomic.js +3 -3
- package/lib/factories/internal/metadata/iterate_metadata_atomic.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_coalesce.d.ts +4 -1
- package/lib/factories/internal/metadata/iterate_metadata_coalesce.js +5 -5
- package/lib/factories/internal/metadata/iterate_metadata_coalesce.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_collection.d.ts +4 -1
- package/lib/factories/internal/metadata/iterate_metadata_collection.js +119 -121
- package/lib/factories/internal/metadata/iterate_metadata_collection.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_comment_tags.d.ts +4 -1
- package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js +7 -7
- package/lib/factories/internal/metadata/iterate_metadata_comment_tags.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_constant.d.ts +2 -4
- package/lib/factories/internal/metadata/iterate_metadata_constant.js +39 -43
- package/lib/factories/internal/metadata/iterate_metadata_constant.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_escape.d.ts +2 -5
- package/lib/factories/internal/metadata/iterate_metadata_escape.js +15 -23
- package/lib/factories/internal/metadata/iterate_metadata_escape.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_function.d.ts +2 -5
- package/lib/factories/internal/metadata/iterate_metadata_function.js +43 -51
- package/lib/factories/internal/metadata/iterate_metadata_function.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_intersection.d.ts +2 -5
- package/lib/factories/internal/metadata/iterate_metadata_intersection.js +142 -152
- package/lib/factories/internal/metadata/iterate_metadata_intersection.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_map.d.ts +2 -5
- package/lib/factories/internal/metadata/iterate_metadata_map.js +15 -23
- package/lib/factories/internal/metadata/iterate_metadata_map.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_native.d.ts +2 -3
- package/lib/factories/internal/metadata/iterate_metadata_native.js +42 -36
- package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_object.d.ts +2 -5
- package/lib/factories/internal/metadata/iterate_metadata_object.js +12 -20
- package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_set.d.ts +2 -5
- package/lib/factories/internal/metadata/iterate_metadata_set.js +11 -19
- package/lib/factories/internal/metadata/iterate_metadata_set.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_sort.d.ts +4 -1
- package/lib/factories/internal/metadata/iterate_metadata_sort.js +112 -95
- package/lib/factories/internal/metadata/iterate_metadata_sort.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_template.d.ts +2 -5
- package/lib/factories/internal/metadata/iterate_metadata_template.js +17 -25
- package/lib/factories/internal/metadata/iterate_metadata_template.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_tuple.d.ts +2 -4
- package/lib/factories/internal/metadata/iterate_metadata_tuple.js +9 -17
- package/lib/factories/internal/metadata/iterate_metadata_tuple.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_union.d.ts +2 -5
- package/lib/factories/internal/metadata/iterate_metadata_union.js +7 -15
- package/lib/factories/internal/metadata/iterate_metadata_union.js.map +1 -1
- package/lib/programmers/CheckerProgrammer.js +11 -5
- package/lib/programmers/CheckerProgrammer.js.map +1 -1
- package/lib/programmers/RandomProgrammer.js +18 -12
- package/lib/programmers/RandomProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpFormDataProgrammer.js +12 -6
- package/lib/programmers/http/HttpFormDataProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpHeadersProgrammer.js +12 -6
- package/lib/programmers/http/HttpHeadersProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpParameterProgrammer.js +12 -6
- package/lib/programmers/http/HttpParameterProgrammer.js.map +1 -1
- package/lib/programmers/http/HttpQueryProgrammer.js +14 -6
- package/lib/programmers/http/HttpQueryProgrammer.js.map +1 -1
- package/lib/programmers/json/JsonStringifyProgrammer.js +6 -1
- package/lib/programmers/json/JsonStringifyProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscCloneProgrammer.js +18 -12
- package/lib/programmers/misc/MiscCloneProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscLiteralsProgrammer.js +21 -15
- package/lib/programmers/misc/MiscLiteralsProgrammer.js.map +1 -1
- package/lib/programmers/misc/MiscPruneProgrammer.js +11 -5
- package/lib/programmers/misc/MiscPruneProgrammer.js.map +1 -1
- package/lib/programmers/notations/NotationGeneralProgrammer.js +11 -5
- package/lib/programmers/notations/NotationGeneralProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js +7 -1
- package/lib/programmers/protobuf/ProtobufDecodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js +7 -1
- package/lib/programmers/protobuf/ProtobufEncodeProgrammer.js.map +1 -1
- package/lib/programmers/protobuf/ProtobufMessageProgrammer.js +7 -1
- package/lib/programmers/protobuf/ProtobufMessageProgrammer.js.map +1 -1
- package/lib/transformers/features/json/JsonApplicationTransformer.js +12 -6
- package/lib/transformers/features/json/JsonApplicationTransformer.js.map +1 -1
- package/lib/transformers/features/llm/LlmApplicationTransformer.js +13 -7
- package/lib/transformers/features/llm/LlmApplicationTransformer.js.map +1 -1
- package/lib/transformers/features/llm/LlmSchemaTransformer.js +12 -6
- package/lib/transformers/features/llm/LlmSchemaTransformer.js.map +1 -1
- package/lib/transformers/features/reflect/ReflectMetadataTransformer.js +12 -6
- package/lib/transformers/features/reflect/ReflectMetadataTransformer.js.map +1 -1
- package/lib/transformers/features/reflect/ReflectNameTransformer.js +11 -5
- package/lib/transformers/features/reflect/ReflectNameTransformer.js.map +1 -1
- package/package.json +1 -1
- package/src/factories/JsonMetadataFactory.ts +21 -14
- package/src/factories/MetadataFactory.ts +269 -184
- package/src/factories/ProtobufFactory.ts +23 -16
- package/src/factories/internal/metadata/IMetadataIteratorProps.ts +16 -0
- package/src/factories/internal/metadata/emplace_metadata_alias.ts +22 -31
- package/src/factories/internal/metadata/emplace_metadata_array_type.ts +26 -29
- package/src/factories/internal/metadata/emplace_metadata_object.ts +163 -144
- package/src/factories/internal/metadata/emplace_metadata_tuple.ts +39 -40
- package/src/factories/internal/metadata/explore_metadata.ts +22 -20
- package/src/factories/internal/metadata/iterate_metadata.ts +31 -80
- package/src/factories/internal/metadata/iterate_metadata_alias.ts +18 -24
- package/src/factories/internal/metadata/iterate_metadata_array.ts +51 -51
- package/src/factories/internal/metadata/iterate_metadata_atomic.ts +6 -6
- package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +8 -8
- package/src/factories/internal/metadata/iterate_metadata_collection.ts +128 -114
- package/src/factories/internal/metadata/iterate_metadata_comment_tags.ts +24 -22
- package/src/factories/internal/metadata/iterate_metadata_constant.ts +63 -63
- package/src/factories/internal/metadata/iterate_metadata_escape.ts +35 -40
- package/src/factories/internal/metadata/iterate_metadata_function.ts +70 -74
- package/src/factories/internal/metadata/iterate_metadata_intersection.ts +182 -182
- package/src/factories/internal/metadata/iterate_metadata_map.ts +37 -36
- package/src/factories/internal/metadata/iterate_metadata_native.ts +56 -43
- package/src/factories/internal/metadata/iterate_metadata_object.ts +18 -24
- package/src/factories/internal/metadata/iterate_metadata_set.ts +24 -30
- package/src/factories/internal/metadata/iterate_metadata_sort.ts +71 -62
- package/src/factories/internal/metadata/iterate_metadata_template.ts +29 -31
- package/src/factories/internal/metadata/iterate_metadata_tuple.ts +16 -27
- package/src/factories/internal/metadata/iterate_metadata_union.ts +16 -24
- package/src/programmers/CheckerProgrammer.ts +11 -8
- package/src/programmers/RandomProgrammer.ts +18 -15
- package/src/programmers/http/HttpFormDataProgrammer.ts +12 -9
- package/src/programmers/http/HttpHeadersProgrammer.ts +12 -9
- package/src/programmers/http/HttpParameterProgrammer.ts +12 -9
- package/src/programmers/http/HttpQueryProgrammer.ts +13 -9
- package/src/programmers/json/JsonStringifyProgrammer.ts +6 -4
- package/src/programmers/misc/MiscCloneProgrammer.ts +18 -15
- package/src/programmers/misc/MiscLiteralsProgrammer.ts +20 -17
- package/src/programmers/misc/MiscPruneProgrammer.ts +11 -8
- package/src/programmers/notations/NotationGeneralProgrammer.ts +11 -8
- package/src/programmers/protobuf/ProtobufDecodeProgrammer.ts +7 -4
- package/src/programmers/protobuf/ProtobufEncodeProgrammer.ts +7 -4
- package/src/programmers/protobuf/ProtobufMessageProgrammer.ts +7 -4
- package/src/transformers/features/json/JsonApplicationTransformer.ts +12 -9
- package/src/transformers/features/llm/LlmApplicationTransformer.ts +13 -10
- package/src/transformers/features/llm/LlmSchemaTransformer.ts +12 -9
- package/src/transformers/features/reflect/ReflectMetadataTransformer.ts +12 -9
- package/src/transformers/features/reflect/ReflectNameTransformer.ts +11 -8
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
|
|
3
|
-
import { Metadata } from "../../../schemas/metadata/Metadata";
|
|
4
|
-
|
|
5
|
-
import { MetadataCollection } from "../../MetadataCollection";
|
|
6
|
-
import { MetadataFactory } from "../../MetadataFactory";
|
|
7
3
|
import { TypeFactory } from "../../TypeFactory";
|
|
4
|
+
import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
|
|
8
5
|
import { iterate_metadata_alias } from "./iterate_metadata_alias";
|
|
9
6
|
import { iterate_metadata_array } from "./iterate_metadata_array";
|
|
10
7
|
import { iterate_metadata_atomic } from "./iterate_metadata_atomic";
|
|
@@ -21,80 +18,34 @@ import { iterate_metadata_template } from "./iterate_metadata_template";
|
|
|
21
18
|
import { iterate_metadata_tuple } from "./iterate_metadata_tuple";
|
|
22
19
|
import { iterate_metadata_union } from "./iterate_metadata_union";
|
|
23
20
|
|
|
24
|
-
export const iterate_metadata =
|
|
25
|
-
(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
iterate_metadata_alias(checker)(options)(collection)(errors)(
|
|
42
|
-
meta,
|
|
43
|
-
type,
|
|
44
|
-
explore,
|
|
45
|
-
)) ||
|
|
46
|
-
iterate_metadata_intersection(checker)(options)(collection)(errors)(
|
|
47
|
-
meta,
|
|
48
|
-
type,
|
|
49
|
-
explore,
|
|
50
|
-
) ||
|
|
51
|
-
iterate_metadata_union(checker)(options)(collection)(errors)(
|
|
52
|
-
meta,
|
|
53
|
-
type,
|
|
54
|
-
explore,
|
|
55
|
-
) ||
|
|
56
|
-
iterate_metadata_escape(checker)(options)(collection)(errors)(
|
|
57
|
-
meta,
|
|
58
|
-
type,
|
|
59
|
-
explore,
|
|
60
|
-
)
|
|
61
|
-
)
|
|
62
|
-
return;
|
|
21
|
+
export const iterate_metadata = (props: IMetadataIteratorProps): void => {
|
|
22
|
+
if (props.type.isTypeParameter() === true) {
|
|
23
|
+
props.errors.push({
|
|
24
|
+
name: TypeFactory.getFullName(props.checker)(props.type),
|
|
25
|
+
explore: { ...props.explore },
|
|
26
|
+
messages: ["non-specified generic argument found."],
|
|
27
|
+
});
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
// CHECK SPECIAL CASES
|
|
31
|
+
else if (
|
|
32
|
+
(props.explore.aliased !== true && iterate_metadata_alias(props)) ||
|
|
33
|
+
iterate_metadata_intersection(props) ||
|
|
34
|
+
iterate_metadata_union(props) ||
|
|
35
|
+
iterate_metadata_escape(props)
|
|
36
|
+
)
|
|
37
|
+
return;
|
|
63
38
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
iterate_metadata_atomic(meta, type) ||
|
|
78
|
-
iterate_metadata_tuple(checker)(options)(collection)(errors)(
|
|
79
|
-
meta,
|
|
80
|
-
type as ts.TupleType,
|
|
81
|
-
explore,
|
|
82
|
-
) ||
|
|
83
|
-
iterate_metadata_array(checker)(options)(collection)(errors)(
|
|
84
|
-
meta,
|
|
85
|
-
type,
|
|
86
|
-
explore,
|
|
87
|
-
) ||
|
|
88
|
-
iterate_metadata_native(checker)(meta, type) ||
|
|
89
|
-
iterate_metadata_map(checker)(options)(collection)(errors)(
|
|
90
|
-
meta,
|
|
91
|
-
type,
|
|
92
|
-
explore,
|
|
93
|
-
) ||
|
|
94
|
-
iterate_metadata_set(checker)(options)(collection)(errors)(
|
|
95
|
-
meta,
|
|
96
|
-
type,
|
|
97
|
-
explore,
|
|
98
|
-
) ||
|
|
99
|
-
iterate_metadata_object(checker)(options)(collection)(errors)(meta, type);
|
|
100
|
-
};
|
|
39
|
+
// ITERATE CASES
|
|
40
|
+
iterate_metadata_coalesce(props) ||
|
|
41
|
+
iterate_metadata_function(props) ||
|
|
42
|
+
iterate_metadata_constant(props) ||
|
|
43
|
+
iterate_metadata_template(props) ||
|
|
44
|
+
iterate_metadata_atomic(props) ||
|
|
45
|
+
iterate_metadata_tuple(props as IMetadataIteratorProps<ts.TupleType>) ||
|
|
46
|
+
iterate_metadata_array(props) ||
|
|
47
|
+
iterate_metadata_native(props) ||
|
|
48
|
+
iterate_metadata_map(props) ||
|
|
49
|
+
iterate_metadata_set(props) ||
|
|
50
|
+
iterate_metadata_object(props);
|
|
51
|
+
};
|
|
@@ -1,34 +1,28 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
|
|
3
|
-
import { Metadata } from "../../../schemas/metadata/Metadata";
|
|
4
3
|
import { MetadataAlias } from "../../../schemas/metadata/MetadataAlias";
|
|
5
4
|
|
|
6
5
|
import { ArrayUtil } from "../../../utils/ArrayUtil";
|
|
7
6
|
|
|
8
|
-
import {
|
|
9
|
-
import { MetadataFactory } from "../../MetadataFactory";
|
|
7
|
+
import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
|
|
10
8
|
import { emplace_metadata_alias } from "./emplace_metadata_alias";
|
|
11
9
|
|
|
12
|
-
export const iterate_metadata_alias =
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
(
|
|
16
|
-
|
|
17
|
-
(
|
|
18
|
-
meta: Metadata,
|
|
19
|
-
type: ts.Type,
|
|
20
|
-
explore: MetadataFactory.IExplore,
|
|
21
|
-
): boolean => {
|
|
22
|
-
if (options.absorb !== false || type.aliasSymbol === undefined)
|
|
23
|
-
return false;
|
|
10
|
+
export const iterate_metadata_alias = (
|
|
11
|
+
props: IMetadataIteratorProps,
|
|
12
|
+
): boolean => {
|
|
13
|
+
if (props.options.absorb !== false || props.type.aliasSymbol === undefined)
|
|
14
|
+
return false;
|
|
24
15
|
|
|
25
|
-
|
|
26
|
-
|
|
16
|
+
const node: ts.Declaration | undefined =
|
|
17
|
+
props.type.aliasSymbol.declarations?.[0];
|
|
18
|
+
if (node === undefined) return false;
|
|
27
19
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
20
|
+
// CONSTRUCT DEFINITION
|
|
21
|
+
const alias: MetadataAlias = emplace_metadata_alias(props);
|
|
22
|
+
ArrayUtil.add(
|
|
23
|
+
props.metadata.aliases,
|
|
24
|
+
alias,
|
|
25
|
+
(elem) => elem.name === alias.name,
|
|
26
|
+
);
|
|
27
|
+
return true;
|
|
28
|
+
};
|
|
@@ -1,63 +1,63 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
|
|
3
|
-
import { Metadata } from "../../../schemas/metadata/Metadata";
|
|
4
3
|
import { MetadataArray } from "../../../schemas/metadata/MetadataArray";
|
|
5
4
|
import { MetadataArrayType } from "../../../schemas/metadata/MetadataArrayType";
|
|
6
5
|
|
|
7
6
|
import { ArrayUtil } from "../../../utils/ArrayUtil";
|
|
8
7
|
|
|
9
|
-
import {
|
|
10
|
-
import { MetadataFactory } from "../../MetadataFactory";
|
|
8
|
+
import { IMetadataIteratorProps } from "./IMetadataIteratorProps";
|
|
11
9
|
import { emplace_metadata_array_type } from "./emplace_metadata_array_type";
|
|
12
10
|
|
|
13
|
-
export const iterate_metadata_array =
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
? find_array_extended(checker)(new Map())(alias)
|
|
26
|
-
: alias;
|
|
27
|
-
if (array === null) return false;
|
|
11
|
+
export const iterate_metadata_array = (
|
|
12
|
+
props: IMetadataIteratorProps,
|
|
13
|
+
): boolean => {
|
|
14
|
+
const array: ts.Type | null =
|
|
15
|
+
props.checker.isArrayType(props.type) === false
|
|
16
|
+
? find_array_extended({
|
|
17
|
+
checker: props.checker,
|
|
18
|
+
memory: new Map(),
|
|
19
|
+
type: props.type,
|
|
20
|
+
})
|
|
21
|
+
: props.type;
|
|
22
|
+
if (array === null) return false;
|
|
28
23
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
)
|
|
40
|
-
|
|
41
|
-
|
|
24
|
+
const arrayType: MetadataArrayType = emplace_metadata_array_type({
|
|
25
|
+
...props,
|
|
26
|
+
array,
|
|
27
|
+
});
|
|
28
|
+
ArrayUtil.add(
|
|
29
|
+
props.metadata.arrays,
|
|
30
|
+
MetadataArray.create({
|
|
31
|
+
type: arrayType,
|
|
32
|
+
tags: [],
|
|
33
|
+
}),
|
|
34
|
+
(elem) => elem.type.name === arrayType.name,
|
|
35
|
+
);
|
|
36
|
+
return true;
|
|
37
|
+
};
|
|
42
38
|
|
|
43
|
-
const find_array_extended =
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
39
|
+
const find_array_extended = (props: {
|
|
40
|
+
checker: ts.TypeChecker;
|
|
41
|
+
memory: Map<ts.Type, ts.Type | null>;
|
|
42
|
+
type: ts.Type;
|
|
43
|
+
}): ts.Type | null => {
|
|
44
|
+
const cached = props.memory.get(props.type);
|
|
45
|
+
if (cached !== undefined) return null;
|
|
49
46
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
return
|
|
63
|
-
};
|
|
47
|
+
props.memory.set(props.type, null);
|
|
48
|
+
const res: ts.Type | null = (() => {
|
|
49
|
+
if (props.type.isClassOrInterface() === false) return null;
|
|
50
|
+
for (const t of props.type.resolvedBaseTypes ?? [])
|
|
51
|
+
if (props.checker.isArrayType(t)) return t;
|
|
52
|
+
else {
|
|
53
|
+
const res: ts.Type | null = find_array_extended({
|
|
54
|
+
...props,
|
|
55
|
+
type: t,
|
|
56
|
+
});
|
|
57
|
+
if (res !== null) return res;
|
|
58
|
+
}
|
|
59
|
+
return null;
|
|
60
|
+
})();
|
|
61
|
+
props.memory.set(props.type, res);
|
|
62
|
+
return res;
|
|
63
|
+
};
|
|
@@ -10,16 +10,16 @@ const same = (type: ts.Type | null) => {
|
|
|
10
10
|
return (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
export const iterate_metadata_atomic = (
|
|
14
|
-
|
|
15
|
-
type: ts.Type
|
|
16
|
-
): boolean => {
|
|
13
|
+
export const iterate_metadata_atomic = (props: {
|
|
14
|
+
metadata: Metadata;
|
|
15
|
+
type: ts.Type;
|
|
16
|
+
}): boolean => {
|
|
17
17
|
// PREPARE INTERNAL FUNCTIONS
|
|
18
|
-
const filter = same(type);
|
|
18
|
+
const filter = same(props.type);
|
|
19
19
|
const check = (info: IAtomicInfo) => {
|
|
20
20
|
if (filter(info.atomic) || filter(info.literal)) {
|
|
21
21
|
ArrayUtil.add(
|
|
22
|
-
|
|
22
|
+
props.metadata.atomics,
|
|
23
23
|
MetadataAtomic.create({ type: info.name, tags: [] }),
|
|
24
24
|
(x, y) => x.type === y.type,
|
|
25
25
|
);
|
|
@@ -4,16 +4,16 @@ import { Metadata } from "../../../schemas/metadata/Metadata";
|
|
|
4
4
|
|
|
5
5
|
import { Writable } from "../../../typings/Writable";
|
|
6
6
|
|
|
7
|
-
export const iterate_metadata_coalesce = (
|
|
8
|
-
|
|
9
|
-
type: ts.Type
|
|
10
|
-
): boolean => {
|
|
11
|
-
const filter = (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0;
|
|
7
|
+
export const iterate_metadata_coalesce = (props: {
|
|
8
|
+
metadata: Metadata;
|
|
9
|
+
type: ts.Type;
|
|
10
|
+
}): boolean => {
|
|
11
|
+
const filter = (flag: ts.TypeFlags) => (props.type.getFlags() & flag) !== 0;
|
|
12
12
|
if (filter(ts.TypeFlags.Unknown) || filter(ts.TypeFlags.Any)) {
|
|
13
|
-
Writable(
|
|
13
|
+
Writable(props.metadata).any = true;
|
|
14
14
|
return true;
|
|
15
15
|
} else if (filter(ts.TypeFlags.Null)) {
|
|
16
|
-
Writable(
|
|
16
|
+
Writable(props.metadata).nullable = true;
|
|
17
17
|
return true;
|
|
18
18
|
} else if (
|
|
19
19
|
filter(ts.TypeFlags.Undefined) ||
|
|
@@ -21,7 +21,7 @@ export const iterate_metadata_coalesce = (
|
|
|
21
21
|
filter(ts.TypeFlags.Void) ||
|
|
22
22
|
filter(ts.TypeFlags.VoidLike)
|
|
23
23
|
) {
|
|
24
|
-
Writable(
|
|
24
|
+
Writable(props.metadata).required = false;
|
|
25
25
|
return true;
|
|
26
26
|
}
|
|
27
27
|
return false;
|
|
@@ -7,125 +7,139 @@ import { MetadataCollection } from "../../MetadataCollection";
|
|
|
7
7
|
import { MetadataFactory } from "../../MetadataFactory";
|
|
8
8
|
import { iterate_metadata_comment_tags } from "./iterate_metadata_comment_tags";
|
|
9
9
|
|
|
10
|
-
export const iterate_metadata_collection =
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
export const iterate_metadata_collection = (props: {
|
|
11
|
+
errors: MetadataFactory.IError[];
|
|
12
|
+
collection: MetadataCollection;
|
|
13
|
+
}): void => {
|
|
14
|
+
for (const array of props.collection.arrays())
|
|
15
|
+
if (array.recursive === null)
|
|
16
|
+
props.collection.setArrayRecursive(
|
|
17
|
+
array,
|
|
18
|
+
isArrayRecursive({
|
|
19
|
+
visited: new Set(),
|
|
16
20
|
array,
|
|
17
|
-
|
|
18
|
-
)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
obj.properties.some((p) => isObjectRecursive(visited)(obj)(p.value)),
|
|
34
|
-
);
|
|
35
|
-
}
|
|
21
|
+
metadata: array.value,
|
|
22
|
+
}),
|
|
23
|
+
);
|
|
24
|
+
for (const tuple of props.collection.tuples())
|
|
25
|
+
if (tuple.recursive === null) {
|
|
26
|
+
const visited: Set<Metadata> = new Set();
|
|
27
|
+
props.collection.setTupleRecursive(
|
|
28
|
+
tuple,
|
|
29
|
+
tuple.elements.some((e) =>
|
|
30
|
+
isTupleRecursive({
|
|
31
|
+
visited,
|
|
32
|
+
tuple,
|
|
33
|
+
metadata: e,
|
|
34
|
+
}),
|
|
35
|
+
),
|
|
36
|
+
);
|
|
36
37
|
}
|
|
37
|
-
|
|
38
|
+
for (const object of props.collection.objects()) {
|
|
39
|
+
iterate_metadata_comment_tags({
|
|
40
|
+
errors: props.errors,
|
|
41
|
+
object,
|
|
42
|
+
});
|
|
43
|
+
if (object.recursive === null) {
|
|
44
|
+
const visited: Set<Metadata> = new Set();
|
|
45
|
+
props.collection.setObjectRecursive(
|
|
46
|
+
object,
|
|
47
|
+
object.properties.some((p) =>
|
|
48
|
+
isObjectRecursive({
|
|
49
|
+
visited,
|
|
50
|
+
object,
|
|
51
|
+
metadata: p.value,
|
|
52
|
+
}),
|
|
53
|
+
),
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
};
|
|
38
58
|
|
|
39
|
-
const isArrayRecursive =
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
59
|
+
const isArrayRecursive = (props: {
|
|
60
|
+
visited: Set<Metadata>;
|
|
61
|
+
array: MetadataArrayType;
|
|
62
|
+
metadata: Metadata;
|
|
63
|
+
}): boolean => {
|
|
64
|
+
if (props.visited.has(props.metadata)) return false;
|
|
65
|
+
props.visited.add(props.metadata);
|
|
45
66
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
) ||
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
};
|
|
67
|
+
const next = (metadata: Metadata): boolean =>
|
|
68
|
+
isArrayRecursive({
|
|
69
|
+
...props,
|
|
70
|
+
metadata,
|
|
71
|
+
});
|
|
72
|
+
return (
|
|
73
|
+
props.metadata.arrays.some(
|
|
74
|
+
(a) => a.type === props.array || next(a.type.value),
|
|
75
|
+
) ||
|
|
76
|
+
props.metadata.aliases.some((alias) => next(alias.value)) ||
|
|
77
|
+
props.metadata.tuples.some(
|
|
78
|
+
(t) => !t.type.recursive && t.type.elements.some(next),
|
|
79
|
+
) ||
|
|
80
|
+
props.metadata.maps.some((m) => next(m.value)) ||
|
|
81
|
+
props.metadata.sets.some(next) ||
|
|
82
|
+
(props.metadata.escaped !== null && next(props.metadata.escaped.returns)) ||
|
|
83
|
+
(props.metadata.rest !== null && next(props.metadata.rest))
|
|
84
|
+
);
|
|
85
|
+
};
|
|
66
86
|
|
|
67
|
-
const isTupleRecursive =
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
87
|
+
const isTupleRecursive = (props: {
|
|
88
|
+
visited: Set<Metadata>;
|
|
89
|
+
tuple: MetadataTupleType;
|
|
90
|
+
metadata: Metadata;
|
|
91
|
+
}): boolean => {
|
|
92
|
+
if (props.visited.has(props.metadata)) return false;
|
|
93
|
+
props.visited.add(props.metadata);
|
|
73
94
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
};
|
|
95
|
+
const next = (metadata: Metadata): boolean =>
|
|
96
|
+
isTupleRecursive({
|
|
97
|
+
...props,
|
|
98
|
+
metadata,
|
|
99
|
+
});
|
|
100
|
+
return (
|
|
101
|
+
props.metadata.tuples.some(
|
|
102
|
+
(t) => t.type === props.tuple || t.type.elements.some(next),
|
|
103
|
+
) ||
|
|
104
|
+
props.metadata.arrays.some(
|
|
105
|
+
(a) => !a.type.recursive && next(a.type.value),
|
|
106
|
+
) ||
|
|
107
|
+
props.metadata.maps.some((m) => next(m.value)) ||
|
|
108
|
+
props.metadata.sets.some((s) => next(s)) ||
|
|
109
|
+
props.metadata.aliases.some((alias) => next(alias.value)) ||
|
|
110
|
+
(props.metadata.escaped !== null && next(props.metadata.escaped.returns)) ||
|
|
111
|
+
(props.metadata.rest !== null && next(props.metadata.rest))
|
|
112
|
+
);
|
|
113
|
+
};
|
|
94
114
|
|
|
95
|
-
const isObjectRecursive =
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
115
|
+
const isObjectRecursive = (props: {
|
|
116
|
+
visited: Set<Metadata>;
|
|
117
|
+
object: MetadataObject;
|
|
118
|
+
metadata: Metadata;
|
|
119
|
+
}): boolean => {
|
|
120
|
+
if (props.visited.has(props.metadata)) return false;
|
|
121
|
+
props.visited.add(props.metadata);
|
|
100
122
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
) ||
|
|
125
|
-
meta.maps.some((map) => isObjectRecursive(visited)(obj)(map.value)) ||
|
|
126
|
-
meta.sets.some((value) => isObjectRecursive(visited)(obj)(value)) ||
|
|
127
|
-
(meta.escaped !== null &&
|
|
128
|
-
isObjectRecursive(visited)(obj)(meta.escaped.returns)) ||
|
|
129
|
-
(meta.rest !== null && isObjectRecursive(visited)(obj)(meta.rest))
|
|
130
|
-
);
|
|
131
|
-
};
|
|
123
|
+
const next = (metadata: Metadata): boolean =>
|
|
124
|
+
isObjectRecursive({
|
|
125
|
+
...props,
|
|
126
|
+
metadata,
|
|
127
|
+
});
|
|
128
|
+
return (
|
|
129
|
+
props.metadata.objects.some(
|
|
130
|
+
(o) =>
|
|
131
|
+
props.object === o || o.properties.some((prop) => next(prop.value)),
|
|
132
|
+
) ||
|
|
133
|
+
props.metadata.aliases.some((alias) => next(alias.value)) ||
|
|
134
|
+
props.metadata.arrays.some(
|
|
135
|
+
(array) => !array.type.recursive && next(array.type.value),
|
|
136
|
+
) ||
|
|
137
|
+
props.metadata.tuples.some(
|
|
138
|
+
(tuple) => !tuple.type.recursive && tuple.type.elements.some(next),
|
|
139
|
+
) ||
|
|
140
|
+
props.metadata.maps.some((map) => next(map.value)) ||
|
|
141
|
+
props.metadata.sets.some(next) ||
|
|
142
|
+
(props.metadata.escaped !== null && next(props.metadata.escaped.returns)) ||
|
|
143
|
+
(props.metadata.rest !== null && next(props.metadata.rest))
|
|
144
|
+
);
|
|
145
|
+
};
|
|
@@ -3,26 +3,28 @@ import { MetadataObject } from "../../../schemas/metadata/MetadataObject";
|
|
|
3
3
|
import { MetadataCommentTagFactory } from "../../MetadataCommentTagFactory";
|
|
4
4
|
import { MetadataFactory } from "../../MetadataFactory";
|
|
5
5
|
|
|
6
|
-
export const iterate_metadata_comment_tags =
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
export const iterate_metadata_comment_tags = (props: {
|
|
7
|
+
errors: MetadataFactory.IError[];
|
|
8
|
+
object: MetadataObject;
|
|
9
|
+
}) => {
|
|
10
|
+
if (props.object.tagged_ === true) return;
|
|
11
|
+
props.object.tagged_ = true;
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
13
|
+
for (const property of props.object.properties) {
|
|
14
|
+
MetadataCommentTagFactory.analyze(props.errors)(property.value)(
|
|
15
|
+
property.jsDocTags,
|
|
16
|
+
{
|
|
17
|
+
top: false,
|
|
18
|
+
object: props.object,
|
|
19
|
+
property: property.key.isSoleLiteral()
|
|
20
|
+
? property.key.getSoleLiteral()!
|
|
21
|
+
: {},
|
|
22
|
+
parameter: null,
|
|
23
|
+
nested: null,
|
|
24
|
+
aliased: false,
|
|
25
|
+
escaped: false,
|
|
26
|
+
output: false,
|
|
27
|
+
},
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
};
|