@nestia/sdk 1.3.7 → 1.3.9

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.
@@ -0,0 +1,101 @@
1
+ import { HttpError } from "@nestia/fetcher";
2
+
3
+ import typia from "typia";
4
+
5
+ export namespace NestiaSimulator {
6
+ export interface IProps {
7
+ host: string;
8
+ path: string;
9
+ method: "GET" | "POST" | "PATCH" | "PUT" | "DELETE";
10
+ }
11
+
12
+ export const assert = (props: IProps) => {
13
+ return {
14
+ param: param(props),
15
+ query: query(props),
16
+ body: body(props),
17
+ };
18
+ };
19
+ const param =
20
+ (props: IProps) =>
21
+ (name: string) =>
22
+ (type: string) =>
23
+ <T>(task: () => T): void => {
24
+ validate(
25
+ (exp) => `URL parameter "${name}" is not ${exp.expected} type.`,
26
+ )(props)(
27
+ type === "uuid"
28
+ ? uuid(task)
29
+ : type === "date"
30
+ ? date(task)
31
+ : task,
32
+ );
33
+ };
34
+
35
+ const query =
36
+ (props: IProps) =>
37
+ <T>(task: () => T): void =>
38
+ validate(
39
+ () =>
40
+ "Request query parameters are not following the promised type.",
41
+ )(props)(task);
42
+
43
+ const body =
44
+ (props: IProps) =>
45
+ <T>(task: () => T): void =>
46
+ validate(() => "Request body is not following the promised type.")(
47
+ props,
48
+ )(task);
49
+
50
+ const uuid =
51
+ <T>(task: () => T) =>
52
+ () => {
53
+ const value = task();
54
+ return typia.assert<IUuid>({ value }).value as T;
55
+ };
56
+
57
+ const date =
58
+ <T>(task: () => T) =>
59
+ () => {
60
+ const value = task();
61
+ return typia.assert<IDate>({ value }).value as T;
62
+ };
63
+
64
+ const validate =
65
+ (message: (exp: typia.TypeGuardError) => string, path?: string) =>
66
+ (props: IProps) =>
67
+ <T>(task: () => T): void => {
68
+ try {
69
+ task();
70
+ } catch (exp) {
71
+ if (typia.is<typia.TypeGuardError>(exp))
72
+ throw new HttpError(
73
+ props.method,
74
+ props.host + props.path,
75
+ 400,
76
+ JSON.stringify({
77
+ method: exp.method,
78
+ path: path ?? exp.path,
79
+ expected: exp.expected,
80
+ value: exp.value,
81
+ message: message(exp),
82
+ }),
83
+ );
84
+ throw exp;
85
+ }
86
+ };
87
+ }
88
+
89
+ interface IUuid {
90
+ /**
91
+ * @format uuid
92
+ */
93
+ value: string | null;
94
+ }
95
+
96
+ interface IDate {
97
+ /**
98
+ * @format date
99
+ */
100
+ value: string | null;
101
+ }
@@ -37,6 +37,13 @@ var SdkGenerator;
37
37
  yield fs_1.default.promises.writeFile(`${config.output}/${file}`, content, "utf8");
38
38
  }
39
39
  }
40
+ if (config.random && routes.some((r) => !!r.parameters.length)) {
41
+ try {
42
+ yield fs_1.default.promises.mkdir(`${config.output}/utils`);
43
+ }
44
+ catch (_b) { }
45
+ yield fs_1.default.promises.copyFile(`${SdkGenerator.BUNDLE_PATH}/utils/NestiaSimulator.ts`, `${config.output}/utils/NestiaSimulator.ts`);
46
+ }
40
47
  // FUNCTIONAL
41
48
  yield SdkFileProgrammer_1.SdkFileProgrammer.generate(config)(routes);
42
49
  // DISTRIBUTION
