@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.
Files changed (44) hide show
  1. package/dist/cjs/app.config.json +17 -0
  2. package/dist/cjs/common.js +16 -0
  3. package/dist/cjs/event.js +67 -0
  4. package/dist/cjs/eventManager.js +201 -0
  5. package/dist/cjs/guest.js +16 -0
  6. package/dist/cjs/index.html +12 -0
  7. package/dist/cjs/index.js +35 -0
  8. package/dist/cjs/messageType.js +37 -0
  9. package/dist/cjs/package.json +4 -0
  10. package/dist/cjs/remoting.js +386 -0
  11. package/dist/cjs/remotingEventMessage.js +16 -0
  12. package/dist/cjs/scriptingObject.js +119 -0
  13. package/dist/cjs/tests/scriptingObjects/appraisalServiceModule.js +101 -0
  14. package/dist/cjs/tests/scriptingObjects/constant.js +26 -0
  15. package/dist/cjs/tests/scriptingObjects/global.js +61 -0
  16. package/dist/esm/app.config.json +17 -0
  17. package/dist/esm/common.js +0 -0
  18. package/dist/esm/event.js +47 -0
  19. package/dist/esm/eventManager.js +182 -0
  20. package/dist/esm/guest.js +0 -0
  21. package/dist/esm/index.html +12 -0
  22. package/dist/esm/index.js +15 -0
  23. package/dist/esm/messageType.js +17 -0
  24. package/dist/esm/package.json +4 -0
  25. package/dist/esm/remoting.js +367 -0
  26. package/dist/esm/remotingEventMessage.js +0 -0
  27. package/dist/esm/scriptingObject.js +100 -0
  28. package/dist/esm/tests/scriptingObjects/appraisalServiceModule.js +82 -0
  29. package/dist/esm/tests/scriptingObjects/constant.js +6 -0
  30. package/dist/esm/tests/scriptingObjects/global.js +42 -0
  31. package/dist/types/common.d.ts +35 -0
  32. package/dist/types/event.d.ts +82 -0
  33. package/dist/types/eventManager.d.ts +125 -0
  34. package/dist/types/guest.d.ts +90 -0
  35. package/dist/types/index.d.ts +12 -0
  36. package/dist/types/messageType.d.ts +13 -0
  37. package/dist/types/remoting.d.ts +237 -0
  38. package/dist/types/remotingEventMessage.d.ts +26 -0
  39. package/dist/types/scriptingObject.d.ts +37 -0
  40. package/dist/types/tests/eventManager.test.d.ts +1 -0
  41. package/dist/types/tests/scriptingObjects/appraisalServiceModule.d.ts +33 -0
  42. package/dist/types/tests/scriptingObjects/constant.d.ts +2 -0
  43. package/dist/types/tests/scriptingObjects/global.d.ts +10 -0
  44. 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();
@@ -0,0 +1,17 @@
1
+ {
2
+ "appId": "lib-boilerplate",
3
+ "activeEnv": "localhost",
4
+ "serviceEndpoints": {
5
+ "api": "",
6
+ "idp": ""
7
+ },
8
+ "env": {
9
+ "localhost": {},
10
+ "dev2": {},
11
+ "qa2": {},
12
+ "qa3": {},
13
+ "int": {},
14
+ "stage": {},
15
+ "prod": {}
16
+ }
17
+ }
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
+ };
@@ -0,0 +1,4 @@
1
+ {
2
+ "type": "module",
3
+ "sideEffects": false
4
+ }