@elliemae/microfe-common 2.0.0-next.30
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/dist/cjs/app.config.json +17 -0
- package/dist/cjs/common.js +16 -0
- package/dist/cjs/event.js +67 -0
- package/dist/cjs/eventManager.js +201 -0
- package/dist/cjs/guest.js +16 -0
- package/dist/cjs/index.html +12 -0
- package/dist/cjs/index.js +35 -0
- package/dist/cjs/messageType.js +37 -0
- package/dist/cjs/package.json +4 -0
- package/dist/cjs/remoting.js +386 -0
- package/dist/cjs/remotingEventMessage.js +16 -0
- package/dist/cjs/scriptingObject.js +119 -0
- package/dist/cjs/tests/scriptingObjects/appraisalServiceModule.js +101 -0
- package/dist/cjs/tests/scriptingObjects/constant.js +26 -0
- package/dist/cjs/tests/scriptingObjects/global.js +61 -0
- package/dist/esm/app.config.json +17 -0
- package/dist/esm/common.js +0 -0
- package/dist/esm/event.js +47 -0
- package/dist/esm/eventManager.js +182 -0
- package/dist/esm/guest.js +0 -0
- package/dist/esm/index.html +12 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/messageType.js +17 -0
- package/dist/esm/package.json +4 -0
- package/dist/esm/remoting.js +367 -0
- package/dist/esm/remotingEventMessage.js +0 -0
- package/dist/esm/scriptingObject.js +100 -0
- package/dist/esm/tests/scriptingObjects/appraisalServiceModule.js +82 -0
- package/dist/esm/tests/scriptingObjects/constant.js +6 -0
- package/dist/esm/tests/scriptingObjects/global.js +42 -0
- package/dist/types/common.d.ts +35 -0
- package/dist/types/event.d.ts +82 -0
- package/dist/types/eventManager.d.ts +125 -0
- package/dist/types/guest.d.ts +90 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/messageType.d.ts +13 -0
- package/dist/types/remoting.d.ts +237 -0
- package/dist/types/remotingEventMessage.d.ts +26 -0
- package/dist/types/scriptingObject.d.ts +37 -0
- package/dist/types/tests/eventManager.test.d.ts +1 -0
- package/dist/types/tests/scriptingObjects/appraisalServiceModule.d.ts +33 -0
- package/dist/types/tests/scriptingObjects/constant.d.ts +2 -0
- package/dist/types/tests/scriptingObjects/global.d.ts +10 -0
- package/package.json +62 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
var __publicField = (obj, key, value) => {
|
|
21
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
22
|
+
return value;
|
|
23
|
+
};
|
|
24
|
+
var __accessCheck = (obj, member, msg) => {
|
|
25
|
+
if (!member.has(obj))
|
|
26
|
+
throw TypeError("Cannot " + msg);
|
|
27
|
+
};
|
|
28
|
+
var __privateGet = (obj, member, getter) => {
|
|
29
|
+
__accessCheck(obj, member, "read from private field");
|
|
30
|
+
return getter ? getter.call(obj) : member.get(obj);
|
|
31
|
+
};
|
|
32
|
+
var __privateAdd = (obj, member, value) => {
|
|
33
|
+
if (member.has(obj))
|
|
34
|
+
throw TypeError("Cannot add the same private member more than once");
|
|
35
|
+
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
36
|
+
};
|
|
37
|
+
var global_exports = {};
|
|
38
|
+
__export(global_exports, {
|
|
39
|
+
Global: () => Global
|
|
40
|
+
});
|
|
41
|
+
module.exports = __toCommonJS(global_exports);
|
|
42
|
+
var import_event = require("../../event.js");
|
|
43
|
+
var import__ = require("../../index.js");
|
|
44
|
+
var _data;
|
|
45
|
+
class Global extends import__.ScriptingObject {
|
|
46
|
+
constructor() {
|
|
47
|
+
super("Global");
|
|
48
|
+
__privateAdd(this, _data, /* @__PURE__ */ new Map());
|
|
49
|
+
__publicField(this, "Change", new import_event.Event({
|
|
50
|
+
name: "Change",
|
|
51
|
+
requiresFeedback: false,
|
|
52
|
+
so: this
|
|
53
|
+
}));
|
|
54
|
+
__publicField(this, "set", (key, value) => {
|
|
55
|
+
__privateGet(this, _data).set(key, value);
|
|
56
|
+
return Promise.resolve();
|
|
57
|
+
});
|
|
58
|
+
__publicField(this, "get", (key) => Promise.resolve(__privateGet(this, _data).get(key)));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
_data = new WeakMap();
|
|
File without changes
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
class Event {
|
|
2
|
+
/* eslint-enable indent */
|
|
3
|
+
/**
|
|
4
|
+
* scripting object that owns this event
|
|
5
|
+
*/
|
|
6
|
+
scriptingObject;
|
|
7
|
+
/**
|
|
8
|
+
* name of the event
|
|
9
|
+
*/
|
|
10
|
+
name;
|
|
11
|
+
/**
|
|
12
|
+
* scripting object id that owns this event
|
|
13
|
+
*/
|
|
14
|
+
objectId;
|
|
15
|
+
/**
|
|
16
|
+
* flag indicating this event requires feedback from all of the listeners
|
|
17
|
+
*/
|
|
18
|
+
requiresFeedback;
|
|
19
|
+
/**
|
|
20
|
+
* unique id of the event
|
|
21
|
+
*/
|
|
22
|
+
id;
|
|
23
|
+
/**
|
|
24
|
+
* Create an event object
|
|
25
|
+
*
|
|
26
|
+
* @param {EventParam} param - parameters for creating an event
|
|
27
|
+
*/
|
|
28
|
+
constructor(param) {
|
|
29
|
+
const { name, requiresFeedback = false, so } = param;
|
|
30
|
+
if (!name)
|
|
31
|
+
throw new Error("Event name is required");
|
|
32
|
+
if (!so)
|
|
33
|
+
throw new Error("Scripting object is required");
|
|
34
|
+
this.scriptingObject = so;
|
|
35
|
+
this.objectId = so.id;
|
|
36
|
+
this.name = name;
|
|
37
|
+
this.id = `${this.objectId}.${this.name}`.toLowerCase();
|
|
38
|
+
this.requiresFeedback = requiresFeedback;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const isEvent = (value) => value instanceof Event;
|
|
42
|
+
const getEventId = (objectId, eventName) => `${objectId.toLowerCase()}.${eventName.toLowerCase()}`;
|
|
43
|
+
export {
|
|
44
|
+
Event,
|
|
45
|
+
getEventId,
|
|
46
|
+
isEvent
|
|
47
|
+
};
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
+
var __publicField = (obj, key, value) => {
|
|
4
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
|
+
return value;
|
|
6
|
+
};
|
|
7
|
+
var __accessCheck = (obj, member, msg) => {
|
|
8
|
+
if (!member.has(obj))
|
|
9
|
+
throw TypeError("Cannot " + msg);
|
|
10
|
+
};
|
|
11
|
+
var __privateGet = (obj, member, getter) => {
|
|
12
|
+
__accessCheck(obj, member, "read from private field");
|
|
13
|
+
return getter ? getter.call(obj) : member.get(obj);
|
|
14
|
+
};
|
|
15
|
+
var __privateAdd = (obj, member, value) => {
|
|
16
|
+
if (member.has(obj))
|
|
17
|
+
throw TypeError("Cannot add the same private member more than once");
|
|
18
|
+
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
19
|
+
};
|
|
20
|
+
var _listeners, _asyncCallwithTimeout, _emitEvent, _emitEventWithFeedback;
|
|
21
|
+
import { v4 as uuidv4 } from "uuid";
|
|
22
|
+
const flatten = (source, target = []) => {
|
|
23
|
+
const retVal = target || [];
|
|
24
|
+
if (source && source.forEach) {
|
|
25
|
+
source.forEach((item) => {
|
|
26
|
+
flatten(item, retVal);
|
|
27
|
+
});
|
|
28
|
+
} else if (typeof source !== "undefined") {
|
|
29
|
+
retVal.push(source);
|
|
30
|
+
}
|
|
31
|
+
return retVal;
|
|
32
|
+
};
|
|
33
|
+
class EventManager {
|
|
34
|
+
constructor() {
|
|
35
|
+
/**
|
|
36
|
+
* event listeners
|
|
37
|
+
*/
|
|
38
|
+
__privateAdd(this, _listeners, /* @__PURE__ */ new Map());
|
|
39
|
+
/**
|
|
40
|
+
* call an async function with a timeout
|
|
41
|
+
*
|
|
42
|
+
* @param promise async function to call
|
|
43
|
+
* @param feedbackWaitTime timeout in milliseconds
|
|
44
|
+
* @returns result of the async function or undefined if timeout
|
|
45
|
+
*/
|
|
46
|
+
__privateAdd(this, _asyncCallwithTimeout, (promise, feedbackWaitTime) => {
|
|
47
|
+
const timeout = new Promise((resolve) => {
|
|
48
|
+
setTimeout(() => {
|
|
49
|
+
resolve();
|
|
50
|
+
}, feedbackWaitTime);
|
|
51
|
+
});
|
|
52
|
+
return Promise.race([promise, timeout]);
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* emit an event to set of listeners
|
|
56
|
+
*
|
|
57
|
+
* @param {EmitEventParam} param - parameters for emitting an event
|
|
58
|
+
*/
|
|
59
|
+
__privateAdd(this, _emitEvent, (param) => {
|
|
60
|
+
const { eventName, scriptingObject, eventParams, listeners } = param;
|
|
61
|
+
listeners.map(async (listener) => {
|
|
62
|
+
try {
|
|
63
|
+
await listener.callback({
|
|
64
|
+
obj: scriptingObject,
|
|
65
|
+
eventName,
|
|
66
|
+
eventParams
|
|
67
|
+
});
|
|
68
|
+
} catch (e) {
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
__privateAdd(this, _emitEventWithFeedback, async ({
|
|
73
|
+
eventId,
|
|
74
|
+
eventName,
|
|
75
|
+
scriptingObject,
|
|
76
|
+
eventParams,
|
|
77
|
+
feedbackWaitTime
|
|
78
|
+
}) => {
|
|
79
|
+
const listeners = __privateGet(this, _listeners).get(eventId) || [];
|
|
80
|
+
const promises = listeners.map(
|
|
81
|
+
(listener) => __privateGet(this, _asyncCallwithTimeout).call(
|
|
82
|
+
this,
|
|
83
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
84
|
+
listener.callback({
|
|
85
|
+
obj: scriptingObject,
|
|
86
|
+
eventName,
|
|
87
|
+
eventParams
|
|
88
|
+
}),
|
|
89
|
+
feedbackWaitTime
|
|
90
|
+
)
|
|
91
|
+
);
|
|
92
|
+
const retValues = await Promise.all(promises);
|
|
93
|
+
return flatten(retValues);
|
|
94
|
+
});
|
|
95
|
+
/**
|
|
96
|
+
* dispatch an event
|
|
97
|
+
*
|
|
98
|
+
* @param {DispatchEventParam<EventId, Params>} param - parameters for dispatching an event
|
|
99
|
+
*/
|
|
100
|
+
__publicField(this, "dispatchEvent", async (param) => {
|
|
101
|
+
const {
|
|
102
|
+
event: { id, name, requiresFeedback, scriptingObject },
|
|
103
|
+
eventParams,
|
|
104
|
+
feedbackWaitTime = 1e3
|
|
105
|
+
} = param;
|
|
106
|
+
if (!id)
|
|
107
|
+
throw new Error("Event Id is required");
|
|
108
|
+
const listeners = __privateGet(this, _listeners).get(id) || [];
|
|
109
|
+
if (!requiresFeedback) {
|
|
110
|
+
__privateGet(this, _emitEvent).call(this, {
|
|
111
|
+
eventName: name,
|
|
112
|
+
scriptingObject,
|
|
113
|
+
eventParams,
|
|
114
|
+
listeners
|
|
115
|
+
});
|
|
116
|
+
return Promise.resolve();
|
|
117
|
+
}
|
|
118
|
+
return __privateGet(this, _emitEventWithFeedback).call(this, {
|
|
119
|
+
eventId: id,
|
|
120
|
+
eventName: name,
|
|
121
|
+
scriptingObject,
|
|
122
|
+
eventParams,
|
|
123
|
+
feedbackWaitTime
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
/**
|
|
127
|
+
* Subscribe to an event
|
|
128
|
+
*
|
|
129
|
+
* @param {SubscribeParam<EventId, AppEvents[EventId]>} param - parameters for subscribing to an event
|
|
130
|
+
*/
|
|
131
|
+
__publicField(this, "subscribe", (param) => {
|
|
132
|
+
const { eventId, listener } = param;
|
|
133
|
+
if (!eventId)
|
|
134
|
+
throw new Error("eventId is required");
|
|
135
|
+
if (!listener)
|
|
136
|
+
throw new Error("Listener is required");
|
|
137
|
+
const listeners = __privateGet(this, _listeners).get(eventId) || [];
|
|
138
|
+
const subscriptionId = uuidv4();
|
|
139
|
+
listeners.push({
|
|
140
|
+
subscriptionId,
|
|
141
|
+
callback: listener
|
|
142
|
+
});
|
|
143
|
+
__privateGet(this, _listeners).set(eventId, listeners);
|
|
144
|
+
return subscriptionId;
|
|
145
|
+
});
|
|
146
|
+
/**
|
|
147
|
+
* Unsubscribe from an event
|
|
148
|
+
*
|
|
149
|
+
* @param {UnsubscribeParam<EventId>} param - parameters for unsubscribing from an event
|
|
150
|
+
*/
|
|
151
|
+
__publicField(this, "unsubscribe", (param) => {
|
|
152
|
+
const { eventId, subscriptionId } = param;
|
|
153
|
+
if (!eventId)
|
|
154
|
+
throw new Error("eventId id is required");
|
|
155
|
+
if (subscriptionId) {
|
|
156
|
+
const listeners = __privateGet(this, _listeners).get(eventId) || [];
|
|
157
|
+
const index = listeners.findIndex(
|
|
158
|
+
(listener) => listener.subscriptionId === subscriptionId
|
|
159
|
+
);
|
|
160
|
+
if (index > -1) {
|
|
161
|
+
listeners.splice(index, 1);
|
|
162
|
+
__privateGet(this, _listeners).set(eventId, listeners);
|
|
163
|
+
}
|
|
164
|
+
} else {
|
|
165
|
+
__privateGet(this, _listeners).delete(eventId);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
/**
|
|
169
|
+
* Unsubscribe from all events
|
|
170
|
+
*/
|
|
171
|
+
__publicField(this, "unsubscribeAll", () => {
|
|
172
|
+
__privateGet(this, _listeners).clear();
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
_listeners = new WeakMap();
|
|
177
|
+
_asyncCallwithTimeout = new WeakMap();
|
|
178
|
+
_emitEvent = new WeakMap();
|
|
179
|
+
_emitEventWithFeedback = new WeakMap();
|
|
180
|
+
export {
|
|
181
|
+
EventManager
|
|
182
|
+
};
|
|
File without changes
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
+
<title>Common</title>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Remoting, sendMessage } from "./remoting.js";
|
|
2
|
+
import { EventManager } from "./eventManager.js";
|
|
3
|
+
import { getEventId } from "./event.js";
|
|
4
|
+
import { Event } from "./event.js";
|
|
5
|
+
import { ScriptingObject } from "./scriptingObject.js";
|
|
6
|
+
import { MessageType } from "./messageType.js";
|
|
7
|
+
export {
|
|
8
|
+
Event,
|
|
9
|
+
EventManager,
|
|
10
|
+
MessageType,
|
|
11
|
+
Remoting,
|
|
12
|
+
ScriptingObject,
|
|
13
|
+
getEventId,
|
|
14
|
+
sendMessage
|
|
15
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var MessageType = /* @__PURE__ */ ((MessageType2) => {
|
|
2
|
+
MessageType2["GuestReady"] = "guest:ready";
|
|
3
|
+
MessageType2["GuestClose"] = "guest:close";
|
|
4
|
+
MessageType2["GuestReadyComplete"] = "guest:readyComplete";
|
|
5
|
+
MessageType2["GuestResize"] = "guest:resize";
|
|
6
|
+
MessageType2["GuestFocus"] = "guest:focus";
|
|
7
|
+
MessageType2["HandShake"] = "handshake";
|
|
8
|
+
MessageType2["HandShakeAck"] = "handshake:ack";
|
|
9
|
+
MessageType2["ObjectInvoke"] = "object:invoke";
|
|
10
|
+
MessageType2["ObjectGet"] = "object:get";
|
|
11
|
+
MessageType2["ObjectEvent"] = "object:event";
|
|
12
|
+
MessageType2["HostConfig"] = "host:config";
|
|
13
|
+
return MessageType2;
|
|
14
|
+
})(MessageType || {});
|
|
15
|
+
export {
|
|
16
|
+
MessageType
|
|
17
|
+
};
|