@flowlist/js-core 2.2.0 → 2.3.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.
- package/dist/js-core.es.js +2 -12
- package/dist/js-core.umd.js +1 -1
- package/package.json +1 -1
- package/src/actions.ts +3 -11
- package/src/utils.ts +1 -1
package/dist/js-core.es.js
CHANGED
|
@@ -56,7 +56,7 @@ const generateDefaultField = (opts = {}) => __spreadValues(__spreadValues({}, {
|
|
|
56
56
|
result: [],
|
|
57
57
|
noMore: false,
|
|
58
58
|
nothing: false,
|
|
59
|
-
loading:
|
|
59
|
+
loading: false,
|
|
60
60
|
error: null,
|
|
61
61
|
extra: null,
|
|
62
62
|
fetched: false,
|
|
@@ -341,7 +341,7 @@ const initData = ({
|
|
|
341
341
|
if (fieldData && fieldData.error && !doRefresh) {
|
|
342
342
|
return resolve(null);
|
|
343
343
|
}
|
|
344
|
-
if (fieldData && fieldData.loading
|
|
344
|
+
if (fieldData && fieldData.loading) {
|
|
345
345
|
return resolve(null);
|
|
346
346
|
}
|
|
347
347
|
const dontFetch = fieldData && fieldData.fetched && !doRefresh;
|
|
@@ -360,11 +360,6 @@ const initData = ({
|
|
|
360
360
|
const loadData = () => new Promise((res) => {
|
|
361
361
|
const getDataFromAPI = () => {
|
|
362
362
|
const funcCaller = typeof func === "string" ? api[func] : func;
|
|
363
|
-
if (!funcCaller) {
|
|
364
|
-
const error = new Error("func is not a function");
|
|
365
|
-
SET_ERROR({ setter, fieldName, error });
|
|
366
|
-
reject(error);
|
|
367
|
-
}
|
|
368
363
|
funcCaller(params).then(res).catch((error) => {
|
|
369
364
|
SET_ERROR({ setter, fieldName, error });
|
|
370
365
|
reject(error);
|
|
@@ -470,11 +465,6 @@ const loadMore = ({
|
|
|
470
465
|
params[ENUM.FIELD_DATA.EXTRA_KEY] = fieldData[ENUM.FIELD_DATA.EXTRA_KEY];
|
|
471
466
|
const getData = () => {
|
|
472
467
|
const funcCaller = typeof func === "string" ? api[func] : func;
|
|
473
|
-
if (!funcCaller) {
|
|
474
|
-
const error = new Error("func is not a function");
|
|
475
|
-
SET_ERROR({ setter, fieldName, error });
|
|
476
|
-
reject(error);
|
|
477
|
-
}
|
|
478
468
|
funcCaller(params).then((data) => {
|
|
479
469
|
SET_DATA({
|
|
480
470
|
getter,
|
package/dist/js-core.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var J=Object.defineProperty,W=Object.defineProperties;var Z=Object.getOwnPropertyDescriptors;var k=Object.getOwnPropertySymbols;var v=Object.prototype.hasOwnProperty,q=Object.prototype.propertyIsEnumerable;var
|
|
1
|
+
var J=Object.defineProperty,W=Object.defineProperties;var Z=Object.getOwnPropertyDescriptors;var k=Object.getOwnPropertySymbols;var v=Object.prototype.hasOwnProperty,q=Object.prototype.propertyIsEnumerable;var B=(r,c,n)=>c in r?J(r,c,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[c]=n,I=(r,c)=>{for(var n in c||(c={}))v.call(c,n)&&B(r,n,c[n]);if(k)for(var n of k(c))q.call(c,n)&&B(r,n,c[n]);return r},b=(r,c)=>W(r,Z(c));(function(r,c){typeof exports=="object"&&typeof module!="undefined"?c(exports):typeof define=="function"&&define.amd?define(["exports"],c):(r=typeof globalThis!="undefined"?globalThis:r||self,c(r.JsCore={}))})(this,function(r){"use strict";const c=["jump","sinceId","page","seenIds","auto"];var n={SETTER_TYPE:{RESET:0,MERGE:1},FETCH_TYPE_ARRAY:c,FETCH_TYPE:{PAGINATION:c[0],SINCE_FIRST_OR_END_ID:c[1],SCROLL_LOAD_MORE:c[2],HAS_LOADED_IDS:c[3],AUTO:c[4]},CHANGE_TYPE:{SEARCH_FIELD:"search",RESET_FIELD:"reset",RESULT_UPDATE_KV:"update",RESULT_ADD_AFTER:"push",RESULT_ADD_BEFORE:"unshift",RESULT_REMOVE_BY_ID:"delete",RESULT_INSERT_TO_BEFORE:"insert-before",RESULT_INSERT_TO_AFTER:"insert-after",RESULT_LIST_MERGE:"patch",RESULT_ITEM_MERGE:"merge"},FIELD_DATA:{RESULT_KEY:"result",EXTRA_KEY:"extra"},DEFAULT_UNIQUE_KEY_NAME:"id"};const G=t=>t.result===void 0,N=(t={})=>I({result:[],noMore:!1,nothing:!1,loading:!1,error:null,extra:null,fetched:!1,page:0,total:0},t),h=({func:t,type:_,query:e={}})=>{t=typeof t=="string"?t:`api-${Math.random().toString(36).substring(2)}`,_=_||"auto";let s=`${t}-${_}`;return Object.keys(e).filter(E=>!~["undefined","object","function"].indexOf(typeof e[E])&&!~["page","is_up","since_id","seen_ids","__refresh__","__reload__"].indexOf(E)).sort().forEach(E=>{s+=`-${E}-${e[E]}`}),s},u=(t,_)=>{if(!_)return t||"";let e=t||"";return(L(_)?_:_.split(".")).forEach(E=>{e=e[E]}),e||""},m=(t,_,e)=>{if(/\./.test(_)){const s=_.split("."),E=s.pop();let i=t;s.forEach(a=>{i=i[a]}),i[E]=e}else t[_]=e},j=(t,_,e)=>{if(L(t)){const s=O(_,t,e);return s<0?void 0:t[s]}return t[_]},O=(t,_,e)=>{let s=-1;for(let E=0;E<_.length;E++)if(u(_[E],e.toString()).toString()===(t||"").toString()){s=E;break}return s},K=(t,_,e)=>{L(_)?_.forEach(s=>{const E=u(s,e).toString();t.forEach((i,a)=>{u(i,e).toString()===E&&(t[a]=I(I({},i),s))})}):Object.keys(_).forEach(s=>{const E=(s||"").toString();t.forEach((i,a)=>{u(i,e).toString()===E&&(t[a]=I(I({},i),_[s]))})})},L=t=>Object.prototype.toString.call(t)==="[object Array]",M=(t,_,e,s,E)=>{if(s===n.FETCH_TYPE.PAGINATION){t[_]=e;return}if(L(e)){t[_]=E?e.concat(t[_]||[]):(t[_]||[]).concat(e);return}if(_!==n.FIELD_DATA.RESULT_KEY){t[_]=e;return}L(t[_])&&(t[_]={}),Object.keys(e).forEach(i=>{t[_][i]=t[_][i]?E?e[i].concat(t[_][i]):t[_][i].concat(e[i]):e[i]})},U=t=>{let _=0;return L(t)?_=t.length:Object.keys(t).forEach(e=>{_+=t[e].length}),_},H=({field:t,uniqueKey:_,query:e={},type:s})=>{const E={};if(t.fetched){const i=_||n.DEFAULT_UNIQUE_KEY_NAME;s===n.FETCH_TYPE.AUTO?(E.seen_ids=t.result.map(a=>u(a,i)).join(","),E.since_id=u(t.result[e.is_up?0:t.result.length-1],i),E.is_up=e.is_up?1:0,E.page=e.page||t.page+1):s===n.FETCH_TYPE.HAS_LOADED_IDS?E.seen_ids=t.result.map(a=>u(a,i)).join(","):s===n.FETCH_TYPE.SINCE_FIRST_OR_END_ID?(E.since_id=u(t.result[e.is_up?0:t.result.length-1],i),E.is_up=e.is_up?1:0):s===n.FETCH_TYPE.PAGINATION?E.page=e.page:s===n.FETCH_TYPE.SCROLL_LOAD_MORE&&(E.page=t.page+1)}else s===n.FETCH_TYPE.AUTO?(E.seen_ids="",E.since_id=e.sinceId||(e.is_up?999999999:0),E.is_up=e.is_up?1:0,E.page=e.page||t.page||1):s===n.FETCH_TYPE.HAS_LOADED_IDS?E.seen_ids="":s===n.FETCH_TYPE.SINCE_FIRST_OR_END_ID?(E.since_id=e.sinceId||(e.is_up?999999999:0),E.is_up=e.is_up?1:0):s===n.FETCH_TYPE.PAGINATION?E.page=e.page||t.page:s===n.FETCH_TYPE.SCROLL_LOAD_MORE&&(E.page=1);return I(I({},e),E)};var w=Object.freeze(Object.defineProperty({__proto__:null,isObjectResult:G,generateDefaultField:N,generateFieldName:h,getObjectDeepValue:u,updateObjectDeepValue:m,searchValueByKey:j,computeMatchedItemIndex:O,combineArrayData:K,isArray:L,setReactivityField:M,computeResultLength:U,generateRequestParams:H},Symbol.toStringTag,{value:"Module"}));const x=({getter:t,setter:_,data:e,fieldName:s,type:E,page:i,insertBefore:a})=>new Promise((p,S)=>{const T=t(s);if(!T){S();return}let R,A;if(G(e))R=e,T.nothing=!1,T.fetched=!0,T.noMore=!0,T.page=-1;else{R=e.result,A=e.extra;const f=U(R)===0;T.nothing=T.fetched?!1:f,T.fetched=!0,T.total=e.total||0,E===n.FETCH_TYPE.PAGINATION?(T.noMore=!1,T.page=+i):(T.noMore=e.no_more||f,T.page=T.page+1)}T.loading=!1,M(T,n.FIELD_DATA.RESULT_KEY,R,E,a),A&&M(T,n.FIELD_DATA.EXTRA_KEY,A,E,a),_({key:s,type:n.SETTER_TYPE.RESET,value:T,callback:()=>{p(null)}})}),V=({setter:t,fieldName:_,error:e})=>{t({key:_,type:n.SETTER_TYPE.MERGE,value:{error:e,loading:!1}})},X=({getter:t,setter:_,func:e,type:s,query:E,opts:i})=>new Promise(a=>{const p=h({func:e,type:s,query:E});if(t(p)){a(null);return}_({key:p,type:n.SETTER_TYPE.RESET,value:N(i),callback:()=>{a(null)}})}),$=({getter:t,setter:_,func:e,type:s,query:E,api:i,uniqueKey:a,callback:p})=>new Promise((S,T)=>{const R=h({func:e,type:s,query:E}),A=t(R),f=!!(E!=null&&E.__refresh__),o=!!(E!=null&&E.__reload__);if(A&&A.error&&!f||A&&A.loading)return S(null);const D=A&&A.fetched&&!f;if(D)return S(null);const g=H({field:b(I({},A),{fetched:!1}),uniqueKey:a,query:E,type:s}),F=()=>{(()=>new Promise(d=>{(()=>{(typeof e=="string"?i[e]:e)(g).then(d).catch(C=>{V({setter:_,fieldName:R,error:C}),T(C)})})()}))().then(d=>{const l=()=>{x({getter:t,setter:_,data:d,fieldName:R,type:s,page:g.page||0,insertBefore:!1}).then(()=>{p&&p({params:g,data:d,refresh:f}),S(null)})};o?_({key:R,type:n.SETTER_TYPE.RESET,value:N(),callback:l}):l()})};!D&&!o?_({key:R,type:n.SETTER_TYPE.RESET,value:b(I({},N()),{loading:!0,error:null}),callback:F}):F()}),Q=({getter:t,setter:_,query:e,type:s,func:E,api:i,uniqueKey:a,errorRetry:p,callback:S})=>new Promise((T,R)=>{const A=h({func:E,type:s,query:e}),f=t(A);if(!f||f.loading||f.nothing||f.noMore&&!p||s===n.FETCH_TYPE.PAGINATION&&e&&+e.page===f.page)return T(null);let o;s===n.FETCH_TYPE.PAGINATION?o={loading:!0,error:null,[n.FIELD_DATA.RESULT_KEY]:[],[n.FIELD_DATA.EXTRA_KEY]:null}:o={loading:!0,error:null};const D=H({field:f,uniqueKey:a,query:e,type:s});D[n.FIELD_DATA.EXTRA_KEY]=f[n.FIELD_DATA.EXTRA_KEY];const g=()=>{(typeof E=="string"?i[E]:E)(D).then(Y=>{x({getter:t,setter:_,data:Y,fieldName:A,type:s,page:D.page||0,insertBefore:!!(e!=null&&e.is_up)}).then(()=>{S&&S({params:D,data:Y,refresh:!1}),T(null)})}).catch(Y=>{V({setter:_,fieldName:A,error:Y}),R(Y)})};_({key:A,type:n.SETTER_TYPE.MERGE,value:o,callback:g})}),z=({getter:t,setter:_,type:e,func:s,query:E,method:i,value:a,id:p,uniqueKey:S,changeKey:T})=>new Promise((R,A)=>{const f=h({func:s,type:e,query:E}),o=t(f);if(!o){A();return}if(o.page===-1){R(null);return}const D=p||"",g=S||n.DEFAULT_UNIQUE_KEY_NAME,F=T||n.FIELD_DATA.RESULT_KEY,Y=U(o[n.FIELD_DATA.RESULT_KEY]);if(i===n.CHANGE_TYPE.SEARCH_FIELD)R(j(o[n.FIELD_DATA.RESULT_KEY],D,g));else if(i===n.CHANGE_TYPE.RESULT_UPDATE_KV){const l=O(D,o[n.FIELD_DATA.RESULT_KEY],g);m(o[n.FIELD_DATA.RESULT_KEY][l],F,a)}else if(i===n.CHANGE_TYPE.RESULT_ITEM_MERGE){const l=O(D,o[n.FIELD_DATA.RESULT_KEY],g);o[n.FIELD_DATA.RESULT_KEY][l]=I(I({},o[n.FIELD_DATA.RESULT_KEY][l]),a)}else if(i===n.CHANGE_TYPE.RESET_FIELD)m(o,F,a);else{let l=u(o,F);const P=O(D,l,g);switch(i){case n.CHANGE_TYPE.RESULT_ADD_AFTER:L(a)?l=l.concat(a):l.push(a);break;case n.CHANGE_TYPE.RESULT_ADD_BEFORE:L(a)?l=a.concat(l):l.unshift(a);break;case n.CHANGE_TYPE.RESULT_REMOVE_BY_ID:P>=0?l.splice(P,1):L(D)&&(l=l.filter(C=>D.indexOf(C[g])===-1));break;case n.CHANGE_TYPE.RESULT_INSERT_TO_BEFORE:P>=0&&l.splice(P,0,a);break;case n.CHANGE_TYPE.RESULT_INSERT_TO_AFTER:P>=0&&l.splice(P+1,0,a);break;case n.CHANGE_TYPE.RESULT_LIST_MERGE:K(l,a,g);break}o[F]=l}const d=U(o[n.FIELD_DATA.RESULT_KEY]);o.total=o.total+d-Y,o.nothing=d===0,_({key:f,type:n.SETTER_TYPE.MERGE,value:o,callback:()=>{R(null)}})});r.ENUM=n,r.initData=$,r.initState=X,r.loadMore=Q,r.updateState=z,r.utils=w,Object.defineProperties(r,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/package.json
CHANGED
package/src/actions.ts
CHANGED
|
@@ -67,7 +67,7 @@ export const initData = ({
|
|
|
67
67
|
return resolve(null)
|
|
68
68
|
}
|
|
69
69
|
// 正在请求中,return
|
|
70
|
-
if (fieldData && fieldData.loading
|
|
70
|
+
if (fieldData && fieldData.loading) {
|
|
71
71
|
return resolve(null)
|
|
72
72
|
}
|
|
73
73
|
// 这个 field 已经请求过了
|
|
@@ -91,11 +91,7 @@ export const initData = ({
|
|
|
91
91
|
new Promise((res) => {
|
|
92
92
|
const getDataFromAPI = () => {
|
|
93
93
|
const funcCaller = typeof func === 'string' ? api[func] : func
|
|
94
|
-
|
|
95
|
-
const error = new Error('func is not a function')
|
|
96
|
-
SET_ERROR({ setter, fieldName, error })
|
|
97
|
-
reject(error)
|
|
98
|
-
}
|
|
94
|
+
|
|
99
95
|
funcCaller(params)
|
|
100
96
|
.then(res)
|
|
101
97
|
.catch((error: Error) => {
|
|
@@ -227,11 +223,7 @@ export const loadMore = ({
|
|
|
227
223
|
|
|
228
224
|
const getData = () => {
|
|
229
225
|
const funcCaller = typeof func === 'string' ? api[func] : func
|
|
230
|
-
|
|
231
|
-
const error = new Error('func is not a function')
|
|
232
|
-
SET_ERROR({ setter, fieldName, error })
|
|
233
|
-
reject(error)
|
|
234
|
-
}
|
|
226
|
+
|
|
235
227
|
funcCaller(params)
|
|
236
228
|
.then((data: any) => {
|
|
237
229
|
SET_DATA({
|