@akanjs/service 0.9.40 → 0.9.42
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/cjs/src/base.service.js
CHANGED
|
@@ -34,9 +34,9 @@ var import_nest = require("@akanjs/nest");
|
|
|
34
34
|
var import_serviceDecorators = require("./serviceDecorators");
|
|
35
35
|
let BaseService = class extends (0, import_serviceDecorators.LogService)("BaseService") {
|
|
36
36
|
onCleanup;
|
|
37
|
-
|
|
37
|
+
baseSignal;
|
|
38
38
|
intervalPing() {
|
|
39
|
-
this.
|
|
39
|
+
this.baseSignal.pubsubPing((/* @__PURE__ */ new Date()).toISOString());
|
|
40
40
|
}
|
|
41
41
|
async cleanup() {
|
|
42
42
|
if (!this.onCleanup)
|
|
@@ -45,11 +45,11 @@ let BaseService = class extends (0, import_serviceDecorators.LogService)("BaseSe
|
|
|
45
45
|
}
|
|
46
46
|
};
|
|
47
47
|
__decorateClass([
|
|
48
|
-
(0, import_serviceDecorators.
|
|
48
|
+
(0, import_serviceDecorators.Gen)((env) => env.onCleanup)
|
|
49
49
|
], BaseService.prototype, "onCleanup", 2);
|
|
50
50
|
__decorateClass([
|
|
51
|
-
(0, import_serviceDecorators.
|
|
52
|
-
], BaseService.prototype, "
|
|
51
|
+
(0, import_serviceDecorators.Sig)()
|
|
52
|
+
], BaseService.prototype, "baseSignal", 2);
|
|
53
53
|
__decorateClass([
|
|
54
54
|
(0, import_nest.Interval)(5e3)
|
|
55
55
|
], BaseService.prototype, "intervalPing", 1);
|
|
@@ -28,18 +28,22 @@ var serviceDecorators_exports = {};
|
|
|
28
28
|
__export(serviceDecorators_exports, {
|
|
29
29
|
Db: () => Db,
|
|
30
30
|
DbService: () => DbService,
|
|
31
|
+
Env: () => Env,
|
|
31
32
|
ExtendedSettingService: () => ExtendedSettingService,
|
|
32
33
|
ExtendedSummaryService: () => ExtendedSummaryService,
|
|
33
34
|
ExtendedUserService: () => ExtendedUserService,
|
|
35
|
+
Gen: () => Gen,
|
|
34
36
|
LogService: () => LogService,
|
|
35
37
|
MixSrvs: () => MixSrvs,
|
|
36
|
-
Queue: () => Queue,
|
|
37
38
|
Service: () => Service,
|
|
38
39
|
ServiceStorage: () => ServiceStorage,
|
|
40
|
+
Sig: () => Sig,
|
|
39
41
|
Srv: () => Srv,
|
|
40
42
|
Use: () => Use,
|
|
41
|
-
|
|
43
|
+
getServiceMeta: () => getServiceMeta,
|
|
44
|
+
getServiceRefs: () => getServiceRefs,
|
|
42
45
|
isServiceEnabled: () => isServiceEnabled,
|
|
46
|
+
makeProvidersForSrv: () => makeProvidersForSrv,
|
|
43
47
|
serviceOf: () => serviceOf
|
|
44
48
|
});
|
|
45
49
|
module.exports = __toCommonJS(serviceDecorators_exports);
|
|
@@ -56,12 +60,6 @@ const getServiceRefs = (refName) => {
|
|
|
56
60
|
const setServiceRefs = (refName, services) => {
|
|
57
61
|
Reflect.defineMetadata(refName, services, ServiceStorage.prototype);
|
|
58
62
|
};
|
|
59
|
-
const isServiceDefined = (srvRef) => {
|
|
60
|
-
return Reflect.getMetadata("service", srvRef.prototype) ?? false;
|
|
61
|
-
};
|
|
62
|
-
const setServiceDefined = (srvRef) => {
|
|
63
|
-
Reflect.defineMetadata("service", true, srvRef.prototype);
|
|
64
|
-
};
|
|
65
63
|
const setServiceMeta = (srvRef, meta) => {
|
|
66
64
|
Reflect.defineMetadata("serviceMeta", meta, srvRef.prototype);
|
|
67
65
|
};
|
|
@@ -103,17 +101,24 @@ function Use(name) {
|
|
|
103
101
|
setServiceInjectMetaMapOnPrototype(prototype, metadataMap);
|
|
104
102
|
};
|
|
105
103
|
}
|
|
106
|
-
function
|
|
104
|
+
function Env(envKey, generateFactory) {
|
|
107
105
|
return function(prototype, key) {
|
|
108
106
|
const metadataMap = getServiceInjectMetaMapOnPrototype(prototype);
|
|
109
|
-
metadataMap.set(key, { type: "
|
|
107
|
+
metadataMap.set(key, { type: "Env", key, name: envKey, generateFactory });
|
|
110
108
|
setServiceInjectMetaMapOnPrototype(prototype, metadataMap);
|
|
111
109
|
};
|
|
112
110
|
}
|
|
113
|
-
function
|
|
111
|
+
function Gen(generateFactory) {
|
|
114
112
|
return function(prototype, key) {
|
|
115
113
|
const metadataMap = getServiceInjectMetaMapOnPrototype(prototype);
|
|
116
|
-
metadataMap.set(key, { type: "
|
|
114
|
+
metadataMap.set(key, { type: "Gen", key, name: (0, import_common.capitalize)(key), generateFactory });
|
|
115
|
+
setServiceInjectMetaMapOnPrototype(prototype, metadataMap);
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function Sig(name) {
|
|
119
|
+
return function(prototype, key) {
|
|
120
|
+
const metadataMap = getServiceInjectMetaMapOnPrototype(prototype);
|
|
121
|
+
metadataMap.set(key, { type: "Sig", key, name: name ?? (0, import_common.capitalize)(key) });
|
|
117
122
|
setServiceInjectMetaMapOnPrototype(prototype, metadataMap);
|
|
118
123
|
};
|
|
119
124
|
}
|
|
@@ -124,9 +129,12 @@ function Db(name) {
|
|
|
124
129
|
setServiceInjectMetaMapOnPrototype(prototype, metadataMap);
|
|
125
130
|
};
|
|
126
131
|
}
|
|
127
|
-
const serviceOf = (
|
|
128
|
-
|
|
129
|
-
|
|
132
|
+
const serviceOf = (target) => {
|
|
133
|
+
const serviceMeta = getServiceMeta(target);
|
|
134
|
+
if (!serviceMeta)
|
|
135
|
+
throw new Error(`Service Meta of ${target.name} not found`);
|
|
136
|
+
const srvRefs = getServiceRefs(serviceMeta.name);
|
|
137
|
+
const srvRef = srvRefs.length === 1 ? srvRefs[0] : ExtSrvs(srvRefs[0], [target]);
|
|
130
138
|
const injectMetaMap = getServiceInjectMetaMapOnPrototype(srvRef.prototype);
|
|
131
139
|
for (const injectMeta of [...injectMetaMap.values()]) {
|
|
132
140
|
if (injectMeta.type === "Db")
|
|
@@ -137,15 +145,16 @@ const serviceOf = (srvRef) => {
|
|
|
137
145
|
const services = getServiceRefs(injectMeta.name);
|
|
138
146
|
if (!services.length)
|
|
139
147
|
throw new Error(`Service ${injectMeta.name} not found`);
|
|
140
|
-
(0, import_common2.Inject)(services.at(
|
|
141
|
-
} else if (injectMeta.type === "
|
|
148
|
+
(0, import_common2.Inject)(services.at(0))(srvRef.prototype, injectMeta.key);
|
|
149
|
+
} else if (injectMeta.type === "Env")
|
|
142
150
|
(0, import_common2.Inject)(injectMeta.name)(srvRef.prototype, injectMeta.key);
|
|
143
|
-
else
|
|
151
|
+
else if (injectMeta.type === "Gen")
|
|
152
|
+
(0, import_common2.Inject)(injectMeta.name)(srvRef.prototype, injectMeta.key);
|
|
153
|
+
else if (injectMeta.type === "Sig")
|
|
144
154
|
(0, import_common2.Inject)(injectMeta.name)(srvRef.prototype, injectMeta.key);
|
|
145
155
|
}
|
|
146
156
|
(0, import_mongoose.InjectConnection)()(srvRef.prototype, "connection");
|
|
147
157
|
(0, import_common2.Injectable)()(srvRef);
|
|
148
|
-
setServiceDefined(srvRef);
|
|
149
158
|
return srvRef;
|
|
150
159
|
};
|
|
151
160
|
const AVOID_MIX_SRV_KEY_SET = /* @__PURE__ */ new Set(["onModuleInit", "onModuleDestroy"]);
|
|
@@ -159,10 +168,19 @@ function MixSrvs(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t1
|
|
|
159
168
|
return [...acc, ...injectMetadataMap2];
|
|
160
169
|
}, [])
|
|
161
170
|
);
|
|
162
|
-
|
|
163
|
-
Reflect.defineMetadata("inject", injectMetadataMap, Mix.prototype);
|
|
171
|
+
setServiceInjectMetaMapOnPrototype(Mix.prototype, injectMetadataMap);
|
|
164
172
|
return Mix;
|
|
165
173
|
}
|
|
174
|
+
function ExtSrvs(baseSrv, extSrvs) {
|
|
175
|
+
const injectMetadataMap = new Map(
|
|
176
|
+
[baseSrv, ...extSrvs].reduce((acc, srvRef) => {
|
|
177
|
+
const injectMetadataMap2 = getServiceInjectMetaMapOnPrototype(srvRef.prototype);
|
|
178
|
+
return [...acc, ...injectMetadataMap2];
|
|
179
|
+
}, [])
|
|
180
|
+
);
|
|
181
|
+
setServiceInjectMetaMapOnPrototype(baseSrv.prototype, injectMetadataMap);
|
|
182
|
+
return (0, import_common.applyMixins)(baseSrv, extSrvs);
|
|
183
|
+
}
|
|
166
184
|
const LogService = (name) => {
|
|
167
185
|
class LogService2 {
|
|
168
186
|
logger = new import_common.Logger(name);
|
|
@@ -341,21 +359,48 @@ const ExtendedSummaryService = (database, srvRef, sigRef) => {
|
|
|
341
359
|
const ExtendedSettingService = (database, srvRef, sigRef) => {
|
|
342
360
|
return srvRef;
|
|
343
361
|
};
|
|
362
|
+
const makeProvidersForSrv = (srvRef) => {
|
|
363
|
+
const injectMetaMap = getServiceInjectMetaMapOnPrototype(srvRef.prototype);
|
|
364
|
+
const providers = [];
|
|
365
|
+
[...injectMetaMap.values()].forEach((injectMeta) => {
|
|
366
|
+
if (injectMeta.type === "Env") {
|
|
367
|
+
const envValue = process.env[injectMeta.name];
|
|
368
|
+
const generateFactory = injectMeta.generateFactory;
|
|
369
|
+
if (envValue === void 0)
|
|
370
|
+
throw new Error(`Environment variable ${injectMeta.name} not found`);
|
|
371
|
+
providers.push({
|
|
372
|
+
provide: injectMeta.name,
|
|
373
|
+
useFactory: (env) => generateFactory ? generateFactory(envValue, env) : envValue,
|
|
374
|
+
inject: ["GLOBAL_ENV"]
|
|
375
|
+
});
|
|
376
|
+
} else if (injectMeta.type === "Gen") {
|
|
377
|
+
const generateFactory = injectMeta.generateFactory;
|
|
378
|
+
if (!generateFactory)
|
|
379
|
+
throw new Error(`Generate factory not found for ${injectMeta.key}`);
|
|
380
|
+
providers.push({ provide: injectMeta.name, useFactory: generateFactory, inject: ["GLOBAL_ENV"] });
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
return providers;
|
|
384
|
+
};
|
|
344
385
|
// Annotate the CommonJS export names for ESM import in node:
|
|
345
386
|
0 && (module.exports = {
|
|
346
387
|
Db,
|
|
347
388
|
DbService,
|
|
389
|
+
Env,
|
|
348
390
|
ExtendedSettingService,
|
|
349
391
|
ExtendedSummaryService,
|
|
350
392
|
ExtendedUserService,
|
|
393
|
+
Gen,
|
|
351
394
|
LogService,
|
|
352
395
|
MixSrvs,
|
|
353
|
-
Queue,
|
|
354
396
|
Service,
|
|
355
397
|
ServiceStorage,
|
|
398
|
+
Sig,
|
|
356
399
|
Srv,
|
|
357
400
|
Use,
|
|
358
|
-
|
|
401
|
+
getServiceMeta,
|
|
402
|
+
getServiceRefs,
|
|
359
403
|
isServiceEnabled,
|
|
404
|
+
makeProvidersForSrv,
|
|
360
405
|
serviceOf
|
|
361
406
|
});
|
package/esm/src/base.service.js
CHANGED
|
@@ -10,12 +10,12 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
10
10
|
return result;
|
|
11
11
|
};
|
|
12
12
|
import { Interval } from "@akanjs/nest";
|
|
13
|
-
import { LogService, Service,
|
|
13
|
+
import { Gen, LogService, Service, Sig } from "./serviceDecorators";
|
|
14
14
|
let BaseService = class extends LogService("BaseService") {
|
|
15
15
|
onCleanup;
|
|
16
|
-
|
|
16
|
+
baseSignal;
|
|
17
17
|
intervalPing() {
|
|
18
|
-
this.
|
|
18
|
+
this.baseSignal.pubsubPing((/* @__PURE__ */ new Date()).toISOString());
|
|
19
19
|
}
|
|
20
20
|
async cleanup() {
|
|
21
21
|
if (!this.onCleanup)
|
|
@@ -24,11 +24,11 @@ let BaseService = class extends LogService("BaseService") {
|
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
26
|
__decorateClass([
|
|
27
|
-
|
|
27
|
+
Gen((env) => env.onCleanup)
|
|
28
28
|
], BaseService.prototype, "onCleanup", 2);
|
|
29
29
|
__decorateClass([
|
|
30
|
-
|
|
31
|
-
], BaseService.prototype, "
|
|
30
|
+
Sig()
|
|
31
|
+
], BaseService.prototype, "baseSignal", 2);
|
|
32
32
|
__decorateClass([
|
|
33
33
|
Interval(5e3)
|
|
34
34
|
], BaseService.prototype, "intervalPing", 1);
|
|
@@ -25,12 +25,6 @@ const getServiceRefs = (refName) => {
|
|
|
25
25
|
const setServiceRefs = (refName, services) => {
|
|
26
26
|
Reflect.defineMetadata(refName, services, ServiceStorage.prototype);
|
|
27
27
|
};
|
|
28
|
-
const isServiceDefined = (srvRef) => {
|
|
29
|
-
return Reflect.getMetadata("service", srvRef.prototype) ?? false;
|
|
30
|
-
};
|
|
31
|
-
const setServiceDefined = (srvRef) => {
|
|
32
|
-
Reflect.defineMetadata("service", true, srvRef.prototype);
|
|
33
|
-
};
|
|
34
28
|
const setServiceMeta = (srvRef, meta) => {
|
|
35
29
|
Reflect.defineMetadata("serviceMeta", meta, srvRef.prototype);
|
|
36
30
|
};
|
|
@@ -72,17 +66,24 @@ function Use(name) {
|
|
|
72
66
|
setServiceInjectMetaMapOnPrototype(prototype, metadataMap);
|
|
73
67
|
};
|
|
74
68
|
}
|
|
75
|
-
function
|
|
69
|
+
function Env(envKey, generateFactory) {
|
|
76
70
|
return function(prototype, key) {
|
|
77
71
|
const metadataMap = getServiceInjectMetaMapOnPrototype(prototype);
|
|
78
|
-
metadataMap.set(key, { type: "
|
|
72
|
+
metadataMap.set(key, { type: "Env", key, name: envKey, generateFactory });
|
|
79
73
|
setServiceInjectMetaMapOnPrototype(prototype, metadataMap);
|
|
80
74
|
};
|
|
81
75
|
}
|
|
82
|
-
function
|
|
76
|
+
function Gen(generateFactory) {
|
|
83
77
|
return function(prototype, key) {
|
|
84
78
|
const metadataMap = getServiceInjectMetaMapOnPrototype(prototype);
|
|
85
|
-
metadataMap.set(key, { type: "
|
|
79
|
+
metadataMap.set(key, { type: "Gen", key, name: capitalize(key), generateFactory });
|
|
80
|
+
setServiceInjectMetaMapOnPrototype(prototype, metadataMap);
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function Sig(name) {
|
|
84
|
+
return function(prototype, key) {
|
|
85
|
+
const metadataMap = getServiceInjectMetaMapOnPrototype(prototype);
|
|
86
|
+
metadataMap.set(key, { type: "Sig", key, name: name ?? capitalize(key) });
|
|
86
87
|
setServiceInjectMetaMapOnPrototype(prototype, metadataMap);
|
|
87
88
|
};
|
|
88
89
|
}
|
|
@@ -93,9 +94,12 @@ function Db(name) {
|
|
|
93
94
|
setServiceInjectMetaMapOnPrototype(prototype, metadataMap);
|
|
94
95
|
};
|
|
95
96
|
}
|
|
96
|
-
const serviceOf = (
|
|
97
|
-
|
|
98
|
-
|
|
97
|
+
const serviceOf = (target) => {
|
|
98
|
+
const serviceMeta = getServiceMeta(target);
|
|
99
|
+
if (!serviceMeta)
|
|
100
|
+
throw new Error(`Service Meta of ${target.name} not found`);
|
|
101
|
+
const srvRefs = getServiceRefs(serviceMeta.name);
|
|
102
|
+
const srvRef = srvRefs.length === 1 ? srvRefs[0] : ExtSrvs(srvRefs[0], [target]);
|
|
99
103
|
const injectMetaMap = getServiceInjectMetaMapOnPrototype(srvRef.prototype);
|
|
100
104
|
for (const injectMeta of [...injectMetaMap.values()]) {
|
|
101
105
|
if (injectMeta.type === "Db")
|
|
@@ -106,15 +110,16 @@ const serviceOf = (srvRef) => {
|
|
|
106
110
|
const services = getServiceRefs(injectMeta.name);
|
|
107
111
|
if (!services.length)
|
|
108
112
|
throw new Error(`Service ${injectMeta.name} not found`);
|
|
109
|
-
Inject(services.at(
|
|
110
|
-
} else if (injectMeta.type === "
|
|
113
|
+
Inject(services.at(0))(srvRef.prototype, injectMeta.key);
|
|
114
|
+
} else if (injectMeta.type === "Env")
|
|
111
115
|
Inject(injectMeta.name)(srvRef.prototype, injectMeta.key);
|
|
112
|
-
else
|
|
116
|
+
else if (injectMeta.type === "Gen")
|
|
117
|
+
Inject(injectMeta.name)(srvRef.prototype, injectMeta.key);
|
|
118
|
+
else if (injectMeta.type === "Sig")
|
|
113
119
|
Inject(injectMeta.name)(srvRef.prototype, injectMeta.key);
|
|
114
120
|
}
|
|
115
121
|
InjectConnection()(srvRef.prototype, "connection");
|
|
116
122
|
Injectable()(srvRef);
|
|
117
|
-
setServiceDefined(srvRef);
|
|
118
123
|
return srvRef;
|
|
119
124
|
};
|
|
120
125
|
const AVOID_MIX_SRV_KEY_SET = /* @__PURE__ */ new Set(["onModuleInit", "onModuleDestroy"]);
|
|
@@ -128,10 +133,19 @@ function MixSrvs(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t1
|
|
|
128
133
|
return [...acc, ...injectMetadataMap2];
|
|
129
134
|
}, [])
|
|
130
135
|
);
|
|
131
|
-
|
|
132
|
-
Reflect.defineMetadata("inject", injectMetadataMap, Mix.prototype);
|
|
136
|
+
setServiceInjectMetaMapOnPrototype(Mix.prototype, injectMetadataMap);
|
|
133
137
|
return Mix;
|
|
134
138
|
}
|
|
139
|
+
function ExtSrvs(baseSrv, extSrvs) {
|
|
140
|
+
const injectMetadataMap = new Map(
|
|
141
|
+
[baseSrv, ...extSrvs].reduce((acc, srvRef) => {
|
|
142
|
+
const injectMetadataMap2 = getServiceInjectMetaMapOnPrototype(srvRef.prototype);
|
|
143
|
+
return [...acc, ...injectMetadataMap2];
|
|
144
|
+
}, [])
|
|
145
|
+
);
|
|
146
|
+
setServiceInjectMetaMapOnPrototype(baseSrv.prototype, injectMetadataMap);
|
|
147
|
+
return applyMixins(baseSrv, extSrvs);
|
|
148
|
+
}
|
|
135
149
|
const LogService = (name) => {
|
|
136
150
|
class LogService2 {
|
|
137
151
|
logger = new Logger(name);
|
|
@@ -310,20 +324,47 @@ const ExtendedSummaryService = (database, srvRef, sigRef) => {
|
|
|
310
324
|
const ExtendedSettingService = (database, srvRef, sigRef) => {
|
|
311
325
|
return srvRef;
|
|
312
326
|
};
|
|
327
|
+
const makeProvidersForSrv = (srvRef) => {
|
|
328
|
+
const injectMetaMap = getServiceInjectMetaMapOnPrototype(srvRef.prototype);
|
|
329
|
+
const providers = [];
|
|
330
|
+
[...injectMetaMap.values()].forEach((injectMeta) => {
|
|
331
|
+
if (injectMeta.type === "Env") {
|
|
332
|
+
const envValue = process.env[injectMeta.name];
|
|
333
|
+
const generateFactory = injectMeta.generateFactory;
|
|
334
|
+
if (envValue === void 0)
|
|
335
|
+
throw new Error(`Environment variable ${injectMeta.name} not found`);
|
|
336
|
+
providers.push({
|
|
337
|
+
provide: injectMeta.name,
|
|
338
|
+
useFactory: (env) => generateFactory ? generateFactory(envValue, env) : envValue,
|
|
339
|
+
inject: ["GLOBAL_ENV"]
|
|
340
|
+
});
|
|
341
|
+
} else if (injectMeta.type === "Gen") {
|
|
342
|
+
const generateFactory = injectMeta.generateFactory;
|
|
343
|
+
if (!generateFactory)
|
|
344
|
+
throw new Error(`Generate factory not found for ${injectMeta.key}`);
|
|
345
|
+
providers.push({ provide: injectMeta.name, useFactory: generateFactory, inject: ["GLOBAL_ENV"] });
|
|
346
|
+
}
|
|
347
|
+
});
|
|
348
|
+
return providers;
|
|
349
|
+
};
|
|
313
350
|
export {
|
|
314
351
|
Db,
|
|
315
352
|
DbService,
|
|
353
|
+
Env,
|
|
316
354
|
ExtendedSettingService,
|
|
317
355
|
ExtendedSummaryService,
|
|
318
356
|
ExtendedUserService,
|
|
357
|
+
Gen,
|
|
319
358
|
LogService,
|
|
320
359
|
MixSrvs,
|
|
321
|
-
Queue,
|
|
322
360
|
Service,
|
|
323
361
|
ServiceStorage,
|
|
362
|
+
Sig,
|
|
324
363
|
Srv,
|
|
325
364
|
Use,
|
|
326
|
-
|
|
365
|
+
getServiceMeta,
|
|
366
|
+
getServiceRefs,
|
|
327
367
|
isServiceEnabled,
|
|
368
|
+
makeProvidersForSrv,
|
|
328
369
|
serviceOf
|
|
329
370
|
};
|
package/package.json
CHANGED
package/src/base.service.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { BaseSignal } from "@akanjs/signal";
|
|
2
|
-
import { type GetServices,
|
|
2
|
+
import { type GetServices, Sig } from "./serviceDecorators";
|
|
3
3
|
declare const BaseService_base: {
|
|
4
4
|
new (): {
|
|
5
5
|
logger: import("@akanjs/common").Logger;
|
|
6
6
|
};
|
|
7
7
|
};
|
|
8
8
|
export declare class BaseService extends BaseService_base {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
onCleanup?: () => Promise<void>;
|
|
10
|
+
baseSignal: Sig<BaseSignal>;
|
|
11
11
|
intervalPing(): void;
|
|
12
12
|
cleanup(): Promise<void>;
|
|
13
13
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
|
-
import { BaseObject,
|
|
2
|
+
import { BaseObject, type Prettify, Type } from "@akanjs/base";
|
|
3
3
|
import { Logger } from "@akanjs/common";
|
|
4
4
|
import { type DocumentModel, type FilterType, FindQueryOption, type GetActionObject, ListQueryOption, QueryOf, type SortOf } from "@akanjs/constant";
|
|
5
5
|
import type { BaseMiddleware, Database, DatabaseModel, DataInputOf } from "@akanjs/document";
|
|
6
6
|
import { FilterOutInternalArgs } from "@akanjs/signal";
|
|
7
|
+
import { type Provider } from "@nestjs/common";
|
|
7
8
|
import type { Job, Queue as BullQueue } from "bull";
|
|
8
9
|
import type { HydratedDocument } from "mongoose";
|
|
9
10
|
import type { Server } from "socket.io";
|
|
@@ -14,11 +15,18 @@ export type GetServices<AllSrvs extends {
|
|
|
14
15
|
};
|
|
15
16
|
export declare class ServiceStorage {
|
|
16
17
|
}
|
|
18
|
+
interface ServiceMeta {
|
|
19
|
+
name: string;
|
|
20
|
+
enabled: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare const getServiceRefs: (refName: string) => Type[];
|
|
23
|
+
export declare const getServiceMeta: (srvRef: Type) => ServiceMeta | undefined;
|
|
17
24
|
export declare const isServiceEnabled: (srvRef: Type) => boolean;
|
|
18
25
|
export interface ServiceInjectMeta {
|
|
19
|
-
type: "Db" | "Srv" | "Use" | "
|
|
26
|
+
type: "Db" | "Srv" | "Use" | "Env" | "Gen" | "Sig" | (string & {});
|
|
20
27
|
name: string;
|
|
21
28
|
key: string;
|
|
29
|
+
generateFactory?: (...args: any[]) => any;
|
|
22
30
|
}
|
|
23
31
|
interface ServiceOptions {
|
|
24
32
|
enabled?: boolean;
|
|
@@ -27,14 +35,16 @@ interface ServiceOptions {
|
|
|
27
35
|
export declare function Service(name: string, { enabled, serverMode }?: ServiceOptions): (target: Type) => Type;
|
|
28
36
|
export declare function Srv(name?: string): PropertyDecorator;
|
|
29
37
|
export declare function Use(name?: string): PropertyDecorator;
|
|
30
|
-
export declare function
|
|
31
|
-
export
|
|
38
|
+
export declare function Env(envKey: string, generateFactory?: (envValue: string, options: any) => any): PropertyDecorator;
|
|
39
|
+
export declare function Gen(generateFactory: (options: any) => any): PropertyDecorator;
|
|
40
|
+
type Queue<Signal> = {
|
|
32
41
|
[K in keyof Signal as K extends string ? Signal[K] extends (...args: any) => Promise<{
|
|
33
42
|
__Returns__: "Done";
|
|
34
43
|
}> ? K : never : never]: Signal[K] extends (...args: infer Args) => Promise<infer R> ? (...args: FilterOutInternalArgs<Args>) => Promise<Job> : never;
|
|
35
|
-
} &
|
|
36
|
-
|
|
37
|
-
|
|
44
|
+
} & {
|
|
45
|
+
queue: BullQueue;
|
|
46
|
+
};
|
|
47
|
+
type Websocket<Signal> = {
|
|
38
48
|
[K in keyof Signal as K extends string ? Signal[K] extends (...args: any) => Promise<{
|
|
39
49
|
__Returns__: "Subscribe";
|
|
40
50
|
}> ? K : Signal[K] extends (...args: any) => {
|
|
@@ -45,10 +55,12 @@ export type Websocket<Signal> = {
|
|
|
45
55
|
__Returns__: "Subscribe";
|
|
46
56
|
} & infer R ? (...args: [...FilterOutInternalArgs<Args>, data: DocumentModel<R>]) => void : never;
|
|
47
57
|
} & {
|
|
48
|
-
|
|
58
|
+
websocket: Server;
|
|
49
59
|
};
|
|
60
|
+
export declare function Sig(name?: string): PropertyDecorator;
|
|
61
|
+
export type Sig<Signal> = Queue<Signal> & Websocket<Signal>;
|
|
50
62
|
export declare function Db(name: string): PropertyDecorator;
|
|
51
|
-
export declare const serviceOf: (
|
|
63
|
+
export declare const serviceOf: (target: Type) => Type;
|
|
52
64
|
export declare function MixSrvs<T1 = unknown, T2 = unknown, T3 = unknown, T4 = unknown, T5 = unknown, T6 = unknown, T7 = unknown, T8 = unknown, T9 = unknown, T10 = unknown, T11 = unknown, T12 = unknown, T13 = unknown, T14 = unknown, T15 = unknown, T16 = unknown, T17 = unknown, T18 = unknown, T19 = unknown, T20 = unknown>(t1: Type<T1>, t2?: Type<T2>, t3?: Type<T3>, t4?: Type<T4>, t5?: Type<T5>, t6?: Type<T6>, t7?: Type<T7>, t8?: Type<T8>, t9?: Type<T9>, t10?: Type<T10>, t11?: Type<T11>, t12?: Type<T12>, t13?: Type<T13>, t14?: Type<T14>, t15?: Type<T15>, t16?: Type<T16>, t17?: Type<T17>, t18?: Type<T18>, t19?: Type<T19>, t20?: Type<T20>): Type<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11 & T12 & T13 & T14 & T15 & T16 & T17 & T18 & T19 & T20>;
|
|
53
65
|
export declare const LogService: <T extends string>(name: T) => {
|
|
54
66
|
new (): {
|
|
@@ -128,45 +140,14 @@ type DatabaseServiceWithQuerySort<T extends string, Input, Doc, Obj, Model, Insi
|
|
|
128
140
|
[K in keyof Query as K extends string ? `insight${Capitalize<K>}` : never]: Query[K] extends (...args: infer Args) => any ? (...args: [...Args]) => Promise<Insight> : never;
|
|
129
141
|
}>;
|
|
130
142
|
export declare const DbService: <T extends string, Input, Doc extends HydratedDocument<any>, Model extends DatabaseModel<T, Input, Doc, Obj, Insight, Filter, Summary>, Middleware extends BaseMiddleware, Obj, Insight, Filter extends FilterType, Summary, Signal = unknown>(database: Database<T, Input, Doc, Model, Middleware, Obj, Insight, Filter, Summary>, sigRef?: Type<Signal>) => Type<DatabaseService<T, Input, Doc, Obj, Model, Insight, Filter, Summary>>;
|
|
131
|
-
export declare const ExtendedUserService: <T extends string, Input, Doc extends HydratedDocument<any>, Model extends DatabaseModel<T, Input, Doc, Obj, Insight, Filter, Summary>, Middleware extends BaseMiddleware, Obj, Insight, Filter extends FilterType, Summary, Srv, Signal = unknown>(database: Database<T, Input, Doc, Model, Middleware, Obj, Insight, Filter, Summary>, srvRef: Type<Srv>, sigRef?: Type<Signal>) => Type<DatabaseService<T, Input, Doc, BaseObject & {
|
|
132
|
-
nickname: string;
|
|
133
|
-
}, Model, Insight, Filter, Summary> & {
|
|
143
|
+
export declare const ExtendedUserService: <T extends string, Input, Doc extends HydratedDocument<any>, Model extends DatabaseModel<T, Input, Doc, Obj, Insight, Filter, Summary>, Middleware extends BaseMiddleware, Obj, Insight, Filter extends FilterType, Summary, Srv, Signal = unknown>(database: Database<T, Input, Doc, Model, Middleware, Obj, Insight, Filter, Summary>, srvRef: Type<Srv>, sigRef?: Type<Signal>) => Type<DatabaseService<T, Input, Doc, BaseObject, Model, Insight, Filter, Summary> & {
|
|
134
144
|
queue: QueueService<Signal>;
|
|
135
|
-
} & { [K in keyof Srv]: Srv[K] extends (...args: infer Args) => Promise<BaseObject
|
|
136
|
-
nickname: string;
|
|
137
|
-
}> ? (...args: Args) => Promise<Doc> : Srv[K] extends (...args: infer Args) => Promise<(BaseObject & {
|
|
138
|
-
nickname: string;
|
|
139
|
-
})[]> ? (...args: Args) => Promise<Doc[]> : Srv[K] extends BaseObject & {
|
|
140
|
-
nickname: string;
|
|
141
|
-
} ? Doc : Srv[K] extends (BaseObject & {
|
|
142
|
-
nickname: string;
|
|
143
|
-
})[] ? Doc[] : Srv[K]; }>;
|
|
145
|
+
} & { [K in keyof Srv]: Srv[K] extends (...args: infer Args) => Promise<BaseObject> ? (...args: Args) => Promise<Doc> : Srv[K] extends (...args: infer Args) => Promise<BaseObject[]> ? (...args: Args) => Promise<Doc[]> : Srv[K] extends BaseObject ? Doc : Srv[K] extends BaseObject[] ? Doc[] : Srv[K]; }>;
|
|
144
146
|
export declare const ExtendedSummaryService: <T extends string, Input, Doc extends HydratedDocument<any>, Model, Middleware extends BaseMiddleware, Obj, Insight, Filter extends FilterType, Summary, Srv, Signal = unknown>(database: Database<T, Input, Doc, Model, Middleware, Obj, Insight, Filter, Summary>, srvRef: Type<Srv>, sigRef?: Type<Signal>) => Type<Omit<DatabaseService<T, Input, Doc, Obj, Model, Insight, Filter, Summary> & {
|
|
145
147
|
queue: QueueService<Signal>;
|
|
146
|
-
} & { [K in keyof Srv]: Srv[K] extends (...args: infer Args) => Promise<BaseObject
|
|
147
|
-
|
|
148
|
-
at: Dayjs;
|
|
149
|
-
}> ? (...args: Args) => Promise<Doc> : Srv[K] extends (...args: infer Args) => Promise<(BaseObject & {
|
|
150
|
-
type: string;
|
|
151
|
-
at: Dayjs;
|
|
152
|
-
})[]> ? (...args: Args) => Promise<Doc[]> : Srv[K] extends BaseObject & {
|
|
153
|
-
type: string;
|
|
154
|
-
at: Dayjs;
|
|
155
|
-
} ? Doc : Srv[K] extends (BaseObject & {
|
|
156
|
-
type: string;
|
|
157
|
-
at: Dayjs;
|
|
158
|
-
})[] ? Doc[] : Srv[K]; }, "userService">>;
|
|
159
|
-
export declare const ExtendedSettingService: <T extends string, Input, Doc extends HydratedDocument<any>, Model extends DatabaseModel<T, Input, Doc, Obj, Insight, Filter, Summary>, Middleware extends BaseMiddleware, Obj, Insight, Filter extends FilterType, Summary, Srv, Signal = unknown>(database: Database<T, Input, Doc, Model, Middleware, Obj, Insight, Filter, Summary>, srvRef: Type<Srv>, sigRef?: Type<Signal>) => Type<DatabaseService<T, Input, Doc, BaseObject & {
|
|
160
|
-
resignupDays: number;
|
|
161
|
-
}, Model, Insight, Filter, Summary> & {
|
|
148
|
+
} & { [K in keyof Srv]: Srv[K] extends (...args: infer Args) => Promise<BaseObject> ? (...args: Args) => Promise<Doc> : Srv[K] extends (...args: infer Args) => Promise<BaseObject[]> ? (...args: Args) => Promise<Doc[]> : Srv[K] extends BaseObject ? Doc : Srv[K] extends BaseObject[] ? Doc[] : Srv[K]; }, "userService">>;
|
|
149
|
+
export declare const ExtendedSettingService: <T extends string, Input, Doc extends HydratedDocument<any>, Model extends DatabaseModel<T, Input, Doc, Obj, Insight, Filter, Summary>, Middleware extends BaseMiddleware, Obj, Insight, Filter extends FilterType, Summary, Srv, Signal = unknown>(database: Database<T, Input, Doc, Model, Middleware, Obj, Insight, Filter, Summary>, srvRef: Type<Srv>, sigRef?: Type<Signal>) => Type<DatabaseService<T, Input, Doc, BaseObject, Model, Insight, Filter, Summary> & {
|
|
162
150
|
queue: QueueService<Signal>;
|
|
163
|
-
} & { [K in keyof Srv]: Srv[K] extends (...args: infer Args) => Promise<BaseObject
|
|
164
|
-
|
|
165
|
-
}> ? (...args: Args) => Promise<Doc> : Srv[K] extends (...args: infer Args) => Promise<(BaseObject & {
|
|
166
|
-
resignupDays: number;
|
|
167
|
-
})[]> ? (...args: Args) => Promise<Doc[]> : Srv[K] extends BaseObject & {
|
|
168
|
-
resignupDays: number;
|
|
169
|
-
} ? Doc : Srv[K] extends (BaseObject & {
|
|
170
|
-
resignupDays: number;
|
|
171
|
-
})[] ? Doc[] : Srv[K]; }>;
|
|
151
|
+
} & { [K in keyof Srv]: Srv[K] extends (...args: infer Args) => Promise<BaseObject> ? (...args: Args) => Promise<Doc> : Srv[K] extends (...args: infer Args) => Promise<BaseObject[]> ? (...args: Args) => Promise<Doc[]> : Srv[K] extends BaseObject ? Doc : Srv[K] extends BaseObject[] ? Doc[] : Srv[K]; }>;
|
|
152
|
+
export declare const makeProvidersForSrv: (srvRef: Type) => Provider[];
|
|
172
153
|
export {};
|