Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
05677231f7 | |||
9c036925fd | |||
d3d5f72193 | |||
3d7c0e6b64 | |||
4faefb0bd7 | |||
162fff134e | |||
426237b2a7 | |||
b2d48d793a | |||
54282bdc14 | |||
208fba0887 | |||
2f065b57fc | |||
3503fbc7b3 |
@ -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:
|
||||||
|
8
dist/cflare.classes.cflareaccount.d.ts
vendored
8
dist/cflare.classes.cflareaccount.d.ts
vendored
@ -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();
|
||||||
}
|
}
|
||||||
|
31
dist/cflare.classes.cflareaccount.js
vendored
31
dist/cflare.classes.cflareaccount.js
vendored
File diff suppressed because one or more lines are too long
1
dist/cflare.interfaces.d.ts
vendored
1
dist/cflare.interfaces.d.ts
vendored
@ -1,4 +1,3 @@
|
|||||||
export declare type TRecord = '';
|
|
||||||
export interface ICflareZone {
|
export interface ICflareZone {
|
||||||
'id': string;
|
'id': string;
|
||||||
'name': string;
|
'name': string;
|
||||||
|
12
dist/cflare.plugins.d.ts
vendored
12
dist/cflare.plugins.d.ts
vendored
@ -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 };
|
||||||
|
19
dist/cflare.plugins.js
vendored
19
dist/cflare.plugins.js
vendored
@ -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
2
dist/index.d.ts
vendored
@ -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
2
dist/index.js
vendored
@ -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
7
npmextra.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"npmci": {
|
||||||
|
"globalNpmTools": [
|
||||||
|
"npmts"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
19
package.json
19
package.json
@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
18
test/test.ts
18
test/test.ts
@ -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()
|
||||||
|
@ -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'))
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
}
|
||||||
|
@ -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
123
yarn.lock
@ -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"
|
||||||
|
Reference in New Issue
Block a user