@qingfu/core-env 0.5.14 → 0.5.16
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/lib/area.json +11453 -0
- package/lib/utils.js +40 -10
- package/package.json +18 -19
package/lib/utils.js
CHANGED
|
@@ -5,11 +5,13 @@ const xml2js = require( 'xml2js' );
|
|
|
5
5
|
const xlsx = require( 'xlsx' );
|
|
6
6
|
const baseX = require( 'base-x' ).default;
|
|
7
7
|
const pinyin = require( 'pinyin' ).default;
|
|
8
|
-
const idcard = require( 'idcard' );
|
|
9
8
|
const qrcode = require( 'qr-image' );
|
|
10
9
|
const request = require( 'superagent' );
|
|
10
|
+
const { spawn } = require( 'child_process' );
|
|
11
|
+
const { pipeline } = require( 'stream/promises' );
|
|
11
12
|
const { serializeError } = require( 'serialize-error' );
|
|
12
|
-
const
|
|
13
|
+
const { diff: areaDiff, history: areaHistory } = require( './area.json' );
|
|
14
|
+
const utils = global.utils = module.exports = {};
|
|
13
15
|
|
|
14
16
|
utils.serializeError = serializeError;
|
|
15
17
|
|
|
@@ -247,7 +249,6 @@ utils.minaDecrypt = ({ encrypted, session, iv }) => {
|
|
|
247
249
|
}
|
|
248
250
|
};
|
|
249
251
|
|
|
250
|
-
utils.identityDetail = idcard.info;
|
|
251
252
|
utils.identityValidate = identity => {
|
|
252
253
|
if ( !identity || identity.length !== 18 ) return false;
|
|
253
254
|
if ( !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test( identity )) return false;
|
|
@@ -264,18 +265,47 @@ utils.identityValidate = identity => {
|
|
|
264
265
|
else return true;
|
|
265
266
|
};
|
|
266
267
|
|
|
267
|
-
utils.
|
|
268
|
+
utils.identityDetail = ( identity, returnNew = true ) => {
|
|
269
|
+
let getItem = code => {
|
|
270
|
+
code = _.padEnd( code, 6, '0' );
|
|
271
|
+
if ( returnNew ) code = _.last( areaDiff[ code ]) || code;
|
|
272
|
+
return { code, text: areaHistory[ code ]};
|
|
273
|
+
};
|
|
274
|
+
let result = {
|
|
275
|
+
valid: utils.identityValidate( identity ),
|
|
276
|
+
province: getItem( identity.slice( 0, 2 )),
|
|
277
|
+
city: getItem( identity.slice( 0, 4 )),
|
|
278
|
+
area: getItem( identity.slice( 0, 6 ))
|
|
279
|
+
};
|
|
280
|
+
if ( result.valid ) Object.assign( result, {
|
|
281
|
+
gender: utils.getGender( identity ),
|
|
282
|
+
age: utils.getAge( identity )
|
|
283
|
+
});
|
|
284
|
+
return result;
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
utils.fetchBig = async ({ url, dest, method = 'GET', header = {}, retry = 0, timeout = 300000 }) => {
|
|
288
|
+
let code = `
|
|
289
|
+
const fs = require( 'fs' );
|
|
290
|
+
const request = require( 'superagent' );
|
|
291
|
+
const { pipeline } = require( 'stream/promises' );
|
|
292
|
+
( async () => {
|
|
293
|
+
let writeStream = fs.createWriteStream('${ dest }');
|
|
294
|
+
let readStream = request['${ method.toLowerCase() }']('${ url }').set(${ JSON.stringify( header )});
|
|
295
|
+
if (${ timeout }) readStream.timeout(${ timeout });
|
|
296
|
+
await pipeline( readStream, writeStream );
|
|
297
|
+
})();
|
|
298
|
+
`;
|
|
268
299
|
try {
|
|
269
300
|
return await new Promise(( resolve, reject ) => {
|
|
270
|
-
let
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
readStream.on( 'error', reject );
|
|
274
|
-
writeStream.on( 'finish', resolve );
|
|
301
|
+
let child = spawn( 'node', [ '-e', code ], { timeout, stdio: [ 'pipe', 'inherit', 'inherit' ]});
|
|
302
|
+
child.on( 'close', code => code ? reject( new Error( `Process exited with code ${ code }` )) : resolve() );
|
|
303
|
+
child.on( 'error', reject );
|
|
275
304
|
});
|
|
276
305
|
} catch ( err ) {
|
|
277
306
|
if ( !retry-- ) throw err;
|
|
278
|
-
|
|
307
|
+
await new Promise( resolve => setTimeout( resolve, 1000 ));
|
|
308
|
+
return await utils.fetchBig({ url, dest, method, header, retry, timeout });
|
|
279
309
|
}
|
|
280
310
|
};
|
|
281
311
|
|
package/package.json
CHANGED
|
@@ -1,47 +1,46 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qingfu/core-env",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.16",
|
|
4
4
|
"readmeFilename": "README.md",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@koa/cors": "5.0.0",
|
|
7
|
-
"@koa/router": "13.1.
|
|
8
|
-
"base-x": "5.0.
|
|
9
|
-
"bullmq": "5.
|
|
7
|
+
"@koa/router": "13.1.1",
|
|
8
|
+
"base-x": "5.0.1",
|
|
9
|
+
"bullmq": "5.66.4",
|
|
10
10
|
"busboy": "1.6.0",
|
|
11
11
|
"cookie": "1.0.2",
|
|
12
12
|
"dotenv-extended": "2.9.0",
|
|
13
13
|
"glob": "8.1.0",
|
|
14
|
-
"helmet": "8.
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"koa": "2.15.4",
|
|
14
|
+
"helmet": "8.1.0",
|
|
15
|
+
"ioredis": "5.8.2",
|
|
16
|
+
"jsonwebtoken": "9.0.3",
|
|
17
|
+
"koa": "2.16.3",
|
|
19
18
|
"koa-bodyparser": "4.4.1",
|
|
20
19
|
"koa-compress": "5.1.1",
|
|
21
20
|
"koa-favicon": "2.1.0",
|
|
22
21
|
"koa-helmet": "8.0.1",
|
|
23
|
-
"koa-logger": "
|
|
22
|
+
"koa-logger": "4.0.0",
|
|
24
23
|
"koa-methodoverride": "2.0.0",
|
|
25
24
|
"koa-qs": "3.0.0",
|
|
26
25
|
"lodash": "4.17.21",
|
|
27
26
|
"moleculer": "0.14.35",
|
|
28
|
-
"mongoose": "7.8.
|
|
27
|
+
"mongoose": "7.8.8",
|
|
29
28
|
"mongoose-cast-aggregation": "0.3.1",
|
|
30
|
-
"mongoose-geojson-schema": "
|
|
31
|
-
"mongoose-lean-defaults": "2.
|
|
32
|
-
"mongoose-lean-getters": "2.
|
|
33
|
-
"mongoose-lean-virtuals": "1.1.
|
|
29
|
+
"mongoose-geojson-schema": "3.1.1",
|
|
30
|
+
"mongoose-lean-defaults": "2.3.1",
|
|
31
|
+
"mongoose-lean-getters": "2.2.2",
|
|
32
|
+
"mongoose-lean-virtuals": "1.1.1",
|
|
34
33
|
"ms": "2.1.3",
|
|
35
34
|
"notepack.io": "3.0.1",
|
|
36
|
-
"pinyin": "
|
|
35
|
+
"pinyin": "4.0.0",
|
|
37
36
|
"primus": "8.0.9",
|
|
38
37
|
"primus-rooms": "3.4.3",
|
|
39
38
|
"qr-image": "3.2.0",
|
|
40
39
|
"serialize-error": "8.1.0",
|
|
41
|
-
"superagent": "10.
|
|
40
|
+
"superagent": "10.2.3",
|
|
42
41
|
"wechat-encrypt": "1.1.1",
|
|
43
|
-
"winston": "3.
|
|
44
|
-
"winston-mongodb": "
|
|
42
|
+
"winston": "3.19.0",
|
|
43
|
+
"winston-mongodb": "7.0.1",
|
|
45
44
|
"xlsx": "0.18.5",
|
|
46
45
|
"xml2js": "0.6.2"
|
|
47
46
|
}
|