typia 3.5.0-dev.20230125 → 3.5.0-dev.20230211

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 (227) hide show
  1. package/README.md +64 -71
  2. package/lib/factories/MetadataCollection.d.ts +9 -1
  3. package/lib/factories/MetadataCollection.js +75 -2
  4. package/lib/factories/MetadataCollection.js.map +1 -1
  5. package/lib/factories/internal/metadata/iterate_metadata_native.js +0 -3
  6. package/lib/factories/internal/metadata/iterate_metadata_native.js.map +1 -1
  7. package/lib/functional/$is_between.d.ts +1 -0
  8. package/lib/functional/$is_between.js +8 -0
  9. package/lib/functional/$is_between.js.map +1 -0
  10. package/lib/metadata/IMetadataTag.d.ts +3 -7
  11. package/lib/metadata/Metadata.js +2 -2
  12. package/lib/metadata/Metadata.js.map +1 -1
  13. package/lib/module.d.ts +33 -3
  14. package/lib/module.js +36 -8
  15. package/lib/module.js.map +1 -1
  16. package/lib/programmers/AssertProgrammer.js +3 -2
  17. package/lib/programmers/AssertProgrammer.js.map +1 -1
  18. package/lib/programmers/CheckerProgrammer.d.ts +2 -2
  19. package/lib/programmers/CheckerProgrammer.js +21 -16
  20. package/lib/programmers/CheckerProgrammer.js.map +1 -1
  21. package/lib/programmers/FeatureProgrammer.d.ts +114 -18
  22. package/lib/programmers/FeatureProgrammer.js +4 -4
  23. package/lib/programmers/FeatureProgrammer.js.map +1 -1
  24. package/lib/programmers/IsProgrammer.d.ts +4 -3
  25. package/lib/programmers/IsProgrammer.js +72 -61
  26. package/lib/programmers/IsProgrammer.js.map +1 -1
  27. package/lib/programmers/PruneProgrammer.d.ts +5 -0
  28. package/lib/programmers/PruneProgrammer.js +279 -0
  29. package/lib/programmers/PruneProgrammer.js.map +1 -0
  30. package/lib/programmers/StringifyProgrammer.js +26 -21
  31. package/lib/programmers/StringifyProgrammer.js.map +1 -1
  32. package/lib/programmers/ValidateProgrammer.js +3 -2
  33. package/lib/programmers/ValidateProgrammer.js.map +1 -1
  34. package/lib/programmers/helpers/AtomicPredicator.d.ts +2 -0
  35. package/lib/programmers/helpers/AtomicPredicator.js +9 -1
  36. package/lib/programmers/helpers/AtomicPredicator.js.map +1 -1
  37. package/lib/programmers/helpers/IExpressionEntry.d.ts +2 -2
  38. package/lib/programmers/helpers/OptionPredicator.d.ts +1 -0
  39. package/lib/programmers/helpers/OptionPredicator.js +4 -0
  40. package/lib/programmers/helpers/OptionPredicator.js.map +1 -1
  41. package/lib/programmers/helpers/PruneJoiner.d.ts +8 -0
  42. package/lib/programmers/helpers/PruneJoiner.js +60 -0
  43. package/lib/programmers/helpers/PruneJoiner.js.map +1 -0
  44. package/lib/programmers/helpers/StringifyJoinder.d.ts +1 -1
  45. package/lib/programmers/helpers/StringifyJoinder.js +2 -4
  46. package/lib/programmers/helpers/StringifyJoinder.js.map +1 -1
  47. package/lib/programmers/internal/application_object.js +11 -11
  48. package/lib/programmers/internal/application_object.js.map +1 -1
  49. package/lib/programmers/internal/application_schema.js +21 -12
  50. package/lib/programmers/internal/application_schema.js.map +1 -1
  51. package/lib/programmers/internal/check_dynamic_properties.js +34 -11
  52. package/lib/programmers/internal/check_dynamic_properties.js.map +1 -1
  53. package/lib/programmers/internal/check_native.js +9 -1
  54. package/lib/programmers/internal/check_native.js.map +1 -1
  55. package/lib/programmers/internal/check_object.d.ts +1 -0
  56. package/lib/programmers/internal/check_object.js +13 -9
  57. package/lib/programmers/internal/check_object.js.map +1 -1
  58. package/lib/programmers/internal/check_union_array_like.d.ts +1 -1
  59. package/lib/programmers/internal/check_union_array_like.js +3 -1
  60. package/lib/programmers/internal/check_union_array_like.js.map +1 -1
  61. package/lib/programmers/internal/feature_object_entries.d.ts +2 -2
  62. package/lib/programmers/internal/feature_object_entries.js.map +1 -1
  63. package/lib/programmers/internal/prune_object_properties.d.ts +1 -0
  64. package/lib/programmers/internal/prune_object_properties.js +28 -0
  65. package/lib/programmers/internal/prune_object_properties.js.map +1 -0
  66. package/lib/programmers/internal/stringify_dynamic_properties.js.map +1 -1
  67. package/lib/programmers/internal/stringify_regular_properties.js.map +1 -1
  68. package/lib/transformers/CallExpressionTransformer.js +5 -3
  69. package/lib/transformers/CallExpressionTransformer.js.map +1 -1
  70. package/lib/transformers/ITransformOptions.d.ts +14 -0
  71. package/lib/transformers/features/miscellaneous/ApplicationTransformer.js +3 -1
  72. package/lib/transformers/features/miscellaneous/ApplicationTransformer.js.map +1 -1
  73. package/lib/transformers/features/miscellaneous/CreatePruneTransformer.d.ts +5 -0
  74. package/lib/transformers/features/miscellaneous/CreatePruneTransformer.js +17 -0
  75. package/lib/transformers/features/miscellaneous/CreatePruneTransformer.js.map +1 -0
  76. package/lib/transformers/features/miscellaneous/PruneTransformer.d.ts +5 -0
  77. package/lib/transformers/features/miscellaneous/PruneTransformer.js +34 -0
  78. package/lib/transformers/features/miscellaneous/PruneTransformer.js.map +1 -0
  79. package/package.json +5 -4
  80. package/src/factories/MetadataCollection.ts +41 -2
  81. package/src/factories/internal/metadata/iterate_metadata_native.ts +0 -5
  82. package/src/functional/$is_between.ts +7 -0
  83. package/src/metadata/IMetadataTag.ts +4 -19
  84. package/src/metadata/Metadata.ts +3 -6
  85. package/src/module.ts +91 -17
  86. package/src/programmers/AssertProgrammer.ts +3 -2
  87. package/src/programmers/CheckerProgrammer.ts +21 -13
  88. package/src/programmers/FeatureProgrammer.ts +146 -21
  89. package/src/programmers/IsProgrammer.ts +107 -87
  90. package/src/programmers/PruneProgrammer.ts +320 -0
  91. package/src/programmers/StringifyProgrammer.ts +51 -34
  92. package/src/programmers/ValidateProgrammer.ts +3 -2
  93. package/src/programmers/helpers/AtomicPredicator.ts +17 -1
  94. package/src/programmers/helpers/IExpressionEntry.ts +4 -2
  95. package/src/programmers/helpers/OptionPredicator.ts +4 -0
  96. package/src/programmers/helpers/PruneJoiner.ts +52 -0
  97. package/src/programmers/helpers/StringifyJoinder.ts +7 -4
  98. package/src/programmers/internal/application_object.ts +5 -5
  99. package/src/programmers/internal/application_schema.ts +33 -27
  100. package/src/programmers/internal/check_dynamic_properties.ts +67 -16
  101. package/src/programmers/internal/check_native.ts +14 -2
  102. package/src/programmers/internal/check_object.ts +8 -2
  103. package/src/programmers/internal/check_union_array_like.ts +4 -2
  104. package/src/programmers/internal/feature_object_entries.ts +6 -1
  105. package/src/programmers/internal/prune_object_properties.ts +60 -0
  106. package/src/programmers/internal/stringify_dynamic_properties.ts +2 -2
  107. package/src/programmers/internal/stringify_regular_properties.ts +2 -2
  108. package/src/transformers/CallExpressionTransformer.ts +15 -16
  109. package/src/transformers/ITransformOptions.ts +15 -0
  110. package/src/transformers/features/miscellaneous/ApplicationTransformer.ts +3 -1
  111. package/src/transformers/features/{protocols/MessageTransformer.ts → miscellaneous/CreatePruneTransformer.ts} +6 -7
  112. package/src/transformers/features/miscellaneous/PruneTransformer.ts +46 -0
  113. package/lib/factories/ProtocolFactory.d.ts +0 -8
  114. package/lib/factories/ProtocolFactory.js +0 -119
  115. package/lib/factories/ProtocolFactory.js.map +0 -1
  116. package/lib/factories/internal/protocols/ProtocolMetadataUtil.d.ts +0 -16
  117. package/lib/factories/internal/protocols/ProtocolMetadataUtil.js +0 -156
  118. package/lib/factories/internal/protocols/ProtocolMetadataUtil.js.map +0 -1
  119. package/lib/factories/internal/protocols/emplace_protocol_object.d.ts +0 -3
  120. package/lib/factories/internal/protocols/emplace_protocol_object.js +0 -44
  121. package/lib/factories/internal/protocols/emplace_protocol_object.js.map +0 -1
  122. package/lib/factories/internal/protocols/emplace_protocol_property.d.ts +0 -4
  123. package/lib/factories/internal/protocols/emplace_protocol_property.js +0 -20
  124. package/lib/factories/internal/protocols/emplace_protocol_property.js.map +0 -1
  125. package/lib/factories/internal/protocols/iterate_protocol_atomic.d.ts +0 -3
  126. package/lib/factories/internal/protocols/iterate_protocol_atomic.js +0 -69
  127. package/lib/factories/internal/protocols/iterate_protocol_atomic.js.map +0 -1
  128. package/lib/factories/internal/protocols/iterate_protocol_constant.d.ts +0 -2
  129. package/lib/factories/internal/protocols/iterate_protocol_constant.js +0 -30
  130. package/lib/factories/internal/protocols/iterate_protocol_constant.js.map +0 -1
  131. package/lib/factories/internal/protocols/iterate_protocol_main.d.ts +0 -3
  132. package/lib/factories/internal/protocols/iterate_protocol_main.js +0 -17
  133. package/lib/factories/internal/protocols/iterate_protocol_main.js.map +0 -1
  134. package/lib/factories/internal/protocols/iterate_protocol_map.d.ts +0 -4
  135. package/lib/factories/internal/protocols/iterate_protocol_map.js +0 -75
  136. package/lib/factories/internal/protocols/iterate_protocol_map.js.map +0 -1
  137. package/lib/factories/internal/protocols/iterate_protocol_metadata.d.ts +0 -5
  138. package/lib/factories/internal/protocols/iterate_protocol_metadata.js +0 -190
  139. package/lib/factories/internal/protocols/iterate_protocol_metadata.js.map +0 -1
  140. package/lib/factories/internal/protocols/iterate_protocol_native.d.ts +0 -2
  141. package/lib/factories/internal/protocols/iterate_protocol_native.js +0 -33
  142. package/lib/factories/internal/protocols/iterate_protocol_native.js.map +0 -1
  143. package/lib/factories/internal/protocols/iterate_protocol_never.d.ts +0 -1
  144. package/lib/factories/internal/protocols/iterate_protocol_never.js +0 -6
  145. package/lib/factories/internal/protocols/iterate_protocol_never.js.map +0 -1
  146. package/lib/factories/internal/protocols/iterate_protocol_object.d.ts +0 -4
  147. package/lib/factories/internal/protocols/iterate_protocol_object.js +0 -157
  148. package/lib/factories/internal/protocols/iterate_protocol_object.js.map +0 -1
  149. package/lib/factories/internal/protocols/iterate_protocol_repeated.d.ts +0 -5
  150. package/lib/factories/internal/protocols/iterate_protocol_repeated.js +0 -25
  151. package/lib/factories/internal/protocols/iterate_protocol_repeated.js.map +0 -1
  152. package/lib/factories/internal/protocols/iterate_protocol_tuple.d.ts +0 -3
  153. package/lib/factories/internal/protocols/iterate_protocol_tuple.js +0 -46
  154. package/lib/factories/internal/protocols/iterate_protocol_tuple.js.map +0 -1
  155. package/lib/functional/$proto_bytes.d.ts +0 -2
  156. package/lib/functional/$proto_bytes.js +0 -37
  157. package/lib/functional/$proto_bytes.js.map +0 -1
  158. package/lib/functional/$proto_field.d.ts +0 -10
  159. package/lib/functional/$proto_field.js +0 -42
  160. package/lib/functional/$proto_field.js.map +0 -1
  161. package/lib/functional/$proto_float.d.ts +0 -4
  162. package/lib/functional/$proto_float.js +0 -28
  163. package/lib/functional/$proto_float.js.map +0 -1
  164. package/lib/functional/$proto_i32.d.ts +0 -2
  165. package/lib/functional/$proto_i32.js +0 -23
  166. package/lib/functional/$proto_i32.js.map +0 -1
  167. package/lib/functional/$proto_i64.d.ts +0 -2
  168. package/lib/functional/$proto_i64.js +0 -31
  169. package/lib/functional/$proto_i64.js.map +0 -1
  170. package/lib/functional/$proto_size.d.ts +0 -6
  171. package/lib/functional/$proto_size.js +0 -76
  172. package/lib/functional/$proto_size.js.map +0 -1
  173. package/lib/functional/$proto_string.d.ts +0 -2
  174. package/lib/functional/$proto_string.js +0 -34
  175. package/lib/functional/$proto_string.js.map +0 -1
  176. package/lib/functional/$varint.d.ts +0 -6
  177. package/lib/functional/$varint.js +0 -99
  178. package/lib/functional/$varint.js.map +0 -1
  179. package/lib/functional/$zigzag.d.ts +0 -4
  180. package/lib/functional/$zigzag.js +0 -34
  181. package/lib/functional/$zigzag.js.map +0 -1
  182. package/lib/messages/IProtocolMap.d.ts +0 -5
  183. package/lib/messages/IProtocolMap.js +0 -3
  184. package/lib/messages/IProtocolMap.js.map +0 -1
  185. package/lib/messages/IProtocolMessage.d.ts +0 -5
  186. package/lib/messages/IProtocolMessage.js +0 -3
  187. package/lib/messages/IProtocolMessage.js.map +0 -1
  188. package/lib/messages/IProtocolProperty.d.ts +0 -12
  189. package/lib/messages/IProtocolProperty.js +0 -3
  190. package/lib/messages/IProtocolProperty.js.map +0 -1
  191. package/lib/programmers/MessageProgrammer.d.ts +0 -5
  192. package/lib/programmers/MessageProgrammer.js +0 -141
  193. package/lib/programmers/MessageProgrammer.js.map +0 -1
  194. package/lib/transformers/features/protocols/MessageTransformer.d.ts +0 -5
  195. package/lib/transformers/features/protocols/MessageTransformer.js +0 -17
  196. package/lib/transformers/features/protocols/MessageTransformer.js.map +0 -1
  197. package/lib/utils/NameEncoder.d.ts +0 -4
  198. package/lib/utils/NameEncoder.js +0 -89
  199. package/lib/utils/NameEncoder.js.map +0 -1
  200. package/src/factories/ProtocolFactory.ts +0 -92
  201. package/src/factories/internal/protocols/ProtocolMetadataUtil.ts +0 -163
  202. package/src/factories/internal/protocols/emplace_protocol_object.ts +0 -23
  203. package/src/factories/internal/protocols/emplace_protocol_property.ts +0 -12
  204. package/src/factories/internal/protocols/iterate_protocol_atomic.ts +0 -34
  205. package/src/factories/internal/protocols/iterate_protocol_constant.ts +0 -27
  206. package/src/factories/internal/protocols/iterate_protocol_main.ts +0 -19
  207. package/src/factories/internal/protocols/iterate_protocol_map.ts +0 -58
  208. package/src/factories/internal/protocols/iterate_protocol_metadata.ts +0 -96
  209. package/src/factories/internal/protocols/iterate_protocol_native.ts +0 -34
  210. package/src/factories/internal/protocols/iterate_protocol_never.ts +0 -1
  211. package/src/factories/internal/protocols/iterate_protocol_object.ts +0 -110
  212. package/src/factories/internal/protocols/iterate_protocol_repeated.ts +0 -34
  213. package/src/factories/internal/protocols/iterate_protocol_tuple.ts +0 -29
  214. package/src/functional/$proto_bytes.ts +0 -25
  215. package/src/functional/$proto_field.ts +0 -30
  216. package/src/functional/$proto_float.ts +0 -37
  217. package/src/functional/$proto_i32.ts +0 -29
  218. package/src/functional/$proto_i64.ts +0 -37
  219. package/src/functional/$proto_size.ts +0 -82
  220. package/src/functional/$proto_string.ts +0 -24
  221. package/src/functional/$varint.ts +0 -130
  222. package/src/functional/$zigzag.ts +0 -39
  223. package/src/messages/IProtocolMap.ts +0 -5
  224. package/src/messages/IProtocolMessage.ts +0 -6
  225. package/src/messages/IProtocolProperty.ts +0 -13
  226. package/src/programmers/MessageProgrammer.ts +0 -126
  227. package/src/utils/NameEncoder.ts +0 -32
