@qelos/web-sdk 3.1.27 → 3.1.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/README.md CHANGED
@@ -1,47 +1,27 @@
1
- # @qelos/sdk
2
-
3
- SDK to use Qelos common API endpoints.
4
-
5
- Can be used for both backend and frontend applications.
1
+ # @qelos/web-sdk
6
2
 
3
+ A package to manage communication between a Plugin MFE to a QELOS application host.
7
4
  ## Installation
8
5
 
9
6
  ```shell
10
- npm install @qelos/sdk
7
+ npm install @qelos/web-sdk
11
8
  ```
12
9
 
13
10
  ## Usage
14
11
 
15
12
  ```typescript
16
- // my-sdk.ts
17
- import QelosSDK from '@qelos/sdk';
13
+ import { authorize, code } from "@qelos/web-sdk";
18
14
 
19
- const sdk = new QelosSDK({appUrl: 'https://yourdomain.com', fetch: window.fetch});
20
- export default sdk;
21
- ```
22
- **Note:** You can inject a fetch-like function, such as `node-fetch` or any fetch equivalent.
23
-
24
- ### Basic usage of SDK instance:
25
- ```typescript jsx
26
- // MyPostsList.tsx
27
- import sdk from './my-sdk';
28
-
29
- function MyPostsList() {
30
- const [posts, setPosts] = useState([]);
31
- const [querySearch, setQuery] = useState([]);
32
- useEffect(() => {
33
- sdk.posts.getList({q: querySearch, limit: 50});
34
- }, [querySearch]);
35
-
36
- return (
37
- <div>
38
- <input type="text" placeholder="Search posts" onChange={e => setQuery(e.target.value)}/>
39
- {
40
- posts.map(post => <PostItem post={post} key={post._id}/>)
41
- }
42
- </div>
43
- )
44
- }
15
+ // authorize your micro-frontend application
16
+ // to recognize the user and tenant of host application:
17
+ const { user, tenant } = authorize();
18
+
19
+
20
+ // add the "code" parameter given from this web-sdk
21
+ // it's a code created for this specific intercation with the user:
22
+ fetch('/api/you-own-api', {
23
+ headers: { code }
24
+ })
45
25
  ```
46
26
 
47
27
  Enjoy!
package/dist/qelos.js CHANGED
@@ -1,26 +1,38 @@
1
1
  let qelosHostname = '*';
2
2
  const callbacks = new Map();
3
3
  const FROM = 'qelos-mfe';
