@akanjs/service 0.9.42 → 0.9.43

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.
@@ -30,14 +30,10 @@ __export(base_service_exports, {
30
30
  allSrvs: () => allSrvs
31
31
  });
32
32
  module.exports = __toCommonJS(base_service_exports);
33
- var import_nest = require("@akanjs/nest");
34
33
  var import_serviceDecorators = require("./serviceDecorators");
35
34
  let BaseService = class extends (0, import_serviceDecorators.LogService)("BaseService") {
36
35
  onCleanup;
37
36
  baseSignal;
38
- intervalPing() {
39
- this.baseSignal.pubsubPing((/* @__PURE__ */ new Date()).toISOString());
40
- }
41
37
  async cleanup() {
42
38
  if (!this.onCleanup)
43
39
  throw new Error("onCleanup is not defined");
@@ -50,9 +46,6 @@ __decorateClass([
50
46
  __decorateClass([
51
47
  (0, import_serviceDecorators.Sig)()
52
48
  ], BaseService.prototype, "baseSignal", 2);
53
- __decorateClass([
54
- (0, import_nest.Interval)(5e3)
55
- ], BaseService.prototype, "intervalPing", 1);
56
49
  BaseService = __decorateClass([
57
50
  (0, import_serviceDecorators.Service)("BaseService")
58
51
  ], BaseService);
@@ -40,6 +40,7 @@ __export(serviceDecorators_exports, {
40
40
  Sig: () => Sig,
41
41
  Srv: () => Srv,
42
42
  Use: () => Use,
43
+ getAllServiceRefs: () => getAllServiceRefs,
43
44
  getServiceMeta: () => getServiceMeta,
44
45
  getServiceRefs: () => getServiceRefs,
45
46
  isServiceEnabled: () => isServiceEnabled,
@@ -57,6 +58,10 @@ class ServiceStorage {
57
58
  const getServiceRefs = (refName) => {
58
59
  return Reflect.getMetadata(refName, ServiceStorage.prototype) ?? [];
59
60
  };
61
+ const getAllServiceRefs = () => {
62
+ const keys = Reflect.getMetadataKeys(ServiceStorage.prototype);
63
+ return keys.map((key) => getServiceRefs(key)[0]);
64
+ };
60
65
  const setServiceRefs = (refName, services) => {
61
66
  Reflect.defineMetadata(refName, services, ServiceStorage.prototype);
62
67
  };
@@ -157,14 +162,16 @@ const serviceOf = (target) => {
157
162
  (0, import_common2.Injectable)()(srvRef);
158
163
  return srvRef;
159
164
  };
160
- const AVOID_MIX_SRV_KEY_SET = /* @__PURE__ */ new Set(["onModuleInit", "onModuleDestroy"]);
161
- function MixSrvs(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20) {
162
- class Mix extends t1 {
165
+ function MixSrvs(...services) {
166
+ if (services.length === 0)
167
+ throw new Error("MixSrvs requires at least one service");
168
+ const [baseService, ...restServices] = services;
169
+ class Mix extends baseService {
163
170
  }
164
171
  const injectMetadataMap = new Map(
165
- [t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20].filter((t) => !!t).reduce((acc, srvRef) => {
172
+ restServices.reduce((acc, srvRef) => {
166
173
  const injectMetadataMap2 = getServiceInjectMetaMapOnPrototype(srvRef);
167
- (0, import_common.applyMixins)(Mix, [srvRef], AVOID_MIX_SRV_KEY_SET);
174
+ (0, import_common.applyMixins)(Mix, [srvRef]);
168
175
  return [...acc, ...injectMetadataMap2];
169
176
  }, [])
170
177
  );
@@ -246,6 +253,15 @@ const DbService = (database, sigRef) => {
246
253
  async _postRemove(doc) {
247
254
  return doc;
248
255
  }
256
+ async _preSummarize() {
257
+ return {};
258
+ }
259
+ async summarize() {
260
+ if (!database.Summary)
261
+ return {};
262
+ const [dbSummary, serviceSummary] = await Promise.all([this.__databaseModel.getSummary(), this._preSummarize()]);
263
+ return { ...dbSummary, ...serviceSummary };
264
+ }
249
265
  async [`get${className}`](id) {
250
266
  return await this.__databaseModel[`get${className}`](id);
251
267
  }
@@ -398,6 +414,7 @@ const makeProvidersForSrv = (srvRef) => {
398
414
  Sig,
399
415
  Srv,
400
416
  Use,
417
+ getAllServiceRefs,
401
418
  getServiceMeta,
402
419
  getServiceRefs,
403
420
  isServiceEnabled,
@@ -9,14 +9,10 @@ var __decorateClass = (decorators, target, key, kind) => {
9
9
  __defProp(target, key, result);
10
10
  return result;
11
11
  };
12
- import { Interval } from "@akanjs/nest";
13
12
  import { Gen, LogService, Service, Sig } from "./serviceDecorators";
14
13
  let BaseService = class extends LogService("BaseService") {
15
14
  onCleanup;
16
15
  baseSignal;
17
- intervalPing() {
18
- this.baseSignal.pubsubPing((/* @__PURE__ */ new Date()).toISOString());
19
- }
20
16
  async cleanup() {
21
17
  if (!this.onCleanup)
22
18
  throw new Error("onCleanup is not defined");
@@ -29,9 +25,6 @@ __decorateClass([
29
25
  __decorateClass([
30
26
  Sig()
31
27
  ], BaseService.prototype, "baseSignal", 2);
32
- __decorateClass([
33
- Interval(5e3)
34
- ], BaseService.prototype, "intervalPing", 1);
35
28
  BaseService = __decorateClass([
36
29
  Service("BaseService")
37
30
  ], BaseService);
@@ -22,6 +22,10 @@ class ServiceStorage {
22
22
  const getServiceRefs = (refName) => {
23
23
  return Reflect.getMetadata(refName, ServiceStorage.prototype) ?? [];
24
24
  };
25
+ const getAllServiceRefs = () => {
26
+ const keys = Reflect.getMetadataKeys(ServiceStorage.prototype);
27
+ return keys.map((key) => getServiceRefs(key)[0]);
28
+ };
25
29
  const setServiceRefs = (refName, services) => {
26
30
  Reflect.defineMetadata(refName, services, ServiceStorage.prototype);
27
31
  };
@@ -122,14 +126,16 @@ const serviceOf = (target) => {
122
126
  Injectable()(srvRef);
123
127
  return srvRef;
124
128
  };
125
- const AVOID_MIX_SRV_KEY_SET = /* @__PURE__ */ new Set(["onModuleInit", "onModuleDestroy"]);
126
- function MixSrvs(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20) {
127
- class Mix extends t1 {
129
+ function MixSrvs(...services) {
130
+ if (services.length === 0)
131
+ throw new Error("MixSrvs requires at least one service");
132
+ const [baseService, ...restServices] = services;
133
+ class Mix extends baseService {
128
134
  }
129
135
  const injectMetadataMap = new Map(
130
- [t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20].filter((t) => !!t).reduce((acc, srvRef) => {
136
+ restServices.reduce((acc, srvRef) => {
131
137
  const injectMetadataMap2 = getServiceInjectMetaMapOnPrototype(srvRef);
132
- applyMixins(Mix, [srvRef], AVOID_MIX_SRV_KEY_SET);
138
+ applyMixins(Mix, [srvRef]);
133
139
  return [...acc, ...injectMetadataMap2];
134
140
  }, [])
135
141
  );
@@ -211,6 +217,15 @@ const DbService = (database, sigRef) => {
211
217
  async _postRemove(doc) {
212
218
  return doc;
213
219
  }
220
+ async _preSummarize() {
221
+ return {};
222
+ }
223
+ async summarize() {
224
+ if (!database.Summary)
225
+ return {};
226
+ const [dbSummary, serviceSummary] = await Promise.all([this.__databaseModel.getSummary(), this._preSummarize()]);
227
+ return { ...dbSummary, ...serviceSummary };
228
+ }
214
229
  async [`get${className}`](id) {
215
230
  return await this.__databaseModel[`get${className}`](id);
216
231
  }
@@ -362,6 +377,7 @@ export {
362
377
  Sig,
363
378
  Srv,
364
379
  Use,
380
+ getAllServiceRefs,
365
381
  getServiceMeta,
366
382
  getServiceRefs,
367
383
  isServiceEnabled,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akanjs/service",
3
- "version": "0.9.42",
3
+ "version": "0.9.43",
4
4
  "sourceType": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -8,7 +8,6 @@ declare const BaseService_base: {
8
8
  export declare class BaseService extends BaseService_base {
9
9
  onCleanup?: () => Promise<void>;
10
10
  baseSignal: Sig<BaseSignal>;
11
- intervalPing(): void;
12
11
  cleanup(): Promise<void>;
13
12
  }
14
13
  export declare const allSrvs: {
@@ -1,8 +1,8 @@
1
1
  import "reflect-metadata";
2
- import { BaseObject, type Prettify, Type } from "@akanjs/base";
2
+ import { BaseObject, type MergeAllTypes, type Prettify, type PromiseOrObject, Type, type UnType } 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
- import type { BaseMiddleware, Database, DatabaseModel, DataInputOf } from "@akanjs/document";
5
+ import type { BaseMiddleware, Database, DatabaseModel, DataInputOf, QueryMethodPart } from "@akanjs/document";
6
6
  import { FilterOutInternalArgs } from "@akanjs/signal";
7
7
  import { type Provider } from "@nestjs/common";
8
8
  import type { Job, Queue as BullQueue } from "bull";
@@ -11,7 +11,7 @@ import type { Server } from "socket.io";
11
11
  export type GetServices<AllSrvs extends {
12
12
  [key: string]: Type | undefined;
13
13
  }> = {
14
- [key in keyof AllSrvs]: AllSrvs[key] extends Type<infer Srv> | undefined ? Srv : AllSrvs[key] extends Type<infer Srv> ? Srv : never;
14
+ [K in keyof AllSrvs]: UnType<NonNullable<AllSrvs[K]>>;
15
15
  };
16
16
  export declare class ServiceStorage {
17
17
  }
@@ -20,6 +20,7 @@ interface ServiceMeta {
20
20
  enabled: boolean;
21
21
  }
22
22
  export declare const getServiceRefs: (refName: string) => Type[];
23
+ export declare const getAllServiceRefs: () => Type[];
23
24
  export declare const getServiceMeta: (srvRef: Type) => ServiceMeta | undefined;
24
25
  export declare const isServiceEnabled: (srvRef: Type) => boolean;
25
26
  export interface ServiceInjectMeta {
@@ -37,117 +38,84 @@ export declare function Srv(name?: string): PropertyDecorator;
37
38
  export declare function Use(name?: string): PropertyDecorator;
38
39
  export declare function Env(envKey: string, generateFactory?: (envValue: string, options: any) => any): PropertyDecorator;
39
40
  export declare function Gen(generateFactory: (options: any) => any): PropertyDecorator;
40
- type Queue<Signal> = {
41
- [K in keyof Signal as K extends string ? Signal[K] extends (...args: any) => Promise<{
42
- __Returns__: "Done";
43
- }> ? K : never : never]: Signal[K] extends (...args: infer Args) => Promise<infer R> ? (...args: FilterOutInternalArgs<Args>) => Promise<Job> : never;
44
- } & {
45
- queue: BullQueue;
41
+ export declare function Sig(name?: string): PropertyDecorator;
42
+ type ServiceSignalReturnType = {
43
+ __Returns__: "Done";
44
+ } | {
45
+ __Returns__: "Subscribe";
46
46
  };
47
- type Websocket<Signal> = {
48
- [K in keyof Signal as K extends string ? Signal[K] extends (...args: any) => Promise<{
49
- __Returns__: "Subscribe";
50
- }> ? K : Signal[K] extends (...args: any) => {
51
- __Returns__: "Subscribe";
52
- } ? K : never : never]: Signal[K] extends (...args: infer Args) => Promise<{
53
- __Returns__: "Subscribe";
54
- } & infer R> ? (...args: [...FilterOutInternalArgs<Args>, data: DocumentModel<R>]) => Promise<void> : Signal[K] extends (...args: infer Args) => {
47
+ export type Sig<Signal> = {
48
+ [K in keyof Signal as Signal[K] extends (...args: any) => PromiseOrObject<ServiceSignalReturnType> ? K : never]: Signal[K] extends (...args: infer Args) => PromiseOrObject<{
49
+ __Returns__: "Done";
50
+ }> ? (...args: FilterOutInternalArgs<Args>) => Promise<Job> : Signal[K] extends (...args: infer Args) => PromiseOrObject<{
55
51
  __Returns__: "Subscribe";
56
- } & infer R ? (...args: [...FilterOutInternalArgs<Args>, data: DocumentModel<R>]) => void : never;
52
+ } & infer Return> ? (...args: [...FilterOutInternalArgs<Args>, data: DocumentModel<Return>]) => void : never;
57
53
  } & {
54
+ queue: BullQueue;
58
55
  websocket: Server;
59
56
  };
60
- export declare function Sig(name?: string): PropertyDecorator;
61
- export type Sig<Signal> = Queue<Signal> & Websocket<Signal>;
62
57
  export declare function Db(name: string): PropertyDecorator;
63
58
  export declare const serviceOf: (target: Type) => Type;
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>;
59
+ export declare function MixSrvs<T extends Type[]>(...services: [...T]): Type<MergeAllTypes<T>>;
65
60
  export declare const LogService: <T extends string>(name: T) => {
66
61
  new (): {
67
62
  logger: Logger;
68
63
  };
69
64
  };
70
- type QueueService<Signal> = {
71
- [K in keyof Signal as K extends string ? Signal[K] extends (...args: any) => Promise<{
72
- __Returns__: "Done";
73
- }> ? K : never : never]: Signal[K] extends (...args: infer Args) => Promise<infer R> ? (...args: FilterOutInternalArgs<Args>) => Promise<Job> : never;
74
- };
75
- type DatabaseService<T extends string, Input, Doc, Obj, Model, Insight, Filter, Summary> = DatabaseServiceWithQuerySort<T, Input, Doc, Obj, Model, Insight, GetActionObject<Filter>, SortOf<Filter>>;
76
- type DatabaseServiceWithQuerySort<T extends string, Input, Doc, Obj, Model, Insight, Query, Sort> = {
65
+ type DatabaseService<T extends string, Input, Doc, Obj, Model, Insight, Filter, Summary> = DatabaseServiceWithQuerySort<T, Input, Doc, Obj, Model, Insight, Summary, GetActionObject<Filter>, SortOf<Filter>>;
66
+ type DatabaseServiceWithQuerySort<T extends string, Input, Doc, Obj, Model, Insight, Summary, Query, Sort, _CapitalizedT extends Capitalize<T> = Capitalize<T>, _DataInputOfDoc extends DataInputOf<Input, Doc> = DataInputOf<Input, Doc>, _QueryOfDoc extends QueryOf<Doc> = QueryOf<Doc>, _FindQueryOption extends FindQueryOption<Sort, Obj> = FindQueryOption<Sort, Obj>, _ListQueryOption extends ListQueryOption<Sort, Obj> = ListQueryOption<Sort, Obj>> = {
77
67
  logger: Logger;
78
68
  __databaseModel: Model;
79
- __list(query?: QueryOf<Doc>, queryOption?: ListQueryOption<Sort, Obj>): Promise<Doc[]>;
80
- __listIds(query?: QueryOf<Doc>, queryOption?: ListQueryOption<Sort, Obj>): Promise<string[]>;
81
- __find(query?: QueryOf<Doc>, queryOption?: FindQueryOption<Sort, Obj>): Promise<Doc | null>;
82
- __findId(query?: QueryOf<Doc>, queryOption?: FindQueryOption<Sort, Obj>): Promise<string | null>;
83
- __pick(query?: QueryOf<Doc>, queryOption?: FindQueryOption<Sort, Obj>): Promise<Doc>;
84
- __pickId(query?: QueryOf<Doc>, queryOption?: FindQueryOption<Sort, Obj>): Promise<string>;
85
- __exists(query?: QueryOf<Doc>): Promise<string | null>;
86
- __count(query?: QueryOf<Doc>): Promise<number>;
87
- __insight(query?: QueryOf<Doc>): Promise<Insight>;
88
- __search(query: QueryOf<Doc>, queryOption?: ListQueryOption<Sort, Obj>): Promise<{
69
+ __list(query?: _QueryOfDoc, queryOption?: _ListQueryOption): Promise<Doc[]>;
70
+ __listIds(query?: _QueryOfDoc, queryOption?: _ListQueryOption): Promise<string[]>;
71
+ __find(query?: _QueryOfDoc, queryOption?: _FindQueryOption): Promise<Doc | null>;
72
+ __findId(query?: _QueryOfDoc, queryOption?: _FindQueryOption): Promise<string | null>;
73
+ __pick(query?: _QueryOfDoc, queryOption?: _FindQueryOption): Promise<Doc>;
74
+ __pickId(query?: _QueryOfDoc, queryOption?: _FindQueryOption): Promise<string>;
75
+ __exists(query?: _QueryOfDoc): Promise<string | null>;
76
+ __count(query?: _QueryOfDoc): Promise<number>;
77
+ __insight(query?: _QueryOfDoc): Promise<Insight>;
78
+ __search(query: _QueryOfDoc, queryOption?: _ListQueryOption): Promise<{
89
79
  docs: Doc[];
90
80
  count: number;
91
81
  }>;
92
- __searchDocs(query: QueryOf<Doc>, queryOption?: ListQueryOption<Sort, Obj>): Promise<Doc[]>;
93
- __searchCount(query: QueryOf<Doc>): Promise<number>;
94
- _preCreate(data: DataInputOf<Input, Doc>): Promise<DataInputOf<Input, Doc>> | DataInputOf<Input, Doc>;
82
+ __searchDocs(query: _QueryOfDoc, queryOption?: _ListQueryOption): Promise<Doc[]>;
83
+ __searchCount(query: _QueryOfDoc): Promise<number>;
84
+ _preCreate(data: _DataInputOfDoc): PromiseOrObject<_DataInputOfDoc>;
95
85
  _postCreate(doc: Doc): Promise<Doc> | Doc;
96
- _preUpdate(id: string, data: Partial<Doc>): Promise<Partial<Doc>> | Partial<Doc>;
86
+ _preUpdate(id: string, data: Partial<Doc>): PromiseOrObject<Partial<Doc>>;
97
87
  _postUpdate(doc: Doc): Promise<Doc> | Doc;
98
88
  _preRemove(id: string): Promise<void> | void;
99
89
  _postRemove(doc: Doc): Promise<Doc> | Doc;
90
+ _preSummarize(): PromiseOrObject<Partial<Summary>>;
91
+ summarize(): Promise<Summary>;
100
92
  } & Prettify<{
101
93
  [key in `${T}Model`]: Model;
102
94
  } & {
103
- [K in `get${Capitalize<T>}`]: (id: string) => Promise<Doc>;
95
+ [K in `get${_CapitalizedT}`]: (id: string) => Promise<Doc>;
104
96
  } & {
105
- [K in `load${Capitalize<T>}`]: (id?: string) => Promise<Doc | null>;
97
+ [K in `load${_CapitalizedT}`]: (id?: string) => Promise<Doc | null>;
106
98
  } & {
107
- [K in `load${Capitalize<T>}Many`]: (ids: string[]) => Promise<Doc[]>;
99
+ [K in `load${_CapitalizedT}Many`]: (ids: string[]) => Promise<Doc[]>;
108
100
  } & {
109
- [K in `create${Capitalize<T>}`]: (data: DataInputOf<Input, Doc>) => Promise<Doc>;
101
+ [K in `create${_CapitalizedT}`]: (data: _DataInputOfDoc) => Promise<Doc>;
110
102
  } & {
111
- [K in `update${Capitalize<T>}`]: (id: string, data: Partial<Doc>) => Promise<Doc>;
103
+ [K in `update${_CapitalizedT}`]: (id: string, data: Partial<Doc>) => Promise<Doc>;
112
104
  } & {
113
- [K in `remove${Capitalize<T>}`]: (id: string) => Promise<Doc>;
105
+ [K in `remove${_CapitalizedT}`]: (id: string) => Promise<Doc>;
114
106
  } & {
115
- [K in `search${Capitalize<T>}`]: (searchText: string, queryOption?: ListQueryOption<Sort, Obj>) => Promise<{
107
+ [K in `search${_CapitalizedT}`]: (searchText: string, queryOption?: _ListQueryOption) => Promise<{
116
108
  docs: Doc[];
117
109
  count: number;
118
110
  }>;
119
111
  } & {
120
- [K in `searchDocs${Capitalize<T>}`]: (searchText: string, queryOption?: ListQueryOption<Sort, Obj>) => Promise<Doc[]>;
121
- } & {
122
- [K in `searchCount${Capitalize<T>}`]: (searchText: string) => Promise<number>;
123
- } & {
124
- [K in keyof Query as K extends string ? `list${Capitalize<K>}` : never]: Query[K] extends (...args: infer Args) => any ? (...args: [...Args, queryOption?: ListQueryOption<Sort, Obj>]) => Promise<Doc[]> : never;
125
- } & {
126
- [K in keyof Query as K extends string ? `listIds${Capitalize<K>}` : never]: Query[K] extends (...args: infer Args) => any ? (...args: [...Args, queryOption?: ListQueryOption<Sort, Obj>]) => Promise<string[]> : never;
127
- } & {
128
- [K in keyof Query as K extends string ? `find${Capitalize<K>}` : never]: Query[K] extends (...args: infer Args) => any ? (...args: [...Args, queryOption?: FindQueryOption<Sort, Obj>]) => Promise<Doc | null> : never;
129
- } & {
130
- [K in keyof Query as K extends string ? `findId${Capitalize<K>}` : never]: Query[K] extends (...args: infer Args) => any ? (...args: [...Args, queryOption?: FindQueryOption<Sort, Obj>]) => Promise<string | null> : never;
131
- } & {
132
- [K in keyof Query as K extends string ? `pick${Capitalize<K>}` : never]: Query[K] extends (...args: infer Args) => any ? (...args: [...Args, queryOption?: FindQueryOption<Sort, Obj>]) => Promise<Doc> : never;
133
- } & {
134
- [K in keyof Query as K extends string ? `pickId${Capitalize<K>}` : never]: Query[K] extends (...args: infer Args) => any ? (...args: [...Args, queryOption?: FindQueryOption<Sort, Obj>]) => Promise<string> : never;
135
- } & {
136
- [K in keyof Query as K extends string ? `exists${Capitalize<K>}` : never]: Query[K] extends (...args: infer Args) => any ? (...args: [...Args]) => Promise<string | null> : never;
137
- } & {
138
- [K in keyof Query as K extends string ? `count${Capitalize<K>}` : never]: Query[K] extends (...args: infer Args) => any ? (...args: [...Args]) => Promise<number> : never;
112
+ [K in `searchDocs${_CapitalizedT}`]: (searchText: string, queryOption?: _ListQueryOption) => Promise<Doc[]>;
139
113
  } & {
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;
141
- }>;
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>>;
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> & {
144
- queue: QueueService<Signal>;
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]; }>;
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> & {
147
- queue: QueueService<Signal>;
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> & {
150
- queue: QueueService<Signal>;
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]; }>;
114
+ [K in `searchCount${_CapitalizedT}`]: (searchText: string) => Promise<number>;
115
+ } & QueryMethodPart<Query, Sort, Obj, Doc, Insight, _FindQueryOption, _ListQueryOption>>;
116
+ export declare const DbService: <T extends string, Input, Doc extends HydratedDocument<any>, Model extends DatabaseModel<T, Input, Doc, Obj, Insight, Filter, Summary, _CapitalizedT, _QueryOfDoc, _Query, _Sort, _DataInputOfDoc, _FindQueryOption, _ListQueryOption>, Middleware extends BaseMiddleware, Obj, Insight, Filter extends FilterType, Summary, Signal = unknown, _CapitalizedT extends string = Capitalize<T>, _QueryOfDoc extends QueryOf<Doc> = QueryOf<Doc>, _Query extends GetActionObject<Filter> = GetActionObject<Filter>, _Sort extends SortOf<Filter> = SortOf<Filter>, _DataInputOfDoc extends DataInputOf<Input, Doc> = DataInputOf<Input, Doc>, _FindQueryOption extends FindQueryOption<_Sort, Obj> = FindQueryOption<_Sort, Obj>, _ListQueryOption extends ListQueryOption<_Sort, Obj> = ListQueryOption<_Sort, Obj>>(database: Database<T, Input, Doc, Model, Middleware, Obj, Insight, Filter, Summary>, sigRef?: Type<Signal>) => Type<DatabaseService<T, Input, Doc, Obj, Model, Insight, Filter, Summary>>;
117
+ 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> & { [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]; }>;
118
+ 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> & { [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">>;
119
+ 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> & { [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
120
  export declare const makeProvidersForSrv: (srvRef: Type) => Provider[];
153
121
  export {};