@@ -5,18 +5,19 @@ import { CheckerProgrammer } from "./CheckerProgrammer";
5
5
  import { FunctionImporter } from "./helpers/FunctionImporeter";
6
6
  import { IExpressionEntry } from "./helpers/IExpressionEntry";
7
7
  export declare namespace IsProgrammer {
8
- const CONFIG: (options?: Partial<CONFIG.IOptions>) => CheckerProgrammer.IConfig;
8
+ const CONFIG: (options?: Partial<CONFIG.IOptions>) => (importer: FunctionImporter) => CheckerProgrammer.IConfig;
9
9
  namespace CONFIG {
10
10
  interface IOptions {
11
11
  numeric: boolean;
12
- object: (entries: IExpressionEntry[]) => ts.Expression;
12
+ undefined: boolean;
13
+ object: (input: ts.Expression, entries: IExpressionEntry<ts.Expression>[]) => ts.Expression;
13
14
  }
14
15
  }
15
16
  function generate(project: IProject, modulo: ts.LeftHandSideExpression, equals?: boolean): (type: ts.Type) => ts.ArrowFunction;
16
17
  const generate_functors: (project: IProject, importer: FunctionImporter) => (collection: import("../factories/MetadataCollection").MetadataCollection) => ts.VariableStatement[];
17
18
  const generate_unioners: (project: IProject, importer: FunctionImporter) => (collection: import("../factories/MetadataCollection").MetadataCollection) => ts.VariableStatement[];
18
19
  const decode: (project: IProject, importer: FunctionImporter) => (input: ts.Expression, meta: import("../metadata/Metadata").Metadata, explore: CheckerProgrammer.IExplore, tags: import("../metadata/IMetadataTag").IMetadataTag[]) => ts.Expression;
19
- const decode_object: () => (input: ts.Expression, obj: MetadataObject, explore: CheckerProgrammer.IExplore) => ts.CallExpression;
20
+ const decode_object: (importer: FunctionImporter) => (input: ts.Expression, obj: MetadataObject, explore: CheckerProgrammer.IExplore) => ts.CallExpression;
20
21
  function decode_to_json(input: ts.Expression): ts.Expression;
21
22
  function decode_functional(input: ts.Expression): ts.BinaryExpression;
22
23
  }
