@tef-novum/webview-bridge
Advanced tools
Comparing version 2.2.0 to 2.3.0-beta0
export { isWebViewBridgeAvailable, onNativeEvent, NativeEventHandler, } from './src/post-message'; | ||
export { nativeConfirm, nativeAlert, nativeMessage } from './src/dialogs'; | ||
export { requestSimIcc, requestSimImsi, requestDeviceImei } from './src/device'; | ||
export { attachToEmail, share, setWebViewTitle, updateNavigationBar, notifyPageLoaded, isABTestingAvailable, reportStatus, } from './src/utils'; | ||
export { attachToEmail, share, setWebViewTitle, updateNavigationBar, notifyPageLoaded, isABTestingAvailable, reportStatus, fetch, } from './src/utils'; | ||
export { createCalendarEvent } from './src/calendar'; | ||
export { requestContact } from './src/contacts'; | ||
export { logEvent, logTiming, setScreenName, setUserProperty, CD_WEBAPP_INSTALLED, CD_NOVUM_UID, CD_EVENT_VALUE, } from './src/analytics'; |
@@ -7,3 +7,3 @@ /** | ||
*/ | ||
declare type IncomingMessageMap = { | ||
export declare type IncomingMessageMap = { | ||
EVENT: { | ||
@@ -121,2 +121,13 @@ type: 'NATIVE_EVENT'; | ||
}; | ||
FETCH: { | ||
id: string; | ||
type: 'FETCH'; | ||
payload: { | ||
status: number; | ||
headers: { | ||
[key: string]: string; | ||
}; | ||
body: string; | ||
}; | ||
}; | ||
}; | ||
@@ -130,3 +141,3 @@ /** | ||
*/ | ||
export declare const postMessageToNativeApp: <T extends "SIM_ICC" | "IMEI" | "IMSI" | "ATTACH_TO_EMAIL" | "SET_TITLE" | "PAGE_LOADED" | "ALERT" | "MESSAGE" | "CONFIRM" | "CREATE_CALENDAR_EVENT" | "GET_CONTACT_DATA" | "NAVIGATION_BAR" | "SHARE" | "ERROR" | "GET_REMOTE_CONFIG" | "STATUS_REPORT" | "EVENT">({ type, id, payload }: { | ||
export declare const postMessageToNativeApp: <T extends "SIM_ICC" | "IMEI" | "IMSI" | "ATTACH_TO_EMAIL" | "SET_TITLE" | "PAGE_LOADED" | "ALERT" | "MESSAGE" | "CONFIRM" | "CREATE_CALENDAR_EVENT" | "GET_CONTACT_DATA" | "NAVIGATION_BAR" | "SHARE" | "ERROR" | "GET_REMOTE_CONFIG" | "STATUS_REPORT" | "FETCH" | "EVENT">({ type, id, payload }: { | ||
type: T; | ||
@@ -142,2 +153,1 @@ id?: string | undefined; | ||
export declare const onNativeEvent: (handler: NativeEventHandler) => () => void; | ||
export {}; |
@@ -33,2 +33,16 @@ export declare const attachToEmail: ({ url, subject, fileName, recipient, body, }: { | ||
}) => Promise<void>; | ||
export declare const fetch: ({ url, method, headers, body, }: { | ||
url: string; | ||
method: "GET" | "POST"; | ||
headers: { | ||
[key: string]: string; | ||
}; | ||
body: string; | ||
}) => Promise<{ | ||
status: number; | ||
headers: { | ||
[key: string]: string; | ||
}; | ||
body: string; | ||
}>; | ||
export {}; |
@@ -53,2 +53,7 @@ define(['exports'], function (exports) { 'use strict'; | ||
var postMessage = getWebViewPostMessage(); | ||
var message = JSON.stringify({ type: type, id: id, payload: payload }); | ||
if (process.env.NODE_ENV !== 'test' && | ||
process.env.NODE_ENV !== 'production') { | ||
console.debug('WebView Bridge SEND>', message); | ||
} | ||
if (!postMessage) { | ||
@@ -60,3 +65,2 @@ return Promise.reject({ | ||
} | ||
var message = JSON.stringify({ type: type, id: id, payload: payload }); | ||
// ensure postMessage call is async | ||
@@ -100,2 +104,6 @@ setTimeout(function () { | ||
postMessage: function (jsonMessage) { | ||
if (process.env.NODE_ENV !== 'test' && | ||
process.env.NODE_ENV !== 'production') { | ||
console.debug('WebView Bridge RECV>', jsonMessage); | ||
} | ||
var message; | ||
@@ -273,2 +281,16 @@ try { | ||
}; | ||
var fetch = function (_a) { | ||
var url = _a.url, method = _a.method, headers = _a.headers, body = _a.body; | ||
if (isWebViewBridgeAvailable()) { | ||
return postMessageToNativeApp({ | ||
type: 'FETCH', | ||
payload: { url: url, method: method, headers: headers, body: body }, | ||
}); | ||
} | ||
return Promise.resolve({ | ||
status: 500, | ||
headers: {}, | ||
body: 'Bridge not available', | ||
}); | ||
}; | ||
@@ -549,2 +571,3 @@ var msToS = function (ms) { return Math.floor(ms / 1000); }; | ||
exports.createCalendarEvent = createCalendarEvent; | ||
exports.fetch = fetch; | ||
exports.isABTestingAvailable = isABTestingAvailable; | ||
@@ -551,0 +574,0 @@ exports.isWebViewBridgeAvailable = isWebViewBridgeAvailable; |
@@ -55,2 +55,7 @@ 'use strict'; | ||
var postMessage = getWebViewPostMessage(); | ||
var message = JSON.stringify({ type: type, id: id, payload: payload }); | ||
if (process.env.NODE_ENV !== 'test' && | ||
process.env.NODE_ENV !== 'production') { | ||
console.debug('WebView Bridge SEND>', message); | ||
} | ||
if (!postMessage) { | ||
@@ -62,3 +67,2 @@ return Promise.reject({ | ||
} | ||
var message = JSON.stringify({ type: type, id: id, payload: payload }); | ||
// ensure postMessage call is async | ||
@@ -102,2 +106,6 @@ setTimeout(function () { | ||
postMessage: function (jsonMessage) { | ||
if (process.env.NODE_ENV !== 'test' && | ||
process.env.NODE_ENV !== 'production') { | ||
console.debug('WebView Bridge RECV>', jsonMessage); | ||
} | ||
var message; | ||
@@ -275,2 +283,16 @@ try { | ||
}; | ||
var fetch = function (_a) { | ||
var url = _a.url, method = _a.method, headers = _a.headers, body = _a.body; | ||
if (isWebViewBridgeAvailable()) { | ||
return postMessageToNativeApp({ | ||
type: 'FETCH', | ||
payload: { url: url, method: method, headers: headers, body: body }, | ||
}); | ||
} | ||
return Promise.resolve({ | ||
status: 500, | ||
headers: {}, | ||
body: 'Bridge not available', | ||
}); | ||
}; | ||
@@ -551,2 +573,3 @@ var msToS = function (ms) { return Math.floor(ms / 1000); }; | ||
exports.createCalendarEvent = createCalendarEvent; | ||
exports.fetch = fetch; | ||
exports.isABTestingAvailable = isABTestingAvailable; | ||
@@ -553,0 +576,0 @@ exports.isWebViewBridgeAvailable = isWebViewBridgeAvailable; |
@@ -54,2 +54,7 @@ var webviewBridge = (function (exports) { | ||
var postMessage = getWebViewPostMessage(); | ||
var message = JSON.stringify({ type: type, id: id, payload: payload }); | ||
if (process.env.NODE_ENV !== 'test' && | ||
process.env.NODE_ENV !== 'production') { | ||
console.debug('WebView Bridge SEND>', message); | ||
} | ||
if (!postMessage) { | ||
@@ -61,3 +66,2 @@ return Promise.reject({ | ||
} | ||
var message = JSON.stringify({ type: type, id: id, payload: payload }); | ||
// ensure postMessage call is async | ||
@@ -101,2 +105,6 @@ setTimeout(function () { | ||
postMessage: function (jsonMessage) { | ||
if (process.env.NODE_ENV !== 'test' && | ||
process.env.NODE_ENV !== 'production') { | ||
console.debug('WebView Bridge RECV>', jsonMessage); | ||
} | ||
var message; | ||
@@ -274,2 +282,16 @@ try { | ||
}; | ||
var fetch = function (_a) { | ||
var url = _a.url, method = _a.method, headers = _a.headers, body = _a.body; | ||
if (isWebViewBridgeAvailable()) { | ||
return postMessageToNativeApp({ | ||
type: 'FETCH', | ||
payload: { url: url, method: method, headers: headers, body: body }, | ||
}); | ||
} | ||
return Promise.resolve({ | ||
status: 500, | ||
headers: {}, | ||
body: 'Bridge not available', | ||
}); | ||
}; | ||
@@ -550,2 +572,3 @@ var msToS = function (ms) { return Math.floor(ms / 1000); }; | ||
exports.createCalendarEvent = createCalendarEvent; | ||
exports.fetch = fetch; | ||
exports.isABTestingAvailable = isABTestingAvailable; | ||
@@ -552,0 +575,0 @@ exports.isWebViewBridgeAvailable = isWebViewBridgeAvailable; |
@@ -1,1 +0,1 @@ | ||
var webviewBridge=function(e){"use strict";var n=1,t=function(){return""+n++},r="__tuenti_webview_bridge",o=function(){return!(!window.tuentiWebView||!window.tuentiWebView.postMessage)},i=function(){return!!(window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.tuentiWebView&&window.webkit.messageHandlers.tuentiWebView.postMessage)},a=function(){return o()?function(e){window.tuentiWebView.postMessage(e)}:i()?function(e){window.webkit.messageHandlers.tuentiWebView.postMessage(e)}:null},s=[],u=function(e){s.push(e)},c=function(e){s=s.filter(function(n){return n!==e})},l=function(){return o()||i()},d=function(e,n){var r=e.type,o=e.id,i=void 0===o?t():o,s=e.payload,l=a();if(!l)return Promise.reject({code:500,reason:"WebView postMessage not available"});var d=JSON.stringify({type:r,id:i,payload:s});return setTimeout(function(){l(d)}),new Promise(function(e,t){var o=!1,a=function(n){n.id!==i||o||(n.type===r?e(n.payload):"ERROR"===n.type?t(n.payload):t({code:500,reason:"bad type: "+n.type+". Expecting "+r}),c(a))};u(a),n&&setTimeout(function(){o=!0,c(a),t({code:408,reason:"request timeout"})},n)})};window[r]=window[r]||{postMessage:function(e){var n;try{n=JSON.parse(e)}catch(n){throw Error("Problem parsing webview message: "+e)}s.forEach(function(e){return e(n)})}};var f=null,m=function(e){return"true"===f.result[e]},v=function(e){return Math.floor(e/1e3)},p=function(){return(p=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var o in n=arguments[t])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e}).apply(this,arguments)};var w,y=["NovumTracker","OBARGTracker"],g=function(e){return y.indexOf(e.get("name"))>=0},b=function(e){var n=e.onAndroid,t=e.onIos,r=e.onWeb;return window.AnalyticsWebInterface?n(window.AnalyticsWebInterface):window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.firebase?t(window.webkit.messageHandlers.firebase):window.ga&&window.ga.loaded?r(window.ga):Promise.resolve()},T={obIds:1,paymentModels:2,serviceWorkerStatus:3,isAdmin:5,hasIpComms:6,af_source:9,af_campaign:10,novum_uid_session:11,user_logged:12,currentSubscriptionId:13,currentSubscriptionType:14,currentPaymentModel:15,webviewBrowserVersion:16};return e.CD_EVENT_VALUE=8,e.CD_NOVUM_UID=7,e.CD_WEBAPP_INSTALLED=4,e.attachToEmail=function(e){var n=e.url,t=e.subject,r=e.fileName,o=e.recipient,i=e.body;return d({type:"ATTACH_TO_EMAIL",payload:{url:n,subject:t,fileName:r,recipient:o,body:i}})},e.createCalendarEvent=function(e){var n=e.beginTime,t=e.endTime,r=e.title;return d({type:"CREATE_CALENDAR_EVENT",payload:{beginTime:v(n),endTime:v(t),title:r}})},e.isABTestingAvailable=function(e){return f?Promise.resolve(m(e)):d({type:"GET_REMOTE_CONFIG"}).then(function(n){return f=n,m(e)})},e.isWebViewBridgeAvailable=l,e.logEvent=function(e){var n=e.category,t=e.action,r=e.label,o=e.value,i=function(e,n){var t={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&n.indexOf(r)<0&&(t[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)n.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(t[r[o]]=e[r[o]])}return t}(e,["category","action","label","value"]);if(!n||!t)return console.warn('Analytics event should have "category" and "action"',{category:n,action:t}),Promise.resolve();var a=n;r||(r="null_label"),o||(o=0);var s=p({eventCategory:n,eventAction:t,eventLabel:r,eventValue:o},i);return b({onAndroid:function(e){return e.logEvent&&e.logEvent(a,JSON.stringify(s)),Promise.resolve()},onIos:function(e){return e.postMessage({command:"logEvent",name:a,parameters:s}),Promise.resolve()},onWeb:function(e){return new Promise(function(n){e("NovumTracker.send","event",p(p({},s),{hitCallback:n}))})}})},e.logTiming=function(e){var n=e.category,t=void 0===n?"performance_timer":n,r=e.variable,o=e.value,i=e.label;if(!t||!r||!o)return console.warn('Analytics timing should have "category", "variable" and "value"',{category:t,variable:r,value:o}),Promise.resolve();var a={timingCategory:t,timingVar:r,timingValue:o,timingLabel:i},s=t;return b({onAndroid:function(e){return e.logEvent&&e.logEvent(s,JSON.stringify(a)),Promise.resolve()},onIos:function(e){return e.postMessage({command:"logEvent",name:s,parameters:a}),Promise.resolve()},onWeb:function(e){return new Promise(function(n){var t;e("NovumTracker.send",p(((t={hitType:"timing",hitCallback:n}).dimension8=String(o),t),a))})}})},e.nativeAlert=function(e){var n=e.message,t=e.title,r=e.buttonText;return l()?d({type:"ALERT",payload:{title:t,message:n,buttonText:r}}):(window.alert(n),Promise.resolve())},e.nativeConfirm=function(e){var n=e.message,t=e.title,r=e.acceptText,o=e.cancelText;return l()?d({type:"CONFIRM",payload:{message:n,title:t,acceptText:r,cancelText:o}}).then(function(e){return e.result}):Promise.resolve(window.confirm(n))},e.nativeMessage=function(e){var n=e.message,t=e.duration,r=e.buttonText,o=e.type;return l()?d({type:"MESSAGE",payload:{message:n,duration:t,buttonText:r,type:o}}):(window.alert(n),Promise.resolve())},e.notifyPageLoaded=function(){return d({type:"PAGE_LOADED"})},e.onNativeEvent=function(e){var n=function(n){if("NATIVE_EVENT"===n.type){var t=e({event:n.payload.event}),r=a();r&&r(JSON.stringify({type:"NATIVE_EVENT",id:n.id,payload:{action:t.action||"default"}}))}};return u(n),function(){c(n)}},e.reportStatus=function(e){var n=e.feature,t=e.status,r=e.reason;return d({type:"STATUS_REPORT",payload:{feature:n,status:t,reason:r}})},e.requestContact=function(e){var n=(void 0===e?{}:e).filter;return d({type:"GET_CONTACT_DATA",payload:{filter:void 0===n?"phone":n}})},e.requestDeviceImei=function(){return d({type:"IMEI"},200).then(function(e){return e.imei}).catch(function(){return null})},e.requestSimIcc=function(){return d({type:"SIM_ICC"},200).then(function(e){return e.icc}).catch(function(){return null})},e.requestSimImsi=function(){return d({type:"IMSI"},200).then(function(e){return e.imsi}).catch(function(){return null})},e.setScreenName=function(e,n){return e?b({onAndroid:function(n){return n.setScreenName&&n.setScreenName(e),Promise.resolve()},onIos:function(n){return n.postMessage({command:"setScreenName",name:e}),Promise.resolve()},onWeb:function(t){return new Promise(function(r){var o=e.startsWith("/")?e:"/"+e;o!==w?(w=o,t(function(){t.getAll().filter(g).forEach(function(e){e.set("page",o),e.send("pageView",p(p({},n),{hitCallback:r}))})})):r()})}}):(console.warn("Missing analytics screenName"),Promise.resolve())},e.setUserProperty=function(e,n){return e&&n?(n=String(n),b({onAndroid:function(t){return t.setUserProperty&&t.setUserProperty(e,n),Promise.resolve()},onIos:function(t){return t.postMessage({command:"setUserProperty",name:e,value:n}),Promise.resolve()},onWeb:function(t){var r,o=T[e];return o?(t("NovumTracker.set",((r={})["dimension"+o]=String(n),r)),Promise.resolve()):(console.warn("No custom dimension defined for user property",e),Promise.resolve())}})):(console.warn("Trying to set analytics user property without name or value",e,n),Promise.resolve())},e.setWebViewTitle=function(e){return l()?d({type:"SET_TITLE",payload:{title:e}}):(document.title=e,Promise.resolve())},e.share=function(e){return d({type:"SHARE",payload:e})},e.updateNavigationBar=function(e){var n=e.title,t=e.showBackButton,r=e.showReloadButton,o=e.backgroundColor;return l()?d({type:"NAVIGATION_BAR",payload:{title:n,showBackButton:t,showReloadButton:r,backgroundColor:o}}):(void 0!==n&&(document.title=n),Promise.resolve())},e}({}); | ||
var webviewBridge=function(e){"use strict";var t=1,n=function(){return""+t++},r="__tuenti_webview_bridge",o=function(){return!(!window.tuentiWebView||!window.tuentiWebView.postMessage)},i=function(){return!!(window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.tuentiWebView&&window.webkit.messageHandlers.tuentiWebView.postMessage)},a=function(){return o()?function(e){window.tuentiWebView.postMessage(e)}:i()?function(e){window.webkit.messageHandlers.tuentiWebView.postMessage(e)}:null},s=[],u=function(e){s.push(e)},c=function(e){s=s.filter(function(t){return t!==e})},l=function(){return o()||i()},d=function(e,t){var r=e.type,o=e.id,i=void 0===o?n():o,s=e.payload,l=a(),d=JSON.stringify({type:r,id:i,payload:s});return"test"!==process.env.NODE_ENV&&"production"!==process.env.NODE_ENV&&console.debug("WebView Bridge SEND>",d),l?(setTimeout(function(){l(d)}),new Promise(function(e,n){var o=!1,a=function(t){t.id!==i||o||(t.type===r?e(t.payload):"ERROR"===t.type?n(t.payload):n({code:500,reason:"bad type: "+t.type+". Expecting "+r}),c(a))};u(a),t&&setTimeout(function(){o=!0,c(a),n({code:408,reason:"request timeout"})},t)})):Promise.reject({code:500,reason:"WebView postMessage not available"})};window[r]=window[r]||{postMessage:function(e){var t;"test"!==process.env.NODE_ENV&&"production"!==process.env.NODE_ENV&&console.debug("WebView Bridge RECV>",e);try{t=JSON.parse(e)}catch(t){throw Error("Problem parsing webview message: "+e)}s.forEach(function(e){return e(t)})}};var f=null,m=function(e){return"true"===f.result[e]},v=function(e){return Math.floor(e/1e3)},p=function(){return(p=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};var w,y=["NovumTracker","OBARGTracker"],g=function(e){return y.indexOf(e.get("name"))>=0},b=function(e){var t=e.onAndroid,n=e.onIos,r=e.onWeb;return window.AnalyticsWebInterface?t(window.AnalyticsWebInterface):window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.firebase?n(window.webkit.messageHandlers.firebase):window.ga&&window.ga.loaded?r(window.ga):Promise.resolve()},E={obIds:1,paymentModels:2,serviceWorkerStatus:3,isAdmin:5,hasIpComms:6,af_source:9,af_campaign:10,novum_uid_session:11,user_logged:12,currentSubscriptionId:13,currentSubscriptionType:14,currentPaymentModel:15,webviewBrowserVersion:16};return e.CD_EVENT_VALUE=8,e.CD_NOVUM_UID=7,e.CD_WEBAPP_INSTALLED=4,e.attachToEmail=function(e){var t=e.url,n=e.subject,r=e.fileName,o=e.recipient,i=e.body;return d({type:"ATTACH_TO_EMAIL",payload:{url:t,subject:n,fileName:r,recipient:o,body:i}})},e.createCalendarEvent=function(e){var t=e.beginTime,n=e.endTime,r=e.title;return d({type:"CREATE_CALENDAR_EVENT",payload:{beginTime:v(t),endTime:v(n),title:r}})},e.fetch=function(e){var t=e.url,n=e.method,r=e.headers,o=e.body;return l()?d({type:"FETCH",payload:{url:t,method:n,headers:r,body:o}}):Promise.resolve({status:500,headers:{},body:"Bridge not available"})},e.isABTestingAvailable=function(e){return f?Promise.resolve(m(e)):d({type:"GET_REMOTE_CONFIG"}).then(function(t){return f=t,m(e)})},e.isWebViewBridgeAvailable=l,e.logEvent=function(e){var t=e.category,n=e.action,r=e.label,o=e.value,i=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}(e,["category","action","label","value"]);if(!t||!n)return console.warn('Analytics event should have "category" and "action"',{category:t,action:n}),Promise.resolve();var a=t;r||(r="null_label"),o||(o=0);var s=p({eventCategory:t,eventAction:n,eventLabel:r,eventValue:o},i);return b({onAndroid:function(e){return e.logEvent&&e.logEvent(a,JSON.stringify(s)),Promise.resolve()},onIos:function(e){return e.postMessage({command:"logEvent",name:a,parameters:s}),Promise.resolve()},onWeb:function(e){return new Promise(function(t){e("NovumTracker.send","event",p(p({},s),{hitCallback:t}))})}})},e.logTiming=function(e){var t=e.category,n=void 0===t?"performance_timer":t,r=e.variable,o=e.value,i=e.label;if(!n||!r||!o)return console.warn('Analytics timing should have "category", "variable" and "value"',{category:n,variable:r,value:o}),Promise.resolve();var a={timingCategory:n,timingVar:r,timingValue:o,timingLabel:i},s=n;return b({onAndroid:function(e){return e.logEvent&&e.logEvent(s,JSON.stringify(a)),Promise.resolve()},onIos:function(e){return e.postMessage({command:"logEvent",name:s,parameters:a}),Promise.resolve()},onWeb:function(e){return new Promise(function(t){var n;e("NovumTracker.send",p(((n={hitType:"timing",hitCallback:t}).dimension8=String(o),n),a))})}})},e.nativeAlert=function(e){var t=e.message,n=e.title,r=e.buttonText;return l()?d({type:"ALERT",payload:{title:n,message:t,buttonText:r}}):(window.alert(t),Promise.resolve())},e.nativeConfirm=function(e){var t=e.message,n=e.title,r=e.acceptText,o=e.cancelText;return l()?d({type:"CONFIRM",payload:{message:t,title:n,acceptText:r,cancelText:o}}).then(function(e){return e.result}):Promise.resolve(window.confirm(t))},e.nativeMessage=function(e){var t=e.message,n=e.duration,r=e.buttonText,o=e.type;return l()?d({type:"MESSAGE",payload:{message:t,duration:n,buttonText:r,type:o}}):(window.alert(t),Promise.resolve())},e.notifyPageLoaded=function(){return d({type:"PAGE_LOADED"})},e.onNativeEvent=function(e){var t=function(t){if("NATIVE_EVENT"===t.type){var n=e({event:t.payload.event}),r=a();r&&r(JSON.stringify({type:"NATIVE_EVENT",id:t.id,payload:{action:n.action||"default"}}))}};return u(t),function(){c(t)}},e.reportStatus=function(e){var t=e.feature,n=e.status,r=e.reason;return d({type:"STATUS_REPORT",payload:{feature:t,status:n,reason:r}})},e.requestContact=function(e){var t=(void 0===e?{}:e).filter;return d({type:"GET_CONTACT_DATA",payload:{filter:void 0===t?"phone":t}})},e.requestDeviceImei=function(){return d({type:"IMEI"},200).then(function(e){return e.imei}).catch(function(){return null})},e.requestSimIcc=function(){return d({type:"SIM_ICC"},200).then(function(e){return e.icc}).catch(function(){return null})},e.requestSimImsi=function(){return d({type:"IMSI"},200).then(function(e){return e.imsi}).catch(function(){return null})},e.setScreenName=function(e,t){return e?b({onAndroid:function(t){return t.setScreenName&&t.setScreenName(e),Promise.resolve()},onIos:function(t){return t.postMessage({command:"setScreenName",name:e}),Promise.resolve()},onWeb:function(n){return new Promise(function(r){var o=e.startsWith("/")?e:"/"+e;o!==w?(w=o,n(function(){n.getAll().filter(g).forEach(function(e){e.set("page",o),e.send("pageView",p(p({},t),{hitCallback:r}))})})):r()})}}):(console.warn("Missing analytics screenName"),Promise.resolve())},e.setUserProperty=function(e,t){return e&&t?(t=String(t),b({onAndroid:function(n){return n.setUserProperty&&n.setUserProperty(e,t),Promise.resolve()},onIos:function(n){return n.postMessage({command:"setUserProperty",name:e,value:t}),Promise.resolve()},onWeb:function(n){var r,o=E[e];return o?(n("NovumTracker.set",((r={})["dimension"+o]=String(t),r)),Promise.resolve()):(console.warn("No custom dimension defined for user property",e),Promise.resolve())}})):(console.warn("Trying to set analytics user property without name or value",e,t),Promise.resolve())},e.setWebViewTitle=function(e){return l()?d({type:"SET_TITLE",payload:{title:e}}):(document.title=e,Promise.resolve())},e.share=function(e){return d({type:"SHARE",payload:e})},e.updateNavigationBar=function(e){var t=e.title,n=e.showBackButton,r=e.showReloadButton,o=e.backgroundColor;return l()?d({type:"NAVIGATION_BAR",payload:{title:t,showBackButton:n,showReloadButton:r,backgroundColor:o}}):(void 0!==t&&(document.title=t),Promise.resolve())},e}({}); |
@@ -57,2 +57,7 @@ (function (global, factory) { | ||
var postMessage = getWebViewPostMessage(); | ||
var message = JSON.stringify({ type: type, id: id, payload: payload }); | ||
if (process.env.NODE_ENV !== 'test' && | ||
process.env.NODE_ENV !== 'production') { | ||
console.debug('WebView Bridge SEND>', message); | ||
} | ||
if (!postMessage) { | ||
@@ -64,3 +69,2 @@ return Promise.reject({ | ||
} | ||
var message = JSON.stringify({ type: type, id: id, payload: payload }); | ||
// ensure postMessage call is async | ||
@@ -104,2 +108,6 @@ setTimeout(function () { | ||
postMessage: function (jsonMessage) { | ||
if (process.env.NODE_ENV !== 'test' && | ||
process.env.NODE_ENV !== 'production') { | ||
console.debug('WebView Bridge RECV>', jsonMessage); | ||
} | ||
var message; | ||
@@ -277,2 +285,16 @@ try { | ||
}; | ||
var fetch = function (_a) { | ||
var url = _a.url, method = _a.method, headers = _a.headers, body = _a.body; | ||
if (isWebViewBridgeAvailable()) { | ||
return postMessageToNativeApp({ | ||
type: 'FETCH', | ||
payload: { url: url, method: method, headers: headers, body: body }, | ||
}); | ||
} | ||
return Promise.resolve({ | ||
status: 500, | ||
headers: {}, | ||
body: 'Bridge not available', | ||
}); | ||
}; | ||
@@ -553,2 +575,3 @@ var msToS = function (ms) { return Math.floor(ms / 1000); }; | ||
exports.createCalendarEvent = createCalendarEvent; | ||
exports.fetch = fetch; | ||
exports.isABTestingAvailable = isABTestingAvailable; | ||
@@ -555,0 +578,0 @@ exports.isWebViewBridgeAvailable = isWebViewBridgeAvailable; |
@@ -1,1 +0,1 @@ | ||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e=e||self).webviewBridge={})}(this,function(e){"use strict";var n=1,t=function(){return""+n++},r="__tuenti_webview_bridge",o=function(){return!(!window.tuentiWebView||!window.tuentiWebView.postMessage)},i=function(){return!!(window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.tuentiWebView&&window.webkit.messageHandlers.tuentiWebView.postMessage)},a=function(){return o()?function(e){window.tuentiWebView.postMessage(e)}:i()?function(e){window.webkit.messageHandlers.tuentiWebView.postMessage(e)}:null},s=[],u=function(e){s.push(e)},c=function(e){s=s.filter(function(n){return n!==e})},l=function(){return o()||i()},d=function(e,n){var r=e.type,o=e.id,i=void 0===o?t():o,s=e.payload,l=a();if(!l)return Promise.reject({code:500,reason:"WebView postMessage not available"});var d=JSON.stringify({type:r,id:i,payload:s});return setTimeout(function(){l(d)}),new Promise(function(e,t){var o=!1,a=function(n){n.id!==i||o||(n.type===r?e(n.payload):"ERROR"===n.type?t(n.payload):t({code:500,reason:"bad type: "+n.type+". Expecting "+r}),c(a))};u(a),n&&setTimeout(function(){o=!0,c(a),t({code:408,reason:"request timeout"})},n)})};window[r]=window[r]||{postMessage:function(e){var n;try{n=JSON.parse(e)}catch(n){throw Error("Problem parsing webview message: "+e)}s.forEach(function(e){return e(n)})}};var f=null,m=function(e){return"true"===f.result[e]},v=function(e){return Math.floor(e/1e3)},p=function(){return(p=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var o in n=arguments[t])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e}).apply(this,arguments)};var w,y=["NovumTracker","OBARGTracker"],g=function(e){return y.indexOf(e.get("name"))>=0},b=function(e){var n=e.onAndroid,t=e.onIos,r=e.onWeb;return window.AnalyticsWebInterface?n(window.AnalyticsWebInterface):window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.firebase?t(window.webkit.messageHandlers.firebase):window.ga&&window.ga.loaded?r(window.ga):Promise.resolve()},T={obIds:1,paymentModels:2,serviceWorkerStatus:3,isAdmin:5,hasIpComms:6,af_source:9,af_campaign:10,novum_uid_session:11,user_logged:12,currentSubscriptionId:13,currentSubscriptionType:14,currentPaymentModel:15,webviewBrowserVersion:16};e.CD_EVENT_VALUE=8,e.CD_NOVUM_UID=7,e.CD_WEBAPP_INSTALLED=4,e.attachToEmail=function(e){var n=e.url,t=e.subject,r=e.fileName,o=e.recipient,i=e.body;return d({type:"ATTACH_TO_EMAIL",payload:{url:n,subject:t,fileName:r,recipient:o,body:i}})},e.createCalendarEvent=function(e){var n=e.beginTime,t=e.endTime,r=e.title;return d({type:"CREATE_CALENDAR_EVENT",payload:{beginTime:v(n),endTime:v(t),title:r}})},e.isABTestingAvailable=function(e){return f?Promise.resolve(m(e)):d({type:"GET_REMOTE_CONFIG"}).then(function(n){return f=n,m(e)})},e.isWebViewBridgeAvailable=l,e.logEvent=function(e){var n=e.category,t=e.action,r=e.label,o=e.value,i=function(e,n){var t={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&n.indexOf(r)<0&&(t[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)n.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(t[r[o]]=e[r[o]])}return t}(e,["category","action","label","value"]);if(!n||!t)return console.warn('Analytics event should have "category" and "action"',{category:n,action:t}),Promise.resolve();var a=n;r||(r="null_label"),o||(o=0);var s=p({eventCategory:n,eventAction:t,eventLabel:r,eventValue:o},i);return b({onAndroid:function(e){return e.logEvent&&e.logEvent(a,JSON.stringify(s)),Promise.resolve()},onIos:function(e){return e.postMessage({command:"logEvent",name:a,parameters:s}),Promise.resolve()},onWeb:function(e){return new Promise(function(n){e("NovumTracker.send","event",p(p({},s),{hitCallback:n}))})}})},e.logTiming=function(e){var n=e.category,t=void 0===n?"performance_timer":n,r=e.variable,o=e.value,i=e.label;if(!t||!r||!o)return console.warn('Analytics timing should have "category", "variable" and "value"',{category:t,variable:r,value:o}),Promise.resolve();var a={timingCategory:t,timingVar:r,timingValue:o,timingLabel:i},s=t;return b({onAndroid:function(e){return e.logEvent&&e.logEvent(s,JSON.stringify(a)),Promise.resolve()},onIos:function(e){return e.postMessage({command:"logEvent",name:s,parameters:a}),Promise.resolve()},onWeb:function(e){return new Promise(function(n){var t;e("NovumTracker.send",p(((t={hitType:"timing",hitCallback:n}).dimension8=String(o),t),a))})}})},e.nativeAlert=function(e){var n=e.message,t=e.title,r=e.buttonText;return l()?d({type:"ALERT",payload:{title:t,message:n,buttonText:r}}):(window.alert(n),Promise.resolve())},e.nativeConfirm=function(e){var n=e.message,t=e.title,r=e.acceptText,o=e.cancelText;return l()?d({type:"CONFIRM",payload:{message:n,title:t,acceptText:r,cancelText:o}}).then(function(e){return e.result}):Promise.resolve(window.confirm(n))},e.nativeMessage=function(e){var n=e.message,t=e.duration,r=e.buttonText,o=e.type;return l()?d({type:"MESSAGE",payload:{message:n,duration:t,buttonText:r,type:o}}):(window.alert(n),Promise.resolve())},e.notifyPageLoaded=function(){return d({type:"PAGE_LOADED"})},e.onNativeEvent=function(e){var n=function(n){if("NATIVE_EVENT"===n.type){var t=e({event:n.payload.event}),r=a();r&&r(JSON.stringify({type:"NATIVE_EVENT",id:n.id,payload:{action:t.action||"default"}}))}};return u(n),function(){c(n)}},e.reportStatus=function(e){var n=e.feature,t=e.status,r=e.reason;return d({type:"STATUS_REPORT",payload:{feature:n,status:t,reason:r}})},e.requestContact=function(e){var n=(void 0===e?{}:e).filter;return d({type:"GET_CONTACT_DATA",payload:{filter:void 0===n?"phone":n}})},e.requestDeviceImei=function(){return d({type:"IMEI"},200).then(function(e){return e.imei}).catch(function(){return null})},e.requestSimIcc=function(){return d({type:"SIM_ICC"},200).then(function(e){return e.icc}).catch(function(){return null})},e.requestSimImsi=function(){return d({type:"IMSI"},200).then(function(e){return e.imsi}).catch(function(){return null})},e.setScreenName=function(e,n){return e?b({onAndroid:function(n){return n.setScreenName&&n.setScreenName(e),Promise.resolve()},onIos:function(n){return n.postMessage({command:"setScreenName",name:e}),Promise.resolve()},onWeb:function(t){return new Promise(function(r){var o=e.startsWith("/")?e:"/"+e;o!==w?(w=o,t(function(){t.getAll().filter(g).forEach(function(e){e.set("page",o),e.send("pageView",p(p({},n),{hitCallback:r}))})})):r()})}}):(console.warn("Missing analytics screenName"),Promise.resolve())},e.setUserProperty=function(e,n){return e&&n?(n=String(n),b({onAndroid:function(t){return t.setUserProperty&&t.setUserProperty(e,n),Promise.resolve()},onIos:function(t){return t.postMessage({command:"setUserProperty",name:e,value:n}),Promise.resolve()},onWeb:function(t){var r,o=T[e];return o?(t("NovumTracker.set",((r={})["dimension"+o]=String(n),r)),Promise.resolve()):(console.warn("No custom dimension defined for user property",e),Promise.resolve())}})):(console.warn("Trying to set analytics user property without name or value",e,n),Promise.resolve())},e.setWebViewTitle=function(e){return l()?d({type:"SET_TITLE",payload:{title:e}}):(document.title=e,Promise.resolve())},e.share=function(e){return d({type:"SHARE",payload:e})},e.updateNavigationBar=function(e){var n=e.title,t=e.showBackButton,r=e.showReloadButton,o=e.backgroundColor;return l()?d({type:"NAVIGATION_BAR",payload:{title:n,showBackButton:t,showReloadButton:r,backgroundColor:o}}):(void 0!==n&&(document.title=n),Promise.resolve())},Object.defineProperty(e,"__esModule",{value:!0})}); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).webviewBridge={})}(this,function(e){"use strict";var t=1,n=function(){return""+t++},r="__tuenti_webview_bridge",o=function(){return!(!window.tuentiWebView||!window.tuentiWebView.postMessage)},i=function(){return!!(window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.tuentiWebView&&window.webkit.messageHandlers.tuentiWebView.postMessage)},a=function(){return o()?function(e){window.tuentiWebView.postMessage(e)}:i()?function(e){window.webkit.messageHandlers.tuentiWebView.postMessage(e)}:null},s=[],u=function(e){s.push(e)},c=function(e){s=s.filter(function(t){return t!==e})},l=function(){return o()||i()},d=function(e,t){var r=e.type,o=e.id,i=void 0===o?n():o,s=e.payload,l=a(),d=JSON.stringify({type:r,id:i,payload:s});return"test"!==process.env.NODE_ENV&&"production"!==process.env.NODE_ENV&&console.debug("WebView Bridge SEND>",d),l?(setTimeout(function(){l(d)}),new Promise(function(e,n){var o=!1,a=function(t){t.id!==i||o||(t.type===r?e(t.payload):"ERROR"===t.type?n(t.payload):n({code:500,reason:"bad type: "+t.type+". Expecting "+r}),c(a))};u(a),t&&setTimeout(function(){o=!0,c(a),n({code:408,reason:"request timeout"})},t)})):Promise.reject({code:500,reason:"WebView postMessage not available"})};window[r]=window[r]||{postMessage:function(e){var t;"test"!==process.env.NODE_ENV&&"production"!==process.env.NODE_ENV&&console.debug("WebView Bridge RECV>",e);try{t=JSON.parse(e)}catch(t){throw Error("Problem parsing webview message: "+e)}s.forEach(function(e){return e(t)})}};var f=null,m=function(e){return"true"===f.result[e]},p=function(e){return Math.floor(e/1e3)},v=function(){return(v=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};var y,w=["NovumTracker","OBARGTracker"],g=function(e){return w.indexOf(e.get("name"))>=0},b=function(e){var t=e.onAndroid,n=e.onIos,r=e.onWeb;return window.AnalyticsWebInterface?t(window.AnalyticsWebInterface):window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.firebase?n(window.webkit.messageHandlers.firebase):window.ga&&window.ga.loaded?r(window.ga):Promise.resolve()},E={obIds:1,paymentModels:2,serviceWorkerStatus:3,isAdmin:5,hasIpComms:6,af_source:9,af_campaign:10,novum_uid_session:11,user_logged:12,currentSubscriptionId:13,currentSubscriptionType:14,currentPaymentModel:15,webviewBrowserVersion:16};e.CD_EVENT_VALUE=8,e.CD_NOVUM_UID=7,e.CD_WEBAPP_INSTALLED=4,e.attachToEmail=function(e){var t=e.url,n=e.subject,r=e.fileName,o=e.recipient,i=e.body;return d({type:"ATTACH_TO_EMAIL",payload:{url:t,subject:n,fileName:r,recipient:o,body:i}})},e.createCalendarEvent=function(e){var t=e.beginTime,n=e.endTime,r=e.title;return d({type:"CREATE_CALENDAR_EVENT",payload:{beginTime:p(t),endTime:p(n),title:r}})},e.fetch=function(e){var t=e.url,n=e.method,r=e.headers,o=e.body;return l()?d({type:"FETCH",payload:{url:t,method:n,headers:r,body:o}}):Promise.resolve({status:500,headers:{},body:"Bridge not available"})},e.isABTestingAvailable=function(e){return f?Promise.resolve(m(e)):d({type:"GET_REMOTE_CONFIG"}).then(function(t){return f=t,m(e)})},e.isWebViewBridgeAvailable=l,e.logEvent=function(e){var t=e.category,n=e.action,r=e.label,o=e.value,i=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n}(e,["category","action","label","value"]);if(!t||!n)return console.warn('Analytics event should have "category" and "action"',{category:t,action:n}),Promise.resolve();var a=t;r||(r="null_label"),o||(o=0);var s=v({eventCategory:t,eventAction:n,eventLabel:r,eventValue:o},i);return b({onAndroid:function(e){return e.logEvent&&e.logEvent(a,JSON.stringify(s)),Promise.resolve()},onIos:function(e){return e.postMessage({command:"logEvent",name:a,parameters:s}),Promise.resolve()},onWeb:function(e){return new Promise(function(t){e("NovumTracker.send","event",v(v({},s),{hitCallback:t}))})}})},e.logTiming=function(e){var t=e.category,n=void 0===t?"performance_timer":t,r=e.variable,o=e.value,i=e.label;if(!n||!r||!o)return console.warn('Analytics timing should have "category", "variable" and "value"',{category:n,variable:r,value:o}),Promise.resolve();var a={timingCategory:n,timingVar:r,timingValue:o,timingLabel:i},s=n;return b({onAndroid:function(e){return e.logEvent&&e.logEvent(s,JSON.stringify(a)),Promise.resolve()},onIos:function(e){return e.postMessage({command:"logEvent",name:s,parameters:a}),Promise.resolve()},onWeb:function(e){return new Promise(function(t){var n;e("NovumTracker.send",v(((n={hitType:"timing",hitCallback:t}).dimension8=String(o),n),a))})}})},e.nativeAlert=function(e){var t=e.message,n=e.title,r=e.buttonText;return l()?d({type:"ALERT",payload:{title:n,message:t,buttonText:r}}):(window.alert(t),Promise.resolve())},e.nativeConfirm=function(e){var t=e.message,n=e.title,r=e.acceptText,o=e.cancelText;return l()?d({type:"CONFIRM",payload:{message:t,title:n,acceptText:r,cancelText:o}}).then(function(e){return e.result}):Promise.resolve(window.confirm(t))},e.nativeMessage=function(e){var t=e.message,n=e.duration,r=e.buttonText,o=e.type;return l()?d({type:"MESSAGE",payload:{message:t,duration:n,buttonText:r,type:o}}):(window.alert(t),Promise.resolve())},e.notifyPageLoaded=function(){return d({type:"PAGE_LOADED"})},e.onNativeEvent=function(e){var t=function(t){if("NATIVE_EVENT"===t.type){var n=e({event:t.payload.event}),r=a();r&&r(JSON.stringify({type:"NATIVE_EVENT",id:t.id,payload:{action:n.action||"default"}}))}};return u(t),function(){c(t)}},e.reportStatus=function(e){var t=e.feature,n=e.status,r=e.reason;return d({type:"STATUS_REPORT",payload:{feature:t,status:n,reason:r}})},e.requestContact=function(e){var t=(void 0===e?{}:e).filter;return d({type:"GET_CONTACT_DATA",payload:{filter:void 0===t?"phone":t}})},e.requestDeviceImei=function(){return d({type:"IMEI"},200).then(function(e){return e.imei}).catch(function(){return null})},e.requestSimIcc=function(){return d({type:"SIM_ICC"},200).then(function(e){return e.icc}).catch(function(){return null})},e.requestSimImsi=function(){return d({type:"IMSI"},200).then(function(e){return e.imsi}).catch(function(){return null})},e.setScreenName=function(e,t){return e?b({onAndroid:function(t){return t.setScreenName&&t.setScreenName(e),Promise.resolve()},onIos:function(t){return t.postMessage({command:"setScreenName",name:e}),Promise.resolve()},onWeb:function(n){return new Promise(function(r){var o=e.startsWith("/")?e:"/"+e;o!==y?(y=o,n(function(){n.getAll().filter(g).forEach(function(e){e.set("page",o),e.send("pageView",v(v({},t),{hitCallback:r}))})})):r()})}}):(console.warn("Missing analytics screenName"),Promise.resolve())},e.setUserProperty=function(e,t){return e&&t?(t=String(t),b({onAndroid:function(n){return n.setUserProperty&&n.setUserProperty(e,t),Promise.resolve()},onIos:function(n){return n.postMessage({command:"setUserProperty",name:e,value:t}),Promise.resolve()},onWeb:function(n){var r,o=E[e];return o?(n("NovumTracker.set",((r={})["dimension"+o]=String(t),r)),Promise.resolve()):(console.warn("No custom dimension defined for user property",e),Promise.resolve())}})):(console.warn("Trying to set analytics user property without name or value",e,t),Promise.resolve())},e.setWebViewTitle=function(e){return l()?d({type:"SET_TITLE",payload:{title:e}}):(document.title=e,Promise.resolve())},e.share=function(e){return d({type:"SHARE",payload:e})},e.updateNavigationBar=function(e){var t=e.title,n=e.showBackButton,r=e.showReloadButton,o=e.backgroundColor;return l()?d({type:"NAVIGATION_BAR",payload:{title:t,showBackButton:n,showReloadButton:r,backgroundColor:o}}):(void 0!==t&&(document.title=t),Promise.resolve())},Object.defineProperty(e,"__esModule",{value:!0})}); |
{ | ||
"name": "@tef-novum/webview-bridge", | ||
"version": "2.2.0", | ||
"version": "2.3.0-beta0", | ||
"description": "JavaScript library to access to native functionality. Requires a webview with a postMessage bridge.", | ||
@@ -10,3 +10,3 @@ "main": "./dist/webview-bridge-cjs.js", | ||
"build": "del dist && rollup -c && uglifyjs --compress --mangle -o dist/webview-bridge-umd.min.js dist/webview-bridge-umd.js && uglifyjs --compress --mangle -o dist/webview-bridge-iife.min.js dist/webview-bridge-iife.js && cp ./src/webview-bridge-cjs.js.flow ./dist", | ||
"test": "jest", | ||
"test": "jest --coverage", | ||
"lint": "eslint src/**/*.ts", | ||
@@ -13,0 +13,0 @@ "prepublishOnly": "npm run lint && npm test && npm run build" |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
2116991
36
3136
1
4