sonamu 0.0.10 → 0.0.11

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.
@@ -7,6 +7,7 @@ export declare type ApiDecoratorOptions = {
7
7
  clients?: ServiceClient[];
8
8
  path?: string;
9
9
  resourceName?: string;
10
+ guards?: string[];
10
11
  };
11
12
  export declare const registeredApis: {
12
13
  modelName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/api/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAExD,oBAAY,aAAa,GACrB,OAAO,GACP,iBAAiB,GACjB,KAAK,GACL,UAAU,GACV,cAAc,CAAC;AACnB,oBAAY,mBAAmB,GAAG;IAChC,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EACR,YAAY,GACZ,WAAW,GACX,UAAU,GACV,kBAAkB,GAClB,0BAA0B,CAAC;IAC/B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AACF,eAAO,MAAM,cAAc,EAAE;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,mBAAmB,CAAC;CAC9B,EAAO,CAAC;AACT,oBAAY,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,mBAAmB,CAAC;IAC7B,cAAc,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC;IACzC,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,UAAU,EAAE,YAAY,CAAC;CAC1B,CAAC;AAEF,wBAAgB,GAAG,CAAC,OAAO,GAAE,mBAAwB,YAQ1B,MAAM,eAAe,MAAM,UAgBrD"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/api/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAExD,oBAAY,aAAa,GACrB,OAAO,GACP,iBAAiB,GACjB,KAAK,GACL,UAAU,GACV,cAAc,CAAC;AACnB,oBAAY,mBAAmB,GAAG;IAChC,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EACR,YAAY,GACZ,WAAW,GACX,UAAU,GACV,kBAAkB,GAClB,0BAA0B,CAAC;IAC/B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AACF,eAAO,MAAM,cAAc,EAAE;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,mBAAmB,CAAC;CAC9B,EAAO,CAAC;AACT,oBAAY,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,mBAAmB,CAAC;IAC7B,cAAc,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC;IACzC,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,UAAU,EAAE,YAAY,CAAC;CAC1B,CAAC;AAEF,wBAAgB,GAAG,CAAC,OAAO,GAAE,mBAAwB,YAQ1B,MAAM,eAAe,MAAM,UAgBrD"}
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/api/decorators.ts"],"names":[],"mappings":";;;AACA,2CAAsC;AAqBzB,QAAA,cAAc,GAKrB,EAAE,CAAC;AAWT,SAAgB,GAAG,CAAC,UAA+B,EAAE;IACnD,OAAO,mBACL,UAAU,EAAE,KAAK,EACjB,WAAW,EAAE,kBAAkB,EAC/B,OAAO,EAAE,CAAC,OAAO,CAAC,IACf,OAAO,CACX,CAAC;IAEF,OAAO,UAAU,MAAc,EAAE,WAAmB;;QAClD,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAE,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG,WAAW,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,IAAA,qBAAQ,EAC9B,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAC9B,IAAI,CACL,IAAI,IAAA,qBAAQ,EAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;QAEnC,MAAM,GAAG,GAAG;YACV,SAAS;YACT,UAAU;YACV,IAAI,EAAE,MAAA,OAAO,CAAC,IAAI,mCAAI,WAAW;YACjC,OAAO;SACR,CAAC;QACF,sBAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC;AACJ,CAAC;AAxBD,kBAwBC"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/api/decorators.ts"],"names":[],"mappings":";;;AACA,2CAAsC;AAsBzB,QAAA,cAAc,GAKrB,EAAE,CAAC;AAWT,SAAgB,GAAG,CAAC,UAA+B,EAAE;IACnD,OAAO,mBACL,UAAU,EAAE,KAAK,EACjB,WAAW,EAAE,kBAAkB,EAC/B,OAAO,EAAE,CAAC,OAAO,CAAC,IACf,OAAO,CACX,CAAC;IAEF,OAAO,UAAU,MAAc,EAAE,WAAmB;;QAClD,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAE,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG,WAAW,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,IAAA,qBAAQ,EAC9B,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAC9B,IAAI,CACL,IAAI,IAAA,qBAAQ,EAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC;QAEnC,MAAM,GAAG,GAAG;YACV,SAAS;YACT,UAAU;YACV,IAAI,EAAE,MAAA,OAAO,CAAC,IAAI,mCAAI,WAAW;YACjC,OAAO;SACR,CAAC;QACF,sBAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC;AACJ,CAAC;AAxBD,kBAwBC"}
@@ -2,8 +2,10 @@
2
2
  import { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
3
3
  import { IncomingMessage, Server, ServerResponse } from "http";
4
4
  import { Context } from "./context";
5
+ import { ApiParam, ApiParamType } from "../types/types";
5
6
  import { Syncer } from "../syncer/syncer";
6
7
  import { SonamuDBConfig } from "../database/db";
8
+ import { ApiDecoratorOptions } from "./decorators";
7
9
  export declare type SonamuConfig = {
8
10
  api: {
9
11
  dir: string;
@@ -17,6 +19,15 @@ export declare type SonamuConfig = {
17
19
  };
18
20
  declare type SonamuFastifyConfig = {
19
21
  contextProvider: (defaultContext: Pick<Context, "headers" | "reply">, request: FastifyRequest, reply: FastifyReply) => Context;
22
+ guardHandler: (guard: string, request: FastifyRequest, api: {
23
+ typeParameters: ApiParamType.TypeParam[];
24
+ parameters: ApiParam[];
25
+ returnType: ApiParamType;
26
+ modelName: string;
27
+ methodName: string;
28
+ path: string;
29
+ options: ApiDecoratorOptions;
30
+ }) => void;
20
31
  };
21
32
  declare class SonamuClass {
22
33
  isInitialized: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"sonamu.d.ts","sourceRoot":"","sources":["../../src/api/sonamu.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAG/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAM,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMpD,oBAAY,YAAY,GAAG;IACzB,GAAG,EAAE;QACH,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AACF,aAAK,mBAAmB,GAAG;IACzB,eAAe,EAAE,CACf,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,EAClD,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,KAChB,OAAO,CAAC;CACd,CAAC;AACF,cAAM,WAAW;IACR,aAAa,EAAE,OAAO,CAAS;IAEtC,OAAO,CAAC,YAAY,CAAuB;IAC3C,IAAI,WAAW,CAAC,WAAW,EAAE,MAAM,EAElC;IACD,IAAI,WAAW,IAAI,MAAM,CAKxB;IACD,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,OAAO,CAAC,SAAS,CAA+B;IAChD,IAAI,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAEpC;IACD,IAAI,QAAQ,IAAI,cAAc,CAK7B;IAED,OAAO,CAAC,OAAO,CAAuB;IACtC,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAExB;IACD,IAAI,MAAM,IAAI,MAAM,CAKnB;IAED,OAAO,CAAC,OAAO,CAA6B;IAC5C,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,EAE9B;IACD,IAAI,MAAM,IAAI,YAAY,CAKzB;IAEK,IAAI;IAsCJ,WAAW,CACf,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,EAChE,MAAM,EAAE,mBAAmB;IAiFvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B;AACD,eAAO,MAAM,MAAM,aAAoB,CAAC"}
1
+ {"version":3,"file":"sonamu.d.ts","sourceRoot":"","sources":["../../src/api/sonamu.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAG/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAM,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,oBAAY,YAAY,GAAG;IACzB,GAAG,EAAE;QACH,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AACF,aAAK,mBAAmB,GAAG;IACzB,eAAe,EAAE,CACf,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,EAClD,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,KAChB,OAAO,CAAC;IACb,YAAY,EAAE,CACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE;QACH,cAAc,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC;QACzC,UAAU,EAAE,QAAQ,EAAE,CAAC;QACvB,UAAU,EAAE,YAAY,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,mBAAmB,CAAC;KAC9B,KACE,IAAI,CAAC;CACX,CAAC;AACF,cAAM,WAAW;IACR,aAAa,EAAE,OAAO,CAAS;IAEtC,OAAO,CAAC,YAAY,CAAuB;IAC3C,IAAI,WAAW,CAAC,WAAW,EAAE,MAAM,EAElC;IACD,IAAI,WAAW,IAAI,MAAM,CAKxB;IACD,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,OAAO,CAAC,SAAS,CAA+B;IAChD,IAAI,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAEpC;IACD,IAAI,QAAQ,IAAI,cAAc,CAK7B;IAED,OAAO,CAAC,OAAO,CAAuB;IACtC,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,EAExB;IACD,IAAI,MAAM,IAAI,MAAM,CAKnB;IAED,OAAO,CAAC,OAAO,CAA6B;IAC5C,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,EAE9B;IACD,IAAI,MAAM,IAAI,YAAY,CAKzB;IAEK,IAAI;IAsCJ,WAAW,CACf,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,EAChE,MAAM,EAAE,mBAAmB;IAuFvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B;AACD,eAAO,MAAM,MAAM,aAAoB,CAAC"}
@@ -131,11 +131,13 @@ class SonamuClass {
131
131
  method: api.options.httpMethod,
132
132
  url: this.config.route.prefix + api.path,
133
133
  handler: (request, reply) => __awaiter(this, void 0, void 0, function* () {
134
- var _a, _b;
134
+ var _a, _b, _c;
135
+ ((_a = api.options.guards) !== null && _a !== void 0 ? _a : []).every((guard) => config.guardHandler(guard, request, api));
136
+ // request 파싱
135
137
  const which = api.options.httpMethod === "GET" ? "query" : "body";
136
138
  let reqBody;
137
139
  try {
138
- reqBody = (0, caster_1.fastifyCaster)(ReqType).parse((_a = request[which]) !== null && _a !== void 0 ? _a : {});
140
+ reqBody = (0, caster_1.fastifyCaster)(ReqType).parse((_b = request[which]) !== null && _b !== void 0 ? _b : {});
139
141
  }
140
142
  catch (e) {
141
143
  if (e instanceof zod_1.ZodError) {
@@ -146,6 +148,7 @@ class SonamuClass {
146
148
  throw e;
147
149
  }
148
150
  }
151
+ // 결과
149
152
  const result = yield model[api.methodName].apply(model, api.parameters.map((param) => {
150
153
  // Context 인젝션
151
154
  if (types_1.ApiParamType.isContext(param.type)) {
@@ -158,7 +161,7 @@ class SonamuClass {
158
161
  return reqBody[param.name];
159
162
  }
160
163
  }));
161
- reply.type((_b = api.options.contentType) !== null && _b !== void 0 ? _b : "application/json");
164
+ reply.type((_c = api.options.contentType) !== null && _c !== void 0 ? _c : "application/json");
162
165
  return result;
163
166
  }),
164
167
  }); // END server.route
@@ -1 +1 @@
1
- {"version":3,"file":"sonamu.js","sourceRoot":"","sources":["../../src/api/sonamu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sonamu.js","sourceRoot":"","sources":["../../src/api/sonamu.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ export declare class Template__view_form extends Template {
16
16
  body: string;
17
17
  importKeys: never[];
18
18
  preTemplates: {
19
- key: "smd" | "model" | "model_test" | "view_list" | "view_form" | "init_enums" | "init_types" | "init_generated" | "generated" | "generated_http" | "bridge" | "service" | "view_list_columns" | "view_search_input" | "view_id_all_select" | "view_id_async_select" | "view_enums_select" | "view_enums_dropdown" | "view_enums_buttonset";
19
+ key: "model" | "smd" | "generated" | "init_enums" | "init_types" | "init_generated" | "generated_http" | "model_test" | "bridge" | "service" | "view_list" | "view_list_columns" | "view_search_input" | "view_form" | "view_id_all_select" | "view_id_async_select" | "view_enums_select" | "view_enums_dropdown" | "view_enums_buttonset";
20
20
  options: {
21
21
  refCode?: string | undefined;
22
22
  smdId: string;
@@ -46,12 +46,12 @@ export declare class Template__view_form extends Template {
46
46
  extra?: unknown;
47
47
  smdId: string;
48
48
  } | {
49
+ smdId: string;
49
50
  columns: {
50
51
  name: string;
51
52
  label: string;
52
53
  tc: string;
53
54
  }[];
54
- smdId: string;
55
55
  columnImports: string;
56
56
  } | {
57
57
  smdId: string;
@@ -21,7 +21,7 @@ export declare class Template__view_list extends Template {
21
21
  body: string;
22
22
  importKeys: never[];
23
23
  preTemplates: {
24
- key: "smd" | "model" | "model_test" | "view_list" | "view_form" | "init_enums" | "init_types" | "init_generated" | "generated" | "generated_http" | "bridge" | "service" | "view_list_columns" | "view_search_input" | "view_id_all_select" | "view_id_async_select" | "view_enums_select" | "view_enums_dropdown" | "view_enums_buttonset";
24
+ key: "model" | "smd" | "generated" | "init_enums" | "init_types" | "init_generated" | "generated_http" | "model_test" | "bridge" | "service" | "view_list" | "view_list_columns" | "view_search_input" | "view_form" | "view_id_all_select" | "view_id_async_select" | "view_enums_select" | "view_enums_dropdown" | "view_enums_buttonset";
25
25
  options: {
26
26
  refCode?: string | undefined;
27
27
  smdId: string;
@@ -51,12 +51,12 @@ export declare class Template__view_list extends Template {
51
51
  extra?: unknown;
52
52
  smdId: string;
53
53
  } | {
54
+ smdId: string;
54
55
  columns: {
55
56
  name: string;
56
57
  label: string;
57
58
  tc: string;
58
59
  }[];
59
- smdId: string;
60
60
  columnImports: string;
61
61
  } | {
62
62
  smdId: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sonamu",
3
- "version": "0.0.10",
3
+ "version": "0.0.11",
4
4
  "description": "Sonamu — TypeScript Fullstack API Framework",
5
5
  "keywords": [
6
6
  "typescript",
@@ -19,6 +19,7 @@ export type ApiDecoratorOptions = {
19
19
  clients?: ServiceClient[];
20
20
  path?: string;
21
21
  resourceName?: string;
22
+ guards?: string[];
22
23
  };
23
24
  export const registeredApis: {
24
25
  modelName: string;
package/src/api/sonamu.ts CHANGED
@@ -7,7 +7,7 @@ import { Context } from "./context";
7
7
  import { BadRequestException } from "../exceptions/so-exceptions";
8
8
  import { SMDManager } from "../smd/smd-manager";
9
9
  import { fastifyCaster } from "./caster";
10
- import { ApiParamType } from "../types/types";
10
+ import { ApiParam, ApiParamType } from "../types/types";
11
11
  import { Syncer } from "../syncer/syncer";
12
12
  import { isLocal } from "../utils/controller";
13
13
  import { DB, SonamuDBConfig } from "../database/db";
@@ -15,6 +15,7 @@ import { BaseModel } from "../database/base-model";
15
15
  import { findApiRootPath } from "../utils/utils";
16
16
  import path from "path";
17
17
  import { existsSync, readFileSync } from "fs";
18
+ import { ApiDecoratorOptions } from "./decorators";
18
19
 
19
20
  export type SonamuConfig = {
20
21
  api: {
@@ -33,6 +34,19 @@ type SonamuFastifyConfig = {
33
34
  request: FastifyRequest,
34
35
  reply: FastifyReply
35
36
  ) => Context;
37
+ guardHandler: (
38
+ guard: string,
39
+ request: FastifyRequest,
40
+ api: {
41
+ typeParameters: ApiParamType.TypeParam[];
42
+ parameters: ApiParam[];
43
+ returnType: ApiParamType;
44
+ modelName: string;
45
+ methodName: string;
46
+ path: string;
47
+ options: ApiDecoratorOptions;
48
+ }
49
+ ) => void;
36
50
  };
37
51
  class SonamuClass {
38
52
  public isInitialized: boolean = false;
@@ -162,6 +176,11 @@ class SonamuClass {
162
176
  method: api.options.httpMethod!,
163
177
  url: this.config.route.prefix + api.path,
164
178
  handler: async (request, reply): Promise<unknown> => {
179
+ (api.options.guards ?? []).every((guard) =>
180
+ config.guardHandler(guard, request, api)
181
+ );
182
+
183
+ // request 파싱
165
184
  const which = api.options.httpMethod === "GET" ? "query" : "body";
166
185
  let reqBody: {
167
186
  [key: string]: unknown;
@@ -180,6 +199,7 @@ class SonamuClass {
180
199
  }
181
200
  }
182
201
 
202
+ // 결과
183
203
  const result = await (model as any)[api.methodName].apply(
184
204
  model,
185
205
  api.parameters.map((param) => {