@@ -15,87 +15,98 @@ var check_object_1 = require("./internal/check_object");
15
15
  var feature_object_entries_1 = require("./internal/feature_object_entries");
16
16
  var IsProgrammer;
17
17
  (function (IsProgrammer) {
18
- IsProgrammer.CONFIG = function (options) { return ({
19
- functors: "$io",
20
- unioners: "$iu",
21
- trace: false,
22
- path: false,
23
- equals: !!(options === null || options === void 0 ? void 0 : options.object),
24
- numeric: OptionPredicator_1.OptionPredicator.numeric({
25
- numeric: options === null || options === void 0 ? void 0 : options.numeric,
26
- }),
27
- combiner: function () { return function (type) {
28
- var initial = type === "and"
29
- ? typescript_1.default.factory.createTrue()
30
- : typescript_1.default.factory.createFalse();
31
- var binder = type === "and"
32
- ? typescript_1.default.factory.createLogicalAnd
33
- : typescript_1.default.factory.createLogicalOr;
34
- return function (_input, binaries) {
35
- return binaries.length
36
- ? binaries
37
- .map(function (binary) { return binary.expression; })
38
- .reduce(function (x, y) { return binder(x, y); })
39
- : initial;
40
- };
41
- }; },
42
- joiner: {
43
- object: (options === null || options === void 0 ? void 0 : options.object) ||
44
- (0, check_object_1.check_object)({
45
- equals: !!(options === null || options === void 0 ? void 0 : options.object),
46
- assert: true,
47
- reduce: typescript_1.default.factory.createLogicalAnd,
48
- positive: typescript_1.default.factory.createTrue(),
49
- superfluous: function () { return typescript_1.default.factory.createFalse(); },
50
- }),
51
- array: function (input, arrow) {
52
- return typescript_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.join(input, "every"), undefined, [arrow]);
18
+ IsProgrammer.CONFIG = function (options) {
19
+ return function (importer) { return ({
20
+ functors: "$io",
21
+ unioners: "$iu",
22
+ trace: false,
23
+ path: false,
24
+ equals: !!(options === null || options === void 0 ? void 0 : options.object),
25
+ numeric: OptionPredicator_1.OptionPredicator.numeric({
26
+ numeric: options === null || options === void 0 ? void 0 : options.numeric,
27
+ }),
28
+ combiner: function () { return function (type) {
29
+ var initial = type === "and"
30
+ ? typescript_1.default.factory.createTrue()
31
+ : typescript_1.default.factory.createFalse();
32
+ var binder = type === "and"
33
+ ? typescript_1.default.factory.createLogicalAnd
34
+ : typescript_1.default.factory.createLogicalOr;
35
+ return function (_input, binaries) {
36
+ return binaries.length
37
+ ? binaries
38
+ .map(function (binary) { return binary.expression; })
39
+ .reduce(function (x, y) { return binder(x, y); })
40
+ : initial;
41
+ };
42
+ }; },
43
+ joiner: {
44
+ object: (options === null || options === void 0 ? void 0 : options.object) ||
45
+ (0, check_object_1.check_object)({
46
+ equals: !!(options === null || options === void 0 ? void 0 : options.object),
47
+ undefined: OptionPredicator_1.OptionPredicator.undefined({
48
+ undefined: options === null || options === void 0 ? void 0 : options.undefined,
49
+ }),
50
+ assert: true,
51
+ reduce: typescript_1.default.factory.createLogicalAnd,
52
+ positive: typescript_1.default.factory.createTrue(),
53
+ superfluous: function () { return typescript_1.default.factory.createFalse(); },
54
+ })(importer),
55
+ array: function (input, arrow) {
56
+ return typescript_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.join(input, "every"), undefined, [arrow]);
57
+ },
58
+ failure: function () { return typescript_1.default.factory.createFalse(); },
53
59
  },
54
- failure: function () { return typescript_1.default.factory.createFalse(); },
55
- },
56
- success: typescript_1.default.factory.createTrue(),
57
- }); };
60
+ success: typescript_1.default.factory.createTrue(),
61
+ }); };
62
+ };
58
63
  function generate(project, modulo, equals) {
59
64
  if (equals === void 0) { equals = false; }
60
65
  var importer = new FunctionImporeter_1.FunctionImporter();
61
66
  var config = IsProgrammer.CONFIG({
62
67
  object: (0, check_object_1.check_object)({
63
68
  equals: equals,
69
+ undefined: OptionPredicator_1.OptionPredicator.undefined(project.options),
64
70
  assert: true,
65
71
  reduce: typescript_1.default.factory.createLogicalAnd,
66
72
  positive: typescript_1.default.factory.createTrue(),
67
73
  superfluous: function () { return typescript_1.default.factory.createFalse(); },
68
- }),
74
+ })(importer),
69
75
  numeric: OptionPredicator_1.OptionPredicator.numeric(project.options),
70
- });
76
+ })(importer);
71
77
  config.trace = equals;
