nestia 2.1.4 → 2.1.7

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 CHANGED
@@ -8,7 +8,7 @@ Automatic `SDK` and `Swagger` generator for the `NestJS`, evolved than ever.
8
8
  [![Guide Documents](https://img.shields.io/badge/wiki-documentation-forestgreen)](https://github.com/samchon/nestia/wiki)
9
9
 
10
10
  - Github: https://github.com/samchon/nestia
11
- - NPM: https://www.npmjs.com/packages/nestia
11
+ - NPM: https://www.npmjs.com/package/nestia
12
12
  - Guide Documents: https://github.com/samchon/nestia/wiki
13
13
 
14
14
  `nestia` is an evolved `SDK` and `Swagger` generator, which analyzes your `NestJS` server code in the compilation level. With `nestia` and compilation level analyzer, you don't need to write any swagger or class-validator decorators. All you need to do is use the `nestia` CLI as shown below.
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"SwaggerGenerator.d.ts","sourceRoot":"","sources":["../../src/generates/SwaggerGenerator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAU9C,yBAAiB,gBAAgB,CACjC;IACI,SAAsB,QAAQ,CAEtB,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,MAAM,EAAE,cAAc,CAAC,QAAQ,EAC/B,SAAS,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,IAAI,CAAC,CAsCnB;CA8NJ"}
1
+ {"version":3,"file":"SwaggerGenerator.d.ts","sourceRoot":"","sources":["../../src/generates/SwaggerGenerator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAS5B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAM9C,yBAAiB,gBAAgB,CACjC;IACI,SAAsB,QAAQ,CAEtB,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,MAAM,EAAE,cAAc,CAAC,QAAQ,EAC/B,SAAS,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,IAAI,CAAC,CAsCnB;CAgOJ"}
@@ -80,11 +80,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
80
80
  exports.SwaggerGenerator = void 0;
81
81
  var fs_1 = __importDefault(require("fs"));
82
82
  var path_1 = __importDefault(require("path"));
83
- var MetadataCollection_1 = require("../factories/MetadataCollection");
84
- var CommentFactory_1 = require("../factories/CommentFactory");
85
- var MetadataFactory_1 = require("../factories/MetadataFactory");
86
- var SchemaFactory_1 = require("../factories/SchemaFactory");
83
+ var VariadicSingleton_1 = require("tstl/thread/VariadicSingleton");
84
+ var CommentFactory_1 = require("typescript-json/lib/factories/CommentFactory");
85
+ var MetadataCollection_1 = require("typescript-json/lib/storages/MetadataCollection");
86
+ var MetadataFactory_1 = require("typescript-json/lib/factories/MetadataFactory");
87
+ var SchemaFactory_1 = require("typescript-json/lib/factories/SchemaFactory");
87
88
  var MapUtil_1 = require("../utils/MapUtil");
89
+ var Singleton_1 = require("tstl/thread/Singleton");
88
90
  var SwaggerGenerator;
89
91
  (function (SwaggerGenerator) {
90
92
  function generate(checker, config, routeList) {
@@ -210,7 +212,6 @@ var SwaggerGenerator;
210
212
  || !!route.parameters.find(function (param) { return param.encrypted === true; });
211
213
  return {
212
214
  tags: tags,
213
- deprecated: encrypted ? true : undefined,
214
215
  summary: encrypted ? "encrypted" : undefined,
215
216
  parameters: route.parameters
216
217
  .filter(function (param) { return param.category !== "body"; })
@@ -238,7 +239,8 @@ var SwaggerGenerator;
238
239
  }
239
240
  function generate_request_body(checker, collection, route, parameter) {
240
241
  return {
241
- description: get_parametric_description(route, "param", parameter.name) || "",
242
+ description: warning.get(parameter.encrypted).get("request")
243
+ + get_parametric_description(route, "param", parameter.name) || "",
242
244
  content: {
243
245
  "application/json": {
244
246
  schema: generate_schema(checker, collection, parameter.type.metadata)
@@ -256,7 +258,8 @@ var SwaggerGenerator;
256
258
  var schema = generate_schema(checker, collection, route.output.metadata);
257
259
  var success = (_a = {},
258
260
  _a[status] = {
259
- description: get_parametric_description(route, "return")
261
+ description: warning.get(route.encrypted).get("response", route.method)
262
+ + get_parametric_description(route, "return")
260
263
  || get_parametric_description(route, "returns")
261
264
  || "",
262
265
  content: route.output.escapedText === "void" ? undefined :
@@ -312,4 +315,17 @@ var SwaggerGenerator;
312
315
  : undefined;
313
316
  }
314
317
  })(SwaggerGenerator = exports.SwaggerGenerator || (exports.SwaggerGenerator = {}));
318
+ var warning = new VariadicSingleton_1.VariadicSingleton(function (encrypted) {
319
+ if (encrypted === false)
320
+ return new Singleton_1.Singleton(function () { return ""; });
321
+ return new VariadicSingleton_1.VariadicSingleton(function (type, method) {
322
+ var summary = type === "request"
323
+ ? "Request body must be encrypted."
324
+ : "Response data have been encrypted.";
325
+ var component = type === "request"
326
+ ? "[EncryptedBody](https://github.com/samchon/nestia-helper#encryptedbody)"
327
+ : "[EncryptedRoute.".concat(method[0].toUpperCase(), ".").concat(method.substring(1).toLowerCase(), "](https://github.com/samchon/nestia-helper#encryptedroute)");
328
+ return "## Warning\n".concat(summary, "\n\nThe ").concat(type, " body data would be encrypted as \"AES-128(256) / CBC mode / PKCS#5 Padding / Base64 Encoding\", through the ").concat(component, " component.\n\nTherefore, just utilize this swagger editor only for referencing. If you need to call the real API, using [SDK](https://github.com/samchon/nestia#software-development-kit) would be much better.\n\n-----------------\n\n");
329
+ });
330
+ });
315
331
  //# sourceMappingURL=SwaggerGenerator.js.map
@@ -1,8 +1,10 @@
1
+ import { IJsonComponents } from "typescript-json/lib/structures/IJsonComponents";
2
+ import { IJsonSchema } from "typescript-json/lib/structures/IJsonSchema";
1
3
  export interface ISwagger {
2
4
  openapi: "3.0";
3
5
  info: ISwagger.IInfo;
4
6
  paths: Record<string, ISwagger.IPath>;
5
- components: Record<string, object>;
7
+ components: IJsonComponents;
6
8
  }
7
9
  export declare namespace ISwagger {
8
10
  type IPath = Record<string, IRoute>;
@@ -12,7 +14,6 @@ export declare namespace ISwagger {
12
14
  parameters: IParameter[];
13
15
  responses: IResponseBody;
14
16
  requestBody?: IRequestBody;
15
- deprecated?: boolean;
16
17
  summary?: string;
17
18
  }
18
19
  interface IInfo {
@@ -22,7 +23,7 @@ export declare namespace ISwagger {
22
23
  interface IParameter {
23
24
  name: string;
24
25
  in: string;
25
- schema: string;
26
+ schema: IJsonSchema;
26
27
  required: true;
27
28
  description: string;
28
29
  }
@@ -37,7 +38,7 @@ export declare namespace ISwagger {
37
38
  }>;
38
39
  interface IJsonContent {
39
40
  "application/json": {
40
- schema: object;
41
+ schema: IJsonSchema;
41
42
  };
42
43
  }
43
44
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ISwagger.d.ts","sourceRoot":"","sources":["../../src/structures/ISwagger.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IAErB,OAAO,EAAE,KAAK,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AACD,yBAAiB,QAAQ,CACzB;IACI,KAAY,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,UAAiB,MAAM;QAEnB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,UAAU,EAAE,UAAU,EAAE,CAAC;QACzB,SAAS,EAAE,aAAa,CAAC;QACzB,WAAW,CAAC,EAAE,YAAY,CAAC;QAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;KACpB;IAED,UAAiB,KAAK;QAElB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACjB;IACD,UAAiB,UAAU;QAEvB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,IAAI,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;KACvB;IACD,UAAiB,YAAY;QAEzB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,YAAY,CAAC;QACtB,QAAQ,EAAE,IAAI,CAAC;KAClB;IACD,KAAY,aAAa,GAAG,MAAM,CAAC,MAAM,EACzC;QACI,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,YAAY,CAAC;KAC1B,CAAC,CAAC;IAEH,UAAiB,YAAY;QAEzB,kBAAkB,EAAE;YAChB,MAAM,EAAE,MAAM,CAAC;SAClB,CAAC;KACL;CAEJ"}
1
+ {"version":3,"file":"ISwagger.d.ts","sourceRoot":"","sources":["../../src/structures/ISwagger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAEzE,MAAM,WAAW,QAAQ;IAErB,OAAO,EAAE,KAAK,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtC,UAAU,EAAE,eAAe,CAAC;CAC/B;AACD,yBAAiB,QAAQ,CACzB;IACI,KAAY,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,UAAiB,MAAM;QAEnB,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,UAAU,EAAE,UAAU,EAAE,CAAC;QACzB,SAAS,EAAE,aAAa,CAAC;QACzB,WAAW,CAAC,EAAE,YAAY,CAAC;QAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;KACpB;IAED,UAAiB,KAAK;QAElB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACjB;IACD,UAAiB,UAAU;QAEvB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,WAAW,CAAC;QACpB,QAAQ,EAAE,IAAI,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;KACvB;IACD,UAAiB,YAAY;QAEzB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,YAAY,CAAC;QACtB,QAAQ,EAAE,IAAI,CAAC;KAClB;IACD,KAAY,aAAa,GAAG,MAAM,CAAC,MAAM,EACzC;QACI,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,YAAY,CAAC;KAC1B,CAAC,CAAC;IAEH,UAAiB,YAAY;QAEzB,kBAAkB,EAAE;YAChB,MAAM,EAAE,WAAW,CAAC;SACvB,CAAC;KACL;CAEJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nestia",
3
- "version": "2.1.4",
3
+ "version": "2.1.7",
4
4
  "description": "Automatic SDK and Document generator for the NestJS",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -43,7 +43,7 @@
43
43
  "ttypescript": "^1.5.13",
44
44
  "typescript": "^4.6.3",
45
45
  "typescript-is": "^0.19.0",
46
- "typescript-json": "^2.0.9",
46
+ "typescript-json": "^2.1.3",
47
47
  "typescript-transform-paths": "^3.3.1"
48
48
  },
49
49
  "devDependencies": {
@@ -51,7 +51,7 @@
51
51
  "@types/glob": "^7.2.0",
52
52
  "@types/node": "^17.0.23",
53
53
  "@types/reflect-metadata": "^0.1.0",
54
- "nestia-helper": "^2.0.0",
54
+ "nestia-helper": "^2.1.1",
55
55
  "rimraf": "^3.0.2"
56
56
  }
57
57
  }
@@ -1,5 +0,0 @@
1
- import ts from "typescript";
2
- export declare namespace CommentFactory {
3
- function generate(comments: ts.SymbolDisplayPart[]): string;
4
- }
5
- //# sourceMappingURL=CommentFactory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CommentFactory.d.ts","sourceRoot":"","sources":["../../src/factories/CommentFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,yBAAiB,cAAc,CAC/B;IACI,SAAgB,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,iBAAiB,EAAE,GAAG,MAAM,CAMjE;CACJ"}
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CommentFactory = void 0;
4
- var CommentFactory;
5
- (function (CommentFactory) {
6
- function generate(comments) {
7
- return comments
8
- .map(function (part) { return "".concat(part.kind === "linkText" ? " " : "").concat(part.text); })
9
- .map(function (str) { return str.split("\r\n").join("\n"); })
10
- .join("");
11
- }
12
- CommentFactory.generate = generate;
13
- })(CommentFactory = exports.CommentFactory || (exports.CommentFactory = {}));
14
- //# sourceMappingURL=CommentFactory.js.map
@@ -1,14 +0,0 @@
1
- import ts from "typescript";
2
- import { IMetadata } from "../structures/IMetadata";
3
- export declare class MetadataCollection {
4
- readonly inline: boolean;
5
- private readonly dict_;
6
- private readonly names_;
7
- constructor(inline: boolean);
8
- storage(): IMetadata.IStorage;
9
- emplace(checker: ts.TypeChecker, type: ts.Type, nullable: boolean): [string, IMetadata.IObject | null];
10
- private get_name;
11
- }
12
- export declare namespace MetadataCollection {
13
- }
14
- //# sourceMappingURL=MetadataCollection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MetadataCollection.d.ts","sourceRoot":"","sources":["../../src/factories/MetadataCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAK5B,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAIpD,qBAAa,kBAAkB;aAOH,MAAM,EAAE,OAAO;IALvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+D;IACrF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;gBAInC,MAAM,EAAE,OAAO;IAOhC,OAAO,IAAI,SAAS,CAAC,QAAQ;IAQ7B,OAAO,CAEN,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,QAAQ,EAAE,OAAO,GAClB,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;IAqBzC,OAAO,CAAC,QAAQ;CA4BnB;AACD,yBAAiB,kBAAkB,CACnC;CACC"}
@@ -1,83 +0,0 @@
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
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.MetadataCollection = void 0;
15
- var HashMap_1 = require("tstl/container/HashMap");
16
- var Pair_1 = require("tstl/utility/Pair");
17
- var TypeFactry_1 = require("./TypeFactry");
18
- var MapUtil_1 = require("../utils/MapUtil");
19
- var CommentFactory_1 = require("./CommentFactory");
20
- var MetadataCollection = /** @class */ (function () {
21
- function MetadataCollection(inline) {
22
- this.inline = inline;
23
- this.dict_ = new HashMap_1.HashMap();
24
- this.names_ = new Map();
25
- }
26
- MetadataCollection.prototype.storage = function () {
27
- var e_1, _a;
28
- var storage = {};
29
- try {
30
- for (var _b = __values(this.dict_), _c = _b.next(); !_c.done; _c = _b.next()) {
31
- var it = _c.value;
32
- storage[it.second[0]] = it.second[1];
33
- }
34
- }
35
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
36
- finally {
37
- try {
38
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
39
- }
40
- finally { if (e_1) throw e_1.error; }
41
- }
42
- return storage;
43
- };
44
- MetadataCollection.prototype.emplace = function (checker, type, nullable) {
45
- var key = new Pair_1.Pair(type, nullable);
46
- var it = this.dict_.find(key);
47
- if (it.equals(this.dict_.end()) === false)
48
- return [it.second[0], null];
49
- var id = this.get_name(checker, type, nullable);
50
- var obj = {
51
- nullable: nullable,
52
- properties: {},
53
- description: type.symbol
54
- ? CommentFactory_1.CommentFactory.generate(type.symbol.getDocumentationComment(checker))
55
- : ""
56
- };
57
- this.dict_.emplace(key, [id, obj]);
58
- return [id, obj];
59
- };
60
- MetadataCollection.prototype.get_name = function (checker, type, nullable) {
61
- var name = "".concat(TypeFactry_1.TypeFactory.full_name(checker, type)).concat(nullable ? ".Nullable" : "")
62
- .split("&").join("-and-")
63
- .split("|").join("-or-")
64
- .split("<").join("-lt-")
65
- .split(">").join("-gt-")
66
- .split(",").join("-comma-")
67
- .split("'").join("")
68
- .split('"').join("")
69
- .split(" ").join("");
70
- var duplicates = MapUtil_1.MapUtil.take(this.names_, name, function () { return new Map(); });
71
- var oldbie = duplicates.get(type);
72
- if (oldbie)
73
- return oldbie;
74
- var emended = duplicates.size
75
- ? "".concat(name, ".o").concat(duplicates.size)
76
- : name;
77
- duplicates.set(type, emended);
78
- return emended;
79
- };
80
- return MetadataCollection;
81
- }());
82
- exports.MetadataCollection = MetadataCollection;
83
- //# sourceMappingURL=MetadataCollection.js.map
@@ -1,8 +0,0 @@
1
- import ts from "typescript";
2
- import { IMetadata } from "../structures/IMetadata";
3
- import { MetadataCollection } from "./MetadataCollection";
4
- export declare namespace MetadataFactory {
5
- export import Collection = MetadataCollection;
6
- function generate(checker: ts.TypeChecker, type: ts.Type | null, collection?: Collection): IMetadata.IApplication | null;
7
- }
8
- //# sourceMappingURL=MetadataFactory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MetadataFactory.d.ts","sourceRoot":"","sources":["../../src/factories/MetadataFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,yBAAiB,eAAe,CAChC;IACI,MAAM,QAAQ,UAAU,GAAG,kBAAkB,CAAC;IAE9C,SAAgB,QAAQ,CAEhB,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,EACpB,UAAU,GAAE,UAAiC,GAC9C,SAAS,CAAC,YAAY,GAAG,IAAI,CAenC;CA0NJ"}
@@ -1,251 +0,0 @@
1
- "use strict";
2
- var __read = (this && this.__read) || function (o, n) {
3
- var m = typeof Symbol === "function" && o[Symbol.iterator];
4
- if (!m) return o;
5
- var i = m.call(o), r, ar = [], e;
6
- try {
7
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
- }
9
- catch (error) { e = { error: error }; }
10
- finally {
11
- try {
12
- if (r && !r.done && (m = i["return"])) m.call(i);
13
- }
14
- finally { if (e) throw e.error; }
15
- }
16
- return ar;
17
- };
18
- var __values = (this && this.__values) || function(o) {
19
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
20
- if (m) return m.call(o);
21
- if (o && typeof o.length === "number") return {
22
- next: function () {
23
- if (o && i >= o.length) o = void 0;
24
- return { value: o && o[i++], done: !o };
25
- }
26
- };
27
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
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 __importDefault = (this && this.__importDefault) || function (mod) {
39
- return (mod && mod.__esModule) ? mod : { "default": mod };
40
- };
41
- Object.defineProperty(exports, "__esModule", { value: true });
42
- exports.MetadataFactory = void 0;
43
- var crypto_1 = __importDefault(require("crypto"));
44
- var typescript_1 = __importDefault(require("typescript"));
45
- var Singleton_1 = require("tstl/thread/Singleton");
46
- var MetadataCollection_1 = require("./MetadataCollection");
47
- var TypeFactry_1 = require("./TypeFactry");
48
- var MetadataFactory;
49
- (function (MetadataFactory) {
50
- MetadataFactory.Collection = MetadataCollection_1.MetadataCollection;
51
- function generate(checker, type, collection) {
52
- if (collection === void 0) { collection = new MetadataFactory.Collection(true); }
53
- // CONSTRUCT SCHEMA WITH OBJECTS
54
- var metadata = explore(collection, checker, type);
55
- if (metadata === null)
56
- return null;
57
- // RETURNS WITH STORAGE
58
- var storage = collection.storage();
59
- return { metadata: metadata, storage: storage };
60
- }
61
- MetadataFactory.generate = generate;
62
- function explore(collection, checker, type) {
63
- if (type === null)
64
- return null;
65
- var schema = {
66
- atomics: new Set(),
67
- arraies: new Map(),
68
- objects: new Set(),
69
- nullable: false,
70
- required: true,
71
- };
72
- if (iterate(collection, checker, schema, type) === false)
73
- return null;
74
- return schema;
75
- }
76
- function iterate(collection, checker, schema, type, parentEscaped) {
77
- var e_1, _a, e_2, _b;
78
- if (parentEscaped === void 0) { parentEscaped = false; }
79
- // ESCAPE toJSON() METHOD
80
- var _c = __read(TypeFactry_1.TypeFactory.escape(checker, type), 2), converted = _c[0], partialEscaped = _c[1];
81
- if (partialEscaped === true)
82
- type = converted;
83
- // WHEN UNION TYPE
84
- var escaped = partialEscaped || parentEscaped;
85
- if (type.isUnion())
86
- return type.types.every(function (t) { return iterate(collection, checker, schema, t, escaped); });
87
- // NODE AND ATOMIC TYPE CHECKER
88
- var node = checker.typeToTypeNode(type, undefined, undefined);
89
- if (!node)
90
- return false;
91
- var filter = function (flag) { return (type.getFlags() & flag) !== 0; };
92
- var check = function (flag, literal, className) {
93
- var _a;
94
- if (filter(flag) || filter(literal) || ((_a = type.symbol) === null || _a === void 0 ? void 0 : _a.escapedName) === className) {
95
- schema.atomics.add(className.toLowerCase());
96
- return true;
97
- }
98
- return false;
99
- };
100
- // UNKNOWN, NULL OR UNDEFINED
101
- if (filter(typescript_1.default.TypeFlags.Unknown) || filter(typescript_1.default.TypeFlags.Never) || filter(typescript_1.default.TypeFlags.Any))
102
- return false;
103
- else if (filter(typescript_1.default.TypeFlags.Null))
104
- return escaped ? false : schema.nullable = true;
105
- else if (filter(typescript_1.default.TypeFlags.Undefined) || filter(typescript_1.default.TypeFlags.Void) || filter(typescript_1.default.TypeFlags.VoidLike))
106
- return escaped ? false : !(schema.required = false);
107
- try {
108
- // ATOMIC VALUE TYPES
109
- for (var _d = __values(ATOMICS.get()), _e = _d.next(); !_e.done; _e = _d.next()) {
110
- var _f = __read(_e.value, 3), flag = _f[0], literal = _f[1], className = _f[2];
111
- if (check(flag, literal, className) === true)
112
- return escaped ? false : true;
113
- }
114
- }
115
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
116
- finally {
117
- try {
118
- if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
119
- }
120
- finally { if (e_1) throw e_1.error; }
121
- }
122
- // WHEN TUPLE
123
- if (typescript_1.default.isTupleTypeNode(node)) {
124
- if (escaped || node.elements.length === 0)
125
- return false;
126
- var elemSchema = explore(collection, checker, checker.getTypeFromTypeNode(node.elements[0]));
127
- if (elemSchema === null)
128
- return false;
129
- try {
130
- for (var _g = __values(node.elements.slice(1)), _h = _g.next(); !_h.done; _h = _g.next()) {
131
- var elem = _h.value;
132
- if (iterate(collection, checker, elemSchema, checker.getTypeFromTypeNode(elem)) === false)
133
- return false;
134
- }
135
- }
136
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
137
- finally {
138
- try {
139
- if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
140
- }
141
- finally { if (e_2) throw e_2.error; }
142
- }
143
- }
144
- // WHEN ARRAY
145
- else if (typescript_1.default.isArrayTypeNode(node) || !!type.getNumberIndexType()) {
146
- if (escaped)
147
- return false;
148
- var elemType = type.getNumberIndexType()
149
- || checker.getTypeArguments(type)[0]
150
- || null;
151
- var elemSchema = explore(collection, checker, elemType);
152
- var key = get_uid(elemSchema);
153
- schema.arraies.set(key, elemSchema);
154
- }
155
- // WHEN OBJECT, MAYBE
156
- else if (filter(typescript_1.default.TypeFlags.Object)) {
157
- if (type.isIntersection()) {
158
- var fakeCollection_1 = new MetadataFactory.Collection(true);
159
- var fakeSchema_1 = {
160
- atomics: new Set(),
161
- arraies: new Map(),
162
- objects: new Set(),
163
- nullable: false,
164
- required: true,
165
- };
166
- if (type.types.every(function (t) { return iterate(fakeCollection_1, checker, fakeSchema_1, t); }) === false)
167
- return false;
168
- else if (fakeSchema_1.atomics.size || fakeSchema_1.arraies.size || !fakeSchema_1.objects.size)
169
- return false;
170
- }
171
- var key = emplace(collection, checker, type, schema.nullable);
172
- schema.objects.add(collection.inline
173
- ? "components#/schemas/".concat(key)
174
- : "#/components/schemas/".concat(key));
175
- }
176
- return !escaped;
177
- }
178
- function emplace(collection, checker, parent, nullable) {
179
- var e_3, _a;
180
- var _b, _c;
181
- // CHECK MEMORY
182
- var _d = __read(collection.emplace(checker, parent, nullable), 2), id = _d[0], object = _d[1];
183
- if (object === null)
184
- return id;
185
- // PREPARE ASSETS
186
- var isClass = parent.isClass();
187
- var pred = isClass
188
- ? function (node) { return (typescript_1.default.isParameter(node) || typescript_1.default.isPropertyDeclaration(node)); }
189
- : function (node) { return (typescript_1.default.isPropertySignature(node) || typescript_1.default.isTypeLiteralNode(node)); };
190
- try {
191
- for (var _e = __values(parent.getApparentProperties()), _f = _e.next(); !_f.done; _f = _e.next()) {
192
- var prop = _f.value;
193
- // CHECK NODE IS A FORMAL PROPERTY
194
- var node = (prop.getDeclarations() || [])[0];
195
- if (!node || !pred(node))
196
- continue;
197
- else if (node.getChildren().some(function (child) { return TypeFactry_1.TypeFactory.is_function(child); }))
198
- continue;
199
- // CHECK NOT PRIVATE OR PROTECTED MEMBER
200
- if (isClass) {
201
- var kind = (_c = (_b = node.getChildren()[0]) === null || _b === void 0 ? void 0 : _b.getChildren()[0]) === null || _c === void 0 ? void 0 : _c.kind;
202
- if (kind === typescript_1.default.SyntaxKind.PrivateKeyword || kind === typescript_1.default.SyntaxKind.ProtectedKeyword)
203
- continue;
204
- }
205
- // GET EXACT TYPE
206
- var key = node.name.getText();
207
- var type = checker.getTypeOfSymbolAtLocation(prop, node);
208
- // CHILD METADATA BY ADDITIONAL EXPLORATION
209
- var child = explore(collection, checker, type);
210
- if (child && node.questionToken)
211
- child.required = false;
212
- object.properties[key] = child;
213
- }
214
- }
215
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
216
- finally {
217
- try {
218
- if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
219
- }
220
- finally { if (e_3) throw e_3.error; }
221
- }
222
- return id;
223
- }
224
- function get_uid(schema) {
225
- if (schema === null)
226
- return "null";
227
- return crypto_1.default.createHash("sha256")
228
- .update(JSON.stringify(to_primitive(schema)))
229
- .digest("base64");
230
- }
231
- function to_primitive(schema) {
232
- if (schema === null)
233
- return null;
234
- return {
235
- atomics: Array.from(schema.atomics),
236
- arraies: __spreadArray([], __read(schema.arraies), false).map(function (_a) {
237
- var _b = __read(_a, 2), key = _b[0], value = _b[1];
238
- return [key, to_primitive(value)];
239
- }),
240
- objects: Array.from(schema.objects),
241
- nullable: schema.nullable
242
- };
243
- }
244
- })(MetadataFactory = exports.MetadataFactory || (exports.MetadataFactory = {}));
245
- var ATOMICS = new Singleton_1.Singleton(function () { return [
246
- [typescript_1.default.TypeFlags.BooleanLike, typescript_1.default.TypeFlags.BooleanLiteral, "Boolean"],
247
- [typescript_1.default.TypeFlags.NumberLike, typescript_1.default.TypeFlags.NumberLiteral, "Number"],
248
- [typescript_1.default.TypeFlags.BigIntLike, typescript_1.default.TypeFlags.BigIntLiteral, "BigInt"],
249
- [typescript_1.default.TypeFlags.StringLike, typescript_1.default.TypeFlags.StringLiteral, "String"]
250
- ]; });
251
- //# sourceMappingURL=MetadataFactory.js.map
@@ -1,9 +0,0 @@
1
- import { IMetadata } from "../structures/IMetadata";
2
- export declare namespace SchemaFactory {
3
- function application(app: IMetadata.IApplication | null): any[];
4
- function schema(meta: IMetadata | null): any;
5
- function components(storage: IMetadata.IStorage | null): {
6
- schemas: Record<string, any>;
7
- };
8
- }
9
- //# sourceMappingURL=SchemaFactory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SchemaFactory.d.ts","sourceRoot":"","sources":["../../src/factories/SchemaFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,yBAAiB,aAAa,CAC9B;IACI,SAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,YAAY,GAAG,IAAI,SAQ7D;IAKD,SAAgB,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,GAAG,GAAG,CAyBlD;IA6BD,SAAgB,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,GAAG,IAAI;;MAO5D;CAqBJ"}
@@ -1,179 +0,0 @@
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 __values = (this && this.__values) || function(o) {
14
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
15
- if (m) return m.call(o);
16
- if (o && typeof o.length === "number") return {
17
- next: function () {
18
- if (o && i >= o.length) o = void 0;
19
- return { value: o && o[i++], done: !o };
20
- }
21
- };
22
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
23
- };
24
- var __read = (this && this.__read) || function (o, n) {
25
- var m = typeof Symbol === "function" && o[Symbol.iterator];
26
- if (!m) return o;
27
- var i = m.call(o), r, ar = [], e;
28
- try {
29
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
30
- }
31
- catch (error) { e = { error: error }; }
32
- finally {
33
- try {
34
- if (r && !r.done && (m = i["return"])) m.call(i);
35
- }
36
- finally { if (e) throw e.error; }
37
- }
38
- return ar;
39
- };
40
- Object.defineProperty(exports, "__esModule", { value: true });
41
- exports.SchemaFactory = void 0;
42
- var SchemaFactory;
43
- (function (SchemaFactory) {
44
- function application(app) {
45
- return [
46
- schema((app === null || app === void 0 ? void 0 : app.metadata) || null),
47
- {
48
- components: components((app === null || app === void 0 ? void 0 : app.storage) || null)
49
- }
50
- ];
51
- }
52
- SchemaFactory.application = application;
53
- /* -----------------------------------------------------------
54
- SCHEMA
55
- ----------------------------------------------------------- */
56
- function schema(meta) {
57
- var e_1, _a, e_2, _b, e_3, _c;
58
- if (meta === null)
59
- return {};
60
- var unions = [];
61
- try {
62
- for (var _d = __values(meta.atomics), _e = _d.next(); !_e.done; _e = _d.next()) {
63
- var type = _e.value;
64
- unions.push(generate_atomic(type, meta.nullable));
65
- }
66
- }
67
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
68
- finally {
69
- try {
70
- if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
71
- }
72
- finally { if (e_1) throw e_1.error; }
73
- }
74
- try {
75
- for (var _f = __values(meta.objects.values()), _g = _f.next(); !_g.done; _g = _f.next()) {
76
- var address = _g.value;
77
- unions.push(generate_pointer(address));
78
- }
79
- }
80
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
81
- finally {
82
- try {
83
- if (_g && !_g.done && (_b = _f.return)) _b.call(_f);
84
- }
85
- finally { if (e_2) throw e_2.error; }
86
- }
87
- try {
88
- for (var _h = __values(meta.arraies.values()), _j = _h.next(); !_j.done; _j = _h.next()) {
89
- var schema_1 = _j.value;
90
- unions.push(generate_array(schema_1, meta.nullable));
91
- }
92
- }
93
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
94
- finally {
95
- try {
96
- if (_j && !_j.done && (_c = _h.return)) _c.call(_h);
97
- }
98
- finally { if (e_3) throw e_3.error; }
99
- }
100
- if (unions.length === 0)
101
- return { description: meta.description };
102
- else if (unions.length === 1)
103
- return __assign({ description: meta.description }, unions[0]);
104
- else
105
- return {
106
- description: meta.description,
107
- oneOf: unions
108
- };
109
- }
110
- SchemaFactory.schema = schema;
111
- function generate_atomic(type, nullable) {
112
- return {
113
- type: type,
114
- nullable: nullable,
115
- };
116
- }
117
- function generate_pointer(address) {
118
- return {
119
- $ref: address
120
- };
121
- }
122
- function generate_array(metadata, nullable) {
123
- return {
124
- type: "array",
125
- items: schema(metadata),
126
- nullable: nullable
127
- };
128
- }
129
- /* -----------------------------------------------------------
130
- COMPONENTS
131
- ----------------------------------------------------------- */
132
- function components(storage) {
133
- var e_4, _a;
134
- var schemas = {};
135
- try {
136
- for (var _b = __values(Object.entries(storage || [])), _c = _b.next(); !_c.done; _c = _b.next()) {
137
- var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
138
- schemas[key] = generate_object(value);
139
- }
140
- }
141
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
142
- finally {
143
- try {
144
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
145
- }
146
- finally { if (e_4) throw e_4.error; }
147
- }
148
- return { schemas: schemas };
149
- }
150
- SchemaFactory.components = components;
151
- function generate_object(obj) {
152
- var e_5, _a;
153
- var properties = {};
154
- var required = [];
155
- try {
156
- for (var _b = __values(Object.entries(obj.properties || [])), _c = _b.next(); !_c.done; _c = _b.next()) {
157
- var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
158
- properties[key] = schema(value);
159
- if ((value === null || value === void 0 ? void 0 : value.required) === true)
160
- required.push(key);
161
- }
162
- }
163
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
164
- finally {
165
- try {
166
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
167
- }
168
- finally { if (e_5) throw e_5.error; }
169
- }
170
- return {
171
- type: "object",
172
- properties: properties,
173
- nullable: obj.nullable,
174
- required: required,
175
- description: obj.description,
176
- };
177
- }
178
- })(SchemaFactory = exports.SchemaFactory || (exports.SchemaFactory = {}));
179
- //# sourceMappingURL=SchemaFactory.js.map