typia 4.1.8-dev.20230726 → 4.1.9-dev.20230730

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.
Files changed (163) hide show
  1. package/lib/factories/CommentFactory.js +83 -9
  2. package/lib/factories/CommentFactory.js.map +1 -1
  3. package/lib/factories/MetadataCollection.js.map +1 -1
  4. package/package.json +2 -3
  5. package/src/factories/CommentFactory.ts +44 -7
  6. package/src/factories/MetadataCollection.ts +264 -255
  7. package/src/factories/MetadataFactory.ts +30 -30
  8. package/src/factories/MetadataTagFactory.ts +355 -355
  9. package/src/factories/internal/metadata/MetadataHelper.ts +12 -12
  10. package/src/factories/internal/metadata/emend_metadata_atomics.ts +33 -33
  11. package/src/factories/internal/metadata/emplace_metadata_alias.ts +40 -40
  12. package/src/factories/internal/metadata/emplace_metadata_array.ts +34 -34
  13. package/src/factories/internal/metadata/emplace_metadata_object.ts +136 -136
  14. package/src/factories/internal/metadata/emplace_metadata_tuple.ts +50 -50
  15. package/src/factories/internal/metadata/explore_metadata.ts +40 -40
  16. package/src/factories/internal/metadata/iterate_metadata.ts +81 -81
  17. package/src/factories/internal/metadata/iterate_metadata_alias.ts +30 -30
  18. package/src/factories/internal/metadata/iterate_metadata_array.ts +24 -24
  19. package/src/factories/internal/metadata/iterate_metadata_atomic.ts +59 -59
  20. package/src/factories/internal/metadata/iterate_metadata_coalesce.ts +33 -33
  21. package/src/factories/internal/metadata/iterate_metadata_collection.ts +133 -133
  22. package/src/factories/internal/metadata/iterate_metadata_constant.ts +58 -58
  23. package/src/factories/internal/metadata/iterate_metadata_intersection.ts +83 -83
  24. package/src/factories/internal/metadata/iterate_metadata_map.ts +41 -41
  25. package/src/factories/internal/metadata/iterate_metadata_native.ts +219 -219
  26. package/src/factories/internal/metadata/iterate_metadata_object.ts +43 -43
  27. package/src/factories/internal/metadata/iterate_metadata_resolve.ts +49 -49
  28. package/src/factories/internal/metadata/iterate_metadata_set.ts +33 -33
  29. package/src/factories/internal/metadata/iterate_metadata_sort.ts +69 -69
  30. package/src/factories/internal/metadata/iterate_metadata_tag.ts +31 -31
  31. package/src/factories/internal/metadata/iterate_metadata_template.ts +38 -38
  32. package/src/factories/internal/metadata/iterate_metadata_tuple.ts +24 -24
  33. package/src/factories/internal/metadata/iterate_metadata_union.ts +24 -24
  34. package/src/functional/$number.ts +12 -12
  35. package/src/metadata/ICommentTag.ts +4 -4
  36. package/src/metadata/IJsDocTagInfo.ts +10 -10
  37. package/src/metadata/IMetadata.ts +28 -28
  38. package/src/metadata/IMetadataAlias.ts +14 -14
  39. package/src/metadata/IMetadataApplication.ts +7 -7
  40. package/src/metadata/IMetadataArray.ts +10 -10
  41. package/src/metadata/IMetadataCollection.ts +11 -11
  42. package/src/metadata/IMetadataConstant.ts +16 -16
  43. package/src/metadata/IMetadataDictionary.ts +14 -14
  44. package/src/metadata/IMetadataEntry.ts +6 -6
  45. package/src/metadata/IMetadataObject.ts +18 -18
  46. package/src/metadata/IMetadataProperty.ts +11 -11
  47. package/src/metadata/IMetadataResolved.ts +6 -6
  48. package/src/metadata/IMetadataTag.ts +105 -105
  49. package/src/metadata/IMetadataTuple.ts +10 -10
  50. package/src/metadata/Metadata.ts +605 -605
  51. package/src/metadata/MetadataAlias.ts +66 -66
  52. package/src/metadata/MetadataArray.ts +55 -55
  53. package/src/metadata/MetadataConstant.ts +3 -3
  54. package/src/metadata/MetadataObject.ts +129 -129
  55. package/src/metadata/MetadataProperty.ts +64 -64
  56. package/src/metadata/MetadataResolved.ts +51 -51
  57. package/src/metadata/MetadataTuple.ts +53 -53
  58. package/src/module.ts +2038 -2038
  59. package/src/programmers/ApplicationProgrammer.ts +47 -47
  60. package/src/programmers/AssertCloneProgrammer.ts +71 -71
  61. package/src/programmers/AssertParseProgrammer.ts +66 -66
  62. package/src/programmers/AssertPruneProgrammer.ts +68 -68
  63. package/src/programmers/AssertStringifyProgrammer.ts +66 -66
  64. package/src/programmers/CheckerProgrammer.ts +1182 -1182
  65. package/src/programmers/CloneProgrammer.ts +587 -587
  66. package/src/programmers/FeatureProgrammer.ts +495 -495
  67. package/src/programmers/IsCloneProgrammer.ts +78 -78
  68. package/src/programmers/IsParseProgrammer.ts +72 -72
  69. package/src/programmers/IsProgrammer.ts +239 -239
  70. package/src/programmers/IsPruneProgrammer.ts +73 -73
  71. package/src/programmers/IsStringifyProgrammer.ts +76 -76
  72. package/src/programmers/LiteralsProgrammer.ts +63 -63
  73. package/src/programmers/PruneProgrammer.ts +542 -542
  74. package/src/programmers/RandomProgrammer.ts +581 -581
  75. package/src/programmers/StringifyProgrammer.ts +978 -978
  76. package/src/programmers/ValidateCloneProgrammer.ts +85 -85
  77. package/src/programmers/ValidateParseProgrammer.ts +70 -70
  78. package/src/programmers/ValidatePruneProgrammer.ts +78 -78
  79. package/src/programmers/ValidateStringifyProgrammer.ts +84 -84
  80. package/src/programmers/helpers/AtomicPredicator.ts +31 -31
  81. package/src/programmers/helpers/IExpressionEntry.ts +12 -12
  82. package/src/programmers/helpers/PruneJoiner.ts +143 -143
  83. package/src/programmers/helpers/RandomJoiner.ts +173 -173
  84. package/src/programmers/helpers/RandomRanger.ts +216 -216
  85. package/src/programmers/helpers/StringifyPredicator.ts +13 -13
  86. package/src/programmers/helpers/UnionExplorer.ts +301 -301
  87. package/src/programmers/helpers/UnionPredicator.ts +81 -81
  88. package/src/programmers/internal/application_alias.ts +66 -66
  89. package/src/programmers/internal/application_array.ts +30 -30
  90. package/src/programmers/internal/application_constant.ts +26 -26
  91. package/src/programmers/internal/application_default.ts +17 -17
  92. package/src/programmers/internal/application_default_string.ts +33 -33
  93. package/src/programmers/internal/application_native.ts +39 -39
  94. package/src/programmers/internal/application_number.ts +74 -74
  95. package/src/programmers/internal/application_object.ts +162 -162
  96. package/src/programmers/internal/application_resolved.ts +55 -55
  97. package/src/programmers/internal/application_schema.ts +157 -157
  98. package/src/programmers/internal/application_string.ts +44 -44
  99. package/src/programmers/internal/application_templates.ts +25 -25
  100. package/src/programmers/internal/application_tuple.ts +57 -57
  101. package/src/programmers/internal/check_array.ts +30 -30
  102. package/src/programmers/internal/check_array_length.ts +35 -35
  103. package/src/programmers/internal/check_bigint.ts +82 -82
  104. package/src/programmers/internal/check_custom.ts +31 -31
  105. package/src/programmers/internal/check_number.ts +177 -177
  106. package/src/programmers/internal/check_string.ts +25 -25
  107. package/src/programmers/internal/check_string_tags.ts +67 -67
  108. package/src/programmers/internal/check_template.ts +56 -56
  109. package/src/programmers/internal/check_union_array_like.ts +329 -329
  110. package/src/programmers/internal/decode_union_object.ts +73 -73
  111. package/src/programmers/internal/feature_object_entries.ts +63 -63
  112. package/src/programmers/internal/get_comment_tags.ts +23 -23
  113. package/src/programmers/internal/metadata_to_pattern.ts +34 -34
  114. package/src/programmers/internal/prune_object_properties.ts +60 -60
  115. package/src/programmers/internal/random_custom.ts +29 -29
  116. package/src/programmers/internal/stringify_regular_properties.ts +83 -83
  117. package/src/programmers/internal/template_to_pattern.ts +15 -15
  118. package/src/programmers/internal/wrap_metadata_rest_tuple.ts +16 -16
  119. package/src/schemas/IJsonApplication.ts +8 -8
  120. package/src/schemas/IJsonComponents.ts +33 -33
  121. package/src/schemas/IJsonSchema.ts +133 -133
  122. package/src/transformers/CallExpressionTransformer.ts +179 -179
  123. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +104 -104
  124. package/src/transformers/features/miscellaneous/AssertCloneTransformer.ts +9 -9
  125. package/src/transformers/features/miscellaneous/AssertPruneTransformer.ts +9 -9
  126. package/src/transformers/features/miscellaneous/CloneTransformer.ts +9 -9
  127. package/src/transformers/features/miscellaneous/CreateAssertCloneTransformer.ts +9 -9
  128. package/src/transformers/features/miscellaneous/CreateAssertPruneTransformer.ts +9 -9
  129. package/src/transformers/features/miscellaneous/CreateCloneTransformer.ts +9 -9
  130. package/src/transformers/features/miscellaneous/CreateIsCloneTransformer.ts +9 -9
  131. package/src/transformers/features/miscellaneous/CreateIsPruneTransformer.ts +9 -9
  132. package/src/transformers/features/miscellaneous/CreatePruneTransformer.ts +9 -9
  133. package/src/transformers/features/miscellaneous/CreateRandomTransformer.ts +39 -39
  134. package/src/transformers/features/miscellaneous/CreateValidateCloneTransformer.ts +9 -9
  135. package/src/transformers/features/miscellaneous/CreateValidatePruneTransformer.ts +9 -9
  136. package/src/transformers/features/miscellaneous/IsCloneTransformer.ts +9 -9
  137. package/src/transformers/features/miscellaneous/IsPruneTransformer.ts +9 -9
  138. package/src/transformers/features/miscellaneous/LiteralsTransformer.ts +28 -28
  139. package/src/transformers/features/miscellaneous/MetadataTransformer.ts +53 -53
  140. package/src/transformers/features/miscellaneous/PruneTransformer.ts +9 -9
  141. package/src/transformers/features/miscellaneous/RandomTransformer.ts +42 -42
  142. package/src/transformers/features/miscellaneous/ValidateCloneTransformer.ts +9 -9
  143. package/src/transformers/features/miscellaneous/ValidatePruneTransformer.ts +9 -9
  144. package/src/transformers/features/parsers/AssertParseTransformer.ts +9 -9
  145. package/src/transformers/features/parsers/CreateAssertParseTransformer.ts +9 -9
  146. package/src/transformers/features/parsers/CreateIsParseTransformer.ts +9 -9
  147. package/src/transformers/features/parsers/CreateValidateParseTransformer.ts +9 -9
  148. package/src/transformers/features/parsers/IsParseTransformer.ts +9 -9
  149. package/src/transformers/features/parsers/ValidateParseTransformer.ts +9 -9
  150. package/src/transformers/features/stringifiers/AssertStringifyTransformer.ts +10 -10
  151. package/src/transformers/features/stringifiers/CreateAssertStringifyTransformer.ts +12 -12
  152. package/src/transformers/features/stringifiers/CreateIsStringifyTransformer.ts +9 -9
  153. package/src/transformers/features/stringifiers/CreateStringifyTransformer.ts +9 -9
  154. package/src/transformers/features/stringifiers/CreateValidateStringifyProgrammer.ts +12 -12
  155. package/src/transformers/features/stringifiers/IsStringifyTransformer.ts +9 -9
  156. package/src/transformers/features/stringifiers/StringifyTransformer.ts +9 -9
  157. package/src/transformers/features/stringifiers/ValidateStringifyTransformer.ts +10 -10
  158. package/src/transformers/features/validators/AssertTransformer.ts +11 -11
  159. package/src/transformers/features/validators/CreateAssertTransformer.ts +13 -13
  160. package/src/transformers/features/validators/CreateIsTransformer.ts +11 -11
  161. package/src/transformers/features/validators/CreateValidateTransformer.ts +13 -13
  162. package/src/transformers/features/validators/IsTransformer.ts +11 -11
  163. package/src/transformers/features/validators/ValidateTransformer.ts +11 -11
