@ezuikit/utils-tools 1.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,42 @@
1
+ ## Logger
2
+
3
+ 日志工具类
4
+
5
+
6
+ ## scripts
7
+
8
+ ```bash
9
+ pnpm run dev
10
+
11
+ pnpm run build
12
+
13
+ pnpm run test
14
+ ```
15
+
16
+ ## 使用
17
+
18
+ ```bash
19
+ pnpm install @ezuikit/utils-logger
20
+
21
+ ```
22
+
23
+ ```ts
24
+ import Logger from '@ezuikit/utils-logger'
25
+
26
+ const logger = new Logger({level: "INFO"})
27
+
28
+ logger.info("info")
29
+ logger.log("log")
30
+ logger.warn("warn")
31
+ logger.error("error")
32
+
33
+ // 更改日志等级 WARN 只打印 warn error
34
+ logger.setOptions({level: "WARN"})
35
+
36
+ logger.info("setOptions info")
37
+ logger.log("setOptions log")
38
+ logger.warn("setOptions warn")
39
+ logger.error("setOptions error")
40
+ ```
41
+
42
+
@@ -0,0 +1,146 @@
1
+ /*
2
+ *
3
+ * index.umd.js.js v1.0.0-alpha.0
4
+ * Copyright (c) 2023-10-28 Ezviz-OpenBiz
5
+ * Released under MIT the License.
6
+ *
7
+ */
8
+ (function (global, factory) {
9
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
10
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
11
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Tools = {}));
12
+ })(this, (function (exports) { 'use strict';
13
+
14
+ const getQuery = (url)=>{
15
+ const query = url.split('?')[1]; // https://open.ys7.com/help?a=1&b=2&c=3
16
+ const obj = {};
17
+ if (query) {
18
+ // 把查询字符串按照&符号分割成数组
19
+ const vars = query.split('&'); // ['a=2', 'b=4']
20
+ for(let i = 0; i < vars.length; i++){
21
+ const pair = vars[i].split('=');
22
+ // 暂时不支持数组
23
+ obj[pair[0]] = decodeURIComponent(pair[1]);
24
+ }
25
+ }
26
+ return obj; // {a: '1', b: '2', c:'3'}
27
+ }; // export const appendQuery () {}
28
+
29
+ /**
30
+ * @description 解析ezopen 协议 url
31
+ * @param {string} url ezopen url
32
+ * @returns {EzopenParams}
33
+ *
34
+ * ```ts
35
+ * parseEzopenUrl("ezopen://open.ys7.com/C116331000/1.cloud.rec?a=00000&b=23&c=%E4%BD%A0%E5%A5%BD%E5%95%8A")
36
+ * ```
37
+ */ function parseEzopenUrl(url) {
38
+ const obj = {};
39
+ if (/^ezopen:\/\//.test(url)) {
40
+ obj.protocol = url.split('//')[0];
41
+ obj.search = url.split('?')[1] ? '?' + url.split('?')[1] : '';
42
+ obj.hostname = url.split('/')[2];
43
+ obj.origin = obj.protocol + '//' + obj.hostname;
44
+ obj.pathname = url.split('?')[0].replace(obj.origin, '');
45
+ obj.href = url;
46
+ const pathnames = obj.pathname.split('/');
47
+ const lastPath = pathnames[2].split('.');
48
+ obj.deviceSerial = pathnames[1];
49
+ obj.channelNo = lastPath[0];
50
+ obj.type = lastPath[lastPath.length - 1];
51
+ if (obj.type === 'live') {
52
+ obj.definition = lastPath.length > 2 ? lastPath[1] : 'sd';
53
+ }
54
+ if (obj.type === 'rec') {
55
+ obj.recType = lastPath.length > 2 ? lastPath[1] : '';
56
+ }
57
+ obj.searchParams = getQuery(url);
58
+ return obj;
59
+ }
60
+ return {};
61
+ }
62
+ /**
63
+ * @description exopen 协议播放地址切换
64
+ * @param {string} url exopen 协议播放地址
65
+ * @param {SwitchEzpoenOptions} options
66
+ * @returns
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * switchEzopenUrl('ezopen://open.ys7.com/C11633138/1.hd.live?a=1', {type: 'rec',recType: 'cloud',search: 'b=23&c=123423&a=00000&c=你好啊',definition: 'hd'}) // -> ezopen://open.ys7.com/C11633138/1.cloud.rec?a=00000&b=23&c=%E4%BD%A0%E5%A5%BD%E5%95%8A
71
+ *
72
+ * switchEzopenUrl('ezopen://open.ys7.com/C11633138/1.hd.live', {type: 'live',recType: 'cloud',search: 'b=23&c=123423', definition: 'sd'}) // -> ezopen://open.ys7.com/C11633138/1.live?b=23&c=123423
73
+ * ```
74
+ */ function switchEzopenUrl(url, options) {
75
+ const { type, channelNo, recType, definition, deviceSerial } = options != null ? options : {};
76
+ let { search } = options != null ? options : {};
77
+ if (!!type || !!channelNo || !!recType || !!definition || !!search) {
78
+ const obj = parseEzopenUrl(url);
79
+ if (search) {
80
+ const ns = Object.assign({}, obj.searchParams, getQuery('?' + search.replace('?', '')));
81
+ search = Object.entries(ns).reduce((acc, [key, value])=>{
82
+ acc += `${key}=${encodeURIComponent(value)}&`;
83
+ return acc;
84
+ }, '?').replace(/&$/, '');
85
+ } else {
86
+ search = obj.search;
87
+ }
88
+ return `${obj.origin}/${deviceSerial != null ? deviceSerial : obj.deviceSerial}/${channelNo != null ? channelNo : obj.channelNo}${type === 'rec' && recType ? '.' + recType : ''}${type === 'live' && definition === 'hd' ? '.' + definition : ''}.${type != null ? type : obj.type}${search}`;
89
+ }
90
+ return url;
91
+ }
92
+
93
+ function isHttp(url) {
94
+ return /^http[s]?:\/\//.test(url);
95
+ }
96
+
97
+ /**
98
+ * @description 判断是不是移动端(包括pad)
99
+ * @returns {boolean}
100
+ */ function isMobile(agent) {
101
+ var _window_navigator, _window;
102
+ return !!((agent != null ? agent : (_window = window) == null ? void 0 : (_window_navigator = _window.navigator) == null ? void 0 : _window_navigator.userAgent) || '').match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i);
103
+ }
104
+
105
+ /**
106
+ * @description 从对象中挑选值
107
+ * @param obj
108
+ * @param keys
109
+ * @returns
110
+ *
111
+ * @example
112
+ *
113
+ * ```ts
114
+ * pick({a: "1", b: "b"}, ['a']) // => {a: 'a'}
115
+ * ```
116
+ */ function pick(obj, keys) {
117
+ return Object.entries(obj).reduce((acc, [key, value])=>{
118
+ if (keys.includes(key)) {
119
+ acc[key] = value;
120
+ }
121
+ return acc;
122
+ }, {});
123
+ }
124
+
125
+ console.log(switchEzopenUrl('ezopen://open.ys7.com/C11633138/1.hd.live?a=1', {
126
+ type: 'rec',
127
+ recType: 'cloud',
128
+ search: 'b=23&c=123423&a=00000&c=你好啊',
129
+ definition: 'hd'
130
+ }));
131
+ console.log(switchEzopenUrl('ezopen://open.ys7.com/C11633138/1.hd.live', {
132
+ type: 'live',
133
+ recType: 'cloud',
134
+ search: 'b=23&c=123423',
135
+ definition: 'sd'
136
+ }));
137
+
138
+ exports.getQuery = getQuery;
139
+ exports.isHttp = isHttp;
140
+ exports.isMobile = isMobile;
141
+ exports.parseEzopenUrl = parseEzopenUrl;
142
+ exports.pick = pick;
143
+ exports.switchEzopenUrl = switchEzopenUrl;
144
+
145
+ }));
146
+ //# sourceMappingURL=index.umd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.umd.js","sources":["../src/query.ts","../src/ezopenUrl.ts","../src/isHttp.ts","../src/isMobile.ts","../src/pick.ts","../src/index.ts"],"sourcesContent":["export const getQuery = (url: string) => {\r\n const query = url.split('?')[1]; // https://open.ys7.com/help?a=1&b=2&c=3\r\n const obj: Record<string, any> = {};\r\n\r\n if (query) {\r\n // 把查询字符串按照&符号分割成数组\r\n const vars = query.split('&'); // ['a=2', 'b=4']\r\n\r\n for (let i = 0; i < vars.length; i++) {\r\n const pair = vars[i].split('=');\r\n // 暂时不支持数组\r\n obj[pair[0]] = decodeURIComponent(pair[1]);\r\n }\r\n }\r\n\r\n return obj; // {a: '1', b: '2', c:'3'}\r\n};\r\n\r\n// export const appendQuery () {}\r\n","import { getQuery } from './query';\r\n\r\nexport interface EzopenURL {\r\n protocol: string; // 默认ezopen:\r\n search?: string;\r\n searchParams?: Record<string, any>;\r\n pathname: string;\r\n origin: string;\r\n href: string;\r\n hostname: string;\r\n deviceSerial: string;\r\n channelNo: string;\r\n /** 播放类型 直播 | 回放 */\r\n type: 'live' | 'rec' | string; //\r\n /** 回放存储类型 */\r\n recType?: 'cloud' | string; //\r\n /** 清晰度 */\r\n definition?: 'sd' | 'hd';\r\n}\r\n\r\n/**\r\n * @description 解析ezopen 协议 url\r\n * @param {string} url ezopen url\r\n * @returns {EzopenParams}\r\n *\r\n * ```ts\r\n * parseEzopenUrl(\"ezopen://open.ys7.com/C116331000/1.cloud.rec?a=00000&b=23&c=%E4%BD%A0%E5%A5%BD%E5%95%8A\")\r\n * ```\r\n */\r\nexport function parseEzopenUrl(url: string) {\r\n const obj: Partial<EzopenURL> = {};\r\n if (/^ezopen:\\/\\//.test(url)) {\r\n obj.protocol = url.split('//')[0];\r\n obj.search = url.split('?')[1] ? '?' + url.split('?')[1] : '';\r\n obj.hostname = url.split('/')[2];\r\n obj.origin = obj.protocol + '//' + obj.hostname;\r\n obj.pathname = url.split('?')[0].replace(obj.origin, '');\r\n obj.href = url;\r\n const pathnames = obj.pathname.split('/');\r\n const lastPath = pathnames[2].split('.');\r\n\r\n obj.deviceSerial = pathnames[1];\r\n obj.channelNo = lastPath[0];\r\n obj.type = lastPath[lastPath.length - 1];\r\n if (obj.type === 'live') {\r\n obj.definition = lastPath.length > 2 ? (lastPath[1] as 'hd') : 'sd';\r\n }\r\n\r\n if (obj.type === 'rec') {\r\n obj.recType = lastPath.length > 2 ? lastPath[1] : '';\r\n }\r\n\r\n obj.searchParams = getQuery(url);\r\n\r\n return obj;\r\n }\r\n\r\n return {};\r\n}\r\n\r\nexport interface SwitchEzpoenOptions {\r\n deviceSerial?: string;\r\n channelNo?: string;\r\n type?: 'live' | 'rec';\r\n recType?: 'cloud'; // 仅 rec\r\n definition?: 'hd' | 'sd'; // 仅 live\r\n search?: string;\r\n}\r\n\r\n/**\r\n * @description exopen 协议播放地址切换\r\n * @param {string} url exopen 协议播放地址\r\n * @param {SwitchEzpoenOptions} options\r\n * @returns\r\n *\r\n * @example\r\n * ```ts\r\n * switchEzopenUrl('ezopen://open.ys7.com/C11633138/1.hd.live?a=1', {type: 'rec',recType: 'cloud',search: 'b=23&c=123423&a=00000&c=你好啊',definition: 'hd'}) // -> ezopen://open.ys7.com/C11633138/1.cloud.rec?a=00000&b=23&c=%E4%BD%A0%E5%A5%BD%E5%95%8A\r\n *\r\n * switchEzopenUrl('ezopen://open.ys7.com/C11633138/1.hd.live', {type: 'live',recType: 'cloud',search: 'b=23&c=123423', definition: 'sd'}) // -> ezopen://open.ys7.com/C11633138/1.live?b=23&c=123423\r\n * ```\r\n */\r\nexport function switchEzopenUrl(url: string, options?: SwitchEzpoenOptions) {\r\n const { type, channelNo, recType, definition, deviceSerial } = options ?? {};\r\n let { search } = options ?? {};\r\n\r\n if (!!type || !!channelNo || !!recType || !!definition || !!search) {\r\n const obj: Partial<EzopenURL> = parseEzopenUrl(url);\r\n\r\n if (search) {\r\n const ns = Object.assign(\r\n {},\r\n obj.searchParams,\r\n getQuery('?' + search.replace('?', ''))\r\n ) as Record<string, string>;\r\n\r\n search = Object.entries(ns)\r\n .reduce<string>((acc, [key, value]) => {\r\n acc += `${key}=${encodeURIComponent(value)}&`;\r\n return acc;\r\n }, '?')\r\n .replace(/&$/, '');\r\n } else {\r\n search = obj.search;\r\n }\r\n\r\n return `${obj.origin}/${deviceSerial ?? obj.deviceSerial}/${channelNo ?? obj.channelNo}${\r\n type === 'rec' && recType ? '.' + recType : ''\r\n }${type === 'live' && definition === 'hd' ? '.' + definition : ''}.${\r\n type ?? obj.type\r\n }${search}`;\r\n }\r\n\r\n return url;\r\n}\r\n","export function isHttp(url: string) {\r\n return /^http[s]?:\\/\\//.test(url);\r\n}\r\n","/**\r\n * @description 判断是不是移动端(包括pad)\r\n * @returns {boolean}\r\n */\r\nexport function isMobile(agent?: string) {\r\n return !!((agent ?? window?.navigator?.userAgent) || '').match(\r\n /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i\r\n );\r\n}\r\n","/**\r\n * @description 从对象中挑选值\r\n * @param obj\r\n * @param keys\r\n * @returns\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * pick({a: \"1\", b: \"b\"}, ['a']) // => {a: 'a'}\r\n * ```\r\n */\r\nexport function pick(obj: object, keys: string[]) {\r\n return Object.entries(obj).reduce((acc, [key, value]) => {\r\n if (keys.includes(key)) {\r\n (acc as any)[key] = value;\r\n }\r\n return acc;\r\n }, {});\r\n}\r\n","import { parseEzopenUrl, switchEzopenUrl } from './ezopenUrl';\n\nimport { isHttp } from './isHttp';\nimport { isMobile } from './isMobile';\nimport { getQuery } from './query';\nimport { pick } from './pick';\n\nconsole.log(\n switchEzopenUrl('ezopen://open.ys7.com/C11633138/1.hd.live?a=1', {\n type: 'rec',\n recType: 'cloud',\n search: 'b=23&c=123423&a=00000&c=你好啊',\n definition: 'hd'\n })\n);\nconsole.log(\n switchEzopenUrl('ezopen://open.ys7.com/C11633138/1.hd.live', {\n type: 'live',\n recType: 'cloud',\n search: 'b=23&c=123423',\n definition: 'sd'\n })\n);\n\nexport { parseEzopenUrl, switchEzopenUrl, isHttp, isMobile, getQuery, pick };\n"],"names":["getQuery","url","query","split","obj","vars","i","length","pair","decodeURIComponent","parseEzopenUrl","test","protocol","search","hostname","origin","pathname","replace","href","pathnames","lastPath","deviceSerial","channelNo","type","definition","recType","searchParams","switchEzopenUrl","options","ns","Object","assign","entries","reduce","acc","key","value","encodeURIComponent","isHttp","isMobile","agent","window","navigator","userAgent","match","pick","keys","includes","console","log"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@ezuikit/utils-tools",
3
+ "version": "1.0.0-alpha.0",
4
+ "description": "tools utils",
5
+ "main": "dist/index.js",
6
+ "umd": "dist/index.umd.js",
7
+ "types": "dist/types/index.d.ts",
8
+ "module": "dist/index.esm.js",
9
+ "exports": {
10
+ "types": "./dist/types/index.d.ts",
11
+ "import": "./dist/index.esm.js",
12
+ "default": "./dist/index.js"
13
+ },
14
+ "scripts": {
15
+ "dev": "cross-env NODE_ENV=development rollup --config rollup.config.js --bundleConfigAsCjs --watch",
16
+ "build": "cross-env NODE_ENV=production npm run clean && rollup --config rollup.config.js --bundleConfigAsCjs && npm run types && npm run docs",
17
+ "types": "tsc src/index.ts --emitDeclarationOnly --declaration --declarationDir dist/types",
18
+ "docs": "rimraf docs && typedoc --out docs src",
19
+ "prebuild": "npm run clean",
20
+ "test": "jest --coverage",
21
+ "test:watch": "jest --coverage --watch",
22
+ "clean": "rimraf docs dist coverage",
23
+ "lint": "eslint .",
24
+ "fmt": "prettier --write \"packages/**/src/**/*.{js,ts,json,md}\""
25
+ },
26
+ "files": [
27
+ "dist"
28
+ ],
29
+ "keywords": [
30
+ "logger",
31
+ "ezuikit",
32
+ "ezuikit-utils",
33
+ "utils"
34
+ ],
35
+ "author": "Ezviz-OpenBiz",
36
+ "license": "MIT",
37
+ "publishConfig": {
38
+ "access": "public",
39
+ "registry": "https://registry.npmjs.org/"
40
+ }
41
+ }