@urga-panel/ur-panels-core 1.0.0

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.
Files changed (101) hide show
  1. package/.eslintrc.js +13 -0
  2. package/dist/ServiceManager.d.ts +26 -0
  3. package/dist/ServiceManager.js +351 -0
  4. package/dist/TestRun.d.ts +1 -0
  5. package/dist/TestRun.js +14 -0
  6. package/dist/index.d.ts +15 -0
  7. package/dist/index.js +22 -0
  8. package/dist/services/abstract/apiService/ApiService.d.ts +17 -0
  9. package/dist/services/abstract/apiService/ApiService.js +33 -0
  10. package/dist/services/abstract/authServices/AuthService.d.ts +75 -0
  11. package/dist/services/abstract/authServices/AuthService.js +275 -0
  12. package/dist/services/abstract/authServices/Authorization.d.ts +0 -0
  13. package/dist/services/abstract/authServices/Authorization.js +0 -0
  14. package/dist/services/abstract/extensionServices/ExtensionService.d.ts +25 -0
  15. package/dist/services/abstract/extensionServices/ExtensionService.js +21 -0
  16. package/dist/services/abstract/pageServices/LayoutPageService.d.ts +17 -0
  17. package/dist/services/abstract/pageServices/LayoutPageService.js +32 -0
  18. package/dist/services/abstract/pageServices/PageServices.d.ts +20 -0
  19. package/dist/services/abstract/pageServices/PageServices.js +23 -0
  20. package/dist/services/abstract/pageServices/controllers/NSPageControllerService.d.ts +10 -0
  21. package/dist/services/abstract/pageServices/controllers/NSPageControllerService.js +18 -0
  22. package/dist/services/abstract/pageServices/controllers/PageControllerService.d.ts +27 -0
  23. package/dist/services/abstract/pageServices/controllers/PageControllerService.js +24 -0
  24. package/dist/services/abstract/pageServices/controllers/SVPageControllerService.d.ts +34 -0
  25. package/dist/services/abstract/pageServices/controllers/SVPageControllerService.js +73 -0
  26. package/dist/services/abstract/pageServices/pages/NsPageService.d.ts +26 -0
  27. package/dist/services/abstract/pageServices/pages/NsPageService.js +66 -0
  28. package/dist/services/abstract/project/ProjectInfoService.d.ts +42 -0
  29. package/dist/services/abstract/project/ProjectInfoService.js +72 -0
  30. package/dist/services/abstract/webviewServices/WVBackService.d.ts +18 -0
  31. package/dist/services/abstract/webviewServices/WVBackService.js +22 -0
  32. package/dist/services/abstract/webviewServices/WVFrontService.d.ts +21 -0
  33. package/dist/services/abstract/webviewServices/WVFrontService.js +54 -0
  34. package/dist/services/abstract/webviewServices/nv.d.ts +26 -0
  35. package/dist/services/abstract/webviewServices/nv.js +99 -0
  36. package/dist/services/main/fetchServices/FetchBrowserService.d.ts +19 -0
  37. package/dist/services/main/fetchServices/FetchBrowserService.js +26 -0
  38. package/dist/services/main/httpServices/RequestHandlerService.d.ts +46 -0
  39. package/dist/services/main/httpServices/RequestHandlerService.js +165 -0
  40. package/dist/services/main/remoteApiControllerService/RemoteApiControllerService.d.ts +36 -0
  41. package/dist/services/main/remoteApiControllerService/RemoteApiControllerService.js +42 -0
  42. package/dist/services/main/testServices/TestService.d.ts +19 -0
  43. package/dist/services/main/testServices/TestService.js +22 -0
  44. package/dist/services/main/testServices/TestService2.d.ts +18 -0
  45. package/dist/services/main/testServices/TestService2.js +20 -0
  46. package/dist/types/RegisterServiceInfo.d.ts +13 -0
  47. package/dist/types/RegisterServiceInfo.js +1 -0
  48. package/dist/types/Service.d.ts +32 -0
  49. package/dist/types/Service.js +43 -0
  50. package/dist/types/ServiceConstructor.d.ts +5 -0
  51. package/dist/types/ServiceConstructor.js +1 -0
  52. package/dist/types/ServiceEntry.d.ts +6 -0
  53. package/dist/types/ServiceEntry.js +1 -0
  54. package/dist/types/ServiceOts.d.ts +12 -0
  55. package/dist/types/ServiceOts.js +1 -0
  56. package/dist/types/ServiceRegisterInfo.d.ts +29 -0
  57. package/dist/types/ServiceRegisterInfo.js +25 -0
  58. package/dist/types/ServiceResponse.d.ts +13 -0
  59. package/dist/types/ServiceResponse.js +1 -0
  60. package/dist/types/ServiceSetupOptions.d.ts +3 -0
  61. package/dist/types/ServiceSetupOptions.js +1 -0
  62. package/dist/types/ServiceStatus.d.ts +1 -0
  63. package/dist/types/ServiceStatus.js +1 -0
  64. package/dist/types/_ServiceError.d.ts +5 -0
  65. package/dist/types/_ServiceError.js +1 -0
  66. package/jest.config.js +5 -0
  67. package/package.json +35 -0
  68. package/src/ServiceManager.ts +403 -0
  69. package/src/TestRun.ts +17 -0
  70. package/src/index.ts +26 -0
  71. package/src/services/abstract/apiService/ApiService.ts +51 -0
  72. package/src/services/abstract/authServices/AuthService.ts +364 -0
  73. package/src/services/abstract/authServices/Authorization.ts +0 -0
  74. package/src/services/abstract/extensionServices/ExtensionService.ts +50 -0
  75. package/src/services/abstract/pageServices/LayoutPageService.ts +49 -0
  76. package/src/services/abstract/pageServices/PageServices.ts +37 -0
  77. package/src/services/abstract/pageServices/controllers/NSPageControllerService.ts +23 -0
  78. package/src/services/abstract/pageServices/controllers/PageControllerService.ts +56 -0
  79. package/src/services/abstract/pageServices/controllers/SVPageControllerService.ts +104 -0
  80. package/src/services/abstract/pageServices/pages/NSPageService.ts +82 -0
  81. package/src/services/abstract/project/ProjectInfoService.ts +108 -0
  82. package/src/services/abstract/webviewServices/WVBackService.ts +34 -0
  83. package/src/services/abstract/webviewServices/WVFrontService.ts +71 -0
  84. package/src/services/abstract/webviewServices/nv.js +112 -0
  85. package/src/services/abstract/webviewServices/nv.ts +125 -0
  86. package/src/services/main/fetchServices/FetchBrowserService.ts +40 -0
  87. package/src/services/main/httpServices/RequestHandlerService.ts +207 -0
  88. package/src/services/main/remoteApiControllerService/RemoteApiControllerService.ts +70 -0
  89. package/src/services/main/testServices/TestService.ts +36 -0
  90. package/src/services/main/testServices/TestService2.ts +34 -0
  91. package/src/types/RegisterServiceInfo.ts +19 -0
  92. package/src/types/Service.ts +61 -0
  93. package/src/types/ServiceConstructor.ts +6 -0
  94. package/src/types/ServiceEntry.ts +10 -0
  95. package/src/types/ServiceOts.ts +17 -0
  96. package/src/types/ServiceRegisterInfo.ts +48 -0
  97. package/src/types/ServiceResponse.ts +13 -0
  98. package/src/types/ServiceSetupOptions.ts +5 -0
  99. package/src/types/ServiceStatus.ts +2 -0
  100. package/src/types/_ServiceError.ts +5 -0
  101. package/tsconfig.json +20 -0
