Compare commits
43 Commits
Author | SHA1 | Date | |
---|---|---|---|
05677231f7 | |||
9c036925fd | |||
d3d5f72193 | |||
3d7c0e6b64 | |||
4faefb0bd7 | |||
162fff134e | |||
426237b2a7 | |||
b2d48d793a | |||
54282bdc14 | |||
208fba0887 | |||
2f065b57fc | |||
3503fbc7b3 | |||
1db3342353 | |||
03380b0d28 | |||
4fe7ec8a66 | |||
a050271574 | |||
d54884ded7 | |||
30f7fa9c8a | |||
6bc7edceb9 | |||
2ee94dd179 | |||
a4a006e490 | |||
98d5127846 | |||
f63d8abfc6 | |||
266f84f33a | |||
6400e0f038 | |||
b4838566ac | |||
803f1ce41a | |||
8a8adb48c6 | |||
078731fe7b | |||
bf15b8aec7 | |||
55b305ca1c | |||
9699e4bf76 | |||
0692d16dd7 | |||
c76643d700 | |||
de088ba550 | |||
1ecf660368 | |||
a04ce339f2 | |||
feed201dc1 | |||
cb73164c8f | |||
4758f31132 | |||
5a0ab5080d | |||
26bb194814 | |||
4a656cf7f1 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,6 +1,5 @@
|
||||
coverage/
|
||||
docs/
|
||||
ts/typings/
|
||||
node_modules/
|
||||
|
||||
.nogit/
|
||||
|
@ -1,20 +1,31 @@
|
||||
image: hosttoday/ht-docker-node:npmts
|
||||
# gitzone standard
|
||||
image: hosttoday/ht-docker-node:npmci
|
||||
|
||||
cache:
|
||||
paths:
|
||||
- .yarn/
|
||||
key: "$CI_BUILD_STAGE"
|
||||
|
||||
stages:
|
||||
- test
|
||||
- release
|
||||
- trigger
|
||||
- pages
|
||||
|
||||
testLEGACY:
|
||||
stage: test
|
||||
script:
|
||||
- npmci test lts
|
||||
- npmci test legacy
|
||||
coverage: /\d+.?\d+?\%\s*coverage/
|
||||
tags:
|
||||
- docker
|
||||
allow_failure: true
|
||||
|
||||
testLTS:
|
||||
stage: test
|
||||
script:
|
||||
- npmci test lts
|
||||
coverage: /\d+.?\d+?\%\s*coverage/
|
||||
tags:
|
||||
- docker
|
||||
|
||||
@ -22,6 +33,7 @@ testSTABLE:
|
||||
stage: test
|
||||
script:
|
||||
- npmci test stable
|
||||
coverage: /\d+.?\d+?\%\s*coverage/
|
||||
tags:
|
||||
- docker
|
||||
|
||||
@ -33,3 +45,27 @@ release:
|
||||
- tags
|
||||
tags:
|
||||
- docker
|
||||
|
||||
trigger:
|
||||
stage: trigger
|
||||
script:
|
||||
- npmci trigger
|
||||
only:
|
||||
- tags
|
||||
tags:
|
||||
- docker
|
||||
|
||||
pages:
|
||||
image: hosttoday/ht-docker-node:npmci
|
||||
stage: pages
|
||||
script:
|
||||
- npmci command yarn global add npmpage
|
||||
- npmci command npmpage
|
||||
tags:
|
||||
- docker
|
||||
only:
|
||||
- tags
|
||||
artifacts:
|
||||
expire_in: 1 week
|
||||
paths:
|
||||
- public
|
||||
|
58
README.md
58
README.md
@ -1,31 +1,51 @@
|
||||
# cflare
|
||||
allows you to manage multiple cloudflare accounts.
|
||||
easy cloudflare management
|
||||
|
||||
> Note: this package is still in alpha, so some things do not yet work.
|
||||
I (Phil from Lossless) expect this package to be ready 1. of June 2016.
|
||||
## Availabililty
|
||||
[](https://www.npmjs.com/package/cflare)
|
||||
[](https://GitLab.com/mojoio/cflare)
|
||||
[](https://github.com/mojoio/cflare)
|
||||
[](https://mojoio.gitlab.io/cflare/)
|
||||
|
||||
## Status
|
||||
[](https://travis-ci.org/pushrocks/cflare)
|
||||
## Status for master
|
||||
[](https://GitLab.com/mojoio/cflare/commits/master)
|
||||
[](https://GitLab.com/mojoio/cflare/commits/master)
|
||||
[](https://www.npmjs.com/package/cflare)
|
||||
[](https://david-dm.org/mojoio/cflare)
|
||||
[](https://www.bithound.io/github/mojoio/cflare/master/dependencies/npm)
|
||||
[](https://www.bithound.io/github/mojoio/cflare)
|
||||
[](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.
|
||||
|
||||
```javascript
|
||||
var cflare = require("cflare");
|
||||
var cflareInstance = new cflare();
|
||||
import * as cflare from 'cflare'
|
||||
|
||||
cflareInstance.auth({
|
||||
email:"",
|
||||
key:""
|
||||
});
|
||||
let myCflareAccount = new cflare.CflareAccount()
|
||||
testCflareAccount.auth({
|
||||
email: 'someuser@example.com',
|
||||
key: 'someLongApiKey'
|
||||
})
|
||||
|
||||
let myAsyncCflareManagement = async () => {
|
||||
// get things
|
||||
let myZones = await myCflareAccount.listZones() // zones are fully typed
|
||||
let myIdForADomain = await myCflareAccount.getZoneId('example.com') // type number
|
||||
let myRecordsForADomain = await myCflareAccount.listRecords('example.com') // records are fully typed
|
||||
|
||||
// set things
|
||||
myCflareAccount.updateRecord(...)
|
||||
myCflareAccount.createRecord(...)
|
||||
myCflareAccount.deleteRecord(...)
|
||||
}
|
||||
|
||||
cflareInstance.createRecord(); // returns promise with resolve function getting the response;
|
||||
cflareInstance.removeRecord(); // returns promise with resolve function getting the response;
|
||||
cflareInstance.copyRecord(); // returns promise with resolve function getting the response;
|
||||
cflareInstance.listRecords(); // returns promise with resolve function getting the response;
|
||||
cflareInstance.listDomains(); // returns promise with resolve function getting the response;
|
||||
```
|
||||
|
||||
### About the authors:
|
||||
[](https://lossless.com/)
|
||||
For further information read the linked docs at the top of this README.
|
||||
|
||||
[](https://paypal.me/lossless)
|
||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||
|
||||
[](https://mojo.io)
|
||||
|
31
dist/cflare.classes.cflareaccount.d.ts
vendored
31
dist/cflare.classes.cflareaccount.d.ts
vendored
@ -1,19 +1,30 @@
|
||||
import "typings-global";
|
||||
import 'typings-global';
|
||||
import * as interfaces from './cflare.interfaces';
|
||||
import { TDnsRecord } from 'tsclass';
|
||||
export declare class CflareAccount {
|
||||
private authEmail;
|
||||
private authKey;
|
||||
private authCheck();
|
||||
constructor();
|
||||
auth(optionsArg: {
|
||||
email: string;
|
||||
key: string;
|
||||
}): void;
|
||||
getZoneId(domainName: string): any;
|
||||
getRecord(domainNameArg: string, typeArg: string): any;
|
||||
createRecord(domainNameArg: string, typeArg: string, contentArg: string): any;
|
||||
removeRecord(domainNameArg: string, typeArg: string): any;
|
||||
updateRecord(domainNameArg: string, typeArg: string, valueArg: any): any;
|
||||
listRecords(domainNameArg: string): any;
|
||||
listZones(domainName?: string): any;
|
||||
request(methodArg: string, routeArg: string, dataArg?: {}): any;
|
||||
getZoneId(domainName: string): Promise<string>;
|
||||
getRecord(domainNameArg: string, typeArg: TDnsRecord): Promise<interfaces.ICflareRecord>;
|
||||
createRecord(domainNameArg: string, typeArg: TDnsRecord, contentArg: string): Promise<{}>;
|
||||
removeRecord(domainNameArg: string, typeArg: TDnsRecord): Promise<{}>;
|
||||
updateRecord(domainNameArg: string, typeArg: string, valueArg: any): Promise<{}>;
|
||||
/**
|
||||
* list all records of a specified domain name
|
||||
* @param domainNameArg - the domain name that you want to get the records from
|
||||
*/
|
||||
listRecords(domainNameArg: string): Promise<interfaces.ICflareRecord[]>;
|
||||
/**
|
||||
* list all zones in the associated authenticated account
|
||||
* @param domainName
|
||||
*/
|
||||
listZones(domainName?: string): Promise<interfaces.ICflareZone[]>;
|
||||
purgeZone(domainName: string): Promise<void>;
|
||||
request(methodArg: string, routeArg: string, dataArg?: {}): Promise<{}>;
|
||||
private authCheck();
|
||||
}
|
||||
|
230
dist/cflare.classes.cflareaccount.js
vendored
230
dist/cflare.classes.cflareaccount.js
vendored
File diff suppressed because one or more lines are too long
1
dist/cflare.classes.helpers.d.ts
vendored
1
dist/cflare.classes.helpers.d.ts
vendored
@ -1 +0,0 @@
|
||||
import "typings-global";
|
4
dist/cflare.classes.helpers.js
vendored
4
dist/cflare.classes.helpers.js
vendored
@ -1,4 +0,0 @@
|
||||
"use strict";
|
||||
require("typings-global");
|
||||
|
||||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNmbGFyZS5jbGFzc2VzLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQSIsImZpbGUiOiJjZmxhcmUuY2xhc3Nlcy5oZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwidHlwaW5ncy1nbG9iYWxcIjtcbmltcG9ydCBwbHVnaW5zID0gcmVxdWlyZShcIi4vY2ZsYXJlLnBsdWdpbnNcIik7Il19
|
56
dist/cflare.interfaces.d.ts
vendored
Normal file
56
dist/cflare.interfaces.d.ts
vendored
Normal file
@ -0,0 +1,56 @@
|
||||
export interface ICflareZone {
|
||||
'id': string;
|
||||
'name': string;
|
||||
'development_mode': number;
|
||||
'original_name_servers': string[];
|
||||
'original_registrar': string;
|
||||
'original_dnshost': string;
|
||||
'created_on': string;
|
||||
'modified_on': string;
|
||||
'name_servers': string[];
|
||||
'owner': {
|
||||
'id': string;
|
||||
'email': string;
|
||||
'owner_type': string;
|
||||
};
|
||||
'permissions': string[];
|
||||
'plan': {
|
||||
'id': string;
|
||||
'name': string;
|
||||
'price': number;
|
||||
'currency': string;
|
||||
'frequency': string;
|
||||
'legacy_id': string;
|
||||
'is_subscribed': boolean;
|
||||
'can_subscribe': boolean;
|
||||
};
|
||||
'plan_pending': {
|
||||
'id': string;
|
||||
'name': string;
|
||||
'price': number;
|
||||
'currency': string;
|
||||
'frequency': string;
|
||||
'legacy_id': string;
|
||||
'is_subscribed': string;
|
||||
'can_subscribe': string;
|
||||
};
|
||||
'status': string;
|
||||
'paused': boolean;
|
||||
'type': string;
|
||||
'checked_on': string;
|
||||
}
|
||||
export interface ICflareRecord {
|
||||
'id': string;
|
||||
'type': string;
|
||||
'name': string;
|
||||
'content': string;
|
||||
'proxiable': boolean;
|
||||
'proxied': boolean;
|
||||
'ttl': number;
|
||||
'locked': boolean;
|
||||
'zone_id': string;
|
||||
'zone_name': string;
|
||||
'created_on': string;
|
||||
'modified_on': string;
|
||||
'data': any;
|
||||
}
|
3
dist/cflare.interfaces.js
vendored
Normal file
3
dist/cflare.interfaces.js
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZsYXJlLmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jZmxhcmUuaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
13
dist/cflare.plugins.d.ts
vendored
13
dist/cflare.plugins.d.ts
vendored
@ -1,5 +1,8 @@
|
||||
import "typings-global";
|
||||
export declare let beautylog: any;
|
||||
export declare let q: any;
|
||||
export declare let request: any;
|
||||
export import smartstring = require("smartstring");
|
||||
import 'typings-global';
|
||||
import * as beautylog from 'beautylog';
|
||||
import * as q from 'smartq';
|
||||
import * as smartdelay from 'smartdelay';
|
||||
import * as smartrequest from 'smartrequest';
|
||||
import * as smartstring from 'smartstring';
|
||||
import * as tsclass from 'tsclass';
|
||||
export { beautylog, q, smartdelay, smartrequest, smartstring, tsclass };
|
||||
|
20
dist/cflare.plugins.js
vendored
20
dist/cflare.plugins.js
vendored
@ -1,8 +1,16 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
require("typings-global");
|
||||
exports.beautylog = require("beautylog");
|
||||
exports.q = require("q");
|
||||
exports.request = require("request");
|
||||
exports.smartstring = require("smartstring");
|
||||
|
||||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNmbGFyZS5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFDYixpQkFBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNqQyxTQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pCLGVBQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDMUIsbUJBQVcsV0FBVyxhQUFhLENBQUMsQ0FBQyIsImZpbGUiOiJjZmxhcmUucGx1Z2lucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInR5cGluZ3MtZ2xvYmFsXCI7XG5leHBvcnQgbGV0IGJlYXV0eWxvZyA9IHJlcXVpcmUoXCJiZWF1dHlsb2dcIik7XG5leHBvcnQgbGV0IHEgPSByZXF1aXJlKFwicVwiKTtcbmV4cG9ydCBsZXQgcmVxdWVzdCA9IHJlcXVpcmUoXCJyZXF1ZXN0XCIpO1xuZXhwb3J0IGltcG9ydCBzbWFydHN0cmluZyA9IHJlcXVpcmUoXCJzbWFydHN0cmluZ1wiKTsiXX0=
|
||||
const beautylog = require("beautylog");
|
||||
exports.beautylog = beautylog;
|
||||
const q = require("smartq");
|
||||
exports.q = q;
|
||||
const smartdelay = require("smartdelay");
|
||||
exports.smartdelay = smartdelay;
|
||||
const smartrequest = require("smartrequest");
|
||||
exports.smartrequest = smartrequest;
|
||||
const smartstring = require("smartstring");
|
||||
exports.smartstring = smartstring;
|
||||
const tsclass = require("tsclass");
|
||||
exports.tsclass = tsclass;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZsYXJlLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jZmxhcmUucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2Qix1Q0FBc0M7QUFRcEMsOEJBQVM7QUFQWCw0QkFBMkI7QUFRekIsY0FBQztBQVBILHlDQUF3QztBQVF0QyxnQ0FBVTtBQVBaLDZDQUE0QztBQVExQyxvQ0FBWTtBQVBkLDJDQUEwQztBQVF4QyxrQ0FBVztBQVBiLG1DQUFrQztBQVFoQywwQkFBTyJ9
|
2
dist/index.d.ts
vendored
2
dist/index.d.ts
vendored
@ -1,2 +1,2 @@
|
||||
import "typings-global";
|
||||
import 'typings-global';
|
||||
export { CflareAccount } from "./cflare.classes.cflareaccount";
|
||||
|
4
dist/index.js
vendored
4
dist/index.js
vendored
@ -1,6 +1,6 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
require("typings-global");
|
||||
var cflare_classes_cflareaccount_1 = require("./cflare.classes.cflareaccount");
|
||||
exports.CflareAccount = cflare_classes_cflareaccount_1.CflareAccount;
|
||||
|
||||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFDeEIsNkNBQTRCLGdDQUFnQyxDQUFDO0FBQXJELHFFQUFxRCIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInR5cGluZ3MtZ2xvYmFsXCI7XG5leHBvcnQge0NmbGFyZUFjY291bnR9IGZyb20gXCIuL2NmbGFyZS5jbGFzc2VzLmNmbGFyZWFjY291bnRcIjsiXX0=
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2QiwrRUFBNkQ7QUFBckQsdURBQUEsYUFBYSxDQUFBIn0=
|
7
npmextra.json
Normal file
7
npmextra.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"npmci": {
|
||||
"globalNpmTools": [
|
||||
"npmts"
|
||||
]
|
||||
}
|
||||
}
|
30
package.json
30
package.json
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "cflare",
|
||||
"version": "0.0.4",
|
||||
"description": "cloudflare management for CoreOS",
|
||||
"version": "1.0.5",
|
||||
"description": "easy cloudflare management",
|
||||
"main": "dist/index.js",
|
||||
"typings": "dist/index.d.ts",
|
||||
"scripts": {
|
||||
@ -9,29 +9,29 @@
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/pushrocks/cflare.git"
|
||||
"url": "git+https://gitlab.com/pushrocks/cflare.git"
|
||||
},
|
||||
"keywords": [
|
||||
"CoreOS",
|
||||
"Push.Rocks",
|
||||
"cloudflare"
|
||||
],
|
||||
"author": "Lossless GmbH",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/pushrocks/cflare/issues"
|
||||
"url": "https://gitlab.com/pushrocks/cflare/issues"
|
||||
},
|
||||
"homepage": "https://github.com/pushrocks/cflare#readme",
|
||||
"homepage": "https://gitlab.com/pushrocks/cflare#readme",
|
||||
"dependencies": {
|
||||
"beautylog": "^5.0.12",
|
||||
"q": "^1.4.1",
|
||||
"request": "^2.72.0",
|
||||
"smartstring": "^2.0.9",
|
||||
"typings-global": "^1.0.3"
|
||||
"beautylog": "^6.1.10",
|
||||
"smartdelay": "^1.0.3",
|
||||
"smartq": "^1.1.1",
|
||||
"smartrequest": "^1.0.6",
|
||||
"smartstring": "^2.0.24",
|
||||
"tsclass": "^1.0.12",
|
||||
"typings-global": "^1.0.17"
|
||||
},
|
||||
"devDependencies": {
|
||||
"npmts-g": "^5.2.6",
|
||||
"qenv": "^1.0.8",
|
||||
"should": "^9.0.2",
|
||||
"typings-test": "^1.0.1"
|
||||
"qenv": "^1.1.7",
|
||||
"tapbundle": "^1.0.14"
|
||||
}
|
||||
}
|
||||
|
1
test/test.d.ts
vendored
1
test/test.d.ts
vendored
@ -1 +0,0 @@
|
||||
import "typings-test";
|
90
test/test.js
90
test/test.js
File diff suppressed because one or more lines are too long
132
test/test.ts
132
test/test.ts
@ -1,88 +1,58 @@
|
||||
import "typings-test";
|
||||
import cflare = require("../dist/index");
|
||||
let should = require("should");
|
||||
import {Qenv} from "qenv";
|
||||
let testQenv = new Qenv(process.cwd(),process.cwd() + "/.nogit");
|
||||
console.log(testQenv.missingEnvVars);
|
||||
let testCflareAccount = new cflare.CflareAccount();
|
||||
import { expect, tap } from 'tapbundle'
|
||||
import cflare = require('../dist/index')
|
||||
import { Qenv } from 'qenv'
|
||||
let testQenv = new Qenv(process.cwd(), process.cwd() + '/.nogit')
|
||||
|
||||
let testCflareAccount = new cflare.CflareAccount()
|
||||
testCflareAccount.auth({
|
||||
email: process.env.CF_EMAIL,
|
||||
key: process.env.CF_KEY
|
||||
});
|
||||
})
|
||||
|
||||
describe("cflare",function(){
|
||||
describe(".CflareAccount",function(){
|
||||
describe(".listZones()",function(){
|
||||
it("should display an entire account",function(done){
|
||||
this.timeout(10000);
|
||||
testCflareAccount.listZones()
|
||||
.then((responseArg)=>{
|
||||
console.log(responseArg);
|
||||
done();
|
||||
let randomPrefix = Math.floor(Math.random() * 2000)
|
||||
|
||||
tap.test('.listZones() -> should display an entire account', async (tools) => {
|
||||
tools.timeout(600000)
|
||||
let result = await testCflareAccount.listZones()
|
||||
console.log(result)
|
||||
})
|
||||
|
||||
tap.test('.getZoneId(domainName) -> should get an Cloudflare Id for a domain string', async (tools) => {
|
||||
tools.timeout(600000)
|
||||
await testCflareAccount.getZoneId('bleu.de')
|
||||
})
|
||||
|
||||
tap.test('.listRecords(domainName) -> should list all records for a specific Domain Name', async (tools) => {
|
||||
tools.timeout(600000)
|
||||
await testCflareAccount.listRecords('bleu.de')
|
||||
.then(async (responseArg) => {
|
||||
console.log(responseArg)
|
||||
})
|
||||
});
|
||||
});
|
||||
describe(".getZoneId(domainName)",function(){
|
||||
it("should get an Cloudflare Id for a domain string",function(done){
|
||||
this.timeout(10000)
|
||||
testCflareAccount.getZoneId("bleu.de")
|
||||
.then((responseArg)=>{
|
||||
console.log(responseArg);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
describe(".listRecords(domainName)",function(){
|
||||
it("should list all records for a specific Domain Name",function(done){
|
||||
this.timeout(10000);
|
||||
testCflareAccount.listRecords("bleu.de")
|
||||
.then((responseArg) => {
|
||||
console.log(responseArg);
|
||||
done();
|
||||
});
|
||||
});
|
||||
})
|
||||
|
||||
tap.test('should create a valid record for a subdomain', async (tools) => {
|
||||
tools.timeout(600000)
|
||||
await testCflareAccount.createRecord(`${randomPrefix}subdomain.bleu.de`, 'A', '127.0.0.1')
|
||||
})
|
||||
|
||||
tap.test('should get a record from Cloudflare', async (tools) => {
|
||||
tools.timeout(600000)
|
||||
await testCflareAccount.getRecord('bleu.de', 'A')
|
||||
.then(function (responseArg) {
|
||||
console.log(responseArg)
|
||||
})
|
||||
describe(".createRecord",function(){
|
||||
this.timeout(10000);
|
||||
it("should create a valid record for a level 2 domain",function(done){
|
||||
testCflareAccount.createRecord("bleu.de","A","127.0.0.1")
|
||||
.then(function(responseArg){
|
||||
console.log(responseArg);
|
||||
done();
|
||||
});
|
||||
});
|
||||
it("should create a valid record for a subdomain",function(done){
|
||||
testCflareAccount.createRecord("subdomain.bleu.de","A","127.0.0.1")
|
||||
.then(function(responseArg){
|
||||
console.log(responseArg);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
describe(".getRecord",function(){
|
||||
it("should get a record from Cloudflare",function(done){
|
||||
testCflareAccount.getRecord("bleu.de","A")
|
||||
.then(function(responseArg){
|
||||
console.log(responseArg);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
describe(".removeRecord",function(){
|
||||
it("should remove a record from Cloudflare",function(done){
|
||||
testCflareAccount.removeRecord("bleu.de","A")
|
||||
.then(function(responseArg){
|
||||
console.log(responseArg);
|
||||
done();
|
||||
});
|
||||
});
|
||||
it("should remove a subdomain record from Cloudflare",function(done){
|
||||
testCflareAccount.removeRecord("subdomain.bleu.de","A")
|
||||
.then(function(responseArg){
|
||||
console.log(responseArg);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
})
|
||||
|
||||
tap.test('should remove a subdomain record from Cloudflare', async (tools) => {
|
||||
tools.timeout(600000)
|
||||
await testCflareAccount.removeRecord(`${randomPrefix}subdomain.bleu.de`, 'A')
|
||||
.then(async (responseArg) => {
|
||||
console.log(responseArg)
|
||||
})
|
||||
});
|
||||
})
|
||||
|
||||
tap.test('.purge(some.domain) -> should purge everything', async () => {
|
||||
await testCflareAccount.purgeZone('bleu.de')
|
||||
})
|
||||
|
||||
tap.start()
|
||||
|
@ -1,135 +1,177 @@
|
||||
import "typings-global";
|
||||
import plugins = require("./cflare.plugins");
|
||||
import helpers = require("./cflare.classes.helpers");
|
||||
import 'typings-global'
|
||||
import plugins = require('./cflare.plugins')
|
||||
import * as interfaces from './cflare.interfaces'
|
||||
|
||||
// interfaces
|
||||
import { TDnsRecord } from 'tsclass'
|
||||
|
||||
export class CflareAccount {
|
||||
private authEmail:string;
|
||||
private authKey:string;
|
||||
private authCheck(){
|
||||
return (this.authEmail && this.authKey); //check if auth is available
|
||||
private authEmail: string
|
||||
private authKey: string
|
||||
constructor() {
|
||||
// Nothing here
|
||||
}
|
||||
constructor(){
|
||||
|
||||
};
|
||||
auth(optionsArg:{email:string,key:string}){
|
||||
this.authEmail = optionsArg.email;
|
||||
this.authKey = optionsArg.key;
|
||||
auth (optionsArg: { email: string, key: string }) {
|
||||
this.authEmail = optionsArg.email
|
||||
this.authKey = optionsArg.key
|
||||
}
|
||||
getZoneId(domainName:string){
|
||||
let done = plugins.q.defer();
|
||||
this.listZones(domainName)
|
||||
.then((responseArg) => {
|
||||
let filteredResponse = responseArg.result.filter((zoneArg)=>{
|
||||
return zoneArg.name === domainName;
|
||||
});
|
||||
if (filteredResponse.length >= 1){
|
||||
done.resolve(filteredResponse[0].id);
|
||||
|
||||
async getZoneId (domainName: string) {
|
||||
let domain = new plugins.smartstring.Domain(domainName)
|
||||
let zoneArray = await this.listZones(domain.zoneName)
|
||||
let filteredResponse = zoneArray.filter((zoneArg) => {
|
||||
return zoneArg.name === domainName
|
||||
})
|
||||
if (filteredResponse.length >= 1) {
|
||||
return filteredResponse[ 0 ].id
|
||||
} else {
|
||||
plugins.beautylog.error("the domain " + domainName.blue + " does not appear to be in this account!");
|
||||
done.reject(undefined);
|
||||
plugins.beautylog.error(`the domain ${domainName} does not appear to be in this account!`)
|
||||
throw new Error(`the domain ${domainName} does not appear to be in this account!`)
|
||||
}
|
||||
});
|
||||
return done.promise;
|
||||
|
||||
}
|
||||
getRecord(domainNameArg:string,typeArg:string){
|
||||
let done = plugins.q.defer();
|
||||
let domain = new plugins.smartstring.Domain(domainNameArg);
|
||||
getRecord (domainNameArg: string, typeArg: TDnsRecord): Promise<interfaces.ICflareRecord> {
|
||||
let done = plugins.q.defer()
|
||||
let result: interfaces.ICflareRecord
|
||||
|
||||
let domain = new plugins.smartstring.Domain(domainNameArg)
|
||||
this.listRecords(domain.zoneName)
|
||||
.then((responseArg) => {
|
||||
let filteredResponse = responseArg.result.filter((recordArg) => {
|
||||
return (recordArg.type == typeArg && recordArg.name == domainNameArg);
|
||||
.then((recordArrayArg) => {
|
||||
let filteredResponse = recordArrayArg.filter((recordArg) => {
|
||||
return (recordArg.type === typeArg && recordArg.name === domainNameArg)
|
||||
})
|
||||
done.resolve(filteredResponse[0]);
|
||||
done.resolve(filteredResponse[ 0 ])
|
||||
})
|
||||
return done.promise;
|
||||
};
|
||||
createRecord(domainNameArg:string,typeArg:string,contentArg:string){
|
||||
let done = plugins.q.defer();
|
||||
let domain = new plugins.smartstring.Domain(domainNameArg);
|
||||
this.getZoneId(domain.zoneName)
|
||||
.then((domainIdArg)=>{
|
||||
return done.promise
|
||||
}
|
||||
|
||||
async createRecord (domainNameArg: string, typeArg: TDnsRecord, contentArg: string) {
|
||||
let done = plugins.q.defer()
|
||||
let domain = new plugins.smartstring.Domain(domainNameArg)
|
||||
let domainIdArg = await this.getZoneId(domain.zoneName)
|
||||
let dataObject = {
|
||||
name: domain.fullName,
|
||||
type: typeArg,
|
||||
content: contentArg
|
||||
};
|
||||
this.request("POST","/zones/" + domainIdArg + "/dns_records",dataObject)
|
||||
.then(function(responseArg){
|
||||
done.resolve(responseArg);
|
||||
});
|
||||
});
|
||||
return done.promise;
|
||||
};
|
||||
removeRecord(domainNameArg:string,typeArg:string){
|
||||
let done = plugins.q.defer();
|
||||
let domain = new plugins.smartstring.Domain(domainNameArg);
|
||||
this.getRecord(domain.fullName,typeArg)
|
||||
}
|
||||
this.request('POST', '/zones/' + domainIdArg + '/dns_records', dataObject)
|
||||
.then(function (responseArg) {
|
||||
done.resolve(responseArg)
|
||||
})
|
||||
return done.promise
|
||||
}
|
||||
|
||||
removeRecord (domainNameArg: string, typeArg: TDnsRecord) {
|
||||
let done = plugins.q.defer()
|
||||
let domain = new plugins.smartstring.Domain(domainNameArg)
|
||||
this.getRecord(domain.fullName, typeArg)
|
||||
.then((responseArg) => {
|
||||
if(responseArg){
|
||||
let requestRoute:string = "/zones/" + responseArg.zone_id + "/dns_records/" + responseArg.id;
|
||||
this.request("DELETE",requestRoute)
|
||||
if (responseArg) {
|
||||
let requestRoute: string = '/zones/' + responseArg.zone_id + '/dns_records/' + responseArg.id
|
||||
this.request('DELETE', requestRoute)
|
||||
.then((responseArg) => {
|
||||
done.resolve(responseArg);
|
||||
});
|
||||
done.resolve(responseArg)
|
||||
})
|
||||
} else {
|
||||
done.reject();
|
||||
done.reject()
|
||||
}
|
||||
});
|
||||
return done.promise;
|
||||
};
|
||||
updateRecord(domainNameArg:string,typeArg:string,valueArg){
|
||||
let done = plugins.q.defer();
|
||||
let domain = new plugins.smartstring.Domain(domainNameArg);
|
||||
return done.promise;
|
||||
};
|
||||
listRecords(domainNameArg:string){
|
||||
let done = plugins.q.defer();
|
||||
let domain = new plugins.smartstring.Domain(domainNameArg);
|
||||
this.getZoneId(domain.zoneName)
|
||||
.then((domainIdArg)=>{
|
||||
this.request("GET","/zones/" + domainIdArg + "/dns_records?per_page=100")
|
||||
.then(function(responseArg){
|
||||
done.resolve(responseArg);
|
||||
});
|
||||
});
|
||||
return done.promise;
|
||||
})
|
||||
return done.promise
|
||||
}
|
||||
listZones(domainName?:string){ // TODO: handle pagination
|
||||
let done = plugins.q.defer();
|
||||
let requestRoute = "/zones?per_page=50"
|
||||
if(domainName) requestRoute = requestRoute + "&name=" + domainName;
|
||||
let result = {};
|
||||
this.request("GET",requestRoute)
|
||||
.then(function(responseArg){
|
||||
result = responseArg;
|
||||
done.resolve(result);
|
||||
});
|
||||
return done.promise;
|
||||
};
|
||||
request(methodArg:string,routeArg:string,dataArg = {}){
|
||||
let done = plugins.q.defer();
|
||||
let jsonArg:string = JSON.stringify(dataArg);
|
||||
let options = {
|
||||
method:methodArg,
|
||||
url:"https://api.cloudflare.com/client/v4" + routeArg,
|
||||
headers:{
|
||||
"Content-Type":"application/json",
|
||||
"X-Auth-Email":this.authEmail,
|
||||
"X-Auth-Key":this.authKey
|
||||
|
||||
updateRecord (domainNameArg: string, typeArg: string, valueArg) {
|
||||
let done = plugins.q.defer()
|
||||
let domain = new plugins.smartstring.Domain(domainNameArg)
|
||||
return done.promise
|
||||
}
|
||||
|
||||
/**
|
||||
* list all records of a specified domain name
|
||||
* @param domainNameArg - the domain name that you want to get the records from
|
||||
*/
|
||||
async listRecords (domainNameArg: string): Promise<interfaces.ICflareRecord[]> {
|
||||
let domain = new plugins.smartstring.Domain(domainNameArg)
|
||||
let domainId = await this.getZoneId(domain.zoneName)
|
||||
let responseArg: any = await this.request('GET', '/zones/' + domainId + '/dns_records?per_page=100')
|
||||
let result: interfaces.ICflareRecord[] = responseArg.result
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
* list all zones in the associated authenticated account
|
||||
* @param domainName
|
||||
*/
|
||||
async listZones (domainName?: string): Promise<interfaces.ICflareZone[]> { // TODO: handle pagination
|
||||
let requestRoute = `/zones?per_page=50`
|
||||
|
||||
// may be optionally filtered by domain name
|
||||
if (domainName) {
|
||||
requestRoute = `${requestRoute}&name=${domainName}`
|
||||
}
|
||||
|
||||
let response: any = await this.request('GET', requestRoute)
|
||||
let result = response.result
|
||||
return result
|
||||
}
|
||||
|
||||
async purgeZone (domainName: string) {
|
||||
let domain = new plugins.smartstring.Domain(domainName)
|
||||
let domainId = await this.getZoneId(domain.zoneName)
|
||||
let requestUrl = `/zones/${domainId}/purge_cache`
|
||||
let payload = {
|
||||
purge_everything: true
|
||||
}
|
||||
let respone = await this.request('DELETE', requestUrl, payload)
|
||||
}
|
||||
|
||||
request (methodArg: string, routeArg: string, dataArg = {}) {
|
||||
let done = plugins.q.defer()
|
||||
let jsonStringArg: string = JSON.stringify(dataArg)
|
||||
let options: plugins.smartrequest.ISmartRequestOptions = {
|
||||
method: methodArg,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'X-Auth-Email': this.authEmail,
|
||||
'X-Auth-Key': this.authKey,
|
||||
'Content-Length': Buffer.byteLength(jsonStringArg)
|
||||
},
|
||||
body:jsonArg
|
||||
};
|
||||
//console.log(options);
|
||||
plugins.request(options,function(err, res, body){
|
||||
if (!err && res.statusCode == 200) {
|
||||
var responseObj = JSON.parse(body);
|
||||
done.resolve(responseObj);
|
||||
} else {
|
||||
console.log(err);
|
||||
console.log(res);
|
||||
done.reject(err);
|
||||
};
|
||||
});
|
||||
return done.promise;
|
||||
requestBody: jsonStringArg
|
||||
}
|
||||
};
|
||||
// console.log(options);
|
||||
let retryCount = 0
|
||||
|
||||
let makeRequest = async () => {
|
||||
let response: any = await plugins.smartrequest.request(
|
||||
`https://api.cloudflare.com/client/v4${routeArg}`,
|
||||
options
|
||||
)
|
||||
if (response.statusCode === 200) {
|
||||
done.resolve(response.body)
|
||||
} else if (response.statusCode === 429) {
|
||||
console.log('rate limited! Waiting for retry!')
|
||||
retryRequest()
|
||||
} else if (response.statusCode === 400) {
|
||||
console.log(`bad request for route ${routeArg}! Going to retry!`)
|
||||
retryRequest()
|
||||
} else {
|
||||
console.log(response.statusCode)
|
||||
done.reject(new Error('request failed'))
|
||||
}
|
||||
}
|
||||
let retryRequest = async (delayTimeArg = Math.floor(Math.random() * (60000 - 8000) + 8000)) => {
|
||||
console.log(`retry started and waiting for ${delayTimeArg} ms`)
|
||||
await plugins.smartdelay.delayFor(delayTimeArg)
|
||||
if (retryCount < 10) {
|
||||
retryCount++
|
||||
return await makeRequest()
|
||||
}
|
||||
}
|
||||
makeRequest()
|
||||
return done.promise
|
||||
}
|
||||
|
||||
private authCheck () {
|
||||
return (this.authEmail && this.authKey) // check if auth is available
|
||||
}
|
||||
}
|
||||
|
@ -1,2 +0,0 @@
|
||||
import "typings-global";
|
||||
import plugins = require("./cflare.plugins");
|
59
ts/cflare.interfaces.ts
Normal file
59
ts/cflare.interfaces.ts
Normal file
@ -0,0 +1,59 @@
|
||||
import * as plugins from './cflare.plugins'
|
||||
|
||||
export interface ICflareZone {
|
||||
'id': string
|
||||
'name': string
|
||||
'development_mode': number
|
||||
'original_name_servers': string[]
|
||||
'original_registrar': string
|
||||
'original_dnshost': string
|
||||
'created_on': string
|
||||
'modified_on': string
|
||||
'name_servers': string[]
|
||||
'owner': {
|
||||
'id': string
|
||||
'email': string
|
||||
'owner_type': string
|
||||
},
|
||||
'permissions': string[]
|
||||
'plan': {
|
||||
'id': string
|
||||
'name': string
|
||||
'price': number
|
||||
'currency': string
|
||||
'frequency': string
|
||||
'legacy_id': string
|
||||
'is_subscribed': boolean
|
||||
'can_subscribe': boolean
|
||||
},
|
||||
'plan_pending': {
|
||||
'id': string
|
||||
'name': string
|
||||
'price': number
|
||||
'currency': string
|
||||
'frequency': string
|
||||
'legacy_id': string
|
||||
'is_subscribed': string
|
||||
'can_subscribe': string
|
||||
},
|
||||
'status': string
|
||||
'paused': boolean
|
||||
'type': string
|
||||
'checked_on': string
|
||||
}
|
||||
|
||||
export interface ICflareRecord {
|
||||
'id': string
|
||||
'type': string
|
||||
'name': string
|
||||
'content': string
|
||||
'proxiable': boolean
|
||||
'proxied': boolean
|
||||
'ttl': number
|
||||
'locked': boolean
|
||||
'zone_id': string
|
||||
'zone_name': string
|
||||
'created_on': string
|
||||
'modified_on': string
|
||||
'data': any
|
||||
}
|
@ -1,5 +1,16 @@
|
||||
import "typings-global";
|
||||
export let beautylog = require("beautylog");
|
||||
export let q = require("q");
|
||||
export let request = require("request");
|
||||
export import smartstring = require("smartstring");
|
||||
import 'typings-global'
|
||||
import * as beautylog from 'beautylog'
|
||||
import * as q from 'smartq'
|
||||
import * as smartdelay from 'smartdelay'
|
||||
import * as smartrequest from 'smartrequest'
|
||||
import * as smartstring from 'smartstring'
|
||||
import * as tsclass from 'tsclass'
|
||||
|
||||
export {
|
||||
beautylog,
|
||||
q,
|
||||
smartdelay,
|
||||
smartrequest,
|
||||
smartstring,
|
||||
tsclass
|
||||
}
|
||||
|
@ -1,2 +1,2 @@
|
||||
import "typings-global";
|
||||
import 'typings-global'
|
||||
export {CflareAccount} from "./cflare.classes.cflareaccount";
|
@ -1,9 +0,0 @@
|
||||
{
|
||||
"version": false,
|
||||
"dependencies": {},
|
||||
"ambientDependencies": {
|
||||
"colors": "registry:dt/colors#0.6.0-1+20160425153322",
|
||||
"mocha": "registry:dt/mocha#2.2.5+20160317120654",
|
||||
"node": "registry:dt/node#4.0.0+20160423143914"
|
||||
}
|
||||
}
|
3
tslint.json
Normal file
3
tslint.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "tslint-config-standard"
|
||||
}
|
675
yarn.lock
Normal file
675
yarn.lock
Normal file
@ -0,0 +1,675 @@
|
||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@types/chai-as-promised@0.0.29":
|
||||
version "0.0.29"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-0.0.29.tgz#43d52892aa998e185a3de3e2477edb8573be1d77"
|
||||
dependencies:
|
||||
"@types/chai" "*"
|
||||
"@types/promises-a-plus" "*"
|
||||
|
||||
"@types/chai-string@^1.1.30":
|
||||
version "1.1.30"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai-string/-/chai-string-1.1.30.tgz#4d8744b31a5a2295fc01c981ed1e2d4c8a070f0a"
|
||||
dependencies:
|
||||
"@types/chai" "*"
|
||||
|
||||
"@types/chai@*", "@types/chai@^3.4.35":
|
||||
version "3.5.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-3.5.2.tgz#c11cd2817d3a401b7ba0f5a420f35c56139b1c1e"
|
||||
|
||||
"@types/fs-extra@3.x.x":
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-3.0.3.tgz#1d66eb670ebf657e57c0fda014df340c19d8aa0c"
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/lodash@^4.14.55":
|
||||
version "4.14.65"
|
||||
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.65.tgz#a0f78d71ffcd3c02628d5f616410c98c424326d5"
|
||||
|
||||
"@types/node@*", "@types/node@^7.0.29":
|
||||
version "7.0.29"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.29.tgz#ccfcec5b7135c7caf6c4ffb8c7f33102340d99df"
|
||||
|
||||
"@types/promises-a-plus@*":
|
||||
version "0.0.27"
|
||||
resolved "https://registry.yarnpkg.com/@types/promises-a-plus/-/promises-a-plus-0.0.27.tgz#c64651134614c84b8f5d7114ce8901d36a609780"
|
||||
|
||||
"@types/shelljs@^0.6.0":
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.6.0.tgz#090b705c102ce7fc5c0c5ea9b524418ff15840df"
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/vinyl@^2.0.0":
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/vinyl/-/vinyl-2.0.0.tgz#fd213bf7f4136dde21fe1895500b12c186f8c268"
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/which@^1.0.28":
|
||||
version "1.0.28"
|
||||
resolved "https://registry.yarnpkg.com/@types/which/-/which-1.0.28.tgz#016e387629b8817bed653fe32eab5d11279c8df6"
|
||||
|
||||
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-regex@^2.0.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
|
||||
|
||||
ansi-styles@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
|
||||
|
||||
argparse@^1.0.7:
|
||||
version "1.0.9"
|
||||
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
|
||||
dependencies:
|
||||
sprintf-js "~1.0.2"
|
||||
|
||||
assertion-error@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c"
|
||||
|
||||
balanced-match@^0.4.1:
|
||||
version "0.4.2"
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
|
||||
|
||||
beautycolor@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/beautycolor/-/beautycolor-1.0.7.tgz#a4715738ac4c8221371e9cbeb5a6cc6d11ecbf7c"
|
||||
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.2.1"
|
||||
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11"
|
||||
|
||||
brace-expansion@^1.1.7:
|
||||
version "1.1.7"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59"
|
||||
dependencies:
|
||||
balanced-match "^0.4.1"
|
||||
concat-map "0.0.1"
|
||||
|
||||
chai-as-promised@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-6.0.0.tgz#1a02a433a6f24dafac63b9c96fa1684db1aa8da6"
|
||||
dependencies:
|
||||
check-error "^1.0.2"
|
||||
|
||||
chai-string@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/chai-string/-/chai-string-1.3.0.tgz#df6139f294391b1035be5606f60a843b3a5041e7"
|
||||
|
||||
chai@^3.5.0:
|
||||
version "3.5.0"
|
||||
resolved "https://registry.yarnpkg.com/chai/-/chai-3.5.0.tgz#4d02637b067fe958bdbfdd3a40ec56fef7373247"
|
||||
dependencies:
|
||||
assertion-error "^1.0.1"
|
||||
deep-eql "^0.1.3"
|
||||
type-detect "^1.0.0"
|
||||
|
||||
chalk@^1.0.0, chalk@^1.1.1:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
|
||||
dependencies:
|
||||
ansi-styles "^2.2.1"
|
||||
escape-string-regexp "^1.0.2"
|
||||
has-ansi "^2.0.0"
|
||||
strip-ansi "^3.0.0"
|
||||
supports-color "^2.0.0"
|
||||
|
||||
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.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.0.0.tgz#ef987ed3d48391ac3dab9180b406a742180d6e6a"
|
||||
|
||||
clone-buffer@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58"
|
||||
|
||||
clone-stats@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680"
|
||||
|
||||
clone@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
|
||||
|
||||
cloneable-readable@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.0.0.tgz#a6290d413f217a61232f95e458ff38418cfb0117"
|
||||
dependencies:
|
||||
inherits "^2.0.1"
|
||||
process-nextick-args "^1.0.6"
|
||||
through2 "^2.0.1"
|
||||
|
||||
concat-map@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
|
||||
core-util-is@~1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
||||
|
||||
deep-eql@^0.1.3:
|
||||
version "0.1.3"
|
||||
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2"
|
||||
dependencies:
|
||||
type-detect "0.1.1"
|
||||
|
||||
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"
|
||||
|
||||
es6-error@^4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.2.tgz#eec5c726eacef51b7f6b73c20db6e1b13b069c98"
|
||||
|
||||
escape-string-regexp@^1.0.2:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
|
||||
esprima@^3.1.1:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
|
||||
|
||||
figlet@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.2.0.tgz#6c46537378fab649146b5a6143dda019b430b410"
|
||||
|
||||
first-chunk-stream@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70"
|
||||
dependencies:
|
||||
readable-stream "^2.0.2"
|
||||
|
||||
fs-extra@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291"
|
||||
dependencies:
|
||||
graceful-fs "^4.1.2"
|
||||
jsonfile "^3.0.0"
|
||||
universalify "^0.1.0"
|
||||
|
||||
fs.realpath@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||
|
||||
glob@^7.0.0, glob@^7.1.1:
|
||||
version "7.1.2"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
|
||||
dependencies:
|
||||
fs.realpath "^1.0.0"
|
||||
inflight "^1.0.4"
|
||||
inherits "2"
|
||||
minimatch "^3.0.4"
|
||||
once "^1.3.0"
|
||||
path-is-absolute "^1.0.0"
|
||||
|
||||
graceful-fs@^4.1.2, graceful-fs@^4.1.6:
|
||||
version "4.1.11"
|
||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
|
||||
|
||||
has-ansi@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
|
||||
dependencies:
|
||||
ansi-regex "^2.0.0"
|
||||
|
||||
home@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/home/-/home-1.0.1.tgz#96a423ceb49b98378ff5ef3ceae059a557f9dd35"
|
||||
dependencies:
|
||||
os-homedir "^1.0.1"
|
||||
|
||||
inflight@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||
dependencies:
|
||||
once "^1.3.0"
|
||||
wrappy "1"
|
||||
|
||||
inherits@2, inherits@^2.0.1, inherits@~2.0.1:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
||||
|
||||
interpret@^1.0.0:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
|
||||
|
||||
is-stream@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
|
||||
|
||||
is-utf8@^0.2.0, is-utf8@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
|
||||
|
||||
isarray@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
||||
|
||||
isexe@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
||||
|
||||
js-base64@^2.1.9:
|
||||
version "2.1.9"
|
||||
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce"
|
||||
|
||||
js-yaml@^3.8.3:
|
||||
version "3.8.4"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6"
|
||||
dependencies:
|
||||
argparse "^1.0.7"
|
||||
esprima "^3.1.1"
|
||||
|
||||
jsonfile@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-3.0.0.tgz#92e7c7444e5ffd5fa32e6a9ae8b85034df8347d0"
|
||||
optionalDependencies:
|
||||
graceful-fs "^4.1.6"
|
||||
|
||||
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.1.3"
|
||||
resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.1.3.tgz#612f61c033f3a9e08e939f1caebeea41b6f3199a"
|
||||
|
||||
lodash@^4.17.4:
|
||||
version "4.17.4"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
|
||||
|
||||
log-symbols@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18"
|
||||
dependencies:
|
||||
chalk "^1.0.0"
|
||||
|
||||
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.1.0"
|
||||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
|
||||
|
||||
minimatch@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
||||
dependencies:
|
||||
brace-expansion "^1.1.7"
|
||||
|
||||
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.6.2"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45"
|
||||
|
||||
once@^1.3.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
dependencies:
|
||||
wrappy "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.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ora/-/ora-1.2.0.tgz#32fb3183500efe83f5ea89101785f0ee6060fec9"
|
||||
dependencies:
|
||||
chalk "^1.1.1"
|
||||
cli-cursor "^2.1.0"
|
||||
cli-spinners "^1.0.0"
|
||||
log-symbols "^1.0.2"
|
||||
|
||||
os-homedir@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
|
||||
|
||||
path-is-absolute@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||
|
||||
path-parse@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1"
|
||||
|
||||
pify@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||
|
||||
pretty-bytes@^4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
|
||||
|
||||
process-nextick-args@^1.0.6, process-nextick-args@~1.0.6:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
|
||||
|
||||
qenv@^1.1.7:
|
||||
version "1.1.7"
|
||||
resolved "https://registry.yarnpkg.com/qenv/-/qenv-1.1.7.tgz#d03f8bf8fe37494cf08d0919fe765dca84d9afae"
|
||||
dependencies:
|
||||
lodash "^4.17.4"
|
||||
smartfile "^4.2.11"
|
||||
typings-global "^1.0.16"
|
||||
|
||||
readable-stream@^2.0.2, readable-stream@^2.1.5:
|
||||
version "2.2.11"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.11.tgz#0796b31f8d7688007ff0b93a8088d34aa17c0f72"
|
||||
dependencies:
|
||||
core-util-is "~1.0.0"
|
||||
inherits "~2.0.1"
|
||||
isarray "~1.0.0"
|
||||
process-nextick-args "~1.0.6"
|
||||
safe-buffer "~5.0.1"
|
||||
string_decoder "~1.0.0"
|
||||
util-deprecate "~1.0.1"
|
||||
|
||||
rechoir@^0.6.2:
|
||||
version "0.6.2"
|
||||
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
|
||||
dependencies:
|
||||
resolve "^1.1.6"
|
||||
|
||||
remove-trailing-separator@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511"
|
||||
|
||||
replace-ext@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb"
|
||||
|
||||
require-reload@0.2.2:
|
||||
version "0.2.2"
|
||||
resolved "https://registry.yarnpkg.com/require-reload/-/require-reload-0.2.2.tgz#29a7591846caf91b6e8a3cda991683f95f8d7d42"
|
||||
|
||||
resolve@^1.1.6:
|
||||
version "1.3.3"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5"
|
||||
dependencies:
|
||||
path-parse "^1.0.5"
|
||||
|
||||
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"
|
||||
|
||||
safe-buffer@~5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7"
|
||||
|
||||
semver@^5.3.0:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
|
||||
|
||||
shelljs@^0.7.6:
|
||||
version "0.7.8"
|
||||
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3"
|
||||
dependencies:
|
||||
glob "^7.0.0"
|
||||
interpret "^1.0.0"
|
||||
rechoir "^0.6.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@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/smartchai/-/smartchai-1.0.3.tgz#de6d010bb8b5aef24cb70b31a5f5334e8c41b72f"
|
||||
dependencies:
|
||||
"@types/chai" "^3.4.35"
|
||||
"@types/chai-as-promised" "0.0.29"
|
||||
"@types/chai-string" "^1.1.30"
|
||||
chai "^3.5.0"
|
||||
chai-as-promised "^6.0.0"
|
||||
chai-string "^1.3.0"
|
||||
|
||||
smartdelay@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/smartdelay/-/smartdelay-1.0.3.tgz#5fd44dad77262d110702f0293efa80c072cfb579"
|
||||
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"
|
||||
|
||||
smartfile@^4.2.11:
|
||||
version "4.2.17"
|
||||
resolved "https://registry.yarnpkg.com/smartfile/-/smartfile-4.2.17.tgz#9eba8f65eea7e4db51aa30562f6039815a88b125"
|
||||
dependencies:
|
||||
"@types/fs-extra" "3.x.x"
|
||||
"@types/vinyl" "^2.0.0"
|
||||
fs-extra "^3.0.1"
|
||||
glob "^7.1.1"
|
||||
js-yaml "^3.8.3"
|
||||
require-reload "0.2.2"
|
||||
smartpath "^3.2.8"
|
||||
smartq "^1.1.1"
|
||||
smartrequest "^1.0.4"
|
||||
typings-global "^1.0.16"
|
||||
vinyl "^2.0.2"
|
||||
vinyl-file "^3.0.0"
|
||||
|
||||
smartpath@^3.2.8:
|
||||
version "3.2.8"
|
||||
resolved "https://registry.yarnpkg.com/smartpath/-/smartpath-3.2.8.tgz#4834bd3a8bae2295baacadba23c87a501952f940"
|
||||
dependencies:
|
||||
home "^1.0.1"
|
||||
typings-global "^1.0.14"
|
||||
|
||||
smartq@^1.1.0, smartq@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/smartq/-/smartq-1.1.1.tgz#efb358705260d41ae18aef7ffd815f7b6fe17dd3"
|
||||
dependencies:
|
||||
typed-promisify "^0.3.0"
|
||||
typings-global "^1.0.14"
|
||||
|
||||
smartrequest@^1.0.4, smartrequest@^1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/smartrequest/-/smartrequest-1.0.6.tgz#a006454332453b0a70d38a003a29963d039a7783"
|
||||
dependencies:
|
||||
smartq "^1.1.1"
|
||||
typings-global "^1.0.17"
|
||||
|
||||
smartshell@^1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/smartshell/-/smartshell-1.0.6.tgz#27b1c79029784abe72ac7e91fe698b7ebecc6629"
|
||||
dependencies:
|
||||
"@types/shelljs" "^0.6.0"
|
||||
"@types/which" "^1.0.28"
|
||||
shelljs "^0.7.6"
|
||||
smartq "^1.1.0"
|
||||
which "^1.2.12"
|
||||
|
||||
smartstring@^2.0.24:
|
||||
version "2.0.24"
|
||||
resolved "https://registry.yarnpkg.com/smartstring/-/smartstring-2.0.24.tgz#dc1c5efb738c10a2d7daeea3d800ad2ecc65a26c"
|
||||
dependencies:
|
||||
js-base64 "^2.1.9"
|
||||
typings-global "^1.0.14"
|
||||
|
||||
sprintf-js@~1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
||||
|
||||
string_decoder@~1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.2.tgz#b29e1f4e1125fa97a10382b8a533737b7491e179"
|
||||
dependencies:
|
||||
safe-buffer "~5.0.1"
|
||||
|
||||
strip-ansi@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
|
||||
dependencies:
|
||||
ansi-regex "^2.0.0"
|
||||
|
||||
strip-bom-buf@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz#1cb45aaf57530f4caf86c7f75179d2c9a51dd572"
|
||||
dependencies:
|
||||
is-utf8 "^0.2.1"
|
||||
|
||||
strip-bom-stream@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca"
|
||||
dependencies:
|
||||
first-chunk-stream "^2.0.0"
|
||||
strip-bom "^2.0.0"
|
||||
|
||||
strip-bom@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
|
||||
dependencies:
|
||||
is-utf8 "^0.2.0"
|
||||
|
||||
supports-color@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
|
||||
|
||||
tapbundle@^1.0.14:
|
||||
version "1.0.14"
|
||||
resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.0.14.tgz#75827e335fcb02216f0267a26a26d702ddc02e3c"
|
||||
dependencies:
|
||||
early "^2.1.1"
|
||||
leakage "^0.3.0"
|
||||
smartchai "^1.0.3"
|
||||
smartdelay "^1.0.3"
|
||||
smartq "^1.1.1"
|
||||
typings-global "^1.0.16"
|
||||
|
||||
through2@^2.0.1:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
|
||||
dependencies:
|
||||
readable-stream "^2.1.5"
|
||||
xtend "~4.0.1"
|
||||
|
||||
tsclass@^1.0.12:
|
||||
version "1.0.12"
|
||||
resolved "https://registry.yarnpkg.com/tsclass/-/tsclass-1.0.12.tgz#350c4e567ca7ae7fa426b95bbb77ec478ec0edef"
|
||||
|
||||
type-detect@0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822"
|
||||
|
||||
type-detect@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2"
|
||||
|
||||
typed-promisify@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/typed-promisify/-/typed-promisify-0.3.0.tgz#1ba0af5e444c87d8047406f18ce49092a1191853"
|
||||
|
||||
typings-global@^1.0.14, typings-global@^1.0.16, typings-global@^1.0.17:
|
||||
version "1.0.17"
|
||||
resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.17.tgz#41edc331ccec3168289adc8849e1e255efbe7152"
|
||||
dependencies:
|
||||
"@types/node" "^7.0.29"
|
||||
semver "^5.3.0"
|
||||
smartshell "^1.0.6"
|
||||
|
||||
universalify@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.0.tgz#9eb1c4651debcc670cc94f1a75762332bb967778"
|
||||
|
||||
util-deprecate@~1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
|
||||
vinyl-file@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-3.0.0.tgz#b104d9e4409ffa325faadd520642d0a3b488b365"
|
||||
dependencies:
|
||||
graceful-fs "^4.1.2"
|
||||
pify "^2.3.0"
|
||||
strip-bom-buf "^1.0.0"
|
||||
strip-bom-stream "^2.0.0"
|
||||
vinyl "^2.0.1"
|
||||
|
||||
vinyl@^2.0.1, vinyl@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.0.2.tgz#0a3713d8d4e9221c58f10ca16c0116c9e25eda7c"
|
||||
dependencies:
|
||||
clone "^1.0.0"
|
||||
clone-buffer "^1.0.0"
|
||||
clone-stats "^1.0.0"
|
||||
cloneable-readable "^1.0.0"
|
||||
is-stream "^1.1.0"
|
||||
remove-trailing-separator "^1.0.1"
|
||||
replace-ext "^1.0.0"
|
||||
|
||||
which@^1.2.12:
|
||||
version "1.2.14"
|
||||
resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5"
|
||||
dependencies:
|
||||
isexe "^2.0.0"
|
||||
|
||||
wrappy@1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
|
||||
xtend@~4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
|
Reference in New Issue
Block a user