openapi-resource-converter 0.0.1

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 (124) hide show
  1. package/README.md +170 -0
  2. package/dist/converter/constant/convert-type.js +19 -0
  3. package/dist/converter/constant/convert-type.js.map +1 -0
  4. package/dist/converter/constant/i-convert-output.js +3 -0
  5. package/dist/converter/constant/i-convert-output.js.map +1 -0
  6. package/dist/converter/i-openapi-converter.js +3 -0
  7. package/dist/converter/i-openapi-converter.js.map +1 -0
  8. package/dist/converter/postman/postman-collection-converter.js +210 -0
  9. package/dist/converter/postman/postman-collection-converter.js.map +1 -0
  10. package/dist/converter/postman/postman-command-builder.js +73 -0
  11. package/dist/converter/postman/postman-command-builder.js.map +1 -0
  12. package/dist/converter/postman/postman-convert-configures.js +81 -0
  13. package/dist/converter/postman/postman-convert-configures.js.map +1 -0
  14. package/dist/index.js +36 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/parser/component-parser.js +96 -0
  17. package/dist/parser/component-parser.js.map +1 -0
  18. package/dist/parser/field-parser.js +6 -0
  19. package/dist/parser/field-parser.js.map +1 -0
  20. package/dist/parser/open-api-parser.js +136 -0
  21. package/dist/parser/open-api-parser.js.map +1 -0
  22. package/dist/parser/parameters-parser.js +42 -0
  23. package/dist/parser/parameters-parser.js.map +1 -0
  24. package/dist/parser/postman-config-parser.js +195 -0
  25. package/dist/parser/postman-config-parser.js.map +1 -0
  26. package/dist/parser/request-body-parser.js +73 -0
  27. package/dist/parser/request-body-parser.js.map +1 -0
  28. package/dist/type/open-api/api-specification.js +79 -0
  29. package/dist/type/open-api/api-specification.js.map +1 -0
  30. package/dist/type/open-api/constant/content-type.js +9 -0
  31. package/dist/type/open-api/constant/content-type.js.map +1 -0
  32. package/dist/type/open-api/constant/data-format.js +36 -0
  33. package/dist/type/open-api/constant/data-format.js.map +1 -0
  34. package/dist/type/open-api/constant/data-type.js +44 -0
  35. package/dist/type/open-api/constant/data-type.js.map +1 -0
  36. package/dist/type/open-api/constant/http-method.js +45 -0
  37. package/dist/type/open-api/constant/http-method.js.map +1 -0
  38. package/dist/type/open-api/constant/in-type.js +30 -0
  39. package/dist/type/open-api/constant/in-type.js.map +1 -0
  40. package/dist/type/open-api/constant/named-literal.js +17 -0
  41. package/dist/type/open-api/constant/named-literal.js.map +1 -0
  42. package/dist/type/open-api/constant/protocol-type.js +40 -0
  43. package/dist/type/open-api/constant/protocol-type.js.map +1 -0
  44. package/dist/type/open-api/open-api-specification.js +43 -0
  45. package/dist/type/open-api/open-api-specification.js.map +1 -0
  46. package/dist/type/open-api/project/contact.js +37 -0
  47. package/dist/type/open-api/project/contact.js.map +1 -0
  48. package/dist/type/open-api/project/project-information.js +49 -0
  49. package/dist/type/open-api/project/project-information.js.map +1 -0
  50. package/dist/type/open-api/protocol/empty-body.js +12 -0
  51. package/dist/type/open-api/protocol/empty-body.js.map +1 -0
  52. package/dist/type/open-api/protocol/open-api-request.js +44 -0
  53. package/dist/type/open-api/protocol/open-api-request.js.map +1 -0
  54. package/dist/type/open-api/protocol/parameters.js +28 -0
  55. package/dist/type/open-api/protocol/parameters.js.map +1 -0
  56. package/dist/type/open-api/protocol/request-body.js +39 -0
  57. package/dist/type/open-api/protocol/request-body.js.map +1 -0
  58. package/dist/type/open-api/sub/i-field.js +3 -0
  59. package/dist/type/open-api/sub/i-field.js.map +1 -0
  60. package/dist/type/open-api/sub/object-field.js +49 -0
  61. package/dist/type/open-api/sub/object-field.js.map +1 -0
  62. package/dist/type/open-api/sub/parameter.js +70 -0
  63. package/dist/type/open-api/sub/parameter.js.map +1 -0
  64. package/dist/type/open-api/sub/tag.js +32 -0
  65. package/dist/type/open-api/sub/tag.js.map +1 -0
  66. package/dist/type/open-api/sub/value-field.js +80 -0
  67. package/dist/type/open-api/sub/value-field.js.map +1 -0
  68. package/dist/type/open-api/sub/version.js +53 -0
  69. package/dist/type/open-api/sub/version.js.map +1 -0
  70. package/dist/type/path.js +62 -0
  71. package/dist/type/path.js.map +1 -0
  72. package/dist/type/postman/constant/case-mode.js +58 -0
  73. package/dist/type/postman/constant/case-mode.js.map +1 -0
  74. package/dist/type/postman/constant/default-value.js +69 -0
  75. package/dist/type/postman/constant/default-value.js.map +1 -0
  76. package/dist/type/postman/constant/request-mode.js +44 -0
  77. package/dist/type/postman/constant/request-mode.js.map +1 -0
  78. package/dist/type/postman/i-postman-node.js +3 -0
  79. package/dist/type/postman/i-postman-node.js.map +1 -0
  80. package/dist/type/postman/i-postman-object.js +3 -0
  81. package/dist/type/postman/i-postman-object.js.map +1 -0
  82. package/dist/type/postman/i-postman-request-body.js +3 -0
  83. package/dist/type/postman/i-postman-request-body.js.map +1 -0
  84. package/dist/type/postman/parsed-postman-option.js +72 -0
  85. package/dist/type/postman/parsed-postman-option.js.map +1 -0
  86. package/dist/type/postman/postman-body-wrapper.js +46 -0
  87. package/dist/type/postman/postman-body-wrapper.js.map +1 -0
  88. package/dist/type/postman/postman-directory.js +61 -0
  89. package/dist/type/postman/postman-directory.js.map +1 -0
  90. package/dist/type/postman/postman-formdata.js +21 -0
  91. package/dist/type/postman/postman-formdata.js.map +1 -0
  92. package/dist/type/postman/postman-header.js +32 -0
  93. package/dist/type/postman/postman-header.js.map +1 -0
  94. package/dist/type/postman/postman-import-file.js +17 -0
  95. package/dist/type/postman/postman-import-file.js.map +1 -0
  96. package/dist/type/postman/postman-info.js +52 -0
  97. package/dist/type/postman/postman-info.js.map +1 -0
  98. package/dist/type/postman/postman-options.js +29 -0
  99. package/dist/type/postman/postman-options.js.map +1 -0
  100. package/dist/type/postman/postman-path-variable.js +72 -0
  101. package/dist/type/postman/postman-path-variable.js.map +1 -0
  102. package/dist/type/postman/postman-query.js +49 -0
  103. package/dist/type/postman/postman-query.js.map +1 -0
  104. package/dist/type/postman/postman-request-body.js +3 -0
  105. package/dist/type/postman/postman-request-body.js.map +1 -0
  106. package/dist/type/postman/postman-request-wrapper-template.js +41 -0
  107. package/dist/type/postman/postman-request-wrapper-template.js.map +1 -0
  108. package/dist/type/postman/postman-request-wrapper.js +29 -0
  109. package/dist/type/postman/postman-request-wrapper.js.map +1 -0
  110. package/dist/type/postman/postman-request.js +52 -0
  111. package/dist/type/postman/postman-request.js.map +1 -0
  112. package/dist/type/postman/postman-url.js +71 -0
  113. package/dist/type/postman/postman-url.js.map +1 -0
  114. package/dist/type/postman/type-value.js +29 -0
  115. package/dist/type/postman/type-value.js.map +1 -0
  116. package/dist/util/collection-util.js +59 -0
  117. package/dist/util/collection-util.js.map +1 -0
  118. package/dist/util/file-util.js +34 -0
  119. package/dist/util/file-util.js.map +1 -0
  120. package/dist/util/object-util.js +160 -0
  121. package/dist/util/object-util.js.map +1 -0
  122. package/dist/util/string-util.js +20 -0
  123. package/dist/util/string-util.js.map +1 -0
  124. package/package.json +53 -0
