JSPM

abc-ip2region

0.0.1
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • 0
  • Score
    100M100P100Q28027F
  • License ISC

ip database

Package Exports

  • abc-ip2region

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (abc-ip2region) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

nodejs 客户端

Install

npm install lionsoul-ip2region --save 

Example

const searcher = require('lionsoul-ip2region').create();
searcher.btreeSearchSync('xxx.xxx.xxx.xxx')
// => { city: 2163, region: '中国|0|广东省|深圳市|联通' }

实现情况:

现已实现同步和异步查询,具体使用方法可以参考 nodejs\tests\constructorTest.spec.jsnodejs\tests\createTest.spec.js

如何贡献?

你可以任意修改代码,但必须确保通过全部的单元测试。要保证通过全部的单元测试,请在 Nodejs 控制台下切换到 nodejs 目录:

1)在此之前,请先运行 npm i 确保你已经安装了各类初始化第三方工具。 2)然后运行 npm run coverage 确保你的代码可以通过全部测试(必要时可以添加测试)。

D:\Projects\ip2region\binding\nodejs>npm run coverage

> ip2region@0.0.1 coverage D:\Projects\ip2region\binding\nodejs
> npm run test && jest --coverage


> ip2region@0.0.1 test D:\Projects\ip2region\binding\nodejs
> jest

 PASS  tests\constructorTest.spec.js
 PASS  tests\createTest.spec.js
 PASS  tests\exceptionTest.spec.js

Snapshot Summary
 › 168 snapshots written in 2 test suites.

Test Suites: 3 passed, 3 total
Tests:       14 passed, 14 total
Snapshots:   168 added, 168 total
Time:        1.645s
Ran all test suites.
 PASS  tests\constructorTest.spec.js
 PASS  tests\createTest.spec.js
 PASS  tests\exceptionTest.spec.js
----------------------|----------|----------|----------|----------|-------------------|
File                  |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
----------------------|----------|----------|----------|----------|-------------------|
All files             |    92.34 |    80.77 |       96 |    93.83 |                   |
 nodejs               |    91.95 |    80.26 |    95.65 |    93.51 |                   |
  ip2region.js        |    91.95 |    80.26 |    95.65 |    93.51 |... 09,410,460,484 |
 nodejs/tests/utils   |      100 |      100 |      100 |      100 |                   |
  asyncFor.js         |      100 |      100 |      100 |      100 |                   |
  fetchMainVersion.js |      100 |      100 |      100 |      100 |                   |
  testData.js         |      100 |      100 |      100 |      100 |                   |
----------------------|----------|----------|----------|----------|-------------------|

Test Suites: 3 passed, 3 total
Tests:       14 passed, 14 total
Snapshots:   168 passed, 168 total
Time:        1.792s
Ran all test suites.

3)使用benchmark测试,结果如下:

D:\Projects\ip2region\binding\nodejs>node D:\Projects\ip2region\binding\nodejs\tests\benchmarkTests\main.js
MemorySearchSync x 55,969 ops/sec ±2.22% (90 runs sampled)
BinarySearchSync x 610 ops/sec ±5.41% (77 runs sampled)
BtreeSearchSync x 2,439 ops/sec ±6.93% (69 runs sampled)
MemorySearch x 2,924 ops/sec ±0.67% (85 runs sampled)
BinarySearch x 154 ops/sec ±2.20% (69 runs sampled)
BtreeSearch x 294 ops/sec ±2.58% (76 runs sampled)
Rand    Name                Time (in milliseconds)
1       MemorySearchSync    0.018
2       MemorySearch        0.342
3       BtreeSearchSync     0.410
4       BinarySearchSync    1.639
5       BtreeSearch         3.407
6       BinarySearch        6.497