@alipay/ams-checkout 0.0.1783663570-dev.5 → 0.0.1784095668-dev.0
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/ams-checkout.js +3 -3
- package/dist/ams-checkout.min.js +1 -1
- package/esm/core/component/element/elementController/index.js +42 -66
- package/esm/core/component/element/elementProcessor/paymentProcessor.js +10 -13
- package/esm/core/component/element/type.d.ts +1 -2
- package/esm/core/instance/index.d.ts +4 -12
- package/esm/core/instance/index.js +26 -152
- package/esm/foundation/service/security/index.d.ts +4 -9
- package/esm/foundation/service/security/index.js +35 -158
- package/esm/foundation/service/security/security.d.ts +1 -22
- package/esm/foundation/service/security/security.js +37 -150
- package/esm/foundation/utils/preload_helper.d.ts +3 -6
- package/esm/foundation/utils/preload_helper.js +32 -122
- package/esm/main.js +4 -4
- package/esm/modern/index.js +1 -1
- package/esm/plugin/component/channel.d.ts +2 -2
- package/esm/plugin/component/channel.js +18 -18
- package/esm/plugin/component/index.js +29 -36
- package/esm/util/beforeConfirm.d.ts +2 -4
- package/esm/util/beforeConfirm.js +14 -15
- package/esm/util/security.d.ts +1 -22
- package/esm/util/security.js +39 -150
- package/package.json +1 -1
- package/esm/util/jshield-apdid/apdid-loader.js +0 -340
- package/esm/util/jshield-apdid/index.js +0 -21
- package/esm/util/security-registry.d.ts +0 -72
- package/esm/util/security-registry.js +0 -175
package/esm/util/security.js
CHANGED
|
@@ -9,7 +9,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
9
9
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
10
10
|
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); }
|
|
11
11
|
import { ProductSceneEnum } from "../types";
|
|
12
|
-
import
|
|
12
|
+
import APDID from "./jshield-apdid/apdid-core.umd.min";
|
|
13
13
|
export var getSecurityConfigStorageKey = function getSecurityConfigStorageKey(scene) {
|
|
14
14
|
return "AMSSDK_SECURITY_CONFIG_".concat(scene);
|
|
15
15
|
};
|
|
@@ -29,110 +29,21 @@ export var getSecurityHost = function getSecurityHost(region) {
|
|
|
29
29
|
return securityHost[region] || securityHost[SecurityRegionEnum.SG];
|
|
30
30
|
};
|
|
31
31
|
export var getSecurityScene = function getSecurityScene(product) {
|
|
32
|
+
console.log('getSecurityScene', product);
|
|
32
33
|
return sceneMap[product] || '';
|
|
33
34
|
};
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Map SDK environment string to ApdidEnvironment for CDN URL selection.
|
|
37
|
-
*/
|
|
38
|
-
export var mapEnvironment = function mapEnvironment(env) {
|
|
39
|
-
if (!env) return 'production';
|
|
40
|
-
var lower = env.toLowerCase();
|
|
41
|
-
if (lower === 'pre' || lower === 'light_sandbox') return 'pre';
|
|
42
|
-
if (lower === 'dev' || lower === 'test' || lower === 'local') return 'dev';
|
|
43
|
-
return 'production';
|
|
44
|
-
};
|
|
45
35
|
export var Security = /*#__PURE__*/function () {
|
|
46
36
|
function Security(options) {
|
|
47
37
|
_classCallCheck(this, Security);
|
|
48
38
|
_defineProperty(this, "scene", void 0);
|
|
49
39
|
_defineProperty(this, "h5gateway", void 0);
|
|
50
|
-
_defineProperty(this, "environment", void 0);
|
|
51
|
-
_defineProperty(this, "apdidLoaded", false);
|
|
52
|
-
_defineProperty(this, "apdidLoadFailed", false);
|
|
53
40
|
this.scene = options.scene;
|
|
54
41
|
this.h5gateway = options.h5gateway || securityHost[SecurityRegionEnum.SG];
|
|
55
|
-
this.environment = options.environment;
|
|
56
42
|
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Ensure the apdid-core script is loaded async.
|
|
60
|
-
* Returns true if loaded successfully, false otherwise.
|
|
61
|
-
* On failure, sets apdidLoadFailed flag for graceful degradation.
|
|
62
|
-
*/
|
|
63
43
|
_createClass(Security, [{
|
|
64
|
-
key: "ensureApdidLoaded",
|
|
65
|
-
value: (function () {
|
|
66
|
-
var _ensureApdidLoaded = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
67
|
-
var loader, apdidEnv;
|
|
68
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
69
|
-
while (1) switch (_context.prev = _context.next) {
|
|
70
|
-
case 0:
|
|
71
|
-
if (!this.apdidLoaded) {
|
|
72
|
-
_context.next = 2;
|
|
73
|
-
break;
|
|
74
|
-
}
|
|
75
|
-
return _context.abrupt("return", true);
|
|
76
|
-
case 2:
|
|
77
|
-
if (!this.apdidLoadFailed) {
|
|
78
|
-
_context.next = 4;
|
|
79
|
-
break;
|
|
80
|
-
}
|
|
81
|
-
return _context.abrupt("return", false);
|
|
82
|
-
case 4:
|
|
83
|
-
loader = ApdidLoader.getInstance();
|
|
84
|
-
apdidEnv = mapEnvironment(this.environment);
|
|
85
|
-
_context.prev = 6;
|
|
86
|
-
_context.next = 9;
|
|
87
|
-
return loader.load({
|
|
88
|
-
environment: apdidEnv,
|
|
89
|
-
callbacks: {
|
|
90
|
-
onLoad: function onLoad(duration) {
|
|
91
|
-
console.log("[Security] apdid-core script loaded in ".concat(duration, "ms"));
|
|
92
|
-
},
|
|
93
|
-
onLoadFailed: function onLoadFailed(error) {
|
|
94
|
-
console.error('[Security] apdid-core script load failed:', error.message);
|
|
95
|
-
},
|
|
96
|
-
onLoadTimeout: function onLoadTimeout() {
|
|
97
|
-
console.error('[Security] apdid-core script load timeout');
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
case 9:
|
|
102
|
-
this.apdidLoaded = true;
|
|
103
|
-
return _context.abrupt("return", true);
|
|
104
|
-
case 13:
|
|
105
|
-
_context.prev = 13;
|
|
106
|
-
_context.t0 = _context["catch"](6);
|
|
107
|
-
console.error('[Security] apdid-core load error, degrading:', _context.t0);
|
|
108
|
-
this.apdidLoadFailed = true;
|
|
109
|
-
return _context.abrupt("return", false);
|
|
110
|
-
case 18:
|
|
111
|
-
case "end":
|
|
112
|
-
return _context.stop();
|
|
113
|
-
}
|
|
114
|
-
}, _callee, this, [[6, 13]]);
|
|
115
|
-
}));
|
|
116
|
-
function ensureApdidLoaded() {
|
|
117
|
-
return _ensureApdidLoaded.apply(this, arguments);
|
|
118
|
-
}
|
|
119
|
-
return ensureApdidLoaded;
|
|
120
|
-
}()
|
|
121
|
-
/**
|
|
122
|
-
* Get the APDID module from the loader.
|
|
123
|
-
* Returns undefined if not loaded.
|
|
124
|
-
*/
|
|
125
|
-
)
|
|
126
|
-
}, {
|
|
127
|
-
key: "getAPDIDModule",
|
|
128
|
-
value: function getAPDIDModule() {
|
|
129
|
-
var loader = ApdidLoader.getInstance();
|
|
130
|
-
return loader.getApdidModule();
|
|
131
|
-
}
|
|
132
|
-
}, {
|
|
133
44
|
key: "initSecurity",
|
|
134
45
|
value: function initSecurity(successCallback, failCallback) {
|
|
135
|
-
|
|
46
|
+
console.log(this.scene, 'preloadSecuritySDK');
|
|
136
47
|
if (!this.scene) {
|
|
137
48
|
throw new Error('securityConfig parameter error');
|
|
138
49
|
}
|
|
@@ -141,23 +52,12 @@ export var Security = /*#__PURE__*/function () {
|
|
|
141
52
|
console.error(errorMsg);
|
|
142
53
|
throw new Error(errorMsg);
|
|
143
54
|
}
|
|
144
|
-
|
|
145
|
-
// Async: ensure script is loaded before calling initToken
|
|
146
|
-
this.ensureApdidLoaded().then(function (loaded) {
|
|
147
|
-
if (!loaded) {
|
|
148
|
-
failCallback && failCallback('apdid-core script load failed');
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
_this.initToken(successCallback, failCallback);
|
|
152
|
-
}).catch(function () {
|
|
153
|
-
failCallback && failCallback('apdid-core script load failed');
|
|
154
|
-
});
|
|
55
|
+
this.initToken(successCallback, failCallback);
|
|
155
56
|
}
|
|
156
57
|
}, {
|
|
157
58
|
key: "initToken",
|
|
158
59
|
value: function initToken(successCallback, failCallback) {
|
|
159
60
|
try {
|
|
160
|
-
var APDID = this.getAPDIDModule();
|
|
161
61
|
APDID === null || APDID === void 0 || APDID.initToken(this.scene, {
|
|
162
62
|
host: this.h5gateway
|
|
163
63
|
}, function (success, tokenResult, msg) {
|
|
@@ -166,6 +66,7 @@ export var Security = /*#__PURE__*/function () {
|
|
|
166
66
|
} else {
|
|
167
67
|
failCallback && failCallback(msg);
|
|
168
68
|
}
|
|
69
|
+
console.log('initToken result tokenResult', JSON.stringify(tokenResult), msg);
|
|
169
70
|
});
|
|
170
71
|
} catch (error) {
|
|
171
72
|
failCallback && failCallback(error === null || error === void 0 ? void 0 : error.toString());
|
|
@@ -174,48 +75,48 @@ export var Security = /*#__PURE__*/function () {
|
|
|
174
75
|
}, {
|
|
175
76
|
key: "pollingGetApdidToken",
|
|
176
77
|
value: function () {
|
|
177
|
-
var _pollingGetApdidToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
178
|
-
var
|
|
78
|
+
var _pollingGetApdidToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(config) {
|
|
79
|
+
var _this = this;
|
|
179
80
|
var tokenCollectTime, dataPollingInterval, asyncFunc;
|
|
180
|
-
return _regeneratorRuntime().wrap(function
|
|
181
|
-
while (1) switch (
|
|
81
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
82
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
182
83
|
case 0:
|
|
183
84
|
tokenCollectTime = parseInt((config === null || config === void 0 ? void 0 : config.tokenCollectTime) || '0', 10);
|
|
184
85
|
dataPollingInterval = parseInt((config === null || config === void 0 ? void 0 : config.dataPollingInterval) || '500', 10);
|
|
185
86
|
asyncFunc = /*#__PURE__*/function () {
|
|
186
|
-
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
87
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(resolve) {
|
|
187
88
|
var deviceId, interval, polling;
|
|
188
|
-
return _regeneratorRuntime().wrap(function
|
|
189
|
-
while (1) switch (
|
|
89
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
90
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
190
91
|
case 0:
|
|
191
|
-
|
|
192
|
-
return
|
|
92
|
+
_context2.next = 2;
|
|
93
|
+
return _this.getApdidToken();
|
|
193
94
|
case 2:
|
|
194
|
-
deviceId =
|
|
95
|
+
deviceId = _context2.sent;
|
|
195
96
|
if (!deviceId) {
|
|
196
|
-
|
|
97
|
+
_context2.next = 5;
|
|
197
98
|
break;
|
|
198
99
|
}
|
|
199
|
-
return
|
|
100
|
+
return _context2.abrupt("return", resolve(deviceId));
|
|
200
101
|
case 5:
|
|
201
102
|
polling = /*#__PURE__*/function () {
|
|
202
|
-
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
203
|
-
return _regeneratorRuntime().wrap(function
|
|
204
|
-
while (1) switch (
|
|
103
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
104
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
105
|
+
while (1) switch (_context.prev = _context.next) {
|
|
205
106
|
case 0:
|
|
206
|
-
|
|
207
|
-
return
|
|
107
|
+
_context.next = 2;
|
|
108
|
+
return _this.getApdidToken();
|
|
208
109
|
case 2:
|
|
209
|
-
deviceId =
|
|
110
|
+
deviceId = _context.sent;
|
|
210
111
|
if (deviceId) {
|
|
211
112
|
clearInterval(interval);
|
|
212
113
|
resolve(deviceId);
|
|
213
114
|
}
|
|
214
115
|
case 4:
|
|
215
116
|
case "end":
|
|
216
|
-
return
|
|
117
|
+
return _context.stop();
|
|
217
118
|
}
|
|
218
|
-
},
|
|
119
|
+
}, _callee);
|
|
219
120
|
}));
|
|
220
121
|
return function polling() {
|
|
221
122
|
return _ref2.apply(this, arguments);
|
|
@@ -228,22 +129,22 @@ export var Security = /*#__PURE__*/function () {
|
|
|
228
129
|
}, tokenCollectTime);
|
|
229
130
|
case 8:
|
|
230
131
|
case "end":
|
|
231
|
-
return
|
|
132
|
+
return _context2.stop();
|
|
232
133
|
}
|
|
233
|
-
},
|
|
134
|
+
}, _callee2);
|
|
234
135
|
}));
|
|
235
136
|
return function asyncFunc(_x2) {
|
|
236
137
|
return _ref.apply(this, arguments);
|
|
237
138
|
};
|
|
238
139
|
}();
|
|
239
|
-
return
|
|
140
|
+
return _context3.abrupt("return", new Promise(function (resolve) {
|
|
240
141
|
asyncFunc(resolve);
|
|
241
142
|
}));
|
|
242
143
|
case 4:
|
|
243
144
|
case "end":
|
|
244
|
-
return
|
|
145
|
+
return _context3.stop();
|
|
245
146
|
}
|
|
246
|
-
},
|
|
147
|
+
}, _callee3);
|
|
247
148
|
}));
|
|
248
149
|
function pollingGetApdidToken(_x) {
|
|
249
150
|
return _pollingGetApdidToken.apply(this, arguments);
|
|
@@ -253,37 +154,25 @@ export var Security = /*#__PURE__*/function () {
|
|
|
253
154
|
}, {
|
|
254
155
|
key: "getApdidToken",
|
|
255
156
|
value: function () {
|
|
256
|
-
var _getApdidToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
257
|
-
var
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
while (1) switch (_context5.prev = _context5.next) {
|
|
157
|
+
var _getApdidToken = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
158
|
+
var _this2 = this;
|
|
159
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
160
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
261
161
|
case 0:
|
|
262
|
-
|
|
263
|
-
return this.ensureApdidLoaded();
|
|
264
|
-
case 2:
|
|
265
|
-
loaded = _context5.sent;
|
|
266
|
-
if (loaded) {
|
|
267
|
-
_context5.next = 5;
|
|
268
|
-
break;
|
|
269
|
-
}
|
|
270
|
-
return _context5.abrupt("return", '');
|
|
271
|
-
case 5:
|
|
272
|
-
return _context5.abrupt("return", new Promise(function (resolve) {
|
|
162
|
+
return _context4.abrupt("return", new Promise(function (resolve) {
|
|
273
163
|
try {
|
|
274
|
-
|
|
275
|
-
APDID === null || APDID === void 0 || APDID.getApdidToken(_this3.scene, function (tokenResult) {
|
|
164
|
+
APDID === null || APDID === void 0 || APDID.getApdidToken(_this2.scene, function (tokenResult) {
|
|
276
165
|
resolve(tokenResult === null || tokenResult === void 0 ? void 0 : tokenResult.token);
|
|
277
166
|
});
|
|
278
167
|
} catch (error) {
|
|
279
168
|
resolve('');
|
|
280
169
|
}
|
|
281
170
|
}));
|
|
282
|
-
case
|
|
171
|
+
case 1:
|
|
283
172
|
case "end":
|
|
284
|
-
return
|
|
173
|
+
return _context4.stop();
|
|
285
174
|
}
|
|
286
|
-
},
|
|
175
|
+
}, _callee4);
|
|
287
176
|
}));
|
|
288
177
|
function getApdidToken() {
|
|
289
178
|
return _getApdidToken.apply(this, arguments);
|
package/package.json
CHANGED
|
@@ -1,340 +0,0 @@
|
|
|
1
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
-
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
3
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
4
|
-
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
5
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
6
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
7
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
8
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
9
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
10
|
-
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); }
|
|
11
|
-
/**
|
|
12
|
-
* ApdidLoader - Async loader for apdid-core security SDK (ESM)
|
|
13
|
-
*
|
|
14
|
-
* Features:
|
|
15
|
-
* - Singleton pattern (ApdidLoader.getInstance())
|
|
16
|
-
* - URL whitelist validation (production/pre/dev)
|
|
17
|
-
* - Timeout control (10s)
|
|
18
|
-
* - Retry mechanism (max 1 retry, transparent to caller)
|
|
19
|
-
* - Concurrent call dedup (shared loadingPromise)
|
|
20
|
-
* - State management: idle -> loading -> ready/failed
|
|
21
|
-
* - Monitoring event hooks (onLoad callback)
|
|
22
|
-
* - Uses dynamic import() for ESM modules
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
/** Environment type for CDN URL selection */
|
|
26
|
-
|
|
27
|
-
/** State of the ApdidLoader */
|
|
28
|
-
|
|
29
|
-
/** Callback for monitoring events */
|
|
30
|
-
|
|
31
|
-
/** Configuration for ApdidLoader */
|
|
32
|
-
|
|
33
|
-
/** CDN config for different environments */
|
|
34
|
-
var APDID_CONFIG = {
|
|
35
|
-
production: {
|
|
36
|
-
url: 'https://cdn.marmot-cloud.com/page/antom-js/apdid-core.umd.min.js'
|
|
37
|
-
},
|
|
38
|
-
pre: {
|
|
39
|
-
url: 'https://antom-js-pre-unio.page.alipay.net/apdid-core.umd.min.js'
|
|
40
|
-
},
|
|
41
|
-
dev: {
|
|
42
|
-
url: 'https://antom-js-dev-unio.page.alipay.net/apdid-core.umd.min.js'
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
/** All allowed URLs (whitelist) */
|
|
47
|
-
var ALLOWED_URLS = new Set(Object.values(APDID_CONFIG).map(function (c) {
|
|
48
|
-
return c.url;
|
|
49
|
-
}));
|
|
50
|
-
|
|
51
|
-
/** Timeout for script loading in milliseconds */
|
|
52
|
-
var LOAD_TIMEOUT_MS = 10000;
|
|
53
|
-
|
|
54
|
-
/** Maximum number of retries */
|
|
55
|
-
var MAX_RETRIES = 1;
|
|
56
|
-
|
|
57
|
-
/** Global variable name (fallback for UMD bundles) */
|
|
58
|
-
var APDID_GLOBAL_NAME = 'APDID';
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* ApdidLoader - Singleton class responsible for async loading the apdid-core ESM module.
|
|
62
|
-
*
|
|
63
|
-
* Key behaviors:
|
|
64
|
-
* - Uses dynamic import() to load ESM modules
|
|
65
|
-
* - Concurrent calls share the same loading promise
|
|
66
|
-
* - On success, the module export is stored internally
|
|
67
|
-
* - On failure/timeout, the loader degrades gracefully and getApdidModule() returns undefined
|
|
68
|
-
*/
|
|
69
|
-
export var ApdidLoader = /*#__PURE__*/function () {
|
|
70
|
-
function ApdidLoader() {
|
|
71
|
-
_classCallCheck(this, ApdidLoader);
|
|
72
|
-
_defineProperty(this, "state", 'idle');
|
|
73
|
-
_defineProperty(this, "loadingPromise", null);
|
|
74
|
-
_defineProperty(this, "apdidModule", null);
|
|
75
|
-
_defineProperty(this, "retryCount", 0);
|
|
76
|
-
_defineProperty(this, "config", null);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/** Get the singleton instance */
|
|
80
|
-
_createClass(ApdidLoader, [{
|
|
81
|
-
key: "getState",
|
|
82
|
-
value: /** Get current state */
|
|
83
|
-
function getState() {
|
|
84
|
-
return this.state;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/** Get the loaded APDID module (undefined if not loaded or failed) */
|
|
88
|
-
}, {
|
|
89
|
-
key: "getApdidModule",
|
|
90
|
-
value: function getApdidModule() {
|
|
91
|
-
return this.apdidModule;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* 非阻塞调度 apdid 加载
|
|
96
|
-
* 利用 requestIdleCallback 在浏览器空闲时发起加载,2s 超时兜底
|
|
97
|
-
* 调用方无需 await,不阻塞主流程
|
|
98
|
-
*/
|
|
99
|
-
}, {
|
|
100
|
-
key: "scheduleLoad",
|
|
101
|
-
value: function scheduleLoad(config) {
|
|
102
|
-
var _this = this;
|
|
103
|
-
if (this.state !== 'idle') return;
|
|
104
|
-
var trigger = function trigger() {
|
|
105
|
-
_this.load(config).catch(function () {
|
|
106
|
-
// 加载失败由 ApdidLoader 内部处理重试和状态更新
|
|
107
|
-
});
|
|
108
|
-
};
|
|
109
|
-
if (typeof requestIdleCallback !== 'undefined') {
|
|
110
|
-
var idleId = requestIdleCallback(trigger, {
|
|
111
|
-
timeout: 2000
|
|
112
|
-
});
|
|
113
|
-
// 兜底:2s 后若仍未触发,强制发起
|
|
114
|
-
setTimeout(function () {
|
|
115
|
-
cancelIdleCallback(idleId);
|
|
116
|
-
if (_this.state === 'idle') {
|
|
117
|
-
trigger();
|
|
118
|
-
}
|
|
119
|
-
}, 2000);
|
|
120
|
-
} else {
|
|
121
|
-
// 不支持 requestIdleCallback 的浏览器降级为 setTimeout(0)
|
|
122
|
-
setTimeout(trigger, 0);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Load the apdid-core script asynchronously.
|
|
128
|
-
* If already loaded or currently loading, returns the existing promise.
|
|
129
|
-
* Retries are transparent: the returned promise resolves only after the final
|
|
130
|
-
* attempt succeeds, or rejects after all retries are exhausted.
|
|
131
|
-
*/
|
|
132
|
-
}, {
|
|
133
|
-
key: "load",
|
|
134
|
-
value: (function () {
|
|
135
|
-
var _load = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(config) {
|
|
136
|
-
var envConfig, _config$callbacks, _config$callbacks$onL, _error, url, _config$callbacks2, _config$callbacks2$on, _error2;
|
|
137
|
-
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
138
|
-
while (1) switch (_context.prev = _context.next) {
|
|
139
|
-
case 0:
|
|
140
|
-
if (!(this.state === 'ready')) {
|
|
141
|
-
_context.next = 2;
|
|
142
|
-
break;
|
|
143
|
-
}
|
|
144
|
-
return _context.abrupt("return", Promise.resolve());
|
|
145
|
-
case 2:
|
|
146
|
-
if (!(this.state === 'loading' && this.loadingPromise)) {
|
|
147
|
-
_context.next = 4;
|
|
148
|
-
break;
|
|
149
|
-
}
|
|
150
|
-
return _context.abrupt("return", this.loadingPromise);
|
|
151
|
-
case 4:
|
|
152
|
-
// Store config for potential retry
|
|
153
|
-
this.config = config;
|
|
154
|
-
|
|
155
|
-
// Validate environment and get config
|
|
156
|
-
envConfig = APDID_CONFIG[config.environment];
|
|
157
|
-
if (envConfig) {
|
|
158
|
-
_context.next = 11;
|
|
159
|
-
break;
|
|
160
|
-
}
|
|
161
|
-
_error = new Error("[ApdidLoader] Invalid environment: ".concat(config.environment, ". Must be one of: production, pre, dev"));
|
|
162
|
-
this.state = 'failed';
|
|
163
|
-
(_config$callbacks = config.callbacks) === null || _config$callbacks === void 0 || (_config$callbacks$onL = _config$callbacks.onLoadFailed) === null || _config$callbacks$onL === void 0 || _config$callbacks$onL.call(_config$callbacks, _error);
|
|
164
|
-
return _context.abrupt("return", Promise.reject(_error));
|
|
165
|
-
case 11:
|
|
166
|
-
url = envConfig.url; // Validate URL against whitelist
|
|
167
|
-
if (ALLOWED_URLS.has(url)) {
|
|
168
|
-
_context.next = 17;
|
|
169
|
-
break;
|
|
170
|
-
}
|
|
171
|
-
_error2 = new Error("[ApdidLoader] URL not in whitelist: ".concat(url));
|
|
172
|
-
this.state = 'failed';
|
|
173
|
-
(_config$callbacks2 = config.callbacks) === null || _config$callbacks2 === void 0 || (_config$callbacks2$on = _config$callbacks2.onLoadFailed) === null || _config$callbacks2$on === void 0 || _config$callbacks2$on.call(_config$callbacks2, _error2);
|
|
174
|
-
return _context.abrupt("return", Promise.reject(_error2));
|
|
175
|
-
case 17:
|
|
176
|
-
if (!(this.state === 'failed' && this.retryCount > MAX_RETRIES)) {
|
|
177
|
-
_context.next = 19;
|
|
178
|
-
break;
|
|
179
|
-
}
|
|
180
|
-
return _context.abrupt("return", Promise.reject(new Error('[ApdidLoader] Max retries exceeded')));
|
|
181
|
-
case 19:
|
|
182
|
-
// Start loading - use _loadWithRetry which handles retries transparently
|
|
183
|
-
this.state = 'loading';
|
|
184
|
-
this.loadingPromise = this._loadWithRetry(url, config);
|
|
185
|
-
return _context.abrupt("return", this.loadingPromise);
|
|
186
|
-
case 22:
|
|
187
|
-
case "end":
|
|
188
|
-
return _context.stop();
|
|
189
|
-
}
|
|
190
|
-
}, _callee, this);
|
|
191
|
-
}));
|
|
192
|
-
function load(_x) {
|
|
193
|
-
return _load.apply(this, arguments);
|
|
194
|
-
}
|
|
195
|
-
return load;
|
|
196
|
-
}()
|
|
197
|
-
/**
|
|
198
|
-
* Load module with transparent retry logic.
|
|
199
|
-
* The returned promise resolves/rejects based on the final retry outcome.
|
|
200
|
-
*/
|
|
201
|
-
)
|
|
202
|
-
}, {
|
|
203
|
-
key: "_loadWithRetry",
|
|
204
|
-
value: (function () {
|
|
205
|
-
var _loadWithRetry2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(url, config) {
|
|
206
|
-
var _config$callbacks3, _config$callbacks3$on;
|
|
207
|
-
var lastError, attempt;
|
|
208
|
-
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
209
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
210
|
-
case 0:
|
|
211
|
-
attempt = 0;
|
|
212
|
-
case 1:
|
|
213
|
-
if (!(attempt <= MAX_RETRIES)) {
|
|
214
|
-
_context2.next = 16;
|
|
215
|
-
break;
|
|
216
|
-
}
|
|
217
|
-
_context2.prev = 2;
|
|
218
|
-
_context2.next = 5;
|
|
219
|
-
return this._loadModuleOnce(url, config);
|
|
220
|
-
case 5:
|
|
221
|
-
// Success - reset retry count
|
|
222
|
-
this.retryCount = 0;
|
|
223
|
-
return _context2.abrupt("return");
|
|
224
|
-
case 9:
|
|
225
|
-
_context2.prev = 9;
|
|
226
|
-
_context2.t0 = _context2["catch"](2);
|
|
227
|
-
lastError = _context2.t0;
|
|
228
|
-
if (attempt < MAX_RETRIES) {
|
|
229
|
-
this.retryCount++;
|
|
230
|
-
// Reset state for retry
|
|
231
|
-
this.state = 'idle';
|
|
232
|
-
}
|
|
233
|
-
case 13:
|
|
234
|
-
attempt++;
|
|
235
|
-
_context2.next = 1;
|
|
236
|
-
break;
|
|
237
|
-
case 16:
|
|
238
|
-
// All attempts failed
|
|
239
|
-
this.state = 'failed';
|
|
240
|
-
this.loadingPromise = null;
|
|
241
|
-
(_config$callbacks3 = config.callbacks) === null || _config$callbacks3 === void 0 || (_config$callbacks3$on = _config$callbacks3.onLoadFailed) === null || _config$callbacks3$on === void 0 || _config$callbacks3$on.call(_config$callbacks3, lastError);
|
|
242
|
-
throw lastError;
|
|
243
|
-
case 20:
|
|
244
|
-
case "end":
|
|
245
|
-
return _context2.stop();
|
|
246
|
-
}
|
|
247
|
-
}, _callee2, this, [[2, 9]]);
|
|
248
|
-
}));
|
|
249
|
-
function _loadWithRetry(_x2, _x3) {
|
|
250
|
-
return _loadWithRetry2.apply(this, arguments);
|
|
251
|
-
}
|
|
252
|
-
return _loadWithRetry;
|
|
253
|
-
}()
|
|
254
|
-
/**
|
|
255
|
-
* Internal method: attempt to load the ESM module once via dynamic import() (no retry)
|
|
256
|
-
*/
|
|
257
|
-
)
|
|
258
|
-
}, {
|
|
259
|
-
key: "_loadModuleOnce",
|
|
260
|
-
value: function _loadModuleOnce(url, config) {
|
|
261
|
-
var _this2 = this;
|
|
262
|
-
var startTime = Date.now();
|
|
263
|
-
var timeoutId;
|
|
264
|
-
|
|
265
|
-
// Race dynamic import() against timeout
|
|
266
|
-
var importPromise = import( /* webpackIgnore: true */url).then(function (module) {
|
|
267
|
-
clearTimeout(timeoutId);
|
|
268
|
-
// ESM default export or namespace
|
|
269
|
-
var apdidCore = module.default || module;
|
|
270
|
-
if (apdidCore) {
|
|
271
|
-
_this2._onLoadSuccess(apdidCore, startTime, config);
|
|
272
|
-
} else {
|
|
273
|
-
// Fallback: check window.APDID (UMD bundle loaded separately)
|
|
274
|
-
var globalApdid = window[APDID_GLOBAL_NAME];
|
|
275
|
-
if (globalApdid) {
|
|
276
|
-
_this2._onLoadSuccess(globalApdid, startTime, config);
|
|
277
|
-
} else {
|
|
278
|
-
throw new Error("[ApdidLoader] Module loaded but no export and window.".concat(APDID_GLOBAL_NAME, " not found"));
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
});
|
|
282
|
-
var timeoutPromise = new Promise(function (_resolve, reject) {
|
|
283
|
-
timeoutId = setTimeout(function () {
|
|
284
|
-
if (_this2.state === 'loading') {
|
|
285
|
-
var _config$callbacks4, _config$callbacks4$on;
|
|
286
|
-
(_config$callbacks4 = config.callbacks) === null || _config$callbacks4 === void 0 || (_config$callbacks4$on = _config$callbacks4.onLoadTimeout) === null || _config$callbacks4$on === void 0 || _config$callbacks4$on.call(_config$callbacks4);
|
|
287
|
-
reject(new Error("[ApdidLoader] Module load timeout after ".concat(LOAD_TIMEOUT_MS, "ms: ").concat(url)));
|
|
288
|
-
}
|
|
289
|
-
}, LOAD_TIMEOUT_MS);
|
|
290
|
-
});
|
|
291
|
-
return Promise.race([importPromise, timeoutPromise]);
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
* Handle successful module load
|
|
296
|
-
*/
|
|
297
|
-
}, {
|
|
298
|
-
key: "_onLoadSuccess",
|
|
299
|
-
value: function _onLoadSuccess(apdidCore, startTime, config) {
|
|
300
|
-
var _config$callbacks5, _config$callbacks5$on;
|
|
301
|
-
this.state = 'ready';
|
|
302
|
-
this.apdidModule = apdidCore;
|
|
303
|
-
var duration = Date.now() - startTime;
|
|
304
|
-
(_config$callbacks5 = config.callbacks) === null || _config$callbacks5 === void 0 || (_config$callbacks5$on = _config$callbacks5.onLoad) === null || _config$callbacks5$on === void 0 || _config$callbacks5$on.call(_config$callbacks5, duration);
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
/**
|
|
308
|
-
* Destroy the loader state and clean up
|
|
309
|
-
*/
|
|
310
|
-
}, {
|
|
311
|
-
key: "destroy",
|
|
312
|
-
value: function destroy() {
|
|
313
|
-
this.state = 'idle';
|
|
314
|
-
this.apdidModule = null;
|
|
315
|
-
this.loadingPromise = null;
|
|
316
|
-
this.retryCount = 0;
|
|
317
|
-
this.config = null;
|
|
318
|
-
}
|
|
319
|
-
}], [{
|
|
320
|
-
key: "getInstance",
|
|
321
|
-
value: function getInstance() {
|
|
322
|
-
if (!ApdidLoader.instance) {
|
|
323
|
-
ApdidLoader.instance = new ApdidLoader();
|
|
324
|
-
}
|
|
325
|
-
return ApdidLoader.instance;
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
/** Reset the singleton (for testing purposes only) */
|
|
329
|
-
}, {
|
|
330
|
-
key: "resetInstance",
|
|
331
|
-
value: function resetInstance() {
|
|
332
|
-
if (ApdidLoader.instance) {
|
|
333
|
-
ApdidLoader.instance.destroy();
|
|
334
|
-
}
|
|
335
|
-
ApdidLoader.instance = null;
|
|
336
|
-
}
|
|
337
|
-
}]);
|
|
338
|
-
return ApdidLoader;
|
|
339
|
-
}();
|
|
340
|
-
_defineProperty(ApdidLoader, "instance", null);
|