4
- window.addEventListener('message', (event) => {
5
- if (event.data.qelosHostname) {
6
- qelosHostname = event.data.qelosHostname;
7
- }
8
- if (callbacks.has(event.data.eventName)) {
9
- const eventCallbacks = callbacks.get(event.data.eventName);
4
+ function onEventFromHost({ eventName, payload } = {}) {
5
+ if (callbacks.has(eventName)) {
6
+ const eventCallbacks = callbacks.get(eventName);
10
7
  eventCallbacks.forEach((item) => {
11
- item.callback(event.data.payload);
8
+ item.callback(payload);
12
9
  if (item.once) {
13
10
  eventCallbacks.delete(item);
14
11
  }
15
12
  });
16
13
  }
14
+ }
15
+ window.addEventListener('message', (event) => {
16
+ if (event.data.qelosHostname) {
17
+ qelosHostname = event.data.qelosHostname;
18
+ }
19
+ if (event.data.events instanceof Array) {
20
+ event.data.events.forEach(onEventFromHost);
21
+ }
17
22
  });
18
- export function dispatch(eventName, payload) {
23
+ const events = [];
24
+ function dispatchEvents() {
19
25
  window.parent.postMessage({
20
26
  from: FROM,
21
- eventName,
22
- payload
27
+ events
23
28
  }, qelosHostname);
29
+ events.length = 0;
30
+ }
31
+ export function dispatch(eventName, payload) {
32
+ if (!events.length) {
33
+ requestAnimationFrame(dispatchEvents);
34
+ }
35
+ events.push({ eventName, payload });
24
36
  }
25
37
  export function on(eventName, callback, { once } = { once: false }) {
26
38
  if (!callbacks.has(eventName)) {
package/dist/qelos.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"qelos.js","sourceRoot":"","sources":["../src/qelos.ts"],"names":[],"mappings":"AAAA,IAAI,aAAa,GAAG,GAAG,CAAC;AAExB,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4C,CAAC;AAEtE,MAAM,IAAI,GAAG,WAAW,CAAC;AAEzB,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;IAC3C,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE;QAC5B,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;KAC1C;IACD,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QACvC,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3D,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAC7B;QACH,CAAC,CAAC,CAAA;KACH;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,UAAU,QAAQ,CAAC,SAAiB,EAAE,OAAa;IACvD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;QACxB,IAAI,EAAE,IAAI;QACV,SAAS;QACT,OAAO;KACR,EAAE,aAAa,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,EAAE,CAAC,SAAiB,EAAE,QAAmC,EAAE,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAE,KAAK,EAAC;IAC/F,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QAC7B,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;KACpC;IACD,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,EAAC,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"qelos.js","sourceRoot":"","sources":["../src/qelos.ts"],"names":[],"mappings":"AAAA,IAAI,aAAa,GAAG,GAAG,CAAC;AAExB,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4C,CAAC;AAEtE,MAAM,IAAI,GAAG,WAAW,CAAC;AAEzB,SAAS,eAAe,CAAC,EAAC,SAAS,EAAE,OAAO,KAAS,EAAE;IACrD,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QAC5B,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChD,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,IAAI,EAAE;gBACb,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aAC7B;QACH,CAAC,CAAC,CAAA;KACH;AACH,CAAC;AAED,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;IAC3C,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE;QAC5B,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;KAC1C;IACD,IAAG,KAAK,CAAC,IAAI,CAAC,MAAM,YAAY,KAAK,EAAE;QACrC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;KAC5C;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,EAAE,CAAC;AAElB,SAAS,cAAc;IACrB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;QACxB,IAAI,EAAE,IAAI;QACV,MAAM;KACP,EAAE,aAAa,CAAC,CAAC;IAClB,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,SAAiB,EAAE,OAAa;IACvD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;QAClB,qBAAqB,CAAC,cAAc,CAAC,CAAA;KACtC;IACD,MAAM,CAAC,IAAI,CAAC,EAAC,SAAS,EAAE,OAAO,EAAC,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,EAAE,CAAC,SAAiB,EAAE,QAAmC,EAAE,EAAC,IAAI,EAAC,GAAG,EAAC,IAAI,EAAE,KAAK,EAAC;IAC/F,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QAC7B,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;KACpC;IACD,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,EAAC,CAAC,CAAC;AAChE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qelos/web-sdk",
3
- "version": "3.1.27",
3
+ "version": "3.1.30",
4
4
  "description": "Frontend Web SDK for Qelos API",
5
5
  "main": "./dist/index.js",
6
6
  "scripts": {
package/src/qelos.ts CHANGED
@@ -4,27 +4,42 @@ const callbacks = new Map<string, Set<{ callback, once: boolean }>>();
4
4
 
5
5
  const FROM = 'qelos-mfe';
6
6
 
7
- window.addEventListener('message', (event) => {
8
- if (event.data.qelosHostname) {
9
- qelosHostname = event.data.qelosHostname;
10
- }
11
- if (callbacks.has(event.data.eventName)) {
12
- const eventCallbacks = callbacks.get(event.data.eventName);
7
+ function onEventFromHost({eventName, payload}: any = {}) {
8
+ if (callbacks.has(eventName)) {
9
+ const eventCallbacks = callbacks.get(eventName);
13
10
  eventCallbacks.forEach((item) => {
14
- item.callback(event.data.payload);
11
+ item.callback(payload);
15
12
  if (item.once) {
16
13
  eventCallbacks.delete(item);
17
14
  }
18
15
  })
19
16
  }
20
- })
17
+ }
21
18
 
22
- export function dispatch(eventName: string, payload?: any) {
19
+ window.addEventListener('message', (event) => {
20
+ if (event.data.qelosHostname) {
21
+ qelosHostname = event.data.qelosHostname;
22
+ }
23
+ if(event.data.events instanceof Array) {
24
+ event.data.events.forEach(onEventFromHost);
25
+ }
26
+ });
27
+
28
+ const events = [];
29
+
30
+ function dispatchEvents() {
23
31
  window.parent.postMessage({
24
32
  from: FROM,
25
- eventName,
26
- payload
33
+ events
27
34
  }, qelosHostname);
35
+ events.length = 0;
36
+ }
37
+
38
+ export function dispatch(eventName: string, payload?: any) {
39
+ if (!events.length) {
40
+ requestAnimationFrame(dispatchEvents)
41
+ }
42
+ events.push({eventName, payload});
28
43
  }
29
44
 
30
45
  export function on(eventName: string, callback: (payload: any) => unknown, {once} = {once: false}) {