diff --git a/assets/jscpd-badge.svg b/assets/jscpd-badge.svg index c85f32f..7e93ec0 100644 --- a/assets/jscpd-badge.svg +++ b/assets/jscpd-badge.svg @@ -1,19 +1,19 @@ - + - + - - + + Copy/Paste Copy/Paste - 0% - 0% + 7.01% + 7.01% \ No newline at end of file diff --git a/dist/FacadeConfig.d.ts b/dist/FacadeConfig.d.ts index 3bd02a0..0341a1a 100644 --- a/dist/FacadeConfig.d.ts +++ b/dist/FacadeConfig.d.ts @@ -4,7 +4,7 @@ import { ConvertItemIntoOptions } from './types/convertItemIntoOptions'; export declare type Document = any; export default interface FacadeConfig { readonly ky: () => Promise; - readonly createFilter: (filter: Filter) => any; + readonly createFilter: (filter?: Filter) => any; readonly convertDocumentIntoItem: (document: Document) => I; readonly convertItemIntoOptions: ConvertItemIntoOptions; readonly createSort: (sort: Sort) => any; diff --git a/dist/FactoryConfig.d.ts b/dist/FactoryConfig.d.ts index a820577..1cb237a 100644 --- a/dist/FactoryConfig.d.ts +++ b/dist/FactoryConfig.d.ts @@ -19,7 +19,7 @@ export default interface FactoryConfig { readonly paginationKey?: string; readonly envelopParamName?: string; readonly prettyParamName?: string; - readonly createFilter: (filter: Filter) => any; + readonly createFilter: (filter?: Filter) => any; readonly convertDocumentIntoItem: (document: Document) => I; readonly convertItemIntoOptions: ConvertItemIntoOptions; readonly createSort: (sort: Sort) => any; diff --git a/dist/factory.js b/dist/factory.js index 7b5536b..c082659 100644 --- a/dist/factory.js +++ b/dist/factory.js @@ -24,6 +24,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); // import Facade from '@js-items/foundation/dist/Facade'; +// import Facade from '@js-items/foundation/dist/Facade'; var defaultTo_1 = __importDefault(require("ramda/src/defaultTo")); var createItem_1 = __importDefault(require("./functions/createItem")); // import defaultDeleteItem from './functions/deleteItem'; @@ -34,10 +35,11 @@ var createItem_1 = __importDefault(require("./functions/createItem")); // import defaultUpdateItem from './functions/updateItem'; // import { Handler } from './types/handler'; var defaultConvertItemToOptions_1 = __importDefault(require("./utils/defaultConvertItemToOptions")); +var emptyOptions_1 = require("./utils/emptyOptions"); exports.default = (function (_a) { var deleteItem = _a.deleteItem, deleteItems = _a.deleteItems, getItem = _a.getItem, getItems = _a.getItems, updateItem = _a.updateItem, replaceItem = _a.replaceItem, createItem = _a.createItem, convertItemIntoOptions = _a.convertItemIntoOptions, config = __rest(_a, ["deleteItem", "deleteItems", "getItem", "getItems", "updateItem", "replaceItem", "createItem", "convertItemIntoOptions"]); var itemIntoOptions = defaultTo_1.default(defaultConvertItemToOptions_1.default)(convertItemIntoOptions); - var facadeConfig = __assign({ convertDocumentIntoItem: function (document) { return document; }, convertItemIntoOptions: itemIntoOptions, createFilter: function (filter) { return filter; }, createItemOptions: defaultConvertItemToOptions_1.default, createSort: function (sort) { return sort; }, defaultPaginationLimit: 10, deleteItemOptions: itemIntoOptions, deleteItemsOptions: itemIntoOptions, getItemOptions: itemIntoOptions, getItemsOptions: itemIntoOptions, replaceItemOptions: itemIntoOptions, updateItemOptions: itemIntoOptions }, config); + var facadeConfig = __assign({ convertDocumentIntoItem: function (document) { return document; }, convertItemIntoOptions: itemIntoOptions, createFilter: emptyOptions_1.emptyOptions, createItemOptions: defaultConvertItemToOptions_1.default, createSort: function (sort) { return sort; }, defaultPaginationLimit: 10, deleteItemOptions: emptyOptions_1.emptyOptions, deleteItemsOptions: itemIntoOptions, getItemOptions: itemIntoOptions, getItemsOptions: itemIntoOptions, replaceItemOptions: itemIntoOptions, updateItemOptions: itemIntoOptions }, config); var createItemFactory = defaultTo_1.default(createItem_1.default)(createItem); // const deleteItemFactory = _defaultTo( // defaultDeleteItem diff --git a/dist/factory.js.map b/dist/factory.js.map index df39868..ae5ab2a 100644 --- a/dist/factory.js.map +++ b/dist/factory.js.map @@ -1 +1 @@ -{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAGA,yDAAyD;AACzD,kEAA6C;AAG7C,sEAAuD;AACvD,0DAA0D;AAC1D,4DAA4D;AAC5D,oDAAoD;AACpD,sDAAsD;AACtD,4DAA4D;AAC5D,0DAA0D;AAC1D,6CAA6C;AAC7C,oGAA8E;AAE9E,mBAAe,UAAiB,EAa/B;IAZC,IAAA,0BAAU,EACV,4BAAW,EACX,oBAAO,EACP,sBAAQ,EACR,0BAAU,EACV,4BAAW,EACX,0BAAU,EACV,kDAAsB,EACtB,8IAAS;IAKT,IAAM,eAAe,GAAG,mBAAU,CAAC,qCAA2B,CAAC,CAC7D,sBAAsB,CACvB,CAAC;IAEF,IAAM,YAAY,cAChB,uBAAuB,EAAE,UAAC,QAAa,IAAK,OAAA,QAAQ,EAAR,CAAQ,EACpD,sBAAsB,EAAE,eAAe,EACvC,YAAY,EAAE,UAAC,MAAW,IAAK,OAAA,MAAM,EAAN,CAAM,EACrC,iBAAiB,EAAE,qCAA2B,EAC9C,UAAU,EAAE,UAAC,IAAS,IAAK,OAAA,IAAI,EAAJ,CAAI,EAC/B,sBAAsB,EAAE,EAAE,EAC1B,iBAAiB,EAAE,eAAe,EAClC,kBAAkB,EAAE,eAAe,EACnC,cAAc,EAAE,eAAe,EAC/B,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,eAAe,EACnC,iBAAiB,EAAE,eAAe,IAC/B,MAAM,CACV,CAAC;IAEF,IAAM,iBAAiB,GAAG,mBAAU,CAAC,oBAAiB,CAAC,CAAC,UAAU,CAAC,CAAC;IACpE,wCAAwC;IACxC,sBAAsB;IACtB,iBAAiB;IACjB,8DAA8D;IAC9D,uEAAuE;IACvE,0EAA0E;IAC1E,0EAA0E;IAC1E,iEAAiE;IAEjE,OAAO;QACL,UAAU,EAAE,iBAAiB,CAAC,YAAY,CAAC;KAO5C,CAAC;AACJ,CAAC,EAAC"} \ No newline at end of file +{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAGA,yDAAyD;AACzD,yDAAyD;AACzD,kEAA6C;AAG7C,sEAAuD;AACvD,0DAA0D;AAC1D,4DAA4D;AAC5D,oDAAoD;AACpD,sDAAsD;AACtD,4DAA4D;AAC5D,0DAA0D;AAC1D,6CAA6C;AAC7C,oGAA8E;AAC9E,qDAAoD;AAEpD,mBAAe,UAAiB,EAY/B;IAXC,IAAA,0BAAU,EACV,4BAAW,EACX,oBAAO,EACP,sBAAQ,EACR,0BAAU,EACV,4BAAW,EACX,0BAAU,EACV,kDAAsB,EACtB,8IAAS;IAIT,IAAM,eAAe,GAAG,mBAAU,CAAC,qCAA2B,CAAC,CAC7D,sBAAsB,CACvB,CAAC;IAEF,IAAM,YAAY,cAChB,uBAAuB,EAAE,UAAC,QAAa,IAAK,OAAA,QAAQ,EAAR,CAAQ,EACpD,sBAAsB,EAAE,eAAe,EACvC,YAAY,EAAE,2BAAY,EAC1B,iBAAiB,EAAE,qCAA2B,EAC9C,UAAU,EAAE,UAAC,IAAS,IAAK,OAAA,IAAI,EAAJ,CAAI,EAC/B,sBAAsB,EAAE,EAAE,EAC1B,iBAAiB,EAAE,2BAAY,EAC/B,kBAAkB,EAAE,eAAe,EACnC,cAAc,EAAE,eAAe,EAC/B,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,eAAe,EACnC,iBAAiB,EAAE,eAAe,IAC/B,MAAM,CACV,CAAC;IAEF,IAAM,iBAAiB,GAAG,mBAAU,CAAC,oBAAiB,CAAC,CAAC,UAAU,CAAC,CAAC;IACpE,wCAAwC;IACxC,sBAAsB;IACtB,iBAAiB;IACjB,8DAA8D;IAC9D,uEAAuE;IACvE,0EAA0E;IAC1E,0EAA0E;IAC1E,iEAAiE;IAEjE,OAAO;QACL,UAAU,EAAE,iBAAiB,CAAC,YAAY,CAAC;KAO5C,CAAC;AACJ,CAAC,EAAC"} \ No newline at end of file diff --git a/dist/functions/createItem/index.js b/dist/functions/createItem/index.js index 039b12a..e0400f2 100644 --- a/dist/functions/createItem/index.js +++ b/dist/functions/createItem/index.js @@ -50,12 +50,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); -// tslint:disable:no-any -var foundation_1 = require("@js-items/foundation"); -var http_status_codes_1 = require("http-status-codes"); var isNil_1 = __importDefault(require("ramda/src/isNil")); exports.default = (function (config) { return function (_a) { - var id = _a.id, item = _a.item; + var item = _a.item, id = _a.id; return __awaiter(_this, void 0, void 0, function () { var connection, options, json, response, error_1; return __generator(this, function (_b) { @@ -69,7 +66,7 @@ exports.default = (function (config) { return function (_a) { json = !isNil_1.default(options) && !isNil_1.default(options.json) ? options.json : {}; - return [4 /*yield*/, connection('', __assign({}, options, { json: __assign({ item: item }, json), method: 'post' })).json()]; + return [4 /*yield*/, connection('', __assign({}, options, { json: __assign({}, item, json), method: 'post' })).json()]; case 2: response = _b.sent(); return [2 /*return*/, Promise.resolve({ @@ -77,9 +74,6 @@ exports.default = (function (config) { return function (_a) { })]; case 3: error_1 = _b.sent(); - if (error_1.response.status === http_status_codes_1.CONFLICT) { - return [2 /*return*/, Promise.reject(new foundation_1.ConflictingItemError(config.itemName, id))]; - } return [2 /*return*/, Promise.reject(error_1)]; case 4: return [2 /*return*/]; } diff --git a/dist/functions/createItem/index.js.map b/dist/functions/createItem/index.js.map index 04a8219..ca0d986 100644 --- a/dist/functions/createItem/index.js.map +++ b/dist/functions/createItem/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/createItem/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iBAuCA;;AAxCA,wBAAwB;AACxB,mDAA8E;AAE9E,uDAA6C;AAC7C,0DAAqC;AAGrC,mBAAe,UACb,MAAuB,IACL,OAAA,UAAO,EAAY;QAAV,UAAE,EAAE,cAAI;;;;;;;oBAEd,qBAAM,MAAM,CAAC,EAAE,EAAE,EAAA;;oBAA9B,UAAU,GAAG,SAAiB;oBAE9B,OAAO,GAAG,MAAM,CAAC,iBAAiB,cAAM,IAAI,IAAE,EAAE,IAAA,IAAG,CAAC;oBAEpD,IAAI,GACR,CAAC,eAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAM,CAAE,OAAe,CAAC,IAAI,CAAC;wBAChD,CAAC,CAAE,OAAe,CAAC,IAAI;wBACvB,CAAC,CAAC,EAAE,CAAC;oBAEQ,qBAAM,UAAU,CAAC,EAAE,eAC/B,OAAO,IACV,IAAI,aACF,IAAI,MAAA,IACD,IAAI,GAET,MAAM,EAAE,MAAM,IACd,CAAC,IAAI,EAAa,EAAA;;oBAPd,QAAQ,GAAG,SAOG;oBAEpB,sBAAO,OAAO,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC;yBACpD,CAAC,EAAC;;;oBAEH,IAAI,OAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,4BAAQ,EAAE;wBACtC,sBAAO,OAAO,CAAC,MAAM,CAAC,IAAI,iCAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAC;qBACtE;oBAED,sBAAO,OAAO,CAAC,MAAM,CAAC,OAAK,CAAC,EAAC;;;;;CAEhC,EA9BmB,CA8BnB,EAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/createItem/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iBAkCA;;AAhCA,0DAAqC;AAGrC,mBAAe,UACb,MAAuB,IACL,OAAA,UAAO,EAAY;QAAV,cAAI,EAAE,UAAE;;;;;;;oBAEd,qBAAM,MAAM,CAAC,EAAE,EAAE,EAAA;;oBAA9B,UAAU,GAAG,SAAiB;oBAE9B,OAAO,GAAG,MAAM,CAAC,iBAAiB,cAAM,IAAI,IAAE,EAAE,IAAA,IAAG,CAAC;oBAEpD,IAAI,GACR,CAAC,eAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAM,CAAE,OAAe,CAAC,IAAI,CAAC;wBAChD,CAAC,CAAE,OAAe,CAAC,IAAI;wBACvB,CAAC,CAAC,EAAE,CAAC;oBAEQ,qBAAM,UAAU,CAAC,EAAE,eAC/B,OAAO,IACV,IAAI,eACC,IAAI,EACJ,IAAI,GAET,MAAM,EAAE,MAAM,IACd,CAAC,IAAI,EAAa,EAAA;;oBAPd,QAAQ,GAAG,SAOG;oBAEpB,sBAAO,OAAO,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC;yBACpD,CAAC,EAAC;;;oBAEH,sBAAO,OAAO,CAAC,MAAM,CAAC,OAAK,CAAC,EAAC;;;;;CAEhC,EA1BmB,CA0BnB,EAAC"} \ No newline at end of file diff --git a/dist/functions/createItem/index.spec.d.ts b/dist/functions/createItem/index.spec.d.ts index e69de29..cb0ff5c 100644 --- a/dist/functions/createItem/index.spec.d.ts +++ b/dist/functions/createItem/index.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/functions/createItem/index.spec.js b/dist/functions/createItem/index.spec.js index f090f4d..c843858 100644 --- a/dist/functions/createItem/index.spec.js +++ b/dist/functions/createItem/index.spec.js @@ -1,8 +1,136 @@ "use strict"; -describe('@createItem', function () { - it('tests', function () { - // TODO: implements tests - expect(true).toBe(true); +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +var _this = this; +Object.defineProperty(exports, "__esModule", { value: true }); +// tslint:disable:no-any +var foundation_1 = require("@js-items/foundation"); +var testItem_1 = __importDefault(require("@js-items/foundation/dist/functions/utils/testItem")); +var testConfig_1 = require("../../utils/testConfig"); +var index_1 = __importDefault(require("./index")); +beforeEach(function () { return jest.clearAllMocks(); }); +describe('@createItem', function () { + it('creates item', function () { return __awaiter(_this, void 0, void 0, function () { + var kyMock, createItemOptionsMock, item; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + kyMock = jest.fn(function () { return ({ + json: function () { return Promise.resolve({ item: testItem_1.default }); }, + }); }); + createItemOptionsMock = jest.fn(function () { return ({}); }); + return [4 /*yield*/, index_1.default(__assign({}, testConfig_1.config, { createItemOptions: createItemOptionsMock, ky: function () { return Promise.resolve(kyMock); } }))({ + id: testItem_1.default.id, + item: testItem_1.default, + })]; + case 1: + item = (_a.sent()).item; + expect(createItemOptionsMock).toBeCalledWith(testItem_1.default); + expect(testConfig_1.config.convertDocumentIntoItem).toBeCalledWith(testItem_1.default); + expect(item).toEqual(testItem_1.default); + expect(kyMock).toBeCalledWith('', { + json: __assign({}, testItem_1.default), + method: 'post', + }); + return [2 /*return*/]; + } + }); + }); }); + it('creates item with custom json object', function () { return __awaiter(_this, void 0, void 0, function () { + var kyMock, createItemOptionsMock; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + kyMock = jest.fn(function () { return ({ + json: function () { return Promise.resolve({ item: testItem_1.default, otherProp: 'test' }); }, + }); }); + createItemOptionsMock = jest.fn(function () { return ({ + json: { otherProp: 'test' }, + }); }); + return [4 /*yield*/, index_1.default(__assign({}, testConfig_1.config, { createItemOptions: createItemOptionsMock, ky: function () { return Promise.resolve(kyMock); } }))({ + item: testItem_1.default, + })]; + case 1: + _a.sent(); + expect(kyMock).toBeCalledWith('', { + json: __assign({}, testItem_1.default, { otherProp: 'test' }), + method: 'post', + }); + return [2 /*return*/]; + } + }); + }); }); + it('does not create item', function () { return __awaiter(_this, void 0, void 0, function () { + var error, facadeConfig, e_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + error = new foundation_1.ConflictingItemError('TestItem'); + facadeConfig = __assign({}, testConfig_1.config, { createItemOptions: jest.fn(function () { return ({ json: { item: testItem_1.default } }); }), ky: jest.fn(function () { return Promise.reject(error); }) }); + _a.label = 1; + case 1: + _a.trys.push([1, 3, , 4]); + return [4 /*yield*/, index_1.default(facadeConfig)({ + id: testItem_1.default.id, + item: testItem_1.default, + })]; + case 2: + _a.sent(); + return [3 /*break*/, 4]; + case 3: + e_1 = _a.sent(); + expect(e_1).toEqual(error); + return [3 /*break*/, 4]; + case 4: return [2 /*return*/]; + } + }); + }); }); }); //# sourceMappingURL=index.spec.js.map \ No newline at end of file diff --git a/dist/functions/createItem/index.spec.js.map b/dist/functions/createItem/index.spec.js.map index 2ffcd96..874ccab 100644 --- a/dist/functions/createItem/index.spec.js.map +++ b/dist/functions/createItem/index.spec.js.map @@ -1 +1 @@ -{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../src/functions/createItem/index.spec.ts"],"names":[],"mappings":";AAAA,QAAQ,CAAC,aAAa,EAAE;IACtB,EAAE,CAAC,OAAO,EAAE;QACV,yBAAyB;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../src/functions/createItem/index.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/functions/deleteItem/index.d.ts b/dist/functions/deleteItem/index.d.ts index e69de29..dde9816 100644 --- a/dist/functions/deleteItem/index.d.ts +++ b/dist/functions/deleteItem/index.d.ts @@ -0,0 +1,4 @@ +import { DeleteItem, Item } from '@js-items/foundation'; +import FacadeConfig from '../../FacadeConfig'; +declare const _default: (config: FacadeConfig) => DeleteItem; +export default _default; diff --git a/dist/functions/deleteItem/index.js b/dist/functions/deleteItem/index.js index fa69a5a..ddfab6d 100644 --- a/dist/functions/deleteItem/index.js +++ b/dist/functions/deleteItem/index.js @@ -1,2 +1,83 @@ "use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +var _this = this; +Object.defineProperty(exports, "__esModule", { value: true }); +var isNil_1 = __importDefault(require("ramda/src/isNil")); +exports.default = (function (config) { return function (_a) { + var _b = _a.filter, filter = _b === void 0 ? {} : _b, id = _a.id; + return __awaiter(_this, void 0, void 0, function () { + var connection, options, createdFilter, params, searchParams, error_1; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + _c.trys.push([0, 3, , 4]); + return [4 /*yield*/, config.ky()]; + case 1: + connection = _c.sent(); + options = config.deleteItemOptions(); + createdFilter = config.createFilter(filter); + params = { filter: JSON.stringify(createdFilter) }; + searchParams = !isNil_1.default(options) && !isNil_1.default(options.searchParams) + ? options.searchParams + : {}; + return [4 /*yield*/, connection("/" + id, __assign({}, options, { method: 'delete', searchParams: __assign({}, searchParams, params) }))]; + case 2: + _c.sent(); + return [3 /*break*/, 4]; + case 3: + error_1 = _c.sent(); + return [2 /*return*/, Promise.reject(error_1)]; + case 4: return [2 /*return*/]; + } + }); + }); +}; }); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/functions/deleteItem/index.js.map b/dist/functions/deleteItem/index.js.map index 1130567..72f43ca 100644 --- a/dist/functions/deleteItem/index.js.map +++ b/dist/functions/deleteItem/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/deleteItem/index.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/deleteItem/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iBA8BA;;AA7BA,0DAAqC;AAGrC,mBAAe,UACb,MAAuB,IACL,OAAA,UAAO,EAAmB;QAAjB,cAAW,EAAX,gCAAW,EAAE,UAAE;;;;;;;oBAErB,qBAAM,MAAM,CAAC,EAAE,EAAE,EAAA;;oBAA9B,UAAU,GAAG,SAAiB;oBAE9B,OAAO,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC;oBAErC,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAE5C,MAAM,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;oBAEnD,YAAY,GAChB,CAAC,eAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAM,CAAE,OAAe,CAAC,YAAY,CAAC;wBACxD,CAAC,CAAE,OAAe,CAAC,YAAY;wBAC/B,CAAC,CAAC,EAAE,CAAC;oBAET,qBAAM,UAAU,CAAC,MAAI,EAAI,eACpB,OAAO,IACV,MAAM,EAAE,QAAQ,EAChB,YAAY,eAAO,YAAY,EAAK,MAAM,KAC1C,EAAA;;oBAJF,SAIE,CAAC;;;;oBAEH,sBAAO,OAAO,CAAC,MAAM,CAAC,OAAK,CAAC,EAAC;;;;;CAEhC,EAvBmB,CAuBnB,EAAC"} \ No newline at end of file diff --git a/dist/functions/deleteItem/index.spec.d.ts b/dist/functions/deleteItem/index.spec.d.ts index e69de29..cb0ff5c 100644 --- a/dist/functions/deleteItem/index.spec.d.ts +++ b/dist/functions/deleteItem/index.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/functions/deleteItem/index.spec.js b/dist/functions/deleteItem/index.spec.js index 05433fa..e3d3876 100644 --- a/dist/functions/deleteItem/index.spec.js +++ b/dist/functions/deleteItem/index.spec.js @@ -1,8 +1,130 @@ "use strict"; -describe('@deleteItem', function () { - it('tests', function () { - // TODO: implements tests - expect(true).toBe(true); +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +var _this = this; +Object.defineProperty(exports, "__esModule", { value: true }); +// tslint:disable:no-any +var foundation_1 = require("@js-items/foundation"); +var testItem_1 = __importDefault(require("@js-items/foundation/dist/functions/utils/testItem")); +var testConfig_1 = require("../../utils/testConfig"); +var index_1 = __importDefault(require("./index")); +beforeEach(function () { return jest.clearAllMocks(); }); +describe('@deleteItem', function () { + it('deletes item with no filter', function () { return __awaiter(_this, void 0, void 0, function () { + var kyMock; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + kyMock = jest.fn(); + return [4 /*yield*/, index_1.default(__assign({}, testConfig_1.config, { ky: function () { return Promise.resolve(kyMock); } }))({ + id: testItem_1.default.id, + })]; + case 1: + _a.sent(); + expect(testConfig_1.config.createFilter).toBeCalledWith({}); + expect(kyMock).toBeCalledWith("/" + testItem_1.default.id, { + method: 'delete', + searchParams: { filter: JSON.stringify({}) }, + }); + return [2 /*return*/]; + } + }); + }); }); + it('deletes item with filter and custom search params', function () { return __awaiter(_this, void 0, void 0, function () { + var kyMock, filter, createFilterMock; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + kyMock = jest.fn(); + filter = { + id: { $eq: testItem_1.default.id }, + }; + createFilterMock = jest.fn(function () { return filter; }); + return [4 /*yield*/, index_1.default(__assign({}, testConfig_1.config, { createFilter: createFilterMock, deleteItemOptions: function () { return ({ searchParams: { pretty: 'true' } }); }, ky: function () { return Promise.resolve(kyMock); } }))({ + filter: filter, + id: testItem_1.default.id, + })]; + case 1: + _a.sent(); + expect(createFilterMock).toBeCalledWith(filter); + expect(kyMock).toBeCalledWith("/" + testItem_1.default.id, { + method: 'delete', + searchParams: { pretty: 'true', filter: JSON.stringify(filter) }, + }); + return [2 /*return*/]; + } + }); + }); }); + it('does not delete item', function () { return __awaiter(_this, void 0, void 0, function () { + var error, facadeConfig, e_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + error = new foundation_1.ItemNotFoundError('TestItem', testItem_1.default.id); + facadeConfig = __assign({}, testConfig_1.config, { ky: jest.fn(function () { return Promise.reject(error); }) }); + _a.label = 1; + case 1: + _a.trys.push([1, 3, , 4]); + return [4 /*yield*/, index_1.default(facadeConfig)({ + id: testItem_1.default.id, + })]; + case 2: + _a.sent(); + return [3 /*break*/, 4]; + case 3: + e_1 = _a.sent(); + expect(e_1).toEqual(error); + return [3 /*break*/, 4]; + case 4: return [2 /*return*/]; + } + }); + }); }); }); //# sourceMappingURL=index.spec.js.map \ No newline at end of file diff --git a/dist/functions/deleteItem/index.spec.js.map b/dist/functions/deleteItem/index.spec.js.map index da80546..4484da5 100644 --- a/dist/functions/deleteItem/index.spec.js.map +++ b/dist/functions/deleteItem/index.spec.js.map @@ -1 +1 @@ -{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../src/functions/deleteItem/index.spec.ts"],"names":[],"mappings":";AAAA,QAAQ,CAAC,aAAa,EAAE;IACtB,EAAE,CAAC,OAAO,EAAE;QACV,yBAAyB;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../src/functions/deleteItem/index.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iBAoEA;;AArEA,wBAAwB;AACxB,mDAAyD;AACzD,gGAA0E;AAC1E,qDAAgD;AAChD,kDAAiC;AAEjC,UAAU,CAAC,cAAM,OAAA,IAAI,CAAC,aAAa,EAAE,EAApB,CAAoB,CAAC,CAAC;AAEvC,QAAQ,CAAC,aAAa,EAAE;IACtB,EAAE,CAAC,6BAA6B,EAAE;;;;;oBAC1B,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;oBAEzB,qBAAM,eAAU,cACX,mBAAM,IACT,EAAE,EAAE,cAAM,OAAA,OAAO,CAAC,OAAO,CAAC,MAAM,CAAQ,EAA9B,CAA8B,IACxC,CAAC;4BACD,EAAE,EAAE,kBAAQ,CAAC,EAAE;yBAChB,CAAC,EAAA;;oBALF,SAKE,CAAC;oBAEH,MAAM,CAAC,mBAAM,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;oBAE/C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAI,kBAAQ,CAAC,EAAI,EAAE;wBAC/C,MAAM,EAAE,QAAQ;wBAChB,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;qBAC7C,CAAC,CAAC;;;;SACJ,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE;;;;;oBAChD,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;oBACnB,MAAM,GAAG;wBACb,EAAE,EAAE,EAAE,GAAG,EAAE,kBAAQ,CAAC,EAAE,EAAE;qBACzB,CAAC;oBACI,gBAAgB,GAAG,IAAI,CAAC,EAAE,CAAC,cAAM,OAAA,MAAM,EAAN,CAAM,CAAC,CAAC;oBAE/C,qBAAM,eAAU,cACX,mBAAM,IACT,YAAY,EAAE,gBAAgB,EAC9B,iBAAiB,EAAE,cAAM,OAAA,CAAC,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAtC,CAAsC,EAC/D,EAAE,EAAE,cAAM,OAAA,OAAO,CAAC,OAAO,CAAC,MAAM,CAAQ,EAA9B,CAA8B,IACxC,CAAC;4BACD,MAAM,QAAA;4BACN,EAAE,EAAE,kBAAQ,CAAC,EAAE;yBAChB,CAAC,EAAA;;oBARF,SAQE,CAAC;oBAEH,MAAM,CAAC,gBAAgB,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAI,kBAAQ,CAAC,EAAI,EAAE;wBAC/C,MAAM,EAAE,QAAQ;wBAChB,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;qBACjE,CAAC,CAAC;;;;SACJ,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE;;;;;oBACnB,KAAK,GAAG,IAAI,8BAAiB,CAAC,UAAU,EAAE,kBAAQ,CAAC,EAAE,CAAC,CAAC;oBAEvD,YAAY,gBACb,mBAAM,IACT,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,cAAM,OAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAArB,CAAqB,CAAC,GACzC,CAAC;;;;oBAGA,qBAAM,eAAU,CAAC,YAAY,CAAC,CAAC;4BAC7B,EAAE,EAAE,kBAAQ,CAAC,EAAE;yBAChB,CAAC,EAAA;;oBAFF,SAEE,CAAC;;;;oBAEH,MAAM,CAAC,GAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;;;;SAE5B,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/functions/deleteItems/index.d.ts b/dist/functions/deleteItems/index.d.ts index e69de29..157c704 100644 --- a/dist/functions/deleteItems/index.d.ts +++ b/dist/functions/deleteItems/index.d.ts @@ -0,0 +1,4 @@ +import { DeleteItems, Item } from '@js-items/foundation'; +import FacadeConfig from '../../FacadeConfig'; +declare const _default: (config: FacadeConfig) => DeleteItems; +export default _default; diff --git a/dist/functions/deleteItems/index.js b/dist/functions/deleteItems/index.js index fa69a5a..ff4847b 100644 --- a/dist/functions/deleteItems/index.js +++ b/dist/functions/deleteItems/index.js @@ -1,2 +1,83 @@ "use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +var _this = this; +Object.defineProperty(exports, "__esModule", { value: true }); +var isNil_1 = __importDefault(require("ramda/src/isNil")); +exports.default = (function (config) { return function (_a) { + var _b = _a.filter, filter = _b === void 0 ? {} : _b; + return __awaiter(_this, void 0, void 0, function () { + var connection, options, createdFilter, params, searchParams, error_1; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + _c.trys.push([0, 3, , 4]); + return [4 /*yield*/, config.ky()]; + case 1: + connection = _c.sent(); + options = config.deleteItemsOptions(); + createdFilter = config.createFilter(filter); + params = { filter: JSON.stringify(createdFilter) }; + searchParams = !isNil_1.default(options) && !isNil_1.default(options.searchParams) + ? options.searchParams + : {}; + return [4 /*yield*/, connection('', __assign({}, options, { method: 'delete', searchParams: __assign({}, searchParams, params) }))]; + case 2: + _c.sent(); + return [3 /*break*/, 4]; + case 3: + error_1 = _c.sent(); + return [2 /*return*/, Promise.reject(error_1)]; + case 4: return [2 /*return*/]; + } + }); + }); +}; }); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/functions/deleteItems/index.js.map b/dist/functions/deleteItems/index.js.map index d6f91b8..e996cc8 100644 --- a/dist/functions/deleteItems/index.js.map +++ b/dist/functions/deleteItems/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/deleteItems/index.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/deleteItems/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iBA8BA;;AA7BA,0DAAqC;AAGrC,mBAAe,UACb,MAAuB,IACJ,OAAA,UAAO,EAAe;QAAb,cAAW,EAAX,gCAAW;;;;;;;oBAElB,qBAAM,MAAM,CAAC,EAAE,EAAE,EAAA;;oBAA9B,UAAU,GAAG,SAAiB;oBAE9B,OAAO,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;oBAEtC,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAE5C,MAAM,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;oBAEnD,YAAY,GAChB,CAAC,eAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAM,CAAE,OAAe,CAAC,YAAY,CAAC;wBACxD,CAAC,CAAE,OAAe,CAAC,YAAY;wBAC/B,CAAC,CAAC,EAAE,CAAC;oBAET,qBAAM,UAAU,CAAC,EAAE,eACd,OAAO,IACV,MAAM,EAAE,QAAQ,EAChB,YAAY,eAAO,YAAY,EAAK,MAAM,KAC1C,EAAA;;oBAJF,SAIE,CAAC;;;;oBAEH,sBAAO,OAAO,CAAC,MAAM,CAAC,OAAK,CAAC,EAAC;;;;;CAEhC,EAvBoB,CAuBpB,EAAC"} \ No newline at end of file diff --git a/dist/functions/deleteItems/index.spec.d.ts b/dist/functions/deleteItems/index.spec.d.ts index e69de29..cb0ff5c 100644 --- a/dist/functions/deleteItems/index.spec.d.ts +++ b/dist/functions/deleteItems/index.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/functions/deleteItems/index.spec.js b/dist/functions/deleteItems/index.spec.js index 1232b1b..24b281f 100644 --- a/dist/functions/deleteItems/index.spec.js +++ b/dist/functions/deleteItems/index.spec.js @@ -1,8 +1,125 @@ "use strict"; -describe('@deleteItems', function () { - it('tests', function () { - // TODO: implements tests - expect(true).toBe(true); +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +var _this = this; +Object.defineProperty(exports, "__esModule", { value: true }); +// tslint:disable:no-any +var foundation_1 = require("@js-items/foundation"); +var testItem_1 = __importDefault(require("@js-items/foundation/dist/functions/utils/testItem")); +var testConfig_1 = require("../../utils/testConfig"); +var index_1 = __importDefault(require("./index")); +beforeEach(function () { return jest.clearAllMocks(); }); +describe('@deleteItems', function () { + it('deletes items with no filter', function () { return __awaiter(_this, void 0, void 0, function () { + var kyMock; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + kyMock = jest.fn(); + return [4 /*yield*/, index_1.default(__assign({}, testConfig_1.config, { ky: function () { return Promise.resolve(kyMock); } }))({})]; + case 1: + _a.sent(); + expect(testConfig_1.config.createFilter).toBeCalledWith({}); + expect(kyMock).toBeCalledWith('', { + method: 'delete', + searchParams: { filter: JSON.stringify({}) }, + }); + return [2 /*return*/]; + } + }); + }); }); + it('deletes items with filter and custom search params', function () { return __awaiter(_this, void 0, void 0, function () { + var kyMock, filter, createFilterMock; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + kyMock = jest.fn(); + filter = { + id: { $eq: testItem_1.default.id }, + }; + createFilterMock = jest.fn(function () { return filter; }); + return [4 /*yield*/, index_1.default(__assign({}, testConfig_1.config, { createFilter: createFilterMock, deleteItemsOptions: function () { return ({ searchParams: { pretty: 'true' } }); }, ky: function () { return Promise.resolve(kyMock); } }))({ + filter: filter, + })]; + case 1: + _a.sent(); + expect(createFilterMock).toBeCalledWith(filter); + expect(kyMock).toBeCalledWith('', { + method: 'delete', + searchParams: { pretty: 'true', filter: JSON.stringify(filter) }, + }); + return [2 /*return*/]; + } + }); + }); }); + it('does not delete items', function () { return __awaiter(_this, void 0, void 0, function () { + var error, facadeConfig, e_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + error = new foundation_1.ItemNotFoundError('TestItem', testItem_1.default.id); + facadeConfig = __assign({}, testConfig_1.config, { ky: jest.fn(function () { return Promise.reject(error); }) }); + _a.label = 1; + case 1: + _a.trys.push([1, 3, , 4]); + return [4 /*yield*/, index_1.default(facadeConfig)({})]; + case 2: + _a.sent(); + return [3 /*break*/, 4]; + case 3: + e_1 = _a.sent(); + expect(e_1).toEqual(error); + return [3 /*break*/, 4]; + case 4: return [2 /*return*/]; + } + }); + }); }); }); //# sourceMappingURL=index.spec.js.map \ No newline at end of file diff --git a/dist/functions/deleteItems/index.spec.js.map b/dist/functions/deleteItems/index.spec.js.map index 129bdd3..d11a835 100644 --- a/dist/functions/deleteItems/index.spec.js.map +++ b/dist/functions/deleteItems/index.spec.js.map @@ -1 +1 @@ -{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../src/functions/deleteItems/index.spec.ts"],"names":[],"mappings":";AAAA,QAAQ,CAAC,cAAc,EAAE;IACvB,EAAE,CAAC,OAAO,EAAE;QACV,yBAAyB;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../src/functions/deleteItems/index.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iBA+DA;;AAhEA,wBAAwB;AACxB,mDAAyD;AACzD,gGAA0E;AAC1E,qDAAgD;AAChD,kDAAkC;AAElC,UAAU,CAAC,cAAM,OAAA,IAAI,CAAC,aAAa,EAAE,EAApB,CAAoB,CAAC,CAAC;AAEvC,QAAQ,CAAC,cAAc,EAAE;IACvB,EAAE,CAAC,8BAA8B,EAAE;;;;;oBAC3B,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;oBAEzB,qBAAM,eAAW,cACZ,mBAAM,IACT,EAAE,EAAE,cAAM,OAAA,OAAO,CAAC,OAAO,CAAC,MAAM,CAAQ,EAA9B,CAA8B,IACxC,CAAC,EAAE,CAAC,EAAA;;oBAHN,SAGM,CAAC;oBAEP,MAAM,CAAC,mBAAM,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;oBAE/C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE;wBAChC,MAAM,EAAE,QAAQ;wBAChB,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;qBAC7C,CAAC,CAAC;;;;SACJ,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE;;;;;oBACjD,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;oBACnB,MAAM,GAAG;wBACb,EAAE,EAAE,EAAE,GAAG,EAAE,kBAAQ,CAAC,EAAE,EAAE;qBACzB,CAAC;oBACI,gBAAgB,GAAG,IAAI,CAAC,EAAE,CAAC,cAAM,OAAA,MAAM,EAAN,CAAM,CAAC,CAAC;oBAE/C,qBAAM,eAAW,cACZ,mBAAM,IACT,YAAY,EAAE,gBAAgB,EAC9B,kBAAkB,EAAE,cAAM,OAAA,CAAC,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAtC,CAAsC,EAChE,EAAE,EAAE,cAAM,OAAA,OAAO,CAAC,OAAO,CAAC,MAAM,CAAQ,EAA9B,CAA8B,IACxC,CAAC;4BACD,MAAM,QAAA;yBACP,CAAC,EAAA;;oBAPF,SAOE,CAAC;oBAEH,MAAM,CAAC,gBAAgB,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBAEhD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE;wBAChC,MAAM,EAAE,QAAQ;wBAChB,YAAY,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;qBACjE,CAAC,CAAC;;;;SACJ,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE;;;;;oBACpB,KAAK,GAAG,IAAI,8BAAiB,CAAC,UAAU,EAAE,kBAAQ,CAAC,EAAE,CAAC,CAAC;oBAEvD,YAAY,gBACb,mBAAM,IACT,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,cAAM,OAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAArB,CAAqB,CAAC,GACzC,CAAC;;;;oBAGA,qBAAM,eAAW,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAA;;oBAAnC,SAAmC,CAAC;;;;oBAEpC,MAAM,CAAC,GAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;;;;SAE5B,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file diff --git a/dist/functions/getItem/index.d.ts b/dist/functions/getItem/index.d.ts index e69de29..72d5e7a 100644 --- a/dist/functions/getItem/index.d.ts +++ b/dist/functions/getItem/index.d.ts @@ -0,0 +1,4 @@ +import { GetItem, Item } from '@js-items/foundation'; +import FacadeConfig from '../../FacadeConfig'; +declare const _default: (config: FacadeConfig) => GetItem; +export default _default; diff --git a/dist/functions/getItem/index.js b/dist/functions/getItem/index.js index fa69a5a..37aad30 100644 --- a/dist/functions/getItem/index.js +++ b/dist/functions/getItem/index.js @@ -1,2 +1,85 @@ "use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +var _this = this; +Object.defineProperty(exports, "__esModule", { value: true }); +var isNil_1 = __importDefault(require("ramda/src/isNil")); +exports.default = (function (config) { return function (_a) { + var id = _a.id, _b = _a.filter, filter = _b === void 0 ? {} : _b; + return __awaiter(_this, void 0, void 0, function () { + var connection, createFilter, options, params, searchParams, response, error_1; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + _c.trys.push([0, 3, , 4]); + return [4 /*yield*/, config.ky()]; + case 1: + connection = _c.sent(); + createFilter = config.createFilter(filter); + options = config.getItemOptions(); + params = { filter: JSON.stringify(createFilter) }; + searchParams = !isNil_1.default(options) && !isNil_1.default(options.searchParams) + ? options.searchParams + : {}; + return [4 /*yield*/, connection("/" + id, __assign({}, options, { method: 'get', searchParams: __assign({}, searchParams, params) })).json()]; + case 2: + response = _c.sent(); + return [2 /*return*/, Promise.resolve({ + item: config.convertDocumentIntoItem(response.item), + })]; + case 3: + error_1 = _c.sent(); + return [2 /*return*/, Promise.reject(error_1)]; + case 4: return [2 /*return*/]; + } + }); + }); +}; }); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/functions/getItem/index.js.map b/dist/functions/getItem/index.js.map index a399af4..79cd64c 100644 --- a/dist/functions/getItem/index.js.map +++ b/dist/functions/getItem/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/getItem/index.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/getItem/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iBAoCA;;AAlCA,0DAAqC;AAGrC,mBAAe,UAAiB,MAAuB,IAAiB,OAAA,UAAO,EAG9E;QAFC,UAAE,EACF,cAAW,EAAX,gCAAW;;;;;;;oBAGU,qBAAM,MAAM,CAAC,EAAE,EAAE,EAAA;;oBAA9B,UAAU,GAAG,SAAiB;oBAE9B,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAE3C,OAAO,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;oBAElC,MAAM,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;oBAElD,YAAY,GAChB,CAAC,eAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAM,CAAE,OAAe,CAAC,YAAY,CAAC;wBACxD,CAAC,CAAE,OAAe,CAAC,YAAY;wBAC/B,CAAC,CAAC,EAAE,CAAC;oBAEQ,qBAAM,UAAU,CAAC,MAAI,EAAI,eACrC,OAAO,IACV,MAAM,EAAE,KAAK,EACb,YAAY,eAAO,YAAY,EAAK,MAAM,KAC1C,CAAC,IAAI,EAAa,EAAA;;oBAJd,QAAQ,GAAG,SAIG;oBAEpB,sBAAO,OAAO,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC;yBACpD,CAAC,EAAC;;;oBAEH,sBAAO,OAAO,CAAC,MAAM,CAAC,OAAK,CAAC,EAAC;;;;;CAEhC,EA9BuE,CA8BvE,EAAC"} \ No newline at end of file diff --git a/dist/functions/getItem/index.spec.d.ts b/dist/functions/getItem/index.spec.d.ts index e69de29..cb0ff5c 100644 --- a/dist/functions/getItem/index.spec.d.ts +++ b/dist/functions/getItem/index.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/functions/getItem/index.spec.js b/dist/functions/getItem/index.spec.js index 4f68474..a8428c8 100644 --- a/dist/functions/getItem/index.spec.js +++ b/dist/functions/getItem/index.spec.js @@ -1,8 +1,142 @@ "use strict"; -describe('@getItem', function () { - it('tests', function () { - // TODO: implements tests - expect(true).toBe(true); +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +var _this = this; +Object.defineProperty(exports, "__esModule", { value: true }); +// tslint:disable:no-any +var foundation_1 = require("@js-items/foundation"); +var testItem_1 = __importDefault(require("@js-items/foundation/dist/functions/utils/testItem")); +var testConfig_1 = require("../../utils/testConfig"); +var index_1 = __importDefault(require("./index")); +beforeEach(function () { return jest.clearAllMocks(); }); +describe('@getItem', function () { + it('gets item', function () { return __awaiter(_this, void 0, void 0, function () { + var kyMock, getItemOptionsMock, createFilterMock, item; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + kyMock = jest.fn(function () { return ({ + json: function () { return Promise.resolve({ item: testItem_1.default }); }, + }); }); + getItemOptionsMock = jest.fn(function () { return ({}); }); + createFilterMock = jest.fn(function () { return ({}); }); + return [4 /*yield*/, index_1.default(__assign({}, testConfig_1.config, { createFilter: createFilterMock, getItemOptions: getItemOptionsMock, ky: function () { return Promise.resolve(kyMock); } }))({ + id: testItem_1.default.id, + })]; + case 1: + item = (_a.sent()).item; + expect(createFilterMock).toBeCalledWith({}); + expect(getItemOptionsMock).toBeCalledTimes(1); + expect(testConfig_1.config.convertDocumentIntoItem).toBeCalledWith(testItem_1.default); + expect(item).toEqual(testItem_1.default); + expect(kyMock).toBeCalledWith("/" + testItem_1.default.id, { + method: 'get', + searchParams: { filter: JSON.stringify({}) }, + }); + return [2 /*return*/]; + } + }); + }); }); + it('gets item with custom filter object', function () { return __awaiter(_this, void 0, void 0, function () { + var kyMock, filter, getItemOptionsMock, createFilterMock; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + kyMock = jest.fn(function () { return ({ + json: function () { return Promise.resolve({ item: testItem_1.default, otherProp: 'test' }); }, + }); }); + filter = { + id: { $eq: testItem_1.default.id }, + }; + getItemOptionsMock = jest.fn(function () { return ({ + searchParams: { pretty: 'true' }, + }); }); + createFilterMock = jest.fn(function () { return filter; }); + return [4 /*yield*/, index_1.default(__assign({}, testConfig_1.config, { createFilter: createFilterMock, getItemOptions: getItemOptionsMock, ky: function () { return Promise.resolve(kyMock); } }))({ + filter: filter, + id: testItem_1.default.id, + })]; + case 1: + _a.sent(); + expect(createFilterMock).toBeCalledWith(filter); + expect(kyMock).toBeCalledWith("/" + testItem_1.default.id, { + method: 'get', + searchParams: { pretty: 'true', filter: JSON.stringify(filter) }, + }); + return [2 /*return*/]; + } + }); + }); }); + it('does not get item', function () { return __awaiter(_this, void 0, void 0, function () { + var error, facadeConfig, e_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + error = new foundation_1.ItemNotFoundError('TestItem', testItem_1.default.id); + facadeConfig = __assign({}, testConfig_1.config, { getItemOptions: jest.fn(function () { return ({ json: { item: testItem_1.default } }); }), ky: jest.fn(function () { return Promise.reject(error); }) }); + _a.label = 1; + case 1: + _a.trys.push([1, 3, , 4]); + return [4 /*yield*/, index_1.default(facadeConfig)({ + id: testItem_1.default.id, + })]; + case 2: + _a.sent(); + return [3 /*break*/, 4]; + case 3: + e_1 = _a.sent(); + expect(e_1).toEqual(error); + return [3 /*break*/, 4]; + case 4: return [2 /*return*/]; + } + }); + }); }); }); //# sourceMappingURL=index.spec.js.map \ No newline at end of file diff --git a/dist/functions/getItem/index.spec.js.map b/dist/functions/getItem/index.spec.js.map index 9f35413..95c8d2b 100644 --- a/dist/functions/getItem/index.spec.js.map +++ b/dist/functions/getItem/index.spec.js.map @@ -1 +1 @@ -{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../src/functions/getItem/index.spec.ts"],"names":[],"mappings":";AAAA,QAAQ,CAAC,UAAU,EAAE;IACnB,EAAE,CAAC,OAAO,EAAE;QACV,yBAAyB;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../src/functions/getItem/index.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/functions/getItems/index.d.ts b/dist/functions/getItems/index.d.ts index e69de29..6ef998d 100644 --- a/dist/functions/getItems/index.d.ts +++ b/dist/functions/getItems/index.d.ts @@ -0,0 +1,4 @@ +import { GetItems, Item } from '@js-items/foundation'; +import FacadeConfig from '../../FacadeConfig'; +declare const _default: (config: FacadeConfig) => GetItems; +export default _default; diff --git a/dist/functions/getItems/index.js b/dist/functions/getItems/index.js index fa69a5a..ea08c43 100644 --- a/dist/functions/getItems/index.js +++ b/dist/functions/getItems/index.js @@ -1,2 +1,104 @@ "use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +var _this = this; +Object.defineProperty(exports, "__esModule", { value: true }); +var SortOrder_1 = require("@js-items/foundation/dist/interfaces/SortOrder"); +var isNil_1 = __importDefault(require("ramda/src/isNil")); +exports.default = (function (config) { + var defaultPagination = { + after: undefined, + before: undefined, + limit: config.defaultPaginationLimit, + }; + // tslint:disable-next-line:no-object-literal-type-assertion + var defaultSort = { id: SortOrder_1.asc }; + return function (_a) { + var _b = _a.filter, filter = _b === void 0 ? {} : _b, _c = _a.sort, sort = _c === void 0 ? defaultSort : _c, _d = _a.pagination, pagination = _d === void 0 ? defaultPagination : _d; + return __awaiter(_this, void 0, void 0, function () { + var connection, options, createdFilter, createdSort, params, searchParams, _e, fetchedItems, cursor, items, error_1; + return __generator(this, function (_f) { + switch (_f.label) { + case 0: + _f.trys.push([0, 3, , 4]); + return [4 /*yield*/, config.ky()]; + case 1: + connection = _f.sent(); + options = config.getItemsOptions(); + createdFilter = config.createFilter(filter); + createdSort = config.createSort(sort); + params = { + after: pagination.after, + before: pagination.before, + filter: JSON.stringify(createdFilter), + limit: pagination.limit, + sort: JSON.stringify(createdSort), + }; + searchParams = !isNil_1.default(options) && !isNil_1.default(options.searchParams) + ? options.searchParams + : {}; + return [4 /*yield*/, connection('', __assign({}, options, { method: 'get', searchParams: __assign({}, params, searchParams) })).json()]; + case 2: + _e = _f.sent(), fetchedItems = _e.items, cursor = _e.cursor; + items = fetchedItems.map(config.convertDocumentIntoItem); + return [2 /*return*/, Promise.resolve({ + cursor: cursor, + items: items, + })]; + case 3: + error_1 = _f.sent(); + return [2 /*return*/, Promise.reject(error_1)]; + case 4: return [2 /*return*/]; + } + }); + }); + }; +}); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/functions/getItems/index.js.map b/dist/functions/getItems/index.js.map index 725288c..8e737fa 100644 --- a/dist/functions/getItems/index.js.map +++ b/dist/functions/getItems/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/getItems/index.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/getItems/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iBA4DA;;AA1DA,4EAAqE;AACrE,0DAAqC;AAGrC,mBAAe,UAAiB,MAAuB;IACrD,IAAM,iBAAiB,GAAe;QACpC,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,MAAM,CAAC,sBAAsB;KACrC,CAAC;IAEF,4DAA4D;IAC5D,IAAM,WAAW,GAAG,EAAE,EAAE,EAAE,eAAG,EAAa,CAAC;IAE3C,OAAO,UAAO,EAIb;YAHC,cAAW,EAAX,gCAAW,EACX,YAAkB,EAAlB,uCAAkB,EAClB,kBAA8B,EAA9B,mDAA8B;;;;;;;wBAGT,qBAAM,MAAM,CAAC,EAAE,EAAE,EAAA;;wBAA9B,UAAU,GAAG,SAAiB;wBAE9B,OAAO,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;wBAEnC,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;wBAE5C,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;wBAEtC,MAAM,GAAG;4BACb,KAAK,EAAE,UAAU,CAAC,KAAK;4BACvB,MAAM,EAAE,UAAU,CAAC,MAAM;4BACzB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;4BACrC,KAAK,EAAE,UAAU,CAAC,KAAK;4BACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;yBAClC,CAAC;wBAEI,YAAY,GAChB,CAAC,eAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAM,CAAE,OAAe,CAAC,YAAY,CAAC;4BACxD,CAAC,CAAE,OAAe,CAAC,YAAY;4BAC/B,CAAC,CAAC,EAAE,CAAC;wBAE+B,qBAAM,UAAU,CAAC,EAAE,eACtD,OAAO,IACV,MAAM,EAAE,KAAK,EACb,YAAY,eAAO,MAAM,EAAK,YAAY,KAC1C,CAAC,IAAI,EAAa,EAAA;;wBAJd,KAAkC,SAIpB,EAJL,YAAY,WAAA,EAAE,MAAM,YAAA;wBAM7B,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;wBAE/D,sBAAO,OAAO,CAAC,OAAO,CAAC;gCACrB,MAAM,QAAA;gCACN,KAAK,OAAA;6BACN,CAAC,EAAC;;;wBAEH,sBAAO,OAAO,CAAC,MAAM,CAAC,OAAK,CAAC,EAAC;;;;;KAEhC,CAAC;AACJ,CAAC,EAAC"} \ No newline at end of file diff --git a/dist/functions/getItems/index.spec.d.ts b/dist/functions/getItems/index.spec.d.ts index e69de29..cb0ff5c 100644 --- a/dist/functions/getItems/index.spec.d.ts +++ b/dist/functions/getItems/index.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/functions/getItems/index.spec.js b/dist/functions/getItems/index.spec.js index d6f5a6c..1ed187e 100644 --- a/dist/functions/getItems/index.spec.js +++ b/dist/functions/getItems/index.spec.js @@ -1,8 +1,153 @@ "use strict"; -describe('@getItems', function () { - it('tests', function () { - // TODO: implements tests - expect(true).toBe(true); +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +var _this = this; +Object.defineProperty(exports, "__esModule", { value: true }); +// tslint:disable:no-any +var foundation_1 = require("@js-items/foundation"); +var testItem_1 = __importDefault(require("@js-items/foundation/dist/functions/utils/testItem")); +var SortOrder_1 = require("@js-items/foundation/dist/interfaces/SortOrder"); +var testConfig_1 = require("../../utils/testConfig"); +var index_1 = __importDefault(require("./index")); +beforeEach(function () { return jest.clearAllMocks(); }); +var testItemCursor = foundation_1.createCursorFromItem(testItem_1.default, { id: SortOrder_1.asc }); +var kyMock = jest.fn(function () { return ({ + json: jest.fn(function () { return ({ + cursor: { + after: testItemCursor, + before: testItemCursor, + hasAfter: false, + hasBefore: false, + }, + items: [testItem_1.default], + }); }), +}); }); +var filter = { + id: { $eq: testItem_1.default.id }, +}; +var expectedSearchParams = { + after: undefined, + before: undefined, + filter: JSON.stringify(filter), + limit: 10, + sort: JSON.stringify({}), +}; +describe('@getItems', function () { + it('gets items with no filter', function () { return __awaiter(_this, void 0, void 0, function () { + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, index_1.default(__assign({}, testConfig_1.config, { ky: function () { return Promise.resolve(kyMock); } }))({})]; + case 1: + _a.sent(); + expect(testConfig_1.config.getItemsOptions).toBeCalledTimes(1); + expect(testConfig_1.config.createFilter).toBeCalledWith({}); + expect(testConfig_1.config.createSort).toBeCalledWith({ id: 'asc' }); + expect(kyMock).toBeCalledWith('', { + method: 'get', + searchParams: __assign({}, expectedSearchParams, { filter: JSON.stringify({}) }), + }); + return [2 /*return*/]; + } + }); + }); }); + it('gets items with filter and custom search params', function () { return __awaiter(_this, void 0, void 0, function () { + var createFilterMock, _a, cursor, items; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + createFilterMock = jest.fn(function () { return filter; }); + return [4 /*yield*/, index_1.default(__assign({}, testConfig_1.config, { createFilter: createFilterMock, getItemsOptions: function () { return ({ searchParams: { pretty: 'true' } }); }, ky: function () { return Promise.resolve(kyMock); } }))({ + filter: filter, + sort: { booleanProperty: 'desc' }, + })]; + case 1: + _a = _b.sent(), cursor = _a.cursor, items = _a.items; + expect(createFilterMock).toBeCalledWith(filter); + expect(testConfig_1.config.createSort).toBeCalledWith({ booleanProperty: 'desc' }); + expect(kyMock).toBeCalledWith('', { + method: 'get', + searchParams: __assign({}, expectedSearchParams, { pretty: 'true' }), + }); + expect(items).toEqual([testItem_1.default]); + expect(cursor).toEqual({ + after: testItemCursor, + before: testItemCursor, + hasAfter: false, + hasBefore: false, + }); + return [2 /*return*/]; + } + }); + }); }); + it('does not get items', function () { return __awaiter(_this, void 0, void 0, function () { + var error, facadeConfig, e_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + error = new foundation_1.ItemNotFoundError('TestItem'); + facadeConfig = __assign({}, testConfig_1.config, { ky: jest.fn(function () { return Promise.reject(error); }) }); + _a.label = 1; + case 1: + _a.trys.push([1, 3, , 4]); + return [4 /*yield*/, index_1.default(facadeConfig)({})]; + case 2: + _a.sent(); + return [3 /*break*/, 4]; + case 3: + e_1 = _a.sent(); + expect(e_1).toEqual(error); + return [3 /*break*/, 4]; + case 4: return [2 /*return*/]; + } + }); + }); }); + // tslint:disable-next-line:max-file-line-count }); //# sourceMappingURL=index.spec.js.map \ No newline at end of file diff --git a/dist/functions/getItems/index.spec.js.map b/dist/functions/getItems/index.spec.js.map index 7898088..8ceb531 100644 --- a/dist/functions/getItems/index.spec.js.map +++ b/dist/functions/getItems/index.spec.js.map @@ -1 +1 @@ -{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../src/functions/getItems/index.spec.ts"],"names":[],"mappings":";AAAA,QAAQ,CAAC,WAAW,EAAE;IACpB,EAAE,CAAC,OAAO,EAAE;QACV,yBAAyB;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../src/functions/getItems/index.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/functions/replaceItem/index.d.ts b/dist/functions/replaceItem/index.d.ts index e69de29..630b197 100644 --- a/dist/functions/replaceItem/index.d.ts +++ b/dist/functions/replaceItem/index.d.ts @@ -0,0 +1,4 @@ +import { Item, ReplaceItem } from '@js-items/foundation'; +import FacadeConfig from '../../FacadeConfig'; +declare const _default: (config: FacadeConfig) => ReplaceItem; +export default _default; diff --git a/dist/functions/replaceItem/index.js b/dist/functions/replaceItem/index.js index fa69a5a..152a8fc 100644 --- a/dist/functions/replaceItem/index.js +++ b/dist/functions/replaceItem/index.js @@ -1,2 +1,88 @@ "use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +var _this = this; +Object.defineProperty(exports, "__esModule", { value: true }); +var isNil_1 = __importDefault(require("ramda/src/isNil")); +exports.default = (function (config) { return function (_a) { + var id = _a.id, item = _a.item, _b = _a.filter, filter = _b === void 0 ? {} : _b; + return __awaiter(_this, void 0, void 0, function () { + var connection, options, createFilter, params, searchParams, json, response, error_1; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + _c.trys.push([0, 3, , 4]); + return [4 /*yield*/, config.ky()]; + case 1: + connection = _c.sent(); + options = config.replaceItemOptions(__assign({}, item, { id: id })); + createFilter = config.createFilter(filter); + params = { filter: JSON.stringify(createFilter) }; + searchParams = !isNil_1.default(options) && !isNil_1.default(options.searchParams) + ? options.searchParams + : {}; + json = !isNil_1.default(options) && !isNil_1.default(options.json) + ? options.json + : {}; + return [4 /*yield*/, connection("/" + id, __assign({}, options, { json: __assign({}, item, json), method: 'put', searchParams: __assign({}, searchParams, params) })).json()]; + case 2: + response = _c.sent(); + return [2 /*return*/, Promise.resolve({ + item: config.convertDocumentIntoItem(response.item), + })]; + case 3: + error_1 = _c.sent(); + return [2 /*return*/, Promise.reject(error_1)]; + case 4: return [2 /*return*/]; + } + }); + }); +}; }); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/functions/replaceItem/index.js.map b/dist/functions/replaceItem/index.js.map index 0339683..a6a9032 100644 --- a/dist/functions/replaceItem/index.js.map +++ b/dist/functions/replaceItem/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/replaceItem/index.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/replaceItem/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iBA4CA;;AA1CA,0DAAqC;AAGrC,mBAAe,UACb,MAAuB,IACJ,OAAA,UAAO,EAAyB;QAAvB,UAAE,EAAE,cAAI,EAAE,cAAW,EAAX,gCAAW;;;;;;;oBAE5B,qBAAM,MAAM,CAAC,EAAE,EAAE,EAAA;;oBAA9B,UAAU,GAAG,SAAiB;oBAE9B,OAAO,GAAG,MAAM,CAAC,kBAAkB,cAAM,IAAI,IAAE,EAAE,IAAA,IAAG,CAAC;oBAErD,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAE3C,MAAM,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;oBAElD,YAAY,GAChB,CAAC,eAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAM,CAAE,OAAe,CAAC,YAAY,CAAC;wBACxD,CAAC,CAAE,OAAe,CAAC,YAAY;wBAC/B,CAAC,CAAC,EAAE,CAAC;oBAEH,IAAI,GACR,CAAC,eAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAM,CAAE,OAAe,CAAC,IAAI,CAAC;wBAChD,CAAC,CAAE,OAAe,CAAC,IAAI;wBACvB,CAAC,CAAC,EAAE,CAAC;oBAEQ,qBAAM,UAAU,CAAC,MAAI,EAAI,eACrC,OAAO,IACV,IAAI,eACC,IAAI,EACJ,IAAI,GAET,MAAM,EAAE,KAAK,EACb,YAAY,eAAO,YAAY,EAAK,MAAM,KAC1C,CAAC,IAAI,EAAa,EAAA;;oBARd,QAAQ,GAAG,SAQG;oBAEpB,sBAAO,OAAO,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC;yBACpD,CAAC,EAAC;;;oBAEH,sBAAO,OAAO,CAAC,MAAM,CAAC,OAAK,CAAC,EAAC;;;;;CAEhC,EApCoB,CAoCpB,EAAC"} \ No newline at end of file diff --git a/dist/functions/replaceItem/index.spec.d.ts b/dist/functions/replaceItem/index.spec.d.ts index e69de29..cb0ff5c 100644 --- a/dist/functions/replaceItem/index.spec.d.ts +++ b/dist/functions/replaceItem/index.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/functions/replaceItem/index.spec.js b/dist/functions/replaceItem/index.spec.js index 741d5c1..a5684bb 100644 --- a/dist/functions/replaceItem/index.spec.js +++ b/dist/functions/replaceItem/index.spec.js @@ -1,8 +1,138 @@ "use strict"; -describe('@replaceItem', function () { - it('tests', function () { - // TODO: implements tests - expect(true).toBe(true); +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +var _this = this; +Object.defineProperty(exports, "__esModule", { value: true }); +// tslint:disable:no-any +var foundation_1 = require("@js-items/foundation"); +var testItem_1 = __importDefault(require("@js-items/foundation/dist/functions/utils/testItem")); +var testConfig_1 = require("../../utils/testConfig"); +var index_1 = __importDefault(require("./index")); +beforeEach(function () { return jest.clearAllMocks(); }); +var filter = { + id: { $eq: testItem_1.default.id }, +}; +var defaultOptions = { + id: testItem_1.default.id, + item: testItem_1.default, +}; +var kyMock = jest.fn(function () { return ({ + json: function () { return Promise.resolve({ item: testItem_1.default }); }, +}); }); +describe('@replaceItem', function () { + it('replaces item without filter', function () { return __awaiter(_this, void 0, void 0, function () { + var createFilterMock, replaceItemOptionsMock, item; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + createFilterMock = jest.fn(function () { return ({}); }); + replaceItemOptionsMock = jest.fn(function () { return ({}); }); + return [4 /*yield*/, index_1.default(__assign({}, testConfig_1.config, { createFilter: createFilterMock, ky: function () { return Promise.resolve(kyMock); }, replaceItemOptions: replaceItemOptionsMock }))(defaultOptions)]; + case 1: + item = (_a.sent()).item; + expect(replaceItemOptionsMock).toBeCalledWith(testItem_1.default); + expect(createFilterMock).toBeCalledWith({}); + expect(testConfig_1.config.convertDocumentIntoItem).toBeCalledWith(testItem_1.default); + expect(item).toEqual(testItem_1.default); + expect(kyMock).toBeCalledWith("/" + testItem_1.default.id, { + json: __assign({}, testItem_1.default), + method: 'put', + searchParams: { filter: JSON.stringify({}) }, + }); + return [2 /*return*/]; + } + }); + }); }); + it('replaces item with custom filter and search params', function () { return __awaiter(_this, void 0, void 0, function () { + var createFilterMock, replaceItemOptionsMock; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + createFilterMock = jest.fn(function () { return filter; }); + replaceItemOptionsMock = jest.fn(function () { return ({ + searchParams: { pretty: 'false' }, + }); }); + return [4 /*yield*/, index_1.default(__assign({}, testConfig_1.config, { createFilter: createFilterMock, ky: function () { return Promise.resolve(kyMock); }, replaceItemOptions: replaceItemOptionsMock }))(__assign({}, defaultOptions, { filter: filter }))]; + case 1: + _a.sent(); + expect(createFilterMock).toBeCalledWith(filter); + expect(kyMock).toBeCalledWith("/" + testItem_1.default.id, { + json: __assign({}, testItem_1.default), + method: 'put', + searchParams: { filter: JSON.stringify(filter), pretty: 'false' }, + }); + return [2 /*return*/]; + } + }); + }); }); + it('does not replace item', function () { return __awaiter(_this, void 0, void 0, function () { + var error, facadeConfig, e_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + error = new foundation_1.ItemNotFoundError('TestItem'); + facadeConfig = __assign({}, testConfig_1.config, { ky: jest.fn(function () { return Promise.reject(error); }), replaceItemOptions: jest.fn(function () { return ({ json: { item: testItem_1.default } }); }) }); + _a.label = 1; + case 1: + _a.trys.push([1, 3, , 4]); + return [4 /*yield*/, index_1.default(facadeConfig)(defaultOptions)]; + case 2: + _a.sent(); + return [3 /*break*/, 4]; + case 3: + e_1 = _a.sent(); + expect(e_1).toEqual(error); + return [3 /*break*/, 4]; + case 4: return [2 /*return*/]; + } + }); + }); }); }); //# sourceMappingURL=index.spec.js.map \ No newline at end of file diff --git a/dist/functions/replaceItem/index.spec.js.map b/dist/functions/replaceItem/index.spec.js.map index 79b102e..b165503 100644 --- a/dist/functions/replaceItem/index.spec.js.map +++ b/dist/functions/replaceItem/index.spec.js.map @@ -1 +1 @@ -{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../src/functions/replaceItem/index.spec.ts"],"names":[],"mappings":";AAAA,QAAQ,CAAC,cAAc,EAAE;IACvB,EAAE,CAAC,OAAO,EAAE;QACV,yBAAyB;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../src/functions/replaceItem/index.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/functions/updateItem/index.d.ts b/dist/functions/updateItem/index.d.ts index e69de29..3b3f3ac 100644 --- a/dist/functions/updateItem/index.d.ts +++ b/dist/functions/updateItem/index.d.ts @@ -0,0 +1,4 @@ +import { Item, UpdateItem } from '@js-items/foundation'; +import FacadeConfig from '../../FacadeConfig'; +declare const _default: (config: FacadeConfig) => UpdateItem; +export default _default; diff --git a/dist/functions/updateItem/index.js b/dist/functions/updateItem/index.js index fa69a5a..cf218a8 100644 --- a/dist/functions/updateItem/index.js +++ b/dist/functions/updateItem/index.js @@ -1,2 +1,88 @@ "use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +var _this = this; +Object.defineProperty(exports, "__esModule", { value: true }); +var isNil_1 = __importDefault(require("ramda/src/isNil")); +exports.default = (function (config) { return function (_a) { + var id = _a.id, patch = _a.patch, _b = _a.filter, filter = _b === void 0 ? {} : _b; + return __awaiter(_this, void 0, void 0, function () { + var connection, options, createFilter, params, searchParams, json, response, error_1; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + _c.trys.push([0, 3, , 4]); + return [4 /*yield*/, config.ky()]; + case 1: + connection = _c.sent(); + options = config.updateItemOptions(__assign({}, patch, { id: id })); + createFilter = config.createFilter(filter); + params = { filter: JSON.stringify(createFilter) }; + searchParams = !isNil_1.default(options) && !isNil_1.default(options.searchParams) + ? options.searchParams + : {}; + json = !isNil_1.default(options) && !isNil_1.default(options.json) + ? options.json + : {}; + return [4 /*yield*/, connection("/" + id, __assign({}, options, { json: __assign({}, patch, json), method: 'patch', searchParams: __assign({}, searchParams, params) })).json()]; + case 2: + response = _c.sent(); + return [2 /*return*/, Promise.resolve({ + item: config.convertDocumentIntoItem(response.item), + })]; + case 3: + error_1 = _c.sent(); + return [2 /*return*/, Promise.reject(error_1)]; + case 4: return [2 /*return*/]; + } + }); + }); +}; }); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/functions/updateItem/index.js.map b/dist/functions/updateItem/index.js.map index 51c293f..55a1a53 100644 --- a/dist/functions/updateItem/index.js.map +++ b/dist/functions/updateItem/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/updateItem/index.ts"],"names":[],"mappings":""} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/functions/updateItem/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iBA4CA;;AA1CA,0DAAqC;AAGrC,mBAAe,UACb,MAAuB,IACL,OAAA,UAAO,EAA0B;QAAxB,UAAE,EAAE,gBAAK,EAAE,cAAW,EAAX,gCAAW;;;;;;;oBAE5B,qBAAM,MAAM,CAAC,EAAE,EAAE,EAAA;;oBAA9B,UAAU,GAAG,SAAiB;oBAE9B,OAAO,GAAG,MAAM,CAAC,iBAAiB,cAAM,KAAK,IAAE,EAAE,IAAA,IAAG,CAAC;oBAErD,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAE3C,MAAM,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;oBAElD,YAAY,GAChB,CAAC,eAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAM,CAAE,OAAe,CAAC,YAAY,CAAC;wBACxD,CAAC,CAAE,OAAe,CAAC,YAAY;wBAC/B,CAAC,CAAC,EAAE,CAAC;oBAEH,IAAI,GACR,CAAC,eAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAM,CAAE,OAAe,CAAC,IAAI,CAAC;wBAChD,CAAC,CAAE,OAAe,CAAC,IAAI;wBACvB,CAAC,CAAC,EAAE,CAAC;oBAEQ,qBAAM,UAAU,CAAC,MAAI,EAAI,eACrC,OAAO,IACV,IAAI,eACC,KAAK,EACL,IAAI,GAET,MAAM,EAAE,OAAO,EACf,YAAY,eAAO,YAAY,EAAK,MAAM,KAC1C,CAAC,IAAI,EAAa,EAAA;;oBARd,QAAQ,GAAG,SAQG;oBAEpB,sBAAO,OAAO,CAAC,OAAO,CAAC;4BACrB,IAAI,EAAE,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC;yBACpD,CAAC,EAAC;;;oBAEH,sBAAO,OAAO,CAAC,MAAM,CAAC,OAAK,CAAC,EAAC;;;;;CAEhC,EApCmB,CAoCnB,EAAC"} \ No newline at end of file diff --git a/dist/functions/updateItem/index.spec.d.ts b/dist/functions/updateItem/index.spec.d.ts index e69de29..cb0ff5c 100644 --- a/dist/functions/updateItem/index.spec.d.ts +++ b/dist/functions/updateItem/index.spec.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/dist/functions/updateItem/index.spec.js b/dist/functions/updateItem/index.spec.js index 9cf2515..2e37ab9 100644 --- a/dist/functions/updateItem/index.spec.js +++ b/dist/functions/updateItem/index.spec.js @@ -1,8 +1,138 @@ "use strict"; -describe('@updateItem', function () { - it('tests', function () { - // TODO: implements tests - expect(true).toBe(true); +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +var _this = this; +Object.defineProperty(exports, "__esModule", { value: true }); +// tslint:disable:no-any +var foundation_1 = require("@js-items/foundation"); +var testItem_1 = __importDefault(require("@js-items/foundation/dist/functions/utils/testItem")); +var testConfig_1 = require("../../utils/testConfig"); +var index_1 = __importDefault(require("./index")); +beforeEach(function () { return jest.clearAllMocks(); }); +var filter = { + id: { $eq: testItem_1.default.id }, +}; +var defaultOptions = { + id: testItem_1.default.id, + patch: testItem_1.default, +}; +var kyMock = jest.fn(function () { return ({ + json: function () { return Promise.resolve({ item: testItem_1.default }); }, +}); }); +describe('@updateItem', function () { + it('updates item without filter', function () { return __awaiter(_this, void 0, void 0, function () { + var createFilterMock, updateItemOptionsMock, item; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + createFilterMock = jest.fn(function () { return ({}); }); + updateItemOptionsMock = jest.fn(function () { return ({}); }); + return [4 /*yield*/, index_1.default(__assign({}, testConfig_1.config, { createFilter: createFilterMock, ky: function () { return Promise.resolve(kyMock); }, updateItemOptions: updateItemOptionsMock }))(defaultOptions)]; + case 1: + item = (_a.sent()).item; + expect(updateItemOptionsMock).toBeCalledWith(testItem_1.default); + expect(createFilterMock).toBeCalledWith({}); + expect(testConfig_1.config.convertDocumentIntoItem).toBeCalledWith(testItem_1.default); + expect(item).toEqual(testItem_1.default); + expect(kyMock).toBeCalledWith("/" + testItem_1.default.id, { + json: __assign({}, testItem_1.default), + method: 'patch', + searchParams: { filter: JSON.stringify({}) }, + }); + return [2 /*return*/]; + } + }); + }); }); + it('updates item with custom filter and search params', function () { return __awaiter(_this, void 0, void 0, function () { + var createFilterMock, updateItemOptionsMock; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + createFilterMock = jest.fn(function () { return filter; }); + updateItemOptionsMock = jest.fn(function () { return ({ + searchParams: { pretty: 'false' }, + }); }); + return [4 /*yield*/, index_1.default(__assign({}, testConfig_1.config, { createFilter: createFilterMock, ky: function () { return Promise.resolve(kyMock); }, updateItemOptions: updateItemOptionsMock }))(__assign({}, defaultOptions, { filter: filter }))]; + case 1: + _a.sent(); + expect(createFilterMock).toBeCalledWith(filter); + expect(kyMock).toBeCalledWith("/" + testItem_1.default.id, { + json: __assign({}, testItem_1.default), + method: 'patch', + searchParams: { filter: JSON.stringify(filter), pretty: 'false' }, + }); + return [2 /*return*/]; + } + }); + }); }); + it('does not update item', function () { return __awaiter(_this, void 0, void 0, function () { + var error, facadeConfig, e_1; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: + error = new foundation_1.ItemNotFoundError('TestItem'); + facadeConfig = __assign({}, testConfig_1.config, { ky: jest.fn(function () { return Promise.reject(error); }), updateItemOptions: jest.fn(function () { return ({ json: { item: testItem_1.default } }); }) }); + _a.label = 1; + case 1: + _a.trys.push([1, 3, , 4]); + return [4 /*yield*/, index_1.default(facadeConfig)(defaultOptions)]; + case 2: + _a.sent(); + return [3 /*break*/, 4]; + case 3: + e_1 = _a.sent(); + expect(e_1).toEqual(error); + return [3 /*break*/, 4]; + case 4: return [2 /*return*/]; + } + }); + }); }); }); //# sourceMappingURL=index.spec.js.map \ No newline at end of file diff --git a/dist/functions/updateItem/index.spec.js.map b/dist/functions/updateItem/index.spec.js.map index 149698b..cc88417 100644 --- a/dist/functions/updateItem/index.spec.js.map +++ b/dist/functions/updateItem/index.spec.js.map @@ -1 +1 @@ -{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../src/functions/updateItem/index.spec.ts"],"names":[],"mappings":";AAAA,QAAQ,CAAC,aAAa,EAAE;IACtB,EAAE,CAAC,OAAO,EAAE;QACV,yBAAyB;QACzB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../src/functions/updateItem/index.spec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/types/convertItemIntoOptions/index.d.ts b/dist/types/convertItemIntoOptions/index.d.ts index b922dc4..3db4325 100644 --- a/dist/types/convertItemIntoOptions/index.d.ts +++ b/dist/types/convertItemIntoOptions/index.d.ts @@ -1,3 +1,3 @@ import { Item } from "@js-items/foundation"; import { Options } from "ky"; -export declare type ConvertItemIntoOptions = (item: Partial) => Options | undefined; +export declare type ConvertItemIntoOptions = (item?: Partial) => Options | undefined; diff --git a/dist/utils/emptyOptions/index.d.ts b/dist/utils/emptyOptions/index.d.ts new file mode 100644 index 0000000..01a7191 --- /dev/null +++ b/dist/utils/emptyOptions/index.d.ts @@ -0,0 +1 @@ +export declare const emptyOptions: () => {}; diff --git a/dist/utils/emptyOptions/index.js b/dist/utils/emptyOptions/index.js new file mode 100644 index 0000000..3432639 --- /dev/null +++ b/dist/utils/emptyOptions/index.js @@ -0,0 +1,4 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.emptyOptions = function () { return ({}); }; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/utils/emptyOptions/index.js.map b/dist/utils/emptyOptions/index.js.map new file mode 100644 index 0000000..065802d --- /dev/null +++ b/dist/utils/emptyOptions/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/emptyOptions/index.ts"],"names":[],"mappings":";;AAAa,QAAA,YAAY,GAAG,cAAM,OAAA,CAAC,EAAE,CAAC,EAAJ,CAAI,CAAC"} \ No newline at end of file diff --git a/dist/utils/testConfig/index.d.ts b/dist/utils/testConfig/index.d.ts new file mode 100644 index 0000000..dc6ca28 --- /dev/null +++ b/dist/utils/testConfig/index.d.ts @@ -0,0 +1,10 @@ +/// +import { TestItem } from '@js-items/foundation/dist/functions/utils/testItem'; +import FacadeConfig from '../../FacadeConfig'; +export declare const defaultDocumentConverter: jest.Mock<{}, []>; +export declare const jsonOptions: jest.Mock<{ + json: { + item: TestItem; + }; +}, []>; +export declare const config: FacadeConfig; diff --git a/dist/utils/testConfig/index.js b/dist/utils/testConfig/index.js new file mode 100644 index 0000000..991a35c --- /dev/null +++ b/dist/utils/testConfig/index.js @@ -0,0 +1,29 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var testItem_1 = __importDefault(require("@js-items/foundation/dist/functions/utils/testItem")); +var emptyOptions_1 = require("../emptyOptions"); +exports.defaultDocumentConverter = jest.fn(function () { return ({}); }); +exports.jsonOptions = jest.fn(function () { return ({ json: { item: testItem_1.default } }); }); +var ky = jest.fn(function () { return Promise.resolve(jest.fn(function () { return ({ json: function () { return ({ item: testItem_1.default }); } }); })); } +// tslint:disable-next-line:no-any +); +exports.config = { + convertDocumentIntoItem: jest.fn(function () { return testItem_1.default; }), + convertItemIntoOptions: exports.defaultDocumentConverter, + createFilter: jest.fn(emptyOptions_1.emptyOptions), + createItemOptions: exports.defaultDocumentConverter, + createSort: jest.fn(emptyOptions_1.emptyOptions), + defaultPaginationLimit: 10, + deleteItemOptions: exports.defaultDocumentConverter, + deleteItemsOptions: exports.defaultDocumentConverter, + getItemOptions: exports.defaultDocumentConverter, + getItemsOptions: exports.defaultDocumentConverter, + itemName: 'TestItem', + ky: ky, + replaceItemOptions: exports.jsonOptions, + updateItemOptions: exports.jsonOptions, +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/utils/testConfig/index.js.map b/dist/utils/testConfig/index.js.map new file mode 100644 index 0000000..f1233bd --- /dev/null +++ b/dist/utils/testConfig/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/testConfig/index.ts"],"names":[],"mappings":";;;;;AAAA,gGAE4D;AAE5D,gDAA+C;AAElC,QAAA,wBAAwB,GAAG,IAAI,CAAC,EAAE,CAAC,cAAM,OAAA,CAAC,EAAE,CAAC,EAAJ,CAAI,CAAC,CAAC;AAE/C,QAAA,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,cAAM,OAAA,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,kBAAQ,EAAE,EAAE,CAAC,EAA9B,CAA8B,CAAC,CAAC;AAEzE,IAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAChB,cAAM,OAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,cAAM,OAAA,CAAC,EAAE,IAAI,EAAE,cAAM,OAAA,CAAC,EAAE,IAAI,EAAE,kBAAQ,EAAE,CAAC,EAApB,CAAoB,EAAE,CAAC,EAAtC,CAAsC,CAAC,CAAC,EAAtE,CAAsE;AAC5E,kCAAkC;CAC5B,CAAC;AAEI,QAAA,MAAM,GAA2B;IAC5C,uBAAuB,EAAE,IAAI,CAAC,EAAE,CAAC,cAAM,OAAA,kBAAQ,EAAR,CAAQ,CAAC;IAChD,sBAAsB,EAAE,gCAAwB;IAChD,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,2BAAY,CAAC;IACnC,iBAAiB,EAAE,gCAAwB;IAC3C,UAAU,EAAE,IAAI,CAAC,EAAE,CAAC,2BAAY,CAAC;IACjC,sBAAsB,EAAE,EAAE;IAC1B,iBAAiB,EAAE,gCAAwB;IAC3C,kBAAkB,EAAE,gCAAwB;IAC5C,cAAc,EAAE,gCAAwB;IACxC,eAAe,EAAE,gCAAwB;IACzC,QAAQ,EAAE,UAAU;IACpB,EAAE,IAAA;IACF,kBAAkB,EAAE,mBAAW;IAC/B,iBAAiB,EAAE,mBAAW;CAC/B,CAAC"} \ No newline at end of file diff --git a/dist/utils/testData/index.d.ts b/dist/utils/testData/index.d.ts new file mode 100644 index 0000000..cdc9dcb --- /dev/null +++ b/dist/utils/testData/index.d.ts @@ -0,0 +1,12 @@ +import { Item } from '@js-items/foundation'; +export interface TestItem extends Item { + readonly booleanProperty: boolean; + readonly stringProperty: string; + readonly numberProperty: number; +} +export declare const item: { + booleanProperty: boolean; + id: string; + numberProperty: number; + stringProperty: string; +}; diff --git a/dist/utils/testData/index.js b/dist/utils/testData/index.js new file mode 100644 index 0000000..61bd668 --- /dev/null +++ b/dist/utils/testData/index.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.item = { + booleanProperty: true, + id: '1', + numberProperty: 3, + stringProperty: 'name', +}; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/utils/testData/index.js.map b/dist/utils/testData/index.js.map new file mode 100644 index 0000000..8d52f83 --- /dev/null +++ b/dist/utils/testData/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/testData/index.ts"],"names":[],"mappings":";;AAQa,QAAA,IAAI,GAAG;IAClB,eAAe,EAAE,IAAI;IACrB,EAAE,EAAE,GAAG;IACP,cAAc,EAAE,CAAC;IACjB,cAAc,EAAE,MAAM;CACvB,CAAC"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index a2fb1ba..409971a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -441,9 +441,9 @@ } }, "@js-items/foundation": { - "version": "1.0.24", - "resolved": "https://registry.npmjs.org/@js-items/foundation/-/foundation-1.0.24.tgz", - "integrity": "sha512-Ukxq6nROGt4cdqN8QlVrDZyoSMnj2eLF3u9relAzelDq1B/TXz/64HIP3gtLBIAXwSbssvq6zDcsRBOkPKqZLQ==", + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/@js-items/foundation/-/foundation-1.0.25.tgz", + "integrity": "sha512-xaBedVz/u+F1ZB9dB6jMQFJKWSZprlVTS/cFGPkhP7DaWNR84SiWBrAzaEE7RJ836+N4rKHlQYbeMsDBXLFh/w==", "dev": true, "requires": { "atob": "^2.1.2", @@ -489,7 +489,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, "requires": { "call-me-maybe": "^1.0.1", "glob-to-regexp": "^0.3.0" @@ -516,8 +515,7 @@ "@nodelib/fs.stat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" }, "@nodelib/fs.walk": { "version": "1.2.2", @@ -852,8 +850,7 @@ "@types/babel-types": { "version": "7.0.7", "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.7.tgz", - "integrity": "sha512-dBtBbrc+qTHy1WdfHYjBwRln4+LWqASWakLHsWHR2NWHIFkv4W3O070IGoGLEBrJBvct3r0L1BUPuvURi7kYUQ==", - "dev": true + "integrity": "sha512-dBtBbrc+qTHy1WdfHYjBwRln4+LWqASWakLHsWHR2NWHIFkv4W3O070IGoGLEBrJBvct3r0L1BUPuvURi7kYUQ==" }, "@types/babel__core": { "version": "7.1.2", @@ -900,7 +897,6 @@ "version": "6.16.5", "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.5.tgz", "integrity": "sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w==", - "dev": true, "requires": { "@types/babel-types": "*" } @@ -1042,26 +1038,22 @@ "dev": true }, "abstract-leveldown": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.0.3.tgz", - "integrity": "sha512-jzewKKpZbaYUa6HTThnrl+GrJhzjEAeuc7hTVpZdzg7kupXZFoqQDFwyOwLNbmJKJlmzw8yiipMPkDiuKkT06Q==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz", + "integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==", "requires": { - "level-concat-iterator": "~2.0.0", "xtend": "~4.0.0" } }, "acorn": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" }, "acorn-globals": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", - "dev": true, "requires": { "acorn": "^4.0.4" }, @@ -1069,8 +1061,7 @@ "acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" } } }, @@ -1084,7 +1075,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, "requires": { "es6-promisify": "^5.0.0" } @@ -1115,7 +1105,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -1126,7 +1115,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -1142,8 +1130,7 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, "ansi-styles": { "version": "3.2.1", @@ -1170,11 +1157,53 @@ "normalize-path": "^2.1.1" } }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, "requires": { "sprintf-js": "~1.0.2" } @@ -1182,8 +1211,7 @@ "argv": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/argv/-/argv-0.0.2.tgz", - "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", - "dev": true + "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=" }, "argv-formatter": { "version": "1.0.0", @@ -1194,20 +1222,17 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, "array-equal": { "version": "1.0.0", @@ -1242,8 +1267,7 @@ "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, "arrify": { "version": "1.0.1", @@ -1254,8 +1278,7 @@ "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, "asn1": { "version": "0.2.4", @@ -1275,8 +1298,7 @@ "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, "astral-regex": { "version": "1.0.0", @@ -1299,8 +1321,7 @@ "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "atob-lite": { "version": "2.0.0", @@ -1423,7 +1444,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dev": true, "requires": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" @@ -1433,7 +1453,6 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, "requires": { "babel-runtime": "^6.26.0", "esutils": "^2.0.2", @@ -1444,8 +1463,7 @@ "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, "badgen": { "version": "2.8.2", @@ -1455,14 +1473,12 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, "requires": { "cache-base": "^1.0.1", "class-utils": "^0.3.5", @@ -1477,7 +1493,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, "requires": { "is-descriptor": "^1.0.0" } @@ -1486,7 +1501,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -1495,7 +1509,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -1504,7 +1517,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -1528,11 +1540,62 @@ "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==", "dev": true }, + "bindings": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.1.tgz", + "integrity": "sha512-i47mqjF9UbjxJhxGf+pZ6kSxrnI3wBLlnGI2ArWJ4r0VrvDS7ZYXkprq/pLaBWYq4GM0r4zdHY+NNRqEMU7uew==" + }, + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + } + } + }, "blamer": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/blamer/-/blamer-0.1.13.tgz", "integrity": "sha1-YfIV8jYb0FTmJYwMXgCG8EB05nA=", - "dev": true, "requires": { "bluebird": "~2.3.x", "xml2js": "~0.4.x" @@ -1541,8 +1604,7 @@ "bluebird": { "version": "2.3.11", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.3.11.tgz", - "integrity": "sha1-Fbt47TKr8nsJBkDA+F5LkfYVyLY=", - "dev": true + "integrity": "sha1-Fbt47TKr8nsJBkDA+F5LkfYVyLY=" }, "bottleneck": { "version": "2.19.5", @@ -1554,7 +1616,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1564,7 +1625,6 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -1582,7 +1642,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -1592,8 +1651,7 @@ "browser-process-hrtime": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" }, "browser-resolve": { "version": "1.11.3", @@ -1642,6 +1700,25 @@ "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", "dev": true }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" + }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -1656,14 +1733,12 @@ "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, "requires": { "collection-visit": "^1.0.0", "component-emitter": "^1.2.1", @@ -1679,8 +1754,7 @@ "call-me-maybe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" }, "caller-callsite": { "version": "2.0.0", @@ -1709,8 +1783,7 @@ "camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "dev": true + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" }, "camelcase-keys": { "version": "4.2.0", @@ -1760,7 +1833,6 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, "requires": { "align-text": "^0.1.3", "lazy-cache": "^1.0.3" @@ -1781,11 +1853,15 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=", - "dev": true, "requires": { "is-regex": "^1.0.3" } }, + "chownr": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz", + "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==" + }, "ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", @@ -1796,7 +1872,6 @@ "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, "requires": { "arr-union": "^3.1.0", "define-property": "^0.2.5", @@ -1808,7 +1883,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -1819,7 +1893,6 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", - "dev": true, "requires": { "source-map": "~0.6.0" }, @@ -1827,8 +1900,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } }, @@ -1859,7 +1931,6 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", - "dev": true, "requires": { "colors": "^1.1.2", "object-assign": "^4.1.0", @@ -1870,7 +1941,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz", "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==", - "dev": true, "optional": true, "requires": { "good-listener": "^1.2.2", @@ -1882,7 +1952,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, "requires": { "center-align": "^0.1.1", "right-align": "^0.1.1", @@ -1892,19 +1961,22 @@ "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "codecov": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.5.0.tgz", - "integrity": "sha512-/OsWOfIHaQIr7aeZ4pY0UC1PZT6kimoKFOFYFNb6wxo3iw12nRrh+mNGH72rnXxNsq6SGfesVPizm/6Q3XqcFQ==", - "dev": true, + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/codecov/-/codecov-3.2.0.tgz", + "integrity": "sha512-3NJvNARXxilqnqVfgzDHyVrF4oeVgaYW1c1O6Oi5mn93exE7HTSSFNiYdwojWW6IwrCZABJ8crpNbKoo9aUHQw==", "requires": { "argv": "^0.0.2", "ignore-walk": "^3.0.1", - "js-yaml": "^3.13.1", - "teeny-request": "^3.11.3", + "js-yaml": "^3.12.0", + "teeny-request": "^3.7.0", "urlgrey": "^0.4.4" } }, @@ -1912,7 +1984,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, "requires": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" @@ -1936,8 +2007,7 @@ "colors": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.3.tgz", - "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==", - "dev": true + "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==" }, "combined-stream": { "version": "1.0.8", @@ -1951,8 +2021,7 @@ "commander": { "version": "2.20.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", - "dev": true + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" }, "compare-func": { "version": "1.3.2", @@ -1967,14 +2036,12 @@ "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { "version": "1.6.2", @@ -2051,11 +2118,15 @@ } } }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + }, "constantinople": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", - "dev": true, "requires": { "@types/babel-types": "^7.0.0", "@types/babylon": "^6.16.2", @@ -2163,14 +2234,12 @@ "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, "core-js": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==", - "dev": true + "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" }, "core-util-is": { "version": "1.0.2", @@ -2278,7 +2347,6 @@ "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, "requires": { "ms": "^2.1.1" } @@ -2286,8 +2354,7 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, "decamelize-keys": { "version": "1.1.0", @@ -2310,14 +2377,20 @@ "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" }, "deep-is": { "version": "0.1.3", @@ -2332,12 +2405,11 @@ "dev": true }, "deferred-leveldown": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.1.0.tgz", - "integrity": "sha512-PvDY+BT2ONu2XVRgxHb77hYelLtMYxKSGuWuJJdVRXh9ntqx9GYTFJno/SKAz5xcd+yjQwyQeIZrUPjPvA52mg==", - "dev": true, + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz", + "integrity": "sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww==", "requires": { - "abstract-leveldown": "~6.0.0", + "abstract-leveldown": "~5.0.0", "inherits": "^2.0.3" } }, @@ -2354,7 +2426,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" @@ -2364,7 +2435,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -2373,7 +2443,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -2382,7 +2451,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -2401,9 +2469,13 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", - "dev": true, "optional": true }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + }, "deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", @@ -2414,11 +2486,15 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/detect-installed/-/detect-installed-2.0.4.tgz", "integrity": "sha1-oIUEZefD68/5eda2U1rTRLgN18U=", - "dev": true, "requires": { "get-installed-path": "^2.0.3" } }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + }, "detect-newline": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", @@ -2449,8 +2525,7 @@ "doctypes": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", - "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=", - "dev": true + "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" }, "domexception": { "version": "1.0.1", @@ -2528,22 +2603,21 @@ "dev": true }, "encoding-down": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-6.1.0.tgz", - "integrity": "sha512-pBW1mbuQDHQhQLBtqarX8x2oLynahiOzBY5L/BosNqcstJ8MjpSc3rx1yCUIqb6bUE2vsp3t0BaXS0ZDP1s5pg==", - "dev": true, + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-5.0.4.tgz", + "integrity": "sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw==", "requires": { - "abstract-leveldown": "^6.0.0", + "abstract-leveldown": "^5.0.0", "inherits": "^2.0.3", "level-codec": "^9.0.0", - "level-errors": "^2.0.0" + "level-errors": "^2.0.0", + "xtend": "^4.0.1" } }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, "requires": { "once": "^1.4.0" } @@ -2562,7 +2636,6 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "dev": true, "requires": { "prr": "~1.0.1" } @@ -2604,14 +2677,12 @@ "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" }, "es6-promisify": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "dev": true, "requires": { "es6-promise": "^4.0.3" } @@ -2653,8 +2724,7 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "estraverse": { "version": "4.3.0", @@ -2665,14 +2735,12 @@ "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "eventemitter3": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", - "dev": true + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" }, "exec-sh": { "version": "0.3.2", @@ -2714,7 +2782,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/exectimer/-/exectimer-2.2.1.tgz", "integrity": "sha512-Orj7HuxI0b0Wv9FxOedX1jYwMfmAEwKekWQ7eaAYwHXYUWgAYjv2zfG9onvtHkYSQXAGJpvcYDt5SATeji163w==", - "dev": true, "requires": { "browser-process-hrtime": "^1.0.0", "co": "^4.6.0" @@ -2730,7 +2797,6 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, "requires": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -2745,7 +2811,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -2754,7 +2819,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -2763,7 +2827,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -2771,16 +2834,19 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" + }, "expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, "requires": { "homedir-polyfill": "^1.0.1" } @@ -2809,7 +2875,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -2819,7 +2884,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, "requires": { "is-plain-object": "^2.0.4" } @@ -2830,7 +2894,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, "requires": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -2846,7 +2909,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, "requires": { "is-descriptor": "^1.0.0" } @@ -2855,7 +2917,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -2864,7 +2925,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -2873,7 +2933,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -2882,7 +2941,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -2903,11 +2961,15 @@ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, + "fast-future": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fast-future/-/fast-future-1.0.2.tgz", + "integrity": "sha1-hDWpqqAteSSNF9cE52JZMB2ZKAo=" + }, "fast-glob": { "version": "2.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, "requires": { "@mrmlnc/readdir-enhanced": "^2.2.1", "@nodelib/fs.stat": "^1.1.2", @@ -2960,7 +3022,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -2972,7 +3033,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -3001,8 +3061,7 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, "forever-agent": { "version": "0.6.1", @@ -3025,7 +3084,6 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, "requires": { "map-cache": "^0.2.2" } @@ -3072,6 +3130,11 @@ } } }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "fs-extra": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", @@ -3085,8 +3148,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { "version": "1.2.9", @@ -3620,8 +3682,55 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } }, "get-caller-file": { "version": "2.0.5", @@ -3633,7 +3742,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/get-installed-path/-/get-installed-path-2.1.1.tgz", "integrity": "sha512-Qkn9eq6tW5/q9BDVdMpB8tOHljX9OSP0jRC5TRNVA4qRc839t4g8KQaR8t0Uv0EFVL0MlyG7m/ofjEgAROtYsA==", - "dev": true, "requires": { "global-modules": "1.0.0" } @@ -3650,8 +3758,7 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, "getpass": { "version": "0.1.7", @@ -3687,17 +3794,20 @@ } } }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" + }, "gitignore-to-glob": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/gitignore-to-glob/-/gitignore-to-glob-0.3.0.tgz", - "integrity": "sha1-WfMqs9m2bOUCmcPtJMsO9CoJTOs=", - "dev": true + "integrity": "sha1-WfMqs9m2bOUCmcPtJMsO9CoJTOs=" }, "glob": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3711,7 +3821,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, "requires": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" @@ -3721,7 +3830,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, "requires": { "is-extglob": "^2.1.0" } @@ -3731,14 +3839,12 @@ "glob-to-regexp": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" }, "global-modules": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, "requires": { "global-prefix": "^1.0.1", "is-windows": "^1.0.1", @@ -3749,7 +3855,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, "requires": { "expand-tilde": "^2.0.2", "homedir-polyfill": "^1.0.1", @@ -3858,7 +3963,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", - "dev": true, "optional": true, "requires": { "delegate": "^3.1.2" @@ -3926,7 +4030,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -3943,11 +4046,15 @@ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", "dev": true }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, "requires": { "get-value": "^2.0.6", "has-values": "^1.0.0", @@ -3958,7 +4065,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, "requires": { "is-number": "^3.0.0", "kind-of": "^4.0.0" @@ -3968,7 +4074,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -3979,7 +4084,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, "requires": { "parse-passwd": "^1.0.0" } @@ -4052,7 +4156,6 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz", "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==", - "dev": true, "requires": { "agent-base": "^4.3.0", "debug": "^3.1.0" @@ -4077,17 +4180,10 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", - "dev": true, "requires": { "minimatch": "^3.0.4" } }, - "immediate": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", - "integrity": "sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=", - "dev": true - }, "import-fresh": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", @@ -4141,7 +4237,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -4155,8 +4250,7 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "into-stream": { "version": "5.1.0", @@ -4181,7 +4275,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -4190,7 +4283,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -4206,8 +4298,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-callable": { "version": "1.1.4", @@ -4228,7 +4319,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -4237,7 +4327,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -4254,7 +4343,6 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -4264,8 +4352,7 @@ "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" } } }, @@ -4279,7 +4366,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=", - "dev": true, "requires": { "acorn": "~4.0.2", "object-assign": "^4.0.1" @@ -4288,28 +4374,24 @@ "acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" } } }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-generator-fn": { "version": "2.1.0", @@ -4321,7 +4403,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -4330,7 +4411,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -4339,7 +4419,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -4362,7 +4441,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, "requires": { "isobject": "^3.0.1" } @@ -4370,14 +4448,12 @@ "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, "requires": { "has": "^1.0.1" } @@ -4421,8 +4497,7 @@ "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, "is-wsl": { "version": "1.1.0", @@ -4443,8 +4518,7 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, "isstream": { "version": "0.1.2", @@ -5230,8 +5304,7 @@ "js-stringify": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", - "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=", - "dev": true + "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds=" }, "js-tokens": { "version": "4.0.0", @@ -5243,7 +5316,6 @@ "version": "3.13.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -5256,10 +5328,9 @@ "dev": true }, "jscpd": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/jscpd/-/jscpd-2.0.15.tgz", - "integrity": "sha512-LRhdZ1rdS+WKiEbmAPxbeLSAF4AvwYBf6EoK+r0Kn/yGb4LxwK0VW8SAxp9hdyvp50lfDWGBtt9HxcEPTjZiow==", - "dev": true, + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/jscpd/-/jscpd-2.0.11.tgz", + "integrity": "sha512-vC2i4+RAor/zzhn5EZPg7/1itK9c6ivR/aI9eyYWtrhT/EIro3jU6WVm09L8+spJmpGh0TXQDgCTT6bcUrDEjA==", "requires": { "blamer": "^0.1.13", "bytes": "^3.0.0", @@ -5272,21 +5343,10 @@ "fast-glob": "^2.2.3", "fs-extra": "^7.0.0", "gitignore-to-glob": "^0.3.0", - "level": "^5.0.1", + "level": "^4.0.0", "prismjs": "^1.15.0", "pug": "^2.0.3", "rimraf": "^2.6.2" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } } }, "jscpd-badge-reporter": { @@ -5427,7 +5487,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", "integrity": "sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=", - "dev": true, "requires": { "is-promise": "^2.0.0", "promise": "^7.0.1" @@ -5436,8 +5495,7 @@ "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" }, "kleur": { "version": "3.0.3", @@ -5453,8 +5511,7 @@ "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "dev": true + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" }, "left-pad": { "version": "1.3.0", @@ -5463,92 +5520,103 @@ "dev": true }, "level": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/level/-/level-5.0.1.tgz", - "integrity": "sha512-wcak5OQeA4rURGacqS62R/xNHjCYnJSQDBOlm4KNUGJVE9bWv2B04TclqReYejN+oD65PzD4FsqeWoI5wNC5Lg==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/level/-/level-4.0.0.tgz", + "integrity": "sha512-4epzCOlEcJ529NOdlAYiuiakS/kZTDdiKSBNJmE1B8bsmA+zEVwcpxyH86qJSQTpOu7SODrlaD9WgPRHLkGutA==", "requires": { - "level-js": "^4.0.0", - "level-packager": "^5.0.0", - "leveldown": "^5.0.0", + "level-packager": "^3.0.0", + "leveldown": "^4.0.0", "opencollective-postinstall": "^2.0.0" } }, "level-codec": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.1.tgz", - "integrity": "sha512-ajFP0kJ+nyq4i6kptSM+mAvJKLOg1X5FiFPtLG9M5gCEZyBmgDi3FkDrvlMkEzrUn1cWxtvVmrvoS4ASyO/q+Q==", - "dev": true - }, - "level-concat-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", - "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", - "dev": true + "integrity": "sha512-ajFP0kJ+nyq4i6kptSM+mAvJKLOg1X5FiFPtLG9M5gCEZyBmgDi3FkDrvlMkEzrUn1cWxtvVmrvoS4ASyO/q+Q==" }, "level-errors": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", - "dev": true, "requires": { "errno": "~0.1.1" } }, "level-iterator-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.1.tgz", - "integrity": "sha512-pSZWqXK6/yHQkZKCHrR59nKpU5iqorKM22C/BOHTb/cwNQ2EOZG+bovmFFGcOgaBoF3KxqJEI27YwewhJQTzsw==", - "dev": true, + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz", + "integrity": "sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g==", "requires": { "inherits": "^2.0.1", - "readable-stream": "^3.0.2", + "readable-stream": "^2.3.6", "xtend": "^4.0.0" - } - }, - "level-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/level-js/-/level-js-4.0.1.tgz", - "integrity": "sha512-m5JRIyHZn5VnCCFeRegJkn5bQd3MJK5qZX12zg3Oivc8+BUIS2yFS6ANMMeHX2ieGxucNvEn6/ZnyjmZQLLUWw==", - "dev": true, - "requires": { - "abstract-leveldown": "~6.0.1", - "immediate": "~3.2.3", - "inherits": "^2.0.3", - "ltgt": "^2.1.2", - "typedarray-to-buffer": "~3.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "level-packager": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-5.0.2.tgz", - "integrity": "sha512-sJWdeW5tObvTvgP4Xf2psL5CEUsZjDjiTtlcimHp3Ifd4qbmkEGquN82C5ZtC7VpWEiISeUIBtIcCskVzEpvFw==", - "dev": true, + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-3.1.0.tgz", + "integrity": "sha512-UxVEfK5WH0u0InR3WxTCSAroiorAGKzXWZT6i+nBjambmvINuXFUsFx2Ai3UIjUUtnyWhluv42jMlzUZCsAk9A==", "requires": { - "encoding-down": "^6.0.0", - "levelup": "^4.0.0" + "encoding-down": "~5.0.0", + "levelup": "^3.0.0" } }, "leveldown": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-5.1.1.tgz", - "integrity": "sha512-4n2R/vEA/sssh5TKtFwM9gshW2tirNoURLqekLRUUzuF+eUBLFAufO8UW7bz8lBbG2jw8tQDF3LC+LcUCc12kg==", - "dev": true, - "requires": { - "abstract-leveldown": "~6.0.3", - "napi-macros": "~1.8.1", - "node-gyp-build": "~4.1.0" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-4.0.2.tgz", + "integrity": "sha512-SUgSRTWFh3eeiTdIt2a4Fi9TZO5oWzE9uC/Iw8+fVr1sk8x1S2l151UWwSmrMFZB3GxJhZIf4bQ0n+051Cctpw==", + "requires": { + "abstract-leveldown": "~5.0.0", + "bindings": "~1.3.0", + "fast-future": "~1.0.2", + "nan": "~2.12.1", + "prebuild-install": "~5.2.4" + }, + "dependencies": { + "nan": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", + "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==" + } } }, "levelup": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.1.0.tgz", - "integrity": "sha512-+Qhe2/jb5affN7BeFgWUUWVdYoGXO2nFS3QLEZKZynnQyP9xqA+7wgOz3fD8SST2UKpHQuZgjyJjTcB2nMl2dQ==", - "dev": true, + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-3.1.1.tgz", + "integrity": "sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg==", "requires": { - "deferred-leveldown": "~5.1.0", + "deferred-leveldown": "~4.0.0", "level-errors": "~2.0.0", - "level-iterator-stream": "~4.0.0", + "level-iterator-stream": "~3.0.0", "xtend": "~4.0.0" } }, @@ -5622,8 +5690,7 @@ "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", - "dev": true + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "lodash.capitalize": { "version": "4.2.1", @@ -5694,8 +5761,7 @@ "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "dev": true + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" }, "loose-envify": { "version": "1.4.0", @@ -5725,12 +5791,6 @@ "yallist": "^2.1.2" } }, - "ltgt": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", - "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=", - "dev": true - }, "macos-release": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", @@ -5772,8 +5832,7 @@ "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, "map-obj": { "version": "2.0.0", @@ -5785,7 +5844,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, "requires": { "object-visit": "^1.0.0" } @@ -5868,14 +5926,12 @@ "merge2": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.4.tgz", - "integrity": "sha512-FYE8xI+6pjFOhokZu0We3S5NKCirLbCzSh2Usf3qEyr4X8U+0jNg9P8RZ4qz+V2UoECLVwSyzU3LxXBaLGtD3A==", - "dev": true + "integrity": "sha512-FYE8xI+6pjFOhokZu0We3S5NKCirLbCzSh2Usf3qEyr4X8U+0jNg9P8RZ4qz+V2UoECLVwSyzU3LxXBaLGtD3A==" }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -5919,11 +5975,15 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -5931,8 +5991,7 @@ "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "minimist-options": { "version": "3.0.2", @@ -5948,7 +6007,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, "requires": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -5958,7 +6016,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, "requires": { "is-plain-object": "^2.0.4" } @@ -5969,7 +6026,6 @@ "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, "requires": { "minimist": "0.0.8" }, @@ -5977,8 +6033,7 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } }, @@ -5991,8 +6046,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "nan": { "version": "2.14.0", @@ -6005,7 +6059,6 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -6020,11 +6073,10 @@ "to-regex": "^3.0.1" } }, - "napi-macros": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-1.8.2.tgz", - "integrity": "sha512-Tr0DNY4RzTaBG2W2m3l7ZtFuJChTH6VZhXVhkGGjF/4cZTt+i8GcM9ozD+30Lmr4mDoZ5Xx34t2o4GJqYWDGcg==", - "dev": true + "napi-build-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.1.tgz", + "integrity": "sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA==" }, "natural-compare": { "version": "1.4.0", @@ -6050,6 +6102,14 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-abi": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.11.0.tgz", + "integrity": "sha512-kuy/aEg75u40v378WRllQ4ZexaXJiCvB68D2scDXclp/I4cRq6togpbOoKhmN07tns9Zldu51NNERo0wehfX9g==", + "requires": { + "semver": "^5.4.1" + } + }, "node-emoji": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", @@ -6062,14 +6122,7 @@ "node-fetch": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", - "dev": true - }, - "node-gyp-build": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.1.0.tgz", - "integrity": "sha512-rGLv++nK20BG8gc0MzzcYe1Nl3p3mtwJ74Q2QD0HTEDKZ6NvOFSelY6s2QBPWIHRR8h7hpad0LiwajfClBJfNg==", - "dev": true + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" }, "node-int64": { "version": "0.4.0", @@ -6096,6 +6149,11 @@ "which": "^1.3.0" } }, + "noop-logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", + "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -9611,6 +9669,22 @@ "path-key": "^2.0.0" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + }, "nwsapi": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", @@ -9626,14 +9700,12 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, "requires": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", @@ -9644,7 +9716,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -9653,7 +9724,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -9670,7 +9740,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, "requires": { "isobject": "^3.0.0" } @@ -9689,7 +9758,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, "requires": { "isobject": "^3.0.1" } @@ -9704,7 +9772,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } @@ -9721,8 +9788,7 @@ "opencollective-postinstall": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz", - "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==", - "dev": true + "integrity": "sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==" }, "optimist": { "version": "0.6.1", @@ -9764,6 +9830,11 @@ } } }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, "os-name": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", @@ -9901,8 +9972,7 @@ "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "dev": true + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" }, "parse5": { "version": "4.0.0", @@ -9913,14 +9983,12 @@ "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" }, "path-exists": { "version": "3.0.0", @@ -9931,8 +9999,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-key": { "version": "2.0.1", @@ -9943,8 +10010,7 @@ "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-type": { "version": "4.0.0", @@ -10052,8 +10118,7 @@ "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "pre-commit": { "version": "1.2.2", @@ -10075,6 +10140,40 @@ } } }, + "prebuild-install": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.2.5.tgz", + "integrity": "sha512-6uZgMVg7yDfqlP5CPurVhtq3hUKBFNufiar4J5hZrlHTo59DDBEtyxw01xCdFss9j0Zb9+qzFVf/s4niayba3w==", + "requires": { + "detect-libc": "^1.0.3", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "napi-build-utils": "^1.0.1", + "node-abi": "^2.7.0", + "noop-logger": "^0.1.1", + "npmlog": "^4.0.1", + "os-homedir": "^1.0.1", + "pump": "^2.0.1", + "rc": "^1.2.7", + "simple-get": "^2.7.0", + "tar-fs": "^1.13.0", + "tunnel-agent": "^0.6.0", + "which-pm-runs": "^1.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -10105,7 +10204,6 @@ "version": "1.17.1", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.17.1.tgz", "integrity": "sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q==", - "dev": true, "requires": { "clipboard": "^2.0.0" } @@ -10119,7 +10217,6 @@ "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, "requires": { "asap": "~2.0.3" } @@ -10137,8 +10234,7 @@ "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" }, "pseudomap": { "version": "1.0.2", @@ -10155,7 +10251,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz", "integrity": "sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==", - "dev": true, "requires": { "pug-code-gen": "^2.0.2", "pug-filters": "^3.1.1", @@ -10171,7 +10266,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz", "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==", - "dev": true, "requires": { "constantinople": "^3.0.1", "js-stringify": "^1.0.1", @@ -10182,7 +10276,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.2.tgz", "integrity": "sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw==", - "dev": true, "requires": { "constantinople": "^3.1.2", "doctypes": "^1.1.0", @@ -10197,14 +10290,12 @@ "pug-error": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz", - "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==", - "dev": true + "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==" }, "pug-filters": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz", "integrity": "sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==", - "dev": true, "requires": { "clean-css": "^4.1.11", "constantinople": "^3.0.1", @@ -10219,7 +10310,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz", "integrity": "sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==", - "dev": true, "requires": { "character-parser": "^2.1.1", "is-expression": "^3.0.0", @@ -10230,7 +10320,6 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz", "integrity": "sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==", - "dev": true, "requires": { "pug-error": "^1.3.3", "pug-walk": "^1.1.8" @@ -10240,7 +10329,6 @@ "version": "2.0.12", "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz", "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==", - "dev": true, "requires": { "object-assign": "^4.1.0", "pug-walk": "^1.1.8" @@ -10250,7 +10338,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz", "integrity": "sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==", - "dev": true, "requires": { "pug-error": "^1.3.3", "token-stream": "0.0.1" @@ -10259,14 +10346,12 @@ "pug-runtime": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz", - "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==", - "dev": true + "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==" }, "pug-strip-comments": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz", "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==", - "dev": true, "requires": { "pug-error": "^1.3.3" } @@ -10274,8 +10359,7 @@ "pug-walk": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz", - "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==", - "dev": true + "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==" }, "pump": { "version": "3.0.0", @@ -10320,7 +10404,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -10432,14 +10515,12 @@ "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, "requires": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" @@ -10464,14 +10545,12 @@ "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "request": { "version": "2.88.0", @@ -10555,7 +10634,6 @@ "version": "1.12.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dev": true, "requires": { "path-parse": "^1.0.6" } @@ -10581,7 +10659,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "dev": true, "requires": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" @@ -10596,14 +10673,12 @@ "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, "retry": { "version": "0.12.0", @@ -10621,7 +10696,6 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, "requires": { "align-text": "^0.1.1" } @@ -10630,7 +10704,6 @@ "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, "requires": { "glob": "^7.1.3" } @@ -10650,8 +10723,7 @@ "safe-buffer": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", - "dev": true + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" }, "safe-env": { "version": "1.2.0", @@ -10674,7 +10746,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, "requires": { "ret": "~0.1.10" } @@ -10705,14 +10776,12 @@ "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", - "dev": true, "optional": true }, "semantic-release": { @@ -10961,8 +11030,7 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" }, "semver-regex": { "version": "2.0.0", @@ -10973,14 +11041,12 @@ "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, "set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -10992,7 +11058,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -11021,8 +11086,7 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "signale": { "version": "1.4.0", @@ -11046,6 +11110,21 @@ } } }, + "simple-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", + "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=" + }, + "simple-get": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", + "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", + "requires": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "simple-git": { "version": "1.124.0", "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.124.0.tgz", @@ -11082,7 +11161,6 @@ "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, "requires": { "base": "^0.11.1", "debug": "^2.2.0", @@ -11098,7 +11176,6 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, "requires": { "ms": "2.0.0" } @@ -11107,7 +11184,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -11116,7 +11192,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, "requires": { "is-extendable": "^0.1.0" } @@ -11124,8 +11199,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -11133,7 +11207,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, "requires": { "define-property": "^1.0.0", "isobject": "^3.0.0", @@ -11144,7 +11217,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, "requires": { "is-descriptor": "^1.0.0" } @@ -11153,7 +11225,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -11162,7 +11233,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, "requires": { "kind-of": "^6.0.0" } @@ -11171,7 +11241,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -11184,7 +11253,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, "requires": { "kind-of": "^3.2.0" }, @@ -11193,7 +11261,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -11203,14 +11270,12 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-resolve": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, "requires": { "atob": "^2.1.1", "decode-uri-component": "^0.2.0", @@ -11240,8 +11305,7 @@ "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, "spawn-error-forwarder": { "version": "1.0.0", @@ -11303,7 +11367,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, "requires": { "extend-shallow": "^3.0.0" } @@ -11320,8 +11383,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "sshpk": { "version": "1.16.1", @@ -11350,7 +11412,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, "requires": { "define-property": "^0.2.5", "object-copy": "^0.1.0" @@ -11360,7 +11421,6 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, "requires": { "is-descriptor": "^0.1.0" } @@ -11429,7 +11489,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" @@ -11448,7 +11507,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, "requires": { "ansi-regex": "^3.0.0" } @@ -11480,8 +11538,7 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "supports-color": { "version": "5.5.0", @@ -11516,11 +11573,75 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, + "tar-fs": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz", + "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==", + "requires": { + "chownr": "^1.0.1", + "mkdirp": "^0.5.1", + "pump": "^1.0.0", + "tar-stream": "^1.1.2" + }, + "dependencies": { + "pump": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", + "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "teeny-request": { "version": "3.11.3", "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-3.11.3.tgz", "integrity": "sha512-CKncqSF7sH6p4rzCgkb/z/Pcos5efl0DmolzvlqRQUNcpRIruOhY9+T1FsIlyEbfWd7MsFpodROOwHYh2BaXzw==", - "dev": true, "requires": { "https-proxy-agent": "^2.2.1", "node-fetch": "^2.2.0", @@ -11678,7 +11799,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", - "dev": true, "optional": true }, "tmpl": { @@ -11687,17 +11807,20 @@ "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", "dev": true }, + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" + }, "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "dev": true + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, "requires": { "kind-of": "^3.0.2" }, @@ -11706,7 +11829,6 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "^1.1.5" } @@ -11717,7 +11839,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, "requires": { "define-property": "^2.0.2", "extend-shallow": "^3.0.2", @@ -11729,7 +11850,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -11738,8 +11858,7 @@ "token-stream": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", - "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=", - "dev": true + "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=" }, "tough-cookie": { "version": "2.5.0", @@ -11870,7 +11989,6 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -11901,15 +12019,6 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, "typescript": { "version": "3.4.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz", @@ -11920,7 +12029,6 @@ "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, "requires": { "source-map": "~0.5.1", "uglify-to-browserify": "~1.0.0", @@ -11931,14 +12039,12 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "dev": true, "optional": true }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", @@ -11964,7 +12070,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, "requires": { "has-value": "^0.3.1", "isobject": "^3.0.0" @@ -11974,7 +12079,6 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, "requires": { "get-value": "^2.0.3", "has-values": "^0.1.4", @@ -11985,7 +12089,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, "requires": { "isarray": "1.0.0" } @@ -11995,8 +12098,7 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" } } }, @@ -12012,8 +12114,7 @@ "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" }, "url-join": { "version": "4.0.1", @@ -12030,14 +12131,12 @@ "urlgrey": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz", - "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=", - "dev": true + "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=" }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, "util-deprecate": { "version": "1.0.2", @@ -12055,10 +12154,9 @@ } }, "uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", - "dev": true + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" }, "validate-npm-package-license": { "version": "3.0.4", @@ -12084,8 +12182,7 @@ "void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" }, "w3c-hr-time": { "version": "1.0.1", @@ -12159,11 +12256,23 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "requires": { + "string-width": "^1.0.2 || 2" + } + }, "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" }, "windows-release": { "version": "3.2.0", @@ -12178,7 +12287,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", "integrity": "sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4=", - "dev": true, "requires": { "acorn": "^3.1.0", "acorn-globals": "^3.0.0" @@ -12187,8 +12295,7 @@ "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" }, "wrap-ansi": { "version": "5.1.0", @@ -12232,8 +12339,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { "version": "2.4.1", @@ -12265,7 +12371,6 @@ "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "dev": true, "requires": { "sax": ">=0.6.0", "xmlbuilder": "~9.0.1" @@ -12274,14 +12379,12 @@ "xmlbuilder": { "version": "9.0.7", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", - "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", - "dev": true + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { "version": "4.0.0", @@ -12298,7 +12401,6 @@ "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, "requires": { "camelcase": "^1.0.2", "cliui": "^2.1.0", diff --git a/package.json b/package.json index 327c6f6..c3304e3 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ }, "homepage": "https://github.com/js-items/ky#readme", "devDependencies": { - "@js-items/foundation": "1.0.24", + "@js-items/foundation": "1.0.25", "@kube-js/semantic-release": "1.0.7", "@kube-js/tscommons": "1.0.5", "@types/jest": "24.0.13", diff --git a/src/FacadeConfig.ts b/src/FacadeConfig.ts index 88092c0..cc06cd0 100644 --- a/src/FacadeConfig.ts +++ b/src/FacadeConfig.ts @@ -7,7 +7,7 @@ export type Document = any; export default interface FacadeConfig { readonly ky: () => Promise; - readonly createFilter: (filter: Filter) => any; + readonly createFilter: (filter?: Filter) => any; readonly convertDocumentIntoItem: (document: Document) => I; readonly convertItemIntoOptions: ConvertItemIntoOptions; readonly createSort: (sort: Sort) => any; diff --git a/src/FactoryConfig.ts b/src/FactoryConfig.ts index 04fcc50..2c29020 100644 --- a/src/FactoryConfig.ts +++ b/src/FactoryConfig.ts @@ -31,7 +31,7 @@ export default interface FactoryConfig { readonly paginationKey?: string; readonly envelopParamName?: string; readonly prettyParamName?: string; - readonly createFilter: (filter: Filter) => any; + readonly createFilter: (filter?: Filter) => any; readonly convertDocumentIntoItem: (document: Document) => I; readonly convertItemIntoOptions: ConvertItemIntoOptions; readonly createSort: (sort: Sort) => any; diff --git a/src/factory.ts b/src/factory.ts index dfb0f80..addba57 100644 --- a/src/factory.ts +++ b/src/factory.ts @@ -2,6 +2,7 @@ // TODO: uncomment all commented lines import { /* DeleteItem, */ Item } from '@js-items/foundation'; // import Facade from '@js-items/foundation/dist/Facade'; +// import Facade from '@js-items/foundation/dist/Facade'; import _defaultTo from 'ramda/src/defaultTo'; import FacadeConfig from './FacadeConfig'; import FactoryConfig from './FactoryConfig'; @@ -14,6 +15,7 @@ import defaultCreateItem from './functions/createItem'; // import defaultUpdateItem from './functions/updateItem'; // import { Handler } from './types/handler'; import defaultConvertItemToOptions from './utils/defaultConvertItemToOptions'; +import { emptyOptions } from './utils/emptyOptions'; export default ({ deleteItem, @@ -25,10 +27,9 @@ export default ({ createItem, convertItemIntoOptions, ...config -}: // TODO: implement the missing method on @js-items/express and @js-items/ky -FactoryConfig< +}: FactoryConfig< I ->): any /* TODO: removed any and uncomment when implemented: Omit , 'countItems'>*/ => { +>): any /* uncomment when finished entirely: Facade */ => { const itemIntoOptions = _defaultTo(defaultConvertItemToOptions)( convertItemIntoOptions ); @@ -36,11 +37,11 @@ FactoryConfig< const facadeConfig: FacadeConfig = { convertDocumentIntoItem: (document: any) => document, convertItemIntoOptions: itemIntoOptions, - createFilter: (filter: any) => filter, + createFilter: emptyOptions, createItemOptions: defaultConvertItemToOptions, createSort: (sort: any) => sort, defaultPaginationLimit: 10, - deleteItemOptions: itemIntoOptions, + deleteItemOptions: emptyOptions, deleteItemsOptions: itemIntoOptions, getItemOptions: itemIntoOptions, getItemsOptions: itemIntoOptions, diff --git a/src/functions/createItem/index.spec.ts b/src/functions/createItem/index.spec.ts index be5fc8a..62ec694 100644 --- a/src/functions/createItem/index.spec.ts +++ b/src/functions/createItem/index.spec.ts @@ -1,6 +1,79 @@ +// tslint:disable:no-any +import { ConflictingItemError } from '@js-items/foundation'; +import testItem from '@js-items/foundation/dist/functions/utils/testItem'; +import { config } from '../../utils/testConfig'; +import createItem from './index'; + +beforeEach(() => jest.clearAllMocks()); + describe('@createItem', () => { - it('tests', () => { - // TODO: implements tests - expect(true).toBe(true); + it('creates item', async () => { + const kyMock = jest.fn(() => ({ + json: () => Promise.resolve({ item: testItem }), + })); + + const createItemOptionsMock = jest.fn(() => ({})); + + const { item } = await createItem({ + ...config, + createItemOptions: createItemOptionsMock, + ky: () => Promise.resolve(kyMock) as any, + })({ + id: testItem.id, + item: testItem, + }); + + expect(createItemOptionsMock).toBeCalledWith(testItem); + + expect(config.convertDocumentIntoItem).toBeCalledWith(testItem); + + expect(item).toEqual(testItem); + + expect(kyMock).toBeCalledWith('', { + json: { ...testItem }, + method: 'post', + }); + }); + + it('creates item with custom json object', async () => { + const kyMock = jest.fn(() => ({ + json: () => Promise.resolve({ item: testItem, otherProp: 'test' }), + })); + + const createItemOptionsMock = jest.fn(() => ({ + json: { otherProp: 'test' }, + })); + + await createItem({ + ...config, + createItemOptions: createItemOptionsMock, + ky: () => Promise.resolve(kyMock) as any, + })({ + item: testItem, + }); + + expect(kyMock).toBeCalledWith('', { + json: { ...testItem, otherProp: 'test' }, + method: 'post', + }); + }); + + it('does not create item', async () => { + const error = new ConflictingItemError('TestItem'); + + const facadeConfig = { + ...config, + createItemOptions: jest.fn(() => ({ json: { item: testItem } })), + ky: jest.fn(() => Promise.reject(error)), + }; + + try { + await createItem(facadeConfig)({ + id: testItem.id, + item: testItem, + }); + } catch (e) { + expect(e).toEqual(error); + } }); }); diff --git a/src/functions/createItem/index.ts b/src/functions/createItem/index.ts index a2c3457..81c1291 100644 --- a/src/functions/createItem/index.ts +++ b/src/functions/createItem/index.ts @@ -1,13 +1,12 @@ // tslint:disable:no-any -import { ConflictingItemError, CreateItem, Item } from '@js-items/foundation'; +import { CreateItem, Item } from '@js-items/foundation'; import { Result } from '@js-items/foundation/dist/functions/GetItem'; -import { CONFLICT } from 'http-status-codes'; import _isNil from 'ramda/src/isNil'; import FacadeConfig from '../../FacadeConfig'; export default ( config: FacadeConfig -): CreateItem => async ({ id, item }) => { +): CreateItem => async ({ item, id }) => { try { const connection = await config.ky(); @@ -21,7 +20,7 @@ export default ( const response = await connection('', { ...options, json: { - item, + ...item, ...json, }, method: 'post', @@ -31,10 +30,6 @@ export default ( item: config.convertDocumentIntoItem(response.item), }); } catch (error) { - if (error.response.status === CONFLICT) { - return Promise.reject(new ConflictingItemError(config.itemName, id)); - } - return Promise.reject(error); } }; diff --git a/src/functions/deleteItem/index.spec.ts b/src/functions/deleteItem/index.spec.ts index c8f598b..ab984e3 100644 --- a/src/functions/deleteItem/index.spec.ts +++ b/src/functions/deleteItem/index.spec.ts @@ -1,6 +1,69 @@ +// tslint:disable:no-any +import { ItemNotFoundError } from '@js-items/foundation'; +import testItem from '@js-items/foundation/dist/functions/utils/testItem'; +import { config } from '../../utils/testConfig'; +import deleteItem from './index'; + +beforeEach(() => jest.clearAllMocks()); + describe('@deleteItem', () => { - it('tests', () => { - // TODO: implements tests - expect(true).toBe(true); + it('deletes item with no filter', async () => { + const kyMock = jest.fn(); + + await deleteItem({ + ...config, + ky: () => Promise.resolve(kyMock) as any, + })({ + id: testItem.id, + }); + + expect(config.createFilter).toBeCalledWith({}); + + expect(kyMock).toBeCalledWith(`/${testItem.id}`, { + method: 'delete', + searchParams: { filter: JSON.stringify({}) }, + }); + }); + + it('deletes item with filter and custom search params', async () => { + const kyMock = jest.fn(); + const filter = { + id: { $eq: testItem.id }, + }; + const createFilterMock = jest.fn(() => filter); + + await deleteItem({ + ...config, + createFilter: createFilterMock, + deleteItemOptions: () => ({ searchParams: { pretty: 'true' } }), + ky: () => Promise.resolve(kyMock) as any, + })({ + filter, + id: testItem.id, + }); + + expect(createFilterMock).toBeCalledWith(filter); + + expect(kyMock).toBeCalledWith(`/${testItem.id}`, { + method: 'delete', + searchParams: { pretty: 'true', filter: JSON.stringify(filter) }, + }); + }); + + it('does not delete item', async () => { + const error = new ItemNotFoundError('TestItem', testItem.id); + + const facadeConfig = { + ...config, + ky: jest.fn(() => Promise.reject(error)), + }; + + try { + await deleteItem(facadeConfig)({ + id: testItem.id, + }); + } catch (e) { + expect(e).toEqual(error); + } }); }); diff --git a/src/functions/deleteItem/index.ts b/src/functions/deleteItem/index.ts index e69de29..78d85a3 100644 --- a/src/functions/deleteItem/index.ts +++ b/src/functions/deleteItem/index.ts @@ -0,0 +1,31 @@ +// tslint:disable:no-any +import { DeleteItem, Item } from '@js-items/foundation'; +import _isNil from 'ramda/src/isNil'; +import FacadeConfig from '../../FacadeConfig'; + +export default ( + config: FacadeConfig +): DeleteItem => async ({ filter = {}, id }) => { + try { + const connection = await config.ky(); + + const options = config.deleteItemOptions(); + + const createdFilter = config.createFilter(filter); + + const params = { filter: JSON.stringify(createdFilter) }; + + const searchParams = + !_isNil(options) && !_isNil((options as any).searchParams) + ? (options as any).searchParams + : {}; + + await connection(`/${id}`, { + ...options, + method: 'delete', + searchParams: { ...searchParams, ...params }, + }); + } catch (error) { + return Promise.reject(error); + } +}; diff --git a/src/functions/deleteItems/index.spec.ts b/src/functions/deleteItems/index.spec.ts index a6be4dc..eecb044 100644 --- a/src/functions/deleteItems/index.spec.ts +++ b/src/functions/deleteItems/index.spec.ts @@ -1,6 +1,64 @@ +// tslint:disable:no-any +import { ItemNotFoundError } from '@js-items/foundation'; +import testItem from '@js-items/foundation/dist/functions/utils/testItem'; +import { config } from '../../utils/testConfig'; +import deleteItems from './index'; + +beforeEach(() => jest.clearAllMocks()); + describe('@deleteItems', () => { - it('tests', () => { - // TODO: implements tests - expect(true).toBe(true); + it('deletes items with no filter', async () => { + const kyMock = jest.fn(); + + await deleteItems({ + ...config, + ky: () => Promise.resolve(kyMock) as any, + })({}); + + expect(config.createFilter).toBeCalledWith({}); + + expect(kyMock).toBeCalledWith('', { + method: 'delete', + searchParams: { filter: JSON.stringify({}) }, + }); + }); + + it('deletes items with filter and custom search params', async () => { + const kyMock = jest.fn(); + const filter = { + id: { $eq: testItem.id }, + }; + const createFilterMock = jest.fn(() => filter); + + await deleteItems({ + ...config, + createFilter: createFilterMock, + deleteItemsOptions: () => ({ searchParams: { pretty: 'true' } }), + ky: () => Promise.resolve(kyMock) as any, + })({ + filter, + }); + + expect(createFilterMock).toBeCalledWith(filter); + + expect(kyMock).toBeCalledWith('', { + method: 'delete', + searchParams: { pretty: 'true', filter: JSON.stringify(filter) }, + }); + }); + + it('does not delete items', async () => { + const error = new ItemNotFoundError('TestItem', testItem.id); + + const facadeConfig = { + ...config, + ky: jest.fn(() => Promise.reject(error)), + }; + + try { + await deleteItems(facadeConfig)({}); + } catch (e) { + expect(e).toEqual(error); + } }); }); diff --git a/src/functions/deleteItems/index.ts b/src/functions/deleteItems/index.ts index e69de29..8d4ab1b 100644 --- a/src/functions/deleteItems/index.ts +++ b/src/functions/deleteItems/index.ts @@ -0,0 +1,31 @@ +// tslint:disable:no-any +import { DeleteItems, Item } from '@js-items/foundation'; +import _isNil from 'ramda/src/isNil'; +import FacadeConfig from '../../FacadeConfig'; + +export default ( + config: FacadeConfig +): DeleteItems => async ({ filter = {} }) => { + try { + const connection = await config.ky(); + + const options = config.deleteItemsOptions(); + + const createdFilter = config.createFilter(filter); + + const params = { filter: JSON.stringify(createdFilter) }; + + const searchParams = + !_isNil(options) && !_isNil((options as any).searchParams) + ? (options as any).searchParams + : {}; + + await connection('', { + ...options, + method: 'delete', + searchParams: { ...searchParams, ...params }, + }); + } catch (error) { + return Promise.reject(error); + } +}; diff --git a/src/functions/getItem/index.spec.ts b/src/functions/getItem/index.spec.ts index 218a984..ad8827a 100644 --- a/src/functions/getItem/index.spec.ts +++ b/src/functions/getItem/index.spec.ts @@ -1,6 +1,91 @@ +// tslint:disable:no-any +import { ItemNotFoundError } from '@js-items/foundation'; +import testItem from '@js-items/foundation/dist/functions/utils/testItem'; +import { config } from '../../utils/testConfig'; +import getItem from './index'; + +beforeEach(() => jest.clearAllMocks()); + describe('@getItem', () => { - it('tests', () => { - // TODO: implements tests - expect(true).toBe(true); + it('gets item', async () => { + const kyMock = jest.fn(() => ({ + json: () => Promise.resolve({ item: testItem }), + })); + + const getItemOptionsMock = jest.fn(() => ({})); + const createFilterMock = jest.fn(() => ({})); + + const { item } = await getItem({ + ...config, + createFilter: createFilterMock, + getItemOptions: getItemOptionsMock, + ky: () => Promise.resolve(kyMock) as any, + })({ + id: testItem.id, + }); + + expect(createFilterMock).toBeCalledWith({}); + + expect(getItemOptionsMock).toBeCalledTimes(1); + + expect(config.convertDocumentIntoItem).toBeCalledWith(testItem); + + expect(item).toEqual(testItem); + + expect(kyMock).toBeCalledWith(`/${testItem.id}`, { + method: 'get', + searchParams: { filter: JSON.stringify({}) }, + }); + }); + + it('gets item with custom filter object', async () => { + const kyMock = jest.fn(() => ({ + json: () => Promise.resolve({ item: testItem, otherProp: 'test' }), + })); + + const filter = { + id: { $eq: testItem.id }, + }; + + const getItemOptionsMock = jest.fn(() => ({ + searchParams: { pretty: 'true' }, + })); + + const createFilterMock = jest.fn(() => filter); + + await getItem({ + ...config, + createFilter: createFilterMock, + getItemOptions: getItemOptionsMock, + ky: () => Promise.resolve(kyMock) as any, + })({ + filter, + id: testItem.id, + }); + + expect(createFilterMock).toBeCalledWith(filter); + + expect(kyMock).toBeCalledWith(`/${testItem.id}`, { + method: 'get', + searchParams: { pretty: 'true', filter: JSON.stringify(filter) }, + }); + }); + + it('does not get item', async () => { + const error = new ItemNotFoundError('TestItem', testItem.id); + + const facadeConfig = { + ...config, + getItemOptions: jest.fn(() => ({ json: { item: testItem } })), + ky: jest.fn(() => Promise.reject(error)), + }; + + try { + await getItem(facadeConfig)({ + id: testItem.id, + }); + } catch (e) { + expect(e).toEqual(error); + } }); }); diff --git a/src/functions/getItem/index.ts b/src/functions/getItem/index.ts index e69de29..7a9c7d5 100644 --- a/src/functions/getItem/index.ts +++ b/src/functions/getItem/index.ts @@ -0,0 +1,37 @@ +// tslint:disable:no-any +import { GetItem, Item } from '@js-items/foundation'; +import { Result } from '@js-items/foundation/dist/functions/GetItem'; +import _isNil from 'ramda/src/isNil'; +import FacadeConfig from '../../FacadeConfig'; + +export default (config: FacadeConfig): GetItem => async ({ + id, + filter = {}, +}) => { + try { + const connection = await config.ky(); + + const createFilter = config.createFilter(filter); + + const options = config.getItemOptions(); + + const params = { filter: JSON.stringify(createFilter) }; + + const searchParams = + !_isNil(options) && !_isNil((options as any).searchParams) + ? (options as any).searchParams + : {}; + + const response = await connection(`/${id}`, { + ...options, + method: 'get', + searchParams: { ...searchParams, ...params }, + }).json>(); + + return Promise.resolve({ + item: config.convertDocumentIntoItem(response.item), + }); + } catch (error) { + return Promise.reject(error); + } +}; diff --git a/src/functions/getItems/index.spec.ts b/src/functions/getItems/index.spec.ts index 276fe05..ede85a6 100644 --- a/src/functions/getItems/index.spec.ts +++ b/src/functions/getItems/index.spec.ts @@ -1,6 +1,101 @@ +// tslint:disable:no-any +import { createCursorFromItem, ItemNotFoundError } from '@js-items/foundation'; +import testItem from '@js-items/foundation/dist/functions/utils/testItem'; +import { asc } from '@js-items/foundation/dist/interfaces/SortOrder'; +import { config } from '../../utils/testConfig'; +import getItems from './index'; + +beforeEach(() => jest.clearAllMocks()); + +const testItemCursor = createCursorFromItem(testItem, { id: asc }); + +const kyMock = jest.fn(() => ({ + json: jest.fn(() => ({ + cursor: { + after: testItemCursor, + before: testItemCursor, + hasAfter: false, + hasBefore: false, + }, + items: [testItem], + })), +})); + +const filter = { + id: { $eq: testItem.id }, +}; + +const expectedSearchParams = { + after: undefined, + before: undefined, + filter: JSON.stringify(filter), + limit: 10, + sort: JSON.stringify({}), +}; + describe('@getItems', () => { - it('tests', () => { - // TODO: implements tests - expect(true).toBe(true); + it('gets items with no filter', async () => { + await getItems({ + ...config, + ky: () => Promise.resolve(kyMock) as any, + })({}); + + expect(config.getItemsOptions).toBeCalledTimes(1); + + expect(config.createFilter).toBeCalledWith({}); + + expect(config.createSort).toBeCalledWith({ id: 'asc' }); + + expect(kyMock).toBeCalledWith('', { + method: 'get', + searchParams: { ...expectedSearchParams, filter: JSON.stringify({}) }, + }); }); + + it('gets items with filter and custom search params', async () => { + const createFilterMock = jest.fn(() => filter); + + const { cursor, items } = await getItems({ + ...config, + createFilter: createFilterMock, + getItemsOptions: () => ({ searchParams: { pretty: 'true' } }), + ky: () => Promise.resolve(kyMock) as any, + })({ + filter, + sort: { booleanProperty: 'desc' }, + }); + + expect(createFilterMock).toBeCalledWith(filter); + + expect(config.createSort).toBeCalledWith({ booleanProperty: 'desc' }); + + expect(kyMock).toBeCalledWith('', { + method: 'get', + searchParams: { ...expectedSearchParams, pretty: 'true' }, + }); + + expect(items).toEqual([testItem]); + expect(cursor).toEqual({ + after: testItemCursor, + before: testItemCursor, + hasAfter: false, + hasBefore: false, + }); + }); + + it('does not get items', async () => { + const error = new ItemNotFoundError('TestItem'); + + const facadeConfig = { + ...config, + ky: jest.fn(() => Promise.reject(error)), + }; + + try { + await getItems(facadeConfig)({}); + } catch (e) { + expect(e).toEqual(error); + } + }); +// tslint:disable-next-line:max-file-line-count }); diff --git a/src/functions/getItems/index.ts b/src/functions/getItems/index.ts index e69de29..876fdc9 100644 --- a/src/functions/getItems/index.ts +++ b/src/functions/getItems/index.ts @@ -0,0 +1,61 @@ +// tslint:disable:no-any +import { GetItems, Item, Pagination, Sort } from '@js-items/foundation'; +import { Result } from '@js-items/foundation/dist/functions/GetItems'; +import { asc } from '@js-items/foundation/dist/interfaces/SortOrder'; +import _isNil from 'ramda/src/isNil'; +import FacadeConfig from '../../FacadeConfig'; + +export default (config: FacadeConfig): GetItems => { + const defaultPagination: Pagination = { + after: undefined, + before: undefined, + limit: config.defaultPaginationLimit, + }; + + // tslint:disable-next-line:no-object-literal-type-assertion + const defaultSort = { id: asc } as Sort; + + return async ({ + filter = {}, + sort = defaultSort, + pagination = defaultPagination, + }) => { + try { + const connection = await config.ky(); + + const options = config.getItemsOptions(); + + const createdFilter = config.createFilter(filter); + + const createdSort = config.createSort(sort); + + const params = { + after: pagination.after, + before: pagination.before, + filter: JSON.stringify(createdFilter), + limit: pagination.limit, + sort: JSON.stringify(createdSort), + }; + + const searchParams = + !_isNil(options) && !_isNil((options as any).searchParams) + ? (options as any).searchParams + : {}; + + const { items: fetchedItems, cursor } = await connection('', { + ...options, + method: 'get', + searchParams: { ...params, ...searchParams }, + }).json>(); + + const items = fetchedItems.map(config.convertDocumentIntoItem); + + return Promise.resolve({ + cursor, + items, + }); + } catch (error) { + return Promise.reject(error); + } + }; +}; diff --git a/src/functions/replaceItem/index.spec.ts b/src/functions/replaceItem/index.spec.ts index ba09260..8621560 100644 --- a/src/functions/replaceItem/index.spec.ts +++ b/src/functions/replaceItem/index.spec.ts @@ -1,6 +1,87 @@ +// tslint:disable:no-any +import { ItemNotFoundError } from '@js-items/foundation'; +import testItem from '@js-items/foundation/dist/functions/utils/testItem'; +import { config } from '../../utils/testConfig'; +import replaceItem from './index'; + +beforeEach(() => jest.clearAllMocks()); + +const filter = { + id: { $eq: testItem.id }, +}; + +const defaultOptions = { + id: testItem.id, + item: testItem, +}; + +const kyMock = jest.fn(() => ({ + json: () => Promise.resolve({ item: testItem }), +})); + describe('@replaceItem', () => { - it('tests', () => { - // TODO: implements tests - expect(true).toBe(true); + it('replaces item without filter', async () => { + const createFilterMock = jest.fn(() => ({})); + const replaceItemOptionsMock = jest.fn(() => ({})); + + const { item } = await replaceItem({ + ...config, + createFilter: createFilterMock, + ky: () => Promise.resolve(kyMock) as any, + replaceItemOptions: replaceItemOptionsMock, + })(defaultOptions); + + expect(replaceItemOptionsMock).toBeCalledWith(testItem); + + expect(createFilterMock).toBeCalledWith({}); + + expect(config.convertDocumentIntoItem).toBeCalledWith(testItem); + + expect(item).toEqual(testItem); + + expect(kyMock).toBeCalledWith(`/${testItem.id}`, { + json: { ...testItem }, + method: 'put', + searchParams: { filter: JSON.stringify({}) }, + }); + }); + + it('replaces item with custom filter and search params', async () => { + const createFilterMock = jest.fn(() => filter); + + const replaceItemOptionsMock = jest.fn(() => ({ + searchParams: { pretty: 'false' }, + })); + + await replaceItem({ + ...config, + createFilter: createFilterMock, + ky: () => Promise.resolve(kyMock) as any, + replaceItemOptions: replaceItemOptionsMock, + })({ ...defaultOptions, filter }); + + expect(createFilterMock).toBeCalledWith(filter); + + expect(kyMock).toBeCalledWith(`/${testItem.id}`, { + json: { ...testItem }, + method: 'put', + searchParams: { filter: JSON.stringify(filter), pretty: 'false' }, + }); + }); + + it('does not replace item', async () => { + const error = new ItemNotFoundError('TestItem'); + + const facadeConfig = { + ...config, + ky: jest.fn(() => Promise.reject(error)), + replaceItemOptions: jest.fn(() => ({ json: { item: testItem } })), + }; + + try { + await replaceItem(facadeConfig)(defaultOptions); + } catch (e) { + expect(e).toEqual(error); + } }); }); diff --git a/src/functions/replaceItem/index.ts b/src/functions/replaceItem/index.ts index e69de29..794411d 100644 --- a/src/functions/replaceItem/index.ts +++ b/src/functions/replaceItem/index.ts @@ -0,0 +1,45 @@ +// tslint:disable:no-any +import { Item, ReplaceItem } from '@js-items/foundation'; +import { Result } from '@js-items/foundation/dist/functions/ReplaceItem'; +import _isNil from 'ramda/src/isNil'; +import FacadeConfig from '../../FacadeConfig'; + +export default ( + config: FacadeConfig +): ReplaceItem => async ({ id, item, filter = {} }) => { + try { + const connection = await config.ky(); + + const options = config.replaceItemOptions({ ...item, id }); + + const createFilter = config.createFilter(filter); + + const params = { filter: JSON.stringify(createFilter) }; + + const searchParams = + !_isNil(options) && !_isNil((options as any).searchParams) + ? (options as any).searchParams + : {}; + + const json = + !_isNil(options) && !_isNil((options as any).json) + ? (options as any).json + : {}; + + const response = await connection(`/${id}`, { + ...options, + json: { + ...item, + ...json, + }, + method: 'put', + searchParams: { ...searchParams, ...params }, + }).json>(); + + return Promise.resolve({ + item: config.convertDocumentIntoItem(response.item), + }); + } catch (error) { + return Promise.reject(error); + } +}; diff --git a/src/functions/updateItem/index.spec.ts b/src/functions/updateItem/index.spec.ts index 6928881..c163ae5 100644 --- a/src/functions/updateItem/index.spec.ts +++ b/src/functions/updateItem/index.spec.ts @@ -1,6 +1,87 @@ +// tslint:disable:no-any +import { ItemNotFoundError } from '@js-items/foundation'; +import testItem from '@js-items/foundation/dist/functions/utils/testItem'; +import { config } from '../../utils/testConfig'; +import updateItem from './index'; + +beforeEach(() => jest.clearAllMocks()); + +const filter = { + id: { $eq: testItem.id }, +}; + +const defaultOptions = { + id: testItem.id, + patch: testItem, +}; + +const kyMock = jest.fn(() => ({ + json: () => Promise.resolve({ item: testItem }), +})); + describe('@updateItem', () => { - it('tests', () => { - // TODO: implements tests - expect(true).toBe(true); + it('updates item without filter', async () => { + const createFilterMock = jest.fn(() => ({})); + const updateItemOptionsMock = jest.fn(() => ({})); + + const { item } = await updateItem({ + ...config, + createFilter: createFilterMock, + ky: () => Promise.resolve(kyMock) as any, + updateItemOptions: updateItemOptionsMock, + })(defaultOptions); + + expect(updateItemOptionsMock).toBeCalledWith(testItem); + + expect(createFilterMock).toBeCalledWith({}); + + expect(config.convertDocumentIntoItem).toBeCalledWith(testItem); + + expect(item).toEqual(testItem); + + expect(kyMock).toBeCalledWith(`/${testItem.id}`, { + json: { ...testItem }, + method: 'patch', + searchParams: { filter: JSON.stringify({}) }, + }); + }); + + it('updates item with custom filter and search params', async () => { + const createFilterMock = jest.fn(() => filter); + + const updateItemOptionsMock = jest.fn(() => ({ + searchParams: { pretty: 'false' }, + })); + + await updateItem({ + ...config, + createFilter: createFilterMock, + ky: () => Promise.resolve(kyMock) as any, + updateItemOptions: updateItemOptionsMock, + })({ ...defaultOptions, filter }); + + expect(createFilterMock).toBeCalledWith(filter); + + expect(kyMock).toBeCalledWith(`/${testItem.id}`, { + json: { ...testItem }, + method: 'patch', + searchParams: { filter: JSON.stringify(filter), pretty: 'false' }, + }); + }); + + it('does not update item', async () => { + const error = new ItemNotFoundError('TestItem'); + + const facadeConfig = { + ...config, + ky: jest.fn(() => Promise.reject(error)), + updateItemOptions: jest.fn(() => ({ json: { item: testItem } })), + }; + + try { + await updateItem(facadeConfig)(defaultOptions); + } catch (e) { + expect(e).toEqual(error); + } }); }); diff --git a/src/functions/updateItem/index.ts b/src/functions/updateItem/index.ts index e69de29..920ac5e 100644 --- a/src/functions/updateItem/index.ts +++ b/src/functions/updateItem/index.ts @@ -0,0 +1,45 @@ +// tslint:disable:no-any +import { Item, UpdateItem } from '@js-items/foundation'; +import { Result } from '@js-items/foundation/dist/functions/UpdateItem'; +import _isNil from 'ramda/src/isNil'; +import FacadeConfig from '../../FacadeConfig'; + +export default ( + config: FacadeConfig +): UpdateItem => async ({ id, patch, filter = {} }) => { + try { + const connection = await config.ky(); + + const options = config.updateItemOptions({ ...patch, id }); + + const createFilter = config.createFilter(filter); + + const params = { filter: JSON.stringify(createFilter) }; + + const searchParams = + !_isNil(options) && !_isNil((options as any).searchParams) + ? (options as any).searchParams + : {}; + + const json = + !_isNil(options) && !_isNil((options as any).json) + ? (options as any).json + : {}; + + const response = await connection(`/${id}`, { + ...options, + json: { + ...patch, + ...json, + }, + method: 'patch', + searchParams: { ...searchParams, ...params }, + }).json>(); + + return Promise.resolve({ + item: config.convertDocumentIntoItem(response.item), + }); + } catch (error) { + return Promise.reject(error); + } +}; diff --git a/src/types/convertItemIntoOptions/index.ts b/src/types/convertItemIntoOptions/index.ts index 3ac644d..e4fc079 100644 --- a/src/types/convertItemIntoOptions/index.ts +++ b/src/types/convertItemIntoOptions/index.ts @@ -1,4 +1,4 @@ import { Item } from "@js-items/foundation"; import { Options } from "ky"; -export type ConvertItemIntoOptions = (item: Partial) => Options | undefined; \ No newline at end of file +export type ConvertItemIntoOptions = (item?: Partial) => Options | undefined; \ No newline at end of file diff --git a/src/utils/emptyOptions/index.ts b/src/utils/emptyOptions/index.ts new file mode 100644 index 0000000..1502f09 --- /dev/null +++ b/src/utils/emptyOptions/index.ts @@ -0,0 +1 @@ +export const emptyOptions = () => ({}); diff --git a/src/utils/testConfig/index.ts b/src/utils/testConfig/index.ts new file mode 100644 index 0000000..8ae62a0 --- /dev/null +++ b/src/utils/testConfig/index.ts @@ -0,0 +1,31 @@ +import testItem, { + TestItem, +} from '@js-items/foundation/dist/functions/utils/testItem'; +import FacadeConfig from '../../FacadeConfig'; +import { emptyOptions } from '../emptyOptions'; + +export const defaultDocumentConverter = jest.fn(() => ({})); + +export const jsonOptions = jest.fn(() => ({ json: { item: testItem } })); + +const ky = jest.fn( + () => Promise.resolve(jest.fn(() => ({ json: () => ({ item: testItem }) }))) + // tslint:disable-next-line:no-any +) as any; + +export const config: FacadeConfig = { + convertDocumentIntoItem: jest.fn(() => testItem), + convertItemIntoOptions: defaultDocumentConverter, + createFilter: jest.fn(emptyOptions), + createItemOptions: defaultDocumentConverter, + createSort: jest.fn(emptyOptions), + defaultPaginationLimit: 10, + deleteItemOptions: defaultDocumentConverter, + deleteItemsOptions: defaultDocumentConverter, + getItemOptions: defaultDocumentConverter, + getItemsOptions: defaultDocumentConverter, + itemName: 'TestItem', + ky, + replaceItemOptions: jsonOptions, + updateItemOptions: jsonOptions, +}; diff --git a/src/utils/testData/index.ts b/src/utils/testData/index.ts new file mode 100644 index 0000000..78d27d9 --- /dev/null +++ b/src/utils/testData/index.ts @@ -0,0 +1,14 @@ +import { Item } from '@js-items/foundation'; + +export interface TestItem extends Item { + readonly booleanProperty: boolean; + readonly stringProperty: string; + readonly numberProperty: number; +} + +export const item = { + booleanProperty: true, + id: '1', + numberProperty: 3, + stringProperty: 'name', +};