From 2ddd46379039dd7ef3815b5fbbf0f1cf69d4596b Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Thu, 9 Apr 2020 16:53:48 +0100 Subject: [PATCH] api tests --- packages/server/app.js | 10 +- .../middleware/controllers/application.js | 32 +- .../server/middleware/controllers/client.js | 41 +- .../controllers/couchdbNamingConventions.js | 12 - .../server/middleware/controllers/database.js | 48 ++- .../server/middleware/controllers/model.js | 19 +- .../server/middleware/controllers/record.js | 48 ++- .../server/middleware/controllers/schema.js | 11 - .../server/middleware/controllers/static.js | 27 -- .../server/middleware/controllers/user.js | 36 +- .../server/middleware/controllers/view.js | 19 + .../server/middleware/routes/neo/database.js | 1 - .../server/middleware/routes/neo/model.js | 8 +- .../server/middleware/routes/neo/schema.js | 13 - .../server/middleware/routes/neo/static.js | 0 .../routes/neo/tests/application.spec.js | 41 ++ .../routes/neo/tests/couchTestUtils.js | 31 ++ .../routes/neo/tests/database.spec.js | 53 +++ .../middleware/routes/neo/tests/user.spec.js | 39 ++ .../routes/tests/application.spec.js | 28 -- packages/server/package.json | 1 - packages/server/yarn.lock | 370 +++--------------- 22 files changed, 349 insertions(+), 539 deletions(-) delete mode 100644 packages/server/middleware/controllers/couchdbNamingConventions.js delete mode 100644 packages/server/middleware/controllers/schema.js delete mode 100644 packages/server/middleware/controllers/static.js delete mode 100644 packages/server/middleware/routes/neo/schema.js delete mode 100644 packages/server/middleware/routes/neo/static.js create mode 100644 packages/server/middleware/routes/neo/tests/application.spec.js create mode 100644 packages/server/middleware/routes/neo/tests/couchTestUtils.js create mode 100644 packages/server/middleware/routes/neo/tests/database.spec.js create mode 100644 packages/server/middleware/routes/neo/tests/user.spec.js delete mode 100644 packages/server/middleware/routes/tests/application.spec.js diff --git a/packages/server/app.js b/packages/server/app.js index 8d0d29f7f6..365e9730d7 100644 --- a/packages/server/app.js +++ b/packages/server/app.js @@ -10,11 +10,11 @@ module.exports = async budibaseContext => { const { config } = budibaseContext app.keys = config.keys app.context.master = budibaseContext.master - app.context.getAppPackage = await initialiseRuntimePackages( - budibaseContext, - app.context.master, - config.latestPackagesFolder - ) + // app.context.getAppPackage = await initialiseRuntimePackages( + // budibaseContext, + // app.context.master, + // config.latestPackagesFolder + // ) app.use(koaBody({ multipart: true })) app.use(logger()); app.use(router(config, app).routes()) diff --git a/packages/server/middleware/controllers/application.js b/packages/server/middleware/controllers/application.js index ef45b2d886..bf4290c8b4 100644 --- a/packages/server/middleware/controllers/application.js +++ b/packages/server/middleware/controllers/application.js @@ -1,19 +1,21 @@ const couchdb = require("../../db"); -const controller = { - fetch: async ctx => { - const clientDb = couchdb.db.use(`client-${ctx.params.clientId}`); - const body = await clientDb.view("client", "by_type", { - include_docs: true, - key: ["app"] - }); +exports.fetch = async function(ctx) { + const clientDb = couchdb.db.use(`client-${ctx.params.clientId}`); + const body = await clientDb.view("client", "by_type", { + include_docs: true, + key: ["app"] + }); - ctx.body = body.rows; - }, - create: async ctx => { - const clientDb = couchdb.db.use(`client-${ctx.params.clientId}`); - ctx.body = await clientDb.insert(ctx.request.body) + ctx.body = body.rows; +}; + +exports.create = async function(ctx) { + const clientDb = couchdb.db.use(`client-${ctx.params.clientId}`); + const { id, rev } = await clientDb.insert(ctx.request.body) + ctx.body = { + id, + rev, + message: `Application ${ctx.request.body.name} created successfully` } -} - -module.exports = controller; \ No newline at end of file +}; \ No newline at end of file diff --git a/packages/server/middleware/controllers/client.js b/packages/server/middleware/controllers/client.js index 9f8ca2098c..6b5835b886 100644 --- a/packages/server/middleware/controllers/client.js +++ b/packages/server/middleware/controllers/client.js @@ -1,28 +1,25 @@ const couchdb = require("../../db"); -const controller = { - create: async ctx => { - const clientId = `client-${ctx.request.body.clientId}`; - await couchdb.db.create(clientId); +exports.create = async function(ctx) { + const clientId = `client-${ctx.request.body.clientId}`; + await couchdb.db.create(clientId); - await couchdb.db.use(clientId).insert({ - views: { - by_type: { - map: function(doc) { - emit([doc.type], doc._id); - } + await couchdb.db.use(clientId).insert({ + views: { + by_type: { + map: function(doc) { + emit([doc.type], doc._id); } - } - }, '_design/client'); - ctx.body = { - message: `Client Database ${clientId} successfully provisioned.` + } } - }, - destroy: async ctx => { - const databaseId = ctx.params.databaseId; - const database = couchdb.db.use(databaseId) - ctx.body = await database.destroy(ctx.params.recordId); - }, -} + }, '_design/client'); + ctx.body = { + message: `Client Database ${clientId} successfully provisioned.` + } +}; -module.exports = controller; \ No newline at end of file +exports.destroy = async function(ctx) { + const databaseId = ctx.params.databaseId; + const database = couchdb.db.use(databaseId) + ctx.body = await database.destroy(ctx.params.recordId); +}; \ No newline at end of file diff --git a/packages/server/middleware/controllers/couchdbNamingConventions.js b/packages/server/middleware/controllers/couchdbNamingConventions.js deleted file mode 100644 index e82042c6af..0000000000 --- a/packages/server/middleware/controllers/couchdbNamingConventions.js +++ /dev/null @@ -1,12 +0,0 @@ -export function allModelsViewName(modelId) { - return `all_${modelId}` -} -export function allModelsDesignDocName(modelId) { - return `all_${modelId}` -} -export function instanceDatabaseId (clientId, instanceId) { - return `instance:${clientId}:${instanceId}` -} -export function clientDatabaseId(clientId) { - return `client:${clientId}` -} diff --git a/packages/server/middleware/controllers/database.js b/packages/server/middleware/controllers/database.js index e52b6fb7e7..aa7abe1749 100644 --- a/packages/server/middleware/controllers/database.js +++ b/packages/server/middleware/controllers/database.js @@ -1,30 +1,28 @@ const couchdb = require("../../db"); -const controller = { - fetch: async ctx => { - - }, - create: async ctx => { - const databaseName = ctx.request.body.name; - await couchdb.db.create(databaseName); - await couchdb.db.use(databaseName).insert({ - views: { - by_type: { - map: function(doc) { - emit([doc.type], doc._id); - } +exports.create = async function(ctx) { + const databaseName = ctx.request.body.name; + await couchdb.db.create(databaseName); + await couchdb.db.use(databaseName).insert({ + views: { + by_type: { + map: function(doc) { + emit([doc.type], doc._id); } - } - }, '_design/database'); - - ctx.body = { - message: `Database ${databaseName} successfully provisioned.`, - status: 200 + } } - }, - destroy: async ctx => { - ctx.body = await couchdb.db.destroy(ctx.params.databaseName) - } -} + }, '_design/database'); -module.exports = controller; \ No newline at end of file + ctx.body = { + message: `Instance Database ${databaseName} successfully provisioned.`, + status: 200 + } +}; + +exports.destroy = async function(ctx) { + await couchdb.db.destroy(ctx.params.databaseId) + ctx.body = { + message: `Instance Database ${ctx.params.databaseId} successfully destroyed.`, + status: 200 + } +}; \ No newline at end of file diff --git a/packages/server/middleware/controllers/model.js b/packages/server/middleware/controllers/model.js index 2350f3c1d2..a3597f82fd 100644 --- a/packages/server/middleware/controllers/model.js +++ b/packages/server/middleware/controllers/model.js @@ -1,11 +1,16 @@ const couchdb = require("../../db"); -const controller = { - create: async ctx => { - const appDatabase = couchdb.db.use(ctx.params.appId) - ctx.body = await appDatabase.insert(ctx.request.body); - }, - apply: async ctx => {} +exports.create = async function(ctx) { + const db = couchdb.db.use(ctx.params.instanceId) + ctx.body = await db.insert(ctx.request.body); + // Create the "all" view for that model + } -module.exports = controller; +exports.update = async function(ctx) { +} + +exports.destroy = async function(ctx) { + const db = couchdb.db.use(ctx.params.instanceId) + ctx.body = await db.destroy(ctx.params.modelId, ctx.params.rev); +} diff --git a/packages/server/middleware/controllers/record.js b/packages/server/middleware/controllers/record.js index 9215dbe3da..fd15a7ec09 100644 --- a/packages/server/middleware/controllers/record.js +++ b/packages/server/middleware/controllers/record.js @@ -1,19 +1,15 @@ const couchdb = require("../../db") -const { cloneDeep, mapValues, keyBy } = require("lodash/fp") +const { mapValues, keyBy } = require("lodash/fp") const { validateRecord, } = require("../../../common/src/records/validateRecord.mjs") const { events } = require("../../../common/src/common/events.mjs") const { $ } = require("../../../common/src/common") -import { safeParseField } from "../../../common/src/schema/types" -import { - allModelsViewName, - allModelsDesignDocName, -} from "./couchdbNamingConventions" +const { safeParseField } = require("../../../common/src/schema/types"); -async function save(ctx) { +exports.save = async function(ctx) { const db = couchdb.use(ctx.databaseId) - const record = cloneDeep(ctx.body) + const record = ctx.body if (!ctx.schema.findModel(record._modelId)) { ctx.status = 400 @@ -51,30 +47,30 @@ async function save(ctx) { return record } -async function fetch(ctx) { +exports.fetch = function(ctx) { const db = couchdb.db.use(ctx.params.databaseId) const model = ctx.schema.findModel(ctx.modelName) ctx.body = db.viewAsStream( - allModelsDesignDocName(model.id), - allModelsViewName(model.id), + `all_${model.id}`, + `all_${model.id}`, { include_docs: true, } ) } -async function find(ctx) { +exports.find = async function(ctx) { const db = couchdb.db.use(ctx.params.databaseId) - const { body, status } = await _findRecord( + const { body, status } = await _findRecord({ db, - ctx.schema, - ctx.params.recordId - ) + schema: ctx.schema, + id: ctx.params.recordId + }) ctx.status = status ctx.body = body } -async function _findRecord(db, schema, id) { +async function _findRecord({ db, schema, id }) { let storedData try { storedData = await db.get(id) @@ -84,21 +80,23 @@ async function _findRecord(db, schema, id) { const model = schema.findModel(storedData._modelId) + // TODO refactor const loadedRecord = $(model.fields, [ keyBy("name"), mapValues(f => safeParseField(f, storedData)), ]) + - loadedRecord._rev = storedData._rev - loadedRecord._id = storedData._id - loadedRecord._modelId = storedData._modelId - return loadedRecord + return { + ...loadedRecord, + _rev: storedData._rev, + _id: storedData._id, + _modelId: storedData._modelId + } } -async function destroy(ctx) { +exports.destroy = async function(ctx) { const databaseId = ctx.params.databaseId; const database = couchdb.db.use(databaseId) ctx.body = await database.destroy(ctx.params.recordId); -} - -module.exports = { save, fetch, destroy, find } +}; \ No newline at end of file diff --git a/packages/server/middleware/controllers/schema.js b/packages/server/middleware/controllers/schema.js deleted file mode 100644 index 8b2f874096..0000000000 --- a/packages/server/middleware/controllers/schema.js +++ /dev/null @@ -1,11 +0,0 @@ -const couchdb = require("../../db"); - -const controller = { - create: async ctx => { - const appDatabase = couchdb.db.use(ctx.params.appId) - ctx.body = await appDatabase.insert(ctx.request.body); - }, - apply: async ctx => {} -} - -module.exports = controller; \ No newline at end of file diff --git a/packages/server/middleware/controllers/static.js b/packages/server/middleware/controllers/static.js deleted file mode 100644 index 573498eb6e..0000000000 --- a/packages/server/middleware/controllers/static.js +++ /dev/null @@ -1,27 +0,0 @@ -const couchdb = require("../../db"); -const fs = require("fs"); - -const controller = { - download: async ctx => { - // const appDatabase = couchdb.db.use(ctx.params.appId) - // appDatabase.attachment.get('rabbit', 'rabbit.png', function(err, body) { - // if (!err) { - // fs.writeFile('rabbit.png', body); - // } - // }); - }, - upload: async ctx => { - // const appDatabase = couchdb.db.use(ctx.params.appId) - // fs.readFile('rabbit.png', function(err, data) { - // if (!err) { - // alice.attachment.insert('rabbit', 'rabbit.png', data, 'image/png', - // { rev: '12-150985a725ec88be471921a54ce91452' }, function(err, body) { - // if (!err) - // console.log(body); - // }); - // } - // }); - } -} - -module.exports = controller; \ No newline at end of file diff --git a/packages/server/middleware/controllers/user.js b/packages/server/middleware/controllers/user.js index 73e9ae7a10..32680118e2 100644 --- a/packages/server/middleware/controllers/user.js +++ b/packages/server/middleware/controllers/user.js @@ -1,23 +1,21 @@ const couchdb = require("../../db"); -const controller = { - fetch: async ctx => { - const database = couchdb.db.use(ctx.params.databaseId); - const data = await database.view("database", "by_type", { - include_docs: true, - key: ["user"] - }); +exports.fetch = async function(ctx) { + const database = couchdb.db.use(ctx.params.databaseId); + const data = await database.view("database", "by_type", { + include_docs: true, + key: ["user"] + }); - ctx.body = data.rows - }, - create: async ctx => { - const database = couchdb.db.use(ctx.params.databaseId); - ctx.body = await database.insert(ctx.request.body); - }, - destroy: async ctx => { - const database = couchdb.db.use(ctx.params.databaseId); - ctx.body = await database.destroy(ctx.params.userId) - } -} + ctx.body = data.rows +}; -module.exports = controller; \ No newline at end of file +exports.create = async function(ctx) { + const database = couchdb.db.use(ctx.params.databaseId); + ctx.body = await database.insert(ctx.request.body); +}; + +exports.destroy = async function(ctx) { + const database = couchdb.db.use(ctx.params.databaseId); + ctx.body = await database.destroy(ctx.params.userId) +}; \ No newline at end of file diff --git a/packages/server/middleware/controllers/view.js b/packages/server/middleware/controllers/view.js index e69de29bb2..ada3fb384c 100644 --- a/packages/server/middleware/controllers/view.js +++ b/packages/server/middleware/controllers/view.js @@ -0,0 +1,19 @@ +const couchdb = require("../../db"); + +const controller = { + fetch: async ctx => { + const database = couchdb.db.use(ctx.params.databaseId); + ctx.body = await database.list({ include_docs: true }); + }, + create: async ctx => { + const clientDb = couchdb.db.use(ctx.params.clientId); + clientDb.insert(); + ctx.body = await database.insert(ctx.request.body); + }, + destroy: async ctx => { + const database = couchdb.db.use(ctx.params.databaseId); + ctx.body = await database.destroy(ctx.params.userId) + } +} + +module.exports = controller; \ No newline at end of file diff --git a/packages/server/middleware/routes/neo/database.js b/packages/server/middleware/routes/neo/database.js index e36163748c..89b2f99fc6 100644 --- a/packages/server/middleware/routes/neo/database.js +++ b/packages/server/middleware/routes/neo/database.js @@ -4,7 +4,6 @@ const controller = require("../../controllers/database"); const router = Router(); router - .get("/api/databases", controller.fetch) .post("/api/databases", controller.create) .delete("/api/databases/:databaseId", controller.destroy); diff --git a/packages/server/middleware/routes/neo/model.js b/packages/server/middleware/routes/neo/model.js index 0044f3ecc5..6f5f374d67 100644 --- a/packages/server/middleware/routes/neo/model.js +++ b/packages/server/middleware/routes/neo/model.js @@ -4,10 +4,10 @@ const controller = require("../../controllers/model"); const router = Router(); router - .get("/api/:clientId/:appId/models", controller.fetch) - .post("/api/:clientId/:appId/models", controller.save) - .patch("/api/:clientId/:appId/models", controller.update) - .delete("/api/:clientId/:appId/models/:modelId", controller.delete) + .get("/api/:instanceId/models", controller.fetch) + .post("/api/:instanceId/models", controller.create) + .patch("/api/:instanceId/models", controller.update) + .delete("/api/:instanceId/models/:modelId", controller.delete) module.exports = router; \ No newline at end of file diff --git a/packages/server/middleware/routes/neo/schema.js b/packages/server/middleware/routes/neo/schema.js deleted file mode 100644 index d2582830e5..0000000000 --- a/packages/server/middleware/routes/neo/schema.js +++ /dev/null @@ -1,13 +0,0 @@ -const Router = require("@koa/router"); -const controller = require("../../controllers/schema"); - -const router = Router(); - -router - .get("/api/:clientId/:appId/schemas", controller.fetch) - .post("/api/:clientId/:appId/schemas", controller.save) - .patch("/api/:clientId/:appId/schemas/apply", controller.apply) - .delete("/api/:clientId/:appId/schemas/:schemaId", controller.delete) - - -module.exports = router; \ No newline at end of file diff --git a/packages/server/middleware/routes/neo/static.js b/packages/server/middleware/routes/neo/static.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/server/middleware/routes/neo/tests/application.spec.js b/packages/server/middleware/routes/neo/tests/application.spec.js new file mode 100644 index 0000000000..015436d2a3 --- /dev/null +++ b/packages/server/middleware/routes/neo/tests/application.spec.js @@ -0,0 +1,41 @@ +const couchdb = require("../../../../db"); +const supertest = require("supertest"); +const app = require("../../../../app"); +const { createClientDatabase } = require("./couchTestUtils"); + + +const CLIENT_DB_ID = "client-testing"; + +describe("/applications", () => { + let request; + + beforeAll(async () => { + const server = await app({ + config: { + port: 3000 + } + }); + request = supertest(server); + createClientDatabase(); + }); + + afterAll(async () => { + await couchdb.db.destroy(CLIENT_DB_ID) + app.close(); + }) + + describe("create", () => { + it("returns a success message when the application is successfully created", done => { + request + .post("/api/testing/applications") + .send({ name: "My App" }) + .set("Accept", "application/json") + .expect('Content-Type', /json/) + .expect(200) + .end((err, res) => { + expect(res.body.message).toEqual("Application My App created successfully"); + done(); + }); + }) + }); +}); diff --git a/packages/server/middleware/routes/neo/tests/couchTestUtils.js b/packages/server/middleware/routes/neo/tests/couchTestUtils.js new file mode 100644 index 0000000000..4747d1ec2c --- /dev/null +++ b/packages/server/middleware/routes/neo/tests/couchTestUtils.js @@ -0,0 +1,31 @@ +const couchdb = require("../../../../db"); + +const CLIENT_DB_ID = "client-testing"; + +exports.createClientDatabase = async () => { + await couchdb.db.create(CLIENT_DB_ID); + + await couchdb.db.use(CLIENT_DB_ID).insert({ + views: { + by_type: { + map: function(doc) { + emit([doc.type], doc._id); + } + } + } + }, '_design/client'); +} + +exports.createInstanceDatabase = async instanceId => { + await couchdb.db.create(instanceId); + + await couchdb.db.use(instanceId).insert({ + views: { + by_type: { + map: function(doc) { + emit([doc.type], doc._id); + } + } + } + }, '_design/database'); +} \ No newline at end of file diff --git a/packages/server/middleware/routes/neo/tests/database.spec.js b/packages/server/middleware/routes/neo/tests/database.spec.js new file mode 100644 index 0000000000..94f6344b60 --- /dev/null +++ b/packages/server/middleware/routes/neo/tests/database.spec.js @@ -0,0 +1,53 @@ +const couchdb = require("../../../../db"); +const supertest = require("supertest"); +const app = require("../../../../app"); +const { createInstanceDatabase } = require("./couchTestUtils"); + + +const TEST_INSTANCE_ID = "testing-123"; + +describe("/databases", () => { + let request; + + beforeAll(async () => { + const server = await app({ + config: { + port: 3000 + } + }); + request = supertest(server); + }); + + afterAll(async () => { + app.close(); + }) + + describe("create", () => { + it("returns a success message when the instance database is successfully created", done => { + request + .post(`/api/databases`) + .send({ name: TEST_INSTANCE_ID }) + .set("Accept", "application/json") + .expect('Content-Type', /json/) + .expect(200) + .end(async (err, res) => { + expect(res.body.message).toEqual("Instance Database testing-123 successfully provisioned."); + done(); + }); + }) + }); + + describe("destroy", () => { + it("returns a success message when the instance database is successfully deleted", done => { + request + .delete(`/api/databases/${TEST_INSTANCE_ID}`) + .set("Accept", "application/json") + .expect('Content-Type', /json/) + .expect(200) + .end(async (err, res) => { + expect(res.body.message).toEqual("Instance Database testing-123 successfully destroyed."); + done(); + }); + }) + }); +}); diff --git a/packages/server/middleware/routes/neo/tests/user.spec.js b/packages/server/middleware/routes/neo/tests/user.spec.js new file mode 100644 index 0000000000..855bcf9847 --- /dev/null +++ b/packages/server/middleware/routes/neo/tests/user.spec.js @@ -0,0 +1,39 @@ +const couchdb = require("../../../../db"); +const supertest = require("supertest"); +const app = require("../../../../app"); +const { createInstanceDatabase } = require("./couchTestUtils"); + + +const TEST_INSTANCE_ID = "testing-123"; + +describe("/users", () => { + let request; + + beforeAll(async () => { + const server = await app({ + config: { + port: 3000 + } + }); + request = supertest(server); + }); + + afterAll(async () => { + app.close(); + }) + + describe("create", () => { + it("returns a success message when the instance database is successfully created", done => { + request + .post(`/api/users`) + .send({ name: TEST_INSTANCE_ID }) + .set("Accept", "application/json") + .expect('Content-Type', /json/) + .expect(200) + .end(async (err, res) => { + expect(res.body.message).toEqual("Instance Database testing-123 successfully provisioned."); + done(); + }); + }) + }); +}); diff --git a/packages/server/middleware/routes/tests/application.spec.js b/packages/server/middleware/routes/tests/application.spec.js deleted file mode 100644 index 6e6931862f..0000000000 --- a/packages/server/middleware/routes/tests/application.spec.js +++ /dev/null @@ -1,28 +0,0 @@ -const mockCouch = require("mock-couch"); -const request = require("supertest"); - -describe("/applications", () => { - beforeEach(() => { - const couchdb = mockCouch.createServer(); - couchdb.listen(5984); - - // This creates a db for Mock Couch. The db is nothing but an array of objects. - // If we provide an object with an _id property, it will use it. Otherwise, it will create a random one. - couchdb.addDB("people", [ - { name: "one name", lastname: "one lastname" }, - { _id: "4568797890", name: "second name", lastname: "other lastname" }, - ]); - }); - - describe("create", () => { - it("returns a success message when the application is successfully created", () => { - - }) - }); - - describe("destroy", () => { - it("returns a success message when the application is successfully deleted", () => { - - }) - }); -}); diff --git a/packages/server/package.json b/packages/server/package.json index bf58fcc167..ebc6d30826 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -37,7 +37,6 @@ "devDependencies": { "@jest/test-sequencer": "^24.8.0", "jest": "^24.8.0", - "mock-couch": "^0.1.11", "nodemon": "^2.0.2", "server-destroy": "^1.0.1", "supertest": "^4.0.2" diff --git a/packages/server/yarn.lock b/packages/server/yarn.lock index 0c6c5e0a20..c761df8675 100644 --- a/packages/server/yarn.lock +++ b/packages/server/yarn.lock @@ -759,16 +759,6 @@ buffer@^5.1.0: base64-js "^1.0.2" ieee754 "^1.1.4" -bunyan@^1.8.12: - version "1.8.12" - resolved "https://registry.yarnpkg.com/bunyan/-/bunyan-1.8.12.tgz#f150f0f6748abdd72aeae84f04403be2ef113797" - integrity sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c= - optionalDependencies: - dtrace-provider "~0.8" - moment "^2.10.6" - mv "~2" - safe-json-stringify "~1" - bytes@3.1.0, bytes@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" @@ -892,14 +882,6 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -clone-regexp@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/clone-regexp/-/clone-regexp-1.0.1.tgz#051805cd33173375d82118fc0918606da39fd60f" - integrity sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw== - dependencies: - is-regexp "^1.0.0" - is-supported-regexp-flag "^1.0.0" - cloudant-follow@^0.18.2: version "0.18.2" resolved "https://registry.yarnpkg.com/cloudant-follow/-/cloudant-follow-0.18.2.tgz#35dd7b29c5b9c58423d50691f848a990fbe2c88f" @@ -1030,11 +1012,6 @@ core-util-is@1.0.2, core-util-is@^1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -couch-viewkey-compare@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/couch-viewkey-compare/-/couch-viewkey-compare-1.0.1.tgz#9502ea12e4ad38dded3c62302e64f4792e8344c2" - integrity sha1-lQLqEuStON3tPGIwLmT0eS6DRMI= - crc@^3.4.4: version "3.8.0" resolved "https://registry.yarnpkg.com/crc/-/crc-3.8.0.tgz#ad60269c2c856f8c299e2c4cc0de4556914056c6" @@ -1086,33 +1063,6 @@ cssstyle@^1.0.0: dependencies: cssom "0.3.x" -csv-generate@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/csv-generate/-/csv-generate-1.1.2.tgz#ec6b00edaed6e59ad9c20582f4c364e28b146240" - integrity sha1-7GsA7a7W5ZrZwgWC9MNk4osUYkA= - -csv-parse@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/csv-parse/-/csv-parse-1.3.3.tgz#d1cfd8743c2f849a0abb2fd544db56695d19a490" - integrity sha1-0c/YdDwvhJoKuy/VRNtWaV0ZpJA= - -csv-stringify@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/csv-stringify/-/csv-stringify-1.1.2.tgz#77a41526581bce3380f12b00d7c5bbac70c82b58" - integrity sha1-d6QVJlgbzjOA8SsA18W7rHDIK1g= - dependencies: - lodash.get "~4.4.2" - -csv@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/csv/-/csv-1.2.1.tgz#5231edfc1c7152512ec45781076a7a97ff525c0c" - integrity sha1-UjHt/BxxUlEuxFeBB2p6l/9SXAw= - dependencies: - csv-generate "^1.1.2" - csv-parse "^1.3.3" - csv-stringify "^1.1.2" - stream-transform "^0.2.2" - dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -1129,12 +1079,24 @@ data-urls@^1.0.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" +<<<<<<< HEAD date-fns@^1.29.0: version "1.30.1" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== +======= +<<<<<<< HEAD +>>>>>>> api tests debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: +======= +date-fns@^1.29.0: + version "1.30.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" + integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + +debug@^2.2.0, debug@^2.3.3: +>>>>>>> api tests version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -1246,11 +1208,6 @@ detect-newline@^2.1.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= -detect-node@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== - diff-sequences@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" @@ -1270,13 +1227,6 @@ dot-prop@^4.1.0: dependencies: is-obj "^1.0.0" -dtrace-provider@^0.8.1, dtrace-provider@~0.8: - version "0.8.8" - resolved "https://registry.yarnpkg.com/dtrace-provider/-/dtrace-provider-0.8.8.tgz#2996d5490c37e1347be263b423ed7b297fb0d97e" - integrity sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg== - dependencies: - nan "^2.14.0" - duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -1367,11 +1317,6 @@ escape-html@^1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= -escape-regexp-component@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/escape-regexp-component/-/escape-regexp-component-1.0.2.tgz#9c63b6d0b25ff2a88c3adbd18c5b61acc3b9faa2" - integrity sha1-nGO20LJf8qiMOtvRjFthrMO5+qI= - escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -1404,13 +1349,6 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -ewma@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ewma/-/ewma-2.0.1.tgz#9876c1c491ac5733c8666001a3961a04c97cf1e8" - integrity sha512-MYYK17A76cuuyvkR7MnqLW4iFYPEi5Isl2qb8rXiWpLiwFS9dxW/rncuNnjjgSENuVqZQkIuR4+DChVL4g1lnw== - dependencies: - assert-plus "^1.0.0" - exec-sh@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.2.tgz#6738de2eb7c8e671d0366aea0b0db8c6f7d7391b" @@ -1506,11 +1444,6 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extsprintf@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.2.0.tgz#5ad946c22f5b32ba7f8cd7426711c6e8a3fc2529" - integrity sha1-WtlGwi9bMrp/jNdCZxHG6KP8JSk= - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -1715,17 +1648,6 @@ glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob@^6.0.1: - version "6.0.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" - integrity sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI= - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: version "7.1.4" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" @@ -1777,11 +1699,6 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= -handle-thing@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4" - integrity sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ= - handlebars@^4.1.2: version "4.5.3" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" @@ -1864,16 +1781,6 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546" integrity sha512-pzXIvANXEFrc5oFFXRMkbLPQ2rXRoDERwDLyrcUxGhaZhgP54BBSl9Oheh7Vv0T090cszWBxPjkQQ5Sq1PbBRQ== -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - html-encoding-sniffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" @@ -1889,11 +1796,6 @@ http-assert@^1.3.0: deep-equal "~1.0.1" http-errors "~1.7.2" -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - http-errors@1.7.3, http-errors@^1.3.1, http-errors@^1.6.3, http-errors@~1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" @@ -1915,15 +1817,6 @@ http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" -http-signature@^1.2.0: - version "1.3.4" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.3.4.tgz#a65b41193110b222364e776fd1ac848655a0e2f0" - integrity sha512-CbG3io8gUSIxNNSgq+XMjgpTMzAeVRipxVXjuGrDhH5M1a2kZ03w20s8FCLR1NjnnJj10KbvabvckmtQcYNb9g== - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.14.1" - http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -1993,7 +1886,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2209,6 +2102,7 @@ is-regex@^1.0.4: dependencies: has "^1.0.1" +<<<<<<< HEAD is-regex@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" @@ -2216,10 +2110,21 @@ is-regex@^1.0.5: dependencies: has "^1.0.3" +======= +<<<<<<< HEAD +>>>>>>> api tests is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= +======= +is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" +>>>>>>> api tests is-retry-allowed@^1.0.0: version "1.2.0" @@ -2231,15 +2136,25 @@ is-stream@^1.0.0, is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +<<<<<<< HEAD is-string@^1.0.4, is-string@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== +======= +<<<<<<< HEAD +>>>>>>> api tests is-supported-regexp-flag@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz#21ee16518d2c1dd3edd3e9a0d57e50207ac364ca" integrity sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ== +======= +is-string@^1.0.4, is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== +>>>>>>> api tests is-symbol@^1.0.2: version "1.0.2" @@ -2973,17 +2888,16 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" -lodash.get@~4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= - lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= +<<<<<<< HEAD lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.4, lodash@^4.2.1: +======= +lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15: +>>>>>>> api tests version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -3000,7 +2914,7 @@ lowercase-keys@^1.0.0: resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== -lru-cache@^4.0.1, lru-cache@^4.1.1: +lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== @@ -3088,17 +3002,12 @@ mime-types@^2.1.12, mime-types@^2.1.18, mime-types@~2.1.19, mime-types@~2.1.24: dependencies: mime-db "1.40.0" -mime@^1.4.1, mime@^1.5.0: +mime@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== -minimalistic-assert@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -"minimatch@2 || 3", minimatch@^3.0.4: +minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== @@ -3115,11 +3024,6 @@ minimist@^1.1.1, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" @@ -3155,28 +3059,6 @@ mkdirp@^0.5.0, mkdirp@^0.5.1: dependencies: minimist "0.0.8" -mkdirp@~0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mock-couch@^0.1.11: - version "0.1.11" - resolved "https://registry.yarnpkg.com/mock-couch/-/mock-couch-0.1.11.tgz#ed944f05729298ff684cae5e8e608da5a48c8dcb" - integrity sha1-7ZRPBXKSmP9oTK5ejmCNpaSMjcs= - dependencies: - couch-viewkey-compare "1.0.1" - ramda "0.8.0" - restify "^6.3.4" - underscore "1.8.3" - -moment@^2.10.6: - version "2.24.0" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" - integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -3187,15 +3069,6 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -mv@~2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/mv/-/mv-2.1.1.tgz#ae6ce0d6f6d5e0a4f7d893798d03c1ea9559b6a2" - integrity sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI= - dependencies: - mkdirp "~0.5.1" - ncp "~2.0.0" - rimraf "~2.4.0" - mz@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" @@ -3205,7 +3078,7 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nan@^2.12.1, nan@^2.14.0: +nan@^2.12.1: version "2.14.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== @@ -3248,11 +3121,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -ncp@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" - integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= - needle@^2.2.1: version "2.4.0" resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" @@ -3262,7 +3130,7 @@ needle@^2.2.1: iconv-lite "^0.4.4" sax "^1.2.4" -negotiator@0.6.2, negotiator@^0.6.1: +negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== @@ -3453,11 +3321,6 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -obuf@^1.0.0, obuf@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - on-finished@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -3638,11 +3501,6 @@ picomatch@^2.0.4, picomatch@^2.0.7: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a" integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA== -pidusage@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pidusage/-/pidusage-1.2.0.tgz#65ee96ace4e08a4cd3f9240996c85b367171ee92" - integrity sha512-OGo+iSOk44HRJ8q15AyG570UYxcm5u+R99DI8Khu8P3tKGkVu5EZX4ywHglWSTMNNXQ274oeGpYrvFEhDIFGPg== - pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" @@ -3753,11 +3611,6 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -ramda@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.8.0.tgz#141ddbb80695b6929f285efea14105d91e6b33cc" - integrity sha1-FB3buAaVtpKfKF7+oUEF2R5rM8w= - raw-body@^2.2.0: version "2.4.1" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" @@ -3800,19 +3653,6 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" -readable-stream@^2.0.1, readable-stream@^2.2.9: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - 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" - readable-stream@^2.0.6, readable-stream@^2.3.5: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -4002,46 +3842,6 @@ resolve@^1.10.0, resolve@^1.3.2: dependencies: path-parse "^1.0.6" -restify-errors@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/restify-errors/-/restify-errors-5.0.0.tgz#668717e100683eec6ce0d515f89ff1dbec254a8d" - integrity sha512-+vby9Kxf7qlzvbZSTIEGkIixkeHG+pVCl34dk6eKnL+ua4pCezpdLT/1/eabzPZb65ADrgoc04jeWrrF1E1pvQ== - dependencies: - assert-plus "^1.0.0" - lodash "^4.2.1" - verror "^1.8.1" - optionalDependencies: - safe-json-stringify "^1.0.3" - -restify@^6.3.4: - version "6.4.0" - resolved "https://registry.yarnpkg.com/restify/-/restify-6.4.0.tgz#3f0c9a4c78339869d017fed85a0e5255abf3da44" - integrity sha512-p92TXaSuvDWxpmHd7Y5ex1vjFifhNzNZQy99EOPynV/V75fJN5ybHv5mXTD+c1Ffo9fvRv2Yb1FLnfDMpaffPA== - dependencies: - assert-plus "^1.0.0" - bunyan "^1.8.12" - clone-regexp "^1.0.0" - csv "^1.1.1" - escape-regexp-component "^1.0.2" - ewma "^2.0.1" - formidable "^1.1.1" - http-signature "^1.2.0" - lodash "^4.17.4" - lru-cache "^4.1.1" - mime "^1.5.0" - negotiator "^0.6.1" - once "^1.4.0" - pidusage "^1.2.0" - qs "^6.5.1" - restify-errors "^5.0.0" - semver "^5.4.1" - spdy "^3.4.7" - uuid "^3.1.0" - vasync "^1.6.4" - verror "^1.10.0" - optionalDependencies: - dtrace-provider "^0.8.1" - ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -4054,13 +3854,6 @@ rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3: dependencies: glob "^7.1.3" -rimraf@~2.4.0: - version "2.4.5" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.4.5.tgz#ee710ce5d93a8fdb856fb5ea8ff0e2d75934b2da" - integrity sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto= - dependencies: - glob "^6.0.1" - rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" @@ -4076,11 +3869,6 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== -safe-json-stringify@^1.0.3, safe-json-stringify@~1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd" - integrity sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg== - safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -4113,11 +3901,6 @@ sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" @@ -4287,31 +4070,6 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== -spdy-transport@^2.0.18: - version "2.1.1" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.1.1.tgz#c54815d73858aadd06ce63001e7d25fa6441623b" - integrity sha512-q7D8c148escoB3Z7ySCASadkegMmUZW8Wb/Q1u0/XBgDKMO880rLQDj8Twiew/tYi7ghemKUi/whSYOwE17f5Q== - dependencies: - debug "^2.6.8" - detect-node "^2.0.3" - hpack.js "^2.1.6" - obuf "^1.1.1" - readable-stream "^2.2.9" - safe-buffer "^5.0.1" - wbuf "^1.7.2" - -spdy@^3.4.7: - version "3.4.7" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.7.tgz#42ff41ece5cc0f99a3a6c28aabb73f5c3b03acbc" - integrity sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw= - dependencies: - debug "^2.6.8" - handle-thing "^1.2.5" - http-deceiver "^1.2.7" - safe-buffer "^5.0.1" - select-hose "^2.0.0" - spdy-transport "^2.0.18" - split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -4324,7 +4082,7 @@ squirrelly@^7.5.0: resolved "https://registry.yarnpkg.com/squirrelly/-/squirrelly-7.5.0.tgz#76b42e2771639433bff3e60fd66aa6b04f25e8d0" integrity sha512-7GtawPwwkVPnG9hqfQRjrziHxWLHAoJ3tlYvhmSayDNoovIufIQXRF0G/QA8sUTCSPzzSBkPSN0CuTlcvE7Dow== -sshpk@^1.14.1, sshpk@^1.7.0: +sshpk@^1.7.0: version "1.16.1" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== @@ -4362,11 +4120,6 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= -stream-transform@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/stream-transform/-/stream-transform-0.2.2.tgz#75867487f49528f8bf1d82499658753d02df7838" - integrity sha1-dYZ0h/SVKPi/HYJJllh1PQLfeDg= - string-length@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" @@ -4693,11 +4446,6 @@ undefsafe@^2.0.2: dependencies: debug "^2.2.0" -underscore@1.8.3: - version "1.8.3" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" - integrity sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI= - union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -4796,11 +4544,6 @@ util.promisify@^1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" -uuid@^3.1.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - uuid@^3.3.2: version "3.3.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" @@ -4819,14 +4562,7 @@ vary@^1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -vasync@^1.6.4: - version "1.6.4" - resolved "https://registry.yarnpkg.com/vasync/-/vasync-1.6.4.tgz#dfe93616ad0e7ae801b332a9d88bfc5cdc8e1d1f" - integrity sha1-3+k2Fq0OeugBszKp2Iv8XNyOHR8= - dependencies: - verror "1.6.0" - -verror@1.10.0, verror@^1.10.0, verror@^1.8.1: +verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= @@ -4835,13 +4571,6 @@ verror@1.10.0, verror@^1.10.0, verror@^1.8.1: core-util-is "1.0.2" extsprintf "^1.2.0" -verror@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.6.0.tgz#7d13b27b1facc2e2da90405eb5ea6e5bdd252ea5" - integrity sha1-fROyex+swuLakEBetepuW90lLqU= - dependencies: - extsprintf "1.2.0" - w3c-hr-time@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" @@ -4856,13 +4585,6 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -wbuf@^1.1.0, wbuf@^1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"