@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/module.cjs
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
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 __decorateClass = (decorators, target, key, kind) => {
|
|
19
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
20
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
21
|
+
if (decorator = decorators[i])
|
|
22
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
23
|
+
if (kind && result)
|
|
24
|
+
__defProp(target, key, result);
|
|
25
|
+
return result;
|
|
26
|
+
};
|
|
27
|
+
var module_exports = {};
|
|
28
|
+
__export(module_exports, {
|
|
29
|
+
batchModuleOf: () => batchModuleOf,
|
|
30
|
+
databaseModuleOf: () => databaseModuleOf,
|
|
31
|
+
scalarModuleOf: () => scalarModuleOf,
|
|
32
|
+
scalarModulesOf: () => scalarModulesOf,
|
|
33
|
+
serviceModuleOf: () => serviceModuleOf,
|
|
34
|
+
useGlobals: () => useGlobals
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(module_exports);
|
|
37
|
+
var import_common = require("@akanjs/common");
|
|
38
|
+
var import_constant = require("@akanjs/constant");
|
|
39
|
+
var import_document = require("@akanjs/document");
|
|
40
|
+
var import_service = require("@akanjs/service");
|
|
41
|
+
var import_signal = require("@akanjs/signal");
|
|
42
|
+
var import_bull = require("@nestjs/bull");
|
|
43
|
+
var import_common2 = require("@nestjs/common");
|
|
44
|
+
var import_mongoose = require("@nestjs/mongoose");
|
|
45
|
+
var import_controller = require("./controller");
|
|
46
|
+
var import_processor = require("./processor");
|
|
47
|
+
var import_resolver = require("./resolver");
|
|
48
|
+
var import_schema = require("./schema");
|
|
49
|
+
var import_websocket = require("./websocket");
|
|
50
|
+
const hasWebsocket = (signal) => (0, import_signal.getGqlMetas)(signal).some((gqlMeta) => ["Message", "Pubsub"].includes(gqlMeta.type));
|
|
51
|
+
const hasProcessor = (signal) => (0, import_signal.getGqlMetas)(signal).some((gqlMeta) => gqlMeta.type === "Process");
|
|
52
|
+
const filterSrvs = (srvs) => Object.fromEntries(Object.entries(srvs).filter(([_, srv]) => !!srv));
|
|
53
|
+
const databaseModuleOf = ({
|
|
54
|
+
constant,
|
|
55
|
+
database,
|
|
56
|
+
signal,
|
|
57
|
+
service,
|
|
58
|
+
uses = {},
|
|
59
|
+
useAsyncs = {},
|
|
60
|
+
providers = [],
|
|
61
|
+
extended
|
|
62
|
+
}, allSrvs) => {
|
|
63
|
+
if (!(0, import_service.isServiceEnabled)(service))
|
|
64
|
+
return null;
|
|
65
|
+
const [modelName, className] = [(0, import_common.lowerlize)(constant.refName), (0, import_common.capitalize)(constant.refName)];
|
|
66
|
+
const mongoToken = (0, import_mongoose.getModelToken)(className);
|
|
67
|
+
let DatabaseModule = class {
|
|
68
|
+
};
|
|
69
|
+
DatabaseModule = __decorateClass([
|
|
70
|
+
(0, import_common2.Global)(),
|
|
71
|
+
(0, import_common2.Module)({
|
|
72
|
+
imports: [
|
|
73
|
+
import_mongoose.MongooseModule.forFeature([
|
|
74
|
+
{
|
|
75
|
+
name: className,
|
|
76
|
+
schema: extended ? (0, import_schema.addSchema)(database.Model, database.Doc, database.Input, database.Middleware) : (0, import_schema.schemaOf)(database.Model, database.Doc, database.Middleware)
|
|
77
|
+
}
|
|
78
|
+
]),
|
|
79
|
+
...hasProcessor(signal) ? [
|
|
80
|
+
import_bull.BullModule.registerQueue({
|
|
81
|
+
name: modelName,
|
|
82
|
+
defaultJobOptions: { removeOnComplete: true, removeOnFail: true }
|
|
83
|
+
})
|
|
84
|
+
] : []
|
|
85
|
+
],
|
|
86
|
+
providers: [
|
|
87
|
+
(0, import_service.serviceOf)(service),
|
|
88
|
+
(0, import_resolver.resolverOf)(signal, filterSrvs(allSrvs)),
|
|
89
|
+
...hasProcessor(signal) ? [
|
|
90
|
+
(0, import_processor.processorOf)(signal, filterSrvs(allSrvs)),
|
|
91
|
+
{ provide: `${className}Queue`, useFactory: (queue) => queue, inject: [(0, import_bull.getQueueToken)(modelName)] }
|
|
92
|
+
] : [],
|
|
93
|
+
...hasWebsocket(signal) ? [(0, import_websocket.websocketOf)(signal, filterSrvs(allSrvs)), { provide: "Websocket", useClass: (0, import_websocket.websocketServerOf)(signal) }] : [],
|
|
94
|
+
...Object.entries(uses).map(([key, useValue]) => ({ provide: (0, import_common.capitalize)(key), useValue })),
|
|
95
|
+
...Object.entries(useAsyncs).map(([key, useFactory]) => ({ provide: (0, import_common.capitalize)(key), useFactory })),
|
|
96
|
+
{
|
|
97
|
+
provide: `${modelName}Model`,
|
|
98
|
+
useFactory: (model, redis, meili) => {
|
|
99
|
+
return (0, import_document.databaseModelOf)(database, model, redis, meili);
|
|
100
|
+
},
|
|
101
|
+
inject: [mongoToken, "REDIS_CLIENT", "MEILI_CLIENT"]
|
|
102
|
+
},
|
|
103
|
+
...providers
|
|
104
|
+
],
|
|
105
|
+
controllers: [(0, import_controller.controllerOf)(signal, filterSrvs(allSrvs))],
|
|
106
|
+
exports: [service]
|
|
107
|
+
})
|
|
108
|
+
], DatabaseModule);
|
|
109
|
+
return DatabaseModule;
|
|
110
|
+
};
|
|
111
|
+
const serviceModuleOf = ({ signal, service, uses = {}, useAsyncs = {}, providers = [] }, allSrvs) => {
|
|
112
|
+
if (!(0, import_service.isServiceEnabled)(service))
|
|
113
|
+
return null;
|
|
114
|
+
const sigMeta = (0, import_signal.getSigMeta)(signal);
|
|
115
|
+
const [modelName, className] = [(0, import_common.lowerlize)(sigMeta.refName), (0, import_common.capitalize)(sigMeta.refName)];
|
|
116
|
+
let ServiceModule = class {
|
|
117
|
+
};
|
|
118
|
+
ServiceModule = __decorateClass([
|
|
119
|
+
(0, import_common2.Global)(),
|
|
120
|
+
(0, import_common2.Module)({
|
|
121
|
+
imports: [
|
|
122
|
+
...hasProcessor(signal) ? [
|
|
123
|
+
import_bull.BullModule.registerQueue({
|
|
124
|
+
name: modelName,
|
|
125
|
+
defaultJobOptions: { removeOnComplete: true, removeOnFail: true }
|
|
126
|
+
})
|
|
127
|
+
] : []
|
|
128
|
+
],
|
|
129
|
+
providers: [
|
|
130
|
+
(0, import_service.serviceOf)(service),
|
|
131
|
+
(0, import_resolver.resolverOf)(signal, filterSrvs(allSrvs)),
|
|
132
|
+
...hasWebsocket(signal) ? [(0, import_websocket.websocketOf)(signal, filterSrvs(allSrvs)), { provide: "Websocket", useClass: (0, import_websocket.websocketServerOf)(signal) }] : [],
|
|
133
|
+
...hasProcessor(signal) ? [
|
|
134
|
+
(0, import_processor.processorOf)(signal, filterSrvs(allSrvs)),
|
|
135
|
+
{ provide: `${className}Queue`, useFactory: (queue) => queue, inject: [(0, import_bull.getQueueToken)(modelName)] }
|
|
136
|
+
] : [],
|
|
137
|
+
...Object.entries(uses).map(([key, useValue]) => ({ provide: (0, import_common.capitalize)(key), useValue })),
|
|
138
|
+
...Object.entries(useAsyncs).map(([key, useFactory]) => ({ provide: (0, import_common.capitalize)(key), useFactory })),
|
|
139
|
+
...providers
|
|
140
|
+
],
|
|
141
|
+
controllers: [(0, import_controller.controllerOf)(signal, filterSrvs(allSrvs))],
|
|
142
|
+
exports: [service]
|
|
143
|
+
})
|
|
144
|
+
], ServiceModule);
|
|
145
|
+
return ServiceModule;
|
|
146
|
+
};
|
|
147
|
+
const scalarModuleOf = ({ signals, uses = {}, useAsyncs = {}, providers = [], enabled = true }, allSrvs) => {
|
|
148
|
+
if (!enabled)
|
|
149
|
+
return null;
|
|
150
|
+
let ScalarModule = class {
|
|
151
|
+
};
|
|
152
|
+
ScalarModule = __decorateClass([
|
|
153
|
+
(0, import_common2.Global)(),
|
|
154
|
+
(0, import_common2.Module)({
|
|
155
|
+
imports: [],
|
|
156
|
+
providers: [
|
|
157
|
+
...signals.map((signal) => (0, import_resolver.resolverOf)(signal, filterSrvs(allSrvs))),
|
|
158
|
+
...signals.filter(hasWebsocket).map((signal) => [
|
|
159
|
+
(0, import_websocket.websocketOf)(signal, filterSrvs(allSrvs)),
|
|
160
|
+
{ provide: "Websocket", useClass: (0, import_websocket.websocketServerOf)(signal) }
|
|
161
|
+
]).flat(),
|
|
162
|
+
...Object.entries(uses).map(([key, useValue]) => ({ provide: (0, import_common.capitalize)(key), useValue })),
|
|
163
|
+
...Object.entries(useAsyncs).map(([key, useFactory]) => ({ provide: (0, import_common.capitalize)(key), useFactory })),
|
|
164
|
+
...providers
|
|
165
|
+
],
|
|
166
|
+
controllers: signals.map((signal) => (0, import_controller.controllerOf)(signal, filterSrvs(allSrvs)))
|
|
167
|
+
})
|
|
168
|
+
], ScalarModule);
|
|
169
|
+
return ScalarModule;
|
|
170
|
+
};
|
|
171
|
+
const scalarModulesOf = ({ constants }, allSrvs) => {
|
|
172
|
+
const signals = constants.filter((modelRef) => {
|
|
173
|
+
const childRefs = (0, import_constant.getChildClassRefs)(modelRef);
|
|
174
|
+
return childRefs.some((childRef) => {
|
|
175
|
+
const classMeta = (0, import_constant.getClassMeta)(childRef);
|
|
176
|
+
return ["full", "light"].includes(classMeta.type);
|
|
177
|
+
});
|
|
178
|
+
}).map((modelRef) => {
|
|
179
|
+
let ScalarSignal = class extends (0, import_signal.LogSignal)({}) {
|
|
180
|
+
};
|
|
181
|
+
ScalarSignal = __decorateClass([
|
|
182
|
+
(0, import_signal.Signal)(() => modelRef)
|
|
183
|
+
], ScalarSignal);
|
|
184
|
+
return ScalarSignal;
|
|
185
|
+
});
|
|
186
|
+
let ScalarModule = class {
|
|
187
|
+
};
|
|
188
|
+
ScalarModule = __decorateClass([
|
|
189
|
+
(0, import_common2.Global)(),
|
|
190
|
+
(0, import_common2.Module)({
|
|
191
|
+
imports: [],
|
|
192
|
+
providers: [...signals.map((signal) => (0, import_resolver.resolverOf)(signal, filterSrvs(allSrvs)))]
|
|
193
|
+
// controllers: signals.map((signal) => controllerOf(signal, filterSrvs(allSrvs))),
|
|
194
|
+
})
|
|
195
|
+
], ScalarModule);
|
|
196
|
+
return ScalarModule;
|
|
197
|
+
};
|
|
198
|
+
const batchModuleOf = ({
|
|
199
|
+
service,
|
|
200
|
+
uses = {},
|
|
201
|
+
useAsyncs = {},
|
|
202
|
+
providers = []
|
|
203
|
+
}) => {
|
|
204
|
+
if (!(0, import_service.isServiceEnabled)(service))
|
|
205
|
+
return null;
|
|
206
|
+
let BatchModule = class {
|
|
207
|
+
};
|
|
208
|
+
BatchModule = __decorateClass([
|
|
209
|
+
(0, import_common2.Global)(),
|
|
210
|
+
(0, import_common2.Module)({
|
|
211
|
+
imports: [],
|
|
212
|
+
providers: [
|
|
213
|
+
(0, import_service.serviceOf)(service),
|
|
214
|
+
...Object.entries(uses).map(([key, useValue]) => ({ provide: (0, import_common.capitalize)(key), useValue })),
|
|
215
|
+
...Object.entries(useAsyncs).map(([key, useFactory]) => ({ provide: (0, import_common.capitalize)(key), useFactory })),
|
|
216
|
+
...providers
|
|
217
|
+
],
|
|
218
|
+
exports: [service]
|
|
219
|
+
})
|
|
220
|
+
], BatchModule);
|
|
221
|
+
return BatchModule;
|
|
222
|
+
};
|
|
223
|
+
const useGlobals = ({ uses, useAsyncs, injects }) => {
|
|
224
|
+
let GlobalsModule = class {
|
|
225
|
+
};
|
|
226
|
+
GlobalsModule = __decorateClass([
|
|
227
|
+
(0, import_common2.Global)(),
|
|
228
|
+
(0, import_common2.Module)({
|
|
229
|
+
imports: [],
|
|
230
|
+
providers: [
|
|
231
|
+
...Object.entries(uses ?? {}).map(([key, useValue]) => ({
|
|
232
|
+
provide: (0, import_common.capitalize)(key),
|
|
233
|
+
useValue
|
|
234
|
+
})),
|
|
235
|
+
...Object.entries(useAsyncs ?? {}).map(([key, useFactory]) => ({ provide: (0, import_common.capitalize)(key), useFactory })),
|
|
236
|
+
...Object.entries(injects ?? {}).map(([key, inject]) => ({ provide: (0, import_common.capitalize)(key), useClass: inject }))
|
|
237
|
+
],
|
|
238
|
+
exports: [
|
|
239
|
+
...Object.keys(uses ?? {}).map((key) => (0, import_common.capitalize)(key)),
|
|
240
|
+
...Object.keys(useAsyncs ?? {}).map((key) => (0, import_common.capitalize)(key)),
|
|
241
|
+
...Object.keys(injects ?? {}).map((key) => (0, import_common.capitalize)(key))
|
|
242
|
+
]
|
|
243
|
+
})
|
|
244
|
+
], GlobalsModule);
|
|
245
|
+
return GlobalsModule;
|
|
246
|
+
};
|
|
247
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
248
|
+
0 && (module.exports = {
|
|
249
|
+
batchModuleOf,
|
|
250
|
+
databaseModuleOf,
|
|
251
|
+
scalarModuleOf,
|
|
252
|
+
scalarModulesOf,
|
|
253
|
+
serviceModuleOf,
|
|
254
|
+
useGlobals
|
|
255
|
+
});
|
package/src/module.js
CHANGED
|
@@ -1,20 +1,5 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
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
3
|
var __decorateClass = (decorators, target, key, kind) => {
|
|
19
4
|
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
20
5
|
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
@@ -24,31 +9,21 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
24
9
|
__defProp(target, key, result);
|
|
25
10
|
return result;
|
|
26
11
|
};
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
var import_bull = require("@nestjs/bull");
|
|
43
|
-
var import_common2 = require("@nestjs/common");
|
|
44
|
-
var import_mongoose = require("@nestjs/mongoose");
|
|
45
|
-
var import_controller = require("./controller");
|
|
46
|
-
var import_processor = require("./processor");
|
|
47
|
-
var import_resolver = require("./resolver");
|
|
48
|
-
var import_schema = require("./schema");
|
|
49
|
-
var import_websocket = require("./websocket");
|
|
50
|
-
const hasWebsocket = (signal) => (0, import_signal.getGqlMetas)(signal).some((gqlMeta) => ["Message", "Pubsub"].includes(gqlMeta.type));
|
|
51
|
-
const hasProcessor = (signal) => (0, import_signal.getGqlMetas)(signal).some((gqlMeta) => gqlMeta.type === "Process");
|
|
12
|
+
import { capitalize, lowerlize } from "@akanjs/common";
|
|
13
|
+
import { getChildClassRefs, getClassMeta } from "@akanjs/constant";
|
|
14
|
+
import { databaseModelOf } from "@akanjs/document";
|
|
15
|
+
import { isServiceEnabled, serviceOf } from "@akanjs/service";
|
|
16
|
+
import { getGqlMetas, getSigMeta, LogSignal, Signal } from "@akanjs/signal";
|
|
17
|
+
import { BullModule, getQueueToken } from "@nestjs/bull";
|
|
18
|
+
import { Global, Module } from "@nestjs/common";
|
|
19
|
+
import { getModelToken, MongooseModule } from "@nestjs/mongoose";
|
|
20
|
+
import { controllerOf } from "./controller";
|
|
21
|
+
import { processorOf } from "./processor";
|
|
22
|
+
import { resolverOf } from "./resolver";
|
|
23
|
+
import { addSchema, schemaOf } from "./schema";
|
|
24
|
+
import { websocketOf, websocketServerOf } from "./websocket";
|
|
25
|
+
const hasWebsocket = (signal) => getGqlMetas(signal).some((gqlMeta) => ["Message", "Pubsub"].includes(gqlMeta.type));
|
|
26
|
+
const hasProcessor = (signal) => getGqlMetas(signal).some((gqlMeta) => gqlMeta.type === "Process");
|
|
52
27
|
const filterSrvs = (srvs) => Object.fromEntries(Object.entries(srvs).filter(([_, srv]) => !!srv));
|
|
53
28
|
const databaseModuleOf = ({
|
|
54
29
|
constant,
|
|
@@ -60,85 +35,85 @@ const databaseModuleOf = ({
|
|
|
60
35
|
providers = [],
|
|
61
36
|
extended
|
|
62
37
|
}, allSrvs) => {
|
|
63
|
-
if (!
|
|
38
|
+
if (!isServiceEnabled(service))
|
|
64
39
|
return null;
|
|
65
|
-
const [modelName, className] = [
|
|
66
|
-
const mongoToken =
|
|
40
|
+
const [modelName, className] = [lowerlize(constant.refName), capitalize(constant.refName)];
|
|
41
|
+
const mongoToken = getModelToken(className);
|
|
67
42
|
let DatabaseModule = class {
|
|
68
43
|
};
|
|
69
44
|
DatabaseModule = __decorateClass([
|
|
70
|
-
|
|
71
|
-
|
|
45
|
+
Global(),
|
|
46
|
+
Module({
|
|
72
47
|
imports: [
|
|
73
|
-
|
|
48
|
+
MongooseModule.forFeature([
|
|
74
49
|
{
|
|
75
50
|
name: className,
|
|
76
|
-
schema: extended ?
|
|
51
|
+
schema: extended ? addSchema(database.Model, database.Doc, database.Input, database.Middleware) : schemaOf(database.Model, database.Doc, database.Middleware)
|
|
77
52
|
}
|
|
78
53
|
]),
|
|
79
54
|
...hasProcessor(signal) ? [
|
|
80
|
-
|
|
55
|
+
BullModule.registerQueue({
|
|
81
56
|
name: modelName,
|
|
82
57
|
defaultJobOptions: { removeOnComplete: true, removeOnFail: true }
|
|
83
58
|
})
|
|
84
59
|
] : []
|
|
85
60
|
],
|
|
86
61
|
providers: [
|
|
87
|
-
|
|
88
|
-
|
|
62
|
+
serviceOf(service),
|
|
63
|
+
resolverOf(signal, filterSrvs(allSrvs)),
|
|
89
64
|
...hasProcessor(signal) ? [
|
|
90
|
-
|
|
91
|
-
{ provide: `${className}Queue`, useFactory: (queue) => queue, inject: [
|
|
65
|
+
processorOf(signal, filterSrvs(allSrvs)),
|
|
66
|
+
{ provide: `${className}Queue`, useFactory: (queue) => queue, inject: [getQueueToken(modelName)] }
|
|
92
67
|
] : [],
|
|
93
|
-
...hasWebsocket(signal) ? [
|
|
94
|
-
...Object.entries(uses).map(([key, useValue]) => ({ provide:
|
|
95
|
-
...Object.entries(useAsyncs).map(([key, useFactory]) => ({ provide:
|
|
68
|
+
...hasWebsocket(signal) ? [websocketOf(signal, filterSrvs(allSrvs)), { provide: "Websocket", useClass: websocketServerOf(signal) }] : [],
|
|
69
|
+
...Object.entries(uses).map(([key, useValue]) => ({ provide: capitalize(key), useValue })),
|
|
70
|
+
...Object.entries(useAsyncs).map(([key, useFactory]) => ({ provide: capitalize(key), useFactory })),
|
|
96
71
|
{
|
|
97
72
|
provide: `${modelName}Model`,
|
|
98
73
|
useFactory: (model, redis, meili) => {
|
|
99
|
-
return
|
|
74
|
+
return databaseModelOf(database, model, redis, meili);
|
|
100
75
|
},
|
|
101
76
|
inject: [mongoToken, "REDIS_CLIENT", "MEILI_CLIENT"]
|
|
102
77
|
},
|
|
103
78
|
...providers
|
|
104
79
|
],
|
|
105
|
-
controllers: [
|
|
80
|
+
controllers: [controllerOf(signal, filterSrvs(allSrvs))],
|
|
106
81
|
exports: [service]
|
|
107
82
|
})
|
|
108
83
|
], DatabaseModule);
|
|
109
84
|
return DatabaseModule;
|
|
110
85
|
};
|
|
111
86
|
const serviceModuleOf = ({ signal, service, uses = {}, useAsyncs = {}, providers = [] }, allSrvs) => {
|
|
112
|
-
if (!
|
|
87
|
+
if (!isServiceEnabled(service))
|
|
113
88
|
return null;
|
|
114
|
-
const sigMeta =
|
|
115
|
-
const [modelName, className] = [
|
|
89
|
+
const sigMeta = getSigMeta(signal);
|
|
90
|
+
const [modelName, className] = [lowerlize(sigMeta.refName), capitalize(sigMeta.refName)];
|
|
116
91
|
let ServiceModule = class {
|
|
117
92
|
};
|
|
118
93
|
ServiceModule = __decorateClass([
|
|
119
|
-
|
|
120
|
-
|
|
94
|
+
Global(),
|
|
95
|
+
Module({
|
|
121
96
|
imports: [
|
|
122
97
|
...hasProcessor(signal) ? [
|
|
123
|
-
|
|
98
|
+
BullModule.registerQueue({
|
|
124
99
|
name: modelName,
|
|
125
100
|
defaultJobOptions: { removeOnComplete: true, removeOnFail: true }
|
|
126
101
|
})
|
|
127
102
|
] : []
|
|
128
103
|
],
|
|
129
104
|
providers: [
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
...hasWebsocket(signal) ? [
|
|
105
|
+
serviceOf(service),
|
|
106
|
+
resolverOf(signal, filterSrvs(allSrvs)),
|
|
107
|
+
...hasWebsocket(signal) ? [websocketOf(signal, filterSrvs(allSrvs)), { provide: "Websocket", useClass: websocketServerOf(signal) }] : [],
|
|
133
108
|
...hasProcessor(signal) ? [
|
|
134
|
-
|
|
135
|
-
{ provide: `${className}Queue`, useFactory: (queue) => queue, inject: [
|
|
109
|
+
processorOf(signal, filterSrvs(allSrvs)),
|
|
110
|
+
{ provide: `${className}Queue`, useFactory: (queue) => queue, inject: [getQueueToken(modelName)] }
|
|
136
111
|
] : [],
|
|
137
|
-
...Object.entries(uses).map(([key, useValue]) => ({ provide:
|
|
138
|
-
...Object.entries(useAsyncs).map(([key, useFactory]) => ({ provide:
|
|
112
|
+
...Object.entries(uses).map(([key, useValue]) => ({ provide: capitalize(key), useValue })),
|
|
113
|
+
...Object.entries(useAsyncs).map(([key, useFactory]) => ({ provide: capitalize(key), useFactory })),
|
|
139
114
|
...providers
|
|
140
115
|
],
|
|
141
|
-
controllers: [
|
|
116
|
+
controllers: [controllerOf(signal, filterSrvs(allSrvs))],
|
|
142
117
|
exports: [service]
|
|
143
118
|
})
|
|
144
119
|
], ServiceModule);
|
|
@@ -150,46 +125,46 @@ const scalarModuleOf = ({ signals, uses = {}, useAsyncs = {}, providers = [], en
|
|
|
150
125
|
let ScalarModule = class {
|
|
151
126
|
};
|
|
152
127
|
ScalarModule = __decorateClass([
|
|
153
|
-
|
|
154
|
-
|
|
128
|
+
Global(),
|
|
129
|
+
Module({
|
|
155
130
|
imports: [],
|
|
156
131
|
providers: [
|
|
157
|
-
...signals.map((signal) =>
|
|
132
|
+
...signals.map((signal) => resolverOf(signal, filterSrvs(allSrvs))),
|
|
158
133
|
...signals.filter(hasWebsocket).map((signal) => [
|
|
159
|
-
|
|
160
|
-
{ provide: "Websocket", useClass:
|
|
134
|
+
websocketOf(signal, filterSrvs(allSrvs)),
|
|
135
|
+
{ provide: "Websocket", useClass: websocketServerOf(signal) }
|
|
161
136
|
]).flat(),
|
|
162
|
-
...Object.entries(uses).map(([key, useValue]) => ({ provide:
|
|
163
|
-
...Object.entries(useAsyncs).map(([key, useFactory]) => ({ provide:
|
|
137
|
+
...Object.entries(uses).map(([key, useValue]) => ({ provide: capitalize(key), useValue })),
|
|
138
|
+
...Object.entries(useAsyncs).map(([key, useFactory]) => ({ provide: capitalize(key), useFactory })),
|
|
164
139
|
...providers
|
|
165
140
|
],
|
|
166
|
-
controllers: signals.map((signal) =>
|
|
141
|
+
controllers: signals.map((signal) => controllerOf(signal, filterSrvs(allSrvs)))
|
|
167
142
|
})
|
|
168
143
|
], ScalarModule);
|
|
169
144
|
return ScalarModule;
|
|
170
145
|
};
|
|
171
146
|
const scalarModulesOf = ({ constants }, allSrvs) => {
|
|
172
147
|
const signals = constants.filter((modelRef) => {
|
|
173
|
-
const childRefs =
|
|
148
|
+
const childRefs = getChildClassRefs(modelRef);
|
|
174
149
|
return childRefs.some((childRef) => {
|
|
175
|
-
const classMeta =
|
|
150
|
+
const classMeta = getClassMeta(childRef);
|
|
176
151
|
return ["full", "light"].includes(classMeta.type);
|
|
177
152
|
});
|
|
178
153
|
}).map((modelRef) => {
|
|
179
|
-
let ScalarSignal = class extends
|
|
154
|
+
let ScalarSignal = class extends LogSignal({}) {
|
|
180
155
|
};
|
|
181
156
|
ScalarSignal = __decorateClass([
|
|
182
|
-
|
|
157
|
+
Signal(() => modelRef)
|
|
183
158
|
], ScalarSignal);
|
|
184
159
|
return ScalarSignal;
|
|
185
160
|
});
|
|
186
161
|
let ScalarModule = class {
|
|
187
162
|
};
|
|
188
163
|
ScalarModule = __decorateClass([
|
|
189
|
-
|
|
190
|
-
|
|
164
|
+
Global(),
|
|
165
|
+
Module({
|
|
191
166
|
imports: [],
|
|
192
|
-
providers: [...signals.map((signal) =>
|
|
167
|
+
providers: [...signals.map((signal) => resolverOf(signal, filterSrvs(allSrvs)))]
|
|
193
168
|
// controllers: signals.map((signal) => controllerOf(signal, filterSrvs(allSrvs))),
|
|
194
169
|
})
|
|
195
170
|
], ScalarModule);
|
|
@@ -201,18 +176,18 @@ const batchModuleOf = ({
|
|
|
201
176
|
useAsyncs = {},
|
|
202
177
|
providers = []
|
|
203
178
|
}) => {
|
|
204
|
-
if (!
|
|
179
|
+
if (!isServiceEnabled(service))
|
|
205
180
|
return null;
|
|
206
181
|
let BatchModule = class {
|
|
207
182
|
};
|
|
208
183
|
BatchModule = __decorateClass([
|
|
209
|
-
|
|
210
|
-
|
|
184
|
+
Global(),
|
|
185
|
+
Module({
|
|
211
186
|
imports: [],
|
|
212
187
|
providers: [
|
|
213
|
-
|
|
214
|
-
...Object.entries(uses).map(([key, useValue]) => ({ provide:
|
|
215
|
-
...Object.entries(useAsyncs).map(([key, useFactory]) => ({ provide:
|
|
188
|
+
serviceOf(service),
|
|
189
|
+
...Object.entries(uses).map(([key, useValue]) => ({ provide: capitalize(key), useValue })),
|
|
190
|
+
...Object.entries(useAsyncs).map(([key, useFactory]) => ({ provide: capitalize(key), useFactory })),
|
|
216
191
|
...providers
|
|
217
192
|
],
|
|
218
193
|
exports: [service]
|
|
@@ -224,32 +199,31 @@ const useGlobals = ({ uses, useAsyncs, injects }) => {
|
|
|
224
199
|
let GlobalsModule = class {
|
|
225
200
|
};
|
|
226
201
|
GlobalsModule = __decorateClass([
|
|
227
|
-
|
|
228
|
-
|
|
202
|
+
Global(),
|
|
203
|
+
Module({
|
|
229
204
|
imports: [],
|
|
230
205
|
providers: [
|
|
231
206
|
...Object.entries(uses ?? {}).map(([key, useValue]) => ({
|
|
232
|
-
provide:
|
|
207
|
+
provide: capitalize(key),
|
|
233
208
|
useValue
|
|
234
209
|
})),
|
|
235
|
-
...Object.entries(useAsyncs ?? {}).map(([key, useFactory]) => ({ provide:
|
|
236
|
-
...Object.entries(injects ?? {}).map(([key, inject]) => ({ provide:
|
|
210
|
+
...Object.entries(useAsyncs ?? {}).map(([key, useFactory]) => ({ provide: capitalize(key), useFactory })),
|
|
211
|
+
...Object.entries(injects ?? {}).map(([key, inject]) => ({ provide: capitalize(key), useClass: inject }))
|
|
237
212
|
],
|
|
238
213
|
exports: [
|
|
239
|
-
...Object.keys(uses ?? {}).map((key) =>
|
|
240
|
-
...Object.keys(useAsyncs ?? {}).map((key) =>
|
|
241
|
-
...Object.keys(injects ?? {}).map((key) =>
|
|
214
|
+
...Object.keys(uses ?? {}).map((key) => capitalize(key)),
|
|
215
|
+
...Object.keys(useAsyncs ?? {}).map((key) => capitalize(key)),
|
|
216
|
+
...Object.keys(injects ?? {}).map((key) => capitalize(key))
|
|
242
217
|
]
|
|
243
218
|
})
|
|
244
219
|
], GlobalsModule);
|
|
245
220
|
return GlobalsModule;
|
|
246
221
|
};
|
|
247
|
-
|
|
248
|
-
0 && (module.exports = {
|
|
222
|
+
export {
|
|
249
223
|
batchModuleOf,
|
|
250
224
|
databaseModuleOf,
|
|
251
225
|
scalarModuleOf,
|
|
252
226
|
scalarModulesOf,
|
|
253
227
|
serviceModuleOf,
|
|
254
228
|
useGlobals
|
|
255
|
-
}
|
|
229
|
+
};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
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");
|
|
29
|
+
const convertProcessFunction = (gqlMeta, argMetas, internalArgMetas, fn) => {
|
|
30
|
+
return async function(job, done) {
|
|
31
|
+
const args = [];
|
|
32
|
+
argMetas.forEach((argMeta) => {
|
|
33
|
+
if (argMeta.type === "Msg")
|
|
34
|
+
args[argMeta.idx] = (0, import_signal.deserializeArg)(argMeta, job.data[argMeta.idx]);
|
|
35
|
+
else
|
|
36
|
+
throw new Error(`Invalid ArgMeta Type ${argMeta.type}`);
|
|
37
|
+
});
|
|
38
|
+
internalArgMetas.forEach((internalArgMeta) => {
|
|
39
|
+
if (internalArgMeta.type === "Job")
|
|
40
|
+
args[internalArgMeta.idx] = job;
|
|
41
|
+
else
|
|
42
|
+
throw new Error(`Invalid InternalArgMeta Type ${internalArgMeta.type}`);
|
|
43
|
+
});
|
|
44
|
+
this.logger?.log(`Process-${gqlMeta.key} started`);
|
|
45
|
+
const result = await fn.apply(this, args);
|
|
46
|
+
this.logger?.log(`Process-${gqlMeta.key} finished`);
|
|
47
|
+
done(null, result);
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
const processorOf = (sigRef, allSrvs) => {
|
|
51
|
+
const sigMeta = (0, import_signal.getSigMeta)(sigRef);
|
|
52
|
+
const serverMode = process.env.SERVER_MODE ?? "federation";
|
|
53
|
+
const gqlMetas = (0, import_signal.getGqlMetas)(sigRef).filter((gqlMeta) => gqlMeta.type === "Process").filter(
|
|
54
|
+
(gqlMeta) => gqlMeta.signalOption.serverType === "all" || serverMode === "all" || gqlMeta.signalOption.serverType === serverMode
|
|
55
|
+
);
|
|
56
|
+
class QueueProcessor {
|
|
57
|
+
}
|
|
58
|
+
Object.keys(allSrvs).forEach((srv) => {
|
|
59
|
+
if (!(0, import_service.isServiceEnabled)(allSrvs[srv]))
|
|
60
|
+
return;
|
|
61
|
+
(0, import_common2.Inject)(allSrvs[srv])(QueueProcessor.prototype, (0, import_common.lowerlize)(srv));
|
|
62
|
+
});
|
|
63
|
+
for (const gqlMeta of gqlMetas) {
|
|
64
|
+
const [argMetas, internalArgMetas] = (0, import_signal.getArgMetas)(sigRef, gqlMeta.key);
|
|
65
|
+
const descriptor = { ...Object.getOwnPropertyDescriptor(sigRef.prototype, gqlMeta.key) ?? {} };
|
|
66
|
+
descriptor.value = convertProcessFunction(
|
|
67
|
+
gqlMeta,
|
|
68
|
+
argMetas,
|
|
69
|
+
internalArgMetas,
|
|
70
|
+
descriptor.value
|
|
71
|
+
);
|
|
72
|
+
Object.defineProperty(QueueProcessor.prototype, gqlMeta.key, descriptor);
|
|
73
|
+
(0, import_bull.Process)(gqlMeta.key)(QueueProcessor.prototype, gqlMeta.key, descriptor);
|
|
74
|
+
}
|
|
75
|
+
(0, import_bull.Processor)(sigMeta.refName)(QueueProcessor);
|
|
76
|
+
return QueueProcessor;
|
|
77
|
+
};
|
|
78
|
+
const queueOf = (sigRef, queue) => {
|
|
79
|
+
const sigMeta = (0, import_signal.getSigMeta)(sigRef);
|
|
80
|
+
const gqlMetas = (0, import_signal.getGqlMetas)(sigRef).filter((gqlMeta) => gqlMeta.type === "Process");
|
|
81
|
+
for (const gqlMeta of gqlMetas) {
|
|
82
|
+
if (queue[gqlMeta.key])
|
|
83
|
+
throw new Error(`Queue already has ${gqlMeta.key} in ${sigMeta.refName}`);
|
|
84
|
+
queue[gqlMeta.key] = (...args) => queue.add(gqlMeta.key, args);
|
|
85
|
+
}
|
|
86
|
+
return queue;
|
|
87
|
+
};
|
|
88
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
89
|
+
0 && (module.exports = {
|
|
90
|
+
processorOf,
|
|
91
|
+
queueOf
|
|
92
|
+
});
|