Compare commits

..

12 Commits

Author SHA1 Message Date
05677231f7 1.0.5 2017-06-11 21:07:45 +02:00
9c036925fd now using tsclass 2017-06-11 21:07:41 +02:00
d3d5f72193 1.0.4 2017-06-09 22:25:22 +02:00
3d7c0e6b64 update dependencies 2017-06-09 22:25:19 +02:00
4faefb0bd7 1.0.3 2017-06-05 19:14:29 +02:00
162fff134e now supports purging of assets 2017-06-05 19:14:26 +02:00
426237b2a7 improve test 2017-06-04 18:14:19 +02:00
b2d48d793a 1.0.2 2017-06-04 18:11:39 +02:00
54282bdc14 add npmextra.json 2017-06-04 18:11:37 +02:00
208fba0887 1.0.1 2017-06-04 18:09:49 +02:00
2f065b57fc add type TRecord, update ci 2017-06-04 18:09:46 +02:00
3503fbc7b3 1.0.0 2017-06-04 17:31:10 +02:00
16 changed files with 218 additions and 104 deletions

View File

@ -1,4 +1,10 @@
image: hosttoday/ht-docker-node:npmts # gitzone standard
image: hosttoday/ht-docker-node:npmci
cache:
paths:
- .yarn/
key: "$CI_BUILD_STAGE"
stages: stages:
- test - test
@ -10,6 +16,7 @@ testLEGACY:
stage: test stage: test
script: script:
- npmci test legacy - npmci test legacy
coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
allow_failure: true allow_failure: true
@ -18,6 +25,7 @@ testLTS:
stage: test stage: test
script: script:
- npmci test lts - npmci test lts
coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
@ -25,6 +33,7 @@ testSTABLE:
stage: test stage: test
script: script:
- npmci test stable - npmci test stable
coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
@ -47,10 +56,13 @@ trigger:
- docker - docker
pages: pages:
image: hosttoday/ht-docker-node:npmpage image: hosttoday/ht-docker-node:npmci
stage: pages stage: pages
script: script:
- npmci command npmpage --publish gitlab - npmci command yarn global add npmpage
- npmci command npmpage
tags:
- docker
only: only:
- tags - tags
artifacts: artifacts:

View File