@@ -1,83 +1,83 @@
1
- import ts from "typescript";
2
-
3
- import { TemplateFactory } from "../../factories/TemplateFactory";
4
- import { ValueFactory } from "../../factories/ValueFactory";
5
-
6
- import { Metadata } from "../../metadata/Metadata";
7
-
8
- import { IExpressionEntry } from "../helpers/IExpressionEntry";
9
-
10
- /**
11
- * @internal
12
- */
13
- export const stringify_regular_properties = (
14
- regular: IExpressionEntry<ts.Expression>[],
15
- dynamic: IExpressionEntry<ts.Expression>[],
16
- ): ts.Expression[] => {
17
- const output: ts.Expression[] = [];
18
-
19
- regular.sort((x, y) => sequence(x.meta) - sequence(y.meta));
20
- regular.forEach((entry, index) => {
21
- // BASE ELEMENTS
22
- const key: string = entry.key.getSoleLiteral()!;
23
- const base: ts.Expression[] = [
24
- ts.factory.createStringLiteral(`${JSON.stringify(key)}:`),
25
- entry.expression,
26
- ];
27
- if (index !== regular.length - 1 || dynamic.length !== 0)
28
- base.push(ts.factory.createStringLiteral(`,`));
29
-
30
- const empty: boolean =
31
- (entry.meta.isRequired() === false &&
32
- entry.meta.nullable === false &&
33
- entry.meta.size() === 0) ||
34
- (entry.meta.functional &&
35
- entry.meta.nullable === false &&
36
- entry.meta.size() === 1);
37
-
38
- if (empty === true) return;
39
- else if (
40
- entry.meta.isRequired() === false ||
41
- entry.meta.functional === true ||
42
- entry.meta.any === true
43
- )
44
- output.push(
45
- ts.factory.createConditionalExpression(
46
- (() => {
47
- const conditions: ts.BinaryExpression[] = [];
48
- if (entry.meta.isRequired() === false || entry.meta.any)
49
- conditions.push(
50
- ts.factory.createStrictEquality(
51
- ts.factory.createIdentifier("undefined"),
52
- entry.input,
53
- ),
54
- );
55
- if (entry.meta.functional || entry.meta.any)
56
- conditions.push(
57
- ts.factory.createStrictEquality(
58
- ts.factory.createStringLiteral("function"),
59
- ValueFactory.TYPEOF(entry.input),
60
- ),
61
- );
62
- return conditions.length === 1
63
- ? conditions[0]!
64
- : conditions.reduce((x, y) =>
65
- ts.factory.createLogicalOr(x, y),
66
- );
67
- })(),
68
- undefined,
69
- ts.factory.createStringLiteral(""),
70
- undefined,
71
- TemplateFactory.generate(base),
72
- ),
73
- );
74
- else output.push(...base);
75
- });
76
- return output;
77
- };
78
-
79
- /**
80
- * @internal
81
- */
82
- const sequence = (meta: Metadata): number =>
83
- meta.any || !meta.isRequired() || meta.functional ? 0 : 1;
1
+ import ts from "typescript";
2
+
3
+ import { TemplateFactory } from "../../factories/TemplateFactory";
4
+ import { ValueFactory } from "../../factories/ValueFactory";
5
+
6
+ import { Metadata } from "../../metadata/Metadata";
7
+
8
+ import { IExpressionEntry } from "../helpers/IExpressionEntry";
9
+
10
+ /**
11
+ * @internal
12
+ */
13
+ export const stringify_regular_properties = (
14
+ regular: IExpressionEntry<ts.Expression>[],
15
+ dynamic: IExpressionEntry<ts.Expression>[],
16
+ ): ts.Expression[] => {
17
+ const output: ts.Expression[] = [];
18
+
19
+ regular.sort((x, y) => sequence(x.meta) - sequence(y.meta));
20
+ regular.forEach((entry, index) => {
21
+ // BASE ELEMENTS
22
+ const key: string = entry.key.getSoleLiteral()!;
23
+ const base: ts.Expression[] = [
24
+ ts.factory.createStringLiteral(`${JSON.stringify(key)}:`),
25
+ entry.expression,
26
+ ];
27
+ if (index !== regular.length - 1 || dynamic.length !== 0)
28
+ base.push(ts.factory.createStringLiteral(`,`));
29
+
30
+ const empty: boolean =
31
+ (entry.meta.isRequired() === false &&
32
+ entry.meta.nullable === false &&
33
+ entry.meta.size() === 0) ||
34
+ (entry.meta.functional &&
35
+ entry.meta.nullable === false &&
36
+ entry.meta.size() === 1);
37
+
38
+ if (empty === true) return;
39
+ else if (
40
+ entry.meta.isRequired() === false ||
41
+ entry.meta.functional === true ||
42
+ entry.meta.any === true
43
+ )
44
+ output.push(
45
+ ts.factory.createConditionalExpression(
46
+ (() => {
47
+ const conditions: ts.BinaryExpression[] = [];
48
+ if (entry.meta.isRequired() === false || entry.meta.any)
49
+ conditions.push(
50
+ ts.factory.createStrictEquality(
51
+ ts.factory.createIdentifier("undefined"),
52
+ entry.input,
53
+ ),
54
+ );
55
+ if (entry.meta.functional || entry.meta.any)
56
+ conditions.push(
57
+ ts.factory.createStrictEquality(
58
+ ts.factory.createStringLiteral("function"),
59
+ ValueFactory.TYPEOF(entry.input),
60
+ ),
61
+ );
62
+ return conditions.length === 1
63
+ ? conditions[0]!
64
+ : conditions.reduce((x, y) =>
65
+ ts.factory.createLogicalOr(x, y),
66
+ );
67
+ })(),
68
+ undefined,
69
+ ts.factory.createStringLiteral(""),
70
+ undefined,
71
+ TemplateFactory.generate(base),
72
+ ),
73
+ );
74
+ else output.push(...base);
75
+ });
76
+ return output;
77
+ };
78
+
79
+ /**
80
+ * @internal
81
+ */
82
+ const sequence = (meta: Metadata): number =>
83
+ meta.any || !meta.isRequired() || meta.functional ? 0 : 1;
@@ -1,15 +1,15 @@
1
- import { Metadata } from "../../metadata/Metadata";
2
-
3
- import { PatternUtil } from "../../utils/PatternUtil";
4
-
5
- import { metadata_to_pattern } from "./metadata_to_pattern";
6
-
7
- /**
8
- * @internal
9
- */
10
- export const template_to_pattern = (top: boolean) => (template: Metadata[]) => {
11
- const pattern: string = template
12
- .map((meta) => metadata_to_pattern(false)(meta))
13
- .join("");
14
- return top ? PatternUtil.fix(pattern) : pattern;
15
- };
1
+ import { Metadata } from "../../metadata/Metadata";
2
+
3
+ import { PatternUtil } from "../../utils/PatternUtil";
4
+
5
+ import { metadata_to_pattern } from "./metadata_to_pattern";
6
+
7
+ /**
8
+ * @internal
9
+ */
10
+ export const template_to_pattern = (top: boolean) => (template: Metadata[]) => {
11
+ const pattern: string = template
12
+ .map((meta) => metadata_to_pattern(false)(meta))
13
+ .join("");
14
+ return top ? PatternUtil.fix(pattern) : pattern;
15
+ };
@@ -1,16 +1,16 @@
1
- import { Metadata } from "../../metadata/Metadata";
2
- import { MetadataArray } from "../../metadata/MetadataArray";
3
-
4
- export const wrap_metadata_rest_tuple = (rest: Metadata) => {
5
- const wrapper: Metadata = Metadata.initialize();
6
- wrapper.arrays.push(
7
- MetadataArray.create({
8
- name: `...${rest.getName()}`,
9
- value: rest,
10
- nullables: [],
11
- recursive: false,
12
- index: null,
13
- }),
14
- );
15
- return wrapper;
16
- };
1
+ import { Metadata } from "../../metadata/Metadata";
2
+ import { MetadataArray } from "../../metadata/MetadataArray";
3
+
4
+ export const wrap_metadata_rest_tuple = (rest: Metadata) => {
5
+ const wrapper: Metadata = Metadata.initialize();
6
+ wrapper.arrays.push(
7
+ MetadataArray.create({
8
+ name: `...${rest.getName()}`,
9
+ value: rest,
10
+ nullables: [],
11
+ recursive: false,
12
+ index: null,
13
+ }),
14
+ );
15
+ return wrapper;
16
+ };
@@ -1,8 +1,8 @@
1
- import { IJsonComponents } from "./IJsonComponents";
2
- import { IJsonSchema } from "./IJsonSchema";
3
-
4
- export interface IJsonApplication {
5
- schemas: IJsonSchema[];
6
- components: IJsonComponents;
7
- purpose: "swagger" | "ajv";
8
- }
1
+ import { IJsonComponents } from "./IJsonComponents";
2
+ import { IJsonSchema } from "./IJsonSchema";
3
+
4
+ export interface IJsonApplication {
5
+ schemas: IJsonSchema[];
6
+ components: IJsonComponents;
7
+ purpose: "swagger" | "ajv";
8
+ }
@@ -1,33 +1,33 @@
1
- import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
2
-
3
- import { IJsonSchema } from "./IJsonSchema";
4
-
5
- export interface IJsonComponents {
6
- schemas?: Record<string, IJsonComponents.IObject | IJsonComponents.IAlias>;
7
- }
8
- export namespace IJsonComponents {
9
- export interface IObject {
10
- $id?: string;
11
- type: "object";
12
-
13
- /**
14
- * Only when swagger mode.
15
- */
16
- nullable?: boolean;
17
-
18
- properties: Record<string, IJsonSchema>;
19
- patternProperties?: Record<string, IJsonSchema>;
20
- additionalProperties?: IJsonSchema;
21
-
22
- required?: string[];
23
- description?: string;
24
- "x-typia-jsDocTags"?: IJsDocTagInfo[];
25
- "x-typia-patternProperties"?: Record<string, IJsonSchema>;
26
- "x-typia-additionalProperties"?: IJsonSchema;
27
- }
28
-
29
- export type IAlias = IJsonSchema & {
30
- $id?: string;
31
- $recursiveAnchor?: boolean;
32
- };
33
- }
1
+ import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
2
+
3
+ import { IJsonSchema } from "./IJsonSchema";
4
+
5
+ export interface IJsonComponents {
6
+ schemas?: Record<string, IJsonComponents.IObject | IJsonComponents.IAlias>;
7
+ }
8
+ export namespace IJsonComponents {
9
+ export interface IObject {
10
+ $id?: string;
11
+ type: "object";
12
+
13
+ /**
14
+ * Only when swagger mode.
15
+ */
16
+ nullable?: boolean;
17
+
18
+ properties: Record<string, IJsonSchema>;
19
+ patternProperties?: Record<string, IJsonSchema>;
20
+ additionalProperties?: IJsonSchema;
21
+
22
+ required?: string[];
23
+ description?: string;
24
+ "x-typia-jsDocTags"?: IJsDocTagInfo[];
25
+ "x-typia-patternProperties"?: Record<string, IJsonSchema>;
26
+ "x-typia-additionalProperties"?: IJsonSchema;
27
+ }
28
+
29
+ export type IAlias = IJsonSchema & {
30
+ $id?: string;
31
+ $recursiveAnchor?: boolean;
32
+ };
33
+ }
@@ -1,133 +1,133 @@
1
- import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
2
- import { IMetadataTag } from "../metadata/IMetadataTag";
3
-
4
- import { Atomic } from "../typings/Atomic";
5
-
6
- export type IJsonSchema = IJsonSchema.Known | IJsonSchema.IUnknown;
7
- export namespace IJsonSchema {
8
- export type Known =
9
- | IEnumeration<"boolean">
10
- | IEnumeration<"number">
11
- | IEnumeration<"string">
12
- | IBoolean
13
- | IInteger
14
- | INumber
15
- | IString
16
- | IArray
17
- | ITuple
18
- | IOneOf
19
- | IReference
20
- | INullOnly;
21
-
22
- export interface IUnknown extends IAttribute {
23
- type?: undefined;
24
- }
25
-
26
- /* -----------------------------------------------------------
27
- ATOMICS
28
- ----------------------------------------------------------- */
29
- export interface IEnumeration<
30
- Literal extends Exclude<Atomic.Literal, "bigint">,
31
- > extends IAtomic<Literal> {
32
- enum: Array<Atomic.Mapper[Literal]>;
33
- }
34
- export interface IAtomic<Literal extends Exclude<Atomic.Literal, "bigint">>
35
- extends ISignificant<Literal> {
36
- default?: Atomic.Mapper[Literal];
37
- }
38
- export interface IString extends IAtomic<"string"> {
39
- /**
40
- * @type uint
41
- */
42
- minLength?: number;
43
- /**
44
- * @type uint
45
- */
46
- maxLength?: number;
47
- pattern?: string;
48
- format?: string;
49
- }
50
- export interface INumber extends IAtomic<"number"> {
51
- minimum?: number;
52
- maximum?: number;
53
- exclusiveMinimum?: boolean;
54
- exclusiveMaximum?: boolean;
55
- multipleOf?: number;
56
- }
57
- export interface IInteger extends IAtomic<"integer"> {
58
- /**
59
- * @type int
60
- */
61
- minimum?: number;
62
- /**
63
- * @type int
64
- */
65
- maximum?: number;
66
- exclusiveMinimum?: boolean;
67
- exclusiveMaximum?: boolean;
68
- /**
69
- * @type int
70
- */
71
- multipleOf?: number;
72
- }
73
- export interface IBoolean extends IAtomic<"boolean"> {}
74
-
75
- /* -----------------------------------------------------------
76
- OBJECTS
77
- ----------------------------------------------------------- */
78
- export interface IArray extends ISignificant<"array"> {
79
- items: IJsonSchema;
80
- /**
81
- * @type uint
82
- */
83
- minItems?: number;
84
- /**
85
- * @type uint
86
- */
87
- maxItems?: number;
88
- "x-typia-tuple"?: ITuple;
89
- }
90
- export interface ITuple extends ISignificant<"array"> {
91
- items: IJsonSchema[];
92
- /**
93
- * @type uint
94
- */
95
- minItems: number;
96
- /**
97
- * @type uint
98
- */
99
- maxItems?: number;
100
- }
101
- export interface IReference extends IAttribute {
102
- $ref: string;
103
- }
104
- export interface INullOnly extends IAttribute {
105
- type: "null";
106
- }
107
-
108
- /* -----------------------------------------------------------
109
- MISCELLANEOUS
110
- ----------------------------------------------------------- */
111
- export interface IOneOf extends IAttribute {
112
- oneOf: IJsonSchema[];
113
- }
114
-
115
- export interface ISignificant<Literal extends string> extends IAttribute {
116
- type: Literal;
117
-
118
- /**
119
- * Only when swagger mode.
120
- */
121
- nullable?: boolean;
122
- }
123
- export interface IAttribute {
124
- deprecated?: boolean;
125
- title?: string;
126
- description?: string;
127
- "x-typia-metaTags"?: IMetadataTag[];
128
- "x-typia-jsDocTags"?: IJsDocTagInfo[];
129
- "x-typia-required"?: boolean;
130
- "x-typia-optional"?: boolean;
131
- "x-typia-rest"?: boolean;
132
- }
133
- }
1
+ import { IJsDocTagInfo } from "../metadata/IJsDocTagInfo";
2
+ import { IMetadataTag } from "../metadata/IMetadataTag";
3
+
4
+ import { Atomic } from "../typings/Atomic";
5
+
6
+ export type IJsonSchema = IJsonSchema.Known | IJsonSchema.IUnknown;
7
+ export namespace IJsonSchema {
8
+ export type Known =
9
+ | IEnumeration<"boolean">
10
+ | IEnumeration<"number">
11
+ | IEnumeration<"string">
12
+ | IBoolean
13
+ | IInteger
14
+ | INumber
15
+ | IString
16
+ | IArray
17
+ | ITuple
18
+ | IOneOf
19
+ | IReference
20
+ | INullOnly;
21
+
22
+ export interface IUnknown extends IAttribute {
23
+ type?: undefined;
24
+ }
25
+
26
+ /* -----------------------------------------------------------
27
+ ATOMICS
28
+ ----------------------------------------------------------- */
29
+ export interface IEnumeration<
30
+ Literal extends Exclude<Atomic.Literal, "bigint">,
31
+ > extends IAtomic<Literal> {
32
+ enum: Array<Atomic.Mapper[Literal]>;
33
+ }
34
+ export interface IAtomic<Literal extends Exclude<Atomic.Literal, "bigint">>
35
+ extends ISignificant<Literal> {
36
+ default?: Atomic.Mapper[Literal];
37
+ }
38
+ export interface IString extends IAtomic<"string"> {
39
+ /**
40
+ * @type uint
41
+ */
42
+ minLength?: number;
43
+ /**
44
+ * @type uint
45
+ */
46
+ maxLength?: number;
47
+ pattern?: string;
48
+ format?: string;
49
+ }
50
+ export interface INumber extends IAtomic<"number"> {
51
+ minimum?: number;
52
+ maximum?: number;
53
+ exclusiveMinimum?: boolean;
54
+ exclusiveMaximum?: boolean;
55
+ multipleOf?: number;
56
+ }
57
+ export interface IInteger extends IAtomic<"integer"> {
58
+ /**
59
+ * @type int
60
+ */
61
+ minimum?: number;
62
+ /**
63
+ * @type int
64
+ */
65
+ maximum?: number;
66
+ exclusiveMinimum?: boolean;
67
+ exclusiveMaximum?: boolean;
68
+ /**
69
+ * @type int
70
+ */
71
+ multipleOf?: number;
72
+ }
73
+ export interface IBoolean extends IAtomic<"boolean"> {}
74
+
75
+ /* -----------------------------------------------------------
76
+ OBJECTS
77
+ ----------------------------------------------------------- */
78
+ export interface IArray extends ISignificant<"array"> {
79
+ items: IJsonSchema;
80
+ /**
81
+ * @type uint
82
+ */
83
+ minItems?: number;
84
+ /**
85
+ * @type uint
86
+ */
87
+ maxItems?: number;
88
+ "x-typia-tuple"?: ITuple;
89
+ }
90
+ export interface ITuple extends ISignificant<"array"> {
91
+ items: IJsonSchema[];
92
+ /**
93
+ * @type uint
94
+ */
95
+ minItems: number;
96
+ /**
97
+ * @type uint
98
+ */
99
+ maxItems?: number;
100
+ }
101
+ export interface IReference extends IAttribute {
102
+ $ref: string;
103
+ }
104
+ export interface INullOnly extends IAttribute {
105
+ type: "null";
106
+ }
107
+
108
+ /* -----------------------------------------------------------
109
+ MISCELLANEOUS
110
+ ----------------------------------------------------------- */
111
+ export interface IOneOf extends IAttribute {
112
+ oneOf: IJsonSchema[];
113
+ }
114
+
115
+ export interface ISignificant<Literal extends string> extends IAttribute {
116
+ type: Literal;
117
+
118
+ /**
119
+ * Only when swagger mode.
120
+ */
121
+ nullable?: boolean;
122
+ }
123
+ export interface IAttribute {
124
+ deprecated?: boolean;
125
+ title?: string;
126
+ description?: string;
127
+ "x-typia-metaTags"?: IMetadataTag[];
128
+ "x-typia-jsDocTags"?: IJsDocTagInfo[];
129
+ "x-typia-required"?: boolean;
130
+ "x-typia-optional"?: boolean;
131
+ "x-typia-rest"?: boolean;
132
+ }
133
+ }