@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.
- package/.eslintrc.js +13 -0
- package/dist/ServiceManager.d.ts +26 -0
- package/dist/ServiceManager.js +351 -0
- package/dist/TestRun.d.ts +1 -0
- package/dist/TestRun.js +14 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +22 -0
- package/dist/services/abstract/apiService/ApiService.d.ts +17 -0
- package/dist/services/abstract/apiService/ApiService.js +33 -0
- package/dist/services/abstract/authServices/AuthService.d.ts +75 -0
- package/dist/services/abstract/authServices/AuthService.js +275 -0
- package/dist/services/abstract/authServices/Authorization.d.ts +0 -0
- package/dist/services/abstract/authServices/Authorization.js +0 -0
- package/dist/services/abstract/extensionServices/ExtensionService.d.ts +25 -0
- package/dist/services/abstract/extensionServices/ExtensionService.js +21 -0
- package/dist/services/abstract/pageServices/LayoutPageService.d.ts +17 -0
- package/dist/services/abstract/pageServices/LayoutPageService.js +32 -0
- package/dist/services/abstract/pageServices/PageServices.d.ts +20 -0
- package/dist/services/abstract/pageServices/PageServices.js +23 -0
- package/dist/services/abstract/pageServices/controllers/NSPageControllerService.d.ts +10 -0
- package/dist/services/abstract/pageServices/controllers/NSPageControllerService.js +18 -0
- package/dist/services/abstract/pageServices/controllers/PageControllerService.d.ts +27 -0
- package/dist/services/abstract/pageServices/controllers/PageControllerService.js +24 -0
- package/dist/services/abstract/pageServices/controllers/SVPageControllerService.d.ts +34 -0
- package/dist/services/abstract/pageServices/controllers/SVPageControllerService.js +73 -0
- package/dist/services/abstract/pageServices/pages/NsPageService.d.ts +26 -0
- package/dist/services/abstract/pageServices/pages/NsPageService.js +66 -0
- package/dist/services/abstract/project/ProjectInfoService.d.ts +42 -0
- package/dist/services/abstract/project/ProjectInfoService.js +72 -0
- package/dist/services/abstract/webviewServices/WVBackService.d.ts +18 -0
- package/dist/services/abstract/webviewServices/WVBackService.js +22 -0
- package/dist/services/abstract/webviewServices/WVFrontService.d.ts +21 -0
- package/dist/services/abstract/webviewServices/WVFrontService.js +54 -0
- package/dist/services/abstract/webviewServices/nv.d.ts +26 -0
- package/dist/services/abstract/webviewServices/nv.js +99 -0
- package/dist/services/main/fetchServices/FetchBrowserService.d.ts +19 -0
- package/dist/services/main/fetchServices/FetchBrowserService.js +26 -0
- package/dist/services/main/httpServices/RequestHandlerService.d.ts +46 -0
- package/dist/services/main/httpServices/RequestHandlerService.js +165 -0
- package/dist/services/main/remoteApiControllerService/RemoteApiControllerService.d.ts +36 -0
- package/dist/services/main/remoteApiControllerService/RemoteApiControllerService.js +42 -0
- package/dist/services/main/testServices/TestService.d.ts +19 -0
- package/dist/services/main/testServices/TestService.js +22 -0
- package/dist/services/main/testServices/TestService2.d.ts +18 -0
- package/dist/services/main/testServices/TestService2.js +20 -0
- package/dist/types/RegisterServiceInfo.d.ts +13 -0
- package/dist/types/RegisterServiceInfo.js +1 -0
- package/dist/types/Service.d.ts +32 -0
- package/dist/types/Service.js +43 -0
- package/dist/types/ServiceConstructor.d.ts +5 -0
- package/dist/types/ServiceConstructor.js +1 -0
- package/dist/types/ServiceEntry.d.ts +6 -0
- package/dist/types/ServiceEntry.js +1 -0
- package/dist/types/ServiceOts.d.ts +12 -0
- package/dist/types/ServiceOts.js +1 -0
- package/dist/types/ServiceRegisterInfo.d.ts +29 -0
- package/dist/types/ServiceRegisterInfo.js +25 -0
- package/dist/types/ServiceResponse.d.ts +13 -0
- package/dist/types/ServiceResponse.js +1 -0
- package/dist/types/ServiceSetupOptions.d.ts +3 -0
- package/dist/types/ServiceSetupOptions.js +1 -0
- package/dist/types/ServiceStatus.d.ts +1 -0
- package/dist/types/ServiceStatus.js +1 -0
- package/dist/types/_ServiceError.d.ts +5 -0
- package/dist/types/_ServiceError.js +1 -0
- package/jest.config.js +5 -0
- package/package.json +35 -0
- package/src/ServiceManager.ts +403 -0
- package/src/TestRun.ts +17 -0
- package/src/index.ts +26 -0
- package/src/services/abstract/apiService/ApiService.ts +51 -0
- package/src/services/abstract/authServices/AuthService.ts +364 -0
- package/src/services/abstract/authServices/Authorization.ts +0 -0
- package/src/services/abstract/extensionServices/ExtensionService.ts +50 -0
- package/src/services/abstract/pageServices/LayoutPageService.ts +49 -0
- package/src/services/abstract/pageServices/PageServices.ts +37 -0
- package/src/services/abstract/pageServices/controllers/NSPageControllerService.ts +23 -0
- package/src/services/abstract/pageServices/controllers/PageControllerService.ts +56 -0
- package/src/services/abstract/pageServices/controllers/SVPageControllerService.ts +104 -0
- package/src/services/abstract/pageServices/pages/NSPageService.ts +82 -0
- package/src/services/abstract/project/ProjectInfoService.ts +108 -0
- package/src/services/abstract/webviewServices/WVBackService.ts +34 -0
- package/src/services/abstract/webviewServices/WVFrontService.ts +71 -0
- package/src/services/abstract/webviewServices/nv.js +112 -0
- package/src/services/abstract/webviewServices/nv.ts +125 -0
- package/src/services/main/fetchServices/FetchBrowserService.ts +40 -0
- package/src/services/main/httpServices/RequestHandlerService.ts +207 -0
- package/src/services/main/remoteApiControllerService/RemoteApiControllerService.ts +70 -0
- package/src/services/main/testServices/TestService.ts +36 -0
- package/src/services/main/testServices/TestService2.ts +34 -0
- package/src/types/RegisterServiceInfo.ts +19 -0
- package/src/types/Service.ts +61 -0
- package/src/types/ServiceConstructor.ts +6 -0
- package/src/types/ServiceEntry.ts +10 -0
- package/src/types/ServiceOts.ts +17 -0
- package/src/types/ServiceRegisterInfo.ts +48 -0
- package/src/types/ServiceResponse.ts +13 -0
- package/src/types/ServiceSetupOptions.ts +5 -0
- package/src/types/ServiceStatus.ts +2 -0
- package/src/types/_ServiceError.ts +5 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Service } from "../../../../types/Service.js";
|
|
2
|
+
export class NSPageService extends Service {
|
|
3
|
+
serviceInfo;
|
|
4
|
+
model;
|
|
5
|
+
page;
|
|
6
|
+
constructor(ots) {
|
|
7
|
+
super({ ...ots });
|
|
8
|
+
}
|
|
9
|
+
async onSetup(options) {
|
|
10
|
+
this.log.OK("onSetup called", options);
|
|
11
|
+
return { status: "success", message: "setup complete" };
|
|
12
|
+
}
|
|
13
|
+
async onStart() {
|
|
14
|
+
this.log.OK("onStart called");
|
|
15
|
+
return { status: "success", message: "started" };
|
|
16
|
+
}
|
|
17
|
+
async onStop() {
|
|
18
|
+
this.log.OK("onStop called");
|
|
19
|
+
return { status: "success", message: "stopped" };
|
|
20
|
+
}
|
|
21
|
+
async onDestroy() {
|
|
22
|
+
this.log.OK("onDestroy called");
|
|
23
|
+
return { status: "success", message: "destroyed" };
|
|
24
|
+
}
|
|
25
|
+
navigatingTo(callback, model, args) {
|
|
26
|
+
this.log.OK("navigatingTo called");
|
|
27
|
+
if (callback)
|
|
28
|
+
callback(args);
|
|
29
|
+
if (model) {
|
|
30
|
+
this.model = model;
|
|
31
|
+
//ts-ignore
|
|
32
|
+
const page = args.object;
|
|
33
|
+
page.bindingContext = model;
|
|
34
|
+
this.page = page;
|
|
35
|
+
this.log.OK("Model set:", model);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this.log.WARN("No model provided");
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
navigatedTo(callback, args) {
|
|
42
|
+
this.log.OK("navigatedTo called");
|
|
43
|
+
if (callback)
|
|
44
|
+
callback(args);
|
|
45
|
+
}
|
|
46
|
+
onLoaded(callback, args) {
|
|
47
|
+
this.log.OK("onLoaded called");
|
|
48
|
+
if (callback)
|
|
49
|
+
callback(args);
|
|
50
|
+
}
|
|
51
|
+
onUnloaded(callback, args) {
|
|
52
|
+
this.log.OK("onUnloaded called");
|
|
53
|
+
if (callback)
|
|
54
|
+
callback(args);
|
|
55
|
+
}
|
|
56
|
+
navigatingFrom(callback, args) {
|
|
57
|
+
this.log.OK("navigatingFrom called");
|
|
58
|
+
if (callback)
|
|
59
|
+
callback(args);
|
|
60
|
+
}
|
|
61
|
+
navigatedFrom(callback, args) {
|
|
62
|
+
this.log.OK("navigatedFrom called");
|
|
63
|
+
if (callback)
|
|
64
|
+
callback(args);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Service } from "../../../types/Service.js";
|
|
2
|
+
import { ServiceOts } from "../../../types/ServiceOts.js";
|
|
3
|
+
import { ServiceResponse } from "../../../types/ServiceResponse.js";
|
|
4
|
+
import { ServiceSetupOptions } from "../../../types/ServiceSetupOptions.js";
|
|
5
|
+
import { PageService } from "../pageServices/PageServices.js";
|
|
6
|
+
export type ProjectsPages = {
|
|
7
|
+
[key: string]: {
|
|
8
|
+
icon: string;
|
|
9
|
+
title: string;
|
|
10
|
+
slug: string;
|
|
11
|
+
description: string;
|
|
12
|
+
showInMenu: boolean;
|
|
13
|
+
showInMobile: boolean;
|
|
14
|
+
order: number;
|
|
15
|
+
group?: string;
|
|
16
|
+
service?: PageService;
|
|
17
|
+
serviceRef: any;
|
|
18
|
+
userGroup?: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export type ProjectInfoOts = ServiceOts & {
|
|
22
|
+
usedService: {};
|
|
23
|
+
};
|
|
24
|
+
export declare abstract class ProjectInfoService extends Service {
|
|
25
|
+
ots: ProjectInfoOts;
|
|
26
|
+
static serviceInfo: {
|
|
27
|
+
name: string;
|
|
28
|
+
requiredServices: any[];
|
|
29
|
+
};
|
|
30
|
+
abstract pages: ProjectsPages;
|
|
31
|
+
constructor(ots: ProjectInfoOts);
|
|
32
|
+
protected onSetup(options?: ServiceSetupOptions): Promise<ServiceResponse>;
|
|
33
|
+
protected onStart(): Promise<ServiceResponse>;
|
|
34
|
+
protected onStop(): Promise<ServiceResponse>;
|
|
35
|
+
protected onDestroy(): Promise<ServiceResponse>;
|
|
36
|
+
getMenuPages(userGroup?: string): {
|
|
37
|
+
[key: string]: ProjectsPages[string];
|
|
38
|
+
};
|
|
39
|
+
getMobilePages(limit?: number): {
|
|
40
|
+
[key: string]: ProjectsPages[string];
|
|
41
|
+
};
|
|
42
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Service } from "../../../types/Service.js";
|
|
2
|
+
import { PageService } from "../pageServices/PageServices.js";
|
|
3
|
+
export class ProjectInfoService extends Service {
|
|
4
|
+
ots;
|
|
5
|
+
static serviceInfo = {
|
|
6
|
+
name: "ProjectInfoService",
|
|
7
|
+
requiredServices: [],
|
|
8
|
+
};
|
|
9
|
+
constructor(ots) {
|
|
10
|
+
super({ ...ots });
|
|
11
|
+
this.ots = ots;
|
|
12
|
+
}
|
|
13
|
+
async onSetup(options) {
|
|
14
|
+
// Create a service for each page
|
|
15
|
+
Object.keys(this.pages).forEach(async (tag) => {
|
|
16
|
+
const service = this.ots.abilities.createChildService?.("ProjectPage-" + tag, this.pages[tag].serviceRef || PageService);
|
|
17
|
+
if (service) {
|
|
18
|
+
this.pages[tag].service = service;
|
|
19
|
+
}
|
|
20
|
+
await service.setup();
|
|
21
|
+
});
|
|
22
|
+
return { status: "success", message: "setup complete" };
|
|
23
|
+
}
|
|
24
|
+
async onStart() {
|
|
25
|
+
// Object.keys(this.pages).forEach(async tag => {
|
|
26
|
+
// const service = this.ots.abilities.createChildService?.("ProjectPage-"+tag);
|
|
27
|
+
// await service.start();
|
|
28
|
+
// });
|
|
29
|
+
return { status: "success", message: "started" };
|
|
30
|
+
}
|
|
31
|
+
async onStop() {
|
|
32
|
+
return { status: "success", message: "stopped" };
|
|
33
|
+
}
|
|
34
|
+
async onDestroy() {
|
|
35
|
+
return { status: "success", message: "destroyed" };
|
|
36
|
+
}
|
|
37
|
+
getMenuPages(userGroup) {
|
|
38
|
+
const result = {};
|
|
39
|
+
Object.entries(this.pages).forEach(([key, page]) => {
|
|
40
|
+
if (page.showInMenu) {
|
|
41
|
+
if (userGroup && userGroup == 'admin') {
|
|
42
|
+
result[key] = page;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
if (userGroup) {
|
|
46
|
+
// Check if the page is accessible by the user group
|
|
47
|
+
if (page.userGroup === userGroup) {
|
|
48
|
+
result[key] = page;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
result[key] = page;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
getMobilePages(limit = 4) {
|
|
60
|
+
const result = {};
|
|
61
|
+
let count = 0;
|
|
62
|
+
for (const [key, page] of Object.entries(this.pages)) {
|
|
63
|
+
if (page.showInMobile) {
|
|
64
|
+
result[key] = page;
|
|
65
|
+
count++;
|
|
66
|
+
if (count >= limit)
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Service } from "../../../types/Service.js";
|
|
2
|
+
import { ServiceOts } from "../../../types/ServiceOts.js";
|
|
3
|
+
import { ServiceResponse } from "../../../types/ServiceResponse.js";
|
|
4
|
+
import { ServiceSetupOptions } from "../../../types/ServiceSetupOptions.js";
|
|
5
|
+
export type WVBackServiceOts = ServiceOts & {
|
|
6
|
+
usedService: {};
|
|
7
|
+
};
|
|
8
|
+
export declare class WVBackService extends Service {
|
|
9
|
+
static serviceInfo: {
|
|
10
|
+
name: string;
|
|
11
|
+
requiredServices: any[];
|
|
12
|
+
};
|
|
13
|
+
protected onSetup(options?: ServiceSetupOptions): Promise<ServiceResponse>;
|
|
14
|
+
protected onStart(): Promise<ServiceResponse>;
|
|
15
|
+
protected onStop(): Promise<ServiceResponse>;
|
|
16
|
+
protected onDestroy(): Promise<ServiceResponse>;
|
|
17
|
+
constructor(ots: WVBackServiceOts);
|
|
18
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Service } from "../../../types/Service.js";
|
|
2
|
+
export class WVBackService extends Service {
|
|
3
|
+
static serviceInfo = {
|
|
4
|
+
name: "WVBackService",
|
|
5
|
+
requiredServices: [],
|
|
6
|
+
};
|
|
7
|
+
async onSetup(options) {
|
|
8
|
+
return { status: "success", message: "onSetup complete" };
|
|
9
|
+
}
|
|
10
|
+
async onStart() {
|
|
11
|
+
return { status: "success", message: "onStart complete" };
|
|
12
|
+
}
|
|
13
|
+
async onStop() {
|
|
14
|
+
return { status: "success", message: "onStop complete" };
|
|
15
|
+
}
|
|
16
|
+
async onDestroy() {
|
|
17
|
+
return { status: "success", message: "onDestroy complete" };
|
|
18
|
+
}
|
|
19
|
+
constructor(ots) {
|
|
20
|
+
super({ ...ots });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Service } from "../../../types/Service.js";
|
|
2
|
+
import { ServiceOts } from "../../../types/ServiceOts.js";
|
|
3
|
+
import { ServiceResponse } from "../../../types/ServiceResponse.js";
|
|
4
|
+
import { ServiceSetupOptions } from "../../../types/ServiceSetupOptions.js";
|
|
5
|
+
import { NSWebViewinterface } from "./nv.js";
|
|
6
|
+
export type WVFrontServiceOts = ServiceOts & {
|
|
7
|
+
usedService: {};
|
|
8
|
+
};
|
|
9
|
+
export declare class WVFrontService extends Service {
|
|
10
|
+
static serviceInfo: {
|
|
11
|
+
name: string;
|
|
12
|
+
requiredServices: any[];
|
|
13
|
+
};
|
|
14
|
+
protected onSetup(options?: ServiceSetupOptions): Promise<ServiceResponse>;
|
|
15
|
+
protected onStart(): Promise<ServiceResponse>;
|
|
16
|
+
protected onStop(): Promise<ServiceResponse>;
|
|
17
|
+
protected onDestroy(): Promise<ServiceResponse>;
|
|
18
|
+
oWebViewInterface: NSWebViewinterface;
|
|
19
|
+
constructor(ots: WVFrontServiceOts);
|
|
20
|
+
sendFetchRequest(url: string, options?: RequestInit): Promise<any>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Service } from "../../../types/Service.js";
|
|
2
|
+
import { NSWebViewinterface } from "./nv.js";
|
|
3
|
+
export class WVFrontService extends Service {
|
|
4
|
+
static serviceInfo = {
|
|
5
|
+
name: "WVFrontService",
|
|
6
|
+
requiredServices: [],
|
|
7
|
+
};
|
|
8
|
+
async onSetup(options) {
|
|
9
|
+
this.oWebViewInterface = new NSWebViewinterface();
|
|
10
|
+
//@ts-ignore
|
|
11
|
+
window.nsWebViewInterface = this.oWebViewInterface;
|
|
12
|
+
this.oWebViewInterface.emit("loadFinished", "");
|
|
13
|
+
return { status: "success", message: "onSetup complete" };
|
|
14
|
+
}
|
|
15
|
+
async onStart() {
|
|
16
|
+
return { status: "success", message: "onStart complete" };
|
|
17
|
+
}
|
|
18
|
+
async onStop() {
|
|
19
|
+
return { status: "success", message: "onStop complete" };
|
|
20
|
+
}
|
|
21
|
+
async onDestroy() {
|
|
22
|
+
return { status: "success", message: "onDestroy complete" };
|
|
23
|
+
}
|
|
24
|
+
oWebViewInterface;
|
|
25
|
+
constructor(ots) {
|
|
26
|
+
super({ ...ots });
|
|
27
|
+
}
|
|
28
|
+
async sendFetchRequest(url, options) {
|
|
29
|
+
console.log("sendFetchRequest", url, options);
|
|
30
|
+
return new Promise((resolve) => {
|
|
31
|
+
const callback = (args) => {
|
|
32
|
+
const param = args;
|
|
33
|
+
// Convert param to a Response object
|
|
34
|
+
debugger;
|
|
35
|
+
//@ts-ignore
|
|
36
|
+
const byteArray = Object.values(param._bodyBlob._buffer);
|
|
37
|
+
//@ts-ignore
|
|
38
|
+
const uint8 = new Uint8Array(byteArray);
|
|
39
|
+
//@ts-ignore
|
|
40
|
+
const text = new TextDecoder().decode(uint8);
|
|
41
|
+
const response = new Response(text, {
|
|
42
|
+
status: 200,
|
|
43
|
+
headers: { "Content-Type": "application/json" }
|
|
44
|
+
});
|
|
45
|
+
debugger;
|
|
46
|
+
console.log("sendFetchRequest received", param);
|
|
47
|
+
this.oWebViewInterface.removeListener('sendFetchRequest', callback);
|
|
48
|
+
resolve(response);
|
|
49
|
+
};
|
|
50
|
+
this.oWebViewInterface.on('sendFetchRequest', callback);
|
|
51
|
+
this.oWebViewInterface.emit("sendFetchRequest", { url, options });
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
type EventCallback = (data: any) => any;
|
|
2
|
+
declare global {
|
|
3
|
+
interface Window {
|
|
4
|
+
androidWebViewInterface?: {
|
|
5
|
+
handleEventFromWebView: (eventName: string, data: any) => void;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
declare class NSWebViewinterface {
|
|
10
|
+
private eventListenerMap;
|
|
11
|
+
private _iosResponseMap;
|
|
12
|
+
private _iosCntResponseId;
|
|
13
|
+
constructor();
|
|
14
|
+
private _onNativeEvent;
|
|
15
|
+
private _callJSFunction;
|
|
16
|
+
private _getResolvedFunction;
|
|
17
|
+
private _sendJSCallResponse;
|
|
18
|
+
private _createIFrame;
|
|
19
|
+
private _emitEventToIOS;
|
|
20
|
+
private _getIOSResponse;
|
|
21
|
+
private _emitEventToAndroid;
|
|
22
|
+
on(eventName: string, callback: EventCallback): void;
|
|
23
|
+
removeListener(eventName: string, callback: EventCallback): void;
|
|
24
|
+
emit(eventName: string, data: any): void;
|
|
25
|
+
}
|
|
26
|
+
export { NSWebViewinterface };
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
class NSWebViewinterface {
|
|
2
|
+
eventListenerMap;
|
|
3
|
+
_iosResponseMap;
|
|
4
|
+
_iosCntResponseId;
|
|
5
|
+
constructor() {
|
|
6
|
+
this.eventListenerMap = {};
|
|
7
|
+
this._iosResponseMap = {};
|
|
8
|
+
this._iosCntResponseId = 0;
|
|
9
|
+
}
|
|
10
|
+
_onNativeEvent(eventName, data) {
|
|
11
|
+
const lstEvtListeners = this.eventListenerMap[eventName] || [];
|
|
12
|
+
for (let _i = 0; _i < lstEvtListeners.length; _i++) {
|
|
13
|
+
const listener = lstEvtListeners[_i];
|
|
14
|
+
const retnVal = listener && listener(data);
|
|
15
|
+
if (retnVal === false) {
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
_callJSFunction(reqId, functionName, args) {
|
|
21
|
+
const resolvedFn = this._getResolvedFunction(functionName);
|
|
22
|
+
if (resolvedFn) {
|
|
23
|
+
const retnVal = resolvedFn.apply(window, args);
|
|
24
|
+
if (retnVal && retnVal.then) {
|
|
25
|
+
retnVal.then((value) => this._sendJSCallResponse(reqId, value), (error) => this._sendJSCallResponse(reqId, error, true));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this._sendJSCallResponse(reqId, retnVal);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
_getResolvedFunction(functionName) {
|
|
33
|
+
if (functionName && (functionName = functionName.trim()).length) {
|
|
34
|
+
functionName = functionName.indexOf('window.') === 0 ? functionName.replace('window.', '') : functionName;
|
|
35
|
+
const arrFnPath = functionName.split('.');
|
|
36
|
+
let fn = window;
|
|
37
|
+
for (let i = 0; i < arrFnPath.length; i++) {
|
|
38
|
+
if (!fn[arrFnPath[i]]) {
|
|
39
|
+
fn = null;
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
fn = fn[arrFnPath[i]];
|
|
43
|
+
}
|
|
44
|
+
return typeof fn === 'function' ? fn : null;
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
_sendJSCallResponse(reqId, response, isError) {
|
|
49
|
+
const oResponse = {
|
|
50
|
+
reqId: reqId,
|
|
51
|
+
response: response ?? null,
|
|
52
|
+
isError: !!isError
|
|
53
|
+
};
|
|
54
|
+
this.emit('_jsCallResponse', oResponse);
|
|
55
|
+
}
|
|
56
|
+
_createIFrame(src) {
|
|
57
|
+
const rootElm = document.documentElement;
|
|
58
|
+
const newFrameElm = document.createElement("IFRAME");
|
|
59
|
+
newFrameElm.setAttribute("src", src);
|
|
60
|
+
rootElm.appendChild(newFrameElm);
|
|
61
|
+
return newFrameElm;
|
|
62
|
+
}
|
|
63
|
+
_emitEventToIOS(eventName, data) {
|
|
64
|
+
this._iosResponseMap[++this._iosCntResponseId] = data;
|
|
65
|
+
const metadata = { eventName: eventName, resId: this._iosCntResponseId };
|
|
66
|
+
const url = 'js2ios:' + JSON.stringify(metadata);
|
|
67
|
+
const iFrame = this._createIFrame(url);
|
|
68
|
+
iFrame.parentNode?.removeChild(iFrame);
|
|
69
|
+
}
|
|
70
|
+
_getIOSResponse(resId) {
|
|
71
|
+
const response = this._iosResponseMap[resId];
|
|
72
|
+
delete this._iosResponseMap[resId];
|
|
73
|
+
return response;
|
|
74
|
+
}
|
|
75
|
+
_emitEventToAndroid(eventName, data) {
|
|
76
|
+
window.androidWebViewInterface?.handleEventFromWebView(eventName, data);
|
|
77
|
+
}
|
|
78
|
+
on(eventName, callback) {
|
|
79
|
+
const lstListeners = this.eventListenerMap[eventName] || (this.eventListenerMap[eventName] = []);
|
|
80
|
+
lstListeners.push(callback);
|
|
81
|
+
}
|
|
82
|
+
removeListener(eventName, callback) {
|
|
83
|
+
const listeners = this.eventListenerMap[eventName];
|
|
84
|
+
if (listeners) {
|
|
85
|
+
// Belirtilen geri çağırma işlevini kaldır
|
|
86
|
+
this.eventListenerMap[eventName] = listeners.filter(listener => listener !== callback);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
emit(eventName, data) {
|
|
90
|
+
const strData = typeof data === 'object' ? JSON.stringify(data) : data;
|
|
91
|
+
if (window.androidWebViewInterface) {
|
|
92
|
+
this._emitEventToAndroid(eventName, strData);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
this._emitEventToIOS(eventName, strData);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
export { NSWebViewinterface };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Service } from "../../../types/Service.js";
|
|
2
|
+
import { ServiceOts } from "../../../types/ServiceOts.js";
|
|
3
|
+
import { ServiceResponse } from "../../../types/ServiceResponse.js";
|
|
4
|
+
import { ServiceSetupOptions } from "../../../types/ServiceSetupOptions.js";
|
|
5
|
+
export type FetchBrowserServiceOts = ServiceOts & {
|
|
6
|
+
usedService: {};
|
|
7
|
+
};
|
|
8
|
+
export declare class FetchBrowserService extends Service {
|
|
9
|
+
static serviceInfo: {
|
|
10
|
+
name: string;
|
|
11
|
+
requiredServices: any[];
|
|
12
|
+
};
|
|
13
|
+
protected onSetup(options?: ServiceSetupOptions): Promise<ServiceResponse>;
|
|
14
|
+
protected onStart(): Promise<ServiceResponse>;
|
|
15
|
+
protected onStop(): Promise<ServiceResponse>;
|
|
16
|
+
protected onDestroy(): Promise<ServiceResponse>;
|
|
17
|
+
constructor(ots: FetchBrowserServiceOts);
|
|
18
|
+
sendFetchRequest(url: string, options?: RequestInit): Promise<Response>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Service } from "../../../types/Service.js";
|
|
2
|
+
export class FetchBrowserService extends Service {
|
|
3
|
+
static serviceInfo = {
|
|
4
|
+
name: "FetchBrowserService",
|
|
5
|
+
requiredServices: [],
|
|
6
|
+
};
|
|
7
|
+
async onSetup(options) {
|
|
8
|
+
return { status: "success", message: "onSetup complete" };
|
|
9
|
+
}
|
|
10
|
+
async onStart() {
|
|
11
|
+
return { status: "success", message: "onStart complete" };
|
|
12
|
+
}
|
|
13
|
+
async onStop() {
|
|
14
|
+
return { status: "success", message: "onStop complete" };
|
|
15
|
+
}
|
|
16
|
+
async onDestroy() {
|
|
17
|
+
return { status: "success", message: "onDestroy complete" };
|
|
18
|
+
}
|
|
19
|
+
constructor(ots) {
|
|
20
|
+
super({ ...ots });
|
|
21
|
+
}
|
|
22
|
+
async sendFetchRequest(url, options) {
|
|
23
|
+
const response = await fetch(url, options);
|
|
24
|
+
return response;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Service } from "../../../types/Service.js";
|
|
2
|
+
import { ServiceResponse } from "../../../types/ServiceResponse.js";
|
|
3
|
+
import { ServiceSetupOptions } from "../../../types/ServiceSetupOptions.js";
|
|
4
|
+
export type HandlerList = {
|
|
5
|
+
[key: string]: {
|
|
6
|
+
callback({ params, request, url, user }: {
|
|
7
|
+
params: any;
|
|
8
|
+
request: any;
|
|
9
|
+
url: any;
|
|
10
|
+
user?: any;
|
|
11
|
+
}): Promise<any>;
|
|
12
|
+
options?: {
|
|
13
|
+
auth?: boolean;
|
|
14
|
+
role?: string;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export declare class RequestHandlerService extends Service {
|
|
19
|
+
ots: any;
|
|
20
|
+
static serviceInfo: {
|
|
21
|
+
name: string;
|
|
22
|
+
requiredServices: string[];
|
|
23
|
+
};
|
|
24
|
+
handlers: HandlerList;
|
|
25
|
+
protected onSetup(options?: ServiceSetupOptions): Promise<ServiceResponse>;
|
|
26
|
+
protected onStart(): Promise<ServiceResponse>;
|
|
27
|
+
protected onStop(): Promise<ServiceResponse>;
|
|
28
|
+
protected onDestroy(): Promise<ServiceResponse>;
|
|
29
|
+
constructor(ots: any);
|
|
30
|
+
addHandler(name: string, callback: ({ params, request, url, user }: {
|
|
31
|
+
params: any;
|
|
32
|
+
request: any;
|
|
33
|
+
url: any;
|
|
34
|
+
user: any;
|
|
35
|
+
}) => Promise<any>, options?: {
|
|
36
|
+
auth?: boolean;
|
|
37
|
+
role?: string;
|
|
38
|
+
}): Promise<void>;
|
|
39
|
+
requestCome({ params, request, url }: {
|
|
40
|
+
params: any;
|
|
41
|
+
request: any;
|
|
42
|
+
url: any;
|
|
43
|
+
}): Promise<any>;
|
|
44
|
+
getCookie(cookieHeader: string | null, name: string): string | undefined;
|
|
45
|
+
resposeHandler(response: any): Response;
|
|
46
|
+
}
|