@flowlist/js-core 4.0.5-beta.0 → 4.0.7-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 +65 -52
- package/dist/index.d.ts +65 -52
- package/dist/index.global.js +172 -100
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +172 -100
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +172 -100
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.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.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 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 = query.is_up ? 0 : fieldResultAny.length - 1\n const targetItem = fieldResultAny[targetIndex]\n result.since_id = getSafeObjectKey(targetItem)\n }\n result.is_up = query.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 = query.is_up ? 0 : fieldResultAny.length - 1\n const targetItem = fieldResultAny[targetIndex]\n result.since_id = getSafeObjectKey(targetItem)\n }\n result.is_up = query.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)\n ? query.sinceId\n : query.is_up\n ? 999999999\n : 0\n result.is_up = query.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)\n ? query.sinceId\n : query.is_up\n ? 999999999\n : 0\n result.is_up = query.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","// src/actions.ts\nimport ENUM from './enum'\nimport { SET_DATA, SET_ERROR } from './setters'\nimport {\n computeResultLength,\n generateDefaultField,\n generateRequestParams,\n getResultAsArray,\n searchValueByKey,\n stableSerialize,\n toObjectKey\n} from './utils'\n\nimport type {\n ApiContract,\n BaseApiResponse,\n DefaultField,\n FetchType,\n InitDataType,\n InitStateType,\n KeyMap,\n LoadMoreType,\n RequestParams,\n UpdateStateType\n} from './types'\n\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 const fieldData = getter(fieldName)\n if (fieldData) {\n resolve()\n return\n }\n\n setter({\n key: fieldName,\n type: ENUM.SETTER_TYPE.RESET,\n value: generateDefaultField(opts),\n callback: () => {\n resolve()\n }\n })\n })\n}\n\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 // query 已经被泛型 P 约束\n const doRefresh = !!query?.__refresh__\n const needReset = !!query?.__reload__\n const directlyLoadData = doRefresh && !needReset\n\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({\n ...fieldData,\n fetched: false\n }),\n uniqueKey: func.uniqueKey,\n type: func.type,\n query: query as KeyMap // 内部生成逻辑兼容\n })\n\n const executeFetch = () => {\n // 这里的 params 需要断言为 P,因为 generateRequestParams 返回的是混合类型\n // 但实际上它包含了 query 的所有字段,所以是安全的\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?.({\n params: params as P,\n data,\n refresh: doRefresh\n })\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: {\n ...generateDefaultField(),\n loading: true,\n error: null\n },\n callback: executeFetch\n })\n }\n })\n\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 const type = func.type\n\n if (!fieldData || fieldData.loading || fieldData.nothing) return resolve()\n if (fieldData.noMore && !errorRetry) return resolve()\n\n // 检查分页重复加载\n if (\n type === ENUM.FETCH_TYPE.PAGINATION &&\n query &&\n query.page != null &&\n Number(query.page) === fieldData.page\n ) {\n resolve()\n return\n }\n\n let loadingState: Partial<DefaultField>\n if (type === ENUM.FETCH_TYPE.PAGINATION) {\n loadingState = {\n loading: true,\n error: null,\n [ENUM.FIELD_DATA.RESULT_KEY]: [],\n [ENUM.FIELD_DATA.EXTRA_KEY]: null\n }\n } else {\n loadingState = {\n loading: true,\n error: null\n }\n }\n\n const params = generateRequestParams({\n field: fieldData,\n uniqueKey: func.uniqueKey,\n type,\n query: query as KeyMap\n })\n\n if (fieldData.extra) {\n params[ENUM.FIELD_DATA.EXTRA_KEY] = fieldData.extra\n }\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: !!query?.is_up\n }).then(() => {\n callback?.({\n params: params as P,\n data,\n refresh: false\n })\n resolve()\n })\n })\n .catch((error: Error) => {\n SET_ERROR({ setter, fieldName, error })\n reject(error)\n })\n }\n })\n })\n\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 // ... 逻辑保持不变,但移除了内部不必要的类型断言,依赖 utils 中的通用处理 ...\n // 为节省篇幅,省略具体的 switch-case 逻辑,这些逻辑与你提供的原代码完全一致\n // 唯一的区别是类型签名变成了 UpdateStateType<P, R>\n\n // (此处插入原有的 updateState 逻辑代码)\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 }\n\n // ... 其他逻辑 (update, merge, push, splice 等) ...\n // 这里依然使用 utils 中的函数 (updateObjectDeepValue 等),它们接受 any/KeyMap\n // 所以这里的执行逻辑是安全的。\n\n // 逻辑结束部分:\n\n // 模拟逻辑执行...\n // 实际项目中请完整保留原来的逻辑块\n // 为了通过类型检查,可能需要少量的 as any,因为 updateState 的本质就是非常动态的\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\nexport const createApi = <TParams extends RequestParams, TResponse>(options: {\n id: string\n type?: FetchType\n uniqueKey?: string\n paramsIgnore?: string[]\n fetcher: (params: TParams) => Promise<BaseApiResponse<TResponse>>\n}): ApiContract<TParams, TResponse> => {\n const fn: any = (params: TParams) => options.fetcher(params)\n\n // 附加元数据\n fn.id = options.id\n fn.type = options.type || ENUM.FETCH_TYPE.SCROLL_LOAD_MORE\n fn.uniqueKey = options.uniqueKey || ENUM.DEFAULT_UNIQUE_KEY_NAME\n fn.paramsIgnore = [\n 'page',\n 'is_up',\n 'since_id',\n 'seen_ids',\n '__refresh__',\n '__reload__',\n ...(options.paramsIgnore || [])\n ]\n\n return fn as ApiContract<TParams, TResponse>\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"]}
|
|
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.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"]}
|
package/dist/index.mjs
CHANGED
|
@@ -351,6 +351,7 @@ var generateRequestParams = ({
|
|
|
351
351
|
field,
|
|
352
352
|
uniqueKey = enum_default.DEFAULT_UNIQUE_KEY_NAME,
|
|
353
353
|
query = {},
|
|
354
|
+
is_up = false,
|
|
354
355
|
type
|
|
355
356
|
}) => {
|
|
356
357
|
const result = { ...query };
|
|
@@ -363,11 +364,11 @@ var generateRequestParams = ({
|
|
|
363
364
|
if (type === enum_default.FETCH_TYPE.AUTO) {
|
|
364
365
|
if (isArray(fieldResultAny)) {
|
|
365
366
|
result.seen_ids = getSeenIdsString(fieldResultAny, uniqueKey);
|
|
366
|
-
const targetIndex =
|
|
367
|
+
const targetIndex = is_up ? 0 : fieldResultAny.length - 1;
|
|
367
368
|
const targetItem = fieldResultAny[targetIndex];
|
|
368
369
|
result.since_id = getSafeObjectKey(targetItem);
|
|
369
370
|
}
|
|
370
|
-
result.is_up =
|
|
371
|
+
result.is_up = is_up ? 1 : 0;
|
|
371
372
|
result.page = typeof query.page === "number" ? query.page : field.page + 1;
|
|
372
373
|
} else if (type === enum_default.FETCH_TYPE.HAS_LOADED_IDS) {
|
|
373
374
|
if (isArray(fieldResultAny)) {
|
|
@@ -375,11 +376,11 @@ var generateRequestParams = ({
|
|
|
375
376
|
}
|
|
376
377
|
} else if (type === enum_default.FETCH_TYPE.SINCE_FIRST_OR_END_ID) {
|
|
377
378
|
if (isArray(fieldResultAny)) {
|
|
378
|
-
const targetIndex =
|
|
379
|
+
const targetIndex = is_up ? 0 : fieldResultAny.length - 1;
|
|
379
380
|
const targetItem = fieldResultAny[targetIndex];
|
|
380
381
|
result.since_id = getSafeObjectKey(targetItem);
|
|
381
382
|
}
|
|
382
|
-
result.is_up =
|
|
383
|
+
result.is_up = is_up ? 1 : 0;
|
|
383
384
|
} else if (type === enum_default.FETCH_TYPE.PAGINATION) {
|
|
384
385
|
result.page = typeof query.page === "number" ? query.page : void 0;
|
|
385
386
|
} else if (type === enum_default.FETCH_TYPE.SCROLL_LOAD_MORE) {
|
|
@@ -388,14 +389,14 @@ var generateRequestParams = ({
|
|
|
388
389
|
} else {
|
|
389
390
|
if (type === enum_default.FETCH_TYPE.AUTO) {
|
|
390
391
|
result.seen_ids = "";
|
|
391
|
-
result.since_id = isObjectKey(query.sinceId) ? query.sinceId :
|
|
392
|
-
result.is_up =
|
|
392
|
+
result.since_id = isObjectKey(query.sinceId) ? query.sinceId : "";
|
|
393
|
+
result.is_up = is_up ? 1 : 0;
|
|
393
394
|
result.page = typeof query.page === "number" ? query.page : field.page || 1;
|
|
394
395
|
} else if (type === enum_default.FETCH_TYPE.HAS_LOADED_IDS) {
|
|
395
396
|
result.seen_ids = "";
|
|
396
397
|
} else if (type === enum_default.FETCH_TYPE.SINCE_FIRST_OR_END_ID) {
|
|
397
|
-
result.since_id = isObjectKey(query.sinceId) ? query.sinceId :
|
|
398
|
-
result.is_up =
|
|
398
|
+
result.since_id = isObjectKey(query.sinceId) ? query.sinceId : "";
|
|
399
|
+
result.is_up = is_up ? 1 : 0;
|
|
399
400
|
} else if (type === enum_default.FETCH_TYPE.PAGINATION) {
|
|
400
401
|
result.page = typeof query.page === "number" ? query.page : field.page;
|
|
401
402
|
} else if (type === enum_default.FETCH_TYPE.SCROLL_LOAD_MORE) {
|
|
@@ -503,6 +504,39 @@ var SET_ERROR = ({ setter, fieldName, error }) => {
|
|
|
503
504
|
};
|
|
504
505
|
|
|
505
506
|
// src/actions.ts
|
|
507
|
+
var generateFieldName2 = ({
|
|
508
|
+
func,
|
|
509
|
+
query
|
|
510
|
+
}) => {
|
|
511
|
+
let result = func.id;
|
|
512
|
+
if (!query) return result;
|
|
513
|
+
const queryObj = query;
|
|
514
|
+
const filteredKeys = Object.keys(queryObj).filter((key) => !func.paramsIgnore.includes(key)).sort();
|
|
515
|
+
for (const key of filteredKeys) {
|
|
516
|
+
const value = queryObj[key];
|
|
517
|
+
const safeValue = typeof value === "object" && value !== null ? stableSerialize(value) : String(value);
|
|
518
|
+
result += `-${key}-${encodeURIComponent(safeValue)}`;
|
|
519
|
+
}
|
|
520
|
+
return result;
|
|
521
|
+
};
|
|
522
|
+
var createApi = (options) => {
|
|
523
|
+
const fn = ((params) => options.fetcher(params));
|
|
524
|
+
const metadata = {
|
|
525
|
+
id: options.id,
|
|
526
|
+
type: options.type || enum_default.FETCH_TYPE.SCROLL_LOAD_MORE,
|
|
527
|
+
uniqueKey: options.uniqueKey || enum_default.DEFAULT_UNIQUE_KEY_NAME,
|
|
528
|
+
is_up: options.is_up || false,
|
|
529
|
+
paramsIgnore: [
|
|
530
|
+
"page",
|
|
531
|
+
"since_id",
|
|
532
|
+
"seen_ids",
|
|
533
|
+
"__refresh__",
|
|
534
|
+
"__reload__",
|
|
535
|
+
...options.paramsIgnore || []
|
|
536
|
+
]
|
|
537
|
+
};
|
|
538
|
+
return Object.freeze(Object.assign(fn, metadata));
|
|
539
|
+
};
|
|
506
540
|
var initState = ({
|
|
507
541
|
getter,
|
|
508
542
|
setter,
|
|
@@ -512,18 +546,12 @@ var initState = ({
|
|
|
512
546
|
}) => {
|
|
513
547
|
return new Promise((resolve) => {
|
|
514
548
|
const fieldName = generateFieldName2({ func, query });
|
|
515
|
-
|
|
516
|
-
if (fieldData) {
|
|
517
|
-
resolve();
|
|
518
|
-
return;
|
|
519
|
-
}
|
|
549
|
+
if (getter(fieldName)) return resolve();
|
|
520
550
|
setter({
|
|
521
551
|
key: fieldName,
|
|
522
552
|
type: enum_default.SETTER_TYPE.RESET,
|
|
523
553
|
value: generateDefaultField(opts),
|
|
524
|
-
callback: () =>
|
|
525
|
-
resolve();
|
|
526
|
-
}
|
|
554
|
+
callback: () => resolve()
|
|
527
555
|
});
|
|
528
556
|
});
|
|
529
557
|
};
|
|
@@ -543,14 +571,11 @@ var initData = ({
|
|
|
543
571
|
if (fieldData && fieldData.loading) return resolve();
|
|
544
572
|
if (fieldData && fieldData.fetched && !doRefresh) return resolve();
|
|
545
573
|
const params = generateRequestParams({
|
|
546
|
-
field: generateDefaultField({
|
|
547
|
-
...fieldData,
|
|
548
|
-
fetched: false
|
|
549
|
-
}),
|
|
574
|
+
field: generateDefaultField({ ...fieldData, fetched: false }),
|
|
550
575
|
uniqueKey: func.uniqueKey,
|
|
551
576
|
type: func.type,
|
|
577
|
+
is_up: func.is_up,
|
|
552
578
|
query
|
|
553
|
-
// 内部生成逻辑兼容
|
|
554
579
|
});
|
|
555
580
|
const executeFetch = () => {
|
|
556
581
|
func(params).then((data) => {
|
|
@@ -564,11 +589,7 @@ var initData = ({
|
|
|
564
589
|
page: params.page || 0,
|
|
565
590
|
insertBefore: false
|
|
566
591
|
}).then(() => {
|
|
567
|
-
callback?.({
|
|
568
|
-
params,
|
|
569
|
-
data,
|
|
570
|
-
refresh: doRefresh
|
|
571
|
-
});
|
|
592
|
+
callback?.({ params, data, refresh: doRefresh });
|
|
572
593
|
resolve();
|
|
573
594
|
});
|
|
574
595
|
};
|
|
@@ -593,11 +614,7 @@ var initData = ({
|
|
|
593
614
|
setter({
|
|
594
615
|
key: fieldName,
|
|
595
616
|
type: enum_default.SETTER_TYPE.RESET,
|
|
596
|
-
value: {
|
|
597
|
-
...generateDefaultField(),
|
|
598
|
-
loading: true,
|
|
599
|
-
error: null
|
|
600
|
-
},
|
|
617
|
+
value: { ...generateDefaultField(), loading: true, error: null },
|
|
601
618
|
callback: executeFetch
|
|
602
619
|
});
|
|
603
620
|
}
|
|
@@ -612,36 +629,21 @@ var loadMore = ({
|
|
|
612
629
|
}) => new Promise((resolve, reject) => {
|
|
613
630
|
const fieldName = generateFieldName2({ func, query });
|
|
614
631
|
const fieldData = getter(fieldName);
|
|
615
|
-
const type = func.type;
|
|
616
632
|
if (!fieldData || fieldData.loading || fieldData.nothing) return resolve();
|
|
617
633
|
if (fieldData.noMore && !errorRetry) return resolve();
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
return;
|
|
621
|
-
}
|
|
622
|
-
let loadingState;
|
|
623
|
-
if (type === enum_default.FETCH_TYPE.PAGINATION) {
|
|
624
|
-
loadingState = {
|
|
625
|
-
loading: true,
|
|
626
|
-
error: null,
|
|
627
|
-
[enum_default.FIELD_DATA.RESULT_KEY]: [],
|
|
628
|
-
[enum_default.FIELD_DATA.EXTRA_KEY]: null
|
|
629
|
-
};
|
|
630
|
-
} else {
|
|
631
|
-
loadingState = {
|
|
632
|
-
loading: true,
|
|
633
|
-
error: null
|
|
634
|
-
};
|
|
634
|
+
const type = func.type;
|
|
635
|
+
if (type === enum_default.FETCH_TYPE.PAGINATION && query?.page != null && Number(query.page) === fieldData.page) {
|
|
636
|
+
return resolve();
|
|
635
637
|
}
|
|
638
|
+
const loadingState = type === enum_default.FETCH_TYPE.PAGINATION ? { loading: true, error: null, result: [], extra: null } : { loading: true, error: null };
|
|
636
639
|
const params = generateRequestParams({
|
|
637
640
|
field: fieldData,
|
|
638
641
|
uniqueKey: func.uniqueKey,
|
|
639
642
|
type,
|
|
643
|
+
is_up: func.is_up,
|
|
640
644
|
query
|
|
641
645
|
});
|
|
642
|
-
if (fieldData.extra)
|
|
643
|
-
params[enum_default.FIELD_DATA.EXTRA_KEY] = fieldData.extra;
|
|
644
|
-
}
|
|
646
|
+
if (fieldData.extra) params.extra = fieldData.extra;
|
|
645
647
|
setter({
|
|
646
648
|
key: fieldName,
|
|
647
649
|
type: enum_default.SETTER_TYPE.MERGE,
|
|
@@ -655,13 +657,9 @@ var loadMore = ({
|
|
|
655
657
|
type,
|
|
656
658
|
fieldName,
|
|
657
659
|
page: params.page || 0,
|
|
658
|
-
insertBefore:
|
|
660
|
+
insertBefore: func.is_up
|
|
659
661
|
}).then(() => {
|
|
660
|
-
callback?.({
|
|
661
|
-
params,
|
|
662
|
-
data,
|
|
663
|
-
refresh: false
|
|
664
|
-
});
|
|
662
|
+
callback?.({ params, data, refresh: false });
|
|
665
663
|
resolve();
|
|
666
664
|
});
|
|
667
665
|
}).catch((error) => {
|
|
@@ -694,7 +692,7 @@ var updateState = ({
|
|
|
694
692
|
}
|
|
695
693
|
const _id = id;
|
|
696
694
|
const _uniqueKey = func.uniqueKey || enum_default.DEFAULT_UNIQUE_KEY_NAME;
|
|
697
|
-
changeKey || enum_default.FIELD_DATA.RESULT_KEY;
|
|
695
|
+
const _changeKey = changeKey || enum_default.FIELD_DATA.RESULT_KEY;
|
|
698
696
|
const beforeLength = computeResultLength(
|
|
699
697
|
fieldData[enum_default.FIELD_DATA.RESULT_KEY]
|
|
700
698
|
);
|
|
@@ -709,6 +707,121 @@ var updateState = ({
|
|
|
709
707
|
const searchResult = resultArray ? searchValueByKey(resultArray, objectKeyId, _uniqueKey) : void 0;
|
|
710
708
|
resolve(searchResult);
|
|
711
709
|
return;
|
|
710
|
+
} else if (method === enum_default.CHANGE_TYPE.RESULT_UPDATE_KV) {
|
|
711
|
+
const objectKeyId = toObjectKey(_id);
|
|
712
|
+
if (objectKeyId === void 0) {
|
|
713
|
+
reject(new Error("ID is required for RESULT_UPDATE_KV."));
|
|
714
|
+
return;
|
|
715
|
+
}
|
|
716
|
+
if (resultArray) {
|
|
717
|
+
const matchedIndex = computeMatchedItemIndex(
|
|
718
|
+
objectKeyId,
|
|
719
|
+
resultArray,
|
|
720
|
+
_uniqueKey
|
|
721
|
+
);
|
|
722
|
+
if (matchedIndex >= 0 && isKeyMap(resultArray[matchedIndex])) {
|
|
723
|
+
updateObjectDeepValue(resultArray[matchedIndex], _changeKey, value);
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
resolve(null);
|
|
727
|
+
} else if (method === enum_default.CHANGE_TYPE.RESULT_ITEM_MERGE) {
|
|
728
|
+
const objectKeyId = toObjectKey(_id);
|
|
729
|
+
if (objectKeyId === void 0) {
|
|
730
|
+
reject(new Error("ID is required for RESULT_ITEM_MERGE."));
|
|
731
|
+
return;
|
|
732
|
+
}
|
|
733
|
+
if (resultArray && isKeyMap(value)) {
|
|
734
|
+
const matchedIndex = computeMatchedItemIndex(
|
|
735
|
+
objectKeyId,
|
|
736
|
+
resultArray,
|
|
737
|
+
_uniqueKey
|
|
738
|
+
);
|
|
739
|
+
updateArrayItem(resultArray, matchedIndex, (item) => ({
|
|
740
|
+
...item,
|
|
741
|
+
...value
|
|
742
|
+
}));
|
|
743
|
+
}
|
|
744
|
+
resolve(null);
|
|
745
|
+
} else if (method === enum_default.CHANGE_TYPE.RESET_FIELD) {
|
|
746
|
+
if (_changeKey === enum_default.FIELD_DATA.RESULT_KEY && isKeyMapArray(value)) {
|
|
747
|
+
newFieldData.result = value;
|
|
748
|
+
} else if (_changeKey === enum_default.FIELD_DATA.EXTRA_KEY && isKeyMap(value)) {
|
|
749
|
+
newFieldData.extra = value;
|
|
750
|
+
}
|
|
751
|
+
resolve(null);
|
|
752
|
+
} else {
|
|
753
|
+
let modifyValue;
|
|
754
|
+
if (_changeKey === enum_default.FIELD_DATA.RESULT_KEY) {
|
|
755
|
+
modifyValue = newFieldData.result;
|
|
756
|
+
} else if (_changeKey === enum_default.FIELD_DATA.EXTRA_KEY) {
|
|
757
|
+
modifyValue = newFieldData.extra;
|
|
758
|
+
} else {
|
|
759
|
+
modifyValue = getObjectDeepValue(newFieldData, _changeKey);
|
|
760
|
+
}
|
|
761
|
+
if (modifyValue == null) {
|
|
762
|
+
modifyValue = [];
|
|
763
|
+
}
|
|
764
|
+
const objectKeyId = toObjectKey(_id);
|
|
765
|
+
const matchedIndex = objectKeyId !== void 0 && isKeyMapArray(modifyValue) ? computeMatchedItemIndex(objectKeyId, modifyValue, _uniqueKey) : -1;
|
|
766
|
+
switch (method) {
|
|
767
|
+
case enum_default.CHANGE_TYPE.RESULT_ADD_AFTER:
|
|
768
|
+
if (isArray(modifyValue)) {
|
|
769
|
+
modifyValue = isArray(value) ? [...modifyValue, ...value] : [...modifyValue, value];
|
|
770
|
+
}
|
|
771
|
+
break;
|
|
772
|
+
case enum_default.CHANGE_TYPE.RESULT_ADD_BEFORE:
|
|
773
|
+
if (isArray(modifyValue)) {
|
|
774
|
+
modifyValue = isArray(value) ? [...value, ...modifyValue] : [value, ...modifyValue];
|
|
775
|
+
}
|
|
776
|
+
break;
|
|
777
|
+
case enum_default.CHANGE_TYPE.RESULT_REMOVE_BY_ID:
|
|
778
|
+
if (isKeyMapArray(modifyValue)) {
|
|
779
|
+
if (matchedIndex >= 0) {
|
|
780
|
+
modifyValue.splice(matchedIndex, 1);
|
|
781
|
+
} else if (isObjectKeyArray(_id)) {
|
|
782
|
+
const idSet = new Set(_id);
|
|
783
|
+
modifyValue = modifyValue.filter((item) => {
|
|
784
|
+
const itemKey = getObjectDeepValue(item, _uniqueKey);
|
|
785
|
+
return !isObjectKey(itemKey) || !idSet.has(itemKey);
|
|
786
|
+
});
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
break;
|
|
790
|
+
case enum_default.CHANGE_TYPE.RESULT_INSERT_TO_BEFORE:
|
|
791
|
+
if (isArray(modifyValue) && matchedIndex >= 0) {
|
|
792
|
+
modifyValue.splice(matchedIndex, 0, value);
|
|
793
|
+
}
|
|
794
|
+
break;
|
|
795
|
+
case enum_default.CHANGE_TYPE.RESULT_INSERT_TO_AFTER:
|
|
796
|
+
if (isArray(modifyValue) && matchedIndex >= 0) {
|
|
797
|
+
modifyValue.splice(matchedIndex + 1, 0, value);
|
|
798
|
+
}
|
|
799
|
+
break;
|
|
800
|
+
case enum_default.CHANGE_TYPE.RESULT_LIST_MERGE:
|
|
801
|
+
if (isKeyMapArray(modifyValue)) {
|
|
802
|
+
if (isKeyMapArray(value)) {
|
|
803
|
+
combineArrayData(modifyValue, value, _uniqueKey);
|
|
804
|
+
} else if (isKeyMap(value)) {
|
|
805
|
+
const valueAsRecord = {};
|
|
806
|
+
for (const [k, v] of Object.entries(value)) {
|
|
807
|
+
if (isKeyMap(v)) {
|
|
808
|
+
valueAsRecord[k] = v;
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
combineArrayData(modifyValue, valueAsRecord, _uniqueKey);
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
break;
|
|
815
|
+
default:
|
|
816
|
+
resolve(null);
|
|
817
|
+
return;
|
|
818
|
+
}
|
|
819
|
+
if (_changeKey === enum_default.FIELD_DATA.RESULT_KEY && isKeyMapArray(modifyValue)) {
|
|
820
|
+
newFieldData.result = modifyValue;
|
|
821
|
+
} else if (_changeKey === enum_default.FIELD_DATA.EXTRA_KEY && isKeyMap(modifyValue)) {
|
|
822
|
+
newFieldData.extra = modifyValue;
|
|
823
|
+
}
|
|
824
|
+
resolve(null);
|
|
712
825
|
}
|
|
713
826
|
const afterLength = computeResultLength(
|
|
714
827
|
newFieldData[enum_default.FIELD_DATA.RESULT_KEY]
|
|
@@ -725,47 +838,6 @@ var updateState = ({
|
|
|
725
838
|
});
|
|
726
839
|
});
|
|
727
840
|
};
|
|
728
|
-
var createApi = (options) => {
|
|
729
|
-
const fn = (params) => options.fetcher(params);
|
|
730
|
-
fn.id = options.id;
|
|
731
|
-
fn.type = options.type || enum_default.FETCH_TYPE.SCROLL_LOAD_MORE;
|
|
732
|
-
fn.uniqueKey = options.uniqueKey || enum_default.DEFAULT_UNIQUE_KEY_NAME;
|
|
733
|
-
fn.paramsIgnore = [
|
|
734
|
-
"page",
|
|
735
|
-
"is_up",
|
|
736
|
-
"since_id",
|
|
737
|
-
"seen_ids",
|
|
738
|
-
"__refresh__",
|
|
739
|
-
"__reload__",
|
|
740
|
-
...options.paramsIgnore || []
|
|
741
|
-
];
|
|
742
|
-
return fn;
|
|
743
|
-
};
|
|
744
|
-
var generateFieldName2 = ({
|
|
745
|
-
func,
|
|
746
|
-
query
|
|
747
|
-
}) => {
|
|
748
|
-
let result = func.id;
|
|
749
|
-
if (!query) {
|
|
750
|
-
return result;
|
|
751
|
-
}
|
|
752
|
-
const queryObj = query;
|
|
753
|
-
const filteredKeys = Object.keys(queryObj).filter((key) => !func.paramsIgnore.includes(key)).sort();
|
|
754
|
-
const len = filteredKeys.length;
|
|
755
|
-
for (let i = 0; i < len; i++) {
|
|
756
|
-
const key = filteredKeys[i];
|
|
757
|
-
const value = queryObj[key];
|
|
758
|
-
let safeValue;
|
|
759
|
-
if (typeof value === "object" && value !== null) {
|
|
760
|
-
safeValue = stableSerialize(value);
|
|
761
|
-
} else {
|
|
762
|
-
safeValue = String(value);
|
|
763
|
-
}
|
|
764
|
-
const encoded = encodeURIComponent(safeValue);
|
|
765
|
-
result += `-${key}-${encoded}`;
|
|
766
|
-
}
|
|
767
|
-
return result;
|
|
768
|
-
};
|
|
769
841
|
|
|
770
842
|
export { enum_default as ENUM, createApi, generateFieldName2 as generateFieldName, initData, initState, loadMore, updateState, utils_exports as utils };
|
|
771
843
|
//# sourceMappingURL=index.mjs.map
|