@flowlist/js-core 4.0.7-beta.0 → 4.0.8-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.
- package/dist/index.d.mts +55 -32
- package/dist/index.d.ts +55 -32
- package/dist/index.global.js +99 -59
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +99 -59
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +99 -59
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.global.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/enum.ts","../src/utils.ts","../src/setters.ts","../src/actions.ts"],"names":["generateFieldName"],"mappings":"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","file":"index.global.js","sourcesContent":["// enum.ts\nconst FETCH_TYPE_ARRAY = ['jump', 'sinceId', 'page', 'seenIds', 'auto'] as const\n\nexport default {\n SETTER_TYPE: {\n RESET: 0,\n MERGE: 1\n } as const,\n FETCH_TYPE_ARRAY,\n FETCH_TYPE: {\n PAGINATION: FETCH_TYPE_ARRAY[0],\n SINCE_FIRST_OR_END_ID: FETCH_TYPE_ARRAY[1],\n SCROLL_LOAD_MORE: FETCH_TYPE_ARRAY[2],\n HAS_LOADED_IDS: FETCH_TYPE_ARRAY[3],\n AUTO: FETCH_TYPE_ARRAY[4]\n } as const,\n CHANGE_TYPE: {\n SEARCH_FIELD: 'search',\n RESET_FIELD: 'reset',\n RESULT_UPDATE_KV: 'update',\n RESULT_ADD_AFTER: 'push',\n RESULT_ADD_BEFORE: 'unshift',\n RESULT_REMOVE_BY_ID: 'delete',\n RESULT_INSERT_TO_BEFORE: 'insert-before',\n RESULT_INSERT_TO_AFTER: 'insert-after',\n RESULT_LIST_MERGE: 'patch',\n RESULT_ITEM_MERGE: 'merge'\n } as const,\n FIELD_DATA: {\n RESULT_KEY: 'result',\n EXTRA_KEY: 'extra'\n } as const,\n DEFAULT_UNIQUE_KEY_NAME: 'id'\n} as const\n","// utils.ts\nimport ENUM from './enum'\nimport type {\n ApiContract,\n DefaultField,\n FetchType,\n FieldKeys,\n GenerateParamsResp,\n GenerateParamsType,\n KeyMap,\n ObjectKey,\n RequestParams\n} from './types'\n\n// ========== 类型守卫函数 ==========\n\nexport const isArray = (data: unknown): data is any[] => Array.isArray(data)\n\n/**\n * 检查是否为对象结果\n */\nexport const isResultObject = (data: unknown): data is Record<string, any> =>\n !isArray(data) && typeof data === 'object' && data !== null\n\n/**\n * 检查是否为 ObjectKey\n */\nexport const isObjectKey = (value: unknown): value is ObjectKey =>\n typeof value === 'string' || typeof value === 'number'\n\n/**\n * 检查是否为 KeyMap\n */\nexport const isKeyMap = (value: unknown): value is KeyMap =>\n typeof value === 'object' && value !== null && !isArray(value)\n\n/**\n * 检查是否为 KeyMap 数组\n */\nexport const isKeyMapArray = (value: unknown): value is KeyMap[] =>\n isArray(value) &&\n value.every((item) => typeof item === 'object' && item !== null)\n\n/**\n * 检查是否为 ObjectKey 数组\n */\nexport const isObjectKeyArray = (value: unknown): value is ObjectKey[] =>\n isArray(value) &&\n value.every((item) => typeof item === 'string' || typeof item === 'number')\n\nexport const stableSerialize = (value: unknown): string => {\n if (value === null || typeof value !== 'object') {\n return String(value)\n }\n try {\n if (isArray(value)) {\n return JSON.stringify(value)\n }\n if (isKeyMap(value)) {\n const keys = Object.keys(value).sort()\n const obj: Record<string, unknown> = {}\n const len = keys.length\n for (let i = 0; i < len; i++) {\n const k = keys[i]\n obj[k] = value[k]\n }\n return JSON.stringify(obj)\n }\n return '[Unsupported Object]'\n } catch {\n return '[Circular Object/Value]'\n }\n}\n\nconst extractUniqueKey = (\n item: KeyMap,\n uniqueKey: string\n): ObjectKey | undefined => {\n if (!isKeyMap(item)) return undefined\n\n const val = item[uniqueKey]\n if (isObjectKey(val)) {\n return val\n }\n\n if (uniqueKey.includes('.')) {\n const deepVal = getObjectDeepValue(item, uniqueKey)\n if (isObjectKey(deepVal)) {\n return deepVal\n }\n }\n return undefined\n}\n\nexport const isObjectResult = (\n data: unknown\n): data is Record<string, unknown> => {\n if (typeof data !== 'object' || data === null) {\n return false\n }\n // 这是一个比较特定的检查,检查是否 *没有* 'result' 属性且是对象\n // 原逻辑保留,但通常 API 响应应该包含 result\n return !Object.prototype.hasOwnProperty.call(data, 'result')\n}\n\nexport const generateDefaultField = <T = any>(\n opts: Partial<DefaultField<T>> = {}\n): DefaultField<T> => ({\n result: [] as unknown as T, // 默认为空数组,但强制转换为泛型 T\n noMore: false,\n nothing: false,\n loading: false,\n error: null,\n extra: null,\n fetched: false,\n page: 0,\n total: 0,\n ...opts\n})\n\nexport const generateFieldName = <P extends RequestParams, R>({\n func,\n query\n}: {\n func: ApiContract<P, R>\n query?: P\n}): string => {\n let result = func.id\n if (!query) {\n return result\n }\n // 强制转换为 Record 以便遍历\n const queryObj = query as Record<string, unknown>\n const filteredKeys = Object.keys(queryObj)\n .filter((key) => !func.paramsIgnore.includes(key))\n .sort()\n\n const len = filteredKeys.length\n for (let i = 0; i < len; i++) {\n const key = filteredKeys[i]\n const value = queryObj[key]\n let safeValue: string\n\n if (typeof value === 'object' && value !== null) {\n safeValue = stableSerialize(value)\n } else {\n safeValue = String(value)\n }\n\n const encoded = encodeURIComponent(safeValue)\n result += `-${key}-${encoded}`\n }\n\n return result\n}\n\nexport const getObjectDeepValue = (\n field: unknown,\n keys: string | string[]\n): unknown => {\n if (!keys || (isArray(keys) && keys.length === 0)) {\n return field\n }\n\n const keysArr = isArray(keys) ? keys : keys.split('.')\n let result: any = field\n const len = keysArr.length\n\n for (let i = 0; i < len; i++) {\n if (result == null || typeof result !== 'object') {\n return undefined\n }\n // 这里不再严格检查 isKeyMap,因为只要是对象就可以取值\n result = result[keysArr[i]]\n }\n\n return result\n}\n\nexport const updateObjectDeepValue = (\n field: KeyMap,\n changeKey: string,\n value: unknown\n): void => {\n if (!changeKey) return\n\n const keys = changeKey.split('.')\n const lastKey = keys.pop()\n if (!lastKey) return\n\n let current: KeyMap = field\n const len = keys.length\n\n for (let i = 0; i < len; i++) {\n const key = keys[i]\n const currentVal = current[key]\n if (currentVal == null || typeof currentVal !== 'object') {\n current[key] = {}\n }\n const next = current[key]\n if (isKeyMap(next)) {\n current = next\n } else {\n return\n }\n }\n\n if (current != null && typeof current === 'object') {\n current[lastKey] = value\n }\n}\n\nexport const searchValueByKey = (\n result: any[] | Record<string, any>,\n id: ObjectKey,\n key: string\n): unknown => {\n if (isArray(result)) {\n const index = computeMatchedItemIndex(id, result, key)\n return index >= 0 ? result[index] : undefined\n }\n if (isResultObject(result)) {\n return result[String(id)]\n }\n return undefined\n}\n\nexport const computeMatchedItemIndex = (\n itemId: ObjectKey,\n fieldArr: any[],\n changingKey: string\n): number => {\n const stringifiedItemId = String(itemId)\n const len = fieldArr.length\n\n for (let i = 0; i < len; i++) {\n const item = fieldArr[i]\n if (!isKeyMap(item)) continue\n\n const itemValue = getObjectDeepValue(item, changingKey)\n if (String(itemValue) === stringifiedItemId) {\n return i\n }\n }\n\n return -1\n}\n\nexport const combineArrayData = (\n fieldArray: any[],\n value: any[] | Record<ObjectKey, KeyMap>,\n changingKey: string\n): void => {\n const fieldArrayMap = new Map<string, number>()\n const arrLen = fieldArray.length\n\n for (let i = 0; i < arrLen; i++) {\n const item = fieldArray[i]\n if (!isKeyMap(item)) continue\n const id = getObjectDeepValue(item, changingKey)\n if (id !== undefined) {\n fieldArrayMap.set(String(id), i)\n }\n }\n\n if (isArray(value)) {\n const valLen = value.length\n for (let i = 0; i < valLen; i++) {\n const col = value[i]\n if (!isKeyMap(col)) continue\n const stringifyId = String(getObjectDeepValue(col, changingKey))\n\n const index = fieldArrayMap.get(stringifyId)\n\n if (index !== undefined) {\n const existingItem = fieldArray[index]\n if (isKeyMap(existingItem)) {\n Object.assign(existingItem, col)\n }\n }\n }\n } else if (isKeyMap(value)) {\n const entries = Object.entries(value)\n const entLen = entries.length\n for (let i = 0; i < entLen; i++) {\n const [uniqueId, col] = entries[i]\n if (!isKeyMap(col)) continue\n\n const index = fieldArrayMap.get(uniqueId)\n\n if (index !== undefined) {\n const existingItem = fieldArray[index]\n if (isKeyMap(existingItem)) {\n Object.assign(existingItem, col)\n }\n }\n }\n }\n}\n\nexport const setReactivityField = (\n field: DefaultField,\n key: FieldKeys,\n value: unknown,\n type: FetchType,\n insertBefore: boolean\n): void => {\n const fieldAny = field as any // 为了动态赋值,暂时断言为 any\n\n if (type === ENUM.FETCH_TYPE.PAGINATION) {\n fieldAny[key] = value\n return\n }\n\n if (key !== ENUM.FIELD_DATA.RESULT_KEY) {\n if (isArray(value)) {\n const current = fieldAny[key]\n const currentArr = isArray(current) ? current : []\n const newValue = insertBefore\n ? [...value, ...currentArr]\n : [...currentArr, ...value]\n fieldAny[key] = newValue\n } else {\n fieldAny[key] = value\n }\n return\n }\n\n // Handle Result Logic\n const resultField = field.result\n const valueObj = value as KeyMap\n\n if (isArray(value)) {\n const currentArr = isArray(resultField) ? resultField : []\n const valueArr = value as KeyMap[]\n\n if (insertBefore) {\n if (valueArr.length === 0) return\n if (currentArr.length === 0) {\n field.result = valueArr as any\n return\n }\n field.result = valueArr.concat(currentArr) as any\n } else {\n if (valueArr.length === 0) return\n if (currentArr.length === 0) {\n field.result = valueArr as any\n return\n }\n field.result = currentArr.concat(valueArr) as any\n }\n return\n }\n\n // Handle Object Result Logic\n let target = resultField as Record<string, any>\n if (isArray(resultField)) {\n target = {}\n field.result = target as any\n } else if (typeof resultField !== 'object' || resultField === null) {\n target = {}\n field.result = target as any\n }\n\n const keys = Object.keys(valueObj)\n const len = keys.length\n for (let i = 0; i < len; i++) {\n const subKey = keys[i]\n const existing = target[subKey]\n const incoming = valueObj[subKey]\n\n if (existing !== undefined) {\n if (insertBefore) {\n target[subKey] =\n isArray(incoming) && isArray(existing)\n ? [...incoming, ...existing]\n : incoming\n } else {\n target[subKey] =\n isArray(existing) && isArray(incoming)\n ? [...existing, ...incoming]\n : incoming\n }\n } else {\n target[subKey] = incoming\n }\n }\n}\n\nexport const computeResultLength = (data: unknown): number => {\n if (isArray(data)) {\n return data.length\n }\n if (isKeyMap(data)) {\n let acc = 0\n const values = Object.values(data)\n const len = values.length\n for (let i = 0; i < len; i++) {\n const val = values[i]\n if (isArray(val)) {\n acc += val.length\n }\n }\n return acc\n }\n return 0\n}\n\nconst getSeenIdsString = (arr: any[], uniqueKey: string): string => {\n if (!isArray(arr)) return ''\n const ids: ObjectKey[] = []\n const len = arr.length\n\n for (let i = 0; i < len; i++) {\n const id = extractUniqueKey(arr[i], uniqueKey)\n if (id !== undefined) {\n ids.push(id)\n }\n }\n return ids.join(',')\n}\n\nexport const generateRequestParams = ({\n field,\n uniqueKey = ENUM.DEFAULT_UNIQUE_KEY_NAME,\n query = {},\n is_up = false,\n type\n}: GenerateParamsType): GenerateParamsResp => {\n const result: GenerateParamsResp = { ...query }\n const isFetched = field.fetched\n const fieldResultAny = field.result as any // 内部逻辑断言\n\n const getSafeObjectKey = (item: unknown): ObjectKey | undefined => {\n return extractUniqueKey(item as KeyMap, uniqueKey)\n }\n\n if (isFetched) {\n if (type === ENUM.FETCH_TYPE.AUTO) {\n if (isArray(fieldResultAny)) {\n result.seen_ids = getSeenIdsString(fieldResultAny, uniqueKey)\n const targetIndex = is_up ? 0 : fieldResultAny.length - 1\n const targetItem = fieldResultAny[targetIndex]\n result.since_id = getSafeObjectKey(targetItem)\n }\n result.is_up = is_up ? 1 : 0\n result.page = typeof query.page === 'number' ? query.page : field.page + 1\n } else if (type === ENUM.FETCH_TYPE.HAS_LOADED_IDS) {\n if (isArray(fieldResultAny)) {\n result.seen_ids = getSeenIdsString(fieldResultAny, uniqueKey)\n }\n } else if (type === ENUM.FETCH_TYPE.SINCE_FIRST_OR_END_ID) {\n if (isArray(fieldResultAny)) {\n const targetIndex = is_up ? 0 : fieldResultAny.length - 1\n const targetItem = fieldResultAny[targetIndex]\n result.since_id = getSafeObjectKey(targetItem)\n }\n result.is_up = is_up ? 1 : 0\n } else if (type === ENUM.FETCH_TYPE.PAGINATION) {\n result.page = typeof query.page === 'number' ? query.page : undefined\n } else if (type === ENUM.FETCH_TYPE.SCROLL_LOAD_MORE) {\n result.page = field.page + 1\n }\n } else {\n if (type === ENUM.FETCH_TYPE.AUTO) {\n result.seen_ids = ''\n result.since_id = isObjectKey(query.sinceId) ? query.sinceId : ''\n result.is_up = is_up ? 1 : 0\n result.page =\n typeof query.page === 'number' ? query.page : field.page || 1\n } else if (type === ENUM.FETCH_TYPE.HAS_LOADED_IDS) {\n result.seen_ids = ''\n } else if (type === ENUM.FETCH_TYPE.SINCE_FIRST_OR_END_ID) {\n result.since_id = isObjectKey(query.sinceId) ? query.sinceId : ''\n result.is_up = is_up ? 1 : 0\n } else if (type === ENUM.FETCH_TYPE.PAGINATION) {\n result.page = typeof query.page === 'number' ? query.page : field.page\n } else if (type === ENUM.FETCH_TYPE.SCROLL_LOAD_MORE) {\n result.page = 1\n }\n }\n\n return result\n}\n\nexport const toObjectKey = (\n id: ObjectKey | ObjectKey[] | undefined\n): ObjectKey | undefined => {\n if (id === undefined) return undefined\n if (isObjectKey(id)) return id\n if (isObjectKeyArray(id) && id.length > 0) return id[0]\n return undefined\n}\n\nexport const getResultAsArray = (field: DefaultField): any[] | null => {\n const result = field[ENUM.FIELD_DATA.RESULT_KEY]\n return isArray(result) ? result : null\n}\n\nexport const updateArrayItem = (\n arr: any[],\n index: number,\n updater: (item: KeyMap) => KeyMap\n): void => {\n if (index >= 0 && index < arr.length) {\n const item = arr[index]\n if (isKeyMap(item)) {\n arr[index] = updater(item)\n }\n }\n}\n","// setters.ts\nimport ENUM from './enum'\nimport {\n computeResultLength,\n isObjectResult,\n setReactivityField\n} from './utils'\n\nimport type { BaseApiResponse, SetDataType, SetErrorType } from './types'\n\nexport const SET_DATA = ({\n getter,\n setter,\n data,\n fieldName,\n type,\n page,\n insertBefore\n}: SetDataType): Promise<void> => {\n return new Promise((resolve, reject) => {\n const fieldData = getter(fieldName)\n if (!fieldData) {\n reject(new Error(`Field ${fieldName} not found.`))\n return\n }\n\n // 强制类型转换以进行写入\n const field = fieldData\n\n let result: any\n let extra: unknown\n\n if (isObjectResult(data)) {\n result = data\n field.nothing = false\n field.fetched = true\n field.noMore = true\n field.page = -1\n } else {\n const apiResponse = data as BaseApiResponse\n result = apiResponse.result\n extra = apiResponse.extra\n const isEmpty = computeResultLength(result) === 0\n field.nothing = field.fetched ? false : isEmpty\n field.fetched = true\n field.total = apiResponse.total || 0\n\n if (type === ENUM.FETCH_TYPE.PAGINATION) {\n field.noMore = false\n field.page = +page\n } else {\n field.noMore =\n typeof apiResponse.no_more === 'undefined'\n ? isEmpty\n : apiResponse.no_more || isEmpty\n field.page = field.page + 1\n }\n }\n\n field.loading = false\n\n setReactivityField(\n field,\n ENUM.FIELD_DATA.RESULT_KEY,\n result,\n type,\n insertBefore\n )\n\n if (extra !== undefined && extra !== null) {\n setReactivityField(\n field,\n ENUM.FIELD_DATA.EXTRA_KEY,\n extra,\n type,\n insertBefore\n )\n }\n\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.RESET,\n value: field,\n callback: () => {\n resolve()\n }\n })\n })\n}\n\nexport const SET_ERROR = ({ setter, fieldName, error }: SetErrorType): void => {\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.MERGE,\n value: {\n error,\n loading: false\n }\n })\n}\n","import ENUM from './enum'\nimport { SET_DATA, SET_ERROR } from './setters'\nimport {\n combineArrayData,\n computeMatchedItemIndex,\n computeResultLength,\n generateDefaultField,\n generateRequestParams,\n getObjectDeepValue,\n getResultAsArray,\n isArray,\n isKeyMap,\n isKeyMapArray,\n isObjectKey,\n isObjectKeyArray,\n searchValueByKey,\n stableSerialize,\n toObjectKey,\n updateArrayItem,\n updateObjectDeepValue\n} from './utils'\n\nimport type {\n ApiContract,\n BaseApiResponse,\n DefaultField,\n FetchType,\n InitDataType,\n InitStateType,\n KeyMap,\n LoadMoreType,\n ObjectKey,\n RequestParams,\n UpdateStateType\n} from './types'\n\n// --- 辅助函数:生成字段名 ---\nexport const generateFieldName = <P extends RequestParams, R>({\n func,\n query\n}: {\n func: ApiContract<P, R>\n query?: P\n}): string => {\n let result = func.id\n if (!query) return result\n\n const queryObj = query as Record<string, unknown>\n const filteredKeys = Object.keys(queryObj)\n .filter((key) => !func.paramsIgnore.includes(key))\n .sort()\n\n for (const key of filteredKeys) {\n const value = queryObj[key]\n const safeValue =\n typeof value === 'object' && value !== null\n ? stableSerialize(value)\n : String(value)\n result += `-${key}-${encodeURIComponent(safeValue)}`\n }\n return result\n}\n\n// --- API 构造器 ---\nexport const createApi = <P extends RequestParams, R>(options: {\n id: string\n type?: FetchType\n uniqueKey?: string\n is_up?: boolean\n paramsIgnore?: string[]\n fetcher: (params: P) => Promise<BaseApiResponse<R>>\n}): ApiContract<P, R> => {\n const fn = ((params: P) => options.fetcher(params)) as ApiContract<P, R>\n\n const metadata: Partial<ApiContract<P, R>> = {\n id: options.id,\n type: options.type || (ENUM.FETCH_TYPE.SCROLL_LOAD_MORE as FetchType),\n uniqueKey: options.uniqueKey || ENUM.DEFAULT_UNIQUE_KEY_NAME,\n is_up: options.is_up || false,\n paramsIgnore: [\n 'page',\n 'since_id',\n 'seen_ids',\n '__refresh__',\n '__reload__',\n ...(options.paramsIgnore || [])\n ]\n }\n\n return Object.freeze(Object.assign(fn, metadata))\n}\n\n// --- 核心 Action:initState ---\nexport const initState = <P extends RequestParams, R>({\n getter,\n setter,\n func,\n query,\n opts\n}: InitStateType<P, R>): Promise<void> => {\n return new Promise((resolve) => {\n const fieldName = generateFieldName({ func, query })\n if (getter(fieldName)) return resolve()\n\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.RESET,\n value: generateDefaultField(opts),\n callback: () => resolve()\n })\n })\n}\n\n// --- 核心 Action:initData ---\nexport const initData = <P extends RequestParams, R>({\n getter,\n setter,\n func,\n query,\n callback\n}: InitDataType<P, R>): Promise<void> =>\n new Promise((resolve, reject) => {\n const fieldName = generateFieldName({ func, query })\n const fieldData = getter(fieldName)\n\n const doRefresh = !!query?.__refresh__\n const needReset = !!query?.__reload__\n const directlyLoadData = doRefresh && !needReset\n\n if (fieldData && fieldData.error && !doRefresh) return resolve()\n if (fieldData && fieldData.loading) return resolve()\n if (fieldData && fieldData.fetched && !doRefresh) return resolve()\n\n const params = generateRequestParams({\n field: generateDefaultField({ ...fieldData, fetched: false }),\n uniqueKey: func.uniqueKey,\n type: func.type,\n is_up: func.is_up,\n query: query as KeyMap\n })\n\n const executeFetch = () => {\n func(params as P)\n .then((data) => {\n const commitData = () => {\n SET_DATA({\n getter,\n setter,\n data: data as BaseApiResponse,\n fieldName,\n type: func.type,\n page: params.page || 0,\n insertBefore: false\n }).then(() => {\n callback?.({ params: params as P, data, refresh: doRefresh })\n resolve()\n })\n }\n\n if (directlyLoadData) {\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.RESET,\n value: generateDefaultField(),\n callback: commitData\n })\n } else {\n commitData()\n }\n })\n .catch((error: Error) => {\n SET_ERROR({ setter, fieldName, error })\n reject(error)\n })\n }\n\n if (directlyLoadData) {\n executeFetch()\n } else {\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.RESET,\n value: { ...generateDefaultField(), loading: true, error: null },\n callback: executeFetch\n })\n }\n })\n\n// --- 核心 Action:loadMore ---\nexport const loadMore = <P extends RequestParams, R>({\n getter,\n setter,\n query,\n func,\n errorRetry,\n callback\n}: LoadMoreType<P, R>): Promise<void> =>\n new Promise((resolve, reject) => {\n const fieldName = generateFieldName({ func, query })\n const fieldData = getter(fieldName)\n if (!fieldData || fieldData.loading || fieldData.nothing) return resolve()\n if (fieldData.noMore && !errorRetry) return resolve()\n\n const type = func.type\n if (\n type === ENUM.FETCH_TYPE.PAGINATION &&\n query?.page != null &&\n Number(query.page) === fieldData.page\n ) {\n return resolve()\n }\n\n const loadingState: Partial<DefaultField> =\n type === ENUM.FETCH_TYPE.PAGINATION\n ? { loading: true, error: null, result: [], extra: null }\n : { loading: true, error: null }\n\n const params = generateRequestParams({\n field: fieldData,\n uniqueKey: func.uniqueKey,\n type,\n is_up: func.is_up,\n query: query as KeyMap\n })\n\n if (fieldData.extra) params.extra = fieldData.extra\n\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.MERGE,\n value: loadingState,\n callback: () => {\n func(params as P)\n .then((data) => {\n SET_DATA({\n getter,\n setter,\n data: data as BaseApiResponse,\n type,\n fieldName,\n page: params.page || 0,\n insertBefore: func.is_up\n }).then(() => {\n callback?.({ params: params as P, data, refresh: false })\n resolve()\n })\n })\n .catch((error: Error) => {\n SET_ERROR({ setter, fieldName, error })\n reject(error)\n })\n }\n })\n })\n\n// --- 核心 Action:updateState ---\nexport const updateState = <P extends RequestParams, R>({\n getter,\n setter,\n func,\n query,\n method,\n id,\n value,\n changeKey\n}: UpdateStateType<P, R>): Promise<unknown> => {\n return new Promise((resolve, reject) => {\n const fieldName = generateFieldName({ func, query })\n const fieldData = getter(fieldName)\n if (!fieldData) {\n reject(new Error(`Field ${fieldName} not found.`))\n return\n }\n\n if (fieldData.page === -1) {\n resolve(null)\n return\n }\n\n const _id = id\n const _uniqueKey = func.uniqueKey || ENUM.DEFAULT_UNIQUE_KEY_NAME\n const _changeKey = changeKey || ENUM.FIELD_DATA.RESULT_KEY\n const beforeLength = computeResultLength(\n fieldData[ENUM.FIELD_DATA.RESULT_KEY]\n )\n\n const newFieldData: DefaultField = { ...fieldData }\n const resultArray = getResultAsArray(newFieldData)\n\n if (method === ENUM.CHANGE_TYPE.SEARCH_FIELD) {\n const objectKeyId = toObjectKey(_id)\n if (objectKeyId === undefined) {\n reject(new Error('ID is required for SEARCH_FIELD.'))\n return\n }\n const searchResult = resultArray\n ? searchValueByKey(resultArray, objectKeyId, _uniqueKey)\n : undefined\n resolve(searchResult)\n return // 搜索操作不需要更新状态\n } else if (method === ENUM.CHANGE_TYPE.RESULT_UPDATE_KV) {\n const objectKeyId = toObjectKey(_id)\n if (objectKeyId === undefined) {\n reject(new Error('ID is required for RESULT_UPDATE_KV.'))\n return\n }\n if (resultArray) {\n const matchedIndex = computeMatchedItemIndex(\n objectKeyId,\n resultArray,\n _uniqueKey\n )\n if (matchedIndex >= 0 && isKeyMap(resultArray[matchedIndex])) {\n updateObjectDeepValue(resultArray[matchedIndex], _changeKey, value)\n }\n }\n resolve(null)\n } else if (method === ENUM.CHANGE_TYPE.RESULT_ITEM_MERGE) {\n const objectKeyId = toObjectKey(_id)\n if (objectKeyId === undefined) {\n reject(new Error('ID is required for RESULT_ITEM_MERGE.'))\n return\n }\n if (resultArray && isKeyMap(value)) {\n const matchedIndex = computeMatchedItemIndex(\n objectKeyId,\n resultArray,\n _uniqueKey\n )\n updateArrayItem(resultArray, matchedIndex, (item) => ({\n ...item,\n ...value\n }))\n }\n resolve(null)\n } else if (method === ENUM.CHANGE_TYPE.RESET_FIELD) {\n // 使用特定字段更新而不是通用 KeyMap\n if (_changeKey === ENUM.FIELD_DATA.RESULT_KEY && isKeyMapArray(value)) {\n newFieldData.result = value\n } else if (_changeKey === ENUM.FIELD_DATA.EXTRA_KEY && isKeyMap(value)) {\n newFieldData.extra = value\n }\n resolve(null)\n } else {\n // 获取要修改的值\n let modifyValue: unknown\n if (_changeKey === ENUM.FIELD_DATA.RESULT_KEY) {\n modifyValue = newFieldData.result\n } else if (_changeKey === ENUM.FIELD_DATA.EXTRA_KEY) {\n modifyValue = newFieldData.extra\n } else {\n modifyValue = getObjectDeepValue(newFieldData, _changeKey)\n }\n if (modifyValue == null) {\n modifyValue = []\n }\n\n const objectKeyId = toObjectKey(_id)\n const matchedIndex =\n objectKeyId !== undefined && isKeyMapArray(modifyValue)\n ? computeMatchedItemIndex(objectKeyId, modifyValue, _uniqueKey)\n : -1\n\n switch (method) {\n case ENUM.CHANGE_TYPE.RESULT_ADD_AFTER:\n if (isArray(modifyValue)) {\n modifyValue = isArray(value)\n ? [...modifyValue, ...value]\n : [...modifyValue, value]\n }\n break\n case ENUM.CHANGE_TYPE.RESULT_ADD_BEFORE:\n if (isArray(modifyValue)) {\n modifyValue = isArray(value)\n ? [...value, ...modifyValue]\n : [value, ...modifyValue]\n }\n break\n case ENUM.CHANGE_TYPE.RESULT_REMOVE_BY_ID:\n if (isKeyMapArray(modifyValue)) {\n if (matchedIndex >= 0) {\n modifyValue.splice(matchedIndex, 1)\n } else if (isObjectKeyArray(_id)) {\n const idSet = new Set<ObjectKey>(_id)\n modifyValue = modifyValue.filter((item) => {\n const itemKey = getObjectDeepValue(item, _uniqueKey)\n return !isObjectKey(itemKey) || !idSet.has(itemKey)\n })\n }\n }\n break\n case ENUM.CHANGE_TYPE.RESULT_INSERT_TO_BEFORE:\n if (isArray(modifyValue) && matchedIndex >= 0) {\n modifyValue.splice(matchedIndex, 0, value)\n }\n break\n case ENUM.CHANGE_TYPE.RESULT_INSERT_TO_AFTER:\n if (isArray(modifyValue) && matchedIndex >= 0) {\n modifyValue.splice(matchedIndex + 1, 0, value)\n }\n break\n case ENUM.CHANGE_TYPE.RESULT_LIST_MERGE:\n if (isKeyMapArray(modifyValue)) {\n if (isKeyMapArray(value)) {\n combineArrayData(modifyValue, value, _uniqueKey)\n } else if (isKeyMap(value)) {\n // value 是 KeyMap,需要检查是否为 Record<ObjectKey, KeyMap>\n const valueAsRecord: Record<ObjectKey, KeyMap> = {}\n for (const [k, v] of Object.entries(value)) {\n if (isKeyMap(v)) {\n valueAsRecord[k] = v\n }\n }\n combineArrayData(modifyValue, valueAsRecord, _uniqueKey)\n }\n }\n break\n default:\n resolve(null)\n return\n }\n // 更新对应字段的值\n if (\n _changeKey === ENUM.FIELD_DATA.RESULT_KEY &&\n isKeyMapArray(modifyValue)\n ) {\n newFieldData.result = modifyValue\n } else if (\n _changeKey === ENUM.FIELD_DATA.EXTRA_KEY &&\n isKeyMap(modifyValue)\n ) {\n newFieldData.extra = modifyValue\n }\n resolve(null)\n }\n\n const afterLength = computeResultLength(\n newFieldData[ENUM.FIELD_DATA.RESULT_KEY]\n )\n newFieldData.total = newFieldData.total + afterLength - beforeLength\n newFieldData.nothing = afterLength === 0\n\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.RESET,\n value: newFieldData,\n callback: () => {\n resolve(null)\n }\n })\n })\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/enum.ts","../src/utils.ts","../src/setters.ts","../src/actions.ts"],"names":["generateFieldName"],"mappings":"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","file":"index.global.js","sourcesContent":["// enum.ts\nconst FETCH_TYPE_ARRAY = ['jump', 'sinceId', 'page', 'seenIds', 'auto'] as const\n\nexport default {\n SETTER_TYPE: {\n RESET: 0,\n MERGE: 1\n } as const,\n FETCH_TYPE_ARRAY,\n FETCH_TYPE: {\n PAGINATION: FETCH_TYPE_ARRAY[0],\n SINCE_FIRST_OR_END_ID: FETCH_TYPE_ARRAY[1],\n SCROLL_LOAD_MORE: FETCH_TYPE_ARRAY[2],\n HAS_LOADED_IDS: FETCH_TYPE_ARRAY[3],\n AUTO: FETCH_TYPE_ARRAY[4]\n } as const,\n CHANGE_TYPE: {\n SEARCH_FIELD: 'search',\n RESET_FIELD: 'reset',\n RESULT_UPDATE_KV: 'update',\n RESULT_ADD_AFTER: 'push',\n RESULT_ADD_BEFORE: 'unshift',\n RESULT_REMOVE_BY_ID: 'delete',\n RESULT_INSERT_TO_BEFORE: 'insert-before',\n RESULT_INSERT_TO_AFTER: 'insert-after',\n RESULT_LIST_MERGE: 'patch',\n RESULT_ITEM_MERGE: 'merge'\n } as const,\n FIELD_DATA: {\n RESULT_KEY: 'result',\n EXTRA_KEY: 'extra'\n } as const,\n DEFAULT_UNIQUE_KEY_NAME: 'id'\n} as const\n","// utils.ts\nimport ENUM from './enum'\nimport type {\n ApiContract,\n DefaultField,\n FetchType,\n FieldKeys,\n GenerateParamsResp,\n GenerateParamsType,\n KeyMap,\n ObjectKey,\n RequestParams\n} from './types'\n\n// ========== 类型守卫函数 ==========\n\nexport const isArray = (data: unknown): data is any[] => Array.isArray(data)\n\n/**\n * 检查是否为对象结果\n */\nexport const isResultObject = (data: unknown): data is Record<string, any> =>\n !isArray(data) && typeof data === 'object' && data !== null\n\n/**\n * 检查是否为 ObjectKey\n */\nexport const isObjectKey = (value: unknown): value is ObjectKey =>\n typeof value === 'string' || typeof value === 'number'\n\n/**\n * 检查是否为 KeyMap\n */\nexport const isKeyMap = (value: unknown): value is KeyMap =>\n typeof value === 'object' && value !== null && !isArray(value)\n\n/**\n * 检查是否为 KeyMap 数组\n * 性能优化:使用 for 循环替代 every,提前退出\n */\nexport const isKeyMapArray = (value: unknown): value is KeyMap[] => {\n if (!isArray(value)) return false\n const len = value.length\n for (let i = 0; i < len; i++) {\n const item = value[i]\n if (typeof item !== 'object' || item === null) {\n return false\n }\n }\n return true\n}\n\n/**\n * 检查是否为 ObjectKey 数组\n * 性能优化:使用 for 循环替代 every,提前退出\n */\nexport const isObjectKeyArray = (value: unknown): value is ObjectKey[] => {\n if (!isArray(value)) return false\n const len = value.length\n for (let i = 0; i < len; i++) {\n const item = value[i]\n const itemType = typeof item\n if (itemType !== 'string' && itemType !== 'number') {\n return false\n }\n }\n return true\n}\n\nexport const stableSerialize = (value: unknown): string => {\n if (value === null || typeof value !== 'object') {\n return String(value)\n }\n try {\n if (isArray(value)) {\n return JSON.stringify(value)\n }\n if (isKeyMap(value)) {\n const keys = Object.keys(value).sort()\n const obj: Record<string, unknown> = {}\n const len = keys.length\n for (let i = 0; i < len; i++) {\n const k = keys[i]\n obj[k] = value[k]\n }\n return JSON.stringify(obj)\n }\n return '[Unsupported Object]'\n } catch {\n return '[Circular Object/Value]'\n }\n}\n\nconst extractUniqueKey = (\n item: KeyMap,\n uniqueKey: string\n): ObjectKey | undefined => {\n if (!isKeyMap(item)) return undefined\n\n const val = item[uniqueKey]\n if (isObjectKey(val)) {\n return val\n }\n\n if (uniqueKey.includes('.')) {\n const deepVal = getObjectDeepValue(item, uniqueKey)\n if (isObjectKey(deepVal)) {\n return deepVal\n }\n }\n return undefined\n}\n\nexport const isObjectResult = (\n data: unknown\n): data is Record<string, unknown> => {\n if (typeof data !== 'object' || data === null) {\n return false\n }\n // 这是一个比较特定的检查,检查是否 *没有* 'result' 属性且是对象\n // 原逻辑保留,但通常 API 响应应该包含 result\n return !Object.prototype.hasOwnProperty.call(data, 'result')\n}\n\nexport const generateDefaultField = <T = any>(\n opts: Partial<DefaultField<T>> = {}\n): DefaultField<T> => ({\n result: [] as unknown as T, // 默认为空数组,但强制转换为泛型 T\n noMore: false,\n nothing: false,\n loading: false,\n error: null,\n extra: null,\n fetched: false,\n page: 0,\n total: 0,\n ...opts\n})\n\nexport const generateFieldName = <P extends RequestParams, R>({\n func,\n query\n}: {\n func: ApiContract<P, R>\n query?: P\n}): string => {\n // 快速路径:无 query\n if (!query) {\n return func.id\n }\n\n // 计算 fieldName\n let result = func.id\n const keys = Object.keys(query)\n const paramsIgnore = func.paramsIgnore\n const filteredKeys: string[] = []\n\n // 优化:减少闭包创建,直接过滤\n const keysLen = keys.length\n for (let i = 0; i < keysLen; i++) {\n const key = keys[i]\n if (!paramsIgnore.includes(key)) {\n filteredKeys.push(key)\n }\n }\n\n // 排序保证稳定性\n filteredKeys.sort()\n\n const len = filteredKeys.length\n for (let i = 0; i < len; i++) {\n const key = filteredKeys[i]\n const value = query[key]\n let safeValue: string\n\n if (typeof value === 'object' && value !== null) {\n safeValue = stableSerialize(value)\n } else {\n safeValue = String(value)\n }\n\n const encoded = encodeURIComponent(safeValue)\n result += `-${key}-${encoded}`\n }\n\n return result\n}\n\nexport const getObjectDeepValue = (\n field: unknown,\n keys: string | string[]\n): unknown => {\n if (!keys || (Array.isArray(keys) && (keys as string[]).length === 0))\n return field\n\n const keysArr = Array.isArray(keys)\n ? (keys as string[])\n : (keys as string).split('.')\n let cur: any = field\n for (let i = 0, n = keysArr.length; i < n; ++i) {\n if (cur == null || typeof cur !== 'object') return undefined\n cur = cur[keysArr[i]]\n }\n\n return cur\n}\n\nexport const updateObjectDeepValue = (\n field: KeyMap,\n changeKey: string,\n value: unknown\n): void => {\n if (!changeKey) return\n\n const keys = changeKey.split('.')\n const lastKey = keys.pop()\n if (!lastKey) return\n\n let current: KeyMap = field\n const len = keys.length\n\n for (let i = 0; i < len; i++) {\n const key = keys[i]\n const currentVal = current[key]\n if (currentVal == null || typeof currentVal !== 'object') {\n current[key] = {}\n }\n const next = current[key]\n if (isKeyMap(next)) {\n current = next\n } else {\n return\n }\n }\n\n if (current != null && typeof current === 'object') {\n current[lastKey] = value\n }\n}\n\nexport const searchValueByKey = (\n result: any[] | Record<string, any>,\n id: ObjectKey,\n key: string\n): unknown => {\n if (isArray(result)) {\n const index = computeMatchedItemIndex(id, result, key)\n return index >= 0 ? result[index] : undefined\n }\n if (isResultObject(result)) {\n return result[String(id)]\n }\n return undefined\n}\n\n/**\n * 查找匹配项的索引\n * 性能优化:\n * 1. 提前字符串化避免重复转换\n * 2. 优化简单 key 的访问路径(无需 split)\n * 3. 减少函数调用开销\n */\nexport const computeMatchedItemIndex = (\n itemId: ObjectKey,\n fieldArr: any[],\n changingKey: string\n): number => {\n const stringifiedItemId = String(itemId)\n const len = fieldArr.length\n const isSimpleKey = !changingKey.includes('.')\n\n // 快速路径:简单 key(无需深度访问)\n if (isSimpleKey) {\n for (let i = 0; i < len; i++) {\n const item = fieldArr[i]\n if (!isKeyMap(item)) continue\n if (String(item[changingKey]) === stringifiedItemId) {\n return i\n }\n }\n } else {\n // 慢速路径:深度 key\n for (let i = 0; i < len; i++) {\n const item = fieldArr[i]\n if (!isKeyMap(item)) continue\n const itemValue = getObjectDeepValue(item, changingKey)\n if (String(itemValue) === stringifiedItemId) {\n return i\n }\n }\n }\n\n return -1\n}\n\n/**\n * 合并数组数据\n * 性能优化:\n * 1. 使用 Map 进行 O(1) 查找\n * 2. 创建新对象确保响应式\n * 3. 缓存 changingKey 的解析结果\n */\nexport const combineArrayData = (\n fieldArray: any[],\n value: any[] | Record<ObjectKey, KeyMap>,\n changingKey: string\n): void => {\n const fieldArrayMap = new Map<string, number>()\n const arrLen = fieldArray.length\n\n // 构建索引 Map,复用 changingKey 解析\n for (let i = 0; i < arrLen; i++) {\n const item = fieldArray[i]\n if (!isKeyMap(item)) continue\n const id = getObjectDeepValue(item, changingKey)\n if (id !== undefined) {\n fieldArrayMap.set(String(id), i)\n }\n }\n\n if (isArray(value)) {\n const valLen = value.length\n for (let i = 0; i < valLen; i++) {\n const col = value[i]\n if (!isKeyMap(col)) continue\n const stringifyId = String(getObjectDeepValue(col, changingKey))\n\n const index = fieldArrayMap.get(stringifyId)\n\n if (index !== undefined) {\n const existingItem = fieldArray[index]\n if (isKeyMap(existingItem)) {\n // ✅ 创建新对象确保响应式\n fieldArray[index] = { ...existingItem, ...col }\n }\n }\n }\n } else if (isKeyMap(value)) {\n const entries = Object.entries(value)\n const entLen = entries.length\n for (let i = 0; i < entLen; i++) {\n const [uniqueId, col] = entries[i]\n if (!isKeyMap(col)) continue\n\n const index = fieldArrayMap.get(uniqueId)\n\n if (index !== undefined) {\n const existingItem = fieldArray[index]\n if (isKeyMap(existingItem)) {\n // ✅ 创建新对象确保响应式\n fieldArray[index] = { ...existingItem, ...col }\n }\n }\n }\n }\n}\n\n/**\n * 设置响应式字段\n * 性能优化:\n * 1. 快速路径优化常见场景\n * 2. 减少条件判断\n * 3. 使用原生方法 concat 而非展开运算符(在大数组时性能更好)\n */\nexport const setReactivityField = (\n field: DefaultField,\n key: FieldKeys,\n value: unknown,\n type: FetchType,\n insertBefore: boolean\n): void => {\n const fieldAny = field as any\n\n // 快速路径:分页模式直接赋值\n if (type === ENUM.FETCH_TYPE.PAGINATION) {\n fieldAny[key] = value\n return\n }\n\n // 快速路径:非 result 字段\n if (key !== ENUM.FIELD_DATA.RESULT_KEY) {\n if (isArray(value)) {\n const current = fieldAny[key]\n const currentArr = isArray(current) ? current : []\n // 使用 concat 性能优于展开运算符\n fieldAny[key] = insertBefore\n ? (value as any[]).concat(currentArr)\n : currentArr.concat(value as any[])\n } else {\n fieldAny[key] = value\n }\n return\n }\n\n // 处理 result 字段 - 数组类型\n const resultField = field.result\n\n if (isArray(value)) {\n const valueArr = value as KeyMap[]\n const valueLen = valueArr.length\n\n // 快速路径:空数组直接返回\n if (valueLen === 0) return\n\n const currentArr = isArray(resultField) ? resultField : []\n const currentLen = currentArr.length\n\n // 快速路径:当前为空,直接赋值\n if (currentLen === 0) {\n field.result = valueArr as any\n return\n }\n\n // 使用 concat 合并数组(比展开运算符快)\n field.result = (\n insertBefore ? valueArr.concat(currentArr) : currentArr.concat(valueArr)\n ) as any\n return\n }\n\n // 处理 result 字段 - 对象类型\n const valueObj = value as KeyMap\n let target = resultField as Record<string, any>\n\n if (\n isArray(resultField) ||\n typeof resultField !== 'object' ||\n resultField === null\n ) {\n target = {}\n field.result = target as any\n }\n\n const keys = Object.keys(valueObj)\n const len = keys.length\n\n for (let i = 0; i < len; i++) {\n const subKey = keys[i]\n const existing = target[subKey]\n const incoming = valueObj[subKey]\n\n if (existing !== undefined) {\n // 两个都是数组才合并,否则覆盖\n if (isArray(existing) && isArray(incoming)) {\n target[subKey] = insertBefore\n ? incoming.concat(existing)\n : existing.concat(incoming)\n } else {\n target[subKey] = incoming\n }\n } else {\n target[subKey] = incoming\n }\n }\n}\n\nexport const computeResultLength = (data: unknown): number => {\n if (isArray(data)) {\n return data.length\n }\n if (isKeyMap(data)) {\n let acc = 0\n const values = Object.values(data)\n const len = values.length\n for (let i = 0; i < len; i++) {\n const val = values[i]\n if (isArray(val)) {\n acc += val.length\n }\n }\n return acc\n }\n return 0\n}\n\nconst getSeenIdsString = (arr: any[], uniqueKey: string): string => {\n if (!isArray(arr)) return ''\n const ids: ObjectKey[] = []\n const len = arr.length\n\n for (let i = 0; i < len; i++) {\n const id = extractUniqueKey(arr[i], uniqueKey)\n if (id !== undefined) {\n ids.push(id)\n }\n }\n return ids.join(',')\n}\n\nexport const generateRequestParams = ({\n field,\n uniqueKey = ENUM.DEFAULT_UNIQUE_KEY_NAME,\n query = {},\n is_up = false,\n type\n}: GenerateParamsType): GenerateParamsResp => {\n const result: GenerateParamsResp = { ...query }\n const isFetched = field.fetched\n const fieldResultAny = field.result as any // 内部逻辑断言\n\n const getSafeObjectKey = (item: unknown): ObjectKey | undefined => {\n return extractUniqueKey(item as KeyMap, uniqueKey)\n }\n\n if (isFetched) {\n if (type === ENUM.FETCH_TYPE.AUTO) {\n if (isArray(fieldResultAny)) {\n result.seen_ids = getSeenIdsString(fieldResultAny, uniqueKey)\n const targetIndex = is_up ? 0 : fieldResultAny.length - 1\n const targetItem = fieldResultAny[targetIndex]\n result.since_id = getSafeObjectKey(targetItem)\n }\n result.is_up = is_up ? 1 : 0\n result.page = typeof query.page === 'number' ? query.page : field.page + 1\n } else if (type === ENUM.FETCH_TYPE.HAS_LOADED_IDS) {\n if (isArray(fieldResultAny)) {\n result.seen_ids = getSeenIdsString(fieldResultAny, uniqueKey)\n }\n } else if (type === ENUM.FETCH_TYPE.SINCE_FIRST_OR_END_ID) {\n if (isArray(fieldResultAny)) {\n const targetIndex = is_up ? 0 : fieldResultAny.length - 1\n const targetItem = fieldResultAny[targetIndex]\n result.since_id = getSafeObjectKey(targetItem)\n }\n result.is_up = is_up ? 1 : 0\n } else if (type === ENUM.FETCH_TYPE.PAGINATION) {\n result.page = typeof query.page === 'number' ? query.page : undefined\n } else if (type === ENUM.FETCH_TYPE.SCROLL_LOAD_MORE) {\n result.page = field.page + 1\n }\n } else {\n if (type === ENUM.FETCH_TYPE.AUTO) {\n result.seen_ids = ''\n result.since_id = isObjectKey(query.sinceId) ? query.sinceId : ''\n result.is_up = is_up ? 1 : 0\n result.page =\n typeof query.page === 'number' ? query.page : field.page || 1\n } else if (type === ENUM.FETCH_TYPE.HAS_LOADED_IDS) {\n result.seen_ids = ''\n } else if (type === ENUM.FETCH_TYPE.SINCE_FIRST_OR_END_ID) {\n result.since_id = isObjectKey(query.sinceId) ? query.sinceId : ''\n result.is_up = is_up ? 1 : 0\n } else if (type === ENUM.FETCH_TYPE.PAGINATION) {\n result.page = typeof query.page === 'number' ? query.page : field.page\n } else if (type === ENUM.FETCH_TYPE.SCROLL_LOAD_MORE) {\n result.page = 1\n }\n }\n\n return result\n}\n\nexport const toObjectKey = (\n id: ObjectKey | ObjectKey[] | undefined\n): ObjectKey | undefined => {\n if (id === undefined) return undefined\n if (isObjectKey(id)) return id\n if (isObjectKeyArray(id) && id.length > 0) return id[0]\n return undefined\n}\n\nexport const getResultAsArray = (field: DefaultField): any[] | null => {\n const result = field[ENUM.FIELD_DATA.RESULT_KEY]\n return isArray(result) ? result : null\n}\n\nexport const updateArrayItem = (\n arr: any[],\n index: number,\n updater: (item: KeyMap) => KeyMap\n): void => {\n if (index >= 0 && index < arr.length) {\n const item = arr[index]\n if (isKeyMap(item)) {\n arr[index] = updater(item)\n }\n }\n}\n","// setters.ts\nimport ENUM from './enum'\nimport {\n computeResultLength,\n isObjectResult,\n setReactivityField\n} from './utils'\n\nimport type { BaseApiResponse, SetDataType, SetErrorType } from './types'\n\nexport const SET_DATA = ({\n getter,\n setter,\n data,\n fieldName,\n type,\n page,\n insertBefore\n}: SetDataType): Promise<void> => {\n return new Promise((resolve, reject) => {\n const fieldData = getter(fieldName)\n if (!fieldData) {\n reject(new Error(`Field ${fieldName} not found.`))\n return\n }\n\n // 强制类型转换以进行写入\n const field = fieldData\n\n let result: any\n let extra: unknown\n\n if (isObjectResult(data)) {\n result = data\n field.nothing = false\n field.fetched = true\n field.noMore = true\n field.page = -1\n } else {\n const apiResponse = data as BaseApiResponse\n result = apiResponse.result\n extra = apiResponse.extra\n const isEmpty = computeResultLength(result) === 0\n field.nothing = field.fetched ? false : isEmpty\n field.fetched = true\n field.total = apiResponse.total || 0\n\n if (type === ENUM.FETCH_TYPE.PAGINATION) {\n field.noMore = false\n field.page = +page\n } else {\n field.noMore =\n typeof apiResponse.no_more === 'undefined'\n ? isEmpty\n : apiResponse.no_more || isEmpty\n field.page = field.page + 1\n }\n }\n\n field.loading = false\n\n setReactivityField(\n field,\n ENUM.FIELD_DATA.RESULT_KEY,\n result,\n type,\n insertBefore\n )\n\n if (extra !== undefined && extra !== null) {\n setReactivityField(\n field,\n ENUM.FIELD_DATA.EXTRA_KEY,\n extra,\n type,\n insertBefore\n )\n }\n\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.RESET,\n value: field,\n callback: () => {\n resolve()\n }\n })\n })\n}\n\nexport const SET_ERROR = ({ setter, fieldName, error }: SetErrorType): void => {\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.MERGE,\n value: {\n error,\n loading: false\n }\n })\n}\n","import ENUM from './enum'\nimport { SET_DATA, SET_ERROR } from './setters'\nimport {\n combineArrayData,\n computeMatchedItemIndex,\n computeResultLength,\n generateDefaultField,\n generateRequestParams,\n getObjectDeepValue,\n getResultAsArray,\n isArray,\n isKeyMap,\n isKeyMapArray,\n isObjectKey,\n isObjectKeyArray,\n searchValueByKey,\n stableSerialize,\n toObjectKey,\n updateArrayItem,\n updateObjectDeepValue\n} from './utils'\n\nimport type {\n ApiContract,\n BaseApiResponse,\n DefaultField,\n FetchType,\n InitDataType,\n InitStateType,\n KeyMap,\n LoadMoreType,\n ObjectKey,\n RequestParams,\n UpdateStateType\n} from './types'\n\n// --- 辅助函数:生成字段名 ---\nexport const generateFieldName = <P extends RequestParams, R>({\n func,\n query\n}: {\n func: ApiContract<P, R>\n query?: P\n}): string => {\n let result = func.id\n if (!query) return result\n\n const queryObj = query as Record<string, unknown>\n const filteredKeys = Object.keys(queryObj)\n .filter((key) => !func.paramsIgnore.includes(key))\n .sort()\n\n for (const key of filteredKeys) {\n const value = queryObj[key]\n const safeValue =\n typeof value === 'object' && value !== null\n ? stableSerialize(value)\n : String(value)\n result += `-${key}-${encodeURIComponent(safeValue)}`\n }\n return result\n}\n\n// --- API 构造器 ---\nexport const createApi = <P extends RequestParams, R>(options: {\n id: string\n type?: FetchType\n uniqueKey?: string\n is_up?: boolean\n paramsIgnore?: string[]\n fetcher: (params: P) => Promise<BaseApiResponse<R>>\n}): ApiContract<P, R> => {\n const fn = ((params: P) => options.fetcher(params)) as ApiContract<P, R>\n\n const metadata: Partial<ApiContract<P, R>> = {\n id: options.id,\n type: options.type || (ENUM.FETCH_TYPE.SCROLL_LOAD_MORE as FetchType),\n uniqueKey: options.uniqueKey || ENUM.DEFAULT_UNIQUE_KEY_NAME,\n is_up: options.is_up || false,\n paramsIgnore: [\n 'page',\n 'since_id',\n 'seen_ids',\n '__refresh__',\n '__reload__',\n ...(options.paramsIgnore || [])\n ]\n }\n\n return Object.freeze(Object.assign(fn, metadata))\n}\n\n// --- 核心 Action:initState ---\nexport const initState = <P extends RequestParams, R>({\n getter,\n setter,\n func,\n query,\n opts\n}: InitStateType<P, R>): Promise<void> => {\n return new Promise((resolve) => {\n const fieldName = generateFieldName({ func, query })\n if (getter(fieldName)) return resolve()\n\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.RESET,\n value: generateDefaultField(opts),\n callback: () => resolve()\n })\n })\n}\n\n// --- 核心 Action:initData ---\nexport const initData = <P extends RequestParams, R>({\n getter,\n setter,\n func,\n query,\n callback\n}: InitDataType<P, R>): Promise<void> =>\n new Promise((resolve, reject) => {\n const fieldName = generateFieldName({ func, query })\n const fieldData = getter(fieldName)\n\n const doRefresh = !!query?.__refresh__\n const needReset = !!query?.__reload__\n const directlyLoadData = doRefresh && !needReset\n\n if (fieldData && fieldData.error && !doRefresh) return resolve()\n if (fieldData && fieldData.loading) return resolve()\n if (fieldData && fieldData.fetched && !doRefresh) return resolve()\n\n const params = generateRequestParams({\n field: generateDefaultField({ ...fieldData, fetched: false }),\n uniqueKey: func.uniqueKey,\n type: func.type,\n is_up: func.is_up,\n query: query as KeyMap\n })\n\n const executeFetch = () => {\n func(params as P)\n .then((data) => {\n const commitData = () => {\n SET_DATA({\n getter,\n setter,\n data: data as BaseApiResponse,\n fieldName,\n type: func.type,\n page: params.page || 0,\n insertBefore: false\n }).then(() => {\n callback?.({ params: params as P, data, refresh: doRefresh })\n resolve()\n })\n }\n\n if (directlyLoadData) {\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.RESET,\n value: generateDefaultField(),\n callback: commitData\n })\n } else {\n commitData()\n }\n })\n .catch((error: Error) => {\n SET_ERROR({ setter, fieldName, error })\n reject(error)\n })\n }\n\n if (directlyLoadData) {\n executeFetch()\n } else {\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.RESET,\n value: { ...generateDefaultField(), loading: true, error: null },\n callback: executeFetch\n })\n }\n })\n\n// --- 核心 Action:loadMore ---\nexport const loadMore = <P extends RequestParams, R>({\n getter,\n setter,\n query,\n func,\n errorRetry,\n callback\n}: LoadMoreType<P, R>): Promise<void> =>\n new Promise((resolve, reject) => {\n const fieldName = generateFieldName({ func, query })\n const fieldData = getter(fieldName)\n if (!fieldData || fieldData.loading || fieldData.nothing) return resolve()\n if (fieldData.noMore && !errorRetry) return resolve()\n\n const type = func.type\n if (\n type === ENUM.FETCH_TYPE.PAGINATION &&\n query?.page != null &&\n Number(query.page) === fieldData.page\n ) {\n return resolve()\n }\n\n const loadingState: Partial<DefaultField> =\n type === ENUM.FETCH_TYPE.PAGINATION\n ? { loading: true, error: null, result: [], extra: null }\n : { loading: true, error: null }\n\n const params = generateRequestParams({\n field: fieldData,\n uniqueKey: func.uniqueKey,\n type,\n is_up: func.is_up,\n query: query as KeyMap\n })\n\n if (fieldData.extra) params.extra = fieldData.extra\n\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.MERGE,\n value: loadingState,\n callback: () => {\n func(params as P)\n .then((data) => {\n SET_DATA({\n getter,\n setter,\n data: data as BaseApiResponse,\n type,\n fieldName,\n page: params.page || 0,\n insertBefore: func.is_up\n }).then(() => {\n callback?.({ params: params as P, data, refresh: false })\n resolve()\n })\n })\n .catch((error: Error) => {\n SET_ERROR({ setter, fieldName, error })\n reject(error)\n })\n }\n })\n })\n\n// --- 核心 Action:updateState ---\nexport const updateState = <P extends RequestParams, R>({\n getter,\n setter,\n func,\n query,\n method,\n id,\n value,\n changeKey\n}: UpdateStateType<P, R>): Promise<unknown> => {\n return new Promise((resolve, reject) => {\n const fieldName = generateFieldName({ func, query })\n const fieldData = getter(fieldName)\n if (!fieldData) {\n reject(new Error(`Field ${fieldName} not found.`))\n return\n }\n\n if (fieldData.page === -1) {\n resolve(null)\n return\n }\n\n const _id = id\n const _uniqueKey = func.uniqueKey || ENUM.DEFAULT_UNIQUE_KEY_NAME\n const _changeKey = changeKey || ENUM.FIELD_DATA.RESULT_KEY\n const beforeLength = computeResultLength(\n fieldData[ENUM.FIELD_DATA.RESULT_KEY]\n )\n\n // 创建新的 field 对象,并深拷贝 result 数组以确保响应式\n const newFieldData: DefaultField = { ...fieldData }\n // 如果 result 是数组,创建新数组引用(浅拷贝数组,但元素保持引用)\n // 这样后续的修改会在新数组上进行,确保引用变化\n let resultArray = getResultAsArray(fieldData)\n if (resultArray) {\n resultArray = [...resultArray]\n newFieldData.result = resultArray as any\n }\n\n if (method === ENUM.CHANGE_TYPE.SEARCH_FIELD) {\n const objectKeyId = toObjectKey(_id)\n if (objectKeyId === undefined) {\n reject(new Error('ID is required for SEARCH_FIELD.'))\n return\n }\n const searchResult = resultArray\n ? searchValueByKey(resultArray, objectKeyId, _uniqueKey)\n : undefined\n resolve(searchResult)\n return // 搜索操作不需要更新状态\n } else if (method === ENUM.CHANGE_TYPE.RESULT_UPDATE_KV) {\n const objectKeyId = toObjectKey(_id)\n if (objectKeyId === undefined) {\n reject(new Error('ID is required for RESULT_UPDATE_KV.'))\n return\n }\n if (resultArray) {\n const matchedIndex = computeMatchedItemIndex(\n objectKeyId,\n resultArray,\n _uniqueKey\n )\n if (matchedIndex >= 0 && isKeyMap(resultArray[matchedIndex])) {\n // ✅ 创建新对象以确保响应式\n const newItem = { ...resultArray[matchedIndex] }\n updateObjectDeepValue(newItem, _changeKey, value)\n resultArray[matchedIndex] = newItem\n }\n }\n resolve(null)\n } else if (method === ENUM.CHANGE_TYPE.RESULT_ITEM_MERGE) {\n const objectKeyId = toObjectKey(_id)\n if (objectKeyId === undefined) {\n reject(new Error('ID is required for RESULT_ITEM_MERGE.'))\n return\n }\n if (resultArray && isKeyMap(value)) {\n const matchedIndex = computeMatchedItemIndex(\n objectKeyId,\n resultArray,\n _uniqueKey\n )\n // ✅ updateArrayItem 会创建新对象,数组已经是新引用\n updateArrayItem(resultArray, matchedIndex, (item) => ({\n ...item,\n ...value\n }))\n }\n resolve(null)\n } else if (method === ENUM.CHANGE_TYPE.RESET_FIELD) {\n if (_changeKey === ENUM.FIELD_DATA.RESULT_KEY && isKeyMapArray(value)) {\n // ✅ 直接替换为新值\n newFieldData.result = value\n } else if (_changeKey === ENUM.FIELD_DATA.EXTRA_KEY && isKeyMap(value)) {\n // ✅ 直接替换为新值\n newFieldData.extra = value\n }\n resolve(null)\n } else {\n // 获取要修改的值\n let modifyValue: unknown\n if (_changeKey === ENUM.FIELD_DATA.RESULT_KEY) {\n modifyValue = resultArray || newFieldData.result\n } else if (_changeKey === ENUM.FIELD_DATA.EXTRA_KEY) {\n modifyValue = newFieldData.extra\n } else {\n modifyValue = getObjectDeepValue(newFieldData, _changeKey)\n }\n if (modifyValue == null) {\n modifyValue = []\n }\n\n const objectKeyId = toObjectKey(_id)\n const matchedIndex =\n objectKeyId !== undefined && isKeyMapArray(modifyValue)\n ? computeMatchedItemIndex(objectKeyId, modifyValue, _uniqueKey)\n : -1\n\n switch (method) {\n case ENUM.CHANGE_TYPE.RESULT_ADD_AFTER:\n // ✅ 始终创建新数组\n if (isArray(modifyValue)) {\n modifyValue = isArray(value)\n ? [...modifyValue, ...value]\n : [...modifyValue, value]\n }\n break\n case ENUM.CHANGE_TYPE.RESULT_ADD_BEFORE:\n // ✅ 始终创建新数组\n if (isArray(modifyValue)) {\n modifyValue = isArray(value)\n ? [...value, ...modifyValue]\n : [value, ...modifyValue]\n }\n break\n case ENUM.CHANGE_TYPE.RESULT_REMOVE_BY_ID:\n // ✅ splice 或 filter 都会修改/创建数组\n if (isKeyMapArray(modifyValue)) {\n if (matchedIndex >= 0) {\n // 创建新数组副本后再 splice\n const newArray = [...modifyValue]\n newArray.splice(matchedIndex, 1)\n modifyValue = newArray\n } else if (isObjectKeyArray(_id)) {\n const idSet = new Set<ObjectKey>(_id)\n // filter 本身返回新数组\n modifyValue = modifyValue.filter((item) => {\n const itemKey = getObjectDeepValue(item, _uniqueKey)\n return !isObjectKey(itemKey) || !idSet.has(itemKey)\n })\n }\n }\n break\n case ENUM.CHANGE_TYPE.RESULT_INSERT_TO_BEFORE:\n // ✅ 创建新数组后 splice\n if (isArray(modifyValue) && matchedIndex >= 0) {\n const newArray = [...modifyValue]\n newArray.splice(matchedIndex, 0, value)\n modifyValue = newArray\n }\n break\n case ENUM.CHANGE_TYPE.RESULT_INSERT_TO_AFTER:\n // ✅ 创建新数组后 splice\n if (isArray(modifyValue) && matchedIndex >= 0) {\n const newArray = [...modifyValue]\n newArray.splice(matchedIndex + 1, 0, value)\n modifyValue = newArray\n }\n break\n case ENUM.CHANGE_TYPE.RESULT_LIST_MERGE:\n // ⚠️ combineArrayData 直接修改数组,需要特殊处理\n if (isKeyMapArray(modifyValue)) {\n // 创建新数组副本\n const newArray = [...modifyValue]\n if (isKeyMapArray(value)) {\n combineArrayData(newArray, value, _uniqueKey)\n } else if (isKeyMap(value)) {\n const valueAsRecord: Record<ObjectKey, KeyMap> = {}\n for (const [k, v] of Object.entries(value)) {\n if (isKeyMap(v)) {\n valueAsRecord[k] = v\n }\n }\n combineArrayData(newArray, valueAsRecord, _uniqueKey)\n }\n modifyValue = newArray\n }\n break\n default:\n resolve(null)\n return\n }\n // 更新对应字段的值\n if (\n _changeKey === ENUM.FIELD_DATA.RESULT_KEY &&\n isKeyMapArray(modifyValue)\n ) {\n newFieldData.result = modifyValue\n } else if (\n _changeKey === ENUM.FIELD_DATA.EXTRA_KEY &&\n isKeyMap(modifyValue)\n ) {\n newFieldData.extra = modifyValue\n }\n resolve(null)\n }\n\n const afterLength = computeResultLength(\n newFieldData[ENUM.FIELD_DATA.RESULT_KEY]\n )\n newFieldData.total = newFieldData.total + afterLength - beforeLength\n newFieldData.nothing = afterLength === 0\n\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.RESET,\n value: newFieldData,\n callback: () => {\n resolve(null)\n }\n })\n })\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -69,8 +69,29 @@ var isArray = (data) => Array.isArray(data);
|
|
|
69
69
|
var isResultObject = (data) => !isArray(data) && typeof data === "object" && data !== null;
|
|
70
70
|
var isObjectKey = (value) => typeof value === "string" || typeof value === "number";
|
|
71
71
|
var isKeyMap = (value) => typeof value === "object" && value !== null && !isArray(value);
|
|
72
|
-
var isKeyMapArray = (value) =>
|
|
73
|
-
|
|
72
|
+
var isKeyMapArray = (value) => {
|
|
73
|
+
if (!isArray(value)) return false;
|
|
74
|
+
const len = value.length;
|
|
75
|
+
for (let i = 0; i < len; i++) {
|
|
76
|
+
const item = value[i];
|
|
77
|
+
if (typeof item !== "object" || item === null) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return true;
|
|
82
|
+
};
|
|
83
|
+
var isObjectKeyArray = (value) => {
|
|
84
|
+
if (!isArray(value)) return false;
|
|
85
|
+
const len = value.length;
|
|
86
|
+
for (let i = 0; i < len; i++) {
|
|
87
|
+
const item = value[i];
|
|
88
|
+
const itemType = typeof item;
|
|
89
|
+
if (itemType !== "string" && itemType !== "number") {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return true;
|
|
94
|
+
};
|
|
74
95
|
var stableSerialize = (value) => {
|
|
75
96
|
if (value === null || typeof value !== "object") {
|
|
76
97
|
return String(value);
|
|
@@ -131,16 +152,25 @@ var generateFieldName = ({
|
|
|
131
152
|
func,
|
|
132
153
|
query
|
|
133
154
|
}) => {
|
|
134
|
-
let result = func.id;
|
|
135
155
|
if (!query) {
|
|
136
|
-
return
|
|
156
|
+
return func.id;
|
|
137
157
|
}
|
|
138
|
-
|
|
139
|
-
const
|
|
158
|
+
let result = func.id;
|
|
159
|
+
const keys = Object.keys(query);
|
|
160
|
+
const paramsIgnore = func.paramsIgnore;
|
|
161
|
+
const filteredKeys = [];
|
|
162
|
+
const keysLen = keys.length;
|
|
163
|
+
for (let i = 0; i < keysLen; i++) {
|
|
164
|
+
const key = keys[i];
|
|
165
|
+
if (!paramsIgnore.includes(key)) {
|
|
166
|
+
filteredKeys.push(key);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
filteredKeys.sort();
|
|
140
170
|
const len = filteredKeys.length;
|
|
141
171
|
for (let i = 0; i < len; i++) {
|
|
142
172
|
const key = filteredKeys[i];
|
|
143
|
-
const value =
|
|
173
|
+
const value = query[key];
|
|
144
174
|
let safeValue;
|
|
145
175
|
if (typeof value === "object" && value !== null) {
|
|
146
176
|
safeValue = stableSerialize(value);
|
|
@@ -153,19 +183,15 @@ var generateFieldName = ({
|
|
|
153
183
|
return result;
|
|
154
184
|
};
|
|
155
185
|
var getObjectDeepValue = (field, keys) => {
|
|
156
|
-
if (!keys || isArray(keys) && keys.length === 0)
|
|
186
|
+
if (!keys || Array.isArray(keys) && keys.length === 0)
|
|
157
187
|
return field;
|
|
188
|
+
const keysArr = Array.isArray(keys) ? keys : keys.split(".");
|
|
189
|
+
let cur = field;
|
|
190
|
+
for (let i = 0, n = keysArr.length; i < n; ++i) {
|
|
191
|
+
if (cur == null || typeof cur !== "object") return void 0;
|
|
192
|
+
cur = cur[keysArr[i]];
|
|
158
193
|
}
|
|
159
|
-
|
|
160
|
-
let result = field;
|
|
161
|
-
const len = keysArr.length;
|
|
162
|
-
for (let i = 0; i < len; i++) {
|
|
163
|
-
if (result == null || typeof result !== "object") {
|
|
164
|
-
return void 0;
|
|
165
|
-
}
|
|
166
|
-
result = result[keysArr[i]];
|
|
167
|
-
}
|
|
168
|
-
return result;
|
|
194
|
+
return cur;
|
|
169
195
|
};
|
|
170
196
|
var updateObjectDeepValue = (field, changeKey, value) => {
|
|
171
197
|
if (!changeKey) return;
|
|
@@ -204,12 +230,23 @@ var searchValueByKey = (result, id, key) => {
|
|
|
204
230
|
var computeMatchedItemIndex = (itemId, fieldArr, changingKey) => {
|
|
205
231
|
const stringifiedItemId = String(itemId);
|
|
206
232
|
const len = fieldArr.length;
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
233
|
+
const isSimpleKey = !changingKey.includes(".");
|
|
234
|
+
if (isSimpleKey) {
|
|
235
|
+
for (let i = 0; i < len; i++) {
|
|
236
|
+
const item = fieldArr[i];
|
|
237
|
+
if (!isKeyMap(item)) continue;
|
|
238
|
+
if (String(item[changingKey]) === stringifiedItemId) {
|
|
239
|
+
return i;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
} else {
|
|
243
|
+
for (let i = 0; i < len; i++) {
|
|
244
|
+
const item = fieldArr[i];
|
|
245
|
+
if (!isKeyMap(item)) continue;
|
|
246
|
+
const itemValue = getObjectDeepValue(item, changingKey);
|
|
247
|
+
if (String(itemValue) === stringifiedItemId) {
|
|
248
|
+
return i;
|
|
249
|
+
}
|
|
213
250
|
}
|
|
214
251
|
}
|
|
215
252
|
return -1;
|
|
@@ -235,7 +272,7 @@ var combineArrayData = (fieldArray, value, changingKey) => {
|
|
|
235
272
|
if (index !== void 0) {
|
|
236
273
|
const existingItem = fieldArray[index];
|
|
237
274
|
if (isKeyMap(existingItem)) {
|
|
238
|
-
|
|
275
|
+
fieldArray[index] = { ...existingItem, ...col };
|
|
239
276
|
}
|
|
240
277
|
}
|
|
241
278
|
}
|
|
@@ -249,7 +286,7 @@ var combineArrayData = (fieldArray, value, changingKey) => {
|
|
|
249
286
|
if (index !== void 0) {
|
|
250
287
|
const existingItem = fieldArray[index];
|
|
251
288
|
if (isKeyMap(existingItem)) {
|
|
252
|
-
|
|
289
|
+
fieldArray[index] = { ...existingItem, ...col };
|
|
253
290
|
}
|
|
254
291
|
}
|
|
255
292
|
}
|
|
@@ -265,40 +302,29 @@ var setReactivityField = (field, key, value, type, insertBefore) => {
|
|
|
265
302
|
if (isArray(value)) {
|
|
266
303
|
const current = fieldAny[key];
|
|
267
304
|
const currentArr = isArray(current) ? current : [];
|
|
268
|
-
|
|
269
|
-
fieldAny[key] = newValue;
|
|
305
|
+
fieldAny[key] = insertBefore ? value.concat(currentArr) : currentArr.concat(value);
|
|
270
306
|
} else {
|
|
271
307
|
fieldAny[key] = value;
|
|
272
308
|
}
|
|
273
309
|
return;
|
|
274
310
|
}
|
|
275
311
|
const resultField = field.result;
|
|
276
|
-
const valueObj = value;
|
|
277
312
|
if (isArray(value)) {
|
|
278
|
-
const currentArr = isArray(resultField) ? resultField : [];
|
|
279
313
|
const valueArr = value;
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
} else {
|
|
288
|
-
if (valueArr.length === 0) return;
|
|
289
|
-
if (currentArr.length === 0) {
|
|
290
|
-
field.result = valueArr;
|
|
291
|
-
return;
|
|
292
|
-
}
|
|
293
|
-
field.result = currentArr.concat(valueArr);
|
|
314
|
+
const valueLen = valueArr.length;
|
|
315
|
+
if (valueLen === 0) return;
|
|
316
|
+
const currentArr = isArray(resultField) ? resultField : [];
|
|
317
|
+
const currentLen = currentArr.length;
|
|
318
|
+
if (currentLen === 0) {
|
|
319
|
+
field.result = valueArr;
|
|
320
|
+
return;
|
|
294
321
|
}
|
|
322
|
+
field.result = insertBefore ? valueArr.concat(currentArr) : currentArr.concat(valueArr);
|
|
295
323
|
return;
|
|
296
324
|
}
|
|
325
|
+
const valueObj = value;
|
|
297
326
|
let target = resultField;
|
|
298
|
-
if (isArray(resultField)) {
|
|
299
|
-
target = {};
|
|
300
|
-
field.result = target;
|
|
301
|
-
} else if (typeof resultField !== "object" || resultField === null) {
|
|
327
|
+
if (isArray(resultField) || typeof resultField !== "object" || resultField === null) {
|
|
302
328
|
target = {};
|
|
303
329
|
field.result = target;
|
|
304
330
|
}
|
|
@@ -309,10 +335,10 @@ var setReactivityField = (field, key, value, type, insertBefore) => {
|
|
|
309
335
|
const existing = target[subKey];
|
|
310
336
|
const incoming = valueObj[subKey];
|
|
311
337
|
if (existing !== void 0) {
|
|
312
|
-
if (
|
|
313
|
-
target[subKey] =
|
|
338
|
+
if (isArray(existing) && isArray(incoming)) {
|
|
339
|
+
target[subKey] = insertBefore ? incoming.concat(existing) : existing.concat(incoming);
|
|
314
340
|
} else {
|
|
315
|
-
target[subKey] =
|
|
341
|
+
target[subKey] = incoming;
|
|
316
342
|
}
|
|
317
343
|
} else {
|
|
318
344
|
target[subKey] = incoming;
|
|
@@ -699,7 +725,11 @@ var updateState = ({
|
|
|
699
725
|
fieldData[enum_default.FIELD_DATA.RESULT_KEY]
|
|
700
726
|
);
|
|
701
727
|
const newFieldData = { ...fieldData };
|
|
702
|
-
|
|
728
|
+
let resultArray = getResultAsArray(fieldData);
|
|
729
|
+
if (resultArray) {
|
|
730
|
+
resultArray = [...resultArray];
|
|
731
|
+
newFieldData.result = resultArray;
|
|
732
|
+
}
|
|
703
733
|
if (method === enum_default.CHANGE_TYPE.SEARCH_FIELD) {
|
|
704
734
|
const objectKeyId = toObjectKey(_id);
|
|
705
735
|
if (objectKeyId === void 0) {
|
|
@@ -722,7 +752,9 @@ var updateState = ({
|
|
|
722
752
|
_uniqueKey
|
|
723
753
|
);
|
|
724
754
|
if (matchedIndex >= 0 && isKeyMap(resultArray[matchedIndex])) {
|
|
725
|
-
|
|
755
|
+
const newItem = { ...resultArray[matchedIndex] };
|
|
756
|
+
updateObjectDeepValue(newItem, _changeKey, value);
|
|
757
|
+
resultArray[matchedIndex] = newItem;
|
|
726
758
|
}
|
|
727
759
|
}
|
|
728
760
|
resolve(null);
|
|
@@ -754,7 +786,7 @@ var updateState = ({
|
|
|
754
786
|
} else {
|
|
755
787
|
let modifyValue;
|
|
756
788
|
if (_changeKey === enum_default.FIELD_DATA.RESULT_KEY) {
|
|
757
|
-
modifyValue = newFieldData.result;
|
|
789
|
+
modifyValue = resultArray || newFieldData.result;
|
|
758
790
|
} else if (_changeKey === enum_default.FIELD_DATA.EXTRA_KEY) {
|
|
759
791
|
modifyValue = newFieldData.extra;
|
|
760
792
|
} else {
|
|
@@ -779,7 +811,9 @@ var updateState = ({
|
|
|
779
811
|
case enum_default.CHANGE_TYPE.RESULT_REMOVE_BY_ID:
|
|
780
812
|
if (isKeyMapArray(modifyValue)) {
|
|
781
813
|
if (matchedIndex >= 0) {
|
|
782
|
-
modifyValue
|
|
814
|
+
const newArray = [...modifyValue];
|
|
815
|
+
newArray.splice(matchedIndex, 1);
|
|
816
|
+
modifyValue = newArray;
|
|
783
817
|
} else if (isObjectKeyArray(_id)) {
|
|
784
818
|
const idSet = new Set(_id);
|
|
785
819
|
modifyValue = modifyValue.filter((item) => {
|
|
@@ -791,18 +825,23 @@ var updateState = ({
|
|
|
791
825
|
break;
|
|
792
826
|
case enum_default.CHANGE_TYPE.RESULT_INSERT_TO_BEFORE:
|
|
793
827
|
if (isArray(modifyValue) && matchedIndex >= 0) {
|
|
794
|
-
|
|
828
|
+
const newArray = [...modifyValue];
|
|
829
|
+
newArray.splice(matchedIndex, 0, value);
|
|
830
|
+
modifyValue = newArray;
|
|
795
831
|
}
|
|
796
832
|
break;
|
|
797
833
|
case enum_default.CHANGE_TYPE.RESULT_INSERT_TO_AFTER:
|
|
798
834
|
if (isArray(modifyValue) && matchedIndex >= 0) {
|
|
799
|
-
|
|
835
|
+
const newArray = [...modifyValue];
|
|
836
|
+
newArray.splice(matchedIndex + 1, 0, value);
|
|
837
|
+
modifyValue = newArray;
|
|
800
838
|
}
|
|
801
839
|
break;
|
|
802
840
|
case enum_default.CHANGE_TYPE.RESULT_LIST_MERGE:
|
|
803
841
|
if (isKeyMapArray(modifyValue)) {
|
|
842
|
+
const newArray = [...modifyValue];
|
|
804
843
|
if (isKeyMapArray(value)) {
|
|
805
|
-
combineArrayData(
|
|
844
|
+
combineArrayData(newArray, value, _uniqueKey);
|
|
806
845
|
} else if (isKeyMap(value)) {
|
|
807
846
|
const valueAsRecord = {};
|
|
808
847
|
for (const [k, v] of Object.entries(value)) {
|
|
@@ -810,8 +849,9 @@ var updateState = ({
|
|
|
810
849
|
valueAsRecord[k] = v;
|
|
811
850
|
}
|
|
812
851
|
}
|
|
813
|
-
combineArrayData(
|
|
852
|
+
combineArrayData(newArray, valueAsRecord, _uniqueKey);
|
|
814
853
|
}
|
|
854
|
+
modifyValue = newArray;
|
|
815
855
|
}
|
|
816
856
|
break;
|
|
817
857
|
default:
|