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.
- package/dist/api/decorators.d.ts +1 -0
- package/dist/api/decorators.d.ts.map +1 -1
- package/dist/api/decorators.js.map +1 -1
- package/dist/api/sonamu.d.ts +11 -0
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +6 -3
- package/dist/api/sonamu.js.map +1 -1
- package/dist/templates/view_form.template.d.ts +2 -2
- package/dist/templates/view_list.template.d.ts +2 -2
- package/package.json +1 -1
- package/src/api/decorators.ts +1 -0
- package/src/api/sonamu.ts +21 -1
package/dist/api/decorators.d.ts
CHANGED
|
@@ -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;
|
|
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;
|
|
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"}
|
package/dist/api/sonamu.d.ts
CHANGED
|
@@ -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;
|
package/dist/api/sonamu.d.ts.map
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/api/sonamu.js
CHANGED
|
@@ -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((
|
|
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((
|
|
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
|
package/dist/api/sonamu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sonamu.js","sourceRoot":"","sources":["../../src/api/sonamu.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAG1B,6BAA+B;AAC/B,uDAAwD;AAExD,+DAAkE;AAClE,oDAAgD;AAChD,qCAAyC;AACzC,
|
|
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: "
|
|
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: "
|
|
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
package/src/api/decorators.ts
CHANGED
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) => {
|