@ -1,5 +1,6 @@
import 'typings-global'; import 'typings-global';
import * as interfaces from './cflare.interfaces'; import * as interfaces from './cflare.interfaces';
import { TDnsRecord } from 'tsclass';
export declare class CflareAccount { export declare class CflareAccount {
private authEmail; private authEmail;
private authKey; private authKey;
@ -9,9 +10,9 @@ export declare class CflareAccount {
key: string; key: string;
}): void; }): void;
getZoneId(domainName: string): Promise<string>; getZoneId(domainName: string): Promise<string>;
getRecord(domainNameArg: string, typeArg: string): Promise<interfaces.ICflareRecord>; getRecord(domainNameArg: string, typeArg: TDnsRecord): Promise<interfaces.ICflareRecord>;
createRecord(domainNameArg: string, typeArg: string, contentArg: string): Promise<{}>; createRecord(domainNameArg: string, typeArg: TDnsRecord, contentArg: string): Promise<{}>;
removeRecord(domainNameArg: string, typeArg: string): Promise<{}>; removeRecord(domainNameArg: string, typeArg: TDnsRecord): Promise<{}>;
updateRecord(domainNameArg: string, typeArg: string, valueArg: any): Promise<{}>; updateRecord(domainNameArg: string, typeArg: string, valueArg: any): Promise<{}>;
/** /**
* list all records of a specified domain name * list all records of a specified domain name
@ -23,6 +24,7 @@ export declare class CflareAccount {
* @param domainName * @param domainName
*/ */
listZones(domainName?: string): Promise<interfaces.ICflareZone[]>; listZones(domainName?: string): Promise<interfaces.ICflareZone[]>;
purgeZone(domainName: string): Promise<void>;
request(methodArg: string, routeArg: string, dataArg?: {}): Promise<{}>; request(methodArg: string, routeArg: string, dataArg?: {}): Promise<{}>;
private authCheck(); private authCheck();
} }

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,3 @@
export declare type TRecord = '';
export interface ICflareZone { export interface ICflareZone {
'id': string; 'id': string;
'name': string; 'name': string;

View File

@ -1,6 +1,8 @@
import 'typings-global'; import 'typings-global';
export declare let beautylog: any; import * as beautylog from 'beautylog';
export import q = require('smartq'); import * as q from 'smartq';
export import smartrequest = require('smartrequest'); import * as smartdelay from 'smartdelay';
export import smartstring = require('smartstring'); import * as smartrequest from 'smartrequest';
export import smartdelay = require('smartdelay'); import * as smartstring from 'smartstring';
import * as tsclass from 'tsclass';
export { beautylog, q, smartdelay, smartrequest, smartstring, tsclass };

View File

@ -1,9 +1,16 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
require("typings-global"); require("typings-global");
exports.beautylog = require('beautylog'); const beautylog = require("beautylog");
exports.q = require("smartq"); exports.beautylog = beautylog;
exports.smartrequest = require("smartrequest"); const q = require("smartq");
exports.smartstring = require("smartstring"); exports.q = q;
exports.smartdelay = require("smartdelay"); const smartdelay = require("smartdelay");
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2ZsYXJlLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jZmxhcmUucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUNaLFFBQUEsU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUMzQyw4QkFBbUM7QUFDbkMsK0NBQW9EO0FBQ3BELDZDQUFrRDtBQUNsRCwyQ0FBZ0QifQ== 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
View File

@ -1,2 +1,2 @@
import "typings-global"; import 'typings-global';
export { CflareAccount } from "./cflare.classes.cflareaccount"; export { CflareAccount } from "./cflare.classes.cflareaccount";

2
dist/index.js vendored
View File

@ -3,4 +3,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
require("typings-global"); require("typings-global");
var cflare_classes_cflareaccount_1 = require("./cflare.classes.cflareaccount"); var cflare_classes_cflareaccount_1 = require("./cflare.classes.cflareaccount");
exports.CflareAccount = cflare_classes_cflareaccount_1.CflareAccount; exports.CflareAccount = cflare_classes_cflareaccount_1.CflareAccount;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF3QjtBQUN4QiwrRUFBNkQ7QUFBckQsdURBQUEsYUFBYSxDQUFBIn0= //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBCQUF1QjtBQUN2QiwrRUFBNkQ7QUFBckQsdURBQUEsYUFBYSxDQUFBIn0=

7
npmextra.json Normal file
View File

@ -0,0 +1,7 @@
{
"npmci": {
"globalNpmTools": [
"npmts"
]
}
}

View File

@ -1,6 +1,6 @@
{ {
"name": "cflare", "name": "cflare",
"version": "0.0.20", "version": "1.0.5",
"description": "easy cloudflare management", "description": "easy cloudflare management",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts", "typings": "dist/index.d.ts",
@ -22,15 +22,16 @@
}, },
"homepage": "https://gitlab.com/pushrocks/cflare#readme", "homepage": "https://gitlab.com/pushrocks/cflare#readme",
"dependencies": { "dependencies": {
"beautylog": "^6.1.1", "beautylog": "^6.1.10",
"smartdelay": "^1.0.1", "smartdelay": "^1.0.3",
"smartq": "^1.1.0", "smartq": "^1.1.1",
"smartrequest": "^1.0.4", "smartrequest": "^1.0.6",
"smartstring": "^2.0.22", "smartstring": "^2.0.24",
"typings-global": "^1.0.14" "tsclass": "^1.0.12",
"typings-global": "^1.0.17"
}, },
"devDependencies": { "devDependencies": {
"qenv": "^1.1.3", "qenv": "^1.1.7",
"tapbundle": "^1.0.13" "tapbundle": "^1.0.14"
} }
} }

View File

