@aimidy/util 1.0.11 → 1.0.12
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/help/index.d.mts +12 -2
- package/dist/help/index.d.ts +12 -2
- package/dist/help/index.js +8 -0
- package/dist/help/index.js.map +1 -1
- package/dist/help/index.mjs +7 -0
- package/dist/help/index.mjs.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +7 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/help/index.d.mts
CHANGED
|
@@ -122,6 +122,15 @@ declare function fieldSorter(sort: {
|
|
|
122
122
|
[_: string]: any;
|
|
123
123
|
}) => number;
|
|
124
124
|
|
|
125
|
+
/**
|
|
126
|
+
* 取得區間的數值
|
|
127
|
+
* @param start 開始時間
|
|
128
|
+
* @param stop 結束時間
|
|
129
|
+
* @param step 間隔
|
|
130
|
+
* @returns
|
|
131
|
+
*/
|
|
132
|
+
declare function range(start: number, stop: number, step: number): number[];
|
|
133
|
+
|
|
125
134
|
declare const index_data_get: typeof data_get;
|
|
126
135
|
declare const index_data_set: typeof data_set;
|
|
127
136
|
declare const index_deepAssign: typeof deepAssign;
|
|
@@ -131,13 +140,14 @@ declare const index_fieldSorter: typeof fieldSorter;
|
|
|
131
140
|
declare const index_gettype: typeof gettype;
|
|
132
141
|
declare const index_head: typeof head;
|
|
133
142
|
declare const index_parameterMerge: typeof parameterMerge;
|
|
143
|
+
declare const index_range: typeof range;
|
|
134
144
|
declare const index_recursiveDeepCopy: typeof recursiveDeepCopy;
|
|
135
145
|
declare const index_remove: typeof remove;
|
|
136
146
|
declare const index_searchInStr: typeof searchInStr;
|
|
137
147
|
declare const index_strToConvert: typeof strToConvert;
|
|
138
148
|
declare const index_strToHump: typeof strToHump;
|
|
139
149
|
declare namespace index {
|
|
140
|
-
export { index_data_get as data_get, index_data_set as data_set, index_deepAssign as deepAssign, index_deepCloneWithJson as deepCloneWithJson, index_emptyData as emptyData, index_fieldSorter as fieldSorter, index_gettype as gettype, index_head as head, index_parameterMerge as parameterMerge, index_recursiveDeepCopy as recursiveDeepCopy, index_remove as remove, index_searchInStr as searchInStr, index_strToConvert as strToConvert, index_strToHump as strToHump };
|
|
150
|
+
export { index_data_get as data_get, index_data_set as data_set, index_deepAssign as deepAssign, index_deepCloneWithJson as deepCloneWithJson, index_emptyData as emptyData, index_fieldSorter as fieldSorter, index_gettype as gettype, index_head as head, index_parameterMerge as parameterMerge, index_range as range, index_recursiveDeepCopy as recursiveDeepCopy, index_remove as remove, index_searchInStr as searchInStr, index_strToConvert as strToConvert, index_strToHump as strToHump };
|
|
141
151
|
}
|
|
142
152
|
|
|
143
|
-
export { data_get, data_set, deepAssign, deepCloneWithJson, emptyData, fieldSorter, gettype, head, index as i, parameterMerge, recursiveDeepCopy, remove, searchInStr, strToConvert, strToHump };
|
|
153
|
+
export { data_get, data_set, deepAssign, deepCloneWithJson, emptyData, fieldSorter, gettype, head, index as i, parameterMerge, range, recursiveDeepCopy, remove, searchInStr, strToConvert, strToHump };
|
package/dist/help/index.d.ts
CHANGED
|
@@ -122,6 +122,15 @@ declare function fieldSorter(sort: {
|
|
|
122
122
|
[_: string]: any;
|
|
123
123
|
}) => number;
|
|
124
124
|
|
|
125
|
+
/**
|
|
126
|
+
* 取得區間的數值
|
|
127
|
+
* @param start 開始時間
|
|
128
|
+
* @param stop 結束時間
|
|
129
|
+
* @param step 間隔
|
|
130
|
+
* @returns
|
|
131
|
+
*/
|
|
132
|
+
declare function range(start: number, stop: number, step: number): number[];
|
|
133
|
+
|
|
125
134
|
declare const index_data_get: typeof data_get;
|
|
126
135
|
declare const index_data_set: typeof data_set;
|
|
127
136
|
declare const index_deepAssign: typeof deepAssign;
|
|
@@ -131,13 +140,14 @@ declare const index_fieldSorter: typeof fieldSorter;
|
|
|
131
140
|
declare const index_gettype: typeof gettype;
|
|
132
141
|
declare const index_head: typeof head;
|
|
133
142
|
declare const index_parameterMerge: typeof parameterMerge;
|
|
143
|
+
declare const index_range: typeof range;
|
|
134
144
|
declare const index_recursiveDeepCopy: typeof recursiveDeepCopy;
|
|
135
145
|
declare const index_remove: typeof remove;
|
|
136
146
|
declare const index_searchInStr: typeof searchInStr;
|
|
137
147
|
declare const index_strToConvert: typeof strToConvert;
|
|
138
148
|
declare const index_strToHump: typeof strToHump;
|
|
139
149
|
declare namespace index {
|
|
140
|
-
export { index_data_get as data_get, index_data_set as data_set, index_deepAssign as deepAssign, index_deepCloneWithJson as deepCloneWithJson, index_emptyData as emptyData, index_fieldSorter as fieldSorter, index_gettype as gettype, index_head as head, index_parameterMerge as parameterMerge, index_recursiveDeepCopy as recursiveDeepCopy, index_remove as remove, index_searchInStr as searchInStr, index_strToConvert as strToConvert, index_strToHump as strToHump };
|
|
150
|
+
export { index_data_get as data_get, index_data_set as data_set, index_deepAssign as deepAssign, index_deepCloneWithJson as deepCloneWithJson, index_emptyData as emptyData, index_fieldSorter as fieldSorter, index_gettype as gettype, index_head as head, index_parameterMerge as parameterMerge, index_range as range, index_recursiveDeepCopy as recursiveDeepCopy, index_remove as remove, index_searchInStr as searchInStr, index_strToConvert as strToConvert, index_strToHump as strToHump };
|
|
141
151
|
}
|
|
142
152
|
|
|
143
|
-
export { data_get, data_set, deepAssign, deepCloneWithJson, emptyData, fieldSorter, gettype, head, index as i, parameterMerge, recursiveDeepCopy, remove, searchInStr, strToConvert, strToHump };
|
|
153
|
+
export { data_get, data_set, deepAssign, deepCloneWithJson, emptyData, fieldSorter, gettype, head, index as i, parameterMerge, range, recursiveDeepCopy, remove, searchInStr, strToConvert, strToHump };
|
package/dist/help/index.js
CHANGED
|
@@ -29,6 +29,7 @@ __export(help_exports, {
|
|
|
29
29
|
gettype: () => gettype,
|
|
30
30
|
head: () => head,
|
|
31
31
|
parameterMerge: () => parameterMerge,
|
|
32
|
+
range: () => range,
|
|
32
33
|
recursiveDeepCopy: () => recursiveDeepCopy,
|
|
33
34
|
remove: () => remove,
|
|
34
35
|
searchInStr: () => searchInStr,
|
|
@@ -216,6 +217,12 @@ function fieldSorter(sort) {
|
|
|
216
217
|
return data;
|
|
217
218
|
};
|
|
218
219
|
}
|
|
220
|
+
|
|
221
|
+
// src/help/range/range.ts
|
|
222
|
+
function range(start, stop, step) {
|
|
223
|
+
const range2 = { length: (stop - start) / step + 1 };
|
|
224
|
+
return Array.from(range2, (_, i) => start + i * step);
|
|
225
|
+
}
|
|
219
226
|
// Annotate the CommonJS export names for ESM import in node:
|
|
220
227
|
0 && (module.exports = {
|
|
221
228
|
data_get,
|
|
@@ -227,6 +234,7 @@ function fieldSorter(sort) {
|
|
|
227
234
|
gettype,
|
|
228
235
|
head,
|
|
229
236
|
parameterMerge,
|
|
237
|
+
range,
|
|
230
238
|
recursiveDeepCopy,
|
|
231
239
|
remove,
|
|
232
240
|
searchInStr,
|
package/dist/help/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/help/index.ts","../../src/help/data_set/data_set.ts","../../src/help/data_get/data_get.ts","../../src/help/recursiveDeepCopy/recursiveDeepCopy.ts","../../src/help/emptyData/emptyData.ts","../../src/help/gettype/gettype.ts","../../src/help/parameterMerge/parameterMerge.ts","../../src/help/head/head.ts","../../src/help/deepCloneWithJson/deepCloneWithJson.ts","../../src/help/remove/remove.ts","../../src/help/searchInStr/searchInStr.ts","../../src/help/strToConvert/strToConvert.ts","../../src/help/strToHump/strToHump.ts","../../src/help/deepAssign/deepAssign.ts","../../src/help/fieldSorter/fieldSorter.ts"],"sourcesContent":["export * from './data_set/data_set';\r\nexport * from './data_get/data_get';\r\nexport * from './recursiveDeepCopy/recursiveDeepCopy';\r\nexport * from './emptyData/emptyData';\r\nexport * from './gettype/gettype';\r\nexport * from './parameterMerge/parameterMerge';\r\nexport * from './head/head';\r\nexport * from './deepCloneWithJson/deepCloneWithJson';\r\nexport * from './remove/remove';\r\nexport * from './searchInStr/searchInStr';\r\nexport * from './strToConvert/strToConvert';\r\nexport * from './strToHump/strToHump';\r\nexport * from './deepAssign/deepAssign';\r\nexport * from './fieldSorter/fieldSorter';","/**\r\n * 動態設定多層物件的參數\r\n * @param data 被設定的物件\r\n * @param key 位置\r\n * @param value 參數\r\n * @returns \r\n */\r\nexport function data_set(data: any, key: string, value: any) {\r\n const keys = key.split(\".\");\r\n const firstKey = keys.shift();\r\n if (!firstKey) return data;\r\n\r\n if (keys.length < 1) {\r\n data[firstKey] = value;\r\n return data;\r\n }\r\n\r\n data[firstKey] = data_set({}, keys.join(\".\"), value);\r\n return data;\r\n}","import { deepCloneWithJson, gettype } from \"..\";\r\n\r\n/**\r\n * 獲取資料\r\n * @param data 資料集{key:value}\r\n * @param key 資料對應的位置 app.column.name\r\n * @param defaultValue 如果取不到值要給予什麼參數,預設 null\r\n * @returns\r\n *\r\n * {a:[{b:a},{b:a}]}\r\n * a.b = [a,a]\r\n */\r\nexport function data_get(data: any, key: string, defaultValue: any = null,): any {\r\n switch (gettype(data)) {\r\n case \"object\":\r\n const coypData = deepCloneWithJson(data);\r\n const keys = key.split('.');\r\n let firstKey = keys.shift();\r\n if (!firstKey) return defaultValue;\r\n if (!(firstKey in coypData)) return defaultValue;\r\n\r\n let rep = coypData[firstKey];\r\n if (keys.length > 0)\r\n rep = data_get(rep, keys.join('.'), defaultValue);\r\n\r\n return rep ?? defaultValue;\r\n case 'undefined':\r\n case 'null':\r\n return defaultValue;\r\n case 'array':\r\n return (data as any[]).map((value: any) => data_get(value, key, defaultValue)) as any;\r\n default:\r\n return data;\r\n }\r\n}","/**\r\n* 透過遞迴複製物件\r\n* @param o \r\n* @returns \r\n*/\r\nexport function recursiveDeepCopy<T = any>(o: T): T {\r\n switch (Object.prototype.toString.apply(o)) {\r\n case \"[object Array]\":\r\n const tempArry: any = [];\r\n (o as Array<any>).forEach(value => {\r\n (tempArry as Array<any>).push(recursiveDeepCopy(value));\r\n })\r\n return tempArry;\r\n case \"[object Object]\":\r\n const tempO: any = {};\r\n Object.keys(o as Object).forEach(key => {\r\n if (Object.prototype.hasOwnProperty.call(o, key))\r\n tempO[key] = recursiveDeepCopy((o as { [_: string]: any })[key]);\r\n })\r\n return tempO;\r\n default:\r\n return o;\r\n }\r\n}","/**\r\n * 判斷資料是否為空值\r\n * @param data \r\n * @returns \r\n */\r\nexport function emptyData(data: any) {\r\n return typeof data === \"undefined\" || data === null\r\n}","/**\r\n * 回傳物體的型態\r\n * @param obj \r\n * @returns \r\n */\r\nexport function gettype<T = any>(obj: T) {\r\n switch (true) {\r\n case obj instanceof Array:\r\n return 'array';\r\n case obj instanceof Date:\r\n return 'date';\r\n case obj === null:\r\n return 'null';\r\n default:\r\n return typeof obj;\r\n }\r\n}","import { gettype, recursiveDeepCopy } from \"..\";\r\n\r\n/**\r\n * 兩個參數的合併(只能是物件或者陣列)\r\n * 如果是空值就回傳空物件\r\n * @param value1 \r\n * @param value2 \r\n * @returns \r\n */\r\nexport function parameterMerge(value1?: any, value2?: any) {\r\n const type1 = gettype(value1);\r\n const type2 = gettype(value2);\r\n\r\n switch (true) {\r\n case (type1 === \"undefined\" || type1 === \"null\") && !!value2:\r\n return value2;\r\n case (type2 === \"undefined\" || type2 === \"null\") && !!value1:\r\n return value1;\r\n case type1 === \"array\" && type1 === type2:\r\n return [...value1, ...value2];\r\n case type1 === \"object\" && type1 === type2:\r\n return Object.assign(recursiveDeepCopy(value1), value2);\r\n default:\r\n return {};\r\n }\r\n}","import { gettype } from \"..\";\r\n\r\n/**\r\n * 回傳物件的第一個值或者空值\r\n * @param arr\r\n * @returns\r\n */\r\nexport function head<T = any>(arr: Array<T>): T | null {\r\n if (gettype(arr) !== 'array') return null;\r\n return arr.length > 0 ? arr[0] : null;\r\n}\r\n\r\n\r\n","/**\r\n * 透過 JSON 複製物件\r\n * @param obj 要複製的物件\r\n * @returns\r\n */\r\nexport function deepCloneWithJson<T>(obj: T) {\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n ","type TremoveValeu = string | number\r\n\r\n/**\r\n * 移除陣列某一個位置的值\r\n * @param arr 陣列\r\n * @param item 要移除的值\r\n * @returns\r\n */\r\nexport function remove(arr: TremoveValeu[], item: TremoveValeu) {\r\n if (arr.length === 0) return [];\r\n\r\n const index = arr.indexOf(item);\r\n if (index === -1) return arr;\r\n\r\n return [...arr.slice(0, index), ...arr.slice(index + 1)];\r\n}","/**\r\n * 尋找字串內是否有符合的值,並移除後回傳結果\r\n * @param str 字串\r\n * @param key 要搜尋的文字\r\n * @returns [boolean,string]\r\n */\r\nexport function searchInStr(str: string, key: string): [boolean, string] {\r\n return str.indexOf(key) === -1 ? [false, str] : [true, str.replace(key, '')];\r\n}","/**\r\n * 駝峰轉小寫+convert(default:底線)\r\n * @param str\r\n * @returns\r\n */\r\nexport function strToConvert(str: string, convert: string = \"_\") {\r\n return str.replace(/\\B([A-Z])/g, `${convert}$1`).toLowerCase();\r\n}","/**\r\n * 底線轉駝峰\r\n * @param str\r\n * @returns\r\n */\r\nexport function strToHump(str: string) {\r\n if (str.startsWith('_')) str = str.slice(1);\r\n\r\n return str.replace(/([^_])(?:_+([^_]))/g, function ($0, $1, $2) {\r\n return $1 + $2.toUpperCase();\r\n });\r\n}","import { gettype } from \"../gettype/gettype\";\r\n\r\n/**\r\n * 物件深度合併\r\n * @param target\r\n * @param sources\r\n * @returns\r\n */\r\nexport function deepAssign(...param: ({ [_: string]: any } | undefined)[]) {\r\n let temp: any[] = param.filter(v => gettype(v) === \"object\")\r\n if (temp.length < 1) return {};\r\n \r\n let result = Object.assign({}, ...temp);\r\n\r\n for (let item of temp) {\r\n for (const [idx, val] of Object.entries<any>(item)) {\r\n if (gettype(val) === \"object\") {\r\n result[idx] = deepAssign(result[idx], val);\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n","/**\r\n * 多欄位排序\r\n * @param sort \r\n * @returns \r\n */\r\nexport function fieldSorter(sort: {\r\n isDesc?: boolean,\r\n fields: {\r\n key: string,\r\n isNumber?: boolean,\r\n isDesc?: boolean\r\n }[]\r\n}) {\r\n return (a: { [_: string]: any }, b: { [_: string]: any }) => {\r\n const data = sort.fields\r\n .map(filed => {\r\n let dir = 1;\r\n if (filed.isDesc) {\r\n dir = -1;\r\n }\r\n\r\n let valueA = a[filed.key];\r\n let valueB = b[filed.key];\r\n\r\n if (!valueA || !valueB)\r\n return 0;\r\n\r\n if (filed.isNumber) {\r\n valueA = Number(valueA);\r\n valueB = Number(valueB);\r\n\r\n if (Number.isNaN(valueA) || Number.isNaN(valueB))\r\n return 0\r\n }\r\n\r\n return valueA > valueB ? dir : valueA < valueB ? -(dir) : 0;\r\n }).reduce((p, n) => p ? p : n, 0);\r\n\r\n if (sort.isDesc)\r\n data * -1;\r\n\r\n return data;\r\n };\r\n};"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACOO,SAAS,SAAS,MAAW,KAAa,OAAY;AACzD,QAAM,OAAO,IAAI,MAAM,GAAG;AAC1B,QAAM,WAAW,KAAK,MAAM;AAC5B,MAAI,CAAC;AAAU,WAAO;AAEtB,MAAI,KAAK,SAAS,GAAG;AACjB,SAAK,QAAQ,IAAI;AACjB,WAAO;AAAA,EACX;AAEA,OAAK,QAAQ,IAAI,SAAS,CAAC,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK;AACnD,SAAO;AACX;;;ACPO,SAAS,SAAS,MAAW,KAAa,eAAoB,MAAY;AAC7E,UAAQ,QAAQ,IAAI,GAAG;AAAA,IACnB,KAAK;AACD,YAAM,WAAW,kBAAkB,IAAI;AACvC,YAAM,OAAO,IAAI,MAAM,GAAG;AAC1B,UAAI,WAAW,KAAK,MAAM;AAC1B,UAAI,CAAC;AAAU,eAAO;AACtB,UAAI,EAAE,YAAY;AAAW,eAAO;AAEpC,UAAI,MAAM,SAAS,QAAQ;AAC3B,UAAI,KAAK,SAAS;AACd,cAAM,SAAS,KAAK,KAAK,KAAK,GAAG,GAAG,YAAY;AAEpD,aAAO,oBAAO;AAAA,IAClB,KAAK;AAAA,IACL,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAQ,KAAe,IAAI,CAAC,UAAe,SAAS,OAAO,KAAK,YAAY,CAAC;AAAA,IACjF;AACI,aAAO;AAAA,EACf;AACJ;;;AC7BO,SAAS,kBAA2B,GAAS;AAChD,UAAQ,OAAO,UAAU,SAAS,MAAM,CAAC,GAAG;AAAA,IACxC,KAAK;AACD,YAAM,WAAgB,CAAC;AACvB,MAAC,EAAiB,QAAQ,WAAS;AAC/B,QAAC,SAAwB,KAAK,kBAAkB,KAAK,CAAC;AAAA,MAC1D,CAAC;AACD,aAAO;AAAA,IACX,KAAK;AACD,YAAM,QAAa,CAAC;AACpB,aAAO,KAAK,CAAW,EAAE,QAAQ,SAAO;AACpC,YAAI,OAAO,UAAU,eAAe,KAAK,GAAG,GAAG;AAC3C,gBAAM,GAAG,IAAI,kBAAmB,EAA2B,GAAG,CAAC;AAAA,MACvE,CAAC;AACD,aAAO;AAAA,IACX;AACI,aAAO;AAAA,EACf;AACJ;;;AClBO,SAAS,UAAU,MAAW;AACjC,SAAO,OAAO,SAAS,eAAe,SAAS;AACnD;;;ACFO,SAAS,QAAiB,KAAQ;AACrC,UAAQ,MAAM;AAAA,IACV,KAAK,eAAe;AAChB,aAAO;AAAA,IACX,KAAK,eAAe;AAChB,aAAO;AAAA,IACX,KAAK,QAAQ;AACT,aAAO;AAAA,IACX;AACI,aAAO,OAAO;AAAA,EACtB;AACJ;;;ACPO,SAAS,eAAe,QAAc,QAAc;AACvD,QAAM,QAAQ,QAAQ,MAAM;AAC5B,QAAM,QAAQ,QAAQ,MAAM;AAE5B,UAAQ,MAAM;AAAA,IACV,OAAM,UAAU,eAAe,UAAU,WAAW,CAAC,CAAC;AAClD,aAAO;AAAA,IACX,OAAM,UAAU,eAAe,UAAU,WAAW,CAAC,CAAC;AAClD,aAAO;AAAA,IACX,MAAK,UAAU,WAAW,UAAU;AAChC,aAAO,CAAC,GAAG,QAAQ,GAAG,MAAM;AAAA,IAChC,MAAK,UAAU,YAAY,UAAU;AACjC,aAAO,OAAO,OAAO,kBAAkB,MAAM,GAAG,MAAM;AAAA,IAC1D;AACI,aAAO,CAAC;AAAA,EAChB;AACJ;;;AClBO,SAAS,KAAc,KAAyB;AACnD,MAAI,QAAQ,GAAG,MAAM;AAAS,WAAO;AACrC,SAAO,IAAI,SAAS,IAAI,IAAI,CAAC,IAAI;AACrC;;;ACLO,SAAS,kBAAqB,KAAQ;AACzC,SAAO,KAAK,MAAM,KAAK,UAAU,GAAG,CAAC;AACvC;;;ACCK,SAAS,OAAO,KAAqB,MAAoB;AAC5D,MAAI,IAAI,WAAW;AAAG,WAAO,CAAC;AAE9B,QAAM,QAAQ,IAAI,QAAQ,IAAI;AAC9B,MAAI,UAAU;AAAI,WAAO;AAEzB,SAAO,CAAC,GAAG,IAAI,MAAM,GAAG,KAAK,GAAG,GAAG,IAAI,MAAM,QAAQ,CAAC,CAAC;AAC3D;;;ACTO,SAAS,YAAY,KAAa,KAAgC;AACrE,SAAO,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,KAAK,EAAE,CAAC;AAC/E;;;ACHO,SAAS,aAAa,KAAa,UAAkB,KAAK;AAC7D,SAAO,IAAI,QAAQ,cAAc,GAAG,OAAO,IAAI,EAAE,YAAY;AACjE;;;ACFO,SAAS,UAAU,KAAa;AACrC,MAAI,IAAI,WAAW,GAAG;AAAG,UAAM,IAAI,MAAM,CAAC;AAE1C,SAAO,IAAI,QAAQ,uBAAuB,SAAU,IAAI,IAAI,IAAI;AAC9D,WAAO,KAAK,GAAG,YAAY;AAAA,EAC7B,CAAC;AACH;;;ACHO,SAAS,cAAc,OAA6C;AACvE,MAAI,OAAc,MAAM,OAAO,OAAK,QAAQ,CAAC,MAAM,QAAQ;AAC3D,MAAI,KAAK,SAAS;AAAG,WAAO,CAAC;AAE7B,MAAI,SAAS,OAAO,OAAO,CAAC,GAAG,GAAG,IAAI;AAEtC,WAAS,QAAQ,MAAM;AACnB,eAAW,CAAC,KAAK,GAAG,KAAK,OAAO,QAAa,IAAI,GAAG;AAChD,UAAI,QAAQ,GAAG,MAAM,UAAU;AAC3B,eAAO,GAAG,IAAI,WAAW,OAAO,GAAG,GAAG,GAAG;AAAA,MAC7C;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;;;ACjBO,SAAS,YAAY,MAOzB;AACC,SAAO,CAAC,GAAyB,MAA4B;AACzD,UAAM,OAAO,KAAK,OACb,IAAI,WAAS;AACV,UAAI,MAAM;AACV,UAAI,MAAM,QAAQ;AACd,cAAM;AAAA,MACV;AAEA,UAAI,SAAS,EAAE,MAAM,GAAG;AACxB,UAAI,SAAS,EAAE,MAAM,GAAG;AAExB,UAAI,CAAC,UAAU,CAAC;AACZ,eAAO;AAEX,UAAI,MAAM,UAAU;AAChB,iBAAS,OAAO,MAAM;AACtB,iBAAS,OAAO,MAAM;AAEtB,YAAI,OAAO,MAAM,MAAM,KAAK,OAAO,MAAM,MAAM;AAC3C,iBAAO;AAAA,MACf;AAEA,aAAO,SAAS,SAAS,MAAM,SAAS,SAAS,CAAE,MAAO;AAAA,IAC9D,CAAC,EAAE,OAAO,CAAC,GAAG,MAAM,IAAI,IAAI,GAAG,CAAC;AAEpC,QAAI,KAAK;AACL,aAAO;AAEX,WAAO;AAAA,EACX;AACJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/help/index.ts","../../src/help/data_set/data_set.ts","../../src/help/data_get/data_get.ts","../../src/help/recursiveDeepCopy/recursiveDeepCopy.ts","../../src/help/emptyData/emptyData.ts","../../src/help/gettype/gettype.ts","../../src/help/parameterMerge/parameterMerge.ts","../../src/help/head/head.ts","../../src/help/deepCloneWithJson/deepCloneWithJson.ts","../../src/help/remove/remove.ts","../../src/help/searchInStr/searchInStr.ts","../../src/help/strToConvert/strToConvert.ts","../../src/help/strToHump/strToHump.ts","../../src/help/deepAssign/deepAssign.ts","../../src/help/fieldSorter/fieldSorter.ts","../../src/help/range/range.ts"],"sourcesContent":["export * from './data_set/data_set';\r\nexport * from './data_get/data_get';\r\nexport * from './recursiveDeepCopy/recursiveDeepCopy';\r\nexport * from './emptyData/emptyData';\r\nexport * from './gettype/gettype';\r\nexport * from './parameterMerge/parameterMerge';\r\nexport * from './head/head';\r\nexport * from './deepCloneWithJson/deepCloneWithJson';\r\nexport * from './remove/remove';\r\nexport * from './searchInStr/searchInStr';\r\nexport * from './strToConvert/strToConvert';\r\nexport * from './strToHump/strToHump';\r\nexport * from './deepAssign/deepAssign';\r\nexport * from './fieldSorter/fieldSorter';\r\nexport * from \"./range/range\";","/**\r\n * 動態設定多層物件的參數\r\n * @param data 被設定的物件\r\n * @param key 位置\r\n * @param value 參數\r\n * @returns \r\n */\r\nexport function data_set(data: any, key: string, value: any) {\r\n const keys = key.split(\".\");\r\n const firstKey = keys.shift();\r\n if (!firstKey) return data;\r\n\r\n if (keys.length < 1) {\r\n data[firstKey] = value;\r\n return data;\r\n }\r\n\r\n data[firstKey] = data_set({}, keys.join(\".\"), value);\r\n return data;\r\n}","import { deepCloneWithJson, gettype } from \"..\";\r\n\r\n/**\r\n * 獲取資料\r\n * @param data 資料集{key:value}\r\n * @param key 資料對應的位置 app.column.name\r\n * @param defaultValue 如果取不到值要給予什麼參數,預設 null\r\n * @returns\r\n *\r\n * {a:[{b:a},{b:a}]}\r\n * a.b = [a,a]\r\n */\r\nexport function data_get(data: any, key: string, defaultValue: any = null,): any {\r\n switch (gettype(data)) {\r\n case \"object\":\r\n const coypData = deepCloneWithJson(data);\r\n const keys = key.split('.');\r\n let firstKey = keys.shift();\r\n if (!firstKey) return defaultValue;\r\n if (!(firstKey in coypData)) return defaultValue;\r\n\r\n let rep = coypData[firstKey];\r\n if (keys.length > 0)\r\n rep = data_get(rep, keys.join('.'), defaultValue);\r\n\r\n return rep ?? defaultValue;\r\n case 'undefined':\r\n case 'null':\r\n return defaultValue;\r\n case 'array':\r\n return (data as any[]).map((value: any) => data_get(value, key, defaultValue)) as any;\r\n default:\r\n return data;\r\n }\r\n}","/**\r\n* 透過遞迴複製物件\r\n* @param o \r\n* @returns \r\n*/\r\nexport function recursiveDeepCopy<T = any>(o: T): T {\r\n switch (Object.prototype.toString.apply(o)) {\r\n case \"[object Array]\":\r\n const tempArry: any = [];\r\n (o as Array<any>).forEach(value => {\r\n (tempArry as Array<any>).push(recursiveDeepCopy(value));\r\n })\r\n return tempArry;\r\n case \"[object Object]\":\r\n const tempO: any = {};\r\n Object.keys(o as Object).forEach(key => {\r\n if (Object.prototype.hasOwnProperty.call(o, key))\r\n tempO[key] = recursiveDeepCopy((o as { [_: string]: any })[key]);\r\n })\r\n return tempO;\r\n default:\r\n return o;\r\n }\r\n}","/**\r\n * 判斷資料是否為空值\r\n * @param data \r\n * @returns \r\n */\r\nexport function emptyData(data: any) {\r\n return typeof data === \"undefined\" || data === null\r\n}","/**\r\n * 回傳物體的型態\r\n * @param obj \r\n * @returns \r\n */\r\nexport function gettype<T = any>(obj: T) {\r\n switch (true) {\r\n case obj instanceof Array:\r\n return 'array';\r\n case obj instanceof Date:\r\n return 'date';\r\n case obj === null:\r\n return 'null';\r\n default:\r\n return typeof obj;\r\n }\r\n}","import { gettype, recursiveDeepCopy } from \"..\";\r\n\r\n/**\r\n * 兩個參數的合併(只能是物件或者陣列)\r\n * 如果是空值就回傳空物件\r\n * @param value1 \r\n * @param value2 \r\n * @returns \r\n */\r\nexport function parameterMerge(value1?: any, value2?: any) {\r\n const type1 = gettype(value1);\r\n const type2 = gettype(value2);\r\n\r\n switch (true) {\r\n case (type1 === \"undefined\" || type1 === \"null\") && !!value2:\r\n return value2;\r\n case (type2 === \"undefined\" || type2 === \"null\") && !!value1:\r\n return value1;\r\n case type1 === \"array\" && type1 === type2:\r\n return [...value1, ...value2];\r\n case type1 === \"object\" && type1 === type2:\r\n return Object.assign(recursiveDeepCopy(value1), value2);\r\n default:\r\n return {};\r\n }\r\n}","import { gettype } from \"..\";\r\n\r\n/**\r\n * 回傳物件的第一個值或者空值\r\n * @param arr\r\n * @returns\r\n */\r\nexport function head<T = any>(arr: Array<T>): T | null {\r\n if (gettype(arr) !== 'array') return null;\r\n return arr.length > 0 ? arr[0] : null;\r\n}\r\n\r\n\r\n","/**\r\n * 透過 JSON 複製物件\r\n * @param obj 要複製的物件\r\n * @returns\r\n */\r\nexport function deepCloneWithJson<T>(obj: T) {\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n ","type TremoveValeu = string | number\r\n\r\n/**\r\n * 移除陣列某一個位置的值\r\n * @param arr 陣列\r\n * @param item 要移除的值\r\n * @returns\r\n */\r\nexport function remove(arr: TremoveValeu[], item: TremoveValeu) {\r\n if (arr.length === 0) return [];\r\n\r\n const index = arr.indexOf(item);\r\n if (index === -1) return arr;\r\n\r\n return [...arr.slice(0, index), ...arr.slice(index + 1)];\r\n}","/**\r\n * 尋找字串內是否有符合的值,並移除後回傳結果\r\n * @param str 字串\r\n * @param key 要搜尋的文字\r\n * @returns [boolean,string]\r\n */\r\nexport function searchInStr(str: string, key: string): [boolean, string] {\r\n return str.indexOf(key) === -1 ? [false, str] : [true, str.replace(key, '')];\r\n}","/**\r\n * 駝峰轉小寫+convert(default:底線)\r\n * @param str\r\n * @returns\r\n */\r\nexport function strToConvert(str: string, convert: string = \"_\") {\r\n return str.replace(/\\B([A-Z])/g, `${convert}$1`).toLowerCase();\r\n}","/**\r\n * 底線轉駝峰\r\n * @param str\r\n * @returns\r\n */\r\nexport function strToHump(str: string) {\r\n if (str.startsWith('_')) str = str.slice(1);\r\n\r\n return str.replace(/([^_])(?:_+([^_]))/g, function ($0, $1, $2) {\r\n return $1 + $2.toUpperCase();\r\n });\r\n}","import { gettype } from \"../gettype/gettype\";\r\n\r\n/**\r\n * 物件深度合併\r\n * @param target\r\n * @param sources\r\n * @returns\r\n */\r\nexport function deepAssign(...param: ({ [_: string]: any } | undefined)[]) {\r\n let temp: any[] = param.filter(v => gettype(v) === \"object\")\r\n if (temp.length < 1) return {};\r\n \r\n let result = Object.assign({}, ...temp);\r\n\r\n for (let item of temp) {\r\n for (const [idx, val] of Object.entries<any>(item)) {\r\n if (gettype(val) === \"object\") {\r\n result[idx] = deepAssign(result[idx], val);\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n","/**\r\n * 多欄位排序\r\n * @param sort \r\n * @returns \r\n */\r\nexport function fieldSorter(sort: {\r\n isDesc?: boolean,\r\n fields: {\r\n key: string,\r\n isNumber?: boolean,\r\n isDesc?: boolean\r\n }[]\r\n}) {\r\n return (a: { [_: string]: any }, b: { [_: string]: any }) => {\r\n const data = sort.fields\r\n .map(filed => {\r\n let dir = 1;\r\n if (filed.isDesc) {\r\n dir = -1;\r\n }\r\n\r\n let valueA = a[filed.key];\r\n let valueB = b[filed.key];\r\n\r\n if (!valueA || !valueB)\r\n return 0;\r\n\r\n if (filed.isNumber) {\r\n valueA = Number(valueA);\r\n valueB = Number(valueB);\r\n\r\n if (Number.isNaN(valueA) || Number.isNaN(valueB))\r\n return 0\r\n }\r\n\r\n return valueA > valueB ? dir : valueA < valueB ? -(dir) : 0;\r\n }).reduce((p, n) => p ? p : n, 0);\r\n\r\n if (sort.isDesc)\r\n data * -1;\r\n\r\n return data;\r\n };\r\n};","/**\r\n * 取得區間的數值\r\n * @param start 開始時間\r\n * @param stop 結束時間\r\n * @param step 間隔\r\n * @returns \r\n */\r\nexport function range(start: number, stop: number, step: number) {\r\n const range = { length: (stop - start) / step + 1 };\r\n\r\n return Array.from(range, (_, i) => start + (i * step));\r\n};"],"mappings":"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","names":["range"]}
|
package/dist/help/index.mjs
CHANGED
|
@@ -177,6 +177,12 @@ function fieldSorter(sort) {
|
|
|
177
177
|
return data;
|
|
178
178
|
};
|
|
179
179
|
}
|
|
180
|
+
|
|
181
|
+
// src/help/range/range.ts
|
|
182
|
+
function range(start, stop, step) {
|
|
183
|
+
const range2 = { length: (stop - start) / step + 1 };
|
|
184
|
+
return Array.from(range2, (_, i) => start + i * step);
|
|
185
|
+
}
|
|
180
186
|
export {
|
|
181
187
|
data_get,
|
|
182
188
|
data_set,
|
|
@@ -187,6 +193,7 @@ export {
|
|
|
187
193
|
gettype,
|
|
188
194
|
head,
|
|
189
195
|
parameterMerge,
|
|
196
|
+
range,
|
|
190
197
|
recursiveDeepCopy,
|
|
191
198
|
remove,
|
|
192
199
|
searchInStr,
|
package/dist/help/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/help/data_set/data_set.ts","../../src/help/data_get/data_get.ts","../../src/help/recursiveDeepCopy/recursiveDeepCopy.ts","../../src/help/emptyData/emptyData.ts","../../src/help/gettype/gettype.ts","../../src/help/parameterMerge/parameterMerge.ts","../../src/help/head/head.ts","../../src/help/deepCloneWithJson/deepCloneWithJson.ts","../../src/help/remove/remove.ts","../../src/help/searchInStr/searchInStr.ts","../../src/help/strToConvert/strToConvert.ts","../../src/help/strToHump/strToHump.ts","../../src/help/deepAssign/deepAssign.ts","../../src/help/fieldSorter/fieldSorter.ts"],"sourcesContent":["/**\r\n * 動態設定多層物件的參數\r\n * @param data 被設定的物件\r\n * @param key 位置\r\n * @param value 參數\r\n * @returns \r\n */\r\nexport function data_set(data: any, key: string, value: any) {\r\n const keys = key.split(\".\");\r\n const firstKey = keys.shift();\r\n if (!firstKey) return data;\r\n\r\n if (keys.length < 1) {\r\n data[firstKey] = value;\r\n return data;\r\n }\r\n\r\n data[firstKey] = data_set({}, keys.join(\".\"), value);\r\n return data;\r\n}","import { deepCloneWithJson, gettype } from \"..\";\r\n\r\n/**\r\n * 獲取資料\r\n * @param data 資料集{key:value}\r\n * @param key 資料對應的位置 app.column.name\r\n * @param defaultValue 如果取不到值要給予什麼參數,預設 null\r\n * @returns\r\n *\r\n * {a:[{b:a},{b:a}]}\r\n * a.b = [a,a]\r\n */\r\nexport function data_get(data: any, key: string, defaultValue: any = null,): any {\r\n switch (gettype(data)) {\r\n case \"object\":\r\n const coypData = deepCloneWithJson(data);\r\n const keys = key.split('.');\r\n let firstKey = keys.shift();\r\n if (!firstKey) return defaultValue;\r\n if (!(firstKey in coypData)) return defaultValue;\r\n\r\n let rep = coypData[firstKey];\r\n if (keys.length > 0)\r\n rep = data_get(rep, keys.join('.'), defaultValue);\r\n\r\n return rep ?? defaultValue;\r\n case 'undefined':\r\n case 'null':\r\n return defaultValue;\r\n case 'array':\r\n return (data as any[]).map((value: any) => data_get(value, key, defaultValue)) as any;\r\n default:\r\n return data;\r\n }\r\n}","/**\r\n* 透過遞迴複製物件\r\n* @param o \r\n* @returns \r\n*/\r\nexport function recursiveDeepCopy<T = any>(o: T): T {\r\n switch (Object.prototype.toString.apply(o)) {\r\n case \"[object Array]\":\r\n const tempArry: any = [];\r\n (o as Array<any>).forEach(value => {\r\n (tempArry as Array<any>).push(recursiveDeepCopy(value));\r\n })\r\n return tempArry;\r\n case \"[object Object]\":\r\n const tempO: any = {};\r\n Object.keys(o as Object).forEach(key => {\r\n if (Object.prototype.hasOwnProperty.call(o, key))\r\n tempO[key] = recursiveDeepCopy((o as { [_: string]: any })[key]);\r\n })\r\n return tempO;\r\n default:\r\n return o;\r\n }\r\n}","/**\r\n * 判斷資料是否為空值\r\n * @param data \r\n * @returns \r\n */\r\nexport function emptyData(data: any) {\r\n return typeof data === \"undefined\" || data === null\r\n}","/**\r\n * 回傳物體的型態\r\n * @param obj \r\n * @returns \r\n */\r\nexport function gettype<T = any>(obj: T) {\r\n switch (true) {\r\n case obj instanceof Array:\r\n return 'array';\r\n case obj instanceof Date:\r\n return 'date';\r\n case obj === null:\r\n return 'null';\r\n default:\r\n return typeof obj;\r\n }\r\n}","import { gettype, recursiveDeepCopy } from \"..\";\r\n\r\n/**\r\n * 兩個參數的合併(只能是物件或者陣列)\r\n * 如果是空值就回傳空物件\r\n * @param value1 \r\n * @param value2 \r\n * @returns \r\n */\r\nexport function parameterMerge(value1?: any, value2?: any) {\r\n const type1 = gettype(value1);\r\n const type2 = gettype(value2);\r\n\r\n switch (true) {\r\n case (type1 === \"undefined\" || type1 === \"null\") && !!value2:\r\n return value2;\r\n case (type2 === \"undefined\" || type2 === \"null\") && !!value1:\r\n return value1;\r\n case type1 === \"array\" && type1 === type2:\r\n return [...value1, ...value2];\r\n case type1 === \"object\" && type1 === type2:\r\n return Object.assign(recursiveDeepCopy(value1), value2);\r\n default:\r\n return {};\r\n }\r\n}","import { gettype } from \"..\";\r\n\r\n/**\r\n * 回傳物件的第一個值或者空值\r\n * @param arr\r\n * @returns\r\n */\r\nexport function head<T = any>(arr: Array<T>): T | null {\r\n if (gettype(arr) !== 'array') return null;\r\n return arr.length > 0 ? arr[0] : null;\r\n}\r\n\r\n\r\n","/**\r\n * 透過 JSON 複製物件\r\n * @param obj 要複製的物件\r\n * @returns\r\n */\r\nexport function deepCloneWithJson<T>(obj: T) {\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n ","type TremoveValeu = string | number\r\n\r\n/**\r\n * 移除陣列某一個位置的值\r\n * @param arr 陣列\r\n * @param item 要移除的值\r\n * @returns\r\n */\r\nexport function remove(arr: TremoveValeu[], item: TremoveValeu) {\r\n if (arr.length === 0) return [];\r\n\r\n const index = arr.indexOf(item);\r\n if (index === -1) return arr;\r\n\r\n return [...arr.slice(0, index), ...arr.slice(index + 1)];\r\n}","/**\r\n * 尋找字串內是否有符合的值,並移除後回傳結果\r\n * @param str 字串\r\n * @param key 要搜尋的文字\r\n * @returns [boolean,string]\r\n */\r\nexport function searchInStr(str: string, key: string): [boolean, string] {\r\n return str.indexOf(key) === -1 ? [false, str] : [true, str.replace(key, '')];\r\n}","/**\r\n * 駝峰轉小寫+convert(default:底線)\r\n * @param str\r\n * @returns\r\n */\r\nexport function strToConvert(str: string, convert: string = \"_\") {\r\n return str.replace(/\\B([A-Z])/g, `${convert}$1`).toLowerCase();\r\n}","/**\r\n * 底線轉駝峰\r\n * @param str\r\n * @returns\r\n */\r\nexport function strToHump(str: string) {\r\n if (str.startsWith('_')) str = str.slice(1);\r\n\r\n return str.replace(/([^_])(?:_+([^_]))/g, function ($0, $1, $2) {\r\n return $1 + $2.toUpperCase();\r\n });\r\n}","import { gettype } from \"../gettype/gettype\";\r\n\r\n/**\r\n * 物件深度合併\r\n * @param target\r\n * @param sources\r\n * @returns\r\n */\r\nexport function deepAssign(...param: ({ [_: string]: any } | undefined)[]) {\r\n let temp: any[] = param.filter(v => gettype(v) === \"object\")\r\n if (temp.length < 1) return {};\r\n \r\n let result = Object.assign({}, ...temp);\r\n\r\n for (let item of temp) {\r\n for (const [idx, val] of Object.entries<any>(item)) {\r\n if (gettype(val) === \"object\") {\r\n result[idx] = deepAssign(result[idx], val);\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n","/**\r\n * 多欄位排序\r\n * @param sort \r\n * @returns \r\n */\r\nexport function fieldSorter(sort: {\r\n isDesc?: boolean,\r\n fields: {\r\n key: string,\r\n isNumber?: boolean,\r\n isDesc?: boolean\r\n }[]\r\n}) {\r\n return (a: { [_: string]: any }, b: { [_: string]: any }) => {\r\n const data = sort.fields\r\n .map(filed => {\r\n let dir = 1;\r\n if (filed.isDesc) {\r\n dir = -1;\r\n }\r\n\r\n let valueA = a[filed.key];\r\n let valueB = b[filed.key];\r\n\r\n if (!valueA || !valueB)\r\n return 0;\r\n\r\n if (filed.isNumber) {\r\n valueA = Number(valueA);\r\n valueB = Number(valueB);\r\n\r\n if (Number.isNaN(valueA) || Number.isNaN(valueB))\r\n return 0\r\n }\r\n\r\n return valueA > valueB ? dir : valueA < valueB ? -(dir) : 0;\r\n }).reduce((p, n) => p ? p : n, 0);\r\n\r\n if (sort.isDesc)\r\n data * -1;\r\n\r\n return data;\r\n };\r\n};"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/help/data_set/data_set.ts","../../src/help/data_get/data_get.ts","../../src/help/recursiveDeepCopy/recursiveDeepCopy.ts","../../src/help/emptyData/emptyData.ts","../../src/help/gettype/gettype.ts","../../src/help/parameterMerge/parameterMerge.ts","../../src/help/head/head.ts","../../src/help/deepCloneWithJson/deepCloneWithJson.ts","../../src/help/remove/remove.ts","../../src/help/searchInStr/searchInStr.ts","../../src/help/strToConvert/strToConvert.ts","../../src/help/strToHump/strToHump.ts","../../src/help/deepAssign/deepAssign.ts","../../src/help/fieldSorter/fieldSorter.ts","../../src/help/range/range.ts"],"sourcesContent":["/**\r\n * 動態設定多層物件的參數\r\n * @param data 被設定的物件\r\n * @param key 位置\r\n * @param value 參數\r\n * @returns \r\n */\r\nexport function data_set(data: any, key: string, value: any) {\r\n const keys = key.split(\".\");\r\n const firstKey = keys.shift();\r\n if (!firstKey) return data;\r\n\r\n if (keys.length < 1) {\r\n data[firstKey] = value;\r\n return data;\r\n }\r\n\r\n data[firstKey] = data_set({}, keys.join(\".\"), value);\r\n return data;\r\n}","import { deepCloneWithJson, gettype } from \"..\";\r\n\r\n/**\r\n * 獲取資料\r\n * @param data 資料集{key:value}\r\n * @param key 資料對應的位置 app.column.name\r\n * @param defaultValue 如果取不到值要給予什麼參數,預設 null\r\n * @returns\r\n *\r\n * {a:[{b:a},{b:a}]}\r\n * a.b = [a,a]\r\n */\r\nexport function data_get(data: any, key: string, defaultValue: any = null,): any {\r\n switch (gettype(data)) {\r\n case \"object\":\r\n const coypData = deepCloneWithJson(data);\r\n const keys = key.split('.');\r\n let firstKey = keys.shift();\r\n if (!firstKey) return defaultValue;\r\n if (!(firstKey in coypData)) return defaultValue;\r\n\r\n let rep = coypData[firstKey];\r\n if (keys.length > 0)\r\n rep = data_get(rep, keys.join('.'), defaultValue);\r\n\r\n return rep ?? defaultValue;\r\n case 'undefined':\r\n case 'null':\r\n return defaultValue;\r\n case 'array':\r\n return (data as any[]).map((value: any) => data_get(value, key, defaultValue)) as any;\r\n default:\r\n return data;\r\n }\r\n}","/**\r\n* 透過遞迴複製物件\r\n* @param o \r\n* @returns \r\n*/\r\nexport function recursiveDeepCopy<T = any>(o: T): T {\r\n switch (Object.prototype.toString.apply(o)) {\r\n case \"[object Array]\":\r\n const tempArry: any = [];\r\n (o as Array<any>).forEach(value => {\r\n (tempArry as Array<any>).push(recursiveDeepCopy(value));\r\n })\r\n return tempArry;\r\n case \"[object Object]\":\r\n const tempO: any = {};\r\n Object.keys(o as Object).forEach(key => {\r\n if (Object.prototype.hasOwnProperty.call(o, key))\r\n tempO[key] = recursiveDeepCopy((o as { [_: string]: any })[key]);\r\n })\r\n return tempO;\r\n default:\r\n return o;\r\n }\r\n}","/**\r\n * 判斷資料是否為空值\r\n * @param data \r\n * @returns \r\n */\r\nexport function emptyData(data: any) {\r\n return typeof data === \"undefined\" || data === null\r\n}","/**\r\n * 回傳物體的型態\r\n * @param obj \r\n * @returns \r\n */\r\nexport function gettype<T = any>(obj: T) {\r\n switch (true) {\r\n case obj instanceof Array:\r\n return 'array';\r\n case obj instanceof Date:\r\n return 'date';\r\n case obj === null:\r\n return 'null';\r\n default:\r\n return typeof obj;\r\n }\r\n}","import { gettype, recursiveDeepCopy } from \"..\";\r\n\r\n/**\r\n * 兩個參數的合併(只能是物件或者陣列)\r\n * 如果是空值就回傳空物件\r\n * @param value1 \r\n * @param value2 \r\n * @returns \r\n */\r\nexport function parameterMerge(value1?: any, value2?: any) {\r\n const type1 = gettype(value1);\r\n const type2 = gettype(value2);\r\n\r\n switch (true) {\r\n case (type1 === \"undefined\" || type1 === \"null\") && !!value2:\r\n return value2;\r\n case (type2 === \"undefined\" || type2 === \"null\") && !!value1:\r\n return value1;\r\n case type1 === \"array\" && type1 === type2:\r\n return [...value1, ...value2];\r\n case type1 === \"object\" && type1 === type2:\r\n return Object.assign(recursiveDeepCopy(value1), value2);\r\n default:\r\n return {};\r\n }\r\n}","import { gettype } from \"..\";\r\n\r\n/**\r\n * 回傳物件的第一個值或者空值\r\n * @param arr\r\n * @returns\r\n */\r\nexport function head<T = any>(arr: Array<T>): T | null {\r\n if (gettype(arr) !== 'array') return null;\r\n return arr.length > 0 ? arr[0] : null;\r\n}\r\n\r\n\r\n","/**\r\n * 透過 JSON 複製物件\r\n * @param obj 要複製的物件\r\n * @returns\r\n */\r\nexport function deepCloneWithJson<T>(obj: T) {\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n ","type TremoveValeu = string | number\r\n\r\n/**\r\n * 移除陣列某一個位置的值\r\n * @param arr 陣列\r\n * @param item 要移除的值\r\n * @returns\r\n */\r\nexport function remove(arr: TremoveValeu[], item: TremoveValeu) {\r\n if (arr.length === 0) return [];\r\n\r\n const index = arr.indexOf(item);\r\n if (index === -1) return arr;\r\n\r\n return [...arr.slice(0, index), ...arr.slice(index + 1)];\r\n}","/**\r\n * 尋找字串內是否有符合的值,並移除後回傳結果\r\n * @param str 字串\r\n * @param key 要搜尋的文字\r\n * @returns [boolean,string]\r\n */\r\nexport function searchInStr(str: string, key: string): [boolean, string] {\r\n return str.indexOf(key) === -1 ? [false, str] : [true, str.replace(key, '')];\r\n}","/**\r\n * 駝峰轉小寫+convert(default:底線)\r\n * @param str\r\n * @returns\r\n */\r\nexport function strToConvert(str: string, convert: string = \"_\") {\r\n return str.replace(/\\B([A-Z])/g, `${convert}$1`).toLowerCase();\r\n}","/**\r\n * 底線轉駝峰\r\n * @param str\r\n * @returns\r\n */\r\nexport function strToHump(str: string) {\r\n if (str.startsWith('_')) str = str.slice(1);\r\n\r\n return str.replace(/([^_])(?:_+([^_]))/g, function ($0, $1, $2) {\r\n return $1 + $2.toUpperCase();\r\n });\r\n}","import { gettype } from \"../gettype/gettype\";\r\n\r\n/**\r\n * 物件深度合併\r\n * @param target\r\n * @param sources\r\n * @returns\r\n */\r\nexport function deepAssign(...param: ({ [_: string]: any } | undefined)[]) {\r\n let temp: any[] = param.filter(v => gettype(v) === \"object\")\r\n if (temp.length < 1) return {};\r\n \r\n let result = Object.assign({}, ...temp);\r\n\r\n for (let item of temp) {\r\n for (const [idx, val] of Object.entries<any>(item)) {\r\n if (gettype(val) === \"object\") {\r\n result[idx] = deepAssign(result[idx], val);\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n","/**\r\n * 多欄位排序\r\n * @param sort \r\n * @returns \r\n */\r\nexport function fieldSorter(sort: {\r\n isDesc?: boolean,\r\n fields: {\r\n key: string,\r\n isNumber?: boolean,\r\n isDesc?: boolean\r\n }[]\r\n}) {\r\n return (a: { [_: string]: any }, b: { [_: string]: any }) => {\r\n const data = sort.fields\r\n .map(filed => {\r\n let dir = 1;\r\n if (filed.isDesc) {\r\n dir = -1;\r\n }\r\n\r\n let valueA = a[filed.key];\r\n let valueB = b[filed.key];\r\n\r\n if (!valueA || !valueB)\r\n return 0;\r\n\r\n if (filed.isNumber) {\r\n valueA = Number(valueA);\r\n valueB = Number(valueB);\r\n\r\n if (Number.isNaN(valueA) || Number.isNaN(valueB))\r\n return 0\r\n }\r\n\r\n return valueA > valueB ? dir : valueA < valueB ? -(dir) : 0;\r\n }).reduce((p, n) => p ? p : n, 0);\r\n\r\n if (sort.isDesc)\r\n data * -1;\r\n\r\n return data;\r\n };\r\n};","/**\r\n * 取得區間的數值\r\n * @param start 開始時間\r\n * @param stop 結束時間\r\n * @param step 間隔\r\n * @returns \r\n */\r\nexport function range(start: number, stop: number, step: number) {\r\n const range = { length: (stop - start) / step + 1 };\r\n\r\n return Array.from(range, (_, i) => start + (i * step));\r\n};"],"mappings":"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","names":["range"]}
|
package/dist/index.js
CHANGED
|
@@ -36,6 +36,7 @@ __export(help_exports, {
|
|
|
36
36
|
gettype: () => gettype,
|
|
37
37
|
head: () => head,
|
|
38
38
|
parameterMerge: () => parameterMerge,
|
|
39
|
+
range: () => range,
|
|
39
40
|
recursiveDeepCopy: () => recursiveDeepCopy,
|
|
40
41
|
remove: () => remove,
|
|
41
42
|
searchInStr: () => searchInStr,
|
|
@@ -222,6 +223,12 @@ function fieldSorter(sort) {
|
|
|
222
223
|
return data;
|
|
223
224
|
};
|
|
224
225
|
}
|
|
226
|
+
|
|
227
|
+
// src/help/range/range.ts
|
|
228
|
+
function range(start, stop, step) {
|
|
229
|
+
const range2 = { length: (stop - start) / step + 1 };
|
|
230
|
+
return Array.from(range2, (_, i) => start + i * step);
|
|
231
|
+
}
|
|
225
232
|
// Annotate the CommonJS export names for ESM import in node:
|
|
226
233
|
0 && (module.exports = {
|
|
227
234
|
help
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/help/index.ts","../src/help/data_set/data_set.ts","../src/help/data_get/data_get.ts","../src/help/recursiveDeepCopy/recursiveDeepCopy.ts","../src/help/emptyData/emptyData.ts","../src/help/gettype/gettype.ts","../src/help/parameterMerge/parameterMerge.ts","../src/help/head/head.ts","../src/help/deepCloneWithJson/deepCloneWithJson.ts","../src/help/remove/remove.ts","../src/help/searchInStr/searchInStr.ts","../src/help/strToConvert/strToConvert.ts","../src/help/strToHump/strToHump.ts","../src/help/deepAssign/deepAssign.ts","../src/help/fieldSorter/fieldSorter.ts"],"sourcesContent":["import * as help from './help';\r\n\r\nexport { help }","export * from './data_set/data_set';\r\nexport * from './data_get/data_get';\r\nexport * from './recursiveDeepCopy/recursiveDeepCopy';\r\nexport * from './emptyData/emptyData';\r\nexport * from './gettype/gettype';\r\nexport * from './parameterMerge/parameterMerge';\r\nexport * from './head/head';\r\nexport * from './deepCloneWithJson/deepCloneWithJson';\r\nexport * from './remove/remove';\r\nexport * from './searchInStr/searchInStr';\r\nexport * from './strToConvert/strToConvert';\r\nexport * from './strToHump/strToHump';\r\nexport * from './deepAssign/deepAssign';\r\nexport * from './fieldSorter/fieldSorter';","/**\r\n * 動態設定多層物件的參數\r\n * @param data 被設定的物件\r\n * @param key 位置\r\n * @param value 參數\r\n * @returns \r\n */\r\nexport function data_set(data: any, key: string, value: any) {\r\n const keys = key.split(\".\");\r\n const firstKey = keys.shift();\r\n if (!firstKey) return data;\r\n\r\n if (keys.length < 1) {\r\n data[firstKey] = value;\r\n return data;\r\n }\r\n\r\n data[firstKey] = data_set({}, keys.join(\".\"), value);\r\n return data;\r\n}","import { deepCloneWithJson, gettype } from \"..\";\r\n\r\n/**\r\n * 獲取資料\r\n * @param data 資料集{key:value}\r\n * @param key 資料對應的位置 app.column.name\r\n * @param defaultValue 如果取不到值要給予什麼參數,預設 null\r\n * @returns\r\n *\r\n * {a:[{b:a},{b:a}]}\r\n * a.b = [a,a]\r\n */\r\nexport function data_get(data: any, key: string, defaultValue: any = null,): any {\r\n switch (gettype(data)) {\r\n case \"object\":\r\n const coypData = deepCloneWithJson(data);\r\n const keys = key.split('.');\r\n let firstKey = keys.shift();\r\n if (!firstKey) return defaultValue;\r\n if (!(firstKey in coypData)) return defaultValue;\r\n\r\n let rep = coypData[firstKey];\r\n if (keys.length > 0)\r\n rep = data_get(rep, keys.join('.'), defaultValue);\r\n\r\n return rep ?? defaultValue;\r\n case 'undefined':\r\n case 'null':\r\n return defaultValue;\r\n case 'array':\r\n return (data as any[]).map((value: any) => data_get(value, key, defaultValue)) as any;\r\n default:\r\n return data;\r\n }\r\n}","/**\r\n* 透過遞迴複製物件\r\n* @param o \r\n* @returns \r\n*/\r\nexport function recursiveDeepCopy<T = any>(o: T): T {\r\n switch (Object.prototype.toString.apply(o)) {\r\n case \"[object Array]\":\r\n const tempArry: any = [];\r\n (o as Array<any>).forEach(value => {\r\n (tempArry as Array<any>).push(recursiveDeepCopy(value));\r\n })\r\n return tempArry;\r\n case \"[object Object]\":\r\n const tempO: any = {};\r\n Object.keys(o as Object).forEach(key => {\r\n if (Object.prototype.hasOwnProperty.call(o, key))\r\n tempO[key] = recursiveDeepCopy((o as { [_: string]: any })[key]);\r\n })\r\n return tempO;\r\n default:\r\n return o;\r\n }\r\n}","/**\r\n * 判斷資料是否為空值\r\n * @param data \r\n * @returns \r\n */\r\nexport function emptyData(data: any) {\r\n return typeof data === \"undefined\" || data === null\r\n}","/**\r\n * 回傳物體的型態\r\n * @param obj \r\n * @returns \r\n */\r\nexport function gettype<T = any>(obj: T) {\r\n switch (true) {\r\n case obj instanceof Array:\r\n return 'array';\r\n case obj instanceof Date:\r\n return 'date';\r\n case obj === null:\r\n return 'null';\r\n default:\r\n return typeof obj;\r\n }\r\n}","import { gettype, recursiveDeepCopy } from \"..\";\r\n\r\n/**\r\n * 兩個參數的合併(只能是物件或者陣列)\r\n * 如果是空值就回傳空物件\r\n * @param value1 \r\n * @param value2 \r\n * @returns \r\n */\r\nexport function parameterMerge(value1?: any, value2?: any) {\r\n const type1 = gettype(value1);\r\n const type2 = gettype(value2);\r\n\r\n switch (true) {\r\n case (type1 === \"undefined\" || type1 === \"null\") && !!value2:\r\n return value2;\r\n case (type2 === \"undefined\" || type2 === \"null\") && !!value1:\r\n return value1;\r\n case type1 === \"array\" && type1 === type2:\r\n return [...value1, ...value2];\r\n case type1 === \"object\" && type1 === type2:\r\n return Object.assign(recursiveDeepCopy(value1), value2);\r\n default:\r\n return {};\r\n }\r\n}","import { gettype } from \"..\";\r\n\r\n/**\r\n * 回傳物件的第一個值或者空值\r\n * @param arr\r\n * @returns\r\n */\r\nexport function head<T = any>(arr: Array<T>): T | null {\r\n if (gettype(arr) !== 'array') return null;\r\n return arr.length > 0 ? arr[0] : null;\r\n}\r\n\r\n\r\n","/**\r\n * 透過 JSON 複製物件\r\n * @param obj 要複製的物件\r\n * @returns\r\n */\r\nexport function deepCloneWithJson<T>(obj: T) {\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n ","type TremoveValeu = string | number\r\n\r\n/**\r\n * 移除陣列某一個位置的值\r\n * @param arr 陣列\r\n * @param item 要移除的值\r\n * @returns\r\n */\r\nexport function remove(arr: TremoveValeu[], item: TremoveValeu) {\r\n if (arr.length === 0) return [];\r\n\r\n const index = arr.indexOf(item);\r\n if (index === -1) return arr;\r\n\r\n return [...arr.slice(0, index), ...arr.slice(index + 1)];\r\n}","/**\r\n * 尋找字串內是否有符合的值,並移除後回傳結果\r\n * @param str 字串\r\n * @param key 要搜尋的文字\r\n * @returns [boolean,string]\r\n */\r\nexport function searchInStr(str: string, key: string): [boolean, string] {\r\n return str.indexOf(key) === -1 ? [false, str] : [true, str.replace(key, '')];\r\n}","/**\r\n * 駝峰轉小寫+convert(default:底線)\r\n * @param str\r\n * @returns\r\n */\r\nexport function strToConvert(str: string, convert: string = \"_\") {\r\n return str.replace(/\\B([A-Z])/g, `${convert}$1`).toLowerCase();\r\n}","/**\r\n * 底線轉駝峰\r\n * @param str\r\n * @returns\r\n */\r\nexport function strToHump(str: string) {\r\n if (str.startsWith('_')) str = str.slice(1);\r\n\r\n return str.replace(/([^_])(?:_+([^_]))/g, function ($0, $1, $2) {\r\n return $1 + $2.toUpperCase();\r\n });\r\n}","import { gettype } from \"../gettype/gettype\";\r\n\r\n/**\r\n * 物件深度合併\r\n * @param target\r\n * @param sources\r\n * @returns\r\n */\r\nexport function deepAssign(...param: ({ [_: string]: any } | undefined)[]) {\r\n let temp: any[] = param.filter(v => gettype(v) === \"object\")\r\n if (temp.length < 1) return {};\r\n \r\n let result = Object.assign({}, ...temp);\r\n\r\n for (let item of temp) {\r\n for (const [idx, val] of Object.entries<any>(item)) {\r\n if (gettype(val) === \"object\") {\r\n result[idx] = deepAssign(result[idx], val);\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n","/**\r\n * 多欄位排序\r\n * @param sort \r\n * @returns \r\n */\r\nexport function fieldSorter(sort: {\r\n isDesc?: boolean,\r\n fields: {\r\n key: string,\r\n isNumber?: boolean,\r\n isDesc?: boolean\r\n }[]\r\n}) {\r\n return (a: { [_: string]: any }, b: { [_: string]: any }) => {\r\n const data = sort.fields\r\n .map(filed => {\r\n let dir = 1;\r\n if (filed.isDesc) {\r\n dir = -1;\r\n }\r\n\r\n let valueA = a[filed.key];\r\n let valueB = b[filed.key];\r\n\r\n if (!valueA || !valueB)\r\n return 0;\r\n\r\n if (filed.isNumber) {\r\n valueA = Number(valueA);\r\n valueB = Number(valueB);\r\n\r\n if (Number.isNaN(valueA) || Number.isNaN(valueB))\r\n return 0\r\n }\r\n\r\n return valueA > valueB ? dir : valueA < valueB ? -(dir) : 0;\r\n }).reduce((p, n) => p ? p : n, 0);\r\n\r\n if (sort.isDesc)\r\n data * -1;\r\n\r\n return data;\r\n };\r\n};"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/help/index.ts","../src/help/data_set/data_set.ts","../src/help/data_get/data_get.ts","../src/help/recursiveDeepCopy/recursiveDeepCopy.ts","../src/help/emptyData/emptyData.ts","../src/help/gettype/gettype.ts","../src/help/parameterMerge/parameterMerge.ts","../src/help/head/head.ts","../src/help/deepCloneWithJson/deepCloneWithJson.ts","../src/help/remove/remove.ts","../src/help/searchInStr/searchInStr.ts","../src/help/strToConvert/strToConvert.ts","../src/help/strToHump/strToHump.ts","../src/help/deepAssign/deepAssign.ts","../src/help/fieldSorter/fieldSorter.ts","../src/help/range/range.ts"],"sourcesContent":["import * as help from './help';\r\n\r\nexport { help }","export * from './data_set/data_set';\r\nexport * from './data_get/data_get';\r\nexport * from './recursiveDeepCopy/recursiveDeepCopy';\r\nexport * from './emptyData/emptyData';\r\nexport * from './gettype/gettype';\r\nexport * from './parameterMerge/parameterMerge';\r\nexport * from './head/head';\r\nexport * from './deepCloneWithJson/deepCloneWithJson';\r\nexport * from './remove/remove';\r\nexport * from './searchInStr/searchInStr';\r\nexport * from './strToConvert/strToConvert';\r\nexport * from './strToHump/strToHump';\r\nexport * from './deepAssign/deepAssign';\r\nexport * from './fieldSorter/fieldSorter';\r\nexport * from \"./range/range\";","/**\r\n * 動態設定多層物件的參數\r\n * @param data 被設定的物件\r\n * @param key 位置\r\n * @param value 參數\r\n * @returns \r\n */\r\nexport function data_set(data: any, key: string, value: any) {\r\n const keys = key.split(\".\");\r\n const firstKey = keys.shift();\r\n if (!firstKey) return data;\r\n\r\n if (keys.length < 1) {\r\n data[firstKey] = value;\r\n return data;\r\n }\r\n\r\n data[firstKey] = data_set({}, keys.join(\".\"), value);\r\n return data;\r\n}","import { deepCloneWithJson, gettype } from \"..\";\r\n\r\n/**\r\n * 獲取資料\r\n * @param data 資料集{key:value}\r\n * @param key 資料對應的位置 app.column.name\r\n * @param defaultValue 如果取不到值要給予什麼參數,預設 null\r\n * @returns\r\n *\r\n * {a:[{b:a},{b:a}]}\r\n * a.b = [a,a]\r\n */\r\nexport function data_get(data: any, key: string, defaultValue: any = null,): any {\r\n switch (gettype(data)) {\r\n case \"object\":\r\n const coypData = deepCloneWithJson(data);\r\n const keys = key.split('.');\r\n let firstKey = keys.shift();\r\n if (!firstKey) return defaultValue;\r\n if (!(firstKey in coypData)) return defaultValue;\r\n\r\n let rep = coypData[firstKey];\r\n if (keys.length > 0)\r\n rep = data_get(rep, keys.join('.'), defaultValue);\r\n\r\n return rep ?? defaultValue;\r\n case 'undefined':\r\n case 'null':\r\n return defaultValue;\r\n case 'array':\r\n return (data as any[]).map((value: any) => data_get(value, key, defaultValue)) as any;\r\n default:\r\n return data;\r\n }\r\n}","/**\r\n* 透過遞迴複製物件\r\n* @param o \r\n* @returns \r\n*/\r\nexport function recursiveDeepCopy<T = any>(o: T): T {\r\n switch (Object.prototype.toString.apply(o)) {\r\n case \"[object Array]\":\r\n const tempArry: any = [];\r\n (o as Array<any>).forEach(value => {\r\n (tempArry as Array<any>).push(recursiveDeepCopy(value));\r\n })\r\n return tempArry;\r\n case \"[object Object]\":\r\n const tempO: any = {};\r\n Object.keys(o as Object).forEach(key => {\r\n if (Object.prototype.hasOwnProperty.call(o, key))\r\n tempO[key] = recursiveDeepCopy((o as { [_: string]: any })[key]);\r\n })\r\n return tempO;\r\n default:\r\n return o;\r\n }\r\n}","/**\r\n * 判斷資料是否為空值\r\n * @param data \r\n * @returns \r\n */\r\nexport function emptyData(data: any) {\r\n return typeof data === \"undefined\" || data === null\r\n}","/**\r\n * 回傳物體的型態\r\n * @param obj \r\n * @returns \r\n */\r\nexport function gettype<T = any>(obj: T) {\r\n switch (true) {\r\n case obj instanceof Array:\r\n return 'array';\r\n case obj instanceof Date:\r\n return 'date';\r\n case obj === null:\r\n return 'null';\r\n default:\r\n return typeof obj;\r\n }\r\n}","import { gettype, recursiveDeepCopy } from \"..\";\r\n\r\n/**\r\n * 兩個參數的合併(只能是物件或者陣列)\r\n * 如果是空值就回傳空物件\r\n * @param value1 \r\n * @param value2 \r\n * @returns \r\n */\r\nexport function parameterMerge(value1?: any, value2?: any) {\r\n const type1 = gettype(value1);\r\n const type2 = gettype(value2);\r\n\r\n switch (true) {\r\n case (type1 === \"undefined\" || type1 === \"null\") && !!value2:\r\n return value2;\r\n case (type2 === \"undefined\" || type2 === \"null\") && !!value1:\r\n return value1;\r\n case type1 === \"array\" && type1 === type2:\r\n return [...value1, ...value2];\r\n case type1 === \"object\" && type1 === type2:\r\n return Object.assign(recursiveDeepCopy(value1), value2);\r\n default:\r\n return {};\r\n }\r\n}","import { gettype } from \"..\";\r\n\r\n/**\r\n * 回傳物件的第一個值或者空值\r\n * @param arr\r\n * @returns\r\n */\r\nexport function head<T = any>(arr: Array<T>): T | null {\r\n if (gettype(arr) !== 'array') return null;\r\n return arr.length > 0 ? arr[0] : null;\r\n}\r\n\r\n\r\n","/**\r\n * 透過 JSON 複製物件\r\n * @param obj 要複製的物件\r\n * @returns\r\n */\r\nexport function deepCloneWithJson<T>(obj: T) {\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n ","type TremoveValeu = string | number\r\n\r\n/**\r\n * 移除陣列某一個位置的值\r\n * @param arr 陣列\r\n * @param item 要移除的值\r\n * @returns\r\n */\r\nexport function remove(arr: TremoveValeu[], item: TremoveValeu) {\r\n if (arr.length === 0) return [];\r\n\r\n const index = arr.indexOf(item);\r\n if (index === -1) return arr;\r\n\r\n return [...arr.slice(0, index), ...arr.slice(index + 1)];\r\n}","/**\r\n * 尋找字串內是否有符合的值,並移除後回傳結果\r\n * @param str 字串\r\n * @param key 要搜尋的文字\r\n * @returns [boolean,string]\r\n */\r\nexport function searchInStr(str: string, key: string): [boolean, string] {\r\n return str.indexOf(key) === -1 ? [false, str] : [true, str.replace(key, '')];\r\n}","/**\r\n * 駝峰轉小寫+convert(default:底線)\r\n * @param str\r\n * @returns\r\n */\r\nexport function strToConvert(str: string, convert: string = \"_\") {\r\n return str.replace(/\\B([A-Z])/g, `${convert}$1`).toLowerCase();\r\n}","/**\r\n * 底線轉駝峰\r\n * @param str\r\n * @returns\r\n */\r\nexport function strToHump(str: string) {\r\n if (str.startsWith('_')) str = str.slice(1);\r\n\r\n return str.replace(/([^_])(?:_+([^_]))/g, function ($0, $1, $2) {\r\n return $1 + $2.toUpperCase();\r\n });\r\n}","import { gettype } from \"../gettype/gettype\";\r\n\r\n/**\r\n * 物件深度合併\r\n * @param target\r\n * @param sources\r\n * @returns\r\n */\r\nexport function deepAssign(...param: ({ [_: string]: any } | undefined)[]) {\r\n let temp: any[] = param.filter(v => gettype(v) === \"object\")\r\n if (temp.length < 1) return {};\r\n \r\n let result = Object.assign({}, ...temp);\r\n\r\n for (let item of temp) {\r\n for (const [idx, val] of Object.entries<any>(item)) {\r\n if (gettype(val) === \"object\") {\r\n result[idx] = deepAssign(result[idx], val);\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n","/**\r\n * 多欄位排序\r\n * @param sort \r\n * @returns \r\n */\r\nexport function fieldSorter(sort: {\r\n isDesc?: boolean,\r\n fields: {\r\n key: string,\r\n isNumber?: boolean,\r\n isDesc?: boolean\r\n }[]\r\n}) {\r\n return (a: { [_: string]: any }, b: { [_: string]: any }) => {\r\n const data = sort.fields\r\n .map(filed => {\r\n let dir = 1;\r\n if (filed.isDesc) {\r\n dir = -1;\r\n }\r\n\r\n let valueA = a[filed.key];\r\n let valueB = b[filed.key];\r\n\r\n if (!valueA || !valueB)\r\n return 0;\r\n\r\n if (filed.isNumber) {\r\n valueA = Number(valueA);\r\n valueB = Number(valueB);\r\n\r\n if (Number.isNaN(valueA) || Number.isNaN(valueB))\r\n return 0\r\n }\r\n\r\n return valueA > valueB ? dir : valueA < valueB ? -(dir) : 0;\r\n }).reduce((p, n) => p ? p : n, 0);\r\n\r\n if (sort.isDesc)\r\n data * -1;\r\n\r\n return data;\r\n };\r\n};","/**\r\n * 取得區間的數值\r\n * @param start 開始時間\r\n * @param stop 結束時間\r\n * @param step 間隔\r\n * @returns \r\n */\r\nexport function range(start: number, stop: number, step: number) {\r\n const range = { length: (stop - start) / step + 1 };\r\n\r\n return Array.from(range, (_, i) => start + (i * step));\r\n};"],"mappings":"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","names":["range"]}
|
package/dist/index.mjs
CHANGED
|
@@ -16,6 +16,7 @@ __export(help_exports, {
|
|
|
16
16
|
gettype: () => gettype,
|
|
17
17
|
head: () => head,
|
|
18
18
|
parameterMerge: () => parameterMerge,
|
|
19
|
+
range: () => range,
|
|
19
20
|
recursiveDeepCopy: () => recursiveDeepCopy,
|
|
20
21
|
remove: () => remove,
|
|
21
22
|
searchInStr: () => searchInStr,
|
|
@@ -202,6 +203,12 @@ function fieldSorter(sort) {
|
|
|
202
203
|
return data;
|
|
203
204
|
};
|
|
204
205
|
}
|
|
206
|
+
|
|
207
|
+
// src/help/range/range.ts
|
|
208
|
+
function range(start, stop, step) {
|
|
209
|
+
const range2 = { length: (stop - start) / step + 1 };
|
|
210
|
+
return Array.from(range2, (_, i) => start + i * step);
|
|
211
|
+
}
|
|
205
212
|
export {
|
|
206
213
|
help_exports as help
|
|
207
214
|
};
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/help/index.ts","../src/help/data_set/data_set.ts","../src/help/data_get/data_get.ts","../src/help/recursiveDeepCopy/recursiveDeepCopy.ts","../src/help/emptyData/emptyData.ts","../src/help/gettype/gettype.ts","../src/help/parameterMerge/parameterMerge.ts","../src/help/head/head.ts","../src/help/deepCloneWithJson/deepCloneWithJson.ts","../src/help/remove/remove.ts","../src/help/searchInStr/searchInStr.ts","../src/help/strToConvert/strToConvert.ts","../src/help/strToHump/strToHump.ts","../src/help/deepAssign/deepAssign.ts","../src/help/fieldSorter/fieldSorter.ts"],"sourcesContent":["export * from './data_set/data_set';\r\nexport * from './data_get/data_get';\r\nexport * from './recursiveDeepCopy/recursiveDeepCopy';\r\nexport * from './emptyData/emptyData';\r\nexport * from './gettype/gettype';\r\nexport * from './parameterMerge/parameterMerge';\r\nexport * from './head/head';\r\nexport * from './deepCloneWithJson/deepCloneWithJson';\r\nexport * from './remove/remove';\r\nexport * from './searchInStr/searchInStr';\r\nexport * from './strToConvert/strToConvert';\r\nexport * from './strToHump/strToHump';\r\nexport * from './deepAssign/deepAssign';\r\nexport * from './fieldSorter/fieldSorter';","/**\r\n * 動態設定多層物件的參數\r\n * @param data 被設定的物件\r\n * @param key 位置\r\n * @param value 參數\r\n * @returns \r\n */\r\nexport function data_set(data: any, key: string, value: any) {\r\n const keys = key.split(\".\");\r\n const firstKey = keys.shift();\r\n if (!firstKey) return data;\r\n\r\n if (keys.length < 1) {\r\n data[firstKey] = value;\r\n return data;\r\n }\r\n\r\n data[firstKey] = data_set({}, keys.join(\".\"), value);\r\n return data;\r\n}","import { deepCloneWithJson, gettype } from \"..\";\r\n\r\n/**\r\n * 獲取資料\r\n * @param data 資料集{key:value}\r\n * @param key 資料對應的位置 app.column.name\r\n * @param defaultValue 如果取不到值要給予什麼參數,預設 null\r\n * @returns\r\n *\r\n * {a:[{b:a},{b:a}]}\r\n * a.b = [a,a]\r\n */\r\nexport function data_get(data: any, key: string, defaultValue: any = null,): any {\r\n switch (gettype(data)) {\r\n case \"object\":\r\n const coypData = deepCloneWithJson(data);\r\n const keys = key.split('.');\r\n let firstKey = keys.shift();\r\n if (!firstKey) return defaultValue;\r\n if (!(firstKey in coypData)) return defaultValue;\r\n\r\n let rep = coypData[firstKey];\r\n if (keys.length > 0)\r\n rep = data_get(rep, keys.join('.'), defaultValue);\r\n\r\n return rep ?? defaultValue;\r\n case 'undefined':\r\n case 'null':\r\n return defaultValue;\r\n case 'array':\r\n return (data as any[]).map((value: any) => data_get(value, key, defaultValue)) as any;\r\n default:\r\n return data;\r\n }\r\n}","/**\r\n* 透過遞迴複製物件\r\n* @param o \r\n* @returns \r\n*/\r\nexport function recursiveDeepCopy<T = any>(o: T): T {\r\n switch (Object.prototype.toString.apply(o)) {\r\n case \"[object Array]\":\r\n const tempArry: any = [];\r\n (o as Array<any>).forEach(value => {\r\n (tempArry as Array<any>).push(recursiveDeepCopy(value));\r\n })\r\n return tempArry;\r\n case \"[object Object]\":\r\n const tempO: any = {};\r\n Object.keys(o as Object).forEach(key => {\r\n if (Object.prototype.hasOwnProperty.call(o, key))\r\n tempO[key] = recursiveDeepCopy((o as { [_: string]: any })[key]);\r\n })\r\n return tempO;\r\n default:\r\n return o;\r\n }\r\n}","/**\r\n * 判斷資料是否為空值\r\n * @param data \r\n * @returns \r\n */\r\nexport function emptyData(data: any) {\r\n return typeof data === \"undefined\" || data === null\r\n}","/**\r\n * 回傳物體的型態\r\n * @param obj \r\n * @returns \r\n */\r\nexport function gettype<T = any>(obj: T) {\r\n switch (true) {\r\n case obj instanceof Array:\r\n return 'array';\r\n case obj instanceof Date:\r\n return 'date';\r\n case obj === null:\r\n return 'null';\r\n default:\r\n return typeof obj;\r\n }\r\n}","import { gettype, recursiveDeepCopy } from \"..\";\r\n\r\n/**\r\n * 兩個參數的合併(只能是物件或者陣列)\r\n * 如果是空值就回傳空物件\r\n * @param value1 \r\n * @param value2 \r\n * @returns \r\n */\r\nexport function parameterMerge(value1?: any, value2?: any) {\r\n const type1 = gettype(value1);\r\n const type2 = gettype(value2);\r\n\r\n switch (true) {\r\n case (type1 === \"undefined\" || type1 === \"null\") && !!value2:\r\n return value2;\r\n case (type2 === \"undefined\" || type2 === \"null\") && !!value1:\r\n return value1;\r\n case type1 === \"array\" && type1 === type2:\r\n return [...value1, ...value2];\r\n case type1 === \"object\" && type1 === type2:\r\n return Object.assign(recursiveDeepCopy(value1), value2);\r\n default:\r\n return {};\r\n }\r\n}","import { gettype } from \"..\";\r\n\r\n/**\r\n * 回傳物件的第一個值或者空值\r\n * @param arr\r\n * @returns\r\n */\r\nexport function head<T = any>(arr: Array<T>): T | null {\r\n if (gettype(arr) !== 'array') return null;\r\n return arr.length > 0 ? arr[0] : null;\r\n}\r\n\r\n\r\n","/**\r\n * 透過 JSON 複製物件\r\n * @param obj 要複製的物件\r\n * @returns\r\n */\r\nexport function deepCloneWithJson<T>(obj: T) {\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n ","type TremoveValeu = string | number\r\n\r\n/**\r\n * 移除陣列某一個位置的值\r\n * @param arr 陣列\r\n * @param item 要移除的值\r\n * @returns\r\n */\r\nexport function remove(arr: TremoveValeu[], item: TremoveValeu) {\r\n if (arr.length === 0) return [];\r\n\r\n const index = arr.indexOf(item);\r\n if (index === -1) return arr;\r\n\r\n return [...arr.slice(0, index), ...arr.slice(index + 1)];\r\n}","/**\r\n * 尋找字串內是否有符合的值,並移除後回傳結果\r\n * @param str 字串\r\n * @param key 要搜尋的文字\r\n * @returns [boolean,string]\r\n */\r\nexport function searchInStr(str: string, key: string): [boolean, string] {\r\n return str.indexOf(key) === -1 ? [false, str] : [true, str.replace(key, '')];\r\n}","/**\r\n * 駝峰轉小寫+convert(default:底線)\r\n * @param str\r\n * @returns\r\n */\r\nexport function strToConvert(str: string, convert: string = \"_\") {\r\n return str.replace(/\\B([A-Z])/g, `${convert}$1`).toLowerCase();\r\n}","/**\r\n * 底線轉駝峰\r\n * @param str\r\n * @returns\r\n */\r\nexport function strToHump(str: string) {\r\n if (str.startsWith('_')) str = str.slice(1);\r\n\r\n return str.replace(/([^_])(?:_+([^_]))/g, function ($0, $1, $2) {\r\n return $1 + $2.toUpperCase();\r\n });\r\n}","import { gettype } from \"../gettype/gettype\";\r\n\r\n/**\r\n * 物件深度合併\r\n * @param target\r\n * @param sources\r\n * @returns\r\n */\r\nexport function deepAssign(...param: ({ [_: string]: any } | undefined)[]) {\r\n let temp: any[] = param.filter(v => gettype(v) === \"object\")\r\n if (temp.length < 1) return {};\r\n \r\n let result = Object.assign({}, ...temp);\r\n\r\n for (let item of temp) {\r\n for (const [idx, val] of Object.entries<any>(item)) {\r\n if (gettype(val) === \"object\") {\r\n result[idx] = deepAssign(result[idx], val);\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n","/**\r\n * 多欄位排序\r\n * @param sort \r\n * @returns \r\n */\r\nexport function fieldSorter(sort: {\r\n isDesc?: boolean,\r\n fields: {\r\n key: string,\r\n isNumber?: boolean,\r\n isDesc?: boolean\r\n }[]\r\n}) {\r\n return (a: { [_: string]: any }, b: { [_: string]: any }) => {\r\n const data = sort.fields\r\n .map(filed => {\r\n let dir = 1;\r\n if (filed.isDesc) {\r\n dir = -1;\r\n }\r\n\r\n let valueA = a[filed.key];\r\n let valueB = b[filed.key];\r\n\r\n if (!valueA || !valueB)\r\n return 0;\r\n\r\n if (filed.isNumber) {\r\n valueA = Number(valueA);\r\n valueB = Number(valueB);\r\n\r\n if (Number.isNaN(valueA) || Number.isNaN(valueB))\r\n return 0\r\n }\r\n\r\n return valueA > valueB ? dir : valueA < valueB ? -(dir) : 0;\r\n }).reduce((p, n) => p ? p : n, 0);\r\n\r\n if (sort.isDesc)\r\n data * -1;\r\n\r\n return data;\r\n };\r\n};"],"mappings":";;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACOO,SAAS,SAAS,MAAW,KAAa,OAAY;AACzD,QAAM,OAAO,IAAI,MAAM,GAAG;AAC1B,QAAM,WAAW,KAAK,MAAM;AAC5B,MAAI,CAAC;AAAU,WAAO;AAEtB,MAAI,KAAK,SAAS,GAAG;AACjB,SAAK,QAAQ,IAAI;AACjB,WAAO;AAAA,EACX;AAEA,OAAK,QAAQ,IAAI,SAAS,CAAC,GAAG,KAAK,KAAK,GAAG,GAAG,KAAK;AACnD,SAAO;AACX;;;ACPO,SAAS,SAAS,MAAW,KAAa,eAAoB,MAAY;AAC7E,UAAQ,QAAQ,IAAI,GAAG;AAAA,IACnB,KAAK;AACD,YAAM,WAAW,kBAAkB,IAAI;AACvC,YAAM,OAAO,IAAI,MAAM,GAAG;AAC1B,UAAI,WAAW,KAAK,MAAM;AAC1B,UAAI,CAAC;AAAU,eAAO;AACtB,UAAI,EAAE,YAAY;AAAW,eAAO;AAEpC,UAAI,MAAM,SAAS,QAAQ;AAC3B,UAAI,KAAK,SAAS;AACd,cAAM,SAAS,KAAK,KAAK,KAAK,GAAG,GAAG,YAAY;AAEpD,aAAO,oBAAO;AAAA,IAClB,KAAK;AAAA,IACL,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAQ,KAAe,IAAI,CAAC,UAAe,SAAS,OAAO,KAAK,YAAY,CAAC;AAAA,IACjF;AACI,aAAO;AAAA,EACf;AACJ;;;AC7BO,SAAS,kBAA2B,GAAS;AAChD,UAAQ,OAAO,UAAU,SAAS,MAAM,CAAC,GAAG;AAAA,IACxC,KAAK;AACD,YAAM,WAAgB,CAAC;AACvB,MAAC,EAAiB,QAAQ,WAAS;AAC/B,QAAC,SAAwB,KAAK,kBAAkB,KAAK,CAAC;AAAA,MAC1D,CAAC;AACD,aAAO;AAAA,IACX,KAAK;AACD,YAAM,QAAa,CAAC;AACpB,aAAO,KAAK,CAAW,EAAE,QAAQ,SAAO;AACpC,YAAI,OAAO,UAAU,eAAe,KAAK,GAAG,GAAG;AAC3C,gBAAM,GAAG,IAAI,kBAAmB,EAA2B,GAAG,CAAC;AAAA,MACvE,CAAC;AACD,aAAO;AAAA,IACX;AACI,aAAO;AAAA,EACf;AACJ;;;AClBO,SAAS,UAAU,MAAW;AACjC,SAAO,OAAO,SAAS,eAAe,SAAS;AACnD;;;ACFO,SAAS,QAAiB,KAAQ;AACrC,UAAQ,MAAM;AAAA,IACV,KAAK,eAAe;AAChB,aAAO;AAAA,IACX,KAAK,eAAe;AAChB,aAAO;AAAA,IACX,KAAK,QAAQ;AACT,aAAO;AAAA,IACX;AACI,aAAO,OAAO;AAAA,EACtB;AACJ;;;ACPO,SAAS,eAAe,QAAc,QAAc;AACvD,QAAM,QAAQ,QAAQ,MAAM;AAC5B,QAAM,QAAQ,QAAQ,MAAM;AAE5B,UAAQ,MAAM;AAAA,IACV,OAAM,UAAU,eAAe,UAAU,WAAW,CAAC,CAAC;AAClD,aAAO;AAAA,IACX,OAAM,UAAU,eAAe,UAAU,WAAW,CAAC,CAAC;AAClD,aAAO;AAAA,IACX,MAAK,UAAU,WAAW,UAAU;AAChC,aAAO,CAAC,GAAG,QAAQ,GAAG,MAAM;AAAA,IAChC,MAAK,UAAU,YAAY,UAAU;AACjC,aAAO,OAAO,OAAO,kBAAkB,MAAM,GAAG,MAAM;AAAA,IAC1D;AACI,aAAO,CAAC;AAAA,EAChB;AACJ;;;AClBO,SAAS,KAAc,KAAyB;AACnD,MAAI,QAAQ,GAAG,MAAM;AAAS,WAAO;AACrC,SAAO,IAAI,SAAS,IAAI,IAAI,CAAC,IAAI;AACrC;;;ACLO,SAAS,kBAAqB,KAAQ;AACzC,SAAO,KAAK,MAAM,KAAK,UAAU,GAAG,CAAC;AACvC;;;ACCK,SAAS,OAAO,KAAqB,MAAoB;AAC5D,MAAI,IAAI,WAAW;AAAG,WAAO,CAAC;AAE9B,QAAM,QAAQ,IAAI,QAAQ,IAAI;AAC9B,MAAI,UAAU;AAAI,WAAO;AAEzB,SAAO,CAAC,GAAG,IAAI,MAAM,GAAG,KAAK,GAAG,GAAG,IAAI,MAAM,QAAQ,CAAC,CAAC;AAC3D;;;ACTO,SAAS,YAAY,KAAa,KAAgC;AACrE,SAAO,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,KAAK,EAAE,CAAC;AAC/E;;;ACHO,SAAS,aAAa,KAAa,UAAkB,KAAK;AAC7D,SAAO,IAAI,QAAQ,cAAc,GAAG,OAAO,IAAI,EAAE,YAAY;AACjE;;;ACFO,SAAS,UAAU,KAAa;AACrC,MAAI,IAAI,WAAW,GAAG;AAAG,UAAM,IAAI,MAAM,CAAC;AAE1C,SAAO,IAAI,QAAQ,uBAAuB,SAAU,IAAI,IAAI,IAAI;AAC9D,WAAO,KAAK,GAAG,YAAY;AAAA,EAC7B,CAAC;AACH;;;ACHO,SAAS,cAAc,OAA6C;AACvE,MAAI,OAAc,MAAM,OAAO,OAAK,QAAQ,CAAC,MAAM,QAAQ;AAC3D,MAAI,KAAK,SAAS;AAAG,WAAO,CAAC;AAE7B,MAAI,SAAS,OAAO,OAAO,CAAC,GAAG,GAAG,IAAI;AAEtC,WAAS,QAAQ,MAAM;AACnB,eAAW,CAAC,KAAK,GAAG,KAAK,OAAO,QAAa,IAAI,GAAG;AAChD,UAAI,QAAQ,GAAG,MAAM,UAAU;AAC3B,eAAO,GAAG,IAAI,WAAW,OAAO,GAAG,GAAG,GAAG;AAAA,MAC7C;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;;;ACjBO,SAAS,YAAY,MAOzB;AACC,SAAO,CAAC,GAAyB,MAA4B;AACzD,UAAM,OAAO,KAAK,OACb,IAAI,WAAS;AACV,UAAI,MAAM;AACV,UAAI,MAAM,QAAQ;AACd,cAAM;AAAA,MACV;AAEA,UAAI,SAAS,EAAE,MAAM,GAAG;AACxB,UAAI,SAAS,EAAE,MAAM,GAAG;AAExB,UAAI,CAAC,UAAU,CAAC;AACZ,eAAO;AAEX,UAAI,MAAM,UAAU;AAChB,iBAAS,OAAO,MAAM;AACtB,iBAAS,OAAO,MAAM;AAEtB,YAAI,OAAO,MAAM,MAAM,KAAK,OAAO,MAAM,MAAM;AAC3C,iBAAO;AAAA,MACf;AAEA,aAAO,SAAS,SAAS,MAAM,SAAS,SAAS,CAAE,MAAO;AAAA,IAC9D,CAAC,EAAE,OAAO,CAAC,GAAG,MAAM,IAAI,IAAI,GAAG,CAAC;AAEpC,QAAI,KAAK;AACL,aAAO;AAEX,WAAO;AAAA,EACX;AACJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/help/index.ts","../src/help/data_set/data_set.ts","../src/help/data_get/data_get.ts","../src/help/recursiveDeepCopy/recursiveDeepCopy.ts","../src/help/emptyData/emptyData.ts","../src/help/gettype/gettype.ts","../src/help/parameterMerge/parameterMerge.ts","../src/help/head/head.ts","../src/help/deepCloneWithJson/deepCloneWithJson.ts","../src/help/remove/remove.ts","../src/help/searchInStr/searchInStr.ts","../src/help/strToConvert/strToConvert.ts","../src/help/strToHump/strToHump.ts","../src/help/deepAssign/deepAssign.ts","../src/help/fieldSorter/fieldSorter.ts","../src/help/range/range.ts"],"sourcesContent":["export * from './data_set/data_set';\r\nexport * from './data_get/data_get';\r\nexport * from './recursiveDeepCopy/recursiveDeepCopy';\r\nexport * from './emptyData/emptyData';\r\nexport * from './gettype/gettype';\r\nexport * from './parameterMerge/parameterMerge';\r\nexport * from './head/head';\r\nexport * from './deepCloneWithJson/deepCloneWithJson';\r\nexport * from './remove/remove';\r\nexport * from './searchInStr/searchInStr';\r\nexport * from './strToConvert/strToConvert';\r\nexport * from './strToHump/strToHump';\r\nexport * from './deepAssign/deepAssign';\r\nexport * from './fieldSorter/fieldSorter';\r\nexport * from \"./range/range\";","/**\r\n * 動態設定多層物件的參數\r\n * @param data 被設定的物件\r\n * @param key 位置\r\n * @param value 參數\r\n * @returns \r\n */\r\nexport function data_set(data: any, key: string, value: any) {\r\n const keys = key.split(\".\");\r\n const firstKey = keys.shift();\r\n if (!firstKey) return data;\r\n\r\n if (keys.length < 1) {\r\n data[firstKey] = value;\r\n return data;\r\n }\r\n\r\n data[firstKey] = data_set({}, keys.join(\".\"), value);\r\n return data;\r\n}","import { deepCloneWithJson, gettype } from \"..\";\r\n\r\n/**\r\n * 獲取資料\r\n * @param data 資料集{key:value}\r\n * @param key 資料對應的位置 app.column.name\r\n * @param defaultValue 如果取不到值要給予什麼參數,預設 null\r\n * @returns\r\n *\r\n * {a:[{b:a},{b:a}]}\r\n * a.b = [a,a]\r\n */\r\nexport function data_get(data: any, key: string, defaultValue: any = null,): any {\r\n switch (gettype(data)) {\r\n case \"object\":\r\n const coypData = deepCloneWithJson(data);\r\n const keys = key.split('.');\r\n let firstKey = keys.shift();\r\n if (!firstKey) return defaultValue;\r\n if (!(firstKey in coypData)) return defaultValue;\r\n\r\n let rep = coypData[firstKey];\r\n if (keys.length > 0)\r\n rep = data_get(rep, keys.join('.'), defaultValue);\r\n\r\n return rep ?? defaultValue;\r\n case 'undefined':\r\n case 'null':\r\n return defaultValue;\r\n case 'array':\r\n return (data as any[]).map((value: any) => data_get(value, key, defaultValue)) as any;\r\n default:\r\n return data;\r\n }\r\n}","/**\r\n* 透過遞迴複製物件\r\n* @param o \r\n* @returns \r\n*/\r\nexport function recursiveDeepCopy<T = any>(o: T): T {\r\n switch (Object.prototype.toString.apply(o)) {\r\n case \"[object Array]\":\r\n const tempArry: any = [];\r\n (o as Array<any>).forEach(value => {\r\n (tempArry as Array<any>).push(recursiveDeepCopy(value));\r\n })\r\n return tempArry;\r\n case \"[object Object]\":\r\n const tempO: any = {};\r\n Object.keys(o as Object).forEach(key => {\r\n if (Object.prototype.hasOwnProperty.call(o, key))\r\n tempO[key] = recursiveDeepCopy((o as { [_: string]: any })[key]);\r\n })\r\n return tempO;\r\n default:\r\n return o;\r\n }\r\n}","/**\r\n * 判斷資料是否為空值\r\n * @param data \r\n * @returns \r\n */\r\nexport function emptyData(data: any) {\r\n return typeof data === \"undefined\" || data === null\r\n}","/**\r\n * 回傳物體的型態\r\n * @param obj \r\n * @returns \r\n */\r\nexport function gettype<T = any>(obj: T) {\r\n switch (true) {\r\n case obj instanceof Array:\r\n return 'array';\r\n case obj instanceof Date:\r\n return 'date';\r\n case obj === null:\r\n return 'null';\r\n default:\r\n return typeof obj;\r\n }\r\n}","import { gettype, recursiveDeepCopy } from \"..\";\r\n\r\n/**\r\n * 兩個參數的合併(只能是物件或者陣列)\r\n * 如果是空值就回傳空物件\r\n * @param value1 \r\n * @param value2 \r\n * @returns \r\n */\r\nexport function parameterMerge(value1?: any, value2?: any) {\r\n const type1 = gettype(value1);\r\n const type2 = gettype(value2);\r\n\r\n switch (true) {\r\n case (type1 === \"undefined\" || type1 === \"null\") && !!value2:\r\n return value2;\r\n case (type2 === \"undefined\" || type2 === \"null\") && !!value1:\r\n return value1;\r\n case type1 === \"array\" && type1 === type2:\r\n return [...value1, ...value2];\r\n case type1 === \"object\" && type1 === type2:\r\n return Object.assign(recursiveDeepCopy(value1), value2);\r\n default:\r\n return {};\r\n }\r\n}","import { gettype } from \"..\";\r\n\r\n/**\r\n * 回傳物件的第一個值或者空值\r\n * @param arr\r\n * @returns\r\n */\r\nexport function head<T = any>(arr: Array<T>): T | null {\r\n if (gettype(arr) !== 'array') return null;\r\n return arr.length > 0 ? arr[0] : null;\r\n}\r\n\r\n\r\n","/**\r\n * 透過 JSON 複製物件\r\n * @param obj 要複製的物件\r\n * @returns\r\n */\r\nexport function deepCloneWithJson<T>(obj: T) {\r\n return JSON.parse(JSON.stringify(obj));\r\n }\r\n ","type TremoveValeu = string | number\r\n\r\n/**\r\n * 移除陣列某一個位置的值\r\n * @param arr 陣列\r\n * @param item 要移除的值\r\n * @returns\r\n */\r\nexport function remove(arr: TremoveValeu[], item: TremoveValeu) {\r\n if (arr.length === 0) return [];\r\n\r\n const index = arr.indexOf(item);\r\n if (index === -1) return arr;\r\n\r\n return [...arr.slice(0, index), ...arr.slice(index + 1)];\r\n}","/**\r\n * 尋找字串內是否有符合的值,並移除後回傳結果\r\n * @param str 字串\r\n * @param key 要搜尋的文字\r\n * @returns [boolean,string]\r\n */\r\nexport function searchInStr(str: string, key: string): [boolean, string] {\r\n return str.indexOf(key) === -1 ? [false, str] : [true, str.replace(key, '')];\r\n}","/**\r\n * 駝峰轉小寫+convert(default:底線)\r\n * @param str\r\n * @returns\r\n */\r\nexport function strToConvert(str: string, convert: string = \"_\") {\r\n return str.replace(/\\B([A-Z])/g, `${convert}$1`).toLowerCase();\r\n}","/**\r\n * 底線轉駝峰\r\n * @param str\r\n * @returns\r\n */\r\nexport function strToHump(str: string) {\r\n if (str.startsWith('_')) str = str.slice(1);\r\n\r\n return str.replace(/([^_])(?:_+([^_]))/g, function ($0, $1, $2) {\r\n return $1 + $2.toUpperCase();\r\n });\r\n}","import { gettype } from \"../gettype/gettype\";\r\n\r\n/**\r\n * 物件深度合併\r\n * @param target\r\n * @param sources\r\n * @returns\r\n */\r\nexport function deepAssign(...param: ({ [_: string]: any } | undefined)[]) {\r\n let temp: any[] = param.filter(v => gettype(v) === \"object\")\r\n if (temp.length < 1) return {};\r\n \r\n let result = Object.assign({}, ...temp);\r\n\r\n for (let item of temp) {\r\n for (const [idx, val] of Object.entries<any>(item)) {\r\n if (gettype(val) === \"object\") {\r\n result[idx] = deepAssign(result[idx], val);\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n","/**\r\n * 多欄位排序\r\n * @param sort \r\n * @returns \r\n */\r\nexport function fieldSorter(sort: {\r\n isDesc?: boolean,\r\n fields: {\r\n key: string,\r\n isNumber?: boolean,\r\n isDesc?: boolean\r\n }[]\r\n}) {\r\n return (a: { [_: string]: any }, b: { [_: string]: any }) => {\r\n const data = sort.fields\r\n .map(filed => {\r\n let dir = 1;\r\n if (filed.isDesc) {\r\n dir = -1;\r\n }\r\n\r\n let valueA = a[filed.key];\r\n let valueB = b[filed.key];\r\n\r\n if (!valueA || !valueB)\r\n return 0;\r\n\r\n if (filed.isNumber) {\r\n valueA = Number(valueA);\r\n valueB = Number(valueB);\r\n\r\n if (Number.isNaN(valueA) || Number.isNaN(valueB))\r\n return 0\r\n }\r\n\r\n return valueA > valueB ? dir : valueA < valueB ? -(dir) : 0;\r\n }).reduce((p, n) => p ? p : n, 0);\r\n\r\n if (sort.isDesc)\r\n data * -1;\r\n\r\n return data;\r\n };\r\n};","/**\r\n * 取得區間的數值\r\n * @param start 開始時間\r\n * @param stop 結束時間\r\n * @param step 間隔\r\n * @returns \r\n */\r\nexport function range(start: number, stop: number, step: number) {\r\n const range = { length: (stop - start) / step + 1 };\r\n\r\n return Array.from(range, (_, i) => start + (i * step));\r\n};"],"mappings":"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","names":["range"]}
|