Compare commits
34 Commits
Author | SHA1 | Date | |
---|---|---|---|
2bbbbc17e8 | |||
4ada87a945 | |||
3e45a24750 | |||
96b4926f8f | |||
b0ceeda2b9 | |||
b118419301 | |||
25699ebfc5 | |||
a69f565cf8 | |||
fe423a8e8a | |||
70862850d5 | |||
31ab725d2f | |||
d98890c14e | |||
5327914895 | |||
5bd2b6cb55 | |||
1cdce1b862 | |||
e18e7a04ee | |||
e64fa93dca | |||
1cf09016df | |||
aaa218003e | |||
db9d748f99 | |||
40e412282c | |||
768cf06e0e | |||
bab5cea49f | |||
46aa545324 | |||
2ef01e1111 | |||
0f129262e9 | |||
8e4d40edd0 | |||
f6afe90a63 | |||
a6d77bcd9d | |||
f7a6604637 | |||
1ff6902cb3 | |||
d0ca09f238 | |||
10952a9e4e | |||
700ab08315 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,4 +1,4 @@
|
||||
node_modules/
|
||||
pages/
|
||||
public/
|
||||
|
||||
coverage/
|
||||
|
109
.gitlab-ci.yml
109
.gitlab-ci.yml
@ -1,56 +1,127 @@
|
||||
image: hosttoday/ht-docker-node:npmts
|
||||
# gitzone standard
|
||||
image: hosttoday/ht-docker-node:npmci
|
||||
|
||||
cache:
|
||||
paths:
|
||||
- .yarn/
|
||||
key: "$CI_BUILD_STAGE"
|
||||
|
||||
stages:
|
||||
- security
|
||||
- test
|
||||
- release
|
||||
- trigger
|
||||
- pages
|
||||
- metadata
|
||||
|
||||
# ====================
|
||||
# security stage
|
||||
# ====================
|
||||
mirror:
|
||||
stage: security
|
||||
script:
|
||||
- npmci git mirror
|
||||
tags:
|
||||
- docker
|
||||
- notpriv
|
||||
|
||||
snyk:
|
||||
stage: security
|
||||
script:
|
||||
- npmci command yarn global add snyk
|
||||
- npmci command yarn install --ignore-scripts
|
||||
- npmci command snyk test
|
||||
tags:
|
||||
- docker
|
||||
- notpriv
|
||||
|
||||
# ====================
|
||||
# test stage
|
||||
# ====================
|
||||
testLEGACY:
|
||||
stage: test
|
||||
script:
|
||||
- npmci test legacy
|
||||
- npmci node install legacy
|
||||
- npmci npm install
|
||||
- npmci npm test
|
||||
coverage: /\d+.?\d+?\%\s*coverage/
|
||||
tags:
|
||||
- docker
|
||||
- docker
|
||||
- notpriv
|
||||
allow_failure: true
|
||||
|
||||
testLTS:
|
||||
stage: test
|
||||
script:
|
||||
- npmci test lts
|
||||
- npmci node install lts
|
||||
- npmci npm install
|
||||
- npmci npm test
|
||||
coverage: /\d+.?\d+?\%\s*coverage/
|
||||
tags:
|
||||
- docker
|
||||
- docker
|
||||
- notpriv
|
||||
|
||||
testSTABLE:
|
||||
stage: test
|
||||
script:
|
||||
- npmci test stable
|
||||
- npmci node install stable
|
||||
- npmci npm install
|
||||
- npmci npm test
|
||||
coverage: /\d+.?\d+?\%\s*coverage/
|
||||
tags:
|
||||
- docker
|
||||
- docker
|
||||
- notpriv
|
||||
|
||||
release:
|
||||
stage: release
|
||||
script:
|
||||
- npmci publish
|
||||
- npmci node install stable
|
||||
- npmci npm publish
|
||||
only:
|
||||
- tags
|
||||
- tags
|
||||
tags:
|
||||
- docker
|
||||
- docker
|
||||
- notpriv
|
||||
|
||||
# ====================
|
||||
# metadata stage
|
||||
# ====================
|
||||
codequality:
|
||||
stage: metadata
|
||||
image: docker:stable
|
||||
allow_failure: true
|
||||
services:
|
||||
- docker:stable-dind
|
||||
script:
|
||||
- export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
|
||||
- docker run
|
||||
--env SOURCE_CODE="$PWD"
|
||||
--volume "$PWD":/code
|
||||
--volume /var/run/docker.sock:/var/run/docker.sock
|
||||
"registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
|
||||
artifacts:
|
||||
paths: [codeclimate.json]
|
||||
tags:
|
||||
- docker
|
||||
- priv
|
||||
|
||||
trigger:
|
||||
stage: trigger
|
||||
stage: metadata
|
||||
script:
|
||||
- npmci trigger
|
||||
- npmci trigger
|
||||
only:
|
||||
- tags
|
||||
- tags
|
||||
tags:
|
||||
- docker
|
||||
- docker
|
||||
- notpriv
|
||||
|
||||
pages:
|
||||
image: hosttoday/ht-docker-node:npmpage
|
||||
stage: pages
|
||||
image: hosttoday/ht-docker-node:npmci
|
||||
stage: metadata
|
||||
script:
|
||||
- npmci command npmpage --host gitlab
|
||||
- npmci command yarn global add npmpage
|
||||
- npmci command npmpage
|
||||
tags:
|
||||
- docker
|
||||
- notpriv
|
||||
only:
|
||||
- tags
|
||||
artifacts:
|
||||
|
32
README.md
32
README.md
@ -1,32 +0,0 @@
|
||||
# dnsly
|
||||
smart dns methods written in TypeScript
|
||||
|
||||
## Availabililty
|
||||
[](https://www.npmjs.com/package/dnsly)
|
||||
[](https://gitlab.com/pushrocks/dnsly)
|
||||
[](https://github.com/pushrocks/dnsly)
|
||||
[](https://pushrocks.gitlab.io/dnsly/)
|
||||
|
||||
## Status for master
|
||||
[](https://gitlab.com/pushrocks/dnsly/commits/master)
|
||||
[](https://gitlab.com/pushrocks/dnsly/commits/master)
|
||||
[](https://david-dm.org/pushrocks/dnsly)
|
||||
[](https://www.bithound.io/github/pushrocks/dnsly/master/dependencies/npm)
|
||||
[](https://www.bithound.io/github/pushrocks/dnsly)
|
||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||
[](http://standardjs.com/)
|
||||
|
||||
## Usage
|
||||
we recommend the use of TypeScript for optimal intellisense
|
||||
```javascript
|
||||
import * as dnsly from 'dnsly'
|
||||
|
||||
let myDnsly = new dnsly.Dnsly('google') // uses Google DNS Servers e.g 8.8.8.8
|
||||
myDnsly.getRecord('example.com','AAAA') // returns promise
|
||||
.then(record => { // AAAA record for google.com
|
||||
// do something
|
||||
})
|
||||
```
|
||||
|
||||
[](https://push.rocks)
|
File diff suppressed because one or more lines are too long
@ -1,80 +0,0 @@
|
||||
TN:
|
||||
SF:/Users/philkunz/gitlab/pushrocks/dnsly/dist/index.js
|
||||
FN:3,(anonymous_1)
|
||||
FN:3,defineProperties
|
||||
FN:3,(anonymous_3)
|
||||
FN:5,_classCallCheck
|
||||
FN:13,(anonymous_5)
|
||||
FN:17,Dnsly
|
||||
FN:30,getRecord
|
||||
FN:37,(anonymous_8)
|
||||
FN:51,close
|
||||
FN:60,_setDnsProvider
|
||||
FNF:10
|
||||
FNH:10
|
||||
FNDA:1,(anonymous_1)
|
||||
FNDA:1,defineProperties
|
||||
FNDA:1,(anonymous_3)
|
||||
FNDA:2,_classCallCheck
|
||||
FNDA:1,(anonymous_5)
|
||||
FNDA:2,Dnsly
|
||||
FNDA:3,getRecord
|
||||
FNDA:3,(anonymous_8)
|
||||
FNDA:2,close
|
||||
FNDA:2,_setDnsProvider
|
||||
DA:3,3
|
||||
DA:5,2
|
||||
DA:7,1
|
||||
DA:8,1
|
||||
DA:13,1
|
||||
DA:17,1
|
||||
DA:18,2
|
||||
DA:20,2
|
||||
DA:21,2
|
||||
DA:28,1
|
||||
DA:31,3
|
||||
DA:32,3
|
||||
DA:38,3
|
||||
DA:39,0
|
||||
DA:41,3
|
||||
DA:43,3
|
||||
DA:52,2
|
||||
DA:61,2
|
||||
DA:62,2
|
||||
DA:63,2
|
||||
DA:65,0
|
||||
DA:70,1
|
||||
DA:73,1
|
||||
LF:23
|
||||
LH:21
|
||||
BRDA:3,1,0,3
|
||||
BRDA:3,1,1,3
|
||||
BRDA:3,2,0,3
|
||||
BRDA:3,2,1,0
|
||||
BRDA:3,3,0,1
|
||||
BRDA:3,3,1,0
|
||||
BRDA:3,4,0,0
|
||||
BRDA:3,4,1,1
|
||||
BRDA:5,5,0,0
|
||||
BRDA:5,5,1,2
|
||||
BRDA:38,6,0,0
|
||||
BRDA:38,6,1,3
|
||||
BRDA:61,7,0,2
|
||||
BRDA:61,7,1,0
|
||||
BRF:14
|
||||
BRH:8
|
||||
end_of_record
|
||||
TN:
|
||||
SF:/Users/philkunz/gitlab/pushrocks/dnsly/dist/dnsly.plugins.js
|
||||
FNF:0
|
||||
FNH:0
|
||||
DA:3,1
|
||||
DA:4,1
|
||||
DA:5,1
|
||||
DA:6,1
|
||||
DA:7,1
|
||||
LF:5
|
||||
LH:5
|
||||
BRF:0
|
||||
BRH:0
|
||||
end_of_record
|
4
dist/dnsly.plugins.d.ts
vendored
4
dist/dnsly.plugins.d.ts
vendored
@ -1,4 +0,0 @@
|
||||
import 'typings-global';
|
||||
import * as beautylog from 'beautylog';
|
||||
declare let dnsSocket: any;
|
||||
export { beautylog, dnsSocket };
|
7
dist/dnsly.plugins.js
vendored
7
dist/dnsly.plugins.js
vendored
@ -1,7 +0,0 @@
|
||||
"use strict";
|
||||
require("typings-global");
|
||||
const beautylog = require("beautylog");
|
||||
exports.beautylog = beautylog;
|
||||
let dnsSocket = require('dns-socket');
|
||||
exports.dnsSocket = dnsSocket;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zbHkucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2Ruc2x5LnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDBCQUF1QjtBQUN2Qix1Q0FBc0M7QUFJbEMsOEJBQVM7QUFIYixJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUE7QUFJakMsOEJBQVMifQ==
|
28
dist/index.d.ts
vendored
28
dist/index.d.ts
vendored
@ -1,28 +0,0 @@
|
||||
/// <reference types="q" />
|
||||
import * as q from 'q';
|
||||
export declare type TDnsProvider = 'google';
|
||||
export declare type TDnsRecordType = 'A' | 'AAAA' | 'CNAME' | 'PTR' | 'MX' | 'NAPTR' | 'NS' | 'SOA' | 'SRV' | 'TXT';
|
||||
/**
|
||||
* class dnsly offers methods for working with dns from a dns provider like Google DNS
|
||||
*/
|
||||
export declare class Dnsly {
|
||||
dnsServerIp: string;
|
||||
dnsServerPort: number;
|
||||
dnsSocketInstance: any;
|
||||
/**
|
||||
* constructor for class dnsly
|
||||
*/
|
||||
constructor(dnsProviderArg: TDnsProvider);
|
||||
/**
|
||||
* gets a record
|
||||
*/
|
||||
getRecord(recordNameArg: string, recordTypeArg: TDnsRecordType): q.Promise<{}>;
|
||||
/**
|
||||
* close the dnsly instance
|
||||
*/
|
||||
close(): void;
|
||||
/**
|
||||
* set the DNS provider
|
||||
*/
|
||||
private _setDnsProvider(dnsProvider);
|
||||
}
|
53
dist/index.js
vendored
53
dist/index.js
vendored
@ -1,53 +0,0 @@
|
||||
"use strict";
|
||||
const q = require("q");
|
||||
const plugins = require("./dnsly.plugins");
|
||||
/**
|
||||
* class dnsly offers methods for working with dns from a dns provider like Google DNS
|
||||
*/
|
||||
class Dnsly {
|
||||
/**
|
||||
* constructor for class dnsly
|
||||
*/
|
||||
constructor(dnsProviderArg) {
|
||||
this._setDnsProvider(dnsProviderArg);
|
||||
this.dnsSocketInstance = plugins.dnsSocket();
|
||||
}
|
||||
/**
|
||||
* gets a record
|
||||
*/
|
||||
getRecord(recordNameArg, recordTypeArg) {
|
||||
let done = q.defer();
|
||||
this.dnsSocketInstance.query({
|
||||
questions: [{
|
||||
type: recordTypeArg,
|
||||
name: recordNameArg
|
||||
}]
|
||||
}, this.dnsServerPort, this.dnsServerIp, (err, res) => {
|
||||
if (err) {
|
||||
done.reject(err);
|
||||
}
|
||||
done.resolve(res);
|
||||
});
|
||||
return done.promise;
|
||||
}
|
||||
/**
|
||||
* close the dnsly instance
|
||||
*/
|
||||
close() {
|
||||
this.dnsSocketInstance.destroy();
|
||||
}
|
||||
/**
|
||||
* set the DNS provider
|
||||
*/
|
||||
_setDnsProvider(dnsProvider) {
|
||||
if (dnsProvider === 'google') {
|
||||
this.dnsServerIp = '8.8.8.8';
|
||||
this.dnsServerPort = 53;
|
||||
}
|
||||
else {
|
||||
throw new Error('unknown dns provider');
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.Dnsly = Dnsly;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdUJBQXNCO0FBQ3RCLDJDQUEwQztBQWMxQzs7R0FFRztBQUNIO0lBSUk7O09BRUc7SUFDSCxZQUFZLGNBQTRCO1FBQ3BDLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDcEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTLENBQUMsYUFBcUIsRUFBRSxhQUE2QjtRQUMxRCxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FDeEI7WUFDSSxTQUFTLEVBQUUsQ0FBQztvQkFDUixJQUFJLEVBQUUsYUFBYTtvQkFDbkIsSUFBSSxFQUFFLGFBQWE7aUJBQ3RCLENBQUM7U0FDTCxFQUNELElBQUksQ0FBQyxhQUFhLEVBQ2xCLElBQUksQ0FBQyxXQUFXLEVBQ2hCLENBQUMsR0FBRyxFQUFFLEdBQUc7WUFDTCxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDcEIsQ0FBQztZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDckIsQ0FBQyxDQUFDLENBQUE7UUFDTixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWUsQ0FBQyxXQUF5QjtRQUM3QyxFQUFFLENBQUMsQ0FBQyxXQUFXLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQTtZQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQTtRQUMzQixDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDSixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUE7UUFDM0MsQ0FBQztJQUNMLENBQUM7Q0FDSjtBQXJERCxzQkFxREMifQ==
|
45
docs/index.md
Normal file
45
docs/index.md
Normal file
@ -0,0 +1,45 @@
|
||||
# dnsly
|
||||
|
||||
smart dns methods written in TypeScript
|
||||
|
||||
## Availabililty
|
||||
|
||||
[](https://www.npmjs.com/package/dnsly)
|
||||
[](https://GitLab.com/pushrocks/dnsly)
|
||||
[](https://github.com/pushrocks/dnsly)
|
||||
[](https://pushrocks.gitlab.io/dnsly/)
|
||||
|
||||
## Status for master
|
||||
|
||||
[](https://GitLab.com/pushrocks/dnsly/commits/master)
|
||||
[](https://GitLab.com/pushrocks/dnsly/commits/master)
|
||||
[](https://www.npmjs.com/package/dnsly)
|
||||
[](https://david-dm.org/pushrocks/dnsly)
|
||||
[](https://www.bithound.io/github/pushrocks/dnsly/master/dependencies/npm)
|
||||
[](https://www.bithound.io/github/pushrocks/dnsly)
|
||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||
[](http://standardjs.com/)
|
||||
|
||||
## Usage
|
||||
|
||||
```javascript
|
||||
import * as dnsly from 'dnsly';
|
||||
|
||||
let myDnsly = new dnsly.Dnsly('google'); // uses Google DNS Servers e.g 8.8.8.8
|
||||
myDnsly
|
||||
.getRecord('example.com', 'AAAA') // returns promise
|
||||
.then((record: dnsly.I_AAAA) => {
|
||||
// AAAA record for google.com, the I_AAAA will give you proper typings for the record return type
|
||||
// do something
|
||||
});
|
||||
```
|
||||
|
||||
Use TypeScript for best in class instellisense.
|
||||
|
||||
For further information read the linked docs at the top of this README.
|
||||
|
||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||
> | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
|
||||
|
||||
[](https://push.rocks)
|
8
npmextra.json
Normal file
8
npmextra.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"npmci": {
|
||||
"npmGlobalTools": [
|
||||
"npmts"
|
||||
],
|
||||
"npmAccessLevel": "public"
|
||||
}
|
||||
}
|
22
package.json
22
package.json
@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "dnsly",
|
||||
"version": "1.0.2",
|
||||
"name": "@pushrocks/smartdns",
|
||||
"version": "3.0.0",
|
||||
"description": "smart dns methods written in TypeScript",
|
||||
"main": "dist/index.js",
|
||||
"typings": "../dist/index.d.ts",
|
||||
"typings": "dist/index.d.ts",
|
||||
"scripts": {
|
||||
"test": "(npmts)"
|
||||
"test": "(ts-node -O '{\"lib\": [ \"es2015\" ]}' test/test.ts)",
|
||||
"build": "(npmts)"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@ -23,15 +24,12 @@
|
||||
},
|
||||
"homepage": "https://gitlab.com/pushrocks/dnsly#README",
|
||||
"dependencies": {
|
||||
"@types/q": "0.0.32",
|
||||
"beautylog": "^6.0.0",
|
||||
"dns-socket": "^1.4.2",
|
||||
"q": "^1.4.1",
|
||||
"typings-global": "^1.0.14"
|
||||
"beautylog": "^6.1.10",
|
||||
"smartdelay": "^1.0.4",
|
||||
"smartq": "^1.1.8"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/should": "^8.1.30",
|
||||
"should": "^11.1.1",
|
||||
"typings-test": "^1.0.3"
|
||||
"@types/node": "^10.0.8",
|
||||
"tapbundle": "^2.0.0"
|
||||
}
|
||||
}
|
||||
|
33
readme.md
Normal file
33
readme.md
Normal file
@ -0,0 +1,33 @@
|
||||
# @pushrocks/smartdns
|
||||
|
||||
smart dns methods written in TypeScript
|
||||
|
||||
## Availabililty
|
||||
|
||||
[](https://www.npmjs.com/package/@pushrocks/smartdns)
|
||||
[](https://GitLab.com/pushrocks/smartdns)
|
||||
[](https://github.com/pushrocks/smartdns)
|
||||
[](https://pushrocks.gitlab.io/smartdns/)
|
||||
|
||||
## Status for master
|
||||
|
||||
[](https://GitLab.com/pushrocks/smartdns/commits/master)
|
||||
[](https://GitLab.com/pushrocks/smartdns/commits/master)
|
||||
[](https://www.npmjs.com/package/@pushrocks/smartdns)
|
||||
[](https://david-dm.org/pushrocks/smartdns)
|
||||
[](https://www.bithound.io/github/pushrocks/smartdns/master/dependencies/npm)
|
||||
[](https://www.bithound.io/github/pushrocks/smartdns)
|
||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||
[](http://standardjs.com/)
|
||||
|
||||
## Usage
|
||||
|
||||
Use TypeScript for best in class instellisense.
|
||||
|
||||
For further information read the linked docs at the top of this README.
|
||||
|
||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||
> | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
|
||||
|
||||
[](https://push.rocks)
|
1
test/test.d.ts
vendored
1
test/test.d.ts
vendored
@ -1 +0,0 @@
|
||||
import 'typings-test';
|
49
test/test.js
49
test/test.js
@ -1,49 +0,0 @@
|
||||
"use strict";
|
||||
require("typings-test");
|
||||
const should = require("should");
|
||||
const dnsly = require("../dist/index");
|
||||
let testDnsly;
|
||||
describe('dnsly', function () {
|
||||
it('should create an instance of Dnsly', function () {
|
||||
testDnsly = new dnsly.Dnsly('google');
|
||||
should(testDnsly).be.instanceOf(dnsly.Dnsly);
|
||||
});
|
||||
it('should, get a dns record for a domain when called quickly', function (done) {
|
||||
testDnsly.getRecord('google.com', 'A').then(res => {
|
||||
console.log(res);
|
||||
done();
|
||||
}).catch(err => {
|
||||
console.log(err);
|
||||
done(err);
|
||||
});
|
||||
});
|
||||
it('should, get a dns record for a domain when called with timeout', function (done) {
|
||||
setTimeout(() => {
|
||||
testDnsly.getRecord('google.com', 'A').then(res => {
|
||||
console.log(res);
|
||||
done();
|
||||
}).catch(err => {
|
||||
console.log(err);
|
||||
done(err);
|
||||
});
|
||||
}, 1000);
|
||||
});
|
||||
it('should get a dns record for a domain when called with second instance and timeout', function (done) {
|
||||
this.timeout(10000);
|
||||
let testDnsly2 = new dnsly.Dnsly('google');
|
||||
setTimeout(() => {
|
||||
testDnsly2.getRecord('google.com', 'MX').then(res => {
|
||||
console.log(res);
|
||||
done();
|
||||
testDnsly2.close();
|
||||
}).catch(err => {
|
||||
console.log(err);
|
||||
done(err);
|
||||
});
|
||||
}, 5000);
|
||||
});
|
||||
it('should close the instance', function () {
|
||||
testDnsly.close();
|
||||
});
|
||||
});
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdCQUFxQjtBQUNyQixpQ0FBZ0M7QUFFaEMsdUNBQXNDO0FBRXRDLElBQUksU0FBc0IsQ0FBQTtBQUUxQixRQUFRLENBQUMsT0FBTyxFQUFFO0lBQ2QsRUFBRSxDQUFDLG9DQUFvQyxFQUFFO1FBQ3JDLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDckMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hELENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLDJEQUEyRCxFQUFFLFVBQVUsSUFBSTtRQUMxRSxTQUFTLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRztZQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2hCLElBQUksRUFBRSxDQUFBO1FBQ1YsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUc7WUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNiLENBQUMsQ0FBQyxDQUFBO0lBRU4sQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsZ0VBQWdFLEVBQUUsVUFBVSxJQUFJO1FBQy9FLFVBQVUsQ0FBQztZQUNQLFNBQVMsQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUNoQixJQUFJLEVBQUUsQ0FBQTtZQUNWLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHO2dCQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNiLENBQUMsQ0FBQyxDQUFBO1FBQ04sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBRVosQ0FBQyxDQUFDLENBQUE7SUFDRixFQUFFLENBQUMsbUZBQW1GLEVBQUUsVUFBVSxJQUFJO1FBQ2xHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDbkIsSUFBSSxVQUFVLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzFDLFVBQVUsQ0FBQztZQUNQLFVBQVUsQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHO2dCQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUNoQixJQUFJLEVBQUUsQ0FBQTtnQkFDTixVQUFVLENBQUMsS0FBSyxFQUFFLENBQUE7WUFDdEIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUc7Z0JBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ2IsQ0FBQyxDQUFDLENBQUE7UUFDTixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFFWixDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQywyQkFBMkIsRUFBRTtRQUM1QixTQUFTLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDckIsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUMsQ0FBQSJ9
|
84
test/test.ts
84
test/test.ts
@ -1,28 +1,68 @@
|
||||
import 'typings-test'
|
||||
import * as should from 'should'
|
||||
import { expect, tap } from 'tapbundle';
|
||||
|
||||
import * as dnsly from '../dist/index'
|
||||
import * as smartdns from '../ts/index';
|
||||
|
||||
let testDnsly: dnsly.Dnsly
|
||||
let testDnsly: smartdns.Smartdns;
|
||||
|
||||
describe('dnsly', function () {
|
||||
it('should create an instance of Dnsly', function () {
|
||||
testDnsly = new dnsly.Dnsly('google')
|
||||
should(testDnsly).be.instanceOf(dnsly.Dnsly)
|
||||
})
|
||||
tap.test('should create an instance of Dnsly', async () => {
|
||||
testDnsly = new smartdns.Smartdns('google');
|
||||
expect(testDnsly).to.be.instanceOf(smartdns.Smartdns);
|
||||
});
|
||||
|
||||
it('should, get a dns record for a domain', function (done) {
|
||||
testDnsly.getRecord('google.com', 'A').then(res => {
|
||||
console.log(res)
|
||||
done()
|
||||
}).catch(err => {
|
||||
console.log(err)
|
||||
done(err)
|
||||
})
|
||||
tap.test('should get an A DNS Record', async () => {
|
||||
return expect(testDnsly.getRecordA('dnsly_a.bleu.de')).to.eventually.deep.equal([
|
||||
{
|
||||
name: 'dnsly_a.bleu.de',
|
||||
value: '127.0.0.1',
|
||||
type: 'A'
|
||||
}
|
||||
]);
|
||||
});
|
||||
|
||||
})
|
||||
tap.test('should get an AAAA Record', async () => {
|
||||
return expect(testDnsly.getRecordAAAA('dnsly_aaaa.bleu.de')).to.eventually.deep.equal([
|
||||
{
|
||||
name: 'dnsly_aaaa.bleu.de',
|
||||
value: '::1',
|
||||
type: 'AAAA'
|
||||
}
|
||||
]);
|
||||
});
|
||||
|
||||
it('should close the instance', function () {
|
||||
testDnsly.close()
|
||||
})
|
||||
})
|
||||
tap.test('should get a txt record', async () => {
|
||||
return expect(testDnsly.getRecordTxt('dnsly_txt.bleu.de')).to.eventually.deep.equal([
|
||||
{
|
||||
chunked: ['sometext_txt'],
|
||||
name: 'dnsly_txt.bleu.de',
|
||||
value: 'sometext_txt',
|
||||
type: 'TXT'
|
||||
}
|
||||
]);
|
||||
});
|
||||
|
||||
tap.test('should, get a mx record for a domain', async () => {
|
||||
let res = await testDnsly.getRecord('bleu.de', 'MX');
|
||||
console.log(res);
|
||||
});
|
||||
|
||||
tap.test('should check until DNS is available', async () => {
|
||||
return expect(testDnsly.checkUntilAvailable('dnsly_txt.bleu.de', 'TXT', 'sometext_txt')).to
|
||||
.eventually.be.true;
|
||||
});
|
||||
|
||||
tap.test('should check until DNS is available an return false if it fails', async () => {
|
||||
return expect(testDnsly.checkUntilAvailable('dnsly_txt.bleu.de', 'TXT', 'sometext_txt2')).to
|
||||
.eventually.be.false;
|
||||
});
|
||||
|
||||
tap.test('should check until DNS is available an return false if it fails', async () => {
|
||||
return expect(testDnsly.checkUntilAvailable('dnsly_txtNotThere.bleu.de', 'TXT', 'sometext_txt2'))
|
||||
.to.eventually.be.false;
|
||||
});
|
||||
|
||||
tap.test('should get name server for hostname', async () => {
|
||||
let result = await testDnsly.getNameServer('bleu.de');
|
||||
console.log(result);
|
||||
});
|
||||
|
||||
tap.start();
|
||||
|
@ -1,8 +1,5 @@
|
||||
import 'typings-global'
|
||||
import * as beautylog from 'beautylog'
|
||||
let dnsSocket = require('dns-socket')
|
||||
import * as beautylog from 'beautylog';
|
||||
import * as dns from 'dns';
|
||||
import * as smartdelay from 'smartdelay';
|
||||
|
||||
export {
|
||||
beautylog,
|
||||
dnsSocket
|
||||
}
|
||||
export { beautylog, dns, smartdelay };
|
||||
|
209
ts/index.ts
209
ts/index.ts
@ -1,72 +1,153 @@
|
||||
import * as q from 'q'
|
||||
import * as plugins from './dnsly.plugins'
|
||||
import * as smartq from 'smartq';
|
||||
import * as plugins from './dnsly.plugins';
|
||||
|
||||
export type TDnsProvider = 'google'
|
||||
export type TDnsRecordType = 'A'
|
||||
| 'AAAA'
|
||||
| 'CNAME'
|
||||
| 'PTR'
|
||||
| 'MX'
|
||||
| 'NAPTR'
|
||||
| 'NS'
|
||||
| 'SOA'
|
||||
| 'SRV'
|
||||
| 'TXT'
|
||||
export type TDnsProvider = 'google';
|
||||
export type TDnsRecordType =
|
||||
| 'A'
|
||||
| 'AAAA'
|
||||
| 'CNAME'
|
||||
| 'PTR'
|
||||
| 'MX'
|
||||
| 'NAPTR'
|
||||
| 'NS'
|
||||
| 'SOA'
|
||||
| 'SRV'
|
||||
| 'TXT';
|
||||
|
||||
export interface IDnsRecord {
|
||||
chunked?: string[];
|
||||
name: string;
|
||||
type: TDnsRecordType;
|
||||
value: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* class dnsly offers methods for working with dns from a dns provider like Google DNS
|
||||
*/
|
||||
export class Dnsly {
|
||||
dnsServerIp: string
|
||||
dnsServerPort: number
|
||||
dnsSocketInstance
|
||||
/**
|
||||
* constructor for class dnsly
|
||||
*/
|
||||
constructor(dnsProviderArg: TDnsProvider) {
|
||||
this._setDnsProvider(dnsProviderArg)
|
||||
this.dnsSocketInstance = plugins.dnsSocket()
|
||||
}
|
||||
export class Smartdns {
|
||||
dnsServerIp: string;
|
||||
dnsServerPort: number;
|
||||
/**
|
||||
* constructor for class dnsly
|
||||
*/
|
||||
constructor(dnsProviderArg: TDnsProvider = 'google') {
|
||||
this._setDnsProvider(dnsProviderArg);
|
||||
}
|
||||
|
||||
/**
|
||||
* gets a record
|
||||
*/
|
||||
getRecord(recordNameArg: string, recordTypeArg: TDnsRecordType) {
|
||||
let done = q.defer()
|
||||
this.dnsSocketInstance.query(
|
||||
{
|
||||
questions: [{
|
||||
type: recordTypeArg,
|
||||
name: recordNameArg
|
||||
}]
|
||||
},
|
||||
this.dnsServerPort,
|
||||
this.dnsServerIp,
|
||||
(err, res) => {
|
||||
if (err) {
|
||||
done.reject(err)
|
||||
}
|
||||
done.resolve(res)
|
||||
})
|
||||
return done.promise
|
||||
}
|
||||
|
||||
/**
|
||||
* close the dnsly instance
|
||||
*/
|
||||
close() {
|
||||
this.dnsSocketInstance.destroy()
|
||||
}
|
||||
|
||||
/**
|
||||
* set the DNS provider
|
||||
*/
|
||||
private _setDnsProvider(dnsProvider: TDnsProvider) {
|
||||
if (dnsProvider === 'google') {
|
||||
this.dnsServerIp = '8.8.8.8'
|
||||
this.dnsServerPort = 53
|
||||
} else {
|
||||
throw new Error('unknown dns provider')
|
||||
async checkUntilAvailable(
|
||||
recordNameArg: string,
|
||||
recordTypeArg: TDnsRecordType,
|
||||
expectedValue: string
|
||||
) {
|
||||
let cycleArg = 0;
|
||||
let doCheck = async () => {
|
||||
if (cycleArg < 30) {
|
||||
cycleArg++;
|
||||
try {
|
||||
let myRecordArray = await this.getRecord(recordNameArg, recordTypeArg);
|
||||
let myRecord = myRecordArray[0].value;
|
||||
if (myRecord === expectedValue) {
|
||||
return true;
|
||||
} else {
|
||||
await plugins.smartdelay.delayFor(500);
|
||||
return await doCheck();
|
||||
}
|
||||
} catch (err) {
|
||||
await plugins.smartdelay.delayFor(500);
|
||||
return await doCheck();
|
||||
}
|
||||
} else {
|
||||
console.log('failed permanently...');
|
||||
return false;
|
||||
}
|
||||
};
|
||||
return await doCheck();
|
||||
}
|
||||
|
||||
/**
|
||||
* get A Dns Record
|
||||
*/
|
||||
async getRecordA(recordNameArg: string): Promise<IDnsRecord[]> {
|
||||
return await this.getRecord(recordNameArg, 'A');
|
||||
}
|
||||
|
||||
/**
|
||||
* get AAAA Record
|
||||
*/
|
||||
async getRecordAAAA(recordNameArg: string) {
|
||||
return await this.getRecord(recordNameArg, 'AAAA');
|
||||
}
|
||||
|
||||
/**
|
||||
* gets a txt record
|
||||
*/
|
||||
getRecordTxt(recordNameArg: string): Promise<IDnsRecord[]> {
|
||||
let done = smartq.defer<IDnsRecord[]>();
|
||||
plugins.dns.resolveTxt(recordNameArg, (err, recordsArg) => {
|
||||
if (err) {
|
||||
done.reject(err);
|
||||
return;
|
||||
}
|
||||
let responseArray: IDnsRecord[] = [];
|
||||
for (let record of recordsArg) {
|
||||
let recordAny: any = record; // fix wrong typings
|
||||
responseArray.push({
|
||||
chunked: recordAny,
|
||||
name: recordNameArg,
|
||||
value: recordAny.join(' '),
|
||||
type: 'TXT'
|
||||
});
|
||||
}
|
||||
done.resolve(responseArray);
|
||||
});
|
||||
return done.promise;
|
||||
}
|
||||
|
||||
/**
|
||||
* get oridinary record
|
||||
*/
|
||||
getRecord(recordNameArg: string, recordTypeArg: TDnsRecordType): Promise<IDnsRecord[]> {
|
||||
let done = smartq.defer<IDnsRecord[]>();
|
||||
plugins.dns.resolve(recordNameArg, recordTypeArg, (err, recordsArg) => {
|
||||
if (err) {
|
||||
done.reject(err);
|
||||
return;
|
||||
}
|
||||
let responseArray: IDnsRecord[] = [];
|
||||
for (let recordKey in recordsArg) {
|
||||
responseArray.push({
|
||||
name: recordNameArg,
|
||||
value: recordsArg[recordKey],
|
||||
type: recordTypeArg
|
||||
});
|
||||
}
|
||||
done.resolve(responseArray);
|
||||
});
|
||||
return done.promise;
|
||||
}
|
||||
|
||||
getNameServer(domainNameArg: string) {
|
||||
const done = smartq.defer();
|
||||
plugins.dns.resolveNs(domainNameArg, (err, result) => {
|
||||
if (!err) {
|
||||
done.resolve(result);
|
||||
} else {
|
||||
console.log(err);
|
||||
done.reject(err);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* set the DNS provider
|
||||
*/
|
||||
private _setDnsProvider(dnsProvider: TDnsProvider) {
|
||||
if (dnsProvider === 'google') {
|
||||
this.dnsServerIp = '8.8.8.8';
|
||||
this.dnsServerPort = 53;
|
||||
plugins.dns.setServers(['8.8.8.8', '8.8.4.4']);
|
||||
} else {
|
||||
throw new Error('unknown dns provider');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
360
yarn.lock
Normal file
360
yarn.lock
Normal file
@ -0,0 +1,360 @@
|
||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@types/chai-as-promised@^7.1.0":
|
||||
version "7.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.0.tgz#010b04cde78eacfb6e72bfddb3e58fe23c2e78b9"
|
||||
dependencies:
|
||||
"@types/chai" "*"
|
||||
|
||||
"@types/chai-string@^1.4.0":
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai-string/-/chai-string-1.4.1.tgz#3a9d22716c27f2759bf272a4dbbdb593f18399e3"
|
||||
dependencies:
|
||||
"@types/chai" "*"
|
||||
|
||||
"@types/chai@*", "@types/chai@^4.1.2":
|
||||
version "4.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.3.tgz#b8a74352977a23b604c01aa784f5b793443fb7dc"
|
||||
|
||||
"@types/lodash@^4.14.55":
|
||||
version "4.14.108"
|
||||
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.108.tgz#02656af3add2e5b3174f830862c47421c00ef817"
|
||||
|
||||
"@types/node@^10.0.8":
|
||||
version "10.0.8"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.0.8.tgz#37b4d91d4e958e4c2ba0be2b86e7ed4ff19b0858"
|
||||
|
||||
ansi-256-colors@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-256-colors/-/ansi-256-colors-1.1.0.tgz#910de50efcc7c09e3d82f2f87abd6b700c18818a"
|
||||
|
||||
ansi-styles@^3.2.1:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
|
||||
dependencies:
|
||||
color-convert "^1.9.0"
|
||||
|
||||
assertion-error@^1.0.1:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
|
||||
|
||||
beautycolor@^1.0.7:
|
||||
version "1.0.11"
|
||||
resolved "https://registry.yarnpkg.com/beautycolor/-/beautycolor-1.0.11.tgz#71c5568d5a7ed5c144d3a54f753ad1b08862aea5"
|
||||
dependencies:
|
||||
ansi-256-colors "^1.1.0"
|
||||
typings-global "^1.0.14"
|
||||
|
||||
beautylog@^6.1.10:
|
||||
version "6.1.10"
|
||||
resolved "https://registry.yarnpkg.com/beautylog/-/beautylog-6.1.10.tgz#9c27e566937684cb689f9372d98cfa5415d50b72"
|
||||
dependencies:
|
||||
"@types/lodash" "^4.14.55"
|
||||
beautycolor "^1.0.7"
|
||||
figlet "^1.2.0"
|
||||
lodash "^4.17.4"
|
||||
ora "^1.1.0"
|
||||
smartenv "^2.0.0"
|
||||
smartq "^1.1.1"
|
||||
typings-global "^1.0.14"
|
||||
|
||||
bindings@^1.2.1:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7"
|
||||
|
||||
chai-as-promised@^7.1.1:
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0"
|
||||
dependencies:
|
||||
check-error "^1.0.2"
|
||||
|
||||
chai-string@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/chai-string/-/chai-string-1.4.0.tgz#359140c051d36a4e4b1a5fc6b910152f438a8d49"
|
||||
|
||||
chai@^4.1.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c"
|
||||
dependencies:
|
||||
assertion-error "^1.0.1"
|
||||
check-error "^1.0.1"
|
||||
deep-eql "^3.0.0"
|
||||
get-func-name "^2.0.0"
|
||||
pathval "^1.0.0"
|
||||
type-detect "^4.0.0"
|
||||
|
||||
chalk@^2.0.1, chalk@^2.1.0:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
|
||||
dependencies:
|
||||
ansi-styles "^3.2.1"
|
||||
escape-string-regexp "^1.0.5"
|
||||
supports-color "^5.3.0"
|
||||
|
||||
check-error@^1.0.1, check-error@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
|
||||
|
||||
cli-cursor@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
|
||||
dependencies:
|
||||
restore-cursor "^2.0.0"
|
||||
|
||||
cli-spinners@^1.0.1:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a"
|
||||
|
||||
color-convert@^1.9.0:
|
||||
version "1.9.1"
|
||||
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed"
|
||||
dependencies:
|
||||
color-name "^1.1.1"
|
||||
|
||||
color-name@^1.1.1:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
|
||||
|
||||
deep-eql@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df"
|
||||
dependencies:
|
||||
type-detect "^4.0.0"
|
||||
|
||||
define-properties@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
|
||||
dependencies:
|
||||
foreach "^2.0.5"
|
||||
object-keys "^1.0.8"
|
||||
|
||||
early@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/early/-/early-2.1.1.tgz#841e23254ea5dc54d8afaeee82f5ab65c00ee23c"
|
||||
dependencies:
|
||||
beautycolor "^1.0.7"
|
||||
smartq "^1.1.1"
|
||||
typings-global "^1.0.16"
|
||||
|
||||
es-abstract@^1.5.1:
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681"
|
||||
dependencies:
|
||||
es-to-primitive "^1.1.1"
|
||||
function-bind "^1.1.1"
|
||||
has "^1.0.1"
|
||||
is-callable "^1.1.3"
|
||||
is-regex "^1.0.4"
|
||||
|
||||
es-to-primitive@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
|
||||
dependencies:
|
||||
is-callable "^1.1.1"
|
||||
is-date-object "^1.0.1"
|
||||
is-symbol "^1.0.1"
|
||||
|
||||
es6-error@^4.0.2:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d"
|
||||
|
||||
escape-string-regexp@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
|
||||
figlet@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.2.0.tgz#6c46537378fab649146b5a6143dda019b430b410"
|
||||
|
||||
foreach@^2.0.5:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
|
||||
|
||||
function-bind@^1.0.2, function-bind@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||
|
||||
get-func-name@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
|
||||
|
||||
has-flag@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
|
||||
|
||||
has@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
|
||||
dependencies:
|
||||
function-bind "^1.0.2"
|
||||
|
||||
is-callable@^1.1.1, is-callable@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
|
||||
|
||||
is-date-object@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
|
||||
|
||||
is-regex@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
|
||||
dependencies:
|
||||
has "^1.0.1"
|
||||
|
||||
is-symbol@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
|
||||
|
||||
leakage@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/leakage/-/leakage-0.3.0.tgz#15d698abdc76bbc6439601f4f3020e77e2d50c39"
|
||||
dependencies:
|
||||
es6-error "^4.0.2"
|
||||
left-pad "^1.1.3"
|
||||
memwatch-next "^0.3.0"
|
||||
minimist "^1.2.0"
|
||||
pretty-bytes "^4.0.2"
|
||||
|
||||
left-pad@^1.1.3:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e"
|
||||
|
||||
lodash@^4.17.4:
|
||||
version "4.17.10"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
|
||||
|
||||
log-symbols@^2.1.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
|
||||
dependencies:
|
||||
chalk "^2.0.1"
|
||||
|
||||
memwatch-next@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/memwatch-next/-/memwatch-next-0.3.0.tgz#2111050f9a906e0aa2d72a4ec0f0089c78726f8f"
|
||||
dependencies:
|
||||
bindings "^1.2.1"
|
||||
nan "^2.3.2"
|
||||
|
||||
mimic-fn@^1.0.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
|
||||
|
||||
minimist@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
|
||||
|
||||
nan@^2.3.2:
|
||||
version "2.10.0"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"
|
||||
|
||||
object-keys@^1.0.8:
|
||||
version "1.0.11"
|
||||
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
|
||||
|
||||
object.getownpropertydescriptors@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
|
||||
dependencies:
|
||||
define-properties "^1.1.2"
|
||||
es-abstract "^1.5.1"
|
||||
|
||||
onetime@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
|
||||
dependencies:
|
||||
mimic-fn "^1.0.0"
|
||||
|
||||
ora@^1.1.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/ora/-/ora-1.4.0.tgz#884458215b3a5d4097592285f93321bb7a79e2e5"
|
||||
dependencies:
|
||||
chalk "^2.1.0"
|
||||
cli-cursor "^2.1.0"
|
||||
cli-spinners "^1.0.1"
|
||||
log-symbols "^2.1.0"
|
||||
|
||||
pathval@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0"
|
||||
|
||||
pretty-bytes@^4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
|
||||
|
||||
restore-cursor@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
|
||||
dependencies:
|
||||
onetime "^2.0.0"
|
||||
signal-exit "^3.0.2"
|
||||
|
||||
signal-exit@^3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
||||
|
||||
smartchai@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/smartchai/-/smartchai-2.0.1.tgz#d20f17221f0e3c6c3473600b78ddfba0ab0ea762"
|
||||
dependencies:
|
||||
"@types/chai" "^4.1.2"
|
||||
"@types/chai-as-promised" "^7.1.0"
|
||||
"@types/chai-string" "^1.4.0"
|
||||
chai "^4.1.2"
|
||||
chai-as-promised "^7.1.1"
|
||||
chai-string "^1.4.0"
|
||||
|
||||
smartdelay@^1.0.3, smartdelay@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/smartdelay/-/smartdelay-1.0.4.tgz#791c1a4ee6770494064c10b1d2d2b8e6f3105b82"
|
||||
dependencies:
|
||||
smartq "^1.1.1"
|
||||
typings-global "^1.0.16"
|
||||
|
||||
smartenv@^2.0.0:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/smartenv/-/smartenv-2.0.6.tgz#b38c679b0c151b9af548f68c3a072c29d1417e8d"
|
||||
dependencies:
|
||||
lodash "^4.17.4"
|
||||
smartq "^1.1.1"
|
||||
typings-global "^1.0.14"
|
||||
|
||||
smartq@^1.1.1, smartq@^1.1.8:
|
||||
version "1.1.8"
|
||||
resolved "https://registry.yarnpkg.com/smartq/-/smartq-1.1.8.tgz#7e2f3b9739eb5d6c9f45f2a86e339ec81e49e8d2"
|
||||
dependencies:
|
||||
util.promisify "^1.0.0"
|
||||
|
||||
supports-color@^5.3.0:
|
||||
version "5.4.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54"
|
||||
dependencies:
|
||||
has-flag "^3.0.0"
|
||||
|
||||
tapbundle@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-2.0.0.tgz#79fce68ff185c786fabaf6eb589a4afc7d2714b7"
|
||||
dependencies:
|
||||
early "^2.1.1"
|
||||
leakage "^0.3.0"
|
||||
smartchai "^2.0.0"
|
||||
smartdelay "^1.0.3"
|
||||
smartq "^1.1.1"
|
||||
|
||||
type-detect@^4.0.0:
|
||||
version "4.0.8"
|
||||
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
|
||||
|
||||
typings-global@^1.0.14, typings-global@^1.0.16:
|
||||
version "1.0.28"
|
||||
resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.28.tgz#e28cc965476564cbc00e438739e0aa0735d323d4"
|
||||
|
||||
util.promisify@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
|
||||
dependencies:
|
||||
define-properties "^1.1.2"
|
||||
object.getownpropertydescriptors "^2.0.3"
|
Reference in New Issue
Block a user