typia 3.8.4 → 4.0.0-dev.20230502
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/README.md +9 -1
- package/lib/factories/ProtocolFactory.d.ts +8 -0
- package/lib/factories/ProtocolFactory.js +112 -0
- package/lib/factories/ProtocolFactory.js.map +1 -0
- package/lib/factories/internal/protocols/ProtocolMetadataUtil.d.ts +16 -0
- package/lib/factories/internal/protocols/ProtocolMetadataUtil.js +160 -0
- package/lib/factories/internal/protocols/ProtocolMetadataUtil.js.map +1 -0
- package/lib/factories/internal/protocols/emplace_protocol_object.d.ts +3 -0
- package/lib/factories/internal/protocols/emplace_protocol_object.js +47 -0
- package/lib/factories/internal/protocols/emplace_protocol_object.js.map +1 -0
- package/lib/factories/internal/protocols/emplace_protocol_property.d.ts +4 -0
- package/lib/factories/internal/protocols/emplace_protocol_property.js +20 -0
- package/lib/factories/internal/protocols/emplace_protocol_property.js.map +1 -0
- package/lib/factories/internal/protocols/iterate_protocol_atomic.d.ts +3 -0
- package/lib/factories/internal/protocols/iterate_protocol_atomic.js +69 -0
- package/lib/factories/internal/protocols/iterate_protocol_atomic.js.map +1 -0
- package/lib/factories/internal/protocols/iterate_protocol_constant.d.ts +2 -0
- package/lib/factories/internal/protocols/iterate_protocol_constant.js +30 -0
- package/lib/factories/internal/protocols/iterate_protocol_constant.js.map +1 -0
- package/lib/factories/internal/protocols/iterate_protocol_main.d.ts +3 -0
- package/lib/factories/internal/protocols/iterate_protocol_main.js +17 -0
- package/lib/factories/internal/protocols/iterate_protocol_main.js.map +1 -0
- package/lib/factories/internal/protocols/iterate_protocol_map.d.ts +4 -0
- package/lib/factories/internal/protocols/iterate_protocol_map.js +75 -0
- package/lib/factories/internal/protocols/iterate_protocol_map.js.map +1 -0
- package/lib/factories/internal/protocols/iterate_protocol_metadata.d.ts +5 -0
- package/lib/factories/internal/protocols/iterate_protocol_metadata.js +190 -0
- package/lib/factories/internal/protocols/iterate_protocol_metadata.js.map +1 -0
- package/lib/factories/internal/protocols/iterate_protocol_native.d.ts +2 -0
- package/lib/factories/internal/protocols/iterate_protocol_native.js +33 -0
- package/lib/factories/internal/protocols/iterate_protocol_native.js.map +1 -0
- package/lib/factories/internal/protocols/iterate_protocol_never.d.ts +1 -0
- package/lib/factories/internal/protocols/iterate_protocol_never.js +6 -0
- package/lib/factories/internal/protocols/iterate_protocol_never.js.map +1 -0
- package/lib/factories/internal/protocols/iterate_protocol_object.d.ts +4 -0
- package/lib/factories/internal/protocols/iterate_protocol_object.js +157 -0
- package/lib/factories/internal/protocols/iterate_protocol_object.js.map +1 -0
- package/lib/factories/internal/protocols/iterate_protocol_repeated.d.ts +5 -0
- package/lib/factories/internal/protocols/iterate_protocol_repeated.js +25 -0
- package/lib/factories/internal/protocols/iterate_protocol_repeated.js.map +1 -0
- package/lib/factories/internal/protocols/iterate_protocol_tuple.d.ts +3 -0
- package/lib/factories/internal/protocols/iterate_protocol_tuple.js +46 -0
- package/lib/factories/internal/protocols/iterate_protocol_tuple.js.map +1 -0
- package/lib/functional/$proto_bytes.d.ts +2 -0
- package/lib/functional/$proto_bytes.js +37 -0
- package/lib/functional/$proto_bytes.js.map +1 -0
- package/lib/functional/$proto_field.d.ts +10 -0
- package/lib/functional/$proto_field.js +42 -0
- package/lib/functional/$proto_field.js.map +1 -0
- package/lib/functional/$proto_float.d.ts +4 -0
- package/lib/functional/$proto_float.js +28 -0
- package/lib/functional/$proto_float.js.map +1 -0
- package/lib/functional/$proto_i32.d.ts +2 -0
- package/lib/functional/$proto_i32.js +23 -0
- package/lib/functional/$proto_i32.js.map +1 -0
- package/lib/functional/$proto_i64.d.ts +2 -0
- package/lib/functional/$proto_i64.js +31 -0
- package/lib/functional/$proto_i64.js.map +1 -0
- package/lib/functional/$proto_size.d.ts +6 -0
- package/lib/functional/$proto_size.js +76 -0
- package/lib/functional/$proto_size.js.map +1 -0
- package/lib/functional/$proto_string.d.ts +2 -0
- package/lib/functional/$proto_string.js +34 -0
- package/lib/functional/$proto_string.js.map +1 -0
- package/lib/functional/$varint.d.ts +6 -0
- package/lib/functional/$varint.js +99 -0
- package/lib/functional/$varint.js.map +1 -0
- package/lib/functional/$zigzag.d.ts +4 -0
- package/lib/functional/$zigzag.js +34 -0
- package/lib/functional/$zigzag.js.map +1 -0
- package/lib/messages/IProtocolMap.d.ts +5 -0
- package/lib/messages/IProtocolMap.js +3 -0
- package/lib/messages/IProtocolMap.js.map +1 -0
- package/lib/messages/IProtocolMessage.d.ts +5 -0
- package/lib/messages/IProtocolMessage.js +3 -0
- package/lib/messages/IProtocolMessage.js.map +1 -0
- package/lib/messages/IProtocolProperty.d.ts +12 -0
- package/lib/messages/IProtocolProperty.js +3 -0
- package/lib/messages/IProtocolProperty.js.map +1 -0
- package/lib/metadata/IMetadataTag.d.ts +3 -3
- package/lib/metadata/Metadata.js +1 -1
- package/lib/metadata/Metadata.js.map +1 -1
- package/lib/module.d.ts +2 -0
- package/lib/module.js +6 -1
- package/lib/module.js.map +1 -1
- package/lib/programmers/MessageProgrammer.d.ts +5 -0
- package/lib/programmers/MessageProgrammer.js +141 -0
- package/lib/programmers/MessageProgrammer.js.map +1 -0
- package/lib/transformers/CallExpressionTransformer.js +5 -3
- package/lib/transformers/CallExpressionTransformer.js.map +1 -1
- package/lib/transformers/features/miscellaneous/ApplicationTransformer.js +1 -3
- package/lib/transformers/features/miscellaneous/ApplicationTransformer.js.map +1 -1
- package/lib/transformers/features/protocols/MessageTransformer.d.ts +5 -0
- package/lib/transformers/features/protocols/MessageTransformer.js +20 -0
- package/lib/transformers/features/protocols/MessageTransformer.js.map +1 -0
- package/lib/utils/NameEncoder.d.ts +4 -0
- package/lib/utils/NameEncoder.js +89 -0
- package/lib/utils/NameEncoder.js.map +1 -0
- package/package.json +1 -1
- package/src/Primitive.ts +123 -123
- package/src/factories/MetadataFactory.ts +62 -62
- package/src/factories/ProtocolFactory.ts +79 -0
- package/src/factories/internal/metadata/emplace_metadata_object.ts +143 -143
- package/src/factories/internal/metadata/iterate_metadata_tuple.ts +48 -48
- package/src/factories/internal/protocols/ProtocolMetadataUtil.ts +167 -0
- package/src/factories/internal/protocols/emplace_protocol_object.ts +25 -0
- package/src/factories/internal/protocols/emplace_protocol_property.ts +12 -0
- package/src/factories/internal/protocols/iterate_protocol_atomic.ts +34 -0
- package/src/factories/internal/protocols/iterate_protocol_constant.ts +27 -0
- package/src/factories/internal/protocols/iterate_protocol_main.ts +19 -0
- package/src/factories/internal/protocols/iterate_protocol_map.ts +58 -0
- package/src/factories/internal/protocols/iterate_protocol_metadata.ts +96 -0
- package/src/factories/internal/protocols/iterate_protocol_native.ts +34 -0
- package/src/factories/internal/protocols/iterate_protocol_never.ts +1 -0
- package/src/factories/internal/protocols/iterate_protocol_object.ts +110 -0
- package/src/factories/internal/protocols/iterate_protocol_repeated.ts +34 -0
- package/src/factories/internal/protocols/iterate_protocol_tuple.ts +29 -0
- package/src/functional/$proto_bytes.ts +25 -0
- package/src/functional/$proto_field.ts +30 -0
- package/src/functional/$proto_float.ts +37 -0
- package/src/functional/$proto_i32.ts +29 -0
- package/src/functional/$proto_i64.ts +37 -0
- package/src/functional/$proto_size.ts +82 -0
- package/src/functional/$proto_string.ts +24 -0
- package/src/functional/$varint.ts +130 -0
- package/src/functional/$zigzag.ts +39 -0
- package/src/messages/IProtocolMap.ts +5 -0
- package/src/messages/IProtocolMessage.ts +6 -0
- package/src/messages/IProtocolProperty.ts +13 -0
- package/src/metadata/IMetadata.ts +26 -26
- package/src/metadata/IMetadataTag.ts +11 -3
- package/src/metadata/Metadata.ts +543 -539
- package/src/module.ts +11 -0
- package/src/programmers/CheckerProgrammer.ts +901 -901
- package/src/programmers/MessageProgrammer.ts +126 -0
- package/src/programmers/internal/application_object.ts +155 -155
- package/src/programmers/internal/application_tuple.ts +31 -31
- package/src/schemas/IJsonSchema.ts +130 -130
- package/src/transformers/CallExpressionTransformer.ts +17 -10
- package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +1 -3
- package/src/transformers/features/protocols/MessageTransformer.ts +31 -0
- package/src/utils/NameEncoder.ts +32 -0
|
@@ -1,130 +1,130 @@
|
|
|
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
|
-
| IRecursiveReference
|
|
21
|
-
| INullOnly;
|
|
22
|
-
|
|
23
|
-
export interface IUnknown extends IAttribute {
|
|
24
|
-
type: undefined;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* @deprecated Use {@link Known} type instead.
|
|
29
|
-
*/
|
|
30
|
-
export type NotUnknown = Known;
|
|
31
|
-
|
|
32
|
-
/* -----------------------------------------------------------
|
|
33
|
-
ATOMICS
|
|
34
|
-
----------------------------------------------------------- */
|
|
35
|
-
export interface IEnumeration<
|
|
36
|
-
Literal extends Exclude<Atomic.Literal, "bigint">,
|
|
37
|
-
> extends IAtomic<Literal> {
|
|
38
|
-
enum: Array<Atomic.Mapper[Literal]>;
|
|
39
|
-
}
|
|
40
|
-
export interface IAtomic<Literal extends Exclude<Atomic.Literal, "bigint">>
|
|
41
|
-
extends ISignificant<Literal> {
|
|
42
|
-
default?: Atomic.Mapper[Literal];
|
|
43
|
-
}
|
|
44
|
-
export interface IString extends IAtomic<"string"> {
|
|
45
|
-
/**
|
|
46
|
-
* @type uint
|
|
47
|
-
*/
|
|
48
|
-
minLength?: number;
|
|
49
|
-
/**
|
|
50
|
-
* @type uint
|
|
51
|
-
*/
|
|
52
|
-
maxLength?: number;
|
|
53
|
-
pattern?: string;
|
|
54
|
-
format?: string;
|
|
55
|
-
}
|
|
56
|
-
export interface INumber extends IAtomic<"number"> {
|
|
57
|
-
minimum?: number;
|
|
58
|
-
maximum?: number;
|
|
59
|
-
exclusiveMinimum?: boolean;
|
|
60
|
-
exclusiveMaximum?: boolean;
|
|
61
|
-
multipleOf?: number;
|
|
62
|
-
}
|
|
63
|
-
export interface IInteger extends IAtomic<"integer"> {
|
|
64
|
-
/**
|
|
65
|
-
* @type int
|
|
66
|
-
*/
|
|
67
|
-
minimum?: number;
|
|
68
|
-
/**
|
|
69
|
-
* @type int
|
|
70
|
-
*/
|
|
71
|
-
maximum?: number;
|
|
72
|
-
exclusiveMinimum?: boolean;
|
|
73
|
-
exclusiveMaximum?: boolean;
|
|
74
|
-
/**
|
|
75
|
-
* @type int
|
|
76
|
-
*/
|
|
77
|
-
multipleOf?: number;
|
|
78
|
-
}
|
|
79
|
-
export interface IBoolean extends IAtomic<"boolean"> {}
|
|
80
|
-
|
|
81
|
-
/* -----------------------------------------------------------
|
|
82
|
-
OBJECTS
|
|
83
|
-
----------------------------------------------------------- */
|
|
84
|
-
export interface IArray extends ISignificant<"array"> {
|
|
85
|
-
items: IJsonSchema;
|
|
86
|
-
/**
|
|
87
|
-
* @type uint
|
|
88
|
-
*/
|
|
89
|
-
minItems?: number;
|
|
90
|
-
/**
|
|
91
|
-
* @type uint
|
|
92
|
-
*/
|
|
93
|
-
maxItems?: number;
|
|
94
|
-
"x-typia-tuple"?: ITuple;
|
|
95
|
-
}
|
|
96
|
-
export interface ITuple extends ISignificant<"array"> {
|
|
97
|
-
items: IJsonSchema[];
|
|
98
|
-
}
|
|
99
|
-
export interface IReference extends IAttribute {
|
|
100
|
-
$ref: string;
|
|
101
|
-
}
|
|
102
|
-
export interface IRecursiveReference extends IAttribute {
|
|
103
|
-
$recursiveRef: string;
|
|
104
|
-
}
|
|
105
|
-
export interface INullOnly extends IAttribute {
|
|
106
|
-
type: "null";
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/* -----------------------------------------------------------
|
|
110
|
-
MISCELLANEOUS
|
|
111
|
-
----------------------------------------------------------- */
|
|
112
|
-
export interface IOneOf extends IAttribute {
|
|
113
|
-
oneOf: IJsonSchema[];
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
export interface ISignificant<Literal extends string> extends IAttribute {
|
|
117
|
-
type: Literal;
|
|
118
|
-
nullable: boolean;
|
|
119
|
-
}
|
|
120
|
-
export interface IAttribute {
|
|
121
|
-
deprecated?: boolean;
|
|
122
|
-
title?: string;
|
|
123
|
-
description?: string;
|
|
124
|
-
"x-typia-metaTags"?: IMetadataTag[];
|
|
125
|
-
"x-typia-jsDocTags"?: IJsDocTagInfo[];
|
|
126
|
-
"x-typia-required"?: boolean;
|
|
127
|
-
"x-typia-optional"?: boolean;
|
|
128
|
-
"x-typia-rest"?: boolean;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
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
|
+
| IRecursiveReference
|
|
21
|
+
| INullOnly;
|
|
22
|
+
|
|
23
|
+
export interface IUnknown extends IAttribute {
|
|
24
|
+
type: undefined;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated Use {@link Known} type instead.
|
|
29
|
+
*/
|
|
30
|
+
export type NotUnknown = Known;
|
|
31
|
+
|
|
32
|
+
/* -----------------------------------------------------------
|
|
33
|
+
ATOMICS
|
|
34
|
+
----------------------------------------------------------- */
|
|
35
|
+
export interface IEnumeration<
|
|
36
|
+
Literal extends Exclude<Atomic.Literal, "bigint">,
|
|
37
|
+
> extends IAtomic<Literal> {
|
|
38
|
+
enum: Array<Atomic.Mapper[Literal]>;
|
|
39
|
+
}
|
|
40
|
+
export interface IAtomic<Literal extends Exclude<Atomic.Literal, "bigint">>
|
|
41
|
+
extends ISignificant<Literal> {
|
|
42
|
+
default?: Atomic.Mapper[Literal];
|
|
43
|
+
}
|
|
44
|
+
export interface IString extends IAtomic<"string"> {
|
|
45
|
+
/**
|
|
46
|
+
* @type uint
|
|
47
|
+
*/
|
|
48
|
+
minLength?: number;
|
|
49
|
+
/**
|
|
50
|
+
* @type uint
|
|
51
|
+
*/
|
|
52
|
+
maxLength?: number;
|
|
53
|
+
pattern?: string;
|
|
54
|
+
format?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface INumber extends IAtomic<"number"> {
|
|
57
|
+
minimum?: number;
|
|
58
|
+
maximum?: number;
|
|
59
|
+
exclusiveMinimum?: boolean;
|
|
60
|
+
exclusiveMaximum?: boolean;
|
|
61
|
+
multipleOf?: number;
|
|
62
|
+
}
|
|
63
|
+
export interface IInteger extends IAtomic<"integer"> {
|
|
64
|
+
/**
|
|
65
|
+
* @type int
|
|
66
|
+
*/
|
|
67
|
+
minimum?: number;
|
|
68
|
+
/**
|
|
69
|
+
* @type int
|
|
70
|
+
*/
|
|
71
|
+
maximum?: number;
|
|
72
|
+
exclusiveMinimum?: boolean;
|
|
73
|
+
exclusiveMaximum?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* @type int
|
|
76
|
+
*/
|
|
77
|
+
multipleOf?: number;
|
|
78
|
+
}
|
|
79
|
+
export interface IBoolean extends IAtomic<"boolean"> {}
|
|
80
|
+
|
|
81
|
+
/* -----------------------------------------------------------
|
|
82
|
+
OBJECTS
|
|
83
|
+
----------------------------------------------------------- */
|
|
84
|
+
export interface IArray extends ISignificant<"array"> {
|
|
85
|
+
items: IJsonSchema;
|
|
86
|
+
/**
|
|
87
|
+
* @type uint
|
|
88
|
+
*/
|
|
89
|
+
minItems?: number;
|
|
90
|
+
/**
|
|
91
|
+
* @type uint
|
|
92
|
+
*/
|
|
93
|
+
maxItems?: number;
|
|
94
|
+
"x-typia-tuple"?: ITuple;
|
|
95
|
+
}
|
|
96
|
+
export interface ITuple extends ISignificant<"array"> {
|
|
97
|
+
items: IJsonSchema[];
|
|
98
|
+
}
|
|
99
|
+
export interface IReference extends IAttribute {
|
|
100
|
+
$ref: string;
|
|
101
|
+
}
|
|
102
|
+
export interface IRecursiveReference extends IAttribute {
|
|
103
|
+
$recursiveRef: string;
|
|
104
|
+
}
|
|
105
|
+
export interface INullOnly extends IAttribute {
|
|
106
|
+
type: "null";
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/* -----------------------------------------------------------
|
|
110
|
+
MISCELLANEOUS
|
|
111
|
+
----------------------------------------------------------- */
|
|
112
|
+
export interface IOneOf extends IAttribute {
|
|
113
|
+
oneOf: IJsonSchema[];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export interface ISignificant<Literal extends string> extends IAttribute {
|
|
117
|
+
type: Literal;
|
|
118
|
+
nullable: boolean;
|
|
119
|
+
}
|
|
120
|
+
export interface IAttribute {
|
|
121
|
+
deprecated?: boolean;
|
|
122
|
+
title?: string;
|
|
123
|
+
description?: string;
|
|
124
|
+
"x-typia-metaTags"?: IMetadataTag[];
|
|
125
|
+
"x-typia-jsDocTags"?: IJsDocTagInfo[];
|
|
126
|
+
"x-typia-required"?: boolean;
|
|
127
|
+
"x-typia-optional"?: boolean;
|
|
128
|
+
"x-typia-rest"?: boolean;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -29,6 +29,7 @@ import { CreateIsParseTransformer } from "./features/parsers/CreateIsParseTransf
|
|
|
29
29
|
import { CreateValidateParseTransformer } from "./features/parsers/CreateValidateParseTransformer";
|
|
30
30
|
import { IsParseTransformer } from "./features/parsers/IsParseTransformer";
|
|
31
31
|
import { ValidateParseTransformer } from "./features/parsers/ValidateParseTransformer";
|
|
32
|
+
import { MessageTransformer } from "./features/protocols/MessageTransformer";
|
|
32
33
|
import { AssertStringifyTransformer } from "./features/stringifiers/AssertStringifyTransformer";
|
|
33
34
|
import { CreateAssertStringifyTransformer } from "./features/stringifiers/CreateAssertStringifyTransformer";
|
|
34
35
|
import { CreateIsStringifyTransformer } from "./features/stringifiers/CreateIsStringifyTransformer";
|
|
@@ -97,7 +98,7 @@ const CLI_PATH = path.resolve(
|
|
|
97
98
|
|
|
98
99
|
const FUNCTORS: Record<string, () => Task> = {
|
|
99
100
|
//----
|
|
100
|
-
//
|
|
101
|
+
// VALIDATORS
|
|
101
102
|
//----
|
|
102
103
|
// BASIC VALIDATORS
|
|
103
104
|
assert: () => AssertTransformer.transform(false),
|
|
@@ -110,14 +111,24 @@ const FUNCTORS: Record<string, () => Task> = {
|
|
|
110
111
|
equals: () => IsTransformer.transform(true),
|
|
111
112
|
validateEquals: () => ValidateTransformer.transform(true),
|
|
112
113
|
|
|
113
|
-
|
|
114
|
+
//----
|
|
115
|
+
// PROTOCOL BUFFER
|
|
116
|
+
//----
|
|
117
|
+
message: () => MessageTransformer.transform,
|
|
118
|
+
|
|
119
|
+
//----
|
|
120
|
+
// JSON FUNCTIONS
|
|
121
|
+
//----
|
|
122
|
+
// SCHEMA DEFINITION
|
|
123
|
+
application: () => (project) => () =>
|
|
124
|
+
ApplicationTransformer.transform(project),
|
|
125
|
+
|
|
126
|
+
// PARSER FUNCTIONS
|
|
114
127
|
isParse: () => IsParseTransformer.transform,
|
|
115
128
|
assertParse: () => AssertParseTransformer.transform,
|
|
116
129
|
validateParse: () => ValidateParseTransformer.transform,
|
|
117
130
|
|
|
118
131
|
// STRINGIFY FUNCTIONS
|
|
119
|
-
application: () => (project) => () =>
|
|
120
|
-
ApplicationTransformer.transform(project),
|
|
121
132
|
stringify: () => StringifyTransformer.transform,
|
|
122
133
|
assertStringify: () => AssertStringifyTransformer.transform,
|
|
123
134
|
isStringify: () => IsStringifyTransformer.transform,
|
|
@@ -141,23 +152,19 @@ const FUNCTORS: Record<string, () => Task> = {
|
|
|
141
152
|
//----
|
|
142
153
|
// FACTORY FUNCTIONS
|
|
143
154
|
//----
|
|
144
|
-
//
|
|
155
|
+
// VALIDATORS
|
|
145
156
|
createAssert: () => CreateAssertTransformer.transform(false),
|
|
146
157
|
createAssertType: () => CreateAssertTransformer.transform(false),
|
|
147
158
|
createIs: () => CreateIsTransformer.transform(false),
|
|
148
159
|
createValidate: () => CreateValidateTransformer.transform(false),
|
|
149
|
-
|
|
150
|
-
// STRICT VALIDATORS
|
|
151
160
|
createAssertEquals: () => CreateAssertTransformer.transform(true),
|
|
152
161
|
createEquals: () => CreateIsTransformer.transform(true),
|
|
153
162
|
createValidateEquals: () => CreateValidateTransformer.transform(true),
|
|
154
163
|
|
|
155
|
-
//
|
|
164
|
+
// JSON FUNCTIONS
|
|
156
165
|
createIsParse: () => CreateIsParseTransformer.transform,
|
|
157
166
|
createAssertParse: () => CreateAssertParseTransformer.transform,
|
|
158
167
|
createValidateParse: () => CreateValidateParseTransformer.transform,
|
|
159
|
-
|
|
160
|
-
// STRINGIFY FUNCTIONS
|
|
161
168
|
createStringify: () => CreateStringifyTransformer.transform,
|
|
162
169
|
createAssertStringify: () => CreateAssertStringifyTransformer.transform,
|
|
163
170
|
createIsStringify: () => CreateIsStringifyTransformer.transform,
|
|
@@ -57,9 +57,7 @@ export namespace ApplicationTransformer {
|
|
|
57
57
|
// GENERATORS
|
|
58
58
|
//----
|
|
59
59
|
// METADATA
|
|
60
|
-
const collection: MetadataCollection = new MetadataCollection(
|
|
61
|
-
replace: MetadataCollection.replace,
|
|
62
|
-
});
|
|
60
|
+
const collection: MetadataCollection = new MetadataCollection();
|
|
63
61
|
const metadatas: Array<Metadata> = types.map((type) =>
|
|
64
62
|
MetadataFactory.analyze(checker)({
|
|
65
63
|
resolve: true,
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
|
|
3
|
+
import { MessageProgrammer } from "../../../programmers/MessageProgrammer";
|
|
4
|
+
|
|
5
|
+
import { IProject } from "../../IProject";
|
|
6
|
+
|
|
7
|
+
export namespace MessageTransformer {
|
|
8
|
+
export const transform =
|
|
9
|
+
(project: IProject) =>
|
|
10
|
+
(_modulo: ts.LeftHandSideExpression) =>
|
|
11
|
+
(expression: ts.CallExpression): ts.Expression => {
|
|
12
|
+
// CHECK GENERIC ARGUMENT EXISTENCE
|
|
13
|
+
if (!expression.typeArguments || !expression.typeArguments[0])
|
|
14
|
+
throw new Error(ErrorMessages.NOT_SPECIFIED);
|
|
15
|
+
|
|
16
|
+
// GET TYPE INFO
|
|
17
|
+
const type: ts.Type = project.checker.getTypeFromTypeNode(
|
|
18
|
+
expression.typeArguments[0],
|
|
19
|
+
);
|
|
20
|
+
if (type.isTypeParameter())
|
|
21
|
+
throw new Error(ErrorMessages.GENERIC_ARGUMENT);
|
|
22
|
+
|
|
23
|
+
// DO TRANSFORM
|
|
24
|
+
return MessageProgrammer.generate(project)(type);
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const enum ErrorMessages {
|
|
29
|
+
NOT_SPECIFIED = "Error on typia.message(): generic argument is not specified.",
|
|
30
|
+
GENERIC_ARGUMENT = "Error on typia.message(): non-specified generic argument.",
|
|
31
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export namespace NameEncoder {
|
|
2
|
+
export function encode(str: string): string {
|
|
3
|
+
for (const [before, after] of REPLACERS)
|
|
4
|
+
str = str.split(before).join(after);
|
|
5
|
+
return str;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export function decode(str: string): string {
|
|
9
|
+
for (const [before, after] of REPLACERS)
|
|
10
|
+
if (after !== "") str = str.split(after).join(before);
|
|
11
|
+
return str;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const REPLACERS: [string, string][] = [
|
|
16
|
+
["$", "_dollar_"],
|
|
17
|
+
["&", "_and_"],
|
|
18
|
+
["|", "_or_"],
|
|
19
|
+
["{", "_blt_"],
|
|
20
|
+
["}", "_bgt_"],
|
|
21
|
+
["<", "_lt_"],
|
|
22
|
+
[">", "_gt_"],
|
|
23
|
+
["(", "_lp_"],
|
|
24
|
+
[")", "_rp_"],
|
|
25
|
+
["[", "_alt_"],
|
|
26
|
+
["]", "_agt_"],
|
|
27
|
+
[",", "_comma_"],
|
|
28
|
+
["`", "_backquote_"],
|
|
29
|
+
["'", "_singlequote_"],
|
|
30
|
+
['"', "_doublequote_"],
|
|
31
|
+
[" ", "_space_"],
|
|
32
|
+
];
|