@galacean/effects-plugin-alipay-downgrade 2.0.0-alpha.2 → 2.0.0-alpha.20

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.
@@ -1,7 +1,5 @@
1
- import type { Player, SceneLoadOptions, spec } from '@galacean/effects';
1
+ import type { SceneLoadOptions, spec } from '@galacean/effects';
2
2
  import { AbstractPlugin } from '@galacean/effects';
3
3
  export declare class AlipayDowngradePlugin extends AbstractPlugin {
4
- static glLostOccurred: boolean;
5
- static onPlayerCreated(player: Player): Promise<void>;
6
- static processRawJSON(json: spec.JSONScene, options?: SceneLoadOptions): Promise<undefined>;
4
+ static processRawJSON(json: spec.JSONScene, options?: SceneLoadOptions): Promise<void>;
7
5
  }
package/dist/alipay.js ADDED
@@ -0,0 +1,597 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var EFFECTS = require('@galacean/effects/alipay');
6
+ var alipay = require('@galacean/appx-adapter/alipay');
7
+
8
+ function _interopNamespace(e) {
9
+ if (e && e.__esModule) return e;
10
+ var n = Object.create(null);
11
+ if (e) {
12
+ Object.keys(e).forEach(function (k) {
13
+ if (k !== 'default') {
14
+ var d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: function () { return e[k]; }
18
+ });
19
+ }
20
+ });
21
+ }
22
+ n["default"] = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ var EFFECTS__namespace = /*#__PURE__*/_interopNamespace(EFFECTS);
27
+
28
+ function _set_prototype_of(o, p) {
29
+ _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
30
+ o.__proto__ = p;
31
+ return o;
32
+ };
33
+ return _set_prototype_of(o, p);
34
+ }
35
+
36
+ function _inherits(subClass, superClass) {
37
+ if (typeof superClass !== "function" && superClass !== null) {
38
+ throw new TypeError("Super expression must either be null or a function");
39
+ }
40
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
41
+ constructor: {
42
+ value: subClass,
43
+ writable: true,
44
+ configurable: true
45
+ }
46
+ });
47
+ if (superClass) _set_prototype_of(subClass, superClass);
48
+ }
49
+
50
+ // class DowngradeItem {
51
+ // // empty
52
+ // }
53
+ var DowngradeVFXItem = /*#__PURE__*/ function(VFXItem) {
54
+ _inherits(DowngradeVFXItem, VFXItem);
55
+ function DowngradeVFXItem() {
56
+ return VFXItem.apply(this, arguments);
57
+ }
58
+ return DowngradeVFXItem;
59
+ }(EFFECTS.VFXItem);
60
+
61
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
62
+ try {
63
+ var info = gen[key](arg);
64
+ var value = info.value;
65
+ } catch (error) {
66
+ reject(error);
67
+ return;
68
+ }
69
+ if (info.done) resolve(value);
70
+ else Promise.resolve(value).then(_next, _throw);
71
+ }
72
+ function _async_to_generator(fn) {
73
+ return function() {
74
+ var self = this, args = arguments;
75
+ return new Promise(function(resolve, reject) {
76
+ var gen = fn.apply(self, args);
77
+ function _next(value) {
78
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
79
+ }
80
+ function _throw(err) {
81
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
82
+ }
83
+ _next(undefined);
84
+ });
85
+ };
86
+ }
87
+
88
+ function __generator(thisArg, body) {
89
+ var _ = {
90
+ label: 0,
91
+ sent: function sent() {
92
+ if (t[0] & 1) throw t[1];
93
+ return t[1];
94
+ },
95
+ trys: [],
96
+ ops: []
97
+ }, f, y, t, g;
98
+ return g = {
99
+ next: verb(0),
100
+ "throw": verb(1),
101
+ "return": verb(2)
102
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
103
+ return this;
104
+ }), g;
105
+ function verb(n) {
106
+ return function(v) {
107
+ return step([
108
+ n,
109
+ v
110
+ ]);
111
+ };
112
+ }
113
+ function step(op) {
114
+ if (f) throw new TypeError("Generator is already executing.");
115
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
116
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
117
+ if (y = 0, t) op = [
118
+ op[0] & 2,
119
+ t.value
120
+ ];
121
+ switch(op[0]){
122
+ case 0:
123
+ case 1:
124
+ t = op;
125
+ break;
126
+ case 4:
127
+ _.label++;
128
+ return {
129
+ value: op[1],
130
+ done: false
131
+ };
132
+ case 5:
133
+ _.label++;
134
+ y = op[1];
135
+ op = [
136
+ 0
137
+ ];
138
+ continue;
139
+ case 7:
140
+ op = _.ops.pop();
141
+ _.trys.pop();
142
+ continue;
143
+ default:
144
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
145
+ _ = 0;
146
+ continue;
147
+ }
148
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
149
+ _.label = op[1];
150
+ break;
151
+ }
152
+ if (op[0] === 6 && _.label < t[1]) {
153
+ _.label = t[1];
154
+ t = op;
155
+ break;
156
+ }
157
+ if (t && _.label < t[2]) {
158
+ _.label = t[2];
159
+ _.ops.push(op);
160
+ break;
161
+ }
162
+ if (t[2]) _.ops.pop();
163
+ _.trys.pop();
164
+ continue;
165
+ }
166
+ op = body.call(thisArg, _);
167
+ } catch (e) {
168
+ op = [
169
+ 6,
170
+ e
171
+ ];
172
+ y = 0;
173
+ } finally{
174
+ f = t = 0;
175
+ }
176
+ if (op[0] & 5) throw op[1];
177
+ return {
178
+ value: op[0] ? op[1] : void 0,
179
+ done: true
180
+ };
181
+ }
182
+ }
183
+ typeof SuppressedError === "function" ? SuppressedError : function _SuppressedError(error, suppressed, message) {
184
+ var e = new Error(message);
185
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
186
+ };
187
+
188
+ var mockIdPass = "mock-pass";
189
+ var mockIdFail = "mock-fail";
190
+ var DEVICE_LEVEL_HIGH = "high";
191
+ var DEVICE_LEVEL_MEDIUM = "medium";
192
+ var DEVICE_LEVEL_LOW = "low";
193
+ var DEVICE_LEVEL_NONE = "none";
194
+ var hasRegisterEvent = false;
195
+ function getDowngradeResult(bizId) {
196
+ return _getDowngradeResult.apply(this, arguments);
197
+ }
198
+ function _getDowngradeResult() {
199
+ _getDowngradeResult = _async_to_generator(function(bizId, options) {
200
+ var ap, now;
201
+ return __generator(this, function(_state) {
202
+ if (options === void 0) options = {};
203
+ if (!hasRegisterEvent) {
204
+ registerEvent(options);
205
+ hasRegisterEvent = true;
206
+ }
207
+ if (bizId === mockIdFail || bizId === mockIdPass) {
208
+ return [
209
+ 2,
210
+ Promise.resolve({
211
+ mock: {
212
+ downgrade: bizId === mockIdFail
213
+ }
214
+ })
215
+ ];
216
+ }
217
+ ap = EFFECTS.isAlipayMiniApp() ? my : alipay.window.AlipayJSBridge;
218
+ if (ap) {
219
+ now = performance.now();
220
+ return [
221
+ 2,
222
+ getSystemInfo().then(function(systemInfo) {
223
+ return new Promise(function(resolve) {
224
+ var techPoint = [
225
+ "mars"
226
+ ];
227
+ var tc = options.techPoint;
228
+ if (tc) {
229
+ var _techPoint;
230
+ (_techPoint = techPoint).push.apply(_techPoint, [].concat(tc));
231
+ }
232
+ var downgradeOptions = {
233
+ bizId: bizId,
234
+ scene: 0,
235
+ ext: {
236
+ techPoint: techPoint
237
+ }
238
+ };
239
+ var downgradeCallback = function(result) {
240
+ var totalTime = performance.now() - now;
241
+ console.info("Downgrade time: " + totalTime + "ms.");
242
+ resolve({
243
+ bizId: bizId,
244
+ systemInfo: systemInfo,
245
+ downgradeResult: result,
246
+ totalTime: totalTime
247
+ });
248
+ };
249
+ var _options_callBridge;
250
+ var callBridge = (_options_callBridge = options.callBridge) != null ? _options_callBridge : ap.call;
251
+ callBridge("getDowngradeResult", downgradeOptions, downgradeCallback);
252
+ });
253
+ })
254
+ ];
255
+ } else {
256
+ return [
257
+ 2,
258
+ Promise.resolve({
259
+ noAlipayEnv: true
260
+ })
261
+ ];
262
+ }
263
+ });
264
+ });
265
+ return _getDowngradeResult.apply(this, arguments);
266
+ }
267
+ function registerEvent(options) {
268
+ var autoPause = options.autoPause;
269
+ alipay.window.addEventListener("unload", function() {
270
+ EFFECTS.getActivePlayers().forEach(function(player) {
271
+ return player.dispose();
272
+ });
273
+ });
274
+ if (autoPause) {
275
+ document.addEventListener("pause", pauseAllActivePlayers);
276
+ document.addEventListener("resume", resumePausedPlayers);
277
+ }
278
+ }
279
+ function getSystemInfo() {
280
+ return _getSystemInfo.apply(this, arguments);
281
+ }
282
+ function _getSystemInfo() {
283
+ _getSystemInfo = _async_to_generator(function() {
284
+ return __generator(this, function(_state) {
285
+ return [
286
+ 2,
287
+ new Promise(function(resolve, reject) {
288
+ var ap = EFFECTS.isAlipayMiniApp() ? my : alipay.window.AlipayJSBridge;
289
+ if (ap) {
290
+ ap.call("getSystemInfo", function(e) {
291
+ if (e.error) {
292
+ reject(e);
293
+ } else {
294
+ resolve(e);
295
+ }
296
+ });
297
+ } else {
298
+ reject("no ap");
299
+ }
300
+ })
301
+ ];
302
+ });
303
+ });
304
+ return _getSystemInfo.apply(this, arguments);
305
+ }
306
+ var DeviceProxy = /*#__PURE__*/ function() {
307
+ function DeviceProxy() {
308
+ this.isIOS = false;
309
+ this.model = "DESKTOP_DEBUG";
310
+ this.system = "Unknown";
311
+ this.deviceLevel = DEVICE_LEVEL_NONE;
312
+ this.isDowngrade = false;
313
+ }
314
+ var _proto = DeviceProxy.prototype;
315
+ _proto.getRenderLevel = function getRenderLevel() {
316
+ if (this.deviceLevel === DEVICE_LEVEL_HIGH) {
317
+ return EFFECTS.spec.RenderLevel.S;
318
+ } else if (this.deviceLevel === DEVICE_LEVEL_MEDIUM) {
319
+ return EFFECTS.spec.RenderLevel.A;
320
+ } else if (this.deviceLevel === DEVICE_LEVEL_LOW) {
321
+ return EFFECTS.spec.RenderLevel.B;
322
+ } else {
323
+ return this.isIOS ? EFFECTS.spec.RenderLevel.S : EFFECTS.spec.RenderLevel.B;
324
+ }
325
+ };
326
+ _proto.hasDeviceLevel = function hasDeviceLevel() {
327
+ return isDeviceLevel(this.deviceLevel);
328
+ };
329
+ _proto.setBySystemInfo = function setBySystemInfo(systemInfo) {
330
+ var performance1 = systemInfo.performance, platform = systemInfo.platform, _systemInfo_model = systemInfo.model, model = _systemInfo_model === void 0 ? "UNKNOWN_DEVICE" : _systemInfo_model, _systemInfo_system = systemInfo.system, system = _systemInfo_system === void 0 ? "Unknown" : _systemInfo_system;
331
+ this.isIOS = platform === "iOS";
332
+ this.model = model;
333
+ this.system = system;
334
+ if (performance1 && !this.hasDeviceLevel()) {
335
+ this.deviceLevel = performance1;
336
+ }
337
+ };
338
+ _proto.updateDeviceLevel = function updateDeviceLevel() {
339
+ if (this.hasDeviceLevel()) {
340
+ return;
341
+ }
342
+ if (/iPhone(\d+),/.test(this.model)) {
343
+ var gen = +RegExp.$1;
344
+ if (gen <= 9) {
345
+ this.deviceLevel = DEVICE_LEVEL_LOW;
346
+ } else if (gen < 10) {
347
+ this.deviceLevel = DEVICE_LEVEL_MEDIUM;
348
+ } else {
349
+ this.deviceLevel = DEVICE_LEVEL_HIGH;
350
+ }
351
+ }
352
+ };
353
+ _proto.getDeviceInfo = function getDeviceInfo() {
354
+ return {
355
+ isIOS: this.isIOS,
356
+ model: this.model,
357
+ system: this.system,
358
+ deviceLevel: this.deviceLevel
359
+ };
360
+ };
361
+ return DeviceProxy;
362
+ }();
363
+ var device = new DeviceProxy();
364
+ function checkDowngradeResult(result) {
365
+ if (result.mock) {
366
+ var _result_mock = result.mock, downgrade = _result_mock.downgrade, _result_mock_deviceLevel = _result_mock.deviceLevel, deviceLevel = _result_mock_deviceLevel === void 0 ? DEVICE_LEVEL_HIGH : _result_mock_deviceLevel;
367
+ device.deviceLevel = deviceLevel;
368
+ return {
369
+ downgrade: downgrade,
370
+ reason: "mock"
371
+ };
372
+ }
373
+ if (result.noAlipayEnv) {
374
+ return {
375
+ downgrade: false,
376
+ reason: "no AP env"
377
+ };
378
+ }
379
+ if (!result.systemInfo) {
380
+ return {
381
+ downgrade: false,
382
+ reason: "systemInfo is required"
383
+ };
384
+ }
385
+ if (!result.downgradeResult) {
386
+ return {
387
+ downgrade: false,
388
+ reason: "downgradeResult is required"
389
+ };
390
+ }
391
+ device.setBySystemInfo(result.systemInfo);
392
+ return parseDowngradeResult(result.downgradeResult);
393
+ }
394
+ function parseDowngradeResult(result) {
395
+ var resultType = undefined;
396
+ var resultReason = undefined;
397
+ if (!result.error) {
398
+ try {
399
+ var ret = EFFECTS.isString(result) ? JSON.parse(result) : result;
400
+ if ("downgradeResultType" in ret) {
401
+ resultType = ret.downgradeResultType;
402
+ } else if ("resultType" in ret) {
403
+ resultType = ret.resultType;
404
+ resultReason = ret.resultReason;
405
+ }
406
+ if (result.context) {
407
+ var deviceInfo = result.context.deviceInfo;
408
+ if (deviceInfo) {
409
+ var deviceLevel = deviceInfo.deviceLevel;
410
+ if (isDeviceLevel(deviceLevel)) {
411
+ device.deviceLevel = deviceLevel;
412
+ }
413
+ }
414
+ }
415
+ device.updateDeviceLevel();
416
+ } catch (ex) {
417
+ console.error(ex);
418
+ }
419
+ if (resultType === undefined) {
420
+ return {
421
+ downgrade: true,
422
+ reason: "call downgrade fail"
423
+ };
424
+ } else {
425
+ if (resultType === 1) {
426
+ return {
427
+ downgrade: true,
428
+ reason: getDowngradeReason(resultReason)
429
+ };
430
+ } else {
431
+ if (EFFECTS.isAlipayMiniApp() && downgradeForMiniprogram()) {
432
+ return {
433
+ downgrade: true,
434
+ reason: "Force downgrade by downgrade plugin"
435
+ };
436
+ } else {
437
+ return {
438
+ downgrade: false,
439
+ reason: resultType
440
+ };
441
+ }
442
+ }
443
+ }
444
+ } else {
445
+ // 无权调用的情况下不降级
446
+ return {
447
+ downgrade: result.error !== 4,
448
+ reason: "api error: " + result.error
449
+ };
450
+ }
451
+ }
452
+ function getDowngradeReason(reason) {
453
+ if (reason === -1) {
454
+ return "" + reason + "-no config";
455
+ } else if (reason === 0) {
456
+ return "" + reason + "-none";
457
+ } else if (reason === 1) {
458
+ return "" + reason + "-downgrade by memory";
459
+ } else if (reason === 2) {
460
+ return "" + reason + "-downgrade by crash";
461
+ } else if (reason === 3) {
462
+ return "" + reason + "-downgrade by device";
463
+ } else if (reason === 4) {
464
+ return "" + reason + "-downgrade by force";
465
+ } else {
466
+ return "" + reason;
467
+ }
468
+ }
469
+ function getRenderLevelByDevice(renderLevel) {
470
+ if (!renderLevel) {
471
+ return device.getRenderLevel();
472
+ } else {
473
+ return /[ABS]/.test(renderLevel) ? renderLevel : EFFECTS.spec.RenderLevel.S;
474
+ }
475
+ }
476
+ function isDeviceLevel(deviceLevel) {
477
+ return deviceLevel === DEVICE_LEVEL_HIGH || deviceLevel === DEVICE_LEVEL_MEDIUM || deviceLevel === DEVICE_LEVEL_LOW;
478
+ }
479
+ var internalPaused = Symbol("@@_inter_pause");
480
+ function pauseAllActivePlayers(e) {
481
+ if (e.target === document) {
482
+ EFFECTS.logger.info("Auto pause all players with data offloaded.");
483
+ var players = EFFECTS.getActivePlayers();
484
+ players.forEach(function(player) {
485
+ if (!player.paused) {
486
+ player.pause({
487
+ offloadTexture: true
488
+ });
489
+ // @ts-expect-error
490
+ player[internalPaused] = true;
491
+ }
492
+ });
493
+ }
494
+ }
495
+ function resumePausedPlayers(e) {
496
+ if (e.target === document) {
497
+ EFFECTS.logger.info("Auto resume all players.");
498
+ var players = EFFECTS.getActivePlayers();
499
+ players.forEach(function(player) {
500
+ // @ts-expect-error
501
+ if (player[internalPaused]) {
502
+ void player.resume();
503
+ // @ts-expect-error
504
+ player[internalPaused] = false;
505
+ }
506
+ });
507
+ }
508
+ }
509
+ var deviceModelList = [
510
+ "12,8",
511
+ "13,1",
512
+ "13,2",
513
+ "13,3",
514
+ "13,4"
515
+ ];
516
+ /**
517
+ * iPhone SE2 和 12 全系列机型,如果是 iOS16 系统,在小程序中强制降级
518
+ * @returns
519
+ */ function downgradeForMiniprogram() {
520
+ if (device.isIOS) {
521
+ if (deviceModelList.find(function(v) {
522
+ return v === device.model;
523
+ })) {
524
+ var versionList = device.system.split(".");
525
+ if (versionList.length > 0 && versionList[0] === "16") {
526
+ return true;
527
+ }
528
+ }
529
+ }
530
+ return false;
531
+ }
532
+
533
+ var AlipayDowngradePlugin = /*#__PURE__*/ function(AbstractPlugin) {
534
+ _inherits(AlipayDowngradePlugin, AbstractPlugin);
535
+ function AlipayDowngradePlugin() {
536
+ return AbstractPlugin.apply(this, arguments);
537
+ }
538
+ AlipayDowngradePlugin.processRawJSON = function processRawJSON(json, options) {
539
+ if (options === void 0) options = {};
540
+ return _async_to_generator(function() {
541
+ var _options_pluginData, downgradeResult, downgradeDecision;
542
+ return __generator(this, function(_state) {
543
+ downgradeResult = (_options_pluginData = options.pluginData) == null ? void 0 : _options_pluginData["downgrade"];
544
+ if (downgradeResult) {
545
+ downgradeDecision = checkDowngradeResult(downgradeResult);
546
+ if (downgradeDecision.downgrade) {
547
+ throw new Error("Downgraded, reason: " + downgradeDecision.reason + ".");
548
+ }
549
+ } else {
550
+ console.warn("No downgrade result in pluginData of SceneLoadOptions.");
551
+ }
552
+ if (!options.renderLevel) {
553
+ options.renderLevel = getRenderLevelByDevice(options.renderLevel);
554
+ }
555
+ return [
556
+ 2
557
+ ];
558
+ });
559
+ })();
560
+ };
561
+ return AlipayDowngradePlugin;
562
+ }(EFFECTS.AbstractPlugin);
563
+
564
+ var prefix = "[Galacean Effects]";
565
+ var ap = EFFECTS.isAlipayMiniApp() ? my : alipay.window.AlipayJSBridge;
566
+ EFFECTS.logger.register(nativeLogger);
567
+ function nativeLogger(type, msg) {
568
+ for(var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++){
569
+ args[_key - 2] = arguments[_key];
570
+ }
571
+ var content = {
572
+ "message": prefix + " " + msg + " " + args.join(""),
573
+ "level": type
574
+ };
575
+ if (EFFECTS.isAndroid()) {
576
+ content["anr_info"] = "mars";
577
+ }
578
+ try {
579
+ ap == null ? void 0 : ap.call("localLog", content);
580
+ } catch (e) {
581
+ console.error(e);
582
+ }
583
+ }
584
+
585
+ var version = "2.0.0-alpha.20";
586
+ EFFECTS.registerPlugin("alipay-downgrade", AlipayDowngradePlugin, DowngradeVFXItem, true);
587
+ EFFECTS.logger.info("Plugin downgrade version: " + version + ".");
588
+ if (version !== EFFECTS__namespace.version) {
589
+ console.error("注意:请统一 Downgrade 插件与 Player 版本,不统一的版本混用会有不可预知的后果!", "\nAttention: Please ensure the Downgrade plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!");
590
+ }
591
+
592
+ exports.checkDowngradeResult = checkDowngradeResult;
593
+ exports.downgradeForMiniprogram = downgradeForMiniprogram;
594
+ exports.getDowngradeResult = getDowngradeResult;
595
+ exports.getRenderLevelByDevice = getRenderLevelByDevice;
596
+ exports.version = version;
597
+ //# sourceMappingURL=alipay.js.map