@zdepot/utils 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var u=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,f=/^[\[{]/;function o(e){return Object.prototype.toString.call(e)}var c={isSameType:function(n,t){return o(n)===o(t)},array:function(n){return this.isSameType(n,[])?n:this.isSameType(n,"")?this.jsonParse(n,[]):[]},string:function(n,t=""){return typeof n=="string"?n:_nullishCoalesce(t, () => (""))},number:function(n,t=0){let r=Number(n);return Number.isFinite(r)?r:Number.isFinite(t)?t:0},jsonParse:function(n,t){if(n==null)return t;try{let r=JSON.parse(n);return this.isSameType(r,t)?r:t}catch (e2){return t}},jsonParseObj:function(n,t){if(typeof n!="string"||n.length>10485760||n.length<2)return t;try{if(!f.test(n))throw new Error;let r=JSON.parse(n);return this.isSameType(r,t)?r:t}catch (e3){return t}},split:function(n,t){if(typeof n!="string"||n==="")return[];try{return n.split(t)}catch (e4){return[]}},boolean:function(n,t=!1){return n===!0||String(n).toLowerCase()==="true"||n===1?!0:n===!1||String(n).toLowerCase()==="false"||n===0?!1:t},date:function(n,t){let r=_nullishCoalesce(t, () => (new Date));if(n instanceof Date)return n;if(typeof n=="number"||typeof n=="string"){let i=new Date(n);return isNaN(i.getTime())?r:i}return r},function:function(e,n=(()=>{})){return typeof e=="function"?e:n},nonEmptyString:function(n,t=""){let r=this.string(n,t);return r.trim()!==""?r:t},email:function(n,t=""){let r=this.string(n,t);return u.test(r)?r:t},timestamp:function(n,t=Date.now()){return this.date(n,new Date(t)).getTime()},jsonStringify:function(n,t){let r=new WeakSet;try{return JSON.stringify(n,(i,s)=>{if(typeof s=="function")return"[Function]";if(typeof s=="object"&&s!==null){if(r.has(s))return"[Circular]";r.add(s)}return s},t)}catch (e5){return"{}"}}},g= exports.default =c;exports.default = g; exports.safe = c;
1
+ "use strict";var o=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var a=(e,n)=>{for(var t in n)o(e,t,{get:n[t],enumerable:!0})},p=(e,n,t,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of g(n))!y.call(e,s)&&s!==t&&o(e,s,{get:()=>n[s],enumerable:!(r=c(n,s))||r.enumerable});return e};var T=e=>p(o({},"__esModule",{value:!0}),e);var d={};a(d,{default:()=>S,safe:()=>f});module.exports=T(d);var m=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,w=/^[\[{]/;function u(e){return Object.prototype.toString.call(e)}var f={isSameType:function(n,t){return u(n)===u(t)},array:function(n){return this.isSameType(n,[])?n:this.isSameType(n,"")?this.jsonParse(n,[]):[]},string:function(n,t=""){return typeof n=="string"?n:t??""},number:function(n,t=0){let r=Number(n);return Number.isFinite(r)?r:Number.isFinite(t)?t:0},jsonParse:function(n,t){if(n==null)return t;try{let r=JSON.parse(n);return this.isSameType(r,t)?r:t}catch{return t}},jsonParseObj:function(n,t){if(typeof n!="string"||n.length>10485760||n.length<2)return t;try{if(!w.test(n))throw new Error;let r=JSON.parse(n);return this.isSameType(r,t)?r:t}catch{return t}},split:function(n,t){if(typeof n!="string"||n==="")return[];try{return n.split(t)}catch{return[]}},boolean:function(n,t=!1){return n===!0||String(n).toLowerCase()==="true"||n===1?!0:n===!1||String(n).toLowerCase()==="false"||n===0?!1:t},date:function(n,t){let r=t??new Date;if(n instanceof Date)return n;if(typeof n=="number"||typeof n=="string"){let s=new Date(n);return isNaN(s.getTime())?r:s}return r},function:function(e,n=(()=>{})){return typeof e=="function"?e:n},nonEmptyString:function(n,t=""){let r=this.string(n,t);return r.trim()!==""?r:t},email:function(n,t=""){let r=this.string(n,t);return m.test(r)?r:t},timestamp:function(n,t=Date.now()){return this.date(n,new Date(t)).getTime()},jsonStringify:function(n,t){let r=new WeakSet;try{return JSON.stringify(n,(s,i)=>{if(typeof i=="function")return"[Function]";if(typeof i=="object"&&i!==null){if(r.has(i))return"[Circular]";r.add(i)}return i},t)}catch{return"{}"}}},S=f;0&&(module.exports={safe});
package/package.json CHANGED
@@ -1,20 +1,15 @@
1
1
  {
2
2
  "name": "@zdepot/utils",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "安全类型转换工具库,提供带兜底值的类型判断与转换方法",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
7
7
  "types": "dist/index.d.ts",
8
8
  "exports": {
9
9
  ".": {
10
- "import": {
11
- "types": "./dist/index.d.ts",
12
- "default": "./dist/index.mjs"
13
- },
14
- "require": {
15
- "types": "./dist/index.d.ts",
16
- "default": "./dist/index.js"
17
- }
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.mjs",
12
+ "require": "./dist/index.js"
18
13
  }
19
14
  },
20
15
  "files": [
@@ -25,7 +20,7 @@
25
20
  "access": "public"
26
21
  },
27
22
  "scripts": {
28
- "build": "tsup --config tsup.config.ts",
23
+ "build": "tsup --config tsup.config.ts && node scripts/clean-dmts.js",
29
24
  "prepublishOnly": "npm run build",
30
25
  "test": "vitest",
31
26
  "test:coverage": "vitest run --coverage",
package/dist/index.d.mts DELETED
@@ -1,103 +0,0 @@
1
- interface SafeUtils {
2
- /**
3
- * 判断相同类型
4
- * @param a 第一个值
5
- * @param b 第二个值
6
- * @returns 是否为相同类型
7
- */
8
- isSameType: (a: unknown, b: unknown) => boolean;
9
- /**
10
- * 确保返回数组。如果输入是数组则直接返回;如果是 JSON 字符串则自动 parse;否则返回空数组 `[]`。
11
- * @param value 输入值
12
- * @returns 数组或空数组
13
- */
14
- array: <T = unknown>(value: T) => T extends readonly unknown[] ? T : [];
15
- /**
16
- * 确保返回字符串。如果输入是字符串则直接返回,否则返回兜底值(默认 `""`)。
17
- * @param value 输入值
18
- * @param fallback 兜底值
19
- * @returns 字符串或空字符串
20
- */
21
- string: (value: unknown, fallback?: string) => string;
22
- /**
23
- * 确保返回数字。用 `Number()` 转换,如果结果为 NaN 则返回兜底值(默认 `0`)。
24
- * @param value 输入值
25
- * @param fallback 兜底值
26
- * @returns 数字或兜底值
27
- */
28
- number: (value: unknown, fallback?: number) => number;
29
- /**
30
- * 带兜底值的 `JSON.parse`。解析失败或结果类型与兜底值不一致时返回兜底值。
31
- * @param value 输入值
32
- * @param fallback 兜底值
33
- * @returns 解析结果或兜底值
34
- */
35
- jsonParse: <T = unknown>(value: unknown, fallback: T) => T;
36
- /**
37
- * 增版 `jsonParse`,只处理以 `[` 或 `{` 开头的字符串(对象/数组),否则直接返回兜底值。
38
- * @param value 输入值
39
- * @param fallback 兜底值
40
- * @returns 解析结果或兜底值
41
- */
42
- jsonParseObj: <T extends Record<string, unknown> | unknown[]>(value: string, fallback: T) => T;
43
- /**
44
- * 安全的 `String.split`。空字符串返回 `[]` 避免 `['']`,异常也返回 `[]`。
45
- * @param value 输入值
46
- * @param splitStr 分隔符
47
- * @returns 分割结果或空数组
48
- */
49
- split: (value: string, splitStr: string) => string[];
50
- /**
51
- * 确保返回布尔值。真值返回 `true`,其他情况返回兜底值(默认 `false`)。
52
- * @param value 输入值
53
- * @param fallback 兜底值
54
- * @returns 布尔值
55
- */
56
- boolean: (value: unknown, fallback?: boolean) => boolean;
57
- /**
58
- * 确保返回日期对象。如果是有效的时间戳、日期字符串或 Date 对象,返回对应的 Date,否则返回兜底值。
59
- * @param value 输入值
60
- * @param fallback 兜底值
61
- * @returns 日期对象
62
- */
63
- date: (value: unknown, fallback?: Date) => Date;
64
- /**
65
- * 确保返回函数。如果输入是函数则直接返回,否则返回空函数。
66
- * @param value 输入值
67
- * @param fallback 兜底值
68
- * @returns 函数
69
- */
70
- function: <T extends (...args: any[]) => any>(value: unknown, fallback?: T) => T;
71
- /**
72
- * 确保返回非空字符串。如果是非空字符串则返回,否则返回兜底值。
73
- * @param value 输入值
74
- * @param fallback 兜底值
75
- * @returns 非空字符串
76
- */
77
- nonEmptyString: (value: unknown, fallback?: string) => string;
78
- /**
79
- * 确保返回有效的 email 字符串。如果是有效 email 则返回,否则返回兜底值。
80
- * @param value 输入值
81
- * @param fallback 兜底值
82
- * @returns 有效的 email 字符串
83
- */
84
- email: (value: unknown, fallback?: string) => string;
85
- /**
86
- * 确保返回有效的时间戳。如果是有效时间戳则返回,否则返回兜底值。
87
- * @param value 输入值
88
- * @param fallback 兜底值
89
- * @returns 有效的时间戳
90
- */
91
- timestamp: (value: unknown, fallback?: number) => number;
92
- /**
93
- * 安全的 JSON 序列化。处理循环引用和不可序列化的值。
94
- * @param value 要序列化的值
95
- * @param indent 缩进
96
- * @returns 序列化后的字符串
97
- */
98
- jsonStringify: (value: unknown, indent?: number) => string;
99
- }
100
-
101
- declare const safe: SafeUtils;
102
-
103
- export { type SafeUtils, safe as default, safe };