72
- if (equals === false)
73
- config.decoder = function (input, target, explore, tags) {
74
- if (target.size() === 1 &&
75
- target.objects.length === 1 &&
76
- target.required === true &&
77
- target.nullable === false) {
78
- var obj = target.objects[0];
79
- if (obj._Is_simple())
80
- return typescript_1.default.factory.createLogicalAnd(ExpressionFactory_1.ExpressionFactory.isObject(input, {
81
- checkNull: true,
82
- checkArray: false,
83
- }), config.joiner.object((0, feature_object_entries_1.feature_object_entries)(config)(obj)(input)));
84
- }
85
- return CheckerProgrammer_1.CheckerProgrammer.decode(project, config, importer)(input, target, explore, tags);
86
- };
78
+ config.decoder = function (input, target, explore, tags) {
79
+ if (target.size() === 1 &&
80
+ target.objects.length === 1 &&
81
+ target.required === true &&
82
+ target.nullable === false) {
83
+ var obj = target.objects[0];
84
+ if (obj._Is_simple() &&
85
+ (equals === false ||
86
+ OptionPredicator_1.OptionPredicator.undefined(project.options) === false))
87
+ return typescript_1.default.factory.createLogicalAnd(ExpressionFactory_1.ExpressionFactory.isObject(input, {
88
+ checkNull: true,
89
+ checkArray: false,
90
+ }), config.joiner.object(input, (0, feature_object_entries_1.feature_object_entries)(config)(obj)(input)));
91
+ }
92
+ return CheckerProgrammer_1.CheckerProgrammer.decode(project, config, importer)(input, target, explore, tags);
93
+ };
87
94
  return CheckerProgrammer_1.CheckerProgrammer.generate(project, config, importer, function () {
88
95
  return importer.declare(modulo);
89
96
  });
90
97
  }
91
98
  IsProgrammer.generate = generate;
92
- IsProgrammer.generate_functors = function (project, importer) { return CheckerProgrammer_1.CheckerProgrammer.generate_functors(project, IsProgrammer.CONFIG(), importer); };
93
- IsProgrammer.generate_unioners = function (project, importer) { return CheckerProgrammer_1.CheckerProgrammer.generate_unioners(project, IsProgrammer.CONFIG(), importer); };
99
+ IsProgrammer.generate_functors = function (project, importer) {
100
+ return CheckerProgrammer_1.CheckerProgrammer.generate_functors(project, IsProgrammer.CONFIG()(importer), importer);
101
+ };
102
+ IsProgrammer.generate_unioners = function (project, importer) {
103
+ return CheckerProgrammer_1.CheckerProgrammer.generate_unioners(project, IsProgrammer.CONFIG()(importer), importer);
104
+ };
94
105
  IsProgrammer.decode = function (project, importer) {
95
- return CheckerProgrammer_1.CheckerProgrammer.decode(project, IsProgrammer.CONFIG(), importer);
106
+ return CheckerProgrammer_1.CheckerProgrammer.decode(project, IsProgrammer.CONFIG()(importer), importer);
96
107
  };
