@fast-china/utils 2.1.6 → 2.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.
Files changed (47) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +2 -0
  3. package/README.zh.md +2 -0
  4. package/THIRD_PARTY_LICENSES.md +26 -0
  5. package/dist/crypto/index.mjs +2240 -33
  6. package/dist/crypto/index.mjs.map +1 -1
  7. package/dist/dom/index.mjs +2 -0
  8. package/dist/index.d.mts +1918 -32
  9. package/dist/index.global.min.js.map +1 -1
  10. package/dist/index.mjs +2 -0
  11. package/dist/vue/index.mjs +15 -0
  12. package/package.json +4 -6
  13. package/dist/array/index.d.mts +0 -94
  14. package/dist/async/index.d.mts +0 -145
  15. package/dist/base64/index.d.mts +0 -106
  16. package/dist/color/index.d.mts +0 -89
  17. package/dist/crypto/index.d.mts +0 -327
  18. package/dist/date/index.d.mts +0 -190
  19. package/dist/dom/style.d.mts +0 -29
  20. package/dist/env/index.d.mts +0 -62
  21. package/dist/function/index.d.mts +0 -13
  22. package/dist/identity/index.d.mts +0 -77
  23. package/dist/internal/text.d.mts +0 -15
  24. package/dist/logger/index.d.mts +0 -90
  25. package/dist/number/index.d.mts +0 -89
  26. package/dist/object/index.d.mts +0 -114
  27. package/dist/storage/index.d.mts +0 -115
  28. package/dist/string/index.d.mts +0 -141
  29. package/dist/vue/breakpoints.d.mts +0 -21
  30. package/dist/vue/element-size.d.mts +0 -25
  31. package/dist/vue/emits.d.mts +0 -23
  32. package/dist/vue/event-listener.d.mts +0 -16
  33. package/dist/vue/expose.d.mts +0 -11
  34. package/dist/vue/func.d.mts +0 -13
  35. package/dist/vue/index.d.mts +0 -15
  36. package/dist/vue/install.d.mts +0 -50
  37. package/dist/vue/now.d.mts +0 -13
  38. package/dist/vue/props.d.mts +0 -22
  39. package/dist/vue/render.d.mts +0 -11
  40. package/dist/vue/resize-observer.d.mts +0 -15
  41. package/dist/vue/slots.d.mts +0 -18
  42. package/dist/vue/window-size.d.mts +0 -16
  43. package/dist/vue/with.d.mts +0 -11
  44. package/docs/API.md +0 -155
  45. package/docs/API.zh-CN.md +0 -154
  46. package/docs/DEVELOPMENT_RELEASE.zh-CN.md +0 -65
  47. package/docs/RUNTIME_CONTRACT.md +0 -44
