@fast-china/utils 2.1.5 → 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 (55) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +14 -4
  3. package/README.zh.md +14 -4
  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 -26
  9. package/dist/index.global.min.js +1 -1
  10. package/dist/index.global.min.js.map +1 -1
  11. package/dist/index.mjs +9 -1
  12. package/dist/internal/runtime.mjs.map +1 -1
  13. package/dist/vue/breakpoints.mjs +46 -0
  14. package/dist/vue/breakpoints.mjs.map +1 -0
  15. package/dist/vue/element-size.mjs +33 -0
  16. package/dist/vue/element-size.mjs.map +1 -0
  17. package/dist/vue/event-listener.mjs +30 -0
  18. package/dist/vue/event-listener.mjs.map +1 -0
  19. package/dist/vue/index.mjs +15 -0
  20. package/dist/vue/now.mjs +29 -0
  21. package/dist/vue/now.mjs.map +1 -0
  22. package/dist/vue/resize-observer.mjs +31 -0
  23. package/dist/vue/resize-observer.mjs.map +1 -0
  24. package/dist/vue/window-size.mjs +32 -0
  25. package/dist/vue/window-size.mjs.map +1 -0
  26. package/package.json +4 -6
  27. package/dist/array/index.d.mts +0 -94
  28. package/dist/async/index.d.mts +0 -145
  29. package/dist/base64/index.d.mts +0 -106
  30. package/dist/color/index.d.mts +0 -89
  31. package/dist/crypto/index.d.mts +0 -327
  32. package/dist/date/index.d.mts +0 -190
  33. package/dist/dom/style.d.mts +0 -29
  34. package/dist/env/index.d.mts +0 -62
  35. package/dist/function/index.d.mts +0 -13
  36. package/dist/identity/index.d.mts +0 -77
  37. package/dist/internal/text.d.mts +0 -15
  38. package/dist/logger/index.d.mts +0 -90
  39. package/dist/number/index.d.mts +0 -89
  40. package/dist/object/index.d.mts +0 -114
  41. package/dist/storage/index.d.mts +0 -115
  42. package/dist/string/index.d.mts +0 -141
  43. package/dist/vue/emits.d.mts +0 -23
  44. package/dist/vue/expose.d.mts +0 -11
  45. package/dist/vue/func.d.mts +0 -13
  46. package/dist/vue/index.d.mts +0 -9
  47. package/dist/vue/install.d.mts +0 -50
  48. package/dist/vue/props.d.mts +0 -22
  49. package/dist/vue/render.d.mts +0 -11
  50. package/dist/vue/slots.d.mts +0 -18
  51. package/dist/vue/with.d.mts +0 -11
  52. package/docs/API.md +0 -155
  53. package/docs/API.zh-CN.md +0 -154
  54. package/docs/DEVELOPMENT_RELEASE.zh-CN.md +0 -65
  55. package/docs/RUNTIME_CONTRACT.md +0 -42
