authentication tests
This commit is contained in:
parent
3f87806899
commit
354e0af4aa
|
@ -1 +1 @@
|
|||
Subproject commit db358c7931ef77a2c783863d2d47514182400312
|
||||
Subproject commit 8d3f13b1b741fa4a8d83fae61460b9535fa7ee89
|
|
@ -8,8 +8,7 @@ module.exports = async (config) => {
|
|||
|
||||
app.keys = config.keys;
|
||||
app.context.master = await getMasterAppInternal(config);
|
||||
|
||||
app.use(router(config, app).routes);
|
||||
app.use(bodyParser());
|
||||
app.use(router(config, app).routes());
|
||||
return app.listen();
|
||||
};
|
||||
|
|
|
@ -3,13 +3,27 @@ const session = require("./session");
|
|||
const StatusCodes = require("../utilities/statusCodes");
|
||||
module.exports = (config, app) => {
|
||||
|
||||
var router = new Router();
|
||||
router.prefix("/:appname/api");
|
||||
const router = new Router();
|
||||
|
||||
router
|
||||
.post("/authenticate", async (ctx, next) => {
|
||||
/*.use(async (ctx) => {
|
||||
if(!await ctx.master.getApplication(ctx.params.appname)) {
|
||||
ctx.throw(StatusCodes.NOT_FOUND, `could not find app named ${ctx.params.appname}`);
|
||||
}
|
||||
})*/
|
||||
.use(session(config, app))
|
||||
.use(async (ctx, next) => {
|
||||
ctx.sessionId = ctx.session._sessCtx.externalKey;
|
||||
ctx.session.accessed = true;
|
||||
await next();
|
||||
})
|
||||
.get("/:appname", async (ctx) => {
|
||||
ctx.response.status = StatusCodes.OK;
|
||||
ctx.response.body = "UI Served Here";
|
||||
})
|
||||
.post("/:appname/api/authenticate", async (ctx, next) => {
|
||||
const user = await ctx.master.authenticate(
|
||||
ctx.session._sessCtx.externalKey,
|
||||
ctx.sessionId,
|
||||
ctx.params.appname,
|
||||
ctx.request.body.username,
|
||||
ctx.request.body.password
|
||||
|
@ -17,59 +31,77 @@ module.exports = (config, app) => {
|
|||
if(!user) {
|
||||
ctx.throw(StatusCodes.UNAUTHORIZED, "invalid username or password");
|
||||
}
|
||||
next();
|
||||
|
||||
ctx.response.status = StatusCodes.OK;
|
||||
})
|
||||
.post("/setPasswordFromTemporaryCode", async (ctx) => {
|
||||
.post("/:appname/api/setPasswordFromTemporaryCode", async (ctx) => {
|
||||
|
||||
})
|
||||
.post("/executeAction/:actionname", async (ctx) => {
|
||||
.use(async (ctx, next) => {
|
||||
|
||||
const pathParts = ctx.path.split("/");
|
||||
|
||||
if(pathParts.length < 2) {
|
||||
ctx.throw(StatusCodes.NOT_FOUND, "App Name not declared");
|
||||
}
|
||||
|
||||
ctx.instance = await ctx.master.getInstanceApiForSession(
|
||||
pathParts[1],
|
||||
ctx.sessionId);
|
||||
|
||||
await next();
|
||||
})
|
||||
.post("/:appname/api/executeAction/:actionname", async (ctx) => {
|
||||
|
||||
})
|
||||
.post("/createUser", async (ctx) => {
|
||||
.post("/:appname/api/createUser", async (ctx) => {
|
||||
await ctx.instance.authApi.createUser(
|
||||
ctx.request.body.user,
|
||||
ctx.request.body.password
|
||||
);
|
||||
|
||||
ctx.response.status = StatusCodes.OK;
|
||||
})
|
||||
.post("/:appname/api/enableUser", async (ctx) => {
|
||||
|
||||
})
|
||||
.post("/enableUser", async (ctx) => {
|
||||
.post("/:appname/api/disableUser", async (ctx) => {
|
||||
|
||||
})
|
||||
.post("/disableUser", async (ctx) => {
|
||||
.get("/:appname/api/users", async (ctx) => {
|
||||
|
||||
})
|
||||
.get("/users", async (ctx) => {
|
||||
.get("/:appname/api/accessLevels", async (ctx) => {
|
||||
|
||||
})
|
||||
.get("/accessLevels", async (ctx) => {
|
||||
.post("/:appname/api/changeMyPassword", async (ctx) => {
|
||||
|
||||
})
|
||||
.post("/changeMyPassword", async (ctx) => {
|
||||
.post("/:appname/api/listRecords/:indexkey", async (ctx) => {
|
||||
|
||||
})
|
||||
.post("/listRecords/:indexkey", async (ctx) => {
|
||||
.post("/:appname/api/aggregated/:indexkey", async (ctx) => {
|
||||
|
||||
})
|
||||
.post("/aggregated/:indexkey", async (ctx) => {
|
||||
.post("/:appname/api/record/:recordkey", async (ctx) => {
|
||||
|
||||
})
|
||||
.post("/record/:recordkey", async (ctx) => {
|
||||
.get("/:appname/api/record/:recordkey", async (ctx) => {
|
||||
|
||||
})
|
||||
.get("/record/:recordkey", async (ctx) => {
|
||||
.del("/:appname/api/record/:recordkey", async (ctx) => {
|
||||
|
||||
})
|
||||
.del("/record/:recordkey", async (ctx) => {
|
||||
.post("/:appname/api/appHeirarchy", async (ctx) => {
|
||||
|
||||
})
|
||||
.post("/appHeirarchy", async (ctx) => {
|
||||
.post("/:appname/api/actionsAndTriggers", async (ctx) => {
|
||||
|
||||
})
|
||||
.post("/actionsAndTriggers", async (ctx) => {
|
||||
|
||||
})
|
||||
.post("/appDefinition", async (ctx) => {
|
||||
.post("/:appname/api/appDefinition", async (ctx) => {
|
||||
|
||||
});
|
||||
|
||||
router.use(session(config, app));
|
||||
|
||||
return router;
|
||||
}
|
||||
|
||||
|
|
|
@ -13,6 +13,11 @@ module.exports = (config, app) => {
|
|||
signed: true, /** (boolean) signed or not (default true) */
|
||||
rolling: false, /** (boolean) Force a session identifier cookie to be set on every response. The expiration is reset to the original maxAge, resetting the expiration countdown. (default is false) */
|
||||
renew: false, /** (boolean) renew session when session is nearly expired, so we can always keep user logged in. (default is false)*/
|
||||
store: {
|
||||
get: async (key, maxAge, { rolling }) => ({key}),
|
||||
set: async (key, sess, maxAge, { rolling, changed }) => ({key}),
|
||||
destroy: async (key) => ({})
|
||||
}
|
||||
};
|
||||
|
||||
return session(
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@jest/test-sequencer": "^24.8.0",
|
||||
"jest": "^24.8.0",
|
||||
"server-destroy": "^1.0.1",
|
||||
"supertest": "^4.0.2"
|
||||
}
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
const app = require("./testApp")();
|
||||
const authenticateMaster = require("./authenticate");
|
||||
|
||||
beforeAll(() => {
|
||||
return app.start();
|
||||
})
|
||||
|
||||
afterAll(() => {
|
||||
app.destroy();
|
||||
})
|
||||
|
||||
describe("authenticateMaster", () => authenticateMaster(app));
|
||||
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
const statusCodes = require("../utilities/statusCodes");
|
||||
|
||||
module.exports = (app) => {
|
||||
|
||||
it("should return ok correct username and password supplied", async () => {
|
||||
|
||||
await app.post("/_master/api/authenticate", {
|
||||
username: app.masterAuth.username,
|
||||
password: app.masterAuth.password
|
||||
})
|
||||
.expect(statusCodes.OK);
|
||||
});
|
||||
|
||||
it("should return unauthorized if username is incorrect", async () => {
|
||||
await app.post("/_master/api/authenticate", {
|
||||
username: "unknownuser",
|
||||
password: app.masterAuth.password
|
||||
})
|
||||
.expect(statusCodes.UNAUTHORIZED);
|
||||
})
|
||||
|
||||
it("should return unauthorized if password is incorrect", async () => {
|
||||
await app.post("/_master/api/authenticate", {
|
||||
username: app.masterAuth.username,
|
||||
password: "incorrect_password"
|
||||
})
|
||||
.expect(statusCodes.UNAUTHORIZED);
|
||||
})
|
||||
|
||||
it("should not get cookie when unauthorized", async () => {
|
||||
const response = await app.post("/_master/api/authenticate", {
|
||||
username: app.masterAuth.username,
|
||||
password: "incorrect_password"
|
||||
});
|
||||
|
||||
expect(response.header['set-cookie']).toBeUndefined();
|
||||
|
||||
});
|
||||
|
||||
it("should be able to create new user with authenticated cookie", async () => {
|
||||
const response = await app.post("/_master/api/authenticate", {
|
||||
username: app.masterAuth.username,
|
||||
password: app.masterAuth.password
|
||||
});
|
||||
|
||||
const cookie = response.header['set-cookie'];
|
||||
|
||||
await app.post("/_master/api/createUser", {
|
||||
user: {
|
||||
name: "test_user",
|
||||
accessLevels:["owner"],
|
||||
enabled:true
|
||||
|
||||
},
|
||||
password: "test_password"
|
||||
})
|
||||
.set("cookie", cookie)
|
||||
.expect(statusCodes.OK);
|
||||
|
||||
const responseNewUser = await app.post("/_master/api/authenticate", {
|
||||
username: "test_user",
|
||||
password: "test_password"
|
||||
});
|
||||
|
||||
const newUserCookie = responseNewUser.header['set-cookie'];
|
||||
|
||||
expect(newUserCookie).toBeDefined();
|
||||
expect(newUserCookie).not.toEqual(cookie);
|
||||
});
|
||||
};
|
|
@ -1,41 +0,0 @@
|
|||
const request = require('supertest');
|
||||
const app = require("./testApp")();
|
||||
const statusCodes = require("../utilities/statusCodes");
|
||||
|
||||
|
||||
describe("authenticate master", () => {
|
||||
beforeAll(() => {
|
||||
return app.start();
|
||||
})
|
||||
|
||||
afterAll(() => {
|
||||
app.server.destroy();
|
||||
})
|
||||
|
||||
it("should return ok correct username and password supplied", () => {
|
||||
|
||||
app.post("/_master/authenticate", {
|
||||
username: app.masterAuth.username,
|
||||
password: app.masterAuth.password
|
||||
})
|
||||
.expect(statusCodes.OK);
|
||||
|
||||
});
|
||||
|
||||
it("should return unauthorized if username is incorrect", () => {
|
||||
app.post("/_master/authenticate", {
|
||||
username: "unknownuser",
|
||||
password: app.masterAuth.password
|
||||
})
|
||||
.expect(statusCodes.UNAUTHORIZED);
|
||||
})
|
||||
|
||||
it("should return unauthorized if password is incorrect", () => {
|
||||
app.post("/_master/authenticate", {
|
||||
username: app.masterAuth.username,
|
||||
password: app.masterAuth.password
|
||||
})
|
||||
.expect(statusCodes.UNAUTHORIZED);
|
||||
})
|
||||
})
|
||||
|
|
@ -36,12 +36,13 @@ module.exports = () => {
|
|||
masterAuth: {
|
||||
username: masterOwnerName,
|
||||
password: masterOwnerPassword
|
||||
}
|
||||
},
|
||||
destroy: () => server.destroy()
|
||||
})
|
||||
};
|
||||
|
||||
const postRequest = (server, url, body) =>
|
||||
request(app)
|
||||
request(server)
|
||||
.post(url)
|
||||
.send(body)
|
||||
.set('Accept', 'application/json');
|
||||
|
|
|
@ -25,7 +25,7 @@ module.exports.getApisForUser = async (datastore, username, password) => {
|
|||
return bb;
|
||||
}
|
||||
|
||||
module.exports.getApisForSession = async (session) => {
|
||||
module.exports.getApisForSession = async (datastore, session) => {
|
||||
|
||||
const user = JSON.parse(session.user_json);
|
||||
|
||||
|
|
|
@ -9,16 +9,17 @@ const isMaster = appname => appname === "_master";
|
|||
|
||||
module.exports = async (config) => {
|
||||
|
||||
const datastore = getDatastore(config);
|
||||
const datastoreModule = getDatastore(config);
|
||||
|
||||
const databaseManager = getDatabaseManager(
|
||||
datastore,
|
||||
datastoreModule,
|
||||
config.datastoreConfig);
|
||||
|
||||
|
||||
const bb = await getApisWithFullAccess(
|
||||
datastore.getDatastore(databaseManager.masterDatastoreConfig)
|
||||
);
|
||||
const masterDatastore = datastoreModule.getDatastore(
|
||||
databaseManager.masterDatastoreConfig);
|
||||
|
||||
const bb = await getApisWithFullAccess(masterDatastore);
|
||||
|
||||
let applications;
|
||||
const loadApplications = async () =>
|
||||
|
@ -27,6 +28,9 @@ module.exports = async (config) => {
|
|||
]);
|
||||
await loadApplications();
|
||||
|
||||
const getInstanceDatastore = (instanceDatastoreConfig) =>
|
||||
datastoreModule.getDatastore(instanceDatastoreConfig);
|
||||
|
||||
const getCustomSessionId = (appname, sessionId) =>
|
||||
isMaster(appname)
|
||||
? bb.recordApi.customId("mastersession", sessionId)
|
||||
|
@ -39,9 +43,6 @@ module.exports = async (config) => {
|
|||
|
||||
await loadApplications();
|
||||
|
||||
if(!applications[name])
|
||||
throw new Error("Appliction " + name + " not found");
|
||||
|
||||
return applications[name];
|
||||
};
|
||||
|
||||
|
@ -93,7 +94,7 @@ module.exports = async (config) => {
|
|||
userInMaster.instance.key);
|
||||
|
||||
const bbInstance = await getApisWithFullAccess(
|
||||
datastore.getDatastore(instance.datastoreconfig));
|
||||
datastoreModule.getDatastore(instance.datastoreconfig));
|
||||
|
||||
const authUser = await bbInstance.authApi.authenticate(username, password);
|
||||
|
||||
|
@ -111,15 +112,16 @@ module.exports = async (config) => {
|
|||
|
||||
const getInstanceApiForSession = async (appname, sessionId) => {
|
||||
if(isMaster(appname)) {
|
||||
const customId = bb.recordApi.customId("session", sessionId);
|
||||
const customId = bb.recordApi.customId("mastersession", sessionId);
|
||||
const session = await bb.recordApi.load(`/sessions/${customId}`);
|
||||
return await getApisForSession(session);
|
||||
return await getApisForSession(masterDatastore, session);
|
||||
}
|
||||
else {
|
||||
const app = await getApplication(appname);
|
||||
const customId = bb.recordApi.customId("session", sessionId);
|
||||
const session = await bb.recordApi.load(`/applications/${app.id}/sessions/${customId}`);
|
||||
return await getApisForSession(session);
|
||||
const instanceDatastore = getInstanceDatastore(session.instanceDatastoreConfig)
|
||||
return await getApisForSession(instanceDatastore, session);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -148,6 +148,39 @@
|
|||
chalk "^2.0.1"
|
||||
slash "^2.0.0"
|
||||
|
||||
"@jest/core@^24.8.0":
|
||||
version "24.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@jest/core/-/core-24.8.0.tgz#fbbdcd42a41d0d39cddbc9f520c8bab0c33eed5b"
|
||||
integrity sha512-R9rhAJwCBQzaRnrRgAdVfnglUuATXdwTRsYqs6NMdVcAl5euG8LtWDe+fVkN27YfKVBW61IojVsXKaOmSnqd/A==
|
||||
dependencies:
|
||||
"@jest/console" "^24.7.1"
|
||||
"@jest/reporters" "^24.8.0"
|
||||
"@jest/test-result" "^24.8.0"
|
||||
"@jest/transform" "^24.8.0"
|
||||
"@jest/types" "^24.8.0"
|
||||
ansi-escapes "^3.0.0"
|
||||
chalk "^2.0.1"
|
||||
exit "^0.1.2"
|
||||
graceful-fs "^4.1.15"
|
||||
jest-changed-files "^24.8.0"
|
||||
jest-config "^24.8.0"
|
||||
jest-haste-map "^24.8.0"
|
||||
jest-message-util "^24.8.0"
|
||||
jest-regex-util "^24.3.0"
|
||||
jest-resolve-dependencies "^24.8.0"
|
||||
jest-runner "^24.8.0"
|
||||
jest-runtime "^24.8.0"
|
||||
jest-snapshot "^24.8.0"
|
||||
jest-util "^24.8.0"
|
||||
jest-validate "^24.8.0"
|
||||
jest-watcher "^24.8.0"
|
||||
micromatch "^3.1.10"
|
||||
p-each-series "^1.0.0"
|
||||
pirates "^4.0.1"
|
||||
realpath-native "^1.1.0"
|
||||
rimraf "^2.5.4"
|
||||
strip-ansi "^5.0.0"
|
||||
|
||||
"@jest/environment@^24.8.0":
|
||||
version "24.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-24.8.0.tgz#0342261383c776bdd652168f68065ef144af0eac"
|
||||
|
@ -167,6 +200,33 @@
|
|||
jest-message-util "^24.8.0"
|
||||
jest-mock "^24.8.0"
|
||||
|
||||
"@jest/reporters@^24.8.0":
|
||||
version "24.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-24.8.0.tgz#075169cd029bddec54b8f2c0fc489fd0b9e05729"
|
||||
integrity sha512-eZ9TyUYpyIIXfYCrw0UHUWUvE35vx5I92HGMgS93Pv7du+GHIzl+/vh8Qj9MCWFK/4TqyttVBPakWMOfZRIfxw==
|
||||
dependencies:
|
||||
"@jest/environment" "^24.8.0"
|
||||
"@jest/test-result" "^24.8.0"
|
||||
"@jest/transform" "^24.8.0"
|
||||
"@jest/types" "^24.8.0"
|
||||
chalk "^2.0.1"
|
||||
exit "^0.1.2"
|
||||
glob "^7.1.2"
|
||||
istanbul-lib-coverage "^2.0.2"
|
||||
istanbul-lib-instrument "^3.0.1"
|
||||
istanbul-lib-report "^2.0.4"
|
||||
istanbul-lib-source-maps "^3.0.1"
|
||||
istanbul-reports "^2.1.1"
|
||||
jest-haste-map "^24.8.0"
|
||||
jest-resolve "^24.8.0"
|
||||
jest-runtime "^24.8.0"
|
||||
jest-util "^24.8.0"
|
||||
jest-worker "^24.6.0"
|
||||
node-notifier "^5.2.1"
|
||||
slash "^2.0.0"
|
||||
source-map "^0.6.0"
|
||||
string-length "^2.0.0"
|
||||
|
||||
"@jest/source-map@^24.3.0":
|
||||
version "24.3.0"
|
||||
resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-24.3.0.tgz#563be3aa4d224caf65ff77edc95cd1ca4da67f28"
|
||||
|
@ -351,6 +411,11 @@ ajv@^6.5.5:
|
|||
json-schema-traverse "^0.4.1"
|
||||
uri-js "^4.2.2"
|
||||
|
||||
ansi-escapes@^3.0.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
|
||||
integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
|
||||
|
||||
ansi-regex@^2.0.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
|
||||
|
@ -450,6 +515,11 @@ assign-symbols@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
|
||||
integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
|
||||
|
||||
astral-regex@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
|
||||
integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
|
||||
|
||||
async-limiter@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
|
||||
|
@ -753,6 +823,11 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
|
|||
dependencies:
|
||||
delayed-stream "~1.0.0"
|
||||
|
||||
commander@~2.20.0:
|
||||
version "2.20.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
|
||||
integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
|
||||
|
||||
component-emitter@^1.2.0, component-emitter@^1.2.1:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
|
||||
|
@ -880,7 +955,7 @@ debug@^3.1.0, debug@^3.2.6:
|
|||
dependencies:
|
||||
ms "^2.1.1"
|
||||
|
||||
debug@^4.1.0:
|
||||
debug@^4.1.0, debug@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
|
||||
integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
|
||||
|
@ -1320,7 +1395,7 @@ getpass@^0.1.1:
|
|||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
|
||||
glob@^7.1.1, glob@^7.1.3:
|
||||
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"
|
||||
integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==
|
||||
|
@ -1342,6 +1417,22 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2:
|
|||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
|
||||
integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
|
||||
|
||||
growly@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
|
||||
integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
|
||||
|
||||
handlebars@^4.1.2:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67"
|
||||
integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==
|
||||
dependencies:
|
||||
neo-async "^2.6.0"
|
||||
optimist "^0.6.1"
|
||||
source-map "^0.6.1"
|
||||
optionalDependencies:
|
||||
uglify-js "^3.1.4"
|
||||
|
||||
har-schema@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
|
||||
|
@ -1467,6 +1558,14 @@ ignore-walk@^3.0.1:
|
|||
dependencies:
|
||||
minimatch "^3.0.4"
|
||||
|
||||
import-local@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
|
||||
integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
|
||||
dependencies:
|
||||
pkg-dir "^3.0.0"
|
||||
resolve-cwd "^2.0.0"
|
||||
|
||||
imurmurhash@^0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
|
||||
|
@ -1671,6 +1770,11 @@ is-windows@^1.0.2:
|
|||
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
||||
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
|
||||
|
||||
is-wsl@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
|
||||
integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
|
||||
|
||||
isarray@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
|
||||
|
@ -1703,12 +1807,12 @@ isstream@~0.1.2:
|
|||
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
|
||||
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
|
||||
|
||||
istanbul-lib-coverage@^2.0.5:
|
||||
istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49"
|
||||
integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==
|
||||
|
||||
istanbul-lib-instrument@^3.3.0:
|
||||
istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz#a5f63d91f0bbc0c3e479ef4c5de027335ec6d630"
|
||||
integrity sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==
|
||||
|
@ -1721,6 +1825,61 @@ istanbul-lib-instrument@^3.3.0:
|
|||
istanbul-lib-coverage "^2.0.5"
|
||||
semver "^6.0.0"
|
||||
|
||||
istanbul-lib-report@^2.0.4:
|
||||
version "2.0.8"
|
||||
resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz#5a8113cd746d43c4889eba36ab10e7d50c9b4f33"
|
||||
integrity sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==
|
||||
dependencies:
|
||||
istanbul-lib-coverage "^2.0.5"
|
||||
make-dir "^2.1.0"
|
||||
supports-color "^6.1.0"
|
||||
|
||||
istanbul-lib-source-maps@^3.0.1:
|
||||
version "3.0.6"
|
||||
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8"
|
||||
integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==
|
||||
dependencies:
|
||||
debug "^4.1.1"
|
||||
istanbul-lib-coverage "^2.0.5"
|
||||
make-dir "^2.1.0"
|
||||
rimraf "^2.6.3"
|
||||
source-map "^0.6.1"
|
||||
|
||||
istanbul-reports@^2.1.1:
|
||||
version "2.2.6"
|
||||
resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-2.2.6.tgz#7b4f2660d82b29303a8fe6091f8ca4bf058da1af"
|
||||
integrity sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==
|
||||
dependencies:
|
||||
handlebars "^4.1.2"
|
||||
|
||||
jest-changed-files@^24.8.0:
|
||||
version "24.8.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.8.0.tgz#7e7eb21cf687587a85e50f3d249d1327e15b157b"
|
||||
integrity sha512-qgANC1Yrivsq+UrLXsvJefBKVoCsKB0Hv+mBb6NMjjZ90wwxCDmU3hsCXBya30cH+LnPYjwgcU65i6yJ5Nfuug==
|
||||
dependencies:
|
||||
"@jest/types" "^24.8.0"
|
||||
execa "^1.0.0"
|
||||
throat "^4.0.0"
|
||||
|
||||
jest-cli@^24.8.0:
|
||||
version "24.8.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-24.8.0.tgz#b075ac914492ed114fa338ade7362a301693e989"
|
||||
integrity sha512-+p6J00jSMPQ116ZLlHJJvdf8wbjNbZdeSX9ptfHX06/MSNaXmKihQzx5vQcw0q2G6JsdVkUIdWbOWtSnaYs3yA==
|
||||
dependencies:
|
||||
"@jest/core" "^24.8.0"
|
||||
"@jest/test-result" "^24.8.0"
|
||||
"@jest/types" "^24.8.0"
|
||||
chalk "^2.0.1"
|
||||
exit "^0.1.2"
|
||||
import-local "^2.0.0"
|
||||
is-ci "^2.0.0"
|
||||
jest-config "^24.8.0"
|
||||
jest-util "^24.8.0"
|
||||
jest-validate "^24.8.0"
|
||||
prompts "^2.0.1"
|
||||
realpath-native "^1.1.0"
|
||||
yargs "^12.0.2"
|
||||
|
||||
jest-config@^24.8.0:
|
||||
version "24.8.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-24.8.0.tgz#77db3d265a6f726294687cbbccc36f8a76ee0f4f"
|
||||
|
@ -1889,6 +2048,15 @@ jest-regex-util@^24.3.0:
|
|||
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-24.3.0.tgz#d5a65f60be1ae3e310d5214a0307581995227b36"
|
||||
integrity sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==
|
||||
|
||||
jest-resolve-dependencies@^24.8.0:
|
||||
version "24.8.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-24.8.0.tgz#19eec3241f2045d3f990dba331d0d7526acff8e0"
|
||||
integrity sha512-hyK1qfIf/krV+fSNyhyJeq3elVMhK9Eijlwy+j5jqmZ9QsxwKBiP6qukQxaHtK8k6zql/KYWwCTQ+fDGTIJauw==
|
||||
dependencies:
|
||||
"@jest/types" "^24.8.0"
|
||||
jest-regex-util "^24.3.0"
|
||||
jest-snapshot "^24.8.0"
|
||||
|
||||
jest-resolve@^24.8.0:
|
||||
version "24.8.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-24.8.0.tgz#84b8e5408c1f6a11539793e2b5feb1b6e722439f"
|
||||
|
@ -2007,6 +2175,19 @@ jest-validate@^24.8.0:
|
|||
leven "^2.1.0"
|
||||
pretty-format "^24.8.0"
|
||||
|
||||
jest-watcher@^24.8.0:
|
||||
version "24.8.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-24.8.0.tgz#58d49915ceddd2de85e238f6213cef1c93715de4"
|
||||
integrity sha512-SBjwHt5NedQoVu54M5GEx7cl7IGEFFznvd/HNT8ier7cCAx/Qgu9ZMlaTQkvK22G1YOpcWBLQPFSImmxdn3DAw==
|
||||
dependencies:
|
||||
"@jest/test-result" "^24.8.0"
|
||||
"@jest/types" "^24.8.0"
|
||||
"@types/yargs" "^12.0.9"
|
||||
ansi-escapes "^3.0.0"
|
||||
chalk "^2.0.1"
|
||||
jest-util "^24.8.0"
|
||||
string-length "^2.0.0"
|
||||
|
||||
jest-worker@^24.6.0:
|
||||
version "24.6.0"
|
||||
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.6.0.tgz#7f81ceae34b7cde0c9827a6980c35b7cdc0161b3"
|
||||
|
@ -2015,6 +2196,14 @@ jest-worker@^24.6.0:
|
|||
merge-stream "^1.0.1"
|
||||
supports-color "^6.1.0"
|
||||
|
||||
jest@^24.8.0:
|
||||
version "24.8.0"
|
||||
resolved "https://registry.yarnpkg.com/jest/-/jest-24.8.0.tgz#d5dff1984d0d1002196e9b7f12f75af1b2809081"
|
||||
integrity sha512-o0HM90RKFRNWmAWvlyV8i5jGZ97pFwkeVoGvPW1EtLTgJc2+jcuqcbbqcSZLE/3f2S5pt0y2ZBETuhpWNl1Reg==
|
||||
dependencies:
|
||||
import-local "^2.0.0"
|
||||
jest-cli "^24.8.0"
|
||||
|
||||
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
||||
|
@ -2128,6 +2317,11 @@ kind-of@^6.0.0, kind-of@^6.0.2:
|
|||
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
|
||||
integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
|
||||
|
||||
kleur@^3.0.2:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
|
||||
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
|
||||
|
||||
koa-bodyparser@^4.2.1:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/koa-bodyparser/-/koa-bodyparser-4.2.1.tgz#4d7dacb5e6db1106649b595d9e5ccb158b6f3b29"
|
||||
|
@ -2278,6 +2472,14 @@ lunr@^2.3.5:
|
|||
resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.6.tgz#f278beee7ffd56ad86e6e478ce02ab2b98c78dd5"
|
||||
integrity sha512-swStvEyDqQ85MGpABCMBclZcLI/pBIlu8FFDtmX197+oEgKloJ67QnB+Tidh0340HmLMs39c4GrkPY3cmkXp6Q==
|
||||
|
||||
make-dir@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
|
||||
integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
|
||||
dependencies:
|
||||
pify "^4.0.1"
|
||||
semver "^5.6.0"
|
||||
|
||||
makeerror@1.0.x:
|
||||
version "1.0.11"
|
||||
resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
|
||||
|
@ -2388,6 +2590,11 @@ minimist@^1.1.1, minimist@^1.2.0:
|
|||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
|
||||
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
|
||||
|
||||
minimist@~0.0.1:
|
||||
version "0.0.10"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
|
||||
integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=
|
||||
|
||||
minipass@^2.2.1, minipass@^2.3.5:
|
||||
version "2.3.5"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
|
||||
|
@ -2474,6 +2681,11 @@ negotiator@0.6.2:
|
|||
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
|
||||
integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==
|
||||
|
||||
neo-async@^2.6.0:
|
||||
version "2.6.1"
|
||||
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
|
||||
integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
|
||||
|
||||
nice-try@^1.0.4:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
|
||||
|
@ -2494,6 +2706,22 @@ node-int64@^0.4.0:
|
|||
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
|
||||
integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=
|
||||
|
||||
node-modules-regexp@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40"
|
||||
integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
|
||||
|
||||
node-notifier@^5.2.1:
|
||||
version "5.4.0"
|
||||
resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.0.tgz#7b455fdce9f7de0c63538297354f3db468426e6a"
|
||||
integrity sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ==
|
||||
dependencies:
|
||||
growly "^1.3.0"
|
||||
is-wsl "^1.1.0"
|
||||
semver "^5.5.0"
|
||||
shellwords "^0.1.1"
|
||||
which "^1.3.0"
|
||||
|
||||
node-pre-gyp@^0.12.0:
|
||||
version "0.12.0"
|
||||
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149"
|
||||
|
@ -2640,6 +2868,14 @@ only@~0.0.2:
|
|||
resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4"
|
||||
integrity sha1-Kv3oTQPlC5qO3EROMGEKcCle37Q=
|
||||
|
||||
optimist@^0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
|
||||
integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY=
|
||||
dependencies:
|
||||
minimist "~0.0.1"
|
||||
wordwrap "~0.0.2"
|
||||
|
||||
optionator@^0.8.1:
|
||||
version "0.8.2"
|
||||
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
|
||||
|
@ -2684,6 +2920,13 @@ p-defer@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c"
|
||||
integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
|
||||
|
||||
p-each-series@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71"
|
||||
integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=
|
||||
dependencies:
|
||||
p-reduce "^1.0.0"
|
||||
|
||||
p-finally@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
|
||||
|
@ -2708,6 +2951,11 @@ p-locate@^3.0.0:
|
|||
dependencies:
|
||||
p-limit "^2.0.0"
|
||||
|
||||
p-reduce@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa"
|
||||
integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=
|
||||
|
||||
p-try@^2.0.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
|
||||
|
@ -2780,6 +3028,25 @@ pify@^3.0.0:
|
|||
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
|
||||
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
|
||||
|
||||
pify@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
|
||||
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
|
||||
|
||||
pirates@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87"
|
||||
integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==
|
||||
dependencies:
|
||||
node-modules-regexp "^1.0.0"
|
||||
|
||||
pkg-dir@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
|
||||
integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
|
||||
dependencies:
|
||||
find-up "^3.0.0"
|
||||
|
||||
pn@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
|
||||
|
@ -2810,6 +3077,14 @@ process-nextick-args@~2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
|
||||
integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
|
||||
|
||||
prompts@^2.0.1:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.1.0.tgz#bf90bc71f6065d255ea2bdc0fe6520485c1b45db"
|
||||
integrity sha512-+x5TozgqYdOwWsQFZizE/Tra3fKvAoy037kOyU6cgz84n8f6zxngLOV4O32kTwt9FcLCxAqw0P/c8rOr9y+Gfg==
|
||||
dependencies:
|
||||
kleur "^3.0.2"
|
||||
sisteransi "^1.0.0"
|
||||
|
||||
psl@^1.1.24, psl@^1.1.28:
|
||||
version "1.1.32"
|
||||
resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.32.tgz#3f132717cf2f9c169724b2b6caf373cf694198db"
|
||||
|
@ -2985,6 +3260,18 @@ require-main-filename@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
|
||||
integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
|
||||
|
||||
resolve-cwd@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
|
||||
integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=
|
||||
dependencies:
|
||||
resolve-from "^3.0.0"
|
||||
|
||||
resolve-from@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
|
||||
integrity sha1-six699nWiBvItuZTM17rywoYh0g=
|
||||
|
||||
resolve-url@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
|
||||
|
@ -3007,7 +3294,7 @@ ret@~0.1.10:
|
|||
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
|
||||
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
|
||||
|
||||
rimraf@^2.6.1, rimraf@^2.6.3:
|
||||
rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3:
|
||||
version "2.6.3"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
|
||||
integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
|
||||
|
@ -3056,7 +3343,7 @@ sax@^1.2.4:
|
|||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
||||
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
|
||||
|
||||
"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0:
|
||||
"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0:
|
||||
version "5.7.0"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b"
|
||||
integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
|
||||
|
@ -3113,6 +3400,11 @@ shebang-regex@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
|
||||
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
|
||||
|
||||
shellwords@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
|
||||
integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
|
||||
|
||||
shortid@^2.2.8:
|
||||
version "2.2.14"
|
||||
resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.14.tgz#80db6aafcbc3e3a46850b3c88d39e051b84c8d18"
|
||||
|
@ -3125,6 +3417,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
|
|||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
||||
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
|
||||
|
||||
sisteransi@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.0.tgz#77d9622ff909080f1c19e5f4a1df0c1b0a27b88c"
|
||||
integrity sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ==
|
||||
|
||||
slash@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
|
||||
|
@ -3265,6 +3562,14 @@ stealthy-require@^1.1.1:
|
|||
resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
|
||||
integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
|
||||
|
||||
string-length@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed"
|
||||
integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=
|
||||
dependencies:
|
||||
astral-regex "^1.0.0"
|
||||
strip-ansi "^4.0.0"
|
||||
|
||||
string-width@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
|
||||
|
@ -3507,6 +3812,14 @@ type-is@^1.6.16:
|
|||
media-typer "0.3.0"
|
||||
mime-types "~2.1.24"
|
||||
|
||||
uglify-js@^3.1.4:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5"
|
||||
integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==
|
||||
dependencies:
|
||||
commander "~2.20.0"
|
||||
source-map "~0.6.1"
|
||||
|
||||
union-value@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
|
||||
|
@ -3646,7 +3959,7 @@ which-module@^2.0.0:
|
|||
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
||||
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
|
||||
|
||||
which@^1.2.9:
|
||||
which@^1.2.9, which@^1.3.0:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
|
||||
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
|
||||
|
@ -3660,6 +3973,11 @@ wide-align@^1.1.0:
|
|||
dependencies:
|
||||
string-width "^1.0.2 || 2"
|
||||
|
||||
wordwrap@~0.0.2:
|
||||
version "0.0.3"
|
||||
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
|
||||
integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
|
||||
|
||||
wordwrap@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
|
||||
|
|
Loading…
Reference in New Issue