@@ -1,327 +0,0 @@
1
- import { DecodedText } from "../internal/text.mjs";
2
- import "crypto-js/pad-ansix923.js";
3
- //#region src/crypto/index.d.ts
4
- /** AES 分组密码模式;与 .NET `CipherMode.CBC` 和 `CipherMode.ECB` 对应。 */
5
- export type AesCipherMode = "CBC" | "ECB";
6
- /** AES 填充模式;与 .NET `PaddingMode` 中可由 CryptoJS 互操作的成员对应。 */
7
- export type AesPaddingMode = "None" | "PKCS7" | "Zeros" | "ANSIX923" | "ISO10126";
8
- /** Web Crypto 导出的 PEM 公私钥对。 */
9
- export interface PemKeyPair {
10
- /** 未加密的 PKCS#8 PEM 私钥,包含标准 `PRIVATE KEY` 头尾和 64 字符换行。 */
11
- privateKey: string;
12
- /** SubjectPublicKeyInfo PEM 公钥,包含标准 `PUBLIC KEY` 头尾和 64 字符换行。 */
13
- publicKey: string;
14
- }
15
- /** 本模块支持的 Web Crypto 椭圆曲线。 */
16
- export type EcNamedCurve = "P-256" | "P-384" | "P-521";
17
- /**
18
- * 生成随机字节。
19
- *
20
- * @remarks 优先使用 Web Crypto;平台缺少安全随机能力时回退到 `Math.random()`。
21
- * @param length - 0 至 65,536 的安全整数。
22
- * @returns 新建的 `Uint8Array`。
23
- * @throws 参数非法时抛出 `RangeError`。
24
- */
25
- export declare function GenerateRandomBytes(length: number): Uint8Array;
26
- /**
27
- * 以不提前退出的方式比较两个字节数组。
28
- *
29
- * @remarks JavaScript 引擎不保证严格常量时间;该函数只避免显式短路,不能替代服务端
30
- * 密码学库提供的 timing-safe primitive。长度是否相同仍属于可观察信息。
31
- * @param left - 第一字节序列。
32
- * @param right - 第二字节序列。
33
- * @returns 长度和每个字节均相同时返回 `true`。
34
- */
35
- export declare function FixedTimeEquals(left: Uint8Array, right: Uint8Array): boolean;
36
- /**
37
- * 计算 MD5 摘要并返回小写十六进制文本。
38
- *
39
- * @remarks MD5 仅用于非安全的普通校验,不得用于密码、签名或抗碰撞场景。
40
- * @param value - UTF-8 文本。
41
- * @returns 32 字符小写十六进制摘要。
42
- */
43
- export declare function MD5Encrypt(value: string): string;
44
- /**
45
- * 计算 SHA-1 摘要并返回大写十六进制文本。
46
- *
47
- * @remarks SHA-1 仅用于非安全的普通校验,不得用于密码、签名或抗碰撞场景。
48
- * @param value - UTF-8 文本。
49
- * @returns 40 字符大写十六进制摘要。
50
- */
51
- export declare function SHA1Encrypt(value: string): string;
52
- /**
53
- * 计算 SHA-256 摘要。
54
- *
55
- * @remarks SHA-256 是快速摘要,不适合直接存储或校验密码。
56
- * @param value - UTF-8 字符串或原始字节。
57
- * @returns 32 字节摘要。
58
- * @throws 缺少 Web Crypto 或 Encoding API 时抛出 `Error`。
59
- */
60
- export declare function SHA256Bytes(value: string): Promise<Uint8Array>;
61
- /**
62
- * 计算 SHA-256 并格式化为十六进制。
63
- *
64
- * @param value - UTF-8 字符串或原始字节。
65
- * @returns 64 字符大写十六进制文本。
66
- * @throws 缺少 Web Crypto 或 Encoding API 时抛出 `Error`。
67
- */
68
- export declare function SHA256Encrypt(value: string): Promise<string>;
69
- /**
70
- * 计算 SHA-384 摘要。
71
- *
72
- * @param value - UTF-8 文本或原始字节。
73
- * @returns 48 字节摘要。
74
- */
75
- export declare function SHA384Bytes(value: string): Promise<Uint8Array>;
76
- /**
77
- * 计算 SHA-384 并格式化为十六进制文本。
78
- *
79
- * @param value - UTF-8 文本或原始字节。
80
- * @returns 96 个大写十六进制字符组成的摘要。
81
- */
82
- export declare function SHA384Encrypt(value: string): Promise<string>;
83
- /**
84
- * 计算 SHA-512 摘要。
85
- *
86
- * @param value - UTF-8 文本或原始字节。
87
- * @returns 64 字节摘要。
88
- */
89
- export declare function SHA512Bytes(value: string): Promise<Uint8Array>;
90
- /**
91
- * 计算 SHA-512 并格式化为十六进制文本。
92
- *
93
- * @param value - UTF-8 文本或原始字节。
94
- * @returns 128 个大写十六进制字符组成的摘要。
95
- */
96
- export declare function SHA512Encrypt(value: string): Promise<string>;
97
- /**
98
- * 使用 HMAC-SHA-256 认证文本,并返回十六进制标签。
99
- *
100
- * @param value - 要认证的 UTF-8 文本或原始字节。
101
- * @param key - 非空的 UTF-8 文本密钥或原始密钥字节。
102
- * @returns 64 个小写十六进制字符组成的认证标签。
103
- */
104
- export declare function HMACSHA256Encrypt(value: string, key: string): Promise<string>;
105
- /**
106
- * 使用 HMAC-SHA-384 认证文本或字节,并返回十六进制标签。
107
- *
108
- * @param value - 要认证的 UTF-8 文本或原始字节。
109
- * @param key - 非空的 UTF-8 文本密钥或原始密钥字节。
110
- * @returns 96 个小写十六进制字符组成的认证标签。
111
- */
112
- export declare function HMACSHA384Encrypt(value: string, key: string): Promise<string>;
113
- /**
114
- * 使用 HMAC-SHA-512 认证文本或字节,并返回十六进制标签。
115
- *
116
- * @param value - 要认证的 UTF-8 文本或原始字节。
117
- * @param key - 非空的 UTF-8 文本密钥或原始密钥字节。
118
- * @returns 128 个小写十六进制字符组成的认证标签。
119
- */
120
- export declare function HMACSHA512Encrypt(value: string, key: string): Promise<string>;
121
- /**
122
- * 使用 PBKDF2-HMAC-SHA-256 从密码派生密钥。
123
- *
124
- * @param password - 1 至 1,024 UTF-8 字节的密码。
125
- * @param salt - 至少 8 字节的盐。
126
- * @param iterations - 迭代次数,范围为 100,000 至 5,000,000。
127
- * @param outputLength - 输出长度,范围为 1 至 1,024 字节。
128
- * @returns 指定长度的派生密钥。
129
- * @throws 参数超过协议边界时抛出 `TypeError` 或 `RangeError`。
130
- */
131
- export declare function PBKDF2SHA256(password: string, salt: Uint8Array, iterations?: number, outputLength?: number): Promise<Uint8Array>;
132
- /**
133
- * 生成可持久化的随机盐 PBKDF2-HMAC-SHA-256 密码哈希。
134
- *
135
- * @param password - 1 至 1,024 UTF-8 字节的密码。
136
- * @param iterations - 迭代次数,范围为 100,000 至 5,000,000。
137
- * @returns 包含版本、迭代次数、16 字节随机盐和 32 字节派生密钥的自描述字符串。
138
- */
139
- export declare function HashPasswordPBKDF2SHA256(password: string, iterations?: number): Promise<string>;
140
- /**
141
- * 验证 {@link HashPasswordPBKDF2SHA256} 生成的密码哈希。
142
- *
143
- * @param password - 要验证的密码。
144
- * @param passwordHash - 自描述的 PBKDF2-HMAC-SHA-256 密码哈希。
145
- * @returns 格式有效且密码匹配时返回 `true`;格式无效或密码错误时返回 `false`。
146
- */
147
- export declare function VerifyPasswordPBKDF2SHA256(password: string, passwordHash: string): Promise<boolean>;
148
- /**
149
- * 使用 RFC 5869 HKDF-SHA-256 派生上下文隔离的密钥材料。
150
- *
151
- * @param inputKeyMaterial - 输入密钥材料,例如 ECDH 原始共享秘密。
152
- * @param salt - 可选盐;空值按 RFC 5869 的零盐语义处理。
153
- * @param info - 应用、协议和密钥用途上下文。
154
- * @param outputLength - 输出长度,范围为 1 至 8,160 字节。
155
- * @returns 与 `salt` 和 `info` 绑定的派生密钥。
156
- */
157
- export declare function HKDFSHA256(inputKeyMaterial: Uint8Array, salt?: Uint8Array, info?: Uint8Array, outputLength?: number): Promise<Uint8Array>;
158
- /**
159
- * 使用 AES-256 对 UTF-8 文本进行分组加密。
160
- *
161
- * @remarks 密钥和 IV 分别补字符 `f` 或截断到 32、16 个 UTF-16 Code Unit,与 .NET
162
- * `AESEncrypt` 保持一致。CBC/ECB 不提供完整性认证,密文可能被篡改。
163
- * @param dataStr - 要加密的 UTF-8 文本;空白文本返回 `null`。
164
- * @param key - 非空白的密钥文本。
165
- * @param vector - 非空白的初始化向量文本;ECB 模式仍要求传入该参数以对齐 .NET 签名。
166
- * @param cipherMode - AES 分组模式,默认 `CBC`。
167
- * @param paddingMode - AES 填充模式,默认 `PKCS7`。
168
- * @returns Base64 密文;输入、密钥或 IV 为空白时返回 `null`。
169
- * @throws 模式或填充不受支持时抛出 `RangeError`。
170
- */
171
- export declare function AESEncrypt(dataStr: string, key: string, vector: string, cipherMode?: AesCipherMode, paddingMode?: AesPaddingMode): string | null;
172
- /**
173
- * 使用 AES-256 解密 Base64 分组密文。
174
- *
175
- * @remarks 参数归一化规则与 {@link AESEncrypt} 以及 .NET `AESDecrypt` 相同。
176
- * @param dataStr - Base64 密文;空白文本返回 `null`。
177
- * @param key - 加密时使用的密钥文本。
178
- * @param vector - 加密时使用的初始化向量文本。
179
- * @param cipherMode - AES 分组模式,默认 `CBC`。
180
- * @param paddingMode - AES 填充模式,默认 `PKCS7`。
181
- * @returns 可直接使用或显式调用 `.parseJson<Value>()` 的原始 UTF-8 字符串;输入、密钥或 IV 为空白时返回 `null`。
182
- * @throws 模式、填充、Base64、密钥或密文无效时抛出错误。
183
- */
184
- export declare function AESDecrypt(dataStr: string, key: string, vector: string, cipherMode?: AesCipherMode, paddingMode?: AesPaddingMode): DecodedText | null;
185
- /**
186
- * 使用 SHA-256 归一化文本密钥,再以 AES-256-GCM 认证加密 UTF-8 文本。
187
- *
188
- * @remarks 输出与 .NET `AESEncryptAuthenticated` 的 v1 Base64 二进制载荷完全一致。
189
- * @param plaintext - 要加密的 UTF-8 文本。
190
- * @param key - 非空的 UTF-8 文本密钥;内部归一化为 32 字节 SHA-256 摘要。
191
- * @returns Base64 编码的 v1 AES-GCM 认证载荷。
192
- * @throws 密钥为空或运行时缺少 Web Crypto 时抛出错误。
193
- */
194
- export declare function AESEncryptAuthenticated(plaintext: string, key: string): Promise<string>;
195
- /**
196
- * 解密并认证 .NET `AESEncryptAuthenticated` 或 {@link AESEncryptAuthenticated} 生成的载荷。
197
- *
198
- * @param payload - Base64 编码的 v1 AES-GCM 二进制载荷。
199
- * @param key - 加密时使用的非空 UTF-8 文本密钥。
200
- * @returns 可直接使用或显式调用 `.parseJson<Value>()` 的原始 UTF-8 字符串。
201
- * @throws 载荷格式无效、密钥错误或认证失败时抛出错误。
202
- */
203
- export declare function AESDecryptAuthenticated(payload: string, key: string): Promise<DecodedText>;
204
- /**
205
- * 使用 PBKDF2-HMAC-SHA-256 派生密钥,再以 AES-256-GCM 认证加密 UTF-8 文本。
206
- *
207
- * @remarks 每次调用生成独立 16 字节盐与 12 字节 IV。输出是与 .NET `AESEncryptWithPassword`
208
- * 一致的 v1 自描述载荷,不应由业务代码手动拆分或修改。密码加密不替代密钥管理。
209
- * @param plaintext - 原始文本,不进行 JSON 推断;UTF-8 编码后最大 8 MiB。
210
- * @param password - 1 至 1024 UTF-8 字节的秘密口令。
211
- * @param iterations - PBKDF2 工作因子,默认 600,000。
212
- * @returns 认证密文字符串;相同输入每次产生不同结果。
213
- * @throws 口令非法时抛出 `TypeError` 或 `RangeError`;明文过大时抛出 `RangeError`;
214
- * 运行时缺少 Web Crypto 或 Encoding API 时抛出 `Error`。
215
- */
216
- export declare function AESEncryptWithPassword(plaintext: string, password: string, iterations?: number): Promise<string>;
217
- /**
218
- * 解密 {@link AESEncryptWithPassword} 生成的 v1 认证载荷。
219
- *
220
- * @param payload - 未修改的 v1 载荷,最大约 16 MiB 文本。
221
- * @param password - 加密时使用的口令。
222
- * @returns 可直接使用或显式调用 `.parseJson<Value>()` 的原始 UTF-8 字符串。
223
- * @throws 格式或字段非法时抛出 `TypeError`,载荷过大时抛出 `RangeError`,认证或密码
224
- * 失败及缺少平台能力时抛出 `Error`。
225
- */
226
- export declare function AESDecryptWithPassword(payload: string, password: string): Promise<DecodedText>;
227
- /**
228
- * 生成可供 RSA-OAEP/SHA-256 与 RSA-PSS/SHA-256 共用的 PEM 密钥对。
229
- *
230
- * @param modulusLength - RSA 模数位数,默认 2,048;必须是不小于 2,048 的 256 倍数。
231
- * @returns 未加密 PKCS#8 私钥和 SubjectPublicKeyInfo 公钥组成的 PEM 密钥对。
232
- * @throws 模数小于 2,048 或不是 256 的倍数时抛出 `RangeError`。
233
- */
234
- export declare function GenerateRSAKeyPair(modulusLength?: number): Promise<PemKeyPair>;
235
- /**
236
- * 使用 RSA-OAEP/SHA-256 公钥加密 UTF-8 文本。
237
- *
238
- * @param plaintext - 要加密的 UTF-8 文本;长度必须满足 RSA-OAEP 模数限制。
239
- * @param publicKeyPem - SubjectPublicKeyInfo PEM 公钥。
240
- * @returns Base64 编码的 RSA 密文。
241
- * @throws 公钥格式无效或明文超过 RSA-OAEP 容量时抛出错误。
242
- */
243
- export declare function RSAEncryptOAEP(plaintext: string, publicKeyPem: string): Promise<string>;
244
- /**
245
- * 使用 RSA-OAEP/SHA-256 私钥解密 Base64 密文。
246
- *
247
- * @param ciphertext - Base64 编码的 RSA 密文。
248
- * @param privateKeyPem - 未加密的 PKCS#8 PEM 私钥。
249
- * @returns 可直接使用或显式调用 `.parseJson<Value>()` 的原始 UTF-8 字符串。
250
- * @throws 私钥、Base64 或密文无效时抛出错误。
251
- */
252
- export declare function RSADecryptOAEP(ciphertext: string, privateKeyPem: string): Promise<DecodedText>;
253
- /**
254
- * 使用 RSA-PSS/SHA-256 私钥签名文本或字节。
255
- *
256
- * @param value - 要签名的 UTF-8 文本或原始字节。
257
- * @param privateKeyPem - 未加密的 PKCS#8 PEM 私钥。
258
- * @returns Base64 编码的 RSA-PSS 签名;盐长度固定为 32 字节。
259
- * @throws 私钥格式无效或签名失败时抛出错误。
260
- */
261
- export declare function RSASignPSS(value: string, privateKeyPem: string): Promise<string>;
262
- /**
263
- * 使用 RSA-PSS/SHA-256 公钥验证 Base64 签名。
264
- *
265
- * @param value - 签名时使用的 UTF-8 文本或原始字节。
266
- * @param signature - Base64 编码的 RSA-PSS 签名。
267
- * @param publicKeyPem - SubjectPublicKeyInfo PEM 公钥。
268
- * @returns 签名与内容、公钥匹配时返回 `true`。
269
- * @throws 公钥或 Base64 格式无效时抛出错误。
270
- */
271
- export declare function RSAVerifyPSS(value: string, signature: string, publicKeyPem: string): Promise<boolean>;
272
- /**
273
- * 生成 ECDSA PEM 签名密钥对。
274
- *
275
- * @param namedCurve - NIST 曲线:P-256、P-384 或 P-521。
276
- * @returns 未加密 PKCS#8 私钥和 SubjectPublicKeyInfo 公钥组成的 PEM 密钥对。
277
- */
278
- export declare function GenerateECDSAKeyPair(namedCurve?: EcNamedCurve): Promise<PemKeyPair>;
279
- /**
280
- * 使用 ECDSA 私钥签名文本或字节。
281
- *
282
- * @remarks Web Crypto 返回 IEEE P1363 固定字段拼接格式,与 .NET 实现一致。
283
- * @param value - 要签名的 UTF-8 文本或原始字节。
284
- * @param privateKeyPem - 未加密的 EC PKCS#8 PEM 私钥。
285
- * @param namedCurve - 私钥使用的 NIST 曲线。
286
- * @returns Base64 编码的 IEEE P1363 ECDSA 签名。
287
- */
288
- export declare function ECDSASign(value: string, privateKeyPem: string, namedCurve?: EcNamedCurve): Promise<string>;
289
- /**
290
- * 使用 ECDSA 公钥验证 Base64 签名。
291
- *
292
- * @param value - 签名时使用的 UTF-8 文本或原始字节。
293
- * @param signature - Base64 编码的 IEEE P1363 ECDSA 签名。
294
- * @param publicKeyPem - EC SubjectPublicKeyInfo PEM 公钥。
295
- * @param namedCurve - 公钥使用的 NIST 曲线。
296
- * @returns 签名与内容、公钥和曲线匹配时返回 `true`。
297
- */
298
- export declare function ECDSAVerify(value: string, signature: string, publicKeyPem: string, namedCurve?: EcNamedCurve): Promise<boolean>;
299
- /**
300
- * 生成 ECDH PEM 密钥协商密钥对。
301
- *
302
- * @param namedCurve - NIST 曲线:P-256、P-384 或 P-521。
303
- * @returns 未加密 PKCS#8 私钥和 SubjectPublicKeyInfo 公钥组成的 PEM 密钥对。
304
- */
305
- export declare function GenerateECDHKeyPair(namedCurve?: EcNamedCurve): Promise<PemKeyPair>;
306
- /**
307
- * 使用本方 ECDH 私钥与对方 ECDH 公钥派生共享秘密。
308
- *
309
- * @remarks 返回值仍需经过合适的 KDF 后才能作为对称密钥,不应直接长期存储。
310
- * @param privateKeyPem - 本方未加密的 EC PKCS#8 PEM 私钥。
311
- * @param publicKeyPem - 对方的 EC SubjectPublicKeyInfo PEM 公钥。
312
- * @param namedCurve - 双方密钥使用的 NIST 曲线。
313
- * @returns 曲线字段长度的原始 ECDH 共享秘密。
314
- */
315
- export declare function DeriveECDHSecret(privateKeyPem: string, publicKeyPem: string, namedCurve?: EcNamedCurve): Promise<Uint8Array>;
316
- /**
317
- * 使用 ECDH 后以 SHA-256 派生共享密钥。
318
- *
319
- * @remarks 相比直接使用原始共享秘密,此入口与 .NET `DeriveECDHKeySHA256` 一致并固定输出 32 字节。
320
- * @param privateKeyPem - 本方未加密的 EC PKCS#8 PEM 私钥。
321
- * @param publicKeyPem - 对方的 EC SubjectPublicKeyInfo PEM 公钥。
322
- * @param namedCurve - 双方密钥使用的 NIST 曲线。
323
- * @returns 32 字节共享密钥。
324
- */
325
- export declare function DeriveECDHKeySHA256(privateKeyPem: string, publicKeyPem: string, namedCurve?: EcNamedCurve): Promise<Uint8Array>;
326
- //#endregion
327
- //# sourceMappingURL=index.d.mts.map
@@ -1,190 +0,0 @@
1
- //#region src/date/index.d.ts
2
- /** 可转换为日期的输入;数字始终按 Unix 毫秒时间戳处理。 */
3
- export type DateInput = Date | number | string;
4
- /** {@link formatRelativeTime} 的语言与基准时间选项。 */
5
- export interface RelativeTimeOptions {
6
- /** `Intl.RelativeTimeFormat` 使用的语言;默认固定为 `zh-CN`。 */
7
- locale?: string | readonly string[];
8
- /** 比较基准,默认当前时间。 */
9
- now?: DateInput;
10
- /** 是否允许“昨天”“明天”等文本;默认 `auto`。 */
11
- numeric?: Intl.RelativeTimeFormatNumeric;
12
- /** 输出长度;默认 `long`。 */
13
- style?: Intl.RelativeTimeFormatStyle;
14
- }
15
- /**
16
- * 转换并克隆有效日期。
17
- *
18
- * @remarks 数字不进行秒/毫秒猜测;字符串遵循运行时 `Date` 解析规则,跨平台代码应传带显式时区的完整 ISO 8601。
19
- * @param value - Date、Unix 毫秒时间戳或运行时可解析字符串。
20
- * @returns 与输入不共享可变状态的新 Date。
21
- * @throws 输入无效时抛出 `TypeError`。
22
- */
23
- export declare function toDate(value: DateInput): Date;
24
- /**
25
- * 判断输入能否转换为有效日期。
26
- *
27
- * @param value - 任意待检查值。
28
- * @returns 仅 Date、数字或字符串且时间戳有限时返回 `true`。
29
- */
30
- export declare function isValidDate(value: unknown): value is DateInput;
31
- /**
32
- * 返回输入日期所在本地时区日期的 `00:00:00.000`,不修改输入。
33
- *
34
- * @param value - 有效日期输入。
35
- * @returns 新建的本地日开始时间。
36
- * @throws 输入无效时抛出 `TypeError`。
37
- */
38
- export declare function startOfDay(value: DateInput): Date;
39
- /**
40
- * 返回输入日期所在本地时区日期的 `23:59:59.999`,不修改输入。
41
- *
42
- * @param value - 有效日期输入。
43
- * @returns 新建的本地日结束时间。
44
- * @throws 输入无效时抛出 `TypeError`。
45
- */
46
- export declare function endOfDay(value: DateInput): Date;
47
- /**
48
- * 按本地日历增加整数天,不修改输入。
49
- *
50
- * @param value - 基准日期。
51
- * @param amount - 可为负数的安全整数日数。
52
- * @returns 本地日历运算后的新 Date;夏令时变化可能使实际毫秒差不等于 24 小时。
53
- * @throws 日期无效时抛出 `TypeError`;数量或结果非法时抛出 `RangeError`。
54
- */
55
- export declare function addDays(value: DateInput, amount: number): Date;
56
- /**
57
- * 按本地日历增加整数月,并把不存在的日期夹到目标月末。
58
- *
59
- * @example 1 月 31 日增加一个月会落在 2 月最后一天。
60
- * @param value - 基准日期。
61
- * @param amount - 可为负数的安全整数月数。
62
- * @returns 月份运算后的新 Date。
63
- * @throws 日期无效时抛出 `TypeError`;数量或结果非法时抛出 `RangeError`。
64
- */
65
- export declare function addMonths(value: DateInput, amount: number): Date;
66
- /**
67
- * 按本地日历增加整数年,并沿用 {@link addMonths} 的月末夹取规则。
68
- *
69
- * @param value - 基准日期。
70
- * @param amount - 可为负数的安全整数年数。
71
- * @returns 年份运算后的新 Date。
72
- * @throws 日期无效时抛出 `TypeError`;数量或结果非法时抛出 `RangeError`。
73
- */
74
- export declare function addYears(value: DateInput, amount: number): Date;
75
- /**
76
- * 判断两个输入是否属于同一本地日历日。
77
- *
78
- * @param left - 第一日期。
79
- * @param right - 第二日期。
80
- * @returns 本地年、月、日均相同时返回 `true`。
81
- * @throws 任一输入无效时抛出 `TypeError`。
82
- */
83
- export declare function isSameDay(left: DateInput, right: DateInput): boolean;
84
- /**
85
- * 判断时间是否晚于基准时间。
86
- *
87
- * @param value - 待比较时间。
88
- * @param now - 比较基准,默认调用时的当前时刻。
89
- * @returns `value` 严格晚于基准时返回 `true`。
90
- * @throws 任一输入无效时抛出 `TypeError`。
91
- */
92
- export declare function isFuture(value: DateInput, now?: DateInput): boolean;
93
- /**
94
- * 返回指定基准所在本地日历日的完整闭区间。
95
- *
96
- * @param value - 日期基准,默认调用时当前日期。
97
- * @returns 新建的本地日开始和结束时间二元组。
98
- * @throws 输入无效时抛出 `TypeError`。
99
- */
100
- export declare function getLocalDayBounds(value?: DateInput): [start: Date, end: Date];
101
- /**
102
- * 判断日期是否位于包含首尾的时间区间。
103
- *
104
- * @param value - 待检查日期。
105
- * @param start - 包含的起点。
106
- * @param end - 包含的终点。
107
- * @returns 时间戳位于闭区间内时返回 `true`。
108
- * @throws 无效日期抛出 `TypeError`;首尾反向时抛出 `RangeError`。
109
- */
110
- export declare function isWithinInterval(value: DateInput, start: DateInput, end: DateInput): boolean;
111
- /**
112
- * 使用 `Intl.RelativeTimeFormat` 生成人类可读相对时间。
113
- *
114
- * @remarks 秒、分钟、小时、天、周、月和年按固定时长阈值选择;这适合展示,不适合计费或日历运算。
115
- * @param value - 目标时间。
116
- * @param options - 语言、样式与比较基准。
117
- * @returns 由 `Intl.RelativeTimeFormat` 生成的本地化文本。
118
- * @throws 日期无效时抛出 `TypeError`;Locale 或 Intl 选项非法时抛出 `RangeError`。
119
- */
120
- export declare function formatRelativeTime(value: DateInput, options?: RelativeTimeOptions): string;
121
- /** 日期选择器单日期快捷项。 */
122
- export interface DateShortcut {
123
- /** 面向中文日期选择器的显示文本;调用方可直接用于菜单标签。 */
124
- text: string;
125
- /**
126
- * 计算快捷项对应日期。
127
- * @returns 每次调用时基于当前本地时间创建的新 `Date`,调用方可安全修改。
128
- */
129
- value: () => Date;
130
- }
131
- /** 日期选择器范围快捷项。 */
132
- export interface DateRangeShortcut {
133
- /** 面向中文日期范围选择器的显示文本;调用方可直接用于菜单标签。 */
134
- text: string;
135
- /**
136
- * 计算快捷项对应的本地日期范围。
137
- * @returns 每次调用时创建的新元组;起点为 `00:00:00.000`,终点为 `23:59:59.999`。
138
- */
139
- value: () => [start: Date, end: Date];
140
- }
141
- /**
142
- * 把日期转换为固定中文相对时间文本。
143
- *
144
- * @remarks 10 位以内数字按 Unix 秒处理,其余数字按毫秒处理;月份与年份按本地日历月差计算。
145
- * @param value - Date、时间戳、可解析字符串或空值。
146
- * @returns 例如“3分钟前”“半年后”;非法或空输入返回空字符串。
147
- */
148
- export declare function formatChineseRelativeTime(value: Date | number | string | null | undefined): string;
149
- /**
150
- * 创建从今天到前后一个月日期的完整本地日范围。
151
- *
152
- * @param towardFuture - `true` 返回今天至一个月后,默认返回一个月前至今天。
153
- * @returns 每次调用新建的本地日首尾边界。
154
- */
155
- export declare function createOneMonthRangeFromToday(towardFuture?: boolean): [start: Date, end: Date];
156
- /**
157
- * 判断日期是否晚于调用时的当前时刻。
158
- *
159
- * @param time - 待比较日期。
160
- * @returns 时间戳严格晚于 `Date.now()` 时返回 `true`。
161
- */
162
- export declare function isDateAfterNow(time: Date): boolean;
163
- /**
164
- * 根据浏览器本地小时返回固定中文问候语。
165
- *
166
- * @returns 与当前时段对应的中文欢迎文本。
167
- */
168
- export declare function getLocalTimeGreeting(): string;
169
- /**
170
- * 创建面向过去或未来的常用完整日期范围快捷项。
171
- *
172
- * @param towardFuture - `true` 创建未来范围,默认创建历史范围。
173
- * @returns 每次求值都会重新读取当前时间的范围快捷项。
174
- */
175
- export declare function createDateRangeShortcuts(towardFuture?: boolean): DateRangeShortcut[];
176
- /**
177
- * 创建面向过去或未来的常用单日期快捷项。
178
- *
179
- * @param towardFuture - `true` 创建未来日期,默认创建历史日期。
180
- * @returns 每次求值都会重新读取当前时间的单日期快捷项。
181
- */
182
- export declare function createDateShortcuts(towardFuture?: boolean): DateShortcut[];
183
- /**
184
- * 返回今天的本地零点。
185
- *
186
- * @returns 新建的 `00:00:00.000` Date。
187
- */
188
- export declare function getStartOfToday(): Date;
189
- //#endregion
190
- //# sourceMappingURL=index.d.mts.map
@@ -1,29 +0,0 @@
1
- //#region src/dom/style.d.ts
2
- /** 可序列化为内联 CSS 的单个值。 */
3
- export type StyleValue = number | string | null | undefined;
4
- /** camelCase、kebab-case 或 CSS 自定义属性组成的只读样式对象。 */
5
- export type StyleObject = Readonly<Record<string, StyleValue>>;
6
- /** 字符串、样式对象、嵌套数组或空值。 */
7
- export type StyleInput = string | StyleObject | readonly StyleInput[] | null | undefined;
8
- /**
9
- * 为数值或纯数字字符串添加 CSS 单位。
10
- *
11
- * @param value - 数字、数字字符串或已有单位的 CSS 值;空值返回空字符串。
12
- * @param unit - 非零数字使用的单位,默认 `px`。
13
- * @returns 零统一返回 `"0"`;非数字字符串保持原样。
14
- * @throws `RangeError` 当数字非有限或单位为空。
15
- */
16
- export declare function addCssUnit(value?: string | number | null, unit?: string): string;
17
- /**
18
- * 将样式字符串、对象或嵌套数组序列化为内联 CSS。
19
- *
20
- * @remarks 本函数只负责结构转换,不是 CSS 安全清洗器。不可信值必须由调用方按照
21
- * 实际渲染上下文验证,尤其不能允许用户控制属性名、`url()` 或自定义属性内容。
22
- * 数字不会自动附加单位;需要长度单位时应先调用 {@link addCssUnit}。
23
- * @param styles - 可嵌套样式输入;后出现的声明由 CSS 层叠规则覆盖先前声明。
24
- * @returns 以分号结束、以空格分隔的 CSS 声明字符串。
25
- * @throws `RangeError` 当对象中包含 `NaN` 或无穷数字。
26
- */
27
- export declare function serializeStyle(styles: StyleInput): string;
28
- //#endregion
29
- //# sourceMappingURL=style.d.mts.map
@@ -1,62 +0,0 @@
1
- //#region src/env/index.d.ts
2
- /** 可识别的主要 JavaScript 运行环境。 */
3
- export type RuntimeKind = "browser" | "node" | "unknown" | "worker";
4
- /**
5
- * 判断当前运行时是否具有浏览器 `window` 与 `document`。
6
- *
7
- * @returns 两项能力均存在时返回 `true`;不读取 DOM 内容。
8
- */
9
- export declare function isBrowser(): boolean;
10
- /**
11
- * 判断当前运行时是否像 Web Worker 且不是 Window。
12
- *
13
- * @remarks 经典、模块、Shared 与 Service Worker 全局通常都暴露 `importScripts`;模块
14
- * Worker 中调用它可能抛错,本检测只检查能力存在,不会执行。
15
- * @returns 具有 `importScripts` 且不是浏览器 Window 时返回 `true`。
16
- */
17
- export declare function isWebWorker(): boolean;
18
- /**
19
- * 判断当前运行时是否暴露 Node.js 版本标记。
20
- *
21
- * @returns `process.versions.node` 为字符串时返回 `true`。
22
- */
23
- export declare function isNode(): boolean;
24
- /**
25
- * 判断当前运行时是否暴露 uni-app 的 `uni` 全局对象。
26
- *
27
- * @returns 全局属性存在且不为 `undefined` 时返回 `true`;不调用任何平台 API。
28
- */
29
- export declare function isUniApp(): boolean;
30
- /**
31
- * 判断当前运行时是否具备本库完整加密 API 所需的 Web Crypto 能力。
32
- *
33
- * @remarks 普通随机数、随机字符串和 UUID 在缺少 Web Crypto 时可以回退到 `Math.random()`,但本函数
34
- * 仍会返回 `false`,因为摘要、PBKDF2、AES-GCM、RSA 与 ECC 需要完整的 Web Crypto 能力。
35
- * @returns 同时提供本库 Web Crypto 功能所需方法时返回 `true`。
36
- */
37
- export declare function hasWebCrypto(): boolean;
38
- /**
39
- * 返回当前主要运行环境。
40
- *
41
- * @remarks 在使用 DOM 模拟器的 Node.js 进程中优先报告 `browser`,因为可观察能力比宿主进程名称更有用。
42
- * @returns `browser`、`worker`、`node` 或无法识别时的 `unknown`。
43
- */
44
- export declare function detectRuntime(): RuntimeKind;
45
- /**
46
- * 基于 User-Agent 启发式判断手机设备。
47
- *
48
- * @param userAgent - 默认读取当前 `navigator.userAgent`;平台对象不存在时使用空字符串。
49
- * @remarks User-Agent 可以被伪造,不得用于鉴权、安全策略或永久功能分流。
50
- * @returns 命中手机特征时返回 `true`。
51
- */
52
- export declare function isMobileUserAgent(userAgent?: string): boolean;
53
- /**
54
- * 基于 User-Agent 与触点数量启发式判断平板设备。
55
- *
56
- * @param userAgent - 默认读取当前 User-Agent。
57
- * @param maxTouchPoints - 用于识别桌面 User-Agent 模式下的 iPadOS,默认读取当前触点数。
58
- * @returns 命中平板特征时返回 `true`。
59
- */
60
- export declare function isTabletUserAgent(userAgent?: string, maxTouchPoints?: number): boolean;
61
- //#endregion
62
- //# sourceMappingURL=index.d.mts.map
@@ -1,13 +0,0 @@
1
- //#region src/function/index.d.ts
2
- /**
3
- * 创建最多执行一次并缓存首次结果的函数。
4
- *
5
- * @remarks 首次成功返回后,后续调用返回同一结果;Promise 会保持引用不变。首次同步抛错时缓存错误,后续调用重新抛出同一错误。
6
- * 包装函数使用首次调用时的参数和 `this`,之后传入的参数不会再次执行原函数。
7
- * @param callback - 只允许执行一次的函数。
8
- * @returns 保持原参数与返回类型的包装函数。
9
- * @throws `TypeError` 当 `callback` 不是函数。
10
- */
11
- export declare function once<This, Arguments extends unknown[], Result>(callback: (this: This, ...arguments_: Arguments) => Result): (this: This, ...arguments_: Arguments) => Result;
12
- //#endregion
13
- //# sourceMappingURL=index.d.mts.map