@cloudbase/utilities 2.5.7-beta.0 → 2.5.20-beta.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.
Files changed (68) hide show
  1. package/.eslintignore +2 -0
  2. package/.eslintrc.js +15 -0
  3. package/dist/{adapters → cjs/adapters}/index.js +1 -1
  4. package/dist/cjs/adapters/platforms/web.js +213 -0
  5. package/dist/cjs/constants/common.js +24 -0
  6. package/dist/cjs/constants/errors.js +12 -0
  7. package/dist/{constants → cjs/constants}/index.js +1 -1
  8. package/dist/cjs/helpers/decorators.js +238 -0
  9. package/dist/{helpers → cjs/helpers}/index.js +1 -1
  10. package/dist/{index.js → cjs/index.js} +1 -1
  11. package/dist/cjs/libs/cache.js +259 -0
  12. package/dist/cjs/libs/events.js +104 -0
  13. package/dist/cjs/libs/util.js +221 -0
  14. package/dist/esm/adapters/index.d.ts +13 -0
  15. package/dist/esm/adapters/index.js +27 -0
  16. package/dist/esm/adapters/platforms/web.d.ts +15 -0
  17. package/dist/esm/adapters/platforms/web.js +209 -0
  18. package/dist/esm/constants/common.d.ts +6 -0
  19. package/dist/esm/constants/common.js +17 -0
  20. package/dist/esm/constants/errors.d.ts +8 -0
  21. package/dist/esm/constants/errors.js +9 -0
  22. package/dist/esm/constants/index.d.ts +3 -0
  23. package/dist/esm/constants/index.js +4 -0
  24. package/dist/esm/helpers/decorators.d.ts +11 -0
  25. package/dist/esm/helpers/decorators.js +234 -0
  26. package/dist/esm/helpers/index.d.ts +1 -0
  27. package/dist/esm/helpers/index.js +2 -0
  28. package/dist/esm/index.d.ts +11 -0
  29. package/dist/esm/index.js +12 -0
  30. package/dist/esm/libs/cache.d.ts +17 -0
  31. package/dist/esm/libs/cache.js +256 -0
  32. package/dist/esm/libs/events.d.ts +27 -0
  33. package/dist/esm/libs/events.js +98 -0
  34. package/dist/esm/libs/util.d.ts +35 -0
  35. package/dist/esm/libs/util.js +194 -0
  36. package/package.json +6 -16
  37. package/src/adapters/index.ts +28 -0
  38. package/src/adapters/platforms/web.ts +182 -0
  39. package/src/constants/common.ts +21 -0
  40. package/src/constants/errors.ts +8 -0
  41. package/src/constants/index.ts +4 -0
  42. package/src/global.d.ts +3 -0
  43. package/src/helpers/decorators.ts +228 -0
  44. package/src/helpers/index.ts +1 -0
  45. package/src/index.ts +22 -0
  46. package/src/libs/cache.ts +192 -0
  47. package/src/libs/events.ts +154 -0
  48. package/src/libs/util.ts +216 -0
  49. package/tsconfig.esm.json +16 -0
  50. package/tsconfig.json +21 -0
  51. package/dist/adapters/platforms/web.js +0 -213
  52. package/dist/constants/common.js +0 -24
  53. package/dist/constants/errors.js +0 -12
  54. package/dist/helpers/decorators.js +0 -238
  55. package/dist/libs/cache.js +0 -259
  56. package/dist/libs/events.js +0 -104
  57. package/dist/libs/util.js +0 -221
  58. /package/dist/{adapters → cjs/adapters}/index.d.ts +0 -0
  59. /package/dist/{adapters → cjs/adapters}/platforms/web.d.ts +0 -0
  60. /package/dist/{constants → cjs/constants}/common.d.ts +0 -0
  61. /package/dist/{constants → cjs/constants}/errors.d.ts +0 -0
  62. /package/dist/{constants → cjs/constants}/index.d.ts +0 -0
  63. /package/dist/{helpers → cjs/helpers}/decorators.d.ts +0 -0
  64. /package/dist/{helpers → cjs/helpers}/index.d.ts +0 -0
  65. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  66. /package/dist/{libs → cjs/libs}/cache.d.ts +0 -0
  67. /package/dist/{libs → cjs/libs}/events.d.ts +0 -0
  68. /package/dist/{libs → cjs/libs}/util.d.ts +0 -0
