@nestia/sdk 0.1.0

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 (138) hide show
  1. package/assets/bundle/HttpError.ts +1 -0
  2. package/assets/bundle/IConnection.ts +1 -0
  3. package/assets/bundle/Primitive.ts +1 -0
  4. package/assets/config/nestia.config.ts +70 -0
  5. package/lib/INestiaConfig.d.ts +110 -0
  6. package/lib/INestiaConfig.js +3 -0
  7. package/lib/INestiaConfig.js.map +1 -0
  8. package/lib/NestiaSdkApplication.d.ts +11 -0
  9. package/lib/NestiaSdkApplication.js +156 -0
  10. package/lib/NestiaSdkApplication.js.map +1 -0
  11. package/lib/analyses/ControllerAnalyzer.d.ts +6 -0
  12. package/lib/analyses/ControllerAnalyzer.js +106 -0
  13. package/lib/analyses/ControllerAnalyzer.js.map +1 -0
  14. package/lib/analyses/GenericAnalyzer.d.ts +5 -0
  15. package/lib/analyses/GenericAnalyzer.js +41 -0
  16. package/lib/analyses/GenericAnalyzer.js.map +1 -0
  17. package/lib/analyses/ImportAnalyzer.d.ts +13 -0
  18. package/lib/analyses/ImportAnalyzer.js +86 -0
  19. package/lib/analyses/ImportAnalyzer.js.map +1 -0
  20. package/lib/analyses/PathAnalyzer.d.ts +5 -0
  21. package/lib/analyses/PathAnalyzer.js +51 -0
  22. package/lib/analyses/PathAnalyzer.js.map +1 -0
  23. package/lib/analyses/ReflectAnalyzer.d.ts +4 -0
  24. package/lib/analyses/ReflectAnalyzer.js +231 -0
  25. package/lib/analyses/ReflectAnalyzer.js.map +1 -0
  26. package/lib/analyses/SourceFinder.d.ts +4 -0
  27. package/lib/analyses/SourceFinder.js +71 -0
  28. package/lib/analyses/SourceFinder.js.map +1 -0
  29. package/lib/executable/internal/CommandParser.d.ts +3 -0
  30. package/lib/executable/internal/CommandParser.js +21 -0
  31. package/lib/executable/internal/CommandParser.js.map +1 -0
  32. package/lib/executable/internal/NestiaConfigCompilerOptions.d.ts +11 -0
  33. package/lib/executable/internal/NestiaConfigCompilerOptions.js +18 -0
  34. package/lib/executable/internal/NestiaConfigCompilerOptions.js.map +1 -0
  35. package/lib/executable/internal/NestiaSdkCommand.d.ts +4 -0
  36. package/lib/executable/internal/NestiaSdkCommand.js +128 -0
  37. package/lib/executable/internal/NestiaSdkCommand.js.map +1 -0
  38. package/lib/executable/internal/NestiaSdkConfig.d.ts +4 -0
  39. package/lib/executable/internal/NestiaSdkConfig.js +539 -0
  40. package/lib/executable/internal/NestiaSdkConfig.js.map +1 -0
  41. package/lib/executable/internal/nestia.config.getter.d.ts +1 -0
  42. package/lib/executable/internal/nestia.config.getter.js +24 -0
  43. package/lib/executable/internal/nestia.config.getter.js.map +1 -0
  44. package/lib/executable/sdk.d.ts +2 -0
  45. package/lib/executable/sdk.js +86 -0
  46. package/lib/executable/sdk.js.map +1 -0
  47. package/lib/generates/FileGenerator.d.ts +5 -0
  48. package/lib/generates/FileGenerator.js +138 -0
  49. package/lib/generates/FileGenerator.js.map +1 -0
  50. package/lib/generates/FunctionGenerator.d.ts +5 -0
  51. package/lib/generates/FunctionGenerator.js +204 -0
  52. package/lib/generates/FunctionGenerator.js.map +1 -0
  53. package/lib/generates/SdkGenerator.d.ts +7 -0
  54. package/lib/generates/SdkGenerator.js +45 -0
  55. package/lib/generates/SdkGenerator.js.map +1 -0
  56. package/lib/generates/SwaggerGenerator.d.ts +6 -0
  57. package/lib/generates/SwaggerGenerator.js +244 -0
  58. package/lib/generates/SwaggerGenerator.js.map +1 -0
  59. package/lib/index.d.ts +2 -0
  60. package/lib/index.js +28 -0
  61. package/lib/index.js.map +1 -0
  62. package/lib/module.d.ts +2 -0
  63. package/lib/module.js +19 -0
  64. package/lib/module.js.map +1 -0
  65. package/lib/structures/IController.d.ts +23 -0
  66. package/lib/structures/IController.js +3 -0
  67. package/lib/structures/IController.js.map +1 -0
  68. package/lib/structures/IRoute.d.ts +24 -0
  69. package/lib/structures/IRoute.js +3 -0
  70. package/lib/structures/IRoute.js.map +1 -0
  71. package/lib/structures/ISwagger.d.ts +48 -0
  72. package/lib/structures/ISwagger.js +3 -0
  73. package/lib/structures/ISwagger.js.map +1 -0
  74. package/lib/structures/ITypeTuple.d.ts +5 -0
  75. package/lib/structures/ITypeTuple.js +3 -0
  76. package/lib/structures/ITypeTuple.js.map +1 -0
  77. package/lib/structures/MethodType.d.ts +4 -0
  78. package/lib/structures/MethodType.js +14 -0
  79. package/lib/structures/MethodType.js.map +1 -0
  80. package/lib/structures/ParamCategory.d.ts +1 -0
  81. package/lib/structures/ParamCategory.js +3 -0
  82. package/lib/structures/ParamCategory.js.map +1 -0
  83. package/lib/structures/TypeEntry.d.ts +9 -0
  84. package/lib/structures/TypeEntry.js +21 -0
  85. package/lib/structures/TypeEntry.js.map +1 -0
  86. package/lib/test/TestBuilder.d.ts +4 -0
  87. package/lib/test/TestBuilder.js +64 -0
  88. package/lib/test/TestBuilder.js.map +1 -0
  89. package/lib/test/index.d.ts +1 -0
  90. package/lib/test/index.js +61 -0
  91. package/lib/test/index.js.map +1 -0
  92. package/lib/test/test.builder.executor.d.ts +1 -0
  93. package/lib/test/test.builder.executor.js +24 -0
  94. package/lib/test/test.builder.executor.js.map +1 -0
  95. package/lib/utils/ArrayUtil.d.ts +5 -0
  96. package/lib/utils/ArrayUtil.js +39 -0
  97. package/lib/utils/ArrayUtil.js.map +1 -0
  98. package/lib/utils/ImportDictionary.d.ts +6 -0
  99. package/lib/utils/ImportDictionary.js +50 -0
  100. package/lib/utils/ImportDictionary.js.map +1 -0
  101. package/lib/utils/MapUtil.d.ts +3 -0
  102. package/lib/utils/MapUtil.js +16 -0
  103. package/lib/utils/MapUtil.js.map +1 -0
  104. package/lib/utils/StripEnums.d.ts +3 -0
  105. package/lib/utils/StripEnums.js +3 -0
  106. package/lib/utils/StripEnums.js.map +1 -0
  107. package/package.json +74 -0
  108. package/src/INestiaConfig.ts +120 -0
  109. package/src/NestiaSdkApplication.ts +183 -0
  110. package/src/analyses/ControllerAnalyzer.ts +203 -0
  111. package/src/analyses/GenericAnalyzer.ts +53 -0
  112. package/src/analyses/ImportAnalyzer.ts +143 -0
  113. package/src/analyses/PathAnalyzer.ts +58 -0
  114. package/src/analyses/ReflectAnalyzer.ts +279 -0
  115. package/src/analyses/SourceFinder.ts +59 -0
  116. package/src/executable/internal/CommandParser.ts +15 -0
  117. package/src/executable/internal/NestiaConfigCompilerOptions.ts +18 -0
  118. package/src/executable/internal/NestiaSdkCommand.ts +174 -0
  119. package/src/executable/internal/NestiaSdkConfig.ts +35 -0
  120. package/src/executable/internal/nestia.config.getter.ts +12 -0
  121. package/src/executable/sdk.ts +51 -0
  122. package/src/generates/FileGenerator.ts +156 -0
  123. package/src/generates/FunctionGenerator.ts +287 -0
  124. package/src/generates/SdkGenerator.ts +50 -0
  125. package/src/generates/SwaggerGenerator.ts +393 -0
  126. package/src/index.ts +3 -0
  127. package/src/module.ts +2 -0
  128. package/src/structures/IController.ts +27 -0
  129. package/src/structures/IRoute.ts +29 -0
  130. package/src/structures/ISwagger.ts +55 -0
  131. package/src/structures/ITypeTuple.ts +6 -0
  132. package/src/structures/MethodType.ts +11 -0
  133. package/src/structures/ParamCategory.ts +1 -0
  134. package/src/structures/TypeEntry.ts +22 -0
  135. package/src/utils/ArrayUtil.ts +26 -0
  136. package/src/utils/ImportDictionary.ts +56 -0
  137. package/src/utils/MapUtil.ts +14 -0
  138. package/src/utils/StripEnums.ts +10 -0
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
27
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
28
+ return new (P || (P = Promise))(function (resolve, reject) {
29
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
30
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
31
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
32
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
33
+ });
34
+ };
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const child_process_1 = __importDefault(require("child_process"));
40
+ const fs_1 = __importDefault(require("fs"));
41
+ const process_1 = __importDefault(require("process"));
42
+ const CommandParser_1 = require("./internal/CommandParser");
43
+ function dependencies(argv) {
44
+ var _a;
45
+ // INSTALL DEPENDENCIES
46
+ const module = (_a = CommandParser_1.CommandParser.parse(argv).module) !== null && _a !== void 0 ? _a : "npm";
47
+ const prefix = module === "yarn" ? "yarn add" : `${module} install`;
48
+ for (const lib of ["@nestia/fetcher", "typia"]) {
49
+ const command = `${prefix} ${lib}`;
50
+ child_process_1.default.execSync(command, { stdio: "inherit" });
51
+ }
52
+ }
53
+ function initialize() {
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ if (fs_1.default.existsSync("nestia.config.ts") === true)
56
+ throw new Error(`Error on nestia.sdk.initialize(): "nestia.config.ts" file already has been configured.`);
57
+ yield fs_1.default.promises.copyFile(`${__dirname}/../../assets/config/nestia.config.ts`, "nestia.config.ts");
58
+ });
59
+ }
60
+ function execute(closure) {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ const module = yield Promise.resolve().then(() => __importStar(require("./internal/NestiaSdkCommand")));
63
+ yield closure(module.NestiaSdkCommand);
64
+ });
65
+ }
66
+ function main() {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ const type = process_1.default.argv[2];
69
+ const argv = process_1.default.argv.slice(3);
70
+ if (type === "dependencies")
71
+ dependencies(argv);
72
+ else if (type === "init")
73
+ yield initialize();
74
+ else if (type === "sdk")
75
+ yield execute((c) => c.sdk(argv));
76
+ else if (type === "swagger")
77
+ yield execute((c) => c.swagger(argv));
78
+ else
79
+ throw new Error(``);
80
+ });
81
+ }
82
+ main().catch((exp) => {
83
+ console.log(exp.message);
84
+ process_1.default.exit(-1);
85
+ });
86
+ //# sourceMappingURL=sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/executable/sdk.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kEAA+B;AAC/B,4CAAoB;AACpB,sDAA8B;AAE9B,4DAAyD;AAGzD,SAAS,YAAY,CAAC,IAAc;;IAChC,uBAAuB;IACvB,MAAM,MAAM,GAAG,MAAA,6BAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,mCAAI,KAAK,CAAC;IACzD,MAAM,MAAM,GAAW,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,UAAU,CAAC;IAE5E,KAAK,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,EAAE;QAC5C,MAAM,OAAO,GAAW,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;QAC3C,uBAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;KAC9C;AACL,CAAC;AAED,SAAe,UAAU;;QACrB,IAAI,YAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,KAAK,IAAI;YAC1C,MAAM,IAAI,KAAK,CACX,wFAAwF,CAC3F,CAAC;QACN,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CACtB,GAAG,SAAS,uCAAuC,EACnD,kBAAkB,CACrB,CAAC;IACN,CAAC;CAAA;AAED,SAAe,OAAO,CAClB,OAA8D;;QAE9D,MAAM,MAAM,GAAG,wDAAa,6BAA6B,GAAC,CAAC;QAC3D,MAAM,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;CAAA;AAED,SAAe,IAAI;;QACf,MAAM,IAAI,GAAuB,iBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,IAAI,GAAa,iBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAI,IAAI,KAAK,cAAc;YAAE,YAAY,CAAC,IAAI,CAAC,CAAC;aAC3C,IAAI,IAAI,KAAK,MAAM;YAAE,MAAM,UAAU,EAAE,CAAC;aACxC,IAAI,IAAI,KAAK,KAAK;YAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;aACtD,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;;YAC9D,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;CAAA;AACD,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACjB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzB,iBAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { INestiaConfig } from "../INestiaConfig";
2
+ import { IRoute } from "../structures/IRoute";
3
+ export declare namespace FileGenerator {
4
+ function generate(config: INestiaConfig, routeList: IRoute[]): Promise<void>;
5
+ }
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.FileGenerator = void 0;
16
+ const fs_1 = __importDefault(require("fs"));
17
+ const HashMap_1 = require("tstl/container/HashMap");
18
+ const ImportDictionary_1 = require("../utils/ImportDictionary");
19
+ const FunctionGenerator_1 = require("./FunctionGenerator");
20
+ var FileGenerator;
21
+ (function (FileGenerator) {
22
+ /* ---------------------------------------------------------
23
+ CONSTRUCTOR
24
+ --------------------------------------------------------- */
25
+ function generate(config, routeList) {
26
+ return __awaiter(this, void 0, void 0, function* () {
27
+ // CONSTRUCT FOLDER TREE
28
+ const root = new Directory(null, "functional");
29
+ for (const route of routeList)
30
+ emplace(root, route);
31
+ // RELOCATE FOR ONLY ONE CONTROLLER METHOD IN AN URL CASE
32
+ relocate(root);
33
+ // ITERATE FILES
34
+ yield iterate(config, config.output + "/functional", root);
35
+ });
36
+ }
37
+ FileGenerator.generate = generate;
38
+ function emplace(directory, route) {
39
+ // SEPARATE IDENTIFIERS
40
+ const identifiers = route.path
41
+ .split("/")
42
+ .filter((str) => str[0] !== ":" && str.length !== 0)
43
+ .map((str) => str.split("-").join("_").split(".").join("_"));
44
+ // OPEN DIRECTORIES
45
+ for (const key of identifiers) {
46
+ directory = directory.directories.take(key, () => new Directory(directory, key));
47
+ }
48
+ // ADD ROUTE
49
+ directory.routes.push(route);
50
+ }
51
+ function relocate(directory) {
52
+ if (directory.parent !== null &&
53
+ directory.directories.empty() &&
54
+ directory.routes.length === 1 &&
55
+ directory.name === directory.routes[0].name) {
56
+ directory.parent.routes.push(directory.routes[0]);
57
+ directory.parent.directories.erase(directory.name);
58
+ }
59
+ else if (directory.directories.empty() === false)
60
+ for (const it of directory.directories)
61
+ relocate(it.second);
62
+ }
63
+ /* ---------------------------------------------------------
64
+ FILE ITERATOR
65
+ --------------------------------------------------------- */
66
+ function iterate(config, outDir, directory) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ // CREATE A NEW DIRECTORY
69
+ try {
70
+ yield fs_1.default.promises.mkdir(outDir);
71
+ }
72
+ catch (_a) { }
73
+ // ITERATE CHILDREN
74
+ const content = [];
75
+ for (const it of directory.directories) {
76
+ yield iterate(config, `${outDir}/${it.first}`, it.second);
77
+ content.push(`export * as ${it.first} from "./${it.first}";`);
78
+ }
79
+ if (content.length && directory.routes.length)
80
+ content.push("");
81
+ // ITERATE ROUTES
82
+ const importDict = new ImportDictionary_1.ImportDictionary();
83
+ directory.routes.forEach((route, i) => {
84
+ for (const tuple of route.imports)
85
+ for (const instance of tuple[1])
86
+ importDict.emplace(tuple[0], false, instance);
87
+ content.push(FunctionGenerator_1.FunctionGenerator.generate(config, route));
88
+ if (i !== directory.routes.length - 1)
89
+ content.push("");
90
+ });
91
+ // FINALIZE THE CONTENT
92
+ if (directory.routes.length !== 0) {
93
+ const primitived = config.primitive !== false &&
94
+ directory.routes.some((route) => route.output.name !== "void" ||
95
+ route.parameters.some((param) => param.category !== "param"));
96
+ const asserted = config.assert === true &&
97
+ directory.routes.some((route) => route.parameters.length !== 0);
98
+ const json = config.json === true &&
99
+ directory.routes.some((route) => route.method === "POST" ||
100
+ route.method === "PUT" ||
101
+ route.method === "PATCH");
102
+ const fetcher = ["Fetcher"];
103
+ if (primitived)
104
+ fetcher.push("Primitive");
105
+ const head = [
106
+ `import { ${fetcher.join(", ")} } from "@nestia/fetcher";`,
107
+ `import type { IConnection } from "@nestia/fetcher";`,
108
+ ];
109
+ if (asserted || json)
110
+ head.push(`import typia from "typia";`);
111
+ if (!importDict.empty())
112
+ head.push("", importDict.toScript(outDir));
113
+ content.push(...head, "", ...content.splice(0, content.length));
114
+ }
115
+ const script = "/**\n" +
116
+ " * @packageDocumentation\n" +
117
+ ` * @module ${directory.module}\n` +
118
+ " * @nestia Generated by Nestia - https://github.com/samchon/nestia \n" +
119
+ " */\n" +
120
+ "//================================================================\n" +
121
+ content.join("\n");
122
+ yield fs_1.default.promises.writeFile(`${outDir}/index.ts`, script, "utf8");
123
+ });
124
+ }
125
+ })(FileGenerator = exports.FileGenerator || (exports.FileGenerator = {}));
126
+ class Directory {
127
+ constructor(parent, name) {
128
+ this.parent = parent;
129
+ this.name = name;
130
+ this.directories = new HashMap_1.HashMap();
131
+ this.routes = [];
132
+ this.module =
133
+ this.parent !== null
134
+ ? `${this.parent.module}.${name}`
135
+ : `api.${name}`;
136
+ }
137
+ }
138
+ //# sourceMappingURL=FileGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileGenerator.js","sourceRoot":"","sources":["../../src/generates/FileGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { INestiaConfig } from "../INestiaConfig";
2
+ import { IRoute } from "../structures/IRoute";
3
+ export declare namespace FunctionGenerator {
4
+ function generate(config: INestiaConfig, route: IRoute): string;
5
+ }
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FunctionGenerator = void 0;
4
+ const Vector_1 = require("tstl/container/Vector");
5
+ const Pair_1 = require("tstl/utility/Pair");
6
+ const Escaper_1 = require("typia/lib/utils/Escaper");
7
+ var FunctionGenerator;
8
+ (function (FunctionGenerator) {
9
+ function generate(config, route) {
10
+ const query = route.parameters.find((param) => param.category === "query" && param.field === undefined);
11
+ const input = route.parameters.find((param) => param.category === "body");
12
+ return [head, body, tail]
13
+ .map((closure) => closure(route, query, input, config))
14
+ .filter((str) => !!str)
15
+ .join("\n");
16
+ }
17
+ FunctionGenerator.generate = generate;
18
+ /* ---------------------------------------------------------
19
+ BODY
20
+ --------------------------------------------------------- */
21
+ function body(route, query, input, config) {
22
+ // FETCH ARGUMENTS WITH REQUST BODY
23
+ const parameters = filter_parameters(route, query);
24
+ const fetchArguments = [
25
+ "connection",
26
+ `${route.name}.ENCRYPTED`,
27
+ `${route.name}.METHOD`,
28
+ `${route.name}.path(${parameters.map((p) => p.name).join(", ")})`,
29
+ ];
30
+ if (input !== undefined) {
31
+ fetchArguments.push(input.name);
32
+ if (config.json === true)
33
+ fetchArguments.push(`${route.name}.stringify`);
34
+ }
35
+ const assertions = config.assert === true && route.parameters.length !== 0
36
+ ? route.parameters
37
+ .map((param) => ` typia.assert<typeof ${param.name}>(${param.name});`)
38
+ .join("\n") + "\n\n"
39
+ : "";
40
+ // RETURNS WITH FINALIZATION
41
+ return ("{\n" +
42
+ assertions +
43
+ " return Fetcher.fetch\n" +
44
+ " (\n" +
45
+ fetchArguments.map((param) => ` ${param}`).join(",\n") +
46
+ "\n" +
47
+ " );\n" +
48
+ "}");
49
+ }
50
+ function filter_parameters(route, query) {
51
+ const parameters = route.parameters.filter((param) => param.category === "param" ||
52
+ (param.category === "query" && param.field !== undefined));
53
+ if (query)
54
+ parameters.push(query);
55
+ return parameters;
56
+ }
57
+ /* ---------------------------------------------------------
58
+ HEAD & TAIL
59
+ --------------------------------------------------------- */
60
+ function head(route, query, input, config) {
61
+ //----
62
+ // CONSTRUCT COMMENT
63
+ //----
64
+ // MAIN DESCRIPTION
65
+ const comments = route.comments
66
+ .map((part) => `${part.kind === "linkText" ? " " : ""}${part.text}`)
67
+ .map((str) => str.split("\r\n").join("\n"))
68
+ .join("")
69
+ .split("\n")
70
+ .filter((str, i, array) => str !== "" || i !== array.length - 1);
71
+ if (comments.length)
72
+ comments.push("");
73
+ // FILTER TAGS (VULNERABLE PARAMETERS WOULD BE REMOVED)
74
+ const tagList = route.tags.filter((tag) => tag.text !== undefined);
75
+ if (tagList.length !== 0) {
76
+ const index = tagList.findIndex((t) => t.name === "param");
77
+ if (index !== -1) {
78
+ const capsule = Vector_1.Vector.wrap(tagList);
79
+ capsule.insert(capsule.nth(index), {
80
+ name: "param",
81
+ text: [
82
+ {
83
+ kind: "parameterName",
84
+ text: "connection",
85
+ },
86
+ {
87
+ kind: "space",
88
+ text: " ",
89
+ },
90
+ {
91
+ kind: "text",
92
+ text: "connection Information of the remote HTTP(s) server with headers (+encryption password)",
93
+ },
94
+ ],
95
+ });
96
+ }
97
+ comments.push(...tagList.map((tag) => `@${tag.name} ${tag
98
+ .text.map((elem) => elem.text)
99
+ .join("")}`), "");
100
+ }
101
+ // COMPLETE THE COMMENT
102
+ comments.push(`@controller ${route.symbol}`, `@path ${route.method} ${route.path}`, `@nestia Generated by Nestia - https://github.com/samchon/nestia`);
103
+ //----
104
+ // FINALIZATION
105
+ //----
106
+ // REFORM PARAMETERS TEXT
107
+ const parameters = [
108
+ "connection: IConnection",
109
+ ...route.parameters.map((param) => {
110
+ const type = config.primitive !== false &&
111
+ (param === query || param === input)
112
+ ? `Primitive<${route.name}.${param === query ? "Query" : "Input"}>`
113
+ : param.type.name;
114
+ return `${param.name}: ${type}`;
115
+ }),
116
+ ];
117
+ // OUTPUT TYPE
118
+ const output = route.output.name === "void" ? "void" : `${route.name}.Output`;
119
+ // RETURNS WITH CONSTRUCTION
120
+ return ("" +
121
+ "/**\n" +
122
+ comments.map((str) => ` * ${str}`).join("\n") +
123
+ "\n" +
124
+ " */\n" +
125
+ `export function ${route.name}\n` +
126
+ ` (\n` +
127
+ `${parameters.map((str) => ` ${str}`).join(",\n")}\n` +
128
+ ` ): Promise<${output}>`);
129
+ }
130
+ function tail(route, query, input, config) {
131
+ // LIST UP TYPES
132
+ const types = [];
133
+ if (query !== undefined)
134
+ types.push(new Pair_1.Pair("Query", query.type.name));
135
+ if (input !== undefined)
136
+ types.push(new Pair_1.Pair("Input", input.type.name));
137
+ if (route.output.name !== "void")
138
+ types.push(new Pair_1.Pair("Output", route.output.name));
139
+ // PATH WITH PARAMETERS
140
+ const parameters = filter_parameters(route, query);
141
+ const path = compute_path(query, parameters, route.path);
142
+ return (`export namespace ${route.name}\n` +
143
+ "{\n" +
144
+ (types.length !== 0
145
+ ? types
146
+ .map((tuple) => ` export type ${tuple.first} = ${config.primitive !== false
147
+ ? `Primitive<${tuple.second}>`
148
+ : tuple.second};`)
149
+ .join("\n") + "\n"
150
+ : "") +
151
+ "\n" +
152
+ ` export const METHOD = "${route.method}" as const;\n` +
153
+ ` export const PATH: string = "${route.path}";\n` +
154
+ ` export const ENCRYPTED: Fetcher.IEncrypted = {\n` +
155
+ ` request: ${input !== undefined && input.encrypted},\n` +
156
+ ` response: ${route.encrypted},\n` +
157
+ ` };\n` +
158
+ "\n" +
159
+ ` export function path(${parameters
160
+ .map((param) => `${param.name}: ${param.type.name}`)
161
+ .join(", ")}): string\n` +
162
+ ` {\n` +
163
+ ` return ${path};\n` +
164
+ ` }\n` +
165
+ (config.json === true &&
166
+ (route.method === "POST" ||
167
+ route.method === "PUT" ||
168
+ route.method === "PATCH")
169
+ ? ` export const stringify = (input: Input) => typia.stringify(input);\n`
170
+ : "") +
171
+ "}");
172
+ }
173
+ function compute_path(query, parameters, path) {
174
+ for (const param of parameters)
175
+ if (param.category === "param")
176
+ path = path.replace(`:${param.field}`, `\${encodeURIComponent(${param.name})}`);
177
+ const queryParams = parameters.filter((param) => param.category === "query" && param.field !== undefined);
178
+ if (query === undefined && queryParams.length === 0)
179
+ return `\`${path}\``;
180
+ const wrapper = (str) => `\`${path}?\${new URLSearchParams(${str}).toString()}\``;
181
+ if (query !== undefined && queryParams.length === 0)
182
+ return wrapper(`${query.name} as any`);
183
+ else if (query === undefined)
184
+ return wrapper(`
185
+ {
186
+ ${rest_query_parameters(queryParams)}
187
+ } as any`);
188
+ return wrapper(`
189
+ {
190
+ ...${query.name},
191
+ ${rest_query_parameters(queryParams)},
192
+ } as any`);
193
+ }
194
+ function rest_query_parameters(parameters) {
195
+ return parameters
196
+ .map((param) => param.name === param.field
197
+ ? param.name
198
+ : `${Escaper_1.Escaper.variable(param.field)
199
+ ? param.field
200
+ : JSON.stringify(param.field)}: ${param.name}`)
201
+ .join(`,\n${" ".repeat(12)}`);
202
+ }
203
+ })(FunctionGenerator = exports.FunctionGenerator || (exports.FunctionGenerator = {}));
204
+ //# sourceMappingURL=FunctionGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FunctionGenerator.js","sourceRoot":"","sources":["../../src/generates/FunctionGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import ts from "typescript";
2
+ import { INestiaConfig } from "../INestiaConfig";
3
+ import { IRoute } from "../structures/IRoute";
4
+ export declare namespace SdkGenerator {
5
+ function generate(_checker: ts.TypeChecker, config: INestiaConfig, routeList: IRoute[]): Promise<void>;
6
+ const BUNDLE_PATH: string;
7
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.SdkGenerator = void 0;
16
+ const fs_1 = __importDefault(require("fs"));
17
+ const path_1 = __importDefault(require("path"));
18
+ const FileGenerator_1 = require("./FileGenerator");
19
+ var SdkGenerator;
20
+ (function (SdkGenerator) {
21
+ function generate(_checker, config, routeList) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ // PREPARE NEW DIRECTORIES
24
+ try {
25
+ yield fs_1.default.promises.mkdir(config.output);
26
+ }
27
+ catch (_a) { }
28
+ // BUNDLING
29
+ const bundle = yield fs_1.default.promises.readdir(SdkGenerator.BUNDLE_PATH);
30
+ for (const file of bundle) {
31
+ const current = `${SdkGenerator.BUNDLE_PATH}/${file}`;
32
+ const stats = yield fs_1.default.promises.stat(current);
33
+ if (stats.isFile() === true) {
34
+ const content = yield fs_1.default.promises.readFile(current, "utf8");
35
+ yield fs_1.default.promises.writeFile(`${config.output}/${file}`, content, "utf8");
36
+ }
37
+ }
38
+ // FUNCTIONAL
39
+ yield FileGenerator_1.FileGenerator.generate(config, routeList);
40
+ });
41
+ }
42
+ SdkGenerator.generate = generate;
43
+ SdkGenerator.BUNDLE_PATH = path_1.default.join(__dirname, "..", "..", "assets", "bundle");
44
+ })(SdkGenerator = exports.SdkGenerator || (exports.SdkGenerator = {}));
45
+ //# sourceMappingURL=SdkGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SdkGenerator.js","sourceRoot":"","sources":["../../src/generates/SdkGenerator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,gDAA4B;AAK5B,mDAAgD;AAEhD,IAAiB,YAAY,CAyC5B;AAzCD,WAAiB,YAAY;IACzB,SAAsB,QAAQ,CAC1B,QAAwB,EACxB,MAAqB,EACrB,SAAmB;;YAEnB,0BAA0B;YAC1B,IAAI;gBACA,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;aAC3C;YAAC,WAAM,GAAE;YAEV,WAAW;YACX,MAAM,MAAM,GAAa,MAAM,YAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAA,WAAW,CAAC,CAAC;YAChE,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;gBACvB,MAAM,OAAO,GAAW,GAAG,aAAA,WAAW,IAAI,IAAI,EAAE,CAAC;gBACjD,MAAM,KAAK,GAAa,MAAM,YAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAExD,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;oBACzB,MAAM,OAAO,GAAW,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAC9C,OAAO,EACP,MAAM,CACT,CAAC;oBACF,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CACvB,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,EAC1B,OAAO,EACP,MAAM,CACT,CAAC;iBACL;aACJ;YAED,aAAa;YACb,MAAM,6BAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACpD,CAAC;KAAA;IA/BqB,qBAAQ,WA+B7B,CAAA;IAEY,wBAAW,GAAG,cAAQ,CAAC,IAAI,CACpC,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,QAAQ,CACX,CAAC;AACN,CAAC,EAzCgB,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAyC5B"}
@@ -0,0 +1,6 @@
1
+ import ts from "typescript";
2
+ import { INestiaConfig } from "../INestiaConfig";
3
+ import { IRoute } from "../structures/IRoute";
4
+ export declare namespace SwaggerGenerator {
5
+ function generate(checker: ts.TypeChecker, config: INestiaConfig.ISwagger, routeList: IRoute[]): Promise<void>;
6
+ }