commit
58d744f0a1
@ -1 +1 @@ |
||||
METEOR@1.6.0.1 |
||||
METEOR@1.6.1 |
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,14 @@ |
||||
/** |
||||
This API returns all permissions that exists |
||||
on the server, with respective roles. |
||||
|
||||
Method: GET |
||||
Route: api/v1/permissions |
||||
*/ |
||||
RocketChat.API.v1.addRoute('permissions', { authRequired: true }, { |
||||
get() { |
||||
const result = Meteor.runAsUser(this.userId, () => Meteor.call('permissions/get')); |
||||
|
||||
return RocketChat.API.v1.success(result); |
||||
} |
||||
}); |
@ -0,0 +1,27 @@ |
||||
/** |
||||
This API returns the result of a query of rooms |
||||
and users, using Meteor's Spotlight method. |
||||
|
||||
Method: GET |
||||
Route: api/v1/spotlight |
||||
Query params: |
||||
- query: The term to be searched. |
||||
*/ |
||||
RocketChat.API.v1.addRoute('spotlight', { authRequired: true }, { |
||||
get() { |
||||
check(this.queryParams, { |
||||
query: String |
||||
}); |
||||
|
||||
const { query } = this.queryParams; |
||||
|
||||
const result = Meteor.runAsUser(this.userId, () => |
||||
Meteor.call('spotlight', query, null, { |
||||
rooms: true, |
||||
users: true |
||||
}) |
||||
); |
||||
|
||||
return RocketChat.API.v1.success(result); |
||||
} |
||||
}); |
@ -1,335 +1,430 @@ |
||||
import _ from 'underscore'; |
||||
import Busboy from 'busboy'; |
||||
|
||||
RocketChat.API.v1.addRoute('users.create', { authRequired: true }, { |
||||
post() { |
||||
check(this.bodyParams, { |
||||
email: String, |
||||
name: String, |
||||
password: String, |
||||
username: String, |
||||
active: Match.Maybe(Boolean), |
||||
roles: Match.Maybe(Array), |
||||
joinDefaultChannels: Match.Maybe(Boolean), |
||||
requirePasswordChange: Match.Maybe(Boolean), |
||||
sendWelcomeEmail: Match.Maybe(Boolean), |
||||
verified: Match.Maybe(Boolean), |
||||
customFields: Match.Maybe(Object) |
||||
}); |
||||
|
||||
//New change made by pull request #5152
|
||||
if (typeof this.bodyParams.joinDefaultChannels === 'undefined') { |
||||
this.bodyParams.joinDefaultChannels = true; |
||||
} |
||||
import _ from "underscore"; |
||||
import Busboy from "busboy"; |
||||
|
||||
RocketChat.API.v1.addRoute( |
||||
"users.create", |
||||
{ authRequired: true }, |
||||
{ |
||||
post() { |
||||
check(this.bodyParams, { |
||||
email: String, |
||||
name: String, |
||||
password: String, |
||||
username: String, |
||||
active: Match.Maybe(Boolean), |
||||
roles: Match.Maybe(Array), |
||||
joinDefaultChannels: Match.Maybe(Boolean), |
||||
requirePasswordChange: Match.Maybe(Boolean), |
||||
sendWelcomeEmail: Match.Maybe(Boolean), |
||||
verified: Match.Maybe(Boolean), |
||||
customFields: Match.Maybe(Object) |
||||
}); |
||||
|
||||
if (this.bodyParams.customFields) { |
||||
RocketChat.validateCustomFields(this.bodyParams.customFields); |
||||
} |
||||
//New change made by pull request #5152
|
||||
if (typeof this.bodyParams.joinDefaultChannels === "undefined") { |
||||
this.bodyParams.joinDefaultChannels = true; |
||||
} |
||||
|
||||
const newUserId = RocketChat.saveUser(this.userId, this.bodyParams); |
||||
if (this.bodyParams.customFields) { |
||||
RocketChat.validateCustomFields(this.bodyParams.customFields); |
||||
} |
||||
|
||||
if (this.bodyParams.customFields) { |
||||
RocketChat.saveCustomFieldsWithoutValidation(newUserId, this.bodyParams.customFields); |
||||
} |
||||
const newUserId = RocketChat.saveUser(this.userId, this.bodyParams); |
||||
|
||||
if (this.bodyParams.customFields) { |
||||
RocketChat.saveCustomFieldsWithoutValidation(newUserId, this.bodyParams.customFields); |
||||
} |
||||
|
||||
if (typeof this.bodyParams.active !== 'undefined') { |
||||
Meteor.runAsUser(this.userId, () => { |
||||
Meteor.call('setUserActiveStatus', newUserId, this.bodyParams.active); |
||||
if (typeof this.bodyParams.active !== "undefined") { |
||||
Meteor.runAsUser(this.userId, () => { |
||||
Meteor.call("setUserActiveStatus", newUserId, this.bodyParams.active); |
||||
}); |
||||
} |
||||
|
||||
return RocketChat.API.v1.success({ |
||||
user: RocketChat.models.Users.findOneById(newUserId, { fields: RocketChat.API.v1.defaultFieldsToExclude }) |
||||
}); |
||||
} |
||||
|
||||
return RocketChat.API.v1.success({ user: RocketChat.models.Users.findOneById(newUserId, { fields: RocketChat.API.v1.defaultFieldsToExclude }) }); |
||||
} |
||||
}); |
||||
|
||||
RocketChat.API.v1.addRoute('users.delete', { authRequired: true }, { |
||||
post() { |
||||
if (!RocketChat.authz.hasPermission(this.userId, 'delete-user')) { |
||||
return RocketChat.API.v1.unauthorized(); |
||||
} |
||||
); |
||||
|
||||
RocketChat.API.v1.addRoute( |
||||
"users.delete", |
||||
{ authRequired: true }, |
||||
{ |
||||
post() { |
||||
if (!RocketChat.authz.hasPermission(this.userId, "delete-user")) { |
||||
return RocketChat.API.v1.unauthorized(); |
||||
} |
||||
|
||||
const user = this.getUserFromParams(); |
||||
const user = this.getUserFromParams(); |
||||
|
||||
Meteor.runAsUser(this.userId, () => { |
||||
Meteor.call('deleteUser', user._id); |
||||
}); |
||||
Meteor.runAsUser(this.userId, () => { |
||||
Meteor.call("deleteUser", user._id); |
||||
}); |
||||
|
||||
return RocketChat.API.v1.success(); |
||||
return RocketChat.API.v1.success(); |
||||
} |
||||
} |
||||
}); |
||||
|
||||
RocketChat.API.v1.addRoute('users.getAvatar', { authRequired: false }, { |
||||
get() { |
||||
const user = this.getUserFromParams(); |
||||
|
||||
const url = RocketChat.getURL(`/avatar/${ user.username }`, { cdn: false, full: true }); |
||||
this.response.setHeader('Location', url); |
||||
|
||||
return { |
||||
statusCode: 307, |
||||
body: url |
||||
}; |
||||
); |
||||
|
||||
RocketChat.API.v1.addRoute( |
||||
"users.getAvatar", |
||||
{ authRequired: false }, |
||||
{ |
||||
get() { |
||||
const user = this.getUserFromParams(); |
||||
|
||||
const url = RocketChat.getURL(`/avatar/${user.username}`, { cdn: false, full: true }); |
||||
this.response.setHeader("Location", url); |
||||
|
||||
return { |
||||
statusCode: 307, |
||||
body: url |
||||
}; |
||||
} |
||||
} |
||||
}); |
||||
); |
||||
|
||||
RocketChat.API.v1.addRoute( |
||||
"users.getPresence", |
||||
{ authRequired: true }, |
||||
{ |
||||
get() { |
||||
if (this.isUserFromParams()) { |
||||
const user = RocketChat.models.Users.findOneById(this.userId); |
||||
return RocketChat.API.v1.success({ |
||||
presence: user.status, |
||||
connectionStatus: user.statusConnection, |
||||
lastLogin: user.lastLogin |
||||
}); |
||||
} |
||||
|
||||
const user = this.getUserFromParams(); |
||||
|
||||
RocketChat.API.v1.addRoute('users.getPresence', { authRequired: true }, { |
||||
get() { |
||||
if (this.isUserFromParams()) { |
||||
const user = RocketChat.models.Users.findOneById(this.userId); |
||||
return RocketChat.API.v1.success({ |
||||
presence: user.status, |
||||
connectionStatus: user.statusConnection, |
||||
lastLogin: user.lastLogin |
||||
presence: user.status |
||||
}); |
||||
} |
||||
|
||||
const user = this.getUserFromParams(); |
||||
|
||||
return RocketChat.API.v1.success({ |
||||
presence: user.status |
||||
}); |
||||
} |
||||
}); |
||||
); |
||||
|
||||
RocketChat.API.v1.addRoute('users.info', { authRequired: true }, { |
||||
get() { |
||||
const user = this.getUserFromParams(); |
||||
RocketChat.API.v1.addRoute( |
||||
"users.info", |
||||
{ authRequired: true }, |
||||
{ |
||||
get() { |
||||
const user = this.getUserFromParams(); |
||||
|
||||
let result; |
||||
Meteor.runAsUser(this.userId, () => { |
||||
result = Meteor.call('getFullUserData', { filter: user.username, limit: 1 }); |
||||
}); |
||||
let result; |
||||
Meteor.runAsUser(this.userId, () => { |
||||
result = Meteor.call("getFullUserData", { filter: user.username, limit: 1 }); |
||||
}); |
||||
|
||||
if (!result || result.length !== 1) { |
||||
return RocketChat.API.v1.failure(`Failed to get the user data for the userId of "${ user._id }".`); |
||||
} |
||||
if (!result || result.length !== 1) { |
||||
return RocketChat.API.v1.failure(`Failed to get the user data for the userId of "${user._id}".`); |
||||
} |
||||
|
||||
return RocketChat.API.v1.success({ |
||||
user: result[0] |
||||
}); |
||||
return RocketChat.API.v1.success({ |
||||
user: result[0] |
||||
}); |
||||
} |
||||
} |
||||
}); |
||||
); |
||||
|
||||
RocketChat.API.v1.addRoute( |
||||
"users.list", |
||||
{ authRequired: true }, |
||||
{ |
||||
get() { |
||||
if (!RocketChat.authz.hasPermission(this.userId, "view-d-room")) { |
||||
return RocketChat.API.v1.unauthorized(); |
||||
} |
||||
|
||||
RocketChat.API.v1.addRoute('users.list', { authRequired: true }, { |
||||
get() { |
||||
if (!RocketChat.authz.hasPermission(this.userId, 'view-d-room')) { |
||||
return RocketChat.API.v1.unauthorized(); |
||||
} |
||||
const { offset, count } = this.getPaginationItems(); |
||||
const { sort, fields, query } = this.parseJsonQuery(); |
||||
|
||||
const { offset, count } = this.getPaginationItems(); |
||||
const { sort, fields, query } = this.parseJsonQuery(); |
||||
|
||||
const users = RocketChat.models.Users.find(query, { |
||||
sort: sort ? sort : { username: 1 }, |
||||
skip: offset, |
||||
limit: count, |
||||
fields |
||||
}).fetch(); |
||||
|
||||
return RocketChat.API.v1.success({ |
||||
users, |
||||
count: users.length, |
||||
offset, |
||||
total: RocketChat.models.Users.find(query).count() |
||||
}); |
||||
} |
||||
}); |
||||
const users = RocketChat.models.Users.find(query, { |
||||
sort: sort ? sort : { username: 1 }, |
||||
skip: offset, |
||||
limit: count, |
||||
fields |
||||
}).fetch(); |
||||
|
||||
RocketChat.API.v1.addRoute('users.register', { authRequired: false }, { |
||||
post() { |
||||
if (this.userId) { |
||||
return RocketChat.API.v1.failure('Logged in users can not register again.'); |
||||
return RocketChat.API.v1.success({ |
||||
users, |
||||
count: users.length, |
||||
offset, |
||||
total: RocketChat.models.Users.find(query).count() |
||||
}); |
||||
} |
||||
} |
||||
); |
||||
|
||||
RocketChat.API.v1.addRoute( |
||||
"users.register", |
||||
{ authRequired: false }, |
||||
{ |
||||
post() { |
||||
if (this.userId) { |
||||
return RocketChat.API.v1.failure("Logged in users can not register again."); |
||||
} |
||||
|
||||
//We set their username here, so require it
|
||||
//The `registerUser` checks for the other requirements
|
||||
check(this.bodyParams, Match.ObjectIncluding({ |
||||
username: String |
||||
})); |
||||
//We set their username here, so require it
|
||||
//The `registerUser` checks for the other requirements
|
||||
check( |
||||
this.bodyParams, |
||||
Match.ObjectIncluding({ |
||||
username: String |
||||
}) |
||||
); |
||||
|
||||
//Register the user
|
||||
const userId = Meteor.call('registerUser', this.bodyParams); |
||||
//Register the user
|
||||
const userId = Meteor.call("registerUser", this.bodyParams); |
||||
|
||||
//Now set their username
|
||||
Meteor.runAsUser(userId, () => Meteor.call('setUsername', this.bodyParams.username)); |
||||
//Now set their username
|
||||
Meteor.runAsUser(userId, () => Meteor.call("setUsername", this.bodyParams.username)); |
||||
|
||||
return RocketChat.API.v1.success({ user: RocketChat.models.Users.findOneById(userId, { fields: RocketChat.API.v1.defaultFieldsToExclude }) }); |
||||
} |
||||
}); |
||||
|
||||
RocketChat.API.v1.addRoute('users.resetAvatar', { authRequired: true }, { |
||||
post() { |
||||
const user = this.getUserFromParams(); |
||||
|
||||
if (user._id === this.userId) { |
||||
Meteor.runAsUser(this.userId, () => Meteor.call('resetAvatar')); |
||||
} else if (RocketChat.authz.hasPermission(this.userId, 'edit-other-user-info')) { |
||||
Meteor.runAsUser(user._id, () => Meteor.call('resetAvatar')); |
||||
} else { |
||||
return RocketChat.API.v1.unauthorized(); |
||||
return RocketChat.API.v1.success({ |
||||
user: RocketChat.models.Users.findOneById(userId, { fields: RocketChat.API.v1.defaultFieldsToExclude }) |
||||
}); |
||||
} |
||||
|
||||
return RocketChat.API.v1.success(); |
||||
} |
||||
}); |
||||
|
||||
RocketChat.API.v1.addRoute('users.setAvatar', { authRequired: true }, { |
||||
post() { |
||||
check(this.bodyParams, Match.ObjectIncluding({ |
||||
avatarUrl: Match.Maybe(String), |
||||
userId: Match.Maybe(String), |
||||
username: Match.Maybe(String) |
||||
})); |
||||
|
||||
let user; |
||||
if (this.isUserFromParams()) { |
||||
user = Meteor.users.findOne(this.userId); |
||||
} else if (RocketChat.authz.hasPermission(this.userId, 'edit-other-user-info')) { |
||||
user = this.getUserFromParams(); |
||||
} else { |
||||
return RocketChat.API.v1.unauthorized(); |
||||
} |
||||
); |
||||
|
||||
RocketChat.API.v1.addRoute( |
||||
"users.resetAvatar", |
||||
{ authRequired: true }, |
||||
{ |
||||
post() { |
||||
const user = this.getUserFromParams(); |
||||
|
||||
if (user._id === this.userId) { |
||||
Meteor.runAsUser(this.userId, () => Meteor.call("resetAvatar")); |
||||
} else if (RocketChat.authz.hasPermission(this.userId, "edit-other-user-info")) { |
||||
Meteor.runAsUser(user._id, () => Meteor.call("resetAvatar")); |
||||
} else { |
||||
return RocketChat.API.v1.unauthorized(); |
||||
} |
||||
|
||||
Meteor.runAsUser(user._id, () => { |
||||
if (this.bodyParams.avatarUrl) { |
||||
RocketChat.setUserAvatar(user, this.bodyParams.avatarUrl, '', 'url'); |
||||
return RocketChat.API.v1.success(); |
||||
} |
||||
} |
||||
); |
||||
|
||||
RocketChat.API.v1.addRoute( |
||||
"users.setAvatar", |
||||
{ authRequired: true }, |
||||
{ |
||||
post() { |
||||
check( |
||||
this.bodyParams, |
||||
Match.ObjectIncluding({ |
||||
avatarUrl: Match.Maybe(String), |
||||
userId: Match.Maybe(String), |
||||
username: Match.Maybe(String) |
||||
}) |
||||
); |
||||
|
||||
let user; |
||||
if (this.isUserFromParams()) { |
||||
user = Meteor.users.findOne(this.userId); |
||||
} else if (RocketChat.authz.hasPermission(this.userId, "edit-other-user-info")) { |
||||
user = this.getUserFromParams(); |
||||
} else { |
||||
const busboy = new Busboy({ headers: this.request.headers }); |
||||
|
||||
Meteor.wrapAsync((callback) => { |
||||
busboy.on('file', Meteor.bindEnvironment((fieldname, file, filename, encoding, mimetype) => { |
||||
if (fieldname !== 'image') { |
||||
return callback(new Meteor.Error('invalid-field')); |
||||
} |
||||
|
||||
const imageData = []; |
||||
file.on('data', Meteor.bindEnvironment((data) => { |
||||
imageData.push(data); |
||||
})); |
||||
|
||||
file.on('end', Meteor.bindEnvironment(() => { |
||||
RocketChat.setUserAvatar(user, Buffer.concat(imageData), mimetype, 'rest'); |
||||
callback(); |
||||
})); |
||||
|
||||
})); |
||||
this.request.pipe(busboy); |
||||
})(); |
||||
return RocketChat.API.v1.unauthorized(); |
||||
} |
||||
}); |
||||
|
||||
return RocketChat.API.v1.success(); |
||||
Meteor.runAsUser(user._id, () => { |
||||
if (this.bodyParams.avatarUrl) { |
||||
RocketChat.setUserAvatar(user, this.bodyParams.avatarUrl, "", "url"); |
||||
} else { |
||||
const busboy = new Busboy({ headers: this.request.headers }); |
||||
|
||||
Meteor.wrapAsync(callback => { |
||||
busboy.on( |
||||
"file", |
||||
Meteor.bindEnvironment((fieldname, file, filename, encoding, mimetype) => { |
||||
if (fieldname !== "image") { |
||||
return callback(new Meteor.Error("invalid-field")); |
||||
} |
||||
|
||||
const imageData = []; |
||||
file.on( |
||||
"data", |
||||
Meteor.bindEnvironment(data => { |
||||
imageData.push(data); |
||||
}) |
||||
); |
||||
|
||||
file.on( |
||||
"end", |
||||
Meteor.bindEnvironment(() => { |
||||
RocketChat.setUserAvatar(user, Buffer.concat(imageData), mimetype, "rest"); |
||||
callback(); |
||||
}) |
||||
); |
||||
}) |
||||
); |
||||
this.request.pipe(busboy); |
||||
})(); |
||||
} |
||||
}); |
||||
|
||||
return RocketChat.API.v1.success(); |
||||
} |
||||
} |
||||
}); |
||||
|
||||
RocketChat.API.v1.addRoute('users.update', { authRequired: true }, { |
||||
post() { |
||||
check(this.bodyParams, { |
||||
userId: String, |
||||
data: Match.ObjectIncluding({ |
||||
email: Match.Maybe(String), |
||||
name: Match.Maybe(String), |
||||
password: Match.Maybe(String), |
||||
username: Match.Maybe(String), |
||||
active: Match.Maybe(Boolean), |
||||
roles: Match.Maybe(Array), |
||||
joinDefaultChannels: Match.Maybe(Boolean), |
||||
requirePasswordChange: Match.Maybe(Boolean), |
||||
sendWelcomeEmail: Match.Maybe(Boolean), |
||||
verified: Match.Maybe(Boolean), |
||||
customFields: Match.Maybe(Object) |
||||
}) |
||||
}); |
||||
); |
||||
|
||||
RocketChat.API.v1.addRoute( |
||||
"users.update", |
||||
{ authRequired: true }, |
||||
{ |
||||
post() { |
||||
check(this.bodyParams, { |
||||
userId: String, |
||||
data: Match.ObjectIncluding({ |
||||
email: Match.Maybe(String), |
||||
name: Match.Maybe(String), |
||||
password: Match.Maybe(String), |
||||
username: Match.Maybe(String), |
||||
active: Match.Maybe(Boolean), |
||||
roles: Match.Maybe(Array), |
||||
joinDefaultChannels: Match.Maybe(Boolean), |
||||
requirePasswordChange: Match.Maybe(Boolean), |
||||
sendWelcomeEmail: Match.Maybe(Boolean), |
||||
verified: Match.Maybe(Boolean), |
||||
customFields: Match.Maybe(Object) |
||||
}) |
||||
}); |
||||
|
||||
const userData = _.extend({ _id: this.bodyParams.userId }, this.bodyParams.data); |
||||
const userData = _.extend({ _id: this.bodyParams.userId }, this.bodyParams.data); |
||||
|
||||
Meteor.runAsUser(this.userId, () => RocketChat.saveUser(this.userId, userData)); |
||||
Meteor.runAsUser(this.userId, () => RocketChat.saveUser(this.userId, userData)); |
||||
|
||||
if (this.bodyParams.data.customFields) { |
||||
RocketChat.saveCustomFields(this.bodyParams.userId, this.bodyParams.data.customFields); |
||||
} |
||||
if (this.bodyParams.data.customFields) { |
||||
RocketChat.saveCustomFields(this.bodyParams.userId, this.bodyParams.data.customFields); |
||||
} |
||||
|
||||
if (typeof this.bodyParams.data.active !== 'undefined') { |
||||
if (typeof this.bodyParams.data.active !== "undefined") { |
||||
Meteor.runAsUser(this.userId, () => { |
||||
Meteor.call("setUserActiveStatus", this.bodyParams.userId, this.bodyParams.data.active); |
||||
}); |
||||
} |
||||
|
||||
return RocketChat.API.v1.success({ |
||||
user: RocketChat.models.Users.findOneById(this.bodyParams.userId, { fields: RocketChat.API.v1.defaultFieldsToExclude }) |
||||
}); |
||||
} |
||||
} |
||||
); |
||||
|
||||
RocketChat.API.v1.addRoute( |
||||
"users.createToken", |
||||
{ authRequired: true }, |
||||
{ |
||||
post() { |
||||
const user = this.getUserFromParams(); |
||||
let data; |
||||
Meteor.runAsUser(this.userId, () => { |
||||
Meteor.call('setUserActiveStatus', this.bodyParams.userId, this.bodyParams.data.active); |
||||
data = Meteor.call("createToken", user._id); |
||||
}); |
||||
return data ? RocketChat.API.v1.success({ data }) : RocketChat.API.v1.unauthorized(); |
||||
} |
||||
|
||||
return RocketChat.API.v1.success({ user: RocketChat.models.Users.findOneById(this.bodyParams.userId, { fields: RocketChat.API.v1.defaultFieldsToExclude }) }); |
||||
} |
||||
}); |
||||
|
||||
RocketChat.API.v1.addRoute('users.createToken', { authRequired: true }, { |
||||
post() { |
||||
const user = this.getUserFromParams(); |
||||
let data; |
||||
Meteor.runAsUser(this.userId, () => { |
||||
data = Meteor.call('createToken', user._id); |
||||
}); |
||||
return data ? RocketChat.API.v1.success({data}) : RocketChat.API.v1.unauthorized(); |
||||
); |
||||
|
||||
RocketChat.API.v1.addRoute( |
||||
"users.getPreferences", |
||||
{ authRequired: true }, |
||||
{ |
||||
get() { |
||||
const user = this.isUserFromParams() ? RocketChat.models.Users.findOneById(this.userId) : this.getUserFromParams(); |
||||
if (user.settings) { |
||||
const preferences = user.settings.preferences; |
||||
preferences["language"] = user.language; |
||||
|
||||
return RocketChat.API.v1.success({ |
||||
preferences |
||||
}); |
||||
} else { |
||||
return RocketChat.API.v1.failure(TAPi18n.__("Accounts_Default_User_Preferences").toUpperCase()); |
||||
} |
||||
} |
||||
} |
||||
}); |
||||
); |
||||
|
||||
RocketChat.API.v1.addRoute( |
||||
"users.setPreferences", |
||||
{ authRequired: true }, |
||||
{ |
||||
post() { |
||||
check(this.bodyParams, { |
||||
userId: String, |
||||
data: Match.ObjectIncluding({ |
||||
newRoomNotification: Match.Maybe(String), |
||||
newMessageNotification: Match.Maybe(String), |
||||
useEmojis: Match.Maybe(Boolean), |
||||
convertAsciiEmoji: Match.Maybe(Boolean), |
||||
saveMobileBandwidth: Match.Maybe(Boolean), |
||||
collapseMediaByDefault: Match.Maybe(Boolean), |
||||
autoImageLoad: Match.Maybe(Boolean), |
||||
emailNotificationMode: Match.Maybe(String), |
||||
roomsListExhibitionMode: Match.Maybe(String), |
||||
unreadAlert: Match.Maybe(Boolean), |
||||
notificationsSoundVolume: Match.Maybe(Number), |
||||
desktopNotifications: Match.Maybe(String), |
||||
mobileNotifications: Match.Maybe(String), |
||||
enableAutoAway: Match.Maybe(Boolean), |
||||
highlights: Match.Maybe(Array), |
||||
desktopNotificationDuration: Match.Maybe(Number), |
||||
viewMode: Match.Maybe(Number), |
||||
hideUsernames: Match.Maybe(Boolean), |
||||
hideRoles: Match.Maybe(Boolean), |
||||
hideAvatars: Match.Maybe(Boolean), |
||||
hideFlexTab: Match.Maybe(Boolean), |
||||
sendOnEnter: Match.Maybe(String), |
||||
roomCounterSidebar: Match.Maybe(Boolean), |
||||
language: Match.Maybe(String) |
||||
}) |
||||
}); |
||||
|
||||
RocketChat.API.v1.addRoute('users.getPreferences', { authRequired: true }, { |
||||
get() { |
||||
const user = this.isUserFromParams() ? RocketChat.models.Users.findOneById(this.userId) : this.getUserFromParams(); |
||||
if (user.settings) { |
||||
const preferences = user.settings.preferences; |
||||
preferences['language'] = user.language; |
||||
let preferences; |
||||
if (this.bodyParams.data.language) { |
||||
const language = this.bodyParams.data.language; |
||||
delete this.bodyParams.data.language; |
||||
preferences = _.extend({ _id: this.bodyParams.userId, settings: { preferences: this.bodyParams.data }, language }); |
||||
} else { |
||||
preferences = _.extend({ _id: this.bodyParams.userId, settings: { preferences: this.bodyParams.data } }); |
||||
} |
||||
|
||||
return RocketChat.API.v1.success({ |
||||
preferences |
||||
}); |
||||
} else { |
||||
return RocketChat.API.v1.failure(TAPi18n.__('Accounts_Default_User_Preferences').toUpperCase()); |
||||
Meteor.runAsUser(this.userId, () => RocketChat.saveUser(this.userId, preferences)); |
||||
|
||||
return RocketChat.API.v1.success({ user: RocketChat.models.Users.findOneById(this.bodyParams.userId, { fields: preferences }) }); |
||||
} |
||||
} |
||||
}); |
||||
|
||||
RocketChat.API.v1.addRoute('users.setPreferences', { authRequired: true }, { |
||||
post() { |
||||
check(this.bodyParams, { |
||||
userId: String, |
||||
data: Match.ObjectIncluding({ |
||||
newRoomNotification: Match.Maybe(String), |
||||
newMessageNotification: Match.Maybe(String), |
||||
useEmojis: Match.Maybe(Boolean), |
||||
convertAsciiEmoji: Match.Maybe(Boolean), |
||||
saveMobileBandwidth: Match.Maybe(Boolean), |
||||
collapseMediaByDefault: Match.Maybe(Boolean), |
||||
autoImageLoad: Match.Maybe(Boolean), |
||||
emailNotificationMode: Match.Maybe(String), |
||||
roomsListExhibitionMode: Match.Maybe(String), |
||||
unreadAlert: Match.Maybe(Boolean), |
||||
notificationsSoundVolume: Match.Maybe(Number), |
||||
desktopNotifications: Match.Maybe(String), |
||||
mobileNotifications: Match.Maybe(String), |
||||
enableAutoAway: Match.Maybe(Boolean), |
||||
highlights: Match.Maybe(Array), |
||||
desktopNotificationDuration: Match.Maybe(Number), |
||||
viewMode: Match.Maybe(Number), |
||||
hideUsernames: Match.Maybe(Boolean), |
||||
hideRoles: Match.Maybe(Boolean), |
||||
hideAvatars: Match.Maybe(Boolean), |
||||
hideFlexTab: Match.Maybe(Boolean), |
||||
sendOnEnter: Match.Maybe(String), |
||||
roomCounterSidebar: Match.Maybe(Boolean), |
||||
language: Match.Maybe(String) |
||||
}) |
||||
}); |
||||
|
||||
let preferences; |
||||
if (this.bodyParams.data.language) { |
||||
const language = this.bodyParams.data.language; |
||||
delete this.bodyParams.data.language; |
||||
preferences = _.extend({ _id: this.bodyParams.userId, settings: { preferences: this.bodyParams.data }, language }); |
||||
} else { |
||||
preferences = _.extend({ _id: this.bodyParams.userId, settings: { preferences: this.bodyParams.data }}); |
||||
} |
||||
); |
||||
|
||||
Meteor.runAsUser(this.userId, () => RocketChat.saveUser(this.userId, preferences)); |
||||
/** |
||||
This API returns the logged user roles. |
||||
|
||||
return RocketChat.API.v1.success({ user: RocketChat.models.Users.findOneById(this.bodyParams.userId, { fields: preferences }) }); |
||||
Method: GET |
||||
Route: api/v1/user.roles |
||||
*/ |
||||
RocketChat.API.v1.addRoute( |
||||
"user.roles", |
||||
{ authRequired: true }, |
||||
{ |
||||
get() { |
||||
let currentUserRoles = {}; |
||||
|
||||
const result = Meteor.runAsUser(this.userId, () => Meteor.call("getUserRoles")); |
||||
|
||||
if (Array.isArray(result) && result.length > 0) { |
||||
currentUserRoles = result[0]; |
||||
} |
||||
|
||||
return RocketChat.API.v1.success(currentUserRoles); |
||||
} |
||||
} |
||||
}); |
||||
); |
||||
|
@ -1 +1 @@ |
||||
METEOR@1.6.0.1 |
||||
METEOR@1.6.1 |
||||
|
@ -1,4 +0,0 @@ |
||||
{ |
||||
"Additional_Feedback": "Bykomende terugvoer", |
||||
"No": "Nee" |
||||
} |
@ -1,3 +0,0 @@ |
||||
{ |
||||
"Additional_Feedback": "Нэмэлт санал хүсэлт" |
||||
} |
@ -1,4 +0,0 @@ |
||||
{ |
||||
"Additional_Feedback": "Dodatne povratne informacije", |
||||
"Appearance": "Videz" |
||||
} |
@ -1,46 +0,0 @@ |
||||
{ |
||||
"Additional_Feedback": "Phản hồi bổ sung", |
||||
"Appearance": "Kiểu hiển thị", |
||||
"Are_you_sure_do_you_want_end_this_chat": "Bạn có chắc muốn kết thúc cuộc nói chuyện này?", |
||||
"Are_you_sure_do_you_want_end_this_chat_and_switch_department": "Bạn muốn kết thúc cuộc nói chuyện này và chuyển sang bộ phận khác?", |
||||
"Cancel": "Hủy", |
||||
"Change": "Thay đổi", |
||||
"Chat_ended": "Cuộc nói chuyện đã kết thúc!", |
||||
"Choose_a_new_department": "Chọn bộ phận mới", |
||||
"Close_menu": "Đóng", |
||||
"Conversation_finished": "Cuộc hội thoại đã kết thúc", |
||||
"End_chat": "Kết thúc nói chuyện", |
||||
"How_friendly_was_the_chat_agent": "Độ thân thiện của nhân viên hỗ trợ như thế nào?", |
||||
"How_knowledgeable_was_the_chat_agent": "Độ hiểu biết của nhân viên hỗ trợ như thế nào?", |
||||
"How_responsive_was_the_chat_agent": "Phản hồi của nhân viên tư vấn như thế nào?", |
||||
"How_satisfied_were_you_with_this_chat": "Mức độ thỏa mãn của bạn với cuộc nói chuyện vừa xong?", |
||||
"Installation": "Cài đặt", |
||||
"New_messages": "Tin nhắn mới", |
||||
"No": "Không", |
||||
"Options": "Tùy chọn", |
||||
"Please_answer_survey": "Vui lòng dành ít thời gian để trả lời một khảo sát ngắn về cuộc nói chuyện vừa xong", |
||||
"Please_choose_a_department": "Vui lòng chọn bộ phận", |
||||
"Please_fill_name_and_email": "Vui lòng nhập tên và email", |
||||
"Powered_by": "Được hỗ trợ bởi", |
||||
"Request_video_chat": "Yêu cầu đàm thoại video", |
||||
"Select_a_department": "Chọn một bộ phận", |
||||
"Switch_department": "Chuyển bộ phận", |
||||
"Department_switched": "Bộ phận đã chuyển", |
||||
"Send": "Gửi", |
||||
"Skip": "Bỏ qua", |
||||
"Start_Chat": "Bắt đầu trò chuyện", |
||||
"Survey": "Khảo sát", |
||||
"Survey_instructions": "Đánh giá mức độ hài lòng cho mỗi câu hỏi, 1 tức là hoàn toàn thất vọng và 5 tức là tuyệt đối hài lòng", |
||||
"Thank_you_for_your_feedback": "Cảm ơn sự phản hồi của bạn", |
||||
"Thanks_We_ll_get_back_to_you_soon": "Xin cảm ơn! Chúng tôi sẽ phản hồi bạn sớm.", |
||||
"transcript_sent": "Bản dịch đã được gửi", |
||||
"Type_your_email": "Gõ email của bạn", |
||||
"Type_your_message": "Gõ tin nhắn của bạn", |
||||
"Type_your_name": "Gõ tên của bạn", |
||||
"User_joined": "Người dùng đã tham gia", |
||||
"User_left": "Người dùng rời đi", |
||||
"We_are_offline_Sorry_for_the_inconvenience": "Chúng tôi đang offline. Rất tiếc vì sự bất tiện này.", |
||||
"Yes": "Có", |
||||
"You": "Bạn", |
||||
"You_must_complete_all_fields": "Bạn phải điền hết các ô" |
||||
} |
@ -1,879 +0,0 @@ |
||||
{ |
||||
"name": "rocketchat-livechat", |
||||
"version": "1.0.0", |
||||
"lockfileVersion": 1, |
||||
"requires": true, |
||||
"dependencies": { |
||||
"abbrev": { |
||||
"version": "1.1.1", |
||||
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", |
||||
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" |
||||
}, |
||||
"ajv": { |
||||
"version": "5.3.0", |
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", |
||||
"integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", |
||||
"requires": { |
||||
"co": "4.6.0", |
||||
"fast-deep-equal": "1.0.0", |
||||
"fast-json-stable-stringify": "2.0.0", |
||||
"json-schema-traverse": "0.3.1" |
||||
} |
||||
}, |
||||
"ansi-regex": { |
||||
"version": "2.1.1", |
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", |
||||
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" |
||||
}, |
||||
"aproba": { |
||||
"version": "1.2.0", |
||||
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", |
||||
"integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=" |
||||
}, |
||||
"are-we-there-yet": { |
||||
"version": "1.1.4", |
||||
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", |
||||
"integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", |
||||
"requires": { |
||||
"delegates": "1.0.0", |
||||
"readable-stream": "2.3.3" |
||||
} |
||||
}, |
||||
"asn1": { |
||||
"version": "0.2.3", |
||||
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", |
||||
"integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" |
||||
}, |
||||
"assert-plus": { |
||||
"version": "1.0.0", |
||||
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", |
||||
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" |
||||
}, |
||||
"asynckit": { |
||||
"version": "0.4.0", |
||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", |
||||
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" |
||||
}, |
||||
"autolinker": { |
||||
"version": "1.6.0", |
||||
"resolved": "https://registry.npmjs.org/autolinker/-/autolinker-1.6.0.tgz", |
||||
"integrity": "sha1-utN2t62OQV8i8QL8Dzf2QOZPHL8=" |
||||
}, |
||||
"aws-sign2": { |
||||
"version": "0.7.0", |
||||
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", |
||||
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" |
||||
}, |
||||
"aws4": { |
||||
"version": "1.6.0", |
||||
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", |
||||
"integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" |
||||
}, |
||||
"babel-runtime": { |
||||
"version": "6.26.0", |
||||
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", |
||||
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", |
||||
"requires": { |
||||
"core-js": "2.5.1", |
||||
"regenerator-runtime": "0.11.0" |
||||
} |
||||
}, |
||||
"balanced-match": { |
||||
"version": "1.0.0", |
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", |
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" |
||||
}, |
||||
"bcrypt": { |
||||
"version": "1.0.3", |
||||
"resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-1.0.3.tgz", |
||||
"integrity": "sha1-sC3cbAtS6ha40883XVoy54DatUg=", |
||||
"requires": { |
||||
"nan": "2.6.2", |
||||
"node-pre-gyp": "0.6.36" |
||||
} |
||||
}, |
||||
"bcrypt-pbkdf": { |
||||
"version": "1.0.1", |
||||
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", |
||||
"integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", |
||||
"optional": true, |
||||
"requires": { |
||||
"tweetnacl": "0.14.5" |
||||
} |
||||
}, |
||||
"block-stream": { |
||||
"version": "0.0.9", |
||||
"resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", |
||||
"integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", |
||||
"requires": { |
||||
"inherits": "2.0.3" |
||||
} |
||||
}, |
||||
"boom": { |
||||
"version": "4.3.1", |
||||
"resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", |
||||
"integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", |
||||
"requires": { |
||||
"hoek": "4.2.0" |
||||
} |
||||
}, |
||||
"brace-expansion": { |
||||
"version": "1.1.8", |
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", |
||||
"integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", |
||||
"requires": { |
||||
"balanced-match": "1.0.0", |
||||
"concat-map": "0.0.1" |
||||
} |
||||
}, |
||||
"caseless": { |
||||
"version": "0.12.0", |
||||
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", |
||||
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" |
||||
}, |
||||
"co": { |
||||
"version": "4.6.0", |
||||
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", |
||||
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" |
||||
}, |
||||
"code-point-at": { |
||||
"version": "1.1.0", |
||||
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", |
||||
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" |
||||
}, |
||||
"combined-stream": { |
||||
"version": "1.0.5", |
||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", |
||||
"integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", |
||||
"requires": { |
||||
"delayed-stream": "1.0.0" |
||||
} |
||||
}, |
||||
"concat-map": { |
||||
"version": "0.0.1", |
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", |
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" |
||||
}, |
||||
"console-control-strings": { |
||||
"version": "1.1.0", |
||||
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", |
||||
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" |
||||
}, |
||||
"core-js": { |
||||
"version": "2.5.1", |
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", |
||||
"integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" |
||||
}, |
||||
"core-util-is": { |
||||
"version": "1.0.2", |
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", |
||||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" |
||||
}, |
||||
"cryptiles": { |
||||
"version": "3.1.2", |
||||
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", |
||||
"integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", |
||||
"requires": { |
||||
"boom": "5.2.0" |
||||
}, |
||||
"dependencies": { |
||||
"boom": { |
||||
"version": "5.2.0", |
||||
"resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", |
||||
"integrity": "sha1-XdnabuOl8wIHdDYpDLcX0/SlTgI=", |
||||
"requires": { |
||||
"hoek": "4.2.0" |
||||
} |
||||
} |
||||
} |
||||
}, |
||||
"dashdash": { |
||||
"version": "1.14.1", |
||||
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", |
||||
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", |
||||
"requires": { |
||||
"assert-plus": "1.0.0" |
||||
} |
||||
}, |
||||
"debug": { |
||||
"version": "2.6.9", |
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", |
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", |
||||
"requires": { |
||||
"ms": "2.0.0" |
||||
} |
||||
}, |
||||
"deep-extend": { |
||||
"version": "0.4.2", |
||||
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", |
||||
"integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" |
||||
}, |
||||
"delayed-stream": { |
||||
"version": "1.0.0", |
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", |
||||
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" |
||||
}, |
||||
"delegates": { |
||||
"version": "1.0.0", |
||||
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", |
||||
"integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" |
||||
}, |
||||
"ecc-jsbn": { |
||||
"version": "0.1.1", |
||||
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", |
||||
"integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", |
||||
"optional": true, |
||||
"requires": { |
||||
"jsbn": "0.1.1" |
||||
} |
||||
}, |
||||
"extend": { |
||||
"version": "3.0.1", |
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", |
||||
"integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" |
||||
}, |
||||
"extsprintf": { |
||||
"version": "1.3.0", |
||||
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", |
||||
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" |
||||
}, |
||||
"fast-deep-equal": { |
||||
"version": "1.0.0", |
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", |
||||
"integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" |
||||
}, |
||||
"fast-json-stable-stringify": { |
||||
"version": "2.0.0", |
||||
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", |
||||
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" |
||||
}, |
||||
"forever-agent": { |
||||
"version": "0.6.1", |
||||
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", |
||||
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" |
||||
}, |
||||
"form-data": { |
||||
"version": "2.3.1", |
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", |
||||
"integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", |
||||
"requires": { |
||||
"asynckit": "0.4.0", |
||||
"combined-stream": "1.0.5", |
||||
"mime-types": "2.1.17" |
||||
} |
||||
}, |
||||
"fs.realpath": { |
||||
"version": "1.0.0", |
||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", |
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" |
||||
}, |
||||
"fstream": { |
||||
"version": "1.0.11", |
||||
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", |
||||
"integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", |
||||
"requires": { |
||||
"graceful-fs": "4.1.11", |
||||
"inherits": "2.0.3", |
||||
"mkdirp": "0.5.1", |
||||
"rimraf": "2.6.2" |
||||
} |
||||
}, |
||||
"fstream-ignore": { |
||||
"version": "1.0.5", |
||||
"resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", |
||||
"integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=", |
||||
"requires": { |
||||
"fstream": "1.0.11", |
||||
"inherits": "2.0.3", |
||||
"minimatch": "3.0.4" |
||||
} |
||||
}, |
||||
"gauge": { |
||||
"version": "2.7.4", |
||||
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", |
||||
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", |
||||
"requires": { |
||||
"aproba": "1.2.0", |
||||
"console-control-strings": "1.1.0", |
||||
"has-unicode": "2.0.1", |
||||
"object-assign": "4.1.1", |
||||
"signal-exit": "3.0.2", |
||||
"string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", |
||||
"strip-ansi": "3.0.1", |
||||
"wide-align": "1.1.2" |
||||
} |
||||
}, |
||||
"getpass": { |
||||
"version": "0.1.7", |
||||
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", |
||||
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", |
||||
"requires": { |
||||
"assert-plus": "1.0.0" |
||||
} |
||||
}, |
||||
"glob": { |
||||
"version": "7.1.2", |
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", |
||||
"integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", |
||||
"requires": { |
||||
"fs.realpath": "1.0.0", |
||||
"inflight": "1.0.6", |
||||
"inherits": "2.0.3", |
||||
"minimatch": "3.0.4", |
||||
"once": "1.4.0", |
||||
"path-is-absolute": "1.0.1" |
||||
} |
||||
}, |
||||
"graceful-fs": { |
||||
"version": "4.1.11", |
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", |
||||
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" |
||||
}, |
||||
"har-schema": { |
||||
"version": "2.0.0", |
||||
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", |
||||
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" |
||||
}, |
||||
"har-validator": { |
||||
"version": "5.0.3", |
||||
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", |
||||
"integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", |
||||
"requires": { |
||||
"ajv": "5.3.0", |
||||
"har-schema": "2.0.0" |
||||
} |
||||
}, |
||||
"has-unicode": { |
||||
"version": "2.0.1", |
||||
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", |
||||
"integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" |
||||
}, |
||||
"hawk": { |
||||
"version": "6.0.2", |
||||
"resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", |
||||
"integrity": "sha1-r02RTrBl+bXOTZ0RwcshJu7MMDg=", |
||||
"requires": { |
||||
"boom": "4.3.1", |
||||
"cryptiles": "3.1.2", |
||||
"hoek": "4.2.0", |
||||
"sntp": "2.1.0" |
||||
} |
||||
}, |
||||
"hoek": { |
||||
"version": "4.2.0", |
||||
"resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", |
||||
"integrity": "sha1-ctnQdU9/4lyi0BrY+PmpRJqJUm0=" |
||||
}, |
||||
"http-signature": { |
||||
"version": "1.2.0", |
||||
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", |
||||
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", |
||||
"requires": { |
||||
"assert-plus": "1.0.0", |
||||
"jsprim": "1.4.1", |
||||
"sshpk": "1.13.1" |
||||
} |
||||
}, |
||||
"inflight": { |
||||
"version": "1.0.6", |
||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", |
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", |
||||
"requires": { |
||||
"once": "1.4.0", |
||||
"wrappy": "1.0.2" |
||||
} |
||||
}, |
||||
"inherits": { |
||||
"version": "2.0.3", |
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", |
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" |
||||
}, |
||||
"ini": { |
||||
"version": "1.3.4", |
||||
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", |
||||
"integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" |
||||
}, |
||||
"is-fullwidth-code-point": { |
||||
"version": "1.0.0", |
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", |
||||
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", |
||||
"requires": { |
||||
"number-is-nan": "1.0.1" |
||||
} |
||||
}, |
||||
"is-typedarray": { |
||||
"version": "1.0.0", |
||||
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", |
||||
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" |
||||
}, |
||||
"isarray": { |
||||
"version": "1.0.0", |
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", |
||||
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" |
||||
}, |
||||
"isstream": { |
||||
"version": "0.1.2", |
||||
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", |
||||
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" |
||||
}, |
||||
"jquery": { |
||||
"version": "3.2.1", |
||||
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", |
||||
"integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c=" |
||||
}, |
||||
"jsbn": { |
||||
"version": "0.1.1", |
||||
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", |
||||
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", |
||||
"optional": true |
||||
}, |
||||
"json-schema": { |
||||
"version": "0.2.3", |
||||
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", |
||||
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" |
||||
}, |
||||
"json-schema-traverse": { |
||||
"version": "0.3.1", |
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", |
||||
"integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" |
||||
}, |
||||
"json-stringify-safe": { |
||||
"version": "5.0.1", |
||||
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", |
||||
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" |
||||
}, |
||||
"jsprim": { |
||||
"version": "1.4.1", |
||||
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", |
||||
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", |
||||
"requires": { |
||||
"assert-plus": "1.0.0", |
||||
"extsprintf": "1.3.0", |
||||
"json-schema": "0.2.3", |
||||
"verror": "1.10.0" |
||||
} |
||||
}, |
||||
"mime-db": { |
||||
"version": "1.30.0", |
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", |
||||
"integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" |
||||
}, |
||||
"mime-types": { |
||||
"version": "2.1.17", |
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", |
||||
"integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", |
||||
"requires": { |
||||
"mime-db": "1.30.0" |
||||
} |
||||
}, |
||||
"minimatch": { |
||||
"version": "3.0.4", |
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", |
||||
"integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", |
||||
"requires": { |
||||
"brace-expansion": "1.1.8" |
||||
} |
||||
}, |
||||
"minimist": { |
||||
"version": "0.0.8", |
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", |
||||
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" |
||||
}, |
||||
"mkdirp": { |
||||
"version": "0.5.1", |
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", |
||||
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", |
||||
"requires": { |
||||
"minimist": "0.0.8" |
||||
} |
||||
}, |
||||
"moment": { |
||||
"version": "2.20.1", |
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz", |
||||
"integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==" |
||||
}, |
||||
"ms": { |
||||
"version": "2.0.0", |
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", |
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" |
||||
}, |
||||
"nan": { |
||||
"version": "2.6.2", |
||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", |
||||
"integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=" |
||||
}, |
||||
"node-pre-gyp": { |
||||
"version": "0.6.36", |
||||
"resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.36.tgz", |
||||
"integrity": "sha1-22BBEst04NR3VU6bUFsXq936t4Y=", |
||||
"requires": { |
||||
"mkdirp": "0.5.1", |
||||
"nopt": "4.0.1", |
||||
"npmlog": "4.1.2", |
||||
"rc": "1.2.2", |
||||
"request": "2.83.0", |
||||
"rimraf": "2.6.2", |
||||
"semver": "5.4.1", |
||||
"tar": "2.2.1", |
||||
"tar-pack": "3.4.1" |
||||
} |
||||
}, |
||||
"nopt": { |
||||
"version": "4.0.1", |
||||
"resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", |
||||
"integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", |
||||
"requires": { |
||||
"abbrev": "1.1.1", |
||||
"osenv": "0.1.4" |
||||
} |
||||
}, |
||||
"npmlog": { |
||||
"version": "4.1.2", |
||||
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", |
||||
"integrity": "sha1-CKfyqL9zRgR3mp76StXMcXq7lUs=", |
||||
"requires": { |
||||
"are-we-there-yet": "1.1.4", |
||||
"console-control-strings": "1.1.0", |
||||
"gauge": "2.7.4", |
||||
"set-blocking": "2.0.0" |
||||
} |
||||
}, |
||||
"number-is-nan": { |
||||
"version": "1.0.1", |
||||
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", |
||||
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" |
||||
}, |
||||
"oauth-sign": { |
||||
"version": "0.8.2", |
||||
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", |
||||
"integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" |
||||
}, |
||||
"object-assign": { |
||||
"version": "4.1.1", |
||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", |
||||
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" |
||||
}, |
||||
"once": { |
||||
"version": "1.4.0", |
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", |
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", |
||||
"requires": { |
||||
"wrappy": "1.0.2" |
||||
} |
||||
}, |
||||
"os-homedir": { |
||||
"version": "1.0.2", |
||||
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", |
||||
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" |
||||
}, |
||||
"os-tmpdir": { |
||||
"version": "1.0.2", |
||||
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", |
||||
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" |
||||
}, |
||||
"osenv": { |
||||
"version": "0.1.4", |
||||
"resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", |
||||
"integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", |
||||
"requires": { |
||||
"os-homedir": "1.0.2", |
||||
"os-tmpdir": "1.0.2" |
||||
} |
||||
}, |
||||
"path-is-absolute": { |
||||
"version": "1.0.1", |
||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", |
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" |
||||
}, |
||||
"performance-now": { |
||||
"version": "2.1.0", |
||||
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", |
||||
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" |
||||
}, |
||||
"process-nextick-args": { |
||||
"version": "1.0.7", |
||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", |
||||
"integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" |
||||
}, |
||||
"punycode": { |
||||
"version": "1.4.1", |
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", |
||||
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" |
||||
}, |
||||
"qs": { |
||||
"version": "6.5.1", |
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", |
||||
"integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=" |
||||
}, |
||||
"rc": { |
||||
"version": "1.2.2", |
||||
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz", |
||||
"integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=", |
||||
"requires": { |
||||
"deep-extend": "0.4.2", |
||||
"ini": "1.3.4", |
||||
"minimist": "1.2.0", |
||||
"strip-json-comments": "2.0.1" |
||||
}, |
||||
"dependencies": { |
||||
"minimist": { |
||||
"version": "1.2.0", |
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", |
||||
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" |
||||
} |
||||
} |
||||
}, |
||||
"readable-stream": { |
||||
"version": "2.3.3", |
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", |
||||
"integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", |
||||
"requires": { |
||||
"core-util-is": "1.0.2", |
||||
"inherits": "2.0.3", |
||||
"isarray": "1.0.0", |
||||
"process-nextick-args": "1.0.7", |
||||
"safe-buffer": "5.1.1", |
||||
"string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", |
||||
"util-deprecate": "1.0.2" |
||||
} |
||||
}, |
||||
"regenerator-runtime": { |
||||
"version": "0.11.0", |
||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", |
||||
"integrity": "sha1-flT+W1zNXWYk6mJVw0c74JC4AuE=" |
||||
}, |
||||
"request": { |
||||
"version": "2.83.0", |
||||
"resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", |
||||
"integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", |
||||
"requires": { |
||||
"aws-sign2": "0.7.0", |
||||
"aws4": "1.6.0", |
||||
"caseless": "0.12.0", |
||||
"combined-stream": "1.0.5", |
||||
"extend": "3.0.1", |
||||
"forever-agent": "0.6.1", |
||||
"form-data": "2.3.1", |
||||
"har-validator": "5.0.3", |
||||
"hawk": "6.0.2", |
||||
"http-signature": "1.2.0", |
||||
"is-typedarray": "1.0.0", |
||||
"isstream": "0.1.2", |
||||
"json-stringify-safe": "5.0.1", |
||||
"mime-types": "2.1.17", |
||||
"oauth-sign": "0.8.2", |
||||
"performance-now": "2.1.0", |
||||
"qs": "6.5.1", |
||||
"safe-buffer": "5.1.1", |
||||
"stringstream": "0.0.5", |
||||
"tough-cookie": "2.3.3", |
||||
"tunnel-agent": "0.6.0", |
||||
"uuid": "3.1.0" |
||||
} |
||||
}, |
||||
"rimraf": { |
||||
"version": "2.6.2", |
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", |
||||
"integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=", |
||||
"requires": { |
||||
"glob": "7.1.2" |
||||
} |
||||
}, |
||||
"safe-buffer": { |
||||
"version": "5.1.1", |
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", |
||||
"integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" |
||||
}, |
||||
"semver": { |
||||
"version": "5.4.1", |
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", |
||||
"integrity": "sha1-4FnAnYVx8FQII3M0M1BdOi8AsY4=" |
||||
}, |
||||
"set-blocking": { |
||||
"version": "2.0.0", |
||||
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", |
||||
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" |
||||
}, |
||||
"signal-exit": { |
||||
"version": "3.0.2", |
||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", |
||||
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" |
||||
}, |
||||
"sntp": { |
||||
"version": "2.1.0", |
||||
"resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", |
||||
"integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", |
||||
"requires": { |
||||
"hoek": "4.2.0" |
||||
} |
||||
}, |
||||
"sprintf-js": { |
||||
"version": "1.1.1", |
||||
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.1.tgz", |
||||
"integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=" |
||||
}, |
||||
"sshpk": { |
||||
"version": "1.13.1", |
||||
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", |
||||
"integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", |
||||
"requires": { |
||||
"asn1": "0.2.3", |
||||
"assert-plus": "1.0.0", |
||||
"bcrypt-pbkdf": "1.0.1", |
||||
"dashdash": "1.14.1", |
||||
"ecc-jsbn": "0.1.1", |
||||
"getpass": "0.1.7", |
||||
"jsbn": "0.1.1", |
||||
"tweetnacl": "0.14.5" |
||||
} |
||||
}, |
||||
"string-width": { |
||||
"version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", |
||||
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", |
||||
"requires": { |
||||
"code-point-at": "1.1.0", |
||||
"is-fullwidth-code-point": "1.0.0", |
||||
"strip-ansi": "3.0.1" |
||||
} |
||||
}, |
||||
"string_decoder": { |
||||
"version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", |
||||
"integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", |
||||
"requires": { |
||||
"safe-buffer": "5.1.1" |
||||
} |
||||
}, |
||||
"string_decoder": { |
||||
"version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", |
||||
"integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", |
||||
"requires": { |
||||
"safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" |
||||
} |
||||
}, |
||||
"stringstream": { |
||||
"version": "0.0.5", |
||||
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", |
||||
"integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" |
||||
}, |
||||
"strip-ansi": { |
||||
"version": "3.0.1", |
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", |
||||
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", |
||||
"requires": { |
||||
"ansi-regex": "2.1.1" |
||||
} |
||||
}, |
||||
"strip-json-comments": { |
||||
"version": "2.0.1", |
||||
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", |
||||
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" |
||||
}, |
||||
"tar": { |
||||
"version": "2.2.1", |
||||
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", |
||||
"integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", |
||||
"requires": { |
||||
"block-stream": "0.0.9", |
||||
"fstream": "1.0.11", |
||||
"inherits": "2.0.3" |
||||
} |
||||
}, |
||||
"tar-pack": { |
||||
"version": "3.4.1", |
||||
"resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.4.1.tgz", |
||||
"integrity": "sha512-PPRybI9+jM5tjtCbN2cxmmRU7YmqT3Zv/UDy48tAh2XRkLa9bAORtSWLkVc13+GJF+cdTh1yEnHEk3cpTaL5Kg==", |
||||
"requires": { |
||||
"debug": "2.6.9", |
||||
"fstream": "1.0.11", |
||||
"fstream-ignore": "1.0.5", |
||||
"once": "1.4.0", |
||||
"readable-stream": "2.3.3", |
||||
"rimraf": "2.6.2", |
||||
"tar": "2.2.1", |
||||
"uid-number": "0.0.6" |
||||
} |
||||
}, |
||||
"toastr": { |
||||
"version": "2.1.4", |
||||
"resolved": "https://registry.npmjs.org/toastr/-/toastr-2.1.4.tgz", |
||||
"integrity": "sha1-i0O+ZPudDEFIcURvLbjoyk6V8YE=", |
||||
"requires": { |
||||
"jquery": "3.2.1" |
||||
} |
||||
}, |
||||
"tough-cookie": { |
||||
"version": "2.3.3", |
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", |
||||
"integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", |
||||
"requires": { |
||||
"punycode": "1.4.1" |
||||
} |
||||
}, |
||||
"tunnel-agent": { |
||||
"version": "0.6.0", |
||||
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", |
||||
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", |
||||
"requires": { |
||||
"safe-buffer": "5.1.1" |
||||
} |
||||
}, |
||||
"tweetnacl": { |
||||
"version": "0.14.5", |
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", |
||||
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", |
||||
"optional": true |
||||
}, |
||||
"uid-number": { |
||||
"version": "0.0.6", |
||||
"resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", |
||||
"integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=" |
||||
}, |
||||
"underscore": { |
||||
"version": "1.8.3", |
||||
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", |
||||
"integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=" |
||||
}, |
||||
"underscore.string": { |
||||
"version": "3.3.4", |
||||
"resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.4.tgz", |
||||
"integrity": "sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s=", |
||||
"requires": { |
||||
"sprintf-js": "1.1.1", |
||||
"util-deprecate": "1.0.2" |
||||
} |
||||
}, |
||||
"util-deprecate": { |
||||
"version": "1.0.2", |
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", |
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" |
||||
}, |
||||
"uuid": { |
||||
"version": "3.1.0", |
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", |
||||
"integrity": "sha1-PdPT55Crwk17DToDT/q6vijrvAQ=" |
||||
}, |
||||
"verror": { |
||||
"version": "1.10.0", |
||||
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", |
||||
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", |
||||
"requires": { |
||||
"assert-plus": "1.0.0", |
||||
"core-util-is": "1.0.2", |
||||
"extsprintf": "1.3.0" |
||||
} |
||||
}, |
||||
"wide-align": { |
||||
"version": "1.1.2", |
||||
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", |
||||
"integrity": "sha1-Vx4PGwYEY268DfwhsDObvjE0FxA=", |
||||
"requires": { |
||||
"string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" |
||||
} |
||||
}, |
||||
"wrappy": { |
||||
"version": "1.0.2", |
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", |
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,33 @@ |
||||
/* eslint-env mocha */ |
||||
/* globals expect */ |
||||
|
||||
import { getCredentials, api, request, credentials } from '../../data/api-data.js'; |
||||
|
||||
describe('[Permissions]', function() { |
||||
this.retries(0); |
||||
|
||||
before(done => getCredentials(done)); |
||||
|
||||
describe('[/permissions]', () => { |
||||
it('should return all permissions that exists on the server, with respective roles', (done) => { |
||||
request.get(api('permissions')) |
||||
.set(credentials) |
||||
.expect('Content-Type', 'application/json') |
||||
.expect(200) |
||||
.expect((res) => { |
||||
expect(res.body).to.be.a('array'); |
||||
|
||||
const firstElement = res.body[0]; |
||||
expect(firstElement).to.have.property('_id'); |
||||
expect(firstElement).to.have.property('roles').and.to.be.a('array'); |
||||
expect(firstElement).to.have.property('_updatedAt'); |
||||
expect(firstElement).to.have.property('meta'); |
||||
expect(firstElement.meta).to.have.property('revision'); |
||||
expect(firstElement.meta).to.have.property('created'); |
||||
expect(firstElement.meta).to.have.property('version'); |
||||
expect(firstElement).to.have.property('$loki'); |
||||
}) |
||||
.end(done); |
||||
}); |
||||
}); |
||||
}); |
@ -0,0 +1,40 @@ |
||||
/* eslint-env mocha */ |
||||
/* globals expect */ |
||||
|
||||
import {getCredentials, api, request, credentials } from '../../data/api-data.js'; |
||||
|
||||
describe('[Spotlight]', function() { |
||||
this.retries(0); |
||||
|
||||
before(done => getCredentials(done)); |
||||
|
||||
describe('[/spotlight]', () => { |
||||
it('should fail when does not have query param', (done) => { |
||||
request.get(api('spotlight')) |
||||
.set(credentials) |
||||
.expect('Content-Type', 'application/json') |
||||
.expect(400) |
||||
.expect((res) => { |
||||
expect(res.body).to.have.property('success', false); |
||||
expect(res.body).to.have.property('error'); |
||||
}) |
||||
.end(done); |
||||
}); |
||||
|
||||
it('should return objects for a valid query param', (done) => { |
||||
request.get(api('spotlight')) |
||||
.query({ |
||||
query: 'foobar' |
||||
}) |
||||
.set(credentials) |
||||
.expect('Content-Type', 'application/json') |
||||
.expect(200) |
||||
.expect((res) => { |
||||
expect(res.body).to.have.property('success', true); |
||||
expect(res.body).to.have.property('users').that.have.lengthOf(0); |
||||
expect(res.body).to.have.property('rooms').that.have.lengthOf(0); |
||||
}) |
||||
.end(done); |
||||
}); |
||||
}); |
||||
}); |
Loading…
Reference in new issue