@cloudbase/utilities 2.5.7-beta.0 → 2.5.18-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,216 @@
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 { KV } from '@cloudbase/types'
5
+ import { getSdkName } from '../constants'
6
+
7
+ export function isArray(val: any): boolean {
8
+ return Object.prototype.toString.call(val) === '[object Array]'
9
+ }
10
+ export function isString(val: any): boolean {
11
+ return typeof val === 'string'
12
+ }
13
+ export function isUndefined(val: any): boolean {
14
+ return typeof val === 'undefined'
15
+ }
16
+ export function isPalinObject(val: any): boolean {
17
+ return Object.prototype.toString.call(val) === '[object Object]'
18
+ }
19
+ export function isNull(val: any): boolean {
20
+ return Object.prototype.toString.call(val) === '[object Null]'
21
+ }
22
+ export function isInstanceOf(instance: any, construct: any): boolean {
23
+ return instance instanceof construct
24
+ }
25
+ export function isFormData(val: any): boolean {
26
+ return Object.prototype.toString.call(val) === '[object FormData]'
27
+ }
28
+ export function genSeqId(): string {
29
+ return Math.random().toString(16)
30
+ .slice(2)
31
+ }
32
+ export function formatUrl(PROTOCOL: string, url: string, query: KV<any> = {}): string {
33
+ const urlHasQuery = /\?/.test(url)
34
+ let queryString = ''
35
+ Object.keys(query).forEach((key) => {
36
+ if (queryString === '') {
37
+ !urlHasQuery && (url += '?')
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
+
50
+ function base64url(source: KV<any>): string {
51
+ let encodedSource = base64.stringify(source)
52
+
53
+ encodedSource = encodedSource.replace(/=+$/, '')
54
+ encodedSource = encodedSource.replace(/\+/g, '-')
55
+ encodedSource = encodedSource.replace(/\//g, '_')
56
+
57
+ return encodedSource
58
+ }
59
+
60
+ export function createSign(payload: KV<any>, secret: string): string {
61
+ const header = {
62
+ alg: 'HS256',
63
+ typ: 'JWT',
64
+ }
65
+ const headerStr = base64url(utf8.parse(JSON.stringify(header)))
66
+ const payloadStr = base64url(utf8.parse(JSON.stringify(payload)))
67
+
68
+ const token = `${headerStr}.${payloadStr}`
69
+ const sign = base64url(hs256(token, secret))
70
+ return `${token}.${sign}`
71
+ }
72
+ export function toQueryString(query: KV<any> = {}) {
73
+ const queryString = []
74
+ Object.keys(query).forEach((key) => {
75
+ queryString.push(`${key}=${encodeURIComponent(query[key])}`)
76
+ })
77
+ return queryString.join('&')
78
+ }
79
+
80
+ export function getQuery(name: string, url?: string) {
81
+ if (typeof window === 'undefined') {
82
+ return false
83
+ }
84
+ // 参数:变量名,url为空则表从当前页面的url中取
85
+ const u = url || window.location.search
86
+ const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`)
87
+ const r = u.substr(u.indexOf('?') + 1).match(reg)
88
+ return (r !== null && r !== undefined) ? r[2] : ''
89
+ }
90
+
91
+ export const getHash = function (name: string) {
92
+ if (typeof window === 'undefined') {
93
+ return ''
94
+ }
95
+ const matches = window.location.hash.match(new RegExp(`[#?&/]${name}=([^&#]*)`))
96
+ return matches ? matches[1] : ''
97
+ }
98
+
99
+ export function removeParam(key: string, sourceURL: string) {
100
+ let rtn = sourceURL.split('?')[0]
101
+ let param
102
+ let params = []
103
+ const queryString = sourceURL.indexOf('?') !== -1 ? sourceURL.split('?')[1] : ''
104
+ if (queryString !== '') {
105
+ params = queryString.split('&')
106
+ for (let i = params.length - 1; i >= 0; i -= 1) {
107
+ /* eslint-disable-next-line */
108
+ param = params[i].split('=')[0]
109
+ if (param === key) {
110
+ params.splice(i, 1)
111
+ }
112
+ }
113
+ rtn = `${rtn}?${params.join('&')}`
114
+ }
115
+ return rtn
116
+ }
117
+
118
+ export function createPromiseCallback() {
119
+ let cb: any
120
+ if (!Promise) {
121
+ cb = () => { }
122
+ cb.promise = {}
123
+
124
+ const throwPromiseNotDefined = () => {
125
+ throw new Error('Your Node runtime does support ES6 Promises. '
126
+ + 'Set "global.Promise" to your preferred implementation of promises.')
127
+ }
128
+
129
+ Object.defineProperty(cb.promise, 'then', { get: throwPromiseNotDefined })
130
+ Object.defineProperty(cb.promise, 'catch', { get: throwPromiseNotDefined })
131
+ return cb
132
+ }
133
+
134
+ const promise = new Promise((resolve, reject) => {
135
+ cb = (err, data) => {
136
+ if (err) return reject(err)
137
+ return resolve(data)
138
+ }
139
+ })
140
+ cb.promise = promise
141
+ return cb
142
+ }
143
+
144
+ export function execCallback(fn: Function | null | undefined, err: any, data = null) {
145
+ if (fn && typeof fn === 'function') {
146
+ return fn(err, data)
147
+ }
148
+ if (err) {
149
+ throw err
150
+ }
151
+ return data
152
+ }
153
+
154
+ export function printWarn(error: string, msg: string) {
155
+ console.warn(`[${getSdkName()}][${error}]:${msg}`)
156
+ }
157
+
158
+ export function printError(error: string, msg: string) {
159
+ console.error({
160
+ code: error,
161
+ msg: `[${getSdkName()}][${error}]:${msg}`,
162
+ })
163
+ }
164
+ export function printInfo(error: string, msg: string) {
165
+ console.log(`[${getSdkName()}][${error}]:${msg}`)
166
+ }
167
+ export function throwError(error: string, msg: string) {
168
+ throw new Error(JSON.stringify({
169
+ code: error,
170
+ msg: `[${getSdkName()}][${error}]:${msg}`,
171
+ }))
172
+ }
173
+
174
+ interface IPrintGroupLogOptions {
175
+ title: string;
176
+ subtitle: string | object;
177
+ content: {
178
+ type: 'info' | 'warn' | 'error',
179
+ body: string | Error;
180
+ }[];
181
+ printTrace?: boolean;
182
+ collapsed?: boolean;
183
+ }
184
+ export function printGroupLog(options: IPrintGroupLogOptions) {
185
+ const { title, subtitle = '', content = [], printTrace = false, collapsed = false } = options
186
+ if (collapsed) {
187
+ console.groupCollapsed(title, subtitle)
188
+ } else {
189
+ console.group(title, subtitle)
190
+ }
191
+ for (const tip of content) {
192
+ const { type, body } = tip
193
+ switch (type) {
194
+ case 'info':
195
+ console.log(body)
196
+ break
197
+ case 'warn':
198
+ console.warn(body)
199
+ break
200
+ case 'error':
201
+ console.error(body)
202
+ break
203
+ }
204
+ }
205
+ if (printTrace) {
206
+ console.trace('stack trace:')
207
+ }
208
+ console.groupEnd()
209
+ }
210
+
211
+ export const sleep = (ms = 0) => new Promise(r => setTimeout(r, ms))
212
+
213
+ export function transformPhone(phoneNumber: string) {
214
+ return `+86${phoneNumber}`
215
+ }
216
+
@@ -0,0 +1,16 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "module": "es6",
5
+ "outDir": "dist/esm",
6
+ "rootDir": "src",
7
+ },
8
+ "include": [
9
+ "src/**/*.ts",
10
+ "package.json"
11
+ ],
12
+ "exclude": [
13
+ "node_modules",
14
+ "dist"
15
+ ]
16
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "extends": "../../tsconfig.base.json",
3
+ "compilerOptions": {
4
+ "module": "commonjs",
5
+ "outDir": "dist/cjs",
6
+ "rootDir": "src",
7
+ "noImplicitAny": false,
8
+ "typeRoots": [
9
+ "node_modules/@types"
10
+ ],
11
+ "types": ["node"],
12
+ },
13
+ "include": [
14
+ "src/**/*.ts",
15
+ "package.json"
16
+ ],
17
+ "exclude": [
18
+ "node_modules",
19
+ "dist"
20
+ ]
21
+ }
@@ -1,213 +0,0 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- extendStatics(d, b);
11
- function __() { this.constructor = d; }
12
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
- };
14
- })();
15
- var __assign = (this && this.__assign) || function () {
16
- __assign = Object.assign || function(t) {
17
- for (var s, i = 1, n = arguments.length; i < n; i++) {
18
- s = arguments[i];
19
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
20
- t[p] = s[p];
21
- }
22
- return t;
23
- };
24
- return __assign.apply(this, arguments);
25
- };
26
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
27
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
28
- return new (P || (P = Promise))(function (resolve, reject) {
29
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
30
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
31
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
32
- step((generator = generator.apply(thisArg, _arguments || [])).next());
33
- });
34
- };
35
- var __generator = (this && this.__generator) || function (thisArg, body) {
36
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
37
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
38
- function verb(n) { return function (v) { return step([n, v]); }; }
39
- function step(op) {
40
- if (f) throw new TypeError("Generator is already executing.");
41
- while (_) try {
42
- 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;
43
- if (y = 0, t) op = [op[0] & 2, t.value];
44
- switch (op[0]) {
45
- case 0: case 1: t = op; break;
46
- case 4: _.label++; return { value: op[1], done: false };
47
- case 5: _.label++; y = op[1]; op = [0]; continue;
48
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
49
- default:
50
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
51
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
52
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
53
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
54
- if (t[2]) _.ops.pop();
55
- _.trys.pop(); continue;
56
- }
57
- op = body.call(thisArg, _);
58
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
59
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
60
- }
61
- };
62
- Object.defineProperty(exports, "__esModule", { value: true });
63
- exports.WebRequest = exports.genAdapter = void 0;
64
- var adapter_interface_1 = require("@cloudbase/adapter-interface");
65
- var util_1 = require("../../libs/util");
66
- var common_1 = require("../../constants/common");
67
- var WebRequest = (function (_super) {
68
- __extends(WebRequest, _super);
69
- function WebRequest(config) {
70
- var _this = _super.call(this) || this;
71
- var timeout = config.timeout, timeoutMsg = config.timeoutMsg, restrictedMethods = config.restrictedMethods;
72
- _this.timeout = timeout || 0;
73
- _this.timeoutMsg = timeoutMsg || '请求超时';
74
- _this.restrictedMethods = restrictedMethods || ['get', 'post', 'upload', 'download'];
75
- return _this;
76
- }
77
- WebRequest.prototype.get = function (options) {
78
- return this.request(__assign(__assign({}, options), { method: 'get' }), this.restrictedMethods.includes('get'));
79
- };
80
- WebRequest.prototype.post = function (options) {
81
- return this.request(__assign(__assign({}, options), { method: 'post' }), this.restrictedMethods.includes('post'));
82
- };
83
- WebRequest.prototype.put = function (options) {
84
- return this.request(__assign(__assign({}, options), { method: 'put' }));
85
- };
86
- WebRequest.prototype.upload = function (options) {
87
- var data = options.data, file = options.file, name = options.name, method = options.method, _a = options.headers, headers = _a === void 0 ? {} : _a;
88
- var reqMethod = { post: 'post', put: 'put' }[method === null || method === void 0 ? void 0 : method.toLowerCase()] || 'put';
89
- var formData = new FormData();
90
- if (reqMethod === 'post') {
91
- Object.keys(data).forEach(function (key) {
92
- formData.append(key, data[key]);
93
- });
94
- formData.append('key', name);
95
- formData.append('file', file);
96
- return this.request(__assign(__assign({}, options), { data: formData, method: reqMethod }), this.restrictedMethods.includes('upload'));
97
- }
98
- return this.request(__assign(__assign({}, options), { method: 'put', headers: headers, body: file }), this.restrictedMethods.includes('upload'));
99
- };
100
- WebRequest.prototype.download = function (options) {
101
- return __awaiter(this, void 0, void 0, function () {
102
- var data, url, fileName, link, e_1;
103
- return __generator(this, function (_a) {
104
- switch (_a.label) {
105
- case 0:
106
- _a.trys.push([0, 2, , 3]);
107
- return [4, this.get(__assign(__assign({}, options), { headers: {}, responseType: 'blob' }))];
108
- case 1:
109
- data = (_a.sent()).data;
110
- url = window.URL.createObjectURL(new Blob([data]));
111
- fileName = decodeURIComponent(new URL(options.url).pathname.split('/').pop() || '');
112
- link = document.createElement('a');
113
- link.href = url;
114
- link.setAttribute('download', fileName);
115
- link.style.display = 'none';
116
- document.body.appendChild(link);
117
- link.click();
118
- window.URL.revokeObjectURL(url);
119
- document.body.removeChild(link);
120
- return [3, 3];
121
- case 2:
122
- e_1 = _a.sent();
123
- return [3, 3];
124
- case 3: return [2, new Promise(function (resolve) {
125
- resolve({
126
- statusCode: 200,
127
- tempFilePath: options.url,
128
- });
129
- })];
130
- }
131
- });
132
- });
133
- };
134
- WebRequest.prototype.request = function (options, enableAbort) {
135
- var _this = this;
136
- if (enableAbort === void 0) { enableAbort = false; }
137
- var method = (String(options.method)).toLowerCase() || 'get';
138
- return new Promise(function (resolve) {
139
- var url = options.url, _a = options.headers, headers = _a === void 0 ? {} : _a, data = options.data, responseType = options.responseType, withCredentials = options.withCredentials, body = options.body, onUploadProgress = options.onUploadProgress;
140
- var realUrl = util_1.formatUrl(common_1.getProtocol(), url, method === 'get' ? data : {});
141
- var ajax = new XMLHttpRequest();
142
- ajax.open(method, realUrl);
143
- responseType && (ajax.responseType = responseType);
144
- Object.keys(headers).forEach(function (key) {
145
- ajax.setRequestHeader(key, headers[key]);
146
- });
147
- var timer;
148
- if (onUploadProgress) {
149
- ajax.upload.addEventListener('progress', onUploadProgress);
150
- }
151
- ajax.onreadystatechange = function () {
152
- var result = {};
153
- if (ajax.readyState === 4) {
154
- var headers_1 = ajax.getAllResponseHeaders();
155
- var arr = headers_1.trim().split(/[\r\n]+/);
156
- var headerMap_1 = {};
157
- arr.forEach(function (line) {
158
- var parts = line.split(': ');
159
- var header = parts.shift().toLowerCase();
160
- var value = parts.join(': ');
161
- headerMap_1[header] = value;
162
- });
163
- result.header = headerMap_1;
164
- result.statusCode = ajax.status;
165
- try {
166
- result.data = responseType === 'blob' ? ajax.response : JSON.parse(ajax.responseText);
167
- }
168
- catch (e) {
169
- result.data = responseType === 'blob' ? ajax.response : ajax.responseText;
170
- }
171
- clearTimeout(timer);
172
- resolve(result);
173
- }
174
- };
175
- if (enableAbort && _this.timeout) {
176
- timer = setTimeout(function () {
177
- console.warn(_this.timeoutMsg);
178
- ajax.abort();
179
- }, _this.timeout);
180
- }
181
- var payload;
182
- if (util_1.isFormData(data)) {
183
- payload = data;
184
- }
185
- else if (headers['content-type'] === 'application/x-www-form-urlencoded') {
186
- payload = util_1.toQueryString(data);
187
- }
188
- else if (body) {
189
- payload = body;
190
- }
191
- else {
192
- payload = data ? JSON.stringify(data) : undefined;
193
- }
194
- if (withCredentials) {
195
- ajax.withCredentials = true;
196
- }
197
- ajax.send(payload);
198
- });
199
- };
200
- return WebRequest;
201
- }(adapter_interface_1.AbstractSDKRequest));
202
- exports.WebRequest = WebRequest;
203
- function genAdapter() {
204
- var adapter = {
205
- root: window,
206
- reqClass: WebRequest,
207
- wsClass: WebSocket,
208
- localStorage: localStorage,
209
- };
210
- return adapter;
211
- }
212
- exports.genAdapter = genAdapter;
213
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL3BsYXRmb3Jtcy93ZWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0VBUXFDO0FBQ3JDLHdDQUFzRTtBQUN0RSxpREFBb0Q7QUFLcEQ7SUFBeUIsOEJBQWtCO0lBT3pDLG9CQUFZLE1BQXNCO1FBQWxDLFlBQ0UsaUJBQU8sU0FLUjtRQUpTLElBQUEsT0FBTyxHQUFvQyxNQUFNLFFBQTFDLEVBQUUsVUFBVSxHQUF3QixNQUFNLFdBQTlCLEVBQUUsaUJBQWlCLEdBQUssTUFBTSxrQkFBWCxDQUFXO1FBQ3pELEtBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQTtRQUMzQixLQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsSUFBSSxNQUFNLENBQUE7UUFDdEMsS0FBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUE7O0lBQ3JGLENBQUM7SUFDTSx3QkFBRyxHQUFWLFVBQVcsT0FBd0I7UUFDakMsT0FBTyxJQUFJLENBQUMsT0FBTyx1QkFDZCxPQUFPLEtBQ1YsTUFBTSxFQUFFLEtBQUssS0FDWixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7SUFDNUMsQ0FBQztJQUNNLHlCQUFJLEdBQVgsVUFBWSxPQUF3QjtRQUNsQyxPQUFPLElBQUksQ0FBQyxPQUFPLHVCQUNkLE9BQU8sS0FDVixNQUFNLEVBQUUsTUFBTSxLQUNiLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBQ00sd0JBQUcsR0FBVixVQUFXLE9BQXdCO1FB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SSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3BCLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUNILGlCQUFDO0FBQUQsQ0FBQyxBQTFKRCxDQUF5QixzQ0FBa0IsR0EwSjFDO0FBWW9CLGdDQUFVO0FBVi9CLFNBQVMsVUFBVTtJQUNqQixJQUFNLE9BQU8sR0FBd0I7UUFDbkMsSUFBSSxFQUFFLE1BQU07UUFDWixRQUFRLEVBQUUsVUFBVTtRQUNwQixPQUFPLEVBQUUsU0FBUztRQUNsQixZQUFZLGNBQUE7S0FDYixDQUFBO0lBQ0QsT0FBTyxPQUFPLENBQUE7QUFDaEIsQ0FBQztBQUVRLGdDQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU0RLQWRhcHRlckludGVyZmFjZSxcbiAgQWJzdHJhY3RTREtSZXF1ZXN0LFxuICBJUmVxdWVzdE9wdGlvbnMsXG4gIFJlc3BvbnNlT2JqZWN0LFxuICBJVXBsb2FkUmVxdWVzdE9wdGlvbnMsXG4gIElSZXF1ZXN0Q29uZmlnLFxuICBJUmVxdWVzdE1ldGhvZCxcbn0gZnJvbSAnQGNsb3VkYmFzZS9hZGFwdGVyLWludGVyZmFjZSdcbmltcG9ydCB7IGlzRm9ybURhdGEsIGZvcm1hdFVybCwgdG9RdWVyeVN0cmluZyB9IGZyb20gJy4uLy4uL2xpYnMvdXRpbCdcbmltcG9ydCB7IGdldFByb3RvY29sIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL2NvbW1vbidcblxuLyoqXG4gKiBAY2xhc3MgV2ViUmVxdWVzdFxuICovXG5jbGFzcyBXZWJSZXF1ZXN0IGV4dGVuZHMgQWJzdHJhY3RTREtSZXF1ZXN0IHtcbiAgLy8g6buY6K6k5LiN6ZmQ6LaF5pe2XG4gIHByaXZhdGUgcmVhZG9ubHkgdGltZW91dDogbnVtYmVyO1xuICAvLyDotoXml7bmj5DnpLrmlofmoYhcbiAgcHJpdmF0ZSByZWFkb25seSB0aW1lb3V0TXNnOiBzdHJpbmc7XG4gIC8vIOi2heaXtuWPl+mZkOivt+axguexu+Wei++8jOm7mOiupOaJgOacieivt+axguWdh+WPl+mZkFxuICBwcml2YXRlIHJlYWRvbmx5IHJlc3RyaWN0ZWRNZXRob2RzOiBBcnJheTxJUmVxdWVzdE1ldGhvZD47XG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogSVJlcXVlc3RDb25maWcpIHtcbiAgICBzdXBlcigpXG4gICAgY29uc3QgeyB0aW1lb3V0LCB0aW1lb3V0TXNnLCByZXN0cmljdGVkTWV0aG9kcyB9ID0gY29uZmlnXG4gICAgdGhpcy50aW1lb3V0ID0gdGltZW91dCB8fCAwXG4gICAgdGhpcy50aW1lb3V0TXNnID0gdGltZW91dE1zZyB8fCAn6K+35rGC6LaF5pe2J1xuICAgIHRoaXMucmVzdHJpY3RlZE1ldGhvZHMgPSByZXN0cmljdGVkTWV0aG9kcyB8fCBbJ2dldCcsICdwb3N0JywgJ3VwbG9hZCcsICdkb3dubG9hZCddXG4gIH1cbiAgcHVibGljIGdldChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICB9LCB0aGlzLnJlc3RyaWN0ZWRNZXRob2RzLmluY2x1ZGVzKCdnZXQnKSlcbiAgfVxuICBwdWJsaWMgcG9zdChvcHRpb25zOiBJUmVxdWVzdE9wdGlvbnMpOiBQcm9taXNlPFJlc3BvbnNlT2JqZWN0PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgfSwgdGhpcy5yZXN0cmljdGVkTWV0aG9kcy5pbmNsdWRlcygncG9zdCcpKVxuICB9XG4gIHB1YmxpYyBwdXQob3B0aW9uczogSVJlcXVlc3RPcHRpb25zKTogUHJvbWlzZTxSZXNwb25zZU9iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Qoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG1ldGhvZDogJ3B1dCcsXG4gICAgfSlcbiAgfVxuICBwdWJsaWMgdXBsb2FkKG9wdGlvbnM6IElVcGxvYWRSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+IHtcbiAgICBjb25zdCB7IGRhdGEsIGZpbGUsIG5hbWUsIG1ldGhvZCwgaGVhZGVycyA9IHt9IH0gPSBvcHRpb25zXG4gICAgY29uc3QgcmVxTWV0aG9kID0geyBwb3N0OiAncG9zdCcsIHB1dDogJ3B1dCcgfVttZXRob2Q/LnRvTG93ZXJDYXNlKCldIHx8ICdwdXQnXG4gICAgLy8g5LiK5Lyg5pa55byP5Li6cG9zdOaXtu+8jOmcgOi9rOaNouS4ukZvcm1EYXRhXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKVxuICAgIGlmIChyZXFNZXRob2QgPT09ICdwb3N0Jykge1xuICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIGRhdGFba2V5XSlcbiAgICAgIH0pXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2tleScsIG5hbWUpXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKVxuICAgICAgcmV0dXJuIHRoaXMucmVxdWVzdCh7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGRhdGE6IGZvcm1EYXRhLFxuICAgICAgICBtZXRob2Q6IHJlcU1ldGhvZCxcbiAgICAgIH0sIHRoaXMucmVzdHJpY3RlZE1ldGhvZHMuaW5jbHVkZXMoJ3VwbG9hZCcpKVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBtZXRob2Q6ICdwdXQnLFxuICAgICAgaGVhZGVycyxcbiAgICAgIGJvZHk6IGZpbGUsXG4gICAgfSwgdGhpcy5yZXN0cmljdGVkTWV0aG9kcy5pbmNsdWRlcygndXBsb2FkJykpXG4gIH1cbiAgcHVibGljIGFzeW5jIGRvd25sb2FkKG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucyk6IFByb21pc2U8YW55PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5nZXQoe1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBoZWFkZXJzOiB7fSwgLy8g5LiL6L296LWE5rqQ6K+35rGC5LiN57uP6L+Hc2VydmljZe+8jGhlYWRlcua4heepulxuICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgIH0pXG4gICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbZGF0YV0pKVxuICAgICAgY29uc3QgZmlsZU5hbWUgPSBkZWNvZGVVUklDb21wb25lbnQobmV3IFVSTChvcHRpb25zLnVybCkucGF0aG5hbWUuc3BsaXQoJy8nKS5wb3AoKSB8fCAnJylcbiAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJylcblxuICAgICAgbGluay5ocmVmID0gdXJsXG4gICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSlcbiAgICAgIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJ1xuXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspXG4gICAgICBsaW5rLmNsaWNrKClcbiAgICAgIC8vIOWbnuaUtuWGheWtmFxuICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKVxuICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKVxuICAgIH0gY2F0Y2ggKGUpIHsgfVxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgcmVzb2x2ZSh7XG4gICAgICAgIHN0YXR1c0NvZGU6IDIwMCxcbiAgICAgICAgdGVtcEZpbGVQYXRoOiBvcHRpb25zLnVybCxcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuICAvKipcbiAgICogQHBhcmFtIHtJUmVxdWVzdE9wdGlvbnN9IG9wdGlvbnNcbiAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVBYm9ydCDmmK/lkKbotoXml7bkuK3mlq3or7fmsYJcbiAgICovXG4gIHByb3RlY3RlZCByZXF1ZXN0KG9wdGlvbnM6IElSZXF1ZXN0T3B0aW9ucywgZW5hYmxlQWJvcnQgPSBmYWxzZSk6IFByb21pc2U8UmVzcG9uc2VPYmplY3Q+IHtcbiAgICBjb25zdCBtZXRob2QgPSAoU3RyaW5nKG9wdGlvbnMubWV0aG9kKSkudG9Mb3dlckNhc2UoKSB8fCAnZ2V0J1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3QgeyB1cmwsIGhlYWRlcnMgPSB7fSwgZGF0YSwgcmVzcG9uc2VUeXBlLCB3aXRoQ3JlZGVudGlhbHMsIGJvZHksIG9uVXBsb2FkUHJvZ3Jlc3MgfSA9IG9wdGlvbnNcbiAgICAgIGNvbnN0IHJlYWxVcmwgPSBmb3JtYXRVcmwoZ2V0UHJvdG9jb2woKSwgdXJsLCBtZXRob2QgPT09ICdnZXQnID8gZGF0YSA6IHt9KVxuICAgICAgY29uc3QgYWpheCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpXG4gICAgICBhamF4Lm9wZW4obWV0aG9kLCByZWFsVXJsKVxuICAgICAgcmVzcG9uc2VUeXBlICYmIChhamF4LnJlc3BvbnNlVHlwZSA9IHJlc3BvbnNlVHlwZSlcbiAgICAgIE9iamVjdC5rZXlzKGhlYWRlcnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBhamF4LnNldFJlcXVlc3RIZWFkZXIoa2V5LCBoZWFkZXJzW2tleV0pXG4gICAgICB9KVxuICAgICAgbGV0IHRpbWVyXG4gICAgICBpZiAob25VcGxvYWRQcm9ncmVzcykge1xuICAgICAgICBhamF4LnVwbG9hZC5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIG9uVXBsb2FkUHJvZ3Jlc3MpXG4gICAgICB9XG4gICAgICBhamF4Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBSZXNwb25zZU9iamVjdCA9IHt9XG4gICAgICAgIGlmIChhamF4LnJlYWR5U3RhdGUgPT09IDQpIHtcbiAgICAgICAgICBjb25zdCBoZWFkZXJzID0gYWpheC5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKVxuICAgICAgICAgIGNvbnN0IGFyciA9IGhlYWRlcnMudHJpbSgpLnNwbGl0KC9bXFxyXFxuXSsvKVxuICAgICAgICAgIC8vIENyZWF0ZSBhIG1hcCBvZiBoZWFkZXIgbmFtZXMgdG8gdmFsdWVzXG4gICAgICAgICAgY29uc3QgaGVhZGVyTWFwID0ge31cbiAgICAgICAgICBhcnIuZm9yRWFjaCgobGluZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBsaW5lLnNwbGl0KCc6ICcpXG4gICAgICAgICAgICBjb25zdCBoZWFkZXIgPSBwYXJ0cy5zaGlmdCgpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFydHMuam9pbignOiAnKVxuICAgICAgICAgICAgaGVhZGVyTWFwW2hlYWRlcl0gPSB2YWx1ZVxuICAgICAgICAgIH0pXG4gICAgICAgICAgcmVzdWx0LmhlYWRlciA9IGhlYWRlck1hcFxuICAgICAgICAgIHJlc3VsdC5zdGF0dXNDb2RlID0gYWpheC5zdGF0dXNcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8g5LiK5LygcG9zdOivt+axgui/lOWbnuaVsOaNruagvOW8j+S4unhtbO+8jOatpOWkhOWuuemUmVxuICAgICAgICAgICAgcmVzdWx0LmRhdGEgPSByZXNwb25zZVR5cGUgPT09ICdibG9iJyA/IGFqYXgucmVzcG9uc2UgOiBKU09OLnBhcnNlKGFqYXgucmVzcG9uc2VUZXh0KVxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJlc3VsdC5kYXRhID0gcmVzcG9uc2VUeXBlID09PSAnYmxvYicgPyBhamF4LnJlc3BvbnNlIDogYWpheC5yZXNwb25zZVRleHRcbiAgICAgICAgICB9XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVyKVxuICAgICAgICAgIHJlc29sdmUocmVzdWx0KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZW5hYmxlQWJvcnQgJiYgdGhpcy50aW1lb3V0KSB7XG4gICAgICAgIHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc29sZS53YXJuKHRoaXMudGltZW91dE1zZylcbiAgICAgICAgICBhamF4LmFib3J0KClcbiAgICAgICAgfSwgdGhpcy50aW1lb3V0KVxuICAgICAgfVxuICAgICAgLy8g5aSE55CGIHBheWxvYWRcbiAgICAgIGxldCBwYXlsb2FkXG4gICAgICBpZiAoaXNGb3JtRGF0YShkYXRhKSkge1xuICAgICAgICAvLyBGb3JtRGF0Ye+8jOS4jeWkhOeQhlxuICAgICAgICBwYXlsb2FkID0gZGF0YVxuICAgICAgfSBlbHNlIGlmIChoZWFkZXJzWydjb250ZW50LXR5cGUnXSA9PT0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpIHtcbiAgICAgICAgcGF5bG9hZCA9IHRvUXVlcnlTdHJpbmcoZGF0YSlcbiAgICAgIH0gZWxzZSBpZiAoYm9keSkge1xuICAgICAgICBwYXlsb2FkID0gYm9keVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8g5YW25a6D5oOF5Ya1XG4gICAgICAgIHBheWxvYWQgPSBkYXRhID8gSlNPTi5zdHJpbmdpZnkoZGF0YSkgOiB1bmRlZmluZWRcbiAgICAgIH1cblxuICAgICAgaWYgKHdpdGhDcmVkZW50aWFscykge1xuICAgICAgICBhamF4LndpdGhDcmVkZW50aWFscyA9IHRydWVcbiAgICAgIH1cbiAgICAgIGFqYXguc2VuZChwYXlsb2FkKVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2VuQWRhcHRlcigpIHtcbiAgY29uc3QgYWRhcHRlcjogU0RLQWRhcHRlckludGVyZmFjZSA9IHtcbiAgICByb290OiB3aW5kb3csXG4gICAgcmVxQ2xhc3M6IFdlYlJlcXVlc3QsXG4gICAgd3NDbGFzczogV2ViU29ja2V0LFxuICAgIGxvY2FsU3RvcmFnZSxcbiAgfVxuICByZXR1cm4gYWRhcHRlclxufVxuXG5leHBvcnQgeyBnZW5BZGFwdGVyLCBXZWJSZXF1ZXN0IH1cbiJdfQ==
@@ -1,24 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.COMMUNITY_SITE_URL = exports.IS_DEBUG_MODE = exports.getProtocol = exports.setProtocol = exports.getSdkName = exports.setSdkName = void 0;
4
- var sdkName = '@cloudbase/js-sdk';
5
- function setSdkName(name) {
6
- sdkName = name;
7
- }
8
- exports.setSdkName = setSdkName;
9
- function getSdkName() {
10
- return sdkName;
11
- }
12
- exports.getSdkName = getSdkName;
13
- var PROTOCOL = 'https:';
14
- function setProtocol(protocol) {
15
- PROTOCOL = protocol;
16
- }
17
- exports.setProtocol = setProtocol;
18
- function getProtocol() {
19
- return PROTOCOL;
20
- }
21
- exports.getProtocol = getProtocol;
22
- exports.IS_DEBUG_MODE = process.env.NODE_ENV === 'development';
23
- exports.COMMUNITY_SITE_URL = 'https://support.qq.com/products/148793';
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBSSxPQUFPLEdBQUcsbUJBQW1CLENBQUE7QUFDakMsU0FBZ0IsVUFBVSxDQUFDLElBQVk7SUFDckMsT0FBTyxHQUFHLElBQUksQ0FBQTtBQUNoQixDQUFDO0FBRkQsZ0NBRUM7QUFDRCxTQUFnQixVQUFVO0lBQ3hCLE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUM7QUFGRCxnQ0FFQztBQUVELElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQTtBQUV2QixTQUFnQixXQUFXLENBQUMsUUFBMEI7SUFDcEQsUUFBUSxHQUFHLFFBQVEsQ0FBQTtBQUNyQixDQUFDO0FBRkQsa0NBRUM7QUFFRCxTQUFnQixXQUFXO0lBQ3pCLE9BQU8sUUFBUSxDQUFBO0FBQ2pCLENBQUM7QUFGRCxrQ0FFQztBQUVZLFFBQUEsYUFBYSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLGFBQWEsQ0FBQTtBQUV0RCxRQUFBLGtCQUFrQixHQUFHLHdDQUF3QyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsibGV0IHNka05hbWUgPSAnQGNsb3VkYmFzZS9qcy1zZGsnXG5leHBvcnQgZnVuY3Rpb24gc2V0U2RrTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgc2RrTmFtZSA9IG5hbWVcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZGtOYW1lKCkge1xuICByZXR1cm4gc2RrTmFtZVxufVxuXG5sZXQgUFJPVE9DT0wgPSAnaHR0cHM6J1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0UHJvdG9jb2wocHJvdG9jb2w6ICdodHRwJyB8ICdodHRwcycpIHtcbiAgUFJPVE9DT0wgPSBwcm90b2NvbFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvdG9jb2woKSB7XG4gIHJldHVybiBQUk9UT0NPTFxufVxuLy8g5piv5ZCm5Li65byA5Y+R5qih5byPXG5leHBvcnQgY29uc3QgSVNfREVCVUdfTU9ERSA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnXG4vLyDpl67nrZTnpL7ljLrpk77mjqVcbmV4cG9ydCBjb25zdCBDT01NVU5JVFlfU0lURV9VUkwgPSAnaHR0cHM6Ly9zdXBwb3J0LnFxLmNvbS9wcm9kdWN0cy8xNDg3OTMnXG4iXX0=
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ERRORS = void 0;
4
- exports.ERRORS = {
5
- INVALID_PARAMS: 'INVALID_PARAMS',
6
- INVALID_SYNTAX: 'INVALID_SYNTAX',
7
- INVALID_OPERATION: 'INVALID_OPERATION',
8
- OPERATION_FAIL: 'OPERATION_FAIL',
9
- NETWORK_ERROR: 'NETWORK_ERROR',
10
- UNKOWN_ERROR: 'UNKOWN_ERROR',
11
- };
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0YW50cy9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxNQUFNLEdBQUc7SUFDcEIsY0FBYyxFQUFFLGdCQUFnQjtJQUNoQyxjQUFjLEVBQUUsZ0JBQWdCO0lBQ2hDLGlCQUFpQixFQUFFLG1CQUFtQjtJQUN0QyxjQUFjLEVBQUUsZ0JBQWdCO0lBQ2hDLGFBQWEsRUFBRSxlQUFlO0lBQzlCLFlBQVksRUFBRSxjQUFjO0NBQzdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRVJST1JTID0ge1xuICBJTlZBTElEX1BBUkFNUzogJ0lOVkFMSURfUEFSQU1TJyxcbiAgSU5WQUxJRF9TWU5UQVg6ICdJTlZBTElEX1NZTlRBWCcsXG4gIElOVkFMSURfT1BFUkFUSU9OOiAnSU5WQUxJRF9PUEVSQVRJT04nLFxuICBPUEVSQVRJT05fRkFJTDogJ09QRVJBVElPTl9GQUlMJyxcbiAgTkVUV09SS19FUlJPUjogJ05FVFdPUktfRVJST1InLFxuICBVTktPV05fRVJST1I6ICdVTktPV05fRVJST1InLFxufVxuIl19