@@ -0,0 +1,98 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ extendStatics(d, b);
10
+ function __() { this.constructor = d; }
11
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12
+ };
13
+ })();
14
+ var __spreadArrays = (this && this.__spreadArrays) || function () {
15
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
16
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
17
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
18
+ r[k] = a[j];
19
+ return r;
20
+ };
21
+ import { isString, isInstanceOf } from './util';
22
+ function customeAddEventListener(name, listener, listeners) {
23
+ listeners[name] = listeners[name] || [];
24
+ listeners[name].push(listener);
25
+ }
26
+ function customRemoveEventListener(name, listener, listeners) {
27
+ if (listeners === null || listeners === void 0 ? void 0 : listeners[name]) {
28
+ var index = listeners[name].indexOf(listener);
29
+ if (index !== -1) {
30
+ listeners[name].splice(index, 1);
31
+ }
32
+ }
33
+ }
34
+ var CloudbaseEvent = (function () {
35
+ function CloudbaseEvent(name, data) {
36
+ this.data = data || null;
37
+ this.name = name;
38
+ }
39
+ return CloudbaseEvent;
40
+ }());
41
+ export { CloudbaseEvent };
42
+ var IErrorEvent = (function (_super) {
43
+ __extends(IErrorEvent, _super);
44
+ function IErrorEvent(error, data) {
45
+ var _this = _super.call(this, 'error', { error: error, data: data }) || this;
46
+ _this.error = error;
47
+ return _this;
48
+ }
49
+ return IErrorEvent;
50
+ }(CloudbaseEvent));
51
+ export { IErrorEvent };
52
+ var CloudbaseEventEmitter = (function () {
53
+ function CloudbaseEventEmitter() {
54
+ this.listeners = {};
55
+ }
56
+ CloudbaseEventEmitter.prototype.on = function (name, listener) {
57
+ customeAddEventListener(name, listener, this.listeners);
58
+ return this;
59
+ };
60
+ CloudbaseEventEmitter.prototype.off = function (name, listener) {
61
+ customRemoveEventListener(name, listener, this.listeners);
62
+ return this;
63
+ };
64
+ CloudbaseEventEmitter.prototype.fire = function (event, data) {
65
+ if (isInstanceOf(event, IErrorEvent)) {
66
+ console.error(event.error);
67
+ return this;
68
+ }
69
+ var ev = isString(event) ? new CloudbaseEvent(event, data || {}) : event;
70
+ var name = ev.name;
71
+ if (this.listens(name)) {
72
+ ev.target = this;
73
+ var handlers = this.listeners[name] ? __spreadArrays(this.listeners[name]) : [];
74
+ for (var _i = 0, handlers_1 = handlers; _i < handlers_1.length; _i++) {
75
+ var fn = handlers_1[_i];
76
+ fn.call(this, ev);
77
+ }
78
+ }
79
+ return this;
80
+ };
81
+ CloudbaseEventEmitter.prototype.listens = function (name) {
82
+ return this.listeners[name] && this.listeners[name].length > 0;
83
+ };
84
+ return CloudbaseEventEmitter;
85
+ }());
86
+ export { CloudbaseEventEmitter };
87
+ var eventEmitter = new CloudbaseEventEmitter();
88
+ export function addEventListener(event, callback) {
89
+ eventEmitter.on(event, callback);
90
+ }
91
+ export function activateEvent(event, data) {
92
+ if (data === void 0) { data = {}; }
93
+ eventEmitter.fire(event, data);
94
+ }
95
+ export function removeEventListener(event, callback) {
96
+ eventEmitter.off(event, callback);
97
+ }
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYnMvZXZlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFXL0MsU0FBUyx1QkFBdUIsQ0FBQyxJQUFZLEVBQUUsUUFBa0IsRUFBRSxTQUFvQjtJQUNyRixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUN2QyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0FBQ2hDLENBQUM7QUFRRCxTQUFTLHlCQUF5QixDQUFDLElBQVksRUFBRSxRQUFrQixFQUFFLFNBQW9CO0lBQ3ZGLElBQUksU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFHLElBQUksR0FBRztRQUNyQixJQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQy9DLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2hCLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFBO1NBQ2pDO0tBQ0Y7QUFDSCxDQUFDO0FBWUQ7SUFLRSx3QkFBWSxJQUFZLEVBQUUsSUFBUztRQUNqQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUE7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7SUFDbEIsQ0FBQztJQUNILHFCQUFDO0FBQUQsQ0FBQyxBQVRELElBU0M7O0FBUUQ7SUFBaUMsK0JBQWM7SUFFN0MscUJBQVksS0FBWSxFQUFFLElBQVU7UUFBcEMsWUFDRSxrQkFBTSxPQUFPLEVBQUUsRUFBRSxLQUFLLE9BQUEsRUFBRSxJQUFJLE1BQUEsRUFBRSxDQUFDLFNBRWhDO1FBREMsS0FBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7O0lBQ3BCLENBQUM7SUFDSCxrQkFBQztBQUFELENBQUMsQUFORCxDQUFpQyxjQUFjLEdBTTlDOztBQUtEO0lBQUE7UUFPbUIsY0FBUyxHQUFjLEVBQUUsQ0FBQztJQThEN0MsQ0FBQztJQXJEUSxrQ0FBRSxHQUFULFVBQVUsSUFBWSxFQUFFLFFBQWtCO1FBQ3hDLHVCQUF1QixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3ZELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQVFNLG1DQUFHLEdBQVYsVUFBVyxJQUFZLEVBQUUsUUFBa0I7UUFDekMseUJBQXlCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDekQsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBT00sb0NBQUksR0FBWCxVQUFZLEtBQThCLEVBQUUsSUFBVTtRQUVwRCxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLEVBQUU7WUFDcEMsT0FBTyxDQUFDLEtBQUssQ0FBRSxLQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQzNDLE9BQU8sSUFBSSxDQUFBO1NBQ1o7UUFFRCxJQUFNLEVBQUUsR0FBbUIsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxLQUFlLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUF1QixDQUFBO1FBRTlHLElBQUEsSUFBSSxHQUFLLEVBQUUsS0FBUCxDQUFPO1FBRW5CLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QixFQUFFLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQTtZQUVoQixJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFBO1lBQ3RFLEtBQWlCLFVBQVEsRUFBUixxQkFBUSxFQUFSLHNCQUFRLEVBQVIsSUFBUSxFQUFFO2dCQUF0QixJQUFNLEVBQUUsaUJBQUE7Z0JBQ1gsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7YUFDbEI7U0FDRjtRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQVFPLHVDQUFPLEdBQWYsVUFBZ0IsSUFBWTtRQUMxQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO0lBQ2hFLENBQUM7SUFDSCw0QkFBQztBQUFELENBQUMsQUFyRUQsSUFxRUM7O0FBR0QsSUFBTSxZQUFZLEdBQUcsSUFBSSxxQkFBcUIsRUFBRSxDQUFBO0FBRWhELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFhLEVBQUUsUUFBa0I7SUFDaEUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFDbEMsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBYSxFQUFFLElBQWM7SUFBZCxxQkFBQSxFQUFBLFNBQWM7SUFDekQsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7QUFDaEMsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxLQUFhLEVBQUUsUUFBa0I7SUFDbkUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU3RyaW5nLCBpc0luc3RhbmNlT2YgfSBmcm9tICcuL3V0aWwnXG5pbXBvcnQgeyBMaXN0ZW5lcnMsIElDbG91ZGJhc2VFdmVudEVtaXR0ZXIgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzL2V2ZW50cydcblxuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBAZnVuY3Rpb24gX2FkZEV2ZW50TGlzdGVuZXIgLSDmt7vliqDnm5HlkKxcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gZXZlbnTlkI3np7BcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGxpc3RlbmVyIC0g5ZON5bqU5Ye95pWwXG4gKiBAcGFyYW0ge0xpc3RlbmVyc30gbGlzdGVuZXJzIC0g5bey5a2Y5ZON5bqU5Ye95pWw6ZuG5ZCIXG4gKi9cbmZ1bmN0aW9uIGN1c3RvbWVBZGRFdmVudExpc3RlbmVyKG5hbWU6IHN0cmluZywgbGlzdGVuZXI6IEZ1bmN0aW9uLCBsaXN0ZW5lcnM6IExpc3RlbmVycykge1xuICBsaXN0ZW5lcnNbbmFtZV0gPSBsaXN0ZW5lcnNbbmFtZV0gfHwgW11cbiAgbGlzdGVuZXJzW25hbWVdLnB1c2gobGlzdGVuZXIpXG59XG4vKipcbiAqIEBwcml2YXRlXG4gKiBAZnVuY3Rpb24gX3JlbW92ZUV2ZW50TGlzdGVuZXIgLSDnp7vpmaTnm5HlkKxcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gZXZlbnTlkI3np7BcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGxpc3RlbmVyIC0g5ZON5bqU5Ye95pWwXG4gKiBAcGFyYW0ge0xpc3RlbmVyc30gbGlzdGVuZXJzIC0g5bey5a2Y5ZON5bqU5Ye95pWw6ZuG5ZCIXG4gKi9cbmZ1bmN0aW9uIGN1c3RvbVJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogRnVuY3Rpb24sIGxpc3RlbmVyczogTGlzdGVuZXJzKSB7XG4gIGlmIChsaXN0ZW5lcnM/LltuYW1lXSkge1xuICAgIGNvbnN0IGluZGV4ID0gbGlzdGVuZXJzW25hbWVdLmluZGV4T2YobGlzdGVuZXIpXG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgbGlzdGVuZXJzW25hbWVdLnNwbGljZShpbmRleCwgMSlcbiAgICB9XG4gIH1cbn1cbmludGVyZmFjZSBJRXZlbnQge1xuICBuYW1lOiBzdHJpbmc7XG4gIHRhcmdldDogYW55O1xuICBkYXRhOiBhbnk7XG59XG4vKipcbiAqIOiHquWumuS5ieS6i+S7tlxuICogQGNsYXNzIENsb3VkYmFzZUV2ZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIOexu+Wei1xuICogQHBhcmFtIHthbnl9IGRhdGEgLSDmlbDmja5cbiAqL1xuZXhwb3J0IGNsYXNzIENsb3VkYmFzZUV2ZW50IGltcGxlbWVudHMgSUV2ZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcHVibGljIHRhcmdldDogYW55O1xuICBwdWJsaWMgZGF0YTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgZGF0YTogYW55KSB7XG4gICAgdGhpcy5kYXRhID0gZGF0YSB8fCBudWxsXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICB9XG59XG4vKipcbiAqIOiHquWumuS5iemUmeivr+S6i+S7tlxuICogQGNsYXNzIElFcnJvckV2ZW50XG4gKiBAZXh0ZW5kcyBDbG91ZGJhc2VFdmVudFxuICogQHBhcmFtIHtFcnJvcn0gZXJyb3IgLSDplJnor6/kv6Hmga/lr7nosaFcbiAqIEBwYXJhbSB7YW55fSBkYXRhICAtIOaVsOaNrlxuICovXG5leHBvcnQgY2xhc3MgSUVycm9yRXZlbnQgZXh0ZW5kcyBDbG91ZGJhc2VFdmVudCB7XG4gIHB1YmxpYyByZWFkb25seSBlcnJvcjogRXJyb3I7XG4gIGNvbnN0cnVjdG9yKGVycm9yOiBFcnJvciwgZGF0YT86IGFueSkge1xuICAgIHN1cGVyKCdlcnJvcicsIHsgZXJyb3IsIGRhdGEgfSlcbiAgICB0aGlzLmVycm9yID0gZXJyb3JcbiAgfVxufVxuXG4vKipcbiAqIEBjbGFzcyBDbG91ZGJhc2VFdmVudEVtaXR0ZXJcbiAqL1xuZXhwb3J0IGNsYXNzIENsb3VkYmFzZUV2ZW50RW1pdHRlciBpbXBsZW1lbnRzIElDbG91ZGJhc2VFdmVudEVtaXR0ZXIge1xuICAvKipcbiAgICogQHByaXZhdGVcbiAgICogQHJlYWRvbmx5XG4gICAqIEBwcm9wZXJ0eSB7TGlzdGVuZXJzfSBsaXN0ZW5lcnMgLSDlk43lupTlh73mlbDpm4blkIhcbiAgICogQGRlZmF1bHQgYHt9YFxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBsaXN0ZW5lcnM6IExpc3RlbmVycyA9IHt9O1xuXG4gIC8qKlxuICAgKiBAcHVibGljXG4gICAqIEBtZXRob2Qgb24gLSDmt7vliqDnm5HlkKxcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBldmVudOWQjeensFxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBsaXN0ZW5lciAtIOWTjeW6lOWHveaVsFxuICAgKiBAcmV0dXJuIGB0aGlzYFxuICAgKi9cbiAgcHVibGljIG9uKG5hbWU6IHN0cmluZywgbGlzdGVuZXI6IEZ1bmN0aW9uKTogdGhpcyB7XG4gICAgY3VzdG9tZUFkZEV2ZW50TGlzdGVuZXIobmFtZSwgbGlzdGVuZXIsIHRoaXMubGlzdGVuZXJzKVxuICAgIHJldHVybiB0aGlzXG4gIH1cbiAgLyoqXG4gICAqIEBwdWJsaWNcbiAgICogQG1ldGhvZCBvZmYgLSDnp7vpmaTnm5HlkKxcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBldmVudOWQjeensFxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBsaXN0ZW5lciAtIOWTjeW6lOWHveaVsFxuICAgKiBAcmV0dXJuIGB0aGlzYFxuICAgKi9cbiAgcHVibGljIG9mZihuYW1lOiBzdHJpbmcsIGxpc3RlbmVyOiBGdW5jdGlvbik6IHRoaXMge1xuICAgIGN1c3RvbVJlbW92ZUV2ZW50TGlzdGVuZXIobmFtZSwgbGlzdGVuZXIsIHRoaXMubGlzdGVuZXJzKVxuICAgIHJldHVybiB0aGlzXG4gIH1cbiAgLyoqXG4gICAqIEBwdWJsaWNcbiAgICogQG1ldGhvZCBmaXJlIC0g6Kem5Y+R5LqL5Lu2XG4gICAqIEBwYXJhbSB7c3RyaW5nfENsb3VkYmFzZUV2ZW50fSBldmVudCAtIGV2ZW50XG4gICAqIEByZXR1cm4gYHRoaXNgXG4gICAqL1xuICBwdWJsaWMgZmlyZShldmVudDogc3RyaW5nIHwgQ2xvdWRiYXNlRXZlbnQsIGRhdGE/OiBhbnkpOiB0aGlzIHtcbiAgICAvLyDmiZPljbDplJnor6/kv6Hmga9cbiAgICBpZiAoaXNJbnN0YW5jZU9mKGV2ZW50LCBJRXJyb3JFdmVudCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoKGV2ZW50IGFzIElFcnJvckV2ZW50KS5lcnJvcilcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgY29uc3QgZXY6IENsb3VkYmFzZUV2ZW50ID0gaXNTdHJpbmcoZXZlbnQpID8gbmV3IENsb3VkYmFzZUV2ZW50KGV2ZW50IGFzIHN0cmluZywgZGF0YSB8fCB7fSkgOiBldmVudCBhcyBDbG91ZGJhc2VFdmVudFxuXG4gICAgY29uc3QgeyBuYW1lIH0gPSBldlxuXG4gICAgaWYgKHRoaXMubGlzdGVucyhuYW1lKSkge1xuICAgICAgZXYudGFyZ2V0ID0gdGhpc1xuXG4gICAgICBjb25zdCBoYW5kbGVycyA9IHRoaXMubGlzdGVuZXJzW25hbWVdID8gWy4uLnRoaXMubGlzdGVuZXJzW25hbWVdXSA6IFtdXG4gICAgICBmb3IgKGNvbnN0IGZuIG9mIGhhbmRsZXJzKSB7XG4gICAgICAgIGZuLmNhbGwodGhpcywgZXYpXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAbWV0aG9kIGxpc3RlbnMgLSDliKTmlq3mmK/lkKbnm5HlkKzkuoZuYW1l5LqL5Lu2XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gZXZlbnTlkI3np7BcbiAgICogQHJldHVybiBgYm9vbGVhbmBcbiAgICovXG4gIHByaXZhdGUgbGlzdGVucyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5saXN0ZW5lcnNbbmFtZV0gJiYgdGhpcy5saXN0ZW5lcnNbbmFtZV0ubGVuZ3RoID4gMFxuICB9XG59XG5cblxuY29uc3QgZXZlbnRFbWl0dGVyID0gbmV3IENsb3VkYmFzZUV2ZW50RW1pdHRlcigpXG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKGV2ZW50OiBzdHJpbmcsIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICBldmVudEVtaXR0ZXIub24oZXZlbnQsIGNhbGxiYWNrKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWN0aXZhdGVFdmVudChldmVudDogc3RyaW5nLCBkYXRhOiBhbnkgPSB7fSkge1xuICBldmVudEVtaXR0ZXIuZmlyZShldmVudCwgZGF0YSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQ6IHN0cmluZywgY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG4gIGV2ZW50RW1pdHRlci5vZmYoZXZlbnQsIGNhbGxiYWNrKVxufVxuIl19
@@ -0,0 +1,35 @@
1
+ import { KV } from '@cloudbase/types';
2
+ export declare function isArray(val: any): boolean;
3
+ export declare function isString(val: any): boolean;
4
+ export declare function isUndefined(val: any): boolean;
5
+ export declare function isPalinObject(val: any): boolean;
6
+ export declare function isNull(val: any): boolean;
7
+ export declare function isInstanceOf(instance: any, construct: any): boolean;
8
+ export declare function isFormData(val: any): boolean;
9
+ export declare function genSeqId(): string;
10
+ export declare function formatUrl(PROTOCOL: string, url: string, query?: KV<any>): string;
11
+ export declare function createSign(payload: KV<any>, secret: string): string;
12
+ export declare function toQueryString(query?: KV<any>): string;
13
+ export declare function getQuery(name: string, url?: string): string | false;
14
+ export declare const getHash: (name: string) => string;
15
+ export declare function removeParam(key: string, sourceURL: string): string;
16
+ export declare function createPromiseCallback(): any;
17
+ export declare function execCallback(fn: Function | null | undefined, err: any, data?: any): any;
18
+ export declare function printWarn(error: string, msg: string): void;
19
+ export declare function printError(error: string, msg: string): void;
20
+ export declare function printInfo(error: string, msg: string): void;
21
+ export declare function throwError(error: string, msg: string): void;
22
+ interface IPrintGroupLogOptions {
23
+ title: string;
24
+ subtitle: string | object;
25
+ content: {
26
+ type: 'info' | 'warn' | 'error';
27
+ body: string | Error;
28
+ }[];
29
+ printTrace?: boolean;
30
+ collapsed?: boolean;
31
+ }
32
+ export declare function printGroupLog(options: IPrintGroupLogOptions): void;
33
+ export declare const sleep: (ms?: number) => Promise<unknown>;
34
+ export declare function transformPhone(phoneNumber: string): string;
35
+ export {};
@@ -0,0 +1,194 @@
1
+ import hs256 from 'crypto-js/hmac-sha256';
2
+ import base64 from 'crypto-js/enc-base64';
3
+ import utf8 from 'crypto-js/enc-utf8';
4
+ import { getSdkName } from '../constants';
5
+ export function isArray(val) {
6
+ return Object.prototype.toString.call(val) === '[object Array]';
7
+ }
8
+ export function isString(val) {
9
+ return typeof val === 'string';
10
+ }
11
+ export function isUndefined(val) {
12
+ return typeof val === 'undefined';
13
+ }
14
+ export function isPalinObject(val) {
15
+ return Object.prototype.toString.call(val) === '[object Object]';
16
+ }
17
+ export function isNull(val) {
18
+ return Object.prototype.toString.call(val) === '[object Null]';
19
+ }
20
+ export function isInstanceOf(instance, construct) {
21
+ return instance instanceof construct;
22
+ }
23
+ export function isFormData(val) {
24
+ return Object.prototype.toString.call(val) === '[object FormData]';
25
+ }
26
+ export function genSeqId() {
27
+ return Math.random().toString(16)
28
+ .slice(2);
29
+ }
30
+ export function formatUrl(PROTOCOL, url, query) {
31
+ if (query === void 0) { query = {}; }
32
+ var urlHasQuery = /\?/.test(url);
33
+ var queryString = '';
34
+ Object.keys(query).forEach(function (key) {
35
+ if (queryString === '') {
36
+ !urlHasQuery && (url += '?');
37
+ }
38
+ else {
39
+ queryString += '&';
40
+ }
41
+ queryString += key + "=" + encodeURIComponent(query[key]);
42
+ });
43
+ url += queryString;
44
+ if (/^http(s)?:\/\//.test(url)) {
45
+ return url;
46
+ }
47
+ return "" + PROTOCOL + url;
48
+ }
49
+ function base64url(source) {
50
+ var encodedSource = base64.stringify(source);
51
+ encodedSource = encodedSource.replace(/=+$/, '');
52
+ encodedSource = encodedSource.replace(/\+/g, '-');
53
+ encodedSource = encodedSource.replace(/\//g, '_');
54
+ return encodedSource;
55
+ }
56
+ export function createSign(payload, secret) {
57
+ var header = {
58
+ alg: 'HS256',
59
+ typ: 'JWT',
60
+ };
61
+ var headerStr = base64url(utf8.parse(JSON.stringify(header)));
62
+ var payloadStr = base64url(utf8.parse(JSON.stringify(payload)));
63
+ var token = headerStr + "." + payloadStr;
64
+ var sign = base64url(hs256(token, secret));
65
+ return token + "." + sign;
66
+ }
67
+ export function toQueryString(query) {
68
+ if (query === void 0) { query = {}; }
69
+ var queryString = [];
70
+ Object.keys(query).forEach(function (key) {
71
+ queryString.push(key + "=" + encodeURIComponent(query[key]));
72
+ });
73
+ return queryString.join('&');
74
+ }
75
+ export function getQuery(name, url) {
76
+ if (typeof window === 'undefined') {
77
+ return false;
78
+ }
79
+ var u = url || window.location.search;
80
+ var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
81
+ var r = u.substr(u.indexOf('?') + 1).match(reg);
82
+ return (r !== null && r !== undefined) ? r[2] : '';
83
+ }
84
+ export var getHash = function (name) {
85
+ if (typeof window === 'undefined') {
86
+ return '';
87
+ }
88
+ var matches = window.location.hash.match(new RegExp("[#?&/]" + name + "=([^&#]*)"));
89
+ return matches ? matches[1] : '';
90
+ };
91
+ export function removeParam(key, sourceURL) {
92
+ var rtn = sourceURL.split('?')[0];
93
+ var param;
94
+ var params = [];
95
+ var queryString = sourceURL.indexOf('?') !== -1 ? sourceURL.split('?')[1] : '';
96
+ if (queryString !== '') {
97
+ params = queryString.split('&');
98
+ for (var i = params.length - 1; i >= 0; i -= 1) {
99
+ param = params[i].split('=')[0];
100
+ if (param === key) {
101
+ params.splice(i, 1);
102
+ }
103
+ }
104
+ rtn = rtn + "?" + params.join('&');
105
+ }
106
+ return rtn;
107
+ }
108
+ export function createPromiseCallback() {
109
+ var cb;
110
+ if (!Promise) {
111
+ cb = function () { };
112
+ cb.promise = {};
113
+ var throwPromiseNotDefined = function () {
114
+ throw new Error('Your Node runtime does support ES6 Promises. '
115
+ + 'Set "global.Promise" to your preferred implementation of promises.');
116
+ };
117
+ Object.defineProperty(cb.promise, 'then', { get: throwPromiseNotDefined });
118
+ Object.defineProperty(cb.promise, 'catch', { get: throwPromiseNotDefined });
119
+ return cb;
120
+ }
121
+ var promise = new Promise(function (resolve, reject) {
122
+ cb = function (err, data) {
123
+ if (err)
124
+ return reject(err);
125
+ return resolve(data);
126
+ };
127
+ });
128
+ cb.promise = promise;
129
+ return cb;
130
+ }
131
+ export function execCallback(fn, err, data) {
132
+ if (data === void 0) { data = null; }
133
+ if (fn && typeof fn === 'function') {
134
+ return fn(err, data);
135
+ }
136
+ if (err) {
137
+ throw err;
138
+ }
139
+ return data;
140
+ }
141
+ export function printWarn(error, msg) {
142
+ console.warn("[" + getSdkName() + "][" + error + "]:" + msg);
143
+ }
144
+ export function printError(error, msg) {
145
+ console.error({
146
+ code: error,
147
+ msg: "[" + getSdkName() + "][" + error + "]:" + msg,
148
+ });
149
+ }
150
+ export function printInfo(error, msg) {
151
+ console.log("[" + getSdkName() + "][" + error + "]:" + msg);
152
+ }
153
+ export function throwError(error, msg) {
154
+ throw new Error(JSON.stringify({
155
+ code: error,
156
+ msg: "[" + getSdkName() + "][" + error + "]:" + msg,
157
+ }));
158
+ }
159
+ export function printGroupLog(options) {
160
+ var title = options.title, _a = options.subtitle, subtitle = _a === void 0 ? '' : _a, _b = options.content, content = _b === void 0 ? [] : _b, _c = options.printTrace, printTrace = _c === void 0 ? false : _c, _d = options.collapsed, collapsed = _d === void 0 ? false : _d;
161
+ if (collapsed) {
162
+ console.groupCollapsed(title, subtitle);
163
+ }
164
+ else {
165
+ console.group(title, subtitle);
166
+ }
167
+ for (var _i = 0, content_1 = content; _i < content_1.length; _i++) {
168
+ var tip = content_1[_i];
169
+ var type = tip.type, body = tip.body;
170
+ switch (type) {
171
+ case 'info':
172
+ console.log(body);
173
+ break;
174
+ case 'warn':
175
+ console.warn(body);
176
+ break;
177
+ case 'error':
178
+ console.error(body);
179
+ break;
180
+ }
181
+ }
182
+ if (printTrace) {
183
+ console.trace('stack trace:');
184
+ }
185
+ console.groupEnd();
186
+ }
187
+ export var sleep = function (ms) {
188
+ if (ms === void 0) { ms = 0; }
189
+ return new Promise(function (r) { return setTimeout(r, ms); });
190
+ };
191
+ export function transformPhone(phoneNumber) {
192
+ return "+86" + phoneNumber;
193
+ }
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWJzL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sdUJBQXVCLENBQUE7QUFDekMsT0FBTyxNQUFNLE1BQU0sc0JBQXNCLENBQUE7QUFDekMsT0FBTyxJQUFJLE1BQU0sb0JBQW9CLENBQUE7QUFFckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUV6QyxNQUFNLFVBQVUsT0FBTyxDQUFDLEdBQVE7SUFDOUIsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssZ0JBQWdCLENBQUE7QUFDakUsQ0FBQztBQUNELE1BQU0sVUFBVSxRQUFRLENBQUMsR0FBUTtJQUMvQixPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQTtBQUNoQyxDQUFDO0FBQ0QsTUFBTSxVQUFVLFdBQVcsQ0FBQyxHQUFRO0lBQ2xDLE9BQU8sT0FBTyxHQUFHLEtBQUssV0FBVyxDQUFBO0FBQ25DLENBQUM7QUFDRCxNQUFNLFVBQVUsYUFBYSxDQUFDLEdBQVE7SUFDcEMsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssaUJBQWlCLENBQUE7QUFDbEUsQ0FBQztBQUNELE1BQU0sVUFBVSxNQUFNLENBQUMsR0FBUTtJQUM3QixPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxlQUFlLENBQUE7QUFDaEUsQ0FBQztBQUNELE1BQU0sVUFBVSxZQUFZLENBQUMsUUFBYSxFQUFFLFNBQWM7SUFDeEQsT0FBTyxRQUFRLFlBQVksU0FBUyxDQUFBO0FBQ3RDLENBQUM7QUFDRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEdBQVE7SUFDakMsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFD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LEtBQWQsRUFBRSxJQUFJLEdBQUssR0FBRyxLQUFSLENBQVE7UUFDMUIsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDakIsTUFBSztZQUNQLEtBQUssTUFBTTtnQkFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUNsQixNQUFLO1lBQ1AsS0FBSyxPQUFPO2dCQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7Z0JBQ25CLE1BQUs7U0FDUjtLQUNGO0lBQ0QsSUFBSSxVQUFVLEVBQUU7UUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0tBQzlCO0lBQ0QsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFBO0FBQ3BCLENBQUM7QUFFRCxNQUFNLENBQUMsSUFBTSxLQUFLLEdBQUcsVUFBQyxFQUFNO0lBQU4sbUJBQUEsRUFBQSxNQUFNO0lBQUssT0FBQSxJQUFJLE9BQU8sQ0FBQyxVQUFBLENBQUMsSUFBSSxPQUFBLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQWpCLENBQWlCLENBQUM7QUFBbkMsQ0FBbUMsQ0FBQTtBQUVwRSxNQUFNLFVBQVUsY0FBYyxDQUFDLFdBQW1CO0lBQ2hELE9BQU8sUUFBTSxXQUFhLENBQUE7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBoczI1NiBmcm9tICdjcnlwdG8tanMvaG1hYy1zaGEyNTYnXG5pbXBvcnQgYmFzZTY0IGZyb20gJ2NyeXB0by1qcy9lbmMtYmFzZTY0J1xuaW1wb3J0IHV0ZjggZnJvbSAnY3J5cHRvLWpzL2VuYy11dGY4J1xuaW1wb3J0IHsgS1YgfSBmcm9tICdAY2xvdWRiYXNlL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0U2RrTmFtZSB9IGZyb20gJy4uL2NvbnN0YW50cydcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQXJyYXkodmFsOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBBcnJheV0nXG59XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnXG59XG5leHBvcnQgZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICd1bmRlZmluZWQnXG59XG5leHBvcnQgZnVuY3Rpb24gaXNQYWxpbk9iamVjdCh2YWw6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbCkgPT09ICdbb2JqZWN0IE9iamVjdF0nXG59XG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsKHZhbDogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsKSA9PT0gJ1tvYmplY3QgTnVsbF0nXG59XG5leHBvcnQgZnVuY3Rpb24gaXNJbnN0YW5jZU9mKGluc3RhbmNlOiBhbnksIGNvbnN0cnVjdDogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiBpbnN0YW5jZSBpbnN0YW5jZW9mIGNvbnN0cnVjdFxufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRm9ybURhdGEodmFsOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWwpID09PSAnW29iamVjdCBGb3JtRGF0YV0nXG59XG5leHBvcnQgZnVuY3Rpb24gZ2VuU2VxSWQoKTogc3RyaW5nIHtcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpXG4gICAgLnNsaWNlKDIpXG59XG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VXJsKFBST1RPQ09MOiBzdHJpbmcsIHVybDogc3RyaW5nLCBxdWVyeTogS1Y8YW55PiA9IHt9KTogc3RyaW5nIHtcbiAgY29uc3QgdXJsSGFzUXVlcnkgPSAvXFw/Ly50ZXN0KHVybClcbiAgbGV0IHF1ZXJ5U3RyaW5nID0gJydcbiAgT2JqZWN0LmtleXMocXVlcnkpLmZvckVhY2goKGtleSkgPT4ge1xuICAgIGlmIChxdWVyeVN0cmluZyA9PT0gJycpIHtcbiAgICAgICF1cmxIYXNRdWVyeSAmJiAodXJsICs9ICc/JylcbiAgICB9IGVsc2Uge1xuICAgICAgcXVlcnlTdHJpbmcgKz0gJyYnXG4gICAgfVxuICAgIHF1ZXJ5U3RyaW5nICs9IGAke2tleX09JHtlbmNvZGVVUklDb21wb25lbnQocXVlcnlba2V5XSl9YFxuICB9KVxuICB1cmwgKz0gcXVlcnlTdHJpbmdcbiAgaWYgKC9eaHR0cChzKT86XFwvXFwvLy50ZXN0KHVybCkpIHtcbiAgICByZXR1cm4gdXJsXG4gIH1cbiAgcmV0dXJuIGAke1BST1RPQ09MfSR7dXJsfWBcbn1cblxuZnVuY3Rpb24gYmFzZTY0dXJsKHNvdXJjZTogS1Y8YW55Pik6IHN0cmluZyB7XG4gIGxldCBlbmNvZGVkU291cmNlID0gYmFzZTY0LnN0cmluZ2lmeShzb3VyY2UpXG5cbiAgZW5jb2RlZFNvdXJjZSA9IGVuY29kZWRTb3VyY2UucmVwbGFjZSgvPSskLywgJycpXG4gIGVuY29kZWRTb3VyY2UgPSBlbmNvZGVkU291cmNlLnJlcGxhY2UoL1xcKy9nLCAnLScpXG4gIGVuY29kZWRTb3VyY2UgPSBlbmNvZGVkU291cmNlLnJlcGxhY2UoL1xcLy9nLCAnXycpXG5cbiAgcmV0dXJuIGVuY29kZWRTb3VyY2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNpZ24ocGF5bG9hZDogS1Y8YW55Piwgc2VjcmV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBoZWFkZXIgPSB7XG4gICAgYWxnOiAnSFMyNTYnLFxuICAgIHR5cDogJ0pXVCcsXG4gIH1cbiAgY29uc3QgaGVhZGVyU3RyID0gYmFzZTY0dXJsKHV0ZjgucGFyc2UoSlNPTi5zdHJpbmdpZnkoaGVhZGVyKSkpXG4gIGNvbnN0IHBheWxvYWRTdHIgPSBiYXNlNjR1cmwodXRmOC5wYXJzZShKU09OLnN0cmluZ2lmeShwYXlsb2FkKSkpXG5cbiAgY29uc3QgdG9rZW4gPSBgJHtoZWFkZXJTdHJ9LiR7cGF5bG9hZFN0cn1gXG4gIGNvbnN0IHNpZ24gPSBiYXNlNjR1cmwoaHMyNTYodG9rZW4sIHNlY3JldCkpXG4gIHJldHVybiBgJHt0b2tlbn0uJHtzaWdufWBcbn1cbmV4cG9ydCBmdW5jdGlvbiB0b1F1ZXJ5U3RyaW5nKHF1ZXJ5OiBLVjxhbnk+ID0ge30pIHtcbiAgY29uc3QgcXVlcnlTdHJpbmcgPSBbXVxuICBPYmplY3Qua2V5cyhxdWVyeSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgcXVlcnlTdHJpbmcucHVzaChgJHtrZXl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXJ5W2tleV0pfWApXG4gIH0pXG4gIHJldHVybiBxdWVyeVN0cmluZy5qb2luKCcmJylcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFF1ZXJ5KG5hbWU6IHN0cmluZywgdXJsPzogc3RyaW5nKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIC8vIOWPguaVsO+8muWPmOmHj+WQje+8jHVybOS4uuepuuWImeihqOS7juW9k+WJjemhtemdoueahHVybOS4reWPllxuICBjb25zdCB1ID0gdXJsIHx8IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2hcbiAgY29uc3QgcmVnID0gbmV3IFJlZ0V4cChgKF58Jikke25hbWV9PShbXiZdKikoJnwkKWApXG4gIGNvbnN0IHIgPSB1LnN1YnN0cih1LmluZGV4T2YoJz8nKSArIDEpLm1hdGNoKHJlZylcbiAgcmV0dXJuIChyICE9PSBudWxsICYmIHIgIT09IHVuZGVmaW5lZCkgPyByWzJdIDogJydcbn1cblxuZXhwb3J0IGNvbnN0IGdldEhhc2ggPSBmdW5jdGlvbiAobmFtZTogc3RyaW5nKSB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiAnJ1xuICB9XG4gIGNvbnN0IG1hdGNoZXMgPSB3aW5kb3cubG9jYXRpb24uaGFzaC5tYXRjaChuZXcgUmVnRXhwKGBbIz8mL10ke25hbWV9PShbXiYjXSopYCkpXG4gIHJldHVybiBtYXRjaGVzID8gbWF0Y2hlc1sxXSA6ICcnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVQYXJhbShrZXk6IHN0cmluZywgc291cmNlVVJMOiBzdHJpbmcpIHtcbiAgbGV0IHJ0biA9IHNvdXJjZVVSTC5zcGxpdCgnPycpWzBdXG4gIGxldCBwYXJhbVxuICBsZXQgcGFyYW1zID0gW11cbiAgY29uc3QgcXVlcnlTdHJpbmcgPSBzb3VyY2VVUkwuaW5kZXhPZignPycpICE9PSAtMSA/IHNvdXJjZVVSTC5zcGxpdCgnPycpWzFdIDogJydcbiAgaWYgKHF1ZXJ5U3RyaW5nICE9PSAnJykge1xuICAgIHBhcmFtcyA9IHF1ZXJ5U3RyaW5nLnNwbGl0KCcmJylcbiAgICBmb3IgKGxldCBpID0gcGFyYW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaSAtPSAxKSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgKi9cbiAgICAgIHBhcmFtID0gcGFyYW1zW2ldLnNwbGl0KCc9JylbMF1cbiAgICAgIGlmIChwYXJhbSA9PT0ga2V5KSB7XG4gICAgICAgIHBhcmFtcy5zcGxpY2UoaSwgMSlcbiAgICAgIH1cbiAgICB9XG4gICAgcnRuID0gYCR7cnRufT8ke3BhcmFtcy5qb2luKCcmJyl9YFxuICB9XG4gIHJldHVybiBydG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVByb21pc2VDYWxsYmFjaygpIHtcbiAgbGV0IGNiOiBhbnlcbiAgaWYgKCFQcm9taXNlKSB7XG4gICAgY2IgPSAoKSA9PiB7IH1cbiAgICBjYi5wcm9taXNlID0ge31cblxuICAgIGNvbnN0IHRocm93UHJvbWlzZU5vdERlZmluZWQgPSAoKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdXIgTm9kZSBydW50aW1lIGRvZXMgc3VwcG9ydCBFUzYgUHJvbWlzZXMuICdcbiAgICAgICAgKyAnU2V0IFwiZ2xvYmFsLlByb21pc2VcIiB0byB5b3VyIHByZWZlcnJlZCBpbXBsZW1lbnRhdGlvbiBvZiBwcm9taXNlcy4nKVxuICAgIH1cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjYi5wcm9taXNlLCAndGhlbicsIHsgZ2V0OiB0aHJvd1Byb21pc2VOb3REZWZpbmVkIH0pXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNiLnByb21pc2UsICdjYXRjaCcsIHsgZ2V0OiB0aHJvd1Byb21pc2VOb3REZWZpbmVkIH0pXG4gICAgcmV0dXJuIGNiXG4gIH1cblxuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNiID0gKGVyciwgZGF0YSkgPT4ge1xuICAgICAgaWYgKGVycikgcmV0dXJuIHJlamVjdChlcnIpXG4gICAgICByZXR1cm4gcmVzb2x2ZShkYXRhKVxuICAgIH1cbiAgfSlcbiAgY2IucHJvbWlzZSA9IHByb21pc2VcbiAgcmV0dXJuIGNiXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleGVjQ2FsbGJhY2soZm46IEZ1bmN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCwgZXJyOiBhbnksIGRhdGEgPSBudWxsKSB7XG4gIGlmIChmbiAmJiB0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZm4oZXJyLCBkYXRhKVxuICB9XG4gIGlmIChlcnIpIHtcbiAgICB0aHJvdyBlcnJcbiAgfVxuICByZXR1cm4gZGF0YVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJpbnRXYXJuKGVycm9yOiBzdHJpbmcsIG1zZzogc3RyaW5nKSB7XG4gIGNvbnNvbGUud2FybihgWyR7Z2V0U2RrTmFtZSgpfV1bJHtlcnJvcn1dOiR7bXNnfWApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmludEVycm9yKGVycm9yOiBzdHJpbmcsIG1zZzogc3RyaW5nKSB7XG4gIGNvbnNvbGUuZXJyb3Ioe1xuICAgIGNvZGU6IGVycm9yLFxuICAgIG1zZzogYFske2dldFNka05hbWUoKX1dWyR7ZXJyb3J9XToke21zZ31gLFxuICB9KVxufVxuZXhwb3J0IGZ1bmN0aW9uIHByaW50SW5mbyhlcnJvcjogc3RyaW5nLCBtc2c6IHN0cmluZykge1xuICBjb25zb2xlLmxvZyhgWyR7Z2V0U2RrTmFtZSgpfV1bJHtlcnJvcn1dOiR7bXNnfWApXG59XG5leHBvcnQgZnVuY3Rpb24gdGhyb3dFcnJvcihlcnJvcjogc3RyaW5nLCBtc2c6IHN0cmluZykge1xuICB0aHJvdyBuZXcgRXJyb3IoSlNPTi5zdHJpbmdpZnkoe1xuICAgIGNvZGU6IGVycm9yLFxuICAgIG1zZzogYFske2dldFNka05hbWUoKX1dWyR7ZXJyb3J9XToke21zZ31gLFxuICB9KSlcbn1cblxuaW50ZXJmYWNlIElQcmludEdyb3VwTG9nT3B0aW9ucyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN1YnRpdGxlOiBzdHJpbmcgfCBvYmplY3Q7XG4gIGNvbnRlbnQ6IHtcbiAgICB0eXBlOiAnaW5mbycgfCAnd2FybicgfCAnZXJyb3InLFxuICAgIGJvZHk6IHN0cmluZyB8IEVycm9yO1xuICB9W107XG4gIHByaW50VHJhY2U/OiBib29sZWFuO1xuICBjb2xsYXBzZWQ/OiBib29sZWFuO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHByaW50R3JvdXBMb2cob3B0aW9uczogSVByaW50R3JvdXBMb2dPcHRpb25zKSB7XG4gIGNvbnN0IHsgdGl0bGUsIHN1YnRpdGxlID0gJycsIGNvbnRlbnQgPSBbXSwgcHJpbnRUcmFjZSA9IGZhbHNlLCBjb2xsYXBzZWQgPSBmYWxzZSB9ID0gb3B0aW9uc1xuICBpZiAoY29sbGFwc2VkKSB7XG4gICAgY29uc29sZS5ncm91cENvbGxhcHNlZCh0aXRsZSwgc3VidGl0bGUpXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5ncm91cCh0aXRsZSwgc3VidGl0bGUpXG4gIH1cbiAgZm9yIChjb25zdCB0aXAgb2YgY29udGVudCkge1xuICAgIGNvbnN0IHsgdHlwZSwgYm9keSB9ID0gdGlwXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdpbmZvJzpcbiAgICAgICAgY29uc29sZS5sb2coYm9keSlcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ3dhcm4nOlxuICAgICAgICBjb25zb2xlLndhcm4oYm9keSlcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgY29uc29sZS5lcnJvcihib2R5KVxuICAgICAgICBicmVha1xuICAgIH1cbiAgfVxuICBpZiAocHJpbnRUcmFjZSkge1xuICAgIGNvbnNvbGUudHJhY2UoJ3N0YWNrIHRyYWNlOicpXG4gIH1cbiAgY29uc29sZS5ncm91cEVuZCgpXG59XG5cbmV4cG9ydCBjb25zdCBzbGVlcCA9IChtcyA9IDApID0+IG5ldyBQcm9taXNlKHIgPT4gc2V0VGltZW91dChyLCBtcykpXG5cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1QaG9uZShwaG9uZU51bWJlcjogc3RyaW5nKSB7XG4gIHJldHVybiBgKzg2JHtwaG9uZU51bWJlcn1gXG59XG5cbiJdfQ==
package/package.json CHANGED
@@ -1,14 +1,12 @@
1
1
  {
2
2
  "name": "@cloudbase/utilities",
3
- "version": "2.5.7-beta.0",
3
+ "version": "2.5.20-beta.0",
4
4
  "description": "cloudbase javascript sdk utilities",
5
- "main": "dist/index.js",
5
+ "main": "dist/cjs/index.js",
6
+ "module": "dist/esm/index.js",
6
7
  "types": "dist/index.d.ts",
7
- "files": [
8
- "dist/**"
9
- ],
10
8
  "scripts": {
11
- "tsc": "rm -rf dist/ && tsc -p tsconfig.json",
9
+ "tsc": "rm -rf dist/ && tsc -p tsconfig.json && tsc -p tsconfig.esm.json",
12
10
  "lint": "eslint --fix \"./src/**/*.ts\"",
13
11
  "build": "npm run lint&& npm run tsc",
14
12
  "precommit": "lint-staged"
@@ -24,17 +22,9 @@
24
22
  ],
25
23
  "author": "",
26
24
  "license": "Apache-2.0",
27
- "devDependencies": {
28
- "@tencent/eslint-config-tencent": "^1.0.4",
29
- "@types/node": "^13.13.2",
30
- "@typescript-eslint/eslint-plugin": "^5.40.0",
31
- "@typescript-eslint/parser": "^5.40.0",
32
- "eslint": "^6.8.0",
33
- "lint-staged": "^13.0.3"
34
- },
35
25
  "dependencies": {
36
26
  "@cloudbase/adapter-interface": "^0.4.0",
37
- "@cloudbase/types": "^2.5.7-beta.0",
27
+ "@cloudbase/types": "^2.5.20-beta.0",
38
28
  "crypto-js": "3",
39
29
  "jwt-decode": "^3.1.2"
40
30
  },
@@ -43,5 +33,5 @@
43
33
  "eslint --fix"
44
34
  ]
45
35
  },