@@ -0,0 +1,403 @@
1
+ import { ExtensionService } from "./services/abstract/extensionServices/ExtensionService";
2
+ import { NSPageControllerService } from "./services/abstract/pageServices/controllers/NSPageControllerService";
3
+ import { SVPageControllerService } from "./services/abstract/pageServices/controllers/SVPageControllerService";
4
+ import { NSPageService } from "./services/abstract/pageServices/pages/NsPageService";
5
+ import { PageService } from "./services/abstract/pageServices/PageServices";
6
+ import { RegisterServiceInfo } from "./types/RegisterServiceInfo";
7
+ import { Service } from "./types/Service";
8
+ import { ServiceEntry } from "./types/ServiceEntry";
9
+ import { ServiceOts } from "./types/ServiceOts";
10
+
11
+ export interface ServiceConstructor<T extends Service> {
12
+ new(ots: any): T;
13
+ servcieInfo?: {}
14
+ }
15
+
16
+ export class _ServiceManager {
17
+ public services: {
18
+ [key: string]: ServiceEntry<Service>,
19
+ } = {
20
+ TestService: {
21
+ serviceSelf: undefined,
22
+ status: "waitSetup"
23
+ }
24
+ };
25
+ constructor() {
26
+
27
+ }
28
+ async initServices(
29
+ type: "ns" | "svelte" | "node" | "svelteBackend",
30
+ // services: {
31
+ // [key: string]: {
32
+ // service:ServiceConstructor<Service>
33
+ // ots: any;
34
+ // };
35
+ // // LayoutService?: ServiceConstructor<LayoutPageService>;
36
+ // }
37
+ services: Array<RegisterServiceInfo>
38
+ ) {
39
+ //debugger;
40
+ console.log("ServiceManager: Initializing services...");
41
+
42
+ // // TestService'i oluştur ve başlat
43
+ // const _TestService = this.setKey("TestService", {
44
+ // serviceSelf: new TestService({
45
+ // usedService: {},
46
+ // tag: "TestService",
47
+ // }),
48
+ // status: "waitSetup",
49
+ // });
50
+ // await _TestService.setup();
51
+ // await _TestService.start();
52
+
53
+ // PageControllerService'i oluştur ve başlat
54
+ if(type == "ns") {
55
+ const _PageControllerService = this.setKey("NSPageControllerService", {
56
+ serviceSelf: new NSPageControllerService({
57
+ usedService: {},
58
+ abilities: {
59
+ createChildService: (tag:string) => {
60
+ console.log("createChildService called for ---", tag);
61
+ const _pageService = this.setKey(tag, {
62
+ serviceSelf: new NSPageService({
63
+ usedService: {},
64
+ tag: tag,
65
+ type: type,
66
+ }),
67
+ status: "waitSetup",
68
+ });
69
+ return _pageService as NSPageService;
70
+ },
71
+ },
72
+ tag: "NSPageControllerService",
73
+ type: type,
74
+ }),
75
+ status: "waitSetup",
76
+ });
77
+ await _PageControllerService.setup();
78
+ await _PageControllerService.start();
79
+ }
80
+ else if(type == "svelte") {
81
+ const _PageControllerService = this.setKey("SVPageControllerService", {
82
+ serviceSelf: new SVPageControllerService({
83
+ usedService: {
84
+
85
+ },
86
+ abilities: {
87
+ // Artık class referansını parametre olarak alıyor
88
+ createChildService: (tag: string, PageCtor?: ServiceConstructor<Service>) => {
89
+ console.log("createChildService called for ---", tag);
90
+ const ServiceClass = PageCtor ?? PageService;
91
+ const _pageService = this.setKey(tag, {
92
+ serviceSelf: new ServiceClass({
93
+ usedService: {},
94
+ tag: tag,
95
+ type: type,
96
+ }),
97
+ status: "waitSetup",
98
+ });
99
+ return _pageService as Service;
100
+ },
101
+ },
102
+ tag: "PageControllerService",
103
+ type: type,
104
+ }),
105
+ status: "waitSetup",
106
+ });
107
+ await _PageControllerService.setup();
108
+ await _PageControllerService.start();
109
+ }
110
+ else if(type == "svelteBackend") {
111
+ // debugger;
112
+ // const _PageControllerService = this.setKey("RequestHandlerService", {
113
+ // serviceSelf: new RequestHandlerService({
114
+ // usedService: {
115
+ // "AuthService": () => {
116
+ // debugger;
117
+ // return this.getService("AuthService")
118
+ // },
119
+ // },
120
+ // abilities: {
121
+ // // Artık class referansını parametre olarak alıyor
122
+ // createChildService: (tag: string, PageCtor?: ServiceConstructor<Service>) => {
123
+ // console.log("createChildService called for ---", tag);
124
+ // const ServiceClass = PageCtor ?? PageService;
125
+ // const _pageService = this.setKey(tag, {
126
+ // serviceSelf: new ServiceClass({
127
+ // usedService: {},
128
+ // tag: tag,
129
+ // type: type,
130
+ // }),
131
+ // status: "waitSetup",
132
+ // });
133
+ // return _pageService as Service;
134
+ // },
135
+ // },
136
+ // tag: "RequestHandlerService",
137
+ // type: type,
138
+ // }),
139
+ // status: "waitSetup",
140
+ // });
141
+ // await _PageControllerService.setup();
142
+ // await _PageControllerService.start();
143
+ }
144
+ const createdServices: Service[] = [];
145
+ for (const serviceInfo of services) {
146
+ const { serviceName, service, tag, dynamicTag, isAbstract, requiredServices } = serviceInfo;
147
+ // Fill usedService according to requiredServices
148
+ //@ts-ignore
149
+ if(service.serviceInfo == null || service.serviceInfo == undefined) {
150
+ console.warn(`Service ${serviceName} does not have serviceInfo defined.`);
151
+ continue;
152
+ }
153
+ else{
154
+ console.log(`Service ${serviceName} has serviceInfo defined:`, service.serviceInfo);
155
+ }
156
+ const usedService: { [key: string]: () => Service } = {};
157
+ if (Array.isArray(service.serviceInfo.requiredServices)) {
158
+ for (const reqName of service.serviceInfo.requiredServices) {
159
+ usedService[reqName] = () => {return this.getService<Service>(reqName)}
160
+ }
161
+ }
162
+ const serviceInstance = this.setKey(tag, {
163
+ serviceSelf: new service({
164
+ usedService,
165
+ tag: tag,
166
+ type: type,
167
+ abilities: {
168
+ createChildService: (tag: string, PageCtor?: ServiceConstructor<Service>) => {
169
+ console.log("createChildService called for ---", tag);
170
+ const ServiceClass = PageCtor ?? PageService;
171
+ const _pageService = this.setKey(tag, {
172
+ serviceSelf: new ServiceClass({
173
+ usedService: {},
174
+ tag: tag,
175
+ type: type,
176
+ }),
177
+ status: "waitSetup",
178
+ });
179
+ return _pageService as Service;
180
+ },
181
+ }
182
+ }),
183
+ status: "waitSetup",
184
+ });
185
+ await serviceInstance.setup();
186
+ createdServices.push(serviceInstance);
187
+ }
188
+ for (const serviceInstance of createdServices) {
189
+ if (typeof serviceInstance.start === "function") {
190
+ await serviceInstance.start();
191
+ }
192
+ }
193
+ // // Diğer servisleri oluştur ve başlat (TestService ve PageControllerService hariç)
194
+ // const excluded = ["TestService", "PageControllerService"];
195
+ // const createdServices: Service[] = [];
196
+ // for (const key of Object.keys(services)) {
197
+ // if (excluded.includes(key)) continue;
198
+ // const ServiceCtor = services[key].service;
199
+
200
+ // const serviceInstance = this.setKey(key, {
201
+ // serviceSelf: new ServiceCtor({
202
+ // usedService: {},
203
+ // abilities: {
204
+ // // createChildService: (tag: string) => {
205
+ // // console.log("createChildService called for ---", tag);
206
+ // // const _pageService = this.setKey(tag, {
207
+ // // serviceSelf: new PageService({
208
+ // // usedService: {},
209
+ // // tag: tag,
210
+ // // type: type,
211
+ // // }),
212
+ // // status: "waitSetup",
213
+ // // });
214
+ // // return _pageService as PageService;
215
+ // // },
216
+ // createChildService: (tag: string, PageCtor?: ServiceConstructor<Service>) => {
217
+ // console.log("createChildService called for ---", tag);
218
+ // const ServiceClass = PageCtor ?? PageService;
219
+ // const _pageService = this.setKey(tag, {
220
+ // serviceSelf: new ServiceClass({
221
+ // usedService: {},
222
+ // tag: tag,
223
+ // type: type,
224
+ // }),
225
+ // status: "waitSetup",
226
+ // });
227
+ // return _pageService as Service;
228
+ // },
229
+ // },
230
+ // type: type,
231
+ // tag: key,
232
+ // }),
233
+ // status: "waitSetup",
234
+ // });
235
+ // await serviceInstance.setup();
236
+ // createdServices.push(serviceInstance);
237
+ // }
238
+ // for (const serviceInstance of createdServices) {
239
+ // if (typeof serviceInstance.start === "function") {
240
+ // await serviceInstance.start();
241
+ // }
242
+ // }
243
+ }
244
+ // public createPage(callback: () => Promise<void>) {
245
+ // return async ({ params, url }) => {
246
+ // console.log("Available services:", Object.keys(this.services));
247
+ // callback();
248
+ // }
249
+
250
+ // }
251
+
252
+ public getService<T extends Service>(serviceName: string): T {
253
+ if (this.services[serviceName]) {
254
+ } else {
255
+ console.log(`ServiceManager: Service ${serviceName} not found.`);
256
+ console.log("Available services:", Object.keys(this.services));
257
+ return undefined as T;
258
+ }
259
+
260
+ return this.services[serviceName].serviceSelf as T;
261
+
262
+ }
263
+
264
+
265
+ private setKey(key: string, value: ServiceEntry<Service>) {
266
+ this.services[key] = value;
267
+ return this.services[key].serviceSelf;
268
+ }
269
+
270
+ private async quickService<T extends Service>(
271
+ serviceName: string,
272
+ serviceConstructor: ServiceConstructor<T>,
273
+ usedService?: { [key: string]: () => Service },
274
+ ots: Partial<ServiceOts> = {}
275
+ ) {
276
+ this.setKey(serviceName, {
277
+ serviceSelf: new serviceConstructor({
278
+ usedService: {
279
+
280
+ },
281
+ tag: serviceName,
282
+ }),
283
+ status: "waitSetup",
284
+ });
285
+ await this.services[serviceName].serviceSelf.setup();
286
+ this.services[serviceName].status = "waitStart";
287
+ return this.services[serviceName].serviceSelf;
288
+ }
289
+
290
+ /**
291
+ * Returns all services that are ExtensionService instances (serviceSelf)
292
+ */
293
+ public getExtensionServices(): { [key: string]: ExtensionService } {
294
+ const result: { [key: string]: ExtensionService } = {};
295
+ for (const [key, entry] of Object.entries(this.services)) {
296
+ if (
297
+ entry.serviceSelf &&
298
+ entry.serviceSelf instanceof ExtensionService
299
+ ) {
300
+ result[key] = entry.serviceSelf as ExtensionService;
301
+ }
302
+ }
303
+ return result;
304
+ }
305
+
306
+ }
307
+
308
+ const ServiceManager = new _ServiceManager();
309
+ export { ServiceManager };
310
+
311
+ // export function getPackageJsonFromHost(
312
+ // packageName: string,
313
+ // hostDir: string = process.cwd()
314
+ // ): Record<string, any> | null {
315
+ // try {
316
+ // const dummyEntry = path.join(hostDir, 'index.js');
317
+ // const customRequire = createRequire(dummyEntry);
318
+
319
+ // // resolve the entry point of the package (e.g., index.js or main file)
320
+ // const resolvedPath = customRequire.resolve(packageName);
321
+
322
+ // // traverse up to find the package root (usually up to the nearest package.json)
323
+ // const packageRoot = findPackageRoot(resolvedPath);
324
+ // if (!packageRoot) return null;
325
+ // // console.log('resolvedPath', resolvedPath)
326
+ // // const parts = resolvedPath.split(path.sep);
327
+ // // const pkgIndex = parts.lastIndexOf('node_modules');
328
+ // // const packageRoot =
329
+ // // pkgIndex !== -1 ? path.join(...parts.slice(0, pkgIndex + 2)) : null;
330
+
331
+ // // console.log('package root', packageRoot)
332
+ // // if (!packageRoot) return null;
333
+
334
+ // const pkgJsonPath = path.join(packageRoot, 'urga.config.yaml');
335
+ // if (!fs.existsSync(pkgJsonPath)) return null;
336
+
337
+ // const jsonData = fs.readFileSync(pkgJsonPath, 'utf-8');
338
+ // const config = yaml.load(jsonData);
339
+
340
+ // return (config);
341
+ // } catch (err) {
342
+ // console.log(err)
343
+ // return null;
344
+ // }
345
+ // }
346
+
347
+ // export function isPackageInstalledInHost(
348
+ // packageName: string,
349
+ // hostDir: string = process.cwd()
350
+ // ): boolean {
351
+ // try {
352
+ // console.log(path.join(hostDir, 'index.js'))
353
+ // const customRequire = createRequire(path.join(hostDir, 'index.js'));
354
+ // customRequire.resolve(packageName);
355
+ // return true;
356
+ // } catch(error) {
357
+ // console.error(`Package ${packageName} not found in host directory ${hostDir}`,error);
358
+ // return false;
359
+ // }
360
+ // }
361
+
362
+ // function findPackageRoot(startDir: string): string | null {
363
+ // let currentDir = startDir;
364
+
365
+ // while (true) {
366
+ // const pkgPath = path.join(currentDir, 'package.json');
367
+ // if (fs.existsSync(pkgPath)) {
368
+ // return currentDir;
369
+ // }
370
+
371
+ // const parentDir = path.dirname(currentDir);
372
+ // if (parentDir === currentDir) {
373
+ // // Root dizine ulaşıldı
374
+ // return null;
375
+ // }
376
+ // currentDir = parentDir;
377
+ // }
378
+ // }
379
+ // return true;
380
+ // } catch(error) {
381
+ // console.error(`Package ${packageName} not found in host directory ${hostDir}`,error);
382
+ // return false;
383
+ // }
384
+ // }
385
+
386
+ // function findPackageRoot(startDir: string): string | null {
387
+ // let currentDir = startDir;
388
+
389
+ // while (true) {
390
+ // const pkgPath = path.join(currentDir, 'package.json');
391
+ // if (fs.existsSync(pkgPath)) {
392
+ // return currentDir;
393
+ // }
394
+
395
+ // const parentDir = path.dirname(currentDir);
396
+ // if (parentDir === currentDir) {
397
+ // // Root dizine ulaşıldı
398
+ // return null;
399
+ // }
400
+ // currentDir = parentDir;
401
+ // }
402
+ // }
403
+ // }
package/src/TestRun.ts ADDED
@@ -0,0 +1,17 @@
1
+ import { ServiceManager } from './ServiceManager';
2
+
3
+ async function main() {
4
+ //const serviceManager = new ServiceManager();
5
+
6
+ // const _service = new LayoutPageService({
7
+ // tag: 'LayoutService',
8
+ // usedService: {}
9
+ // });
10
+ // await serviceManager.initServices(
11
+ // {
12
+ // LayoutService: _service
13
+ // }
14
+ // );
15
+ }
16
+
17
+ main().catch(console.error);
package/src/index.ts ADDED
@@ -0,0 +1,26 @@
1
+ // Types
2
+ export * from "./types/Service.js";
3
+ export * from "./types/ServiceStatus.js";
4
+ export * from "./types/ServiceConstructor.js";
5
+ export * from "./types/ServiceEntry.js";
6
+ export * from "./types/ServiceSetupOptions.js";
7
+ export * from "./types/_ServiceError.js";
8
+ export * from "./types/ServiceResponse.js";
9
+ export * from "./types/ServiceOts.js";
10
+
11
+ // Classes
12
+ export { ServiceManager } from "./ServiceManager.js";
13
+ export { NSPageControllerService } from "./services/abstract/pageServices/controllers/NSPageControllerService.js";
14
+ export { SVPageControllerService } from "./services/abstract/pageServices/controllers/SVPageControllerService.js";
15
+ export { ExtensionService } from "./services/abstract/extensionServices/ExtensionService.js";
16
+ export { ProjectInfoService } from "./services/abstract/project/ProjectInfoService.js";
17
+ export { RequestHandlerService } from "./services/main/httpServices/RequestHandlerService.js";
18
+ export { AuthService } from "./services/abstract/authServices/AuthService.js";
19
+
20
+
21
+ // export { PageControllerService } from "./services/pageServices/controller/PageControllerService.js";
22
+ // export { ExtensionService } from "./services/extensionServices/controller/ExtensionService.js";
23
+ // export { Test2Service } from "./testServices/TestService2";
24
+
25
+ // Functions
26
+ // export { add } from "./addService/AddServiceStatic";
@@ -0,0 +1,51 @@
1
+ import { Service } from "../../../types/Service";
2
+ import { ServiceResponse } from "../../../types/ServiceResponse";
3
+ import { RequestHandlerService } from "../../main/httpServices/RequestHandlerService";
4
+
5
+
6
+ export abstract class ApiService extends Service {
7
+
8
+ apis: {
9
+ [key: string]: {
10
+ handler: (...args: any[]) => Promise<any>;
11
+ options?: { auth?: boolean; role?: string };
12
+ };
13
+ } = {};
14
+
15
+ protected onStart(): Promise<ServiceResponse> {
16
+
17
+ const requestHandlerService = this.ots.usedService.RequestHandlerService() as RequestHandlerService;
18
+ Object.entries(this.apis).forEach(([name, { handler, options }]) => {
19
+ requestHandlerService.addHandler(
20
+ `${this.tag}/${name}`,
21
+ handler.bind(this),
22
+ options || { auth: true, role: "guest" }
23
+ );
24
+ });
25
+ return Promise.resolve({ status: "success", message: "ApiService started" });
26
+ }
27
+
28
+ constructor(public ots: any) {
29
+ super(ots);
30
+ this.apis = {};
31
+ }
32
+
33
+ resposeHandler(response: any): Response {
34
+ if (response.status === "success") {
35
+ return new Response(JSON.stringify(response), {
36
+ status: 200,
37
+ headers: {
38
+ 'Content-Type': 'application/json'
39
+ }
40
+ });
41
+ }
42
+ return new Response(JSON.stringify(response), {
43
+ status: 400,
44
+ headers: {
45
+ 'Content-Type': 'application/json'
46
+ }
47
+ });
48
+ }
49
+
50
+
51
+ }