@@ -1 +1 @@
1
- {"version":3,"file":"SdkGenerator.js","sourceRoot":"","sources":["../../src/generates/SdkGenerator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,gDAA4B;AAI5B,0EAAuE;AACvE,oEAAiE;AAEjE,IAAiB,YAAY,CA+C5B;AA/CD,WAAiB,YAAY;IACZ,qBAAQ,GACjB,CAAC,MAAqB,EAAE,EAAE,CAC1B,CAAO,MAAgB,EAAiB,EAAE;QACtC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAEtC,0BAA0B;QAC1B,IAAI;YACA,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;SAC3C;QAAC,WAAM,GAAE;QAEV,WAAW;QACX,MAAM,MAAM,GAAa,MAAM,YAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAA,WAAW,CAAC,CAAC;QAChE,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;YACvB,MAAM,OAAO,GAAW,GAAG,aAAA,WAAW,IAAI,IAAI,EAAE,CAAC;YACjD,MAAM,KAAK,GAAa,MAAM,YAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAExD,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;gBACzB,MAAM,OAAO,GAAW,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAC9C,OAAO,EACP,MAAM,CACT,CAAC;gBACF,IAAI,YAAE,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK;oBACnD,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CACvB,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,EAC1B,OAAO,EACP,MAAM,CACT,CAAC;aACT;SACJ;QAED,aAAa;QACb,MAAM,qCAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;QAEjD,eAAe;QACf,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;YAC/B,MAAM,2CAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC,CAAA,CAAC;IAEO,wBAAW,GAAG,cAAQ,CAAC,IAAI,CACpC,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,KAAK,CACR,CAAC;AACN,CAAC,EA/CgB,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QA+C5B"}
1
+ {"version":3,"file":"SdkGenerator.js","sourceRoot":"","sources":["../../src/generates/SdkGenerator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,gDAA4B;AAI5B,0EAAuE;AACvE,oEAAiE;AAEjE,IAAiB,YAAY,CAwD5B;AAxDD,WAAiB,YAAY;IACZ,qBAAQ,GACjB,CAAC,MAAqB,EAAE,EAAE,CAC1B,CAAO,MAAgB,EAAiB,EAAE;QACtC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAEtC,0BAA0B;QAC1B,IAAI;YACA,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAO,CAAC,CAAC;SAC3C;QAAC,WAAM,GAAE;QAEV,WAAW;QACX,MAAM,MAAM,GAAa,MAAM,YAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAA,WAAW,CAAC,CAAC;QAChE,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE;YACvB,MAAM,OAAO,GAAW,GAAG,aAAA,WAAW,IAAI,IAAI,EAAE,CAAC;YACjD,MAAM,KAAK,GAAa,MAAM,YAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAExD,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;gBACzB,MAAM,OAAO,GAAW,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAC9C,OAAO,EACP,MAAM,CACT,CAAC;gBACF,IAAI,YAAE,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK;oBACnD,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CACvB,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,EAC1B,OAAO,EACP,MAAM,CACT,CAAC;aACT;SACJ;QACD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAC5D,IAAI;gBACA,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;aACrD;YAAC,WAAM,GAAE;YACV,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CACtB,GAAG,aAAA,WAAW,2BAA2B,EACzC,GAAG,MAAM,CAAC,MAAM,2BAA2B,CAC9C,CAAC;SACL;QAED,aAAa;QACb,MAAM,qCAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;QAEjD,eAAe;QACf,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;YAC/B,MAAM,2CAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC,CAAA,CAAC;IAEO,wBAAW,GAAG,cAAQ,CAAC,IAAI,CACpC,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,KAAK,CACR,CAAC;AACN,CAAC,EAxDgB,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAwD5B"}
@@ -76,6 +76,9 @@ var SdkFileProgrammer;
76
76
  content.push("");
77
77
  // ITERATE ROUTES
78
78
  const importDict = new ImportDictionary_1.ImportDictionary();
79
+ if (config.random &&
80
+ directory.routes.some((r) => !!r.parameters.length))
81
+ importDict.emplace(`${config.output}/utils/NestiaSimulator.ts`, true, "NestiaSimulator");
79
82
  directory.routes.forEach((route, i) => {
80
83
  for (const tuple of route.imports)
81
84
  for (const instance of tuple[1])
@@ -96,19 +99,16 @@ var SdkFileProgrammer;
96
99
  route.method === "PUT" ||
97
100
  route.method === "PATCH");
98
101
  const random = config.random === true &&
99
- directory.routes.some((s) => s.output.name !== "void");
102
+ directory.routes.some((s) => !!s.parameters.length || s.output.name !== "void");
100
103
  const classes = ["Fetcher"];
101
104
  const typings = ["IConnection"];
102
105
  if (primitived)
103
106
  typings.push("Primitive");
104
- if (config.random &&
105
- directory.routes.some((r) => !!r.parameters.length))
106
- classes.push("HttpError");
107
107
  const head = [
108
108
  `import { ${classes.join(", ")} } from "@nestia/fetcher";`,
109
109
  `import type { ${typings.join(", ")} } from "@nestia/fetcher";`,
110
110
  ];
111
- if (asserted || json || random || classes.length === 2)
111
+ if (asserted || json || random)
112
112
  head.push(`import typia from "typia";`);
113
113
  if (!importDict.empty())
114
114
  head.push("", importDict.toScript(outDir));
@@ -1 +1 @@
1
- {"version":3,"file":"SdkFileProgrammer.js","sourceRoot":"","sources":["../../../src/generates/internal/SdkFileProgrammer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAoB;AAIpB,mEAAgE;AAChE,mEAAgE;AAChE,2DAAwD;AAExD,IAAiB,iBAAiB,CAmJjC;AAnJD,WAAiB,iBAAiB;IAC9B;;gEAE4D;IAC/C,0BAAQ,GACjB,CAAC,MAAqB,EAAE,EAAE,CAC1B,CAAO,SAAmB,EAAiB,EAAE;QACzC,wBAAwB;QACxB,MAAM,IAAI,GAAsB,IAAI,qCAAiB,CACjD,IAAI,EACJ,YAAY,CACf,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;QAEpD,yDAAyD;QACzD,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,gBAAgB;QAChB,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC,CAAC;IAC/D,CAAC,CAAA,CAAC;IAEN,MAAM,OAAO,GACT,CAAC,SAA4B,EAAE,EAAE,CACjC,CAAC,KAAa,EAAQ,EAAE;QACpB,uBAAuB;QACvB,MAAM,WAAW,GAAa,KAAK,CAAC,IAAI;aACnC,KAAK,CAAC,GAAG,CAAC;aACV,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;aAC7C,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAEjE,mBAAmB;QACnB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;YAC3B,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,CAClC,GAAG,EACH,GAAG,EAAE,CAAC,IAAI,qCAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,CAC9C,CAAC;SACL;QAED,YAAY;QACZ,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC;IAEN,MAAM,QAAQ,GAAG,CAAC,SAA4B,EAAQ,EAAE;QACpD,IACI,SAAS,CAAC,MAAM,KAAK,IAAI;YACzB,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE;YAC7B,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAC7B,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAC7C;YACE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SACtD;aAAM,IAAI,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,KAAK;YAC9C,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,WAAW;gBAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IACpE,CAAC,CAAC;IAEF;;gEAE4D;IAC5D,MAAM,OAAO,GACT,CAAC,MAAqB,EAAE,EAAE,CAC1B,CAAC,SAA4B,EAAE,EAAE,CACjC,CAAO,MAAc,EAAiB,EAAE;QACpC,yBAAyB;QACzB,IAAI;YACA,MAAM,YAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SACnC;QAAC,WAAM,GAAE;QAEV,mBAAmB;QACnB,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE;YACpC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,YAAY,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;SACjE;QACD,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEhE,iBAAiB;QACjB,MAAM,UAAU,GAAqB,IAAI,mCAAgB,EAAE,CAAC;QAC5D,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YAClC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO;gBAC7B,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC;oBAC3B,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAEtD,OAAO,CAAC,IAAI,CAAC,6CAAqB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/B,MAAM,UAAU,GACZ,MAAM,CAAC,SAAS,KAAK,KAAK;gBAC1B,SAAS,CAAC,MAAM,CAAC,IAAI,CACjB,CAAC,KAAK,EAAE,EAAE,CACN,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;oBAC5B,KAAK,CAAC,UAAU,CAAC,IAAI,CACjB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CACxC,CACR,CAAC;YACN,MAAM,QAAQ,GACV,MAAM,CAAC,MAAM,KAAK,IAAI;gBACtB,SAAS,CAAC,MAAM,CAAC,IAAI,CACjB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAC3C,CAAC;YACN,MAAM,IAAI,GACN,MAAM,CAAC,IAAI,KAAK,IAAI;gBACpB,SAAS,CAAC,MAAM,CAAC,IAAI,CACjB,CAAC,KAAK,EAAE,EAAE,CACN,KAAK,CAAC,MAAM,KAAK,MAAM;oBACvB,KAAK,CAAC,MAAM,KAAK,KAAK;oBACtB,KAAK,CAAC,MAAM,KAAK,OAAO,CAC/B,CAAC;YACN,MAAM,MAAM,GACR,MAAM,CAAC,MAAM,KAAK,IAAI;gBACtB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAE3D,MAAM,OAAO,GAAa,CAAC,SAAS,CAAC,CAAC;YACtC,MAAM,OAAO,GAAa,CAAC,aAAa,CAAC,CAAC;YAC1C,IAAI,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1C,IACI,MAAM,CAAC,MAAM;gBACb,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;gBAEnD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE9B,MAAM,IAAI,GAAa;gBACnB,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B;gBAC1D,iBAAiB,OAAO,CAAC,IAAI,CACzB,IAAI,CACP,4BAA4B;aAChC,CAAC;YACF,IAAI,QAAQ,IAAI,IAAI,IAAI,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAClD,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAE/C,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;SACnE;QAED,MAAM,MAAM,GACR,OAAO;YACP,4BAA4B;YAC5B,cAAc,SAAS,CAAC,MAAM,IAAI;YAClC,uEAAuE;YACvE,OAAO;YACP,sEAAsE;YACtE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,MAAM,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC,CAAA,CAAC;AACV,CAAC,EAnJgB,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAmJjC"}
1
+ {"version":3,"file":"SdkFileProgrammer.js","sourceRoot":"","sources":["../../../src/generates/internal/SdkFileProgrammer.ts"],"names":[],"mappings":"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"}
@@ -15,13 +15,6 @@ var SdkSimulationProgrammer;
15
15
  ];
16
16
  const body = [
17
17
  ...(route.parameters.length !== 0 ? assert(route.parameters) : []),
18
- ...route.parameters
19
- .map((p) => [
20
- `assert(`,
21
- ` ${message(p)}`,
22
- `)(() => typia.assert(${p.name}));`,
23
- ])
24
- .flat(),
25
18
  ...(output ? returns() : []),
26
19
  ];
27
20
  return [
@@ -39,43 +32,23 @@ var SdkSimulationProgrammer;
39
32
  .map((line) => ` ${line}`)
40
33
  .join("\n");
41
34
  };
42
- const message = (p) => {
43
- if (p.category === "param")
44
- return `() => "URL parameter \\"${p.name}\\" is not \${exp.expected} type."`;
45
- else
46
- return `() => "Request ${p.category === "query" ? "query parameters are" : "body is"} not following the promised type."`;
47
- };
48
- const assert = (parameters) => {
49
- return [
50
- `const assert =`,
51
- ` (message: (exp: typia.TypeGuardError) => string) =>`,
52
- ` <T>(task: () => T): void => {`,
53
- ` try {`,
54
- ` task()`,
55
- ` }`,
56
- ` catch (exp) {`,
57
- ` if (typia.is<typia.TypeGuardError>(exp))`,
58
- ` throw new HttpError(`,
59
- ` METHOD,`,
60
- " `${connection.host}${path(" +
61
- parameters
62
- .filter((p) => p.category !== "body")
63
- .map((p) => p.name)
64
- .join(", ") +
65
- ")}`,",
66
- ` 400,`,
67
- ` JSON.stringify({`,
68
- ` method: exp.method,`,
69
- ` path: exp.path,`,
70
- ` expected: exp.expected,`,
71
- ` value: exp.value,`,
72
- ` message: message(exp),`,
73
- ` })`,
74
- ` );`,
75
- ` throw exp`,
76
- ` }`,
77
- ` };`,
78
- ];
79
- };
35
+ const assert = (parameters) => [
36
+ `const assert = NestiaSimulator.assert({`,
37
+ ` method: METHOD,`,
38
+ ` host: connection.host,`,
39
+ ` path: path(${parameters
40
+ .filter((p) => p.category !== "body")
41
+ .map((p) => p.name)
42
+ .join(", ")})`,
43
+ `});`,
44
+ ...parameters.map((p) => {
45
+ var _a, _b;
46
+ return p.category === "body"
47
+ ? `assert.body(() => typia.assert(${p.name}));`
48
+ : p.category === "query"
49
+ ? `assert.query(() => typia.assert(${p.name}));`
50
+ : `assert.param("${p.field}")("${(_b = (_a = p.meta) === null || _a === void 0 ? void 0 : _a.type) !== null && _b !== void 0 ? _b : p.type.name}")(() => typia.assert(${p.name}));`;
51
+ }),
52
+ ];
80
53
  })(SdkSimulationProgrammer = exports.SdkSimulationProgrammer || (exports.SdkSimulationProgrammer = {}));
81
54
  //# sourceMappingURL=SdkSimulationProgrammer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SdkSimulationProgrammer.js","sourceRoot":"","sources":["../../../src/generates/internal/SdkSimulationProgrammer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SdkSimulationProgrammer.js","sourceRoot":"","sources":["../../../src/generates/internal/SdkSimulationProgrammer.ts"],"names":[],"mappings":";;;AAEA,IAAiB,uBAAuB,CA4DvC;AA5DD,WAAiB,uBAAuB;IACvB,gCAAQ,GAAG,CAAC,KAAa,EAAU,EAAE;QAC9C,MAAM,MAAM,GAAY,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC;QACrD,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;YAClB,8BAA8B;YAC9B,2CAA2C;YAC3C,mCAAmC;YACnC,6BAA6B;YAC7B,qBAAqB;YACrB,IAAI;SACP,CAAC;QACF,MAAM,IAAI,GAAa;YACnB,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/B,CAAC;QAEF,OAAO;YACH,iCAAiC;YACjC,OACI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;gBACzD,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,YACV,gBAAgB;YAChB,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CACnB,CAAC,CAAC,EAAE,EAAE,CACF,OAAO,CAAC,CAAC,IAAI,KACT,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM;gBAC3C,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IACT,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OACvC,EAAE;gBACJ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IACjB,GAAG,CACV;YACD,cAAc,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ;YAChD,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,GAAG;SACN;aACI,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC;aAC5B,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,UAA+B,EAAY,EAAE,CAAC;QAC1D,yCAAyC;QACzC,qBAAqB;QACrB,4BAA4B;QAC5B,kBAAkB,UAAU;aACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC;aACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAClB,IAAI,CAAC,IAAI,CAAC,GAAG;QAClB,KAAK;QACL,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;;YACpB,OAAA,CAAC,CAAC,QAAQ,KAAK,MAAM;gBACjB,CAAC,CAAC,kCAAkC,CAAC,CAAC,IAAI,KAAK;gBAC/C,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO;oBACxB,CAAC,CAAC,mCAAmC,CAAC,CAAC,IAAI,KAAK;oBAChD,CAAC,CAAC,iBAAiB,CAAC,CAAC,KAAK,OACpB,MAAA,MAAA,CAAC,CAAC,IAAI,0CAAE,IAAI,mCAAI,CAAC,CAAC,IAAI,CAAC,IAC3B,yBAAyB,CAAC,CAAC,IAAI,KAAK,CAAA;SAAA,CAC7C;KACJ,CAAC;AACN,CAAC,EA5DgB,uBAAuB,GAAvB,+BAAuB,KAAvB,+BAAuB,QA4DvC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestia/sdk",
3
- "version": "1.3.7",
3
+ "version": "1.3.9",
4
4
  "description": "Nestia SDK and Swagger generator",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -36,6 +36,15 @@ export namespace SdkGenerator {
36
36
  );
37
37
  }
