zcw-shared 1.25.1 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,18 @@
1
+ import type { Window } from '../../../references/browser.d';
2
+ import type { KeyboardEvent } from '../../../references/dom.d';
3
+ import type { Console } from '../../../references/console.d';
4
+ export type KeyboardEventListener = (event: KeyboardEvent) => void;
5
+ export interface KeyboardCenterDeps {
6
+ addEventListener: Window['addEventListener'];
7
+ removeEventListener: Window['removeEventListener'];
8
+ log: Console['log'];
9
+ error: Console['error'];
10
+ warn: Console['warn'];
11
+ }
12
+ export interface KeyboardCenter {
13
+ subscribe(listener: KeyboardEventListener): () => void;
14
+ unsubscribe(listener: KeyboardEventListener): void;
15
+ getListenerCount(): number;
16
+ isInitialized(): boolean;
17
+ }
18
+ export declare function createSharedKeyboardCenter(deps: KeyboardCenterDeps): KeyboardCenter;
@@ -0,0 +1,58 @@
1
+ import { createEventEmitter } from '../patterns/EventEmitter';
2
+ let globalCenter = null;
3
+ export function createSharedKeyboardCenter(deps) {
4
+ if (globalCenter) {
5
+ return globalCenter;
6
+ }
7
+ const emitter = createEventEmitter({ log: deps.log, error: deps.error, warn: deps.warn }, { maxListeners: 50 });
8
+ let isListenerAdded = false;
9
+ const listeners = new Set();
10
+ const globalKeyboardHandler = (event) => {
11
+ if (listeners.size === 0) {
12
+ return;
13
+ }
14
+ listeners.forEach(listener => {
15
+ try {
16
+ listener(event);
17
+ }
18
+ catch (error) {
19
+ deps.error('[KeyboardCenter] 监听器执行错误:', error);
20
+ }
21
+ });
22
+ };
23
+ const center = {
24
+ subscribe(listener) {
25
+ listeners.add(listener);
26
+ emitter.on('keyboard', listener);
27
+ if (!isListenerAdded) {
28
+ deps.addEventListener('keydown', globalKeyboardHandler, {
29
+ passive: true
30
+ });
31
+ deps.addEventListener('keyup', globalKeyboardHandler, {
32
+ passive: true
33
+ });
34
+ isListenerAdded = true;
35
+ deps.log('[KeyboardCenter] 已添加全局键盘监听');
36
+ }
37
+ return () => {
38
+ center.unsubscribe(listener);
39
+ };
40
+ },
41
+ unsubscribe(listener) {
42
+ listeners.delete(listener);
43
+ emitter.off('keyboard', listener);
44
+ if (listeners.size === 0) {
45
+ deps.log('[KeyboardCenter] 所有订阅者已移除,但保持全局监听');
46
+ }
47
+ },
48
+ getListenerCount() {
49
+ return listeners.size;
50
+ },
51
+ isInitialized() {
52
+ return isListenerAdded;
53
+ }
54
+ };
55
+ globalCenter = center;
56
+ return center;
57
+ }
58
+ //# sourceMappingURL=createSharedKeyboardCenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSharedKeyboardCenter.js","sourceRoot":"","sources":["../../../src/functions/dom/createSharedKeyboardCenter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAsD3E,IAAI,YAAY,GAA0B,IAAI,CAAA;AAiC9C,MAAM,UAAU,0BAA0B,CAAC,IAAwB;IAEjE,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAA;IACrB,CAAC;IAGD,MAAM,OAAO,GAAG,kBAAkB,CAChC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EACrD,EAAE,YAAY,EAAE,EAAE,EAAE,CACrB,CAAA;IAED,IAAI,eAAe,GAAG,KAAK,CAAA;IAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAA;IAKlD,MAAM,qBAAqB,GAAG,CAAC,KAAoB,EAAE,EAAE;QAErD,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACzB,OAAM;QACR,CAAC;QAGD,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC3B,IAAI,CAAC;gBACH,QAAQ,CAAC,KAAK,CAAC,CAAA;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAA;YAChD,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,MAAM,GAAmB;QAI7B,SAAS,CAAC,QAA+B;YACvC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACvB,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YAGhC,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,qBAAsC,EAAE;oBACvE,OAAO,EAAE,IAAI;iBACd,CAAC,CAAA;gBACF,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,qBAAsC,EAAE;oBACrE,OAAO,EAAE,IAAI;iBACd,CAAC,CAAA;gBACF,eAAe,GAAG,IAAI,CAAA;gBACtB,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;YACxC,CAAC;YAGD,OAAO,GAAG,EAAE;gBACV,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;YAC9B,CAAC,CAAA;QACH,CAAC;QAKD,WAAW,CAAC,QAA+B;YACzC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC1B,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;YAIjC,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC;QAKD,gBAAgB;YACd,OAAO,SAAS,CAAC,IAAI,CAAA;QACvB,CAAC;QAKD,aAAa;YACX,OAAO,eAAe,CAAA;QACxB,CAAC;KACF,CAAA;IAGD,YAAY,GAAG,MAAM,CAAA;IAErB,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,44 @@
1
+ import type { GeneratedIdCardProfile } from '../validation/generateFakeIdCard';
2
+ import type { Window } from '../../../references/browser.d';
3
+ export interface RenderIdCardOptions {
4
+ name?: string;
5
+ avatarImage?: any;
6
+ emblemImage?: any;
7
+ }
8
+ export interface Canvas2DContextLike {
9
+ fillStyle: string;
10
+ strokeStyle: string;
11
+ lineWidth: number;
12
+ font: string;
13
+ textBaseline: string;
14
+ moveTo?: (x: number, y: number) => void;
15
+ lineTo?: (x: number, y: number) => void;
16
+ fill?: () => void;
17
+ drawImage: (...args: any[]) => void;
18
+ fillRect: (x: number, y: number, w: number, h: number) => void;
19
+ strokeRect: (x: number, y: number, w: number, h: number) => void;
20
+ fillText: (text: string, x: number, y: number) => void;
21
+ measureText: (text: string) => {
22
+ width: number;
23
+ };
24
+ beginPath: () => void;
25
+ arc: (x: number, y: number, r: number, sAngle: number, eAngle: number) => void;
26
+ closePath: () => void;
27
+ clip: () => void;
28
+ save: () => void;
29
+ restore: () => void;
30
+ }
31
+ export interface CanvasLike {
32
+ width: number;
33
+ height: number;
34
+ getContext: (type: '2d') => Canvas2DContextLike;
35
+ }
36
+ export interface RenderIdCardDeps {
37
+ createCanvas: (width: number, height: number) => CanvasLike;
38
+ Image: Window['Image'];
39
+ }
40
+ export interface RenderIdCardResult {
41
+ front: CanvasLike;
42
+ back: CanvasLike;
43
+ }
44
+ export declare function renderIdCard(profile: GeneratedIdCardProfile, deps: RenderIdCardDeps, options?: RenderIdCardOptions): RenderIdCardResult;
@@ -0,0 +1,146 @@
1
+ function drawRoundedRect(ctx, x, y, w, h, r) {
2
+ ctx.save();
3
+ ctx.beginPath();
4
+ ctx.moveTo?.(x + r, y);
5
+ ctx.arc(x + w - r, y + r, r, Math.PI * 1.5, 0);
6
+ ctx.lineTo?.(x + w, y + h - r);
7
+ ctx.arc(x + w - r, y + h - r, r, 0, Math.PI * 0.5);
8
+ ctx.lineTo?.(x + r, y + h);
9
+ ctx.arc(x + r, y + h - r, r, Math.PI * 0.5, Math.PI);
10
+ ctx.lineTo?.(x, y + r);
11
+ ctx.arc(x + r, y + r, r, Math.PI, Math.PI * 1.5);
12
+ ctx.closePath();
13
+ ctx.clip();
14
+ }
15
+ function drawStar(ctx, cx, cy, spikes, outerRadius, innerRadius, rotation = -Math.PI / 2) {
16
+ const step = Math.PI / spikes;
17
+ ctx.save();
18
+ ctx.beginPath();
19
+ for (let i = 0; i < 2 * spikes; i++) {
20
+ const r = i % 2 === 0 ? outerRadius : innerRadius;
21
+ const angle = i * step + rotation;
22
+ const x = cx + Math.cos(angle) * r;
23
+ const y = cy + Math.sin(angle) * r;
24
+ if (i === 0)
25
+ ctx.moveTo?.(x, y);
26
+ else
27
+ ctx.lineTo?.(x, y);
28
+ }
29
+ ctx.closePath();
30
+ ctx.fill?.();
31
+ ctx.restore();
32
+ }
33
+ function drawLabelAndValue(ctx, label, value, x, y, fonts, spacing = 16) {
34
+ ctx.font = fonts.label;
35
+ const labelWidth = ctx.measureText(label).width;
36
+ ctx.fillText(label, x, y);
37
+ ctx.font = fonts.value;
38
+ ctx.fillText(value, x + labelWidth + spacing, y);
39
+ }
40
+ function drawCenteredText(ctx, text, y, font, canvasWidth, xShift = 0) {
41
+ ctx.font = font;
42
+ const w = ctx.measureText(text).width;
43
+ const x = (canvasWidth - w) / 2 + xShift;
44
+ ctx.fillText(text, x, y);
45
+ }
46
+ export function renderIdCard(profile, deps, options = {}) {
47
+ const WIDTH = 856;
48
+ const HEIGHT = 540;
49
+ const name = options.name ?? '张三';
50
+ const gender = profile.gender === 'male' ? '男' : '女';
51
+ const nation = profile.nation ?? '汉';
52
+ const birth = profile.birth.ymd;
53
+ const address = profile.address.full;
54
+ const issueAuthority = profile.issueAuthority;
55
+ const validPeriod = profile.validPeriod;
56
+ const front = deps.createCanvas(WIDTH, HEIGHT);
57
+ const fctx = front.getContext('2d');
58
+ fctx.fillStyle = '#f5f7fb';
59
+ fctx.fillRect(0, 0, WIDTH, HEIGHT);
60
+ fctx.save();
61
+ drawRoundedRect(fctx, 12, 12, WIDTH - 24, HEIGHT - 24, 24);
62
+ fctx.fillStyle = '#ffffff';
63
+ fctx.fillRect(12, 12, WIDTH - 24, HEIGHT - 24);
64
+ fctx.restore();
65
+ fctx.fillStyle = '#222';
66
+ fctx.textBaseline = 'alphabetic';
67
+ const yOffset = 20;
68
+ drawLabelAndValue(fctx, '姓名', name, 48, 72 + yOffset, { label: 'bold 36px system-ui, -apple-system, sans-serif', value: 'bold 42px system-ui, -apple-system, sans-serif' }, 24);
69
+ drawLabelAndValue(fctx, '性别', gender, 48, 132 + yOffset, { label: 'bold 28px system-ui, -apple-system, sans-serif', value: '28px system-ui, -apple-system, sans-serif' }, 16);
70
+ drawLabelAndValue(fctx, '民族', nation, 300, 132 + yOffset, { label: 'bold 28px system-ui, -apple-system, sans-serif', value: '28px system-ui, -apple-system, sans-serif' }, 16);
71
+ fctx.font = 'bold 28px system-ui, -apple-system, sans-serif';
72
+ fctx.fillText('出生', 48, 186 + yOffset);
73
+ fctx.font = '28px system-ui, -apple-system, sans-serif';
74
+ const [yy, mm, dd] = birth.split('-');
75
+ fctx.fillText(`${yy} 年 ${mm} 月 ${dd} 日`, 124, 186 + yOffset);
76
+ fctx.font = 'bold 28px system-ui, -apple-system, sans-serif';
77
+ const addressLabel = '住址';
78
+ const addressLabelWidth = fctx.measureText(addressLabel).width;
79
+ fctx.fillText(addressLabel, 48, 238 + yOffset);
80
+ fctx.font = '28px system-ui, -apple-system, sans-serif';
81
+ const maxWidth = 520;
82
+ const lineHeight = 38;
83
+ let cursorY = 238 + yOffset;
84
+ const startX = 48 + addressLabelWidth + 16;
85
+ const words = address.split('');
86
+ let line = '';
87
+ for (const ch of words) {
88
+ const test = line + ch;
89
+ if (fctx.measureText(test).width > maxWidth) {
90
+ fctx.fillText(line, startX, cursorY);
91
+ cursorY += lineHeight;
92
+ line = ch;
93
+ }
94
+ else {
95
+ line = test;
96
+ }
97
+ }
98
+ if (line)
99
+ fctx.fillText(line, startX, cursorY);
100
+ fctx.font = 'bold 34px system-ui, -apple-system, monospace';
101
+ const idLabel = '公民身份号码';
102
+ const idLabelWidth = fctx.measureText(idLabel).width;
103
+ const idBaselineY = HEIGHT - 72;
104
+ fctx.fillText(idLabel, 48, idBaselineY);
105
+ fctx.font = 'bold 40px system-ui, -apple-system, monospace';
106
+ fctx.fillText(profile.id, 48 + idLabelWidth + 16, idBaselineY);
107
+ const avatarX = WIDTH - 140;
108
+ const avatarY = 140;
109
+ const avatarR = 96;
110
+ fctx.save();
111
+ fctx.beginPath();
112
+ fctx.arc(avatarX, avatarY, avatarR, 0, Math.PI * 2);
113
+ fctx.closePath();
114
+ fctx.clip();
115
+ if (options.avatarImage) {
116
+ fctx.drawImage(options.avatarImage, avatarX - avatarR, avatarY - avatarR, avatarR * 2, avatarR * 2);
117
+ }
118
+ else {
119
+ fctx.fillStyle = '#e5e7eb';
120
+ fctx.fillRect(avatarX - avatarR, avatarY - avatarR, avatarR * 2, avatarR * 2);
121
+ }
122
+ fctx.restore();
123
+ const back = deps.createCanvas(WIDTH, HEIGHT);
124
+ const bctx = back.getContext('2d');
125
+ bctx.fillStyle = '#f5f7fb';
126
+ bctx.fillRect(0, 0, WIDTH, HEIGHT);
127
+ bctx.save();
128
+ drawRoundedRect(bctx, 12, 12, WIDTH - 24, HEIGHT - 24, 24);
129
+ bctx.fillStyle = '#ffffff';
130
+ bctx.fillRect(12, 12, WIDTH - 24, HEIGHT - 24);
131
+ bctx.restore();
132
+ if (options.emblemImage) {
133
+ bctx.drawImage(options.emblemImage, 120 - 64, 120 - 64, 128, 128);
134
+ }
135
+ bctx.textBaseline = 'alphabetic';
136
+ bctx.fillStyle = '#222';
137
+ const titleShiftX = 140;
138
+ drawCenteredText(bctx, '中华人民共和国', 110, 'bold 40px system-ui, -apple-system, serif', WIDTH, titleShiftX);
139
+ drawCenteredText(bctx, '居民身份证', 190, 'bold 72px system-ui, -apple-system, serif', WIDTH, titleShiftX);
140
+ const backYOffset = 16;
141
+ const backLeftX = 200;
142
+ drawLabelAndValue(bctx, '签发机关', issueAuthority, backLeftX, HEIGHT - 152 + backYOffset, { label: 'bold 36px system-ui, -apple-system, sans-serif', value: '28px system-ui, -apple-system, sans-serif' }, 24);
143
+ drawLabelAndValue(bctx, '有效期限', validPeriod.replaceAll('-', '.'), backLeftX, HEIGHT - 100 + backYOffset, { label: 'bold 36px system-ui, -apple-system, sans-serif', value: '28px system-ui, -apple-system, sans-serif' }, 24);
144
+ return { front, back };
145
+ }
146
+ //# sourceMappingURL=renderIdCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderIdCard.js","sourceRoot":"","sources":["../../../src/functions/image/renderIdCard.ts"],"names":[],"mappings":"AA+DA,SAAS,eAAe,CAAC,GAAwB,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IACtG,GAAG,CAAC,IAAI,EAAE,CAAA;IACV,GAAG,CAAC,SAAS,EAAE,CAAA;IAGf,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IAEtB,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAA;IAE9C,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IAE9B,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAA;IAElD,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAE1B,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;IAEpD,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAEtB,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAA;IAChD,GAAG,CAAC,SAAS,EAAE,CAAA;IACf,GAAG,CAAC,IAAI,EAAE,CAAA;AACZ,CAAC;AAED,SAAS,QAAQ,CACf,GAAwB,EACxB,EAAU,EACV,EAAU,EACV,MAAc,EACd,WAAmB,EACnB,WAAmB,EACnB,QAAQ,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IAEvB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAA;IAC7B,GAAG,CAAC,IAAI,EAAE,CAAA;IACV,GAAG,CAAC,SAAS,EAAE,CAAA;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAA;QACjD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAA;QACjC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAClC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;;YAC1B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACzB,CAAC;IACD,GAAG,CAAC,SAAS,EAAE,CAAA;IACf,GAAG,CAAC,IAAI,EAAE,EAAE,CAAA;IACZ,GAAG,CAAC,OAAO,EAAE,CAAA;AACf,CAAC;AAGD,SAAS,iBAAiB,CACxB,GAAwB,EACxB,KAAa,EACb,KAAa,EACb,CAAS,EACT,CAAS,EACT,KAAuC,EACvC,OAAO,GAAG,EAAE;IAEZ,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAA;IACtB,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAA;IAC/C,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACzB,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAA;IACtB,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,GAAG,OAAO,EAAE,CAAC,CAAC,CAAA;AAClD,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAwB,EACxB,IAAY,EACZ,CAAS,EACT,IAAY,EACZ,WAAmB,EACnB,MAAM,GAAG,CAAC;IAEV,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;IACf,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAA;IACrC,MAAM,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAA;IACxC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAC1B,CAAC;AAKD,MAAM,UAAU,YAAY,CAAC,OAA+B,EAAE,IAAsB,EAAE,UAA+B,EAAE;IACrH,MAAM,KAAK,GAAG,GAAG,CAAA;IACjB,MAAM,MAAM,GAAG,GAAG,CAAA;IAElB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAA;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,GAAG,CAAA;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAA;IAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAA;IACpC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAA;IAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;IAGvC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAGnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC1B,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAClC,IAAI,CAAC,IAAI,EAAE,CAAA;IACX,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC1B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC,CAAA;IAC9C,IAAI,CAAC,OAAO,EAAE,CAAA;IAGd,IAAI,CAAC,SAAS,GAAG,MAAM,CAAA;IACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAChC,MAAM,OAAO,GAAG,EAAE,CAAA;IAClB,iBAAiB,CACf,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,EAAE,EACF,EAAE,GAAG,OAAO,EACZ,EAAE,KAAK,EAAE,gDAAgD,EAAE,KAAK,EAAE,gDAAgD,EAAE,EACpH,EAAE,CACH,CAAA;IAGD,iBAAiB,CACf,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,EAAE,EACF,GAAG,GAAG,OAAO,EACb,EAAE,KAAK,EAAE,gDAAgD,EAAE,KAAK,EAAE,2CAA2C,EAAE,EAC/G,EAAE,CACH,CAAA;IACD,iBAAiB,CACf,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,GAAG,EACH,GAAG,GAAG,OAAO,EACb,EAAE,KAAK,EAAE,gDAAgD,EAAE,KAAK,EAAE,2CAA2C,EAAE,EAC/G,EAAE,CACH,CAAA;IAED,IAAI,CAAC,IAAI,GAAG,gDAAgD,CAAA;IAC5D,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,CAAA;IACtC,IAAI,CAAC,IAAI,GAAG,2CAA2C,CAAA;IAEvD,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,CAAA;IAG9D,IAAI,CAAC,IAAI,GAAG,gDAAgD,CAAA;IAC5D,MAAM,YAAY,GAAG,IAAI,CAAA;IACzB,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,KAAK,CAAA;IAC9D,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,CAAA;IAC9C,IAAI,CAAC,IAAI,GAAG,2CAA2C,CAAA;IAEvD,MAAM,QAAQ,GAAG,GAAG,CAAA;IACpB,MAAM,UAAU,GAAG,EAAE,CAAA;IACrB,IAAI,OAAO,GAAG,GAAG,GAAG,OAAO,CAAA;IAC3B,MAAM,MAAM,GAAG,EAAE,GAAG,iBAAiB,GAAG,EAAE,CAAA;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC/B,IAAI,IAAI,GAAG,EAAE,CAAA;IACb,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAA;QACtB,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,QAAQ,EAAE,CAAC;YAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;YACpC,OAAO,IAAI,UAAU,CAAA;YACrB,IAAI,GAAG,EAAE,CAAA;QACX,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IACD,IAAI,IAAI;QAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAG9C,IAAI,CAAC,IAAI,GAAG,+CAA+C,CAAA;IAC3D,MAAM,OAAO,GAAG,QAAQ,CAAA;IACxB,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAA;IACpD,MAAM,WAAW,GAAG,MAAM,GAAG,EAAE,CAAA;IAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,WAAW,CAAC,CAAA;IACvC,IAAI,CAAC,IAAI,GAAG,+CAA+C,CAAA;IAC3D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,GAAG,EAAE,EAAE,WAAW,CAAC,CAAA;IAG9D,MAAM,OAAO,GAAG,KAAK,GAAG,GAAG,CAAA;IAC3B,MAAM,OAAO,GAAG,GAAG,CAAA;IACnB,MAAM,OAAO,GAAG,EAAE,CAAA;IAClB,IAAI,CAAC,IAAI,EAAE,CAAA;IACX,IAAI,CAAC,SAAS,EAAE,CAAA;IAChB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IACnD,IAAI,CAAC,SAAS,EAAE,CAAA;IAChB,IAAI,CAAC,IAAI,EAAE,CAAA;IACX,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAExB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAA;IACrG,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAA;IAC/E,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAA;IAGd,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAElC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC1B,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAClC,IAAI,CAAC,IAAI,EAAE,CAAA;IACX,eAAe,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC,CAAA;IAC1D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC1B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC,CAAA;IAC9C,IAAI,CAAC,OAAO,EAAE,CAAA;IAGd,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAExB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IACnE,CAAC;IAGD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAChC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAA;IACvB,MAAM,WAAW,GAAG,GAAG,CAAA;IACvB,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,2CAA2C,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;IACvG,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,2CAA2C,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;IAGrG,MAAM,WAAW,GAAG,EAAE,CAAA;IACtB,MAAM,SAAS,GAAG,GAAG,CAAA;IACrB,iBAAiB,CACf,IAAI,EACJ,MAAM,EACN,cAAc,EACd,SAAS,EACT,MAAM,GAAG,GAAG,GAAG,WAAW,EAC1B,EAAE,KAAK,EAAE,gDAAgD,EAAE,KAAK,EAAE,2CAA2C,EAAE,EAC/G,EAAE,CACH,CAAA;IACD,iBAAiB,CACf,IAAI,EACJ,MAAM,EACN,WAAW,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAChC,SAAS,EACT,MAAM,GAAG,GAAG,GAAG,WAAW,EAC1B,EAAE,KAAK,EAAE,gDAAgD,EAAE,KAAK,EAAE,2CAA2C,EAAE,EAC/G,EAAE,CACH,CAAA;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AACxB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export async function uploadToCOS(options, deps) {
2
- const { localPath, bucket, region, cloudPath = '', secretType, includeRootFolder = false, showProgress = true } = options;
2
+ const { localPath, bucket, region, cloudPath = '', secretType, includeRootFolder = false, showProgress = true, concurrency = 10 } = options;
3
3
  try {
4
4
  if (!deps.existsSync(localPath)) {
5
5
  return {
@@ -50,7 +50,9 @@ export async function uploadToCOS(options, deps) {
50
50
  deps.log(`发现 ${files.length} 个文件待上传`);
51
51
  let uploadedCount = 0;
52
52
  const folderBaseName = deps.basename(localPath);
53
- const concurrency = 10;
53
+ if (showProgress) {
54
+ deps.log(`并发数: ${concurrency}`);
55
+ }
54
56
  const uploadFile = async (filePath) => {
55
57
  const relativePath = deps.relative(localPath, filePath);
56
58
  let cloudKey;
@@ -1 +1 @@
1
- {"version":3,"file":"upload.cos.js","sourceRoot":"","sources":["../../../src/functions/tencent-cloud/upload.cos.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload.cos.js","sourceRoot":"","sources":["../../../src/functions/tencent-cloud/upload.cos.ts"],"names":[],"mappings":"AA8EA,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAA2B,EAC3B,IAAqB;IAErB,MAAM,EACJ,SAAS,EACT,MAAM,EACN,MAAM,EACN,SAAS,GAAG,EAAE,EACd,UAAU,EACV,iBAAiB,GAAG,KAAK,EACzB,YAAY,GAAG,IAAI,EACnB,WAAW,GAAG,EAAE,EACjB,GAAG,OAAO,CAAA;IAEX,IAAI,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY,SAAS,EAAE;aAC/B,CAAA;QACH,CAAC;QAGD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACrC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY,SAAS,EAAE;aAC/B,CAAA;QACH,CAAC;QAGD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QACzC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACrD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY,UAAU,EAAE;aAChC,CAAA;QACH,CAAC;QAGD,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;YACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAA;QAGF,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,MAAM,WAAW,GAAa,EAAE,CAAA;QAEhC,SAAS,OAAO,CAAC,OAAe;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YAEzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;gBAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;gBAEpC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;oBACvB,OAAO,CAAC,QAAQ,CAAC,CAAA;gBACnB,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;oBACzB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QAGD,OAAO,CAAC,SAAS,CAAC,CAAA;QAElB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,eAAe;aACvB,CAAA;QACH,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,MAAM,SAAS,CAAC,CAAA;QAGrC,IAAI,aAAa,GAAG,CAAC,CAAA;QACrB,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAG/C,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,QAAQ,WAAW,EAAE,CAAC,CAAA;QACjC,CAAC;QAGD,MAAM,UAAU,GAAG,KAAK,EAAE,QAAgB,EAAiB,EAAE;YAE3D,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YAGvD,IAAI,QAAgB,CAAA;YACpB,IAAI,iBAAiB,EAAE,CAAC;gBAEtB,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS,IAAI,cAAc,IAAI,YAAY,EAAE,CAAC,CAAA;YAC7E,CAAC;iBAAM,CAAC;gBAEN,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,SAAS,IAAI,YAAY,EAAE,CAAC,CAAA;YAC3D,CAAC;YAGD,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YAG3D,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;YAG/C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,GAAG,CAAC,SAAS,CACX;oBACE,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM;oBACd,GAAG,EAAE,QAAQ;oBACb,IAAI,EAAE,WAAkB;iBAEzB,EACD,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;oBACZ,IAAI,GAAG,EAAE,CAAC;wBACR,MAAM,CAAC,GAAG,CAAC,CAAA;oBACb,CAAC;yBAAM,CAAC;wBACN,aAAa,EAAE,CAAA;wBAEf,IAAI,YAAY,IAAI,CAAC,aAAa,GAAG,EAAE,KAAK,CAAC,IAAI,aAAa,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;4BACjF,MAAM,QAAQ,GAAG,CAAC,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;4BAClE,IAAI,CAAC,GAAG,CAAC,SAAS,aAAa,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAA;wBACnE,CAAC;wBACD,OAAO,EAAE,CAAA;oBACX,CAAC;gBACH,CAAC,CACF,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;QAGD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;YACnD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAA;YAC7C,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;gBAClD,IAAI,CAAC;oBACH,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAA;gBAC5B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAC3E,IAAI,CAAC,KAAK,CAAC,WAAW,QAAQ,EAAE,EAAE,YAAY,CAAC,CAAA;oBAC/C,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC5B,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QACnC,CAAC;QAGD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,cAAc,aAAa,MAAM,CAAC,CAAA;YAC3C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,UAAU,aAAa,MAAM;gBACtC,UAAU,EAAE,aAAa;aAC1B,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,eAAe,aAAa,SAAS,WAAW,CAAC,MAAM,IAAI;gBAClE,UAAU,EAAE,aAAa;gBACzB,WAAW;aACZ,CAAA;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3E,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAC1B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,SAAS,YAAY,EAAE;SAC/B,CAAA;IACH,CAAC;AACH,CAAC;AAKD,eAAe,WAAW,CAAA"}
@@ -0,0 +1,24 @@
1
+ interface RegionCity {
2
+ name: string;
3
+ code: string;
4
+ area?: Array<{
5
+ name: string;
6
+ code: string;
7
+ }>;
8
+ }
9
+ interface RegionProvince {
10
+ name: string;
11
+ code: string;
12
+ city?: RegionCity[];
13
+ }
14
+ export interface RandomRegionResult {
15
+ province: string;
16
+ provinceCode: string;
17
+ city: string | null;
18
+ cityCode: string | null;
19
+ county: string | null;
20
+ countyCode: string | null;
21
+ fullPath: string;
22
+ }
23
+ export declare function randomRegion(regionData: RegionProvince[], codePrefix?: string): RandomRegionResult;
24
+ export {};
@@ -0,0 +1,74 @@
1
+ function randomInt(min, max) {
2
+ return Math.floor(Math.random() * (max - min + 1)) + min;
3
+ }
4
+ export function randomRegion(regionData, codePrefix) {
5
+ let filteredProvinces = regionData;
6
+ if (codePrefix && codePrefix.length >= 2) {
7
+ const prefix2 = codePrefix.slice(0, 2);
8
+ filteredProvinces = regionData.filter(p => p.code.startsWith(prefix2));
9
+ if (filteredProvinces.length === 0) {
10
+ filteredProvinces = regionData;
11
+ }
12
+ }
13
+ const province = filteredProvinces[randomInt(0, filteredProvinces.length - 1)];
14
+ if (!province.city || province.city.length === 0) {
15
+ return {
16
+ province: province.name,
17
+ provinceCode: province.code,
18
+ city: null,
19
+ cityCode: null,
20
+ county: null,
21
+ countyCode: null,
22
+ fullPath: province.name
23
+ };
24
+ }
25
+ let filteredCities = province.city;
26
+ if (codePrefix && codePrefix.length >= 4) {
27
+ const prefix4 = codePrefix.slice(0, 4);
28
+ filteredCities = province.city.filter(c => c.code && c.code.startsWith(prefix4));
29
+ if (filteredCities.length === 0) {
30
+ filteredCities = province.city;
31
+ }
32
+ }
33
+ const city = filteredCities[randomInt(0, filteredCities.length - 1)];
34
+ if (!city.area || city.area.length === 0) {
35
+ return {
36
+ province: province.name,
37
+ provinceCode: province.code,
38
+ city: city.name,
39
+ cityCode: city.code,
40
+ county: null,
41
+ countyCode: null,
42
+ fullPath: `${province.name}${city.name}`
43
+ };
44
+ }
45
+ let filteredAreas = city.area;
46
+ if (codePrefix && codePrefix.length === 6) {
47
+ filteredAreas = city.area.filter(a => a.code && a.code === codePrefix);
48
+ if (filteredAreas.length === 0) {
49
+ const prefix4 = codePrefix.slice(0, 4);
50
+ filteredAreas = city.area.filter(a => a.code && a.code.startsWith(prefix4));
51
+ }
52
+ if (filteredAreas.length === 0) {
53
+ filteredAreas = city.area;
54
+ }
55
+ }
56
+ else if (codePrefix && codePrefix.length === 4) {
57
+ const prefix4 = codePrefix.slice(0, 4);
58
+ filteredAreas = city.area.filter(a => a.code && a.code.startsWith(prefix4));
59
+ if (filteredAreas.length === 0) {
60
+ filteredAreas = city.area;
61
+ }
62
+ }
63
+ const county = filteredAreas[randomInt(0, filteredAreas.length - 1)];
64
+ return {
65
+ province: province.name,
66
+ provinceCode: province.code,
67
+ city: city.name,
68
+ cityCode: city.code,
69
+ county: county.name,
70
+ countyCode: county.code,
71
+ fullPath: `${province.name}${city.name}${county.name}`
72
+ };
73
+ }
74
+ //# sourceMappingURL=randomRegion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"randomRegion.js","sourceRoot":"","sources":["../../../src/functions/utils/randomRegion.ts"],"names":[],"mappings":"AAqDA,SAAS,SAAS,CAAC,GAAW,EAAE,GAAW;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;AAC1D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,UAA4B,EAAE,UAAmB;IAC5E,IAAI,iBAAiB,GAAG,UAAU,CAAA;IAGlC,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;QACtE,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,iBAAiB,GAAG,UAAU,CAAA;QAChC,CAAC;IACH,CAAC;IAGD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC,EAAE,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IAG9E,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,YAAY,EAAE,QAAQ,CAAC,IAAI;YAC3B,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,QAAQ,CAAC,IAAI;SACxB,CAAA;IACH,CAAC;IAGD,IAAI,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAA;IAClC,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;QAChF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAA;QAChC,CAAC;IACH,CAAC;IAGD,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IAGpE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,YAAY,EAAE,QAAQ,CAAC,IAAI;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,GAAG,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;SACzC,CAAA;IACH,CAAC;IAGD,IAAI,aAAa,GAAG,IAAI,CAAC,IAAI,CAAA;IAC7B,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1C,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;QACtE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAE/B,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACtC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;QAC7E,CAAC;QACD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,aAAa,GAAG,IAAI,CAAC,IAAI,CAAA;QAC3B,CAAC;IACH,CAAC;SAAM,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAEjD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;QAC3E,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,aAAa,GAAG,IAAI,CAAC,IAAI,CAAA;QAC3B,CAAC;IACH,CAAC;IAGD,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IAEpE,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,IAAI;QACvB,YAAY,EAAE,QAAQ,CAAC,IAAI;QAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,IAAI;QACnB,MAAM,EAAE,MAAM,CAAC,IAAI;QACnB,UAAU,EAAE,MAAM,CAAC,IAAI;QACvB,QAAQ,EAAE,GAAG,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE;KACvD,CAAA;AACH,CAAC"}
@@ -0,0 +1,30 @@
1
+ export interface GenerateFakeIdCardOptions {
2
+ gender?: 'male' | 'female';
3
+ birthYear?: number;
4
+ birthMonth?: number;
5
+ birthDay?: number;
6
+ provinceCode?: string;
7
+ nation?: string;
8
+ }
9
+ export interface GeneratedIdCardProfile {
10
+ id: string;
11
+ birth: {
12
+ year: number;
13
+ month: number;
14
+ day: number;
15
+ ymd: string;
16
+ };
17
+ gender: 'male' | 'female';
18
+ nation: string;
19
+ areaCode: string;
20
+ address: {
21
+ province: string;
22
+ city: string;
23
+ county: string;
24
+ full: string;
25
+ };
26
+ issueAuthority: string;
27
+ validPeriod: string;
28
+ }
29
+ export declare function generateFakeIdProfile(options?: GenerateFakeIdCardOptions): GeneratedIdCardProfile;
30
+ export declare function generateFakeIdCard(options?: GenerateFakeIdCardOptions): GeneratedIdCardProfile;
@@ -0,0 +1,123 @@
1
+ import { randomRegion } from '../utils/randomRegion';
2
+ import regionData from '../../assets/region.json';
3
+ function getDaysInMonth(year, month) {
4
+ return new Date(year, month, 0).getDate();
5
+ }
6
+ function randomInt(min, max) {
7
+ return Math.floor(Math.random() * (max - min + 1)) + min;
8
+ }
9
+ function generateRandomDate(year, month, day) {
10
+ const currentYear = new Date().getFullYear();
11
+ const birthYear = year ?? randomInt(1950, currentYear);
12
+ const birthMonth = month ?? randomInt(1, 12);
13
+ const maxDay = getDaysInMonth(birthYear, birthMonth);
14
+ const birthDay = day ?? randomInt(1, maxDay);
15
+ return { year: birthYear, month: birthMonth, day: birthDay };
16
+ }
17
+ function calculateCheckCode(id17) {
18
+ const weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
19
+ const checkCodes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
20
+ let sum = 0;
21
+ for (let i = 0; i < 17; i++) {
22
+ sum += parseInt(id17[i]) * weights[i];
23
+ }
24
+ return checkCodes[sum % 11];
25
+ }
26
+ function findRegionByCode(code) {
27
+ for (const province of regionData) {
28
+ if (province.code === code) {
29
+ return { provinceName: province.name, cityName: province.name, countyName: '' };
30
+ }
31
+ if (province.city) {
32
+ for (const city of province.city) {
33
+ if (city.code === code) {
34
+ return { provinceName: province.name, cityName: city.name, countyName: '' };
35
+ }
36
+ if (city.area) {
37
+ for (const county of city.area) {
38
+ if (county.code === code) {
39
+ return { provinceName: province.name, cityName: city.name, countyName: county.name };
40
+ }
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ return null;
47
+ }
48
+ function generateAreaCode6(areaCode) {
49
+ if (areaCode && areaCode.length === 6) {
50
+ const found = findRegionByCode(areaCode);
51
+ if (found) {
52
+ return { code: areaCode, ...found };
53
+ }
54
+ }
55
+ const result = randomRegion(regionData, areaCode);
56
+ let finalCode;
57
+ if (areaCode && areaCode.length === 6) {
58
+ finalCode = result.countyCode || result.cityCode || result.provinceCode;
59
+ }
60
+ else if (areaCode && areaCode.length === 4) {
61
+ finalCode = result.countyCode || result.cityCode || result.provinceCode;
62
+ }
63
+ else {
64
+ finalCode = result.countyCode || result.cityCode || result.provinceCode;
65
+ }
66
+ return {
67
+ code: finalCode,
68
+ provinceName: result.province,
69
+ cityName: result.city || result.province,
70
+ countyName: result.county || ''
71
+ };
72
+ }
73
+ function randomDateBetween(start, end) {
74
+ const t = start.getTime() + Math.random() * (end.getTime() - start.getTime());
75
+ return new Date(t);
76
+ }
77
+ export function generateFakeIdProfile(options = {}) {
78
+ const nation = options.nation ?? '汉';
79
+ const birth = generateRandomDate(options.birthYear, options.birthMonth, options.birthDay);
80
+ const area = generateAreaCode6(options.provinceCode);
81
+ const isMale = options.gender ? options.gender === 'male' : Math.random() > 0.5;
82
+ const seqLast = isMale ? (randomInt(1, 9) | 1) : (randomInt(0, 8) & ~1);
83
+ const sequence = `${String(randomInt(0, 99)).padStart(2, '0')}${seqLast}`;
84
+ const birthStr = `${birth.year}${String(birth.month).padStart(2, '0')}${String(birth.day).padStart(2, '0')}`;
85
+ const id17 = `${area.code}${birthStr}${sequence}`;
86
+ const checkCode = calculateCheckCode(id17);
87
+ const id = `${id17}${checkCode}`;
88
+ const today = new Date();
89
+ const earliestStart = new Date(birth.year + 18, 0, 1);
90
+ const latestStartYear = Math.min(birth.year + 28, today.getFullYear());
91
+ let latestStart = new Date(latestStartYear, 11, 31);
92
+ if (latestStart > today) {
93
+ latestStart = new Date(today.getTime());
94
+ }
95
+ const startDate = earliestStart > today ? new Date(today.getTime()) : randomDateBetween(earliestStart, latestStart);
96
+ const end = new Date(startDate);
97
+ end.setFullYear(startDate.getFullYear() + 20);
98
+ const fmt = (d) => `${d.getFullYear()}.${String(d.getMonth() + 1).padStart(2, '0')}.${String(d.getDate()).padStart(2, '0')}`;
99
+ const validPeriod = `${fmt(startDate)}-${fmt(end)}`;
100
+ const fullAddress = `${area.provinceName}${area.cityName}${area.countyName}XX路${randomInt(1, 999)}号`;
101
+ let issueAuthority;
102
+ if (area.cityName === area.provinceName) {
103
+ const directions = ['东', '西', '南', '北', '中'];
104
+ issueAuthority = `${area.cityName}公安局${directions[randomInt(0, directions.length - 1)]}城分局`;
105
+ }
106
+ else {
107
+ issueAuthority = `${area.provinceName}公安厅${area.cityName}公安局`;
108
+ }
109
+ return {
110
+ id,
111
+ birth: { year: birth.year, month: birth.month, day: birth.day, ymd: `${birth.year}-${String(birth.month).padStart(2, '0')}-${String(birth.day).padStart(2, '0')}` },
112
+ gender: isMale ? 'male' : 'female',
113
+ nation,
114
+ areaCode: area.code,
115
+ address: { province: area.provinceName, city: area.cityName, county: area.countyName, full: fullAddress },
116
+ issueAuthority,
117
+ validPeriod
118
+ };
119
+ }
120
+ export function generateFakeIdCard(options = {}) {
121
+ return generateFakeIdProfile(options);
122
+ }
123
+ //# sourceMappingURL=generateFakeIdCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateFakeIdCard.js","sourceRoot":"","sources":["../../../src/functions/validation/generateFakeIdCard.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEpD,OAAO,UAAU,MAAM,0BAA0B,CAAA;AA+BjD,SAAS,cAAc,CAAC,IAAY,EAAE,KAAa;IACjD,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;AAC3C,CAAC;AAKD,SAAS,SAAS,CAAC,GAAW,EAAE,GAAW;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;AAC1D,CAAC;AAKD,SAAS,kBAAkB,CACzB,IAAa,EACb,KAAc,EACd,GAAY;IAEZ,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC5C,MAAM,SAAS,GAAG,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;IACtD,MAAM,UAAU,GAAG,KAAK,IAAI,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAC5C,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IACpD,MAAM,QAAQ,GAAG,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;IAE5C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAA;AAC9D,CAAC;AAKD,SAAS,kBAAkB,CAAC,IAAY;IAEtC,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAErE,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IAE1E,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IACvC,CAAC;IAED,OAAO,UAAU,CAAC,GAAG,GAAG,EAAE,CAAC,CAAA;AAC7B,CAAC;AAKD,SAAS,gBAAgB,CAAC,IAAY;IACpC,KAAK,MAAM,QAAQ,IAAI,UAAmB,EAAE,CAAC;QAC3C,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAA;QACjF,CAAC;QACD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACjC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBACvB,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAA;gBAC7E,CAAC;gBACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;wBAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;4BACzB,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;wBACtF,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAiB;IAE1C,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QACxC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,CAAA;QACrC,CAAC;IAEH,CAAC;IAID,MAAM,MAAM,GAAG,YAAY,CAAC,UAAmB,EAAE,QAAQ,CAAC,CAAA;IAG1D,IAAI,SAAiB,CAAA;IACrB,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAEtC,SAAS,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,YAAY,CAAA;IACzE,CAAC;SAAM,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAE7C,SAAS,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,YAAY,CAAA;IACzE,CAAC;SAAM,CAAC;QAEN,SAAS,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,YAAY,CAAA;IACzE,CAAC;IAED,OAAO;QACL,IAAI,EAAE,SAAS;QACf,YAAY,EAAE,MAAM,CAAC,QAAQ;QAC7B,QAAQ,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ;QACxC,UAAU,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;KAChC,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAW,EAAE,GAAS;IAC/C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IAC7E,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,UAAqC,EAAE;IAEvC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,GAAG,CAAA;IACpC,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;IACzF,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAA;IAC/E,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACvE,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,OAAO,EAAE,CAAA;IACzE,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;IAC5G,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,GAAG,QAAQ,EAAE,CAAA;IACjD,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;IAC1C,MAAM,EAAE,GAAG,GAAG,IAAI,GAAG,SAAS,EAAE,CAAA;IAGhC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAA;IACxB,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACrD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;IACtE,IAAI,WAAW,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IAEnD,IAAI,WAAW,GAAG,KAAK,EAAE,CAAC;QACxB,WAAW,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,SAAS,GAAG,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;IACnH,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAA;IAC/B,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAA;IAC7C,MAAM,GAAG,GAAG,CAAC,CAAO,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;IAClI,MAAM,WAAW,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAA;IACnD,MAAM,WAAW,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,MAAM,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAA;IAGpG,IAAI,cAAsB,CAAA;IAC1B,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAExC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;QAC5C,cAAc,GAAG,GAAG,IAAI,CAAC,QAAQ,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAA;IAC7F,CAAC;SAAM,CAAC;QAEN,cAAc,GAAG,GAAG,IAAI,CAAC,YAAY,MAAM,IAAI,CAAC,QAAQ,KAAK,CAAA;IAC/D,CAAC;IACD,OAAO;QACL,EAAE;QACF,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE;QACnK,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;QAClC,MAAM;QACN,QAAQ,EAAE,IAAI,CAAC,IAAI;QACnB,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE;QACzG,cAAc;QACd,WAAW;KACZ,CAAA;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,UAAqC,EAAE;IAEvC,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAA;AACvC,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { Ref } from '../../../references/vue.d';
2
2
  import type { KeyboardEvent } from '../../../references/dom.d';
3
3
  import type { VueCompositionAPI } from '../../../types/vue.d';
4
+ import { Window } from 'references/browser';
4
5
  export type KeyboardEventType = 'keydown' | 'keyup';
5
6
  export type KeyboardCallback = (event: KeyboardEvent) => void;
6
7
  export type Unsubscribe = () => void;
@@ -20,5 +21,9 @@ export interface UseKeyboardReturn {
20
21
  }
21
22
  export interface UseKeyboardDeps {
22
23
  vue: Pick<Required<VueCompositionAPI>, 'ref' | 'onMounted' | 'onUnmounted'>;
24
+ window: {
25
+ addEventListener: Window['addEventListener'];
26
+ removeEventListener: Window['removeEventListener'];
27
+ };
23
28
  }
24
29
  export declare function useKeyboard(options: UseKeyboardOptions | undefined, deps: UseKeyboardDeps): UseKeyboardReturn;