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.
- package/dist/assets/region.json +14780 -0
- package/dist/functions/dom/createSharedKeyboardCenter.d.ts +18 -0
- package/dist/functions/dom/createSharedKeyboardCenter.js +58 -0
- package/dist/functions/dom/createSharedKeyboardCenter.js.map +1 -0
- package/dist/functions/image/renderIdCard.d.ts +44 -0
- package/dist/functions/image/renderIdCard.js +146 -0
- package/dist/functions/image/renderIdCard.js.map +1 -0
- package/dist/functions/tencent-cloud/upload.cos.js +4 -2
- package/dist/functions/tencent-cloud/upload.cos.js.map +1 -1
- package/dist/functions/utils/randomRegion.d.ts +24 -0
- package/dist/functions/utils/randomRegion.js +74 -0
- package/dist/functions/utils/randomRegion.js.map +1 -0
- package/dist/functions/validation/generateFakeIdCard.d.ts +30 -0
- package/dist/functions/validation/generateFakeIdCard.js +123 -0
- package/dist/functions/validation/generateFakeIdCard.js.map +1 -0
- package/dist/vue-hooks/dom/useKeyboard.d.ts +5 -0
- package/dist/vue-hooks/dom/useKeyboard.js +14 -13
- package/dist/vue-hooks/dom/useKeyboard.js.map +1 -1
- package/package.json +5 -2
- package/types/tencent-cloud.d.ts +2 -0
|
@@ -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":"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"}
|
|
@@ -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
|
-
|
|
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":"
|
|
1
|
+
{"version":3,"file":"upload.cos.js","sourceRoot":"","sources":["../../../src/functions/tencent-cloud/upload.cos.ts"],"names":[],"mappings":"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"}
|
|
@@ -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":"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"}
|
|
@@ -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":"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"}
|
|
@@ -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;
|