package/dist/index.d.mts CHANGED
@@ -1,26 +1,1918 @@
1
- import { KeySelector, allEqualBy, chunk, difference, groupBy, hasDuplicatesBy, intersection, partition, removeNullishValues, symmetricDifference, unique, uniqueBy } from "./array/index.mjs";
2
- import { AbortOptions, ConcurrentMapOptions, DebouncedFunction, RetryContext, RetryOptions, ThrottledFunction, TimeoutOptions, debounce, mapConcurrent, retry, sleep, throttle, withTimeout } from "./async/index.mjs";
3
- import { DecodedText } from "./internal/text.mjs";
4
- import { decodeBase64, decodeBase64Bytes, decodeBase64Url, decodeBase64UrlBytes, decodeLatin1Base64, decodeSecureBase64, encodeBase64, encodeBase64Bytes, encodeBase64Url, encodeBase64UrlBytes, encodeLatin1Base64, encodeSecureBase64 } from "./base64/index.mjs";
5
- import { RgbColor, RgbaColor, contrastRatio, formatHexColor, mixHexColorWithBlack, mixHexColorWithWhite, mixHexColors, parseHexColor, pickHigherContrastColor, relativeLuminance } from "./color/index.mjs";
6
- import { AESDecrypt, AESDecryptAuthenticated, AESDecryptWithPassword, AESEncrypt, AESEncryptAuthenticated, AESEncryptWithPassword, AesCipherMode, AesPaddingMode, DeriveECDHKeySHA256, DeriveECDHSecret, ECDSASign, ECDSAVerify, EcNamedCurve, FixedTimeEquals, GenerateECDHKeyPair, GenerateECDSAKeyPair, GenerateRSAKeyPair, GenerateRandomBytes, HKDFSHA256, HMACSHA256Encrypt, HMACSHA384Encrypt, HMACSHA512Encrypt, HashPasswordPBKDF2SHA256, MD5Encrypt, PBKDF2SHA256, PemKeyPair, RSADecryptOAEP, RSAEncryptOAEP, RSASignPSS, RSAVerifyPSS, SHA1Encrypt, SHA256Bytes, SHA256Encrypt, SHA384Bytes, SHA384Encrypt, SHA512Bytes, SHA512Encrypt, VerifyPasswordPBKDF2SHA256 } from "./crypto/index.mjs";
7
- import { DateInput, DateRangeShortcut, DateShortcut, RelativeTimeOptions, addDays, addMonths, addYears, createDateRangeShortcuts, createDateShortcuts, createOneMonthRangeFromToday, endOfDay, formatChineseRelativeTime, formatRelativeTime, getLocalDayBounds, getLocalTimeGreeting, getStartOfToday, isDateAfterNow, isFuture, isSameDay, isValidDate, isWithinInterval, startOfDay, toDate } from "./date/index.mjs";
8
- import { StyleInput, StyleObject, StyleValue, addCssUnit, serializeStyle } from "./dom/style.mjs";
9
- import { RuntimeKind, detectRuntime, hasWebCrypto, isBrowser, isMobileUserAgent, isNode, isTabletUserAgent, isUniApp, isWebWorker } from "./env/index.mjs";
10
- import { once } from "./function/index.mjs";
11
- import { InstallationIdentity, InstallationIdentityConfiguration, configureInstallationIdentity, getOrCreateInstallationId, installationIdentity } from "./identity/index.mjs";
12
- import { LogLevel, Logger, LoggerOptions, LoggerSink, configureLogger, createLogger, logger } from "./logger/index.mjs";
13
- import { FormatBytesOptions, average, clamp, formatBytes, inRange, lerp, randomInt, roundTo, sum } from "./number/index.mjs";
14
- import { QueryPrimitive, QueryStringOptions, QueryValue, cloneDeep, hasOwn, isEqual, isPlainObject, mapValues, omit, omitBy, pick, pickBy, shallowEqual, toQueryString } from "./object/index.mjs";
15
- import { Local, Session, StorageArea, StorageCodec, StorageConfiguration, StorageReadOptions, StorageWriteOptions, base64StorageCodec, configureStorage, isStorageConfigured } from "./storage/index.mjs";
16
- import { ParsedQueryParameters, StringLocale, camelCase, copy, decodeURIComponentRepeatedly, escapeHtml, generateUuidV4, isUuidV4, isValidJson, kebabCase, lowerFirst, normalizeWhitespace, parseQueryString, pascalCase, randomString, splitWords, truncateGraphemes, upperFirst } from "./string/index.mjs";
17
- import { EmitHandlers, useEmits } from "./vue/emits.mjs";
18
- import { useExpose } from "./vue/expose.mjs";
19
- import { AwaitableFunction, callOptionalFunction } from "./vue/func.mjs";
20
- import { Installable, TSXWithInstall, VueInstallValue, withInstall, withInstallDirective, withNoopInstall } from "./vue/install.mjs";
21
- import { definePropType, useProps } from "./vue/props.mjs";
22
- import { useRender } from "./vue/render.mjs";
23
- import { TypedSlots, TypedSlotsDeclaration, makeSlots } from "./vue/slots.mjs";
24
- import { withDefineType } from "./vue/with.mjs";
25
- import "./vue/index.mjs";
26
- export { AESDecrypt, AESDecryptAuthenticated, AESDecryptWithPassword, AESEncrypt, AESEncryptAuthenticated, AESEncryptWithPassword, AbortOptions, AesCipherMode, AesPaddingMode, AwaitableFunction, ConcurrentMapOptions, DateInput, DateRangeShortcut, DateShortcut, DebouncedFunction, type DecodedText, DeriveECDHKeySHA256, DeriveECDHSecret, ECDSASign, ECDSAVerify, EcNamedCurve, EmitHandlers, FixedTimeEquals, FormatBytesOptions, GenerateECDHKeyPair, GenerateECDSAKeyPair, GenerateRSAKeyPair, GenerateRandomBytes, HKDFSHA256, HMACSHA256Encrypt, HMACSHA384Encrypt, HMACSHA512Encrypt, HashPasswordPBKDF2SHA256, Installable, InstallationIdentity, InstallationIdentityConfiguration, KeySelector, Local, LogLevel, Logger, LoggerOptions, LoggerSink, MD5Encrypt, PBKDF2SHA256, ParsedQueryParameters, PemKeyPair, QueryPrimitive, QueryStringOptions, QueryValue, RSADecryptOAEP, RSAEncryptOAEP, RSASignPSS, RSAVerifyPSS, RelativeTimeOptions, RetryContext, RetryOptions, RgbColor, RgbaColor, RuntimeKind, SHA1Encrypt, SHA256Bytes, SHA256Encrypt, SHA384Bytes, SHA384Encrypt, SHA512Bytes, SHA512Encrypt, Session, StorageArea, StorageCodec, StorageConfiguration, StorageReadOptions, StorageWriteOptions, StringLocale, StyleInput, StyleObject, StyleValue, TSXWithInstall, ThrottledFunction, TimeoutOptions, TypedSlots, TypedSlotsDeclaration, VerifyPasswordPBKDF2SHA256, VueInstallValue, addCssUnit, addDays, addMonths, addYears, allEqualBy, average, base64StorageCodec, callOptionalFunction, camelCase, chunk, clamp, cloneDeep, configureInstallationIdentity, configureLogger, configureStorage, contrastRatio, copy, createDateRangeShortcuts, createDateShortcuts, createLogger, createOneMonthRangeFromToday, debounce, decodeBase64, decodeBase64Bytes, decodeBase64Url, decodeBase64UrlBytes, decodeLatin1Base64, decodeSecureBase64, decodeURIComponentRepeatedly, definePropType, detectRuntime, difference, encodeBase64, encodeBase64Bytes, encodeBase64Url, encodeBase64UrlBytes, encodeLatin1Base64, encodeSecureBase64, endOfDay, escapeHtml, formatBytes, formatChineseRelativeTime, formatHexColor, formatRelativeTime, generateUuidV4, getLocalDayBounds, getLocalTimeGreeting, getOrCreateInstallationId, getStartOfToday, groupBy, hasDuplicatesBy, hasOwn, hasWebCrypto, inRange, installationIdentity, intersection, isBrowser, isDateAfterNow, isEqual, isFuture, isMobileUserAgent, isNode, isPlainObject, isSameDay, isStorageConfigured, isTabletUserAgent, isUniApp, isUuidV4, isValidDate, isValidJson, isWebWorker, isWithinInterval, kebabCase, lerp, logger, lowerFirst, makeSlots, mapConcurrent, mapValues, mixHexColorWithBlack, mixHexColorWithWhite, mixHexColors, normalizeWhitespace, omit, omitBy, once, parseHexColor, parseQueryString, partition, pascalCase, pick, pickBy, pickHigherContrastColor, randomInt, randomString, relativeLuminance, removeNullishValues, retry, roundTo, serializeStyle, shallowEqual, sleep, splitWords, startOfDay, sum, symmetricDifference, throttle, toDate, toQueryString, truncateGraphemes, unique, uniqueBy, upperFirst, useEmits, useExpose, useProps, useRender, withDefineType, withInstall, withInstallDirective, withNoopInstall, withTimeout };
1
+ import { App, ComputedRef, MaybeRefOrGetter, PropType, ShallowRef, SlotsType, VNode } from "vue";
2
+ //#region src/array/index.d.ts
3
+ /** 从数组项中提取可比较键的函数。 */
4
+ export type KeySelector<Item, Key> = (item: Item, index: number) => Key;
5
+ /**
6
+ * 将只读数组按固定大小分组。
7
+ *
8
+ * @typeParam Item - 数组项类型。
9
+ * @param items - 不会被修改的输入数组。
10
+ * @param size - 每组最多包含的项目数,必须是正安全整数。
11
+ * @returns 新建的二维数组;最后一组可能小于 `size`。
12
+ * @throws `RangeError` 当 `size` 不是正安全整数。
13
+ */
14
+ export declare function chunk<Item>(items: readonly Item[], size: number): Item[][];
15
+ /**
16
+ * 删除数组中的 `null` 与 `undefined`,保留 `false`、`0` 和空字符串。
17
+ *
18
+ * @param items - 可包含空值的只读数组。
19
+ * @returns 保持原顺序的新数组。
20
+ */
21
+ export declare function removeNullishValues<Item>(items: readonly (Item | null | undefined)[]): Item[];
22
+ /**
23
+ * 使用 JavaScript `Set` 的 SameValueZero 语义去重。
24
+ *
25
+ * @param items - 不会被修改的输入数组。
26
+ * @returns 保留每个值首次出现顺序的新数组;稀疏数组空位被忽略。
27
+ */
28
+ export declare function unique<Item>(items: readonly Item[]): Item[];
29
+ /**
30
+ * 按选择器返回的键去重。
31
+ *
32
+ * @param items - 不会被修改的输入数组。
33
+ * @param selectKey - 接收项目与索引并返回去重键的函数。
34
+ * @returns 保留每个键首次出现项目的新数组;稀疏数组空位被忽略。
35
+ */
36
+ export declare function uniqueBy<Item, Key>(items: readonly Item[], selectKey: KeySelector<Item, Key>): Item[];
37
+ /**
38
+ * 按选择器结果分组。
39
+ *
40
+ * @param items - 不会被修改的输入数组。
41
+ * @param selectKey - 返回任意 `Map` 键的函数。
42
+ * @returns 按键首次出现顺序排列的 `Map`;每个分组保持输入顺序,稀疏空位被忽略。
43
+ */
44
+ export declare function groupBy<Item, Key>(items: readonly Item[], selectKey: KeySelector<Item, Key>): Map<Key, Item[]>;
45
+ /**
46
+ * 按谓词把数组拆分为匹配项和非匹配项。
47
+ *
48
+ * @param items - 不会被修改的输入数组。
49
+ * @param predicate - 接收项目与索引的判断函数。
50
+ * @returns 二元组:第一项匹配谓词,第二项不匹配;两组都保持原顺序并忽略稀疏空位。
51
+ */
52
+ export declare function partition<Item>(items: readonly Item[], predicate: (item: Item, index: number) => boolean): [matched: Item[], unmatched: Item[]];
53
+ /**
54
+ * 返回只出现在左侧数组中的不同值。
55
+ *
56
+ * @param left - 主输入数组。
57
+ * @param right - 需要排除的值。
58
+ * @returns 保留左侧首次出现顺序的去重结果;两侧稀疏空位都被忽略。
59
+ */
60
+ export declare function difference<Item>(left: readonly Item[], right: readonly Item[]): Item[];
61
+ /**
62
+ * 返回两个数组共有的不同值。
63
+ *
64
+ * @param left - 决定结果顺序的数组。
65
+ * @param right - 用于成员判断的数组。
66
+ * @returns 保留左侧首次出现顺序的去重结果;两侧稀疏空位都被忽略。
67
+ */
68
+ export declare function intersection<Item>(left: readonly Item[], right: readonly Item[]): Item[];
69
+ /**
70
+ * 返回只存在于其中一个数组的不同值。
71
+ *
72
+ * @param left - 决定左侧结果顺序的数组。
73
+ * @param right - 决定右侧结果顺序的数组。
74
+ * @returns 先按左侧、再按右侧首次出现顺序排列的对称差集;使用 SameValueZero 比较并忽略稀疏空位。
75
+ */
76
+ export declare function symmetricDifference<Item>(left: readonly Item[], right: readonly Item[]): Item[];
77
+ /**
78
+ * 判断选择器产生的键是否重复。
79
+ *
80
+ * @param items - 不会被修改的输入数组。
81
+ * @param selectKey - 返回比较键的函数;键使用 SameValueZero 语义比较。
82
+ * @returns 存在至少一个重复键时返回 `true`。
83
+ */
84
+ export declare function hasDuplicatesBy<Item, Key>(items: readonly Item[], selectKey: KeySelector<Item, Key>): boolean;
85
+ /**
86
+ * 判断所有项目是否具有相同的选择器结果。
87
+ *
88
+ * @remarks 空数组、只有稀疏空位的数组和单项数组按数学惯例返回 `true`;空位不会调用选择器。
89
+ * @param items - 不会被修改的输入数组。
90
+ * @param selectKey - 返回比较键的函数。
91
+ * @returns 所有键都满足 SameValueZero 相等时返回 `true`。
92
+ */
93
+ export declare function allEqualBy<Item, Key>(items: readonly Item[], selectKey: KeySelector<Item, Key>): boolean;
94
+ //#endregion
95
+ //#region src/async/index.d.ts
96
+ /** 统一同步返回值与 PromiseLike 返回值的内部回调签名。 */
97
+ type AsyncCallback<Arguments extends unknown[], Result> = (...arguments_: Arguments) => Result | PromiseLike<Result>;
98
+ /** 可接收取消信号的通用选项。 */
99
+ export interface AbortOptions {
100
+ /** 已取消时立即失败;运行期间取消时停止等待并拒绝 Promise。 */
101
+ signal?: AbortSignal;
102
+ }
103
+ /** {@link withTimeout} 的行为选项。 */
104
+ export interface TimeoutOptions extends AbortOptions {
105
+ /** 超时时使用的开发者消息。 */
106
+ message?: string;
107
+ }
108
+ /** 每次重试操作接收的上下文。 */
109
+ export interface RetryContext {
110
+ /** 从 1 开始的当前尝试次数。 */
111
+ attempt: number;
112
+ /** 调用方提供的取消信号。 */
113
+ signal?: AbortSignal;
114
+ }
115
+ /** {@link retry} 的策略选项。 */
116
+ export interface RetryOptions extends AbortOptions {
117
+ /** 最大尝试次数,包含首次调用;默认 `3`。 */
118
+ attempts?: number;
119
+ /** 首次重试前的等待毫秒数,最大 2,147,483,647;默认 `200`。 */
120
+ delayMs?: number;
121
+ /** 每次失败后的退避倍数,必须不小于 1;默认 `2`。 */
122
+ factor?: number;
123
+ /** 单次等待上限,最大 2,147,483,647;默认 `30_000` 毫秒。 */
124
+ maxDelayMs?: number;
125
+ /**
126
+ * 决定当前失败后是否继续下一次尝试;默认重试所有尚未到达上限的错误。
127
+ * @param error - 当前操作抛出或拒绝的原始值。
128
+ * @param context - 当前尝试次数和调用方取消信号。
129
+ * @returns `false` 时立即原样抛出当前错误;支持同步值或 PromiseLike。
130
+ */
131
+ shouldRetry?: (error: unknown, context: RetryContext) => boolean | PromiseLike<boolean>;
132
+ }
133
+ /** {@link mapConcurrent} 的执行选项。 */
134
+ export interface ConcurrentMapOptions {
135
+ /** 已取消时停止调度新任务;已经开始的映射器需要自行响应同一信号。 */
136
+ signal?: AbortSignal;
137
+ }
138
+ /** Promise 感知的防抖函数。 */
139
+ export interface DebouncedFunction<Arguments extends unknown[], Result> {
140
+ /**
141
+ * 调度一次调用;同一等待窗口内的调用共享最后一组参数对应的结果。
142
+ * @param arguments_ - 传给原始回调的参数;后续调用会覆盖尚未执行批次保存的参数。
143
+ * @returns 当前批次的独立 Promise,最终与共享回调结果保持相同状态。
144
+ */
145
+ (...arguments_: Arguments): Promise<Result>;
146
+ /**
147
+ * 取消尚未执行的批次,并拒绝该批次的所有 Promise。
148
+ * @param reason - 可选拒绝原因;省略时使用内部取消错误。
149
+ */
150
+ cancel: (reason?: unknown) => void;
151
+ /**
152
+ * 立即执行待处理批次,不创建第二次回调执行。
153
+ * @returns 待处理批次的共享执行 Promise;没有批次时返回 `undefined`。
154
+ */
155
+ flush: () => Promise<Result> | undefined;
156
+ /** @returns 当前存在尚未开始的批次时返回 `true`;正在执行但没有等待批次时返回 `false`。 */
157
+ pending: () => boolean;
158
+ }
159
+ /** Promise 感知的前缘节流函数。 */
160
+ export interface ThrottledFunction<Arguments extends unknown[], Result> {
161
+ /**
162
+ * 在空闲时立即调用原始回调;执行期和冷却期内的调用共享首次调用的 Promise。
163
+ * @param arguments_ - 仅窗口内首次调用的参数会传给原始回调。
164
+ * @returns 当前执行窗口共享的 Promise。
165
+ */
166
+ (...arguments_: Arguments): Promise<Result>;
167
+ /** 提前结束冷却期;已经开始的操作不会被取消,结束前仍禁止并发重入。 */
168
+ cancel: () => void;
169
+ /** @returns 原始回调正在执行或计时器仍处于冷却期时返回 `true`。 */
170
+ pending: () => boolean;
171
+ }
172
+ /**
173
+ * 等待指定时间,并支持 `AbortSignal`。
174
+ *
175
+ * @param milliseconds - 0 至 2,147,483,647 的有限毫秒数。
176
+ * @param options - 可选取消信号。
177
+ * @returns 到期后完成的 Promise。
178
+ * @throws 取消时抛出名称为 `AbortError` 的 `Error`;参数非法时抛出 `RangeError`。
179
+ */
180
+ export declare function sleep(milliseconds: number, options?: AbortOptions): Promise<void>;
181
+ /**
182
+ * 为 Promise 增加等待上限。
183
+ *
184
+ * @remarks 超时或取消只停止等待,不能自动取消底层操作;需要真正取消时应同时把
185
+ * 同一个 `AbortSignal` 传给底层 API。
186
+ * @param promise - 需要等待的 Promise 或 PromiseLike。
187
+ * @param timeoutMs - 0 至 2,147,483,647 的有限等待时间。
188
+ * @param options - 取消信号与自定义消息。
189
+ * @returns 底层 Promise 的结果。
190
+ * @throws 超时抛出 `Error`,取消时抛出名称为 `AbortError` 的 `Error`;等待时间非法时抛出 `RangeError`。
191
+ */
192
+ export declare function withTimeout<Result>(promise: PromiseLike<Result>, timeoutMs: number, options?: TimeoutOptions): Promise<Result>;
193
+ /**
194
+ * 使用有上限的指数退避重试操作。
195
+ *
196
+ * @typeParam Result - 操作结果类型。
197
+ * @param operation - 每次尝试都会调用的函数;`attempt` 从 1 开始。
198
+ * @param options - 尝试次数、退避和取消策略。
199
+ * @returns 首次成功结果。
200
+ * @throws 最后一次操作错误、`shouldRetry` 错误或名称为 `AbortError` 的取消错误;策略参数非法时抛出 `RangeError`。
201
+ */
202
+ export declare function retry<Result>(operation: (context: RetryContext) => Result | PromiseLike<Result>, options?: RetryOptions): Promise<Awaited<Result>>;
203
+ /**
204
+ * 以固定并发度映射数组,并保持结果顺序。
205
+ *
206
+ * @remarks 任一映射失败后不会再调度新项目,但已经开始的映射无法自动取消;映射器
207
+ * 应使用传入的 `signal` 取消底层工作。
208
+ * @param items - 不会被修改的输入数组。
209
+ * @param concurrency - 同时运行的最大任务数,必须为正安全整数。
210
+ * @param mapper - 接收项目、索引和取消信号的映射函数。
211
+ * @param options - 可选取消信号。
212
+ * @returns 与输入长度和顺序一致的结果数组;稀疏空位保持为空位且不会调用映射器。
213
+ * @throws `RangeError` 当 `concurrency` 不是正安全整数;取消时抛出名称为 `AbortError` 的 `Error`。
214
+ */
215
+ export declare function mapConcurrent<Item, Result>(items: readonly Item[], concurrency: number, mapper: (item: Item, index: number, signal: AbortSignal | undefined) => Result | PromiseLike<Result>, options?: ConcurrentMapOptions): Promise<Awaited<Result>[]>;
216
+ /**
217
+ * 创建 Promise 感知的防抖函数。
218
+ *
219
+ * @remarks 同一窗口内的所有调用都会等待最后一组参数对应的执行结果;回调错误会原样
220
+ * 拒绝该批次的全部调用,不会留下永久 pending 的 Promise。
221
+ * @param callback - 同步或异步回调。
222
+ * @param delayMs - 0 至 2,147,483,647 的有限等待时间,默认 300 毫秒。
223
+ * @returns 具有取消、立即执行和状态方法的防抖函数。
224
+ * @throws `RangeError` 当延迟不在平台计时器支持范围内。
225
+ */
226
+ export declare function debounce<Arguments extends unknown[], Result>(callback: AsyncCallback<Arguments, Result>, delayMs?: number): DebouncedFunction<Arguments, Awaited<Result>>;
227
+ /**
228
+ * 创建 Promise 感知的前缘节流函数。
229
+ *
230
+ * @remarks 窗口内的调用共享首次调用结果。若回调执行时间超过窗口,后续调用仍会等待
231
+ * 当前回调,避免异步操作重入;该函数不安排尾缘调用。
232
+ * @param callback - 同步或异步回调。
233
+ * @param delayMs - 0 至 2,147,483,647 的有限冷却时间,默认 300 毫秒。
234
+ * @returns 具有取消和状态方法的前缘节流函数。
235
+ * @throws `RangeError` 当延迟不在平台计时器支持范围内。
236
+ */
237
+ export declare function throttle<Arguments extends unknown[], Result>(callback: AsyncCallback<Arguments, Result>, delayMs?: number): ThrottledFunction<Arguments, Awaited<Result>>;
238
+ //#endregion
239
+ //#region src/internal/text.d.ts
240
+ /** 解码或解密后的字符串扩展。 */
241
+ interface DecodedTextExtension {
242
+ /**
243
+ * 显式把原始文本解析为 JSON 值。
244
+ *
245
+ * @remarks 泛型只描述调用方期望的类型,不验证实际 JSON 结构;不可信数据仍需执行运行时校验。
246
+ * @returns `JSON.parse` 生成的对象、数组、标量或 `null`;文本不是合法 JSON 时返回原始字符串。
247
+ */
248
+ parseJson: <Value = any>() => Value;
249
+ }
250
+ /** 可直接作为原始字符串使用,并支持显式 JSON 解析的解码或解密结果。 */
251
+ type DecodedText = string & DecodedTextExtension;
252
+ //#endregion
253
+ //#region src/base64/index.d.ts
254
+ /**
255
+ * 将任意字节编码为标准 Base64。
256
+ *
257
+ * @param bytes - 不会被修改的字节序列。
258
+ * @returns 带标准 `=` 填充的 Base64 文本。
259
+ */
260
+ export declare function encodeBase64Bytes(bytes: Uint8Array): string;
261
+ /**
262
+ * 解码标准 Base64。
263
+ *
264
+ * @remarks 允许省略填充和包含 ASCII 空白,但拒绝非规范尾部位。
265
+ * @param value - Base64 文本。
266
+ * @returns 新建的字节数组。
267
+ * @throws 输入非法时抛出 `TypeError`。
268
+ */
269
+ export declare function decodeBase64Bytes(value: string): Uint8Array;
270
+ /**
271
+ * 将 UTF-8 文本编码为标准 Base64。
272
+ *
273
+ * @param value - 任意 Unicode 字符串。
274
+ * @returns 带标准填充的 Base64 文本。
275
+ * @throws 缺少 Encoding API 时抛出 `Error`。
276
+ */
277
+ export declare function encodeBase64(value: string): string;
278
+ /**
279
+ * 将标准 Base64 解码为 UTF-8 文本。
280
+ *
281
+ * @param value - Base64 文本。
282
+ * @returns 可直接使用或显式调用 `.parseJson<Value>()` 的原始 Unicode 字符串。
283
+ * @throws Base64 或 UTF-8 非法时抛出 `TypeError`;缺少 Encoding API 时抛出 `Error`。
284
+ */
285
+ export declare function decodeBase64(value: string): DecodedText;
286
+ /**
287
+ * 将任意字节编码为无填充 Base64URL。
288
+ *
289
+ * @param bytes - 不会被修改的字节序列。
290
+ * @returns 仅使用 URL 安全字母表的文本。
291
+ */
292
+ export declare function encodeBase64UrlBytes(bytes: Uint8Array): string;
293
+ /**
294
+ * 解码 Base64URL 字节。
295
+ *
296
+ * @remarks 接受带填充和无填充形式,不接受空白或标准 Base64 的 `+`、`/`。
297
+ * @param value - Base64URL 文本。
298
+ * @returns 新建的字节数组。
299
+ * @throws 输入非法时抛出 `TypeError`。
300
+ */
301
+ export declare function decodeBase64UrlBytes(value: string): Uint8Array;
302
+ /**
303
+ * 将 UTF-8 文本编码为无填充 Base64URL。
304
+ *
305
+ * @param value - 任意 Unicode 字符串。
306
+ * @returns 仅使用 URL 安全字母表的文本。
307
+ * @throws 缺少 Encoding API 时抛出 `Error`。
308
+ */
309
+ export declare function encodeBase64Url(value: string): string;
310
+ /**
311
+ * 将 Base64URL 解码为 UTF-8 文本。
312
+ *
313
+ * @param value - 带填充或无填充的 Base64URL 文本。
314
+ * @returns 可直接使用或显式调用 `.parseJson<Value>()` 的原始 Unicode 字符串。
315
+ * @throws Base64URL 或 UTF-8 非法时抛出 `TypeError`;缺少 Encoding API 时抛出 `Error`。
316
+ */
317
+ export declare function decodeBase64Url(value: string): DecodedText;
318
+ /**
319
+ * 把 Latin-1 文本编码为标准 Base64。
320
+ *
321
+ * @param value - 每个 UTF-16 码元都必须位于 0–255 的文本。
322
+ * @returns 带标准填充的 Base64 文本。
323
+ * @throws `TypeError` 当文本包含 Latin-1 范围外的码元。
324
+ */
325
+ export declare function encodeLatin1Base64(value: string): string;
326
+ /**
327
+ * 把标准 Base64 解码为 Latin-1 文本。
328
+ *
329
+ * @param value - 标准 Base64 文本;允许 ASCII 空白和省略尾部填充。
330
+ * @returns 可直接使用或显式调用 `.parseJson<Value>()` 的 Latin-1 原始字符串。
331
+ * @throws `TypeError` 当 Base64 格式或尾部位非法。
332
+ */
333
+ export declare function decodeLatin1Base64(value: string): DecodedText;
334
+ /**
335
+ * 使用固定字典和随机前缀编码文本。
336
+ *
337
+ * @remarks 给定相同的 6 字符前缀时,默认输出与旧有效载荷逐字符兼容。旧字典在 101–124 字符载荷中引用越界;这里复制末字符作为单字符回退,
338
+ * 使旧删除字典流程仍能解码。传入 `0` 会同时关闭随机前缀与字典插入。
339
+ * 该格式只是可逆编码,不提供加密、完整性或身份认证。
340
+ * @param value - 任意可由 `encodeURIComponent` 处理的 Unicode 文本。
341
+ * @param prefixLength - 随机字母前缀长度;默认 `6`。
342
+ * @returns 带随机前缀和兼容字典字符的 Base64 文本;空输入返回空字符串。
343
+ * @throws `RangeError` 当前缀长度不是非负安全整数;输入包含孤立代理项时保留平台错误。
344
+ */
345
+ export declare function encodeSecureBase64(value: string, prefixLength?: number): string;
346
+ /**
347
+ * 解码 {@link encodeSecureBase64} 生成的 SecureBase64 兼容格式。
348
+ *
349
+ * @param value - SecureBase64 文本;必须使用与编码时相同的前缀长度。
350
+ * @param prefixLength - 需要移除的前缀长度;默认 `6`,传入 `0` 时不移除字典字符。
351
+ * @returns 可直接使用或显式调用 `.parseJson<Value>()` 的原始 Unicode 字符串;空输入返回空字符串。
352
+ * @throws `RangeError` 当前缀长度不是非负安全整数;载荷、Base64 或 URI 编码非法时抛出 `TypeError` 或 `URIError`。
353
+ */
354
+ export declare function decodeSecureBase64(value: string, prefixLength?: number): DecodedText;
355
+ //#endregion
356
+ //#region src/color/index.d.ts
357
+ /** 0 至 255 范围的 RGB 颜色。 */
358
+ export interface RgbColor {
359
+ /** 蓝色通道;必须是闭区间 `[0, 255]` 内的有限数,格式化时舍入到整数。 */
360
+ blue: number;
361
+ /** 绿色通道;必须是闭区间 `[0, 255]` 内的有限数,格式化时舍入到整数。 */
362
+ green: number;
363
+ /** 红色通道;必须是闭区间 `[0, 255]` 内的有限数,格式化时舍入到整数。 */
364
+ red: number;
365
+ }
366
+ /** 带 0 至 1 Alpha 通道的 RGB 颜色。 */
367
+ export interface RgbaColor extends RgbColor {
368
+ /** 不透明度;必须是闭区间 `[0, 1]` 内的有限数,`0` 完全透明,`1` 完全不透明。 */
369
+ alpha: number;
370
+ }
371
+ /**
372
+ * 解析可带可不带 `#` 的 `rgb`、`rgba`、`rrggbb` 或 `rrggbbaa`。
373
+ *
374
+ * @param value - 十六进制颜色文本。
375
+ * @returns 标准化的 RGBA 对象;省略 Alpha 时为 1。
376
+ * @throws 输入非法时抛出 `TypeError`。
377
+ */
378
+ export declare function parseHexColor(value: string): RgbaColor;
379
+ /**
380
+ * 把 RGB 或 RGBA 对象格式化为小写十六进制颜色。
381
+ *
382
+ * @param color - 颜色通道;RGB 会四舍五入到最近整数。
383
+ * @param includeAlpha - 是否输出 Alpha;默认只在传入 Alpha 且小于 1 时输出。
384
+ * @returns 小写 `#rrggbb` 或 `#rrggbbaa` 文本。
385
+ * @throws 通道或 Alpha 非法时抛出 `RangeError`。
386
+ */
387
+ export declare function formatHexColor(color: RgbColor | RgbaColor, includeAlpha?: boolean): string;
388
+ /**
389
+ * 线性混合两种十六进制颜色,包括 Alpha 通道。
390
+ *
391
+ * @param first - `amount = 0` 时的颜色。
392
+ * @param second - `amount = 1` 时的颜色。
393
+ * @param amount - 0 至 1 的混合比例。
394
+ * @returns 小写十六进制颜色;任一输入含透明度时保留 Alpha。
395
+ * @throws 颜色非法时抛出 `TypeError`;比例非法时抛出 `RangeError`。
396
+ */
397
+ export declare function mixHexColors(first: string, second: string, amount: number): string;
398
+ /**
399
+ * 按比例向黑色混合。
400
+ *
401
+ * @param color - 合法十六进制颜色。
402
+ * @param amount - 0 至 1 的混合比例。
403
+ * @returns 混入黑色后的十六进制颜色;参数与异常语义见 {@link mixHexColors}。
404
+ */
405
+ export declare function mixHexColorWithBlack(color: string, amount: number): string;
406
+ /**
407
+ * 按比例向白色混合。
408
+ *
409
+ * @param color - 合法十六进制颜色。
410
+ * @param amount - 0 至 1 的混合比例。
411
+ * @returns 混入白色后的十六进制颜色;参数与异常语义见 {@link mixHexColors}。
412
+ */
413
+ export declare function mixHexColorWithWhite(color: string, amount: number): string;
414
+ /**
415
+ * 计算 WCAG sRGB 相对亮度。
416
+ *
417
+ * @remarks Alpha 通道不会参与计算;半透明颜色应先与实际背景混合。
418
+ * @param color - 合法十六进制颜色。
419
+ * @returns 0 至 1 的相对亮度。
420
+ * @throws 输入非法时抛出 `TypeError`。
421
+ */
422
+ export declare function relativeLuminance(color: string): number;
423
+ /**
424
+ * 计算两种不透明颜色的 WCAG 对比度,范围 1 至 21。
425
+ *
426
+ * @remarks 返回比值本身,不代表特定字号或 WCAG 等级必然通过。
427
+ * @param first - 第一种十六进制颜色。
428
+ * @param second - 第二种十六进制颜色。
429
+ * @returns 较亮颜色与较暗颜色的对比度。
430
+ * @throws 输入非法时抛出 `TypeError`。
431
+ */
432
+ export declare function contrastRatio(first: string, second: string): number;
433
+ /**
434
+ * 从两个候选颜色中选择与背景对比度更高的一项。
435
+ *
436
+ * @param background - 实际不透明背景色。
437
+ * @param first - 第一候选,默认黑色。
438
+ * @param second - 第二候选,默认白色。
439
+ * @returns 对比度较高的原始候选字符串;相同时返回 `first`。
440
+ * @throws 任一颜色非法时抛出 `TypeError`。
441
+ */
442
+ export declare function pickHigherContrastColor(background: string, first?: string, second?: string): string;
443
+ //#endregion
444
+ //#region src/crypto/index.d.ts
445
+ /** AES 分组密码模式;与 .NET `CipherMode.CBC` 和 `CipherMode.ECB` 对应。 */
446
+ export type AesCipherMode = "CBC" | "ECB";
447
+ /** AES 填充模式;与 .NET `PaddingMode` 中可由 CryptoJS 互操作的成员对应。 */
448
+ export type AesPaddingMode = "None" | "PKCS7" | "Zeros" | "ANSIX923" | "ISO10126";
449
+ /** Web Crypto 导出的 PEM 公私钥对。 */
450
+ export interface PemKeyPair {
451
+ /** 未加密的 PKCS#8 PEM 私钥,包含标准 `PRIVATE KEY` 头尾和 64 字符换行。 */
452
+ privateKey: string;
453
+ /** SubjectPublicKeyInfo PEM 公钥,包含标准 `PUBLIC KEY` 头尾和 64 字符换行。 */
454
+ publicKey: string;
455
+ }
456
+ /** 本模块支持的 Web Crypto 椭圆曲线。 */
457
+ export type EcNamedCurve = "P-256" | "P-384" | "P-521";
458
+ /**
459
+ * 生成随机字节。
460
+ *
461
+ * @remarks 优先使用 Web Crypto;平台缺少安全随机能力时回退到 `Math.random()`。
462
+ * @param length - 0 至 65,536 的安全整数。
463
+ * @returns 新建的 `Uint8Array`。
464
+ * @throws 参数非法时抛出 `RangeError`。
465
+ */
466
+ export declare function GenerateRandomBytes(length: number): Uint8Array;
467
+ /**
468
+ * 以不提前退出的方式比较两个字节数组。
469
+ *
470
+ * @remarks JavaScript 引擎不保证严格常量时间;该函数只避免显式短路,不能替代服务端
471
+ * 密码学库提供的 timing-safe primitive。长度是否相同仍属于可观察信息。
472
+ * @param left - 第一字节序列。
473
+ * @param right - 第二字节序列。
474
+ * @returns 长度和每个字节均相同时返回 `true`。
475
+ */
476
+ export declare function FixedTimeEquals(left: Uint8Array, right: Uint8Array): boolean;
477
+ /**
478
+ * 计算 MD5 摘要并返回小写十六进制文本。
479
+ *
480
+ * @remarks MD5 仅用于非安全的普通校验,不得用于密码、签名或抗碰撞场景。
481
+ * @param value - UTF-8 文本。
482
+ * @returns 32 字符小写十六进制摘要。
483
+ */
484
+ export declare function MD5Encrypt(value: string): string;
485
+ /**
486
+ * 计算 SHA-1 摘要并返回大写十六进制文本。
487
+ *
488
+ * @remarks SHA-1 仅用于非安全的普通校验,不得用于密码、签名或抗碰撞场景。
489
+ * @param value - UTF-8 文本。
490
+ * @returns 40 字符大写十六进制摘要。
491
+ */
492
+ export declare function SHA1Encrypt(value: string): string;
493
+ /**
494
+ * 计算 SHA-256 摘要。
495
+ *
496
+ * @remarks SHA-256 是快速摘要,不适合直接存储或校验密码。
497
+ * @param value - UTF-8 字符串或原始字节。
498
+ * @returns 32 字节摘要。
499
+ * @throws 缺少 Web Crypto 或 Encoding API 时抛出 `Error`。
500
+ */
501
+ export declare function SHA256Bytes(value: string): Promise<Uint8Array>;
502
+ /**
503
+ * 计算 SHA-256 并格式化为十六进制。
504
+ *
505
+ * @param value - UTF-8 字符串或原始字节。
506
+ * @returns 64 字符大写十六进制文本。
507
+ * @throws 缺少 Web Crypto 或 Encoding API 时抛出 `Error`。
508
+ */
509
+ export declare function SHA256Encrypt(value: string): Promise<string>;
510
+ /**
511
+ * 计算 SHA-384 摘要。
512
+ *
513
+ * @param value - UTF-8 文本或原始字节。
514
+ * @returns 48 字节摘要。
515
+ */
516
+ export declare function SHA384Bytes(value: string): Promise<Uint8Array>;
517
+ /**
518
+ * 计算 SHA-384 并格式化为十六进制文本。
519
+ *
520
+ * @param value - UTF-8 文本或原始字节。
521
+ * @returns 96 个大写十六进制字符组成的摘要。
522
+ */
523
+ export declare function SHA384Encrypt(value: string): Promise<string>;
524
+ /**
525
+ * 计算 SHA-512 摘要。
526
+ *
527
+ * @param value - UTF-8 文本或原始字节。
528
+ * @returns 64 字节摘要。
529
+ */
530
+ export declare function SHA512Bytes(value: string): Promise<Uint8Array>;
531
+ /**
532
+ * 计算 SHA-512 并格式化为十六进制文本。
533
+ *
534
+ * @param value - UTF-8 文本或原始字节。
535
+ * @returns 128 个大写十六进制字符组成的摘要。
536
+ */
537
+ export declare function SHA512Encrypt(value: string): Promise<string>;
538
+ /**
539
+ * 使用 HMAC-SHA-256 认证文本,并返回十六进制标签。
540
+ *
541
+ * @param value - 要认证的 UTF-8 文本或原始字节。
542
+ * @param key - 非空的 UTF-8 文本密钥或原始密钥字节。
543
+ * @returns 64 个小写十六进制字符组成的认证标签。
544
+ */
545
+ export declare function HMACSHA256Encrypt(value: string, key: string): Promise<string>;
546
+ /**
547
+ * 使用 HMAC-SHA-384 认证文本或字节,并返回十六进制标签。
548
+ *
549
+ * @param value - 要认证的 UTF-8 文本或原始字节。
550
+ * @param key - 非空的 UTF-8 文本密钥或原始密钥字节。
551
+ * @returns 96 个小写十六进制字符组成的认证标签。
552
+ */
553
+ export declare function HMACSHA384Encrypt(value: string, key: string): Promise<string>;
554
+ /**
555
+ * 使用 HMAC-SHA-512 认证文本或字节,并返回十六进制标签。
556
+ *
557
+ * @param value - 要认证的 UTF-8 文本或原始字节。
558
+ * @param key - 非空的 UTF-8 文本密钥或原始密钥字节。
559
+ * @returns 128 个小写十六进制字符组成的认证标签。
560
+ */
561
+ export declare function HMACSHA512Encrypt(value: string, key: string): Promise<string>;
562
+ /**
563
+ * 使用 PBKDF2-HMAC-SHA-256 从密码派生密钥。
564
+ *
565
+ * @param password - 1 至 1,024 UTF-8 字节的密码。
566
+ * @param salt - 至少 8 字节的盐。
567
+ * @param iterations - 迭代次数,范围为 100,000 至 5,000,000。
568
+ * @param outputLength - 输出长度,范围为 1 至 1,024 字节。
569
+ * @returns 指定长度的派生密钥。
570
+ * @throws 参数超过协议边界时抛出 `TypeError` 或 `RangeError`。
571
+ */
572
+ export declare function PBKDF2SHA256(password: string, salt: Uint8Array, iterations?: number, outputLength?: number): Promise<Uint8Array>;
573
+ /**
574
+ * 生成可持久化的随机盐 PBKDF2-HMAC-SHA-256 密码哈希。
575
+ *
576
+ * @param password - 1 至 1,024 UTF-8 字节的密码。
577
+ * @param iterations - 迭代次数,范围为 100,000 至 5,000,000。
578
+ * @returns 包含版本、迭代次数、16 字节随机盐和 32 字节派生密钥的自描述字符串。
579
+ */
580
+ export declare function HashPasswordPBKDF2SHA256(password: string, iterations?: number): Promise<string>;
581
+ /**
582
+ * 验证 {@link HashPasswordPBKDF2SHA256} 生成的密码哈希。
583
+ *
584
+ * @param password - 要验证的密码。
585
+ * @param passwordHash - 自描述的 PBKDF2-HMAC-SHA-256 密码哈希。
586
+ * @returns 格式有效且密码匹配时返回 `true`;格式无效或密码错误时返回 `false`。
587
+ */
588
+ export declare function VerifyPasswordPBKDF2SHA256(password: string, passwordHash: string): Promise<boolean>;
589
+ /**
590
+ * 使用 RFC 5869 HKDF-SHA-256 派生上下文隔离的密钥材料。
591
+ *
592
+ * @param inputKeyMaterial - 输入密钥材料,例如 ECDH 原始共享秘密。
593
+ * @param salt - 可选盐;空值按 RFC 5869 的零盐语义处理。
594
+ * @param info - 应用、协议和密钥用途上下文。
595
+ * @param outputLength - 输出长度,范围为 1 至 8,160 字节。
596
+ * @returns 与 `salt` 和 `info` 绑定的派生密钥。
597
+ */
598
+ export declare function HKDFSHA256(inputKeyMaterial: Uint8Array, salt?: Uint8Array, info?: Uint8Array, outputLength?: number): Promise<Uint8Array>;
599
+ /**
600
+ * 使用 AES-256 对 UTF-8 文本进行分组加密。
601
+ *
602
+ * @remarks 密钥和 IV 分别补字符 `f` 或截断到 32、16 个 UTF-16 Code Unit,与 .NET
603
+ * `AESEncrypt` 保持一致。CBC/ECB 不提供完整性认证,密文可能被篡改。
604
+ * @param dataStr - 要加密的 UTF-8 文本;空白文本返回 `null`。
605
+ * @param key - 非空白的密钥文本。
606
+ * @param vector - 非空白的初始化向量文本;ECB 模式仍要求传入该参数以对齐 .NET 签名。
607
+ * @param cipherMode - AES 分组模式,默认 `CBC`。
608
+ * @param paddingMode - AES 填充模式,默认 `PKCS7`。
609
+ * @returns Base64 密文;输入、密钥或 IV 为空白时返回 `null`。
610
+ * @throws 模式或填充不受支持时抛出 `RangeError`。
611
+ */
612
+ export declare function AESEncrypt(dataStr: string, key: string, vector: string, cipherMode?: AesCipherMode, paddingMode?: AesPaddingMode): string | null;
613
+ /**
614
+ * 使用 AES-256 解密 Base64 分组密文。
615
+ *
616
+ * @remarks 参数归一化规则与 {@link AESEncrypt} 以及 .NET `AESDecrypt` 相同。
617
+ * @param dataStr - Base64 密文;空白文本返回 `null`。
618
+ * @param key - 加密时使用的密钥文本。
619
+ * @param vector - 加密时使用的初始化向量文本。
620
+ * @param cipherMode - AES 分组模式,默认 `CBC`。
621
+ * @param paddingMode - AES 填充模式,默认 `PKCS7`。
622
+ * @returns 可直接使用或显式调用 `.parseJson<Value>()` 的原始 UTF-8 字符串;输入、密钥或 IV 为空白时返回 `null`。
623
+ * @throws 模式、填充、Base64、密钥或密文无效时抛出错误。
624
+ */
625
+ export declare function AESDecrypt(dataStr: string, key: string, vector: string, cipherMode?: AesCipherMode, paddingMode?: AesPaddingMode): DecodedText | null;
626
+ /**
627
+ * 使用 SHA-256 归一化文本密钥,再以 AES-256-GCM 认证加密 UTF-8 文本。
628
+ *
629
+ * @remarks 输出与 .NET `AESEncryptAuthenticated` 的 v1 Base64 二进制载荷完全一致。
630
+ * @param plaintext - 要加密的 UTF-8 文本。
631
+ * @param key - 非空的 UTF-8 文本密钥;内部归一化为 32 字节 SHA-256 摘要。
632
+ * @returns Base64 编码的 v1 AES-GCM 认证载荷。
633
+ * @throws 密钥为空或运行时缺少 Web Crypto 时抛出错误。
634
+ */
635
+ export declare function AESEncryptAuthenticated(plaintext: string, key: string): Promise<string>;
636
+ /**
637
+ * 解密并认证 .NET `AESEncryptAuthenticated` 或 {@link AESEncryptAuthenticated} 生成的载荷。
638
+ *
639
+ * @param payload - Base64 编码的 v1 AES-GCM 二进制载荷。
640
+ * @param key - 加密时使用的非空 UTF-8 文本密钥。
641
+ * @returns 可直接使用或显式调用 `.parseJson<Value>()` 的原始 UTF-8 字符串。
642
+ * @throws 载荷格式无效、密钥错误或认证失败时抛出错误。
643
+ */
644
+ export declare function AESDecryptAuthenticated(payload: string, key: string): Promise<DecodedText>;
645
+ /**
646
+ * 使用 PBKDF2-HMAC-SHA-256 派生密钥,再以 AES-256-GCM 认证加密 UTF-8 文本。
647
+ *
648
+ * @remarks 每次调用生成独立 16 字节盐与 12 字节 IV。输出是与 .NET `AESEncryptWithPassword`
649
+ * 一致的 v1 自描述载荷,不应由业务代码手动拆分或修改。密码加密不替代密钥管理。
650
+ * @param plaintext - 原始文本,不进行 JSON 推断;UTF-8 编码后最大 8 MiB。
651
+ * @param password - 1 至 1024 UTF-8 字节的秘密口令。
652
+ * @param iterations - PBKDF2 工作因子,默认 600,000。
653
+ * @returns 认证密文字符串;相同输入每次产生不同结果。
654
+ * @throws 口令非法时抛出 `TypeError` 或 `RangeError`;明文过大时抛出 `RangeError`;
655
+ * 运行时缺少 Web Crypto 或 Encoding API 时抛出 `Error`。
656
+ */
657
+ export declare function AESEncryptWithPassword(plaintext: string, password: string, iterations?: number): Promise<string>;
658
+ /**
659
+ * 解密 {@link AESEncryptWithPassword} 生成的 v1 认证载荷。
660
+ *
661
+ * @param payload - 未修改的 v1 载荷,最大约 16 MiB 文本。
662
+ * @param password - 加密时使用的口令。
663
+ * @returns 可直接使用或显式调用 `.parseJson<Value>()` 的原始 UTF-8 字符串。
664
+ * @throws 格式或字段非法时抛出 `TypeError`,载荷过大时抛出 `RangeError`,认证或密码
665
+ * 失败及缺少平台能力时抛出 `Error`。
666
+ */
667
+ export declare function AESDecryptWithPassword(payload: string, password: string): Promise<DecodedText>;
668
+ /**
669
+ * 生成可供 RSA-OAEP/SHA-256 与 RSA-PSS/SHA-256 共用的 PEM 密钥对。
670
+ *
671
+ * @param modulusLength - RSA 模数位数,默认 2,048;必须是不小于 2,048 的 256 倍数。
672
+ * @returns 未加密 PKCS#8 私钥和 SubjectPublicKeyInfo 公钥组成的 PEM 密钥对。
673
+ * @throws 模数小于 2,048 或不是 256 的倍数时抛出 `RangeError`。
674
+ */
675
+ export declare function GenerateRSAKeyPair(modulusLength?: number): Promise<PemKeyPair>;
676
+ /**
677
+ * 使用 RSA-OAEP/SHA-256 公钥加密 UTF-8 文本。
678
+ *
679
+ * @param plaintext - 要加密的 UTF-8 文本;长度必须满足 RSA-OAEP 模数限制。
680
+ * @param publicKeyPem - SubjectPublicKeyInfo PEM 公钥。
681
+ * @returns Base64 编码的 RSA 密文。
682
+ * @throws 公钥格式无效或明文超过 RSA-OAEP 容量时抛出错误。
683
+ */
684
+ export declare function RSAEncryptOAEP(plaintext: string, publicKeyPem: string): Promise<string>;
685
+ /**
686
+ * 使用 RSA-OAEP/SHA-256 私钥解密 Base64 密文。
687
+ *
688
+ * @param ciphertext - Base64 编码的 RSA 密文。
689
+ * @param privateKeyPem - 未加密的 PKCS#8 PEM 私钥。
690
+ * @returns 可直接使用或显式调用 `.parseJson<Value>()` 的原始 UTF-8 字符串。
691
+ * @throws 私钥、Base64 或密文无效时抛出错误。
692
+ */
693
+ export declare function RSADecryptOAEP(ciphertext: string, privateKeyPem: string): Promise<DecodedText>;
694
+ /**
695
+ * 使用 RSA-PSS/SHA-256 私钥签名文本或字节。
696
+ *
697
+ * @param value - 要签名的 UTF-8 文本或原始字节。
698
+ * @param privateKeyPem - 未加密的 PKCS#8 PEM 私钥。
699
+ * @returns Base64 编码的 RSA-PSS 签名;盐长度固定为 32 字节。
700
+ * @throws 私钥格式无效或签名失败时抛出错误。
701
+ */
702
+ export declare function RSASignPSS(value: string, privateKeyPem: string): Promise<string>;
703
+ /**
704
+ * 使用 RSA-PSS/SHA-256 公钥验证 Base64 签名。
705
+ *
706
+ * @param value - 签名时使用的 UTF-8 文本或原始字节。
707
+ * @param signature - Base64 编码的 RSA-PSS 签名。
708
+ * @param publicKeyPem - SubjectPublicKeyInfo PEM 公钥。
709
+ * @returns 签名与内容、公钥匹配时返回 `true`。
710
+ * @throws 公钥或 Base64 格式无效时抛出错误。
711
+ */
712
+ export declare function RSAVerifyPSS(value: string, signature: string, publicKeyPem: string): Promise<boolean>;
713
+ /**
714
+ * 生成 ECDSA PEM 签名密钥对。
715
+ *
716
+ * @param namedCurve - NIST 曲线:P-256、P-384 或 P-521。
717
+ * @returns 未加密 PKCS#8 私钥和 SubjectPublicKeyInfo 公钥组成的 PEM 密钥对。
718
+ */
719
+ export declare function GenerateECDSAKeyPair(namedCurve?: EcNamedCurve): Promise<PemKeyPair>;
720
+ /**
721
+ * 使用 ECDSA 私钥签名文本或字节。
722
+ *
723
+ * @remarks Web Crypto 返回 IEEE P1363 固定字段拼接格式,与 .NET 实现一致。
724
+ * @param value - 要签名的 UTF-8 文本或原始字节。
725
+ * @param privateKeyPem - 未加密的 EC PKCS#8 PEM 私钥。
726
+ * @param namedCurve - 私钥使用的 NIST 曲线。
727
+ * @returns Base64 编码的 IEEE P1363 ECDSA 签名。
728
+ */
729
+ export declare function ECDSASign(value: string, privateKeyPem: string, namedCurve?: EcNamedCurve): Promise<string>;
730
+ /**
731
+ * 使用 ECDSA 公钥验证 Base64 签名。
732
+ *
733
+ * @param value - 签名时使用的 UTF-8 文本或原始字节。
734
+ * @param signature - Base64 编码的 IEEE P1363 ECDSA 签名。
735
+ * @param publicKeyPem - EC SubjectPublicKeyInfo PEM 公钥。
736
+ * @param namedCurve - 公钥使用的 NIST 曲线。
737
+ * @returns 签名与内容、公钥和曲线匹配时返回 `true`。
738
+ */
739
+ export declare function ECDSAVerify(value: string, signature: string, publicKeyPem: string, namedCurve?: EcNamedCurve): Promise<boolean>;
740
+ /**
741
+ * 生成 ECDH PEM 密钥协商密钥对。
742
+ *
743
+ * @param namedCurve - NIST 曲线:P-256、P-384 或 P-521。
744
+ * @returns 未加密 PKCS#8 私钥和 SubjectPublicKeyInfo 公钥组成的 PEM 密钥对。
745
+ */
746
+ export declare function GenerateECDHKeyPair(namedCurve?: EcNamedCurve): Promise<PemKeyPair>;
747
+ /**
748
+ * 使用本方 ECDH 私钥与对方 ECDH 公钥派生共享秘密。
749
+ *
750
+ * @remarks 返回值仍需经过合适的 KDF 后才能作为对称密钥,不应直接长期存储。
751
+ * @param privateKeyPem - 本方未加密的 EC PKCS#8 PEM 私钥。
752
+ * @param publicKeyPem - 对方的 EC SubjectPublicKeyInfo PEM 公钥。
753
+ * @param namedCurve - 双方密钥使用的 NIST 曲线。
754
+ * @returns 曲线字段长度的原始 ECDH 共享秘密。
755
+ */
756
+ export declare function DeriveECDHSecret(privateKeyPem: string, publicKeyPem: string, namedCurve?: EcNamedCurve): Promise<Uint8Array>;
757
+ /**
758
+ * 使用 ECDH 后以 SHA-256 派生共享密钥。
759
+ *
760
+ * @remarks 相比直接使用原始共享秘密,此入口与 .NET `DeriveECDHKeySHA256` 一致并固定输出 32 字节。
761
+ * @param privateKeyPem - 本方未加密的 EC PKCS#8 PEM 私钥。
762
+ * @param publicKeyPem - 对方的 EC SubjectPublicKeyInfo PEM 公钥。
763
+ * @param namedCurve - 双方密钥使用的 NIST 曲线。
764
+ * @returns 32 字节共享密钥。
765
+ */
766
+ export declare function DeriveECDHKeySHA256(privateKeyPem: string, publicKeyPem: string, namedCurve?: EcNamedCurve): Promise<Uint8Array>;
767
+ //#endregion
768
+ //#region src/date/index.d.ts
769
+ /** 可转换为日期的输入;数字始终按 Unix 毫秒时间戳处理。 */
770
+ export type DateInput = Date | number | string;
771
+ /** {@link formatRelativeTime} 的语言与基准时间选项。 */
772
+ export interface RelativeTimeOptions {
773
+ /** `Intl.RelativeTimeFormat` 使用的语言;默认固定为 `zh-CN`。 */
774
+ locale?: string | readonly string[];
775
+ /** 比较基准,默认当前时间。 */
776
+ now?: DateInput;
777
+ /** 是否允许“昨天”“明天”等文本;默认 `auto`。 */
778
+ numeric?: Intl.RelativeTimeFormatNumeric;
779
+ /** 输出长度;默认 `long`。 */
780
+ style?: Intl.RelativeTimeFormatStyle;
781
+ }
782
+ /**
783
+ * 转换并克隆有效日期。
784
+ *
785
+ * @remarks 数字不进行秒/毫秒猜测;字符串遵循运行时 `Date` 解析规则,跨平台代码应传带显式时区的完整 ISO 8601。
786
+ * @param value - Date、Unix 毫秒时间戳或运行时可解析字符串。
787
+ * @returns 与输入不共享可变状态的新 Date。
788
+ * @throws 输入无效时抛出 `TypeError`。
789
+ */
790
+ export declare function toDate(value: DateInput): Date;
791
+ /**
792
+ * 判断输入能否转换为有效日期。
793
+ *
794
+ * @param value - 任意待检查值。
795
+ * @returns 仅 Date、数字或字符串且时间戳有限时返回 `true`。
796
+ */
797
+ export declare function isValidDate(value: unknown): value is DateInput;
798
+ /**
799
+ * 返回输入日期所在本地时区日期的 `00:00:00.000`,不修改输入。
800
+ *
801
+ * @param value - 有效日期输入。
802
+ * @returns 新建的本地日开始时间。
803
+ * @throws 输入无效时抛出 `TypeError`。
804
+ */
805
+ export declare function startOfDay(value: DateInput): Date;
806
+ /**
807
+ * 返回输入日期所在本地时区日期的 `23:59:59.999`,不修改输入。
808
+ *
809
+ * @param value - 有效日期输入。
810
+ * @returns 新建的本地日结束时间。
811
+ * @throws 输入无效时抛出 `TypeError`。
812
+ */
813
+ export declare function endOfDay(value: DateInput): Date;
814
+ /**
815
+ * 按本地日历增加整数天,不修改输入。
816
+ *
817
+ * @param value - 基准日期。
818
+ * @param amount - 可为负数的安全整数日数。
819
+ * @returns 本地日历运算后的新 Date;夏令时变化可能使实际毫秒差不等于 24 小时。
820
+ * @throws 日期无效时抛出 `TypeError`;数量或结果非法时抛出 `RangeError`。
821
+ */
822
+ export declare function addDays(value: DateInput, amount: number): Date;
823
+ /**
824
+ * 按本地日历增加整数月,并把不存在的日期夹到目标月末。
825
+ *
826
+ * @example 1 月 31 日增加一个月会落在 2 月最后一天。
827
+ * @param value - 基准日期。
828
+ * @param amount - 可为负数的安全整数月数。
829
+ * @returns 月份运算后的新 Date。
830
+ * @throws 日期无效时抛出 `TypeError`;数量或结果非法时抛出 `RangeError`。
831
+ */
832
+ export declare function addMonths(value: DateInput, amount: number): Date;
833
+ /**
834
+ * 按本地日历增加整数年,并沿用 {@link addMonths} 的月末夹取规则。
835
+ *
836
+ * @param value - 基准日期。
837
+ * @param amount - 可为负数的安全整数年数。
838
+ * @returns 年份运算后的新 Date。
839
+ * @throws 日期无效时抛出 `TypeError`;数量或结果非法时抛出 `RangeError`。
840
+ */
841
+ export declare function addYears(value: DateInput, amount: number): Date;
842
+ /**
843
+ * 判断两个输入是否属于同一本地日历日。
844
+ *
845
+ * @param left - 第一日期。
846
+ * @param right - 第二日期。
847
+ * @returns 本地年、月、日均相同时返回 `true`。
848
+ * @throws 任一输入无效时抛出 `TypeError`。
849
+ */
850
+ export declare function isSameDay(left: DateInput, right: DateInput): boolean;
851
+ /**
852
+ * 判断时间是否晚于基准时间。
853
+ *
854
+ * @param value - 待比较时间。
855
+ * @param now - 比较基准,默认调用时的当前时刻。
856
+ * @returns `value` 严格晚于基准时返回 `true`。
857
+ * @throws 任一输入无效时抛出 `TypeError`。
858
+ */
859
+ export declare function isFuture(value: DateInput, now?: DateInput): boolean;
860
+ /**
861
+ * 返回指定基准所在本地日历日的完整闭区间。
862
+ *
863
+ * @param value - 日期基准,默认调用时当前日期。
864
+ * @returns 新建的本地日开始和结束时间二元组。
865
+ * @throws 输入无效时抛出 `TypeError`。
866
+ */
867
+ export declare function getLocalDayBounds(value?: DateInput): [start: Date, end: Date];
868
+ /**
869
+ * 判断日期是否位于包含首尾的时间区间。
870
+ *
871
+ * @param value - 待检查日期。
872
+ * @param start - 包含的起点。
873
+ * @param end - 包含的终点。
874
+ * @returns 时间戳位于闭区间内时返回 `true`。
875
+ * @throws 无效日期抛出 `TypeError`;首尾反向时抛出 `RangeError`。
876
+ */
877
+ export declare function isWithinInterval(value: DateInput, start: DateInput, end: DateInput): boolean;
878
+ /**
879
+ * 使用 `Intl.RelativeTimeFormat` 生成人类可读相对时间。
880
+ *
881
+ * @remarks 秒、分钟、小时、天、周、月和年按固定时长阈值选择;这适合展示,不适合计费或日历运算。
882
+ * @param value - 目标时间。
883
+ * @param options - 语言、样式与比较基准。
884
+ * @returns 由 `Intl.RelativeTimeFormat` 生成的本地化文本。
885
+ * @throws 日期无效时抛出 `TypeError`;Locale 或 Intl 选项非法时抛出 `RangeError`。
886
+ */
887
+ export declare function formatRelativeTime(value: DateInput, options?: RelativeTimeOptions): string;
888
+ /** 日期选择器单日期快捷项。 */
889
+ export interface DateShortcut {
890
+ /** 面向中文日期选择器的显示文本;调用方可直接用于菜单标签。 */
891
+ text: string;
892
+ /**
893
+ * 计算快捷项对应日期。
894
+ * @returns 每次调用时基于当前本地时间创建的新 `Date`,调用方可安全修改。
895
+ */
896
+ value: () => Date;
897
+ }
898
+ /** 日期选择器范围快捷项。 */
899
+ export interface DateRangeShortcut {
900
+ /** 面向中文日期范围选择器的显示文本;调用方可直接用于菜单标签。 */
901
+ text: string;
902
+ /**
903
+ * 计算快捷项对应的本地日期范围。
904
+ * @returns 每次调用时创建的新元组;起点为 `00:00:00.000`,终点为 `23:59:59.999`。
905
+ */
906
+ value: () => [start: Date, end: Date];
907
+ }
908
+ /**
909
+ * 把日期转换为固定中文相对时间文本。
910
+ *
911
+ * @remarks 10 位以内数字按 Unix 秒处理,其余数字按毫秒处理;月份与年份按本地日历月差计算。
912
+ * @param value - Date、时间戳、可解析字符串或空值。
913
+ * @returns 例如“3分钟前”“半年后”;非法或空输入返回空字符串。
914
+ */
915
+ export declare function formatChineseRelativeTime(value: Date | number | string | null | undefined): string;
916
+ /**
917
+ * 创建从今天到前后一个月日期的完整本地日范围。
918
+ *
919
+ * @param towardFuture - `true` 返回今天至一个月后,默认返回一个月前至今天。
920
+ * @returns 每次调用新建的本地日首尾边界。
921
+ */
922
+ export declare function createOneMonthRangeFromToday(towardFuture?: boolean): [start: Date, end: Date];
923
+ /**
924
+ * 判断日期是否晚于调用时的当前时刻。
925
+ *
926
+ * @param time - 待比较日期。
927
+ * @returns 时间戳严格晚于 `Date.now()` 时返回 `true`。
928
+ */
929
+ export declare function isDateAfterNow(time: Date): boolean;
930
+ /**
931
+ * 根据浏览器本地小时返回固定中文问候语。
932
+ *
933
+ * @returns 与当前时段对应的中文欢迎文本。
934
+ */
935
+ export declare function getLocalTimeGreeting(): string;
936
+ /**
937
+ * 创建面向过去或未来的常用完整日期范围快捷项。
938
+ *
939
+ * @param towardFuture - `true` 创建未来范围,默认创建历史范围。
940
+ * @returns 每次求值都会重新读取当前时间的范围快捷项。
941
+ */
942
+ export declare function createDateRangeShortcuts(towardFuture?: boolean): DateRangeShortcut[];
943
+ /**
944
+ * 创建面向过去或未来的常用单日期快捷项。
945
+ *
946
+ * @param towardFuture - `true` 创建未来日期,默认创建历史日期。
947
+ * @returns 每次求值都会重新读取当前时间的单日期快捷项。
948
+ */
949
+ export declare function createDateShortcuts(towardFuture?: boolean): DateShortcut[];
950
+ /**
951
+ * 返回今天的本地零点。
952
+ *
953
+ * @returns 新建的 `00:00:00.000` Date。
954
+ */
955
+ export declare function getStartOfToday(): Date;
956
+ //#endregion
957
+ //#region src/dom/style.d.ts
958
+ /** 可序列化为内联 CSS 的单个值。 */
959
+ export type StyleValue = number | string | null | undefined;
960
+ /** camelCase、kebab-case 或 CSS 自定义属性组成的只读样式对象。 */
961
+ export type StyleObject = Readonly<Record<string, StyleValue>>;
962
+ /** 字符串、样式对象、嵌套数组或空值。 */
963
+ export type StyleInput = string | StyleObject | readonly StyleInput[] | null | undefined;
964
+ /**
965
+ * 为数值或纯数字字符串添加 CSS 单位。
966
+ *
967
+ * @param value - 数字、数字字符串或已有单位的 CSS 值;空值返回空字符串。
968
+ * @param unit - 非零数字使用的单位,默认 `px`。
969
+ * @returns 零统一返回 `"0"`;非数字字符串保持原样。
970
+ * @throws `RangeError` 当数字非有限或单位为空。
971
+ */
972
+ export declare function addCssUnit(value?: string | number | null, unit?: string): string;
973
+ /**
974
+ * 将样式字符串、对象或嵌套数组序列化为内联 CSS。
975
+ *
976
+ * @remarks 本函数只负责结构转换,不是 CSS 安全清洗器。不可信值必须由调用方按照
977
+ * 实际渲染上下文验证,尤其不能允许用户控制属性名、`url()` 或自定义属性内容。
978
+ * 数字不会自动附加单位;需要长度单位时应先调用 {@link addCssUnit}。
979
+ * @param styles - 可嵌套样式输入;后出现的声明由 CSS 层叠规则覆盖先前声明。
980
+ * @returns 以分号结束、以空格分隔的 CSS 声明字符串。
981
+ * @throws `RangeError` 当对象中包含 `NaN` 或无穷数字。
982
+ */
983
+ export declare function serializeStyle(styles: StyleInput): string;
984
+ //#endregion
985
+ //#region src/env/index.d.ts
986
+ /** 可识别的主要 JavaScript 运行环境。 */
987
+ export type RuntimeKind = "browser" | "node" | "unknown" | "worker";
988
+ /**
989
+ * 判断当前运行时是否具有浏览器 `window` 与 `document`。
990
+ *
991
+ * @returns 两项能力均存在时返回 `true`;不读取 DOM 内容。
992
+ */
993
+ export declare function isBrowser(): boolean;
994
+ /**
995
+ * 判断当前运行时是否像 Web Worker 且不是 Window。
996
+ *
997
+ * @remarks 经典、模块、Shared 与 Service Worker 全局通常都暴露 `importScripts`;模块
998
+ * Worker 中调用它可能抛错,本检测只检查能力存在,不会执行。
999
+ * @returns 具有 `importScripts` 且不是浏览器 Window 时返回 `true`。
1000
+ */
1001
+ export declare function isWebWorker(): boolean;
1002
+ /**
1003
+ * 判断当前运行时是否暴露 Node.js 版本标记。
1004
+ *
1005
+ * @returns `process.versions.node` 为字符串时返回 `true`。
1006
+ */
1007
+ export declare function isNode(): boolean;
1008
+ /**
1009
+ * 判断当前运行时是否暴露 uni-app 的 `uni` 全局对象。
1010
+ *
1011
+ * @returns 全局属性存在且不为 `undefined` 时返回 `true`;不调用任何平台 API。
1012
+ */
1013
+ export declare function isUniApp(): boolean;
1014
+ /**
1015
+ * 判断当前运行时是否具备本库完整加密 API 所需的 Web Crypto 能力。
1016
+ *
1017
+ * @remarks 普通随机数、随机字符串和 UUID 在缺少 Web Crypto 时可以回退到 `Math.random()`,但本函数
1018
+ * 仍会返回 `false`,因为摘要、PBKDF2、AES-GCM、RSA 与 ECC 需要完整的 Web Crypto 能力。
1019
+ * @returns 同时提供本库 Web Crypto 功能所需方法时返回 `true`。
1020
+ */
1021
+ export declare function hasWebCrypto(): boolean;
1022
+ /**
1023
+ * 返回当前主要运行环境。
1024
+ *
1025
+ * @remarks 在使用 DOM 模拟器的 Node.js 进程中优先报告 `browser`,因为可观察能力比宿主进程名称更有用。
1026
+ * @returns `browser`、`worker`、`node` 或无法识别时的 `unknown`。
1027
+ */
1028
+ export declare function detectRuntime(): RuntimeKind;
1029
+ /**
1030
+ * 基于 User-Agent 启发式判断手机设备。
1031
+ *
1032
+ * @param userAgent - 默认读取当前 `navigator.userAgent`;平台对象不存在时使用空字符串。
1033
+ * @remarks User-Agent 可以被伪造,不得用于鉴权、安全策略或永久功能分流。
1034
+ * @returns 命中手机特征时返回 `true`。
1035
+ */
1036
+ export declare function isMobileUserAgent(userAgent?: string): boolean;
1037
+ /**
1038
+ * 基于 User-Agent 与触点数量启发式判断平板设备。
1039
+ *
1040
+ * @param userAgent - 默认读取当前 User-Agent。
1041
+ * @param maxTouchPoints - 用于识别桌面 User-Agent 模式下的 iPadOS,默认读取当前触点数。
1042
+ * @returns 命中平板特征时返回 `true`。
1043
+ */
1044
+ export declare function isTabletUserAgent(userAgent?: string, maxTouchPoints?: number): boolean;
1045
+ //#endregion
1046
+ //#region src/function/index.d.ts
1047
+ /**
1048
+ * 创建最多执行一次并缓存首次结果的函数。
1049
+ *
1050
+ * @remarks 首次成功返回后,后续调用返回同一结果;Promise 会保持引用不变。首次同步抛错时缓存错误,后续调用重新抛出同一错误。
1051
+ * 包装函数使用首次调用时的参数和 `this`,之后传入的参数不会再次执行原函数。
1052
+ * @param callback - 只允许执行一次的函数。
1053
+ * @returns 保持原参数与返回类型的包装函数。
1054
+ * @throws `TypeError` 当 `callback` 不是函数。
1055
+ */
1056
+ export declare function once<This, Arguments extends unknown[], Result>(callback: (this: This, ...arguments_: Arguments) => Result): (this: This, ...arguments_: Arguments) => Result;
1057
+ //#endregion
1058
+ //#region src/identity/index.d.ts
1059
+ /** {@link configureInstallationIdentity} 接收的安装标识配置。 */
1060
+ export interface InstallationIdentityConfiguration {
1061
+ /**
1062
+ * `Local` 中使用的业务键,默认 `identity:installation-id`。
1063
+ *
1064
+ * @remarks 必须是无外围空白的非空字符串,并在首次访问 Identity API 前配置;物理键仍会叠加 Storage 全局前缀。
1065
+ */
1066
+ cacheKey?: string;
1067
+ }
1068
+ /** 浏览器或 uni-app 当前安装实例标识。 */
1069
+ export interface InstallationIdentity {
1070
+ /**
1071
+ * `Local` 中使用的业务键。
1072
+ *
1073
+ * @remarks 首次读取会锁定默认配置;之后不能再切换为其他业务键。
1074
+ */
1075
+ readonly cacheKey: string;
1076
+ /**
1077
+ * 当前内存中的安装标识;尚未取得标识或调用 {@link InstallationIdentity.clear clear} 后为空字符串。
1078
+ *
1079
+ * @remarks 直接赋值只改变内存,不会校验或持久化;通常应调用 {@link InstallationIdentity.getOrCreate getOrCreate}。
1080
+ */
1081
+ deviceId: string;
1082
+ /**
1083
+ * 删除当前 `cacheKey` 对应的持久化标识,并把 `deviceId` 重置为空字符串。
1084
+ *
1085
+ * @throws `Error` 当当前平台存储不可用。
1086
+ */
1087
+ clear: () => void;
1088
+ /**
1089
+ * 按“显式参数、当前内存、持久化值、随机生成值”的优先级取得安装标识。
1090
+ *
1091
+ * @param installationId - 可选 UUID v4;传入时覆盖内存值和当前持久化值。
1092
+ * @returns 已校验并同时写入 `deviceId` 与 `Local` 的 UUID v4。
1093
+ * @throws `TypeError` 当显式参数、内存值或持久化值不是 UUID v4。
1094
+ * @throws `Error` 当当前平台存储不可用。
1095
+ */
1096
+ getOrCreate: (installationId?: string) => string;
1097
+ /**
1098
+ * 读取并校验当前 `cacheKey` 对应的持久化标识。
1099
+ *
1100
+ * @remarks 该方法不修改 `deviceId`,只负责读取;过期记录由 Storage 视为缺失。
1101
+ * @returns 已持久化的 UUID v4;键缺失或过期时返回 `undefined`。
1102
+ * @throws `TypeError` 当持久化值不是字符串或不是 UUID v4。
1103
+ * @throws `Error` 当当前平台存储不可用。
1104
+ */
1105
+ read: () => string | undefined;
1106
+ }
1107
+ /**
1108
+ * 在应用入口配置安装标识使用的 Storage 业务键。
1109
+ *
1110
+ * @remarks 必须在首次读取 `installationIdentity.cacheKey` 或调用其他安装标识 API 前执行。相同配置
1111
+ * 可以幂等重复调用;切换到不同键会抛错,避免同一页面产生分裂状态。
1112
+ * @param options - 安装标识配置;省略 `cacheKey` 时使用 `identity:installation-id`。
1113
+ * @throws `TypeError` 当 `cacheKey` 不是非空字符串或包含外围空白。
1114
+ * @throws `Error` 当安装标识已经使用另一个业务键初始化。
1115
+ */
1116
+ export declare function configureInstallationIdentity(options?: InstallationIdentityConfiguration): void;
1117
+ /**
1118
+ * 全局安装标识状态。
1119
+ *
1120
+ * @remarks Storage 未显式配置时会使用其默认值。生成 UUID 时优先使用 Web Crypto,能力缺失时
1121
+ * 回退到 `Math.random()`。该值不是硬件标识、认证凭证或安全边界。
1122
+ */
1123
+ export declare const installationIdentity: InstallationIdentity;
1124
+ /**
1125
+ * 返回已有安装标识,否则创建并持久化一个 UUID v4。
1126
+ *
1127
+ * @param installationId - 可选的显式安装标识;传入时会校验并覆盖当前持久化值。
1128
+ * @returns 显式值、内存值、持久化值或新生成值中的最终安装标识。
1129
+ * @throws `TypeError` 当显式值或持久化值不是 UUID v4。
1130
+ * @throws `Error` 当当前平台存储不可用。
1131
+ */
1132
+ export declare function getOrCreateInstallationId(installationId?: string): string;
1133
+ //#endregion
1134
+ //#region src/logger/index.d.ts
1135
+ /** 日志严重级别,按从低到高排列。 */
1136
+ export type LogLevel = "debug" | "log" | "warn" | "error";
1137
+ /** 日志输出目标需要实现的最小控制台接口。 */
1138
+ export interface LoggerSink {
1139
+ /**
1140
+ * 接收通过级别过滤后的调试参数。
1141
+ * @param data - 已格式化的品牌、作用域、消息以及保持原始类型的附加值。
1142
+ */
1143
+ debug: (...data: unknown[]) => void;
1144
+ /**
1145
+ * 接收通过级别过滤后的普通日志参数;对应 Logger 的 `log` 级别。
1146
+ * @param data - 已格式化的品牌、作用域、消息以及保持原始类型的附加值。
1147
+ */
1148
+ log: (...data: unknown[]) => void;
1149
+ /**
1150
+ * 接收通过级别过滤后的警告参数。
1151
+ * @param data - 已格式化的品牌、作用域、消息以及保持原始类型的附加值。
1152
+ */
1153
+ warn: (...data: unknown[]) => void;
1154
+ /**
1155
+ * 接收通过级别过滤后的错误参数。
1156
+ * @param data - 已格式化的品牌、作用域、消息以及保持原始类型的附加值。
1157
+ */
1158
+ error: (...data: unknown[]) => void;
1159
+ }
1160
+ /** {@link createLogger} 的不可变配置。 */
1161
+ export interface LoggerOptions {
1162
+ /** 最低输出级别,默认 `debug`;低于该优先级的消息不会传给 Sink。 */
1163
+ level?: LogLevel;
1164
+ /** 日志品牌前缀,默认 `Fast`;必须是无外围空白的非空字符串。 */
1165
+ prefix?: string;
1166
+ /** 可注入输出目标,默认当前运行时的 `console`;Logger 不会修改该对象。 */
1167
+ sink?: LoggerSink;
1168
+ /** uni-app App-Plus/HBuilderX 中把附加参数逐条转成单行文本输出,默认 `false`;其他平台忽略。 */
1169
+ uniAppPlusSplit?: boolean;
1170
+ }
1171
+ /** 配置隔离的轻量日志器。 */
1172
+ export interface Logger {
1173
+ /**
1174
+ * 输出指定作用域的调试信息或数据。
1175
+ * @param scope - 模块、组件或业务来源名称。
1176
+ * @param content - 可选的消息与附加值;非字符串值保持原始类型。
1177
+ * @throws `TypeError` 或 `RangeError` 当作用域不是无外围空白的非空字符串。
1178
+ */
1179
+ debug: (scope: string, ...content: unknown[]) => void;
1180
+ /**
1181
+ * 输出指定作用域的普通信息或数据。
1182
+ * @param scope - 模块、组件或业务来源名称。
1183
+ * @param content - 可选的消息与附加值;非字符串值保持原始类型。
1184
+ * @throws `TypeError` 或 `RangeError` 当作用域不是无外围空白的非空字符串。
1185
+ */
1186
+ log: (scope: string, ...content: unknown[]) => void;
1187
+ /**
1188
+ * 输出指定作用域的警告信息或数据。
1189
+ * @param scope - 模块、组件或业务来源名称。
1190
+ * @param content - 可选的消息与附加值;非字符串值保持原始类型。
1191
+ * @throws `TypeError` 或 `RangeError` 当作用域不是无外围空白的非空字符串。
1192
+ */
1193
+ warn: (scope: string, ...content: unknown[]) => void;
1194
+ /**
1195
+ * 输出指定作用域的错误信息或数据。
1196
+ * @param scope - 模块、组件或业务来源名称。
1197
+ * @param content - 可选的消息与附加值;非字符串值保持原始类型。
1198
+ * @throws `TypeError` 或 `RangeError` 当作用域不是无外围空白的非空字符串。
1199
+ */
1200
+ error: (scope: string, ...content: unknown[]) => void;
1201
+ }
1202
+ /**
1203
+ * 创建独立日志器。
1204
+ *
1205
+ * @remarks 本库其他模块不会自动记录、吞掉或转换异常。日志内容可能进入持久化平台,
1206
+ * 调用方不得传入密码、令牌、密钥或完整个人数据。
1207
+ * @param options - 级别、前缀、输出目标和 uni-app App-Plus 拆分选项。
1208
+ * @returns 不会修改全局控制台或其他日志器配置的新实例。
1209
+ * @throws `RangeError` 当级别未知,或前缀、作用域不是有效的非空字符串。
1210
+ */
1211
+ export declare function createLogger(options?: LoggerOptions): Logger;
1212
+ /**
1213
+ * 替换默认 {@link logger} 的完整配置。
1214
+ *
1215
+ * @remarks 已创建的独立 Logger 不受影响;默认 Logger 对象引用保持稳定,并立即转发到新配置。
1216
+ * 省略选项会恢复 `createLogger()` 的全部默认值。
1217
+ * @param options - 默认 Logger 使用的级别、前缀、输出目标和 uni-app App-Plus 拆分选项。
1218
+ */
1219
+ export declare function configureLogger(options?: LoggerOptions): void;
1220
+ /** 默认使用 `Fast` 前缀和 `debug` 级别、可通过 {@link configureLogger} 配置的便捷日志器。 */
1221
+ export declare const logger: Logger;
1222
+ //#endregion
1223
+ //#region src/number/index.d.ts
1224
+ /** {@link formatBytes} 的格式化选项。 */
1225
+ export interface FormatBytesOptions {
1226
+ /** 计量基数。`1000` 生成 SI 单位,`1024` 生成 IEC 单位;默认 `1024`。 */
1227
+ base?: 1000 | 1024;
1228
+ /** 小数位数,范围 0 至 20;默认 `2`。 */
1229
+ decimals?: number;
1230
+ /** `Intl.NumberFormat` 使用的语言;默认固定为 `en-US` 以保证输出稳定。 */
1231
+ locale?: string | readonly string[];
1232
+ }
1233
+ /**
1234
+ * 把数字限制在闭区间内。
1235
+ *
1236
+ * @param value - 需要限制的数字。
1237
+ * @param minimum - 闭区间下界。
1238
+ * @param maximum - 闭区间上界。
1239
+ * @returns `minimum <= result <= maximum` 的值。
1240
+ * @throws `RangeError` 当参数为 `NaN` 或下界大于上界。
1241
+ */
1242
+ export declare function clamp(value: number, minimum: number, maximum: number): number;
1243
+ /**
1244
+ * 判断数字是否位于指定区间。
1245
+ *
1246
+ * @param value - 待检查数字。
1247
+ * @param minimum - 包含的下界。
1248
+ * @param maximum - 上界。
1249
+ * @param includeMaximum - 是否包含上界;默认使用半开区间 `[minimum, maximum)`。
1250
+ * @returns 数字满足区间边界时返回 `true`。
1251
+ * @throws `RangeError` 当参数为 `NaN` 或下界大于上界。
1252
+ */
1253
+ export declare function inRange(value: number, minimum: number, maximum: number, includeMaximum?: boolean): boolean;
1254
+ /**
1255
+ * 按十进制位数四舍五入。
1256
+ *
1257
+ * @remarks IEEE-754 浮点数仍可能存在不可表示误差;财务金额应使用十进制定点方案。
1258
+ * @param value - 有限数字。
1259
+ * @param digits - 小数位数;负数表示十位、百位等,范围 -15 至 15。
1260
+ * @returns 按 `Math.round` 语义舍入后的数字。
1261
+ * @throws `RangeError` 当值非有限或位数超出范围。
1262
+ */
1263
+ export declare function roundTo(value: number, digits?: number): number;
1264
+ /**
1265
+ * 对有限数字求和。
1266
+ *
1267
+ * @param values - 不会被修改的数字数组。
1268
+ * @returns 算术和;空数组返回 `0`。
1269
+ * @throws `RangeError` 当任一值非有限或累计结果溢出。
1270
+ */
1271
+ export declare function sum(values: readonly number[]): number;
1272
+ /**
1273
+ * 计算有限数字的算术平均值。
1274
+ *
1275
+ * @param values - 不会被修改的数字数组。
1276
+ * @returns 空数组或只有稀疏空位的数组返回 `undefined`;空位不参与分母。
1277
+ * @throws `RangeError` 当任一值非有限。
1278
+ */
1279
+ export declare function average(values: readonly number[]): number | undefined;
1280
+ /**
1281
+ * 在两个数字间做线性插值。
1282
+ *
1283
+ * @remarks `amount` 不限制在 0 至 1;区间外的值会执行线性外推。
1284
+ * @param start - `amount = 0` 时的起点。
1285
+ * @param end - `amount = 1` 时的终点。
1286
+ * @param amount - 插值或外推比例。
1287
+ * @returns 线性计算结果。
1288
+ * @throws `RangeError` 当任一参数非有限或结果超出有限数字范围。
1289
+ */
1290
+ export declare function lerp(start: number, end: number, amount: number): number;
1291
+ /**
1292
+ * 将非负字节数格式化为 SI 或 IEC 单位。
1293
+ *
1294
+ * @param bytes - 非负有限字节数。
1295
+ * @param options - 基数、小数位和语言选项。
1296
+ * @returns 例如 `1.5 KiB`。
1297
+ * @throws `RangeError` 当字节数为负或非有限、基数不是 1000/1024、小数位非法,或 Locale 无效。
1298
+ */
1299
+ export declare function formatBytes(bytes: number, options?: FormatBytesOptions): string;
1300
+ /**
1301
+ * 在半开区间内生成随机整数。
1302
+ *
1303
+ * @remarks 优先使用 Web Crypto;平台缺少安全随机能力时回退到 `Math.random()`。
1304
+ * @param minimum - 包含的安全整数下界。
1305
+ * @param maximumExclusive - 不包含的安全整数上界;区间宽度最大为 2^32。
1306
+ * @returns 位于 `[minimum, maximumExclusive)` 的随机整数。
1307
+ * @throws 参数非法时抛出 `RangeError`。
1308
+ */
1309
+ export declare function randomInt(minimum: number, maximumExclusive: number): number;
1310
+ //#endregion
1311
+ //#region src/object/index.d.ts
1312
+ /** URL 查询参数支持的单值类型。 */
1313
+ export type QueryPrimitive = bigint | boolean | number | string | null | undefined;
1314
+ /** URL 查询参数值;数组使用重复键表示。 */
1315
+ export type QueryValue = QueryPrimitive | readonly QueryPrimitive[];
1316
+ /** {@link toQueryString} 的序列化选项。 */
1317
+ export interface QueryStringOptions {
1318
+ /** 返回非空结果时是否添加 `?`;默认 `false`。 */
1319
+ prefixQuestionMark?: boolean;
1320
+ /** 是否按键的 UTF-16 码元顺序稳定排序;默认保留对象枚举顺序。 */
1321
+ sort?: boolean;
1322
+ /** 空格编码方式;默认遵循表单编码并输出 `+`。 */
1323
+ space?: "percent" | "plus";
1324
+ }
1325
+ /**
1326
+ * 判断值是否是普通对象。
1327
+ *
1328
+ * @param value - 任意待检查值。
1329
+ * @returns 原型为 `Object.prototype` 或 `null` 时返回 `true`。
1330
+ */
1331
+ export declare function isPlainObject(value: unknown): value is Record<PropertyKey, unknown>;
1332
+ /**
1333
+ * 安全判断对象是否拥有自己的属性。
1334
+ *
1335
+ * @remarks 不调用可能被对象覆盖的 `hasOwnProperty`。
1336
+ * @param value - 待检查对象。
1337
+ * @param key - 字符串、数字或 Symbol 属性键。
1338
+ * @returns 属性为对象自有属性时返回 `true`,并收窄键类型。
1339
+ */
1340
+ export declare function hasOwn<ObjectType extends object, Key extends PropertyKey>(value: ObjectType, key: Key): key is Key & keyof ObjectType;
1341
+ /**
1342
+ * 递归创建值的深层副本。
1343
+ *
1344
+ * @remarks 支持循环引用、共享引用、Symbol 键、对象原型、ArrayBuffer、DataView、Date、Map、RegExp、Set 和 TypedArray。
1345
+ * Map 的键保持原引用,函数及其他不可克隆值在嵌套位置保持原引用;只复制自有可枚举属性。
1346
+ * @param value - 需要深复制的任意值。
1347
+ * @returns 与输入类型一致且不共享可克隆嵌套值的新值;原始类型直接返回自身。
1348
+ */
1349
+ export declare function cloneDeep<Value>(value: Value): Value;
1350
+ /**
1351
+ * 深度比较两个值是否等价。
1352
+ *
1353
+ * @remarks 原始值使用 SameValueZero 语义;支持循环引用、数组、对象、ArrayBuffer、DataView、Date、Error、Map、RegExp、Set、Symbol 和 TypedArray。
1354
+ * 对象只比较自有可枚举字符串与 Symbol 属性,函数及其他不支持的宿主对象仅在引用相同时相等。
1355
+ * @param left - 第一待比较值。
1356
+ * @param right - 第二待比较值。
1357
+ * @returns 两个值深度等价时返回 `true`。
1358
+ */
1359
+ export declare function isEqual(left: unknown, right: unknown): boolean;
1360
+ /**
1361
+ * 从对象中选择指定自有可枚举属性。
1362
+ *
1363
+ * @remarks 字面量键数组保留精确返回类型;普通 `string[]` 等动态键数组返回 `Partial<Source>`。
1364
+ * @param source - 不会被修改的源对象。
1365
+ * @param keys - 需要保留的键;不存在的键被忽略。
1366
+ * @returns 新对象,保持 `keys` 的遍历顺序。
1367
+ */
1368
+ export declare function pick<Source extends object, const Keys extends readonly (keyof Source)[]>(source: Source, keys: Keys): Pick<Source, Keys[number]>;
1369
+ export declare function pick<Source extends object>(source: Source, keys: readonly PropertyKey[]): Partial<Source>;
1370
+ /**
1371
+ * 浅复制对象并删除指定属性。
1372
+ *
1373
+ * @remarks 字面量键数组保留精确返回类型;普通 `string[]` 等动态键数组返回 `Partial<Source>`。
1374
+ * @param source - 不会被修改的源对象。
1375
+ * @param keys - 需要排除的键。
1376
+ * @returns 包含其余自有可枚举字符串与 Symbol 属性的新对象。
1377
+ */
1378
+ export declare function omit<Source extends object, const Keys extends readonly (keyof Source)[]>(source: Source, keys: Keys): Omit<Source, Keys[number]>;
1379
+ export declare function omit<Source extends object>(source: Source, keys: readonly PropertyKey[]): Partial<Source>;
1380
+ /**
1381
+ * 按条件排除对象的自有可枚举属性。
1382
+ *
1383
+ * @param source - 不会被修改的源对象。
1384
+ * @param predicate - 接收属性值、键和源对象;返回真值时排除该属性。
1385
+ * @returns 由未匹配属性组成的新对象。
1386
+ */
1387
+ export declare function omitBy<Source extends object>(source: Source, predicate: (value: Source[keyof Source], key: keyof Source, source: Source) => unknown): Partial<Source>;
1388
+ /**
1389
+ * 按条件选择对象的自有可枚举属性。
1390
+ *
1391
+ * @param source - 不会被修改的源对象。
1392
+ * @param predicate - 接收属性值、键和源对象;返回真值时保留该属性。
1393
+ * @returns 由匹配属性组成的新对象。
1394
+ */
1395
+ export declare function pickBy<Source extends object>(source: Source, predicate: (value: Source[keyof Source], key: keyof Source, source: Source) => unknown): Partial<Source>;
1396
+ /**
1397
+ * 映射对象的自有可枚举属性值。
1398
+ *
1399
+ * @param source - 不会被修改的源对象。
1400
+ * @param mapper - 接收值、键和源对象的映射函数。
1401
+ * @returns 保留原键的新对象。
1402
+ */
1403
+ export declare function mapValues<Source extends object, Result>(source: Source, mapper: (value: Source[keyof Source], key: keyof Source, source: Source) => Result): { [Key in keyof Source]: Result; };
1404
+ /**
1405
+ * 对自有可枚举属性执行 SameValue 浅比较。
1406
+ *
1407
+ * @remarks 嵌套对象只比较引用;`NaN` 相等,`0` 与 `-0` 不相等。
1408
+ * @param left - 第一对象。
1409
+ * @param right - 第二对象。
1410
+ * @returns 自有可枚举键集合与对应值均满足 SameValue 时返回 `true`。
1411
+ */
1412
+ export declare function shallowEqual(left: object, right: object): boolean;
1413
+ /**
1414
+ * 将对象序列化为标准 URL 查询字符串。
1415
+ *
1416
+ * @remarks `null` 与 `undefined` 被跳过;数组使用重复键;返回值不会修改输入。
1417
+ * @param value - 查询参数对象。
1418
+ * @param options - 排序、空格和问号前缀选项。
1419
+ * @returns URL 编码后的查询字符串;没有参数时始终返回空字符串。
1420
+ * @throws `RangeError` 当参数包含 `NaN` 或无穷数字。
1421
+ */
1422
+ export declare function toQueryString(value: Readonly<Record<string, QueryValue>>, options?: QueryStringOptions): string;
1423
+ //#endregion
1424
+ //#region src/storage/index.d.ts
1425
+ /** Storage 业务值编码器。 */
1426
+ export interface StorageCodec {
1427
+ /**
1428
+ * 把已编码文本恢复为业务值。
1429
+ * @param value - 由同一 Codec 的 `encode` 生成并持久化的文本。
1430
+ * @returns 解码后的业务值。
1431
+ * @throws 当文本损坏、格式不受支持或无法反序列化时应抛出错误。
1432
+ */
1433
+ decode: (value: string) => unknown;
1434
+ /**
1435
+ * 把业务值编码为可持久化字符串。
1436
+ * @param value - 调用方传入的业务值。
1437
+ * @returns 可由同一 Codec 的 `decode` 无损恢复的文本。
1438
+ * @throws 当值不受支持或无法序列化时应抛出错误。
1439
+ */
1440
+ encode: (value: unknown) => string;
1441
+ }
1442
+ /** 程序入口调用 {@link configureStorage} 时使用的全局配置。 */
1443
+ export interface StorageConfiguration {
1444
+ /** 自定义值编码器;默认使用严格 JSON Codec,同一应用生命周期内必须保持同一引用。 */
1445
+ codec?: StorageCodec;
1446
+ /** 启用 Base64 可逆混淆;不提供加密、完整性或认证,不能与 `codec` 同时使用。 */
1447
+ crypto?: boolean;
1448
+ /** 返回 Unix 毫秒时间戳的时钟;默认使用 `Date.now`,主要用于 TTL 测试与受控时间源。 */
1449
+ now?: () => number;
1450
+ /** 所有物理键使用的非空命名空间前缀; */
1451
+ prefix?: string;
1452
+ }
1453
+ /** 单次 Storage 读取配置。 */
1454
+ export interface StorageReadOptions {
1455
+ /**
1456
+ * 仅覆盖本次读取使用的 Codec;`true` 使用 Base64 混淆,`false` 使用 JSON,省略时使用全局配置。
1457
+ * 必须与写入该条目时使用的单次设置一致。
1458
+ */
1459
+ crypto?: boolean;
1460
+ }
1461
+ /** 单次 Storage 写入配置。 */
1462
+ export interface StorageWriteOptions extends StorageReadOptions {
1463
+ /** 从写入时刻开始的有效毫秒数;必须是大于 0 的有限数,省略时永久有效。 */
1464
+ ttlMs?: number;
1465
+ }
1466
+ /** `Local` 与 `Session` 的统一操作接口。 */
1467
+ export interface StorageArea {
1468
+ /** 当前全局 Storage 配置的物理键前缀;首次读取会激活默认配置。 */
1469
+ readonly prefix: string;
1470
+ /**
1471
+ * 删除当前命名空间内的全部键,不影响同一后端中的其他应用键。
1472
+ * @throws `Error` 当当前平台后端不可用。
1473
+ */
1474
+ clear: () => void;
1475
+ /**
1476
+ * 获取并解码业务值;已过期记录会在读取时删除。
1477
+ * @param key - 不含全局前缀的非空业务键。
1478
+ * @param options - 可选的单次 Base64 混淆开关;必须与写入时一致。
1479
+ * @returns 解码后的值;未传泛型时静态类型默认为 `string`,键缺失或过期时返回 `undefined`。
1480
+ * @throws 当键非法、包络损坏、Codec 解码失败或后端不可用时抛出错误。
1481
+ */
1482
+ get: <Value = string>(key: string, options?: StorageReadOptions) => Value | undefined;
1483
+ /**
1484
+ * 判断一个可成功读取且未过期的业务键是否存在。
1485
+ * @param key - 不含全局前缀的非空业务键。
1486
+ * @returns 键存在且包络有效时返回 `true`。
1487
+ */
1488
+ has: (key: string) => boolean;
1489
+ /**
1490
+ * 返回当前命名空间内的业务键快照。
1491
+ * @returns 已移除全局前缀并按字典序排列的新数组;不会自动清理过期项。
1492
+ */
1493
+ keys: () => string[];
1494
+ /**
1495
+ * 扫描当前命名空间并删除全部过期记录。
1496
+ * @returns 本次实际删除的记录数量。
1497
+ * @throws 当发现损坏包络或后端不可用时抛出错误。
1498
+ */
1499
+ pruneExpired: () => number;
1500
+ /**
1501
+ * 删除单个业务键;键不存在时保持幂等。
1502
+ * @param key - 不含全局前缀的非空业务键。
1503
+ */
1504
+ remove: (key: string) => void;
1505
+ /**
1506
+ * 删除业务键以指定文本开头的全部条目,范围仍受全局命名空间限制。
1507
+ * @param keyPrefix - 不含全局前缀的非空业务键前缀。
1508
+ */
1509
+ removeByPrefix: (keyPrefix: string) => void;
1510
+ /**
1511
+ * 编码并写入业务值,可附加惰性清理的 TTL。
1512
+ * @param key - 不含全局前缀的非空业务键。
1513
+ * @param value - 必须受当前 Codec 支持的业务值。
1514
+ * @param options - 可选的单次写入 TTL 与 Base64 混淆开关。
1515
+ * @throws 当键、TTL、业务值或后端写入无效时抛出错误。
1516
+ */
1517
+ set: <Value>(key: string, value: Value, options?: StorageWriteOptions) => void;
1518
+ }
1519
+ /** Base64 混淆 Codec;只隐藏明文外观,不提供加密、完整性或认证。 */
1520
+ export declare const base64StorageCodec: StorageCodec;
1521
+ /** 浏览器 localStorage 或自动检测的 uni-app Storage 全局业务入口。 */
1522
+ export declare const Local: StorageArea;
1523
+ /** 浏览器 sessionStorage 的全局业务入口;uni-app 不提供会话存储。 */
1524
+ export declare const Session: StorageArea;
1525
+ /**
1526
+ * 在首次 Storage 操作前可选配置 `Local` 与 `Session`。
1527
+ *
1528
+ * @remarks 不调用时在首次操作上使用 `fast__`、JSON Codec 与 `Date.now`。首次激活后只允许以完全相同的值和引用重复调用。若检测到
1529
+ * 全局 `uni`,则自动使用其同步 Storage 且只启用 `Local`,否则使用浏览器 `localStorage` 与 `sessionStorage`。
1530
+ * `crypto: true` 仅恢复旧版 Base64 混淆行为,不能保护敏感数据。
1531
+ * @param options - 可选的全局键前缀、Codec、旧版混淆选项与时钟。
1532
+ * @throws 配置非法、重复配置冲突或目标平台 Storage 不可用时抛出错误。
1533
+ */
1534
+ export declare function configureStorage(options?: StorageConfiguration): void;
1535
+ /** 返回全局 Storage 是否已经由应用入口配置。 */
1536
+ export declare function isStorageConfigured(): boolean;
1537
+ //#endregion
1538
+ //#region src/string/index.d.ts
1539
+ /** 查询字符串解析结果;重复键保留为数组,不存在的键读取为 `undefined`。 */
1540
+ export type ParsedQueryParameters = Record<string, string | string[] | undefined>;
1541
+ /** 大小写与字素分割可接受的显式语言;省略时固定使用 `en-US` 以保持输出稳定。 */
1542
+ export type StringLocale = string | readonly string[] | undefined;
1543
+ /**
1544
+ * 重复执行 URI 组件解码,直到值稳定或达到深度上限。
1545
+ *
1546
+ * @param value - 不包含 URI 路径语义的编码组件。
1547
+ * @param maxDepth - 最大解码次数,默认 `10`。
1548
+ * @returns 解码稳定或达到上限后的组件文本。
1549
+ * @throws `URIError` 当任一层包含非法百分号序列;深度非法时抛出 `RangeError`。
1550
+ */
1551
+ export declare function decodeURIComponentRepeatedly(value: string, maxDepth?: number): string;
1552
+ /**
1553
+ * 解析带 `://` 的绝对 URL、`?query` 或纯查询字符串。
1554
+ *
1555
+ * @remarks 纯查询字符串值中的未编码 `?` 会作为值内容保留;片段标识及其后内容被忽略。
1556
+ * @param input - 完整 URL、带前导问号或不带前导问号的查询文本。
1557
+ * @returns 重复键对应字符串数组,空值保留为空字符串。
1558
+ */
1559
+ export declare function parseQueryString(input: string): ParsedQueryParameters;
1560
+ /**
1561
+ * 判断文本是否为任意合法 JSON 值,包括标量与 `null`。
1562
+ *
1563
+ * @param value - 待解析文本;纯空白不视为 JSON。
1564
+ * @returns `JSON.parse` 能完整解析时返回 `true`。
1565
+ */
1566
+ export declare function isValidJson(value: string): boolean;
1567
+ /**
1568
+ * 按大小写边界、连字符、下划线与空白切分单词。
1569
+ *
1570
+ * @example `XMLHttp_request` 返回 `["XML", "Http", "request"]`。
1571
+ * @param value - 待拆分文本。
1572
+ * @returns 删除空项、保持输入顺序的单词数组。
1573
+ */
1574
+ export declare function splitWords(value: string): string[];
1575
+ /**
1576
+ * 将首个 Unicode 码点转为大写。
1577
+ *
1578
+ * @param value - 输入文本;空字符串保持为空。
1579
+ * @param locale - 显式语言,默认固定为 `en-US`。
1580
+ * @returns 首个 Unicode 码点转换后的文本。
1581
+ */
1582
+ export declare function upperFirst(value: string, locale?: StringLocale): string;
1583
+ /**
1584
+ * 将首个 Unicode 码点转为小写。
1585
+ *
1586
+ * @param value - 输入文本;空字符串保持为空。
1587
+ * @param locale - 显式语言,默认固定为 `en-US`。
1588
+ * @returns 首个 Unicode 码点转换后的文本。
1589
+ */
1590
+ export declare function lowerFirst(value: string, locale?: StringLocale): string;
1591
+ /**
1592
+ * 将文本转换为 camelCase。
1593
+ *
1594
+ * @param value - 由大小写、连字符、下划线或空白分隔的文本。
1595
+ * @param locale - 大小写转换使用的语言,默认固定为 `en-US`。
1596
+ * @returns camelCase 文本。
1597
+ */
1598
+ export declare function camelCase(value: string, locale?: StringLocale): string;
1599
+ /**
1600
+ * 将文本转换为 PascalCase。
1601
+ *
1602
+ * @param value - 参数语义与 {@link camelCase} 一致。
1603
+ * @param locale - 大小写转换使用的显式语言。
1604
+ * @returns PascalCase 文本。
1605
+ */
1606
+ export declare function pascalCase(value: string, locale?: StringLocale): string;
1607
+ /**
1608
+ * 将文本转换为 kebab-case。
1609
+ *
1610
+ * @param value - 参数语义与 {@link camelCase} 一致。
1611
+ * @param locale - 大小写转换使用的显式语言。
1612
+ * @returns kebab-case 文本。
1613
+ */
1614
+ export declare function kebabCase(value: string, locale?: StringLocale): string;
1615
+ /**
1616
+ * 按 Unicode 字素簇截断文本,避免拆开 emoji、组合音标或代理对。
1617
+ *
1618
+ * @param value - 输入文本。
1619
+ * @param maxLength - 保留的最大字素簇数量。
1620
+ * @param suffix - 被截断时追加的文本,默认单字符省略号 `…`;不计入上限。
1621
+ * @param locale - 字素分割语言,默认固定为 `en-US`。
1622
+ * @returns 未超限时返回原字符串,否则返回截断内容与后缀。
1623
+ * @throws `RangeError` 当 `maxLength` 不是非负安全整数或 Locale 无效;缺少
1624
+ * `Intl.Segmenter` 时抛出 `Error`。
1625
+ */
1626
+ export declare function truncateGraphemes(value: string, maxLength: number, suffix?: string, locale?: StringLocale): string;
1627
+ /**
1628
+ * 把文本复制到系统剪贴板。
1629
+ *
1630
+ * @remarks uni-app 使用 `setClipboardData`;浏览器优先使用 Clipboard API,并在该 API 不可用时
1631
+ * 回退到 `document.execCommand("copy")`。平台拒绝访问剪贴板时不会静默忽略错误。
1632
+ * @param value - 要复制的文本。
1633
+ * @returns 复制完成后兑现的 Promise。
1634
+ * @throws `Error` 当运行时没有可用的剪贴板能力或复制失败。
1635
+ */
1636
+ export declare function copy(value: string): Promise<void>;
1637
+ /**
1638
+ * 生成随机字符串。
1639
+ *
1640
+ * @remarks 优先使用 Web Crypto;平台缺少安全随机能力时回退到 `Math.random()`。
1641
+ * @param length - 字符数量,必须是 0 至 1,000,000 的安全整数。
1642
+ * @param alphabet - 不得为空、包含重复字符或超过 2^32 个 Unicode 码点。
1643
+ * @returns 由 `alphabet` 中 Unicode 码点组成的随机文本。
1644
+ * @throws `RangeError` 当长度或字母表非法。
1645
+ */
1646
+ export declare function randomString(length: number, alphabet?: string): string;
1647
+ /**
1648
+ * 生成 RFC 4122 version 4 UUID。
1649
+ *
1650
+ * @remarks 优先使用 Web Crypto;平台缺少安全随机能力时回退到 `Math.random()`。
1651
+ * 该 UUID 适合普通唯一标识,不应作为安全令牌或秘密。
1652
+ * @returns 小写、带连字符的 UUID v4。
1653
+ */
1654
+ export declare function generateUuidV4(): string;
1655
+ /**
1656
+ * 判断字符串是否为 RFC 4122 version 4 UUID。
1657
+ *
1658
+ * @param value - 待验证文本;十六进制字母大小写均可。
1659
+ * @returns 版本位与 Variant 位均正确时返回 `true`。
1660
+ */
1661
+ export declare function isUuidV4(value: string): boolean;
1662
+ /**
1663
+ * 转义 HTML 文本上下文中的五个特殊字符。
1664
+ *
1665
+ * @remarks 这不是 HTML 清洗器,不能让不可信文本安全进入 URL、CSS、脚本或属性名上下文。
1666
+ * @param value - 将作为 HTML 文本节点内容的字符串。
1667
+ * @returns 转义 `&`、`<`、`>`、双引号与单引号后的文本。
1668
+ */
1669
+ export declare function escapeHtml(value: string): string;
1670
+ /**
1671
+ * 把连续 Unicode 空白折叠为单个空格并删除两端空白。
1672
+ *
1673
+ * @param value - 输入文本。
1674
+ * @returns 规范化后的文本;全空白输入返回空字符串。
1675
+ */
1676
+ export declare function normalizeWhitespace(value: string): string;
1677
+ //#endregion
1678
+ //#region src/vue/breakpoints.d.ts
1679
+ /** 断点名称与最小视口宽度的映射。 */
1680
+ export type Breakpoints<Key extends string = string> = Readonly<Record<Key, number>>;
1681
+ /** `useBreakpoints` 返回的断点状态。 */
1682
+ export type UseBreakpointsReturn<Key extends string> = Readonly<Record<Key, Readonly<ShallowRef<boolean>>>> & {
1683
+ /** 返回当前命中的最大断点名称。 */
1684
+ active: () => ComputedRef<Key | "">;
1685
+ };
1686
+ /**
1687
+ * 使用原生 Media Query 创建响应式最小宽度断点。
1688
+ *
1689
+ * @param breakpoints - 断点名称与非负像素宽度的映射。
1690
+ * @returns 每个断点的只读状态和当前最大命中断点。
1691
+ * @throws `Error` 当浏览器环境中不存在可用于自动清理的 Vue 响应式作用域。
1692
+ * @throws `TypeError` 当断点使用保留名称 `active`。
1693
+ * @throws `RangeError` 当断点宽度不是非负有限数值。
1694
+ */
1695
+ export declare function useBreakpoints<Key extends string>(breakpoints: Breakpoints<Key>): UseBreakpointsReturn<Key>;
1696
+ //#endregion
1697
+ //#region src/vue/resize-observer.d.ts
1698
+ /** `useResizeObserver` 接受的元素或响应式元素。 */
1699
+ export type ResizeObserverTarget = MaybeRefOrGetter<Element | null | undefined>;
1700
+ /**
1701
+ * 监听元素尺寸变化,并随响应式目标切换和 Vue 作用域销毁自动断开。
1702
+ *
1703
+ * @param target - 原生元素、Ref 或 Getter。
1704
+ * @param callback - 原生 ResizeObserver 回调。
1705
+ * @param options - 原生元素观察选项。
1706
+ * @returns 可提前断开观察的停止函数;运行时不支持 ResizeObserver 时为空操作。
1707
+ */
1708
+ export declare function useResizeObserver(target: ResizeObserverTarget, callback: ResizeObserverCallback, options?: ResizeObserverOptions): () => void;
1709
+ //#endregion
1710
+ //#region src/vue/element-size.d.ts
1711
+ /** 元素的二维尺寸。 */
1712
+ export interface ElementSize {
1713
+ readonly width: number;
1714
+ readonly height: number;
1715
+ }
1716
+ /** `useElementSize` 返回的响应式尺寸和停止函数。 */
1717
+ export interface UseElementSizeReturn {
1718
+ readonly width: Readonly<ShallowRef<number>>;
1719
+ readonly height: Readonly<ShallowRef<number>>;
1720
+ readonly stop: () => void;
1721
+ }
1722
+ /**
1723
+ * 响应式读取元素 Content Rect 尺寸。
1724
+ *
1725
+ * @param target - 原生元素、Ref 或 Getter。
1726
+ * @param initialSize - 收到首次观察结果前的尺寸,默认均为 `0`。
1727
+ * @param options - 原生元素观察选项。
1728
+ * @returns 只读宽度、高度和手动停止函数。
1729
+ */
1730
+ export declare function useElementSize(target: ResizeObserverTarget, initialSize?: ElementSize, options?: ResizeObserverOptions): UseElementSizeReturn;
1731
+ //#endregion
1732
+ //#region src/vue/emits.d.ts
1733
+ /** Vue Emits 对象中允许的校验器形状。 */
1734
+ type EmitValidator = ((...arguments_: never[]) => unknown) | null;
1735
+ /** 事件名到可选参数校验器的内部映射。 */
1736
+ type EmitsOptions = Record<string, EmitValidator>;
1737
+ /** 从校验器中提取事件参数;无校验器时保留未知参数。 */
1738
+ type EventArguments<Validator> = Validator extends ((...arguments_: infer Arguments) => unknown) ? Arguments : unknown[];
1739
+ /** 在类型层递归把 kebab-case 事件名转换为 PascalCase。 */
1740
+ type PascalEventName<Value extends string> = Value extends `${infer Head}-${infer Tail}` ? `${Capitalize<Head>}${PascalEventName<Tail>}` : Capitalize<Value>;
1741
+ /** 把事件配置映射为 Vue `onXxx` 属性。 */
1742
+ export type EmitHandlers<Emits extends EmitsOptions> = { [Name in keyof Emits as Name extends string ? `on${PascalEventName<Name>}` : never]: (...arguments_: EventArguments<Emits[Name]>) => void; };
1743
+ /**
1744
+ * 构建响应式 Vue 事件处理器。
1745
+ *
1746
+ * @param emits - Vue emits 配置对象。
1747
+ * @param emit - `setup` 上下文提供的 emit 函数。
1748
+ * @param ignoredEvents - 不需要向子组件透传的事件名。
1749
+ * @returns 随配置重新计算的事件处理器对象。
1750
+ */
1751
+ export declare function useEmits<Emits extends EmitsOptions>(emits: Emits, emit: (...arguments_: never[]) => unknown, ignoredEvents?: readonly (keyof Emits)[]): ComputedRef<Partial<EmitHandlers<Emits>>>;
1752
+ //#endregion
1753
+ //#region src/vue/event-listener.d.ts
1754
+ /** `useEventListener` 接受的原生事件目标或响应式事件目标。 */
1755
+ export type EventTargetSource = MaybeRefOrGetter<EventTarget | null | undefined>;
1756
+ /**
1757
+ * 注册原生事件监听器,并在目标变化或 Vue 作用域销毁时自动移除。
1758
+ *
1759
+ * @param target - 原生事件目标、Ref 或 Getter。
1760
+ * @param event - 原生事件名称。
1761
+ * @param listener - 事件回调。
1762
+ * @param options - 原生事件监听选项。
1763
+ * @returns 可提前移除监听器的停止函数。
1764
+ */
1765
+ export declare function useEventListener<EventType extends Event = Event>(target: EventTargetSource, event: string, listener: (event: EventType) => void, options?: boolean | AddEventListenerOptions): () => void;
1766
+ //#endregion
1767
+ //#region src/vue/expose.d.ts
1768
+ /**
1769
+ * 同时暴露组件实例能力并返回同一个对象,便于 `setup` 返回状态供 Vue Devtools 查看。
1770
+ *
1771
+ * @param expose - `setup` 上下文提供的 expose 函数。
1772
+ * @param exposed - 需要暴露的状态和方法。
1773
+ * @returns 原始 exposed 对象。
1774
+ */
1775
+ export declare function useExpose<Exposed extends object>(expose: (exposed?: Exposed) => void, exposed: Exposed): Exposed;
1776
+ //#endregion
1777
+ //#region src/vue/func.d.ts
1778
+ /** 可同步或异步返回结果的函数。 */
1779
+ export type AwaitableFunction<Arguments extends readonly unknown[], Result> = (...arguments_: Arguments) => Result | PromiseLike<Result>;
1780
+ /**
1781
+ * 统一执行同步或异步函数,异常保持原样向调用方传播。
1782
+ *
1783
+ * @param function_ - 可选的待执行函数。
1784
+ * @param arguments_ - 原样传入函数的参数。
1785
+ * @returns 函数结果;未传函数时返回 `undefined`。
1786
+ */
1787
+ export declare function callOptionalFunction<Arguments extends readonly unknown[], Result>(function_: AwaitableFunction<Arguments, Result> | null | undefined, ...arguments_: Arguments): Promise<Awaited<Result> | undefined>;
1788
+ //#endregion
1789
+ //#region src/vue/install.d.ts
1790
+ /** Vue 组件对象、函数组件或指令对象可接受的最小结构类型。 */
1791
+ export type VueInstallValue = object | ((...arguments_: never[]) => unknown);
1792
+ /** 为 Vue 组件或指令附加供 Vue 3 `app.use()` 调用的安装能力。 */
1793
+ export type Installable<Value> = Value & {
1794
+ /**
1795
+ * 把当前组件或指令安装到 Vue 3 App。
1796
+ * @param app - Vue 3 App 实例。
1797
+ */
1798
+ install: (app: App) => void;
1799
+ };
1800
+ /** TSX 组件安装类型;与 {@link Installable} 保持同一运行时契约。 */
1801
+ export type TSXWithInstall<Value> = Installable<Value>;
1802
+ /**
1803
+ * 为主组件附加 Vue 3 `app.use()` 安装能力。
1804
+ *
1805
+ * @remarks 函数会直接为 `main` 定义附属组件属性和 `install`。所有组件名称、附属属性
1806
+ * 冲突会在修改 `main` 前完成校验;安装到 App 时也会先预检全部全局名称,再统一注册。
1807
+ * @param main - 具有非空 `name` 的组件。
1808
+ * @param extras - 同时注册并以可枚举属性挂到主组件的附属组件映射。
1809
+ * @returns 原始 `main` 引用,并附加类型化的 `install` 与 `extras` 属性。
1810
+ * @throws `TypeError` 当组件缺少合法名称、已有 `install`、附属键或名称发生冲突。
1811
+ * @throws `Error` 当 App 中同名位置已经注册其他组件。
1812
+ */
1813
+ export declare function withInstall<Main extends VueInstallValue, Extras extends Record<string, VueInstallValue> = Record<never, never>>(main: Main, extras?: Extras): Installable<Main> & Extras;
1814
+ /**
1815
+ * 为不需要单独注册的附属组件附加空安装函数。
1816
+ *
1817
+ * @remarks 适用于只能作为主组件附属属性使用、但仍需满足 Vue Plugin 类型的组件。
1818
+ * 函数直接修改并返回传入组件,不会向 Vue 3 App 注册内容。
1819
+ * @param component - 尚未定义或继承 `install` 属性的组件。
1820
+ * @returns 原组件引用及无副作用的 `install` 方法。
1821
+ * @throws `TypeError` 当组件自身或原型链已经存在 `install`。
1822
+ */
1823
+ export declare function withNoopInstall<Value extends VueInstallValue>(component: Value): TSXWithInstall<Value>;
1824
+ /**
1825
+ * 为 Vue 3 指令附加插件安装能力。
1826
+ *
1827
+ * @remarks 函数直接修改并返回指令。安装时重复注册同一引用保持幂等,不会覆盖同名的
1828
+ * 其他指令。名称只传给 `directive()`,不得包含 `v-` 前缀。
1829
+ * @param directive - 尚未定义或继承 `install` 属性的 Vue 指令对象。
1830
+ * @param name - 非空、无空白且不以 `v-` 开头的全局指令名。
1831
+ * @returns 原指令引用及 Vue Plugin `install` 方法。
1832
+ * @throws `TypeError` 当名称非法、指令已有 `install`,或安装目标无效。
1833
+ * @throws `Error` 当 App 中同名位置已经注册其他指令。
1834
+ */
1835
+ export declare function withInstallDirective<Value extends VueInstallValue>(directive: Value, name: string): Installable<Value>;
1836
+ //#endregion
1837
+ //#region src/vue/now.d.ts
1838
+ /**
1839
+ * 按固定间隔提供响应式当前时间。
1840
+ *
1841
+ * @param intervalMilliseconds - 更新时间间隔,默认 `1000` 毫秒。
1842
+ * @returns 当前 Date 的只读 ShallowRef;SSR 环境只返回调用时的时间。
1843
+ * @throws `Error` 当浏览器或 uni-app 环境中不存在可用于自动清理的 Vue 响应式作用域。
1844
+ * @throws `RangeError` 当间隔不是平台计时器支持的非负有限整数。
1845
+ */
1846
+ export declare function useNow(intervalMilliseconds?: number): Readonly<ShallowRef<Date>>;
1847
+ //#endregion
1848
+ //#region src/vue/props.d.ts
1849
+ /**
1850
+ * 为 Vue 运行时 Props 构造器附加泛型类型。
1851
+ *
1852
+ * @remarks 该函数只帮助 TypeScript 建模,不验证运行时值与 `Value` 一致;调用方仍应
1853
+ * 传入 Vue 支持的构造器或构造器数组。
1854
+ * @param runtimeType - Vue 支持的运行时构造器或构造器数组。
1855
+ * @returns 同一引用,仅在类型层收窄为 `PropType<Value>`。
1856
+ */
1857
+ export declare function definePropType<Value>(runtimeType: unknown): PropType<Value>;
1858
+ /**
1859
+ * 构建需要透传给子组件的响应式 Props。
1860
+ *
1861
+ * @param props - Vue `setup` 接收的只读响应式 Props 对象。
1862
+ * @param rawProps - 子组件的运行时 Props 配置。
1863
+ * @param ignoredProps - 不需要透传的 Props 名称。
1864
+ * @returns 只包含 `rawProps` 声明键且随 Props 更新的 ComputedRef。
1865
+ */
1866
+ export declare function useProps<Props extends object, RawProps extends object, IgnoredProp extends keyof RawProps = never>(props: Props, rawProps: RawProps, ignoredProps?: readonly IgnoredProp[]): ComputedRef<Omit<Pick<Props, Extract<keyof Props, keyof RawProps>>, Extract<IgnoredProp, keyof Props>>>;
1867
+ //#endregion
1868
+ //#region src/vue/render.d.ts
1869
+ /**
1870
+ * 在当前 Vue 3 组件实例上安装 TSX 渲染函数。
1871
+ * @remarks `setup` 仍可返回状态对象,因此状态能够显示在 Vue Devtools 中。
1872
+ * @param render - 当前组件的渲染函数。
1873
+ * @throws 不在组件 `setup` 调用栈中使用时抛出 `Error`。
1874
+ */
1875
+ export declare function useRender(render: () => VNode): void;
1876
+ //#endregion
1877
+ //#region src/vue/slots.d.ts
1878
+ /** Slot 名到 Props 类型的内部声明映射。 */
1879
+ type RawSlots = Record<string, unknown>;
1880
+ /** 根据 Slot Props 是否为 never 生成无参数或有参数的 Slot 签名。 */
1881
+ type VueSlot<Properties> = [Properties] extends [never] ? () => VNode[] : (properties: Properties) => VNode[];
1882
+ /** 把 Slot 名称与作用域参数映射为 Vue 3 Slot 函数。 */
1883
+ export type TypedSlots<Slots extends RawSlots> = { [Name in keyof Slots]: VueSlot<Slots[Name]>; };
1884
+ /** Vue 3 `slots` 选项接受的运行时声明与官方静态类型标记。 */
1885
+ export type TypedSlotsDeclaration<Slots extends RawSlots> = SlotsType<Partial<TypedSlots<Slots>>>;
1886
+ /**
1887
+ * 为 Options API 的 `slots` 选项创建带作用域参数的类型声明。
1888
+ *
1889
+ * @returns 运行时 `Object` 构造器,并携带仅供 TypeScript 使用的 Slot 类型标记。
1890
+ */
1891
+ export declare function makeSlots<Slots extends RawSlots>(): TypedSlotsDeclaration<Slots>;
1892
+ //#endregion
1893
+ //#region src/vue/window-size.d.ts
1894
+ /** `useWindowSize` 返回的只读窗口尺寸。 */
1895
+ export interface UseWindowSizeReturn {
1896
+ readonly width: Readonly<ShallowRef<number>>;
1897
+ readonly height: Readonly<ShallowRef<number>>;
1898
+ }
1899
+ /**
1900
+ * 响应式读取浏览器窗口内部尺寸。
1901
+ *
1902
+ * @returns 随原生 `resize` 事件更新的只读宽度和高度;非浏览器环境均为 `0`。
1903
+ * @throws `Error` 当浏览器环境中不存在可用于自动清理的 Vue 响应式作用域。
1904
+ */
1905
+ export declare function useWindowSize(): UseWindowSizeReturn;
1906
+ //#endregion
1907
+ //#region src/vue/with.d.ts
1908
+ /**
1909
+ * 保留传入值并显式指定其 TypeScript 类型。
1910
+ *
1911
+ * @remarks 未传值时运行时结果为 `undefined`,仅适合为 reactive 对象的初始字段提供类型。
1912
+ * @param data - 可选的原始值。
1913
+ * @returns 传入值本身;省略时返回类型化的 `undefined`。
1914
+ */
1915
+ export declare function withDefineType<Value>(data?: Value): Value;
1916
+ //#endregion
1917
+ export type { DecodedText };
1918
+ //# sourceMappingURL=index.d.mts.map