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