46
- "gitHead": "ad1df65a3d130460e12a7550671f610bf2a40fef"
36
+ "gitHead": "44cfc8c71c4f51a70ce7afeb42c9d904bba7a869"
47
37
  }
@@ -0,0 +1,28 @@
1
+ import { CloudbaseAdapter } from '@cloudbase/adapter-interface'
2
+ import * as Web from './platforms/web'
3
+ import { isArray } from '../libs/util'
4
+
5
+ export enum RUNTIME {
6
+ WEB = 'web',
7
+ WX_MP = 'wx_mp' // 微信小程序
8
+ }
9
+
10
+ export function useAdapters(adapters: CloudbaseAdapter|CloudbaseAdapter[]) {
11
+ const adapterList: CloudbaseAdapter[] = isArray(adapters) ? adapters as CloudbaseAdapter[] : [adapters as CloudbaseAdapter]
12
+ for (const adapter of adapterList) {
13
+ const { isMatch, genAdapter, runtime } = adapter
14
+ if (isMatch()) {
15
+ return {
16
+ adapter: genAdapter(),
17
+ runtime,
18
+ }
19
+ }
20
+ }
21
+ }
22
+
23
+ export function useDefaultAdapter() {
24
+ return {
25
+ adapter: Web.genAdapter(),
26
+ runtime: RUNTIME.WEB,
27
+ }
28
+ }
@@ -0,0 +1,182 @@
1
+ import {
2
+ SDKAdapterInterface,
3
+ AbstractSDKRequest,
4
+ IRequestOptions,
5
+ ResponseObject,
6
+ IUploadRequestOptions,
7
+ IRequestConfig,
8
+ IRequestMethod,
9
+ } from '@cloudbase/adapter-interface'
10
+ import { isFormData, formatUrl, toQueryString } from '../../libs/util'
11
+ import { getProtocol } from '../../constants/common'
12
+
13
+ /**
14
+ * @class WebRequest
15
+ */
16
+ class WebRequest extends AbstractSDKRequest {
17
+ // 默认不限超时
18
+ private readonly timeout: number;
19
+ // 超时提示文案
20
+ private readonly timeoutMsg: string;
21
+ // 超时受限请求类型,默认所有请求均受限
22
+ private readonly restrictedMethods: Array<IRequestMethod>;
23
+ constructor(config: IRequestConfig) {
24
+ super()
25
+ const { timeout, timeoutMsg, restrictedMethods } = config
26
+ this.timeout = timeout || 0
27
+ this.timeoutMsg = timeoutMsg || '请求超时'
28
+ this.restrictedMethods = restrictedMethods || ['get', 'post', 'upload', 'download']
29
+ }
30
+ public get(options: IRequestOptions): Promise<ResponseObject> {
31
+ return this.request({
32
+ ...options,
33
+ method: 'get',
34
+ }, this.restrictedMethods.includes('get'))
35
+ }
36
+ public post(options: IRequestOptions): Promise<ResponseObject> {
37
+ return this.request({
38
+ ...options,
39
+ method: 'post',
40
+ }, this.restrictedMethods.includes('post'))
41
+ }
42
+ public put(options: IRequestOptions): Promise<ResponseObject> {
43
+ return this.request({
44
+ ...options,
45
+ method: 'put',
46
+ })
47
+ }
48
+ public upload(options: IUploadRequestOptions): Promise<ResponseObject> {
49
+ const { data, file, name, method, headers = {} } = options
50
+ const reqMethod = { post: 'post', put: 'put' }[method?.toLowerCase()] || 'put'
51
+ // 上传方式为post时,需转换为FormData
52
+ const formData = new FormData()
53
+ if (reqMethod === 'post') {
54
+ Object.keys(data).forEach((key) => {
55
+ formData.append(key, data[key])
56
+ })
57
+ formData.append('key', name)
58
+ formData.append('file', file)
59
+ return this.request({
60
+ ...options,
61
+ data: formData,
62
+ method: reqMethod,
63
+ }, this.restrictedMethods.includes('upload'))
64
+ }
65
+ return this.request({
66
+ ...options,
67
+ method: 'put',
68
+ headers,
69
+ body: file,
70
+ }, this.restrictedMethods.includes('upload'))
71
+ }
72
+ public async download(options: IRequestOptions): Promise<any> {
73
+ try {
74
+ const { data } = await this.get({
75
+ ...options,
76
+ headers: {}, // 下载资源请求不经过service,header清空
77
+ responseType: 'blob',
78
+ })
79
+ const url = window.URL.createObjectURL(new Blob([data]))
80
+ const fileName = decodeURIComponent(new URL(options.url).pathname.split('/').pop() || '')
81
+ const link = document.createElement('a')
82
+
83
+ link.href = url
84
+ link.setAttribute('download', fileName)
85
+ link.style.display = 'none'
86
+
87
+ document.body.appendChild(link)
88
+ link.click()
89
+ // 回收内存
90
+ window.URL.revokeObjectURL(url)
91
+ document.body.removeChild(link)
92
+ } catch (e) { }
93
+ return new Promise((resolve) => {
94
+ resolve({
95
+ statusCode: 200,
96
+ tempFilePath: options.url,
97
+ })
98
+ })
99
+ }
100
+ /**
101
+ * @param {IRequestOptions} options
102
+ * @param {boolean} enableAbort 是否超时中断请求
103
+ */
104
+ protected request(options: IRequestOptions, enableAbort = false): Promise<ResponseObject> {
105
+ const method = (String(options.method)).toLowerCase() || 'get'
106
+ return new Promise((resolve) => {
107
+ const { url, headers = {}, data, responseType, withCredentials, body, onUploadProgress } = options
108
+ const realUrl = formatUrl(getProtocol(), url, method === 'get' ? data : {})
109
+ const ajax = new XMLHttpRequest()
110
+ ajax.open(method, realUrl)
111
+ responseType && (ajax.responseType = responseType)
112
+ Object.keys(headers).forEach((key) => {
113
+ ajax.setRequestHeader(key, headers[key])
114
+ })
115
+ let timer
116
+ if (onUploadProgress) {
117
+ ajax.upload.addEventListener('progress', onUploadProgress)
118
+ }
119
+ ajax.onreadystatechange = () => {
120
+ const result: ResponseObject = {}
121
+ if (ajax.readyState === 4) {
122
+ const headers = ajax.getAllResponseHeaders()
123
+ const arr = headers.trim().split(/[\r\n]+/)
124
+ // Create a map of header names to values
125
+ const headerMap = {}
126
+ arr.forEach((line) => {
127
+ const parts = line.split(': ')
128
+ const header = parts.shift().toLowerCase()
129
+ const value = parts.join(': ')
130
+ headerMap[header] = value
131
+ })
132
+ result.header = headerMap
133
+ result.statusCode = ajax.status
134
+ try {
135
+ // 上传post请求返回数据格式为xml,此处容错
136
+ result.data = responseType === 'blob' ? ajax.response : JSON.parse(ajax.responseText)
137
+ } catch (e) {
138
+ result.data = responseType === 'blob' ? ajax.response : ajax.responseText
139
+ }
140
+ clearTimeout(timer)
141
+ resolve(result)
142
+ }
143
+ }
144
+ if (enableAbort && this.timeout) {
145
+ timer = setTimeout(() => {
146
+ console.warn(this.timeoutMsg)
147
+ ajax.abort()
148
+ }, this.timeout)
149
+ }
150
+ // 处理 payload
151
+ let payload
152
+ if (isFormData(data)) {
153
+ // FormData,不处理
154
+ payload = data
155
+ } else if (headers['content-type'] === 'application/x-www-form-urlencoded') {
156
+ payload = toQueryString(data)
157
+ } else if (body) {
158
+ payload = body
159
+ } else {
160
+ // 其它情况
161
+ payload = data ? JSON.stringify(data) : undefined
162
+ }
163
+
164
+ if (withCredentials) {
165
+ ajax.withCredentials = true
166
+ }
167
+ ajax.send(payload)
168
+ })
169
+ }
170
+ }
171
+
172
+ function genAdapter() {
173
+ const adapter: SDKAdapterInterface = {
174
+ root: window,
175
+ reqClass: WebRequest,
176
+ wsClass: WebSocket,
177
+ localStorage,
178
+ }
179
+ return adapter
180
+ }
181
+
182
+ export { genAdapter, WebRequest }
@@ -0,0 +1,21 @@
1
+ let sdkName = '@cloudbase/js-sdk'
2
+ export function setSdkName(name: string) {
3
+ sdkName = name
4
+ }
5
+ export function getSdkName() {
6
+ return sdkName
7
+ }
8
+
9
+ let PROTOCOL = 'https:'
10
+
11
+ export function setProtocol(protocol: 'http' | 'https') {
12
+ PROTOCOL = protocol
13
+ }
14
+
15
+ export function getProtocol() {
16
+ return PROTOCOL
17
+ }
18
+ // 是否为开发模式
19
+ export const IS_DEBUG_MODE = process.env.NODE_ENV === 'development'
20
+ // 问答社区链接
21
+ export const COMMUNITY_SITE_URL = 'https://support.qq.com/products/148793'
@@ -0,0 +1,8 @@
1
+ export const ERRORS = {
2
+ INVALID_PARAMS: 'INVALID_PARAMS',
3
+ INVALID_SYNTAX: 'INVALID_SYNTAX',
4
+ INVALID_OPERATION: 'INVALID_OPERATION',
5
+ OPERATION_FAIL: 'OPERATION_FAIL',
6
+ NETWORK_ERROR: 'NETWORK_ERROR',
7
+ UNKOWN_ERROR: 'UNKOWN_ERROR',
8
+ }
@@ -0,0 +1,4 @@
1
+ export * from './common'
2
+ export * from './errors'
3
+
4
+ export const OATUH_LOGINTYPE = 'constants'