efront 4.36.2 → 4.36.4

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.
@@ -525,164 +525,161 @@ var prepareURL = function (url, params) {
525
525
  }
526
526
  return [uri, rest, baseuri, search];
527
527
  };
528
- var privates = {
529
- pack(serviceId, params) {
530
- if (/\?/.test(serviceId)) {
531
- params = extend({}, getParamsFromUrl(serviceId), params);
532
- serviceId = serviceId.replace(/\?[\s\S]*$/, '');
533
- }
534
- if (/\:/.test(serviceId)) {
535
- var params1 = extend({}, params);
536
- var temp = getParamsFromUrl(serviceId, ":");
537
- for (var k in temp) {
538
- var v = temp[k];
539
- if (v in params) {
540
- params1[k] = params[v];
541
- }
542
- if (!(v in temp)) {
543
- delete params1[v];
544
- }
528
+ var prepare = function (method, url, params) {
529
+ var spliterIndex = /[\:\|\/\~\!\?\#\.\[]/.exec(method), search;
530
+ if (spliterIndex) spliterIndex = spliterIndex.index;
531
+ else spliterIndex = method.length;
532
+ var coinmethod = method.slice(0, spliterIndex).toLowerCase();
533
+ var realmethod = coinmethod.replace(/\W[\s\S]*$/g, '');
534
+ var [uri, rest, baseuri, search] = prepareURL(url, params);
535
+ if (params && rest.length) rest.forEach(r => delete params[r]);
536
+ var selector = method.slice(spliterIndex);
537
+ if (!/^(?:[\.\#\[]|\:(?:nth|first|last)\-child)/.test(selector)) selector = selector.slice(1);
538
+ return { method: realmethod, coinmethod, selector, search, baseuri, uri, params };
539
+ };
540
+ var loadIgnoreConfig = function (method, url, params1, api) {
541
+ var headers = api && api.headers;
542
+ var { method: realmethod, uri, baseuri, coinmethod, search, selector, params } = prepare(method, url, params1);
543
+ var id = realmethod + " " + baseuri;
544
+ var promise = cachedLoadingPromise[id];
545
+ var temp = JSON.stringify(params);
546
+ var currentTime = +new Date;
547
+ var loading = promise && promise.loading;
548
+ if (!promise || currentTime - promise.time > 60 || temp !== promise.params || promise.search !== search || promise.uri !== uri) {
549
+ var promise = new Promise(function (ok, oh) {
550
+ if (headers) {
551
+ headers = seekFromSource(headers, api.base);
545
552
  }
553
+ loading = cross(realmethod, uri, headers).send(params).done(e => {
554
+ ok(e.response || e.responseText);
555
+ }).error(xhr => {
556
+ try {
557
+ var e = getErrorMessage(parseData(xhr.response || xhr.responseText || xhr.statusText || xhr.status));
558
+ oh({ status: loading.status, api, params: params1, error: e, toString: getErrorMessage })
559
+ } catch (error) {
560
+ oh(error);
561
+ }
562
+ });
563
+ });
564
+ promise.uri = uri;
565
+ promise.loading = loading;
566
+ promise.search = search;
567
+ promise.params = temp;
568
+ promise.time = currentTime;
569
+ cachedLoadingPromise[id] = promise;
570
+ }
571
+ var p = promise.then(function (response) {
572
+ if (/\*$/.test(coinmethod)) return response;
573
+ var type = loading.getResponseHeader?.("content-type");
574
+ var data = response;
575
+ if (/text\/plain|json|[xyt]ml/i.test(type)) {
576
+ data = parseData(data);
546
577
  }
547
- return params;
548
- },
549
- fromApi(api, params) {
550
- let url = api.url;
551
- var base = api.base;
552
- if (base) url = base + api.path;
553
- if (this.validApi(api, params)) {
554
- params = this.repare(api, params);
555
- return this.loadIgnoreConfig(api.method, url, params, api);
578
+ var checked = error_check(data);
579
+ var apiMap = api && api.root;
580
+ var trans = api ? api.transpile : getTranspile(url);
581
+ if (/^\^/.test(selector) && loading.getResponseHeader) {
582
+ data = loading.getResponseHeader(selector.replace(/^\^/, ''));
583
+ selector = '';
556
584
  }
557
- return Promise.reject(ABORTED);
558
- },
559
- repare(api, params) {
560
- var { required, autotrim, prepared } = api;
561
- if (!required.length && !prepared.length && !autotrim) return params;
562
- var params1 = {};
563
- required.forEach(k => {
564
- var v = seekResponse(params, required[k] || k);
565
- params1[k] = v;
566
- });
567
- prepared.forEach(k => {
568
- var v = params[k];
569
- if (isEmpty(v)) {
570
- v = prepared[k];
571
- }
572
- params1[k] = v;
573
- });
574
- if (!autotrim) {
575
- for (var k in params) {
576
- if (!(k in params1)) {
577
- params1[k] = params[k];
578
- }
579
- }
585
+ data = transpile(seekResponse(data, selector), trans, apiMap);
586
+ if (isDefined(checked)) {
587
+ return checked;
580
588
  }
581
- return params1;
582
- },
583
-
584
- validApi(api, params) {
585
- if (api.required) {
586
- var required = api.required;
587
- var lacks = required;
588
- if (params) {
589
- lacks = lacks.filter(k => {
590
- if (!required[k]) return false;
591
- var v = seekResponse(params, required[k]);
592
- if (isEmpty(v)) return true;
593
- });
594
- }
595
- if (lacks.length) {
596
-
597
- console.log(i18n`跳过了缺少参数的请求:${api.id} ${api.name} ${api.url}\r\n缺少参数:${lacks.join(', ')}`);
598
- return false;
599
- }
589
+ return data;
590
+ });
591
+ p.loading = promise.loading;
592
+ return p;
593
+ };
594
+ var getConfigPromise = function () {
595
+ if (!configPormise) {
596
+ if (!_configfileurl) {
597
+ throw new Error(i18n`没有指定配置文件的路径,请使用data.loadConfig加载配置`);
600
598
  }
601
- return true;
602
- },
603
- getApi(serviceId) {
604
- return getApi(serviceId, this.getConfigPromise());
605
- },
606
- prepare(method, url, params) {
607
- var spliterIndex = /[\:\|\/\~\!\?\#\.\[]/.exec(method), search;
608
- if (spliterIndex) spliterIndex = spliterIndex.index;
609
- else spliterIndex = method.length;
610
- var coinmethod = method.slice(0, spliterIndex).toLowerCase();
611
- var realmethod = coinmethod.replace(/\W[\s\S]*$/g, '');
612
- var [uri, rest, baseuri, search] = prepareURL(url, params);
613
- if (params && rest.length) rest.forEach(r => delete params[r]);
614
- var selector = method.slice(spliterIndex);
615
- if (!/^(?:[\.\#\[]|\:(?:nth|first|last)\-child)/.test(selector)) selector = selector.slice(1);
616
- return { method: realmethod, coinmethod, selector, search, baseuri, uri, params };
617
- },
618
- loadIgnoreConfig(method, url, params1, api) {
619
- var headers = api && api.headers;
620
- var { method: realmethod, uri, baseuri, coinmethod, search, selector, params } = this.prepare(method, url, params1);
621
- var id = realmethod + " " + baseuri;
622
- var promise = cachedLoadingPromise[id];
623
- var temp = JSON.stringify(params);
624
- var currentTime = +new Date;
625
- var loading = promise && promise.loading;
626
- if (!promise || currentTime - promise.time > 60 || temp !== promise.params || promise.search !== search || promise.uri !== uri) {
627
- var promise = new Promise(function (ok, oh) {
628
- if (headers) {
629
- headers = seekFromSource(headers, api.base);
630
- }
631
- loading = cross(realmethod, uri, headers).send(params).done(e => {
632
- ok(e.response || e.responseText);
633
- }).error(xhr => {
634
- try {
635
- var e = getErrorMessage(parseData(xhr.response || xhr.responseText || xhr.statusText || xhr.status));
636
- oh({ status: loading.status, api, params: params1, error: e, toString: getErrorMessage })
637
- } catch (error) {
638
- oh(error);
639
- }
640
- });
599
+ var p = loadIgnoreConfig('get', _configfileurl);
600
+ p.loading.abort = function () { };
601
+ configPormise = p.then(createApiMap);
602
+ }
603
+ return configPormise;
604
+ };
605
+ var validApi = function (api, params) {
606
+ if (api.required) {
607
+ var required = api.required;
608
+ var lacks = required;
609
+ if (params) {
610
+ lacks = lacks.filter(k => {
611
+ if (!required[k]) return false;
612
+ var v = seekResponse(params, required[k]);
613
+ if (isEmpty(v)) return true;
641
614
  });
642
- promise.uri = uri;
643
- promise.loading = loading;
644
- promise.search = search;
645
- promise.params = temp;
646
- promise.time = currentTime;
647
- cachedLoadingPromise[id] = promise;
648
615
  }
649
- var p = promise.then(function (response) {
650
- if (/\*$/.test(coinmethod)) return response;
651
- var type = loading.getResponseHeader?.("content-type");
652
- var data = response;
653
- if (/text\/plain|json|[xyt]ml/i.test(type)) {
654
- data = parseData(data);
655
- }
656
- var checked = error_check(data);
657
- var apiMap = api && api.root;
658
- var trans = api ? api.transpile : getTranspile(url);
659
- if (/^\^/.test(selector) && loading.getResponseHeader) {
660
- data = loading.getResponseHeader(selector.replace(/^\^/, ''));
661
- selector = '';
616
+ if (lacks.length) {
617
+
618
+ console.log(i18n`跳过了缺少参数的请求:${api.id} ${api.name} ${api.url}\r\n缺少参数:${lacks.join(', ')}`);
619
+ return false;
620
+ }
621
+ }
622
+ return true;
623
+ };
624
+
625
+ var pack = function (serviceId, params) {
626
+ if (/\?/.test(serviceId)) {
627
+ params = extend({}, getParamsFromUrl(serviceId), params);
628
+ serviceId = serviceId.replace(/\?[\s\S]*$/, '');
629
+ }
630
+ if (/\:/.test(serviceId)) {
631
+ var params1 = extend({}, params);
632
+ var temp = getParamsFromUrl(serviceId, ":");
633
+ for (var k in temp) {
634
+ var v = temp[k];
635
+ if (v in params) {
636
+ params1[k] = params[v];
662
637
  }
663
- data = transpile(seekResponse(data, selector), trans, apiMap);
664
- if (isDefined(checked)) {
665
- return checked;
638
+ if (!(v in temp)) {
639
+ delete params1[v];
666
640
  }
667
- return data;
668
- });
669
- p.loading = promise.loading;
670
- return p;
671
- },
672
-
673
- getConfigPromise() {
674
- if (!configPormise) {
675
- if (!_configfileurl) {
676
- throw new Error(i18n`没有指定配置文件的路径,请使用data.loadConfig加载配置`);
641
+ }
642
+ }
643
+ return params;
644
+ };
645
+ var repare = function (api, params) {
646
+ var { required, autotrim, prepared } = api;
647
+ if (!required.length && !prepared.length && !autotrim) return params;
648
+ var params1 = {};
649
+ required.forEach(k => {
650
+ var v = seekResponse(params, required[k] || k);
651
+ params1[k] = v;
652
+ });
653
+ prepared.forEach(k => {
654
+ var v = params[k];
655
+ if (isEmpty(v)) {
656
+ v = prepared[k];
657
+ }
658
+ params1[k] = v;
659
+ });
660
+ if (!autotrim) {
661
+ for (var k in params) {
662
+ if (!(k in params1)) {
663
+ params1[k] = params[k];
677
664
  }
678
- var p = this.loadIgnoreConfig('get', _configfileurl);
679
- p.loading.abort = function () { };
680
- configPormise = p.then(createApiMap);
681
665
  }
682
- return configPormise;
683
- },
666
+ }
667
+ return params1;
668
+ };
684
669
 
670
+ var fromApi = function (api, params) {
671
+ let url = api.url;
672
+ var base = api.base;
673
+ if (base) url = base + api.path;
674
+ if (validApi(api, params)) {
675
+ params = repare(api, params);
676
+ return loadIgnoreConfig(api.method, url, params, api);
677
+ }
678
+ return Promise.reject(ABORTED);
685
679
  };
680
+ var getApiFromConfig = function (serviceId) {
681
+ return getApi(serviceId, getConfigPromise());
682
+ }
686
683
  var instanceId = 0;
687
684
  var getInstanceId = function () {
688
685
  if (instanceId++ === instanceId) {
@@ -761,28 +758,116 @@ var oncatch = function (e) {
761
758
  var cross = () => { throw new Error('请使用data.setEnvs(cross,on,onmounted)进行初始化,然后再使用data') };
762
759
  var on = () => { throw new Error("请使用data.setEnvs(cross,on,onmounted)") };
763
760
  var onmounted = () => { throw new Error("请使用data.setEnvs(cross,on,onmounted)") };
761
+ var rebuildInstance = function (instance, data, old = instance) {
762
+ if (instance === data) return;
763
+ if (!isObject(instance)) throw new Error(i18n`只支持object类型的数据!`);
764
+ if (!isObject(data)) data = { data }, data.toString = data.valueOf = toDataString;
765
+ if (instance instanceof Array) instance.splice(0, instance.length);
766
+ var sample = new LoadingArray;
767
+ Object.keys(old).forEach(function (k) {
768
+ if (instance[k] === old[k] && !(k in sample)) {
769
+ delete instance[k];
770
+ }
771
+ });
772
+ extend(instance, data);
773
+ };
774
+ /**
775
+ * 返回一个延长生命周期的内存对象
776
+ * @param instanceId 数据唯一标识
777
+ * @param onlyFromLocalStorage 是否只从localStorage加载
778
+ */
779
+ var getInstance = function (instanceId, onlyFromLocalStorage = false) {
780
+ if (!instanceDataMap[instanceId]) {
781
+ var data = getItem(instanceId, onlyFromLocalStorage);
782
+ var instance = new LoadingArray;
783
+ rebuildInstance(instance, data);
784
+ instance.is_loading = false;
785
+ instance.is_loaded = true;
786
+ instanceDataMap[instanceId] = instance;
787
+ }
788
+ return instanceDataMap[instanceId];
789
+ };
790
+
791
+ /**
792
+ * 设置一个延长生命周期的数据对象
793
+ * @param {*} instanceId 数据唯一标识
794
+ * @param {*} data 数据本体
795
+ * @param {boolean|number} [rememberWithStorage=0] 是否存储到localStorage,默认为否,只存储到sessionStorage
796
+ */
797
+ var setInstance = function (instanceId, data, rememberWithStorage = 0) {
798
+ const instance = getInstance(instanceId);
799
+ if (isObject(instance)) {
800
+ rebuildInstance(instance, data);
801
+ } else {
802
+ instanceDataMap[instanceId] = data;
803
+ }
804
+ instance.rw_storage = rememberWithStorage;
805
+ setItem(instanceId, data, rememberWithStorage);
806
+ fireListener(instanceId, data);
807
+ return instanceDataMap[instanceId];
808
+ };
809
+
810
+ var removeInstance = function (instanceId) {
811
+ delete instanceDataMap[instanceId];
812
+ const storageId = userPrefix + instanceId + pagePathName;
813
+ localStorage.removeItem(storageId);
814
+ sessionStorage.removeItem(storageId);
815
+ };
816
+
817
+ var responseLoading = function (response) {
818
+ if (isObject(response)) {
819
+ response.is_loaded = false;
820
+ response.is_loading = true;
821
+ response.then = LoadingArray_then;
822
+ response.abort = LoadingArray_abort;
823
+ }
824
+ };
825
+
826
+ var responseLoaded = function (response) {
827
+ if (isObject(response)) {
828
+ response.is_loaded = true;
829
+ response.is_loading = false;
830
+ if (response.then === LoadingArray_then) delete response.then;
831
+ if (response.abort === LoadingArray_abort) delete response.abort;
832
+ }
833
+ };
834
+
835
+ var createResponse = function (p, parse) {
836
+ var id = !p.id || parse instanceof Function ? getInstanceId() : 0;
837
+ if (id) removeInstance(id);
838
+ var pid = p.id;
839
+ var response = getInstance(id || pid);
840
+ if (!isObject(response)) response = new LoadingArray;
841
+ responseLoading(response);
842
+ response.loading = p.loading;
843
+ response.loading_promise = p;
844
+ p = p.then((data) => {
845
+ response.loading = null;
846
+ if (parse instanceof Function) data = parse(data);
847
+ if (id) {
848
+ setInstance(id, data, false);
849
+ removeInstance(id);
850
+ } else {
851
+ setInstance(pid, data);
852
+ }
853
+ responseLoaded(response);
854
+ return data;
855
+ }, (e) => {
856
+ responseCrash(e, response);
857
+ })
858
+ if (parse) response.loading_promise = p;
859
+ return response;
860
+ };
861
+
862
+
764
863
  var data = {
765
864
  prepareURL,
766
865
  decodeStructure,
767
866
  getUrlParamsForApi,
768
867
  encodeStructure,
769
- responseLoaded(response) {
770
- if (isObject(response)) {
771
- response.is_loaded = true;
772
- response.is_loading = false;
773
- if (response.then === LoadingArray_then) delete response.then;
774
- if (response.abort === LoadingArray_abort) delete response.abort;
775
- }
776
- },
868
+ responseLoaded,
777
869
  responseCrash,
778
- responseLoading(response) {
779
- if (isObject(response)) {
780
- response.is_loaded = false;
781
- response.is_loading = true;
782
- response.then = LoadingArray_then;
783
- response.abort = LoadingArray_abort;
784
- }
785
- },
870
+ createResponse,
786
871
  setEnvs(cross1, on1, onmounted1) {
787
872
  delete data.setEnvs;
788
873
  cross = cross1;
@@ -804,10 +889,10 @@ var data = {
804
889
  _configfileurl = defaultConfigFile;
805
890
  configPormise = null;
806
891
  }
807
- return privates.getConfigPromise();
892
+ return getConfigPromise();
808
893
  },
809
894
  getApi(a) {
810
- return privates.getApi(a);
895
+ return getApiFromConfig(a);
811
896
  },
812
897
  setConfig(data) {
813
898
  data = this.parseConfig(data);
@@ -821,7 +906,7 @@ var data = {
821
906
  extend(c, data);
822
907
  },
823
908
  getConfig() {
824
- return privates.getConfigPromise();
909
+ return getConfigPromise();
825
910
  },
826
911
  parseConfig(o) {
827
912
  if (o instanceof Promise) {
@@ -833,7 +918,7 @@ var data = {
833
918
  }
834
919
  },
835
920
  fromAll(refs, params, parse) {
836
- return this.createResponse(Promise.all(refs.map(r => this.from(r, params, parse).loading_promise.catch(e => []))).then(datas => {
921
+ return createResponse(Promise.all(refs.map(r => this.from(r, params, parse).loading_promise.catch(e => []))).then(datas => {
837
922
  datas = datas.filter(a => !!a);
838
923
  if (!datas.length) throw new Error(i18n`无可用的数据源`);
839
924
  return datas.concat.apply([], datas);
@@ -872,7 +957,7 @@ var data = {
872
957
  enrich(config = configPormise) {
873
958
  if (!config) return;
874
959
  if (isString(config)) {
875
- config = privates.loadIgnoreConfig('get', config).then(createApiMap);
960
+ config = loadIgnoreConfig('get', config).then(createApiMap);
876
961
  } else if (!(config instanceof Promise)) {
877
962
  if (!isObject(config)) return;
878
963
  config = Promise.resolve(config).then(createApiMap);
@@ -895,7 +980,7 @@ var data = {
895
980
  if (!ids.length) return ok(res);
896
981
  var id = ids.pop();
897
982
  var a = data[id];
898
- privates.fromApi(a, res).then(run);
983
+ fromApi(a, res).then(run);
899
984
  };
900
985
  run(params);
901
986
  });
@@ -904,56 +989,34 @@ var data = {
904
989
  });
905
990
  },
906
991
  fromApi(api, params, parse) {
907
- var p = privates.fromApi(api, params);
908
- return this.createResponse(p, parse);
992
+ var p = fromApi(api, params);
993
+ return createResponse(p, parse);
909
994
  },
910
995
  postURL(url, data, parse) {
911
- var p = privates.loadIgnoreConfig("post", url, data);
912
- return this.createResponse(p, parse);
996
+ var p = loadIgnoreConfig("post", url, data);
997
+ return createResponse(p, parse);
913
998
  },
914
999
  fromURL(url, parse) {
915
- var p = privates.loadIgnoreConfig('get', url);
916
- return this.createResponse(p, parse);
1000
+ var p = loadIgnoreConfig('get', url);
1001
+ return createResponse(p, parse);
917
1002
  },
918
- createResponse(p, parse) {
919
- var id = !p.id || parse instanceof Function ? getInstanceId() : 0;
920
- if (id) this.removeInstance(id);
921
- var pid = p.id;
922
- var response = this.getInstance(id || pid);
923
- if (!isObject(response)) response = new LoadingArray;
924
- this.responseLoading(response);
925
- response.loading = p.loading;
926
- response.loading_promise = p;
927
- p = p.then((data) => {
928
- response.loading = null;
929
- if (parse instanceof Function) data = parse(data);
930
- if (id) {
931
- this.setInstance(id, data, false);
932
- this.removeInstance(id);
933
- } else {
934
- this.setInstance(pid, data);
935
- }
936
- this.responseLoaded(response);
937
- return data;
938
- }, (e) => {
939
- this.responseCrash(e, response);
940
- })
941
- if (parse) response.loading_promise = p;
942
- return response;
1003
+ cross(method, url, data, api, parse) {
1004
+ var p = loadIgnoreConfig(method, url, data, api);
1005
+ return createResponse(p, parse);
943
1006
  },
944
1007
  asyncInstance(sid, params, parse) {
945
1008
  // 不同参数的请求互不影响
946
1009
  if (typeof sid !== "string") throw new Error(i18n`serviceId 只能是字符串`);
947
- var p0 = privates.getApi(sid);
1010
+ var p0 = getApiFromConfig(sid);
948
1011
  var p = p0.then((api) => {
949
- params = privates.pack(sid, params);
950
- var p = privates.fromApi(api, params);
1012
+ params = pack(sid, params);
1013
+ var p = fromApi(api, params);
951
1014
  p.loading = response.loading = p.loading;
952
1015
  return p;
953
1016
  }, oncatch);
954
1017
  p.loading = p0;
955
1018
  if (isEmpty(params)) p.id = sid;
956
- var response = this.createResponse(p, parse);
1019
+ var response = createResponse(p, parse);
957
1020
  return response;
958
1021
  },
959
1022
 
@@ -977,14 +1040,14 @@ var data = {
977
1040
  }
978
1041
  });
979
1042
  var id = "." + sid;
980
- var instance = this.getInstance(id);
1043
+ var instance = getInstance(id);
981
1044
  var loading_promise = instance && instance.loading_promise;
982
1045
  var p = Promise.resolve().then(function () {
983
1046
  if (loading_promise) return wait(timeout);
984
1047
  return wait(60);
985
1048
  }).then(function () {
986
1049
  if (p !== instance.loading_promise) throw OUTDATE;
987
- return privates.getApi(sid);
1050
+ return getApiFromConfig(sid);
988
1051
  }).then((api) => {
989
1052
  if (p !== instance.loading_promise) throw OUTDATE;
990
1053
  if ("params" in instance && shallowEqual(instance.params, params1)) throw ABORTED;
@@ -992,7 +1055,7 @@ var data = {
992
1055
  if (instance.loading) {
993
1056
  instance.loading.abort();
994
1057
  }
995
- var r = privates.fromApi(api, params1);
1058
+ var r = fromApi(api, params1);
996
1059
  instance.loading = r.loading;
997
1060
  return r;
998
1061
  }).then((data) => {
@@ -1001,7 +1064,7 @@ var data = {
1001
1064
  return data;
1002
1065
  }, oncatch);
1003
1066
  p.id = id;
1004
- var instance = this.createResponse(p);
1067
+ var instance = createResponse(p);
1005
1068
  p.catch(function () { }).then(() => {
1006
1069
  return wait(timeout);
1007
1070
  }).then(() => {
@@ -1009,33 +1072,13 @@ var data = {
1009
1072
  });
1010
1073
  return instance;
1011
1074
  },
1012
- /**
1013
- * 返回一个延长生命周期的内存对象
1014
- * @param instanceId 数据唯一标识
1015
- * @param onlyFromLocalStorage 是否只从localStorage加载
1016
- */
1017
- getInstance(instanceId, onlyFromLocalStorage = false) {
1018
- if (!instanceDataMap[instanceId]) {
1019
- var data = getItem(instanceId, onlyFromLocalStorage);
1020
- var instance = new LoadingArray;
1021
- this.rebuildInstance(instance, data);
1022
- instance.is_loading = false;
1023
- instance.is_loaded = true;
1024
- instanceDataMap[instanceId] = instance;
1025
- }
1026
- return instanceDataMap[instanceId];
1027
- },
1028
- removeInstance(instanceId) {
1029
- delete instanceDataMap[instanceId];
1030
- const storageId = userPrefix + instanceId + pagePathName;
1031
- localStorage.removeItem(storageId);
1032
- sessionStorage.removeItem(storageId);
1033
- },
1075
+ getInstance,
1076
+ removeInstance,
1034
1077
  /** 设置所有网络请求拉取时的参数数附加据源 */
1035
1078
  setSource(sourceid, value) {
1036
1079
  var rememberWithStorage;
1037
1080
  if (isObject(sourceid)) {
1038
- this.rebuildInstance(dataSourceMap, sourceid);
1081
+ rebuildInstance(dataSourceMap, sourceid);
1039
1082
  rememberWithStorage = value;
1040
1083
  } else {
1041
1084
  dataSourceMap[sourceid] = value;
@@ -1052,36 +1095,19 @@ var data = {
1052
1095
  localStorage.removeItem(sourceDataId);
1053
1096
  sessionStorage.removeItem(sourceDataId);
1054
1097
  },
1055
- /**
1056
- * 设置一个延长生命周期的数据对象
1057
- * @param {*} instanceId 数据唯一标识
1058
- * @param {*} data 数据本体
1059
- * @param {boolean|number} [rememberWithStorage=0] 是否存储到localStorage,默认为否,只存储到sessionStorage
1060
- */
1061
- setInstance(instanceId, data, rememberWithStorage = 0) {
1062
- const instance = this.getInstance(instanceId);
1063
- if (isObject(instance)) {
1064
- this.rebuildInstance(instance, data);
1065
- } else {
1066
- instanceDataMap[instanceId] = data;
1067
- }
1068
- instance.rw_storage = rememberWithStorage;
1069
- setItem(instanceId, data, rememberWithStorage);
1070
- fireListener(instanceId, data);
1071
- return instanceDataMap[instanceId];
1072
- },
1098
+ setInstance,
1073
1099
  // rememberWithStorage =null 生产环境不存储,开发环境存到sessionStorage
1074
1100
  wetInstance(instanceId, data, rememberWithStorage = null) {
1075
1101
  instanceHasDulpData = false;
1076
- var res = this.setInstance(instanceId, data, rememberWithStorage);
1102
+ var res = setInstance(instanceId, data, rememberWithStorage);
1077
1103
  instanceHasDulpData = true;
1078
1104
  return res;
1079
1105
  },
1080
1106
  patchInstance(instanceId, data, rememberWithStorage) {
1081
- var instance = this.getInstance(instanceId);
1107
+ var instance = getInstance(instanceId);
1082
1108
  if (rememberWithStorage === undefined) rememberWithStorage = instance.rw_storage;
1083
1109
  extend(instance, data);
1084
- return this.setInstance(instanceId, instance, rememberWithStorage);
1110
+ return setInstance(instanceId, instance, rememberWithStorage);
1085
1111
  },
1086
1112
  /**
1087
1113
  * 仅初始化,不覆盖
@@ -1089,10 +1115,10 @@ var data = {
1089
1115
  initInstance(instanceId, data, rememberWithStorage = 0) {
1090
1116
  var item = getItem(instanceId);
1091
1117
  if (!isEmpty(item)) return;
1092
- return this.setInstance(instanceId, data, rememberWithStorage);
1118
+ return setInstance(instanceId, data, rememberWithStorage);
1093
1119
  },
1094
1120
  switchInstance(instanceId, key, rememberWithStorage = 0) {
1095
- var instance = this.getInstance(instanceId);
1121
+ var instance = getInstance(instanceId);
1096
1122
  if (key === true || key === false || isEmpty(key)) {
1097
1123
  rememberWithStorage = key;
1098
1124
  key = null;
@@ -1110,7 +1136,7 @@ var data = {
1110
1136
  } else {
1111
1137
  instance[key] = value;
1112
1138
  }
1113
- return this.setInstance(instanceId, instance, rememberWithStorage);
1139
+ return setInstance(instanceId, instance, rememberWithStorage);
1114
1140
  },
1115
1141
  /**
1116
1142
  * bindInstance(instanceId, callback);
@@ -1139,19 +1165,7 @@ var data = {
1139
1165
  unbindInstance() {
1140
1166
  bubApply(unbindInstance, arguments);
1141
1167
  },
1142
- rebuildInstance(instance, data, old = instance) {
1143
- if (instance === data) return;
1144
- if (!isObject(instance)) throw new Error(i18n`只支持object类型的数据!`);
1145
- if (!isObject(data)) data = { data }, data.toString = data.valueOf = toDataString;
1146
- if (instance instanceof Array) instance.splice(0, instance.length);
1147
- var sample = new LoadingArray;
1148
- Object.keys(old).forEach(function (k) {
1149
- if (instance[k] === old[k] && !(k in sample)) {
1150
- delete instance[k];
1151
- }
1152
- });
1153
- extend(instance, data);
1154
- }
1168
+ rebuildInstance,
1155
1169
  };
1156
1170
  var instanceHasDulpData = true;
1157
1171
  function setItem(instanceId, data, rememberWithStorage) {