@ -2,7 +2,7 @@ import { expect, tap } from 'tapbundle'
import cflare = require('../dist/index') import cflare = require('../dist/index')
import { Qenv } from 'qenv' import { Qenv } from 'qenv'
let testQenv = new Qenv(process.cwd(), process.cwd() + '/.nogit') let testQenv = new Qenv(process.cwd(), process.cwd() + '/.nogit')
console.log(testQenv.missingEnvVars)
let testCflareAccount = new cflare.CflareAccount() let testCflareAccount = new cflare.CflareAccount()
testCflareAccount.auth({ testCflareAccount.auth({
email: process.env.CF_EMAIL, email: process.env.CF_EMAIL,
@ -12,18 +12,18 @@ testCflareAccount.auth({
let randomPrefix = Math.floor(Math.random() * 2000) let randomPrefix = Math.floor(Math.random() * 2000)
tap.test('.listZones() -> should display an entire account', async (tools) => { tap.test('.listZones() -> should display an entire account', async (tools) => {
// tools.timeout(600000) tools.timeout(600000)
let result = await testCflareAccount.listZones() let result = await testCflareAccount.listZones()
console.log(result) console.log(result)
}) })
tap.test('.getZoneId(domainName) -> should get an Cloudflare Id for a domain string', async (tools) => { tap.test('.getZoneId(domainName) -> should get an Cloudflare Id for a domain string', async (tools) => {
// tools.timeout(600000) tools.timeout(600000)
await testCflareAccount.getZoneId('bleu.de') await testCflareAccount.getZoneId('bleu.de')
}) })
tap.test('.listRecords(domainName) -> should list all records for a specific Domain Name', async (tools) => { tap.test('.listRecords(domainName) -> should list all records for a specific Domain Name', async (tools) => {
// tools.timeout(600000) tools.timeout(600000)
await testCflareAccount.listRecords('bleu.de') await testCflareAccount.listRecords('bleu.de')
.then(async (responseArg) => { .then(async (responseArg) => {
console.log(responseArg) console.log(responseArg)
@ -31,12 +31,12 @@ tap.test('.listRecords(domainName) -> should list all records for a specific Dom
}) })
tap.test('should create a valid record for a subdomain', async (tools) => { tap.test('should create a valid record for a subdomain', async (tools) => {
// tools.timeout(600000) tools.timeout(600000)
await testCflareAccount.createRecord(`${randomPrefix}subdomain.bleu.de`, 'A', '127.0.0.1') await testCflareAccount.createRecord(`${randomPrefix}subdomain.bleu.de`, 'A', '127.0.0.1')
}) })
tap.test('should get a record from Cloudflare', async (tools) => { tap.test('should get a record from Cloudflare', async (tools) => {
// tools.timeout(600000) tools.timeout(600000)
await testCflareAccount.getRecord('bleu.de', 'A') await testCflareAccount.getRecord('bleu.de', 'A')
.then(function (responseArg) { .then(function (responseArg) {
console.log(responseArg) console.log(responseArg)
@ -44,11 +44,15 @@ tap.test('should get a record from Cloudflare', async (tools) => {
}) })
tap.test('should remove a subdomain record from Cloudflare', async (tools) => { tap.test('should remove a subdomain record from Cloudflare', async (tools) => {
// tools.timeout(600000) tools.timeout(600000)
await testCflareAccount.removeRecord(`${randomPrefix}subdomain.bleu.de`, 'A') await testCflareAccount.removeRecord(`${randomPrefix}subdomain.bleu.de`, 'A')
.then(async (responseArg) => { .then(async (responseArg) => {
console.log(responseArg) console.log(responseArg)
}) })
}) })
tap.test('.purge(some.domain) -> should purge everything', async () => {
await testCflareAccount.purgeZone('bleu.de')
})
tap.start() tap.start()

View File

@ -2,11 +2,14 @@ import 'typings-global'
import plugins = require('./cflare.plugins') import plugins = require('./cflare.plugins')
import * as interfaces from './cflare.interfaces' import * as interfaces from './cflare.interfaces'
// interfaces
import { TDnsRecord } from 'tsclass'
export class CflareAccount { export class CflareAccount {
private authEmail: string private authEmail: string
private authKey: string private authKey: string
constructor() { constructor() {
// Nothing here
} }
auth (optionsArg: { email: string, key: string }) { auth (optionsArg: { email: string, key: string }) {
@ -15,7 +18,8 @@ export class CflareAccount {
} }
async getZoneId (domainName: string) { async getZoneId (domainName: string) {
let zoneArray = await this.listZones(domainName) let domain = new plugins.smartstring.Domain(domainName)
let zoneArray = await this.listZones(domain.zoneName)
let filteredResponse = zoneArray.filter((zoneArg) => { let filteredResponse = zoneArray.filter((zoneArg) => {
return zoneArg.name === domainName return zoneArg.name === domainName
}) })
@ -27,7 +31,7 @@ export class CflareAccount {
} }
} }
getRecord (domainNameArg: string, typeArg: string): Promise<interfaces.ICflareRecord> { getRecord (domainNameArg: string, typeArg: TDnsRecord): Promise<interfaces.ICflareRecord> {
let done = plugins.q.defer() let done = plugins.q.defer()
let result: interfaces.ICflareRecord let result: interfaces.ICflareRecord
@ -42,7 +46,7 @@ export class CflareAccount {
return done.promise return done.promise
} }
async createRecord (domainNameArg: string, typeArg: string, contentArg: string) { async createRecord (domainNameArg: string, typeArg: TDnsRecord, contentArg: string) {
let done = plugins.q.defer() let done = plugins.q.defer()
let domain = new plugins.smartstring.Domain(domainNameArg) let domain = new plugins.smartstring.Domain(domainNameArg)
let domainIdArg = await this.getZoneId(domain.zoneName) let domainIdArg = await this.getZoneId(domain.zoneName)
@ -58,7 +62,7 @@ export class CflareAccount {
return done.promise return done.promise
} }
removeRecord (domainNameArg: string, typeArg: string) { removeRecord (domainNameArg: string, typeArg: TDnsRecord) {
let done = plugins.q.defer() let done = plugins.q.defer()
let domain = new plugins.smartstring.Domain(domainNameArg) let domain = new plugins.smartstring.Domain(domainNameArg)
this.getRecord(domain.fullName, typeArg) this.getRecord(domain.fullName, typeArg)
@ -99,11 +103,11 @@ export class CflareAccount {
* @param domainName * @param domainName
*/ */
async listZones (domainName?: string): Promise<interfaces.ICflareZone[]> { // TODO: handle pagination async listZones (domainName?: string): Promise<interfaces.ICflareZone[]> { // TODO: handle pagination
let requestRoute = '/zones?per_page=50' let requestRoute = `/zones?per_page=50`
// may be optionally filtered by domain name // may be optionally filtered by domain name
if (domainName) { if (domainName) {
requestRoute = requestRoute + '&name=' + domainName requestRoute = `${requestRoute}&name=${domainName}`
} }
let response: any = await this.request('GET', requestRoute) let response: any = await this.request('GET', requestRoute)
@ -111,17 +115,28 @@ export class CflareAccount {
return 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 = {}) { request (methodArg: string, routeArg: string, dataArg = {}) {
let done = plugins.q.defer() let done = plugins.q.defer()
let jsonArg: string = JSON.stringify(dataArg) let jsonStringArg: string = JSON.stringify(dataArg)
let options: plugins.smartrequest.ISmartRequestOptions = { let options: plugins.smartrequest.ISmartRequestOptions = {
method: methodArg, method: methodArg,
headers: { headers: {
'Content-Type': 'application/json', 'Content-Type': 'application/json',
'X-Auth-Email': this.authEmail, 'X-Auth-Email': this.authEmail,
'X-Auth-Key': this.authKey 'X-Auth-Key': this.authKey,
'Content-Length': Buffer.byteLength(jsonStringArg)
}, },
requestBody: jsonArg requestBody: jsonStringArg
} }
// console.log(options); // console.log(options);
let retryCount = 0 let retryCount = 0
@ -137,7 +152,8 @@ export class CflareAccount {
console.log('rate limited! Waiting for retry!') console.log('rate limited! Waiting for retry!')
retryRequest() retryRequest()
} else if (response.statusCode === 400) { } else if (response.statusCode === 400) {
console.log('bad request! Going to retry!') console.log(`bad request for route ${routeArg}! Going to retry!`)
retryRequest()
} else { } else {
console.log(response.statusCode) console.log(response.statusCode)
done.reject(new Error('request failed')) done.reject(new Error('request failed'))

View File

@ -1,7 +1,5 @@
import * as plugins from './cflare.plugins' import * as plugins from './cflare.plugins'
export type TRecord = ''
export interface ICflareZone { export interface ICflareZone {
'id': string 'id': string
'name': string 'name': string

View File

@ -1,6 +1,16 @@
import 'typings-global' import 'typings-global'
export let beautylog = require('beautylog') import * as beautylog from 'beautylog'
export import q = require('smartq') import * as q from 'smartq'
export import smartrequest = require('smartrequest') import * as smartdelay from 'smartdelay'
export import smartstring = require('smartstring') import * as smartrequest from 'smartrequest'
export import smartdelay = require('smartdelay') import * as smartstring from 'smartstring'
import * as tsclass from 'tsclass'
export {
beautylog,
q,
smartdelay,
smartrequest,
smartstring,
tsclass
}

View File

@ -1,2 +1,2 @@
import "typings-global"; import 'typings-global'
export {CflareAccount} from "./cflare.classes.cflareaccount"; export {CflareAccount} from "./cflare.classes.cflareaccount";

123
yarn.lock
View File

@ -29,20 +29,30 @@
version "4.14.65" version "4.14.65"
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.65.tgz#a0f78d71ffcd3c02628d5f616410c98c424326d5" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.65.tgz#a0f78d71ffcd3c02628d5f616410c98c424326d5"
"@types/node@*": "@types/node@*", "@types/node@^7.0.29":
version "7.0.27" version "7.0.29"
resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.27.tgz#ba5e1a87aca2b4f5817289615ffe56472927687e" resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.29.tgz#ccfcec5b7135c7caf6c4ffb8c7f33102340d99df"
"@types/promises-a-plus@*": "@types/promises-a-plus@*":
version "0.0.27" version "0.0.27"
resolved "https://registry.yarnpkg.com/@types/promises-a-plus/-/promises-a-plus-0.0.27.tgz#c64651134614c84b8f5d7114ce8901d36a609780" 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": "@types/vinyl@^2.0.0":
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/@types/vinyl/-/vinyl-2.0.0.tgz#fd213bf7f4136dde21fe1895500b12c186f8c268" resolved "https://registry.yarnpkg.com/@types/vinyl/-/vinyl-2.0.0.tgz#fd213bf7f4136dde21fe1895500b12c186f8c268"
dependencies: dependencies:
"@types/node" "*" "@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: ansi-256-colors@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/ansi-256-colors/-/ansi-256-colors-1.1.0.tgz#910de50efcc7c09e3d82f2f87abd6b700c18818a" resolved "https://registry.yarnpkg.com/ansi-256-colors/-/ansi-256-colors-1.1.0.tgz#910de50efcc7c09e3d82f2f87abd6b700c18818a"
@ -76,7 +86,7 @@ beautycolor@^1.0.7:
ansi-256-colors "^1.1.0" ansi-256-colors "^1.1.0"
typings-global "^1.0.14" typings-global "^1.0.14"
beautylog@^6.1.1: beautylog@^6.1.10:
version "6.1.10" version "6.1.10"
resolved "https://registry.yarnpkg.com/beautylog/-/beautylog-6.1.10.tgz#9c27e566937684cb689f9372d98cfa5415d50b72" resolved "https://registry.yarnpkg.com/beautylog/-/beautylog-6.1.10.tgz#9c27e566937684cb689f9372d98cfa5415d50b72"
dependencies: dependencies:
@ -184,6 +194,10 @@ early@^2.1.1:
smartq "^1.1.1" smartq "^1.1.1"
typings-global "^1.0.16" 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: escape-string-regexp@^1.0.2:
version "1.0.5" version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
@ -268,6 +282,10 @@ isarray@~1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 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: js-base64@^2.1.9:
version "2.1.9" version "2.1.9"
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce" resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce"
@ -285,10 +303,11 @@ jsonfile@^3.0.0:
optionalDependencies: optionalDependencies:
graceful-fs "^4.1.6" graceful-fs "^4.1.6"
leakage@^0.2.0: leakage@^0.3.0:
version "0.2.0" version "0.3.0"
resolved "https://registry.yarnpkg.com/leakage/-/leakage-0.2.0.tgz#9e7a8cc1d241d8c8427e348769e192e172fd8733" resolved "https://registry.yarnpkg.com/leakage/-/leakage-0.3.0.tgz#15d698abdc76bbc6439601f4f3020e77e2d50c39"
dependencies: dependencies:
es6-error "^4.0.2"
left-pad "^1.1.3" left-pad "^1.1.3"
memwatch-next "^0.3.0" memwatch-next "^0.3.0"
minimist "^1.2.0" minimist "^1.2.0"
@ -378,7 +397,7 @@ process-nextick-args@^1.0.6, process-nextick-args@~1.0.6:
version "1.0.7" version "1.0.7"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
qenv@^1.1.3: qenv@^1.1.7:
version "1.1.7" version "1.1.7"
resolved "https://registry.yarnpkg.com/qenv/-/qenv-1.1.7.tgz#d03f8bf8fe37494cf08d0919fe765dca84d9afae" resolved "https://registry.yarnpkg.com/qenv/-/qenv-1.1.7.tgz#d03f8bf8fe37494cf08d0919fe765dca84d9afae"
dependencies: dependencies:
@ -387,14 +406,14 @@ qenv@^1.1.3:
typings-global "^1.0.16" typings-global "^1.0.16"
readable-stream@^2.0.2, readable-stream@^2.1.5: readable-stream@^2.0.2, readable-stream@^2.1.5:
version "2.2.10" version "2.2.11"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.10.tgz#effe72bb7c884c0dd335e2379d526196d9d011ee" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.11.tgz#0796b31f8d7688007ff0b93a8088d34aa17c0f72"
dependencies: dependencies:
core-util-is "~1.0.0" core-util-is "~1.0.0"
inherits "~2.0.1" inherits "~2.0.1"
isarray "~1.0.0" isarray "~1.0.0"
process-nextick-args "~1.0.6" process-nextick-args "~1.0.6"
safe-buffer "^5.0.1" safe-buffer "~5.0.1"
string_decoder "~1.0.0" string_decoder "~1.0.0"
util-deprecate "~1.0.1" util-deprecate "~1.0.1"
@ -405,8 +424,8 @@ rechoir@^0.6.2:
resolve "^1.1.6" resolve "^1.1.6"
remove-trailing-separator@^1.0.1: remove-trailing-separator@^1.0.1:
version "1.0.1" version "1.0.2"
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz#615ebb96af559552d4bf4057c8436d486ab63cc4" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz#69b062d978727ad14dc6b56ba4ab772fd8d70511"
replace-ext@^1.0.0: replace-ext@^1.0.0:
version "1.0.0" version "1.0.0"
@ -429,17 +448,17 @@ restore-cursor@^2.0.0:
onetime "^2.0.0" onetime "^2.0.0"
signal-exit "^3.0.2" signal-exit "^3.0.2"
safe-buffer@^5.0.1: safe-buffer@~5.0.1:
version "5.1.0" version "5.0.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.0.tgz#fe4c8460397f9eaaaa58e73be46273408a45e223" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7"
semver@^5.3.0: semver@^5.3.0:
version "5.3.0" version "5.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
shelljs@^0.7.7: shelljs@^0.7.6:
version "0.7.7" version "0.7.8"
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3"
dependencies: dependencies:
glob "^7.0.0" glob "^7.0.0"
interpret "^1.0.0" interpret "^1.0.0"
@ -460,11 +479,12 @@ smartchai@^1.0.3:
chai-as-promised "^6.0.0" chai-as-promised "^6.0.0"
chai-string "^1.3.0" chai-string "^1.3.0"
smartdelay@^1.0.1: smartdelay@^1.0.3:
version "1.0.1" version "1.0.3"
resolved "https://registry.yarnpkg.com/smartdelay/-/smartdelay-1.0.1.tgz#687f8bcc09d7c62c9c5a8a1771c1aba3aff54156" resolved "https://registry.yarnpkg.com/smartdelay/-/smartdelay-1.0.3.tgz#5fd44dad77262d110702f0293efa80c072cfb579"
dependencies: dependencies:
typings-global "^1.0.14" smartq "^1.1.1"
typings-global "^1.0.16"
smartenv@^2.0.0: smartenv@^2.0.0:
version "2.0.6" version "2.0.6"
@ -505,14 +525,24 @@ smartq@^1.1.0, smartq@^1.1.1:
typed-promisify "^0.3.0" typed-promisify "^0.3.0"
typings-global "^1.0.14" typings-global "^1.0.14"
smartrequest@^1.0.4: smartrequest@^1.0.4, smartrequest@^1.0.6:
version "1.0.4" version "1.0.6"
resolved "https://registry.yarnpkg.com/smartrequest/-/smartrequest-1.0.4.tgz#86af2163ae28f1031b01c2d8ad8c429733920611" resolved "https://registry.yarnpkg.com/smartrequest/-/smartrequest-1.0.6.tgz#a006454332453b0a70d38a003a29963d039a7783"
dependencies: dependencies:
smartq "^1.1.0" smartq "^1.1.1"
typings-global "^1.0.14" typings-global "^1.0.17"
smartstring@^2.0.22: 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" version "2.0.24"
resolved "https://registry.yarnpkg.com/smartstring/-/smartstring-2.0.24.tgz#dc1c5efb738c10a2d7daeea3d800ad2ecc65a26c" resolved "https://registry.yarnpkg.com/smartstring/-/smartstring-2.0.24.tgz#dc1c5efb738c10a2d7daeea3d800ad2ecc65a26c"
dependencies: dependencies:
@ -524,10 +554,10 @@ sprintf-js@~1.0.2:
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
string_decoder@~1.0.0: string_decoder@~1.0.0:
version "1.0.1" version "1.0.2"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.1.tgz#62e200f039955a6810d8df0a33ffc0f013662d98" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.2.tgz#b29e1f4e1125fa97a10382b8a533737b7491e179"
dependencies: dependencies:
safe-buffer "^5.0.1" safe-buffer "~5.0.1"
strip-ansi@^3.0.0: strip-ansi@^3.0.0:
version "3.0.1" version "3.0.1"
@ -558,14 +588,14 @@ supports-color@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
tapbundle@^1.0.13: tapbundle@^1.0.14:
version "1.0.13" version "1.0.14"
resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.0.13.tgz#0b274aed6a386c0c01d8d517709381ce96e3971e" resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.0.14.tgz#75827e335fcb02216f0267a26a26d702ddc02e3c"
dependencies: dependencies:
early "^2.1.1" early "^2.1.1"
leakage "^0.2.0" leakage "^0.3.0"
smartchai "^1.0.3" smartchai "^1.0.3"
smartdelay "^1.0.1" smartdelay "^1.0.3"
smartq "^1.1.1" smartq "^1.1.1"
typings-global "^1.0.16" typings-global "^1.0.16"
@ -576,6 +606,10 @@ through2@^2.0.1:
readable-stream "^2.1.5" readable-stream "^2.1.5"
xtend "~4.0.1" 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: type-detect@0.1.1:
version "0.1.1" version "0.1.1"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822"
@ -588,12 +622,13 @@ typed-promisify@^0.3.0:
version "0.3.0" version "0.3.0"
resolved "https://registry.yarnpkg.com/typed-promisify/-/typed-promisify-0.3.0.tgz#1ba0af5e444c87d8047406f18ce49092a1191853" 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.14, typings-global@^1.0.16, typings-global@^1.0.17:
version "1.0.16" version "1.0.17"
resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.16.tgz#489b71781af24268750c2899316400a5e482961f" resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.17.tgz#41edc331ccec3168289adc8849e1e255efbe7152"
dependencies: dependencies:
"@types/node" "^7.0.29"
semver "^5.3.0" semver "^5.3.0"
shelljs "^0.7.7" smartshell "^1.0.6"
universalify@^0.1.0: universalify@^0.1.0:
version "0.1.0" version "0.1.0"
@ -625,6 +660,12 @@ vinyl@^2.0.1, vinyl@^2.0.2:
remove-trailing-separator "^1.0.1" remove-trailing-separator "^1.0.1"
replace-ext "^1.0.0" 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: wrappy@1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"