@akanjs/server 0.0.97 → 0.0.99
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/index.cjs +21 -0
- package/index.js +1 -21
- package/package.json +4 -4
- package/src/boot.cjs +200 -0
- package/src/boot.js +84 -94
- package/src/controller.cjs +102 -0
- package/src/controller.js +70 -63
- package/src/gql.cjs +152 -0
- package/src/gql.js +35 -64
- package/src/index.cjs +39 -0
- package/src/index.js +10 -39
- package/src/module.cjs +255 -0
- package/src/module.js +77 -103
- package/src/processor.cjs +92 -0
- package/src/processor.js +22 -41
- package/src/resolver.cjs +145 -0
- package/src/resolver.js +49 -76
- package/src/{schema.mjs → schema.cjs} +78 -54
- package/src/schema.js +54 -78
- package/src/{searchDaemon.mjs → searchDaemon.cjs} +45 -29
- package/src/searchDaemon.js +29 -45
- package/src/types.cjs +15 -0
- package/src/types.js +0 -15
- package/src/websocket.cjs +146 -0
- package/src/websocket.js +33 -55
- package/index.mjs +0 -1
- package/src/boot.mjs +0 -190
- package/src/controller.mjs +0 -109
- package/src/gql.mjs +0 -123
- package/src/index.mjs +0 -10
- package/src/module.mjs +0 -229
- package/src/processor.mjs +0 -73
- package/src/resolver.mjs +0 -118
- package/src/types.mjs +0 -0
- package/src/websocket.mjs +0 -124
package/src/processor.js
CHANGED
|
@@ -1,37 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
var processor_exports = {};
|
|
19
|
-
__export(processor_exports, {
|
|
20
|
-
processorOf: () => processorOf,
|
|
21
|
-
queueOf: () => queueOf
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(processor_exports);
|
|
24
|
-
var import_common = require("@akanjs/common");
|
|
25
|
-
var import_service = require("@akanjs/service");
|
|
26
|
-
var import_signal = require("@akanjs/signal");
|
|
27
|
-
var import_bull = require("@nestjs/bull");
|
|
28
|
-
var import_common2 = require("@nestjs/common");
|
|
1
|
+
import { lowerlize } from "@akanjs/common";
|
|
2
|
+
import { isServiceEnabled } from "@akanjs/service";
|
|
3
|
+
import {
|
|
4
|
+
deserializeArg,
|
|
5
|
+
getArgMetas,
|
|
6
|
+
getGqlMetas,
|
|
7
|
+
getSigMeta
|
|
8
|
+
} from "@akanjs/signal";
|
|
9
|
+
import { Process, Processor } from "@nestjs/bull";
|
|
10
|
+
import { Inject } from "@nestjs/common";
|
|
29
11
|
const convertProcessFunction = (gqlMeta, argMetas, internalArgMetas, fn) => {
|
|
30
12
|
return async function(job, done) {
|
|
31
13
|
const args = [];
|
|
32
14
|
argMetas.forEach((argMeta) => {
|
|
33
15
|
if (argMeta.type === "Msg")
|
|
34
|
-
args[argMeta.idx] =
|
|
16
|
+
args[argMeta.idx] = deserializeArg(argMeta, job.data[argMeta.idx]);
|
|
35
17
|
else
|
|
36
18
|
throw new Error(`Invalid ArgMeta Type ${argMeta.type}`);
|
|
37
19
|
});
|
|
@@ -48,20 +30,20 @@ const convertProcessFunction = (gqlMeta, argMetas, internalArgMetas, fn) => {
|
|
|
48
30
|
};
|
|
49
31
|
};
|
|
50
32
|
const processorOf = (sigRef, allSrvs) => {
|
|
51
|
-
const sigMeta =
|
|
33
|
+
const sigMeta = getSigMeta(sigRef);
|
|
52
34
|
const serverMode = process.env.SERVER_MODE ?? "federation";
|
|
53
|
-
const gqlMetas =
|
|
35
|
+
const gqlMetas = getGqlMetas(sigRef).filter((gqlMeta) => gqlMeta.type === "Process").filter(
|
|
54
36
|
(gqlMeta) => gqlMeta.signalOption.serverType === "all" || serverMode === "all" || gqlMeta.signalOption.serverType === serverMode
|
|
55
37
|
);
|
|
56
38
|
class QueueProcessor {
|
|
57
39
|
}
|
|
58
40
|
Object.keys(allSrvs).forEach((srv) => {
|
|
59
|
-
if (!
|
|
41
|
+
if (!isServiceEnabled(allSrvs[srv]))
|
|
60
42
|
return;
|
|
61
|
-
|
|
43
|
+
Inject(allSrvs[srv])(QueueProcessor.prototype, lowerlize(srv));
|
|
62
44
|
});
|
|
63
45
|
for (const gqlMeta of gqlMetas) {
|
|
64
|
-
const [argMetas, internalArgMetas] =
|
|
46
|
+
const [argMetas, internalArgMetas] = getArgMetas(sigRef, gqlMeta.key);
|
|
65
47
|
const descriptor = { ...Object.getOwnPropertyDescriptor(sigRef.prototype, gqlMeta.key) ?? {} };
|
|
66
48
|
descriptor.value = convertProcessFunction(
|
|
67
49
|
gqlMeta,
|
|
@@ -70,14 +52,14 @@ const processorOf = (sigRef, allSrvs) => {
|
|
|
70
52
|
descriptor.value
|
|
71
53
|
);
|
|
72
54
|
Object.defineProperty(QueueProcessor.prototype, gqlMeta.key, descriptor);
|
|
73
|
-
|
|
55
|
+
Process(gqlMeta.key)(QueueProcessor.prototype, gqlMeta.key, descriptor);
|
|
74
56
|
}
|
|
75
|
-
|
|
57
|
+
Processor(sigMeta.refName)(QueueProcessor);
|
|
76
58
|
return QueueProcessor;
|
|
77
59
|
};
|
|
78
60
|
const queueOf = (sigRef, queue) => {
|
|
79
|
-
const sigMeta =
|
|
80
|
-
const gqlMetas =
|
|
61
|
+
const sigMeta = getSigMeta(sigRef);
|
|
62
|
+
const gqlMetas = getGqlMetas(sigRef).filter((gqlMeta) => gqlMeta.type === "Process");
|
|
81
63
|
for (const gqlMeta of gqlMetas) {
|
|
82
64
|
if (queue[gqlMeta.key])
|
|
83
65
|
throw new Error(`Queue already has ${gqlMeta.key} in ${sigMeta.refName}`);
|
|
@@ -85,8 +67,7 @@ const queueOf = (sigRef, queue) => {
|
|
|
85
67
|
}
|
|
86
68
|
return queue;
|
|
87
69
|
};
|
|
88
|
-
|
|
89
|
-
0 && (module.exports = {
|
|
70
|
+
export {
|
|
90
71
|
processorOf,
|
|
91
72
|
queueOf
|
|
92
|
-
}
|
|
73
|
+
};
|
package/src/resolver.cjs
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
var resolver_exports = {};
|
|
29
|
+
__export(resolver_exports, {
|
|
30
|
+
resolverOf: () => resolverOf
|
|
31
|
+
});
|
|
32
|
+
module.exports = __toCommonJS(resolver_exports);
|
|
33
|
+
var import_base = require("@akanjs/base");
|
|
34
|
+
var import_common = require("@akanjs/common");
|
|
35
|
+
var import_constant = require("@akanjs/constant");
|
|
36
|
+
var import_nest = require("@akanjs/nest");
|
|
37
|
+
var import_service = require("@akanjs/service");
|
|
38
|
+
var import_signal = require("@akanjs/signal");
|
|
39
|
+
var import_common2 = require("@nestjs/common");
|
|
40
|
+
var Nest = __toESM(require("@nestjs/graphql"), 1);
|
|
41
|
+
var import_graphql_type_json = __toESM(require("graphql-type-json"), 1);
|
|
42
|
+
var import_graphql_upload = require("graphql-upload");
|
|
43
|
+
var import_gql = require("./gql");
|
|
44
|
+
const scalarNestReturnMap = /* @__PURE__ */ new Map([
|
|
45
|
+
[import_base.Upload, import_graphql_upload.GraphQLUpload],
|
|
46
|
+
[import_base.ID, Nest.ID],
|
|
47
|
+
[import_base.Int, Nest.Int],
|
|
48
|
+
[import_base.Float, Nest.Float],
|
|
49
|
+
[import_base.JSON, import_graphql_type_json.default],
|
|
50
|
+
[Boolean, Boolean],
|
|
51
|
+
[Date, Date],
|
|
52
|
+
[String, String],
|
|
53
|
+
[Map, import_graphql_type_json.default]
|
|
54
|
+
]);
|
|
55
|
+
const getNestReturn = (returns, type = "object") => {
|
|
56
|
+
const [model, arrDepth] = (0, import_base.getNonArrayModel)(returns());
|
|
57
|
+
const modelRef = scalarNestReturnMap.get(model) ?? (type === "object" ? (0, import_gql.generateGql)(model) : (0, import_gql.generateGqlInput)(model));
|
|
58
|
+
return () => (0, import_base.arraiedModel)(modelRef, arrDepth);
|
|
59
|
+
};
|
|
60
|
+
const internalArgMap = {
|
|
61
|
+
Parent: Nest.Parent,
|
|
62
|
+
Account: import_nest.Account,
|
|
63
|
+
UserIp: import_nest.UserIp,
|
|
64
|
+
Access: import_nest.Access,
|
|
65
|
+
Self: import_nest.Self,
|
|
66
|
+
Me: import_nest.Me,
|
|
67
|
+
Req: import_nest.Req,
|
|
68
|
+
Res: import_nest.Res
|
|
69
|
+
};
|
|
70
|
+
const resolverOf = (sigRef, allSrvs) => {
|
|
71
|
+
const Rsv = (0, import_signal.copySignal)(sigRef);
|
|
72
|
+
const sigMeta = (0, import_signal.getSigMeta)(Rsv);
|
|
73
|
+
const gqlMetas = (0, import_signal.getGqlMetas)(Rsv);
|
|
74
|
+
Object.keys(allSrvs).forEach((srv) => {
|
|
75
|
+
if (!(0, import_service.isServiceEnabled)(allSrvs[srv]))
|
|
76
|
+
return;
|
|
77
|
+
(0, import_common2.Inject)(allSrvs[srv])(Rsv.prototype, (0, import_common.lowerlize)(srv));
|
|
78
|
+
});
|
|
79
|
+
for (const gqlMeta of gqlMetas) {
|
|
80
|
+
if (gqlMeta.guards.some((guard) => guard === "None") || gqlMeta.signalOption.onlyFor === "restapi" || !["Query", "Mutation"].includes(gqlMeta.type))
|
|
81
|
+
continue;
|
|
82
|
+
else if (gqlMeta.signalOption.sso)
|
|
83
|
+
continue;
|
|
84
|
+
const [argMetas, internalArgMetas] = (0, import_signal.getArgMetas)(Rsv, gqlMeta.key);
|
|
85
|
+
const descriptor = Object.getOwnPropertyDescriptor(Rsv.prototype, gqlMeta.key) ?? {};
|
|
86
|
+
for (const argMeta of argMetas) {
|
|
87
|
+
Nest.Args({
|
|
88
|
+
name: argMeta.name,
|
|
89
|
+
type: getNestReturn(argMeta.returns, "input"),
|
|
90
|
+
...argMeta.argsOption
|
|
91
|
+
})(Rsv.prototype, gqlMeta.key, argMeta.idx);
|
|
92
|
+
}
|
|
93
|
+
for (const internalArgMeta of internalArgMetas) {
|
|
94
|
+
const decorate = internalArgMap[internalArgMeta.type];
|
|
95
|
+
decorate(internalArgMeta.option ?? {})(Rsv.prototype, gqlMeta.key, internalArgMeta.idx);
|
|
96
|
+
}
|
|
97
|
+
(0, import_common2.UseGuards)(...gqlMeta.guards.map((guard) => import_nest.guards[guard]))(Rsv.prototype, gqlMeta.key, descriptor);
|
|
98
|
+
if (gqlMeta.type === "Query")
|
|
99
|
+
Nest.Query(getNestReturn(gqlMeta.returns), gqlMeta.signalOption)(Rsv.prototype, gqlMeta.key, descriptor);
|
|
100
|
+
else if (gqlMeta.type === "Mutation")
|
|
101
|
+
Nest.Mutation(getNestReturn(gqlMeta.returns), gqlMeta.signalOption)(Rsv.prototype, gqlMeta.key, descriptor);
|
|
102
|
+
}
|
|
103
|
+
const resolveFieldMetas = (0, import_signal.getResolveFieldMetas)(Rsv);
|
|
104
|
+
if (sigMeta.returns) {
|
|
105
|
+
const modelRef = sigMeta.returns();
|
|
106
|
+
const fieldMetas = (0, import_constant.getFieldMetas)(modelRef);
|
|
107
|
+
fieldMetas.filter((fieldMeta) => fieldMeta.isClass && !fieldMeta.isScalar).forEach((fieldMeta) => {
|
|
108
|
+
const classMeta = (0, import_constant.getClassMeta)(fieldMeta.modelRef);
|
|
109
|
+
const modelName = (0, import_common.lowerlize)(classMeta.type === "light" ? classMeta.refName.slice(5) : classMeta.refName);
|
|
110
|
+
const className = (0, import_common.capitalize)(modelName);
|
|
111
|
+
const serviceName = `${modelName}Service`;
|
|
112
|
+
Rsv.prototype[fieldMeta.key] = async function(parent) {
|
|
113
|
+
const service = this[serviceName];
|
|
114
|
+
return fieldMeta.arrDepth ? await service[`load${className}Many`](parent[fieldMeta.key]) : await service[`load${className}`](parent[fieldMeta.key]);
|
|
115
|
+
};
|
|
116
|
+
Nest.Parent()(Rsv.prototype, fieldMeta.key, 0);
|
|
117
|
+
Nest.ResolveField(getNestReturn(() => (0, import_base.arraiedModel)(fieldMeta.modelRef, fieldMeta.arrDepth)))(
|
|
118
|
+
Rsv.prototype,
|
|
119
|
+
fieldMeta.key,
|
|
120
|
+
Object.getOwnPropertyDescriptor(Rsv.prototype, fieldMeta.key) ?? {}
|
|
121
|
+
);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
for (const resolveFieldMeta of resolveFieldMetas) {
|
|
125
|
+
const [, internalArgMetas] = (0, import_signal.getArgMetas)(Rsv, resolveFieldMeta.key);
|
|
126
|
+
for (const internalArgMeta of internalArgMetas) {
|
|
127
|
+
const decorate = internalArgMap[internalArgMeta.type];
|
|
128
|
+
decorate(internalArgMeta.option ?? {})(Rsv.prototype, resolveFieldMeta.key, internalArgMeta.idx);
|
|
129
|
+
}
|
|
130
|
+
Nest.ResolveField(getNestReturn(resolveFieldMeta.returns))(
|
|
131
|
+
Rsv.prototype,
|
|
132
|
+
resolveFieldMeta.key,
|
|
133
|
+
Object.getOwnPropertyDescriptor(Rsv.prototype, resolveFieldMeta.key) ?? {}
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
if (sigMeta.returns)
|
|
137
|
+
Nest.Resolver(getNestReturn(sigMeta.returns))(Rsv);
|
|
138
|
+
else
|
|
139
|
+
Nest.Resolver()(Rsv);
|
|
140
|
+
return Rsv;
|
|
141
|
+
};
|
|
142
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
143
|
+
0 && (module.exports = {
|
|
144
|
+
resolverOf
|
|
145
|
+
});
|
package/src/resolver.js
CHANGED
|
@@ -1,87 +1,61 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
-
var resolver_exports = {};
|
|
29
|
-
__export(resolver_exports, {
|
|
30
|
-
resolverOf: () => resolverOf
|
|
31
|
-
});
|
|
32
|
-
module.exports = __toCommonJS(resolver_exports);
|
|
33
|
-
var import_base = require("@akanjs/base");
|
|
34
|
-
var import_common = require("@akanjs/common");
|
|
35
|
-
var import_constant = require("@akanjs/constant");
|
|
36
|
-
var import_nest = require("@akanjs/nest");
|
|
37
|
-
var import_service = require("@akanjs/service");
|
|
38
|
-
var import_signal = require("@akanjs/signal");
|
|
39
|
-
var import_common2 = require("@nestjs/common");
|
|
40
|
-
var Nest = __toESM(require("@nestjs/graphql"));
|
|
41
|
-
var import_graphql_type_json = __toESM(require("graphql-type-json"));
|
|
42
|
-
var import_graphql_upload = require("graphql-upload");
|
|
43
|
-
var import_gql = require("./gql");
|
|
1
|
+
import { arraiedModel, Float, getNonArrayModel, ID, Int, JSON, Upload } from "@akanjs/base";
|
|
2
|
+
import { capitalize, lowerlize } from "@akanjs/common";
|
|
3
|
+
import { getClassMeta, getFieldMetas } from "@akanjs/constant";
|
|
4
|
+
import { Access, Account, guards, Me, Req, Res, Self, UserIp } from "@akanjs/nest";
|
|
5
|
+
import { isServiceEnabled } from "@akanjs/service";
|
|
6
|
+
import {
|
|
7
|
+
copySignal,
|
|
8
|
+
getArgMetas,
|
|
9
|
+
getGqlMetas,
|
|
10
|
+
getResolveFieldMetas,
|
|
11
|
+
getSigMeta
|
|
12
|
+
} from "@akanjs/signal";
|
|
13
|
+
import { Inject, UseGuards } from "@nestjs/common";
|
|
14
|
+
import * as Nest from "@nestjs/graphql";
|
|
15
|
+
import GraphQLJson from "graphql-type-json";
|
|
16
|
+
import { GraphQLUpload } from "graphql-upload";
|
|
17
|
+
import { generateGql, generateGqlInput } from "./gql";
|
|
44
18
|
const scalarNestReturnMap = /* @__PURE__ */ new Map([
|
|
45
|
-
[
|
|
46
|
-
[
|
|
47
|
-
[
|
|
48
|
-
[
|
|
49
|
-
[
|
|
19
|
+
[Upload, GraphQLUpload],
|
|
20
|
+
[ID, Nest.ID],
|
|
21
|
+
[Int, Nest.Int],
|
|
22
|
+
[Float, Nest.Float],
|
|
23
|
+
[JSON, GraphQLJson],
|
|
50
24
|
[Boolean, Boolean],
|
|
51
25
|
[Date, Date],
|
|
52
26
|
[String, String],
|
|
53
|
-
[Map,
|
|
27
|
+
[Map, GraphQLJson]
|
|
54
28
|
]);
|
|
55
29
|
const getNestReturn = (returns, type = "object") => {
|
|
56
|
-
const [model, arrDepth] =
|
|
57
|
-
const modelRef = scalarNestReturnMap.get(model) ?? (type === "object" ?
|
|
58
|
-
return () =>
|
|
30
|
+
const [model, arrDepth] = getNonArrayModel(returns());
|
|
31
|
+
const modelRef = scalarNestReturnMap.get(model) ?? (type === "object" ? generateGql(model) : generateGqlInput(model));
|
|
32
|
+
return () => arraiedModel(modelRef, arrDepth);
|
|
59
33
|
};
|
|
60
34
|
const internalArgMap = {
|
|
61
35
|
Parent: Nest.Parent,
|
|
62
|
-
Account
|
|
63
|
-
UserIp
|
|
64
|
-
Access
|
|
65
|
-
Self
|
|
66
|
-
Me
|
|
67
|
-
Req
|
|
68
|
-
Res
|
|
36
|
+
Account,
|
|
37
|
+
UserIp,
|
|
38
|
+
Access,
|
|
39
|
+
Self,
|
|
40
|
+
Me,
|
|
41
|
+
Req,
|
|
42
|
+
Res
|
|
69
43
|
};
|
|
70
44
|
const resolverOf = (sigRef, allSrvs) => {
|
|
71
|
-
const Rsv =
|
|
72
|
-
const sigMeta =
|
|
73
|
-
const gqlMetas =
|
|
45
|
+
const Rsv = copySignal(sigRef);
|
|
46
|
+
const sigMeta = getSigMeta(Rsv);
|
|
47
|
+
const gqlMetas = getGqlMetas(Rsv);
|
|
74
48
|
Object.keys(allSrvs).forEach((srv) => {
|
|
75
|
-
if (!
|
|
49
|
+
if (!isServiceEnabled(allSrvs[srv]))
|
|
76
50
|
return;
|
|
77
|
-
|
|
51
|
+
Inject(allSrvs[srv])(Rsv.prototype, lowerlize(srv));
|
|
78
52
|
});
|
|
79
53
|
for (const gqlMeta of gqlMetas) {
|
|
80
54
|
if (gqlMeta.guards.some((guard) => guard === "None") || gqlMeta.signalOption.onlyFor === "restapi" || !["Query", "Mutation"].includes(gqlMeta.type))
|
|
81
55
|
continue;
|
|
82
56
|
else if (gqlMeta.signalOption.sso)
|
|
83
57
|
continue;
|
|
84
|
-
const [argMetas, internalArgMetas] =
|
|
58
|
+
const [argMetas, internalArgMetas] = getArgMetas(Rsv, gqlMeta.key);
|
|
85
59
|
const descriptor = Object.getOwnPropertyDescriptor(Rsv.prototype, gqlMeta.key) ?? {};
|
|
86
60
|
for (const argMeta of argMetas) {
|
|
87
61
|
Nest.Args({
|
|
@@ -94,27 +68,27 @@ const resolverOf = (sigRef, allSrvs) => {
|
|
|
94
68
|
const decorate = internalArgMap[internalArgMeta.type];
|
|
95
69
|
decorate(internalArgMeta.option ?? {})(Rsv.prototype, gqlMeta.key, internalArgMeta.idx);
|
|
96
70
|
}
|
|
97
|
-
|
|
71
|
+
UseGuards(...gqlMeta.guards.map((guard) => guards[guard]))(Rsv.prototype, gqlMeta.key, descriptor);
|
|
98
72
|
if (gqlMeta.type === "Query")
|
|
99
73
|
Nest.Query(getNestReturn(gqlMeta.returns), gqlMeta.signalOption)(Rsv.prototype, gqlMeta.key, descriptor);
|
|
100
74
|
else if (gqlMeta.type === "Mutation")
|
|
101
75
|
Nest.Mutation(getNestReturn(gqlMeta.returns), gqlMeta.signalOption)(Rsv.prototype, gqlMeta.key, descriptor);
|
|
102
76
|
}
|
|
103
|
-
const resolveFieldMetas =
|
|
77
|
+
const resolveFieldMetas = getResolveFieldMetas(Rsv);
|
|
104
78
|
if (sigMeta.returns) {
|
|
105
79
|
const modelRef = sigMeta.returns();
|
|
106
|
-
const fieldMetas =
|
|
80
|
+
const fieldMetas = getFieldMetas(modelRef);
|
|
107
81
|
fieldMetas.filter((fieldMeta) => fieldMeta.isClass && !fieldMeta.isScalar).forEach((fieldMeta) => {
|
|
108
|
-
const classMeta =
|
|
109
|
-
const modelName =
|
|
110
|
-
const className =
|
|
82
|
+
const classMeta = getClassMeta(fieldMeta.modelRef);
|
|
83
|
+
const modelName = lowerlize(classMeta.type === "light" ? classMeta.refName.slice(5) : classMeta.refName);
|
|
84
|
+
const className = capitalize(modelName);
|
|
111
85
|
const serviceName = `${modelName}Service`;
|
|
112
86
|
Rsv.prototype[fieldMeta.key] = async function(parent) {
|
|
113
87
|
const service = this[serviceName];
|
|
114
88
|
return fieldMeta.arrDepth ? await service[`load${className}Many`](parent[fieldMeta.key]) : await service[`load${className}`](parent[fieldMeta.key]);
|
|
115
89
|
};
|
|
116
90
|
Nest.Parent()(Rsv.prototype, fieldMeta.key, 0);
|
|
117
|
-
Nest.ResolveField(getNestReturn(() =>
|
|
91
|
+
Nest.ResolveField(getNestReturn(() => arraiedModel(fieldMeta.modelRef, fieldMeta.arrDepth)))(
|
|
118
92
|
Rsv.prototype,
|
|
119
93
|
fieldMeta.key,
|
|
120
94
|
Object.getOwnPropertyDescriptor(Rsv.prototype, fieldMeta.key) ?? {}
|
|
@@ -122,7 +96,7 @@ const resolverOf = (sigRef, allSrvs) => {
|
|
|
122
96
|
});
|
|
123
97
|
}
|
|
124
98
|
for (const resolveFieldMeta of resolveFieldMetas) {
|
|
125
|
-
const [, internalArgMetas] =
|
|
99
|
+
const [, internalArgMetas] = getArgMetas(Rsv, resolveFieldMeta.key);
|
|
126
100
|
for (const internalArgMeta of internalArgMetas) {
|
|
127
101
|
const decorate = internalArgMap[internalArgMeta.type];
|
|
128
102
|
decorate(internalArgMeta.option ?? {})(Rsv.prototype, resolveFieldMeta.key, internalArgMeta.idx);
|
|
@@ -139,7 +113,6 @@ const resolverOf = (sigRef, allSrvs) => {
|
|
|
139
113
|
Nest.Resolver()(Rsv);
|
|
140
114
|
return Rsv;
|
|
141
115
|
};
|
|
142
|
-
|
|
143
|
-
0 && (module.exports = {
|
|
116
|
+
export {
|
|
144
117
|
resolverOf
|
|
145
|
-
}
|
|
118
|
+
};
|