@@ -0,0 +1,96 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var named_literal_1 = __importDefault(require("@/type/open-api/constant/named-literal"));
18
+ var object_util_1 = require("@/util/object-util");
19
+ var collection_util_1 = require("@/util/collection-util");
20
+ var data_type_1 = __importDefault(require("@/type/open-api/constant/data-type"));
21
+ var value_field_1 = __importDefault(require("@/type/open-api/sub/value-field"));
22
+ var object_field_1 = __importDefault(require("@/type/open-api/sub/object-field"));
23
+ var ComponentParser = /** @class */ (function () {
24
+ function ComponentParser(components) {
25
+ var _this = this;
26
+ this.SCHEMAS_PATH = "schemas";
27
+ this.COMPONENTS_KEY_PREFIX = "#/components/schemas/";
28
+ this._properties = (0, object_util_1.getDeepProps)(components, [this.SCHEMAS_PATH]);
29
+ this._rootProperty = (0, collection_util_1.toMap)(this._properties, function (prop) { return _this.COMPONENTS_KEY_PREFIX + prop.name; });
30
+ this._cache = new Map();
31
+ }
32
+ //컴포넌트는 요청의 일부로서 사용되기 때문에 properties 만 파싱하면 된다.
33
+ ComponentParser.prototype.parse = function () {
34
+ var e_1, _a;
35
+ try {
36
+ //컴포넌트는 파싱하는 과정에서다른 컴포넌트를 참조할 수 있기 때문에 찾으면서, 트리형태로 만들어가는 구조를 가진다.
37
+ //따라서 properties.{param_name}.$ref 가 있다면 해당 값으로 먼저 파싱된 객체가 있는지를 확인하고, 없다면 만들어서 캐시한다.
38
+ for (var _b = __values(this._properties), _c = _b.next(); !_c.done; _c = _b.next()) {
39
+ var property = _c.value;
40
+ //각 스키마별로 파싱한다.
41
+ this.parseSchema(property);
42
+ }
43
+ }
44
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
45
+ finally {
46
+ try {
47
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
48
+ }
49
+ finally { if (e_1) throw e_1.error; }
50
+ }
51
+ return this._cache;
52
+ };
53
+ ComponentParser.prototype.parseSchema = function (property) {
54
+ //아직 object type 외에는 존재하지 않는다.
55
+ if (data_type_1.default.OBJECT.equalsValue((0, object_util_1.getProp)(property.value, named_literal_1.default.TYPE))) {
56
+ var referenceKey = (0, object_util_1.hasProp)(property.value, named_literal_1.default.REFERENCE_KEY)
57
+ ? (0, object_util_1.getProp)(property.value, named_literal_1.default.REFERENCE_KEY)
58
+ : this.COMPONENTS_KEY_PREFIX + property.name;
59
+ this.retrieveCacheRecursively(referenceKey);
60
+ }
61
+ };
62
+ ComponentParser.prototype.retrieveCacheRecursively = function (referenceKey) {
63
+ var e_2, _a;
64
+ if (this._cache.has(referenceKey)) {
65
+ return this._cache.get(referenceKey);
66
+ }
67
+ var parent = this._rootProperty.get(referenceKey);
68
+ var properties = (0, object_util_1.getDeepProps)(parent.value, [named_literal_1.default.PROPERTIES]);
69
+ var fields = new Array();
70
+ try {
71
+ for (var properties_1 = __values(properties), properties_1_1 = properties_1.next(); !properties_1_1.done; properties_1_1 = properties_1.next()) {
72
+ var property = properties_1_1.value;
73
+ if ((0, object_util_1.hasProp)(property.value, named_literal_1.default.REFERENCE_KEY)) {
74
+ var referenceKey_1 = (0, object_util_1.getProp)(property.value, named_literal_1.default.REFERENCE_KEY);
75
+ var cached = this.retrieveCacheRecursively(referenceKey_1);
76
+ fields.push(new object_field_1.default(property.name, '', data_type_1.default.OBJECT, cached));
77
+ }
78
+ else {
79
+ fields.push(value_field_1.default.fromProperty(property));
80
+ }
81
+ }
82
+ }
83
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
84
+ finally {
85
+ try {
86
+ if (properties_1_1 && !properties_1_1.done && (_a = properties_1.return)) _a.call(properties_1);
87
+ }
88
+ finally { if (e_2) throw e_2.error; }
89
+ }
90
+ this._cache.set(referenceKey, fields);
91
+ return fields;
92
+ };
93
+ return ComponentParser;
94
+ }());
95
+ exports.default = ComponentParser;
96
+ //# sourceMappingURL=component-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-parser.js","sourceRoot":"","sources":["../../src/parser/component-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function default_1(property, component) {
4
+ }
5
+ exports.default = default_1;
6
+ //# sourceMappingURL=field-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-parser.js","sourceRoot":"","sources":["../../src/parser/field-parser.ts"],"names":[],"mappings":";;AAIA,mBAAyB,QAAkB,EAAE,SAAqC;AAElF,CAAC;AAFD,4BAEC"}
@@ -0,0 +1,136 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var file_util_1 = require("@/util/file-util");
18
+ var string_util_1 = require("@/util/string-util");
19
+ var version_1 = __importDefault(require("@/type/open-api/sub/version"));
20
+ var project_information_1 = __importDefault(require("@/type/open-api/project/project-information"));
21
+ var tag_1 = __importDefault(require("@/type/open-api/sub/tag"));
22
+ var object_util_1 = require("@/util/object-util");
23
+ var open_api_request_1 = __importDefault(require("@/type/open-api/protocol/open-api-request"));
24
+ var api_specification_1 = __importDefault(require("@/type/open-api/api-specification"));
25
+ var empty_body_1 = __importDefault(require("@/type/open-api/protocol/empty-body"));
26
+ var open_api_specification_1 = __importDefault(require("@/type/open-api/open-api-specification"));
27
+ var component_parser_1 = __importDefault(require("@/parser/component-parser"));
28
+ var protocol_type_1 = __importDefault(require("@/type/open-api/constant/protocol-type"));
29
+ var request_body_parser_1 = __importDefault(require("@/parser/request-body-parser"));
30
+ var parameters_parser_1 = __importDefault(require("@/parser/parameters-parser"));
31
+ var OpenApiParser = /** @class */ (function () {
32
+ function OpenApiParser(filePath, encoding) {
33
+ if (encoding === void 0) { encoding = 'utf-8'; }
34
+ if ((0, file_util_1.notExist)(filePath))
35
+ throw new Error("Not found file with path: ".concat(filePath));
36
+ var json = (0, string_util_1.toJson)((0, file_util_1.readFile)(filePath, encoding));
37
+ new Map;
38
+ this._version = version_1.default.parse(json.openapi);
39
+ this._info = project_information_1.default.parse(json.info);
40
+ this._tags = tag_1.default.parse(json.tags);
41
+ this._components = new component_parser_1.default(json.components).parse();
42
+ this._paths = (0, object_util_1.toProps)(json.paths);
43
+ }
44
+ OpenApiParser.prototype.parse = function () {
45
+ var requests = this.parseToRequests(this._paths);
46
+ var specs = this.parseToSpecs(requests);
47
+ return new open_api_specification_1.default(this._version, this._info, this._tags, specs);
48
+ };
49
+ /*
50
+ AS IS
51
+ "paths": {
52
+ "/zapi/common/pstk/verify_pstk": {
53
+ "post": {}
54
+ },
55
+ "/zapi/buy/pmangcash_delay": {
56
+ "post": {}
57
+ },
58
+ "/wtapi/club/correct": {
59
+ "post": {}
60
+ }
61
+ }
62
+
63
+ TO BE
64
+ [
65
+ {
66
+ "path": "/zapi/common/pstk/verify_pstk",
67
+ "method": HttpMethod.POST,
68
+ "metadata": {}
69
+ }
70
+ ...
71
+ ]
72
+ */
73
+ OpenApiParser.prototype.parseToRequests = function (paths) {
74
+ var e_1, _a, e_2, _b;
75
+ var result = new Array();
76
+ try {
77
+ //각 API 경로별로
78
+ for (var paths_1 = __values(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {
79
+ var pathProperty = paths_1_1.value;
80
+ var methodProperties = (0, object_util_1.toProps)(pathProperty.value);
81
+ try {
82
+ //각 메소드 별로
83
+ for (var methodProperties_1 = (e_2 = void 0, __values(methodProperties)), methodProperties_1_1 = methodProperties_1.next(); !methodProperties_1_1.done; methodProperties_1_1 = methodProperties_1.next()) {
84
+ var methodProperty = methodProperties_1_1.value;
85
+ result.push(new open_api_request_1.default(pathProperty.name, methodProperty));
86
+ }
87
+ }
88
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
89
+ finally {
90
+ try {
91
+ if (methodProperties_1_1 && !methodProperties_1_1.done && (_b = methodProperties_1.return)) _b.call(methodProperties_1);
92
+ }
93
+ finally { if (e_2) throw e_2.error; }
94
+ }
95
+ }
96
+ }
97
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
98
+ finally {
99
+ try {
100
+ if (paths_1_1 && !paths_1_1.done && (_a = paths_1.return)) _a.call(paths_1);
101
+ }
102
+ finally { if (e_1) throw e_1.error; }
103
+ }
104
+ return result;
105
+ };
106
+ OpenApiParser.prototype.parseToSpecs = function (requests) {
107
+ var e_3, _a;
108
+ var _this = this;
109
+ var specs = new Array();
110
+ try {
111
+ //각 요청별로
112
+ for (var requests_1 = __values(requests), requests_1_1 = requests_1.next(); !requests_1_1.done; requests_1_1 = requests_1.next()) {
113
+ var request = requests_1_1.value;
114
+ var requestBodyProperty = request.payloadOf(protocol_type_1.default.REQUEST_BODY);
115
+ var requestBody = (0, object_util_1.applyOrDefault)(requestBodyProperty, new empty_body_1.default(), function (property) {
116
+ return request_body_parser_1.default.getInstance().parse(property, _this._components);
117
+ });
118
+ var parametersProperty = request.payloadOf(protocol_type_1.default.PARAMETERS);
119
+ var parameters = parameters_parser_1.default.getInstance().parse(parametersProperty);
120
+ //요청 파라미터 정보가 없어도, 빈 요청을 생성한다.
121
+ specs.push(new api_specification_1.default(request, requestBody, parameters));
122
+ }
123
+ }
124
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
125
+ finally {
126
+ try {
127
+ if (requests_1_1 && !requests_1_1.done && (_a = requests_1.return)) _a.call(requests_1);
128
+ }
129
+ finally { if (e_3) throw e_3.error; }
130
+ }
131
+ return specs;
132
+ };
133
+ return OpenApiParser;
134
+ }());
135
+ exports.default = OpenApiParser;
136
+ //# sourceMappingURL=open-api-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-api-parser.js","sourceRoot":"","sources":["../../src/parser/open-api-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var object_util_1 = require("@/util/object-util");
7
+ var in_type_1 = __importDefault(require("@/type/open-api/constant/in-type"));
8
+ var data_type_1 = __importDefault(require("@/type/open-api/constant/data-type"));
9
+ var data_format_1 = __importDefault(require("@/type/open-api/constant/data-format"));
10
+ var parameter_1 = __importDefault(require("@/type/open-api/sub/parameter"));
11
+ var parameters_1 = __importDefault(require("@/type/open-api/protocol/parameters"));
12
+ var ParametersParser = /** @class */ (function () {
13
+ function ParametersParser() {
14
+ this.PROPERTY_NAME = "name";
15
+ this.PROPERTY_IN = "in";
16
+ this.PROPERTY_DESCRIPTION = "description";
17
+ this.PROPERTY_REQUIRED = "required";
18
+ this.PROPERTY_SCHEMA_TYPE = "schema.type";
19
+ this.PROPERTY_SCHEMA_FORMAT = "schema.format;";
20
+ }
21
+ ParametersParser.getInstance = function () {
22
+ return ParametersParser.INSTANCE;
23
+ };
24
+ ParametersParser.prototype.parse = function (property) {
25
+ var _this = this;
26
+ if (!property) {
27
+ return undefined;
28
+ }
29
+ var value = property.value;
30
+ if (!Array.isArray(value) || value.length === 0) {
31
+ return undefined;
32
+ }
33
+ var parameters = value.map(function (parameter) {
34
+ return new parameter_1.default((0, object_util_1.getPropOrDefault)(parameter, _this.PROPERTY_NAME, ''), in_type_1.default.fromValue((0, object_util_1.getPropOrDefault)(parameter, _this.PROPERTY_IN, '')), (0, object_util_1.getPropOrDefault)(parameter, _this.PROPERTY_DESCRIPTION, ''), (0, object_util_1.getPropOrDefault)(parameter, _this.PROPERTY_REQUIRED, false), data_type_1.default.fromValue((0, object_util_1.getPropRecursive)(parameter, _this.PROPERTY_SCHEMA_TYPE)), data_format_1.default.fromValue((0, object_util_1.getPropRecursive)(parameter, _this.PROPERTY_SCHEMA_FORMAT)));
35
+ });
36
+ return new parameters_1.default(parameters);
37
+ };
38
+ ParametersParser.INSTANCE = new ParametersParser();
39
+ return ParametersParser;
40
+ }());
41
+ exports.default = ParametersParser;
42
+ //# sourceMappingURL=parameters-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameters-parser.js","sourceRoot":"","sources":["../../src/parser/parameters-parser.ts"],"names":[],"mappings":";;;;;AAAA,kDAAgF;AAChF,6EAAsD;AACtD,iFAA0D;AAC1D,qFAA8D;AAC9D,4EAAsD;AACtD,mFAA6D;AAE7D;IAWI;QAPiB,kBAAa,GAAG,MAAM,CAAC;QACvB,gBAAW,GAAG,IAAI,CAAC;QACnB,yBAAoB,GAAG,aAAa,CAAC;QACrC,sBAAiB,GAAG,UAAU,CAAC;QAC/B,yBAAoB,GAAG,aAAa,CAAC;QACrC,2BAAsB,GAAG,gBAAgB,CAAA;IAG1D,CAAC;IAEa,4BAAW,GAAzB;QACI,OAAO,gBAAgB,CAAC,QAAQ,CAAC;IACrC,CAAC;IAEM,gCAAK,GAAZ,UAAa,QAA8B;QAA3C,iBAoBC;QAnBG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,SAAS;YAClC,OAAO,IAAI,mBAAS,CAChB,IAAA,8BAAgB,EAAS,SAAS,EAAE,KAAI,CAAC,aAAa,EAAE,EAAE,CAAC,EAC3D,iBAAM,CAAC,SAAS,CAAC,IAAA,8BAAgB,EAAS,SAAS,EAAE,KAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAC3E,IAAA,8BAAgB,EAAS,SAAS,EAAE,KAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC,EAClE,IAAA,8BAAgB,EAAU,SAAS,EAAE,KAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,EACnE,mBAAQ,CAAC,SAAS,CAAC,IAAA,8BAAgB,EAAS,SAAS,EAAE,KAAI,CAAC,oBAAoB,CAAC,CAAC,EAClF,qBAAU,CAAC,SAAS,CAAC,IAAA,8BAAgB,EAAS,SAAS,EAAE,KAAI,CAAC,sBAAsB,CAAC,CAAC,CACzF,CAAC;QACN,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,oBAAU,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IApCuB,yBAAQ,GAAqB,IAAI,gBAAgB,EAAE,AAA3C,CAA4C;IAqChF,uBAAC;CAAA,AAvCD,IAuCC;kBAvCoB,gBAAgB"}
@@ -0,0 +1,195 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var yaml_1 = require("yaml");
18
+ var object_util_1 = require("@/util/object-util");
19
+ var postman_header_1 = __importDefault(require("@/type/postman/postman-header"));
20
+ var case_mode_1 = __importDefault(require("@/type/postman/constant/case-mode"));
21
+ var string_util_1 = require("@/util/string-util");
22
+ var parsed_postman_option_1 = __importDefault(require("@/type/postman/parsed-postman-option"));
23
+ var type_value_1 = __importDefault(require("@/type/postman/type-value"));
24
+ var path_1 = __importDefault(require("@/type/path"));
25
+ var postman_request_wrapper_template_1 = __importDefault(require("@/type/postman/postman-request-wrapper-template"));
26
+ var request_mode_1 = __importDefault(require("@/type/postman/constant/request-mode"));
27
+ var postman_formdata_1 = __importDefault(require("@/type/postman/postman-formdata"));
28
+ var PostmanConfigParser = /** @class */ (function () {
29
+ function PostmanConfigParser() {
30
+ this.KEY_POSTMAN = 'postman';
31
+ this.KEY_HOST = 'host';
32
+ this.KEY_EXCLUDE_PATH = 'exclude-path';
33
+ this.KEY_HEADERS = 'headers';
34
+ this.KEY_CASE = 'case';
35
+ this.KEY_PLACEHOLDER = 'placeholders';
36
+ this.KEY_REQUEST_WRAPPER = 'request-wrapper';
37
+ }
38
+ PostmanConfigParser.prototype.parse = function (yaml) {
39
+ var parsed = (0, yaml_1.parse)(yaml);
40
+ if (!(0, object_util_1.hasProp)(parsed, this.KEY_POSTMAN)) {
41
+ return parsed_postman_option_1.default.ofDefault();
42
+ }
43
+ var postman = (0, object_util_1.getProp)(parsed, this.KEY_POSTMAN);
44
+ var host = this.parseHost(postman);
45
+ var excludePath = this.parseExcludePath(postman);
46
+ var headers = this.parseHeaders(postman);
47
+ var parseCase = this.parseCase(postman);
48
+ var placeholders = this.parsePlaceholder(postman);
49
+ var templates = this.parseRequestWrapper(postman);
50
+ return new parsed_postman_option_1.default(host, excludePath, headers, parseCase, placeholders, templates);
51
+ };
52
+ PostmanConfigParser.prototype.parseHost = function (config) {
53
+ if (!(0, object_util_1.hasProp)(config, this.KEY_HOST)) {
54
+ return '{{url}}';
55
+ }
56
+ return (0, object_util_1.getProp)(config, this.KEY_HOST);
57
+ };
58
+ PostmanConfigParser.prototype.parseExcludePath = function (config) {
59
+ if (!(0, object_util_1.hasProp)(config, this.KEY_EXCLUDE_PATH)) {
60
+ return [path_1.default.of([])];
61
+ }
62
+ var paths = (0, object_util_1.getProp)(config, this.KEY_EXCLUDE_PATH);
63
+ if (!this.isStringArray(paths)) {
64
+ return [path_1.default.of([])];
65
+ }
66
+ return paths.map(function (path) { return new path_1.default(path); });
67
+ };
68
+ PostmanConfigParser.prototype.parseHeaders = function (config) {
69
+ if (!(0, object_util_1.hasProp)(config, this.KEY_HEADERS)) {
70
+ return [];
71
+ }
72
+ var prop = (0, object_util_1.getDeepProps)(config, [this.KEY_HEADERS]);
73
+ if (!Array.isArray(prop)) {
74
+ return [];
75
+ }
76
+ return prop.map(function (header) { return new postman_header_1.default(header.name, header.getTypeValue()); });
77
+ };
78
+ PostmanConfigParser.prototype.parseCase = function (config) {
79
+ if (!(0, object_util_1.hasProp)(config, this.KEY_CASE)) {
80
+ return case_mode_1.default.CAMEL;
81
+ }
82
+ var caseMode = (0, object_util_1.getProp)(config, this.KEY_CASE);
83
+ var found = case_mode_1.default.values().find(function (mode) { return mode.value === caseMode; });
84
+ if (!found) {
85
+ return case_mode_1.default.CAMEL;
86
+ }
87
+ return found;
88
+ };
89
+ PostmanConfigParser.prototype.isStringArray = function (value) {
90
+ return Array.isArray(value) && value.every(function (item) { return typeof item === 'string'; });
91
+ };
92
+ PostmanConfigParser.prototype.parsePlaceholder = function (config) {
93
+ var e_1, _a;
94
+ var map = new Map();
95
+ if (!(0, object_util_1.hasProp)(config, this.KEY_PLACEHOLDER)) {
96
+ return map;
97
+ }
98
+ var properties = (0, object_util_1.getDeepProps)(config, [this.KEY_PLACEHOLDER]);
99
+ try {
100
+ for (var properties_1 = __values(properties), properties_1_1 = properties_1.next(); !properties_1_1.done; properties_1_1 = properties_1.next()) {
101
+ var property = properties_1_1.value;
102
+ if (!(0, object_util_1.hasProp)(property, 'type') || !(0, object_util_1.hasProp)(property, 'value')) {
103
+ continue;
104
+ }
105
+ var type = (0, object_util_1.getProp)(property, 'type');
106
+ var value = (0, object_util_1.getProp)(property, 'value');
107
+ if ((0, string_util_1.isEmpty)(type) || (0, string_util_1.isEmpty)(value)) {
108
+ continue;
109
+ }
110
+ var typeValue = new type_value_1.default(type, value);
111
+ map.set(property.name, typeValue);
112
+ }
113
+ }
114
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
115
+ finally {
116
+ try {
117
+ if (properties_1_1 && !properties_1_1.done && (_a = properties_1.return)) _a.call(properties_1);
118
+ }
119
+ finally { if (e_1) throw e_1.error; }
120
+ }
121
+ return map;
122
+ };
123
+ PostmanConfigParser.prototype.parseRequestWrapper = function (config) {
124
+ var _this = this;
125
+ if (!(0, object_util_1.hasProp)(config, this.KEY_REQUEST_WRAPPER)) {
126
+ return [];
127
+ }
128
+ var wrapperConfig = (0, object_util_1.getProp)(config, this.KEY_REQUEST_WRAPPER);
129
+ if (!Array.isArray(wrapperConfig)) {
130
+ return [];
131
+ }
132
+ return wrapperConfig.filter(function (wrapper) { return _this.requestWrapperFilter(wrapper); })
133
+ .map(function (wrapper) { return _this.parseWrapperPolicy(wrapper); });
134
+ };
135
+ PostmanConfigParser.prototype.requestWrapperFilter = function (wrapper) {
136
+ var requiredCondition = (0, object_util_1.hasProp)(wrapper, 'path') && (0, object_util_1.hasProp)(wrapper, 'type');
137
+ if (!requiredCondition) {
138
+ return false;
139
+ }
140
+ var type = (0, object_util_1.getProp)(wrapper, 'type');
141
+ var requestMode = request_mode_1.default.fromValue(type);
142
+ if (requestMode.isNone) {
143
+ return false;
144
+ }
145
+ if (requestMode.equalsValue(request_mode_1.default.RAW)) {
146
+ return (0, object_util_1.hasProp)(wrapper, 'format');
147
+ }
148
+ else if (requestMode.equalsValue(request_mode_1.default.FORMDATA)) {
149
+ return (0, object_util_1.hasProp)(wrapper, 'values');
150
+ }
151
+ return false;
152
+ };
153
+ PostmanConfigParser.prototype.parseWrapperPolicy = function (wrapper) {
154
+ var e_2, _a;
155
+ var path = new path_1.default((0, object_util_1.getProp)(wrapper, 'path'));
156
+ var mode = request_mode_1.default.fromValue((0, object_util_1.getProp)(wrapper, 'type'));
157
+ switch (mode) {
158
+ case request_mode_1.default.RAW: {
159
+ var format_1 = (0, object_util_1.getProp)(wrapper, 'format');
160
+ return postman_request_wrapper_template_1.default.ofConfig(path, mode, function (str) {
161
+ //beautify in postman raw body
162
+ return format_1.replace('${body}', JSON.stringify(str, null));
163
+ });
164
+ }
165
+ case request_mode_1.default.FORMDATA: {
166
+ var values = (0, object_util_1.getProp)(wrapper, 'values');
167
+ var parameters = new Array();
168
+ try {
169
+ for (var values_1 = __values(values), values_1_1 = values_1.next(); !values_1_1.done; values_1_1 = values_1.next()) {
170
+ var param = values_1_1.value;
171
+ if (!(0, object_util_1.hasProp)(param, 'name') || !(0, object_util_1.hasProp)(param, 'value')) {
172
+ throw new Error('Invalid formdata parameter');
173
+ }
174
+ var name_1 = (0, object_util_1.getProp)(param, 'name');
175
+ var value = (0, object_util_1.getProp)(param, 'value');
176
+ var description = (0, object_util_1.getProp)(param, 'description');
177
+ parameters.push(new postman_formdata_1.default(name_1, value, 'text', description));
178
+ }
179
+ }
180
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
181
+ finally {
182
+ try {
183
+ if (values_1_1 && !values_1_1.done && (_a = values_1.return)) _a.call(values_1);
184
+ }
185
+ finally { if (e_2) throw e_2.error; }
186
+ }
187
+ return postman_request_wrapper_template_1.default.ofConfig(path, mode, undefined, parameters);
188
+ }
189
+ default: throw new Error('Invalid request mode');
190
+ }
191
+ };
192
+ return PostmanConfigParser;
193
+ }());
194
+ exports.default = PostmanConfigParser;
195
+ //# sourceMappingURL=postman-config-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postman-config-parser.js","sourceRoot":"","sources":["../../src/parser/postman-config-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var request_body_1 = __importDefault(require("@/type/open-api/protocol/request-body"));
7
+ var named_literal_1 = __importDefault(require("@/type/open-api/constant/named-literal"));
8
+ var value_field_1 = __importDefault(require("@/type/open-api/sub/value-field"));
9
+ var data_type_1 = __importDefault(require("@/type/open-api/constant/data-type"));
10
+ var data_format_1 = __importDefault(require("@/type/open-api/constant/data-format"));
11
+ var object_field_1 = __importDefault(require("@/type/open-api/sub/object-field"));
12
+ var object_util_1 = require("@/util/object-util");
13
+ var empty_body_1 = __importDefault(require("@/type/open-api/protocol/empty-body"));
14
+ var RequestBodyParser = /** @class */ (function () {
15
+ function RequestBodyParser() {
16
+ }
17
+ RequestBodyParser.getInstance = function () {
18
+ return RequestBodyParser.INSTANCE;
19
+ };
20
+ RequestBodyParser.prototype.parse = function (metadata, components) {
21
+ var contentType = request_body_1.default.ALLOW_CONTENT_TYPES
22
+ .find(function (contentType) { return (0, object_util_1.hasDeepProp)(metadata.value, ['content', contentType]); });
23
+ if (!contentType) {
24
+ return new empty_body_1.default();
25
+ }
26
+ //schema 의 필드 값들
27
+ var schemaProperties = (0, object_util_1.getDeepProps)(metadata.value, ['content', contentType, 'schema']);
28
+ var hasReference = schemaProperties.some(function (prop) { return prop.name === named_literal_1.default.REFERENCE_KEY; });
29
+ if (hasReference) {
30
+ //schema 자체
31
+ var property = (0, object_util_1.getDeepProp)(metadata.value, ['content', contentType, 'schema']);
32
+ return new request_body_1.default(contentType, this.extractReferenceFields(property, components));
33
+ }
34
+ var properties = (0, object_util_1.getDeepProps)(metadata.value, ['content', contentType, 'schema', 'properties']);
35
+ var fields = this.parseInternal(properties, components);
36
+ return new request_body_1.default(contentType, fields);
37
+ };
38
+ RequestBodyParser.prototype.parseInternal = function (properties, components) {
39
+ var _this = this;
40
+ return properties.map(function (property) {
41
+ if ((0, object_util_1.hasProp)(property.value, named_literal_1.default.REFERENCE_KEY)) {
42
+ var fields = _this.extractReferenceFields(property, components);
43
+ return new object_field_1.default(property.name, '', data_type_1.default.OBJECT, fields);
44
+ }
45
+ return InternalFieldParser.getInstance().parse(property.name, property.value);
46
+ });
47
+ };
48
+ RequestBodyParser.prototype.extractReferenceFields = function (property, components) {
49
+ var _a;
50
+ var referenceKey = (0, object_util_1.getProp)(property.value, named_literal_1.default.REFERENCE_KEY);
51
+ return (_a = components.get(referenceKey)) !== null && _a !== void 0 ? _a : [];
52
+ };
53
+ RequestBodyParser.INSTANCE = new RequestBodyParser();
54
+ return RequestBodyParser;
55
+ }());
56
+ exports.default = RequestBodyParser;
57
+ var InternalFieldParser = /** @class */ (function () {
58
+ function InternalFieldParser() {
59
+ this.PROPERTY_DESCRIPTION = "description";
60
+ this.PROPERTY_TYPE = "type";
61
+ this.PROPERTY_FORMAT = "format";
62
+ this.PROPERTY_EXAMPLE = "example";
63
+ }
64
+ InternalFieldParser.getInstance = function () {
65
+ return InternalFieldParser.INSTANCE;
66
+ };
67
+ InternalFieldParser.prototype.parse = function (name, property) {
68
+ return new value_field_1.default(name, (0, object_util_1.getPropOrDefault)(property, this.PROPERTY_DESCRIPTION, ''), data_type_1.default.fromValue((0, object_util_1.getProp)(property, this.PROPERTY_TYPE)), data_format_1.default.fromValue((0, object_util_1.getProp)(property, this.PROPERTY_FORMAT)), '', (0, object_util_1.getPropOrDefault)(property, this.PROPERTY_EXAMPLE, ''));
69
+ };
70
+ InternalFieldParser.INSTANCE = new InternalFieldParser();
71
+ return InternalFieldParser;
72
+ }());
73
+ //# sourceMappingURL=request-body-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-body-parser.js","sourceRoot":"","sources":["../../src/parser/request-body-parser.ts"],"names":[],"mappings":"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"}