xctc-utils 1.6.18 → 1.6.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.
@@ -20,4 +20,5 @@ interface GetOptions {
20
20
  iv?: string;
21
21
  }
22
22
  export declare const get: (options: GetOptions) => any;
23
+ export declare const urlStateParams: (cacheKey?: string, key?: string, iv?: string) => void;
23
24
  export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.get = exports.set = void 0;
3
+ exports.urlStateParams = exports.get = exports.set = void 0;
4
4
  var crypto_1 = require("../crypto");
5
5
  var storage_1 = require("../storage");
6
6
  var defaultKey = "5uMz4R8rop26DkC8";
@@ -34,7 +34,10 @@ var get = function (options) {
34
34
  search = search.substring(1);
35
35
  }
36
36
  var urlArr = search.split("&");
37
- var paramsData = {};
37
+ var paramsData = (0, storage_1.getSessionStorage)(cacheKey) || {};
38
+ if (!((keys === null || keys === void 0 ? void 0 : keys.length) && (urlArr === null || urlArr === void 0 ? void 0 : urlArr.length))) {
39
+ return;
40
+ }
38
41
  for (var k = 0; k < keys.length; k++) {
39
42
  var keyItem = keys[k];
40
43
  if (keyItem.includes("=")) {
@@ -50,9 +53,11 @@ var get = function (options) {
50
53
  urlItem = urlArr[i];
51
54
  if (urlItem === null || urlItem === void 0 ? void 0 : urlItem.includes(keyItem)) {
52
55
  var dataStr = urlItem.substring(urlItem.indexOf(keyItem) + keyItem.length + 1);
56
+ var decryptData = (0, crypto_1.decrypt)(dataStr, key, iv);
53
57
  var decryptStr = (0, crypto_1.decrypt)(dataStr, key, iv);
54
58
  paramsData[keyItem] = {
55
- data: getParamsObj(decryptStr),
59
+ // data:getParamsObj(decryptStr),
60
+ data: decryptData,
56
61
  str: dataStr
57
62
  };
58
63
  }
@@ -81,3 +86,30 @@ var getParamsObj = function (objStr) {
81
86
  }
82
87
  return objData;
83
88
  };
89
+ var urlStateParams = function (cacheKey, key, iv) {
90
+ if (!cacheKey)
91
+ cacheKey = "urlParamsData";
92
+ if (!key)
93
+ key = defaultKey;
94
+ if (!iv)
95
+ iv = defaultIv;
96
+ var win = window;
97
+ var loc = win.location;
98
+ var search = loc.search;
99
+ if (search.startsWith("?")) {
100
+ search = search.substring(1);
101
+ }
102
+ var urlArr = search.split("&");
103
+ for (var k = 0; k < urlArr.length; k++) {
104
+ var item = urlArr[k];
105
+ if (item.includes("state=")) {
106
+ var indexVal = item.indexOf("=");
107
+ var keys = item.substring(0, indexVal);
108
+ keys = keys[0].toUpperCase() + keys.substring(1);
109
+ var val = item.substring(indexVal + 1);
110
+ var data = (0, crypto_1.decrypt)(val, key, iv);
111
+ (0, storage_1.useSessionStorage)(cacheKey, { state: { str: val, data: data } });
112
+ }
113
+ }
114
+ };
115
+ exports.urlStateParams = urlStateParams;
@@ -70,7 +70,7 @@ function getUrlCode(config) {
70
70
  var localCode = (0, index_1.getSessionStorage)("urlParamsData") || "";
71
71
  // 本地未存储微信授权 code 值, 并且地址栏携带有 code 值 ,则先存储该值
72
72
  if (!localCode && codeIndex != -1 && isAuth) {
73
- params.get({ keys: ['code', 'state'], cache: "session", key: cryptokey, iv: cryptoiv });
73
+ params.get({ keys: ['code'], cache: "session", key: cryptokey, iv: cryptoiv });
74
74
  }
75
75
  // 如果本地已经存储 微信授权返回的 code 值,证明用户在执行刷新操作,不再执行微信授权逻辑
76
76
  if (localCode && stateIndex == -1 && codeIndex == -1 && !isAuth) {
@@ -102,6 +102,7 @@ function getUrlCode(config) {
102
102
  if (debuggerStatus) {
103
103
  alert("用户通过分享链接进入系统,无code参数 ,跳转到code授权页面");
104
104
  }
105
+ params.urlStateParams();
105
106
  return getCode(); // 微信授权页面获取CODE
106
107
  }
107
108
  // && stateIndex == -1 && codeIndex == -1
@@ -156,9 +157,13 @@ function login(code) {
156
157
  if (res === null || res === void 0 ? void 0 : res.hasOwnProperty("code")) {
157
158
  code = res.code;
158
159
  }
159
- if (res === null || res === void 0 ? void 0 : res.hasOwnProperty("Code")) {
160
+ else if (res === null || res === void 0 ? void 0 : res.hasOwnProperty("Code")) {
160
161
  code = res.Code;
161
162
  }
163
+ else {
164
+ console.error("http响应数据格式必须是:res:{code:xx,data:{}}");
165
+ return;
166
+ }
162
167
  if (code == 40163) {
163
168
  // 未登录则先执行登录
164
169
  return getCode();
@@ -167,9 +172,13 @@ function login(code) {
167
172
  if (res === null || res === void 0 ? void 0 : res.hasOwnProperty("data")) {
168
173
  data = res.data;
169
174
  }
170
- if (res === null || res === void 0 ? void 0 : res.hasOwnProperty("Data")) {
175
+ else if (res === null || res === void 0 ? void 0 : res.hasOwnProperty("Data")) {
171
176
  data = res.Data;
172
177
  }
178
+ else {
179
+ console.error("http响应数据格式必须是:res:{code:xx,data:{}}");
180
+ return;
181
+ }
173
182
  for (var key in data) {
174
183
  var item = data[key];
175
184
  if (item instanceof Object) {
@@ -349,9 +358,13 @@ function configReady(config) {
349
358
  if (res === null || res === void 0 ? void 0 : res.hasOwnProperty("data")) {
350
359
  data = res.data;
351
360
  }
352
- if (res === null || res === void 0 ? void 0 : res.hasOwnProperty("Data")) {
361
+ else if (res === null || res === void 0 ? void 0 : res.hasOwnProperty("Data")) {
353
362
  data = res.Data;
354
363
  }
364
+ else {
365
+ console.error("http响应数据格式必须是:res:{data:{appid:xx,timestamp:xx,noncestr:xx,signature:xx}}");
366
+ return;
367
+ }
355
368
  for (var key in data) {
356
369
  var newKey = key.toLowerCase();
357
370
  data[newKey] = data[key];
@@ -360,25 +373,19 @@ function configReady(config) {
360
373
  console.error("后端响应的data数据中缺乏appid或者appId或者AppId字段!");
361
374
  return;
362
375
  }
363
- var timestamp = (data === null || data === void 0 ? void 0 : data.timestamp) || "";
364
- if (!timestamp) {
365
- return;
366
- }
367
- timestamp = Number(timestamp);
368
376
  var obj = {
369
377
  jsApiList: jsApiListData,
370
378
  openTagList: openTagListData,
371
379
  debug: false,
372
380
  appId: data === null || data === void 0 ? void 0 : data.appid,
373
- timestamp: timestamp,
381
+ timestamp: data === null || data === void 0 ? void 0 : data.timestamp,
374
382
  nonceStr: data === null || data === void 0 ? void 0 : data.noncestr,
375
383
  signature: data === null || data === void 0 ? void 0 : data.signature, //必填,生成的签名
376
384
  };
377
385
  var wx = initSdk();
378
- (0, index_1.useSessionStorage)("configReadyData", obj);
379
386
  wx.config(obj);
380
387
  wx.ready(function (res) {
381
- (0, index_1.useSessionStorage)("configReadySuccess", res);
388
+ (0, index_1.useSessionStorage)("configReadySuccess", "wx.ready");
382
389
  if (config['cb'] && typeof config.cb === "function")
383
390
  config.cb();
384
391
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xctc-utils",
3
- "version": "1.6.18",
3
+ "version": "1.6.20",
4
4
  "description": "localStorage存储\r ```\r sessionStorage存储\r ```\r crypto-js加密、解密\r ```\r 微信授权登录、微信分享\r ```\r 设备环境获取\r ```\r 是否是微信浏览器\r ```\r 时间戳转时间,字符串转时间戳",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",