Skip to content

Instantly share code, notes, and snippets.

@icai
Last active April 12, 2024 06:23
Show Gist options
  • Save icai/a0e1767ec536d43123c305c91041b1c6 to your computer and use it in GitHub Desktop.
Save icai/a0e1767ec536d43123c305c91041b1c6 to your computer and use it in GitHub Desktop.
支付宝 appx/web-view.js 源代码
/*!
*
* ap/v1.25.9
* Mon Jun 20 2022 08:37:45 GMT+0000 (Coordinated Universal Time)
*
*/
var myApp = (function (modules) {
var moduleCache = {};
function require(moduleId) {
if (moduleCache[moduleId]) return moduleCache[moduleId].exports;
var module = (moduleCache[moduleId] = {
id: moduleId,
loaded: false,
exports: {},
});
modules[moduleId].call(
module.exports,
module,
module.exports,
require
);
module.loaded = true;
return module.exports;
}
require.m = modules;
require.c = moduleCache;
require.d = function (exports, name, getter) {
if (!require.o(exports, name)) {
Object.defineProperty(exports, name, { enumerable: true, get: getter });
}
};
require.r = function (exports) {
if (typeof Symbol !== "undefined" && Symbol.toStringTag) {
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
}
Object.defineProperty(exports, "__esModule", { value: true });
};
require.t = function (value, mode) {
if (mode & 1) value = require(value);
if (mode & 8) return value;
if (mode & 4 && typeof value === "object" && value && value.__esModule)
return value;
var ns = Object.create(null);
require.r(ns);
Object.defineProperty(ns, "default", { enumerable: true, value: value });
if (mode & 2 && typeof value != "string")
for (var key in value)
require.d(
ns,
key,
function (key) {
return value[key];
}.bind(null, key)
);
return ns;
};
require.n = function (module) {
var getter =
module && module.__esModule
? function () {
return module.default;
}
: function () {
return module;
};
require.d(getter, "a", getter);
return getter;
};
require.o = function (object, property) {
return Object.prototype.hasOwnProperty.call(object, property);
};
require.p = "";
return require(require.s = 1);
})([
function (module, exports) {
function assign(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
}
module.exports = assign;
},
function (module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
var _assign__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
var _assign__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/ __webpack_require__.n(
_assign__WEBPACK_IMPORTED_MODULE_0__
);
var getKeys = function (obj) {
return obj && typeof obj === "object" ? Object.keys(obj) : [];
};
function parseParam(format, value) {
var token,
parsedValue,
parsedToken,
result = {};
switch (format) {
case "%s":
parsedValue =
typeof value === "object" ? JSON.stringify(value) : value + "";
break;
case "%c":
if (value.startsWith("#")) value = value.substring(1);
if (value.length === 3) value = value.replace(/(.)/g, "$1$1");
parsedValue = parseInt(value, 16);
if (isNaN(parsedValue))
console.error(value + " is an invalid hex color.");
break;
case "%b":
if (typeof value === "string")
value = value.replace(/^data:(\/|\w|\-|\.)+;base64,/i, "");
parsedValue = value;
break;
case "%d":
parsedValue = parseInt(value, 10);
break;
case "%f":
parsedValue = parseFloat(value);
break;
default:
parsedValue = value;
break;
}
return parsedValue;
}
function applyFormat(target, source, defaultValues) {
getKeys(source).forEach(function (key) {
var tokenMatch = source[key].match(/(\w+)(%\w)$/i);
var tokenObj = { key: source[key] };
if (tokenMatch) {
tokenObj.key = tokenMatch[1];
tokenObj.type = tokenMatch[2];
}
if (
key in target ||
(defaultValues && key in defaultValues && !(tokenObj.key in target))
) {
if (target[tokenObj.key] === undefined) {
target[tokenObj.key] = parseParam(
tokenObj.type,
defaultValues ? defaultValues[key] : target[key]
);
if (tokenObj.key !== key) delete target[key];
}
}
});
return target;
}
function handleCallback(options, callback) {
var completeFn = options.complete || function () {};
var successFn = options.success || function () {};
var failFn = options.fail || function () {};
if (callback && callback.error) failFn(callback);
else if (successFn && callback) successFn(callback);
completeFn(callback);
}
var imagePreviewDefaults = {
current: "init%d",
enableSavePhoto: "enablesavephoto",
};
var imageChooseDefaults = {
count: 1,
sourceType: ["camera"],
};
var imageChooseTransforms = {
before: function (options) {
applyFormat(options, imageChooseDefaults);
},
after: function (options) {
applyFormat(options, {
errorCode: "error",
errorDesc: "errorMessage",
localIds: "apFilePaths",
tempFilePaths: "apFilePaths",
});
if (typeof options.apFilePaths === "string")
options.apFilePaths = JSON.parse(options.apFilePaths);
options.tempFilePaths = options.apFilePaths;
},
};
var imageViewerTransforms = {
method: "imageViewer",
before: function (options) {
applyFormat(options, { current: "init%d", enableSavePhoto: "enablesavephoto" });
options.init = options.init || 0;
options.images = [];
(options.urls || []).forEach(function (url) {
options.images.push({ url: url });
});
delete options.urls;
},
};
var userAgent = navigator.userAgent || navigator.swuserAgent;
var isAlipay = !!userAgent.match(/Alipay/);
var versionMatch = userAgent.match(/AlipayApp\((\S*)\)/);
var aliAppVersion = ["", "0.0.0"];
if (versionMatch) {
aliAppVersion = versionMatch[1].split("/")[1].match(/(\d+\.\d+\.\d+)/);
}
var alipayLite = userAgent.match(/Griver\/(\d+\.\d+\.\d+)/);
var alipayVersion = alipayLite
? aliAppVersion
: userAgent.match(/Ariver\/(\d+\.\d+\.\d+)/)
? aliAppVersion
: ["", "0.0.0"];
var alipayVersionParts = alipayVersion[1].split(".").map(function (part) {
return Number(part);
});
var isGriver = alipayLite || !!userAgent.match(/Griver/);
var isWindows = userAgent.indexOf("Windows") > -1;
var isMac = userAgent.indexOf("Macintosh") > -1;
var isAndroid = userAgent.indexOf("Android") > -1;
var isiOS = !!userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
var languageMatch = userAgent.match(/Language\/(\S+)/);
var language = languageMatch ? languageMatch[1] : "";
function checkUCBS() {
var ucbsMatch = userAgent.match(/UCBS\/(\d+\.\d+)/);
return (ucbsMatch && ucbsMatch[1]) || "";
}
checkUCBS();
function openInBrowser(api, url, login, installed, extraQuery, isLite) {
if ("installed" in installed) {
var isTaobaoInstalled = function (cb) {
var scheme = isLite ? "taobaolite://" : "taobao://";
var packageName = isLite ? "com.taobao.litetao" : "com.taobao.taobao";
api(
"isInstalledApp",
{ packagename: packageName, scheme: scheme },
function (response) {
if (response.error) {
console.warn("openTaobao does not have permission", response);
} else {
if (login) {
api("getLoginToken", {}, function (res) {
var token = null;
var encrypted = false;
if (res.token !== "" && "token" in res) {
token = res.token;
encrypted = res.encrypted;
}
if (token) {
url += "&loginToken=" + token + "&tokenEncrypted=" + encrypted;
}
api("openInBrowser", { url: url });
});
} else {
api("openInBrowser", { url: url });
}
}
}
);
api("remoteLog", {
bizType: "TINYAPP",
seedId: "APPX_OPEN_TAOBAO",
type: "monitor",
param1: url,
});
};
isTaobaoInstalled();
} else {
var downloadUrl = isLite
? "https://pages.tmall.com/wow/sale/act/download-page-new"
: "https://h5.m.taobao.com/bcec/downloadTaobao.html";
if (typeof extraQuery === "string") downloadUrl += "?" + extraQuery;
api("openInBrowser", { url: downloadUrl });
}
}
var storageAPI = function () {
return {
setStorage: {
method: "setTinyLocalStorage",
before: function (options) {
options.value = JSON.stringify({ APDataStorage: options.data });
options.data = options.value;
options.key = String(options.key);
options.type = "user";
},
},
getStorage: {
method: "getTinyLocalStorage",
before: function (options) {
options.key = String(options.key);
options.type = "user";
},
after: function (response) {
if (response.error === 11) {
response.data = null;
delete response.error;
delete response.errorMessage;
delete response.success;
}
if (response.data) {
var data = JSON.parse(response.data);
response.data = data.APDataStorage;
}
},
},
removeStorage: {
method: "removeTinyLocalStorage",
before: function (options) {
options.key = String(options.key);
options.type = "user";
},
},
clearStorage: {
method: "clearTinyLocalStorage",
before: function (options) {
options.type = "user";
},
},
getStorageInfo: { method: "getTinyLocalStorageInfo" },
};
};
var insidePlus = userAgent.indexOf("InsidePlus") > -1;
var isDingTalk = userAgent.toLowerCase().indexOf("dingtalk") > -1 && !insidePlus;
var bridgeReady = new Promise(function (resolve) {
window.AlipayJSBridge ? resolve() : document.addEventListener("AlipayJSBridgeReady", resolve);
});
var AlipayBridge = self;
var alipayBridgeMethods = {
call: function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
bridgeReady.then(function () {
var _AlipayJSBridge;
(_AlipayJSBridge = AlipayBridge).call.apply(_AlipayJSBridge, args);
});
},
postMessage: function (data) {
bridgeReady.then(function () {
var message = { type: "message", detail: data };
AlipayBridge.AlipayJSBridge.call("postWebViewMessage", message);
});
},
getEnv: function (callback) {
var ua = navigator.userAgent;
if (ua.indexOf("Nebula") === -1 && ua.indexOf("Ariver") === -1) {
callback && callback({ miniprogram: false });
} else {
bridgeReady.then(function () {
AlipayBridge.AlipayJSBridge.call("getEmbedWebViewEnv", function (env) {
callback && callback(env);
});
});
}
},
startShare: function () {
AlipayBridge.AlipayJSBridge.call("postWebViewMessage", { type: "webViewShare" });
},
};
[
"navigateTo",
"navigateBack",
"switchTab",
"reLaunch",
"redirectTo",
].forEach(function (method) {
alipayBridgeMethods[method] = function (options) {
bridgeReady.then(function () {
var params = Object.assign({}, options);
var successFn = options.success || function () {};
var completeFn = options.complete || function () {};
var failFn = options.fail || function () {};
if (params.success || params.complete || params.fail) {
W[++V] = Object.assign({}, params);
delete params.success;
delete params.complete;
delete params.fail;
}
AlipayBridge.AlipayJSBridge.call("postWebViewMessage", {
type: method,
callback: V,
param: params,
});
});
};
});
var nativeAPIs = {
alert: {
before: function (options) {
applyFormat(options, { content: "message%s", buttonText: "button%s" });
},
},
showLoading: {
before: function (options) {
applyFormat(options, { content: "text%s" });
},
},
hideLoading: {},
previewImage: {
method: "imageViewer",
before: function (options) {
applyFormat(options, { current: "init%d", enableSavePhoto: "enablesavephoto" });
options.init = options.init || 0;
options.images = [];
(options.urls || []).forEach(function (url) {
options.images.push({ u: url });
});
delete options.urls;
},
},
chooseImage: {
before: function (options) {
applyFormat(options, { content: "message%s", buttonText: "button%s" });
},
after: function (response) {
applyFormat(response, {
errorCode: "error",
errorDesc: "errorMessage",
localIds: "apFilePaths",
tempFilePaths: "apFilePaths",
});
if (typeof response.apFilePaths === "string") {
response.apFilePaths = JSON.parse(response.apFilePaths);
}
response.tempFilePaths = response.apFilePaths;
},
},
getNetworkType: {
after: function (response) {
if (response.networkInfo) {
response.networkType = response.networkInfo.toUpperCase();
}
},
},
openLocation: {
before: function (options) {
options.scale = options.scale || 15;
options.hidden = "1";
},
},
openTaobao: bridgeReady.then(function () {
return {
method: function (options) {
var api = function () {
return AlipayBridge.AlipayJSBridge.call;
};
var isLite = options.isLite;
var action = options.url;
api(
"isInstalledApp",
{
packagename: isLite
? "com.taobao.litetao"
: "com.taobao.taobao",
scheme: isLite ? "taobaolite://" : "taobao://",
},
function (response) {
openInBrowser(
api,
action,
options.login,
response,
options.extraQuery,
isLite
);
}
);
api("remoteLog", {
bizType: "TINYAPP",
seedId: "APPX_OPEN_TAOBAO",
type: "monitor",
param1: action,
});
},
};
}),
tradePay: {},
getLocation: bridgeReady.then(function () {
return {
method: "getCurrentLocation",
before: function (options) {
applyFormat(options, { accuracy: "horizontalAccuracy", type: "requestType" });
options.requestType = options.requestType || 0;
options.useDefault = true;
options.bizType = options.bizType
? AlipayBridge.AlipayJSBridge.startupParams.parentAppId +
"-" +
options.bizType
: AlipayBridge.AlipayJSBridge.startupParams.parentAppId;
if (isAndroid) {
options.isHighAccuracy = options.isHighAccuracy === undefined ? true : options.isHighAccuracy;
options.isNeedSpeed = options.isNeedSpeed === undefined ? true : options.isNeedSpeed;
}
},
after: function (response) {
applyFormat(response, { citycode: "cityCode", adcode: "adCode" });
if (!response.city && response.province) {
response.city = response.province;
}
if (response.latitude) response.latitude = response.latitude.toString();
if (response.longitude) response.longitude = response.longitude.toString();
if (response.accuracy) {
response.accuracy = response.accuracy.toString();
response.horizontalAccuracy = response.accuracy;
}
delete response.speed;
},
};
}),
};
if (isDingTalk) {
[
"setStorage",
"getStorage",
"removeStorage",
"clearStorage",
"getStorageInfo",
"tradePay",
].forEach(function (method) {
delete nativeAPIs[method];
});
}
var methods = Object.keys(nativeAPIs);
methods.forEach(function (method) {
alipayBridgeMethods[method] = function (options) {
bridgeReady.then(function () {
var nativeMethod = nativeAPIs[method] || {};
if (nativeMethod instanceof Promise) {
nativeMethod.then(function (resolvedMethod) {
invokeAlipayJSBridge(options, method, resolvedMethod);
});
} else {
invokeAlipayJSBridge(options, method, nativeMethod);
}
});
};
});
function invokeAlipayJSBridge(options, method, nativeMethod) {
var hasCallback = options.callback !== false;
var _ref = (function (options, nativeMethod) {
var params = Object.assign({}, options);
var callbackParams = {
success: params.success || U,
fail: params.fail || U,
complete: params.complete || U,
};
delete params.success;
delete params.fail;
delete params.complete;
if (nativeMethod && nativeMethod.before) {
nativeMethod.before(params);
}
return { newParam: params, callbackParam: callbackParams, apiName: nativeMethod.method ? nativeMethod.method : method };
})(options, nativeMethod);
var newParam = _ref.newParam;
var callbackParam = _ref.callbackParam;
var apiName = _ref.apiName;
if (nativeMethod.after) {
nativeMethod.after(apiName);
}
if (options === undefined) {
AlipayBridge.AlipayJSBridge.call(apiName);
} else {
var bridgeCall = AlipayBridge.AlipayJSBridge.call.bind(
AlipayBridge.AlipayJSBridge,
apiName,
newParam
);
if (hasCallback) {
bridgeCall(function (response) {
var res = response;
if (nativeMethod.after) nativeMethod.after(res);
callbackParam.success(res);
callbackParam.complete(res);
callbackParam.fail(res);
});
} else {
bridgeCall();
}
}
}
var AliPay = {
call: function call() {
for (
var _len2 = arguments.length, args = new Array(_len2), _key2 = 0;
_key2 < _len2;
_key2++
) {
args[_key2] = arguments[_key2];
}
bridgeReady.then(function () {
var _AlipayJSBridge2;
(_AlipayJSBridge2 = AlipayBridge).call.apply(_AlipayJSBridge2, args);
});
},
postMessage: function postMessage(data) {
bridgeReady.then(function () {
var message = {
type: "message",
detail: data,
};
AlipayBridge.AlipayJSBridge.call("postWebViewMessage", message);
});
},
getEnv: function getEnv(callback) {
var ua = navigator.userAgent;
if (ua.indexOf("Nebula") === -1 && ua.indexOf("Ariver") === -1) {
callback &&
callback({
miniprogram: false,
});
} else {
bridgeReady.then(function () {
AlipayBridge.AlipayJSBridge.call("getEmbedWebViewEnv", function (
env
) {
callback &&
callback(env);
});
});
}
},
startShare: function startShare() {
AlipayBridge.AlipayJSBridge.call("postWebViewMessage", {
type: "webViewShare",
});
},
};
[
"navigateTo",
"navigateBack",
"switchTab",
"reLaunch",
"redirectTo",
].forEach(function (method) {
AliPay[method] = function (options) {
bridgeReady.then(function () {
var params = Object.assign({}, options);
var successFn = options.success || function () {};
var completeFn = options.complete || function () {};
var failFn = options.fail || function () {};
if (params.success || params.complete || params.fail) {
W[++V] = Object.assign({}, params);
delete params.success;
delete params.complete;
delete params.fail;
}
AlipayBridge.AlipayJSBridge.call("postWebViewMessage", {
type: method,
callback: V,
param: params,
});
});
};
});
var AlipayBridge_1 = AliPay;
var navigator$1 = window.navigator;
if (navigator$1.userAgent.indexOf("Alipay") !== -1) {
if (window.AlipayJSBridge) {
AlipayBridge_1.AlipayJSBridge = window.AlipayJSBridge;
} else {
document.addEventListener(
"AlipayJSBridgeReady",
function () {
AlipayBridge_1.AlipayJSBridge = window.AlipayJSBridge;
},
false
);
}
}
exports.assign = _assign__WEBPACK_IMPORTED_MODULE_0___default.a;
exports.openTaobao = function (url, isLite, login, extraQuery) {
var api = function () {
return window.AlipayJSBridge.call;
};
api(
"isInstalledApp",
{
packagename: isLite ? "com.taobao.litetao" : "com.taobao.taobao",
scheme: isLite ? "taobaolite://" : "taobao://",
},
function (response) {
openInBrowser(api, url, login, response, extraQuery, isLite);
}
);
api("remoteLog", {
bizType: "TINYAPP",
seedId: "APPX_OPEN_TAOBAO",
type: "monitor",
param1: url,
});
};
exports.getEnv = function (callback) {
var ua = navigator.userAgent;
if (ua.indexOf("Nebula") === -1 && ua.indexOf("Ariver") === -1) {
callback &&
callback({
miniprogram: false,
});
} else {
window.AlipayJSBridge.call("getEmbedWebViewEnv", function (env) {
callback &&
callback(env);
});
}
};
exports.startShare = function () {
window.AlipayJSBridge.call("postWebViewMessage", {
type: "webViewShare",
});
};
exports.default = AlipayBridge_1;
},
]);
/*!
*
* ap/v1.25.9
* Mon Jun 20 2022 08:37:45 GMT+0000 (Coordinated Universal Time)
*
*/
var my = (function (e) {
var t = {};
function n(a) {
if (t[a]) return t[a].exports;
var r = (t[a] = { i: a, l: !1, exports: {} });
return e[a].call(r.exports, r, r.exports, n), (r.l = !0), r.exports;
}
return (
(n.m = e),
(n.c = t),
(n.d = function (e, t, a) {
n.o(e, t) || Object.defineProperty(e, t, { enumerable: !0, get: a });
}),
(n.r = function (e) {
"undefined" != typeof Symbol &&
Symbol.toStringTag &&
Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }),
Object.defineProperty(e, "__esModule", { value: !0 });
}),
(n.t = function (e, t) {
if ((1 & t && (e = n(e)), 8 & t)) return e;
if (4 & t && "object" == typeof e && e && e.__esModule) return e;
var a = Object.create(null);
if (
(n.r(a),
Object.defineProperty(a, "default", { enumerable: !0, value: e }),
2 & t && "string" != typeof e)
)
for (var r in e)
n.d(
a,
r,
function (t) {
return e[t];
}.bind(null, r)
);
return a;
}),
(n.n = function (e) {
var t =
e && e.__esModule
? function () {
return e.default;
}
: function () {
return e;
};
return n.d(t, "a", t), t;
}),
(n.o = function (e, t) {
return Object.prototype.hasOwnProperty.call(e, t);
}),
(n.p = ""),
n((n.s = 1))
);
})([
function (e, t) {
function n() {
return (
(e.exports = n =
Object.assign ||
function (e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t];
for (var a in n)
Object.prototype.hasOwnProperty.call(n, a) && (e[a] = n[a]);
}
return e;
}),
n.apply(this, arguments)
);
}
e.exports = n;
},
function (e, t, n) {
"use strict";
n.r(t);
var a = n(0),
r = n.n(a);
var o = function (e) {
return e && "object" == typeof e ? Object.keys(e) : [];
};
function i(e, t) {
var n, a, r, o;
return (
"%s" === e
? (t = "object" == typeof (o = t) ? JSON.stringify(o) : o + "")
: "%c" === e
? (0 === (r = "" + (a = t)).indexOf("#") && (r = r.substr(1)),
3 === r.length && (r = r.replace(/(.)/g, "$1$1")),
(r = parseInt(r, 16)),
isNaN(r) && console.error(a + " is invalid hex color."),
(t = r))
: "%b" === e
? ("string" == typeof (n = t) &&
(n = n.replace(/^data:(\/|\w|\-|\.)+;base64,/i, "")),
(t = n))
: "%d" === e
? (t = parseInt(t, 10))
: "%f" === e && (t = parseFloat(t)),
t
);
}
function c(e, t, n) {
var a;
return (
(n = n || {}),
o(t).forEach(function (r) {
var o,
c,
s,
l = t[r];
(c = ((o = l) || "").match(/(\w+)(%\w)$/i)),
(s = { k: o }),
c && ((s.k = c[1]), (s.t = c[2])),
void 0 !== (l = (a = s).k) &&
(r in e || r in n) &&
void 0 === e[l] &&
((e[l] = i(a.t, void 0 === n[r] ? e[r] : n[r])),
l !== r && delete e[r]);
}),
e
);
}
function s(e, t) {
void 0 === e && (e = {});
var n = e,
a = n.complete,
r = n.success,
o = n.fail;
t && t.error ? o && o(t) : r && r(t), a && a(t);
}
var l,
u = {
b: function (e) {
c(e, { content: "message%s", buttonText: "button%s" });
},
},
d = {
b: function (e) {
c(e, { content: "text%s" });
},
},
f = {
b: function (e) {
(e.count = e.count || 1),
"string" == typeof e.sourceType && (e.sourceType = [e.sourceType]);
},
a: function (e) {
c(e, {
errorCode: "error",
errorDesc: "errorMessage",
localIds: "apFilePaths",
tempFilePaths: "apFilePaths",
}),
"string" == typeof e.apFilePaths &&
(e.apFilePaths = JSON.parse(e.apFilePaths)),
(e.tempFilePaths = e.apFilePaths);
},
},
p = {
m: "imageViewer",
b: function (e) {
c(e, { current: "init%d", enableSavePhoto: "enablesavephoto" }),
e.init || (e.init = 0),
(e.images = []),
(e.urls || []).forEach(function (t) {
e.images.push({ u: t });
}),
delete e.urls;
},
},
g = navigator.userAgent || navigator.swuserAgent,
y =
(g.match(/Ariver\/(\d+\.\d+\.\d+)/),
g.match(/Griver\/(\d+\.\d+\.\d+)/)),
v = g.match(/DingMiniApp\/(\d+\.\d+\.\d+)/),
m = g.match(/AliApp\((\S*)/),
h = g.match(/AriverApp\((\S*)/),
b = g.match(/GriverApp\((\S*)/),
S = g.match(/TaurusApp\((\S*)/),
A =
(!!m && 2 === m.length && m[1].split("/")) ||
(!!h && 2 === h.length && h[1].split("/")) ||
(!!b && 2 === b.length && b[1].split("/")) ||
(!!S && 2 === S.length && S[1].split("/")),
w = (g.match(/VGUI\/(\d+\.\d+\.\d+)/), ["", "0.0.0"]),
O = g.match(/Language\/(\S+)/);
A
? (A[0], (w = A[1].match(/(\d+\.\d+\.\d+)/)), v && ((l = w), (w = v)))
: y && ("Griver", (w = y));
var P,
T = w[1].split(".").map(function (e) {
return Number(e);
}),
k = (T[0], T[1], T[2], g.indexOf("InsidePlus") > -1),
x =
(g.toLowerCase().indexOf("dingtalk"),
g.indexOf("Windows"),
g.indexOf("Macintosh"),
w && w[1],
l && l[1],
g.indexOf("Android") > -1);
g.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
g.indexOf("AlipayIDE"),
O && O[1],
g.indexOf("Language/en"),
g.indexOf("Language/zh-HK");
function B() {
if (void 0 !== P) return P;
var e = g.match(/UCBS\/(\d+\.\d+)/);
return (P = (e && e[1]) || "");
}
B();
function L(e, t, n, a, r, o) {
"installed" in a &&
(function (e, t, n) {
var a = /^(\w+):\/\//;
e(
"configService.getConfig",
{ configKey: "APPX_OPENTAOBAO_IN_BROWSER" },
function (e) {
if (e.configKey) {
var r;
try {
r = JSON.parse(e.configKey);
} catch (e) {
console.error(e);
}
var o = !1;
if (Array.isArray(r) && t) {
var i = t.match(a),
c = i && i[1];
((c && r.indexOf(c) > -1) || r.indexOf("*") > -1) && (o = !0);
}
n(
o
? { success: !0 }
: { error: 4, errorMessage: "无权调用该接口" }
);
} else n({ success: !0 });
}
);
})(e, t, function (i) {
if (i.error) console.warn("openTaobao does not have permission", i);
else if (a.installed)
n
? e("getLoginToken", {}, function (n) {
var a = null,
r = !1;
"token" in n &&
"" !== n.token &&
((a = n.token), (r = n.encrypted)),
a && (t += "&loginToken=" + a + "&tokenEncrypted=" + r),
e("openInBrowser", { url: t });
})
: e("openInBrowser", { url: t });
else {
var c = o
? "https://pages.tmall.com/wow/sale/act/download-page-new"
: "https://h5.m.taobao.com/bcec/downloadTaobao.html";
"string" == typeof r && (c = c + "?" + r),
e("openInBrowser", { url: c });
}
});
}
var I = function () {
return {
setStorage: {
m: "setTinyLocalStorage",
b: function (e) {
(e.value = JSON.stringify({ APDataStorage: e.data })),
(e.data = e.value),
(e.key = String(e.key)),
(e.type = "user");
},
},
getStorage: {
m: "getTinyLocalStorage",
b: function (e) {
(e.key = String(e.key)), (e.type = "user");
},
a: function (e) {
if (
(11 === e.error &&
((e.data = null),
delete e.error,
delete e.errorMessage,
delete e.success),
e.data)
) {
var t = JSON.parse(e.data);
e.data = t.APDataStorage;
}
},
},
removeStorage: {
m: "removeTinyLocalStorage",
b: function (e) {
(e.key = String(e.key)), (e.type = "user");
},
},
clearStorage: {
m: "clearTinyLocalStorage",
b: function (e) {
e.type = "user";
},
},
getStorageInfo: { m: "getTinyLocalStorageInfo" },
};
},
J = navigator.userAgent || navigator.swuserAgent,
N = J.indexOf("InsidePlus") > -1,
E = J.toLowerCase().indexOf("dingtalk") > -1 && !N,
M = new Promise(function (e) {
window.AlipayJSBridge
? e()
: document.addEventListener("AlipayJSBridgeReady", e);
}),
C = self,
j = r()(
{
alert: u,
showLoading: d,
hideLoading: {},
previewImage: p,
chooseImage: f,
getNetworkType: {
a: function (e) {
e.networkInfo && (e.networkType = e.networkInfo.toUpperCase());
},
},
openLocation: {
b: function (e) {
(e.scale = e.scale || 15), (e.hidden = "1");
},
},
openTaobao: M.then(function () {
return (
(e = function () {
return C.AlipayJSBridge.call;
}),
{
d: function (t) {
var n = e(),
a = t.isLite;
n(
"isInstalledApp",
{
packagename: a
? "com.taobao.litetao"
: "com.taobao.taobao",
scheme: a ? "taobaolite://" : "taobao://",
},
function (e) {
L(n, t.url, t.login, e, t.extraQuery, a);
}
),
n("remoteLog", {
bizType: "TINYAPP",
seedId: "APPX_OPEN_TAOBAO",
type: "monitor",
param1: t.url,
});
},
}
);
var e;
}),
tradePay: {},
getLocation: M.then(function () {
return (
(e = function () {
return C.AlipayJSBridge.startupParams.parentAppId;
}),
{
m: "getCurrentLocation",
b: function (t) {
c(t, { accuracy: "horizontalAccuracy", type: "requestType" }),
t.requestType || ((t.requestType = 0), (t.useDefault = !0)),
(t.bizType = t.bizType ? e() + "-" + t.bizType : e()),
x &&
(void 0 === t.isHighAccuracy && (t.isHighAccuracy = !0),
void 0 === t.isNeedSpeed && (t.isNeedSpeed = !0));
},
a: function (e) {
c(e, { citycode: "cityCode", adcode: "adCode" }),
!e.city && e.province && (e.city = e.province),
e.latitude && (e.latitude += ""),
e.longitude && (e.longitude += ""),
e.accuracy &&
((e.accuracy += ""), (e.horizontalAccuracy = e.accuracy)),
delete e.speed;
},
}
);
var e;
}),
},
I()
);
E &&
[
"setStorage",
"getStorage",
"removeStorage",
"clearStorage",
"getStorageInfo",
"tradePay",
].forEach(function (e) {
delete j[e];
});
var _,
D = self,
F = new Promise(function (e) {
window.AlipayJSBridge
? e()
: document.addEventListener("AlipayJSBridgeReady", e);
}),
V = 0,
W = {},
z = self,
U = function () {},
G = function (e, t, n) {
var a = !1 !== n.callback,
o = (function (e, t, n) {
var a = r()({}, e),
o = {
success: a.success || U,
fail: a.fail || U,
complete: a.complete || U,
};
return (
delete a.success,
delete a.fail,
delete a.complete,
n && n.b && n.b(a),
{ newParam: a, callbackParam: o, apiName: n.m ? n.m : t }
);
})(e, t, n);
if (n.d) n.d(o.newParam);
else if (void 0 === e) z.AlipayJSBridge.call(o.apiName);
else {
var i = z.AlipayJSBridge.call.bind(
z.AlipayJSBridge,
o.apiName,
o.newParam
);
a
? i(function (e) {
var t = e;
n.a && n.a(t), s(o.callbackParam, t);
})
: i();
}
},
K = {
call: function () {
for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)
t[n] = arguments[n];
F.then(function () {
var e;
(e = z.AlipayJSBridge).call.apply(e, t);
});
},
postMessage: function (e) {
F.then(function () {
var t = { type: "message", detail: e };
z.AlipayJSBridge.call("postWebViewMessage", t);
});
},
getEnv: function (e) {
var t = navigator.userAgent;
-1 === t.indexOf("Nebula") && -1 === t.indexOf("Ariver")
? e && e({ miniprogram: !1 })
: F.then(function () {
z.AlipayJSBridge.call("getEmbedWebViewEnv", function (t) {
e && e(t);
});
});
},
startShare: function () {
z.AlipayJSBridge.call("postWebViewMessage", { type: "webViewShare" });
},
};
[
"navigateTo",
"navigateBack",
"switchTab",
"reLaunch",
"redirectTo",
].forEach(function (e) {
K[e] = function (t) {
F.then(function () {
var n = r()({}, t);
(n.success || n.complete || n.fail) &&
((W[++V] = r()({}, n)),
delete n.success,
delete n.complete,
delete n.fail),
z.AlipayJSBridge.call("postWebViewMessage", {
type: e,
callback: V,
param: n,
});
});
};
}),
o(j).forEach(function (e) {
K[e] = function (t) {
F.then(function () {
var n = j[e] || {};
n instanceof Promise
? n.then(function (n) {
G(t, e, n);
})
: G(t, e, n);
});
};
}),
document.addEventListener("onToWebViewMessage", function (e) {
var t = e.data,
n = t.callback,
a = t.res;
"response" === a.type
? W[n] && (s(W[n], a.res), delete W[n])
: "message" === a.type &&
K.onMessage &&
K.onMessage(JSON.parse(a.data));
}),
(_ = K),
E &&
((D.dd = _),
Object.defineProperties(D.dd, {
enableUrlChangeDetect: {
set: function (e) {
!0 === e &&
(function () {
var e = self;
if (!e._urlChangeDetected) {
var t = e.history || {};
(t.pushState = r(t, "pushState")),
(t.replaceState = r(t, "replaceState")),
n(e, "popstate", function () {
a();
}),
n(e, "hashchange", function () {
a();
}),
(e._urlChangeDetected = !0);
}
function n(e, t, n) {
e.addEventListener(t, n, !1);
}
function a() {
e.AlipayJSBridge &&
e.AlipayJSBridge.call("onWebViewUrlChange");
}
function r(e, t) {
var n = e[t];
return function () {
var e = n.apply(this, arguments);
return a(), e;
};
}
})();
},
},
}));
t.default = K;
},
]).default;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment