typia 3.6.6 → 3.7.0-dev.20230310
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 +44 -15
- package/lib/factories/MetadataCollection.d.ts +1 -9
- package/lib/factories/MetadataCollection.js +2 -75
- package/lib/factories/MetadataCollection.js.map +1 -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 +156 -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 +7 -3
- package/lib/metadata/Metadata.js +2 -2
- package/lib/metadata/Metadata.js.map +1 -1
- package/lib/module.d.ts +2 -0
- package/lib/module.js +5 -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/programmers/internal/application_number.js +20 -14
- package/lib/programmers/internal/application_number.js.map +1 -1
- package/lib/programmers/internal/application_object.js +11 -11
- package/lib/programmers/internal/application_object.js.map +1 -1
- package/lib/programmers/internal/application_schema.js +5 -3
- package/lib/programmers/internal/application_schema.js.map +1 -1
- package/lib/schemas/IJsonSchema.d.ts +4 -10
- package/lib/transformers/CallExpressionTransformer.js +3 -1
- 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 +17 -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 +3 -2
- package/src/factories/MetadataCollection.ts +2 -41
- package/src/factories/ProtocolFactory.ts +79 -0
- package/src/factories/internal/protocols/ProtocolMetadataUtil.ts +163 -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/IMetadataTag.ts +20 -4
- package/src/metadata/Metadata.ts +6 -3
- package/src/module.ts +11 -0
- package/src/programmers/MessageProgrammer.ts +126 -0
- package/src/programmers/internal/application_number.ts +19 -16
- package/src/programmers/internal/application_object.ts +5 -5
- package/src/programmers/internal/application_schema.ts +7 -3
- package/src/schemas/IJsonSchema.ts +4 -10
- package/src/transformers/CallExpressionTransformer.ts +16 -9
- package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +1 -3
- package/src/transformers/features/protocols/MessageTransformer.ts +32 -0
- package/src/utils/NameEncoder.ts +32 -0
|
@@ -23,10 +23,13 @@ export const application_number = (
|
|
|
23
23
|
// RANGE TAG
|
|
24
24
|
else if (tag.kind === "minimum") output.minimum = tag.value;
|
|
25
25
|
else if (tag.kind === "maximum") output.maximum = tag.value;
|
|
26
|
-
else if (tag.kind === "exclusiveMinimum")
|
|
27
|
-
output.
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
else if (tag.kind === "exclusiveMinimum") {
|
|
27
|
+
output.minimum = tag.value;
|
|
28
|
+
output.exclusiveMinimum = true;
|
|
29
|
+
} else if (tag.kind === "exclusiveMaximum") {
|
|
30
|
+
output.maximum = tag.value;
|
|
31
|
+
output.exclusiveMaximum = true;
|
|
32
|
+
}
|
|
30
33
|
// MULTIPLE-OF
|
|
31
34
|
else if (tag.kind === "multipleOf") output.multipleOf = tag.value;
|
|
32
35
|
}
|
|
@@ -38,14 +41,14 @@ export const application_number = (
|
|
|
38
41
|
(tag) => tag.kind === "type" && tag.value === "uint",
|
|
39
42
|
)
|
|
40
43
|
)
|
|
41
|
-
if (
|
|
44
|
+
if (
|
|
45
|
+
output.minimum === undefined ||
|
|
46
|
+
(output.exclusiveMaximum !== true && output.minimum < 0)
|
|
47
|
+
)
|
|
42
48
|
output.minimum = 0;
|
|
43
|
-
else if (
|
|
44
|
-
output.exclusiveMinimum !== undefined &&
|
|
45
|
-
output.exclusiveMinimum < 0
|
|
46
|
-
) {
|
|
47
|
-
delete output.exclusiveMinimum;
|
|
49
|
+
else if (output.exclusiveMinimum === true && output.minimum < -1) {
|
|
48
50
|
output.maximum = 0;
|
|
51
|
+
delete output.exclusiveMinimum;
|
|
49
52
|
}
|
|
50
53
|
|
|
51
54
|
// DEFAULT CONFIGURATION
|
|
@@ -53,13 +56,13 @@ export const application_number = (
|
|
|
53
56
|
const value: number = Number(str);
|
|
54
57
|
const conditions: boolean[] = [!Number.isNaN(value)];
|
|
55
58
|
if (output.minimum !== undefined)
|
|
56
|
-
|
|
59
|
+
if (output.exclusiveMinimum === true)
|
|
60
|
+
conditions.push(value > output.minimum);
|
|
61
|
+
else conditions.push(value >= output.minimum);
|
|
57
62
|
if (output.maximum !== undefined)
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
conditions.push(value
|
|
61
|
-
if (output.exclusiveMaximum !== undefined)
|
|
62
|
-
conditions.push(value < output.exclusiveMaximum);
|
|
63
|
+
if (output.exclusiveMaximum === true)
|
|
64
|
+
conditions.push(value < output.maximum);
|
|
65
|
+
else conditions.push(value <= output.maximum);
|
|
63
66
|
if (output.multipleOf !== undefined)
|
|
64
67
|
conditions.push(value % output.multipleOf === 0);
|
|
65
68
|
return conditions.every((cond) => cond);
|
|
@@ -18,10 +18,10 @@ import { metadata_to_pattern } from "./metadata_to_pattern";
|
|
|
18
18
|
export const application_object =
|
|
19
19
|
(options: ApplicationProgrammer.IOptions) =>
|
|
20
20
|
(components: IJsonComponents) =>
|
|
21
|
-
(
|
|
21
|
+
(id: string, obj: MetadataObject, nullable: boolean): void => {
|
|
22
22
|
// TEMPORARY ASSIGNMENT
|
|
23
|
-
if (components.schemas[
|
|
24
|
-
components.schemas[
|
|
23
|
+
if (components.schemas[id] !== undefined) return;
|
|
24
|
+
components.schemas[id] = {} as any;
|
|
25
25
|
|
|
26
26
|
// ITERATE PROPERTIES
|
|
27
27
|
const properties: Record<string, any> = {};
|
|
@@ -97,7 +97,7 @@ export const application_object =
|
|
|
97
97
|
const schema: IJsonComponents.IObject = {
|
|
98
98
|
$id:
|
|
99
99
|
options.purpose === "ajv"
|
|
100
|
-
? options.prefix + "/" +
|
|
100
|
+
? options.prefix + "/" + id
|
|
101
101
|
: undefined,
|
|
102
102
|
$recursiveAnchor:
|
|
103
103
|
(options.purpose === "ajv" && obj.recursive) || undefined,
|
|
@@ -118,7 +118,7 @@ export const application_object =
|
|
|
118
118
|
join(options)(components)(extraMeta),
|
|
119
119
|
}),
|
|
120
120
|
};
|
|
121
|
-
components.schemas[
|
|
121
|
+
components.schemas[id] = schema;
|
|
122
122
|
};
|
|
123
123
|
|
|
124
124
|
const join =
|
|
@@ -2,6 +2,8 @@ import { Metadata } from "../../metadata/Metadata";
|
|
|
2
2
|
import { IJsonComponents } from "../../schemas/IJsonComponents";
|
|
3
3
|
import { IJsonSchema } from "../../schemas/IJsonSchema";
|
|
4
4
|
|
|
5
|
+
import { NameEncoder } from "../../utils/NameEncoder";
|
|
6
|
+
|
|
5
7
|
import { ApplicationProgrammer } from "../ApplicationProgrammer";
|
|
6
8
|
import { AtomicPredicator } from "../helpers/AtomicPredicator";
|
|
7
9
|
import { application_array } from "./application_array";
|
|
@@ -142,12 +144,14 @@ export const application_schema =
|
|
|
142
144
|
|
|
143
145
|
// OBJECT
|
|
144
146
|
for (const obj of meta.objects) {
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
+
const id: string =
|
|
148
|
+
NameEncoder.encode(obj.name) +
|
|
149
|
+
(meta.nullable ? ".Nullable" : "");
|
|
150
|
+
application_object(options)(components)(id, obj, meta.nullable);
|
|
147
151
|
union.push(
|
|
148
152
|
(options.purpose === "ajv" && obj.recursive
|
|
149
153
|
? recursive
|
|
150
|
-
: reference)(`${options.prefix}/${
|
|
154
|
+
: reference)(`${options.prefix}/${id}`, attribute),
|
|
151
155
|
);
|
|
152
156
|
}
|
|
153
157
|
|
|
@@ -47,8 +47,8 @@ export namespace IJsonSchema {
|
|
|
47
47
|
export interface INumber extends IAtomic<"number"> {
|
|
48
48
|
minimum?: number;
|
|
49
49
|
maximum?: number;
|
|
50
|
-
exclusiveMinimum?:
|
|
51
|
-
exclusiveMaximum?:
|
|
50
|
+
exclusiveMinimum?: boolean;
|
|
51
|
+
exclusiveMaximum?: boolean;
|
|
52
52
|
multipleOf?: number;
|
|
53
53
|
}
|
|
54
54
|
export interface IInteger extends IAtomic<"integer"> {
|
|
@@ -60,14 +60,8 @@ export namespace IJsonSchema {
|
|
|
60
60
|
* @type int
|
|
61
61
|
*/
|
|
62
62
|
maximum?: number;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
*/
|
|
66
|
-
exclusiveMinimum?: number;
|
|
67
|
-
/**
|
|
68
|
-
* @type int
|
|
69
|
-
*/
|
|
70
|
-
exclusiveMaximum?: number;
|
|
63
|
+
exclusiveMinimum?: boolean;
|
|
64
|
+
exclusiveMaximum?: boolean;
|
|
71
65
|
/**
|
|
72
66
|
* @type int
|
|
73
67
|
*/
|
|
@@ -28,6 +28,7 @@ import { CreateIsParseTransformer } from "./features/parsers/CreateIsParseTransf
|
|
|
28
28
|
import { CreateValidateParseTransformer } from "./features/parsers/CreateValidateParseTransformer";
|
|
29
29
|
import { IsParseTransformer } from "./features/parsers/IsParseTransformer";
|
|
30
30
|
import { ValidateParseTransformer } from "./features/parsers/ValidateParseTransformer";
|
|
31
|
+
import { MessageTransformer } from "./features/protocols/MessageTransformer";
|
|
31
32
|
import { AssertStringifyTransformer } from "./features/stringifiers/AssertStringifyTransformer";
|
|
32
33
|
import { CreateAssertStringifyTransformer } from "./features/stringifiers/CreateAssertStringifyTransformer";
|
|
33
34
|
import { CreateIsStringifyTransformer } from "./features/stringifiers/CreateIsStringifyTransformer";
|
|
@@ -94,7 +95,7 @@ const CLI_PATH = path.resolve(
|
|
|
94
95
|
|
|
95
96
|
const FUNCTORS: Record<string, () => Task> = {
|
|
96
97
|
//----
|
|
97
|
-
//
|
|
98
|
+
// VALIDATORS
|
|
98
99
|
//----
|
|
99
100
|
// BASIC VALIDATORS
|
|
100
101
|
assert: () => AssertTransformer.transform(false),
|
|
@@ -107,13 +108,23 @@ const FUNCTORS: Record<string, () => Task> = {
|
|
|
107
108
|
equals: () => IsTransformer.transform(true),
|
|
108
109
|
validateEquals: () => ValidateTransformer.transform(true),
|
|
109
110
|
|
|
110
|
-
|
|
111
|
+
//----
|
|
112
|
+
// PROTOCOL BUFFER
|
|
113
|
+
//----
|
|
114
|
+
message: () => MessageTransformer.transform,
|
|
115
|
+
|
|
116
|
+
//----
|
|
117
|
+
// JSON FUNCTIONS
|
|
118
|
+
//----
|
|
119
|
+
// SCHEMA DEFINITION
|
|
120
|
+
application: () => ApplicationTransformer.transform,
|
|
121
|
+
|
|
122
|
+
// PARSER FUNCTIONS
|
|
111
123
|
isParse: () => IsParseTransformer.transform,
|
|
112
124
|
assertParse: () => AssertParseTransformer.transform,
|
|
113
125
|
validateParse: () => ValidateParseTransformer.transform,
|
|
114
126
|
|
|
115
127
|
// STRINGIFY FUNCTIONS
|
|
116
|
-
application: () => ApplicationTransformer.transform,
|
|
117
128
|
stringify: () => StringifyTransformer.transform,
|
|
118
129
|
assertStringify: () => AssertStringifyTransformer.transform,
|
|
119
130
|
isStringify: () => IsStringifyTransformer.transform,
|
|
@@ -136,23 +147,19 @@ const FUNCTORS: Record<string, () => Task> = {
|
|
|
136
147
|
//----
|
|
137
148
|
// FACTORY FUNCTIONS
|
|
138
149
|
//----
|
|
139
|
-
//
|
|
150
|
+
// VALIDATORS
|
|
140
151
|
createAssert: () => CreateAssertTransformer.transform(false),
|
|
141
152
|
createAssertType: () => CreateAssertTransformer.transform(false),
|
|
142
153
|
createIs: () => CreateIsTransformer.transform(false),
|
|
143
154
|
createValidate: () => CreateValidateTransformer.transform(false),
|
|
144
|
-
|
|
145
|
-
// STRICT VALIDATORS
|
|
146
155
|
createAssertEquals: () => CreateAssertTransformer.transform(true),
|
|
147
156
|
createEquals: () => CreateIsTransformer.transform(true),
|
|
148
157
|
createValidateEquals: () => CreateValidateTransformer.transform(true),
|
|
149
158
|
|
|
150
|
-
//
|
|
159
|
+
// JSON FUNCTIONS
|
|
151
160
|
createIsParse: () => CreateIsParseTransformer.transform,
|
|
152
161
|
createAssertParse: () => CreateAssertParseTransformer.transform,
|
|
153
162
|
createValidateParse: () => CreateValidateParseTransformer.transform,
|
|
154
|
-
|
|
155
|
-
// STRINGIFY FUNCTIONS
|
|
156
163
|
createStringify: () => CreateStringifyTransformer.transform,
|
|
157
164
|
createAssertStringify: () => CreateAssertStringifyTransformer.transform,
|
|
158
165
|
createIsStringify: () => CreateIsStringifyTransformer.transform,
|
|
@@ -59,9 +59,7 @@ export namespace ApplicationTransformer {
|
|
|
59
59
|
// GENERATORS
|
|
60
60
|
//----
|
|
61
61
|
// METADATA
|
|
62
|
-
const collection: MetadataCollection = new MetadataCollection(
|
|
63
|
-
replace: MetadataCollection.replace,
|
|
64
|
-
});
|
|
62
|
+
const collection: MetadataCollection = new MetadataCollection();
|
|
65
63
|
const metadatas: Array<Metadata> = types.map((type) =>
|
|
66
64
|
MetadataFactory.generate(checker, collection, type, {
|
|
67
65
|
resolve: true,
|
|
@@ -0,0 +1,32 @@
|
|
|
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 function transform(
|
|
9
|
+
project: IProject,
|
|
10
|
+
_modulo: ts.LeftHandSideExpression,
|
|
11
|
+
expression: ts.CallExpression,
|
|
12
|
+
): ts.Expression {
|
|
13
|
+
// CHECK GENERIC ARGUMENT EXISTENCE
|
|
14
|
+
if (!expression.typeArguments || !expression.typeArguments[0])
|
|
15
|
+
throw new Error(ErrorMessages.NOT_SPECIFIED);
|
|
16
|
+
|
|
17
|
+
// GET TYPE INFO
|
|
18
|
+
const type: ts.Type = project.checker.getTypeFromTypeNode(
|
|
19
|
+
expression.typeArguments[0],
|
|
20
|
+
);
|
|
21
|
+
if (type.isTypeParameter())
|
|
22
|
+
throw new Error(ErrorMessages.GENERIC_ARGUMENT);
|
|
23
|
+
|
|
24
|
+
// DO TRANSFORM
|
|
25
|
+
return MessageProgrammer.generate(project)(type);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const enum ErrorMessages {
|
|
30
|
+
NOT_SPECIFIED = "Error on typia.message(): generic argument is not specified.",
|
|
31
|
+
GENERIC_ARGUMENT = "Error on typia.message(): non-specified generic argument.",
|
|
32
|
+
}
|
|
@@ -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
|
+
];
|