38
38
  }
39
+ if (config.random && routes.some((r) => !!r.parameters.length)) {
40
+ try {
41
+ await fs.promises.mkdir(`${config.output}/utils`);
42
+ } catch {}
43
+ await fs.promises.copyFile(
44
+ `${BUNDLE_PATH}/utils/NestiaSimulator.ts`,
45
+ `${config.output}/utils/NestiaSimulator.ts`,
46
+ );
47
+ }
39
48
 
40
49
  // FUNCTIONAL
41
50
  await SdkFileProgrammer.generate(config)(routes);
@@ -83,6 +83,16 @@ export namespace SdkFileProgrammer {
83
83
 
84
84
  // ITERATE ROUTES
85
85
  const importDict: ImportDictionary = new ImportDictionary();
86
+ if (
87
+ config.random &&
88
+ directory.routes.some((r) => !!r.parameters.length)
89
+ )
90
+ importDict.emplace(
91
+ `${config.output}/utils/NestiaSimulator.ts`,
92
+ true,
93
+ "NestiaSimulator",
94
+ );
95
+
86
96
  directory.routes.forEach((route, i) => {
87
97
  for (const tuple of route.imports)
88
98
  for (const instance of tuple[1])
@@ -118,16 +128,14 @@ export namespace SdkFileProgrammer {
118
128
  );
119
129
  const random: boolean =
120
130
  config.random === true &&
121
- directory.routes.some((s) => s.output.name !== "void");
131
+ directory.routes.some(
132
+ (s) =>
133
+ !!s.parameters.length || s.output.name !== "void",
134
+ );
122
135
 
123
136
  const classes: string[] = ["Fetcher"];
124
137
  const typings: string[] = ["IConnection"];
125
138
  if (primitived) typings.push("Primitive");
126
- if (
127
- config.random &&
128
- directory.routes.some((r) => !!r.parameters.length)
129
- )
130
- classes.push("HttpError");
131
139
 
132
140
  const head: string[] = [
133
141
  `import { ${classes.join(", ")} } from "@nestia/fetcher";`,
@@ -135,7 +143,7 @@ export namespace SdkFileProgrammer {
135
143
  ", ",
136
144
  )} } from "@nestia/fetcher";`,
137
145
  ];
138
- if (asserted || json || random || classes.length === 2)
146
+ if (asserted || json || random)
139
147
  head.push(`import typia from "typia";`);
140
148
  if (!importDict.empty())
141
149
  head.push("", importDict.toScript(outDir));
@@ -13,13 +13,6 @@ export namespace SdkSimulationProgrammer {
13
13
  ];
14
14
  const body: string[] = [
15
15
  ...(route.parameters.length !== 0 ? assert(route.parameters) : []),
16
- ...route.parameters
17
- .map((p) => [
18
- `assert(`,
19
- ` ${message(p)}`,
20
- `)(() => typia.assert(${p.name}));`,
21
- ])
22
- .flat(),
23
16
  ...(output ? returns() : []),
24
17
  ];
25
18
 
@@ -48,45 +41,23 @@ export namespace SdkSimulationProgrammer {
48
41
  .join("\n");
49
42
  };
50
43
 
51
- const message = (p: IRoute.IParameter): string => {
52
- if (p.category === "param")
53
- return `() => "URL parameter \\"${p.name}\\" is not \${exp.expected} type."`;
54
- else
55
- return `() => "Request ${
56
- p.category === "query" ? "query parameters are" : "body is"
57
- } not following the promised type."`;
58
- };
59
-
60
- const assert = (parameters: IRoute.IParameter[]): string[] => {
61
- return [
62
- `const assert =`,
63
- ` (message: (exp: typia.TypeGuardError) => string) =>`,
64
- ` <T>(task: () => T): void => {`,
65
- ` try {`,
66
- ` task()`,
67
- ` }`,
68
- ` catch (exp) {`,
69
- ` if (typia.is<typia.TypeGuardError>(exp))`,
70
- ` throw new HttpError(`,
71
- ` METHOD,`,
72
- " `${connection.host}${path(" +
73
- parameters
74
- .filter((p) => p.category !== "body")
75
- .map((p) => p.name)
76
- .join(", ") +
77
- ")}`,",
78
- ` 400,`,
79
- ` JSON.stringify({`,
80
- ` method: exp.method,`,
81
- ` path: exp.path,`,
82
- ` expected: exp.expected,`,
83
- ` value: exp.value,`,
84
- ` message: message(exp),`,
85
- ` })`,
86
- ` );`,
87
- ` throw exp`,
88
- ` }`,
89
- ` };`,
90
- ];
91
- };
44
+ const assert = (parameters: IRoute.IParameter[]): string[] => [
45
+ `const assert = NestiaSimulator.assert({`,
46
+ ` method: METHOD,`,
47
+ ` host: connection.host,`,
48
+ ` path: path(${parameters
49
+ .filter((p) => p.category !== "body")
50
+ .map((p) => p.name)
51
+ .join(", ")})`,
52
+ `});`,
53
+ ...parameters.map((p) =>
54
+ p.category === "body"
55
+ ? `assert.body(() => typia.assert(${p.name}));`
56
+ : p.category === "query"
57
+ ? `assert.query(() => typia.assert(${p.name}));`
58
+ : `assert.param("${p.field}")("${
59
+ p.meta?.type ?? p.type.name
60
+ }")(() => typia.assert(${p.name}));`,
61
+ ),
62
+ ];
92
63
  }