4 Commits

Author SHA1 Message Date
c683df3c35 1.0.4 2018-05-11 00:53:27 +02:00
0de7b75dca feat(parser): now handles comma and semicolon seperated csv strings 2018-05-11 00:53:27 +02:00
2e23d959da 1.0.3 2018-05-10 19:48:31 +02:00
0b1505d6ad fix(yarn): cleanup 2018-05-10 19:48:31 +02:00
10 changed files with 131 additions and 354 deletions

View File

@@ -12,6 +12,9 @@ stages:
- release - release
- metadata - metadata
# ====================
# security stage
# ====================
mirror: mirror:
stage: security stage: security
script: script:
@@ -30,6 +33,9 @@ snyk:
- docker - docker
- notpriv - notpriv
# ====================
# test stage
# ====================
testLEGACY: testLEGACY:
stage: test stage: test
script: script:
@@ -68,7 +74,6 @@ release:
stage: release stage: release
script: script:
- npmci node install stable - npmci node install stable
- npmci npm prepare
- npmci npm publish - npmci npm publish
only: only:
- tags - tags

20
dist/index.d.ts vendored
View File

@@ -1,6 +1,16 @@
export declare class Csv { export interface ICsvConstructorOptions {
static createCsvFromString(csvStringArg: string): Promise<Csv>; headers: boolean;
csvString: string; }
getHeaders(): void; export declare class Csv {
exportAsJson(): void; static createCsvFromString(csvStringArg: string, options: ICsvConstructorOptions): Promise<Csv>;
csvString: string;
headers: string[];
keyFrame: string;
options: ICsvConstructorOptions;
determineKeyframe(): void;
serializeCsvString(): any[];
getRows(): string[];
getHeaders(): string[];
createDataObject(dataArray: string[]): any;
exportAsObject(): Promise<any>;
} }

74
dist/index.js vendored
View File

@@ -9,20 +9,80 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
class Csv { class Csv {
static createCsvFromString(csvStringArg) { constructor() {
this.keyFrame = null;
this.options = {
headers: true
};
}
static createCsvFromString(csvStringArg, options) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
const csvInstance = new Csv(); const csvInstance = new Csv();
csvInstance.csvString = csvStringArg; csvInstance.csvString = csvStringArg;
csvInstance.determineKeyframe();
return csvInstance; return csvInstance;
}); });
} }
getHeaders() { determineKeyframe() {
let commaLength = 0;
let semicolonLength = 0;
const commaRegexResult = this.csvString.match(/,/g);
const semicolonRegexResult = this.csvString.match(/;/g);
if (commaRegexResult) {
commaLength = commaRegexResult.length;
} }
exportAsJson() { if (semicolonRegexResult) {
let json = { semicolonLength = semicolonRegexResult.length;
[`key`]: 'hi' }
}; // tslint:disable-next-line:prefer-conditional-expression
if (commaLength < semicolonLength) {
this.keyFrame = ';';
}
else {
this.keyFrame = ',';
}
}
serializeCsvString() {
const rowArray = this.getRows();
const resultArray = [];
if (this.options.headers) {
this.getHeaders();
rowArray.shift();
}
for (const row of rowArray) {
resultArray.push(row.split(this.keyFrame));
}
return resultArray;
}
getRows() {
return this.csvString.split('\n');
}
getHeaders() {
const rowArray = this.getRows();
if (this.options.headers) {
let headerRow = rowArray[0];
this.headers = headerRow.split(this.keyFrame);
}
return this.headers;
}
createDataObject(dataArray) {
const neededIterations = dataArray.length;
let resultJson = {};
for (let i = 0; i < neededIterations; i++) {
resultJson[this.headers[i]] = dataArray[i];
}
return resultJson;
}
exportAsObject() {
return __awaiter(this, void 0, void 0, function* () {
const serializedData = this.serializeCsvString();
const dataObjects = [];
for (const dataArray of serializedData) {
dataObjects.push(this.createDataObject(dataArray));
}
return dataObjects;
});
} }
} }
exports.Csv = Csv; exports.Csv = Csv;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBRUE7SUFDUyxNQUFNLENBQU8sbUJBQW1CLENBQUUsWUFBb0I7O1lBQzNELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7WUFDOUIsV0FBVyxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUM7WUFDckMsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQztLQUFBO0lBR00sVUFBVTtJQUVqQixDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLElBQUksR0FBRztZQUNULENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSTtTQUNkLENBQUM7SUFDSixDQUFDO0NBRUY7QUFsQkQsa0JBa0JDIn0= //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBTUE7SUFBQTtRQVlTLGFBQVEsR0FBVyxJQUFJLENBQUM7UUFFeEIsWUFBTyxHQUEyQjtZQUN2QyxPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUM7SUFnRUosQ0FBQztJQS9FUSxNQUFNLENBQU8sbUJBQW1CLENBQ3JDLFlBQW9CLEVBQ3BCLE9BQStCOztZQUUvQixNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQzlCLFdBQVcsQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDO1lBQ3JDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7S0FBQTtJQVNNLGlCQUFpQjtRQUN0QixJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxJQUFJLGdCQUFnQixFQUFFO1lBQ3BCLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7U0FDdkM7UUFDRCxJQUFJLG9CQUFvQixFQUFFO1lBQ3hCLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7U0FDL0M7UUFDRCx5REFBeUQ7UUFDekQsSUFBSSxXQUFXLEdBQUcsZUFBZSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1NBQ3JCO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNsQixRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDbEI7UUFDRCxLQUFLLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRTtZQUMxQixXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7U0FDNUM7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRU0sT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLFVBQVU7UUFDZixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDaEMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUN4QixJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMvQztRQUNELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsU0FBbUI7UUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQzFDLElBQUksVUFBVSxHQUFRLEVBQUUsQ0FBQztRQUN6QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDekMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDNUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRVksY0FBYzs7WUFDekIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDakQsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssTUFBTSxTQUFTLElBQUksY0FBYyxFQUFFO2dCQUN0QyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2FBQ3BEO1lBQ0QsT0FBTyxXQUFXLENBQUM7UUFDckIsQ0FBQztLQUFBO0NBQ0Y7QUFoRkQsa0JBZ0ZDIn0=

