@jnrs/shared 1.1.5 → 1.1.7
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/README.md +2 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/styles/theme.scss +25 -21
- package/dist/types/base.d.ts +13 -0
- package/dist/types/base.d.ts.map +1 -1
- package/dist/utils/dict.d.ts +1 -1
- package/dist/utils/dict.d.ts.map +1 -1
- package/dist/utils/dict.js +2 -2
- package/dist/utils/dict.js.map +1 -1
- package/dist/utils/file.d.ts +23 -0
- package/dist/utils/file.d.ts.map +1 -0
- package/dist/utils/file.js +37 -0
- package/dist/utils/file.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/object.d.ts +26 -0
- package/dist/utils/object.d.ts.map +1 -0
- package/dist/utils/object.js +82 -0
- package/dist/utils/object.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -33,15 +33,16 @@ import { uuidv4 } from '@jnrs/shared/uuid'
|
|
|
33
33
|
- User
|
|
34
34
|
- DictItem
|
|
35
35
|
- Dict
|
|
36
|
+
- FileItem
|
|
36
37
|
- Locale
|
|
37
38
|
- ThemeMode
|
|
38
39
|
|
|
39
|
-
|
|
40
40
|
类
|
|
41
41
|
- Fullscreen
|
|
42
42
|
|
|
43
43
|
函数
|
|
44
44
|
- hasPermissionWithSuffix 判断用户是否拥有指定后缀类型的权限(如 '*', ':view', ':edit')
|
|
45
|
+
- objectToFormData 普通对象转 FormData 对象
|
|
45
46
|
- setDefaultLocale
|
|
46
47
|
- formatDateTime
|
|
47
48
|
- formatWeekday
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
export { getDictColor, getDictLabel,
|
|
1
|
+
export { getDictColor, getDictLabel, getDictList, getDictValue } from './utils/dict.js';
|
|
2
2
|
export { formatDateTime, formatWeekday, setDefaultLocale } from './utils/date.js';
|
|
3
3
|
export { Fullscreen } from './utils/fullscreen.js';
|
|
4
4
|
export { hasPermissionWithSuffix } from './utils/permissions.js';
|
|
5
|
+
export { objectMatchAssign, objectToFormData } from './utils/object.js';
|
|
6
|
+
export { blobToUrl, downloadByBlob, downloadByUrl } from './utils/file.js';
|
|
5
7
|
|
|
6
8
|
console.log('%c✨ 欢迎使用 @jnrs/shared', 'background: #8061BF; color: #f2f2f2; font-weight: bold; padding: 4px 8px; border-radius: 4px; font-family: "Helvetica Neue", sans-serif;');
|
|
7
9
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAGA,OAAO,CAAC,GAAG,CACT,uBAAuB,EACvB,0IAA0I,CAC3I"}
|
package/dist/styles/theme.scss
CHANGED
|
@@ -2,43 +2,40 @@
|
|
|
2
2
|
* 主题样式
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
// 系统自动适配 - 浅色模式
|
|
6
|
-
@media (prefers-color-scheme: light) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
--jnrs-background-primary: oklch(0.96 0 0);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
5
|
+
// // 系统自动适配 - 浅色模式
|
|
6
|
+
// @media (prefers-color-scheme: light) {
|
|
7
|
+
// :root {
|
|
8
|
+
// }
|
|
9
|
+
// }
|
|
13
10
|
|
|
14
|
-
// 系统自动适配 - 深色模式
|
|
15
|
-
@media (prefers-color-scheme: dark) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
--jnrs-background-primary: oklch(0 0 0);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
11
|
+
// // 系统自动适配 - 深色模式
|
|
12
|
+
// @media (prefers-color-scheme: dark) {
|
|
13
|
+
// :root {
|
|
14
|
+
// }
|
|
15
|
+
// }
|
|
22
16
|
|
|
23
|
-
// 手动切换 -
|
|
17
|
+
// 手动切换 - 浅色模式(所有内容需与 @media (prefers-color-scheme: light) 保持一致)
|
|
24
18
|
.light {
|
|
25
19
|
--jnrs-font-primary: oklch(0.3 0.01 264);
|
|
26
20
|
--jnrs-card-primary: oklch(1 0 0);
|
|
27
21
|
--jnrs-background-primary: oklch(0.96 0 0);
|
|
22
|
+
--jnrs-background-head: oklch(0.94 0 0);
|
|
28
23
|
}
|
|
29
24
|
|
|
30
|
-
// 手动切换 -
|
|
25
|
+
// 手动切换 - 深色模式(所有内容需与 @media (prefers-color-scheme: dark) 保持一致)
|
|
31
26
|
.dark {
|
|
32
27
|
--jnrs-font-primary: oklch(0.9 0 265);
|
|
33
|
-
--jnrs-
|
|
28
|
+
--jnrs-card-primary: oklch(0.24 0 0);
|
|
29
|
+
--jnrs-background-head: oklch(0 0 0);
|
|
34
30
|
}
|
|
35
31
|
|
|
36
32
|
/**
|
|
37
33
|
* 基础样式
|
|
38
34
|
*/
|
|
39
35
|
:root {
|
|
40
|
-
//
|
|
36
|
+
// 业务相关(可动态修改)
|
|
41
37
|
--jnrs-color-primary: oklch(0.6 0.19 41); // jnrs 橙
|
|
38
|
+
--jnrs-color-primary-03: oklch(from var(--jnrs-color-primary) l c h / 0.3);
|
|
42
39
|
--jnrs-color-primary-06: oklch(from var(--jnrs-color-primary) l c h / 0.6);
|
|
43
40
|
--jnrs-color-primary-light: oklch(from var(--jnrs-color-primary) calc(l + 0.1) c h);
|
|
44
41
|
|
|
@@ -47,7 +44,14 @@
|
|
|
47
44
|
--jnrs-color-error: oklch(0.65 0.24 33);
|
|
48
45
|
--jnrs-color-warning: oklch(0.8 0.17 33);
|
|
49
46
|
|
|
50
|
-
|
|
47
|
+
/* 主题样式衍生 */
|
|
48
|
+
|
|
49
|
+
// 字体
|
|
51
50
|
--jnrs-font-primary-03: oklch(from var(--jnrs-font-primary) l c h / 0.3);
|
|
52
51
|
--jnrs-font-primary-06: oklch(from var(--jnrs-font-primary) l c h / 0.6);
|
|
52
|
+
|
|
53
|
+
// 背景
|
|
54
|
+
--jnrs-card-primary-03: oklch(from var(--jnrs-background-primary) l c h / 0.3);
|
|
55
|
+
--jnrs-background-primary-06: oklch(from var(--jnrs-background-primary) l c h / 0.6);
|
|
56
|
+
--jnrs-background-primary-light: oklch(from var(--jnrs-background-primary) calc(l + 0.1) c h);
|
|
53
57
|
}
|
package/dist/types/base.d.ts
CHANGED
|
@@ -44,6 +44,19 @@ export interface Role {
|
|
|
44
44
|
permissions?: string[];
|
|
45
45
|
[key: string]: unknown;
|
|
46
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* 文件项
|
|
49
|
+
*/
|
|
50
|
+
export type FileItem = {
|
|
51
|
+
/**
|
|
52
|
+
* 文件地址
|
|
53
|
+
*/
|
|
54
|
+
src: string;
|
|
55
|
+
/**
|
|
56
|
+
* 文件名称
|
|
57
|
+
*/
|
|
58
|
+
fileName: string;
|
|
59
|
+
};
|
|
47
60
|
/**
|
|
48
61
|
* 语言
|
|
49
62
|
*/
|
package/dist/types/base.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/types/base.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAElC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA"}
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/types/base.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IACX;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;AAElC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA"}
|
package/dist/utils/dict.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ import type { Dict, DictItem } from '../types/base';
|
|
|
12
12
|
* @param dictData 字典总数据
|
|
13
13
|
* @returns 某字典名称所对应的字典列表数据
|
|
14
14
|
*/
|
|
15
|
-
export declare const
|
|
15
|
+
export declare const getDictList: (name: string, dictData: Dict) => DictItem[];
|
|
16
16
|
/**
|
|
17
17
|
* 根据字典名称和字典值获取字典标签
|
|
18
18
|
* @param name 字典名称
|
package/dist/utils/dict.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dict.d.ts","sourceRoot":"","sources":["../../src/utils/dict.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"dict.d.ts","sourceRoot":"","sources":["../../src/utils/dict.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,UAAU,IAAI,KAAG,QAAQ,EAGlE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,GAAG,MAAM,EAAE,UAAU,IAAI,KAAG,MAInF,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,EAAE,UAAU,IAAI,KAAG,MAAM,GAAG,MAAM,GAAG,SAI5F,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,GAAG,MAAM,EAAE,UAAU,IAAI,KAAG,MAGnF,CAAA"}
|
package/dist/utils/dict.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* @param dictData 字典总数据
|
|
12
12
|
* @returns 某字典名称所对应的字典列表数据
|
|
13
13
|
*/
|
|
14
|
-
const
|
|
14
|
+
const getDictList = (name, dictData) => {
|
|
15
15
|
if (!name || !Object.hasOwn(dictData, name))
|
|
16
16
|
return [];
|
|
17
17
|
return dictData[name];
|
|
@@ -57,5 +57,5 @@ const getDictColor = (name, value, dictData) => {
|
|
|
57
57
|
return dictData[name].find((d) => String(d.value) === String(value))?.displayColor || '';
|
|
58
58
|
};
|
|
59
59
|
|
|
60
|
-
export { getDictColor, getDictLabel,
|
|
60
|
+
export { getDictColor, getDictLabel, getDictList, getDictValue };
|
|
61
61
|
//# sourceMappingURL=dict.js.map
|
package/dist/utils/dict.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dict.js","sources":["../../src/utils/dict.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;AAMG;AAIH;;;;;AAKG;MACU,
|
|
1
|
+
{"version":3,"file":"dict.js","sources":["../../src/utils/dict.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;AAMG;AAIH;;;;;AAKG;MACU,WAAW,GAAG,CAAC,IAAY,EAAE,QAAc,KAAgB;IACtE,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC;AAAE,QAAA,OAAO,EAAE;AACtD,IAAA,OAAO,QAAQ,CAAC,IAAI,CAAC;AACvB;AAEA;;;;;;AAMG;AACI,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,KAAsB,EAAE,QAAc,KAAY;AAC3F,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,EAAE;IACpB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC;AAAE,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AACxD,IAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;AAC9F;AAEA;;;;;;AAMG;AACI,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,QAAc,KAAiC;AACvG,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,EAAE;IACpB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC;AAAE,QAAA,OAAO,SAAS;AACpD,IAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,IAAI,SAAS;AAC1F;AAEA;;;;;;AAMG;AACI,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,KAAsB,EAAE,QAAc,KAAY;IAC3F,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC;AAAE,QAAA,OAAO,EAAE;AACtD,IAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,IAAI,EAAE;AAC1F;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Blob 转为 URL(有副作用)
|
|
3
|
+
* @param blob Blob 数据
|
|
4
|
+
* @returns url URL 对象
|
|
5
|
+
* @returns revoke URL 对象清理函数
|
|
6
|
+
*/
|
|
7
|
+
export declare const blobToUrl: (blob: Blob) => {
|
|
8
|
+
url: string;
|
|
9
|
+
revoke: () => void;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* 根据 Url 数据进行下载
|
|
13
|
+
* @param url URL 数据
|
|
14
|
+
* @param filename 文件名
|
|
15
|
+
*/
|
|
16
|
+
export declare const downloadByUrl: (url: string, filename: string) => Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* 根据 Blob 数据进行下载(自动清理副作用)
|
|
19
|
+
* @param blob Blob 数据
|
|
20
|
+
* @param filename 文件名
|
|
21
|
+
*/
|
|
22
|
+
export declare const downloadByBlob: (blob: Blob, filename: string) => Promise<void>;
|
|
23
|
+
//# sourceMappingURL=file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/utils/file.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,IAAI;;;CAInC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAU,KAAK,MAAM,EAAE,UAAU,MAAM,kBAOhE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAU,MAAM,IAAI,EAAE,UAAU,MAAM,kBAIhE,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Blob 转为 URL(有副作用)
|
|
3
|
+
* @param blob Blob 数据
|
|
4
|
+
* @returns url URL 对象
|
|
5
|
+
* @returns revoke URL 对象清理函数
|
|
6
|
+
*/
|
|
7
|
+
const blobToUrl = (blob) => {
|
|
8
|
+
const url = URL.createObjectURL(blob);
|
|
9
|
+
const revoke = () => URL.revokeObjectURL(url);
|
|
10
|
+
return { url, revoke };
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* 根据 Url 数据进行下载
|
|
14
|
+
* @param url URL 数据
|
|
15
|
+
* @param filename 文件名
|
|
16
|
+
*/
|
|
17
|
+
const downloadByUrl = async (url, filename) => {
|
|
18
|
+
const a = document.createElement('a');
|
|
19
|
+
a.href = url;
|
|
20
|
+
a.download = filename;
|
|
21
|
+
document.body.appendChild(a);
|
|
22
|
+
a.click();
|
|
23
|
+
document.body.removeChild(a);
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* 根据 Blob 数据进行下载(自动清理副作用)
|
|
27
|
+
* @param blob Blob 数据
|
|
28
|
+
* @param filename 文件名
|
|
29
|
+
*/
|
|
30
|
+
const downloadByBlob = async (blob, filename) => {
|
|
31
|
+
const { url, revoke } = blobToUrl(blob);
|
|
32
|
+
downloadByUrl(url, filename);
|
|
33
|
+
setTimeout(revoke, 100);
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export { blobToUrl, downloadByBlob, downloadByUrl };
|
|
37
|
+
//# sourceMappingURL=file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.js","sources":["../../src/utils/file.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;AAKG;AACI,MAAM,SAAS,GAAG,CAAC,IAAU,KAAI;IACtC,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC;AAC7C,IAAA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE;AACxB;AAEA;;;;AAIG;AACI,MAAM,aAAa,GAAG,OAAO,GAAW,EAAE,QAAgB,KAAI;IACnE,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;AACrC,IAAA,CAAC,CAAC,IAAI,GAAG,GAAG;AACZ,IAAA,CAAC,CAAC,QAAQ,GAAG,QAAQ;AACrB,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,KAAK,EAAE;AACT,IAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AAC9B;AAEA;;;;AAIG;AACI,MAAM,cAAc,GAAG,OAAO,IAAU,EAAE,QAAgB,KAAI;IACnE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC;AACvC,IAAA,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC5B,IAAA,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;AACzB;;;;"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,QAAQ,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 深拷贝合并对象中已有的键值,排除 null、undefined
|
|
3
|
+
* @param target 赋值对象
|
|
4
|
+
* @param source 取值对象
|
|
5
|
+
* @returns 被赋值后的对象 target
|
|
6
|
+
*/
|
|
7
|
+
export declare const objectMatchAssign: <T extends Record<string, any>>(target: T, source: Partial<T> | null | undefined) => T;
|
|
8
|
+
/**
|
|
9
|
+
* 对象转 FormData
|
|
10
|
+
* @param obj
|
|
11
|
+
* @param mapConfig 字段映射关系
|
|
12
|
+
* - key: 映射匹配字段
|
|
13
|
+
* - finallyKey: 最终请求的键名
|
|
14
|
+
* - valueKey: 最终请求的键值
|
|
15
|
+
* @returns FormData
|
|
16
|
+
* @example
|
|
17
|
+
* objectToFormData(obj, {
|
|
18
|
+
* newField: { finallyKey: 'originField', valueKey: 'uniqueFileName' }
|
|
19
|
+
* })
|
|
20
|
+
* 即最终请求中:键名为 originField,键值为 newField.uniqueFileName
|
|
21
|
+
*/
|
|
22
|
+
export declare const objectToFormData: (obj: Record<string, unknown>, mapConfig: Record<string, {
|
|
23
|
+
finallyKey: string;
|
|
24
|
+
valueKey: string;
|
|
25
|
+
}>) => FormData;
|
|
26
|
+
//# sourceMappingURL=object.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/utils/object.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7D,QAAQ,CAAC,EACT,QAAQ,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,KACpC,CAyBF,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,GAC3B,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,WAAW,MAAM,CAAC,MAAM,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,KAClE,QAgCF,CAAA"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { cloneDeep, has, isPlainObject, mergeWith } from 'lodash-es';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 深拷贝合并对象中已有的键值,排除 null、undefined
|
|
5
|
+
* @param target 赋值对象
|
|
6
|
+
* @param source 取值对象
|
|
7
|
+
* @returns 被赋值后的对象 target
|
|
8
|
+
*/
|
|
9
|
+
const objectMatchAssign = (target, source) => {
|
|
10
|
+
if (!source) {
|
|
11
|
+
return cloneDeep(target);
|
|
12
|
+
}
|
|
13
|
+
const result = cloneDeep(target);
|
|
14
|
+
for (const key in target) {
|
|
15
|
+
if (!has(target, key))
|
|
16
|
+
continue;
|
|
17
|
+
const sourceVal = source[key];
|
|
18
|
+
if (sourceVal === null || sourceVal === undefined) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
const targetVal = target[key];
|
|
22
|
+
if (isPlainObject(targetVal) && isPlainObject(sourceVal)) {
|
|
23
|
+
result[key] = mergeWith(cloneDeep(targetVal), cloneDeep(sourceVal));
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
result[key] = cloneDeep(sourceVal);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* 对象转 FormData
|
|
33
|
+
* @param obj
|
|
34
|
+
* @param mapConfig 字段映射关系
|
|
35
|
+
* - key: 映射匹配字段
|
|
36
|
+
* - finallyKey: 最终请求的键名
|
|
37
|
+
* - valueKey: 最终请求的键值
|
|
38
|
+
* @returns FormData
|
|
39
|
+
* @example
|
|
40
|
+
* objectToFormData(obj, {
|
|
41
|
+
* newField: { finallyKey: 'originField', valueKey: 'uniqueFileName' }
|
|
42
|
+
* })
|
|
43
|
+
* 即最终请求中:键名为 originField,键值为 newField.uniqueFileName
|
|
44
|
+
*/
|
|
45
|
+
const objectToFormData = (obj, mapConfig) => {
|
|
46
|
+
const formData = new FormData();
|
|
47
|
+
for (const key in obj) {
|
|
48
|
+
if (!Object.hasOwn(obj, key))
|
|
49
|
+
continue;
|
|
50
|
+
const value = obj[key];
|
|
51
|
+
if (Array.isArray(value)) {
|
|
52
|
+
value.forEach((arrayItem) => {
|
|
53
|
+
if (arrayItem instanceof File) {
|
|
54
|
+
// 当数组内匹配到了 File 类型数据,则直接按照当前键名存储 File
|
|
55
|
+
formData.append(key, arrayItem);
|
|
56
|
+
}
|
|
57
|
+
else if (key in mapConfig) {
|
|
58
|
+
// 当数组内匹配到了非 File 类型数据,则按照映射关系的 finallyKey 作为键名,valueKey 作为值
|
|
59
|
+
const { finallyKey, valueKey } = mapConfig[key];
|
|
60
|
+
formData.append(finallyKey, arrayItem[valueKey]);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// 当数组内没有匹配到 File 类型数据,也不属于照映射关系内,则存储为 JSON 字符串
|
|
64
|
+
formData.append(key, JSON.stringify(arrayItem));
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
else if (value instanceof File) {
|
|
69
|
+
formData.append(key, value);
|
|
70
|
+
}
|
|
71
|
+
else if (typeof value === 'string') {
|
|
72
|
+
formData.append(key, value.trim());
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
formData.append(key, JSON.stringify(value));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return formData;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
export { objectMatchAssign, objectToFormData };
|
|
82
|
+
//# sourceMappingURL=object.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.js","sources":["../../src/utils/object.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA;;;;;AAKG;MACU,iBAAiB,GAAG,CAC/B,MAAS,EACT,MAAqC,KAChC;IACL,IAAI,CAAC,MAAM,EAAE;AACX,QAAA,OAAO,SAAS,CAAC,MAAM,CAAC;IAC1B;AAEA,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;AAEhC,IAAA,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;AACxB,QAAA,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;YAAE;AAEvB,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC;QAC7B,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,SAAS,EAAE;YACjD;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC;QAE7B,IAAI,aAAa,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE;AACxD,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;QACrE;aAAO;YACL,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC;QACpC;IACF;AAEA,IAAA,OAAO,MAAM;AACf;AAEA;;;;;;;;;;;;;AAaG;MACU,gBAAgB,GAAG,CAC9B,GAA4B,EAC5B,SAAmE,KACvD;AACZ,IAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;AAE/B,IAAA,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;QACrB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;YAAE;AAE9B,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;AAEtB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,KAAI;AAC1B,gBAAA,IAAI,SAAS,YAAY,IAAI,EAAE;;AAE7B,oBAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC;gBACjC;AAAO,qBAAA,IAAI,GAAG,IAAI,SAAS,EAAE;;oBAE3B,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC;oBAC/C,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAClD;qBAAO;;AAEL,oBAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBACjD;AACF,YAAA,CAAC,CAAC;QACJ;AAAO,aAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AAChC,YAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;QAC7B;AAAO,aAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACpC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACpC;aAAO;AACL,YAAA,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7C;IACF;AAEA,IAAA,OAAO,QAAQ;AACjB;;;;"}
|