lightning-pool
Advanced tools
Comparing version 2.4.0 to 3.0.0
{ | ||
"name": "lightning-pool", | ||
"description": "Fastest object pool implementation for JavaScript", | ||
"version": "2.4.0", | ||
"description": "Fastest generic Pool written with TypeScript", | ||
"version": "3.0.0", | ||
"author": "Panates Ltd.", | ||
@@ -13,16 +13,28 @@ "contributors": [ | ||
"javascript", | ||
"pool" | ||
"typescript", | ||
"pool", | ||
"generic" | ||
], | ||
"dependencies": { | ||
"doublylinked": "^2.4.0", | ||
"errorex": "^2.3.2", | ||
"putil-promisify": "^1.7.2" | ||
"doublylinked": "^2.4.3", | ||
"putil-promisify": "^1.8.2" | ||
}, | ||
"devDependencies": { | ||
"@types/mocha": "^8.0.4", | ||
"@types/node": "^14.14.7", | ||
"@typescript-eslint/eslint-plugin": "^4.7.0", | ||
"@typescript-eslint/parser": "^4.7.0", | ||
"babel-eslint": "^10.1.0", | ||
"dotenv": "^8.2.0", | ||
"eslint": "^7.13.0", | ||
"eslint-config-google": "^0.14.0", | ||
"mocha": "^8.2.1", | ||
"npm-run-path": "^4.0.1", | ||
"nyc": "^15.1.0", | ||
"rejected-or-not": "^2.0.0" | ||
"ts-cleanup": "^0.2.2", | ||
"ts-loader": "^8.0.11", | ||
"ts-node": "^9.0.0", | ||
"ts-mocha": "^8.0.0", | ||
"tsconfig-paths": "^3.9.0", | ||
"typescript": "^4.0.5" | ||
}, | ||
@@ -32,11 +44,12 @@ "engines": { | ||
}, | ||
"main": "lib/index.js", | ||
"types": "lib/index.d.ts", | ||
"main": "dist/index.js", | ||
"types": "dist/index.d.ts", | ||
"directories": { | ||
"lib": "./lib" | ||
"lib": "dist", | ||
"test": "test" | ||
}, | ||
"files": [ | ||
"LICENSE", | ||
"README.md", | ||
"lib/" | ||
"README", | ||
"dist/" | ||
], | ||
@@ -47,6 +60,12 @@ "nyc": { | ||
"scripts": { | ||
"test": "mocha --require ./test/support/env --reporter spec --bail --check-leaks test/", | ||
"cover": "nyc --reporter html --reporter text npm run test", | ||
"test": "ts-mocha -p test/tsconfig.json --paths --reporter spec test/**/*.spec.ts", | ||
"cover": "nyc --reporter=cobertura --reporter html --reporter text npm run test", | ||
"clean": "npm run clean:src && npm run clean:dist", | ||
"clean:dist": "ts-cleanup -d dist --remove-dirs --all", | ||
"clean:src": "ts-cleanup -s src --all | ts-cleanup -s test", | ||
"build": "tsc -b tsconfig-build.json", | ||
"compile": "tsc -b tsconfig.json", | ||
"lint": "eslint src/** --fix --no-error-on-unmatched-pattern", | ||
"travis-cover": "nyc --reporter lcovonly npm run test" | ||
} | ||
} |
107
README.md
@@ -7,4 +7,2 @@ # lightning-pool | ||
[![Test Coverage][coveralls-image]][coveralls-url] | ||
[![Dependencies][dependencies-image]][dependencies-url] | ||
[![DevDependencies][devdependencies-image]][devdependencies-url] | ||
@@ -28,5 +26,5 @@ ## About | ||
```js | ||
const lightningPool = require('lightning-pool'); | ||
const dbDriver = require('some-db-driver'); | ||
```ts | ||
import {Pool} from 'lightning-pool'; | ||
import dbDriver from 'some-db-driver'; | ||
@@ -37,37 +35,14 @@ /** | ||
const factory = { | ||
create: function(opts){ | ||
return new Promise((resolve, reject) => { | ||
DbDriver.createClient((err, client) => { | ||
if (err) | ||
return reject(err); | ||
resolve(client); | ||
}); | ||
}); | ||
create: async function(opts) { | ||
const client = await DbDriver.createClient(); | ||
return client; | ||
}, | ||
destroy: function(client){ | ||
return new Promise((resolve, reject) => { | ||
client.destroy((err) => { | ||
if (err) | ||
return reject(err); | ||
resolve(); | ||
}); | ||
}); | ||
destroy: async function(client) { | ||
await client.close(); | ||
}, | ||
reset: function(client){ | ||
return new Promise((resolve, reject) => { | ||
client.rollback((err) => { | ||
if (err) | ||
return reject(err); | ||
resolve(); | ||
}); | ||
}); | ||
reset: async function(client){ | ||
await client.rollback(); | ||
}, | ||
validate: function(client){ | ||
return new Promise((resolve, reject) => { | ||
client.execute('some test sql', (err) => { | ||
if (err) | ||
return reject(err); | ||
resolve(); | ||
}); | ||
}); | ||
validate: async function(client) { | ||
await client.query('select 1'); | ||
} | ||
@@ -77,36 +52,28 @@ }; | ||
/** | ||
* Step 1 - Create a the pool object | ||
* Step 2 - Create a the pool object | ||
*/ | ||
var opts = { | ||
const pool = new Pool(factory, { | ||
max: 10, // maximum size of the pool | ||
min: 2, // minimum size of the pool | ||
minIdle: 2 // minimum idle resources | ||
} | ||
}); | ||
var pool = lightningPool.createPool(factory, opts) | ||
/** | ||
* Step 3 - Use pool in your code to acquire/release resources | ||
*/ | ||
// acquire connection - Promise is resolved | ||
const client = await pool.acquire(); | ||
// once a resource becomes available | ||
pool.acquire().then(client => { | ||
// Use resource | ||
client.query("select * from foo", [], function() { | ||
// return object back to pool | ||
pool.release(client); | ||
}); | ||
}).catch(err => { | ||
console.error(err); | ||
}); | ||
// Use resource | ||
await client.query("select * from foo"); | ||
// return object back to pool | ||
await pool.release(client); | ||
/** | ||
* Step 3 - Shutdown pool (optional) | ||
* Step 4 - Shutdown pool (optional) | ||
* Call close(force) when you need to shutdown the pool | ||
*/ | ||
process.on('SIGINT', function() { | ||
pool.close(true); | ||
}); | ||
// Wait for active resource for 5 sec than force shutdown | ||
await pool.close(5000); | ||
``` | ||
@@ -120,9 +87,9 @@ | ||
```js | ||
const lightningPool = require('lightning-pool'); | ||
const pool = lightningPool.createPool(factory, options); | ||
```ts | ||
import {createPool} from 'lightning-pool'; | ||
const pool = createPool(factory, options); | ||
``` | ||
```js | ||
const {Pool} = require('lightning-pool'); | ||
```ts | ||
import {Pool} from 'lightning-pool'; | ||
const pool = new Pool(factory, options); | ||
@@ -273,9 +240,13 @@ ``` | ||
##### Usage (With promise) | ||
##### Usage | ||
`pool.close([force])` | ||
`close(callback: Callback): void;` | ||
`close(terminateWait: number, callback?: Callback): Promise<void>;` | ||
`close(force: boolean, callback?: Callback): void;` | ||
- `force` (optional): If true, `Pool` will immediately destroy resources instead of waiting to be released (Default false) | ||
- *Returns*: A Promise | ||
- `force`: If true, `Pool` will immediately destroy resources instead of waiting to be released | ||
- `terminateWait`: If specified, `Pool` will wait for active resources to release | ||
- `callback`: If specified, callback will be called after close. If not specified a promise returns. | ||
```js | ||
@@ -400,3 +371,3 @@ var promise = pool.close(); | ||
- node `>= 4.0`; | ||
- node `>= 10.0`; | ||
@@ -409,3 +380,3 @@ ### License | ||
[travis-image]: https://img.shields.io/travis/panates/lightning-pool/master.svg | ||
[travis-url]: https://travis-ci.org/panates/lightning-pool | ||
[travis-url]: https://travis-ci.com/panates/lightning-pool | ||
[coveralls-image]: https://img.shields.io/coveralls/panates/lightning-pool/master.svg | ||
@@ -412,0 +383,0 @@ [coveralls-url]: https://coveralls.io/r/panates/lightning-pool |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
64348
2
24
852
17
386
1
- Removederrorex@^2.3.2
- Removederrorex@2.3.2(transitive)
- Removedputil-merge@3.13.0(transitive)
- Removedstackframe@1.3.4(transitive)
Updateddoublylinked@^2.4.3
Updatedputil-promisify@^1.8.2