97
- IsProgrammer.decode_object = function () {
98
- return CheckerProgrammer_1.CheckerProgrammer.decode_object(IsProgrammer.CONFIG());
108
+ IsProgrammer.decode_object = function (importer) {
109
+ return CheckerProgrammer_1.CheckerProgrammer.decode_object(IsProgrammer.CONFIG()(importer));
99
110
  };
100
111
  function decode_to_json(input) {
101
112
  return typescript_1.default.factory.createLogicalAnd(typescript_1.default.factory.createStrictEquality(typescript_1.default.factory.createStringLiteral("object"), ValueFactory_1.ValueFactory.TYPEOF(input)), typescript_1.default.factory.createStrictEquality(typescript_1.default.factory.createStringLiteral("function"), ValueFactory_1.ValueFactory.TYPEOF(IdentifierFactory_1.IdentifierFactory.join(input, "toJSON"))));
@@ -1 +1 @@
1
- {"version":3,"file":"IsProgrammer.js","sourceRoot":"","sources":["../../src/programmers/IsProgrammer.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,oEAAmE;AACnE,oEAAmE;AACnE,0DAAyD;AAMzD,yDAAwD;AACxD,iEAA+D;AAE/D,+DAA8D;AAC9D,wDAAuD;AACvD,4EAA2E;AAE3E,IAAiB,YAAY,CA6J5B;AA7JD,WAAiB,YAAY;IACZ,mBAAM,GAAG,UAClB,OAAkC,IACN,OAAA,CAAC;QAC7B,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA;QACzB,OAAO,EAAE,mCAAgB,CAAC,OAAO,CAAC;YAC9B,OAAO,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO;SAC5B,CAAC;QACF,QAAQ,EAAE,cAAM,OAAA,UAAC,IAAkB;YAC/B,IAAM,OAAO,GACT,IAAI,KAAK,KAAK;gBACV,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,UAAU,EAAE;gBACzB,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACnC,IAAM,MAAM,GACR,IAAI,KAAK,KAAK;gBACV,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,gBAAgB;gBAC7B,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,eAAe,CAAC;YACrC,OAAO,UACH,MAAqB,EACrB,QAAqC;gBAErC,OAAA,QAAQ,CAAC,MAAM;oBACX,CAAC,CAAC,QAAQ;yBACH,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,UAAU,EAAjB,CAAiB,CAAC;yBAClC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAZ,CAAY,CAAC;oBACrC,CAAC,CAAC,OAAO;YAJb,CAIa,CAAC;QACtB,CAAC,EAlBe,CAkBf;QACD,MAAM,EAAE;YACJ,MAAM,EACF,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM;gBACf,IAAA,2BAAY,EAAC;oBACT,MAAM,EAAE,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA;oBACzB,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,oBAAE,CAAC,OAAO,CAAC,gBAAgB;oBACnC,QAAQ,EAAE,oBAAE,CAAC,OAAO,CAAC,UAAU,EAAE;oBACjC,WAAW,EAAE,cAAM,OAAA,oBAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAxB,CAAwB;iBAC9C,CAAC;YACN,KAAK,EAAE,UAAC,KAAK,EAAE,KAAK;gBAChB,OAAA,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CAC3B,qCAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EACtC,SAAS,EACT,CAAC,KAAK,CAAC,CACV;YAJD,CAIC;YACL,OAAO,EAAE,cAAM,OAAA,oBAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAxB,CAAwB;SAC1C;QACD,OAAO,EAAE,oBAAE,CAAC,OAAO,CAAC,UAAU,EAAE;KACnC,CAAC,EA/C8B,CA+C9B,CAAC;IAYH,SAAgB,QAAQ,CACpB,OAAiB,EACjB,MAAiC,EACjC,MAAuB;QAAvB,uBAAA,EAAA,cAAuB;QAEvB,IAAM,QAAQ,GAAqB,IAAI,oCAAgB,EAAE,CAAC;QAG1D,IAAM,MAAM,GAAG,aAAA,MAAM,CAAC;YAClB,MAAM,EAAE,IAAA,2BAAY,EAAC;gBACjB,MAAM,QAAA;gBACN,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,oBAAE,CAAC,OAAO,CAAC,gBAAgB;gBACnC,QAAQ,EAAE,oBAAE,CAAC,OAAO,CAAC,UAAU,EAAE;gBACjC,WAAW,EAAE,cAAM,OAAA,oBAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAxB,CAAwB;aAC9C,CAAC;YACF,OAAO,EAAE,mCAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;SACrD,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;QAEtB,IAAI,MAAM,KAAK,KAAK;YAChB,MAAM,CAAC,OAAO,GAAG,UAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI;gBAC1C,IACI,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;oBACnB,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;oBAC3B,MAAM,CAAC,QAAQ,KAAK,IAAI;oBACxB,MAAM,CAAC,QAAQ,KAAK,KAAK,EAC3B;oBAEE,IAAM,GAAG,GAAmB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;oBAC/C,IAAI,GAAG,CAAC,UAAU,EAAE;wBAChB,OAAO,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAC9B,qCAAiB,CAAC,QAAQ,CAAC,KAAK,EAAE;4BAC9B,SAAS,EAAE,IAAI;4BACf,UAAU,EAAE,KAAK;yBACpB,CAAC,EACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAChB,IAAA,+CAAsB,EAAC,MAAa,CAAC,CAAC,GAAG,CAAC,CACtC,KAAK,CACR,CACJ,CACJ,CAAC;iBACT;gBACD,OAAO,qCAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CACtD,KAAK,EACL,MAAM,EACN,OAAO,EACP,IAAI,CACP,CAAC;YACN,CAAC,CAAC;QAGN,OAAO,qCAAiB,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;YACzD,OAAA,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;QAAxB,CAAwB,CAC3B,CAAC;IACN,CAAC;IAvDe,qBAAQ,WAuDvB,CAAA;IAEY,8BAAiB,GAAG,UAC7B,OAAiB,EACjB,QAA0B,IACzB,OAAA,qCAAiB,CAAC,iBAAiB,CAAC,OAAO,EAAE,aAAA,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAhE,CAAgE,CAAC;IAEzD,8BAAiB,GAAG,UAC7B,OAAiB,EACjB,QAA0B,IACzB,OAAA,qCAAiB,CAAC,iBAAiB,CAAC,OAAO,EAAE,aAAA,MAAM,EAAE,EAAE,QAAQ,CAAC,EAAhE,CAAgE,CAAC;IAKzD,mBAAM,GAAG,UAAC,OAAiB,EAAE,QAA0B;QAChE,OAAA,qCAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,aAAA,MAAM,EAAE,EAAE,QAAQ,CAAC;IAArD,CAAqD,CAAC;IAE7C,0BAAa,GAAG;QACzB,OAAA,qCAAiB,CAAC,aAAa,CAAC,aAAA,MAAM,EAAE,CAAC;IAAzC,CAAyC,CAAC;IAE9C,SAAgB,cAAc,CAAC,KAAoB;QAC/C,OAAO,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAC9B,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CAC3B,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EACxC,2BAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAC7B,EACD,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CAC3B,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAC1C,2BAAY,CAAC,MAAM,CAAC,qCAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAC/D,CACJ,CAAC;IACN,CAAC;IAXe,2BAAc,iBAW7B,CAAA;IAED,SAAgB,iBAAiB,CAAC,KAAoB;QAClD,OAAO,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CAClC,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAC1C,2BAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAC7B,CAAC;IACN,CAAC;IALe,8BAAiB,oBAKhC,CAAA;AACL,CAAC,EA7JgB,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QA6J5B"}
1
+ {"version":3,"file":"IsProgrammer.js","sourceRoot":"","sources":["../../src/programmers/IsProgrammer.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA4B;AAE5B,oEAAmE;AACnE,oEAAmE;AACnE,0DAAyD;AAMzD,yDAAwD;AACxD,iEAA+D;AAE/D,+DAA8D;AAC9D,wDAAuD;AACvD,4EAA2E;AAE3E,IAAiB,YAAY,CAiL5B;AAjLD,WAAiB,YAAY;IACZ,mBAAM,GACf,UAAC,OAAkC;QACnC,OAAA,UAAC,QAA0B,IAAgC,OAAA,CAAC;YACxD,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA;YACzB,OAAO,EAAE,mCAAgB,CAAC,OAAO,CAAC;gBAC9B,OAAO,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO;aAC5B,CAAC;YACF,QAAQ,EAAE,cAAM,OAAA,UAAC,IAAkB;gBAC/B,IAAM,OAAO,GACT,IAAI,KAAK,KAAK;oBACV,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,UAAU,EAAE;oBACzB,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBACnC,IAAM,MAAM,GACR,IAAI,KAAK,KAAK;oBACV,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,gBAAgB;oBAC7B,CAAC,CAAC,oBAAE,CAAC,OAAO,CAAC,eAAe,CAAC;gBACrC,OAAO,UACH,MAAqB,EACrB,QAAqC;oBAErC,OAAA,QAAQ,CAAC,MAAM;wBACX,CAAC,CAAC,QAAQ;6BACH,GAAG,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,UAAU,EAAjB,CAAiB,CAAC;6BAClC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAZ,CAAY,CAAC;wBACrC,CAAC,CAAC,OAAO;gBAJb,CAIa,CAAC;YACtB,CAAC,EAlBe,CAkBf;YACD,MAAM,EAAE;gBACJ,MAAM,EACF,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM;oBACf,IAAA,2BAAY,EAAC;wBACT,MAAM,EAAE,CAAC,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAA;wBACzB,SAAS,EAAE,mCAAgB,CAAC,SAAS,CAAC;4BAClC,SAAS,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS;yBAChC,CAAC;wBACF,MAAM,EAAE,IAAI;wBACZ,MAAM,EAAE,oBAAE,CAAC,OAAO,CAAC,gBAAgB;wBACnC,QAAQ,EAAE,oBAAE,CAAC,OAAO,CAAC,UAAU,EAAE;wBACjC,WAAW,EAAE,cAAM,OAAA,oBAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAxB,CAAwB;qBAC9C,CAAC,CAAC,QAAQ,CAAC;gBAChB,KAAK,EAAE,UAAC,KAAK,EAAE,KAAK;oBAChB,OAAA,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CAC3B,qCAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,EACtC,SAAS,EACT,CAAC,KAAK,CAAC,CACV;gBAJD,CAIC;gBACL,OAAO,EAAE,cAAM,OAAA,oBAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAxB,CAAwB;aAC1C;YACD,OAAO,EAAE,oBAAE,CAAC,OAAO,CAAC,UAAU,EAAE;SACnC,CAAC,EAlDyD,CAkDzD;IAlDF,CAkDE,CAAC;IAgBP,SAAgB,QAAQ,CACpB,OAAiB,EACjB,MAAiC,EACjC,MAAuB;QAAvB,uBAAA,EAAA,cAAuB;QAEvB,IAAM,QAAQ,GAAqB,IAAI,oCAAgB,EAAE,CAAC;QAG1D,IAAM,MAAM,GAAG,aAAA,MAAM,CAAC;YAClB,MAAM,EAAE,IAAA,2BAAY,EAAC;gBACjB,MAAM,QAAA;gBACN,SAAS,EAAE,mCAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;gBACtD,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,oBAAE,CAAC,OAAO,CAAC,gBAAgB;gBACnC,QAAQ,EAAE,oBAAE,CAAC,OAAO,CAAC,UAAU,EAAE;gBACjC,WAAW,EAAE,cAAM,OAAA,oBAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAxB,CAAwB;aAC9C,CAAC,CAAC,QAAQ,CAAC;YACZ,OAAO,EAAE,mCAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;SACrD,CAAC,CAAC,QAAQ,CAAC,CAAC;QACb,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;QAEtB,MAAM,CAAC,OAAO,GAAG,UAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI;YAC1C,IACI,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC;gBACnB,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBAC3B,MAAM,CAAC,QAAQ,KAAK,IAAI;gBACxB,MAAM,CAAC,QAAQ,KAAK,KAAK,EAC3B;gBAEE,IAAM,GAAG,GAAmB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;gBAC/C,IACI,GAAG,CAAC,UAAU,EAAE;oBAChB,CAAC,MAAM,KAAK,KAAK;wBACb,mCAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC;oBAE1D,OAAO,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAC9B,qCAAiB,CAAC,QAAQ,CAAC,KAAK,EAAE;wBAC9B,SAAS,EAAE,IAAI;wBACf,UAAU,EAAE,KAAK;qBACpB,CAAC,EACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAChB,KAAK,EACL,IAAA,+CAAsB,EAAC,MAAa,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CACpD,CACJ,CAAC;aACT;YACD,OAAO,qCAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CACtD,KAAK,EACL,MAAM,EACN,OAAO,EACP,IAAI,CACP,CAAC;QACN,CAAC,CAAC;QAGF,OAAO,qCAAiB,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;YACzD,OAAA,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;QAAxB,CAAwB,CAC3B,CAAC;IACN,CAAC;IA1De,qBAAQ,WA0DvB,CAAA;IAEY,8BAAiB,GAAG,UAC7B,OAAiB,EACjB,QAA0B;QAE1B,OAAA,qCAAiB,CAAC,iBAAiB,CAC/B,OAAO,EACP,aAAA,MAAM,EAAE,CAAC,QAAQ,CAAC,EAClB,QAAQ,CACX;IAJD,CAIC,CAAC;IAEO,8BAAiB,GAAG,UAC7B,OAAiB,EACjB,QAA0B;QAE1B,OAAA,qCAAiB,CAAC,iBAAiB,CAC/B,OAAO,EACP,aAAA,MAAM,EAAE,CAAC,QAAQ,CAAC,EAClB,QAAQ,CACX;IAJD,CAIC,CAAC;IAKO,mBAAM,GAAG,UAAC,OAAiB,EAAE,QAA0B;QAChE,OAAA,qCAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,aAAA,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAA/D,CAA+D,CAAC;IAEvD,0BAAa,GAAG,UAAC,QAA0B;QACpD,OAAA,qCAAiB,CAAC,aAAa,CAAC,aAAA,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC;IAAnD,CAAmD,CAAC;IAExD,SAAgB,cAAc,CAAC,KAAoB;QAC/C,OAAO,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAC9B,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CAC3B,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EACxC,2BAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAC7B,EACD,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CAC3B,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAC1C,2BAAY,CAAC,MAAM,CAAC,qCAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAC/D,CACJ,CAAC;IACN,CAAC;IAXe,2BAAc,iBAW7B,CAAA;IAED,SAAgB,iBAAiB,CAAC,KAAoB;QAClD,OAAO,oBAAE,CAAC,OAAO,CAAC,oBAAoB,CAClC,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAC1C,2BAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAC7B,CAAC;IACN,CAAC;IALe,8BAAiB,oBAKhC,CAAA;AACL,CAAC,EAjLgB,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAiL5B"}
@@ -0,0 +1,5 @@
1
+ import ts from "typescript";
2
+ import { IProject } from "../transformers/IProject";
3
+ export declare namespace PruneProgrammer {
4
+ function generate(project: IProject, modulo: ts.LeftHandSideExpression): (type: ts.Type) => ts.ArrowFunction;
5
+ }
@@ -0,0 +1,279 @@
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
+ };
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
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
30
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
31
+ if (ar || !(i in from)) {
32
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
33
+ ar[i] = from[i];
34
+ }
35
+ }
36
+ return to.concat(ar || Array.prototype.slice.call(from));
37
+ };
38
+ var __values = (this && this.__values) || function(o) {
39
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
40
+ if (m) return m.call(o);
41
+ if (o && typeof o.length === "number") return {
42
+ next: function () {
43
+ if (o && i >= o.length) o = void 0;
44
+ return { value: o && o[i++], done: !o };
45
+ }
46
+ };
47
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ exports.PruneProgrammer = void 0;
54
+ var typescript_1 = __importDefault(require("typescript"));
55
+ var ExpressionFactory_1 = require("../factories/ExpressionFactory");
56
+ var IdentifierFactory_1 = require("../factories/IdentifierFactory");
57
+ var MetadataCollection_1 = require("../factories/MetadataCollection");
58
+ var MetadataFactory_1 = require("../factories/MetadataFactory");
59
+ var Metadata_1 = require("../metadata/Metadata");
60
+ var FeatureProgrammer_1 = require("./FeatureProgrammer");
61
+ var IsProgrammer_1 = require("./IsProgrammer");
62
+ var FunctionImporeter_1 = require("./helpers/FunctionImporeter");
63
+ var PruneJoiner_1 = require("./helpers/PruneJoiner");
64
+ var UnionExplorer_1 = require("./helpers/UnionExplorer");
65
+ var decode_union_object_1 = require("./internal/decode_union_object");
66
+ var PruneProgrammer;
67
+ (function (PruneProgrammer) {
68
+ function generate(project, modulo) {
69
+ var importer = new FunctionImporeter_1.FunctionImporter();
70
+ return FeatureProgrammer_1.FeatureProgrammer.generate(project, CONFIG(project, importer), importer, function (collection) {
71
+ var isFunctors = IsProgrammer_1.IsProgrammer.generate_functors(project, importer)(collection);
72
+ var isUnioners = IsProgrammer_1.IsProgrammer.generate_unioners(project, importer)(collection);
73
+ return __spreadArray(__spreadArray(__spreadArray([], __read(importer.declare(modulo)), false), __read(isFunctors), false), __read(isUnioners), false);
74
+ });
75
+ }
76
+ PruneProgrammer.generate = generate;
77
+ var decode = function (project, importer) {
78
+ return function (input, meta, explore) {
79
+ var e_1, _a, e_2, _b;
80
+ if (filter(meta) === false)
81
+ return typescript_1.default.factory.createBlock([]);
82
+ var unions = [];
83
+ var _loop_1 = function (tuple) {
84
+ unions.push({
85
+ type: "tuple",
86
+ is: function () {
87
+ return IsProgrammer_1.IsProgrammer.decode(project, importer)(input, (function () {
88
+ var partial = Metadata_1.Metadata.initialize();
89
+ partial.tuples.push(tuple);
90
+ return partial;
91
+ })(), explore, []);
92
+ },
93
+ value: function () {
94
+ return decode_tuple(project, importer)(input, tuple, explore);
95
+ },
96
+ });
97
+ };
98
+ try {
99
+ for (var _c = __values(meta.tuples.filter(function (t) {
100
+ return t.some(function (e) { var _a; return filter((_a = e.rest) !== null && _a !== void 0 ? _a : e); });
101
+ })), _d = _c.next(); !_d.done; _d = _c.next()) {
102
+ var tuple = _d.value;
103
+ _loop_1(tuple);
104
+ }
105
+ }
106
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
107
+ finally {
108
+ try {
109
+ if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
110
+ }
111
+ finally { if (e_1) throw e_1.error; }
112
+ }
113
+ if (meta.arrays.filter(filter).length)
114
+ unions.push({
115
+ type: "array",
116
+ is: function () { return ExpressionFactory_1.ExpressionFactory.isArray(input); },
117
+ value: function () {
118
+ return explore_arrays(project, importer)(input, meta.arrays, __assign(__assign({}, explore), { from: "array" }), []);
119
+ },
120
+ });
121
+ if (meta.natives.length) {
122
+ var _loop_2 = function (native) {
123
+ unions.push({
124
+ type: "native",
125
+ is: function () { return ExpressionFactory_1.ExpressionFactory.isInstanceOf(input, native); },
126
+ value: function () { return typescript_1.default.factory.createReturnStatement(); },
127
+ });
128
+ };
129
+ try {
130
+ for (var _e = __values(meta.natives), _f = _e.next(); !_f.done; _f = _e.next()) {
131
+ var native = _f.value;
132
+ _loop_2(native);
133
+ }
134
+ }
135
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
136
+ finally {
137
+ try {
138
+ if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
139
+ }
140
+ finally { if (e_2) throw e_2.error; }
141
+ }
142
+ }
143
+ if (meta.sets.length)
144
+ unions.push({
145
+ type: "set",
146
+ is: function () { return ExpressionFactory_1.ExpressionFactory.isInstanceOf(input, "Set"); },
147
+ value: function () { return typescript_1.default.factory.createReturnStatement(); },
148
+ });
149
+ if (meta.maps.length)
150
+ unions.push({
151
+ type: "map",
152
+ is: function () { return ExpressionFactory_1.ExpressionFactory.isInstanceOf(input, "Map"); },
153
+ value: function () { return typescript_1.default.factory.createReturnStatement(); },
154
+ });
155
+ if (meta.objects.length)
156
+ unions.push({
157
+ type: "object",
158
+ is: function () {
159
+ return ExpressionFactory_1.ExpressionFactory.isObject(input, {
160
+ checkNull: true,
161
+ checkArray: false,
162
+ });
163
+ },
164
+ value: function () {
165
+ return explore_objects(input, meta, __assign(__assign({}, explore), { from: "object" }));
166
+ },
167
+ });
168
+ var value = function (v) {
169
+ return typescript_1.default.isReturnStatement(v) || typescript_1.default.isBlock(v)
170
+ ? v
171
+ : typescript_1.default.factory.createExpressionStatement(v);
172
+ };
173
+ var statements = unions.map(function (u) {
174
+ return typescript_1.default.factory.createIfStatement(u.is(), value(u.value()));
175
+ });
176
+ return typescript_1.default.factory.createBlock(statements, true);
177
+ };
178
+ };
179
+ var decode_tuple = function (project, importer) {
180
+ return function (input, tuple, explore) {
181
+ var children = tuple
182
+ .map(function (elem, index) { return [elem, index]; })
183
+ .filter(function (_a) {
184
+ var _b = __read(_a, 1), elem = _b[0];
185
+ return filter(elem) && elem.rest === null;
186
+ })
187
+ .map(function (_a) {
188
+ var _b = __read(_a, 2), elem = _b[0], index = _b[1];
189
+ return decode(project, importer)(typescript_1.default.factory.createElementAccessExpression(input, index), elem, __assign(__assign({}, explore), { from: "array" }));
190
+ });
191
+ var rest = (function () {
192
+ if (tuple.length === 0)
193
+ return null;
194
+ var last = tuple[tuple.length - 1];
195
+ var rest = last.rest;
196
+ if (rest === null || filter(rest) === false)
197
+ return null;
198
+ return decode(project, importer)(typescript_1.default.factory.createCallExpression(IdentifierFactory_1.IdentifierFactory.join(input, "slice"), undefined, [typescript_1.default.factory.createNumericLiteral(tuple.length - 1)]), (function () {
199
+ var wrapper = Metadata_1.Metadata.initialize();
200
+ wrapper.arrays.push(rest);
201
+ return wrapper;
202
+ })(), __assign(__assign({}, explore), { start: tuple.length - 1 }));
203
+ })();
204
+ return PruneJoiner_1.PruneJoiner.tuple(children, rest);
205
+ };
206
+ };
207
+ var decode_array = function (project, importer) {
208
+ return FeatureProgrammer_1.FeatureProgrammer.decode_array(CONFIG(project, importer), importer, PruneJoiner_1.PruneJoiner.array);
209
+ };
210
+ var decode_object = function () {
211
+ return FeatureProgrammer_1.FeatureProgrammer.decode_object({
212
+ trace: false,
213
+ path: false,
214
+ functors: FUNCTORS,
215
+ });
216
+ };
217
+ var explore_arrays = function (project, importer) {
218
+ return UnionExplorer_1.UnionExplorer.array({
219
+ checker: IsProgrammer_1.IsProgrammer.decode(project, importer),
220
+ decoder: decode_array(project, importer),
221
+ empty: typescript_1.default.factory.createReturnStatement(),
222
+ success: typescript_1.default.factory.createTrue(),
223
+ failure: function (input, expected) {
224
+ return create_throw_error(importer, input, expected);
225
+ },
226
+ });
227
+ };
228
+ var explore_objects = function (input, meta, explore) {
229
+ if (meta.objects.length === 1)
230
+ return decode_object()(input, meta.objects[0], explore);
231
+ return typescript_1.default.factory.createCallExpression(typescript_1.default.factory.createIdentifier("".concat(UNIONERS).concat(meta.union_index)), undefined, [input]);
232
+ };
233
+ var filter = function (meta) {
234
+ return meta.any === false &&
235
+ (meta.objects.length !== 0 ||
236
+ meta.tuples.some(function (t) { return t.some(function (e) { var _a; return filter((_a = e.rest) !== null && _a !== void 0 ? _a : e); }); }) ||
237
+ meta.arrays.some(function (e) { return filter(e); }));
238
+ };
239
+ var FUNCTORS = "$po";
240
+ var UNIONERS = "$pu";
241
+ var CONFIG = function (project, importer) { return ({
242
+ functors: FUNCTORS,
243
+ unioners: UNIONERS,
244
+ trace: false,
245
+ path: false,
246
+ initializer: initializer,
247
+ decoder: decode(project, importer),
248
+ objector: OBJECTOR(project, importer),
249
+ }); };
250
+ var OBJECTOR = function (project, importer) { return ({
251
+ checker: IsProgrammer_1.IsProgrammer.decode(project, importer),
252
+ decoder: decode_object(),
253
+ joiner: PruneJoiner_1.PruneJoiner.object,
254
+ unionizer: (0, decode_union_object_1.decode_union_object)(IsProgrammer_1.IsProgrammer.decode_object(importer))(decode_object())(function (exp) { return exp; })(function (value, expected) {
255
+ return create_throw_error(importer, value, expected);
256
+ }),
257
+ failure: function (input, expected) {
258
+ return create_throw_error(importer, input, expected);
259
+ },
260
+ }); };
261
+ var initializer = function (_a, type) {
262
+ var checker = _a.checker;
263
+ var collection = new MetadataCollection_1.MetadataCollection();
264
+ var meta = MetadataFactory_1.MetadataFactory.generate(checker, collection, type, {
265
+ resolve: false,
266
+ constant: true,
267
+ });
268
+ return [collection, meta];
269
+ };
270
+ var create_throw_error = function (importer, value, expected) {
271
+ return typescript_1.default.factory.createExpressionStatement(typescript_1.default.factory.createCallExpression(importer.use("throws"), [], [
272
+ typescript_1.default.factory.createObjectLiteralExpression([
273
+ typescript_1.default.factory.createPropertyAssignment("expected", typescript_1.default.factory.createStringLiteral(expected)),
274
+ typescript_1.default.factory.createPropertyAssignment("value", value),
275
+ ], true),
276
+ ]));
277
+ };
278
+ })(PruneProgrammer = exports.PruneProgrammer || (exports.PruneProgrammer = {}));
279
+ //# sourceMappingURL=PruneProgrammer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PruneProgrammer.js","sourceRoot":"","sources":["../../src/programmers/PruneProgrammer.ts"],"names":[],"mappings":"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"}
@@ -67,6 +67,7 @@ var OptionPredicator_1 = require("./helpers/OptionPredicator");
67
67
  var StringifyJoinder_1 = require("./helpers/StringifyJoinder");
68
68
  var StringifyPredicator_1 = require("./helpers/StringifyPredicator");
69
69
  var UnionExplorer_1 = require("./helpers/UnionExplorer");
70
+ var check_native_1 = require("./internal/check_native");
70
71
  var decode_union_object_1 = require("./internal/decode_union_object");
71
72
  var feature_object_entries_1 = require("./internal/feature_object_entries");
72
73
  var StringifyProgrammer;
@@ -133,8 +134,9 @@ var StringifyProgrammer;
133
134
  });
