@getflip/bridge 0.1.0-alpha.1 → 0.1.0-alpha.2

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.
@@ -0,0 +1,96 @@
1
+ 'use strict';
2
+
3
+ var uuid = require('uuid');
4
+
5
+ exports.BridgeErrorCode = void 0;
6
+ (function (BridgeErrorCode) {
7
+ BridgeErrorCode["FORBIDDEN_ORIGIN"] = "FORBIDDEN_ORIGIN";
8
+ })(exports.BridgeErrorCode || (exports.BridgeErrorCode = {}));
9
+ exports.BridgeMethod = void 0;
10
+ (function (BridgeMethod) {
11
+ BridgeMethod["GET_AVAILABLE_LANGS"] = "GET_AVAILABLE_LANGS";
12
+ BridgeMethod["GET_LANG"] = "GET_LANG";
13
+ BridgeMethod["GET_THEME"] = "GET_THEME";
14
+ BridgeMethod["NAVIGATE"] = "NAVIGATE";
15
+ })(exports.BridgeMethod || (exports.BridgeMethod = {}));
16
+
17
+ const debug = process.env.NODE_ENV === "development";
18
+ function log(message, details) {
19
+ if (debug) {
20
+ console.log(`${message} – `, details);
21
+ }
22
+ }
23
+
24
+ const hostAppOrigin = process.env.HOST_APP_ORIGIN || "http://localhost:4200";
25
+ function postMessage(message) {
26
+ if (!window.top) {
27
+ return;
28
+ }
29
+ window.top.postMessage(message, hostAppOrigin);
30
+ log("postMessage", {
31
+ message,
32
+ targetOrigin: hostAppOrigin,
33
+ });
34
+ }
35
+ function makeRequest(request) {
36
+ return new Promise((resolve, reject) => {
37
+ const handler = (event) => {
38
+ if (!isAllowedOrigin(event.origin)) ;
39
+ if (event.data.id === request.id) {
40
+ log("handleResponse", event.data);
41
+ window.removeEventListener("message", handler);
42
+ if (event.data.error) {
43
+ reject(event.data.error);
44
+ }
45
+ else {
46
+ resolve(event.data.result);
47
+ }
48
+ }
49
+ };
50
+ window.addEventListener("message", handler);
51
+ postMessage(request);
52
+ });
53
+ }
54
+ function isAllowedOrigin(origin) {
55
+ // TODO: check origin
56
+ console.log(origin);
57
+ return true;
58
+ }
59
+
60
+ function getAvailableLangs() {
61
+ const request = {
62
+ id: uuid.v4(),
63
+ method: exports.BridgeMethod.GET_AVAILABLE_LANGS,
64
+ };
65
+ return makeRequest(request);
66
+ }
67
+ function getLang() {
68
+ const request = {
69
+ id: uuid.v4(),
70
+ method: exports.BridgeMethod.GET_LANG,
71
+ };
72
+ return makeRequest(request);
73
+ }
74
+
75
+ function navigate(path) {
76
+ const request = {
77
+ id: uuid.v4(),
78
+ method: exports.BridgeMethod.NAVIGATE,
79
+ params: { path },
80
+ };
81
+ return makeRequest(request);
82
+ }
83
+
84
+ function getTheme() {
85
+ const request = {
86
+ id: uuid.v4(),
87
+ method: exports.BridgeMethod.GET_THEME,
88
+ };
89
+ return makeRequest(request);
90
+ }
91
+
92
+ exports.getAvailableLangs = getAvailableLangs;
93
+ exports.getLang = getLang;
94
+ exports.getTheme = getTheme;
95
+ exports.navigate = navigate;
96
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/types.ts","../src/logging/logging.ts","../src/messaging/messaging.ts","../src/i18n/i18n.ts","../src/navigation/navigation.ts","../src/theming/theming.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["BridgeErrorCode","BridgeMethod","uuidv4"],"mappings":"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"}
package/dist/index.mjs ADDED
@@ -0,0 +1,91 @@
1
+ import { v4 } from 'uuid';
2
+
3
+ var BridgeErrorCode;
4
+ (function (BridgeErrorCode) {
5
+ BridgeErrorCode["FORBIDDEN_ORIGIN"] = "FORBIDDEN_ORIGIN";
6
+ })(BridgeErrorCode || (BridgeErrorCode = {}));
7
+ var BridgeMethod;
8
+ (function (BridgeMethod) {
9
+ BridgeMethod["GET_AVAILABLE_LANGS"] = "GET_AVAILABLE_LANGS";
10
+ BridgeMethod["GET_LANG"] = "GET_LANG";
11
+ BridgeMethod["GET_THEME"] = "GET_THEME";
12
+ BridgeMethod["NAVIGATE"] = "NAVIGATE";
13
+ })(BridgeMethod || (BridgeMethod = {}));
14
+
15
+ const debug = process.env.NODE_ENV === "development";
16
+ function log(message, details) {
17
+ if (debug) {
18
+ console.log(`${message} – `, details);
19
+ }
20
+ }
21
+
22
+ const hostAppOrigin = process.env.HOST_APP_ORIGIN || "http://localhost:4200";
23
+ function postMessage(message) {
24
+ if (!window.top) {
25
+ return;
26
+ }
27
+ window.top.postMessage(message, hostAppOrigin);
28
+ log("postMessage", {
29
+ message,
30
+ targetOrigin: hostAppOrigin,
31
+ });
32
+ }
33
+ function makeRequest(request) {
34
+ return new Promise((resolve, reject) => {
35
+ const handler = (event) => {
36
+ if (!isAllowedOrigin(event.origin)) ;
37
+ if (event.data.id === request.id) {
38
+ log("handleResponse", event.data);
39
+ window.removeEventListener("message", handler);
40
+ if (event.data.error) {
41
+ reject(event.data.error);
42
+ }
43
+ else {
44
+ resolve(event.data.result);
45
+ }
46
+ }
47
+ };
48
+ window.addEventListener("message", handler);
49
+ postMessage(request);
50
+ });
51
+ }
52
+ function isAllowedOrigin(origin) {
53
+ // TODO: check origin
54
+ console.log(origin);
55
+ return true;
56
+ }
57
+
58
+ function getAvailableLangs() {
59
+ const request = {
60
+ id: v4(),
61
+ method: BridgeMethod.GET_AVAILABLE_LANGS,
62
+ };
63
+ return makeRequest(request);
64
+ }
65
+ function getLang() {
66
+ const request = {
67
+ id: v4(),
68
+ method: BridgeMethod.GET_LANG,
69
+ };
70
+ return makeRequest(request);
71
+ }
72
+
73
+ function navigate(path) {
74
+ const request = {
75
+ id: v4(),
76
+ method: BridgeMethod.NAVIGATE,
77
+ params: { path },
78
+ };
79
+ return makeRequest(request);
80
+ }
81
+
82
+ function getTheme() {
83
+ const request = {
84
+ id: v4(),
85
+ method: BridgeMethod.GET_THEME,
86
+ };
87
+ return makeRequest(request);
88
+ }
89
+
90
+ export { BridgeErrorCode, BridgeMethod, getAvailableLangs, getLang, getTheme, navigate };
91
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../src/types.ts","../src/logging/logging.ts","../src/messaging/messaging.ts","../src/i18n/i18n.ts","../src/navigation/navigation.ts","../src/theming/theming.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["uuidv4"],"mappings":"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"}
package/package.json CHANGED
@@ -1,15 +1,17 @@
1
1
  {
2
2
  "name": "@getflip/bridge",
3
- "version": "0.1.0-alpha.1",
3
+ "version": "0.1.0-alpha.2",
4
4
  "description": "Flip JavaScript Bridge for external integrations.",
5
- "main": "dist/index.js",
5
+ "main": "dist/index.cjs.js",
6
+ "module": "dist/index.mjs",
7
+ "types": "dist/index.d.ts",
6
8
  "repository": "https://github.com/getflip/swirl",
7
9
  "license": "SEE LICENSE IN LICENSE.md",
8
10
  "files": [
9
11
  "dist/"
10
12
  ],
11
13
  "scripts": {
12
- "build": "tsc",
14
+ "build": "rimraf dist && tsc && rollup -c rollup.config.mjs",
13
15
  "dev": "tsc -w",
14
16
  "start": "yarn dev"
15
17
  },
@@ -18,7 +20,10 @@
18
20
  "uuid": "^9.0.0"
19
21
  },
