typia 3.5.0-dev.20221219 → 3.5.0-dev.20230107
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 +62 -17
- package/lib/executable/internal/TypiaSetupWizard.d.ts +6 -2
- package/lib/executable/internal/TypiaSetupWizard.js +25 -23
- package/lib/executable/internal/TypiaSetupWizard.js.map +1 -1
- package/lib/executable/typia.js +11 -10
- package/lib/executable/typia.js.map +1 -1
- package/lib/factories/MetadataCollection.d.ts +1 -9
- package/lib/factories/MetadataCollection.js +2 -77
- package/lib/factories/MetadataCollection.js.map +1 -1
- package/lib/factories/MetadataTagFactory.js +4 -1
- package/lib/factories/MetadataTagFactory.js.map +1 -1
- package/lib/factories/ProtocolFactory.d.ts +0 -1
- package/lib/factories/ProtocolFactory.js +0 -6
- package/lib/factories/ProtocolFactory.js.map +1 -1
- package/lib/factories/internal/metadata/iterate_metadata_object.js +4 -2
- package/lib/factories/internal/metadata/iterate_metadata_object.js.map +1 -1
- package/lib/factories/internal/protocols/iterate_protocol_main.js +2 -3
- package/lib/factories/internal/protocols/iterate_protocol_main.js.map +1 -1
- package/lib/factories/internal/protocols/iterate_protocol_map.js +3 -4
- package/lib/factories/internal/protocols/iterate_protocol_map.js.map +1 -1
- package/lib/factories/internal/protocols/iterate_protocol_metadata.js +2 -0
- package/lib/factories/internal/protocols/iterate_protocol_metadata.js.map +1 -1
- package/lib/factories/internal/protocols/iterate_protocol_repeated.js +3 -4
- package/lib/factories/internal/protocols/iterate_protocol_repeated.js.map +1 -1
- package/lib/factories/internal/protocols/iterate_protocol_tuple.js +3 -4
- package/lib/factories/internal/protocols/iterate_protocol_tuple.js.map +1 -1
- package/lib/functional/$number.js +2 -9
- package/lib/functional/$number.js.map +1 -1
- package/lib/metadata/Metadata.js +32 -29
- package/lib/metadata/Metadata.js.map +1 -1
- package/lib/programmers/AssertParseProgrammer.js +12 -1
- package/lib/programmers/AssertParseProgrammer.js.map +1 -1
- package/lib/programmers/AssertProgrammer.js +3 -2
- package/lib/programmers/AssertProgrammer.js.map +1 -1
- package/lib/programmers/AssertStringifyProgrammer.js +13 -2
- package/lib/programmers/AssertStringifyProgrammer.js.map +1 -1
- package/lib/programmers/CheckerProgrammer.d.ts +1 -0
- package/lib/programmers/CheckerProgrammer.js +153 -138
- package/lib/programmers/CheckerProgrammer.js.map +1 -1
- package/lib/programmers/IsParseProgrammer.js +12 -1
- package/lib/programmers/IsParseProgrammer.js.map +1 -1
- package/lib/programmers/IsProgrammer.js +5 -2
- package/lib/programmers/IsProgrammer.js.map +1 -1
- package/lib/programmers/IsStringifyProgrammer.js +13 -2
- package/lib/programmers/IsStringifyProgrammer.js.map +1 -1
- package/lib/programmers/MessageProgrammer.js +11 -6
- package/lib/programmers/MessageProgrammer.js.map +1 -1
- package/lib/programmers/StringifyProgrammer.js +6 -1
- package/lib/programmers/StringifyProgrammer.js.map +1 -1
- package/lib/programmers/ValidateParseProgrammer.js +12 -1
- package/lib/programmers/ValidateParseProgrammer.js.map +1 -1
- package/lib/programmers/ValidateProgrammer.js +3 -2
- package/lib/programmers/ValidateProgrammer.js.map +1 -1
- package/lib/programmers/ValidateStringifyProgrammer.js +13 -2
- package/lib/programmers/ValidateStringifyProgrammer.js.map +1 -1
- package/lib/programmers/helpers/OptionPredicator.d.ts +2 -1
- package/lib/programmers/helpers/OptionPredicator.js +8 -6
- package/lib/programmers/helpers/OptionPredicator.js.map +1 -1
- package/lib/programmers/helpers/UnionExplorer.d.ts +23 -29
- package/lib/programmers/helpers/UnionExplorer.js +29 -41
- package/lib/programmers/helpers/UnionExplorer.js.map +1 -1
- package/lib/programmers/internal/application_object.js +9 -9
- package/lib/programmers/internal/application_object.js.map +1 -1
- package/lib/programmers/internal/application_schema.js +14 -6
- package/lib/programmers/internal/application_schema.js.map +1 -1
- package/lib/programmers/internal/check_array.js +4 -32
- package/lib/programmers/internal/check_array.js.map +1 -1
- package/lib/programmers/internal/check_array_length.d.ts +1 -0
- package/lib/programmers/internal/check_array_length.js +47 -0
- package/lib/programmers/internal/check_array_length.js.map +1 -0
- package/lib/programmers/internal/check_bigint.d.ts +3 -0
- package/lib/programmers/internal/check_bigint.js +97 -0
- package/lib/programmers/internal/check_bigint.js.map +1 -0
- package/lib/programmers/internal/check_number.js +21 -23
- package/lib/programmers/internal/check_number.js.map +1 -1
- package/lib/programmers/internal/check_union_array_like.d.ts +21 -0
- package/lib/programmers/internal/check_union_array_like.js +83 -0
- package/lib/programmers/internal/check_union_array_like.js.map +1 -0
- package/lib/programmers/internal/check_union_tuple.d.ts +1 -0
- package/lib/programmers/internal/check_union_tuple.js +11 -0
- package/lib/programmers/internal/check_union_tuple.js.map +1 -0
- package/lib/schemas/IJsonSchema.d.ts +3 -5
- package/lib/transformers/ITransformOptions.d.ts +43 -2
- package/lib/transformers/features/miscellaneous/ApplicationTransformer.js +5 -3
- package/lib/transformers/features/miscellaneous/ApplicationTransformer.js.map +1 -1
- package/lib/transformers/features/stringifiers/StringifyTransformer.js +12 -1
- package/lib/transformers/features/stringifiers/StringifyTransformer.js.map +1 -1
- 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 +6 -5
- package/src/executable/internal/TypiaSetupWizard.ts +37 -24
- package/src/executable/typia.ts +7 -5
- package/src/factories/MetadataCollection.ts +2 -43
- package/src/factories/MetadataTagFactory.ts +5 -1
- package/src/factories/ProtocolFactory.ts +0 -5
- package/src/factories/internal/metadata/iterate_metadata_object.ts +6 -3
- package/src/factories/internal/protocols/iterate_protocol_main.ts +2 -3
- package/src/factories/internal/protocols/iterate_protocol_map.ts +3 -5
- package/src/factories/internal/protocols/iterate_protocol_metadata.ts +1 -0
- package/src/factories/internal/protocols/iterate_protocol_repeated.ts +3 -6
- package/src/factories/internal/protocols/iterate_protocol_tuple.ts +3 -6
- package/src/functional/$number.ts +2 -9
- package/src/metadata/Metadata.ts +10 -7
- package/src/programmers/AssertParseProgrammer.ts +11 -1
- package/src/programmers/AssertProgrammer.ts +4 -3
- package/src/programmers/AssertStringifyProgrammer.ts +22 -2
- package/src/programmers/CheckerProgrammer.ts +258 -200
- package/src/programmers/IsParseProgrammer.ts +11 -1
- package/src/programmers/IsProgrammer.ts +5 -2
- package/src/programmers/IsStringifyProgrammer.ts +22 -2
- package/src/programmers/MessageProgrammer.ts +12 -6
- package/src/programmers/StringifyProgrammer.ts +7 -1
- package/src/programmers/ValidateParseProgrammer.ts +11 -1
- package/src/programmers/ValidateProgrammer.ts +3 -2
- package/src/programmers/ValidateStringifyProgrammer.ts +22 -2
- package/src/programmers/helpers/OptionPredicator.ts +7 -10
- package/src/programmers/helpers/UnionExplorer.ts +75 -238
- package/src/programmers/internal/application_default.ts +1 -1
- package/src/programmers/internal/application_object.ts +5 -5
- package/src/programmers/internal/application_schema.ts +20 -5
- package/src/programmers/internal/check_array.ts +3 -25
- package/src/programmers/internal/check_array_length.ts +45 -0
- package/src/programmers/internal/check_bigint.ts +85 -0
- package/src/programmers/internal/check_number.ts +45 -51
- package/src/programmers/internal/check_union_array_like.ts +242 -0
- package/src/programmers/internal/check_union_tuple.ts +33 -0
- package/src/schemas/IJsonSchema.ts +4 -6
- package/src/transformers/ITransformOptions.ts +45 -2
- package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +7 -3
- package/src/transformers/features/stringifiers/StringifyTransformer.ts +11 -1
- package/src/utils/NameEncoder.ts +32 -0
- package/lib/transformers/features/miscellaneous/CreateInstanceTransformer.d.ts +0 -5
- package/lib/transformers/features/miscellaneous/CreateInstanceTransformer.js +0 -29
- package/lib/transformers/features/miscellaneous/CreateInstanceTransformer.js.map +0 -1
- package/src/transformers/features/miscellaneous/CreateInstanceTransformer.ts +0 -41
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check_union_tuple.js","sourceRoot":"","sources":["../../../src/programmers/internal/check_union_tuple.ts"],"names":[],"mappings":";;;AAOA,0DAAyD;AAOlD,IAAM,iBAAiB,GAC1B,UACI,OAAiB,EACjB,MAAiC,EACjC,QAA0B;IAE9B,OAAA,UACI,MAAqB,EACrB,QAAoB,EACpB,OAAmC,EACnC,IAAoB,EACpB,KAAoB;QAEpB,OAAA,qCAAiB,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAC3D,KAAK,EACL,QAAQ,EACR,OAAO,EACP,IAAI,CACP;IALD,CAKC;AAZL,CAYK,CAAC;AAlBG,QAAA,iBAAiB,qBAkBpB"}
|
|
@@ -3,11 +3,11 @@ import { IMetadataTag } from "../metadata/IMetadataTag";
|
|
|
3
3
|
import { Atomic } from "../typings/Atomic";
|
|
4
4
|
export type IJsonSchema = IJsonSchema.NotUnknown | IJsonSchema.IUnknown;
|
|
5
5
|
export declare namespace IJsonSchema {
|
|
6
|
-
type NotUnknown = IEnumeration<"boolean"> | IEnumeration<"number"> | IEnumeration<"
|
|
7
|
-
interface IEnumeration<Literal extends Atomic.Literal
|
|
6
|
+
type NotUnknown = IEnumeration<"boolean"> | IEnumeration<"number"> | IEnumeration<"string"> | IBoolean | INumber | IString | IArray | ITuple | IOneOf | IReference | IRecursiveReference | INullOnly;
|
|
7
|
+
interface IEnumeration<Literal extends Exclude<Atomic.Literal, "bigint">> extends IAtomic<Literal> {
|
|
8
8
|
enum: Array<Atomic.Mapper[Literal]>;
|
|
9
9
|
}
|
|
10
|
-
interface IAtomic<Literal extends Atomic.Literal
|
|
10
|
+
interface IAtomic<Literal extends Exclude<Atomic.Literal, "bigint">> extends ISignificant<Literal> {
|
|
11
11
|
default?: Atomic.Mapper[Literal];
|
|
12
12
|
}
|
|
13
13
|
interface IString extends IAtomic<"string"> {
|
|
@@ -25,8 +25,6 @@ export declare namespace IJsonSchema {
|
|
|
25
25
|
}
|
|
26
26
|
interface IBoolean extends IAtomic<"boolean"> {
|
|
27
27
|
}
|
|
28
|
-
interface IBigInt extends IAtomic<"bigint"> {
|
|
29
|
-
}
|
|
30
28
|
interface IArray extends ISignificant<"array"> {
|
|
31
29
|
items: IJsonSchema;
|
|
32
30
|
minItems?: number;
|
|
@@ -1,4 +1,45 @@
|
|
|
1
1
|
export interface ITransformOptions {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Whether to validate finite number or not.
|
|
4
|
+
*
|
|
5
|
+
* If configured true, number typed values would be validated by Number.isNaN().
|
|
6
|
+
*
|
|
7
|
+
* However, whatever you configure, it would be ignored when marshaling or parsing.
|
|
8
|
+
*
|
|
9
|
+
* - when marshaling, always be true
|
|
10
|
+
* - assertStringify()
|
|
11
|
+
* - validateEncode()
|
|
12
|
+
* - when parsing, always be false
|
|
13
|
+
* - assertParse()
|
|
14
|
+
* - isDecode()
|
|
15
|
+
*
|
|
16
|
+
* @default false
|
|
17
|
+
*/
|
|
18
|
+
finite?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Whether to validate finite number or not.
|
|
21
|
+
*
|
|
22
|
+
* If configured true, number typed values would be validated by Number.isFinite().
|
|
23
|
+
*
|
|
24
|
+
* However, whatever you configure, it can be ignored in below case.
|
|
25
|
+
*
|
|
26
|
+
* - when `finite` option is true, this option would be ignored
|
|
27
|
+
* - when marshaling, always be true
|
|
28
|
+
* - assertStringify()
|
|
29
|
+
* - validateEncode()
|
|
30
|
+
* - when parsing, always be false
|
|
31
|
+
* - assertParse()
|
|
32
|
+
* - isDecode()
|
|
33
|
+
*
|
|
34
|
+
* @default false
|
|
35
|
+
*/
|
|
36
|
+
numeric?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Whether to validate functional type or not.
|
|
39
|
+
*
|
|
40
|
+
* However, whatever you configure, it becomes false when marshaling or parsing.
|
|
41
|
+
*
|
|
42
|
+
* @default false
|
|
43
|
+
*/
|
|
44
|
+
functional?: boolean;
|
|
4
45
|
}
|
|
@@ -32,13 +32,15 @@ var ApplicationTransformer;
|
|
|
32
32
|
? "#/components/schemas"
|
|
33
33
|
: "components#/schemas";
|
|
34
34
|
});
|
|
35
|
-
var collection = new MetadataCollection_1.MetadataCollection(
|
|
36
|
-
replace: MetadataCollection_1.MetadataCollection.replace,
|
|
37
|
-
});
|
|
35
|
+
var collection = new MetadataCollection_1.MetadataCollection();
|
|
38
36
|
var metadatas = types.map(function (type) {
|
|
39
37
|
return MetadataFactory_1.MetadataFactory.generate(checker, collection, type, {
|
|
40
38
|
resolve: true,
|
|
41
39
|
constant: true,
|
|
40
|
+
validate: function (meta) {
|
|
41
|
+
if (meta.atomics.find(function (str) { return str === "bigint"; }))
|
|
42
|
+
throw new Error("Error on typia.application(): does not allow bigint type.");
|
|
43
|
+
},
|
|
42
44
|
});
|
|
43
45
|
});
|
|
44
46
|
var app = ApplicationProgrammer_1.ApplicationProgrammer.generate(metadatas, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationTransformer.js","sourceRoot":"","sources":["../../../../src/transformers/features/miscellaneous/ApplicationTransformer.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,oEAAmE;AACnE,4EAA2E;AAC3E,sEAAqE;AAKrE,oFAAmF;AAInF,IAAiB,sBAAsB,
|
|
1
|
+
{"version":3,"file":"ApplicationTransformer.js","sourceRoot":"","sources":["../../../../src/transformers/features/miscellaneous/ApplicationTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
14
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
15
|
};
|
|
@@ -16,7 +27,7 @@ var StringifyTransformer;
|
|
|
16
27
|
: project.checker.getTypeAtLocation(expression.arguments[0]);
|
|
17
28
|
if (type.isTypeParameter())
|
|
18
29
|
throw new Error("Error on typia.stringify(): non-specified generic argument.");
|
|
19
|
-
return typescript_1.default.factory.createCallExpression(StringifyProgrammer_1.StringifyProgrammer.generate(project, modulo)(type), undefined, [expression.arguments[0]]);
|
|
30
|
+
return typescript_1.default.factory.createCallExpression(StringifyProgrammer_1.StringifyProgrammer.generate(__assign(__assign({}, project), { options: __assign(__assign({}, project.options), { functional: false, numeric: true }) }), modulo)(type), undefined, [expression.arguments[0]]);
|
|
20
31
|
}
|
|
21
32
|
StringifyTransformer.transform = transform;
|
|
22
33
|
})(StringifyTransformer = exports.StringifyTransformer || (exports.StringifyTransformer = {}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringifyTransformer.js","sourceRoot":"","sources":["../../../../src/transformers/features/stringifiers/StringifyTransformer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StringifyTransformer.js","sourceRoot":"","sources":["../../../../src/transformers/features/stringifiers/StringifyTransformer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0DAA4B;AAE5B,gFAA+E;AAI/E,IAAiB,oBAAoB,CAkCpC;AAlCD,WAAiB,oBAAoB;IACjC,SAAgB,SAAS,CACrB,OAAiB,EACjB,MAAiC,EACjC,UAA6B;QAE7B,IAAI,UAAU,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YACjC,MAAM,IAAI,KAAK,+CAA8B,CAAC;QAElD,IAAM,IAAI,GACN,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;YACnD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAC/B,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAC9B;YACH,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,MAAM,IAAI,KAAK,+DAAgC,CAAC;QAEpD,OAAO,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CAClC,yCAAmB,CAAC,QAAQ,uBAEjB,OAAO,KACV,OAAO,wBACA,OAAO,CAAC,OAAO,KAClB,UAAU,EAAE,KAAK,EACjB,OAAO,EAAE,IAAI,QAGrB,MAAM,CACT,CAAC,IAAI,CAAC,EACP,SAAS,EACT,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAC7B,CAAC;IACN,CAAC;IAhCe,8BAAS,YAgCxB,CAAA;AACL,CAAC,EAlCgB,oBAAoB,GAApB,4BAAoB,KAApB,4BAAoB,QAkCpC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __values = (this && this.__values) || function(o) {
|
|
3
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
4
|
+
if (m) return m.call(o);
|
|
5
|
+
if (o && typeof o.length === "number") return {
|
|
6
|
+
next: function () {
|
|
7
|
+
if (o && i >= o.length) o = void 0;
|
|
8
|
+
return { value: o && o[i++], done: !o };
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
12
|
+
};
|
|
13
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
14
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
15
|
+
if (!m) return o;
|
|
16
|
+
var i = m.call(o), r, ar = [], e;
|
|
17
|
+
try {
|
|
18
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
19
|
+
}
|
|
20
|
+
catch (error) { e = { error: error }; }
|
|
21
|
+
finally {
|
|
22
|
+
try {
|
|
23
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
24
|
+
}
|
|
25
|
+
finally { if (e) throw e.error; }
|
|
26
|
+
}
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
+
exports.NameEncoder = void 0;
|
|
31
|
+
var NameEncoder;
|
|
32
|
+
(function (NameEncoder) {
|
|
33
|
+
function encode(str) {
|
|
34
|
+
var e_1, _a;
|
|
35
|
+
try {
|
|
36
|
+
for (var REPLACERS_1 = __values(REPLACERS), REPLACERS_1_1 = REPLACERS_1.next(); !REPLACERS_1_1.done; REPLACERS_1_1 = REPLACERS_1.next()) {
|
|
37
|
+
var _b = __read(REPLACERS_1_1.value, 2), before = _b[0], after = _b[1];
|
|
38
|
+
str = str.split(before).join(after);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
42
|
+
finally {
|
|
43
|
+
try {
|
|
44
|
+
if (REPLACERS_1_1 && !REPLACERS_1_1.done && (_a = REPLACERS_1.return)) _a.call(REPLACERS_1);
|
|
45
|
+
}
|
|
46
|
+
finally { if (e_1) throw e_1.error; }
|
|
47
|
+
}
|
|
48
|
+
return str;
|
|
49
|
+
}
|
|
50
|
+
NameEncoder.encode = encode;
|
|
51
|
+
function decode(str) {
|
|
52
|
+
var e_2, _a;
|
|
53
|
+
try {
|
|
54
|
+
for (var REPLACERS_2 = __values(REPLACERS), REPLACERS_2_1 = REPLACERS_2.next(); !REPLACERS_2_1.done; REPLACERS_2_1 = REPLACERS_2.next()) {
|
|
55
|
+
var _b = __read(REPLACERS_2_1.value, 2), before = _b[0], after = _b[1];
|
|
56
|
+
if (after !== "")
|
|
57
|
+
str = str.split(after).join(before);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
61
|
+
finally {
|
|
62
|
+
try {
|
|
63
|
+
if (REPLACERS_2_1 && !REPLACERS_2_1.done && (_a = REPLACERS_2.return)) _a.call(REPLACERS_2);
|
|
64
|
+
}
|
|
65
|
+
finally { if (e_2) throw e_2.error; }
|
|
66
|
+
}
|
|
67
|
+
return str;
|
|
68
|
+
}
|
|
69
|
+
NameEncoder.decode = decode;
|
|
70
|
+
})(NameEncoder = exports.NameEncoder || (exports.NameEncoder = {}));
|
|
71
|
+
var REPLACERS = [
|
|
72
|
+
["$", "_dollar_"],
|
|
73
|
+
["&", "_and_"],
|
|
74
|
+
["|", "_or_"],
|
|
75
|
+
["{", "_blt_"],
|
|
76
|
+
["}", "_bgt_"],
|
|
77
|
+
["<", "_lt_"],
|
|
78
|
+
[">", "_gt_"],
|
|
79
|
+
["(", "_lp_"],
|
|
80
|
+
[")", "_rp_"],
|
|
81
|
+
["[", "_alt_"],
|
|
82
|
+
["]", "_agt_"],
|
|
83
|
+
[",", "_comma_"],
|
|
84
|
+
["`", "_backquote_"],
|
|
85
|
+
["'", "_singlequote_"],
|
|
86
|
+
['"', "_doublequote_"],
|
|
87
|
+
[" ", "_space_"],
|
|
88
|
+
];
|
|
89
|
+
//# sourceMappingURL=NameEncoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NameEncoder.js","sourceRoot":"","sources":["../../src/utils/NameEncoder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAiB,WAAW,CAY3B;AAZD,WAAiB,WAAW;IACxB,SAAgB,MAAM,CAAC,GAAW;;;YAC9B,KAA8B,IAAA,cAAA,SAAA,SAAS,CAAA,oCAAA;gBAA5B,IAAA,KAAA,8BAAe,EAAd,MAAM,QAAA,EAAE,KAAK,QAAA;gBACrB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAAA;;;;;;;;;QACxC,OAAO,GAAG,CAAC;IACf,CAAC;IAJe,kBAAM,SAIrB,CAAA;IAED,SAAgB,MAAM,CAAC,GAAW;;;YAC9B,KAA8B,IAAA,cAAA,SAAA,SAAS,CAAA,oCAAA;gBAA5B,IAAA,KAAA,8BAAe,EAAd,MAAM,QAAA,EAAE,KAAK,QAAA;gBACrB,IAAI,KAAK,KAAK,EAAE;oBAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAAA;;;;;;;;;QAC1D,OAAO,GAAG,CAAC;IACf,CAAC;IAJe,kBAAM,SAIrB,CAAA;AACL,CAAC,EAZgB,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAY3B;AAED,IAAM,SAAS,GAAuB;IAClC,CAAC,GAAG,EAAE,UAAU,CAAC;IACjB,CAAC,GAAG,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,SAAS,CAAC;IAChB,CAAC,GAAG,EAAE,aAAa,CAAC;IACpB,CAAC,GAAG,EAAE,eAAe,CAAC;IACtB,CAAC,GAAG,EAAE,eAAe,CAAC;IACtB,CAAC,GAAG,EAAE,SAAS,CAAC;CACnB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typia",
|
|
3
|
-
"version": "3.5.0-dev.
|
|
3
|
+
"version": "3.5.0-dev.20230107",
|
|
4
4
|
"description": "Runtime type checkers and 5x faster JSON.stringify() function",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "lib/index.d.ts",
|
|
@@ -8,19 +8,20 @@
|
|
|
8
8
|
"typia": "./lib/executable/typia.js"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
|
-
"benchmark": "npm run build:
|
|
11
|
+
"benchmark": "npm run build:benchmark && node measure/benchmark",
|
|
12
12
|
"build": "rimraf lib && ttsc --removeComments --declaration false && ttsc --emitDeclarationOnly",
|
|
13
13
|
"build:test": "rimraf bin && ttsc -p tsconfig.test.json",
|
|
14
|
+
"build:benchmark": "rimraf measure && ttsc -p tsconfig.benchmark.json",
|
|
14
15
|
"build:test:prettier": "npm run build:test && prettier --write ./bin/**/*.js",
|
|
15
16
|
"dev": "rimraf lib && ttsc --watch",
|
|
16
17
|
"dev:test": "rimraf bin && ttsc -p tsconfig.test.json --watch",
|
|
17
18
|
"eslint": "eslint ./**/*.ts",
|
|
18
19
|
"eslint:fix": "eslint ./**/*.ts --fix",
|
|
19
20
|
"issue": "node test/issue",
|
|
21
|
+
"package:latest": "ts-node build/publish.ts latest",
|
|
22
|
+
"package:next": "ts-node build/publish.ts next",
|
|
23
|
+
"package:deprecate": "npm deprecate typescript-json \"Renamed to typia\"",
|
|
20
24
|
"prettier": "prettier --write ./**/*.ts",
|
|
21
|
-
"publish:latest": "ts-node build/publish.ts latest",
|
|
22
|
-
"publish:next": "ts-node build/publish.ts next",
|
|
23
|
-
"publish:deprecate": "npm deprecate typescript-json \"Renamed to typia\"",
|
|
24
25
|
"test": "node bin/test",
|
|
25
26
|
"test:generate": "ts-node -P tsconfig.test.json build/test.ts",
|
|
26
27
|
"test:manual": "node test/manual"
|
|
@@ -3,19 +3,24 @@ import type Comment from "comment-json";
|
|
|
3
3
|
import fs from "fs";
|
|
4
4
|
|
|
5
5
|
export namespace TypiaSetupWizard {
|
|
6
|
-
export
|
|
6
|
+
export interface IArguments {
|
|
7
|
+
manager: "npm" | "pnpm" | "yarn";
|
|
8
|
+
project: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export async function ttypescript(args: IArguments): Promise<void> {
|
|
7
12
|
// INSTALL
|
|
8
|
-
const pack: any = await prepare(manager);
|
|
9
|
-
add(manager)(pack)("ttypescript", true);
|
|
10
|
-
add(manager)(pack)("ts-node", true);
|
|
13
|
+
const pack: any = await prepare(args.manager);
|
|
14
|
+
add(args.manager)(pack)("ttypescript", true);
|
|
15
|
+
add(args.manager)(pack)("ts-node", true);
|
|
11
16
|
|
|
12
17
|
// TSCONFIG.JSON
|
|
13
|
-
await configure(
|
|
18
|
+
await configure(args)(pack);
|
|
14
19
|
}
|
|
15
20
|
|
|
16
|
-
export async function tsPatch(
|
|
21
|
+
export async function tsPatch(args: IArguments): Promise<void> {
|
|
17
22
|
// INSTALL
|
|
18
|
-
add(manager)(await prepare(manager))("ts-patch", true);
|
|
23
|
+
add(args.manager)(await prepare(args.manager))("ts-patch", true);
|
|
19
24
|
execute("npx ts-patch install");
|
|
20
25
|
|
|
21
26
|
// PACKAGE.JSON
|
|
@@ -37,7 +42,7 @@ export namespace TypiaSetupWizard {
|
|
|
37
42
|
);
|
|
38
43
|
|
|
39
44
|
// TSCONFIG.JSON
|
|
40
|
-
await configure(
|
|
45
|
+
await configure(args)(pack);
|
|
41
46
|
}
|
|
42
47
|
|
|
43
48
|
async function prepare(manager: string): Promise<any> {
|
|
@@ -48,29 +53,31 @@ export namespace TypiaSetupWizard {
|
|
|
48
53
|
await fs.promises.readFile("package.json", "utf8"),
|
|
49
54
|
);
|
|
50
55
|
const wizard = add(manager)(pack);
|
|
51
|
-
|
|
52
56
|
wizard("typia", false);
|
|
53
57
|
wizard("typescript", true);
|
|
54
58
|
return pack;
|
|
55
59
|
}
|
|
56
60
|
|
|
57
61
|
const configure =
|
|
58
|
-
(
|
|
62
|
+
(args: IArguments) =>
|
|
59
63
|
async (pack: any): Promise<void> => {
|
|
60
64
|
// VALIDATE PRERATATION
|
|
61
|
-
if (fs.existsSync(
|
|
62
|
-
execute("npx tsc --init");
|
|
63
|
-
if (fs.existsSync(
|
|
64
|
-
halt(() => {})(
|
|
65
|
+
if (fs.existsSync(args.project) === false) {
|
|
66
|
+
if (args.project === "tsconfig.json") execute("npx tsc --init");
|
|
67
|
+
if (fs.existsSync(args.project) === false)
|
|
68
|
+
halt(() => {})(`${args.project} file does not exist.`);
|
|
65
69
|
}
|
|
66
70
|
|
|
71
|
+
// INSTALL COMMENT-JSON FOR A WHILE
|
|
67
72
|
const temporary: boolean = !fs.existsSync(
|
|
68
73
|
"node_modules/comment-json",
|
|
69
74
|
);
|
|
70
|
-
if (temporary === true)
|
|
75
|
+
if (temporary === true)
|
|
76
|
+
add(args.manager)(pack)("comment-json", true);
|
|
71
77
|
|
|
72
78
|
const halter: (msg: string) => never = halt(() => {
|
|
73
|
-
if (temporary === true)
|
|
79
|
+
if (temporary === true)
|
|
80
|
+
remove(args.manager)("comment-json", true);
|
|
74
81
|
});
|
|
75
82
|
|
|
76
83
|
// READ TSCONFIG FILE
|
|
@@ -78,16 +85,17 @@ export namespace TypiaSetupWizard {
|
|
|
78
85
|
process.cwd() + "/node_modules/comment-json"
|
|
79
86
|
);
|
|
80
87
|
const config: Comment.CommentObject = Comment.parse(
|
|
81
|
-
await fs.promises.readFile(
|
|
88
|
+
await fs.promises.readFile(args.project, "utf8"),
|
|
82
89
|
) as Comment.CommentObject;
|
|
83
90
|
const options = config.compilerOptions as
|
|
84
91
|
| Comment.CommentObject
|
|
85
92
|
| undefined;
|
|
86
93
|
if (options === undefined)
|
|
87
94
|
halter(
|
|
88
|
-
|
|
95
|
+
`${args.project} file does not have "compilerOptions" property.`,
|
|
89
96
|
);
|
|
90
97
|
|
|
98
|
+
// PREPARE PLUGINS
|
|
91
99
|
const plugins: Comment.CommentArray<Comment.CommentObject> =
|
|
92
100
|
(() => {
|
|
93
101
|
const plugins = options.plugins as
|
|
@@ -97,7 +105,7 @@ export namespace TypiaSetupWizard {
|
|
|
97
105
|
return (options.plugins = [] as any);
|
|
98
106
|
else if (!Array.isArray(plugins))
|
|
99
107
|
halter(
|
|
100
|
-
`"plugins" property of
|
|
108
|
+
`"plugins" property of ${args.project} must be array type.`,
|
|
101
109
|
);
|
|
102
110
|
return plugins;
|
|
103
111
|
})();
|
|
@@ -113,19 +121,24 @@ export namespace TypiaSetupWizard {
|
|
|
113
121
|
|
|
114
122
|
if (strict === true && oldbie !== undefined) {
|
|
115
123
|
console.log(
|
|
116
|
-
|
|
124
|
+
`you've been already configured the ${args.project} file.`,
|
|
117
125
|
);
|
|
118
126
|
} else {
|
|
119
127
|
// DO CONFIGURE
|
|
120
128
|
options.strict = true;
|
|
121
|
-
|
|
122
|
-
|
|
129
|
+
if (oldbie === undefined)
|
|
130
|
+
plugins.push(
|
|
131
|
+
Comment.parse(`
|
|
132
|
+
{
|
|
133
|
+
"transform": "typia/lib/transform"
|
|
134
|
+
}`) as Comment.CommentObject,
|
|
135
|
+
);
|
|
123
136
|
await fs.promises.writeFile(
|
|
124
|
-
|
|
137
|
+
args.project,
|
|
125
138
|
Comment.stringify(config, null, 2),
|
|
126
139
|
);
|
|
127
140
|
}
|
|
128
|
-
if (temporary === true) remove(manager)("comment-json", false);
|
|
141
|
+
if (temporary === true) remove(args.manager)("comment-json", false);
|
|
129
142
|
};
|
|
130
143
|
}
|
|
131
144
|
|
package/src/executable/typia.ts
CHANGED
|
@@ -6,12 +6,13 @@ const USAGE = `Wrong command has been detected. Use like below:
|
|
|
6
6
|
|
|
7
7
|
npx typia setup \\
|
|
8
8
|
--compiler (ttypescript|ts-patch) \\
|
|
9
|
-
--manager (npm|pnpm|yarn)
|
|
9
|
+
--manager (npm|pnpm|yarn) \\
|
|
10
|
+
--project {tsconfig.json file path}
|
|
10
11
|
|
|
11
12
|
- npx typia setup
|
|
12
|
-
- npx typia setup --compiler ttypescript
|
|
13
13
|
- npx typia setup --compiler ts-patch
|
|
14
|
-
- npx typia setup --manager pnpm
|
|
14
|
+
- npx typia setup --manager pnpm
|
|
15
|
+
- npx typia setup --project tsconfig.test.json`;
|
|
15
16
|
|
|
16
17
|
function halt(desc: string): never {
|
|
17
18
|
console.error(desc);
|
|
@@ -24,6 +25,7 @@ async function setup(): Promise<void> {
|
|
|
24
25
|
);
|
|
25
26
|
const manager: string = options.manager ?? "npm";
|
|
26
27
|
const compiler: string = options.compiler ?? "ttypescript";
|
|
28
|
+
const project: string = options.project ?? "tsconfig.json";
|
|
27
29
|
|
|
28
30
|
if (
|
|
29
31
|
(compiler !== "ttypescript" && compiler !== "ts-patch") ||
|
|
@@ -31,8 +33,8 @@ async function setup(): Promise<void> {
|
|
|
31
33
|
)
|
|
32
34
|
halt(USAGE);
|
|
33
35
|
else if (compiler === "ttypescript")
|
|
34
|
-
await TypiaSetupWizard.ttypescript(manager);
|
|
35
|
-
else await TypiaSetupWizard.tsPatch(manager);
|
|
36
|
+
await TypiaSetupWizard.ttypescript({ manager, project });
|
|
37
|
+
else await TypiaSetupWizard.tsPatch({ manager, project });
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
async function main(): Promise<void> {
|
|
@@ -14,9 +14,7 @@ export class MetadataCollection {
|
|
|
14
14
|
private readonly unions_: Map<string, MetadataObject[]>;
|
|
15
15
|
private index_: number;
|
|
16
16
|
|
|
17
|
-
public constructor(
|
|
18
|
-
private readonly options?: Partial<MetadataCollection.IOptions>,
|
|
19
|
-
) {
|
|
17
|
+
public constructor() {
|
|
20
18
|
this.dict_ = new Map();
|
|
21
19
|
this.names_ = new Map();
|
|
22
20
|
this.unions_ = new Map();
|
|
@@ -67,11 +65,7 @@ export class MetadataCollection {
|
|
|
67
65
|
}
|
|
68
66
|
|
|
69
67
|
private get_name(checker: ts.TypeChecker, type: ts.Type): string {
|
|
70
|
-
const name: string = (
|
|
71
|
-
const str: string = TypeFactory.getFullName(checker, type);
|
|
72
|
-
return this.options?.replace ? this.options.replace(str) : str;
|
|
73
|
-
})();
|
|
74
|
-
|
|
68
|
+
const name: string = TypeFactory.getFullName(checker, type);
|
|
75
69
|
const duplicates: Map<ts.Type, string> = MapUtil.take(
|
|
76
70
|
this.names_,
|
|
77
71
|
name,
|
|
@@ -87,38 +81,3 @@ export class MetadataCollection {
|
|
|
87
81
|
return addicted;
|
|
88
82
|
}
|
|
89
83
|
}
|
|
90
|
-
export namespace MetadataCollection {
|
|
91
|
-
export interface IOptions {
|
|
92
|
-
replace?(str: string): string;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
export function replace(str: string): string {
|
|
96
|
-
for (const [before, after] of REPLACERS)
|
|
97
|
-
str = str.split(before).join(after);
|
|
98
|
-
return str;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
export function escape(str: string): string {
|
|
102
|
-
for (const [before, after] of REPLACERS)
|
|
103
|
-
if (after !== "") str = str.split(after).join(before);
|
|
104
|
-
return str;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
const REPLACERS: [string, string][] = [
|
|
108
|
-
["$", "_dollar_"],
|
|
109
|
-
["&", "_and_"],
|
|
110
|
-
["|", "_or_"],
|
|
111
|
-
["{", "_blt_"],
|
|
112
|
-
["}", "_bgt_"],
|
|
113
|
-
["<", "_lt_"],
|
|
114
|
-
[">", "_gt_"],
|
|
115
|
-
["(", "_lp_"],
|
|
116
|
-
[")", "_rp_"],
|
|
117
|
-
["[", "_alt_"],
|
|
118
|
-
["]", "_agt_"],
|
|
119
|
-
[",", "_comma_"],
|
|
120
|
-
["`", "_backquote_"],
|
|
121
|
-
["'", "_singlequote_"],
|
|
122
|
-
['"', "_doublequote_"],
|
|
123
|
-
[" ", "_space_"],
|
|
124
|
-
];
|
|
@@ -330,8 +330,12 @@ function validate(
|
|
|
330
330
|
}
|
|
331
331
|
|
|
332
332
|
function has_atomic(metadata: Metadata, type: "string" | "number"): boolean {
|
|
333
|
+
const valid =
|
|
334
|
+
type === "number"
|
|
335
|
+
? (atom: string) => atom === type || atom === "bigint"
|
|
336
|
+
: (atom: string) => atom === type;
|
|
333
337
|
return (
|
|
334
|
-
metadata.atomics.find((atom) => atom
|
|
338
|
+
metadata.atomics.find((atom) => valid(atom)) !== undefined ||
|
|
335
339
|
metadata.arrays.some((child) => has_atomic(child, type)) ||
|
|
336
340
|
metadata.tuples.some((tuple) =>
|
|
337
341
|
tuple.some((child) => has_atomic(child, type)),
|
|
@@ -9,11 +9,6 @@ import { emplace_protocol_object } from "./internal/protocols/emplace_protocol_o
|
|
|
9
9
|
import { iterate_protocol_main } from "./internal/protocols/iterate_protocol_main";
|
|
10
10
|
|
|
11
11
|
export namespace ProtocolFactory {
|
|
12
|
-
export const collection = () =>
|
|
13
|
-
new MetadataCollection({
|
|
14
|
-
replace: MetadataCollection.replace,
|
|
15
|
-
});
|
|
16
|
-
|
|
17
12
|
export const metadata =
|
|
18
13
|
(checker: ts.TypeChecker) =>
|
|
19
14
|
(collection: MetadataCollection) =>
|
|
@@ -16,10 +16,13 @@ export const iterate_metadata_object =
|
|
|
16
16
|
(collection: MetadataCollection) =>
|
|
17
17
|
(meta: Metadata, type: ts.Type, parentResolved: boolean): boolean => {
|
|
18
18
|
const filter = (flag: ts.TypeFlags) => (type.getFlags() & flag) !== 0;
|
|
19
|
-
if (
|
|
19
|
+
if (
|
|
20
|
+
!filter(ts.TypeFlags.Object) &&
|
|
21
|
+
!type.isIntersection() &&
|
|
22
|
+
(type as any).intrinsicName !== "object"
|
|
23
|
+
)
|
|
20
24
|
return false;
|
|
21
|
-
|
|
22
|
-
if (type.isIntersection()) {
|
|
25
|
+
else if (type.isIntersection()) {
|
|
23
26
|
const fakeCollection = new MetadataCollection();
|
|
24
27
|
const fakeSchema: Metadata = Metadata.initialize();
|
|
25
28
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Metadata } from "../../../metadata/Metadata";
|
|
2
2
|
|
|
3
3
|
import { IProtocolMessage } from "../../../messages/IProtocolMessage";
|
|
4
|
-
import { MetadataCollection } from "../../MetadataCollection";
|
|
5
4
|
import { ProtocolMetadataUtil } from "./ProtocolMetadataUtil";
|
|
6
5
|
import { emplace_protocol_object } from "./emplace_protocol_object";
|
|
7
6
|
|
|
@@ -10,11 +9,11 @@ export const iterate_protocol_main =
|
|
|
10
9
|
(meta: Metadata): string => {
|
|
11
10
|
// ONLY ONE OBJECT TYPE
|
|
12
11
|
if (ProtocolMetadataUtil.standalone(meta) && meta.objects.length === 1)
|
|
13
|
-
return
|
|
12
|
+
return meta.getName();
|
|
14
13
|
|
|
15
14
|
const obj = ProtocolMetadataUtil.object("__Main", dict.size);
|
|
16
15
|
obj.properties.push(ProtocolMetadataUtil.property("value", meta, []));
|
|
17
16
|
emplace_protocol_object(dict)(obj);
|
|
18
17
|
|
|
19
|
-
return
|
|
18
|
+
return obj.name;
|
|
20
19
|
};
|
|
@@ -2,7 +2,6 @@ import { Metadata } from "../../../metadata/Metadata";
|
|
|
2
2
|
import { MetadataObject } from "../../../metadata/MetadataObject";
|
|
3
3
|
|
|
4
4
|
import { IProtocolMessage } from "../../../messages/IProtocolMessage";
|
|
5
|
-
import { MetadataCollection } from "../../MetadataCollection";
|
|
6
5
|
import { ProtocolMetadataUtil } from "./ProtocolMetadataUtil";
|
|
7
6
|
import { emplace_protocol_object } from "./emplace_protocol_object";
|
|
8
7
|
import { iterate_protocol_atomic } from "./iterate_protocol_atomic";
|
|
@@ -27,14 +26,13 @@ const getValueName =
|
|
|
27
26
|
(container: "Object" | "Map") =>
|
|
28
27
|
(dict: Map<string, IProtocolMessage>) =>
|
|
29
28
|
(meta: Metadata) => {
|
|
30
|
-
if (ProtocolMetadataUtil.standalone(meta))
|
|
31
|
-
return MetadataCollection.escape(meta.getName());
|
|
29
|
+
if (ProtocolMetadataUtil.standalone(meta)) return meta.getName();
|
|
32
30
|
|
|
33
31
|
const obj: MetadataObject = ProtocolMetadataUtil.object(
|
|
34
|
-
|
|
32
|
+
`${container}.Value<${meta.getName()}>`,
|
|
35
33
|
dict.size,
|
|
36
34
|
);
|
|
37
35
|
obj.properties.push(ProtocolMetadataUtil.property("value", meta, []));
|
|
38
36
|
emplace_protocol_object(dict)(obj);
|
|
39
|
-
return
|
|
37
|
+
return obj.name;
|
|
40
38
|
};
|
|
@@ -44,6 +44,7 @@ export const iterate_protocol_metadata =
|
|
|
44
44
|
add(iterate_protocol_atomic(tags)(type));
|
|
45
45
|
for (const constant of meta.constants)
|
|
46
46
|
add(iterate_protocol_constant(constant));
|
|
47
|
+
if (meta.templates.length) add("string");
|
|
47
48
|
|
|
48
49
|
// INSTANCE TYPES
|
|
49
50
|
for (const obj of meta.objects)
|
|
@@ -3,7 +3,6 @@ import { Metadata } from "../../../metadata/Metadata";
|
|
|
3
3
|
import { MetadataObject } from "../../../metadata/MetadataObject";
|
|
4
4
|
|
|
5
5
|
import { IProtocolMessage } from "../../../messages/IProtocolMessage";
|
|
6
|
-
import { MetadataCollection } from "../../MetadataCollection";
|
|
7
6
|
import { ProtocolMetadataUtil } from "./ProtocolMetadataUtil";
|
|
8
7
|
import { emplace_protocol_object } from "./emplace_protocol_object";
|
|
9
8
|
|
|
@@ -14,15 +13,13 @@ export const iterate_protocol_repeated =
|
|
|
14
13
|
(meta: Metadata) =>
|
|
15
14
|
(tags: IMetadataTag[]): string => {
|
|
16
15
|
sole &&= ProtocolMetadataUtil.standalone(meta);
|
|
17
|
-
if (sole === true) return
|
|
16
|
+
if (sole === true) return meta.getName();
|
|
18
17
|
|
|
19
18
|
const obj: MetadataObject = ProtocolMetadataUtil.object(
|
|
20
|
-
|
|
21
|
-
`${container}.Element<${meta.getName()}>`,
|
|
22
|
-
),
|
|
19
|
+
`${container}.Element<${meta.getName()}>`,
|
|
23
20
|
dict.size,
|
|
24
21
|
);
|
|
25
22
|
obj.properties.push(ProtocolMetadataUtil.property("value", meta, tags));
|
|
26
23
|
emplace_protocol_object(dict)(obj);
|
|
27
|
-
return
|
|
24
|
+
return obj.name;
|
|
28
25
|
};
|