134
135
  }
135
136
  var _loop_1 = function (constant) {
136
- if (constant.type !== "string" &&
137
- AtomicPredicator_1.AtomicPredicator.constant(meta)(constant.type))
137
+ if (AtomicPredicator_1.AtomicPredicator.constant(meta)(constant.type) === false)
138
+ return "continue";
139
+ else if (constant.type !== "string")
138
140
  unions.push({
139
141
  type: "atomic",
140
142
  is: function () {
@@ -177,19 +179,20 @@ var StringifyProgrammer;
177
179
  finally { if (e_1) throw e_1.error; }
178
180
  }
179
181
  var _loop_2 = function (type) {
180
- unions.push({
181
- type: "atomic",
182
- is: function () {
183
- return IsProgrammer_1.IsProgrammer.decode(project, importer)(input, (function () {
184
- var partial = Metadata_1.Metadata.initialize();
185
- partial.atomics.push(type);
186
- return partial;
187
- })(), explore, []);
188
- },
189
- value: function () {
190
- return decode_atomic(project, importer)(input, type, explore, tags);
191
- },
192
- });
182
+ if (AtomicPredicator_1.AtomicPredicator.atomic(meta)(type))
183
+ unions.push({
184
+ type: "atomic",
185
+ is: function () {
186
+ return IsProgrammer_1.IsProgrammer.decode(project, importer)(input, (function () {
187
+ var partial = Metadata_1.Metadata.initialize();
188
+ partial.atomics.push(type);
189
+ return partial;
190
+ })(), explore, []);
191
+ },
192
+ value: function () {
193
+ return decode_atomic(project, importer)(input, type, explore, tags);
194
+ },
195
+ });
193
196
  };
194
197
  try {
195
198
  for (var _h = __values(meta.atomics), _j = _h.next(); !_j.done; _j = _h.next()) {
@@ -279,8 +282,12 @@ var StringifyProgrammer;
279
282
  var _loop_4 = function (native) {
280
283
  unions.push({
281
284
  type: "object",
282
- is: function () { return ExpressionFactory_1.ExpressionFactory.isInstanceOf(input, native); },
283
- value: function () { return typescript_1.default.factory.createStringLiteral("{}"); },
285
+ is: function () { return (0, check_native_1.check_native)(native)(input); },
286
+ value: function () {
287
+ return AtomicPredicator_1.AtomicPredicator.native(native)
288
+ ? decode_atomic(project, importer)(input, native.toLowerCase(), explore, tags)
289
+ : typescript_1.default.factory.createStringLiteral("{}");
290
+ },
284
291
  });
285
292
  };
286
293
  try {
@@ -334,7 +341,7 @@ var StringifyProgrammer;
334
341
  trace: false,
335
342
  path: false,
336
343
  })(obj)(input);
337
- return StringifyJoinder_1.StringifyJoiner.object(importer)(entries);
344
+ return StringifyJoinder_1.StringifyJoiner.object(importer)(input, entries);
338
345
  })()
339
346
  : explore_objects(input, meta, __assign(__assign({}, explore), { from: "object" }));
340
347
  },
@@ -497,14 +504,12 @@ var StringifyProgrammer;
497
504
  checker: IsProgrammer_1.IsProgrammer.decode(project, importer),
498
505
  decoder: decode_object(),
499
506
  joiner: StringifyJoinder_1.StringifyJoiner.object(importer),
500
- unionizer: (0, decode_union_object_1.decode_union_object)(IsProgrammer_1.IsProgrammer.decode_object())(decode_object())(function (exp) { return exp; })(function (value, expected) {
507
+ unionizer: (0, decode_union_object_1.decode_union_object)(IsProgrammer_1.IsProgrammer.decode_object(importer))(decode_object())(function (exp) { return exp; })(function (value, expected) {
501
508
  return create_throw_error(importer, value, expected);
502
509
  }),
503
510
  failure: function (input, expected) {
504
511
  return create_throw_error(importer, input, expected);
505
512
  },
506
- is: function (expr) { return expr; },
507
- required: function (expr) { return expr; },
508
513
  }); };
509
514
  function create_throw_error(importer, value, expected) {
510
515
  return typescript_1.default.factory.createExpressionStatement(typescript_1.default.factory.createCallExpression(importer.use("throws"), [], [