Comparing version 0.27.8 to 0.30.0
@@ -1,2 +0,2 @@ | ||
import { IMockAuthConfig, IEmailLogin, User } from "./types"; | ||
import { IMockAuthConfig, User, IEmailUser } from "./types"; | ||
export declare type Observer = (user: User | null) => any; | ||
@@ -6,8 +6,50 @@ export declare type IMockAdminApi = typeof authAdminApi; | ||
configureAuth(config: IMockAuthConfig): void; | ||
getValidEmails(): IEmailLogin[]; | ||
getValidEmailUsers(): IEmailUser[]; | ||
getAuthConfig(): IMockAuthConfig; | ||
addUserToAuth(u: import("@firebase/auth-types").User, p: string): void; | ||
updateEmailUser(email: string, updates: Partial<IEmailUser>): void; | ||
/** | ||
* For an already existing user in the Auth user pool, allows | ||
* the addition of _custom claims_. | ||
*/ | ||
grantUserCustomClaims(email: string, claims: string[]): void; | ||
/** | ||
* State explicitly what UID an anonymous user | ||
* should get; if not stated the default is to | ||
* generate a random UID. | ||
*/ | ||
setAnonymousUser(uid: string): import("./types").IMockAuth; | ||
/** | ||
* Gets a UID for an anonymous user; this UID will | ||
* be randomly generated unless it has been set | ||
* statically with the `setAnonymousUser()` method | ||
*/ | ||
getAnonymousUid(): string; | ||
/** | ||
* Retrieve the currently logged in user | ||
*/ | ||
getCurrentUser(): import("@firebase/auth-types").User; | ||
/** | ||
* Set the current user to a new user and notify all | ||
* observers of the `onAuth` event | ||
* | ||
* @param u the new `User` who has logged in | ||
*/ | ||
login(u: import("@firebase/auth-types").User): void; | ||
/** | ||
* Clear the current user and notify all observers of the | ||
* `onAuth` event. | ||
*/ | ||
logout(): void; | ||
/** | ||
* Add a callback function to be notified when Auth events | ||
* take place. | ||
* | ||
* @param observer callback function for `onAuth` events | ||
*/ | ||
addAuthObserver(observer: (user: import("@firebase/auth-types").User) => any): void; | ||
/** | ||
* Get a list of all the callback observers which have registered | ||
*/ | ||
getAuthObservers(): Observer[]; | ||
}; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const auth_1 = require("../auth"); | ||
const authMockHelpers_1 = require("./authMockHelpers"); | ||
const FireMockError_1 = require("../errors/FireMockError"); | ||
/** | ||
* The **Auth** configuration dictionary | ||
*/ | ||
let authConfig = { | ||
allowAnonymous: true | ||
}; | ||
let ANONYMOUS_USER_ID = "123456"; | ||
let ANONYMOUS_USER_ID; | ||
/** | ||
* callbacks sent in for callback when the | ||
* _auth_ state changes. | ||
*/ | ||
const authObservers = []; | ||
/** | ||
* The currently logged in user | ||
*/ | ||
let currentUser; | ||
exports.authAdminApi = { | ||
@@ -13,4 +26,4 @@ configureAuth(config) { | ||
}, | ||
getValidEmails() { | ||
return authConfig.validEmailLogins || []; | ||
getValidEmailUsers() { | ||
return authConfig.validEmailUsers || []; | ||
}, | ||
@@ -20,2 +33,35 @@ getAuthConfig() { | ||
}, | ||
addUserToAuth(u, p) { | ||
authConfig.validEmailUsers.push({ | ||
email: u.email, | ||
password: p, | ||
uid: u.uid, | ||
verified: u.emailVerified | ||
}); | ||
}, | ||
updateEmailUser(email, updates) { | ||
let found = false; | ||
authConfig.validEmailUsers = authConfig.validEmailUsers.map(i => { | ||
if (i.email === email) { | ||
found = true; | ||
return Object.assign({}, i, updates); | ||
} | ||
return i; | ||
}); | ||
if (!found) { | ||
throw new FireMockError_1.FireMockError(`Attempt to update email [${email}] failed because that user was not a known user email!`, "auth/not-found"); | ||
} | ||
}, | ||
/** | ||
* For an already existing user in the Auth user pool, allows | ||
* the addition of _custom claims_. | ||
*/ | ||
grantUserCustomClaims(email, claims) { | ||
exports.authAdminApi.updateEmailUser(email, { claims }); | ||
}, | ||
/** | ||
* State explicitly what UID an anonymous user | ||
* should get; if not stated the default is to | ||
* generate a random UID. | ||
*/ | ||
setAnonymousUser(uid) { | ||
@@ -25,8 +71,46 @@ ANONYMOUS_USER_ID = uid; | ||
}, | ||
/** | ||
* Gets a UID for an anonymous user; this UID will | ||
* be randomly generated unless it has been set | ||
* statically with the `setAnonymousUser()` method | ||
*/ | ||
getAnonymousUid() { | ||
return ANONYMOUS_USER_ID; | ||
return ANONYMOUS_USER_ID ? ANONYMOUS_USER_ID : authMockHelpers_1.createUid(); | ||
}, | ||
/** | ||
* Retrieve the currently logged in user | ||
*/ | ||
getCurrentUser() { | ||
return currentUser; | ||
}, | ||
/** | ||
* Set the current user to a new user and notify all | ||
* observers of the `onAuth` event | ||
* | ||
* @param u the new `User` who has logged in | ||
*/ | ||
login(u) { | ||
currentUser = u; | ||
authObservers.map(o => o(u)); | ||
}, | ||
/** | ||
* Clear the current user and notify all observers of the | ||
* `onAuth` event. | ||
*/ | ||
logout() { | ||
currentUser = undefined; | ||
authObservers.map(o => o(undefined)); | ||
}, | ||
/** | ||
* Add a callback function to be notified when Auth events | ||
* take place. | ||
* | ||
* @param observer callback function for `onAuth` events | ||
*/ | ||
addAuthObserver(observer) { | ||
authObservers.push(observer); | ||
}, | ||
/** | ||
* Get a list of all the callback observers which have registered | ||
*/ | ||
getAuthObservers() { | ||
@@ -33,0 +117,0 @@ return authObservers; |
@@ -57,3 +57,3 @@ "use strict"; | ||
.getAuthConfig() | ||
.validEmailLogins.find(i => i.email === email); | ||
.validEmailUsers.find(i => i.email === email); | ||
if (!found) { | ||
@@ -80,5 +80,9 @@ throw common_types_1.createError(`auth/user-not-found`, `The email "${email}" was not found`); | ||
}; | ||
authMockHelpers_1.loggedIn(partial.user); | ||
return completeUserCredential_1.completeUserCredential(partial); | ||
const u = completeUserCredential_1.completeUserCredential(partial); | ||
authAdmin_1.authAdminApi.login(u.user); | ||
return u; | ||
}, | ||
/** | ||
* Add a new user with the Email/Password provider | ||
*/ | ||
async createUserWithEmailAndPassword(email, password) { | ||
@@ -113,3 +117,5 @@ await util_1.networkDelay(); | ||
}; | ||
authMockHelpers_1.loggedIn(partial.user); | ||
const u = completeUserCredential_1.completeUserCredential(partial); | ||
authAdmin_1.authAdminApi.addUserToAuth(u.user, password); | ||
authAdmin_1.authAdminApi.login(u.user); | ||
return completeUserCredential_1.completeUserCredential(partial); | ||
@@ -124,4 +130,3 @@ }, | ||
async signOut() { | ||
authMockHelpers_1.loggedOut(); | ||
return; | ||
authAdmin_1.authAdminApi.logout(); | ||
}, | ||
@@ -128,0 +133,0 @@ get currentUser() { |
@@ -6,3 +6,3 @@ "use strict"; | ||
function checkIfEmailUserExists(email) { | ||
const emails = authAdmin_1.authAdminApi.getValidEmails(); | ||
const emails = authAdmin_1.authAdminApi.getValidEmailUsers(); | ||
return emails.map(e => e.email).includes(email); | ||
@@ -16,3 +16,3 @@ } | ||
function validEmailUserPassword(email, password) { | ||
const config = authAdmin_1.authAdminApi.getValidEmails().find(i => i.email === email); | ||
const config = authAdmin_1.authAdminApi.getValidEmailUsers().find(i => i.email === email); | ||
return config ? config.password === password : false; | ||
@@ -22,3 +22,3 @@ } | ||
function emailVerified(email) { | ||
const config = authAdmin_1.authAdminApi.getValidEmails().find(i => i.email === email); | ||
const config = authAdmin_1.authAdminApi.getValidEmailUsers().find(i => i.email === email); | ||
return config ? config.verified || false : false; | ||
@@ -28,3 +28,3 @@ } | ||
function userUid(email) { | ||
const config = authAdmin_1.authAdminApi.getValidEmails().find(i => i.email === email); | ||
const config = authAdmin_1.authAdminApi.getValidEmailUsers().find(i => i.email === email); | ||
return config.uid || createUid(); | ||
@@ -34,5 +34,6 @@ } | ||
function createUid() { | ||
// example: 0CMjMW6vWQePd3zVmap78mHCxst1 | ||
return Math.random() | ||
.toString(36) | ||
.substr(2, 10); | ||
.substr(2, 28); | ||
} | ||
@@ -39,0 +40,0 @@ exports.createUid = createUid; |
@@ -37,5 +37,2 @@ "use strict"; | ||
}, | ||
// async linkWithCredential(credential: AuthCredential) { | ||
// return completeUserCredential({}).user; | ||
// }, | ||
async linkWithCredential(credential) { | ||
@@ -42,0 +39,0 @@ return completeUserCredential({}); |
@@ -10,3 +10,7 @@ import { IMockAdminApi } from "./authAdmin"; | ||
export declare type FirebaseApp = import("@firebase/app-types").FirebaseApp; | ||
export interface IEmailLogin { | ||
/** | ||
* Create a user in the Auth system which can be logged in via the | ||
* email/password authentication style | ||
*/ | ||
export interface IEmailUser { | ||
email: string; | ||
@@ -18,2 +22,4 @@ password: string; | ||
uid?: string; | ||
/** optionally give the user a set of claims */ | ||
claims?: string[]; | ||
} | ||
@@ -38,9 +44,14 @@ export declare type IMockSetup = (mock: Mock) => () => Promise<void>; | ||
} | ||
/** | ||
* The configuration of the **Auth** mocking service | ||
*/ | ||
export interface IMockAuthConfig { | ||
/** | ||
* a list of email logins which are already setup as valid | ||
* in the mock authentication module; this will be used for | ||
* email logins as well as email links | ||
* create a set of users who are deemed valid for email/password | ||
* login; this will be used for email logins as well as email links. | ||
* | ||
* **Note:** if you set this without setting `allowEmailLogins` to true | ||
* it will throw a `firemock/invalid-configuration` error. | ||
*/ | ||
validEmailLogins?: IEmailLogin[]; | ||
validEmailUsers?: IEmailUser[]; | ||
/** allow anonymous logins */ | ||
@@ -47,0 +58,0 @@ allowAnonymous?: boolean; |
@@ -159,5 +159,5 @@ "use strict"; | ||
} | ||
if (delay === "weak") { | ||
return getRandomInt(400, 900); | ||
} | ||
// if (delay === "weak") { | ||
// return getRandomInt(400, 900); | ||
// } | ||
if (delay === "mobile") { | ||
@@ -164,0 +164,0 @@ return getRandomInt(300, 500); |
@@ -1,2 +0,2 @@ | ||
import { IMockAuthConfig, IEmailLogin, User } from "./types"; | ||
import { IMockAuthConfig, User, IEmailUser } from "./types"; | ||
export declare type Observer = (user: User | null) => any; | ||
@@ -6,8 +6,50 @@ export declare type IMockAdminApi = typeof authAdminApi; | ||
configureAuth(config: IMockAuthConfig): void; | ||
getValidEmails(): IEmailLogin[]; | ||
getValidEmailUsers(): IEmailUser[]; | ||
getAuthConfig(): IMockAuthConfig; | ||
addUserToAuth(u: import("@firebase/auth-types").User, p: string): void; | ||
updateEmailUser(email: string, updates: Partial<IEmailUser>): void; | ||
/** | ||
* For an already existing user in the Auth user pool, allows | ||
* the addition of _custom claims_. | ||
*/ | ||
grantUserCustomClaims(email: string, claims: string[]): void; | ||
/** | ||
* State explicitly what UID an anonymous user | ||
* should get; if not stated the default is to | ||
* generate a random UID. | ||
*/ | ||
setAnonymousUser(uid: string): import("./types").IMockAuth; | ||
/** | ||
* Gets a UID for an anonymous user; this UID will | ||
* be randomly generated unless it has been set | ||
* statically with the `setAnonymousUser()` method | ||
*/ | ||
getAnonymousUid(): string; | ||
/** | ||
* Retrieve the currently logged in user | ||
*/ | ||
getCurrentUser(): import("@firebase/auth-types").User; | ||
/** | ||
* Set the current user to a new user and notify all | ||
* observers of the `onAuth` event | ||
* | ||
* @param u the new `User` who has logged in | ||
*/ | ||
login(u: import("@firebase/auth-types").User): void; | ||
/** | ||
* Clear the current user and notify all observers of the | ||
* `onAuth` event. | ||
*/ | ||
logout(): void; | ||
/** | ||
* Add a callback function to be notified when Auth events | ||
* take place. | ||
* | ||
* @param observer callback function for `onAuth` events | ||
*/ | ||
addAuthObserver(observer: (user: import("@firebase/auth-types").User) => any): void; | ||
/** | ||
* Get a list of all the callback observers which have registered | ||
*/ | ||
getAuthObservers(): Observer[]; | ||
}; |
import { authApi } from "../auth"; | ||
import { createUid } from "./authMockHelpers"; | ||
import { FireMockError } from "../errors/FireMockError"; | ||
/** | ||
* The **Auth** configuration dictionary | ||
*/ | ||
let authConfig = { | ||
allowAnonymous: true | ||
}; | ||
let ANONYMOUS_USER_ID = "123456"; | ||
let ANONYMOUS_USER_ID; | ||
/** | ||
* callbacks sent in for callback when the | ||
* _auth_ state changes. | ||
*/ | ||
const authObservers = []; | ||
/** | ||
* The currently logged in user | ||
*/ | ||
let currentUser; | ||
export const authAdminApi = { | ||
@@ -11,4 +24,4 @@ configureAuth(config) { | ||
}, | ||
getValidEmails() { | ||
return authConfig.validEmailLogins || []; | ||
getValidEmailUsers() { | ||
return authConfig.validEmailUsers || []; | ||
}, | ||
@@ -18,2 +31,35 @@ getAuthConfig() { | ||
}, | ||
addUserToAuth(u, p) { | ||
authConfig.validEmailUsers.push({ | ||
email: u.email, | ||
password: p, | ||
uid: u.uid, | ||
verified: u.emailVerified | ||
}); | ||
}, | ||
updateEmailUser(email, updates) { | ||
let found = false; | ||
authConfig.validEmailUsers = authConfig.validEmailUsers.map(i => { | ||
if (i.email === email) { | ||
found = true; | ||
return Object.assign({}, i, updates); | ||
} | ||
return i; | ||
}); | ||
if (!found) { | ||
throw new FireMockError(`Attempt to update email [${email}] failed because that user was not a known user email!`, "auth/not-found"); | ||
} | ||
}, | ||
/** | ||
* For an already existing user in the Auth user pool, allows | ||
* the addition of _custom claims_. | ||
*/ | ||
grantUserCustomClaims(email, claims) { | ||
authAdminApi.updateEmailUser(email, { claims }); | ||
}, | ||
/** | ||
* State explicitly what UID an anonymous user | ||
* should get; if not stated the default is to | ||
* generate a random UID. | ||
*/ | ||
setAnonymousUser(uid) { | ||
@@ -23,8 +69,46 @@ ANONYMOUS_USER_ID = uid; | ||
}, | ||
/** | ||
* Gets a UID for an anonymous user; this UID will | ||
* be randomly generated unless it has been set | ||
* statically with the `setAnonymousUser()` method | ||
*/ | ||
getAnonymousUid() { | ||
return ANONYMOUS_USER_ID; | ||
return ANONYMOUS_USER_ID ? ANONYMOUS_USER_ID : createUid(); | ||
}, | ||
/** | ||
* Retrieve the currently logged in user | ||
*/ | ||
getCurrentUser() { | ||
return currentUser; | ||
}, | ||
/** | ||
* Set the current user to a new user and notify all | ||
* observers of the `onAuth` event | ||
* | ||
* @param u the new `User` who has logged in | ||
*/ | ||
login(u) { | ||
currentUser = u; | ||
authObservers.map(o => o(u)); | ||
}, | ||
/** | ||
* Clear the current user and notify all observers of the | ||
* `onAuth` event. | ||
*/ | ||
logout() { | ||
currentUser = undefined; | ||
authObservers.map(o => o(undefined)); | ||
}, | ||
/** | ||
* Add a callback function to be notified when Auth events | ||
* take place. | ||
* | ||
* @param observer callback function for `onAuth` events | ||
*/ | ||
addAuthObserver(observer) { | ||
authObservers.push(observer); | ||
}, | ||
/** | ||
* Get a list of all the callback observers which have registered | ||
*/ | ||
getAuthObservers() { | ||
@@ -31,0 +115,0 @@ return authObservers; |
@@ -7,3 +7,3 @@ import { networkDelay } from "../util"; | ||
import { FireMockError } from "../errors/FireMockError"; | ||
import { checkIfEmailUserExists, validEmailUserPassword, emailVerified, userUid, emailValidationAllowed, loggedIn, loggedOut, checkIfEmailIsValidFormat } from "./authMockHelpers"; | ||
import { checkIfEmailUserExists, validEmailUserPassword, emailVerified, userUid, emailValidationAllowed, checkIfEmailIsValidFormat } from "./authMockHelpers"; | ||
export const implemented = { | ||
@@ -56,3 +56,3 @@ app: { | ||
.getAuthConfig() | ||
.validEmailLogins.find(i => i.email === email); | ||
.validEmailUsers.find(i => i.email === email); | ||
if (!found) { | ||
@@ -79,5 +79,9 @@ throw createError(`auth/user-not-found`, `The email "${email}" was not found`); | ||
}; | ||
loggedIn(partial.user); | ||
return completeUserCredential(partial); | ||
const u = completeUserCredential(partial); | ||
authAdminApi.login(u.user); | ||
return u; | ||
}, | ||
/** | ||
* Add a new user with the Email/Password provider | ||
*/ | ||
async createUserWithEmailAndPassword(email, password) { | ||
@@ -112,3 +116,5 @@ await networkDelay(); | ||
}; | ||
loggedIn(partial.user); | ||
const u = completeUserCredential(partial); | ||
authAdminApi.addUserToAuth(u.user, password); | ||
authAdminApi.login(u.user); | ||
return completeUserCredential(partial); | ||
@@ -123,4 +129,3 @@ }, | ||
async signOut() { | ||
loggedOut(); | ||
return; | ||
authAdminApi.logout(); | ||
}, | ||
@@ -127,0 +132,0 @@ get currentUser() { |
import { authAdminApi } from "./authAdmin"; | ||
import { validate } from "email-validator"; | ||
export function checkIfEmailUserExists(email) { | ||
const emails = authAdminApi.getValidEmails(); | ||
const emails = authAdminApi.getValidEmailUsers(); | ||
return emails.map(e => e.email).includes(email); | ||
@@ -11,17 +11,18 @@ } | ||
export function validEmailUserPassword(email, password) { | ||
const config = authAdminApi.getValidEmails().find(i => i.email === email); | ||
const config = authAdminApi.getValidEmailUsers().find(i => i.email === email); | ||
return config ? config.password === password : false; | ||
} | ||
export function emailVerified(email) { | ||
const config = authAdminApi.getValidEmails().find(i => i.email === email); | ||
const config = authAdminApi.getValidEmailUsers().find(i => i.email === email); | ||
return config ? config.verified || false : false; | ||
} | ||
export function userUid(email) { | ||
const config = authAdminApi.getValidEmails().find(i => i.email === email); | ||
const config = authAdminApi.getValidEmailUsers().find(i => i.email === email); | ||
return config.uid || createUid(); | ||
} | ||
export function createUid() { | ||
// example: 0CMjMW6vWQePd3zVmap78mHCxst1 | ||
return Math.random() | ||
.toString(36) | ||
.substr(2, 10); | ||
.substr(2, 28); | ||
} | ||
@@ -28,0 +29,0 @@ export function emailValidationAllowed() { |
@@ -34,5 +34,2 @@ import { authAdminApi } from "./authAdmin"; | ||
}, | ||
// async linkWithCredential(credential: AuthCredential) { | ||
// return completeUserCredential({}).user; | ||
// }, | ||
async linkWithCredential(credential) { | ||
@@ -39,0 +36,0 @@ return completeUserCredential({}); |
@@ -10,3 +10,7 @@ import { IMockAdminApi } from "./authAdmin"; | ||
export declare type FirebaseApp = import("@firebase/app-types").FirebaseApp; | ||
export interface IEmailLogin { | ||
/** | ||
* Create a user in the Auth system which can be logged in via the | ||
* email/password authentication style | ||
*/ | ||
export interface IEmailUser { | ||
email: string; | ||
@@ -18,2 +22,4 @@ password: string; | ||
uid?: string; | ||
/** optionally give the user a set of claims */ | ||
claims?: string[]; | ||
} | ||
@@ -38,9 +44,14 @@ export declare type IMockSetup = (mock: Mock) => () => Promise<void>; | ||
} | ||
/** | ||
* The configuration of the **Auth** mocking service | ||
*/ | ||
export interface IMockAuthConfig { | ||
/** | ||
* a list of email logins which are already setup as valid | ||
* in the mock authentication module; this will be used for | ||
* email logins as well as email links | ||
* create a set of users who are deemed valid for email/password | ||
* login; this will be used for email logins as well as email links. | ||
* | ||
* **Note:** if you set this without setting `allowEmailLogins` to true | ||
* it will throw a `firemock/invalid-configuration` error. | ||
*/ | ||
validEmailLogins?: IEmailLogin[]; | ||
validEmailUsers?: IEmailUser[]; | ||
/** allow anonymous logins */ | ||
@@ -47,0 +58,0 @@ allowAnonymous?: boolean; |
@@ -134,5 +134,5 @@ import first from "lodash.first"; | ||
} | ||
if (delay === "weak") { | ||
return getRandomInt(400, 900); | ||
} | ||
// if (delay === "weak") { | ||
// return getRandomInt(400, 900); | ||
// } | ||
if (delay === "mobile") { | ||
@@ -139,0 +139,0 @@ return getRandomInt(300, 500); |
{ | ||
"name": "firemock", | ||
"version": "0.27.8", | ||
"version": "0.30.0", | ||
"description": "firemock", | ||
@@ -35,8 +35,9 @@ "license": "MIT", | ||
"dependencies": { | ||
"@firebase/app-types": "^0.4.0", | ||
"@firebase/auth-types": "^0.7.0", | ||
"@firebase/database-types": "^0.4.0", | ||
"@firebase/util": "^0.2.18", | ||
"@firebase/app-types": "^0.4.3", | ||
"@firebase/auth-types": "^0.7.2", | ||
"@firebase/database-types": "^0.4.2", | ||
"@firebase/util": "^0.2.25", | ||
"@types/faker": "^4.1.5", | ||
"common-types": "^1.11.11", | ||
"common-types": "^1.11.15", | ||
"deepmerge": "^4.0.0", | ||
"email-validator": "^2.0.4", | ||
@@ -56,2 +57,3 @@ "faker": "^4.1.0", | ||
"@types/commander": "^2.12.2", | ||
"@types/deepmerge": "^2.2.0", | ||
"@types/js-yaml": "^3.12.1", | ||
@@ -66,6 +68,6 @@ "@types/lodash.first": "^3.0.6", | ||
"@types/stack-trace": "^0.0.29", | ||
"@vuepress/plugin-back-to-top": "^1.0.0", | ||
"@vuepress/plugin-last-updated": "^1.0.0", | ||
"@vuepress/plugin-medium-zoom": "^1.0.0", | ||
"@vuepress/plugin-pwa": "^1.0.0", | ||
"@vuepress/plugin-back-to-top": "^1.0.3", | ||
"@vuepress/plugin-last-updated": "^1.0.3", | ||
"@vuepress/plugin-medium-zoom": "^1.0.3", | ||
"@vuepress/plugin-pwa": "^1.0.3", | ||
"async-shelljs": "^0.1.2", | ||
@@ -75,11 +77,11 @@ "chai": "^4.2.0", | ||
"js-yaml": "^3.13.1", | ||
"mocha": "^6.1.4", | ||
"mocha": "^6.2.0", | ||
"prettier": "^1.18.2", | ||
"rimraf": "^2.6.3", | ||
"rimraf": "^3.0.0", | ||
"test-console": "^1.1.0", | ||
"ts-node": "^8.2.0", | ||
"tslint": "^5.16.0", | ||
"tslint": "^5.18.0", | ||
"tslint-config-prettier": "^1.18.0", | ||
"typescript": "^3.5.1", | ||
"vuepress": "^1.0.0" | ||
"typescript": "^3.5.3", | ||
"vuepress": "^1.0.3" | ||
}, | ||
@@ -86,0 +88,0 @@ "engines": { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
359452
6224
17
29
+ Addeddeepmerge@^4.0.0
+ Addeddeepmerge@4.3.1(transitive)
Updated@firebase/app-types@^0.4.3
Updated@firebase/auth-types@^0.7.2
Updated@firebase/util@^0.2.25
Updatedcommon-types@^1.11.15