20
22
  "devDependencies": {
23
+ "@rollup/plugin-typescript": "^10.0.1",
21
24
  "@types/uuid": "^8.3.4",
25
+ "rimraf": "^3.0.2",
26
+ "rollup": "^3.5.1",
22
27
  "typescript": "^4.9.3"
23
28
  }
24
29
  }
package/dist/bridge.d.ts DELETED
@@ -1,7 +0,0 @@
1
- declare global {
2
- interface Window {
3
- flipBridgeConnected: boolean;
4
- }
5
- }
6
- export declare function connectBridge(): void;
7
- export declare function disconnectBridge(): void;
package/dist/bridge.js DELETED
@@ -1,19 +0,0 @@
1
- import { handleResponse } from "./messaging";
2
- function handlePostMessage(event) {
3
- handleResponse(event.data);
4
- }
5
- export function connectBridge() {
6
- if (window.flipBridgeConnected) {
7
- return;
8
- }
9
- window.addEventListener("message", handlePostMessage);
10
- window.flipBridgeConnected = true;
11
- }
12
- export function disconnectBridge() {
13
- if (!window.flipBridgeConnected) {
14
- return;
15
- }
16
- window.removeEventListener("message", handlePostMessage);
17
- window.flipBridgeConnected = false;
18
- }
19
- //# sourceMappingURL=bridge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQ7C,SAAS,iBAAiB,CAAC,KAAmB;IAC5C,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,MAAM,CAAC,mBAAmB,EAAE;QAC9B,OAAO;KACR;IAED,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACtD,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;QAC/B,OAAO;KACR;IAED,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACzD,MAAM,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACrC,CAAC"}