View File

@@ -1,2 +1,2 @@
import * as csv from 'csv'; import * as smartq from 'smartq';
export { csv }; export { smartq };

View File

@@ -1,5 +1,5 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const csv = require("csv"); const smartq = require("smartq");
exports.csv = csv; exports.smartq = smartq;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjc3YucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y3N2LnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyQkFBMkI7QUFHekIsa0JBQUcifQ== //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRjc3YucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0Y3N2LnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBaUM7QUFFeEIsd0JBQU0ifQ==

View File

@@ -1,6 +1,6 @@
{ {
"name": "@pushrocks/smartcsv", "name": "@pushrocks/smartcsv",
"version": "1.0.2", "version": "1.0.4",
"description": "handle csv data", "description": "handle csv data",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts", "typings": "dist/index.d.ts",

View File

@@ -8,12 +8,12 @@ import * as smartfile from 'smartfile';
let fileString: string; let fileString: string;
let testCsv: smartcsv.Csv; let testCsv: smartcsv.Csv;
tap.test('should read a file', async (tools) => { tap.test('should read a file', async tools => {
fileString = smartfile.fs.toStringSync('./test/sample.csv'); fileString = smartfile.fs.toStringSync('./test/sample.csv');
}); });
tap.test('should create a valid csv', async () => { tap.test('should create a valid csv', async () => {
testCsv = await smartcsv.Csv.createCsvFromString(fileString, {headers: true}); testCsv = await smartcsv.Csv.createCsvFromString(fileString, { headers: true });
const result = await testCsv.exportAsObject(); const result = await testCsv.exportAsObject();
console.log(result); console.log(result);
}); });

View File

@@ -5,19 +5,43 @@ export interface ICsvConstructorOptions {
} }
export class Csv { export class Csv {
public static async createCsvFromString (csvStringArg: string, options: ICsvConstructorOptions): Promise<Csv> { public static async createCsvFromString(
csvStringArg: string,
options: ICsvConstructorOptions
): Promise<Csv> {
const csvInstance = new Csv(); const csvInstance = new Csv();
csvInstance.csvString = csvStringArg; csvInstance.csvString = csvStringArg;
csvInstance.determineKeyframe();
return csvInstance; return csvInstance;
} }
public csvString: string; public csvString: string;
public headers: string[]; public headers: string[];
public keyFrame: string = null;
public options: ICsvConstructorOptions = { public options: ICsvConstructorOptions = {
headers: true headers: true
}; };
public serializeCsvString () { public determineKeyframe() {
let commaLength = 0;
let semicolonLength = 0;
const commaRegexResult = this.csvString.match(/,/g);
const semicolonRegexResult = this.csvString.match(/;/g);
if (commaRegexResult) {
commaLength = commaRegexResult.length;
}
if (semicolonRegexResult) {
semicolonLength = semicolonRegexResult.length;
}
// tslint:disable-next-line:prefer-conditional-expression
if (commaLength < semicolonLength) {
this.keyFrame = ';';
} else {
this.keyFrame = ',';
}
}
public serializeCsvString() {
const rowArray = this.getRows(); const rowArray = this.getRows();
const resultArray = []; const resultArray = [];
if (this.options.headers) { if (this.options.headers) {
@@ -25,34 +49,34 @@ export class Csv {
rowArray.shift(); rowArray.shift();
} }
for (const row of rowArray) { for (const row of rowArray) {
resultArray.push(row.split(';')); resultArray.push(row.split(this.keyFrame));
} }
return resultArray; return resultArray;
} }
public getRows () { public getRows() {
return this.csvString.split('\n'); return this.csvString.split('\n');
} }
public getHeaders () { public getHeaders() {
const rowArray = this.getRows(); const rowArray = this.getRows();
if (this.options.headers) { if (this.options.headers) {
let headerRow = rowArray[ 0 ]; let headerRow = rowArray[0];
this.headers = headerRow.split(';'); this.headers = headerRow.split(this.keyFrame);
} }
return this.headers; return this.headers;
} }
public createDataObject (dataArray: string[]) { public createDataObject(dataArray: string[]) {
const neededIterations = dataArray.length; const neededIterations = dataArray.length;
let resultJson: any = {}; let resultJson: any = {};
for(let i = 0; i < neededIterations; i++) { for (let i = 0; i < neededIterations; i++) {
resultJson[this.headers[i]] = dataArray[i]; resultJson[this.headers[i]] = dataArray[i];
} }
return resultJson; return resultJson;
} }
public async exportAsObject (): Promise<any> { public async exportAsObject(): Promise<any> {
const serializedData = this.serializeCsvString(); const serializedData = this.serializeCsvString();
const dataObjects = []; const dataObjects = [];
for (const dataArray of serializedData) { for (const dataArray of serializedData) {
@@ -60,5 +84,4 @@ export class Csv {
} }
return dataObjects; return dataObjects;
} }
} }

View File

@@ -1,5 +1,3 @@
import * as smartq from 'smartq'; import * as smartq from 'smartq';
export { export { smartq };
smartq
};

View File

@@ -1,319 +0,0 @@
Arguments:
/Users/philkunz/.nvm/versions/node/v9.7.1/bin/node /Users/philkunz/.yarn/bin/yarn.js remove smartcsv
PATH:
/Users/philkunz/.yarn/bin:/Users/philkunz/.config/yarn/global/node_modules/.bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/philkunz/.yarn/bin:/Users/philkunz/.config/yarn/global/node_modules/.bin:/Users/philkunz/.nvm/versions/node/v9.7.1/bin
Yarn version:
1.5.1
Node version:
9.7.1
Platform:
darwin x64
npm manifest:
{
"name": "@pushrocks/smartcsv",
"version": "1.0.1",
"description": "handle csv data",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
"author": "Lossless GmbH",
"license": "",
"scripts": {
"test": "(npmts)",
"format": "(gitzone format)"
},
"devDependencies": {
"tapbundle": "^2.0.0"
},
"dependencies": {
"csv": "^3.0.2"
}
}
yarn manifest:
No manifest
Lockfile:
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@types/chai-as-promised@^7.1.0":
version "7.1.0"
resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.0.tgz#010b04cde78eacfb6e72bfddb3e58fe23c2e78b9"
dependencies:
"@types/chai" "*"
"@types/chai-string@^1.4.0":
version "1.4.1"
resolved "https://registry.yarnpkg.com/@types/chai-string/-/chai-string-1.4.1.tgz#3a9d22716c27f2759bf272a4dbbdb593f18399e3"
dependencies:
"@types/chai" "*"
"@types/chai@*", "@types/chai@^4.1.2":
version "4.1.3"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.3.tgz#b8a74352977a23b604c01aa784f5b793443fb7dc"
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"
assertion-error@^1.0.1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
beautycolor@^1.0.7:
version "1.0.11"
resolved "https://registry.yarnpkg.com/beautycolor/-/beautycolor-1.0.11.tgz#71c5568d5a7ed5c144d3a54f753ad1b08862aea5"
dependencies:
ansi-256-colors "^1.1.0"
typings-global "^1.0.14"
bindings@^1.2.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7"
chai-as-promised@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.1.tgz#08645d825deb8696ee61725dbf590c012eb00ca0"
dependencies:
check-error "^1.0.2"
chai-string@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/chai-string/-/chai-string-1.4.0.tgz#359140c051d36a4e4b1a5fc6b910152f438a8d49"
chai@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chai/-/chai-4.1.2.tgz#0f64584ba642f0f2ace2806279f4f06ca23ad73c"
dependencies:
assertion-error "^1.0.1"
check-error "^1.0.1"
deep-eql "^3.0.0"
get-func-name "^2.0.0"
pathval "^1.0.0"
type-detect "^4.0.0"
check-error@^1.0.1, check-error@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
csv-generate@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/csv-generate/-/csv-generate-2.0.2.tgz#1c26c52be318f1f0b6435f8df3d1249fb1503f4b"
csv-parse@^2.2.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-2.4.0.tgz#d4c72a1533734b2c2a65f486d13091264cacc115"
csv-stringify@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-3.0.0.tgz#ed2b4eaae5a3be382309f7864168458970307d7f"
dependencies:
lodash.get "~4.4.2"
csv@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/csv/-/csv-3.0.2.tgz#3f29d92cd27c75e3ba21265b5cad29bd2d785358"
dependencies:
csv-generate "^2.0.2"
csv-parse "^2.2.0"
csv-stringify "^3.0.0"
stream-transform "^1.0.2"
deep-eql@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df"
dependencies:
type-detect "^4.0.0"
define-properties@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
dependencies:
foreach "^2.0.5"
object-keys "^1.0.8"
early@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/early/-/early-2.1.1.tgz#841e23254ea5dc54d8afaeee82f5ab65c00ee23c"
dependencies:
beautycolor "^1.0.7"
smartq "^1.1.1"
typings-global "^1.0.16"
es-abstract@^1.5.1:
version "1.11.0"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681"
dependencies:
es-to-primitive "^1.1.1"
function-bind "^1.1.1"
has "^1.0.1"
is-callable "^1.1.3"
is-regex "^1.0.4"
es-to-primitive@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
dependencies:
is-callable "^1.1.1"
is-date-object "^1.0.1"
is-symbol "^1.0.1"
es6-error@^4.0.2:
version "4.1.1"
resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d"
foreach@^2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
function-bind@^1.0.2, function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
get-func-name@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
has@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
dependencies:
function-bind "^1.0.2"
is-callable@^1.1.1, is-callable@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
is-date-object@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
is-regex@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
dependencies:
has "^1.0.1"
is-symbol@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
leakage@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/leakage/-/leakage-0.3.0.tgz#15d698abdc76bbc6439601f4f3020e77e2d50c39"
dependencies:
es6-error "^4.0.2"
left-pad "^1.1.3"
memwatch-next "^0.3.0"
minimist "^1.2.0"
pretty-bytes "^4.0.2"
left-pad@^1.1.3:
version "1.3.0"
resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e"
lodash.get@~4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
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"
minimist@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
nan@^2.3.2:
version "2.10.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f"
object-keys@^1.0.8:
version "1.0.11"
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
object.getownpropertydescriptors@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
dependencies:
define-properties "^1.1.2"
es-abstract "^1.5.1"
pathval@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0"
pretty-bytes@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
smartchai@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/smartchai/-/smartchai-2.0.1.tgz#d20f17221f0e3c6c3473600b78ddfba0ab0ea762"
dependencies:
"@types/chai" "^4.1.2"
"@types/chai-as-promised" "^7.1.0"
"@types/chai-string" "^1.4.0"
chai "^4.1.2"
chai-as-promised "^7.1.1"
chai-string "^1.4.0"
smartdelay@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/smartdelay/-/smartdelay-1.0.4.tgz#791c1a4ee6770494064c10b1d2d2b8e6f3105b82"
dependencies:
smartq "^1.1.1"
typings-global "^1.0.16"
smartq@^1.1.1:
version "1.1.8"
resolved "https://registry.yarnpkg.com/smartq/-/smartq-1.1.8.tgz#7e2f3b9739eb5d6c9f45f2a86e339ec81e49e8d2"
dependencies:
util.promisify "^1.0.0"
stream-transform@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/stream-transform/-/stream-transform-1.0.2.tgz#47de4d15fbc29b7e2a7e54d25e99538876f114c1"
tapbundle@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-2.0.0.tgz#79fce68ff185c786fabaf6eb589a4afc7d2714b7"
dependencies:
early "^2.1.1"
leakage "^0.3.0"
smartchai "^2.0.0"
smartdelay "^1.0.3"
smartq "^1.1.1"
type-detect@^4.0.0:
version "4.0.8"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
typings-global@^1.0.14, typings-global@^1.0.16:
version "1.0.28"
resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.28.tgz#e28cc965476564cbc00e438739e0aa0735d323d4"
util.promisify@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
dependencies:
define-properties "^1.1.2"
object.getownpropertydescriptors "^2.0.3"
Trace:
Error: This module isn't specified in a manifest.
at new MessageError (/Users/philkunz/.yarn/lib/cli.js:186:110)
at Object.<anonymous> (/Users/philkunz/.yarn/lib/cli.js:60445:15)
at Generator.next (<anonymous>)
at step (/Users/philkunz/.yarn/lib/cli.js:98:30)
at /Users/philkunz/.yarn/lib/cli.js:109:13
at <anonymous>