@wxcc-desktop/sdk 1.2.6 → 1.2.10
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/README.md +18 -391
- package/dist/index.js +1 -0
- package/dist/types/index.d.ts +21 -0
- package/dist/types/jsapi/actions-jsapi.d.ts +33 -0
- package/dist/types/jsapi/agent-contact-jsapi.d.ts +430 -0
- package/dist/types/jsapi/agent-state-info-jsapi.d.ts +88 -0
- package/dist/types/jsapi/common/_logger.d.ts +4 -0
- package/dist/types/jsapi/common/_service-checker.d.ts +12 -0
- package/dist/types/jsapi/common/_service-events.d.ts +31 -0
- package/dist/types/jsapi/config-jsapi.d.ts +26 -0
- package/dist/types/jsapi/dialer-jsapi.d.ts +73 -0
- package/dist/types/jsapi/i18n-jsapi.d.ts +23 -0
- package/dist/types/jsapi/logger-jsapi.d.ts +19 -0
- package/dist/types/jsapi/screenpop-jsapi.d.ts +29 -0
- package/dist/types/jsapi/shortcut-key-jsapi.d.ts +67 -0
- package/dist/types/sdk.d.ts +1 -0
- package/package.json +5 -60
- package/.eslintignore +0 -5
- package/.eslintrc.js +0 -22
- package/.prettierignore +0 -5
- package/.prettierrc +0 -5
- package/README_PUBLISH.md +0 -36
- package/jenkins-automation/MergePipeline.groovy +0 -143
- package/jest.config.js +0 -15
- package/sonar-project.properties +0 -17
- package/src/[sandbox]/README.md +0 -55
- package/src/[sandbox]/assets/i18n/de/app.json +0 -6
- package/src/[sandbox]/assets/i18n/en/app.json +0 -6
- package/src/[sandbox]/assets/i18n/widget-using-js-api/de/widget-using-js-api.json +0 -5
- package/src/[sandbox]/assets/i18n/widget-using-js-api/en/widget-using-js-api.json +0 -5
- package/src/[sandbox]/favicon.ico +0 -0
- package/src/[sandbox]/index.html +0 -9
- package/src/[sandbox]/sandbox-config.ts +0 -23
- package/src/[sandbox]/sandbox-mock.ts +0 -218
- package/src/[sandbox]/sandbox.ts +0 -164
- package/src/[sandbox]/widget-using-js-api.ts +0 -658
- package/src/global.d.ts +0 -5
- package/src/index.ts +0 -101
- package/src/jsapi/actions-jsapi.test.ts +0 -155
- package/src/jsapi/actions-jsapi.ts +0 -410
- package/src/jsapi/agent-contact-jsapi.test.ts +0 -217
- package/src/jsapi/agent-contact-jsapi.ts +0 -275
- package/src/jsapi/agent-state-info-jsapi.test.ts +0 -176
- package/src/jsapi/agent-state-info-jsapi.ts +0 -288
- package/src/jsapi/common/_logger.test.ts +0 -16
- package/src/jsapi/common/_logger.ts +0 -9
- package/src/jsapi/common/_service-checker.test.ts +0 -44
- package/src/jsapi/common/_service-checker.ts +0 -28
- package/src/jsapi/common/_service-events.test.ts +0 -122
- package/src/jsapi/common/_service-events.ts +0 -156
- package/src/jsapi/config-jsapi.test.ts +0 -78
- package/src/jsapi/config-jsapi.ts +0 -106
- package/src/jsapi/dialer-jsapi.test.ts +0 -101
- package/src/jsapi/dialer-jsapi.ts +0 -116
- package/src/jsapi/i18n-jsapi.test.ts +0 -62
- package/src/jsapi/i18n-jsapi.ts +0 -77
- package/src/jsapi/logger-jsapi.test.ts +0 -45
- package/src/jsapi/logger-jsapi.ts +0 -62
- package/src/jsapi/screenpop-jsapi.test.ts +0 -80
- package/src/jsapi/screenpop-jsapi.ts +0 -100
- package/src/jsapi/shortcut-key-jsapi.test.ts +0 -88
- package/src/jsapi/shortcut-key-jsapi.ts +0 -112
- package/src/sdk.ts +0 -3
- package/src/tsconfig.json +0 -18
- package/tsconfig.json +0 -13
- package/webpack.config.dev.server.ts +0 -12
- package/webpack.config.ts +0 -134
@@ -1,80 +0,0 @@
|
|
1
|
-
import { AgentxServices, SERVICE } from "@wxcc-desktop/sdk-types";
|
2
|
-
import { createScreenPopJsApi } from "./screenpop-jsapi";
|
3
|
-
|
4
|
-
jest.mock("@wxcc-desktop/sdk-types", () => {
|
5
|
-
const agentx_services_mock = {
|
6
|
-
SERVICE: {
|
7
|
-
isInited: false,
|
8
|
-
init: async (accessToken: string) => {
|
9
|
-
agentx_services_mock.SERVICE.isInited = true;
|
10
|
-
},
|
11
|
-
aqm: ({
|
12
|
-
screenpop: {
|
13
|
-
eScreenPop: { listen: jest.fn(), listenOnce: jest.fn() }
|
14
|
-
}
|
15
|
-
} as unknown) as AgentxServices["aqm"]
|
16
|
-
} as AgentxServices
|
17
|
-
};
|
18
|
-
return agentx_services_mock;
|
19
|
-
});
|
20
|
-
|
21
|
-
describe("ScreenPop JSAPI", () => {
|
22
|
-
let screenPop: ReturnType<typeof createScreenPopJsApi>;
|
23
|
-
|
24
|
-
beforeEach(() => {
|
25
|
-
(SERVICE as AgentxServices).init("fake-token");
|
26
|
-
|
27
|
-
screenPop = createScreenPopJsApi();
|
28
|
-
|
29
|
-
screenPop.init(SERVICE);
|
30
|
-
});
|
31
|
-
|
32
|
-
it("creates", () => {
|
33
|
-
expect(screenPop).toBeDefined();
|
34
|
-
expect(screenPop["logger"]).toBeDefined();
|
35
|
-
expect(screenPop["serviceChecker"]).toBeDefined();
|
36
|
-
expect(screenPop["aqmEvents"]).toBeDefined();
|
37
|
-
});
|
38
|
-
|
39
|
-
it("inits", () => {
|
40
|
-
expect(screenPop["checkService"]()).toBeTruthy();
|
41
|
-
expect(screenPop["aqmEvents"].isInited).toBeTruthy();
|
42
|
-
});
|
43
|
-
|
44
|
-
it("checks service", () => {
|
45
|
-
screenPop["serviceChecker"].check = jest.fn();
|
46
|
-
screenPop["checkService"]();
|
47
|
-
|
48
|
-
expect(screenPop["serviceChecker"].check).toHaveBeenCalled();
|
49
|
-
});
|
50
|
-
|
51
|
-
it("listens", () => {
|
52
|
-
const listener = () => {};
|
53
|
-
screenPop.addEventListener("eScreenPop", listener);
|
54
|
-
expect(screenPop["aqmEvents"]["listeners"].size).toBe(1);
|
55
|
-
expect(SERVICE.aqm.screenpop.eScreenPop.listen).toHaveBeenCalledWith(listener);
|
56
|
-
screenPop.removeEventListener("eScreenPop", listener);
|
57
|
-
expect(screenPop["aqmEvents"]["listeners"].size).toBe(0);
|
58
|
-
});
|
59
|
-
|
60
|
-
it("listensOnce", () => {
|
61
|
-
const listener = () => {};
|
62
|
-
screenPop.addOnceEventListener("eScreenPop", listener);
|
63
|
-
expect(screenPop["aqmEvents"]["listenersOnce"].size).toBe(1);
|
64
|
-
expect(SERVICE.aqm.screenpop.eScreenPop.listenOnce).toHaveBeenCalledWith(listener);
|
65
|
-
screenPop.removeOnceEventListener("eScreenPop", listener);
|
66
|
-
expect(screenPop["aqmEvents"]["listenersOnce"].size).toBe(0);
|
67
|
-
});
|
68
|
-
|
69
|
-
it("removesAllListeners", () => {
|
70
|
-
const listener1 = () => {};
|
71
|
-
const listener2 = () => {};
|
72
|
-
screenPop.addEventListener("eScreenPop", listener1);
|
73
|
-
screenPop.addOnceEventListener("eScreenPop", listener2);
|
74
|
-
expect(screenPop["aqmEvents"]["listeners"].size).toBe(1);
|
75
|
-
expect(screenPop["aqmEvents"]["listenersOnce"].size).toBe(1);
|
76
|
-
screenPop.removeAllEventListeners();
|
77
|
-
expect(screenPop["aqmEvents"]["listeners"].size).toBe(0);
|
78
|
-
expect(screenPop["aqmEvents"]["listenersOnce"].size).toBe(0);
|
79
|
-
});
|
80
|
-
});
|
@@ -1,100 +0,0 @@
|
|
1
|
-
import { AgentxService } from "@wxcc-desktop/sdk-types";
|
2
|
-
import { logger } from "../sdk";
|
3
|
-
import { createJsApiLogger } from "./common/_logger";
|
4
|
-
import { createServiceChecker } from "./common/_service-checker";
|
5
|
-
import { AqmServiceEntityEvents, createServiceEvents } from "./common/_service-events";
|
6
|
-
|
7
|
-
type Listeners = {
|
8
|
-
eScreenPop: Parameters<AgentxService["aqm"]["screenpop"]["eScreenPop"]["listen"]>[0];
|
9
|
-
};
|
10
|
-
|
11
|
-
type Config = {
|
12
|
-
logger: ReturnType<typeof createJsApiLogger>;
|
13
|
-
aqmEvents: AqmServiceEntityEvents<Listeners>;
|
14
|
-
serviceChecker: ReturnType<typeof createServiceChecker>;
|
15
|
-
};
|
16
|
-
|
17
|
-
export class ScreenPopJsApi {
|
18
|
-
private readonly logger: Config["logger"];
|
19
|
-
private readonly serviceChecker: Config["serviceChecker"];
|
20
|
-
|
21
|
-
private readonly aqmEvents: Config["aqmEvents"];
|
22
|
-
|
23
|
-
private SERVICE?: AgentxService;
|
24
|
-
|
25
|
-
private checkService() {
|
26
|
-
return this.serviceChecker.check(this.SERVICE);
|
27
|
-
}
|
28
|
-
|
29
|
-
constructor(config: Config) {
|
30
|
-
this.logger = config.logger;
|
31
|
-
this.aqmEvents = config.aqmEvents;
|
32
|
-
this.serviceChecker = config.serviceChecker;
|
33
|
-
}
|
34
|
-
|
35
|
-
//
|
36
|
-
init(SERVICE?: AgentxService) {
|
37
|
-
if (SERVICE) {
|
38
|
-
this.SERVICE = SERVICE;
|
39
|
-
}
|
40
|
-
|
41
|
-
if (!this.checkService()) {
|
42
|
-
return;
|
43
|
-
}
|
44
|
-
|
45
|
-
this.aqmEvents.init({
|
46
|
-
aqmServiceEntity: this.SERVICE!.aqm.screenpop,
|
47
|
-
aqmServiceEntityString: "SERVICE.aqm.screenpop"
|
48
|
-
});
|
49
|
-
|
50
|
-
this.logger.info("Inited");
|
51
|
-
}
|
52
|
-
|
53
|
-
cleanup() {
|
54
|
-
this.aqmEvents.cleanup();
|
55
|
-
|
56
|
-
this.SERVICE = undefined;
|
57
|
-
|
58
|
-
this.logger.info("Cleaned");
|
59
|
-
}
|
60
|
-
|
61
|
-
// data events
|
62
|
-
addEventListener<T extends keyof Listeners>(eventName: T, listener: Listeners[T]) {
|
63
|
-
if (!this.checkService()) {
|
64
|
-
return;
|
65
|
-
}
|
66
|
-
this.aqmEvents.addEventListener(eventName, listener);
|
67
|
-
}
|
68
|
-
|
69
|
-
addOnceEventListener<T extends keyof Listeners>(eventName: T, listener: Listeners[T]) {
|
70
|
-
if (!this.checkService()) {
|
71
|
-
return;
|
72
|
-
}
|
73
|
-
this.aqmEvents.addOnceEventListener(eventName, listener);
|
74
|
-
}
|
75
|
-
|
76
|
-
removeEventListener<T extends keyof Listeners>(eventName: T, listener: Listeners[T]) {
|
77
|
-
this.aqmEvents.removeEventListener(eventName, listener);
|
78
|
-
}
|
79
|
-
|
80
|
-
removeOnceEventListener<T extends keyof Listeners>(eventName: T, listener: Listeners[T]) {
|
81
|
-
this.aqmEvents.removeOnceEventListener(eventName, listener);
|
82
|
-
}
|
83
|
-
|
84
|
-
removeAllEventListeners() {
|
85
|
-
this.aqmEvents.removeAllEventListeners();
|
86
|
-
}
|
87
|
-
}
|
88
|
-
|
89
|
-
const screenPopJsApiLogger = createJsApiLogger(logger, "[ScreenPop JSAPI] =>");
|
90
|
-
const aqmServiceScreenPopJsApiLogger = createJsApiLogger(screenPopJsApiLogger, "[AqmServiceEvents: ScreenPop] =>");
|
91
|
-
|
92
|
-
// Standalone init
|
93
|
-
export const createScreenPopJsApi = () =>
|
94
|
-
new ScreenPopJsApi({
|
95
|
-
logger: screenPopJsApiLogger,
|
96
|
-
aqmEvents: createServiceEvents<Listeners>({
|
97
|
-
logger: aqmServiceScreenPopJsApiLogger
|
98
|
-
}),
|
99
|
-
serviceChecker: createServiceChecker({ logger: screenPopJsApiLogger })
|
100
|
-
});
|
@@ -1,88 +0,0 @@
|
|
1
|
-
import { AgentxServices, SERVICE } from "@wxcc-desktop/sdk-types";
|
2
|
-
import { createShortcutKeyJsApi } from "./shortcut-key-jsapi";
|
3
|
-
|
4
|
-
jest.mock("@wxcc-desktop/sdk-types", () => {
|
5
|
-
const agentx_services_mock = {
|
6
|
-
SERVICE: {
|
7
|
-
isInited: false,
|
8
|
-
init: async (accessToken: string) => {
|
9
|
-
agentx_services_mock.SERVICE.isInited = true;
|
10
|
-
},
|
11
|
-
shortcut: ({
|
12
|
-
event: {
|
13
|
-
listenKeyPress: jest.fn(),
|
14
|
-
listenKeyConflict: jest.fn(),
|
15
|
-
listenConflictResolved: jest.fn()
|
16
|
-
},
|
17
|
-
register: jest.fn(),
|
18
|
-
unregisterKeys: jest.fn(),
|
19
|
-
getRegisteredKeys: jest.fn(),
|
20
|
-
DEFAULT_SHORTCUT_KEYS: { test: "DEFAULT_SHORTCUT_KEYS" },
|
21
|
-
MODIFIERS: { test: "MODIFIERS" },
|
22
|
-
REGISTERED_KEYS: { test: "REGISTERED_KEYS" }
|
23
|
-
} as unknown) as AgentxServices["shortcut"]
|
24
|
-
} as AgentxServices
|
25
|
-
};
|
26
|
-
return agentx_services_mock;
|
27
|
-
});
|
28
|
-
|
29
|
-
describe("ShortcutKey JSAPI", () => {
|
30
|
-
let shortcutKey: ReturnType<typeof createShortcutKeyJsApi>;
|
31
|
-
|
32
|
-
beforeEach(async () => {
|
33
|
-
await (SERVICE as AgentxServices).init("fake-token");
|
34
|
-
|
35
|
-
shortcutKey = createShortcutKeyJsApi();
|
36
|
-
shortcutKey.init(SERVICE);
|
37
|
-
});
|
38
|
-
|
39
|
-
it("creates", () => {
|
40
|
-
expect(shortcutKey).toBeDefined();
|
41
|
-
expect(shortcutKey["logger"]).toBeDefined();
|
42
|
-
expect(shortcutKey["serviceChecker"]).toBeDefined();
|
43
|
-
});
|
44
|
-
|
45
|
-
it("inits", () => {
|
46
|
-
expect(shortcutKey["checkService"]()).toBeTruthy();
|
47
|
-
});
|
48
|
-
|
49
|
-
it("cleanups", () => {
|
50
|
-
shortcutKey.cleanup();
|
51
|
-
expect(shortcutKey["SERVICE"]).toBeUndefined();
|
52
|
-
});
|
53
|
-
|
54
|
-
it("checks service", () => {
|
55
|
-
shortcutKey["serviceChecker"].check = jest.fn();
|
56
|
-
shortcutKey["checkService"]();
|
57
|
-
|
58
|
-
expect(shortcutKey["serviceChecker"].check).toHaveBeenCalled();
|
59
|
-
});
|
60
|
-
|
61
|
-
it("listens", () => {
|
62
|
-
const listener1 = () => {};
|
63
|
-
shortcutKey.listenKeyPress(listener1);
|
64
|
-
expect(SERVICE.shortcut.event.listenKeyPress).toHaveBeenCalledWith(listener1);
|
65
|
-
|
66
|
-
const listener2 = () => {};
|
67
|
-
shortcutKey.listenKeyConflict(listener2);
|
68
|
-
expect(SERVICE.shortcut.event.listenKeyConflict).toHaveBeenCalledWith(listener2);
|
69
|
-
|
70
|
-
const listener3 = () => {};
|
71
|
-
shortcutKey.listenConflictResolved(listener3);
|
72
|
-
expect(SERVICE.shortcut.event.listenConflictResolved).toHaveBeenCalledWith(listener3);
|
73
|
-
});
|
74
|
-
|
75
|
-
it("registers/unregisters", () => {
|
76
|
-
shortcutKey.register({ test: "A" } as any);
|
77
|
-
expect(SERVICE.shortcut.register).toHaveBeenCalledWith({ test: "A" });
|
78
|
-
|
79
|
-
shortcutKey.unregisterKeys({ test: "B" } as any);
|
80
|
-
expect(SERVICE.shortcut.unregisterKeys).toHaveBeenCalledWith({ test: "B" });
|
81
|
-
});
|
82
|
-
|
83
|
-
it("gets constants", () => {
|
84
|
-
expect(shortcutKey.DEFAULT_SHORTCUT_KEYS).toEqual({ test: "DEFAULT_SHORTCUT_KEYS" });
|
85
|
-
expect(shortcutKey.REGISTERED_KEYS).toEqual({ test: "REGISTERED_KEYS" });
|
86
|
-
expect(shortcutKey.MODIFIERS).toEqual({ test: "MODIFIERS" });
|
87
|
-
});
|
88
|
-
});
|
@@ -1,112 +0,0 @@
|
|
1
|
-
import { AgentxService } from "@wxcc-desktop/sdk-types";
|
2
|
-
import { logger } from "../sdk";
|
3
|
-
import { createJsApiLogger } from "./common/_logger";
|
4
|
-
import { createServiceChecker } from "./common/_service-checker";
|
5
|
-
|
6
|
-
type Config = {
|
7
|
-
logger: ReturnType<typeof createJsApiLogger>;
|
8
|
-
serviceChecker: ReturnType<typeof createServiceChecker>;
|
9
|
-
};
|
10
|
-
|
11
|
-
export class ShortcutKeyJsApi {
|
12
|
-
private readonly logger: Config["logger"];
|
13
|
-
private readonly serviceChecker: Config["serviceChecker"];
|
14
|
-
|
15
|
-
private SERVICE?: AgentxService;
|
16
|
-
|
17
|
-
private checkService() {
|
18
|
-
return this.serviceChecker.check(this.SERVICE);
|
19
|
-
}
|
20
|
-
|
21
|
-
constructor(config: Config) {
|
22
|
-
this.logger = config.logger;
|
23
|
-
this.serviceChecker = config.serviceChecker;
|
24
|
-
}
|
25
|
-
|
26
|
-
//
|
27
|
-
init(SERVICE?: AgentxService) {
|
28
|
-
if (SERVICE) {
|
29
|
-
this.SERVICE = SERVICE;
|
30
|
-
}
|
31
|
-
|
32
|
-
if (!this.checkService()) {
|
33
|
-
return;
|
34
|
-
}
|
35
|
-
|
36
|
-
this.logger.info("Inited");
|
37
|
-
}
|
38
|
-
|
39
|
-
cleanup() {
|
40
|
-
this.SERVICE = undefined;
|
41
|
-
|
42
|
-
this.logger.info("Cleaned");
|
43
|
-
}
|
44
|
-
|
45
|
-
// Service-related
|
46
|
-
|
47
|
-
listenKeyPress(...args: Parameters<AgentxService["shortcut"]["event"]["listenKeyPress"]>) {
|
48
|
-
if (!this.checkService()) {
|
49
|
-
return;
|
50
|
-
}
|
51
|
-
|
52
|
-
this.SERVICE?.shortcut.event.listenKeyPress(...args);
|
53
|
-
}
|
54
|
-
|
55
|
-
listenKeyConflict(...args: Parameters<AgentxService["shortcut"]["event"]["listenKeyConflict"]>) {
|
56
|
-
if (!this.checkService()) {
|
57
|
-
return;
|
58
|
-
}
|
59
|
-
|
60
|
-
this.SERVICE?.shortcut.event.listenKeyConflict(...args);
|
61
|
-
}
|
62
|
-
|
63
|
-
listenConflictResolved(...args: Parameters<AgentxService["shortcut"]["event"]["listenConflictResolved"]>) {
|
64
|
-
if (!this.checkService()) {
|
65
|
-
return;
|
66
|
-
}
|
67
|
-
|
68
|
-
this.SERVICE?.shortcut.event.listenConflictResolved(...args);
|
69
|
-
}
|
70
|
-
|
71
|
-
register(...args: Parameters<AgentxService["shortcut"]["register"]>) {
|
72
|
-
if (!this.checkService()) {
|
73
|
-
return;
|
74
|
-
}
|
75
|
-
this.SERVICE?.shortcut.register(...args);
|
76
|
-
}
|
77
|
-
|
78
|
-
unregisterKeys(...args: Parameters<AgentxService["shortcut"]["unregisterKeys"]>) {
|
79
|
-
if (!this.checkService()) {
|
80
|
-
return;
|
81
|
-
}
|
82
|
-
this.SERVICE?.shortcut.unregisterKeys(...args);
|
83
|
-
}
|
84
|
-
|
85
|
-
getRegisteredKeys() {
|
86
|
-
if (!this.checkService()) {
|
87
|
-
return;
|
88
|
-
}
|
89
|
-
|
90
|
-
return this.SERVICE?.shortcut.getRegisteredKeys();
|
91
|
-
}
|
92
|
-
|
93
|
-
get DEFAULT_SHORTCUT_KEYS() {
|
94
|
-
return this.SERVICE?.shortcut.DEFAULT_SHORTCUT_KEYS;
|
95
|
-
}
|
96
|
-
|
97
|
-
get MODIFIERS() {
|
98
|
-
return this.SERVICE?.shortcut.MODIFIERS;
|
99
|
-
}
|
100
|
-
|
101
|
-
get REGISTERED_KEYS() {
|
102
|
-
return this.SERVICE?.shortcut.REGISTERED_KEYS;
|
103
|
-
}
|
104
|
-
}
|
105
|
-
|
106
|
-
const shortcutKeyJsApiLogger = createJsApiLogger(logger, "[ShortcutKey JSAPI] =>");
|
107
|
-
|
108
|
-
export const createShortcutKeyJsApi = () =>
|
109
|
-
new ShortcutKeyJsApi({
|
110
|
-
logger: shortcutKeyJsApiLogger,
|
111
|
-
serviceChecker: createServiceChecker({ logger: shortcutKeyJsApiLogger })
|
112
|
-
});
|
package/src/sdk.ts
DELETED
package/src/tsconfig.json
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"compilerOptions": {
|
3
|
-
"target": "ES2016",
|
4
|
-
"module": "esnext",
|
5
|
-
"moduleResolution": "node",
|
6
|
-
"types": ["node", "jest"],
|
7
|
-
|
8
|
-
"strict": true,
|
9
|
-
"removeComments": false,
|
10
|
-
"esModuleInterop": true,
|
11
|
-
"experimentalDecorators": true,
|
12
|
-
"forceConsistentCasingInFileNames": true,
|
13
|
-
|
14
|
-
"declaration": true,
|
15
|
-
"declarationDir": "../dist/types"
|
16
|
-
},
|
17
|
-
"include": ["**/*.ts"]
|
18
|
-
}
|
package/tsconfig.json
DELETED
package/webpack.config.ts
DELETED
@@ -1,134 +0,0 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
2
|
-
import { CleanWebpackPlugin } from "clean-webpack-plugin";
|
3
|
-
import CopyWebpackPlugin from "copy-webpack-plugin";
|
4
|
-
import HtmlWebpackPlugin from "html-webpack-plugin";
|
5
|
-
import * as path from "path";
|
6
|
-
import RemovePlugin from "remove-files-webpack-plugin";
|
7
|
-
import * as webpack from "webpack";
|
8
|
-
import merge from "webpack-merge";
|
9
|
-
//import nodeExternals from "webpack-node-externals";
|
10
|
-
|
11
|
-
const pSrc = path.resolve("src");
|
12
|
-
const pDist = path.resolve("dist");
|
13
|
-
export const pBuild = path.resolve("build");
|
14
|
-
|
15
|
-
const common: webpack.Configuration = {
|
16
|
-
output: {
|
17
|
-
publicPath: "/"
|
18
|
-
},
|
19
|
-
resolve: {
|
20
|
-
extensions: [".ts", ".js"]
|
21
|
-
}
|
22
|
-
};
|
23
|
-
|
24
|
-
function ruleTS({ isDev }: { isDev: boolean }) {
|
25
|
-
return {
|
26
|
-
test: /\.ts$/,
|
27
|
-
loader: "ts-loader",
|
28
|
-
include: pSrc,
|
29
|
-
options: {
|
30
|
-
compilerOptions: {
|
31
|
-
declarationMap: isDev,
|
32
|
-
sourceMap: isDev
|
33
|
-
}
|
34
|
-
}
|
35
|
-
};
|
36
|
-
}
|
37
|
-
|
38
|
-
// DEV
|
39
|
-
// ----------
|
40
|
-
|
41
|
-
export const commonDev = merge(common, {
|
42
|
-
name: "dev",
|
43
|
-
mode: "development",
|
44
|
-
devtool: "source-map",
|
45
|
-
entry: {
|
46
|
-
index: "./src/[sandbox]/sandbox.ts"
|
47
|
-
},
|
48
|
-
output: {
|
49
|
-
path: pBuild
|
50
|
-
},
|
51
|
-
module: {
|
52
|
-
rules: [ruleTS({ isDev: true })]
|
53
|
-
},
|
54
|
-
plugins: [
|
55
|
-
new CopyWebpackPlugin({
|
56
|
-
patterns: [{ from: "./src/[sandbox]/assets/i18n", to: "i18n" }]
|
57
|
-
}),
|
58
|
-
new webpack.ProvidePlugin({
|
59
|
-
AGENTX_SERVICE: ["@wxcc-desktop/sdk-types", "SERVICE"]
|
60
|
-
}),
|
61
|
-
new HtmlWebpackPlugin({
|
62
|
-
template: "./src/[sandbox]/index.html",
|
63
|
-
favicon: "./src/[sandbox]/favicon.ico" //
|
64
|
-
})
|
65
|
-
]
|
66
|
-
});
|
67
|
-
|
68
|
-
const dev = merge(commonDev, {
|
69
|
-
plugins: [new CleanWebpackPlugin()]
|
70
|
-
});
|
71
|
-
|
72
|
-
// DIST
|
73
|
-
// ----------
|
74
|
-
|
75
|
-
const commonDist = merge(common, {
|
76
|
-
entry: {
|
77
|
-
index: "./src/index.ts"
|
78
|
-
},
|
79
|
-
output: {
|
80
|
-
path: pDist,
|
81
|
-
filename: "[name].js",
|
82
|
-
libraryTarget: "umd"
|
83
|
-
},
|
84
|
-
//externals: [nodeExternals({ modulesFromFile: true })],
|
85
|
-
plugins: [
|
86
|
-
new CleanWebpackPlugin(),
|
87
|
-
new RemovePlugin({
|
88
|
-
after: {
|
89
|
-
log: false,
|
90
|
-
include: ["./dist/types/[sandbox]"],
|
91
|
-
test: [
|
92
|
-
{
|
93
|
-
folder: "./dist/types",
|
94
|
-
method: p => new RegExp(/\.test\.d\.ts(\.map)*$/).test(p),
|
95
|
-
recursive: true
|
96
|
-
}
|
97
|
-
]
|
98
|
-
}
|
99
|
-
}) as any
|
100
|
-
]
|
101
|
-
});
|
102
|
-
|
103
|
-
const distDev = merge(commonDist, {
|
104
|
-
name: "distDev",
|
105
|
-
mode: "development",
|
106
|
-
devtool: "source-map",
|
107
|
-
module: {
|
108
|
-
rules: [ruleTS({ isDev: true })]
|
109
|
-
},
|
110
|
-
// Just for check built widget in AgentX (for example)
|
111
|
-
entry: {
|
112
|
-
["widget-using-js-api"]: "./src/[sandbox]/widget-using-js-api.ts"
|
113
|
-
},
|
114
|
-
plugins: [
|
115
|
-
new CopyWebpackPlugin({
|
116
|
-
patterns: [{ from: "./src/[sandbox]/assets/i18n/widget-using-js-api", to: "i18n/widget-using-js-api" }]
|
117
|
-
})
|
118
|
-
]
|
119
|
-
});
|
120
|
-
|
121
|
-
const distDevWatch = merge(distDev, {
|
122
|
-
name: "distDevWatch",
|
123
|
-
watch: true
|
124
|
-
});
|
125
|
-
|
126
|
-
const distProd = merge(commonDist, {
|
127
|
-
name: "distProd",
|
128
|
-
mode: "production",
|
129
|
-
module: {
|
130
|
-
rules: [ruleTS({ isDev: false })]
|
131
|
-
}
|
132
|
-
});
|
133
|
-
|
134
|
-
export default [dev, distDev, distDevWatch, distProd];
|