@wavemaker/app-rn-runtime 11.14.1-3.6306 → 11.14.1-32.647748
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/components/advanced/webview/webview.component.js +1 -1
- package/components/advanced/webview/webview.component.js.map +1 -1
- package/components/basic/label/label.component.js +2 -2
- package/components/basic/label/label.component.js.map +1 -1
- package/components/container/wizard/wizard.component.js +5 -3
- package/components/container/wizard/wizard.component.js.map +1 -1
- package/components/container/wizard/wizard.props.js +1 -0
- package/components/container/wizard/wizard.props.js.map +1 -1
- package/components/container/wizard/wizard.styles.js +1 -3
- package/components/container/wizard/wizard.styles.js.map +1 -1
- package/components/container/wizard/wizardstep/wizardstep.component.js +23 -4
- package/components/container/wizard/wizardstep/wizardstep.component.js.map +1 -1
- package/components/container/wizard/wizardstep/wizardstep.props.js +2 -0
- package/components/container/wizard/wizardstep/wizardstep.props.js.map +1 -1
- package/components/dialogs/dialogcontent/dialogcontent.component.js +2 -1
- package/components/dialogs/dialogcontent/dialogcontent.component.js.map +1 -1
- package/components/input/checkboxset/checkboxset.component.js +1 -1
- package/components/input/checkboxset/checkboxset.component.js.map +1 -1
- package/components/input/radioset/radioset.component.js +8 -3
- package/components/input/radioset/radioset.component.js.map +1 -1
- package/components/input/text/text.component.js +2 -2
- package/components/input/text/text.component.js.map +1 -1
- package/components/input/textarea/textarea.component.js +2 -2
- package/components/input/textarea/textarea.component.js.map +1 -1
- package/components/navigation/popover/popover.component.js +3 -3
- package/components/navigation/popover/popover.component.js.map +1 -1
- package/core/AppConfig.js.map +1 -1
- package/core/advanced-promise-rejection-tracker.js +207 -0
- package/core/advanced-promise-rejection-tracker.js.map +1 -0
- package/core/base.component.js +5 -0
- package/core/base.component.js.map +1 -1
- package/core/components/error-fallback/error-fallback.component.js +50 -18
- package/core/components/error-fallback/error-fallback.component.js.map +1 -1
- package/core/components/error-fallback/error-fallback.styles.js +4 -1
- package/core/components/error-fallback/error-fallback.styles.js.map +1 -1
- package/core/components/textinput.component.js +3 -0
- package/core/components/textinput.component.js.map +1 -1
- package/core/error-boundary.component.js +46 -2
- package/core/error-boundary.component.js.map +1 -1
- package/core/global-error-handler.service.js +177 -0
- package/core/global-error-handler.service.js.map +1 -0
- package/core/tappable.component.js +1 -1
- package/core/tappable.component.js.map +1 -1
- package/npm-shrinkwrap.json +4080 -2795
- package/package-lock.json +4080 -2795
- package/package.json +8 -3
- package/runtime/App.js +181 -30
- package/runtime/App.js.map +1 -1
- package/runtime/App.navigator.js +4 -1
- package/runtime/App.navigator.js.map +1 -1
- package/runtime/base-page.component.js +11 -2
- package/runtime/base-page.component.js.map +1 -1
- package/runtime/navigator/stack.navigator.js +6 -0
- package/runtime/navigator/stack.navigator.js.map +1 -1
- package/runtime/services/app-security.service.js +40 -19
- package/runtime/services/app-security.service.js.map +1 -1
- package/runtime/services/browser.constants.js +3 -0
- package/runtime/services/browser.constants.js.map +1 -0
- package/runtime/services/browser.service.js +321 -0
- package/runtime/services/browser.service.js.map +1 -0
- package/runtime/services/external-auth-callback.service.js +44 -0
- package/runtime/services/external-auth-callback.service.js.map +1 -0
- package/runtime/services/webprocess.service.js +8 -3
- package/runtime/services/webprocess.service.js.map +1 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
2
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
|
+
/** Captures custom-scheme URLs from app boot / external browser return, so BrowserService can consume matching SSO callbacks. */
|
|
5
|
+
class ExternalAuthCallbackService {
|
|
6
|
+
constructor() {
|
|
7
|
+
_defineProperty(this, "urls", []);
|
|
8
|
+
_defineProperty(this, "listeners", new Set());
|
|
9
|
+
}
|
|
10
|
+
/** Store a non-http(s) launch/deep-link URL for later auth or routing use. */
|
|
11
|
+
capture(url) {
|
|
12
|
+
if (!url || /^https?:/i.test(url)) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (this.urls.some(entry => entry.url === url)) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
this.urls.push({
|
|
19
|
+
url,
|
|
20
|
+
capturedAt: Date.now()
|
|
21
|
+
});
|
|
22
|
+
this.listeners.forEach(listener => listener(url));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Purges entries older than maxAgeMs, then removes and returns the first URL the matcher accepts. */
|
|
26
|
+
takeUrl(matcher, maxAgeMs) {
|
|
27
|
+
const now = Date.now();
|
|
28
|
+
this.urls = this.urls.filter(entry => now - entry.capturedAt <= maxAgeMs);
|
|
29
|
+
const index = this.urls.findIndex(entry => matcher(entry.url, entry.capturedAt));
|
|
30
|
+
if (index < 0) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
const taken = this.urls.splice(index, 1)[0];
|
|
34
|
+
return taken.url;
|
|
35
|
+
}
|
|
36
|
+
subscribe(listener) {
|
|
37
|
+
this.listeners.add(listener);
|
|
38
|
+
return () => {
|
|
39
|
+
this.listeners.delete(listener);
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export default new ExternalAuthCallbackService();
|
|
44
|
+
//# sourceMappingURL=external-auth-callback.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ExternalAuthCallbackService","constructor","_defineProperty","Set","capture","url","test","urls","some","entry","push","capturedAt","Date","now","listeners","forEach","listener","takeUrl","matcher","maxAgeMs","filter","index","findIndex","undefined","taken","splice","subscribe","add","delete"],"sources":["external-auth-callback.service.ts"],"sourcesContent":["interface CapturedUrl {\n url: string;\n capturedAt: number;\n}\n\n/** Captures custom-scheme URLs from app boot / external browser return, so BrowserService can consume matching SSO callbacks. */\nclass ExternalAuthCallbackService {\n private urls: CapturedUrl[] = [];\n private listeners = new Set<(url: string) => void>();\n\n /** Store a non-http(s) launch/deep-link URL for later auth or routing use. */\n public capture(url?: string | null): void {\n if (!url || /^https?:/i.test(url)) {\n return;\n }\n if (this.urls.some((entry) => entry.url === url)) {\n return;\n }\n this.urls.push({ url, capturedAt: Date.now() });\n this.listeners.forEach((listener) => listener(url));\n }\n\n /** Purges entries older than maxAgeMs, then removes and returns the first URL the matcher accepts. */\n public takeUrl(matcher: (url: string, capturedAt: number) => boolean, maxAgeMs: number): string | undefined {\n const now = Date.now();\n this.urls = this.urls.filter((entry) => now - entry.capturedAt <= maxAgeMs);\n const index = this.urls.findIndex((entry) => matcher(entry.url, entry.capturedAt));\n if (index < 0) {\n return undefined;\n }\n const taken = this.urls.splice(index, 1)[0];\n return taken.url;\n }\n\n public subscribe(listener: (url: string) => void): () => void {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n }\n}\n\nexport default new ExternalAuthCallbackService();\n"],"mappings":";;;AAKA;AACA,MAAMA,2BAA2B,CAAC;EAAAC,YAAA;IAAAC,eAAA,eACF,EAAE;IAAAA,eAAA,oBACZ,IAAIC,GAAG,CAAwB,CAAC;EAAA;EAEpD;EACOC,OAAOA,CAACC,GAAmB,EAAQ;IACxC,IAAI,CAACA,GAAG,IAAI,WAAW,CAACC,IAAI,CAACD,GAAG,CAAC,EAAE;MACjC;IACF;IACA,IAAI,IAAI,CAACE,IAAI,CAACC,IAAI,CAAEC,KAAK,IAAKA,KAAK,CAACJ,GAAG,KAAKA,GAAG,CAAC,EAAE;MAChD;IACF;IACA,IAAI,CAACE,IAAI,CAACG,IAAI,CAAC;MAAEL,GAAG;MAAEM,UAAU,EAAEC,IAAI,CAACC,GAAG,CAAC;IAAE,CAAC,CAAC;IAC/C,IAAI,CAACC,SAAS,CAACC,OAAO,CAAEC,QAAQ,IAAKA,QAAQ,CAACX,GAAG,CAAC,CAAC;EACrD;;EAEA;EACOY,OAAOA,CAACC,OAAqD,EAAEC,QAAgB,EAAsB;IAC1G,MAAMN,GAAG,GAAGD,IAAI,CAACC,GAAG,CAAC,CAAC;IACtB,IAAI,CAACN,IAAI,GAAG,IAAI,CAACA,IAAI,CAACa,MAAM,CAAEX,KAAK,IAAKI,GAAG,GAAGJ,KAAK,CAACE,UAAU,IAAIQ,QAAQ,CAAC;IAC3E,MAAME,KAAK,GAAG,IAAI,CAACd,IAAI,CAACe,SAAS,CAAEb,KAAK,IAAKS,OAAO,CAACT,KAAK,CAACJ,GAAG,EAAEI,KAAK,CAACE,UAAU,CAAC,CAAC;IAClF,IAAIU,KAAK,GAAG,CAAC,EAAE;MACb,OAAOE,SAAS;IAClB;IACA,MAAMC,KAAK,GAAG,IAAI,CAACjB,IAAI,CAACkB,MAAM,CAACJ,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAOG,KAAK,CAACnB,GAAG;EAClB;EAEOqB,SAASA,CAACV,QAA+B,EAAc;IAC5D,IAAI,CAACF,SAAS,CAACa,GAAG,CAACX,QAAQ,CAAC;IAC5B,OAAO,MAAM;MACX,IAAI,CAACF,SAAS,CAACc,MAAM,CAACZ,QAAQ,CAAC;IACjC,CAAC;EACH;AACF;AAEA,eAAe,IAAIhB,2BAA2B,CAAC,CAAC","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ import { Dimensions, View } from "react-native";
|
|
|
7
7
|
import WmWebview from "@wavemaker/app-rn-runtime/components/advanced/webview/webview.component";
|
|
8
8
|
import injector from "@wavemaker/app-rn-runtime/core/injector";
|
|
9
9
|
import AppDisplayManagerService from "./app-display-manager.service";
|
|
10
|
+
import BrowserService from "./browser.service";
|
|
10
11
|
const windowWidth = Dimensions.get('window').width;
|
|
11
12
|
const windowHeight = Dimensions.get('window').height;
|
|
12
13
|
class WebProcessWebViewProps {
|
|
@@ -73,7 +74,7 @@ export class WebProcessService {
|
|
|
73
74
|
withCredentials: true
|
|
74
75
|
}).then(response => {
|
|
75
76
|
if (useSystemBrowser) {
|
|
76
|
-
return this.executeWithSystemBrowser(response.data);
|
|
77
|
+
return this.executeWithSystemBrowser(response.data, process);
|
|
77
78
|
} else {
|
|
78
79
|
return this.executeWithInAppBrowser(response.data, process, incognito);
|
|
79
80
|
}
|
|
@@ -83,8 +84,12 @@ export class WebProcessService {
|
|
|
83
84
|
});
|
|
84
85
|
});
|
|
85
86
|
}
|
|
86
|
-
executeWithSystemBrowser(processInfo) {
|
|
87
|
-
|
|
87
|
+
executeWithSystemBrowser(processInfo, process) {
|
|
88
|
+
// BrowserService derives the return URL itself from `process`.
|
|
89
|
+
const startUrl = this.baseUrl + '/services/webprocess/start?process=' + encodeURIComponent(processInfo);
|
|
90
|
+
// openAuthSession resolves with extractProcessOutput's decoded value, so it must be
|
|
91
|
+
// re-encoded here before being sent as encodedProcessdata.
|
|
92
|
+
return BrowserService.openAuthSession(startUrl, undefined, process).then(output => encodeURIComponent(output));
|
|
88
93
|
}
|
|
89
94
|
executeWithInAppBrowser(processInfo, process, incognito) {
|
|
90
95
|
return new Promise((resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["axios","React","Component","Dimensions","View","WmWebview","injector","AppDisplayManagerService","windowWidth","get","width","windowHeight","height","WebProcessWebViewProps","constructor","_defineProperty","WebProcessWebView","props","getScriptToInject","process","render","createElement","style","src","incognito","styles","root","onLoad","e","w","setTimeout","executeScript","then","output","onComplete","WebProcessService","execute","hookUrl","useSystemBrowser","baseUrl","url","withCredentials","response","executeWithSystemBrowser","data","executeWithInAppBrowser","processInfo","
|
|
1
|
+
{"version":3,"names":["axios","React","Component","Dimensions","View","WmWebview","injector","AppDisplayManagerService","BrowserService","windowWidth","get","width","windowHeight","height","WebProcessWebViewProps","constructor","_defineProperty","WebProcessWebView","props","getScriptToInject","process","render","createElement","style","src","incognito","styles","root","onLoad","e","w","setTimeout","executeScript","then","output","onComplete","WebProcessService","execute","hookUrl","useSystemBrowser","baseUrl","url","withCredentials","response","executeWithSystemBrowser","data","executeWithInAppBrowser","processInfo","startUrl","encodeURIComponent","openAuthSession","undefined","Promise","resolve","reject","destroyFn","show","content","ouput","call"],"sources":["webprocess.service.tsx"],"sourcesContent":["import axios from \"axios\";\nimport React, { Component } from \"react\";\nimport { Dimensions, View } from \"react-native\";\n\nimport WmWebview from \"@wavemaker/app-rn-runtime/components/advanced/webview/webview.component\";\nimport AppConfig from \"@wavemaker/app-rn-runtime/core/AppConfig\";\nimport injector from \"@wavemaker/app-rn-runtime/core/injector\";\n\nimport AppDisplayManagerService from \"./app-display-manager.service\";\nimport BrowserService from \"./browser.service\";\n\ndeclare const window: any, document: any, alert: any;\n\nconst windowWidth = Dimensions.get('window').width;\nconst windowHeight = Dimensions.get('window').height;\n\nclass WebProcessWebViewProps {\n src: string = \"\";\n process: string = \"\";\n incognito = false;\n onComplete?: (output: string) => any = null as any;\n}\n \nclass WebProcessWebView extends Component<WebProcessWebViewProps> {\n\n constructor(props: WebProcessWebViewProps) {\n super(props);\n }\n\n private getScriptToInject(process: string): string {\n return `(function() {\n var elements = document.querySelectorAll('body.flex>a.link');\n for (var i = 0; i < elements.length; i++) {\n var href = elements[i].href;\n if (href && href.indexOf('://services/webprocess/${process}?process_output=')) {\n return href.split('process_output=')[1];\n }\n }\n window.isWebLoginProcess = true;\n })()`;\n }\n\n render() {\n return(\n <View style={{\n width: windowWidth,\n height: windowHeight\n }}>\n <WmWebview src={this.props.src}\n incognito={this.props.incognito}\n styles={{\n root: {\n width: '100%',\n height: '100%'\n }\n }}\n onLoad={(e, w) => {\n setTimeout(() => {\n w.executeScript(this.getScriptToInject(this.props.process))\n .then((output) => {\n if (output) {\n const onComplete = this.props.onComplete;\n onComplete && onComplete(output as string);\n }\n });\n }, 1000);\n }}></WmWebview>\n </View>\n );\n }\n}\n\nexport class WebProcessService {\n\n baseUrl: string | null = null;\n\n constructor() {}\n\n public execute(process: string, hookUrl: string, useSystemBrowser = false, incognito = false): Promise<any> {\n if (!this.baseUrl) {\n this.baseUrl = injector.get<AppConfig>('APP_CONFIG').url;\n }\n return axios.get(this.baseUrl + `/services/webprocess/prepare?processName=${process}&hookUrl=${hookUrl}&requestSourceType=MOBILE`, {\n withCredentials: true\n })\n .then((response) => {\n if (useSystemBrowser) {\n return this.executeWithSystemBrowser(response.data, process);\n } else {\n return this.executeWithInAppBrowser(response.data, process, incognito);\n }\n }).then(output => {\n return axios.get(this.baseUrl + '/services/webprocess/decode?encodedProcessdata=' + output, {\n withCredentials: true\n });\n });\n }\n\n private executeWithSystemBrowser(processInfo: string, process: string): Promise<any> {\n // BrowserService derives the return URL itself from `process`.\n const startUrl = this.baseUrl + '/services/webprocess/start?process=' + encodeURIComponent(processInfo);\n // openAuthSession resolves with extractProcessOutput's decoded value, so it must be\n // re-encoded here before being sent as encodedProcessdata.\n return BrowserService.openAuthSession(startUrl, undefined, process)\n .then((output: string) => encodeURIComponent(output));\n }\n\n private executeWithInAppBrowser(processInfo: string, process: string, incognito: boolean): Promise<any> {\n return new Promise((resolve, reject) => {\n let destroyFn = () => {};\n destroyFn = AppDisplayManagerService.show({\n content: (\n <WebProcessWebView \n src={this.baseUrl + '/services/webprocess/start?process=' + encodeURIComponent(processInfo)}\n incognito={incognito}\n process={process}\n onComplete={(ouput) => {\n resolve(ouput);\n destroyFn.call(AppDisplayManagerService);\n }}></WebProcessWebView>\n ),\n \n });\n });\n }\n}\n\nexport default new WebProcessService();"],"mappings":"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","ignoreList":[]}
|