From 1c7436e7ff4db70f80f1e26c113bd54efc9e5608 Mon Sep 17 00:00:00 2001
From: Fabians
📋 Description changed from ' +
this.truncate(oldDesc) +
@@ -580,7 +580,7 @@ export default {
'
📋 Message changed from ' +
this.truncate(oldDesc) +
diff --git a/packages/frontend/src/main/components/admin/ActivityCard.vue b/packages/frontend/src/main/components/admin/ActivityCard.vue
index 804252524..761cc5cca 100644
--- a/packages/frontend/src/main/components/admin/ActivityCard.vue
+++ b/packages/frontend/src/main/components/admin/ActivityCard.vue
@@ -55,7 +55,7 @@ export default {
dataLabels: {
enabled: true,
position: 'bottom',
- formatter: function (val) {
+ formatter (val) {
return formatNumber(val)
},
offsetY: -25,
@@ -136,7 +136,7 @@ export default {
}
`,
update(data) {
- let stats = data.serverStats
+ const stats = data.serverStats
delete stats.__typename
return stats
}
@@ -145,15 +145,15 @@ export default {
computed: {
graphSeries() {
let result = []
- let months = this.past12Months()
+ const months = this.past12Months()
if (this.serverStats) {
result = Object.keys(this.serverStats).map((key) => {
- let category = this.serverStats[key]
- let processed = []
+ const category = this.serverStats[key]
+ const processed = []
months?.forEach((month) => {
let totalCount = 0
category.forEach((value) => {
- let date = new Date(value.created_month)
+ const date = new Date(value.created_month)
if (this.isSameMonth(month, date)) {
totalCount = value.count
}
@@ -171,10 +171,10 @@ export default {
return word[0].toUpperCase() + word.slice(1).toLowerCase()
},
past12Months() {
- let now = new Date(Date.now())
- let dates = []
+ const now = new Date(Date.now())
+ const dates = []
for (let i = 0; i < 12; i++) {
- let d = new Date(now.getFullYear(), now.getMonth() - i, 2)
+ const d = new Date(now.getFullYear(), now.getMonth() - i, 2)
dates.push(d)
}
return dates
diff --git a/packages/frontend/src/main/components/admin/AnimatedNumber.vue b/packages/frontend/src/main/components/admin/AnimatedNumber.vue
index 8b6f857c8..ef1cc3410 100644
--- a/packages/frontend/src/main/components/admin/AnimatedNumber.vue
+++ b/packages/frontend/src/main/components/admin/AnimatedNumber.vue
@@ -41,7 +41,7 @@ export default {
},
methods: {
tween(startValue, endValue) {
- let vm = this
+ const vm = this
function animate() {
if (TWEEN.update()) {
requestAnimationFrame(animate)
diff --git a/packages/frontend/src/main/components/admin/GeneralInfoCard.vue b/packages/frontend/src/main/components/admin/GeneralInfoCard.vue
index e9b7d744e..3ccf74493 100644
--- a/packages/frontend/src/main/components/admin/GeneralInfoCard.vue
+++ b/packages/frontend/src/main/components/admin/GeneralInfoCard.vue
@@ -50,7 +50,7 @@ export default {
}
`,
update(data) {
- let stats = data.serverStats
+ const stats = data.serverStats
return {
users: stats.totalUserCount,
streams: stats.totalStreamCount,
diff --git a/packages/frontend/src/main/components/admin/VersionInfoCard.vue b/packages/frontend/src/main/components/admin/VersionInfoCard.vue
index d72a2de96..9c9a845fa 100644
--- a/packages/frontend/src/main/components/admin/VersionInfoCard.vue
+++ b/packages/frontend/src/main/components/admin/VersionInfoCard.vue
@@ -79,7 +79,7 @@ export default {
'https://api.github.com/repos/specklesystems/speckle-server/releases/latest'
)
.then(async (res) => {
- let x = await res.json()
+ const x = await res.json()
return x.tag_name
})
.catch((err) => {
diff --git a/packages/frontend/src/main/components/auth/AuthStrategies.vue b/packages/frontend/src/main/components/auth/AuthStrategies.vue
index edf1a6736..bce4bc688 100644
--- a/packages/frontend/src/main/components/auth/AuthStrategies.vue
+++ b/packages/frontend/src/main/components/auth/AuthStrategies.vue
@@ -56,8 +56,8 @@ export default {
}
},
mounted() {
- let urlParams = new URLSearchParams(window.location.search)
- let inviteId = urlParams.get('inviteId')
+ const urlParams = new URLSearchParams(window.location.search)
+ const inviteId = urlParams.get('inviteId')
this.inviteId = inviteId
},
methods: {
diff --git a/packages/frontend/src/main/components/comments/CommentListItem.vue b/packages/frontend/src/main/components/comments/CommentListItem.vue
index 386c6c637..4e6554a89 100644
--- a/packages/frontend/src/main/components/comments/CommentListItem.vue
+++ b/packages/frontend/src/main/components/comments/CommentListItem.vue
@@ -217,8 +217,8 @@ export default {
},
link() {
if (!this.commentDetails) return
- let res = this.commentDetails.resources.filter((r) => r.resourceType !== 'stream')
- let first = res.shift()
+ const res = this.commentDetails.resources.filter((r) => r.resourceType !== 'stream')
+ const first = res.shift()
let route = `/streams/${this.$route.params.streamId}/${first.resourceType}s/${first.resourceId}?cId=${this.commentDetails.id}`
if (res.length !== 0) {
route += `&overlay=${res.map((r) => r.resourceId).join(',')}`
diff --git a/packages/frontend/src/main/components/comments/CommentThreadViewer.vue b/packages/frontend/src/main/components/comments/CommentThreadViewer.vue
index 2a8de395d..b2316e96d 100644
--- a/packages/frontend/src/main/components/comments/CommentThreadViewer.vue
+++ b/packages/frontend/src/main/components/comments/CommentThreadViewer.vue
@@ -263,15 +263,15 @@ export default {
this.$emit('deleted', this.comment)
}
if (data.commentThreadActivity.eventType === 'reply-typing-status') {
- let state = data.commentThreadActivity.data
+ const state = data.commentThreadActivity.data
if (state.userId === this.$userId()) return
- let existingUser = this.whoIsTyping.find((u) => u.userId === state.userId)
+ const existingUser = this.whoIsTyping.find((u) => u.userId === state.userId)
if (state.isTyping && existingUser) {
existingUser.lastSeenAt = Date.now()
return
}
if (!state.isTyping) {
- let indx = this.whoIsTyping.findIndex((u) => u.userId === state.userId)
+ const indx = this.whoIsTyping.findIndex((u) => u.userId === state.userId)
if (indx !== -1) this.whoIsTyping.splice(indx, 1)
return
}
@@ -284,7 +284,7 @@ export default {
}
}
},
- data: function () {
+ data () {
return {
replyText: null,
localReplies: [],
@@ -307,27 +307,27 @@ export default {
return false
},
thread() {
- let sorted = [...this.localReplies].sort(
+ const sorted = [...this.localReplies].sort(
(a, b) => new Date(a.createdAt) - new Date(b.createdAt)
)
return [this.comment, ...sorted]
},
isComplete() {
- let res = [this.$route.params.resourceId]
+ const res = [this.$route.params.resourceId]
if (this.$route.query.overlay) res.push(...this.$route.query.overlay.split(','))
- let commRes = this.comment.resources
+ const commRes = this.comment.resources
.filter((r) => r.resourceType !== 'stream')
.map((r) => r.resourceId)
- for (let r of commRes) {
+ for (const r of commRes) {
if (res.indexOf(r) === -1) return false
}
return true
},
link() {
if (!this.comment) return
- let res = this.comment.resources.filter((r) => r.resourceType !== 'stream')
- let first = res.shift()
+ const res = this.comment.resources.filter((r) => r.resourceType !== 'stream')
+ const first = res.shift()
let route = `/streams/${this.$route.params.streamId}/${first.resourceType}s/${first.resourceId}?cId=${this.comment.id}`
if (res.length !== 0) {
route += `&overlay=${res.map((r) => r.resourceId).join(',')}`
@@ -373,7 +373,7 @@ export default {
await this.sendTypingUpdate(false)
})
setInterval(() => {
- let now = Date.now()
+ const now = Date.now()
for (let i = this.whoIsTyping.length - 1; i >= 0; i--) {
if (Math.abs(now - this.whoIsTyping[i].lastSeenAt) > 10000)
this.whoIsTyping.splice(i, 1)
@@ -415,8 +415,8 @@ export default {
})
},
copyCommentLinkToClip() {
- let res = this.comment.resources.filter((r) => r.resourceType !== 'stream')
- let first = res.shift()
+ const res = this.comment.resources.filter((r) => r.resourceType !== 'stream')
+ const first = res.shift()
let route = `${window.origin}/streams/${this.$route.params.streamId}/${first.resourceType}s/${first.resourceId}?cId=${this.comment.id}`
if (res.length !== 0) {
route += `&overlay=${res.map((r) => r.resourceId).join(',')}`
@@ -428,23 +428,23 @@ export default {
})
},
addMissingResources() {
- let res = [this.$route.params.resourceId]
+ const res = [this.$route.params.resourceId]
if (this.$route.query.overlay) res.push(...this.$route.query.overlay.split(','))
- let commRes = this.comment.resources
+ const commRes = this.comment.resources
.filter((r) => r.resourceType !== 'stream')
.map((r) => r.resourceId)
- let missing = []
- for (let r of commRes) {
+ const missing = []
+ for (const r of commRes) {
if (res.indexOf(r) === -1) missing.push(r)
}
this.$emit('add-resources', missing)
},
showTime(index) {
if (index === 0) return true
- let curr = new Date(this.thread[index].createdAt)
- let prev = new Date(this.thread[index - 1].createdAt)
- let delta = Math.abs(prev - curr)
+ const curr = new Date(this.thread[index].createdAt)
+ const prev = new Date(this.thread[index - 1].createdAt)
+ const delta = Math.abs(prev - curr)
return delta > 450000
},
async addReply() {
@@ -455,7 +455,7 @@ export default {
return
}
- let replyInput = {
+ const replyInput = {
streamId: this.$route.params.streamId,
parentComment: this.comment.id,
text: this.replyText
diff --git a/packages/frontend/src/main/components/common/CommitReceivedReceipts.vue b/packages/frontend/src/main/components/common/CommitReceivedReceipts.vue
index 4835d3aba..2866d1257 100644
--- a/packages/frontend/src/main/components/common/CommitReceivedReceipts.vue
+++ b/packages/frontend/src/main/components/common/CommitReceivedReceipts.vue
@@ -138,7 +138,7 @@ export default {
receivedUsersUnique() {
if (!(this.activity && this.activity.items && this.activity.items.length > 0))
return []
- let set = new Set()
+ const set = new Set()
this.activity.items.forEach((item) => set.add(item.userId))
return Array.from(set)
}
diff --git a/packages/frontend/src/main/components/common/NoDataPlaceholder.vue b/packages/frontend/src/main/components/common/NoDataPlaceholder.vue
index a913f5233..a52486004 100644
--- a/packages/frontend/src/main/components/common/NoDataPlaceholder.vue
+++ b/packages/frontend/src/main/components/common/NoDataPlaceholder.vue
@@ -190,9 +190,9 @@ export default {
type: 'action'
})
- let url = `https://releases.speckle.dev/manager/SpeckleManager Setup.exe`
+ const url = `https://releases.speckle.dev/manager/SpeckleManager Setup.exe`
- let a = document.createElement('a')
+ const a = document.createElement('a')
document.body.appendChild(a)
a.style = 'display: none'
a.href = url
diff --git a/packages/frontend/src/main/components/common/SearchBar.vue b/packages/frontend/src/main/components/common/SearchBar.vue
index c43872a14..4ce7caa30 100644
--- a/packages/frontend/src/main/components/common/SearchBar.vue
+++ b/packages/frontend/src/main/components/common/SearchBar.vue
@@ -122,7 +122,7 @@ export default {
},
watch: {
selectedSearchResult(val) {
- let myStream = this.streams.items.find((s) => s.id === val.id)
+ const myStream = this.streams.items.find((s) => s.id === val.id)
this.$emit('select', myStream)
this.streams.items = []
diff --git a/packages/frontend/src/main/components/common/SourceAppAvatar.vue b/packages/frontend/src/main/components/common/SourceAppAvatar.vue
index bc2ea6883..1b9406401 100644
--- a/packages/frontend/src/main/components/common/SourceAppAvatar.vue
+++ b/packages/frontend/src/main/components/common/SourceAppAvatar.vue
@@ -22,7 +22,7 @@ export default {
color() {
if (!this.applicationName) return 'grey'
- let appname = this.applicationName.toLowerCase()
+ const appname = this.applicationName.toLowerCase()
if (appname.includes('dynamo')) return 'purple'
if (appname.includes('revit')) return 'blue darken-3'
@@ -42,7 +42,7 @@ export default {
shortName() {
if (!this.applicationName) return '?'
- let appname = this.applicationName.toLowerCase()
+ const appname = this.applicationName.toLowerCase()
if (appname.includes('dynamo')) return 'DYN'
if (appname.includes('revit')) return 'RVT'
diff --git a/packages/frontend/src/main/components/feed/FeedTimeline.vue b/packages/frontend/src/main/components/feed/FeedTimeline.vue
index 4bb626be1..ac29db889 100644
--- a/packages/frontend/src/main/components/feed/FeedTimeline.vue
+++ b/packages/frontend/src/main/components/feed/FeedTimeline.vue
@@ -160,13 +160,13 @@ export default {
methods: {
groupSimilarActivities(data) {
if (!data) return
- let groupedTimeline = data.user.timeline.items.reduce(function (prev, curr) {
+ const groupedTimeline = data.user.timeline.items.reduce(function (prev, curr) {
//first item
if (!prev.length) {
prev.push([curr])
return prev
}
- let test = prev[prev.length - 1][0]
+ const test = prev[prev.length - 1][0]
let action = 'split' // split | combine | skip
if (curr.actionType === test.actionType && curr.streamId === test.streamId) {
if (curr.actionType.includes('stream_permissions')) {
diff --git a/packages/frontend/src/main/components/stream/ListItemCommit.vue b/packages/frontend/src/main/components/stream/ListItemCommit.vue
index 6c3111331..e48a5305b 100644
--- a/packages/frontend/src/main/components/stream/ListItemCommit.vue
+++ b/packages/frontend/src/main/components/stream/ListItemCommit.vue
@@ -142,8 +142,8 @@ export default {
},
commitDate() {
if (!this.commit) return null
- let date = new Date(this.commit.createdAt)
- let options = { year: 'numeric', month: 'long', day: 'numeric' }
+ const date = new Date(this.commit.createdAt)
+ const options = { year: 'numeric', month: 'long', day: 'numeric' }
return date.toLocaleString(undefined, options)
},
@@ -156,7 +156,7 @@ export default {
receivedUsersUnique() {
if (!(this.activity && this.activity.items && this.activity.items.length > 0))
return []
- let set = new Set()
+ const set = new Set()
this.activity.items.forEach((item) => set.add(item.userId))
return Array.from(set)
}
diff --git a/packages/frontend/src/main/components/stream/StreamActivity.vue b/packages/frontend/src/main/components/stream/StreamActivity.vue
index 7e48fdf63..9fb60a4e9 100644
--- a/packages/frontend/src/main/components/stream/StreamActivity.vue
+++ b/packages/frontend/src/main/components/stream/StreamActivity.vue
@@ -91,13 +91,13 @@ export default {
},
methods: {
groupSimilarActivities(data) {
- let groupedActivity = data.stream.activity.items.reduce(function (prev, curr) {
+ const groupedActivity = data.stream.activity.items.reduce(function (prev, curr) {
//first item
if (!prev.length) {
prev.push([curr])
return prev
}
- let test = prev[prev.length - 1][0]
+ const test = prev[prev.length - 1][0]
let action = 'split' // split | combine | skip
if (curr.actionType === test.actionType && curr.streamId === test.streamId) {
if (curr.actionType.includes('stream_permissions')) {
diff --git a/packages/frontend/src/main/components/stream/WebhookForm.vue b/packages/frontend/src/main/components/stream/WebhookForm.vue
index 4794ca4bc..7283cae84 100644
--- a/packages/frontend/src/main/components/stream/WebhookForm.vue
+++ b/packages/frontend/src/main/components/stream/WebhookForm.vue
@@ -99,7 +99,7 @@ export default {
}
},
update(data) {
- let webhook = data.stream.webhooks.items[0]
+ const webhook = data.stream.webhooks.items[0]
this.secret = null
if (webhook)
({
@@ -168,7 +168,7 @@ export default {
this.$matomo && this.$matomo.trackPageView('stream/webhook/update')
this.$mixpanel.track('Webhook Action', { type: 'action', name: 'update' })
- let params = {
+ const params = {
id: this.webhook.id,
streamId: this.streamId,
url: this.url,
@@ -185,7 +185,7 @@ export default {
}
`,
variables: {
- params: params
+ params
}
})
this.$emit('refetch-webhooks')
diff --git a/packages/frontend/src/main/components/stream/globals/GlobalsBuilder.vue b/packages/frontend/src/main/components/stream/globals/GlobalsBuilder.vue
index 172a30b69..48a441c60 100644
--- a/packages/frontend/src/main/components/stream/globals/GlobalsBuilder.vue
+++ b/packages/frontend/src/main/components/stream/globals/GlobalsBuilder.vue
@@ -182,7 +182,7 @@ export default {
globalsCommit() {
// eslint-disable-next-line vue/no-side-effects-in-computed-properties
this.globalsAreValid = true
- let base = this.globalsToBase(this.globalsArray)
+ const base = this.globalsToBase(this.globalsArray)
return base
}
},
@@ -195,13 +195,13 @@ export default {
async saveGlobals() {
if (!this.$refs.form.validate()) return
- let commitObject = this.globalsToBase(this.globalsArray)
+ const commitObject = this.globalsToBase(this.globalsArray)
try {
this.loading = true
this.$matomo && this.$matomo.trackPageView('globals/save')
this.$mixpanel.track('Globals Action', { type: 'action', name: 'update' })
- let res = await this.$apollo.mutate({
+ const res = await this.$apollo.mutate({
mutation: gql`
mutation ObjectCreate($params: ObjectCreateInput!) {
objectCreate(objectInput: $params)
@@ -241,9 +241,9 @@ export default {
},
nestedGlobals(data) {
if (!data) return []
- let entries = Object.entries(data)
- let arr = []
- for (let [key, val] of entries) {
+ const entries = Object.entries(data)
+ const arr = []
+ for (const [key, val] of entries) {
if (key.startsWith('__')) continue
if (['totalChildrenCount', 'speckle_type', 'id'].includes(key)) continue
@@ -281,13 +281,13 @@ export default {
return arr
},
globalsToBase(arr) {
- let base = {
+ const base = {
// eslint-disable-next-line camelcase
speckle_type: 'Base',
id: null
}
- for (let entry of arr) {
+ for (const entry of arr) {
if (!entry.value && !entry.globals) continue
if (entry.valid !== true) {
@@ -324,20 +324,20 @@ export default {
})
},
addProp(kwargs) {
- let globals = this.getNestedGlobals(kwargs.path)
+ const globals = this.getNestedGlobals(kwargs.path)
globals.splice(globals.length, 0, kwargs.field)
},
removeProp(kwargs) {
- let globals = this.getNestedGlobals(kwargs.path)
+ const globals = this.getNestedGlobals(kwargs.path)
globals.splice(kwargs.index, 1)
},
fieldToObject(kwargs) {
- let globals = this.getNestedGlobals(kwargs.path)
+ const globals = this.getNestedGlobals(kwargs.path)
globals.splice(kwargs.index, 1, kwargs.obj)
},
objectToField(kwargs) {
- let globals = this.getNestedGlobals(kwargs.path)
+ const globals = this.getNestedGlobals(kwargs.path)
globals.splice(kwargs.index, 1, ...kwargs.fields)
},
@@ -345,10 +345,10 @@ export default {
let entry = this.globalsArray
if (!path) return entry
- let depth = path.length
+ const depth = path.length
if (depth > 0) {
- let id = path.shift()
+ const id = path.shift()
entry = entry.find((e) => e.id === id)
}
diff --git a/packages/frontend/src/main/components/stream/globals/GlobalsEntry.vue b/packages/frontend/src/main/components/stream/globals/GlobalsEntry.vue
index 96170f508..0ccf825de 100644
--- a/packages/frontend/src/main/components/stream/globals/GlobalsEntry.vue
+++ b/packages/frontend/src/main/components/stream/globals/GlobalsEntry.vue
@@ -178,13 +178,13 @@ export default {
keys(index, entries) {
return [
(v) => {
- let result = !!v || 'Properties need to have a name!'
+ const result = !!v || 'Properties need to have a name!'
entries[index].valid = result
return result
},
(v) => {
- let filtered = entries.filter((_, i) => i !== index)
- let result =
+ const filtered = entries.filter((_, i) => i !== index)
+ const result =
filtered.findIndex((e) => e.key === v) === -1 ||
'Each property name must be unique'
if (entries[index].valid === true) entries[index].valid = result
@@ -192,7 +192,7 @@ export default {
},
(v) => {
const re = /[./]/
- let result =
+ const result =
!re.test(v) || 'The name cannot contain invalid characters: "." or "/"'
if (entries[index].valid === true) entries[index].valid = result
return result
@@ -242,20 +242,20 @@ export default {
bimAdjs[Math.floor(Math.random() * bimAdjs.length)] +
' ' +
bimNouns[Math.floor(Math.random() * bimNouns.length)]
- let field = {
+ const field = {
key: `placeholder ${crs({ length: 6 })}`,
type: 'field',
value: randomPhrase,
valid: true,
id: crs({ length: 10 })
}
- this.$emit('add-prop', { field: field, path: this.path })
+ this.$emit('add-prop', { field, path: this.path })
},
emitRemoveAt(index) {
- this.$emit('remove-prop', { path: this.path, index: index })
+ this.$emit('remove-prop', { path: this.path, index })
},
emitFieldToObject(entry, index) {
- let obj = {
+ const obj = {
key: entry.key,
type: 'object',
id: entry.id,
@@ -270,11 +270,11 @@ export default {
}
]
}
- this.$emit('field-to-object', { obj: obj, path: this.path, index: index })
+ this.$emit('field-to-object', { obj, path: this.path, index })
},
emitObjectToField(entry, index) {
- let fields = entry.globals
- this.$emit('object-to-field', { fields: fields, path: this.path, index: index })
+ const fields = entry.globals
+ this.$emit('object-to-field', { fields, path: this.path, index })
}
}
}
diff --git a/packages/frontend/src/main/components/stream/uploads/FileProcessingItem.vue b/packages/frontend/src/main/components/stream/uploads/FileProcessingItem.vue
index 95fab60f7..4af0d569b 100644
--- a/packages/frontend/src/main/components/stream/uploads/FileProcessingItem.vue
+++ b/packages/frontend/src/main/components/stream/uploads/FileProcessingItem.vue
@@ -119,15 +119,15 @@ export default {
},
methods: {
async downloadOriginalFile() {
- let res = await fetch(`/api/file/${this.fileId}`, {
+ const res = await fetch(`/api/file/${this.fileId}`, {
headers: {
Authorization: localStorage.getItem('AuthToken')
}
})
- let blob = await res.blob()
- let file = window.URL.createObjectURL(blob)
+ const blob = await res.blob()
+ const file = window.URL.createObjectURL(blob)
- let a = document.createElement('a')
+ const a = document.createElement('a')
document.body.appendChild(a)
a.style = 'display: none'
a.href = file
diff --git a/packages/frontend/src/main/components/stream/uploads/FileUploadItem.vue b/packages/frontend/src/main/components/stream/uploads/FileUploadItem.vue
index 346fda6a9..775a0a0c2 100644
--- a/packages/frontend/src/main/components/stream/uploads/FileUploadItem.vue
+++ b/packages/frontend/src/main/components/stream/uploads/FileUploadItem.vue
@@ -58,11 +58,11 @@ export default {
}),
methods: {
upload() {
- let data = new FormData()
+ const data = new FormData()
this.error = null
data.append('file', this.file)
- let request = new XMLHttpRequest()
+ const request = new XMLHttpRequest()
request.open(
'POST',
`/api/file/ifc/${this.$route.params.streamId}/${
diff --git a/packages/frontend/src/main/components/user/AppEditDialog.vue b/packages/frontend/src/main/components/user/AppEditDialog.vue
index 93a5d62c0..f021c1736 100644
--- a/packages/frontend/src/main/components/user/AppEditDialog.vue
+++ b/packages/frontend/src/main/components/user/AppEditDialog.vue
@@ -169,7 +169,7 @@ export default {
(v) => {
try {
// eslint-disable-next-line no-unused-vars
- let x = new URL(v)
+ const x = new URL(v)
return true
} catch {
return 'Url must be valid'
@@ -187,8 +187,8 @@ export default {
},
parsedScopes() {
if (!this.scopes) return []
- let arr = []
- for (let s of this.scopes) {
+ const arr = []
+ for (const s of this.scopes) {
arr.push({ text: s.name, value: s.name })
arr.push({ header: s.description })
arr.push({ divider: true })
@@ -223,7 +223,7 @@ export default {
this.$mixpanel.track('App Action', { type: 'action', name: 'update' })
this.$matomo && this.$matomo.trackPageView('user/app/update')
try {
- let res = await this.$apollo.mutate({
+ const res = await this.$apollo.mutate({
mutation: gql`
mutation ($app: AppUpdateInput!) {
appUpdate(app: $app)
diff --git a/packages/frontend/src/main/components/user/AppNewDialog.vue b/packages/frontend/src/main/components/user/AppNewDialog.vue
index 9119b5bff..5f98c3e2a 100644
--- a/packages/frontend/src/main/components/user/AppNewDialog.vue
+++ b/packages/frontend/src/main/components/user/AppNewDialog.vue
@@ -137,7 +137,7 @@ export default {
(v) => {
try {
// eslint-disable-next-line no-unused-vars
- let x = new URL(v)
+ const x = new URL(v)
return true
} catch {
return 'Url must be valid'
@@ -155,8 +155,8 @@ export default {
},
parsedScopes() {
if (!this.scopes) return []
- let arr = []
- for (let s of this.scopes) {
+ const arr = []
+ for (const s of this.scopes) {
arr.push({ text: s.name, value: s.name })
arr.push({ header: s.description })
arr.push({ divider: true })
@@ -178,7 +178,7 @@ export default {
this.$mixpanel.track('App Action', { type: 'action', name: 'create' })
try {
- let res = await this.$apollo.mutate({
+ const res = await this.$apollo.mutate({
mutation: gql`
mutation ($app: AppCreateInput!) {
appCreate(app: $app)
diff --git a/packages/frontend/src/main/components/user/ListItemStream.vue b/packages/frontend/src/main/components/user/ListItemStream.vue
index 40518efd0..31e47683c 100644
--- a/packages/frontend/src/main/components/user/ListItemStream.vue
+++ b/packages/frontend/src/main/components/user/ListItemStream.vue
@@ -55,7 +55,7 @@ export default {
props: {
stream: {
type: Object,
- default: function () {
+ default () {
return {}
}
}
diff --git a/packages/frontend/src/main/components/user/ListItemUserApp.vue b/packages/frontend/src/main/components/user/ListItemUserApp.vue
index fcc25b75a..0f65ee3fe 100644
--- a/packages/frontend/src/main/components/user/ListItemUserApp.vue
+++ b/packages/frontend/src/main/components/user/ListItemUserApp.vue
@@ -111,7 +111,7 @@ export default {
},
watch: {
appScopes(val) {
- let scopeList = []
+ const scopeList = []
val.forEach((obj) => {
scopeList.push(obj.name)
})
diff --git a/packages/frontend/src/main/components/user/TokenDialog.vue b/packages/frontend/src/main/components/user/TokenDialog.vue
index bb9293466..19ce06fdd 100644
--- a/packages/frontend/src/main/components/user/TokenDialog.vue
+++ b/packages/frontend/src/main/components/user/TokenDialog.vue
@@ -92,8 +92,8 @@ export default {
computed: {
parsedScopes() {
if (!this.scopes) return []
- let arr = []
- for (let s of this.scopes) {
+ const arr = []
+ for (const s of this.scopes) {
arr.push({ text: s.name, value: s.name })
arr.push({ header: s.description })
arr.push({ divider: true })
@@ -114,7 +114,7 @@ export default {
this.$matomo && this.$matomo.trackPageView('user/token/create')
this.$mixpanel.track('Token Action', { type: 'action', name: 'create' })
try {
- let res = await this.$apollo.mutate({
+ const res = await this.$apollo.mutate({
mutation: gql`
mutation ($token: ApiTokenCreateInput!) {
apiTokenCreate(token: $token)
diff --git a/packages/frontend/src/main/components/viewer/CommentAddOverlay.vue b/packages/frontend/src/main/components/viewer/CommentAddOverlay.vue
index 4e0f87c99..e9a8c9c0c 100644
--- a/packages/frontend/src/main/components/viewer/CommentAddOverlay.vue
+++ b/packages/frontend/src/main/components/viewer/CommentAddOverlay.vue
@@ -190,8 +190,8 @@ export default {
this.$mixpanel.track('Comment Action', { type: 'action', name: 'create' })
- let camTarget = window.__viewer.cameraHandler.activeCam.controls.getTarget()
- let commentInput = {
+ const camTarget = window.__viewer.cameraHandler.activeCam.controls.getTarget()
+ const commentInput = {
streamId: this.$route.params.streamId,
resources: [
{
@@ -267,7 +267,7 @@ export default {
if (!this.$refs.commentButton) return
this.visible = true
- let projectedLocation = new THREE.Vector3(
+ const projectedLocation = new THREE.Vector3(
info.location.x,
info.location.y,
info.location.z
@@ -278,7 +278,7 @@ export default {
info.location.z
)
- let cam = window.__viewer.cameraHandler.camera
+ const cam = window.__viewer.cameraHandler.camera
cam.updateProjectionMatrix()
projectedLocation.project(cam)
let collapsedSize = this.$refs.commentButton.clientWidth
@@ -299,9 +299,9 @@ export default {
// TODO: Clamping, etc.
if (!this.location) return
if (!this.$refs.commentButton) return
- let cam = window.__viewer.cameraHandler.camera
+ const cam = window.__viewer.cameraHandler.camera
cam.updateProjectionMatrix()
- let projectedLocation = this.location.clone()
+ const projectedLocation = this.location.clone()
projectedLocation.project(cam)
let collapsedSize = this.$refs.commentButton.clientWidth
collapsedSize = 36
diff --git a/packages/frontend/src/main/components/viewer/CommentsOverlay.vue b/packages/frontend/src/main/components/viewer/CommentsOverlay.vue
index 96bea4649..b2908c449 100644
--- a/packages/frontend/src/main/components/viewer/CommentsOverlay.vue
+++ b/packages/frontend/src/main/components/viewer/CommentsOverlay.vue
@@ -180,15 +180,15 @@ export default {
`,
fetchPolicy: 'no-cache',
variables() {
- let resourceArr = [
+ const resourceArr = [
{
resourceType: this.$resourceType(this.$route.params.resourceId),
resourceId: this.$route.params.resourceId
}
]
if (this.$route.query.overlay) {
- let resIds = this.$route.query.overlay.split(',')
- for (let resId of resIds)
+ const resIds = this.$route.query.overlay.split(',')
+ for (const resId of resIds)
resourceArr.push({
resourceType: this.$resourceType(resId),
resourceId: resId
@@ -202,7 +202,7 @@ export default {
},
result({ data }) {
if (!data) return
- for (let c of data.comments.items) {
+ for (const c of data.comments.items) {
c.expanded = false
c.hovered = false
c.bouncing = false
@@ -237,7 +237,7 @@ export default {
!subscriptionData.data.commentActivity
)
return
- let newComment = subscriptionData.data.commentActivity
+ const newComment = subscriptionData.data.commentActivity
newComment.expanded = false
newComment.hovered = false
@@ -287,7 +287,7 @@ export default {
if (this.$store.state.viewerBusy || this.$apollo.loading) return
this.expandComment({ id: this.openCommentOnInit })
this.openCommentOnInit = null
- let q = { ...this.$route.query }
+ const q = { ...this.$route.query }
delete q.cId
this.$router.replace({
path: this.$route.path,
@@ -305,7 +305,7 @@ export default {
this.$store.commit('setPreventCommentCollapse', { value: false })
return
}
- for (let c of this.localComments) {
+ for (const c of this.localComments) {
this.collapseComment(c)
}
}.bind(this),
@@ -327,7 +327,7 @@ export default {
this.showComments = !this.showComments
},
expandComment(comment) {
- for (let c of this.localComments) {
+ for (const c of this.localComments) {
if (c.id === comment.id) {
c.preventAutoClose = true
this.$store.commit('setCommentSelection', { comment: c })
@@ -347,7 +347,7 @@ export default {
}
},
collapseComment(comment) {
- for (let c of this.localComments) {
+ for (const c of this.localComments) {
if (c.id === comment.id && c.expanded) {
c.expanded = false
if (c.data.filters) this.$store.commit('resetFilter')
@@ -357,7 +357,7 @@ export default {
}
},
setCommentPow(comment) {
- let camToSet = comment.data.camPos
+ const camToSet = comment.data.camPos
if (camToSet[6] === 1) {
window.__viewer.toggleCameraProjection()
}
@@ -383,22 +383,22 @@ export default {
},
async handleDeletion(comment) {
this.collapseComment(comment)
- let comm = this.localComments.find((c) => c.id === comment.id)
+ const comm = this.localComments.find((c) => c.id === comment.id)
comm.archived = true
this.updateCommentBubbles()
},
updateCommentBubbles() {
if (!this.comments) return
- let cam = window.__viewer.cameraHandler.camera
+ const cam = window.__viewer.cameraHandler.camera
cam.updateProjectionMatrix()
- for (let comment of this.localComments) {
+ for (const comment of this.localComments) {
// get html elements
- let commentEl = this.$refs[`comment-${comment.id}`][0]
- let card = this.$refs[`commentcard-${comment.id}`][0]
+ const commentEl = this.$refs[`comment-${comment.id}`][0]
+ const card = this.$refs[`commentcard-${comment.id}`][0]
if (!commentEl) continue
- let location = new THREE.Vector3(
+ const location = new THREE.Vector3(
comment.data.location.x,
comment.data.location.y,
comment.data.location.z
@@ -406,7 +406,7 @@ export default {
location.project(cam)
- let commentLocation = new THREE.Vector3(
+ const commentLocation = new THREE.Vector3(
(location.x * 0.5 + 0.5) * this.$refs.parent.clientWidth,
(location.y * -0.5 + 0.5) * this.$refs.parent.clientHeight,
0
@@ -451,7 +451,7 @@ export default {
commentEl.style.top = `${tY}px`
commentEl.style.left = `${tX}px`
- let maxHeight = this.$refs.parent.clientHeight - paddingYTop - paddingYBottom
+ const maxHeight = this.$refs.parent.clientHeight - paddingYTop - paddingYBottom
card.style.maxHeight = `${maxHeight}px`
@@ -471,8 +471,8 @@ export default {
// top clip
if (cardTop < paddingYTop) cardTop = paddingYTop
- let cardBottom = cardTop + card.clientHeight
- let maxBottom = this.$refs.parent.clientHeight - 45
+ const cardBottom = cardTop + card.clientHeight
+ const maxBottom = this.$refs.parent.clientHeight - 45
// bottom clip
if (cardBottom > maxBottom) {
@@ -486,9 +486,9 @@ export default {
}
},
bounceComment(id) {
- let commentEl = this.$refs[`comment-${id}`][0]
+ const commentEl = this.$refs[`comment-${id}`][0]
commentEl.classList.add('tada-once')
- let comment = this.localComments.find((c) => c.id === id)
+ const comment = this.localComments.find((c) => c.id === id)
comment.bouncing = true
comment.updatedAt = Date.now()
setTimeout(() => {
diff --git a/packages/frontend/src/main/components/viewer/CommitInfoResource.vue b/packages/frontend/src/main/components/viewer/CommitInfoResource.vue
index 45f0fa944..39111ce4c 100644
--- a/packages/frontend/src/main/components/viewer/CommitInfoResource.vue
+++ b/packages/frontend/src/main/components/viewer/CommitInfoResource.vue
@@ -108,7 +108,7 @@ export default {
},
methods: {
isolate() {
- let id = this.resource.data.commit.referencedObject
+ const id = this.resource.data.commit.referencedObject
if (this.isolated)
this.$store.commit('unisolateObjects', {
filterKey: '__parents',
@@ -121,7 +121,7 @@ export default {
})
},
toggleVisibility() {
- let id = this.resource.data.commit.referencedObject
+ const id = this.resource.data.commit.referencedObject
if (this.visible)
this.$store.commit('hideObjects', {
filterKey: '__parents',
diff --git a/packages/frontend/src/main/components/viewer/FilterCategoryActive.vue b/packages/frontend/src/main/components/viewer/FilterCategoryActive.vue
index f7a3a602c..d1e1af195 100644
--- a/packages/frontend/src/main/components/viewer/FilterCategoryActive.vue
+++ b/packages/frontend/src/main/components/viewer/FilterCategoryActive.vue
@@ -130,7 +130,7 @@ export default {
mashColorLegend(colorLegend) {
// just adds to our colors
if (!colorLegend) return
- let keys = Object.keys(colorLegend)
+ const keys = Object.keys(colorLegend)
for (const key of keys) {
if (!this.legend[key]) this.$set(this.legend, key, colorLegend[key])
}
@@ -155,9 +155,9 @@ export default {
},
generateTypeMap(filter) {
if (filter.data.type !== 'string') return []
- let typeMap = []
- for (let key of Object.keys(filter.data.uniqueValues)) {
- let shortName = key.split('.').reverse()[0]
+ const typeMap = []
+ for (const key of Object.keys(filter.data.uniqueValues)) {
+ const shortName = key.split('.').reverse()[0]
typeMap.push({
name: shortName,
fullName: key,
diff --git a/packages/frontend/src/main/components/viewer/ObjectInfoResource.vue b/packages/frontend/src/main/components/viewer/ObjectInfoResource.vue
index 88eeec1a4..d521cdff7 100644
--- a/packages/frontend/src/main/components/viewer/ObjectInfoResource.vue
+++ b/packages/frontend/src/main/components/viewer/ObjectInfoResource.vue
@@ -82,7 +82,7 @@ export default {
},
methods: {
isolate() {
- let id = this.resource.data.object.id
+ const id = this.resource.data.object.id
if (this.isolated)
this.$store.commit('unisolateObjects', {
filterKey: '__parents',
@@ -95,7 +95,7 @@ export default {
})
},
toggleVisibility() {
- let id = this.resource.data.object.id
+ const id = this.resource.data.object.id
if (this.visible)
this.$store.commit('hideObjects', {
filterKey: '__parents',
diff --git a/packages/frontend/src/main/components/viewer/ObjectProperties.vue b/packages/frontend/src/main/components/viewer/ObjectProperties.vue
index 4cb7d9951..355df16f0 100644
--- a/packages/frontend/src/main/components/viewer/ObjectProperties.vue
+++ b/packages/frontend/src/main/components/viewer/ObjectProperties.vue
@@ -80,7 +80,7 @@ export default {
methods: {
async getRealObject() {
this.loading = true
- let result = await this.$apollo.query({
+ const result = await this.$apollo.query({
query: gql`
query Object($streamId: String!, $id: String!) {
stream(id: $streamId) {
@@ -104,13 +104,13 @@ export default {
this.generateKVPs()
},
generateKVPs() {
- for (let key of Object.keys(this.realObject)) {
+ for (const key of Object.keys(this.realObject)) {
if (this.ignoredProps.indexOf(key) !== -1) continue
- let value = this.realObject[key]
- let type = Array.isArray(this.realObject[key])
+ const value = this.realObject[key]
+ const type = Array.isArray(this.realObject[key])
? 'array'
: typeof this.realObject[key]
- let extras = []
+ const extras = []
if (value?.referencedId) extras.push('open', 'visibility')
if (
type === 'array' &&
diff --git a/packages/frontend/src/main/components/viewer/ObjectPropertiesRow.vue b/packages/frontend/src/main/components/viewer/ObjectPropertiesRow.vue
index 3737929f7..ad24eb1e2 100644
--- a/packages/frontend/src/main/components/viewer/ObjectPropertiesRow.vue
+++ b/packages/frontend/src/main/components/viewer/ObjectPropertiesRow.vue
@@ -171,8 +171,8 @@ export default {
return this.$store.state.hideValues.indexOf(this.prop.value.referencedId) === -1
}
if (this.prop.type === 'array') {
- let ids = this.prop.value.map((o) => o.referencedId)
- let targetIds = this.$store.state.hideValues.filter(
+ const ids = this.prop.value.map((o) => o.referencedId)
+ const targetIds = this.$store.state.hideValues.filter(
(val) => ids.indexOf(val) !== -1
)
if (targetIds.length === 0) return true
@@ -187,8 +187,8 @@ export default {
)
}
if (this.prop.type === 'array') {
- let ids = this.prop.value.map((o) => o.referencedId)
- let targetIds = this.$store.state.isolateValues.filter(
+ const ids = this.prop.value.map((o) => o.referencedId)
+ const targetIds = this.$store.state.isolateValues.filter(
(val) => ids.indexOf(val) !== -1
)
if (targetIds.length === 0) return false
diff --git a/packages/frontend/src/main/components/viewer/ObjectSelection.vue b/packages/frontend/src/main/components/viewer/ObjectSelection.vue
index d3c0e2dba..56619096c 100644
--- a/packages/frontend/src/main/components/viewer/ObjectSelection.vue
+++ b/packages/frontend/src/main/components/viewer/ObjectSelection.vue
@@ -99,7 +99,7 @@ export default {
})
},
isolated() {
- let ids = this.objects.map((o) => o.id)
+ const ids = this.objects.map((o) => o.id)
ids.forEach((val) => {
if (this.$store.state.isolateValues.indexOf(val) === -1) return false
})
@@ -108,7 +108,7 @@ export default {
},
methods: {
isolateSelection() {
- let ids = this.objects.map((o) => o.id)
+ const ids = this.objects.map((o) => o.id)
if (!this.isolated)
this.$store.commit('unisolateObjects', {
filterKey: '__parents',
@@ -122,7 +122,7 @@ export default {
},
getSelectionUrl() {
if (this.objects.length < 2) return ''
- let url = `/streams/${this.streamId}/objects/${
+ const url = `/streams/${this.streamId}/objects/${
this.objects[0].id
}?overlay=${this.objects
.slice(1)
diff --git a/packages/frontend/src/main/components/viewer/ViewerBubbles.vue b/packages/frontend/src/main/components/viewer/ViewerBubbles.vue
index 27b68f204..6e33b15c9 100644
--- a/packages/frontend/src/main/components/viewer/ViewerBubbles.vue
+++ b/packages/frontend/src/main/components/viewer/ViewerBubbles.vue
@@ -130,7 +130,7 @@ export default {
return !this.$route.params.resourceId || !this.$loggedIn()
},
result(res) {
- let data = res.data
+ const data = res.data
// Note: swap user id checks for .userId (vs. uuid) if wanting to not allow same user two diff browsers
// it's easier to test like this though :)
if (!data.userViewerActivity) return
@@ -145,11 +145,11 @@ export default {
return
}
if (data.userViewerActivity.uuid === this.uuid) return
- let indx = this.users.findIndex(
+ const indx = this.users.findIndex(
(u) => u.uuid === data.userViewerActivity.uuid
)
if (indx !== -1) {
- let user = this.users[indx]
+ const user = this.users[indx]
user.hidden = false
user.status = 'viewing'
user.camera = data.userViewerActivity.camera
@@ -226,7 +226,7 @@ export default {
},
methods: {
setUserPow(user) {
- let camToSet = user.camera
+ const camToSet = user.camera
if (camToSet[6] === 1) {
window.__viewer.toggleCameraProjection()
}
@@ -248,8 +248,8 @@ export default {
},
async sendUpdateAndPrune() {
if (!this.$route.params.resourceId) return
- for (let user of this.users) {
- let delta = Date.now() - user.lastUpdate
+ for (const user of this.users) {
+ const delta = Date.now() - user.lastUpdate
if (delta > 20000) {
user.hidden = true
user.status = 'stale'
@@ -263,10 +263,10 @@ export default {
if (!this.$loggedIn()) return
- let controls = window.__viewer.cameraHandler.activeCam.controls
- let pos = controls.getPosition()
- let target = controls.getTarget()
- let c = [
+ const controls = window.__viewer.cameraHandler.activeCam.controls
+ const pos = controls.getPosition()
+ const target = controls.getTarget()
+ const c = [
parseFloat(pos.x.toFixed(5)),
parseFloat(pos.y.toFixed(5)),
parseFloat(pos.z.toFixed(5)),
@@ -282,7 +282,7 @@ export default {
selectionLocation = this.$store.state.selectedComment.data.location
}
- let data = {
+ const data = {
filter: this.$store.state.appliedFilter,
selection: this.selectedIds,
selectionLocation,
@@ -343,17 +343,17 @@ export default {
updateBubbles(transition = true) {
if (!this.$refs.parent) return
- let cam = window.__viewer.cameraHandler.camera
+ const cam = window.__viewer.cameraHandler.camera
cam.updateProjectionMatrix()
- let selectedObjects = []
- for (let user of this.users) {
+ const selectedObjects = []
+ for (const user of this.users) {
if (!this.$refs[`user-bubble-${user.uuid}`]) continue
if (user.selection) selectedObjects.push(...user.selection)
- let location = new THREE.Vector3(user.camera[0], user.camera[1], user.camera[2])
+ const location = new THREE.Vector3(user.camera[0], user.camera[1], user.camera[2])
let target = new THREE.Vector3(user.camera[3], user.camera[4], user.camera[5])
- let camDir = new THREE.Vector3().subVectors(target, location)
+ const camDir = new THREE.Vector3().subVectors(target, location)
if (user.selectionLocation)
target = new THREE.Vector3(
@@ -366,21 +366,21 @@ export default {
target.project(cam)
// target.normalize()
- let bubbleLoc = new THREE.Vector3(
+ const bubbleLoc = new THREE.Vector3(
(camDir.x * 0.5 + 0.5) * this.$refs.parent.clientWidth,
(camDir.y * -0.5 + 0.5) * this.$refs.parent.clientHeight,
0
)
- let targetLoc = new THREE.Vector3(
+ const targetLoc = new THREE.Vector3(
(target.x * 0.5 + 0.5) * this.$refs.parent.clientWidth,
(target.y * -0.5 + 0.5) * this.$refs.parent.clientHeight,
0
)
- let dir2D = new THREE.Vector3()
+ const dir2D = new THREE.Vector3()
.subVectors(targetLoc, bubbleLoc)
.normalize()
.multiplyScalar(70)
- let newTarget = new THREE.Vector3().addVectors(targetLoc, dir2D)
+ const newTarget = new THREE.Vector3().addVectors(targetLoc, dir2D)
// TODO: clamp sides
const paddingX = 42
@@ -407,9 +407,9 @@ export default {
user.clipped = true
}
- let bubbleEl = this.$refs[`user-bubble-${user.uuid}`][0]
- let uTargetEl = this.$refs[`user-target-${user.uuid}`][0]
- let uArrowEl = this.$refs[`user-arrow-${user.uuid}`][0]
+ const bubbleEl = this.$refs[`user-bubble-${user.uuid}`][0]
+ const uTargetEl = this.$refs[`user-target-${user.uuid}`][0]
+ const uArrowEl = this.$refs[`user-arrow-${user.uuid}`][0]
if (!bubbleEl || !uTargetEl || !uArrowEl) return // collection can get modified during update
diff --git a/packages/frontend/src/main/components/viewer/ViewerFilters.vue b/packages/frontend/src/main/components/viewer/ViewerFilters.vue
index 2417805eb..caaca604d 100644
--- a/packages/frontend/src/main/components/viewer/ViewerFilters.vue
+++ b/packages/frontend/src/main/components/viewer/ViewerFilters.vue
@@ -117,7 +117,7 @@ export default {
computed: {
topFilters() {
if (this.allFilters.length === 0) return []
- let arr = []
+ const arr = []
arr.push(this.allFilters.find((f) => f.name === 'Object Type'))
if (this.sourceApplication.toLowerCase().includes('revit')) {
arr.push(this.allFilters.find((f) => f.name === 'Level'))
@@ -148,8 +148,8 @@ export default {
'$store.state.appliedFilter'() {
if (this.trySetPresetFilter) return
if (this.$store.state.appliedFilter && this.$store.state.appliedFilter.filterBy) {
- let key = Object.keys(this.$store.state.appliedFilter.filterBy)[0]
- let presetFilter = this.allFilters.find((f) => f.targetKey === key)
+ const key = Object.keys(this.$store.state.appliedFilter.filterBy)[0]
+ const presetFilter = this.allFilters.find((f) => f.targetKey === key)
if (presetFilter) this.activeFilter = presetFilter
this.trySetPresetFilter = true
this.preventFirstSet = true
@@ -169,10 +169,10 @@ export default {
},
methods: {
parseAndSetFilters() {
- let keys = Object.keys(this.props)
- let filters = []
- for (let key of keys) {
- let filter = {}
+ const keys = Object.keys(this.props)
+ const filters = []
+ for (const key of keys) {
+ const filter = {}
// Handle revit params
if (key.startsWith('parameters.')) {
if (key.endsWith('.value')) {
diff --git a/packages/frontend/src/main/components/viewer/dialogs/AllCommits.vue b/packages/frontend/src/main/components/viewer/dialogs/AllCommits.vue
index c391823f8..eb62f338b 100644
--- a/packages/frontend/src/main/components/viewer/dialogs/AllCommits.vue
+++ b/packages/frontend/src/main/components/viewer/dialogs/AllCommits.vue
@@ -109,7 +109,7 @@ export default {
if (newItems.length === 0) $state.complete()
else $state.loaded()
- let allItems = [...previousResult.stream.commits.items]
+ const allItems = [...previousResult.stream.commits.items]
for (const commit of newItems) {
if (allItems.findIndex((c) => c.id === commit.id) === -1)
allItems.push(commit)
diff --git a/packages/frontend/src/main/components/viewer/dialogs/AllCommitsBranch.vue b/packages/frontend/src/main/components/viewer/dialogs/AllCommitsBranch.vue
index 8d49e86c3..2d99e3f30 100644
--- a/packages/frontend/src/main/components/viewer/dialogs/AllCommitsBranch.vue
+++ b/packages/frontend/src/main/components/viewer/dialogs/AllCommitsBranch.vue
@@ -79,7 +79,7 @@ export default {
},
methods: {
async fetchBranchCommits() {
- let res = await this.$apollo.query({
+ const res = await this.$apollo.query({
query: gql`
query {
stream(id: "${this.streamId}") {
@@ -104,13 +104,13 @@ export default {
}
`
})
- let items = res.data.stream.branch.commits.items
+ const items = res.data.stream.branch.commits.items
this.cursor = res.data.stream.branch.commits.cursor
items.forEach((item) => this.commits.push(item))
return items
},
async infiniteHandler($state) {
- let items = await this.fetchBranchCommits()
+ const items = await this.fetchBranchCommits()
if (items.length === 0) $state.complete()
else $state.loaded()
}
diff --git a/packages/frontend/src/main/components/viewer/dialogs/StreamOverlayViewer.vue b/packages/frontend/src/main/components/viewer/dialogs/StreamOverlayViewer.vue
index b68c157c7..841134b29 100644
--- a/packages/frontend/src/main/components/viewer/dialogs/StreamOverlayViewer.vue
+++ b/packages/frontend/src/main/components/viewer/dialogs/StreamOverlayViewer.vue
@@ -120,7 +120,7 @@ export default {
}
},
async mounted() {
- let res = await this.$apollo.query({
+ const res = await this.$apollo.query({
query: gql`
query {
stream(id: "${this.streamId}") {
@@ -156,15 +156,15 @@ export default {
this.objectId = null
return
}
- let pcs = this.objectIdInput.split('/')
- let objectId = pcs.reverse()[0]
+ const pcs = this.objectIdInput.split('/')
+ const objectId = pcs.reverse()[0]
if (objectId.length !== 32) {
this.objectIdError = 'Invalid id length.'
this.objectId = null
return
}
if (pcs.length !== 1) {
- let streamId = pcs[2]
+ const streamId = pcs[2]
if (streamId !== this.$route.params.streamId) {
this.objectIdError = 'Objects do not belong to the same stream.'
this.objectId = null
diff --git a/packages/frontend/src/main/components/viewer/viewerFrontendHelpers.js b/packages/frontend/src/main/components/viewer/viewerFrontendHelpers.js
index 8be6520ca..ab57e4882 100644
--- a/packages/frontend/src/main/components/viewer/viewerFrontendHelpers.js
+++ b/packages/frontend/src/main/components/viewer/viewerFrontendHelpers.js
@@ -1,8 +1,8 @@
export function getCamArray() {
- let controls = window.__viewer.cameraHandler.activeCam.controls
- let pos = controls.getPosition()
- let target = controls.getTarget()
- let c = [
+ const controls = window.__viewer.cameraHandler.activeCam.controls
+ const pos = controls.getPosition()
+ const target = controls.getTarget()
+ const c = [
parseFloat(pos.x.toFixed(5)),
parseFloat(pos.y.toFixed(5)),
parseFloat(pos.z.toFixed(5)),
diff --git a/packages/frontend/src/main/dialogs/BranchEditDialog.vue b/packages/frontend/src/main/dialogs/BranchEditDialog.vue
index 762110ac7..d217e3a57 100644
--- a/packages/frontend/src/main/dialogs/BranchEditDialog.vue
+++ b/packages/frontend/src/main/dialogs/BranchEditDialog.vue
@@ -157,7 +157,7 @@ export default {
this.$matomo && this.$matomo.trackPageView('branch/delete')
this.$mixpanel.track('Branch Action', { type: 'action', name: 'delete' })
try {
- let res = await this.$apollo.mutate({
+ const res = await this.$apollo.mutate({
mutation: gql`
mutation branchDelete($params: BranchDeleteInput!) {
branchDelete(branch: $params)
@@ -191,7 +191,7 @@ export default {
this.loading = true
this.$matomo && this.$matomo.trackPageView('branch/update')
this.$mixpanel.track('Branch Action', { type: 'action', name: 'update' })
- let res = await this.$apollo.mutate({
+ const res = await this.$apollo.mutate({
mutation: gql`
mutation branchUpdate($params: BranchUpdateInput!) {
branchUpdate(branch: $params)
diff --git a/packages/frontend/src/main/dialogs/CommitEdit.vue b/packages/frontend/src/main/dialogs/CommitEdit.vue
index 862554f0e..4f679a45b 100644
--- a/packages/frontend/src/main/dialogs/CommitEdit.vue
+++ b/packages/frontend/src/main/dialogs/CommitEdit.vue
@@ -134,7 +134,7 @@ export default {
async deleteCommit() {
this.$matomo && this.$matomo.trackPageView('commit/delete')
this.$mixpanel.track('Commit Action', { type: 'action', name: 'delete' })
- let commitBranch = this.stream.commit.branchName
+ const commitBranch = this.stream.commit.branchName
try {
await this.$apollo.mutate({
mutation: gql`
diff --git a/packages/frontend/src/main/dialogs/NewStream.vue b/packages/frontend/src/main/dialogs/NewStream.vue
index f4e2e6bc4..078f291b8 100644
--- a/packages/frontend/src/main/dialogs/NewStream.vue
+++ b/packages/frontend/src/main/dialogs/NewStream.vue
@@ -181,7 +181,7 @@ export default {
methods: {
addCollab(user) {
if (user.id === localStorage.getItem('uuid')) return
- let indx = this.collabs.findIndex((u) => u.id === user.id)
+ const indx = this.collabs.findIndex((u) => u.id === user.id)
if (indx !== -1) return
user.role = 'stream:contributor'
this.collabs.push(user)
@@ -189,7 +189,7 @@ export default {
this.userSearch.items = null
},
removeCollab(user) {
- let indx = this.collabs.findIndex((u) => u.id === user.id)
+ const indx = this.collabs.findIndex((u) => u.id === user.id)
this.collabs.splice(indx, 1)
},
async createStream() {
@@ -199,7 +199,7 @@ export default {
this.$matomo && this.$matomo.trackPageView('stream/create')
this.$mixpanel.track('Stream Action', { type: 'action', name: 'create' })
try {
- let res = await this.$apollo.mutate({
+ const res = await this.$apollo.mutate({
mutation: gql`
mutation streamCreate($myStream: StreamCreateInput!) {
streamCreate(stream: $myStream)
@@ -215,7 +215,7 @@ export default {
})
if (this.collabs.length !== 0) {
- for (let user of this.collabs) {
+ for (const user of this.collabs) {
await this.$apollo.mutate({
mutation: gql`
mutation grantPermission($params: StreamGrantPermissionInput!) {
diff --git a/packages/frontend/src/main/dialogs/ServerInvites.vue b/packages/frontend/src/main/dialogs/ServerInvites.vue
index b7fa54d54..cb71adab3 100644
--- a/packages/frontend/src/main/dialogs/ServerInvites.vue
+++ b/packages/frontend/src/main/dialogs/ServerInvites.vue
@@ -69,7 +69,7 @@ export default {
return true
},
(v) => {
- let pure = DOMPurify.sanitize(v)
+ const pure = DOMPurify.sanitize(v)
if (pure !== v) return 'No crazy hacks please.'
else return true
}
diff --git a/packages/frontend/src/main/dialogs/ShareStreamDialog.vue b/packages/frontend/src/main/dialogs/ShareStreamDialog.vue
index 173050f8e..646a4afea 100644
--- a/packages/frontend/src/main/dialogs/ShareStreamDialog.vue
+++ b/packages/frontend/src/main/dialogs/ShareStreamDialog.vue
@@ -236,9 +236,9 @@ export default {
document.execCommand('copy')
},
getIframeUrl() {
- let resourceId = this.$route.params.resourceId
+ const resourceId = this.$route.params.resourceId
if (!resourceId) return null
- let base = `${window.location.origin}/embed?stream=${this.$route.params.streamId}`
+ const base = `${window.location.origin}/embed?stream=${this.$route.params.streamId}`
return `"`
@@ -246,7 +246,7 @@ export default {
async changeVisibility() {
this.swapPermsLoading = true
- let newIsPublic = !this.stream.isPublic
+ const newIsPublic = !this.stream.isPublic
try {
await this.$apollo.mutate({
mutation: gql`
diff --git a/packages/frontend/src/main/dialogs/StreamInviteDialog.vue b/packages/frontend/src/main/dialogs/StreamInviteDialog.vue
index eab441d64..550e6864d 100644
--- a/packages/frontend/src/main/dialogs/StreamInviteDialog.vue
+++ b/packages/frontend/src/main/dialogs/StreamInviteDialog.vue
@@ -88,7 +88,7 @@ export default {
return true
},
(v) => {
- let pure = DOMPurify.sanitize(v)
+ const pure = DOMPurify.sanitize(v)
if (pure !== v) return 'No crazy hacks please.'
else return true
}
diff --git a/packages/frontend/src/main/dialogs/UserDeleteDialog.vue b/packages/frontend/src/main/dialogs/UserDeleteDialog.vue
index a3580fdd4..7f3da5330 100644
--- a/packages/frontend/src/main/dialogs/UserDeleteDialog.vue
+++ b/packages/frontend/src/main/dialogs/UserDeleteDialog.vue
@@ -86,7 +86,7 @@ export default {
})
},
agree() {
- let self = this
+ const self = this
setTimeout(function () {
if (self.$refs.form.validate()) {
self.resolve({
diff --git a/packages/frontend/src/main/dialogs/UserEditDialog.vue b/packages/frontend/src/main/dialogs/UserEditDialog.vue
index ca32e79cb..775dd8fff 100644
--- a/packages/frontend/src/main/dialogs/UserEditDialog.vue
+++ b/packages/frontend/src/main/dialogs/UserEditDialog.vue
@@ -105,7 +105,7 @@ export default {
})
},
agree() {
- let self = this
+ const self = this
setTimeout(function () {
if (self.$refs.form.validate()) {
self.resolve({
diff --git a/packages/frontend/src/main/layouts/TheMain.vue b/packages/frontend/src/main/layouts/TheMain.vue
index ff9952e1c..a0ced11a9 100644
--- a/packages/frontend/src/main/layouts/TheMain.vue
+++ b/packages/frontend/src/main/layouts/TheMain.vue
@@ -131,7 +131,7 @@ export default {
// eslint-disable-next-line camelcase
this.$mixpanel.register({ server_id: this.$mixpanelServerId(), hostApp: 'web' })
- let mixpanelId = this.$mixpanelId()
+ const mixpanelId = this.$mixpanelId()
if (mixpanelId !== null) {
this.$mixpanel.identify(mixpanelId)
this.$mixpanel.people.set(
diff --git a/packages/frontend/src/main/navigation/MainNav.vue b/packages/frontend/src/main/navigation/MainNav.vue
index f6763e3c3..cd2aeb1c5 100644
--- a/packages/frontend/src/main/navigation/MainNav.vue
+++ b/packages/frontend/src/main/navigation/MainNav.vue
@@ -154,7 +154,7 @@ export default {
}
},
mounted() {
- let navContent = [
+ const navContent = [
...document.getElementsByClassName('v-navigation-drawer__content')
][0]
navContent.addEventListener('scroll', () => {
diff --git a/packages/frontend/src/main/navigation/StreamNav.vue b/packages/frontend/src/main/navigation/StreamNav.vue
index 0c270077b..6a3f1a2d2 100644
--- a/packages/frontend/src/main/navigation/StreamNav.vue
+++ b/packages/frontend/src/main/navigation/StreamNav.vue
@@ -274,11 +274,11 @@ export default {
computed: {
groupedBranches() {
if (!this.branchQuery) return
- let branches = this.branchQuery.branches.items
- let items = []
- for (let b of branches) {
+ const branches = this.branchQuery.branches.items
+ const items = []
+ for (const b of branches) {
if (b.name === 'globals') continue
- let parts = b.name.split('/')
+ const parts = b.name.split('/')
if (parts.length === 1) {
items.push({ ...b, displayName: b.name, type: 'item', children: [] })
} else {
@@ -295,7 +295,7 @@ export default {
if (this.$route.path.includes(b.name)) existing.expand = true
}
}
- let sorted = items.sort((a, b) => {
+ const sorted = items.sort((a, b) => {
const nameA = a.name.toLowerCase()
const nameB = b.name.toLowerCase()
if (nameA < nameB) return -1
diff --git a/packages/frontend/src/main/pages/TheCommits.vue b/packages/frontend/src/main/pages/TheCommits.vue
index 21da4d340..50a4d5c23 100644
--- a/packages/frontend/src/main/pages/TheCommits.vue
+++ b/packages/frontend/src/main/pages/TheCommits.vue
@@ -107,7 +107,7 @@ export default {
if (newItems.length === 0) $state.complete()
else $state.loaded()
- let allItems = [...previousResult.user.commits.items]
+ const allItems = [...previousResult.user.commits.items]
for (const commit of newItems) {
if (allItems.findIndex((c) => c.id === commit.id) === -1)
allItems.push(commit)
diff --git a/packages/frontend/src/main/pages/admin/Invites.vue b/packages/frontend/src/main/pages/admin/Invites.vue
index c0622bf3a..8b06a39c3 100644
--- a/packages/frontend/src/main/pages/admin/Invites.vue
+++ b/packages/frontend/src/main/pages/admin/Invites.vue
@@ -120,7 +120,7 @@ export default {
return true
},
(v) => {
- let pure = DOMPurify.sanitize(v)
+ const pure = DOMPurify.sanitize(v)
if (pure !== v) return 'No crazy hacks please.'
else return true
}
@@ -166,9 +166,9 @@ export default {
validateAndCreateChips() {
this.inputErrors = []
if (!this.emails || this.emails === '') return
- let splitEmails = this.emails.split(/[ ,]+/)
- for (let email of splitEmails) {
- let valid = isEmailValid(email) && this.chips.indexOf(email) === -1
+ const splitEmails = this.emails.split(/[ ,]+/)
+ for (const email of splitEmails) {
+ const valid = isEmailValid(email) && this.chips.indexOf(email) === -1
if (valid) {
this.chips.push(email)
} else {
@@ -178,7 +178,7 @@ export default {
this.emails = ''
},
createInviteMessage() {
- let message =
+ const message =
`You have been invited to a Speckle server: ${this.serverInfo.name} ` +
`by ${this.user.name}. Visit ${this.serverInfo.canonicalUrl} to register.`
return this.invitation || message
@@ -187,7 +187,7 @@ export default {
this.submitting = true
this.errors = []
this.sentToEmails = []
- for (let chip of this.chips) {
+ for (const chip of this.chips) {
if (!chip || chip.length === 0) continue
try {
await this.sendInvite(
@@ -209,12 +209,12 @@ export default {
}
},
async sendInvite(email, message, streamId) {
- let input = {
- email: email,
- message: message
+ const input = {
+ email,
+ message
}
- let query = gql`
+ const query = gql`
mutation($input: ${
streamId ? 'StreamInviteCreateInput!' : 'ServerInviteCreateInput!'
}) {
@@ -228,7 +228,7 @@ export default {
await this.$apollo.mutate({
mutation: query,
variables: {
- input: input
+ input
}
})
diff --git a/packages/frontend/src/main/pages/admin/Streams.vue b/packages/frontend/src/main/pages/admin/Streams.vue
index f55297026..37837116e 100644
--- a/packages/frontend/src/main/pages/admin/Streams.vue
+++ b/packages/frontend/src/main/pages/admin/Streams.vue
@@ -162,12 +162,12 @@ export default {
},
orderColumn: {
get() {
- let [column] = this.orderBy.split(',')
+ const [column] = this.orderBy.split(',')
return column
},
set(column) {
- let direction = this.orderBy.split(',').pop()
- let orderBy = `${column},${direction}`
+ const direction = this.orderBy.split(',').pop()
+ const orderBy = `${column},${direction}`
this.navigateNext({ orderBy })
}
},
@@ -176,8 +176,8 @@ export default {
return this.orderBy.split(',').pop()
},
set(direction) {
- let [column] = this.orderBy.split(',')
- let orderBy = `${column},${direction}`
+ const [column] = this.orderBy.split(',')
+ const orderBy = `${column},${direction}`
this.navigateNext({ orderBy })
}
},
@@ -196,7 +196,7 @@ export default {
this.manipulatedStream = stream
},
async deleteStreams() {
- let ids = [this.manipulatedStream.id]
+ const ids = [this.manipulatedStream.id]
await this.$apollo.mutate({
mutation: gql`
mutation ($ids: [String!]) {
@@ -204,7 +204,7 @@ export default {
}
`,
variables: {
- ids: ids
+ ids
},
update: () => {
this.$apollo.queries.adminStreams.refetch()
@@ -223,9 +223,9 @@ export default {
},
_prepareRoute(routeParams) {
let newRoute = 'streams'
- let newParams = { ...this.$props }
+ const newParams = { ...this.$props }
- for (let key in routeParams) {
+ for (const key in routeParams) {
newParams[key] = routeParams[key]
}
diff --git a/packages/frontend/src/main/pages/admin/Users.vue b/packages/frontend/src/main/pages/admin/Users.vue
index 980e32185..bc5ff02e1 100644
--- a/packages/frontend/src/main/pages/admin/Users.vue
+++ b/packages/frontend/src/main/pages/admin/Users.vue
@@ -159,8 +159,8 @@ export default {
return Math.ceil(this.users.totalCount / this.limit)
},
availableRoles() {
- let roleItems = []
- for (let role in this.roleLookupTable) {
+ const roleItems = []
+ for (const role in this.roleLookupTable) {
roleItems.push({ text: this.roleLookupTable[role], value: role })
}
return roleItems
diff --git a/packages/frontend/src/main/pages/auth/ResetPasswordFinalization.vue b/packages/frontend/src/main/pages/auth/ResetPasswordFinalization.vue
index 7a17b1e26..4b98ba4c6 100644
--- a/packages/frontend/src/main/pages/auth/ResetPasswordFinalization.vue
+++ b/packages/frontend/src/main/pages/auth/ResetPasswordFinalization.vue
@@ -148,7 +148,7 @@ export default {
},
methods: {
debouncedPwdTest: debounce(async function () {
- let result = await this.$apollo.query({
+ const result = await this.$apollo.query({
query: gql` query{ userPwdStrength(pwd:"${this.form.password}")}`
})
this.passwordStrength = result.data.userPwdStrength.score * 25
@@ -159,13 +159,13 @@ export default {
this.success = false
this.errors = false
this.errorMessage = null
- let valid = this.$refs.form.validate()
+ const valid = this.$refs.form.validate()
if (!valid) return
if (this.form.password !== this.form.passwordConf)
throw new Error('Passwords do not match')
if (this.passwordStrength < 3) throw new Error('Password too weak.')
- let res = await fetch(`/auth/pwdreset/finalize`, {
+ const res = await fetch(`/auth/pwdreset/finalize`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ tokenId: this.tokenId, password: this.form.password })
diff --git a/packages/frontend/src/main/pages/auth/ResetPasswordRequest.vue b/packages/frontend/src/main/pages/auth/ResetPasswordRequest.vue
index 9e38e3bd9..9cdfc1c22 100644
--- a/packages/frontend/src/main/pages/auth/ResetPasswordRequest.vue
+++ b/packages/frontend/src/main/pages/auth/ResetPasswordRequest.vue
@@ -101,9 +101,9 @@ export default {
this.success = false
this.errors = false
this.errorMessage = null
- let valid = this.$refs.form.validate()
+ const valid = this.$refs.form.validate()
if (!valid) return
- let res = await fetch(`/auth/pwdreset/request`, {
+ const res = await fetch(`/auth/pwdreset/request`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email: this.form.email })
diff --git a/packages/frontend/src/main/pages/auth/TheLogin.vue b/packages/frontend/src/main/pages/auth/TheLogin.vue
index baf535bf1..e3a45f26d 100644
--- a/packages/frontend/src/main/pages/auth/TheLogin.vue
+++ b/packages/frontend/src/main/pages/auth/TheLogin.vue
@@ -173,12 +173,12 @@ export default {
}
},
mounted() {
- let urlParams = new URLSearchParams(window.location.search)
- let appId = urlParams.get('appId')
- let challenge = urlParams.get('challenge')
- let suuid = urlParams.get('suuid')
+ const urlParams = new URLSearchParams(window.location.search)
+ const appId = urlParams.get('appId')
+ const challenge = urlParams.get('challenge')
+ const suuid = urlParams.get('suuid')
this.suuid = suuid
- let inviteId = urlParams.get('inviteId')
+ const inviteId = urlParams.get('inviteId')
this.inviteId = inviteId
this.$mixpanel.track('Visit Log In')
@@ -196,17 +196,17 @@ export default {
methods: {
async loginUser() {
try {
- let valid = this.$refs.form.validate()
+ const valid = this.$refs.form.validate()
if (!valid) return
- let user = {
+ const user = {
email: this.form.email,
password: this.form.password
}
if (this.suuid) user.suuid = this.suuid
- let res = await fetch(`/auth/local/login?challenge=${this.challenge}`, {
+ const res = await fetch(`/auth/local/login?challenge=${this.challenge}`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
@@ -221,7 +221,7 @@ export default {
return
}
- let data = await res.json()
+ const data = await res.json()
if (data.err) throw new Error(data.message)
} catch (err) {
this.errorMessage = err.message
diff --git a/packages/frontend/src/main/pages/auth/TheRegistration.vue b/packages/frontend/src/main/pages/auth/TheRegistration.vue
index bab2f5454..e1019d314 100644
--- a/packages/frontend/src/main/pages/auth/TheRegistration.vue
+++ b/packages/frontend/src/main/pages/auth/TheRegistration.vue
@@ -270,12 +270,12 @@ export default {
}
},
mounted() {
- let urlParams = new URLSearchParams(window.location.search)
- let appId = urlParams.get('appId')
- let challenge = urlParams.get('challenge')
- let suuid = urlParams.get('suuid')
+ const urlParams = new URLSearchParams(window.location.search)
+ const appId = urlParams.get('appId')
+ const challenge = urlParams.get('challenge')
+ const suuid = urlParams.get('suuid')
this.suuid = suuid
- let inviteId = urlParams.get('inviteId')
+ const inviteId = urlParams.get('inviteId')
this.inviteId = inviteId
this.$mixpanel.track('Visit Sign Up')
@@ -292,7 +292,7 @@ export default {
},
methods: {
debouncedPwdTest: debounce(async function () {
- let result = await this.$apollo.query({
+ const result = await this.$apollo.query({
query: gql` query{ userPwdStrength(pwd:"${this.form.password}")}`
})
this.passwordStrength = result.data.userPwdStrength.score * 25
@@ -300,13 +300,13 @@ export default {
}, 1000),
async registerUser() {
try {
- let valid = this.$refs.form.validate()
+ const valid = this.$refs.form.validate()
if (!valid) return
if (this.form.password !== this.form.passwordConf)
throw new Error('Passwords do not match')
if (this.passwordStrength < 3) throw new Error('Password too weak')
- let user = {
+ const user = {
email: this.form.email,
company: this.form.company,
password: this.form.password,
@@ -315,7 +315,7 @@ export default {
if (this.suuid) user.suuid = this.suuid
- let res = await fetch(
+ const res = await fetch(
`/auth/local/register?challenge=${this.challenge}${
this.inviteId ? '&inviteId=' + this.inviteId : ''
}`,
@@ -338,7 +338,7 @@ export default {
return
}
- let data = await res.json()
+ const data = await res.json()
if (data.err) throw new Error(data.err)
} catch (err) {
this.errorMessage = err.message
diff --git a/packages/frontend/src/main/pages/stream/CommitObjectViewer.vue b/packages/frontend/src/main/pages/stream/CommitObjectViewer.vue
index 5c6a07dec..7a80ffae0 100644
--- a/packages/frontend/src/main/pages/stream/CommitObjectViewer.vue
+++ b/packages/frontend/src/main/pages/stream/CommitObjectViewer.vue
@@ -293,7 +293,7 @@ export default {
},
'$store.state.appliedFilter'(val) {
if (!val) {
- let fullQuery = { ...this.$route.query }
+ const fullQuery = { ...this.$route.query }
delete fullQuery.filter
this.$router.replace({
path: this.$route.path,
@@ -301,7 +301,7 @@ export default {
})
return
}
- let fullQuery = { ...this.$route.query }
+ const fullQuery = { ...this.$route.query }
delete fullQuery.filter
this.$router
.replace({
@@ -323,7 +323,7 @@ export default {
})
if (this.$route.query.overlay) {
- let ids = this.$route.query.overlay.split(',')
+ const ids = this.$route.query.overlay.split(',')
for (const id of ids) {
const cleanedId = id.replace(/\s+/g, '')
if (!cleanedId || cleanedId === '') continue
@@ -414,10 +414,10 @@ export default {
}
if (this.camToSet) return
- let controls = window.__viewer.cameraHandler.activeCam.controls
- let pos = controls.getPosition()
- let target = controls.getTarget()
- let c = [
+ const controls = window.__viewer.cameraHandler.activeCam.controls
+ const pos = controls.getPosition()
+ const target = controls.getTarget()
+ const c = [
parseFloat(pos.x.toFixed(5)),
parseFloat(pos.y.toFixed(5)),
parseFloat(pos.z.toFixed(5)),
@@ -427,7 +427,7 @@ export default {
window.__viewer.cameraHandler.activeCam.name === 'ortho' ? 1 : 0,
controls._zoom
]
- let fullQuery = { ...this.$route.query }
+ const fullQuery = { ...this.$route.query }
delete fullQuery.c
this.$router
.replace({
@@ -442,9 +442,9 @@ export default {
methods: {
async loadCommit(id) {
try {
- let res = await this.$apollo.query({
+ const res = await this.$apollo.query({
query: streamCommitQuery,
- variables: { streamId: this.$route.params.streamId, id: id }
+ variables: { streamId: this.$route.params.streamId, id }
})
if (res.data.stream.commit === null) throw new Error()
return res.data.stream
@@ -455,9 +455,9 @@ export default {
},
async loadObject(id) {
try {
- let res = await this.$apollo.query({
+ const res = await this.$apollo.query({
query: streamObjectQuery,
- variables: { streamId: this.$route.params.streamId, id: id }
+ variables: { streamId: this.$route.params.streamId, id }
})
if (res.data.stream.object === null) throw new Error()
return res.data.stream
@@ -481,14 +481,14 @@ export default {
this.setViews()
},
async addResources(ids) {
- for (let id of ids) {
+ for (const id of ids) {
await this.addResource(id)
}
},
async addResource(resId) {
this.showAddOverlay = false
const resType = resourceType(resId)
- let existing = this.resources.findIndex((res) => res.id === resId)
+ const existing = this.resources.findIndex((res) => res.id === resId)
if (existing !== -1) {
this.$eventHub.$emit('notification', {
@@ -498,7 +498,7 @@ export default {
})
return
}
- let resource = {
+ const resource = {
type: resType,
id: resId,
data:
@@ -513,10 +513,10 @@ export default {
resourceType: resource.type
})
// TODO add to url
- let fullQuery = { ...this.$route.query }
+ const fullQuery = { ...this.$route.query }
delete fullQuery.overlay
if (this.$route.query.overlay) {
- let arr = this.$route.query.overlay
+ const arr = this.$route.query.overlay
.split(',')
.map((id) => id.replace(/\s+/g, ''))
.filter((id) => id && id !== '' && id !== resource.id)
@@ -539,12 +539,12 @@ export default {
)
},
async removeResource(resource) {
- let index = this.resources.findIndex((res) => resource.id === res.id)
+ const index = this.resources.findIndex((res) => resource.id === res.id)
if (index === -1) return // err
if (!resource.data.error) {
- let url = `${window.location.origin}/streams/${resource.data.id}/objects/${
+ const url = `${window.location.origin}/streams/${resource.data.id}/objects/${
resource.type === 'commit'
? resource.data.commit.referencedObject
: resource.data.object.id
@@ -563,12 +563,12 @@ export default {
this.setFilters()
this.setViews()
if (this.$route.query.overlay) {
- let arr = this.$route.query.overlay
+ const arr = this.$route.query.overlay
.split(',')
.map((id) => id.replace(/\s+/g, ''))
.filter((id) => id && id !== '' && id !== resource.id)
- let fullQuery = { ...this.$route.query }
+ const fullQuery = { ...this.$route.query }
delete fullQuery.overlay
if (arr.length !== 0)
this.$router.replace({
diff --git a/packages/frontend/src/main/pages/stream/TheActivity.vue b/packages/frontend/src/main/pages/stream/TheActivity.vue
index e36d690b5..9920f8114 100644
--- a/packages/frontend/src/main/pages/stream/TheActivity.vue
+++ b/packages/frontend/src/main/pages/stream/TheActivity.vue
@@ -92,13 +92,13 @@ export default {
},
methods: {
groupSimilarActivities(data) {
- let groupedActivity = data.stream.activity.items.reduce(function (prev, curr) {
+ const groupedActivity = data.stream.activity.items.reduce(function (prev, curr) {
//first item
if (!prev.length) {
prev.push([curr])
return prev
}
- let test = prev[prev.length - 1][0]
+ const test = prev[prev.length - 1][0]
let action = 'split' // split | combine | skip
if (curr.actionType === test.actionType && curr.streamId === test.streamId) {
if (curr.actionType.includes('stream_permissions')) {
diff --git a/packages/frontend/src/main/pages/stream/TheBranch.vue b/packages/frontend/src/main/pages/stream/TheBranch.vue
index e4f99128c..cf11d2d5d 100644
--- a/packages/frontend/src/main/pages/stream/TheBranch.vue
+++ b/packages/frontend/src/main/pages/stream/TheBranch.vue
@@ -224,7 +224,7 @@ export default {
if (newItems.length === 0) $state.complete()
else $state.loaded()
- let allItems = [...previousResult.stream.branch.commits.items]
+ const allItems = [...previousResult.stream.branch.commits.items]
for (const commit of newItems) {
if (allItems.findIndex((c) => c.id === commit.id) === -1)
allItems.push(commit)
diff --git a/packages/frontend/src/main/pages/stream/TheCollaborators.vue b/packages/frontend/src/main/pages/stream/TheCollaborators.vue
index 2dd058107..f14716b12 100644
--- a/packages/frontend/src/main/pages/stream/TheCollaborators.vue
+++ b/packages/frontend/src/main/pages/stream/TheCollaborators.vue
@@ -308,10 +308,10 @@ export default {
},
filteredSearchResults() {
if (!this.userSearch) return null
- let users = []
- for (let u of this.userSearch.items) {
+ const users = []
+ for (const u of this.userSearch.items) {
if (u.id === this.myId) continue
- let indx = this.collaborators.findIndex((eu) => eu.id === u.id)
+ const indx = this.collaborators.findIndex((eu) => eu.id === u.id)
if (indx === -1) users.push(u)
}
return users
@@ -344,7 +344,7 @@ export default {
}
}
})
- let index = this.stream.collaborators.findIndex((u) => u.id === user.id)
+ const index = this.stream.collaborators.findIndex((u) => u.id === user.id)
if (index !== -1) {
this.stream.collaborators.splice(index, 1)
}
diff --git a/packages/frontend/src/main/pages/stream/TheComments.vue b/packages/frontend/src/main/pages/stream/TheComments.vue
index ae0285c16..0709e6d71 100644
--- a/packages/frontend/src/main/pages/stream/TheComments.vue
+++ b/packages/frontend/src/main/pages/stream/TheComments.vue
@@ -147,7 +147,7 @@ export default {
result({ data }) {
if (!data) return
this.cursor = data.comments.cursor
- for (let c of data.comments.items) {
+ for (const c of data.comments.items) {
if (this.localComments.findIndex((lc) => c.id === lc.id) === -1)
this.localComments.push({ ...c })
}
@@ -157,11 +157,11 @@ export default {
methods: {
handleDeletion(comment) {
this.$store.commit('setCommentSelection', { comment: null })
- let indx = this.localComments.findIndex((lc) => lc.id === comment.id)
+ const indx = this.localComments.findIndex((lc) => lc.id === comment.id)
this.localComments.splice(indx, 1)
},
async infiniteHandler($state) {
- let res = await this.$apollo.queries.comments.refetch({
+ const res = await this.$apollo.queries.comments.refetch({
cursor: this.cursor ? this.cursor : null,
streamId: this.$route.params.streamId,
archived: this.showArchivedComments,
diff --git a/packages/frontend/src/main/pages/stream/TheSettings.vue b/packages/frontend/src/main/pages/stream/TheSettings.vue
index c7e39b3d3..534b6dc99 100644
--- a/packages/frontend/src/main/pages/stream/TheSettings.vue
+++ b/packages/frontend/src/main/pages/stream/TheSettings.vue
@@ -180,7 +180,7 @@ export default {
},
update(data) {
- let stream = data.stream
+ const stream = data.stream
if (stream)
({
name: this.name,
diff --git a/packages/frontend/src/main/pages/stream/TheStreamHome.vue b/packages/frontend/src/main/pages/stream/TheStreamHome.vue
index 7a26b5519..df88fe4e6 100644
--- a/packages/frontend/src/main/pages/stream/TheStreamHome.vue
+++ b/packages/frontend/src/main/pages/stream/TheStreamHome.vue
@@ -160,7 +160,7 @@ export default {
computed: {
latestBranches() {
if (!this.stream) return []
- let branches = this.stream.branches.items
+ const branches = this.stream.branches.items
.filter((br) => br.name !== 'globals' && br.commits.totalCount !== 0)
.slice()
.sort(
diff --git a/packages/frontend/src/main/pages/stream/TheUploads.vue b/packages/frontend/src/main/pages/stream/TheUploads.vue
index 62846c33c..2f4186022 100644
--- a/packages/frontend/src/main/pages/stream/TheUploads.vue
+++ b/packages/frontend/src/main/pages/stream/TheUploads.vue
@@ -201,7 +201,7 @@ export default {
this.dragover = false
this.dragError = null
for (const file of files) {
- let extension = file.name.split('.')[1]
+ const extension = file.name.split('.')[1]
if (!extension || extension !== 'ifc') {
this.dragError = 'Only IFC file extensions are supported.'
return
diff --git a/packages/frontend/src/main/pages/stream/TheWebhooks.vue b/packages/frontend/src/main/pages/stream/TheWebhooks.vue
index 9301c7f51..b15e17a47 100644
--- a/packages/frontend/src/main/pages/stream/TheWebhooks.vue
+++ b/packages/frontend/src/main/pages/stream/TheWebhooks.vue
@@ -331,7 +331,7 @@ export default {
},
getStatusInfo(webhook) {
if (!webhook.history.items.length) return 'No events yet'
- let msg = webhook.history.items[0].statusInfo
+ const msg = webhook.history.items[0].statusInfo
return msg
},
diff --git a/packages/frontend/src/main/router/index.js b/packages/frontend/src/main/router/index.js
index 0852870d9..6690c64aa 100644
--- a/packages/frontend/src/main/router/index.js
+++ b/packages/frontend/src/main/router/index.js
@@ -314,8 +314,8 @@ const router = new VueRouter({
})
router.beforeEach((to, from, next) => {
- let uuid = localStorage.getItem('uuid')
- let redirect = localStorage.getItem('shouldRedirectTo')
+ const uuid = localStorage.getItem('uuid')
+ const redirect = localStorage.getItem('shouldRedirectTo')
router.app.$eventHub.$emit('page-load', true)
if (
diff --git a/packages/frontend/src/main/store/index.js b/packages/frontend/src/main/store/index.js
index 27c1850ae..c52a170c7 100644
--- a/packages/frontend/src/main/store/index.js
+++ b/packages/frontend/src/main/store/index.js
@@ -109,7 +109,7 @@ const store = new Vuex.Store({
if (filterKey !== state.isolateCategoryKey) state.isolateCategoryValues = []
state.isolateCategoryKey = filterKey
- let indx = state.isolateCategoryValues.indexOf(filterValue)
+ const indx = state.isolateCategoryValues.indexOf(filterValue)
if (indx === -1) state.isolateCategoryValues.push(filterValue)
else state.isolateCategoryValues.splice(indx, 1)
@@ -137,7 +137,7 @@ const store = new Vuex.Store({
}
if (state.isolateCategoryValues.length === allValues.length)
delete state.appliedFilter.filterBy
- let res = await window.__viewer.applyFilter(state.appliedFilter)
+ const res = await window.__viewer.applyFilter(state.appliedFilter)
state.colorLegend = res.colorLegend
},
async hideCategoryToggle(state, { filterKey, filterValue, colorBy = false }) {
@@ -147,7 +147,7 @@ const store = new Vuex.Store({
if (filterKey !== state.hideCategoryKey) state.hideCategoryValues = []
state.hideCategoryKey = filterKey
- let indx = state.hideCategoryValues.indexOf(filterValue)
+ const indx = state.hideCategoryValues.indexOf(filterValue)
if (indx === -1) state.hideCategoryValues.push(filterValue)
else state.hideCategoryValues.splice(indx, 1)
@@ -168,7 +168,7 @@ const store = new Vuex.Store({
colorBy: colorBy ? { type: 'category', property: filterKey } : null
}
}
- let res = await window.__viewer.applyFilter(state.appliedFilter)
+ const res = await window.__viewer.applyFilter(state.appliedFilter)
state.colorLegend = res.colorLegend
},
async toggleColorByCategory(state, { filterKey }) {
@@ -179,7 +179,7 @@ const store = new Vuex.Store({
...state.appliedFilter,
colorBy: { type: 'category', property: filterKey }
}
- let res = await window.__viewer.applyFilter(state.appliedFilter)
+ const res = await window.__viewer.applyFilter(state.appliedFilter)
state.colorLegend = res.colorLegend
},
setNumericFilter(
@@ -202,7 +202,7 @@ const store = new Vuex.Store({
window.__viewer.applyFilter(state.appliedFilter)
},
async setFilterDirect(state, { filter }) {
- let filterBy = filter.filterBy
+ const filterBy = filter.filterBy
if (filterBy && filterBy.__parents) {
if (filterBy.__parents.includes) {
this.commit('isolateObjects', {
@@ -227,9 +227,9 @@ const store = new Vuex.Store({
maxValue: filter.filterBy[Object.keys(filter.filterBy)[0]].lte
})
} else {
- let values = filterBy[Object.keys(filter.filterBy)[0]]
+ const values = filterBy[Object.keys(filter.filterBy)[0]]
for (const val of values) {
- let f = {
+ const f = {
filterKey: Object.keys(filter.filterBy)[0],
filterValue: val,
allValues: [],
@@ -239,9 +239,9 @@ const store = new Vuex.Store({
}
}
} else {
- let values = filterBy[Object.keys(filter.filterBy)[0]].not
+ const values = filterBy[Object.keys(filter.filterBy)[0]].not
for (const val of values) {
- let f = {
+ const f = {
filterKey: Object.keys(filter.filterBy)[0],
filterValue: val,
allValues: [],
diff --git a/packages/frontend/src/main/toolbars/ObjectToolbar.vue b/packages/frontend/src/main/toolbars/ObjectToolbar.vue
index 9cfec5213..7c82b9285 100644
--- a/packages/frontend/src/main/toolbars/ObjectToolbar.vue
+++ b/packages/frontend/src/main/toolbars/ObjectToolbar.vue
@@ -56,8 +56,8 @@ export default {
computed: {
commitDate() {
if (!this.stream.commit) return null
- let date = new Date(this.stream.commit.createdAt)
- let options = { year: 'numeric', month: 'long', day: 'numeric' }
+ const date = new Date(this.stream.commit.createdAt)
+ const options = { year: 'numeric', month: 'long', day: 'numeric' }
return date.toLocaleString(undefined, options)
}
diff --git a/packages/frontend/src/plugins/authHelpers.js b/packages/frontend/src/plugins/authHelpers.js
index ea404435a..11ada9ad1 100644
--- a/packages/frontend/src/plugins/authHelpers.js
+++ b/packages/frontend/src/plugins/authHelpers.js
@@ -12,7 +12,7 @@ const appSecret = 'spklwebapp'
export async function checkAccessCodeAndGetTokens() {
const accessCode = new URLSearchParams(window.location.search).get('access_code')
if (accessCode) {
- let response = await getTokenFromAccessCode(accessCode)
+ const response = await getTokenFromAccessCode(accessCode)
// eslint-disable-next-line no-prototype-builtins
if (response.hasOwnProperty('token')) {
localStorage.setItem(LocalStorageKeys.AuthToken, response.token)
@@ -31,7 +31,7 @@ export async function checkAccessCodeAndGetTokens() {
* @return {Object} The full graphql response.
*/
export async function prefetchUserAndSetSuuid(apolloClient) {
- let token = localStorage.getItem(LocalStorageKeys.AuthToken)
+ const token = localStorage.getItem(LocalStorageKeys.AuthToken)
if (!token) return
// Pull user info (& remember it in the Apollo cache)
@@ -41,7 +41,7 @@ export async function prefetchUserAndSetSuuid(apolloClient) {
if (data.user) {
// eslint-disable-next-line camelcase
- let distinct_id =
+ const distinct_id =
'@' +
crypto
.createHash('md5')
@@ -61,20 +61,20 @@ export async function prefetchUserAndSetSuuid(apolloClient) {
}
export async function getTokenFromAccessCode(accessCode) {
- let response = await fetch('/auth/token', {
+ const response = await fetch('/auth/token', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
- accessCode: accessCode,
- appId: appId,
- appSecret: appSecret,
+ accessCode,
+ appId,
+ appSecret,
challenge: localStorage.getItem('appChallenge')
})
})
- let data = await response.json()
+ const data = await response.json()
return data
}
@@ -111,22 +111,22 @@ export async function signOut(mixpanelInstance) {
}
export async function refreshToken() {
- let refreshToken = localStorage.getItem(LocalStorageKeys.RefreshToken)
+ const refreshToken = localStorage.getItem(LocalStorageKeys.RefreshToken)
if (!refreshToken) throw new Error('No refresh token found')
- let refreshResponse = await fetch('/auth/token', {
+ const refreshResponse = await fetch('/auth/token', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
- refreshToken: refreshToken,
- appId: appId,
- appSecret: appSecret
+ refreshToken,
+ appId,
+ appSecret
})
})
- let data = await refreshResponse.json()
+ const data = await refreshResponse.json()
// eslint-disable-next-line no-prototype-builtins
if (data.hasOwnProperty('token')) {
diff --git a/packages/frontend/src/plugins/helpers.js b/packages/frontend/src/plugins/helpers.js
index 5588ea00f..1349dfaef 100644
--- a/packages/frontend/src/plugins/helpers.js
+++ b/packages/frontend/src/plugins/helpers.js
@@ -30,7 +30,7 @@ Vue.prototype.$resourceType = function (resourceId) {
}
Vue.prototype.$loginAndSetRedirect = function () {
- let currUrl = window.location.href
+ const currUrl = window.location.href
localStorage.setItem('shouldRedirectTo', currUrl.replace(window.location.origin, ''))
this.$router.push('/authn/login')
}
diff --git a/packages/frontend/src/plugins/vuetify.js b/packages/frontend/src/plugins/vuetify.js
index 4592a4dfd..64d1ddfdf 100644
--- a/packages/frontend/src/plugins/vuetify.js
+++ b/packages/frontend/src/plugins/vuetify.js
@@ -4,8 +4,8 @@ import Vuetify from 'vuetify/lib'
Vue.use(Vuetify)
-let darkMediaQuery = window.matchMedia('(prefers-color-scheme: dark)').matches
-let hasDarkMode = localStorage.getItem('darkModeEnabled')
+const darkMediaQuery = window.matchMedia('(prefers-color-scheme: dark)').matches
+const hasDarkMode = localStorage.getItem('darkModeEnabled')
if (!hasDarkMode && darkMediaQuery) {
// console.log('setting dark mode')
localStorage.setItem('darkModeEnabled', 'dark')
diff --git a/packages/objectloader/examples/browser/script.js b/packages/objectloader/examples/browser/script.js
index c1b113d1a..0a5b3dfcc 100644
--- a/packages/objectloader/examples/browser/script.js
+++ b/packages/objectloader/examples/browser/script.js
@@ -15,14 +15,14 @@ window.ObjectLoader = ObjectLoader
// })
// https://latest.speckle.dev/streams/3ed8357f29/objects/0408ab9caaa2ebefb2dd7f1f671e7555
-let loader = new ObjectLoader({
+const loader = new ObjectLoader({
serverUrl: 'https://latest.speckle.dev',
streamId: '3ed8357f29',
objectId: '0408ab9caaa2ebefb2dd7f1f671e7555'
})
window.loadData = async function loadData() {
- let obj = await loader.getAndConstructObject((e) => {
+ const obj = await loader.getAndConstructObject((e) => {
console.log(e) // log progress!
})
diff --git a/packages/objectloader/examples/node/script.js b/packages/objectloader/examples/node/script.js
index 33b2e9f63..7623627d2 100644
--- a/packages/objectloader/examples/node/script.js
+++ b/packages/objectloader/examples/node/script.js
@@ -3,15 +3,15 @@
import { fetch } from 'undici'
import ObjectLoader from '../../index.js'
-let loader = new ObjectLoader({
+const loader = new ObjectLoader({
serverUrl: 'https://latest.speckle.dev',
streamId: '3ed8357f29',
objectId: '0408ab9caaa2ebefb2dd7f1f671e7555',
options: { enableCaching: false, excludeProps: [], fetch }
})
-let loadData = async function loadData() {
- let obj = await loader.getAndConstructObject((e) => {
+const loadData = async function loadData() {
+ const obj = await loader.getAndConstructObject((e) => {
console.log(e) // log progress!
})
diff --git a/packages/objectloader/index.js b/packages/objectloader/index.js
index e6a238cd5..c676b5ff9 100644
--- a/packages/objectloader/index.js
+++ b/packages/objectloader/index.js
@@ -61,7 +61,7 @@ export default class ObjectLoader {
// https://stackoverflow.com/questions/69337187/uncaught-in-promise-typeerror-failed-to-execute-fetch-on-workerglobalscope#comment124731316_69337187
this.preferredFetch = options.fetch
this.fetch = function (...args) {
- let currentFetch = this.preferredFetch || fetch
+ const currentFetch = this.preferredFetch || fetch
return currentFetch(...args)
}
}
@@ -94,7 +94,7 @@ export default class ObjectLoader {
async getAndConstructObject(onProgress) {
await this.downloadObjectsInBuffer(onProgress) // Fire and forget; PS: semicolon of doom
- let rootObject = await this.getObject(this.objectId)
+ const rootObject = await this.getObject(this.objectId)
return this.traverseAndConstruct(rootObject, onProgress)
}
@@ -106,7 +106,7 @@ export default class ObjectLoader {
let first = true
let downloadNum = 0
- for await (let obj of this.getObjectIterator()) {
+ for await (const obj of this.getObjectIterator()) {
if (first) {
this.totalChildrenCount = obj.totalChildrenCount
first = false
@@ -135,12 +135,12 @@ export default class ObjectLoader {
// Handle arrays
if (Array.isArray(obj) && obj.length !== 0) {
- let arr = []
- for (let element of obj) {
+ const arr = []
+ for (const element of obj) {
if (typeof element !== 'object' && !this.options.fullyTraverseArrays) return obj
// Dereference element if needed
- let deRef = element.referencedId
+ const deRef = element.referencedId
? await this.getObject(element.referencedId)
: element
if (element.referencedId && onProgress)
@@ -167,12 +167,12 @@ export default class ObjectLoader {
// Handle objects
// 1) Purge ignored props
- for (let ignoredProp of this.options.excludeProps) {
+ for (const ignoredProp of this.options.excludeProps) {
delete obj[ignoredProp]
}
// 2) Iterate through obj
- for (let prop in obj) {
+ for (const prop in obj) {
if (typeof obj[prop] !== 'object' || obj[prop] === null) continue // leave alone primitive props
if (obj[prop].referencedId) {
@@ -202,13 +202,13 @@ export default class ObjectLoader {
async getObject(id) {
if (this.buffer[id]) return this.buffer[id]
- let promise = new Promise((resolve, reject) => {
+ const promise = new Promise((resolve, reject) => {
this.promises.push({ id, resolve, reject })
// Only create a new interval checker if none is already present!
if (this.intervals[id]) {
this.intervals[id].elapsed = 0 // reset elapsed
} else {
- let intervalId = setInterval(
+ const intervalId = setInterval(
this.tryResolvePromise.bind(this),
this.INTERVAL_MS,
id
@@ -222,7 +222,7 @@ export default class ObjectLoader {
tryResolvePromise(id) {
this.intervals[id].elapsed += this.INTERVAL_MS
if (this.buffer[id]) {
- for (let p of this.promises.filter((p) => p.id === id)) {
+ for (const p of this.promises.filter((p) => p.id === id)) {
p.resolve(this.buffer[id])
}
@@ -241,10 +241,10 @@ export default class ObjectLoader {
}
async *getObjectIterator() {
- let t0 = Date.now()
+ const t0 = Date.now()
let count = 0
- for await (let line of this.getRawObjectIterator()) {
- let { id, obj } = this.processLine(line)
+ for await (const line of this.getRawObjectIterator()) {
+ const { id, obj } = this.processLine(line)
this.buffer[id] = obj
count += 1
yield obj
@@ -253,14 +253,14 @@ export default class ObjectLoader {
}
processLine(chunk) {
- let pieces = chunk.split('\t')
+ const pieces = chunk.split('\t')
return { id: pieces[0], obj: JSON.parse(pieces[1]) }
}
async *getRawObjectIterator() {
if (this.options.enableCaching && window.indexedDB && this.cacheDB === null) {
await safariFix()
- let idbOpenRequest = indexedDB.open('speckle-object-cache', 1)
+ const idbOpenRequest = indexedDB.open('speckle-object-cache', 1)
idbOpenRequest.onupgradeneeded = () =>
idbOpenRequest.result.createObjectStore('objects')
this.cacheDB = await this.promisifyIdbRequest(idbOpenRequest)
@@ -283,7 +283,7 @@ export default class ObjectLoader {
if (childrenIds.length > 50) {
// split into 5%, 15%, 40%, 40% (5% for the high priority children: the ones with lower minDepth)
- let splitBeforeCacheCheck = [[], [], [], []]
+ const splitBeforeCacheCheck = [[], [], [], []]
let crtChildIndex = 0
for (; crtChildIndex < 0.05 * childrenIds.length; crtChildIndex++) {
@@ -301,20 +301,20 @@ export default class ObjectLoader {
console.log('Cache check for: ', splitBeforeCacheCheck)
- let newChildren = []
+ const newChildren = []
let nextCachePromise = this.cacheGetObjects(splitBeforeCacheCheck[0])
for (let i = 0; i < 4; i++) {
- let cachedObjects = await nextCachePromise
+ const cachedObjects = await nextCachePromise
if (i < 3) nextCachePromise = this.cacheGetObjects(splitBeforeCacheCheck[i + 1])
- let sortedCachedKeys = Object.keys(cachedObjects).sort(
+ const sortedCachedKeys = Object.keys(cachedObjects).sort(
(a, b) => rootObj.__closure[a] - rootObj.__closure[b]
)
- for (let id of sortedCachedKeys) {
+ for (const id of sortedCachedKeys) {
yield `${id}\t${cachedObjects[id]}`
}
- let newChildrenForBatch = splitBeforeCacheCheck[i].filter(
+ const newChildrenForBatch = splitBeforeCacheCheck[i].filter(
(id) => !(id in cachedObjects)
)
newChildren.push(...newChildrenForBatch)
@@ -346,10 +346,10 @@ export default class ObjectLoader {
} else {
// small object with <= 50 children. check cache and make only 1 request
const cachedObjects = await this.cacheGetObjects(childrenIds)
- let sortedCachedKeys = Object.keys(cachedObjects).sort(
+ const sortedCachedKeys = Object.keys(cachedObjects).sort(
(a, b) => rootObj.__closure[a] - rootObj.__closure[b]
)
- for (let id of sortedCachedKeys) {
+ for (const id of sortedCachedKeys) {
yield `${id}\t${cachedObjects[id]}`
}
childrenIds = childrenIds.filter((id) => !(id in cachedObjects))
@@ -381,9 +381,9 @@ export default class ObjectLoader {
headers: { ...this.headers, 'Content-Type': 'application/json' },
body: JSON.stringify({ objects: JSON.stringify(splitHttpRequests[i]) })
}).then((crtResponse) => {
- let crtReader = crtResponse.body.getReader()
+ const crtReader = crtResponse.body.getReader()
readers[i] = crtReader
- let crtReadPromise = crtReader.read().then((x) => {
+ const crtReadPromise = crtReader.read().then((x) => {
x.reqId = i
return x
})
@@ -392,7 +392,7 @@ export default class ObjectLoader {
}
while (true) {
- let validReadPromises = readPromises.filter((x) => !!x)
+ const validReadPromises = readPromises.filter((x) => !!x)
if (validReadPromises.length === 0) {
// Check if all requests finished
if (finishedRequests.every((x) => x)) {
@@ -406,13 +406,13 @@ export default class ObjectLoader {
}
// Wait for data on any running request
- let data = await Promise.any(validReadPromises)
+ const data = await Promise.any(validReadPromises)
let { value: crtDataChunk, done: readerDone, reqId } = data
finishedRequests[reqId] = readerDone
// Replace read promise on this request with a new `read` call
if (!readerDone) {
- let crtReadPromise = readers[reqId].read().then((x) => {
+ const crtReadPromise = readers[reqId].read().then((x) => {
x.reqId = reqId
return x
})
@@ -430,12 +430,12 @@ export default class ObjectLoader {
if (!crtDataChunk) continue
crtDataChunk = decoders[reqId].decode(crtDataChunk)
- let unprocessedText = readBuffers[reqId] + crtDataChunk
- let unprocessedLines = unprocessedText.split(/\r\n|\n|\r/)
- let remainderText = unprocessedLines.pop()
+ const unprocessedText = readBuffers[reqId] + crtDataChunk
+ const unprocessedLines = unprocessedText.split(/\r\n|\n|\r/)
+ const remainderText = unprocessedLines.pop()
readBuffers[reqId] = remainderText
- for (let line of unprocessedLines) {
+ for (const line of unprocessedLines) {
yield line
}
this.cacheStoreObjects(unprocessedLines)
@@ -463,20 +463,20 @@ export default class ObjectLoader {
return {}
}
- let ret = {}
+ const ret = {}
for (let i = 0; i < ids.length; i += 500) {
- let idsChunk = ids.slice(i, i + 500)
+ const idsChunk = ids.slice(i, i + 500)
- let store = this.cacheDB.transaction('objects', 'readonly').objectStore('objects')
- let idbChildrenPromises = idsChunk.map((id) =>
+ const store = this.cacheDB.transaction('objects', 'readonly').objectStore('objects')
+ const idbChildrenPromises = idsChunk.map((id) =>
this.promisifyIdbRequest(store.get(id)).then((data) => ({ id, data }))
)
- let cachedData = await Promise.all(idbChildrenPromises)
+ const cachedData = await Promise.all(idbChildrenPromises)
// console.log("Cache check for : ", idsChunk.length, Date.now() - t0)
- for (let cachedObj of cachedData) {
+ for (const cachedObj of cachedData) {
if (!cachedObj.data)
// non-existent objects are retrieved with `undefined` data
continue
@@ -492,9 +492,9 @@ export default class ObjectLoader {
return {}
}
- let store = this.cacheDB.transaction('objects', 'readwrite').objectStore('objects')
- for (let obj of objects) {
- let idAndData = obj.split('\t')
+ const store = this.cacheDB.transaction('objects', 'readwrite').objectStore('objects')
+ for (const obj of objects) {
+ const idAndData = obj.split('\t')
store.put(idAndData[1], idAndData[0])
}
diff --git a/packages/preview-service/app.js b/packages/preview-service/app.js
index a4af01da3..766af3d32 100644
--- a/packages/preview-service/app.js
+++ b/packages/preview-service/app.js
@@ -15,7 +15,7 @@ const prometheusClient = require('prom-client')
prometheusClient.register.clear()
prometheusClient.collectDefaultMetrics()
-let app = express()
+const app = express()
app.use(logger('dev'))
diff --git a/packages/preview-service/bg_service/index.js b/packages/preview-service/bg_service/index.js
index a20a95a76..31b5f0c18 100644
--- a/packages/preview-service/bg_service/index.js
+++ b/packages/preview-service/bg_service/index.js
@@ -10,7 +10,7 @@ let shouldExit = false
const HEALTHCHECK_FILE_PATH = '/tmp/last_successful_query'
async function startTask() {
- let { rows } = await knex.raw(`
+ const { rows } = await knex.raw(`
UPDATE object_preview
SET
"previewStatus" = 1,
@@ -28,21 +28,21 @@ async function startTask() {
}
async function doTask(task) {
- let previewUrl = `http://127.0.0.1:3001/preview/${task.streamId}/${task.objectId}`
+ const previewUrl = `http://127.0.0.1:3001/preview/${task.streamId}/${task.objectId}`
try {
let res = await fetch(previewUrl)
res = await res.json()
// let imgBuffer = await res.buffer() // this gets the binary response body
- let metadata = {}
+ const metadata = {}
- for (let angle in res) {
+ for (const angle in res) {
const imgBuffer = new Buffer.from(
res[angle].replace(/^data:image\/\w+;base64,/, ''),
'base64'
)
- let previewId = crypto.createHash('md5').update(imgBuffer).digest('hex')
+ const previewId = crypto.createHash('md5').update(imgBuffer).digest('hex')
// Save preview image
await knex.raw(
@@ -87,7 +87,7 @@ async function tick() {
}
try {
- let task = await startTask()
+ const task = await startTask()
fs.writeFile(HEALTHCHECK_FILE_PATH, '' + Date.now(), () => {})
diff --git a/packages/preview-service/render_page/src/app.js b/packages/preview-service/render_page/src/app.js
index 1d41dc440..4162c3ab1 100644
--- a/packages/preview-service/render_page/src/app.js
+++ b/packages/preview-service/render_page/src/app.js
@@ -1,6 +1,6 @@
import { Viewer } from '@speckle/viewer'
-let v = new Viewer({ container: document.getElementById('renderer'), showStats: false })
+const v = new Viewer({ container: document.getElementById('renderer'), showStats: false })
// v.on( 'load-progress', args => console.log( args ) )
window.v = v
@@ -11,7 +11,7 @@ window.LoadData = async function LoadData(url) {
}
window.onload = () => {
- let testUrl = window.location.hash.substr(1)
+ const testUrl = window.location.hash.substr(1)
if (testUrl) {
window.LoadData(testUrl)
}
diff --git a/packages/preview-service/routes/api.js b/packages/preview-service/routes/api.js
index 65a120b8d..805d38103 100644
--- a/packages/preview-service/routes/api.js
+++ b/packages/preview-service/routes/api.js
@@ -10,21 +10,21 @@ const router = express.Router()
// This method was copy-pasted from the server method, without authentication/authorization (this web service is an internal one)
router.post('/getobjects/:streamId', async (req, res) => {
- let childrenList = JSON.parse(req.body.objects)
+ const childrenList = JSON.parse(req.body.objects)
- let simpleText = req.headers.accept === 'text/plain'
+ const simpleText = req.headers.accept === 'text/plain'
res.writeHead(200, {
'Content-Encoding': 'gzip',
'Content-Type': simpleText ? 'text/plain' : 'application/json'
})
- let dbStream = await getObjectsStream({
+ const dbStream = await getObjectsStream({
streamId: req.params.streamId,
objectIds: childrenList
})
- let speckleObjStream = new SpeckleObjectsStream(simpleText)
- let gzipStream = zlib.createGzip()
+ const speckleObjStream = new SpeckleObjectsStream(simpleText)
+ const gzipStream = zlib.createGzip()
pipeline(
dbStream,
diff --git a/packages/preview-service/routes/objects.js b/packages/preview-service/routes/objects.js
index fd7a271af..653cac06c 100644
--- a/packages/preview-service/routes/objects.js
+++ b/packages/preview-service/routes/objects.js
@@ -6,12 +6,12 @@ const { getObject, getObjectChildrenStream } = require('./services/objects_utils
const { SpeckleObjectsStream } = require('./speckleObjectsStream')
const { pipeline, PassThrough } = require('stream')
-let router = express.Router()
+const router = express.Router()
// This method was copy-pasted from the server method, without authentication/authorization (this web service is an internal one)
router.get('/:streamId/:objectId', async function (req, res) {
// Populate first object (the "commit")
- let obj = await getObject({
+ const obj = await getObject({
streamId: req.params.streamId,
objectId: req.params.objectId
})
@@ -20,19 +20,19 @@ router.get('/:streamId/:objectId', async function (req, res) {
return res.status(404).send('Failed to find object.')
}
- let simpleText = req.headers.accept === 'text/plain'
+ const simpleText = req.headers.accept === 'text/plain'
res.writeHead(200, {
'Content-Encoding': 'gzip',
'Content-Type': simpleText ? 'text/plain' : 'application/json'
})
- let dbStream = await getObjectChildrenStream({
+ const dbStream = await getObjectChildrenStream({
streamId: req.params.streamId,
objectId: req.params.objectId
})
- let speckleObjStream = new SpeckleObjectsStream(simpleText)
- let gzipStream = zlib.createGzip()
+ const speckleObjStream = new SpeckleObjectsStream(simpleText)
+ const gzipStream = zlib.createGzip()
speckleObjStream.write(obj)
@@ -59,7 +59,7 @@ router.get('/:streamId/:objectId', async function (req, res) {
})
router.get('/:streamId/:objectId/single', async (req, res) => {
- let obj = await getObject({
+ const obj = await getObject({
streamId: req.params.streamId,
objectId: req.params.objectId
})
diff --git a/packages/preview-service/routes/services/objects_utils.js b/packages/preview-service/routes/services/objects_utils.js
index 25822a207..aaa1746af 100644
--- a/packages/preview-service/routes/services/objects_utils.js
+++ b/packages/preview-service/routes/services/objects_utils.js
@@ -7,8 +7,8 @@ const Closures = () => knex('object_children_closure')
module.exports = {
async getObject({ streamId, objectId }) {
- let res = await Objects()
- .where({ streamId: streamId, id: objectId })
+ const res = await Objects()
+ .where({ streamId, id: objectId })
.select('*')
.first()
if (!res) return null
@@ -18,7 +18,7 @@ module.exports = {
},
async getObjectChildrenStream({ streamId, objectId }) {
- let q = Closures()
+ const q = Closures()
q.select('id')
q.select(knex.raw('data::text as "dataText"'))
q.rightJoin('objects', function () {
@@ -39,7 +39,7 @@ module.exports = {
},
async getObjectsStream({ streamId, objectIds }) {
- let res = Objects()
+ const res = Objects()
.whereIn('id', objectIds)
.andWhere('streamId', streamId)
.orderBy('id')
diff --git a/packages/preview-service/webpack.config.render_page.js b/packages/preview-service/webpack.config.render_page.js
index ced106ea8..5b313811b 100644
--- a/packages/preview-service/webpack.config.render_page.js
+++ b/packages/preview-service/webpack.config.render_page.js
@@ -4,7 +4,7 @@ const path = require('path')
const yargs = require('yargs')
const env = yargs.argv.env
-let filename = 'viewer'
+const filename = 'viewer'
let outputFile, mode
@@ -17,7 +17,7 @@ if (env === 'build') {
}
const config = {
- mode: mode,
+ mode,
entry: path.resolve(__dirname + '/render_page/src/app.js'),
target: 'web',
devtool: 'source-map',
diff --git a/packages/server/app.js b/packages/server/app.js
index ebbb6427a..8ece88647 100644
--- a/packages/server/app.js
+++ b/packages/server/app.js
@@ -64,12 +64,12 @@ exports.buildApolloServer = (optionOverrides) => {
connectionParams.authorization ||
connectionParams.headers.Authorization
) {
- let header =
+ const header =
connectionParams.Authorization ||
connectionParams.authorization ||
connectionParams.headers.Authorization
- let token = header.split(' ')[1]
- return { token: token }
+ const token = header.split(' ')[1]
+ return { token }
}
} catch (e) {
throw new ForbiddenError('You need a token to subscribe')
@@ -120,7 +120,7 @@ exports.init = async () => {
// Initialise graphql server
graphqlServer = module.exports.buildApolloServer()
- graphqlServer.applyMiddleware({ app: app })
+ graphqlServer.applyMiddleware({ app })
// Expose prometheus metrics
app.get('/metrics', async (req, res) => {
@@ -150,8 +150,8 @@ exports.startHttp = async (app, customPortOverride) => {
let bindAddress = process.env.BIND_ADDRESS || '127.0.0.1'
let port = process.env.PORT || 3000
- let frontendHost = process.env.FRONTEND_HOST || 'localhost'
- let frontendPort = process.env.FRONTEND_PORT || 8080
+ const frontendHost = process.env.FRONTEND_HOST || 'localhost'
+ const frontendPort = process.env.FRONTEND_PORT || 8080
// Handles frontend proxying:
// Dev mode -> proxy form the local webpack server
@@ -174,14 +174,14 @@ exports.startHttp = async (app, customPortOverride) => {
bindAddress = process.env.BIND_ADDRESS || '0.0.0.0'
}
- let server = http.createServer(app)
+ const server = http.createServer(app)
if (customPortOverride || customPortOverride === 0) port = customPortOverride
app.set('port', port)
// Final apollo server setup
graphqlServer.installSubscriptionHandlers(server)
- graphqlServer.applyMiddleware({ app: app })
+ graphqlServer.applyMiddleware({ app })
app.use(Sentry.Handlers.errorHandler())
diff --git a/packages/server/knexfile.js b/packages/server/knexfile.js
index 580706dcb..d79148323 100644
--- a/packages/server/knexfile.js
+++ b/packages/server/knexfile.js
@@ -7,10 +7,10 @@ const path = require('path')
function walk(dir) {
let results = []
- let list = fs.readdirSync(dir)
+ const list = fs.readdirSync(dir)
list.forEach(function (file) {
- let fullFile = path.join(dir, file)
- let stat = fs.statSync(fullFile)
+ const fullFile = path.join(dir, file)
+ const stat = fs.statSync(fullFile)
if (stat && stat.isDirectory()) {
if (file === 'migrations') results.push(fullFile)
else results = results.concat(walk(fullFile))
@@ -19,11 +19,11 @@ function walk(dir) {
return results
}
-let migrationDirs = walk(path.resolve(__dirname, './modules'))
+const migrationDirs = walk(path.resolve(__dirname, './modules'))
// this is for readability, many users struggle to set the postgres connection uri
// in the env variables. This way its a bit easier to understand, also backward compatible.
-let env = process.env
+const env = process.env
let connectionUri
if (env.POSTGRES_USER && env.POSTGRES_PASSWORD) {
connectionUri = `postgres://${encodeURIComponent(
diff --git a/packages/server/logging/apolloPlugin.js b/packages/server/logging/apolloPlugin.js
index ae14ea952..911fb18f7 100644
--- a/packages/server/logging/apolloPlugin.js
+++ b/packages/server/logging/apolloPlugin.js
@@ -19,13 +19,13 @@ module.exports = {
return
}
- let transaction = Sentry.startTransaction({
+ const transaction = Sentry.startTransaction({
op: `GQL ${ctx.operation.operation} ${ctx.operation.selectionSet.selections[0].name.value}`,
name: `GQL ${ctx.operation.selectionSet.selections[0].name.value}`
})
try {
- let actionName = `${ctx.operation.operation} ${ctx.operation.selectionSet.selections[0].name.value}`
+ const actionName = `${ctx.operation.operation} ${ctx.operation.selectionSet.selections[0].name.value}`
metricCallCount.labels(actionName).inc()
// console.log( actionName )
diff --git a/packages/server/logging/index.js b/packages/server/logging/index.js
index 8b0197507..5815ffac0 100644
--- a/packages/server/logging/index.js
+++ b/packages/server/logging/index.js
@@ -7,7 +7,7 @@ module.exports = function (app) {
const id = machineIdSync()
if (process.env.DISABLE_TRACING !== 'true' && process.env.SENTRY_DSN) {
- Sentry.setUser({ id: id })
+ Sentry.setUser({ id })
Sentry.init({
dsn: process.env.SENTRY_DSN,
diff --git a/packages/server/modules/activitystream/graph/resolvers/activity.js b/packages/server/modules/activitystream/graph/resolvers/activity.js
index 5cb7dece4..f32e29b97 100644
--- a/packages/server/modules/activitystream/graph/resolvers/activity.js
+++ b/packages/server/modules/activitystream/graph/resolvers/activity.js
@@ -14,7 +14,7 @@ module.exports = {
Query: {},
User: {
async activity(parent, args) {
- let { items, cursor } = await getUserActivity({
+ const { items, cursor } = await getUserActivity({
userId: parent.id,
actionType: args.actionType,
after: args.after,
@@ -22,7 +22,7 @@ module.exports = {
cursor: args.cursor,
limit: args.limit
})
- let totalCount = await getActivityCountByUserId({
+ const totalCount = await getActivityCountByUserId({
userId: parent.id,
actionType: args.actionType,
after: args.after,
@@ -33,14 +33,14 @@ module.exports = {
},
async timeline(parent, args) {
- let { items, cursor } = await getUserTimeline({
+ const { items, cursor } = await getUserTimeline({
userId: parent.id,
after: args.after,
before: args.before,
cursor: args.cursor,
limit: args.limit
})
- let totalCount = await getTimelineCount({
+ const totalCount = await getTimelineCount({
userId: parent.id,
after: args.after,
before: args.before
@@ -52,7 +52,7 @@ module.exports = {
Stream: {
async activity(parent, args) {
- let { items, cursor } = await getStreamActivity({
+ const { items, cursor } = await getStreamActivity({
streamId: parent.id,
actionType: args.actionType,
after: args.after,
@@ -60,7 +60,7 @@ module.exports = {
cursor: args.cursor,
limit: args.limit
})
- let totalCount = await getActivityCountByStreamId({
+ const totalCount = await getActivityCountByStreamId({
streamId: parent.id,
actionType: args.actionType,
after: args.after,
@@ -73,7 +73,7 @@ module.exports = {
Branch: {
async activity(parent, args) {
- let { items, cursor } = await getResourceActivity({
+ const { items, cursor } = await getResourceActivity({
resourceType: 'branch',
resourceId: parent.id,
actionType: args.actionType,
@@ -82,7 +82,7 @@ module.exports = {
cursor: args.cursor,
limit: args.limit
})
- let totalCount = await getActivityCountByResourceId({
+ const totalCount = await getActivityCountByResourceId({
resourceId: parent.id,
actionType: args.actionType,
after: args.after,
@@ -95,7 +95,7 @@ module.exports = {
Commit: {
async activity(parent, args) {
- let { items, cursor } = await getResourceActivity({
+ const { items, cursor } = await getResourceActivity({
resourceType: 'commit',
resourceId: parent.id,
actionType: args.actionType,
@@ -104,7 +104,7 @@ module.exports = {
cursor: args.cursor,
limit: args.limit
})
- let totalCount = await getActivityCountByResourceId({
+ const totalCount = await getActivityCountByResourceId({
resourceId: parent.id,
actionType: args.actionType,
after: args.after,
diff --git a/packages/server/modules/activitystream/services/index.js b/packages/server/modules/activitystream/services/index.js
index eb86e25cd..cc5cd3c36 100644
--- a/packages/server/modules/activitystream/services/index.js
+++ b/packages/server/modules/activitystream/services/index.js
@@ -17,7 +17,7 @@ module.exports = {
info,
message
}) {
- let dbObject = {
+ const dbObject = {
streamId, // abc
resourceType, // "commit"
resourceId, // commit id
@@ -28,9 +28,9 @@ module.exports = {
}
await StreamActivity().insert(dbObject)
if (streamId) {
- let webhooksPayload = {
- streamId: streamId,
- userId: userId,
+ const webhooksPayload = {
+ streamId,
+ userId,
activityMessage: message,
event: {
event_name: actionType,
@@ -50,14 +50,14 @@ module.exports = {
limit = 200
}
- let dbQuery = StreamActivity().where({ streamId: streamId })
- if (actionType) dbQuery.andWhere({ actionType: actionType })
+ const dbQuery = StreamActivity().where({ streamId })
+ if (actionType) dbQuery.andWhere({ actionType })
if (after) dbQuery.andWhere('time', '>', after)
if (before) dbQuery.andWhere('time', '<', before)
if (cursor) dbQuery.andWhere('time', '<', cursor)
dbQuery.orderBy('time', 'desc').limit(limit)
- let results = await dbQuery.select('*')
+ const results = await dbQuery.select('*')
return {
items: results,
@@ -70,14 +70,14 @@ module.exports = {
limit = 200
}
- let dbQuery = StreamActivity().where({ userId: userId })
- if (actionType) dbQuery.andWhere({ actionType: actionType })
+ const dbQuery = StreamActivity().where({ userId })
+ if (actionType) dbQuery.andWhere({ actionType })
if (after) dbQuery.andWhere('time', '>', after)
if (before) dbQuery.andWhere('time', '<', before)
if (cursor) dbQuery.andWhere('time', '<', cursor)
dbQuery.orderBy('time', 'desc').limit(limit)
- let results = await dbQuery.select('*')
+ const results = await dbQuery.select('*')
return {
items: results,
cursor: results.length > 0 ? results[results.length - 1].time.toISOString() : null
@@ -97,14 +97,14 @@ module.exports = {
limit = 200
}
- let dbQuery = StreamActivity().where({ resourceType, resourceId })
- if (actionType) dbQuery.andWhere({ actionType: actionType })
+ const dbQuery = StreamActivity().where({ resourceType, resourceId })
+ if (actionType) dbQuery.andWhere({ actionType })
if (after) dbQuery.andWhere('time', '>', after)
if (before) dbQuery.andWhere('time', '<', before)
if (cursor) dbQuery.andWhere('time', '<', cursor)
dbQuery.orderBy('time', 'desc').limit(limit)
- let results = await dbQuery.select('*')
+ const results = await dbQuery.select('*')
return {
items: results,
cursor: results.length > 0 ? results[results.length - 1].time.toISOString() : null
@@ -117,7 +117,7 @@ module.exports = {
}
let sqlFilters = ''
- let sqlVariables = []
+ const sqlVariables = []
if (after) {
sqlFilters += ' AND time > ?'
sqlVariables.push(after)
@@ -131,7 +131,7 @@ module.exports = {
sqlVariables.push(cursor)
}
- let dbRawQuery = `
+ const dbRawQuery = `
SELECT act.*
FROM stream_acl acl
INNER JOIN stream_activity act ON acl."resourceId" = act."streamId"
@@ -142,7 +142,7 @@ module.exports = {
sqlVariables.unshift(userId)
sqlVariables.push(limit)
- let results = (await knex.raw(dbRawQuery, sqlVariables)).rows
+ const results = (await knex.raw(dbRawQuery, sqlVariables)).rows
return {
items: results,
cursor: results.length > 0 ? results[results.length - 1].time.toISOString() : null
@@ -150,34 +150,34 @@ module.exports = {
},
async getActivityCountByResourceId({ resourceId, actionType, after, before }) {
- let query = StreamActivity().count().where({ resourceId })
+ const query = StreamActivity().count().where({ resourceId })
if (actionType) query.andWhere({ actionType })
if (after) query.andWhere('time', '>', after)
if (before) query.andWhere('time', '<', before)
- let [res] = await query
+ const [res] = await query
return parseInt(res.count)
},
async getActivityCountByStreamId({ streamId, actionType, after, before }) {
- let query = StreamActivity().count().where({ streamId })
+ const query = StreamActivity().count().where({ streamId })
if (actionType) query.andWhere({ actionType })
if (after) query.andWhere('time', '>', after)
if (before) query.andWhere('time', '<', before)
- let [res] = await query
+ const [res] = await query
return parseInt(res.count)
},
async getActivityCountByUserId({ userId, actionType, after, before }) {
- let query = StreamActivity().count().where({ userId })
+ const query = StreamActivity().count().where({ userId })
if (actionType) query.andWhere({ actionType })
if (after) query.andWhere('time', '>', after)
if (before) query.andWhere('time', '<', before)
- let [res] = await query
+ const [res] = await query
return parseInt(res.count)
},
async getTimelineCount({ userId, after, before }) {
- let query = StreamAcl()
+ const query = StreamAcl()
.count()
.innerJoin('stream_activity', {
'stream_acl.resourceId': 'stream_activity.streamId'
@@ -185,7 +185,7 @@ module.exports = {
.where({ 'stream_acl.userId': userId })
if (after) query.andWhere('stream_activity.time', '>', after)
if (before) query.andWhere('stream_activity.time', '<', before)
- let [res] = await query
+ const [res] = await query
return parseInt(res.count)
}
}
diff --git a/packages/server/modules/activitystream/tests/activity.spec.js b/packages/server/modules/activitystream/tests/activity.spec.js
index eb7df2cf1..64ba1438f 100644
--- a/packages/server/modules/activitystream/tests/activity.spec.js
+++ b/packages/server/modules/activitystream/tests/activity.spec.js
@@ -15,44 +15,44 @@ let sendRequest
describe('Activity @activity', () => {
let server
- let userIz = {
+ const userIz = {
name: 'Izzy Lyseggen',
email: 'izzybizzi@speckle.systems',
password: 'sp0ckle sucks 9001'
}
- let userCr = {
+ const userCr = {
name: 'Cristi Balas',
email: 'cristib@speckle.systems',
password: 'hack3r man 666'
}
- let userX = {
+ const userX = {
name: 'Mystery User',
email: 'mysteriousDude@speckle.systems',
password: 'super $ecret pw0rd'
}
- let streamPublic = {
+ const streamPublic = {
name: 'a fun stream for sharing',
description: 'for all to see!',
isPublic: true
}
- let branchPublic = { name: '🍁maple branch' }
+ const branchPublic = { name: '🍁maple branch' }
- let streamSecret = {
+ const streamSecret = {
name: 'a secret stream for me',
description: 'for no one to see!',
isPublic: false
}
- let testObj = {
+ const testObj = {
hello: 'hallo',
cool: 'kult',
bunny: 'kanin'
}
- let testObj2 = {
+ const testObj2 = {
goodbye: 'ha det bra',
warm: 'varmt',
bunny: 'kanin'
@@ -64,7 +64,7 @@ describe('Activity @activity', () => {
// create users and tokens
userIz.id = await createUser(userIz)
- let token = await createPersonalAccessToken(userIz.id, 'izz test token', [
+ const token = await createPersonalAccessToken(userIz.id, 'izz test token', [
'streams:read',
'streams:write',
'users:read',
@@ -150,11 +150,11 @@ describe('Activity @activity', () => {
})
expect(noErrors(resCollab))
- let { items: activityC } = await getUserActivity({ userId: userCr.id })
+ const { items: activityC } = await getUserActivity({ userId: userCr.id })
expect(activityC.length).to.equal(3)
expect(activityC[0].actionType).to.equal('commit_create')
- let { items: activityI } = await getUserActivity({ userId: userIz.id })
+ const { items: activityI } = await getUserActivity({ userId: userIz.id })
expect(activityI.length).to.equal(5)
expect(activityI[0].actionType).to.equal('stream_permissions_add')
})
@@ -164,7 +164,7 @@ describe('Activity @activity', () => {
query: `query {user(id:"${userIz.id}") { name activity { totalCount items {streamId resourceType resourceId actionType userId message time}}} }`
})
expect(noErrors(res))
- let activity = res.body.data.user.activity
+ const activity = res.body.data.user.activity
expect(activity.items.length).to.equal(5)
expect(activity.totalCount).to.equal(5)
@@ -195,7 +195,7 @@ describe('Activity @activity', () => {
query: `query { stream(id: "${streamPublic.id}") { activity { totalCount items {streamId resourceId actionType message} } } }`
})
expect(noErrors(res))
- let activity = res.body.data.stream.activity
+ const activity = res.body.data.stream.activity
expect(activity.items.length).to.equal(4)
expect(activity.totalCount).to.equal(4)
expect(activity.items[activity.totalCount - 1].actionType).to.equal('stream_create')
@@ -206,7 +206,7 @@ describe('Activity @activity', () => {
query: `query { stream(id: "${streamPublic.id}") { branch(name: "${branchPublic.name}") { activity { totalCount items {streamId resourceId actionType message} } } } }`
})
expect(noErrors(res))
- let activity = res.body.data.stream.branch.activity
+ const activity = res.body.data.stream.branch.activity
expect(activity.items.length).to.equal(1)
expect(activity.totalCount).to.equal(1)
expect(activity.items[0].actionType).to.equal('branch_create')
diff --git a/packages/server/modules/auth/defaultApps.js b/packages/server/modules/auth/defaultApps.js
index 02eb60614..252f426be 100644
--- a/packages/server/modules/auth/defaultApps.js
+++ b/packages/server/modules/auth/defaultApps.js
@@ -27,7 +27,7 @@ async function registerOrUpdateApp(app) {
app.scopes = allScopes.map((s) => s.name)
}
- let existingApp = await getApp({ id: app.id })
+ const existingApp = await getApp({ id: app.id })
if (existingApp) {
updateDefaultApp(app, existingApp)
} else {
@@ -37,7 +37,7 @@ async function registerOrUpdateApp(app) {
async function registerDefaultApp(app) {
try {
- let scopes = app.scopes.map((s) => ({ appId: app.id, scopeName: s }))
+ const scopes = app.scopes.map((s) => ({ appId: app.id, scopeName: s }))
delete app.scopes
await Apps().insert(app)
await AppScopes().insert(scopes)
@@ -49,16 +49,16 @@ async function registerDefaultApp(app) {
async function updateDefaultApp(app, existingApp) {
existingApp.scopes = existingApp.scopes.map((s) => s.name)
- let scopeDiffA = app.scopes.filter(
+ const scopeDiffA = app.scopes.filter(
(scope) => existingApp.scopes.indexOf(scope) === -1
)
- let scopeDiffB = existingApp.scopes.filter(
+ const scopeDiffB = existingApp.scopes.filter(
(scope) => app.scopes.indexOf(scope) === -1
)
if (scopeDiffA.length !== 0 || scopeDiffB.length !== 0) {
await revokeExistingAppCredentials({ appId: app.id })
- let scopes = app.scopes.map((s) => ({ appId: app.id, scopeName: s }))
+ const scopes = app.scopes.map((s) => ({ appId: app.id, scopeName: s }))
await AppScopes().insert(scopes)
}
@@ -66,7 +66,7 @@ async function updateDefaultApp(app, existingApp) {
await Apps().where({ id: app.id }).update(app)
}
-let SpeckleWebApp = {
+const SpeckleWebApp = {
id: 'spklwebapp',
secret: 'spklwebapp',
name: 'Speckle Web Manager',
@@ -78,7 +78,7 @@ let SpeckleWebApp = {
scopes: 'all'
}
-let SpeckleApiExplorer = {
+const SpeckleApiExplorer = {
id: 'explorer',
secret: 'explorer',
name: 'Speckle Explorer',
@@ -89,7 +89,7 @@ let SpeckleApiExplorer = {
scopes: 'all'
}
-let SpeckleDesktopApp = {
+const SpeckleDesktopApp = {
id: 'sdm',
secret: 'sdm',
name: 'Speckle Desktop Manager',
@@ -107,7 +107,7 @@ let SpeckleDesktopApp = {
]
}
-let SpeckleConnectorApp = {
+const SpeckleConnectorApp = {
id: 'sca',
secret: 'sca',
name: 'Speckle Connector',
@@ -124,7 +124,7 @@ let SpeckleConnectorApp = {
]
}
-let SpeckleExcel = {
+const SpeckleExcel = {
id: 'spklexcel',
secret: 'spklexcel',
name: 'Speckle Connector For Excel',
diff --git a/packages/server/modules/auth/graph/resolvers/apps.js b/packages/server/modules/auth/graph/resolvers/apps.js
index 930fb06c7..f92fb91fa 100644
--- a/packages/server/modules/auth/graph/resolvers/apps.js
+++ b/packages/server/modules/auth/graph/resolvers/apps.js
@@ -15,7 +15,7 @@ const {
module.exports = {
Query: {
async app(parent, args) {
- let app = await getApp({ id: args.id })
+ const app = await getApp({ id: args.id })
return app
},
@@ -40,7 +40,7 @@ module.exports = {
User: {
async authorizedApps(parent, args, context) {
- let res = await getAllAppsAuthorizedByUser({ userId: context.userId })
+ const res = await getAllAppsAuthorizedByUser({ userId: context.userId })
return res
},
async createdApps(parent, args, context) {
@@ -49,12 +49,12 @@ module.exports = {
},
Mutation: {
async appCreate(parent, args, context) {
- let { id } = await createApp({ ...args.app, authorId: context.userId })
+ const { id } = await createApp({ ...args.app, authorId: context.userId })
return id
},
async appUpdate(parent, args, context) {
- let app = await getApp({ id: args.app.id })
+ const app = await getApp({ id: args.app.id })
if (!app.author && context.role !== 'server:admin')
throw new ForbiddenError('You are not authorized to edit this app.')
if (app.author.id !== context.userId && context.role !== 'server:admin')
@@ -65,7 +65,7 @@ module.exports = {
},
async appDelete(parent, args, context) {
- let app = await getApp({ id: args.appId })
+ const app = await getApp({ id: args.appId })
if (!app.author && context.role !== 'server:admin')
throw new ForbiddenError('You are not authorized to edit this app.')
diff --git a/packages/server/modules/auth/index.js b/packages/server/modules/auth/index.js
index 0efb68dcc..4202acd72 100644
--- a/packages/server/modules/auth/index.js
+++ b/packages/server/modules/auth/index.js
@@ -1,5 +1,5 @@
'use strict'
-let debug = require('debug')
+const debug = require('debug')
const appRoot = require('app-root-path')
const { registerOrUpdateScope } = require(`${appRoot}/modules/shared`)
@@ -14,7 +14,7 @@ exports.init = async (app) => {
// Register core-based scopes
const scopes = require('./scopes.js')
- for (let scope of scopes) {
+ for (const scope of scopes) {
await registerOrUpdateScope(scope)
}
}
diff --git a/packages/server/modules/auth/rest/index.js b/packages/server/modules/auth/rest/index.js
index 7ed4a8bea..a7b66e373 100644
--- a/packages/server/modules/auth/rest/index.js
+++ b/packages/server/modules/auth/rest/index.js
@@ -27,21 +27,21 @@ module.exports = (app) => {
*/
app.get('/auth/accesscode', async (req, res) => {
try {
- let appId = req.query.appId
- let app = await getApp({ id: appId })
+ const appId = req.query.appId
+ const app = await getApp({ id: appId })
if (!app) throw new Error('App does not exist.')
- let challenge = req.query.challenge
- let userToken = req.query.token
+ const challenge = req.query.challenge
+ const userToken = req.query.token
// 1. Validate token
- let { valid, scopes, userId } = await validateToken(userToken)
+ const { valid, scopes, userId } = await validateToken(userToken)
if (!valid) throw new Error('Invalid token')
// 2. Validate token scopes
await validateScopes(scopes, 'tokens:write')
- let ac = await createAuthorizationCode({ appId, userId, challenge })
+ const ac = await createAuthorizationCode({ appId, userId, challenge })
return res.redirect(`${app.redirectUrl}?access_code=${ac}`)
} catch (err) {
sentry({ err })
@@ -61,7 +61,7 @@ module.exports = (app) => {
if (!req.body.appId || !req.body.appSecret)
throw new Error('Invalid request - refresh token')
- let authResponse = await refreshAppToken({
+ const authResponse = await refreshAppToken({
refreshToken: req.body.refreshToken,
appId: req.body.appId,
appSecret: req.body.appSecret
@@ -78,7 +78,7 @@ module.exports = (app) => {
)
throw new Error('Invalid request' + JSON.stringify(req.body))
- let authResponse = await createAppTokenFromAccessCode({
+ const authResponse = await createAppTokenFromAccessCode({
appId: req.body.appId,
appSecret: req.body.appSecret,
accessCode: req.body.accessCode,
@@ -96,8 +96,8 @@ module.exports = (app) => {
*/
app.post('/auth/logout', matomoMiddleware, async (req, res) => {
try {
- let token = req.body.token
- let refreshToken = req.body.refreshToken
+ const token = req.body.token
+ const refreshToken = req.body.refreshToken
if (!token) throw new Error('Invalid request')
await revokeTokenById(token)
diff --git a/packages/server/modules/auth/services/apps.js b/packages/server/modules/auth/services/apps.js
index ecd14f850..ae9387d98 100644
--- a/packages/server/modules/auth/services/apps.js
+++ b/packages/server/modules/auth/services/apps.js
@@ -20,12 +20,12 @@ const RefreshTokens = () => knex('refresh_tokens')
module.exports = {
async getApp({ id }) {
- let allScopes = await Scopes().select('*')
+ const allScopes = await Scopes().select('*')
- let app = await ServerApps().select('*').where({ id: id }).first()
+ const app = await ServerApps().select('*').where({ id }).first()
if (!app) return null
- let appScopeNames = (
+ const appScopeNames = (
await ServerAppsScopes().select('scopeName').where({ appId: id })
).map((s) => s.scopeName)
@@ -38,7 +38,7 @@ module.exports = {
},
async getAllPublicApps() {
- let apps = await ServerApps()
+ const apps = await ServerApps()
.select(
'server_apps.id',
'server_apps.name',
@@ -64,7 +64,7 @@ module.exports = {
},
async getAllAppsCreatedByUser({ userId }) {
- let apps = await ServerApps()
+ const apps = await ServerApps()
.select(
'server_apps.id',
'server_apps.secret',
@@ -91,7 +91,7 @@ module.exports = {
},
async getAllAppsAuthorizedByUser({ userId }) {
- let query = knex.raw(
+ const query = knex.raw(
`
SELECT DISTINCT ON (a."appId") a."appId" as id, sa."name", sa."description", sa."trustByDefault", sa."redirectUrl" as "redirectUrl", sa.logo, sa."termsAndConditionsLink", json_build_object('name', u.name, 'id', sa."authorId") as author
FROM user_server_app_tokens a
@@ -102,7 +102,7 @@ module.exports = {
[userId]
)
- let { rows } = await query
+ const { rows } = await query
return rows
},
@@ -114,7 +114,7 @@ module.exports = {
throw new Error('Cannot create an app with no scopes.')
}
- let scopes = [...app.scopes]
+ const scopes = [...app.scopes]
delete app.scopes
delete app.firstparty
@@ -144,7 +144,7 @@ module.exports = {
delete app.secret
delete app.scopes
- let [{ id }] = await ServerApps().returning('id').where({ id: app.id }).update(app)
+ const [{ id }] = await ServerApps().returning('id').where({ id: app.id }).update(app)
return id
},
@@ -152,24 +152,24 @@ module.exports = {
async deleteApp({ id }) {
await module.exports.revokeExistingAppCredentials({ appId: id })
- return await ServerApps().where({ id: id }).del()
+ return await ServerApps().where({ id }).del()
},
async revokeRefreshToken({ tokenId }) {
tokenId = tokenId.slice(0, 10)
- let delCount = await RefreshTokens().where({ id: tokenId }).del()
+ const delCount = await RefreshTokens().where({ id: tokenId }).del()
if (delCount === 0) throw new Error('Did not revoke token')
return true
},
async revokeExistingAppCredentials({ appId }) {
- await AuthorizationCodes().where({ appId: appId }).del()
- await RefreshTokens().where({ appId: appId }).del()
+ await AuthorizationCodes().where({ appId }).del()
+ await RefreshTokens().where({ appId }).del()
- let resApiTokenDelete = await ApiTokens()
+ const resApiTokenDelete = await ApiTokens()
.whereIn('id', (qb) => {
- qb.select('tokenId').from('user_server_app_tokens').where({ appId: appId })
+ qb.select('tokenId').from('user_server_app_tokens').where({ appId })
})
.del()
@@ -177,13 +177,13 @@ module.exports = {
},
async revokeExistingAppCredentialsForUser({ appId, userId }) {
- await AuthorizationCodes().where({ appId: appId, userId: userId }).del()
- await RefreshTokens().where({ appId: appId, userId: userId }).del()
- let resApiTokenDelete = await ApiTokens()
+ await AuthorizationCodes().where({ appId, userId }).del()
+ await RefreshTokens().where({ appId, userId }).del()
+ const resApiTokenDelete = await ApiTokens()
.whereIn('id', (qb) => {
qb.select('tokenId')
.from('user_server_app_tokens')
- .where({ appId: appId, userId: userId })
+ .where({ appId, userId })
})
.del()
@@ -191,11 +191,11 @@ module.exports = {
},
async createAuthorizationCode({ appId, userId, challenge }) {
- let ac = {
+ const ac = {
id: crs({ length: 42 }),
- appId: appId,
- userId: userId,
- challenge: challenge
+ appId,
+ userId,
+ challenge
}
await AuthorizationCodes().insert(ac)
@@ -203,7 +203,7 @@ module.exports = {
},
async createAppTokenFromAccessCode({ appId, appSecret, accessCode, challenge }) {
- let code = await AuthorizationCodes().select().where({ id: accessCode }).first()
+ const code = await AuthorizationCodes().select().where({ id: accessCode }).first()
if (!code) throw new Error('Access code not found.')
if (code.appId !== appId)
@@ -218,12 +218,12 @@ module.exports = {
if (code.challenge !== challenge) throw new Error('Invalid request')
- let app = await ServerApps().select('*').where({ id: appId }).first()
+ const app = await ServerApps().select('*').where({ id: appId }).first()
if (!app) throw new Error('Invalid app')
if (app.secret !== appSecret) throw new Error('Invalid app credentials')
- const scopes = await ServerAppsScopes().select('scopeName').where({ appId: appId })
+ const scopes = await ServerAppsScopes().select('scopeName').where({ appId })
const appScopes = scopes.map((s) => s.scopeName)
@@ -236,12 +236,12 @@ module.exports = {
await ServerAppsTokens().insert({
userId: code.userId,
tokenId: appToken.slice(0, 10),
- appId: appId
+ appId
})
- let bareToken = await createBareToken()
+ const bareToken = await createBareToken()
- let refreshToken = {
+ const refreshToken = {
id: bareToken.tokenId,
tokenDigest: bareToken.tokenHash,
appId: app.id,
@@ -257,10 +257,10 @@ module.exports = {
},
async refreshAppToken({ refreshToken, appId, appSecret }) {
- let refreshTokenId = refreshToken.slice(0, 10)
- let refreshTokenContent = refreshToken.slice(10, 42)
+ const refreshTokenId = refreshToken.slice(0, 10)
+ const refreshTokenContent = refreshToken.slice(10, 42)
- let refreshTokenDb = await RefreshTokens()
+ const refreshTokenDb = await RefreshTokens()
.select('*')
.where({ id: refreshTokenId })
.first()
@@ -275,10 +275,10 @@ module.exports = {
throw new Error('Refresh token expired')
}
- let valid = await bcrypt.compare(refreshTokenContent, refreshTokenDb.tokenDigest)
+ const valid = await bcrypt.compare(refreshTokenContent, refreshTokenDb.tokenDigest)
if (!valid) throw new Error('Invalid token') // sneky hackstors
- let app = await module.exports.getApp({ id: appId })
+ const app = await module.exports.getApp({ id: appId })
if (app.secret !== appSecret) throw new Error('Invalid request')
// Create the new token
@@ -291,16 +291,16 @@ module.exports = {
await ServerAppsTokens().insert({
userId: refreshTokenDb.userId,
tokenId: appToken.slice(0, 10),
- appId: appId
+ appId
})
// Create a new refresh token
- let bareToken = await createBareToken()
+ const bareToken = await createBareToken()
- let freshRefreshToken = {
+ const freshRefreshToken = {
id: bareToken.tokenId,
tokenDigest: bareToken.tokenHash,
- appId: appId,
+ appId,
userId: refreshTokenDb.userId
}
diff --git a/packages/server/modules/auth/strategies.js b/packages/server/modules/auth/strategies.js
index 29350dcde..5d7a921b0 100644
--- a/packages/server/modules/auth/strategies.js
+++ b/packages/server/modules/auth/strategies.js
@@ -10,13 +10,13 @@ const sentry = require(`${appRoot}/logging/sentryHelper`)
const { createAuthorizationCode } = require('./services/apps')
module.exports = async (app) => {
- let authStrategies = []
+ const authStrategies = []
passport.serializeUser((user, done) => done(null, user))
passport.deserializeUser((user, done) => done(null, user))
app.use(passport.initialize())
- let session = ExpressSession({
+ const session = ExpressSession({
store: new RedisStore({ client: redis.createClient(process.env.REDIS_URL) }),
secret: process.env.SESSION_SECRET,
saveUninitialized: false,
@@ -24,7 +24,7 @@ module.exports = async (app) => {
cookie: { maxAge: 1000 * 60 * 3 } // 3 minutes
})
- let sessionStorage = (req, res, next) => {
+ const sessionStorage = (req, res, next) => {
if (!req.query.challenge)
return res.status(400).send('Invalid request: no challenge detected.')
@@ -44,9 +44,9 @@ module.exports = async (app) => {
/*
Finalizes authentication for the main frontend application.
*/
- let finalizeAuth = async (req, res) => {
+ const finalizeAuth = async (req, res) => {
try {
- let ac = await createAuthorizationCode({
+ const ac = await createAuthorizationCode({
appId: 'spklwebapp',
userId: req.user.id,
challenge: req.session.challenge
@@ -67,7 +67,7 @@ module.exports = async (app) => {
let strategyCount = 0
if (process.env.STRATEGY_GOOGLE === 'true') {
- let googStrategy = await require('./strategies/google')(
+ const googStrategy = await require('./strategies/google')(
app,
session,
sessionStorage,
@@ -78,7 +78,7 @@ module.exports = async (app) => {
}
if (process.env.STRATEGY_GITHUB === 'true') {
- let githubStrategy = await require('./strategies/github')(
+ const githubStrategy = await require('./strategies/github')(
app,
session,
sessionStorage,
@@ -89,7 +89,7 @@ module.exports = async (app) => {
}
if (process.env.STRATEGY_AZURE_AD === 'true') {
- let azureAdStrategy = await require('./strategies/azure-ad')(
+ const azureAdStrategy = await require('./strategies/azure-ad')(
app,
session,
sessionStorage,
@@ -102,7 +102,7 @@ module.exports = async (app) => {
// Note: always leave the local strategy init for last so as to be able to
// force enable it in case no others are present.
if (process.env.STRATEGY_LOCAL === 'true' || strategyCount === 0) {
- let localStrategy = await require('./strategies/local')(
+ const localStrategy = await require('./strategies/local')(
app,
session,
sessionStorage,
diff --git a/packages/server/modules/auth/strategies/azure-ad.js b/packages/server/modules/auth/strategies/azure-ad.js
index 192cb3130..4d056bc7c 100644
--- a/packages/server/modules/auth/strategies/azure-ad.js
+++ b/packages/server/modules/auth/strategies/azure-ad.js
@@ -17,7 +17,7 @@ const {
} = require(`${appRoot}/modules/serverinvites/services`)
module.exports = async (app, session, sessionStorage, finalizeAuth) => {
- let strategy = new OIDCStrategy(
+ const strategy = new OIDCStrategy(
{
identityMetadata: process.env.AZURE_AD_IDENTITY_METADATA,
clientID: process.env.AZURE_AD_CLIENT_ID,
@@ -59,7 +59,7 @@ module.exports = async (app, session, sessionStorage, finalizeAuth) => {
const serverInfo = await getServerInfo()
try {
- let user = {
+ const user = {
email: req.user._json.email,
name: req.user._json.name || req.user.displayName
}
@@ -72,8 +72,8 @@ module.exports = async (app, session, sessionStorage, finalizeAuth) => {
// if there is an existing user, go ahead and log them in (regardless of
// whether the server is invite only or not).
if (existingUser) {
- let myUser = await findOrCreateUser({
- user: user,
+ const myUser = await findOrCreateUser({
+ user,
rawProfile: req.user._json
})
// ID is used later for verifying access token
@@ -83,8 +83,8 @@ module.exports = async (app, session, sessionStorage, finalizeAuth) => {
// if the server is not invite only, go ahead and log the user in.
if (!serverInfo.inviteOnly) {
- let myUser = await findOrCreateUser({
- user: user,
+ const myUser = await findOrCreateUser({
+ user,
rawProfile: req.user._json
})
// ID is used later for verifying access token
@@ -105,7 +105,7 @@ module.exports = async (app, session, sessionStorage, finalizeAuth) => {
if (!validInvite) throw new Error('Invalid invite.')
// create the user
- let myUser = await findOrCreateUser({ user: user, rawProfile: req.user._json })
+ const myUser = await findOrCreateUser({ user, rawProfile: req.user._json })
// ID is used later for verifying access token
req.user.id = myUser.id
diff --git a/packages/server/modules/auth/strategies/github.js b/packages/server/modules/auth/strategies/github.js
index 5eab08c29..8e1eefbec 100644
--- a/packages/server/modules/auth/strategies/github.js
+++ b/packages/server/modules/auth/strategies/github.js
@@ -26,7 +26,7 @@ module.exports = async (app, session, sessionStorage, finalizeAuth) => {
callbackUrl: new URL('/auth/gh/callback', process.env.CANONICAL_URL).toString()
}
- let myStrategy = new GithubStrategy(
+ const myStrategy = new GithubStrategy(
{
clientID: process.env.GITHUB_CLIENT_ID,
clientSecret: process.env.GITHUB_CLIENT_SECRET,
@@ -38,11 +38,11 @@ module.exports = async (app, session, sessionStorage, finalizeAuth) => {
const serverInfo = await getServerInfo()
try {
- let email = profile.emails[0].value
- let name = profile.displayName || profile.username
- let bio = profile._json.bio
+ const email = profile.emails[0].value
+ const name = profile.displayName || profile.username
+ const bio = profile._json.bio
- let user = { email, name, bio }
+ const user = { email, name, bio }
if (req.session.suuid) user.suuid = req.session.suuid
@@ -52,13 +52,13 @@ module.exports = async (app, session, sessionStorage, finalizeAuth) => {
// if there is an existing user, go ahead and log them in (regardless of
// whether the server is invite only or not).
if (existingUser) {
- let myUser = await findOrCreateUser({ user: user, rawProfile: profile._raw })
+ const myUser = await findOrCreateUser({ user, rawProfile: profile._raw })
return done(null, myUser)
}
// if the server is not invite only, go ahead and log the user in.
if (!serverInfo.inviteOnly) {
- let myUser = await findOrCreateUser({ user: user, rawProfile: profile._raw })
+ const myUser = await findOrCreateUser({ user, rawProfile: profile._raw })
return done(null, myUser)
}
@@ -75,7 +75,7 @@ module.exports = async (app, session, sessionStorage, finalizeAuth) => {
if (!validInvite) throw new Error('Invalid invite.')
// create the user
- let myUser = await findOrCreateUser({ user: user, rawProfile: profile._raw })
+ const myUser = await findOrCreateUser({ user, rawProfile: profile._raw })
// use the invite
await useInvite({ id: req.session.inviteId, email: user.email })
diff --git a/packages/server/modules/auth/strategies/google.js b/packages/server/modules/auth/strategies/google.js
index 20b170e97..1e870d20e 100644
--- a/packages/server/modules/auth/strategies/google.js
+++ b/packages/server/modules/auth/strategies/google.js
@@ -24,7 +24,7 @@ module.exports = async (app, session, sessionStorage, finalizeAuth) => {
callbackUrl: '/auth/goog/callback'
}
- let myStrategy = new GoogleStrategy(
+ const myStrategy = new GoogleStrategy(
{
clientID: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
@@ -36,10 +36,10 @@ module.exports = async (app, session, sessionStorage, finalizeAuth) => {
const serverInfo = await getServerInfo()
try {
- let email = profile.emails[0].value
- let name = profile.displayName
+ const email = profile.emails[0].value
+ const name = profile.displayName
- let user = { email, name, avatar: profile._json.picture }
+ const user = { email, name, avatar: profile._json.picture }
if (req.session.suuid) user.suuid = req.session.suuid
@@ -49,13 +49,13 @@ module.exports = async (app, session, sessionStorage, finalizeAuth) => {
// if there is an existing user, go ahead and log them in (regardless of
// whether the server is invite only or not).
if (existingUser) {
- let myUser = await findOrCreateUser({ user: user, rawProfile: profile._raw })
+ const myUser = await findOrCreateUser({ user, rawProfile: profile._raw })
return done(null, myUser)
}
// if the server is not invite only, go ahead and log the user in.
if (!serverInfo.inviteOnly) {
- let myUser = await findOrCreateUser({ user: user, rawProfile: profile._raw })
+ const myUser = await findOrCreateUser({ user, rawProfile: profile._raw })
return done(null, myUser)
}
@@ -72,7 +72,7 @@ module.exports = async (app, session, sessionStorage, finalizeAuth) => {
if (!validInvite) throw new Error('Invalid invite.')
// create the user
- let myUser = await findOrCreateUser({ user: user, rawProfile: profile._raw })
+ const myUser = await findOrCreateUser({ user, rawProfile: profile._raw })
// use the invite
await useInvite({ id: req.session.inviteId, email: user.email })
diff --git a/packages/server/modules/auth/strategies/local.js b/packages/server/modules/auth/strategies/local.js
index c2a252233..d7b16e6d2 100644
--- a/packages/server/modules/auth/strategies/local.js
+++ b/packages/server/modules/auth/strategies/local.js
@@ -29,14 +29,14 @@ module.exports = async (app, session, sessionAppId, finalizeAuth) => {
sessionAppId,
async (req, res, next) => {
try {
- let valid = await validatePasssword({
+ const valid = await validatePasssword({
email: req.body.email,
password: req.body.password
})
if (!valid) throw new Error('Invalid credentials')
- let user = await getUserByEmail({ email: req.body.email })
+ const user = await getUserByEmail({ email: req.body.email })
if (!user) throw new Error('Invalid credentials')
if (req.body.suuid && user.suuid !== req.body.suuid) {
@@ -62,9 +62,9 @@ module.exports = async (app, session, sessionAppId, finalizeAuth) => {
try {
if (!req.body.password) throw new Error('Password missing')
- let user = req.body
+ const user = req.body
user.ip = req.headers['cf-connecting-ip'] || req.connection.remoteAddress || ''
- let ignorePrefixes = [
+ const ignorePrefixes = [
'192.168.',
'10.',
'127.',
@@ -73,7 +73,7 @@ module.exports = async (app, session, sessionAppId, finalizeAuth) => {
'172.3',
'::'
]
- for (let ipPrefix of ignorePrefixes)
+ for (const ipPrefix of ignorePrefixes)
if (user.ip.startsWith(ipPrefix)) {
delete user.ip
break
@@ -106,7 +106,7 @@ module.exports = async (app, session, sessionAppId, finalizeAuth) => {
// * the server public and the user has a valid invite
// * the server public and the user doesn't have an invite
// so we go ahead and register the user
- let userId = await createUser(user)
+ const userId = await createUser(user)
req.user = { id: userId, email: user.email }
// 4. if the user had an invite, its used up
diff --git a/packages/server/modules/auth/tests/apps.spec.js b/packages/server/modules/auth/tests/apps.spec.js
index 65cbb390b..3d9714ed1 100644
--- a/packages/server/modules/auth/tests/apps.spec.js
+++ b/packages/server/modules/auth/tests/apps.spec.js
@@ -18,7 +18,7 @@ const {
} = require('../services/apps')
describe('Services @apps-services', () => {
- let actor = {
+ const actor = {
name: 'Dimitrie Stefanescu',
email: 'didimitrie@gmail.com',
password: 'wtfwtfwtf'
@@ -30,28 +30,28 @@ describe('Services @apps-services', () => {
})
it('Should get the frontend main app', async () => {
- let app = await getApp({ id: 'spklwebapp' })
+ const app = await getApp({ id: 'spklwebapp' })
expect(app).to.be.an('object')
expect(app.redirectUrl).to.be.a('string')
expect(app.scopes).to.be.a('array')
})
it('Should get the desktop manager app', async () => {
- let app = await getApp({ id: 'sdm' })
+ const app = await getApp({ id: 'sdm' })
expect(app).to.be.an('object')
expect(app.redirectUrl).to.be.a('string')
expect(app.scopes).to.be.a('array')
})
it('Should get the explorer app', async () => {
- let app = await getApp({ id: 'explorer' })
+ const app = await getApp({ id: 'explorer' })
expect(app).to.be.an('object')
expect(app.redirectUrl).to.be.a('string')
expect(app.scopes).to.be.a('array')
})
it('Should get the excel app', async () => {
- let app = await getApp({ id: 'spklexcel' })
+ const app = await getApp({ id: 'spklexcel' })
expect(app).to.be.an('object')
expect(app.redirectUrl).to.be.a('string')
expect(app.scopes).to.be.a('array')
@@ -73,13 +73,13 @@ describe('Services @apps-services', () => {
expect(res.id).to.be.a('string')
expect(res.secret).to.be.a('string')
- let app = await getApp({ id: res.id })
+ const app = await getApp({ id: res.id })
expect(app.id).to.equal(res.id)
myTestApp = app
})
it('Should get all the public apps on this server', async () => {
- let apps = await getAllPublicApps()
+ const apps = await getAllPublicApps()
expect(apps).to.be.an('array')
expect(apps.length).to.equal(6)
})
@@ -104,14 +104,14 @@ describe('Services @apps-services', () => {
})
expect(res).to.be.a('string')
- let app = await getApp({ id: myTestApp.id })
+ const app = await getApp({ id: myTestApp.id })
expect(app.name).to.equal('updated test application')
expect(app.scopes).to.be.an('array')
expect(app.scopes.map((s) => s.name)).to.include('users:read')
expect(app.scopes.map((s) => s.name)).to.include('streams:read')
})
- let challenge = 'random'
+ const challenge = 'random'
let authorizationCode = null
it('Should get an authorization code for the app', async () => {
@@ -139,7 +139,7 @@ describe('Services @apps-services', () => {
tokenCreateResponse = response
- let validation = await validateToken(response.token)
+ const validation = await validateToken(response.token)
expect(validation.valid).to.equal(true)
expect(validation.userId).to.equal(actor.id)
expect(validation.scopes[0]).to.equal('streams:read')
@@ -156,27 +156,27 @@ describe('Services @apps-services', () => {
expect(res.token).to.be.a('string')
expect(res.refreshToken).to.be.a('string')
- let validation = await validateToken(res.token)
+ const validation = await validateToken(res.token)
expect(validation.valid).to.equal(true)
expect(validation.userId).to.equal(actor.id)
})
it('Should invalidate all tokens, refresh tokens and access codes for an app if it is updated', async () => {
- let unusedAccessCode = await createAuthorizationCode({
+ const unusedAccessCode = await createAuthorizationCode({
appId: myTestApp.id,
userId: actor.id,
challenge
})
- let usedAccessCode = await createAuthorizationCode({
+ const usedAccessCode = await createAuthorizationCode({
appId: myTestApp.id,
userId: actor.id,
challenge
})
- let apiTokenResponse = await createAppTokenFromAccessCode({
+ const apiTokenResponse = await createAppTokenFromAccessCode({
appId: myTestApp.id,
appSecret: myTestApp.secret,
accessCode: usedAccessCode,
- challenge: challenge
+ challenge
})
// We now have one unused access code, an api token and a refresh token.
@@ -189,7 +189,7 @@ describe('Services @apps-services', () => {
}
})
- let validationResponse = await validateToken(apiTokenResponse.token)
+ const validationResponse = await validateToken(apiTokenResponse.token)
expect(validationResponse.valid).to.equal(false)
await refreshAppToken({
@@ -215,23 +215,23 @@ describe('Services @apps-services', () => {
})
it('Should revoke access for a given user', async () => {
- let secondUser = {
+ const secondUser = {
name: 'Dimitrie Stefanescu',
email: 'didimitrie.wow@gmail.com',
password: 'wtfwtfwtf'
}
secondUser.id = await createUser(secondUser)
- let accessCode = await createAuthorizationCode({
+ const accessCode = await createAuthorizationCode({
appId: myTestApp.id,
userId: secondUser.id,
challenge
})
- let apiTokenResponse = await createAppTokenFromAccessCode({
+ const apiTokenResponse = await createAppTokenFromAccessCode({
appId: myTestApp.id,
appSecret: myTestApp.secret,
- accessCode: accessCode,
- challenge: challenge
+ accessCode,
+ challenge
})
await revokeExistingAppCredentialsForUser({
@@ -249,7 +249,7 @@ describe('Services @apps-services', () => {
})
.catch((err) => expect(err.message).to.equal('Invalid request'))
- let unusedAccessCode = await createAuthorizationCode({
+ const unusedAccessCode = await createAuthorizationCode({
appId: myTestApp.id,
userId: actor.id,
challenge
diff --git a/packages/server/modules/auth/tests/appsGrapql.spec.js b/packages/server/modules/auth/tests/appsGrapql.spec.js
index 802008124..835a48ea2 100644
--- a/packages/server/modules/auth/tests/appsGrapql.spec.js
+++ b/packages/server/modules/auth/tests/appsGrapql.spec.js
@@ -211,7 +211,7 @@ describe('GraphQL @apps-api', () => {
const getMyAppsQuery =
'query usersApps{ user { createdApps { id name description } } }'
- let res = await sendRequest(testToken, { query: getMyAppsQuery })
+ const res = await sendRequest(testToken, { query: getMyAppsQuery })
expect(res.body.errors).to.not.exist
expect(res.body.data.user.createdApps).to.be.an('array')
expect(res.body.data.user.createdApps.length).to.equal(3)
@@ -246,7 +246,7 @@ describe('GraphQL @apps-api', () => {
const query =
'query myAuthApps{ user { authorizedApps { id name description termsAndConditionsLink logo author { id name } } } }'
- let res = await sendRequest(testToken, { query })
+ const res = await sendRequest(testToken, { query })
expect(res.body.errors).to.not.exist
expect(res.body.data.user.authorizedApps).to.be.an('array')
diff --git a/packages/server/modules/auth/tests/auth.spec.js b/packages/server/modules/auth/tests/auth.spec.js
index f60ee6589..e98468f41 100644
--- a/packages/server/modules/auth/tests/auth.spec.js
+++ b/packages/server/modules/auth/tests/auth.spec.js
@@ -61,8 +61,8 @@ describe('Auth @auth', () => {
})
.expect(400)
- let user = await getUserByEmail({ email: 'spam@speckle.systems' })
- let inviteId = await createAndSendInvite({
+ const user = await getUserByEmail({ email: 'spam@speckle.systems' })
+ const inviteId = await createAndSendInvite({
email: 'bunny@speckle.systems',
inviterId: user.id
})
@@ -104,7 +104,7 @@ describe('Auth @auth', () => {
})
it('Should add resource access to newly registered user if the invite contains it', async () => {
- let user = await getUserByEmail({ email: 'spam@speckle.systems' })
+ const user = await getUserByEmail({ email: 'spam@speckle.systems' })
const streamId = await createStream({ ownerId: user.id })
const inviteId = await createAndSendInvite({
email: 'new@stream.collaborator',
@@ -144,21 +144,21 @@ describe('Auth @auth', () => {
})
it('Should redirect login with access code (speckle frontend)', async () => {
- let challenge = 'random'
+ const challenge = 'random'
- let res = await request(app)
+ const res = await request(app)
.post(`/auth/local/login?challenge=${challenge}`)
.send({ email: 'spam@speckle.systems', password: 'roll saving throws' })
.expect(302)
- let accessCode = res.headers.location.split('access_code=')[1]
+ const accessCode = res.headers.location.split('access_code=')[1]
expect(accessCode).to.be.a('string')
})
it('Should redirect registration with access code (speckle frontend)', async () => {
- let challenge = 'random'
+ const challenge = 'random'
- let res = await request(app)
+ const res = await request(app)
.post(`/auth/local/register?challenge=${challenge}`)
.send({
email: 'spam_2@speckle.systems',
@@ -168,23 +168,23 @@ describe('Auth @auth', () => {
})
.expect(302)
- let accessCode = res.headers.location.split('access_code=')[1]
+ const accessCode = res.headers.location.split('access_code=')[1]
expect(accessCode).to.be.a('string')
})
it('Should exchange a token for an access code (speckle frontend)', async () => {
- let appId = 'spklwebapp'
- let appSecret = 'spklwebapp'
- let challenge = 'spklwebapp'
+ const appId = 'spklwebapp'
+ const appSecret = 'spklwebapp'
+ const challenge = 'spklwebapp'
- let res = await request(app)
+ const res = await request(app)
.post(`/auth/local/login?challenge=${challenge}`)
.send({ email: 'spam@speckle.systems', password: 'roll saving throws' })
.expect(302)
- let accessCode = res.headers.location.split('access_code=')[1]
+ const accessCode = res.headers.location.split('access_code=')[1]
- let tokenResponse = await request(app)
+ const tokenResponse = await request(app)
.post('/auth/token')
.send({ appId, appSecret, accessCode, challenge })
.expect(200)
@@ -194,14 +194,14 @@ describe('Auth @auth', () => {
})
it('Should not exchange a token for an access code with a different app', async () => {
- let appId = 'sdm'
- let challenge = 'random'
+ const appId = 'sdm'
+ const challenge = 'random'
- let res = await request(app)
+ const res = await request(app)
.post(`/auth/local/login?challenge=${challenge}`)
.send({ email: 'spam@speckle.systems', password: 'roll saving throws' })
.expect(302)
- let accessCode = res.headers.location.split('access_code=')[1]
+ const accessCode = res.headers.location.split('access_code=')[1]
// Swap the app
await request(app)
@@ -211,13 +211,13 @@ describe('Auth @auth', () => {
})
it('Should not exchange a token for an access code with a wrong challenge', async () => {
- let appId = 'sdm'
- let challenge = 'random'
- let res = await request(app)
+ const appId = 'sdm'
+ const challenge = 'random'
+ const res = await request(app)
.post(`/auth/local/login?challenge=${challenge}`)
.send({ email: 'spam@speckle.systems', password: 'roll saving throws' })
.expect(302)
- let accessCode = res.headers.location.split('access_code=')[1]
+ const accessCode = res.headers.location.split('access_code=')[1]
// Spoof the challenge
await request(app)
@@ -227,13 +227,13 @@ describe('Auth @auth', () => {
})
it('Should not exchange a token for an access code with a wrong secret', async () => {
- let appId = 'sdm'
- let challenge = 'random'
- let res = await request(app)
+ const appId = 'sdm'
+ const challenge = 'random'
+ const res = await request(app)
.post(`/auth/local/login?challenge=${challenge}`)
.send({ email: 'spam@speckle.systems', password: 'roll saving throws' })
.expect(302)
- let accessCode = res.headers.location.split('access_code=')[1]
+ const accessCode = res.headers.location.split('access_code=')[1]
// Spoof the secret
await request(app)
@@ -243,29 +243,29 @@ describe('Auth @auth', () => {
})
it('Should not exchange a token for an access code with a garbage input', async () => {
- let challenge = 'random'
- let res = await request(app)
+ const challenge = 'random'
+ const res = await request(app)
.post(`/auth/local/login?challenge=${challenge}`)
.send({ email: 'spam@speckle.systems', password: 'roll saving throws' })
.expect(302)
- let accessCode = res.headers.location.split('access_code=')[1]
+ const accessCode = res.headers.location.split('access_code=')[1]
// Send pure garbage
await request(app).post('/auth/token').send({ accessCode, challenge }).expect(401)
})
it('Should refresh a token (speckle frontend)', async () => {
- let appId = 'spklwebapp'
- let challenge = 'random'
+ const appId = 'spklwebapp'
+ const challenge = 'random'
- let res = await request(app)
+ const res = await request(app)
.post(`/auth/local/login?challenge=${challenge}`)
.send({ email: 'spam@speckle.systems', password: 'roll saving throws' })
.expect(302)
- let accessCode = res.headers.location.split('access_code=')[1]
+ const accessCode = res.headers.location.split('access_code=')[1]
- let tokenResponse = await request(app)
+ const tokenResponse = await request(app)
.post('/auth/token')
.send({ appId, appSecret: appId, accessCode, challenge })
.expect(200)
@@ -273,7 +273,7 @@ describe('Auth @auth', () => {
expect(tokenResponse.body.token).to.exist
expect(tokenResponse.body.refreshToken).to.exist
- let refreshTokenResponse = await request(app)
+ const refreshTokenResponse = await request(app)
.post('/auth/token')
.send({
refreshToken: tokenResponse.body.refreshToken,
@@ -287,17 +287,17 @@ describe('Auth @auth', () => {
})
it('Should not refresh a token with bad juju inputs (speckle frontend)', async () => {
- let appId = 'spklwebapp'
- let challenge = 'random'
+ const appId = 'spklwebapp'
+ const challenge = 'random'
- let res = await request(app)
+ const res = await request(app)
.post(`/auth/local/login?challenge=${challenge}`)
.send({ email: 'spam@speckle.systems', password: 'roll saving throws' })
.expect(302)
- let accessCode = res.headers.location.split('access_code=')[1]
+ const accessCode = res.headers.location.split('access_code=')[1]
- let tokenResponse = await request(app)
+ const tokenResponse = await request(app)
.post('/auth/token')
.send({ appId, appSecret: appId, accessCode, challenge })
.expect(200)
@@ -329,17 +329,17 @@ describe('Auth @auth', () => {
let frontendCredentials
it('Should get an access code (redirected response)', async () => {
- let appId = 'spklwebapp'
- let challenge = 'random'
+ const appId = 'spklwebapp'
+ const challenge = 'random'
- let res = await request(app)
+ const res = await request(app)
.post(`/auth/local/login?challenge=${challenge}`)
.send({ email: 'spam@speckle.systems', password: 'roll saving throws' })
.expect(302)
- let accessCode = res.headers.location.split('access_code=')[1]
+ const accessCode = res.headers.location.split('access_code=')[1]
- let tokenResponse = await request(app)
+ const tokenResponse = await request(app)
.post('/auth/token')
.send({ appId, appSecret: appId, accessCode, challenge })
.expect(200)
@@ -349,7 +349,7 @@ describe('Auth @auth', () => {
frontendCredentials = tokenResponse.body
- let response = await request(app)
+ const response = await request(app)
.get(
`/auth/accesscode?appId=explorer&challenge=${crs({ length: 20 })}&token=${
tokenResponse.body.token
@@ -408,7 +408,7 @@ describe('Auth @auth', () => {
})
it('Should rate-limit user creation', async () => {
- let newUser = async (id, ip, expectCode) => {
+ const newUser = async (id, ip, expectCode) => {
await request(app)
.post(`/auth/local/register?challenge=test&suuid=test`)
.set('CF-Connecting-IP', ip)
@@ -421,7 +421,7 @@ describe('Auth @auth', () => {
.expect(expectCode)
}
- let oldLimit = LIMITS.USER_CREATE
+ const oldLimit = LIMITS.USER_CREATE
LIMITS.USER_CREATE = 5
// 5 users should be fine
for (let i = 0; i < 5; i++) {
diff --git a/packages/server/modules/comments/graph/resolvers/comments.js b/packages/server/modules/comments/graph/resolvers/comments.js
index 9bc934770..a6af6ee45 100644
--- a/packages/server/modules/comments/graph/resolvers/comments.js
+++ b/packages/server/modules/comments/graph/resolvers/comments.js
@@ -36,7 +36,7 @@ module.exports = {
userId: context.userId,
auth: context.auth
})
- let comment = await getComment({ id: args.id, userId: context.userId })
+ const comment = await getComment({ id: args.id, userId: context.userId })
if (comment.streamId !== args.streamId)
throw new ForbiddenError('You do not have access to this comment.')
return comment
@@ -119,7 +119,7 @@ module.exports = {
async commentCreate(parent, args, context) {
await authorizeResolver(context.userId, args.input.streamId, 'stream:reviewer')
- let id = await createComment({ userId: context.userId, input: args.input })
+ const id = await createComment({ userId: context.userId, input: args.input })
await pubsub.publish('COMMENT_ACTIVITY', {
commentActivity: {
@@ -172,7 +172,7 @@ module.exports = {
async commentReply(parent, args, context) {
await authorizeResolver(context.userId, args.input.streamId, 'stream:reviewer')
- let id = await createCommentReply({
+ const id = await createCommentReply({
authorId: context.userId,
parentCommentId: args.input.parentComment,
streamId: args.input.streamId,
@@ -229,7 +229,7 @@ module.exports = {
}
})
})
- for (let res of variables.resourceIds) {
+ for (const res of variables.resourceIds) {
if (
payload.resourceIds.includes(res) &&
payload.streamId === variables.streamId
diff --git a/packages/server/modules/comments/index.js b/packages/server/modules/comments/index.js
index 066cd4e1d..414d54c3f 100644
--- a/packages/server/modules/comments/index.js
+++ b/packages/server/modules/comments/index.js
@@ -1,4 +1,4 @@
-let debug = require('debug')
+const debug = require('debug')
exports.init = async () => {
debug('speckle:modules')('🗣 Init comments module (barebones)')
diff --git a/packages/server/modules/comments/services/index.js b/packages/server/modules/comments/services/index.js
index f9977b26a..ab5b1dbc0 100644
--- a/packages/server/modules/comments/services/index.js
+++ b/packages/server/modules/comments/services/index.js
@@ -10,16 +10,16 @@ const CommentViews = () => knex('comment_views')
module.exports = {
async streamResourceCheck({ streamId, resources }) {
// this itches - a for loop with queries... but okay let's hit the road now
- for (let res of resources) {
+ for (const res of resources) {
// The switch of doom: if something throws, we're out
switch (res.resourceType) {
case 'stream':
// Stream validity is already checked, so we can just go ahead.
break
case 'commit': {
- let linkage = await knex('stream_commits')
+ const linkage = await knex('stream_commits')
.select()
- .where({ commitId: res.resourceId, streamId: streamId })
+ .where({ commitId: res.resourceId, streamId })
.first()
if (!linkage) throw new Error('Commit not found')
if (linkage.streamId !== streamId)
@@ -29,15 +29,15 @@ module.exports = {
break
}
case 'object': {
- let obj = await knex('objects')
+ const obj = await knex('objects')
.select()
- .where({ id: res.resourceId, streamId: streamId })
+ .where({ id: res.resourceId, streamId })
.first()
if (!obj) throw new Error('Object not found')
break
}
case 'comment': {
- let comment = await Comments().where({ id: res.resourceId }).first()
+ const comment = await Comments().where({ id: res.resourceId }).first()
if (!comment) throw new Error('Comment not found')
if (comment.streamId !== streamId)
throw new Error(
@@ -69,7 +69,7 @@ module.exports = {
if (stream && stream.resourceId !== input.streamId)
throw Error("Input streamId doesn't match the stream resource.resourceId")
- let comment = { ...input }
+ const comment = { ...input }
delete comment.resources
@@ -82,7 +82,7 @@ module.exports = {
streamId: input.streamId,
resources: input.resources
})
- for (let res of input.resources) {
+ for (const res of input.resources) {
await CommentLinks().insert({
commentId: comment.id,
resourceId: res.resourceId,
@@ -98,7 +98,7 @@ module.exports = {
},
async createCommentReply({ authorId, parentCommentId, streamId, text, data }) {
- let comment = {
+ const comment = {
id: crs({ length: 10 }),
authorId,
text,
@@ -108,9 +108,9 @@ module.exports = {
}
await Comments().insert(comment)
try {
- let commentLink = { resourceId: parentCommentId, resourceType: 'comment' }
+ const commentLink = { resourceId: parentCommentId, resourceType: 'comment' }
await module.exports.streamResourceCheck({
- streamId: streamId,
+ streamId,
resources: [commentLink]
})
await CommentLinks().insert({ commentId: comment.id, ...commentLink })
@@ -133,15 +133,15 @@ module.exports = {
},
async viewComment({ userId, commentId }) {
- let query = CommentViews()
- .insert({ commentId: commentId, userId: userId, viewedAt: knex.fn.now() })
+ const query = CommentViews()
+ .insert({ commentId, userId, viewedAt: knex.fn.now() })
.onConflict(knex.raw('("commentId","userId")'))
.merge()
await query
},
async getComment({ id, userId = null }) {
- let query = Comments().select('*').joinRaw(`
+ const query = Comments().select('*').joinRaw(`
join(
select cl."commentId" as id, JSON_AGG(json_build_object('resourceId', cl."resourceId", 'resourceType', cl."resourceType")) as resources
from comment_links cl
@@ -155,20 +155,20 @@ module.exports = {
})
}
query.where({ id }).first()
- let res = await query
+ const res = await query
return res
},
async archiveComment({ commentId, userId, streamId, archived = true }) {
- let comment = await Comments().where({ id: commentId }).first()
+ const comment = await Comments().where({ id: commentId }).first()
if (!comment)
throw new Error(
`No comment ${commentId} exists, cannot change its archival status`
)
- let aclEntry = await knex('stream_acl')
+ const aclEntry = await knex('stream_acl')
.select()
- .where({ resourceId: streamId, userId: userId })
+ .where({ resourceId: streamId, userId })
.first()
if (comment.authorId !== userId) {
@@ -189,7 +189,7 @@ module.exports = {
streamId,
archived = false
}) {
- let query = knex.with('comms', (cte) => {
+ const query = knex.with('comms', (cte) => {
cte.select().distinctOn('id').from('comments')
cte.join('comment_links', 'comments.id', '=', 'commentId')
@@ -204,12 +204,12 @@ module.exports = {
if (resources && resources.length !== 0) {
cte.where((q) => {
// link resources
- for (let res of resources) {
+ for (const res of resources) {
q.orWhere('comment_links.resourceId', '=', res.resourceId)
}
})
} else {
- cte.where({ streamId: streamId })
+ cte.where({ streamId })
}
if (!replies) {
cte.whereNull('parentComment')
@@ -238,9 +238,9 @@ module.exports = {
query.orderBy('createdAt', 'desc')
query.limit(limit ?? 10)
- let rows = await query
- let totalCount = rows && rows.length > 0 ? parseInt(rows[0].total_count) : 0
- let nextCursor = rows && rows.length > 0 ? rows[rows.length - 1].createdAt : null
+ const rows = await query
+ const totalCount = rows && rows.length > 0 ? parseInt(rows[0].total_count) : 0
+ const nextCursor = rows && rows.length > 0 ? rows[rows.length - 1].createdAt : null
return {
items: rows,
@@ -250,7 +250,7 @@ module.exports = {
},
async getResourceCommentCount({ resourceId }) {
- let [res] = await CommentLinks()
+ const [res] = await CommentLinks()
.count('commentId')
.where({ resourceId })
.join('comments', 'comments.id', '=', 'commentId')
@@ -263,7 +263,7 @@ module.exports = {
},
async getStreamCommentCount({ streamId }) {
- let [res] = await Comments()
+ const [res] = await Comments()
.count('id')
.where({ streamId })
.andWhere({ archived: false })
diff --git a/packages/server/modules/comments/tests/comments.spec.js b/packages/server/modules/comments/tests/comments.spec.js
index b77fde4e7..2aafe4fd1 100644
--- a/packages/server/modules/comments/tests/comments.spec.js
+++ b/packages/server/modules/comments/tests/comments.spec.js
@@ -22,28 +22,28 @@ const {
} = require('../services')
describe('Comments @comments', () => {
- let user = {
+ const user = {
name: 'The comment wizard',
email: 'comment@wizard.ry',
password: 'i did not like Rivendel wine :('
}
- let otherUser = {
+ const otherUser = {
name: 'Fondalf The Brey',
email: 'totalnotfakegandalf87@mordor.com',
password: 'what gandalf puts in his pipe stays in his pipe'
}
- let stream = {
+ const stream = {
name: 'Commented stream',
description: 'Chit chats over here'
}
- let testObject1 = {
+ const testObject1 = {
foo: 'bar'
}
- let testObject2 = {
+ const testObject2 = {
foo: 'barbar',
baz: 123
}
@@ -101,11 +101,11 @@ describe('Comments @comments', () => {
it('Should not be able to comment resources that do not belong to the input streamId', async () => {
// Stream A belongs to user
- let streamA = { name: 'Stream A' }
+ const streamA = { name: 'Stream A' }
streamA.id = await createStream({ ...streamA, ownerId: user.id })
- let objA = { foo: 'bar' }
+ const objA = { foo: 'bar' }
objA.id = await createObject(streamA.id, objA)
- let commA = {}
+ const commA = {}
commA.id = await createCommitByBranchName({
streamId: streamA.id,
branchName: 'main',
@@ -115,11 +115,11 @@ describe('Comments @comments', () => {
})
// Stream B belongs to otherUser
- let streamB = { name: 'Stream B' }
+ const streamB = { name: 'Stream B' }
streamB.id = await createStream({ ...streamB, ownerId: otherUser.id })
- let objB = { qux: 'mux' }
+ const objB = { qux: 'mux' }
objB.id = await createObject(streamB.id, objB)
- let commB = {}
+ const commB = {}
commB.id = await createCommitByBranchName({
streamId: streamB.id,
branchName: 'main',
@@ -200,11 +200,11 @@ describe('Comments @comments', () => {
})
it('Should return comment counts for streams, commits and objects', async () => {
- let stream = { name: 'Bean Counter' }
+ const stream = { name: 'Bean Counter' }
stream.id = await createStream({ ...stream, ownerId: user.id })
- let obj = { foo: 'bar' }
+ const obj = { foo: 'bar' }
obj.id = await createObject(stream.id, obj)
- let commit = {}
+ const commit = {}
commit.id = await createCommitByBranchName({
streamId: stream.id,
branchName: 'main',
@@ -213,8 +213,8 @@ describe('Comments @comments', () => {
authorId: user.id
})
- let commCount = 10
- let commentIds = []
+ const commCount = 10
+ const commentIds = []
for (let i = 0; i < commCount; i++) {
// creates 1 * commCount comments linked to commit and object
commentIds.push(
@@ -291,11 +291,11 @@ describe('Comments @comments', () => {
const commitCount = await getResourceCommentCount({ resourceId: commit.id })
expect(commitCount).to.equal(commCount * 2)
- let streamOther = { name: 'Bean Counter' }
+ const streamOther = { name: 'Bean Counter' }
streamOther.id = await createStream({ ...streamOther, ownerId: user.id })
- let objOther = { 'are you bored': 'yes' }
+ const objOther = { 'are you bored': 'yes' }
objOther.id = await createObject(streamOther.id, objOther)
- let commitOther = {}
+ const commitOther = {}
commitOther.id = await createCommitByBranchName({
streamId: streamOther.id,
branchName: 'main',
@@ -521,8 +521,8 @@ describe('Comments @comments', () => {
]
})
- let ids = comments.items.map((c) => c.id)
- let set = new Set(ids)
+ const ids = comments.items.map((c) => c.id)
+ const set = new Set(ids)
expect(set.size).to.equal(ids.length)
// Note: since we switched to an "or" clause, this does not apply anymore.
@@ -538,7 +538,7 @@ describe('Comments @comments', () => {
testObject: 'something completely different'
})
- let createdComments = []
+ const createdComments = []
const commentCount = 10
for (let i = 0; i < commentCount; i++) {
createdComments.push(
@@ -831,7 +831,7 @@ describe('Comments @comments', () => {
data: { justSome: crs({ length: 10 }) }
}
})
- let archiveResult = await archiveComment({
+ const archiveResult = await archiveComment({
commentId: otherUsersCommentId,
userId: user.id,
streamId: stream.id
diff --git a/packages/server/modules/core/graph/resolvers/apitoken.js b/packages/server/modules/core/graph/resolvers/apitoken.js
index 33e24fd01..2a141ff6b 100644
--- a/packages/server/modules/core/graph/resolvers/apitoken.js
+++ b/packages/server/modules/core/graph/resolvers/apitoken.js
@@ -15,7 +15,7 @@ module.exports = {
if (parent.id !== context.userId)
throw new ForbiddenError('You can only view your own tokens')
- let tokens = await getUserTokens(context.userId)
+ const tokens = await getUserTokens(context.userId)
return tokens
}
},
diff --git a/packages/server/modules/core/graph/resolvers/branches.js b/packages/server/modules/core/graph/resolvers/branches.js
index 3203c2fbf..ebf6e7e9b 100644
--- a/packages/server/modules/core/graph/resolvers/branches.js
+++ b/packages/server/modules/core/graph/resolvers/branches.js
@@ -34,7 +34,7 @@ module.exports = {
throw new UserInputError(
'Cannot return more than 100 items, please use pagination.'
)
- let { items, cursor, totalCount } = await getBranchesByStreamId({
+ const { items, cursor, totalCount } = await getBranchesByStreamId({
streamId: parent.id,
limit: args.limit,
cursor: args.cursor
@@ -62,7 +62,7 @@ module.exports = {
'stream:contributor'
)
- let id = await createBranch({ ...args.branch, authorId: context.userId })
+ const id = await createBranch({ ...args.branch, authorId: context.userId })
if (id) {
await saveActivity({
@@ -71,11 +71,11 @@ module.exports = {
resourceId: id,
actionType: 'branch_create',
userId: context.userId,
- info: { branch: { ...args.branch, id: id } },
+ info: { branch: { ...args.branch, id } },
message: `Branch created: '${args.branch.name}' (${id})`
})
await pubsub.publish(BRANCH_CREATED, {
- branchCreated: { ...args.branch, id: id, authorId: context.userId },
+ branchCreated: { ...args.branch, id, authorId: context.userId },
streamId: args.branch.streamId
})
}
@@ -90,7 +90,7 @@ module.exports = {
'stream:contributor'
)
- let oldValue = await getBranchById({ id: args.branch.id })
+ const oldValue = await getBranchById({ id: args.branch.id })
if (!oldValue) {
throw new ApolloError('Branch not found.')
}
@@ -100,7 +100,7 @@ module.exports = {
'The branch id and stream id do not match. Please check your inputs.'
)
- let updated = await updateBranch({ ...args.branch })
+ const updated = await updateBranch({ ...args.branch })
if (updated) {
await saveActivity({
@@ -123,13 +123,13 @@ module.exports = {
},
async branchDelete(parent, args, context) {
- let role = await authorizeResolver(
+ const role = await authorizeResolver(
context.userId,
args.branch.streamId,
'stream:contributor'
)
- let branch = await getBranchById({ id: args.branch.id })
+ const branch = await getBranchById({ id: args.branch.id })
if (!branch) {
throw new ApolloError('Branch not found.')
}
@@ -144,7 +144,7 @@ module.exports = {
'Only the branch creator or stream owners are allowed to delete branches.'
)
- let deleted = await deleteBranchById({
+ const deleted = await deleteBranchById({
id: args.branch.id,
streamId: args.branch.streamId
})
@@ -185,7 +185,7 @@ module.exports = {
async (payload, variables, context) => {
await authorizeResolver(context.userId, payload.streamId, 'stream:reviewer')
- let streamMatch = payload.streamId === variables.streamId
+ const streamMatch = payload.streamId === variables.streamId
if (streamMatch && variables.branchId) {
return payload.branchId === variables.branchId
}
diff --git a/packages/server/modules/core/graph/resolvers/commits.js b/packages/server/modules/core/graph/resolvers/commits.js
index 818e54e15..1bbcab851 100644
--- a/packages/server/modules/core/graph/resolvers/commits.js
+++ b/packages/server/modules/core/graph/resolvers/commits.js
@@ -41,13 +41,13 @@ module.exports = {
throw new UserInputError(
'Cannot return more than 100 items, please use pagination.'
)
- let { commits: items, cursor } = await getCommitsByStreamId({
+ const { commits: items, cursor } = await getCommitsByStreamId({
streamId: parent.id,
limit: args.limit,
cursor: args.cursor,
ignoreGlobalsBranch: true
})
- let totalCount = await getCommitsTotalCountByStreamId({
+ const totalCount = await getCommitsTotalCountByStreamId({
streamId: parent.id,
ignoreGlobalsBranch: true
})
@@ -57,25 +57,25 @@ module.exports = {
async commit(parent, args) {
if (!args.id) {
- let { commits } = await getCommitsByStreamId({ streamId: parent.id, limit: 1 })
+ const { commits } = await getCommitsByStreamId({ streamId: parent.id, limit: 1 })
if (commits.length !== 0) return commits[0]
throw new ApolloError(
'Cannot retrieve commit (there are no commits in this stream).'
)
}
- let c = await getCommitById({ streamId: parent.id, id: args.id })
+ const c = await getCommitById({ streamId: parent.id, id: args.id })
return c
}
},
User: {
async commits(parent, args, context) {
- let publicOnly = context.userId !== parent.id
- let totalCount = await getCommitsTotalCountByUserId({ userId: parent.id })
+ const publicOnly = context.userId !== parent.id
+ const totalCount = await getCommitsTotalCountByUserId({ userId: parent.id })
if (args.limit && args.limit > 100)
throw new UserInputError(
'Cannot return more than 100 items, please use pagination.'
)
- let { commits: items, cursor } = await getCommitsByUserId({
+ const { commits: items, cursor } = await getCommitsByUserId({
userId: parent.id,
limit: args.limit,
cursor: args.cursor,
@@ -91,12 +91,12 @@ module.exports = {
throw new UserInputError(
'Cannot return more than 100 items, please use pagination.'
)
- let { commits, cursor } = await getCommitsByBranchId({
+ const { commits, cursor } = await getCommitsByBranchId({
branchId: parent.id,
limit: args.limit,
cursor: args.cursor
})
- let totalCount = await getCommitsTotalCountByBranchId({ branchId: parent.id })
+ const totalCount = await getCommitsTotalCountByBranchId({ branchId: parent.id })
return { items: commits, totalCount, cursor }
}
@@ -115,7 +115,7 @@ module.exports = {
throw new Error('Blocked due to rate-limiting. Try again later')
}
- let id = await createCommitByBranchName({
+ const id = await createCommitByBranchName({
...args.commit,
authorId: context.userId
})
@@ -126,11 +126,11 @@ module.exports = {
resourceId: id,
actionType: 'commit_create',
userId: context.userId,
- info: { id: id, commit: args.commit },
+ info: { id, commit: args.commit },
message: `Commit created on branch ${args.commit.branchName}: ${id} (${args.commit.message})`
})
await pubsub.publish(COMMIT_CREATED, {
- commitCreated: { ...args.commit, id: id, authorId: context.userId },
+ commitCreated: { ...args.commit, id, authorId: context.userId },
streamId: args.commit.streamId
})
}
@@ -145,14 +145,14 @@ module.exports = {
'stream:contributor'
)
- let commit = await getCommitById({
+ const commit = await getCommitById({
streamId: args.commit.streamId,
id: args.commit.id
})
if (commit.authorId !== context.userId)
throw new ForbiddenError('Only the author of a commit may update it.')
- let updated = await updateCommit({ ...args.commit })
+ const updated = await updateCommit({ ...args.commit })
if (updated) {
await saveActivity({
streamId: args.commit.streamId,
@@ -175,7 +175,7 @@ module.exports = {
async commitReceive(parent, args, context) {
// if stream is private, check if the user has access to it
- let stream = await getStream({ streamId: args.input.streamId })
+ const stream = await getStream({ streamId: args.input.streamId })
if (!stream.public) {
await authorizeResolver(context.userId, args.input.streamId, 'stream:reviewer')
@@ -185,7 +185,7 @@ module.exports = {
streamId: args.input.streamId,
id: args.input.commitId
})
- let user = await getUser(context.userId)
+ const user = await getUser(context.userId)
await saveActivity({
streamId: args.input.streamId,
@@ -210,14 +210,14 @@ module.exports = {
'stream:contributor'
)
- let commit = await getCommitById({
+ const commit = await getCommitById({
streamId: args.commit.streamId,
id: args.commit.id
})
if (commit.authorId !== context.userId)
throw new ForbiddenError('Only the author of a commit may delete it.')
- let deleted = await deleteCommit({ id: args.commit.id })
+ const deleted = await deleteCommit({ id: args.commit.id })
if (deleted) {
await saveActivity({
streamId: args.commit.streamId,
@@ -225,7 +225,7 @@ module.exports = {
resourceId: args.commit.id,
actionType: 'commit_delete',
userId: context.userId,
- info: { commit: commit },
+ info: { commit },
message: `Commit deleted: ${args.commit.id}`
})
await pubsub.publish(COMMIT_DELETED, {
@@ -254,7 +254,7 @@ module.exports = {
async (payload, variables, context) => {
await authorizeResolver(context.userId, payload.streamId, 'stream:reviewer')
- let streamMatch = payload.streamId === variables.streamId
+ const streamMatch = payload.streamId === variables.streamId
if (streamMatch && variables.commitId) {
return payload.commitId === variables.commitId
}
diff --git a/packages/server/modules/core/graph/resolvers/objects.js b/packages/server/modules/core/graph/resolvers/objects.js
index 8f5898c10..0580faa6e 100644
--- a/packages/server/modules/core/graph/resolvers/objects.js
+++ b/packages/server/modules/core/graph/resolvers/objects.js
@@ -16,7 +16,7 @@ const {
module.exports = {
Stream: {
async object(parent, args) {
- let obj = await getObject({ streamId: parent.id, objectId: args.id })
+ const obj = await getObject({ streamId: parent.id, objectId: args.id })
obj.streamId = parent.id
return obj
}
@@ -25,7 +25,7 @@ module.exports = {
async children(parent, args) {
// The simple query branch
if (!args.query && !args.orderBy) {
- let result = await getObjectChildren({
+ const result = await getObjectChildren({
streamId: parent.streamId,
objectId: parent.id,
limit: args.limit,
@@ -42,7 +42,7 @@ module.exports = {
}
// The complex query branch
- let result = await getObjectChildrenQuery({
+ const result = await getObjectChildrenQuery({
streamId: parent.streamId,
objectId: parent.id,
limit: args.limit,
@@ -66,7 +66,7 @@ module.exports = {
'stream:contributor'
)
- let ids = await createObjects(args.objectInput.streamId, args.objectInput.objects)
+ const ids = await createObjects(args.objectInput.streamId, args.objectInput.objects)
return ids
}
}
diff --git a/packages/server/modules/core/graph/resolvers/streams.js b/packages/server/modules/core/graph/resolvers/streams.js
index 409d96ec1..7ec411850 100644
--- a/packages/server/modules/core/graph/resolvers/streams.js
+++ b/packages/server/modules/core/graph/resolvers/streams.js
@@ -63,9 +63,9 @@ const _deleteStream = async (parent, args, context) => {
})
// Notify all stream users
- let users = await getStreamUsers({ streamId: args.id })
+ const users = await getStreamUsers({ streamId: args.id })
- for (let user of users) {
+ for (const user of users) {
await pubsub.publish(USER_STREAM_REMOVED, {
userStreamRemoved: { id: args.id },
ownerId: user.id
@@ -83,7 +83,7 @@ const _deleteStream = async (parent, args, context) => {
module.exports = {
Query: {
async stream(parent, args, context) {
- let stream = await getStream({ streamId: args.id, userId: context.userId })
+ const stream = await getStream({ streamId: args.id, userId: context.userId })
if (!stream) throw new ApolloError('Stream not found')
if (!stream.isPublic && context.auth === false)
@@ -102,27 +102,27 @@ module.exports = {
if (args.limit && args.limit > 50)
throw new UserInputError('Cannot return more than 50 items at a time.')
- let totalCount = await getUserStreamsCount({
+ const totalCount = await getUserStreamsCount({
userId: context.userId,
publicOnly: false,
searchQuery: args.query
})
- let { cursor, streams } = await getUserStreams({
+ const { cursor, streams } = await getUserStreams({
userId: context.userId,
limit: args.limit,
cursor: args.cursor,
publicOnly: false,
searchQuery: args.query
})
- return { totalCount, cursor: cursor, items: streams }
+ return { totalCount, cursor, items: streams }
},
async adminStreams(parent, args) {
if (args.limit && args.limit > 50)
throw new UserInputError('Cannot return more than 50 items at a time.')
- let { streams, totalCount } = await getStreams({
+ const { streams, totalCount } = await getStreams({
offset: args.offset,
limit: args.limit,
orderBy: args.orderBy,
@@ -136,7 +136,7 @@ module.exports = {
Stream: {
async collaborators(parent) {
- let users = await getStreamUsers({ streamId: parent.id })
+ const users = await getStreamUsers({ streamId: parent.id })
return users
},
@@ -157,17 +157,17 @@ module.exports = {
if (args.limit && args.limit > 50)
throw new UserInputError('Cannot return more than 50 items.')
// Return only the user's public streams if parent.id !== context.userId
- let publicOnly = parent.id !== context.userId
- let totalCount = await getUserStreamsCount({ userId: parent.id, publicOnly })
+ const publicOnly = parent.id !== context.userId
+ const totalCount = await getUserStreamsCount({ userId: parent.id, publicOnly })
- let { cursor, streams } = await getUserStreams({
+ const { cursor, streams } = await getUserStreams({
userId: parent.id,
limit: args.limit,
cursor: args.cursor,
- publicOnly: publicOnly
+ publicOnly
})
- return { totalCount, cursor: cursor, items: streams }
+ return { totalCount, cursor, items: streams }
},
async favoriteStreams(parent, args, context) {
@@ -196,7 +196,7 @@ module.exports = {
throw new Error('Blocked due to rate-limiting. Try again later')
}
- let id = await createStream({ ...args.stream, ownerId: context.userId })
+ const id = await createStream({ ...args.stream, ownerId: context.userId })
await saveActivity({
streamId: id,
@@ -208,7 +208,7 @@ module.exports = {
message: `Stream '${args.stream.name}' created`
})
await pubsub.publish(USER_STREAM_ADDED, {
- userStreamAdded: { id: id, ...args.stream },
+ userStreamAdded: { id, ...args.stream },
ownerId: context.userId
})
return id
@@ -217,8 +217,8 @@ module.exports = {
async streamUpdate(parent, args, context) {
await authorizeResolver(context.userId, args.stream.id, 'stream:owner')
- let oldValue = await getStream({ streamId: args.stream.id })
- let update = {
+ const oldValue = await getStream({ streamId: args.stream.id })
+ const update = {
streamId: args.stream.id,
name: args.stream.name,
description: args.stream.description,
@@ -256,7 +256,7 @@ module.exports = {
async streamsDelete(parent, args, context, info) {
const results = await Promise.all(
args.ids.map(async (id) => {
- let newArgs = { ...args }
+ const newArgs = { ...args }
newArgs.id = id
return await _deleteStream(parent, newArgs, context, info)
})
@@ -274,12 +274,12 @@ module.exports = {
if (context.userId === args.permissionParams.userId)
throw new Error('You cannot set roles for yourself.')
- let params = {
+ const params = {
streamId: args.permissionParams.streamId,
userId: args.permissionParams.userId,
role: args.permissionParams.role.toLowerCase() || 'read'
}
- let granted = await grantPermissionsStream(params)
+ const granted = await grantPermissionsStream(params)
if (granted) {
await saveActivity({
@@ -313,7 +313,7 @@ module.exports = {
if (context.userId === args.permissionParams.userId)
throw new ApolloError('You cannot revoke your own access rights to a stream.')
- let revoked = await revokePermissionsStream({ ...args.permissionParams })
+ const revoked = await revokePermissionsStream({ ...args.permissionParams })
if (revoked) {
await saveActivity({
diff --git a/packages/server/modules/core/graph/resolvers/users.js b/packages/server/modules/core/graph/resolvers/users.js
index 874166897..a772ec8ad 100644
--- a/packages/server/modules/core/graph/resolvers/users.js
+++ b/packages/server/modules/core/graph/resolvers/users.js
@@ -44,8 +44,8 @@ module.exports = {
async users(parent, args, context) {
await validateServerRole(context, 'server:admin')
await validateScopes(context.scopes, 'users:read')
- let users = await getUsers(args.limit, args.offset, args.query)
- let totalCount = await countUsers(args.query)
+ const users = await getUsers(args.limit, args.offset, args.query)
+ const totalCount = await countUsers(args.query)
return { totalCount, items: users }
},
@@ -62,17 +62,17 @@ module.exports = {
'Cannot return more than 100 items, please use pagination.'
)
- let { cursor, users } = await searchUsers(
+ const { cursor, users } = await searchUsers(
args.query,
args.limit,
args.cursor,
args.archived
)
- return { cursor: cursor, items: users }
+ return { cursor, items: users }
},
async userPwdStrength(parent, args) {
- let res = zxcvbn(args.pwd)
+ const res = zxcvbn(args.pwd)
return { score: res.score, feedback: res.feedback }
}
},
@@ -106,7 +106,7 @@ module.exports = {
async userUpdate(parent, args, context) {
await validateServerRole(context, 'server:user')
- let oldValue = await getUserById({ userId: context.userId })
+ const oldValue = await getUserById({ userId: context.userId })
await updateUser(context.userId, args.user)
@@ -124,25 +124,25 @@ module.exports = {
},
async userRoleChange(parent, args) {
- let roleChangers = {
+ const roleChangers = {
'server:admin': makeUserAdmin,
'server:user': unmakeUserAdmin,
'server:archived-user': archiveUser
}
- let roleChanger = roleChangers[args.userRoleInput.role]
+ const roleChanger = roleChangers[args.userRoleInput.role]
await roleChanger({ userId: args.userRoleInput.id })
return true
},
async adminDeleteUser(parent, args, context) {
await validateServerRole(context, 'server:admin')
- let user = await getUserByEmail({ email: args.userConfirmation.email })
+ const user = await getUserByEmail({ email: args.userConfirmation.email })
await deleteUser(user.id)
return true
},
async userDelete(parent, args, context) {
- let user = await getUser(context.userId)
+ const user = await getUser(context.userId)
if (args.userConfirmation.email !== user.email) {
throw new UserInputError('Malformed input: emails do not match.')
diff --git a/packages/server/modules/core/index.js b/packages/server/modules/core/index.js
index 4fecce0c0..df735a0ab 100644
--- a/packages/server/modules/core/index.js
+++ b/packages/server/modules/core/index.js
@@ -1,5 +1,5 @@
'use strict'
-let debug = require('debug')
+const debug = require('debug')
const appRoot = require('app-root-path')
const {
registerOrUpdateScope,
@@ -19,13 +19,13 @@ exports.init = async (app) => {
// Register core-based scoeps
const scopes = require('./scopes.js')
- for (let scope of scopes) {
+ for (const scope of scopes) {
await registerOrUpdateScope(scope)
}
// Register core-based roles
const roles = require('./roles.js')
- for (let role of roles) {
+ for (const role of roles) {
await registerOrUpdateRole(role)
}
}
diff --git a/packages/server/modules/core/migrations/20201223120532_add_commit_parents_simplification.js b/packages/server/modules/core/migrations/20201223120532_add_commit_parents_simplification.js
index 4c7092e00..20e76ccdb 100644
--- a/packages/server/modules/core/migrations/20201223120532_add_commit_parents_simplification.js
+++ b/packages/server/modules/core/migrations/20201223120532_add_commit_parents_simplification.js
@@ -7,7 +7,7 @@ exports.up = async (knex) => {
}
exports.down = async (knex) => {
- let hasColumn = await knex.schema.hasColumn('commits', 'parents')
+ const hasColumn = await knex.schema.hasColumn('commits', 'parents')
if (hasColumn)
await knex.schema.alterTable('commits', (table) => {
table.dropColumn('parents')
diff --git a/packages/server/modules/core/migrations/20201230111428_add_scopes_public_field.js b/packages/server/modules/core/migrations/20201230111428_add_scopes_public_field.js
index 60c3470a5..536a0c8a9 100644
--- a/packages/server/modules/core/migrations/20201230111428_add_scopes_public_field.js
+++ b/packages/server/modules/core/migrations/20201230111428_add_scopes_public_field.js
@@ -6,7 +6,7 @@ exports.up = async (knex) => {
}
exports.down = async (knex) => {
- let hasColumn = await knex.schema.hasColumn('scopes', 'public')
+ const hasColumn = await knex.schema.hasColumn('scopes', 'public')
if (hasColumn) {
await knex.schema.alterTable('scopes', (table) => {
table.dropColumn('public')
diff --git a/packages/server/modules/core/migrations/20210225130308_add_roles_public_field.js b/packages/server/modules/core/migrations/20210225130308_add_roles_public_field.js
index 1c41ffe69..823914069 100644
--- a/packages/server/modules/core/migrations/20210225130308_add_roles_public_field.js
+++ b/packages/server/modules/core/migrations/20210225130308_add_roles_public_field.js
@@ -6,7 +6,7 @@ exports.up = async (knex) => {
}
exports.down = async (knex) => {
- let hasColumn = await knex.schema.hasColumn('user_roles', 'public')
+ const hasColumn = await knex.schema.hasColumn('user_roles', 'public')
if (hasColumn) {
await knex.schema.alterTable('user_roles', (table) => {
table.dropColumn('public')
diff --git a/packages/server/modules/core/migrations/20210314101154_add_invitefield_to_serverinfo.js b/packages/server/modules/core/migrations/20210314101154_add_invitefield_to_serverinfo.js
index a24014a17..c42303bd9 100644
--- a/packages/server/modules/core/migrations/20210314101154_add_invitefield_to_serverinfo.js
+++ b/packages/server/modules/core/migrations/20210314101154_add_invitefield_to_serverinfo.js
@@ -6,7 +6,7 @@ exports.up = async (knex) => {
}
exports.down = async (knex) => {
- let hasColumn = await knex.schema.hasColumn('server_config', 'inviteOnly')
+ const hasColumn = await knex.schema.hasColumn('server_config', 'inviteOnly')
if (hasColumn) {
await knex.schema.alterTable('server_config', (table) => {
table.dropColumn('inviteOnly')
diff --git a/packages/server/modules/core/migrations/20210322190000_add_streamid_to_objects.js b/packages/server/modules/core/migrations/20210322190000_add_streamid_to_objects.js
index 88b934d35..e929c6c16 100644
--- a/packages/server/modules/core/migrations/20210322190000_add_streamid_to_objects.js
+++ b/packages/server/modules/core/migrations/20210322190000_add_streamid_to_objects.js
@@ -111,7 +111,7 @@ exports.up = async (knex) => {
Revert data and schema
*/
exports.down = async (knex) => {
- let hasColumn = await knex.schema.hasColumn('objects', 'streamId')
+ const hasColumn = await knex.schema.hasColumn('objects', 'streamId')
if (hasColumn) {
await knex.schema.alterTable('objects', (table) => {
table.dropPrimary()
diff --git a/packages/server/modules/core/migrations/20211119105730_de_duplicate_users.js b/packages/server/modules/core/migrations/20211119105730_de_duplicate_users.js
index fc3008fc5..a99e52921 100644
--- a/packages/server/modules/core/migrations/20211119105730_de_duplicate_users.js
+++ b/packages/server/modules/core/migrations/20211119105730_de_duplicate_users.js
@@ -55,7 +55,7 @@ exports.up = async (knex) => {
.update({ role: upperRole.name })
} else {
// if it didn't have access, just add it
- let lowerStreamAcl = { ...upperStreamAcl }
+ const lowerStreamAcl = { ...upperStreamAcl }
lowerStreamAcl.userId = lowerUser.id
await knex('stream_acl').insert(lowerStreamAcl)
}
@@ -80,12 +80,12 @@ exports.up = async (knex) => {
const userByEmailQuery = (email) => Users().where({ email })
const getDuplicateUsers = async () => {
- let duplicates = await knex.raw(
+ const duplicates = await knex.raw(
'select lower(email) as lowered, count(id) as reg_count from users group by lowered having count(id) > 1'
)
return await Promise.all(
duplicates.rows.map(async (dup) => {
- let lowerEmail = dup.lowered
+ const lowerEmail = dup.lowered
let lowerUser = await userByEmailQuery(lowerEmail).first()
// if no user found migrate to a random one?
@@ -95,7 +95,7 @@ exports.up = async (knex) => {
lowerUser = await Users()
.whereRaw('lower(email) = lower(?)', [lowerEmail])
.first()
- let upperUser = await Users()
+ const upperUser = await Users()
.whereRaw('lower(email) = lower(?)', [lowerEmail])
.whereNot({ id: lowerUser.id })
.first()
diff --git a/packages/server/modules/core/repositories/streams.js b/packages/server/modules/core/repositories/streams.js
index 12793c67e..862cb83a0 100644
--- a/packages/server/modules/core/repositories/streams.js
+++ b/packages/server/modules/core/repositories/streams.js
@@ -27,11 +27,11 @@ const BASE_STREAM_COLUMNS = [
async function getStream({ streamId, userId }) {
if (!streamId) throw new InvalidArgumentError('Invalid stream ID')
- let stream = await Streams.knex().where({ id: streamId }).select('*').first()
+ const stream = await Streams.knex().where({ id: streamId }).select('*').first()
if (!userId) return stream
- let acl = await StreamAcl.knex()
- .where({ resourceId: streamId, userId: userId })
+ const acl = await StreamAcl.knex()
+ .where({ resourceId: streamId, userId })
.select('role')
.first()
if (acl) stream.role = acl.role
@@ -86,7 +86,7 @@ async function getFavoritedStreams({ userId, cursor, limit }) {
if (cursor) query.andWhere(StreamFavorites.col.cursor, '<', cursor)
- let rows = await query
+ const rows = await query
return {
streams: rows,
cursor: rows.length > 0 ? rows[rows.length - 1].favCursor : null
@@ -102,7 +102,7 @@ async function getFavoritedStreamsCount(userId) {
const query = getFavoritedStreamsQueryBase(userId)
query.count()
- let [res] = await query
+ const [res] = await query
return parseInt(res.count)
}
diff --git a/packages/server/modules/core/rest/authUtils.js b/packages/server/modules/core/rest/authUtils.js
index 434ca18fc..625b570fe 100644
--- a/packages/server/modules/core/rest/authUtils.js
+++ b/packages/server/modules/core/rest/authUtils.js
@@ -10,7 +10,7 @@ const { getStream } = require('../services/streams')
module.exports = {
async validatePermissionsReadStream(streamId, req) {
- const stream = await getStream({ streamId: streamId, userId: req.context.userId })
+ const stream = await getStream({ streamId, userId: req.context.userId })
if (stream?.isPublic) return { result: true, status: 200 }
try {
diff --git a/packages/server/modules/core/rest/diffDownload.js b/packages/server/modules/core/rest/diffDownload.js
index 24d94a88f..754a11a04 100644
--- a/packages/server/modules/core/rest/diffDownload.js
+++ b/packages/server/modules/core/rest/diffDownload.js
@@ -21,7 +21,7 @@ module.exports = (app) => {
contextMiddleware,
matomoMiddleware,
async (req, res) => {
- let hasStreamAccess = await validatePermissionsReadStream(
+ const hasStreamAccess = await validatePermissionsReadStream(
req.params.streamId,
req
)
@@ -29,21 +29,21 @@ module.exports = (app) => {
return res.status(hasStreamAccess.status).end()
}
- let childrenList = JSON.parse(req.body.objects)
+ const childrenList = JSON.parse(req.body.objects)
- let simpleText = req.headers.accept === 'text/plain'
+ const simpleText = req.headers.accept === 'text/plain'
res.writeHead(200, {
'Content-Encoding': 'gzip',
'Content-Type': simpleText ? 'text/plain; charset=UTF-8' : 'application/json'
})
- let dbStream = await getObjectsStream({
+ const dbStream = await getObjectsStream({
streamId: req.params.streamId,
objectIds: childrenList
})
- let speckleObjStream = new SpeckleObjectsStream(simpleText)
- let gzipStream = zlib.createGzip()
+ const speckleObjStream = new SpeckleObjectsStream(simpleText)
+ const gzipStream = zlib.createGzip()
pipeline(
dbStream,
diff --git a/packages/server/modules/core/rest/diffUpload.js b/packages/server/modules/core/rest/diffUpload.js
index 14c62f2a1..7478ccb02 100644
--- a/packages/server/modules/core/rest/diffUpload.js
+++ b/packages/server/modules/core/rest/diffUpload.js
@@ -19,7 +19,7 @@ module.exports = (app) => {
contextMiddleware,
matomoMiddleware,
async (req, res) => {
- let hasStreamAccess = await validatePermissionsWriteStream(
+ const hasStreamAccess = await validatePermissionsWriteStream(
req.params.streamId,
req
)
@@ -27,7 +27,7 @@ module.exports = (app) => {
return res.status(hasStreamAccess.status).end()
}
- let objectList = JSON.parse(req.body.objects)
+ const objectList = JSON.parse(req.body.objects)
debug('speckle:info')(
`[User ${req.context.userId || '-'}] Diffing ${
@@ -35,7 +35,7 @@ module.exports = (app) => {
} objects for stream ${req.params.streamId}`
)
- let response = await hasObjects({
+ const response = await hasObjects({
streamId: req.params.streamId,
objectIds: objectList
})
diff --git a/packages/server/modules/core/rest/download.js b/packages/server/modules/core/rest/download.js
index 093030cd6..a463a6cac 100644
--- a/packages/server/modules/core/rest/download.js
+++ b/packages/server/modules/core/rest/download.js
@@ -21,7 +21,7 @@ module.exports = (app) => {
contextMiddleware,
matomoMiddleware,
async (req, res) => {
- let hasStreamAccess = await validatePermissionsReadStream(
+ const hasStreamAccess = await validatePermissionsReadStream(
req.params.streamId,
req
)
@@ -30,7 +30,7 @@ module.exports = (app) => {
}
// Populate first object (the "commit")
- let obj = await getObject({
+ const obj = await getObject({
streamId: req.params.streamId,
objectId: req.params.objectId
})
@@ -39,19 +39,19 @@ module.exports = (app) => {
return res.status(404).send('Failed to find object.')
}
- let simpleText = req.headers.accept === 'text/plain'
+ const simpleText = req.headers.accept === 'text/plain'
res.writeHead(200, {
'Content-Encoding': 'gzip',
'Content-Type': simpleText ? 'text/plain; charset=UTF-8' : 'application/json'
})
- let dbStream = await getObjectChildrenStream({
+ const dbStream = await getObjectChildrenStream({
streamId: req.params.streamId,
objectId: req.params.objectId
})
- let speckleObjStream = new SpeckleObjectsStream(simpleText)
- let gzipStream = zlib.createGzip()
+ const speckleObjStream = new SpeckleObjectsStream(simpleText)
+ const gzipStream = zlib.createGzip()
speckleObjStream.write(obj)
@@ -89,7 +89,7 @@ module.exports = (app) => {
contextMiddleware,
matomoMiddleware,
async (req, res) => {
- let hasStreamAccess = await validatePermissionsReadStream(
+ const hasStreamAccess = await validatePermissionsReadStream(
req.params.streamId,
req
)
@@ -97,7 +97,7 @@ module.exports = (app) => {
return res.status(hasStreamAccess.status).end()
}
- let obj = await getObject({
+ const obj = await getObject({
streamId: req.params.streamId,
objectId: req.params.objectId
})
diff --git a/packages/server/modules/core/rest/upload.js b/packages/server/modules/core/rest/upload.js
index b31fcf8c8..8ced70b3f 100644
--- a/packages/server/modules/core/rest/upload.js
+++ b/packages/server/modules/core/rest/upload.js
@@ -22,7 +22,7 @@ module.exports = (app) => {
contextMiddleware,
matomoMiddleware,
async (req, res) => {
- let hasStreamAccess = await validatePermissionsWriteStream(
+ const hasStreamAccess = await validatePermissionsWriteStream(
req.params.streamId,
req
)
@@ -30,11 +30,11 @@ module.exports = (app) => {
return res.status(hasStreamAccess.status).end()
}
- let busboy = Busboy({ headers: req.headers })
+ const busboy = Busboy({ headers: req.headers })
let totalProcessed = 0
// let last = {}
- let promises = []
+ const promises = []
let requestDropped = false
busboy.on('file', (name, file, info) => {
@@ -43,7 +43,7 @@ module.exports = (app) => {
if (requestDropped) return
if (mimeType === 'application/gzip') {
- let buffer = []
+ const buffer = []
file.on('data', (data) => {
if (data) buffer.push(data)
@@ -51,10 +51,10 @@ module.exports = (app) => {
file.on('end', async () => {
if (requestDropped) return
- let t0 = Date.now()
+ const t0 = Date.now()
let objs = []
- let gzippedBuffer = Buffer.concat(buffer)
+ const gzippedBuffer = Buffer.concat(buffer)
if (gzippedBuffer.length > MAX_FILE_SIZE) {
debug('speckle:error')(
`[User ${
@@ -72,7 +72,7 @@ module.exports = (app) => {
requestDropped = true
}
- let gunzippedBuffer = zlib.gunzipSync(gzippedBuffer).toString()
+ const gunzippedBuffer = zlib.gunzipSync(gzippedBuffer).toString()
if (gunzippedBuffer.length > MAX_FILE_SIZE) {
debug('speckle:error')(
`[User ${
@@ -105,7 +105,7 @@ module.exports = (app) => {
// last = objs[objs.length - 1]
totalProcessed += objs.length
- let promise = createObjectsBatched(req.params.streamId, objs).catch((e) => {
+ const promise = createObjectsBatched(req.params.streamId, objs).catch((e) => {
debug('speckle:error')(
`[User ${req.context.userId || '-'}] Upload error: ${e.message}`
)
@@ -144,7 +144,7 @@ module.exports = (app) => {
file.on('end', async () => {
if (requestDropped) return
- let t0 = Date.now()
+ const t0 = Date.now()
let objs = []
if (buffer.length > MAX_FILE_SIZE) {
@@ -176,7 +176,7 @@ module.exports = (app) => {
// last = objs[objs.length - 1]
totalProcessed += objs.length
- let promise = createObjectsBatched(req.params.streamId, objs).catch((e) => {
+ const promise = createObjectsBatched(req.params.streamId, objs).catch((e) => {
debug('speckle:error')(
`[User ${req.context.userId || '-'}] Upload error: ${e.message}`
)
diff --git a/packages/server/modules/core/services/branches.js b/packages/server/modules/core/services/branches.js
index 9f962f547..87f19ce06 100644
--- a/packages/server/modules/core/services/branches.js
+++ b/packages/server/modules/core/services/branches.js
@@ -8,7 +8,7 @@ const Branches = () => knex('branches')
module.exports = {
async createBranch({ name, description, streamId, authorId }) {
- let branch = {}
+ const branch = {}
branch.id = crs({ length: 10 })
branch.streamId = streamId
branch.authorId = authorId
@@ -28,8 +28,8 @@ module.exports = {
async updateBranch({ id, name, description }) {
if (name) module.exports.validateBranchName({ name })
return await Branches()
- .where({ id: id })
- .update({ name: name ? name.toLowerCase() : name, description: description })
+ .where({ id })
+ .update({ name: name ? name.toLowerCase() : name, description })
},
validateBranchName({ name }) {
@@ -38,18 +38,18 @@ module.exports = {
},
async getBranchById({ id }) {
- return await Branches().where({ id: id }).first().select('*')
+ return await Branches().where({ id }).first().select('*')
},
async getBranchesByStreamId({ streamId, limit, cursor }) {
limit = limit || 25
- let query = Branches().select('*').where({ streamId: streamId })
+ const query = Branches().select('*').where({ streamId })
if (cursor) query.andWhere('createdAt', '<', cursor)
query.orderBy('createdAt').limit(limit)
- let totalCount = await module.exports.getBranchesByStreamIdTotalCount({ streamId })
- let rows = await query
+ const totalCount = await module.exports.getBranchesByStreamIdTotalCount({ streamId })
+ const rows = await query
return {
items: rows,
cursor: rows.length > 0 ? rows[rows.length - 1].updatedAt.toISOString() : null,
@@ -58,24 +58,24 @@ module.exports = {
},
async getBranchesByStreamIdTotalCount({ streamId }) {
- let [res] = await Branches().count().where({ streamId: streamId })
+ const [res] = await Branches().count().where({ streamId })
return parseInt(res.count)
},
async getBranchByNameAndStreamId({ streamId, name }) {
- let query = Branches()
+ const query = Branches()
.select('*')
- .where({ streamId: streamId })
+ .where({ streamId })
.andWhere(knex.raw('LOWER(name) = ?', [name.toLowerCase()]))
.first()
return await query
},
async deleteBranchById({ id, streamId }) {
- let branch = await module.exports.getBranchById({ id: id })
+ const branch = await module.exports.getBranchById({ id })
if (branch.name === 'main') throw new Error('Cannot delete the main branch.')
- await Branches().where({ id: id }).del()
+ await Branches().where({ id }).del()
await Streams().where({ id: streamId }).update({ updatedAt: knex.fn.now() })
return true
}
diff --git a/packages/server/modules/core/services/commits.js b/packages/server/modules/core/services/commits.js
index d94183b19..8881317d1 100644
--- a/packages/server/modules/core/services/commits.js
+++ b/packages/server/modules/core/services/commits.js
@@ -25,12 +25,12 @@ module.exports = {
// If no total children count is passed in, get it from the original object
// that this commit references.
if (!totalChildrenCount) {
- let { totalChildrenCount: tc } = await getObject({ streamId, objectId })
+ const { totalChildrenCount: tc } = await getObject({ streamId, objectId })
totalChildrenCount = tc || 1
}
// Create main table entry
- let [{ id }] = await Commits()
+ const [{ id }] = await Commits()
.returning('id')
.insert({
id: crs({ length: 10 }),
@@ -43,9 +43,9 @@ module.exports = {
})
// Link it to a branch
- await BranchCommits().insert({ branchId: branchId, commitId: id })
+ await BranchCommits().insert({ branchId, commitId: id })
// Link it to a stream
- await StreamCommits().insert({ streamId: streamId, commitId: id })
+ await StreamCommits().insert({ streamId, commitId: id })
// update stream updated at
await Streams().where({ id: streamId }).update({ updatedAt: knex.fn.now() })
@@ -63,8 +63,8 @@ module.exports = {
parents
}) {
branchName = branchName.toLowerCase()
- let myBranch = await getBranchByNameAndStreamId({
- streamId: streamId,
+ const myBranch = await getBranchByNameAndStreamId({
+ streamId,
name: branchName
})
@@ -83,11 +83,11 @@ module.exports = {
},
async updateCommit({ id, message }) {
- return await Commits().where({ id: id }).update({ message: message })
+ return await Commits().where({ id }).update({ message })
},
async getCommitById({ streamId, id }) {
- let query = await Commits()
+ const query = await Commits()
.columns([
{ id: 'commits.id' },
'message',
@@ -112,19 +112,19 @@ module.exports = {
},
async deleteCommit({ id }) {
- return await Commits().where({ id: id }).del()
+ return await Commits().where({ id }).del()
},
async getCommitsTotalCountByBranchId({ branchId }) {
- let [res] = await BranchCommits().count().where('branchId', branchId)
+ const [res] = await BranchCommits().count().where('branchId', branchId)
return parseInt(res.count)
},
async getCommitsTotalCountByBranchName({ streamId, branchName }) {
branchName = branchName.toLowerCase()
- let myBranch = await getBranchByNameAndStreamId({
- streamId: streamId,
+ const myBranch = await getBranchByNameAndStreamId({
+ streamId,
name: branchName
})
@@ -135,7 +135,7 @@ module.exports = {
async getCommitsByBranchId({ branchId, limit, cursor }) {
limit = limit || 25
- let query = BranchCommits()
+ const query = BranchCommits()
.columns([
{ id: 'commitId' },
'message',
@@ -159,7 +159,7 @@ module.exports = {
query.orderBy('commits.createdAt', 'desc').limit(limit)
- let rows = await query
+ const rows = await query
return {
commits: rows,
@@ -169,8 +169,8 @@ module.exports = {
async getCommitsByBranchName({ streamId, branchName, limit, cursor }) {
branchName = branchName.toLowerCase()
- let myBranch = await getBranchByNameAndStreamId({
- streamId: streamId,
+ const myBranch = await getBranchByNameAndStreamId({
+ streamId,
name: branchName
})
@@ -180,7 +180,7 @@ module.exports = {
},
async getCommitsTotalCountByStreamId({ streamId, ignoreGlobalsBranch }) {
- let query = StreamCommits()
+ const query = StreamCommits()
.count()
.join('branch_commits', 'stream_commits.commitId', 'branch_commits.commitId')
.join('branches', 'branches.id', 'branch_commits.branchId')
@@ -189,13 +189,13 @@ module.exports = {
if (ignoreGlobalsBranch) query.andWhere('branches.name', '!=', 'globals')
// let [ res ] = await StreamCommits( ).count( ).where( 'streamId', streamId )
- let [res] = await query
+ const [res] = await query
return parseInt(res.count)
},
async getCommitsByStreamId({ streamId, limit, cursor, ignoreGlobalsBranch }) {
limit = limit || 25
- let query = StreamCommits()
+ const query = StreamCommits()
.columns([
{ id: 'commits.id' },
'message',
@@ -222,7 +222,7 @@ module.exports = {
query.orderBy('commits.createdAt', 'desc').limit(limit)
- let rows = await query
+ const rows = await query
return {
commits: rows,
cursor: rows.length > 0 ? rows[rows.length - 1].createdAt.toISOString() : null
@@ -233,7 +233,7 @@ module.exports = {
limit = limit || 25
publicOnly = publicOnly !== false
- let query = Commits()
+ const query = Commits()
.columns([
{ id: 'commits.id' },
'message',
@@ -259,7 +259,7 @@ module.exports = {
query.orderBy('commits.createdAt', 'desc').limit(limit)
- let rows = await query
+ const rows = await query
return {
commits: rows,
cursor: rows.length > 0 ? rows[rows.length - 1].createdAt.toISOString() : null
@@ -267,7 +267,7 @@ module.exports = {
},
async getCommitsTotalCountByUserId({ userId }) {
- let [res] = await Commits().count().where('author', userId)
+ const [res] = await Commits().count().where('author', userId)
return parseInt(res.count)
}
}
diff --git a/packages/server/modules/core/services/generic.js b/packages/server/modules/core/services/generic.js
index d615c2ccc..4bcd4fc9d 100644
--- a/packages/server/modules/core/services/generic.js
+++ b/packages/server/modules/core/services/generic.js
@@ -8,7 +8,7 @@ const Info = () => knex('server_config')
module.exports = {
async getServerInfo() {
- let serverInfo = await Info().select('*').first()
+ const serverInfo = await Info().select('*').first()
serverInfo.version = process.env.SPECKLE_SERVER_VERSION || 'dev'
return serverInfo
},
@@ -37,7 +37,7 @@ module.exports = {
termsOfService,
inviteOnly
}) {
- let serverInfo = await Info().select('*').first()
+ const serverInfo = await Info().select('*').first()
if (!serverInfo)
return await Info().insert({
name,
diff --git a/packages/server/modules/core/services/objects.js b/packages/server/modules/core/services/objects.js
index 8a0285876..15d6bcc31 100644
--- a/packages/server/modules/core/services/objects.js
+++ b/packages/server/modules/core/services/objects.js
@@ -3,7 +3,7 @@ const { performance } = require('perf_hooks')
const crypto = require('crypto')
const { set, get, chunk } = require('lodash')
-let debug = require('debug')('speckle:services')
+const debug = require('debug')('speckle:services')
const knex = require(`@/db/knex`)
@@ -12,14 +12,14 @@ const Closures = () => knex('object_children_closure')
module.exports = {
async createObject(streamId, object) {
- let insertionObject = prepInsertionObject(streamId, object)
+ const insertionObject = prepInsertionObject(streamId, object)
- let closures = []
- let totalChildrenCountByDepth = {}
+ const closures = []
+ const totalChildrenCountByDepth = {}
if (object.__closure !== null) {
for (const prop in object.__closure) {
closures.push({
- streamId: streamId,
+ streamId,
parent: insertionObject.id,
child: prop,
minDepth: object.__closure[prop]
@@ -39,11 +39,11 @@ module.exports = {
totalChildrenCountByDepth
)
- let q1 = Objects().insert(insertionObject).toString() + ' on conflict do nothing'
+ const q1 = Objects().insert(insertionObject).toString() + ' on conflict do nothing'
await knex.raw(q1)
if (closures.length > 0) {
- let q2 = `${Closures().insert(closures).toString()} on conflict do nothing`
+ const q2 = `${Closures().insert(closures).toString()} on conflict do nothing`
await knex.raw(q2)
}
@@ -51,20 +51,20 @@ module.exports = {
},
async createObjectsBatched(streamId, objects) {
- let closures = []
- let objsToInsert = []
- let ids = []
+ const closures = []
+ const objsToInsert = []
+ const ids = []
// Prep objects up
objects.forEach((obj) => {
- let insertionObject = prepInsertionObject(streamId, obj)
+ const insertionObject = prepInsertionObject(streamId, obj)
let totalChildrenCountGlobal = 0
- let totalChildrenCountByDepth = {}
+ const totalChildrenCountByDepth = {}
if (obj.__closure !== null) {
for (const prop in obj.__closure) {
closures.push({
- streamId: streamId,
+ streamId,
parent: insertionObject.id,
child: prop,
minDepth: obj.__closure[prop]
@@ -88,16 +88,16 @@ module.exports = {
ids.push(insertionObject.id)
})
- let closureBatchSize = 1000
- let objectsBatchSize = 500
+ const closureBatchSize = 1000
+ const objectsBatchSize = 500
// step 1: insert objects
if (objsToInsert.length > 0) {
- let batches = chunk(objsToInsert, objectsBatchSize)
+ const batches = chunk(objsToInsert, objectsBatchSize)
for (const batch of batches) {
prepInsertionObjectBatch(batch)
await knex.transaction(async (trx) => {
- let q = Objects().insert(batch).toString() + ' on conflict do nothing'
+ const q = Objects().insert(batch).toString() + ' on conflict do nothing'
await trx.raw(q)
})
debug(`Inserted ${batch.length} objects`)
@@ -106,12 +106,12 @@ module.exports = {
// step 2: insert closures
if (closures.length > 0) {
- let batches = chunk(closures, closureBatchSize)
+ const batches = chunk(closures, closureBatchSize)
for (const batch of batches) {
prepInsertionClosureBatch(batch)
await knex.transaction(async (trx) => {
- let q = Closures().insert(batch).toString() + ' on conflict do nothing'
+ const q = Closures().insert(batch).toString() + ' on conflict do nothing'
await trx.raw(q)
})
debug(`Inserted ${batch.length} closures`)
@@ -123,8 +123,8 @@ module.exports = {
async createObjects(streamId, objects) {
// TODO: Switch to knex batch inserting functionality
// see http://knexjs.org/#Utility-BatchInsert
- let batches = []
- let maxBatchSize = process.env.MAX_BATCH_SIZE || 250
+ const batches = []
+ const maxBatchSize = process.env.MAX_BATCH_SIZE || 250
objects = [...objects]
if (objects.length > maxBatchSize) {
while (objects.length > 0) batches.push(objects.splice(0, maxBatchSize))
@@ -132,24 +132,24 @@ module.exports = {
batches.push(objects)
}
- let ids = []
+ const ids = []
const insertBatch = async (batch, index) => {
- let closures = []
- let objsToInsert = []
+ const closures = []
+ const objsToInsert = []
- let t0 = performance.now()
+ const t0 = performance.now()
batch.forEach((obj) => {
if (!obj) return
- let insertionObject = prepInsertionObject(streamId, obj)
- let totalChildrenCountByDepth = {}
+ const insertionObject = prepInsertionObject(streamId, obj)
+ const totalChildrenCountByDepth = {}
let totalChildrenCountGlobal = 0
if (obj.__closure !== null) {
for (const prop in obj.__closure) {
closures.push({
- streamId: streamId,
+ streamId,
parent: insertionObject.id,
child: prop,
minDepth: obj.__closure[prop]
@@ -176,17 +176,17 @@ module.exports = {
})
if (objsToInsert.length > 0) {
- let queryObjs =
+ const queryObjs =
Objects().insert(objsToInsert).toString() + ' on conflict do nothing'
await knex.raw(queryObjs)
}
if (closures.length > 0) {
- let q2 = `${Closures().insert(closures).toString()} on conflict do nothing`
+ const q2 = `${Closures().insert(closures).toString()} on conflict do nothing`
await knex.raw(q2)
}
- let t1 = performance.now()
+ const t1 = performance.now()
debug(
`Batch ${index + 1}/${batches.length}: Stored ${
closures.length + objsToInsert.length
@@ -195,7 +195,7 @@ module.exports = {
// console.log( `Batch ${index + 1}/${batches.length}: Stored ${closures.length + objsToInsert.length} objects in ${t1-t0}ms.` )
}
- let promises = batches.map((batch, index) => insertBatch(batch, index))
+ const promises = batches.map((batch, index) => insertBatch(batch, index))
await Promise.all(promises)
@@ -203,8 +203,8 @@ module.exports = {
},
async getObject({ streamId, objectId }) {
- let res = await Objects()
- .where({ streamId: streamId, id: objectId })
+ const res = await Objects()
+ .where({ streamId, id: objectId })
.select('*')
.first()
if (!res) return null
@@ -214,7 +214,7 @@ module.exports = {
},
async getObjectChildrenStream({ streamId, objectId }) {
- let q = Closures()
+ const q = Closures()
q.select('id')
q.select(knex.raw('data::text as "dataText"'))
q.rightJoin('objects', function () {
@@ -240,7 +240,7 @@ module.exports = {
let fullObjectSelect = false
- let q = Closures()
+ const q = Closures()
q.select('id')
q.select('createdAt')
q.select('speckleType')
@@ -278,7 +278,7 @@ module.exports = {
.orderBy('objects.id')
.limit(limit)
- let rows = await q
+ const rows = await q
if (rows.length === 0) {
return { objects: rows, cursor: null }
@@ -286,7 +286,7 @@ module.exports = {
if (!fullObjectSelect)
rows.forEach((o, i, arr) => {
- let no = {
+ const no = {
id: o.id,
createdAt: o.createdAt,
speckleType: o.speckleType,
@@ -294,13 +294,13 @@ module.exports = {
data: {}
}
let k = 0
- for (let field of select) {
+ for (const field of select) {
set(no.data, field, o[k++])
}
arr[i] = no
})
- let lastId = rows[rows.length - 1].id
+ const lastId = rows[rows.length - 1].id
return { objects: rows, cursor: lastId }
},
@@ -338,11 +338,11 @@ module.exports = {
fullObjectSelect = true
}
- let additionalIdOrderBy = orderBy.field !== 'id'
+ const additionalIdOrderBy = orderBy.field !== 'id'
- let operatorsWhitelist = ['=', '>', '>=', '<', '<=', '!=']
+ const operatorsWhitelist = ['=', '>', '>=', '<', '<=', '!=']
- let mainQuery = knex
+ const mainQuery = knex
.with('objs', (cteInnerQuery) => {
// always select the id
cteInnerQuery.select('id').from('object_children_closure')
@@ -413,7 +413,7 @@ module.exports = {
}
// Order by clause; validate direction!
- let direction =
+ const direction =
orderBy.direction && orderBy.direction.toLowerCase() === 'desc'
? 'desc'
: 'asc'
@@ -491,8 +491,8 @@ module.exports = {
mainQuery.limit(limit)
// console.log( mainQuery.toString() )
// Finally, execute the query
- let rows = await mainQuery
- let totalCount = rows && rows.length > 0 ? parseInt(rows[0].total_count) : 0
+ const rows = await mainQuery
+ const totalCount = rows && rows.length > 0 ? parseInt(rows[0].total_count) : 0
// Return early
if (totalCount === 0) return { totalCount, objects: [], cursor: null }
@@ -500,7 +500,7 @@ module.exports = {
// Reconstruct the object based on the provided select paths.
if (!fullObjectSelect) {
rows.forEach((o, i, arr) => {
- let no = {
+ const no = {
id: o.id,
createdAt: o.createdAt,
speckleType: o.speckleType,
@@ -508,7 +508,7 @@ module.exports = {
data: {}
}
let k = 0
- for (let field of select) {
+ for (const field of select) {
set(no.data, field, o[k++])
}
arr[i] = no
@@ -517,7 +517,7 @@ module.exports = {
// Assemble the cursor for an eventual next call
cursor = cursor || {}
- let cursorObj = {
+ const cursorObj = {
field: cursor.field || orderBy.field,
operator:
cursor.operator ||
@@ -531,7 +531,7 @@ module.exports = {
}
// Cursor objects should be client-side opaque, hence we encode them to base64.
- let cursorEncoded = Buffer.from(JSON.stringify(cursorObj), 'binary').toString(
+ const cursorEncoded = Buffer.from(JSON.stringify(cursorObj), 'binary').toString(
'base64'
)
return {
@@ -542,7 +542,7 @@ module.exports = {
},
async getObjects(streamId, objectIds) {
- let res = await Objects()
+ const res = await Objects()
.whereIn('id', objectIds)
.andWhere('streamId', streamId)
.select(
@@ -557,7 +557,7 @@ module.exports = {
},
async getObjectsStream({ streamId, objectIds }) {
- let res = Objects()
+ const res = Objects()
.whereIn('id', objectIds)
.andWhere('streamId', streamId)
.orderBy('id')
@@ -570,16 +570,16 @@ module.exports = {
},
async hasObjects({ streamId, objectIds }) {
- let dbRes = await Objects()
+ const dbRes = await Objects()
.whereIn('id', objectIds)
.andWhere('streamId', streamId)
.select('id')
- let res = {}
- for (let i in objectIds) {
+ const res = {}
+ for (const i in objectIds) {
res[objectIds[i]] = false
}
- for (let i in dbRes) {
+ for (const i in dbRes) {
res[dbRes[i].id] = true
}
return res
@@ -603,7 +603,7 @@ function prepInsertionObject(streamId, obj) {
obj.id =
obj.id || crypto.createHash('md5').update(JSON.stringify(obj)).digest('hex') // generate a hash if none is present
- let stringifiedObj = JSON.stringify(obj)
+ const stringifiedObj = JSON.stringify(obj)
if (stringifiedObj.length > MAX_OBJECT_SIZE) {
throw new Error(`Object too large (${stringifiedObj.length} > ${MAX_OBJECT_SIZE})`)
}
@@ -611,7 +611,7 @@ function prepInsertionObject(streamId, obj) {
return {
data: stringifiedObj, // stored in jsonb column
- streamId: streamId,
+ streamId,
id: obj.id,
speckleType: obj.speckleType
}
diff --git a/packages/server/modules/core/services/ratelimits.js b/packages/server/modules/core/services/ratelimits.js
index 36eb9fc63..a766d5832 100644
--- a/packages/server/modules/core/services/ratelimits.js
+++ b/packages/server/modules/core/services/ratelimits.js
@@ -46,13 +46,13 @@ const LIMIT_INTERVAL = {
ACTIVE_CONNECTIONS: 0
}
-let rateLimitedCache = {}
+const rateLimitedCache = {}
async function shouldRateLimitNext({ action, source }) {
if (!source) return false
- let limit = LIMITS[action]
- let checkInterval = LIMIT_INTERVAL[action]
+ const limit = LIMITS[action]
+ const checkInterval = LIMIT_INTERVAL[action]
if (limit === undefined || checkInterval === undefined) {
return false
}
@@ -61,13 +61,13 @@ async function shouldRateLimitNext({ action, source }) {
if (checkInterval === 0) startTimeMs = 0
else startTimeMs = Date.now() - checkInterval * 1000
- let [res] = await RatelimitActions()
+ const [res] = await RatelimitActions()
.count()
.where({ action, source })
.andWhere('timestamp', '>', new Date(startTimeMs))
- let count = parseInt(res.count) + 1 // plus this request
+ const count = parseInt(res.count) + 1 // plus this request
- let shouldRateLimit = count >= limit
+ const shouldRateLimit = count >= limit
if (!shouldRateLimit) {
await RatelimitActions().insert({ action, source })
@@ -81,8 +81,8 @@ module.exports = {
// returns true if the action is fine, false if it should be blocked because of exceeding limit
async respectsLimits({ action, source }) {
- let rateLimitKey = `${action} ${source}`
- let promise = shouldRateLimitNext({ action, source }).then((shouldRateLimit) => {
+ const rateLimitKey = `${action} ${source}`
+ const promise = shouldRateLimitNext({ action, source }).then((shouldRateLimit) => {
if (shouldRateLimit) rateLimitedCache[rateLimitKey] = true
else delete rateLimitedCache[rateLimitKey]
})
diff --git a/packages/server/modules/core/services/streams.js b/packages/server/modules/core/services/streams.js
index 731d516f7..4bdaba55a 100644
--- a/packages/server/modules/core/services/streams.js
+++ b/packages/server/modules/core/services/streams.js
@@ -44,7 +44,7 @@ function getUserStreamsQueryBase({ userId, publicOnly, searchQuery }) {
module.exports = {
async createStream({ name, description, isPublic, ownerId }) {
- let stream = {
+ const stream = {
id: crs({ length: 10 }),
name: name || generateStreamName(),
description: description || '',
@@ -53,7 +53,7 @@ module.exports = {
}
// Create the stream & set up permissions
- let [{ id: streamId }] = await Streams.knex().returning('id').insert(stream)
+ const [{ id: streamId }] = await Streams.knex().returning('id').insert(stream)
await StreamAcl.knex().insert({
userId: ownerId,
resourceId: streamId,
@@ -64,7 +64,7 @@ module.exports = {
await createBranch({
name: 'main',
description: 'default branch',
- streamId: streamId,
+ streamId,
authorId: ownerId
})
return streamId
@@ -73,7 +73,7 @@ module.exports = {
getStream,
async updateStream({ streamId, name, description, isPublic }) {
- let [{ id }] = await Streams.knex()
+ const [{ id }] = await Streams.knex()
.returning('id')
.where({ id: streamId })
.update({ name, description, isPublic, updatedAt: knex.fn.now() })
@@ -85,9 +85,9 @@ module.exports = {
async grantPermissionsStream({ streamId, userId, role }) {
// upserts the existing role (sets a new one!)
// TODO: check if we're removing the last owner (ie, does the stream still have an owner after this operation)?
- let query =
+ const query =
StreamAcl.knex()
- .insert({ userId: userId, resourceId: streamId, role: role })
+ .insert({ userId, resourceId: streamId, role })
.toString() +
' on conflict on constraint stream_acl_pkey do update set role=excluded.role'
@@ -99,7 +99,7 @@ module.exports = {
},
async revokePermissionsStream({ streamId, userId }) {
- let [streamAclEntriesCount] = await StreamAcl.knex()
+ const [streamAclEntriesCount] = await StreamAcl.knex()
// let [streamAclEntriesCount] = await StreamAcl.knex()
.where({ resourceId: streamId })
.count()
@@ -114,25 +114,25 @@ module.exports = {
// Count owners
// If owner count > 1, then proceed to delete, otherwise throw an error (can't delete last owner - delete stream)
- let aclEntry = await StreamAcl.knex()
- .where({ resourceId: streamId, userId: userId })
+ const aclEntry = await StreamAcl.knex()
+ .where({ resourceId: streamId, userId })
.select('*')
.first()
if (aclEntry.role === 'stream:owner') {
- let ownersCount = StreamAcl.knex().count({
+ const ownersCount = StreamAcl.knex().count({
resourceId: streamId,
role: 'stream:owner'
})
if (ownersCount === 1) throw new Error('Could not revoke permissions for user')
else {
- await StreamAcl.knex().where({ resourceId: streamId, userId: userId }).del()
+ await StreamAcl.knex().where({ resourceId: streamId, userId }).del()
return true
}
}
- let delCount = await StreamAcl.knex()
- .where({ resourceId: streamId, userId: userId })
+ const delCount = await StreamAcl.knex()
+ .where({ resourceId: streamId, userId })
.del()
if (delCount === 0) throw new Error('Could not revoke permissions for user')
@@ -185,7 +185,7 @@ module.exports = {
query.orderBy(Streams.col.updatedAt, 'desc').limit(finalLimit)
- let rows = await query
+ const rows = await query
return {
streams: rows,
cursor: rows.length > 0 ? rows[rows.length - 1].updatedAt.toISOString() : null
@@ -193,7 +193,7 @@ module.exports = {
},
async getStreams({ offset, limit, orderBy, visibility, searchQuery }) {
- let query = knex
+ const query = knex
.column(
'streams.*',
knex.raw('coalesce(sum(pg_column_size(objects.data)),0) as size')
@@ -203,7 +203,7 @@ module.exports = {
.leftJoin('objects', 'streams.id', 'objects.streamId')
.groupBy('streams.id')
- let countQuery = Streams.knex()
+ const countQuery = Streams.knex()
if (searchQuery) {
const whereFunc = function () {
@@ -219,23 +219,23 @@ module.exports = {
if (visibility && visibility !== 'all') {
if (!['private', 'public'].includes(visibility))
throw new Error('Stream visibility should be either private, public or all')
- let isPublic = visibility === 'public'
+ const isPublic = visibility === 'public'
const publicFunc = function () {
this.where({ isPublic })
}
query.andWhere(publicFunc)
countQuery.andWhere(publicFunc)
}
- let [res] = await countQuery.count()
- let count = parseInt(res.count)
+ const [res] = await countQuery.count()
+ const count = parseInt(res.count)
if (!count) return { streams: [], totalCount: 0 }
orderBy = orderBy || 'updatedAt,desc'
- let [columnName, order] = orderBy.split(',')
+ const [columnName, order] = orderBy.split(',')
- let rows = await query.orderBy(`${columnName}`, order).offset(offset).limit(limit)
+ const rows = await query.orderBy(`${columnName}`, order).offset(offset).limit(limit)
return { streams: rows, totalCount: count }
},
@@ -257,12 +257,12 @@ module.exports = {
})
query.count()
- let [res] = await query
+ const [res] = await query
return parseInt(res.count)
},
async getStreamUsers({ streamId }) {
- let query = StreamAcl.knex()
+ const query = StreamAcl.knex()
.columns({ role: 'stream_acl.role' }, 'id', 'name', 'company', 'avatar')
.select()
.where({ resourceId: streamId })
diff --git a/packages/server/modules/core/services/tokens.js b/packages/server/modules/core/services/tokens.js
index 8e625dc84..ab83d8c64 100644
--- a/packages/server/modules/core/services/tokens.js
+++ b/packages/server/modules/core/services/tokens.js
@@ -20,29 +20,29 @@ module.exports = {
*/
async createBareToken() {
- let tokenId = crs({ length: 10 })
- let tokenString = crs({ length: 32 })
- let tokenHash = await bcrypt.hash(tokenString, 10)
- let lastChars = tokenString.slice(tokenString.length - 6, tokenString.length)
+ const tokenId = crs({ length: 10 })
+ const tokenString = crs({ length: 32 })
+ const tokenHash = await bcrypt.hash(tokenString, 10)
+ const lastChars = tokenString.slice(tokenString.length - 6, tokenString.length)
return { tokenId, tokenString, tokenHash, lastChars }
},
async createToken({ userId, name, scopes, lifespan }) {
- let { tokenId, tokenString, tokenHash, lastChars } =
+ const { tokenId, tokenString, tokenHash, lastChars } =
await module.exports.createBareToken()
if (scopes.length === 0) throw new Error('No scopes provided')
- let token = {
+ const token = {
id: tokenId,
tokenDigest: tokenHash,
- lastChars: lastChars,
+ lastChars,
owner: userId,
- name: name,
- lifespan: lifespan
+ name,
+ lifespan
}
- let tokenScopes = scopes.map((scope) => ({ tokenId: tokenId, scopeName: scope }))
+ const tokenScopes = scopes.map((scope) => ({ tokenId, scopeName: scope }))
await ApiTokens().insert(token)
await TokenScopes().insert(tokenScopes)
@@ -52,7 +52,7 @@ module.exports = {
// Creates a personal access token for a user with a set of given scopes.
async createPersonalAccessToken(userId, name, scopes, lifespan) {
- let { id, token } = await module.exports.createToken({
+ const { id, token } = await module.exports.createToken({
userId,
name,
scopes,
@@ -60,16 +60,16 @@ module.exports = {
})
// Store the relationship
- await PersonalApiTokens().insert({ userId: userId, tokenId: id })
+ await PersonalApiTokens().insert({ userId, tokenId: id })
return token
},
async validateToken(tokenString) {
- let tokenId = tokenString.slice(0, 10)
- let tokenContent = tokenString.slice(10, 42)
+ const tokenId = tokenString.slice(0, 10)
+ const tokenContent = tokenString.slice(10, 42)
- let token = await ApiTokens().where({ id: tokenId }).select('*').first()
+ const token = await ApiTokens().where({ id: tokenId }).select('*').first()
if (!token) {
return { valid: false }
@@ -81,19 +81,19 @@ module.exports = {
return { valid: false }
}
- let valid = await bcrypt.compare(tokenContent, token.tokenDigest)
+ const valid = await bcrypt.compare(tokenContent, token.tokenDigest)
if (valid) {
await ApiTokens().where({ id: tokenId }).update({ lastUsed: knex.fn.now() })
- let scopes = await TokenScopes().select('scopeName').where({ tokenId: tokenId })
- let { role } = await ServerRoles()
+ const scopes = await TokenScopes().select('scopeName').where({ tokenId })
+ const { role } = await ServerRoles()
.select('role')
.where({ userId: token.owner })
.first()
return {
valid: true,
userId: token.owner,
- role: role,
+ role,
scopes: scopes.map((s) => s.scopeName)
}
} else return { valid: false }
@@ -101,14 +101,14 @@ module.exports = {
async revokeToken(tokenId, userId) {
tokenId = tokenId.slice(0, 10)
- let delCount = await ApiTokens().where({ id: tokenId, owner: userId }).del()
+ const delCount = await ApiTokens().where({ id: tokenId, owner: userId }).del()
if (delCount === 0) throw new Error('Did not revoke token')
return true
},
async revokeTokenById(tokenId) {
- let delCount = await ApiTokens()
+ const delCount = await ApiTokens()
.where({ id: tokenId.slice(0, 10) })
.del()
@@ -117,7 +117,7 @@ module.exports = {
},
async getUserTokens(userId) {
- let { rows } = await knex.raw(
+ const { rows } = await knex.raw(
`
SELECT
t.id,
diff --git a/packages/server/modules/core/services/users.js b/packages/server/modules/core/services/users.js
index 24b27c41a..c597c80c6 100644
--- a/packages/server/modules/core/services/users.js
+++ b/packages/server/modules/core/services/users.js
@@ -12,15 +12,15 @@ const debug = require('debug')
const { deleteStream } = require('./streams')
const changeUserRole = async ({ userId, role }) =>
- await Acl().where({ userId: userId }).update({ role: role })
+ await Acl().where({ userId }).update({ role })
const countAdminUsers = async () => {
- let [{ count }] = await Acl().where({ role: 'server:admin' }).count()
+ const [{ count }] = await Acl().where({ role: 'server:admin' }).count()
return parseInt(count)
}
const _ensureAtleastOneAdminRemains = async (userId) => {
if ((await countAdminUsers()) === 1) {
- let currentAdmin = await Acl().where({ role: 'server:admin' }).first()
+ const currentAdmin = await Acl().where({ role: 'server:admin' }).first()
if (currentAdmin.userId === userId) {
throw new Error('Cannot remove the last admin role from the server')
}
@@ -47,16 +47,16 @@ module.exports = {
}
delete user.password
- let usr = await userByEmailQuery(user.email).select('id').first()
+ const usr = await userByEmailQuery(user.email).select('id').first()
if (usr) throw new Error('Email taken. Try logging in?')
- let res = await Users().returning('id').insert(user)
+ const res = await Users().returning('id').insert(user)
- let userRole = (await countAdminUsers()) === 0 ? 'server:admin' : 'server:user'
+ const userRole = (await countAdminUsers()) === 0 ? 'server:admin' : 'server:user'
await Acl().insert({ userId: res[0].id, role: userRole })
- let loggedUser = { ...user }
+ const loggedUser = { ...user }
delete loggedUser.passwordDigest
await saveActivity({
streamId: null,
@@ -72,7 +72,7 @@ module.exports = {
},
async findOrCreateUser({ user }) {
- let existingUser = await userByEmailQuery(user.email).select('id').first()
+ const existingUser = await userByEmailQuery(user.email).select('id').first()
if (existingUser) {
if (user.suuid) {
@@ -89,27 +89,27 @@ module.exports = {
},
async getUserById({ userId }) {
- let user = await Users().where({ id: userId }).select('*').first()
+ const user = await Users().where({ id: userId }).select('*').first()
if (user) delete user.passwordDigest
return user
},
// TODO: deprecate
async getUser(id) {
- let user = await Users().where({ id: id }).select('*').first()
+ const user = await Users().where({ id }).select('*').first()
if (user) delete user.passwordDigest
return user
},
async getUserByEmail({ email }) {
- let user = await userByEmailQuery(email).select('*').first()
+ const user = await userByEmailQuery(email).select('*').first()
if (!user) return null
delete user.passwordDigest
return user
},
async getUserRole(id) {
- let { role } = await Acl().where({ userId: id }).select('role').first()
+ const { role } = await Acl().where({ userId: id }).select('role').first()
return role
},
@@ -118,18 +118,18 @@ module.exports = {
delete user.passwordDigest
delete user.password
delete user.email
- await Users().where({ id: id }).update(user)
+ await Users().where({ id }).update(user)
},
async updateUserPassword({ id, newPassword }) {
if (newPassword.length < 8)
throw new Error('Password to short; needs to be 8 characters or longer.')
- let passwordDigest = await bcrypt.hash(newPassword, 10)
- await Users().where({ id: id }).update({ passwordDigest })
+ const passwordDigest = await bcrypt.hash(newPassword, 10)
+ await Users().where({ id }).update({ passwordDigest })
},
async searchUsers(searchQuery, limit, cursor, archived = false) {
- let query = Users()
+ const query = Users()
.join('server_acl', 'users.id', 'server_acl.userId')
.select('id', 'name', 'bio', 'company', 'verified', 'avatar', 'createdAt')
.where((queryBuilder) => {
@@ -143,7 +143,7 @@ module.exports = {
const defaultLimit = 25
query.orderBy('users.createdAt', 'desc').limit(limit || defaultLimit)
- let rows = await query
+ const rows = await query
return {
users: rows,
cursor: rows.length > 0 ? rows[rows.length - 1].createdAt.toISOString() : null
@@ -151,7 +151,7 @@ module.exports = {
},
async validatePasssword({ email, password }) {
- let { passwordDigest } = await userByEmailQuery(email)
+ const { passwordDigest } = await userByEmailQuery(email)
.select('passwordDigest')
.first()
return bcrypt.compare(password, passwordDigest)
@@ -161,7 +161,7 @@ module.exports = {
//TODO: check for the last admin user to survive
debug('speckle:db')('Deleting user ' + id)
await _ensureAtleastOneAdminRemains(id)
- let streams = await knex.raw(
+ const streams = await knex.raw(
`
-- Get the stream ids with only this user as owner
SELECT "resourceId" as id
@@ -182,11 +182,11 @@ module.exports = {
`,
[id]
)
- for (let i in streams.rows) {
+ for (const i in streams.rows) {
await deleteStream({ streamId: streams.rows[i].id })
}
- return await Users().where({ id: id }).del()
+ return await Users().where({ id }).del()
},
async getUsers(limit = 10, offset = 0, searchQuery = null) {
@@ -194,7 +194,7 @@ module.exports = {
const maxLimit = 200
if (limit > maxLimit) limit = maxLimit
- let query = Users()
+ const query = Users()
if (searchQuery) {
query.where((queryBuilder) => {
@@ -204,7 +204,7 @@ module.exports = {
.orWhere('company', 'ILIKE', `%${searchQuery}%`)
})
}
- let users = await query.limit(limit).offset(offset)
+ const users = await query.limit(limit).offset(offset)
users.map((user) => delete user.passwordDigest)
return users
},
@@ -226,7 +226,7 @@ module.exports = {
},
async countUsers(searchQuery = null) {
- let query = Users()
+ const query = Users()
if (searchQuery) {
query.where((queryBuilder) => {
queryBuilder
@@ -236,7 +236,7 @@ module.exports = {
})
}
- let [userCount] = await query.count()
+ const [userCount] = await query.count()
return parseInt(userCount.count)
}
}
diff --git a/packages/server/modules/core/tests/branches.spec.js b/packages/server/modules/core/tests/branches.spec.js
index 64d87c8e9..52d66fc7e 100644
--- a/packages/server/modules/core/tests/branches.spec.js
+++ b/packages/server/modules/core/tests/branches.spec.js
@@ -20,18 +20,18 @@ const {
} = require('../services/branches')
describe('Branches @core-branches', () => {
- let user = {
+ const user = {
name: 'Dimitrie Stefanescu',
email: 'didimitrie4342@gmail.com',
password: 'sn3aky-1337-b1m'
}
- let stream = {
+ const stream = {
name: 'Test Stream References',
description: 'Whatever goes in here usually...'
}
- let testObject = {
+ const testObject = {
foo: 'bar',
baz: 'qux'
}
@@ -44,7 +44,7 @@ describe('Branches @core-branches', () => {
testObject.id = await createObject(stream.id, testObject)
})
- let branch = { name: 'dim/dev' }
+ const branch = { name: 'dim/dev' }
it('Should create a branch', async () => {
branch.id = await createBranch({
@@ -96,25 +96,25 @@ describe('Branches @core-branches', () => {
})
it('Branch names should be case insensitive (always lowercase)', async () => {
- let id = await createBranch({
+ const id = await createBranch({
name: 'CaseSensitive',
streamId: stream.id,
authorId: user.id
})
- let b = await getBranchByNameAndStreamId({
+ const b = await getBranchByNameAndStreamId({
streamId: stream.id,
name: 'casesensitive'
})
expect(b.name).to.equal('casesensitive')
- let bb = await getBranchByNameAndStreamId({
+ const bb = await getBranchByNameAndStreamId({
streamId: stream.id,
name: 'CaseSensitive'
})
expect(bb.name).to.equal('casesensitive')
- let bbb = await getBranchByNameAndStreamId({
+ const bbb = await getBranchByNameAndStreamId({
streamId: stream.id,
name: 'CASESENSITIVE'
})
@@ -125,7 +125,7 @@ describe('Branches @core-branches', () => {
})
it('Should get a branch', async () => {
- let myBranch = await getBranchById({ id: branch.id })
+ const myBranch = await getBranchById({ id: branch.id })
expect(myBranch.authorId).to.equal(user.id)
expect(myBranch.streamId).to.equal(stream.id)
})
@@ -133,7 +133,7 @@ describe('Branches @core-branches', () => {
it('Should update a branch', async () => {
await updateBranch({ id: branch.id, description: 'lorem ipsum' })
- let b1 = await getBranchById({ id: branch.id })
+ const b1 = await getBranchById({ id: branch.id })
expect(b1.description).to.equal('lorem ipsum')
})
@@ -146,7 +146,7 @@ describe('Branches @core-branches', () => {
authorId: user.id
})
- let { items, cursor, totalCount } = await getBranchesByStreamId({
+ const { items, cursor, totalCount } = await getBranchesByStreamId({
streamId: stream.id
})
expect(items).to.have.lengthOf(5)
@@ -156,12 +156,12 @@ describe('Branches @core-branches', () => {
it('Should delete a branch', async () => {
await deleteBranchById({ id: branch.id, streamId: stream.id })
- let { items } = await getBranchesByStreamId({ streamId: stream.id })
+ const { items } = await getBranchesByStreamId({ streamId: stream.id })
expect(items).to.have.lengthOf(4)
})
it('Should NOT delete the main branch', async () => {
- let b = await getBranchByNameAndStreamId({ streamId: stream.id, name: 'main' })
+ const b = await getBranchByNameAndStreamId({ streamId: stream.id, name: 'main' })
try {
await deleteBranchById({ id: b.id, streamId: stream.id })
assert.fail()
@@ -171,13 +171,13 @@ describe('Branches @core-branches', () => {
})
it('Should return branches in time createdAt order, MAIN first', async () => {
- let { items } = await getBranchesByStreamId({ streamId: stream.id })
+ const { items } = await getBranchesByStreamId({ streamId: stream.id })
expect(items[0].name).to.equal('main')
- let branch = items[3]
+ const branch = items[3]
await updateBranch({ id: branch.id, description: 'lorem ipsum' })
- let cursor = new Date().toISOString()
- let got = await getBranchesByStreamId({ streamId: stream.id, cursor: cursor })
+ const cursor = new Date().toISOString()
+ const got = await getBranchesByStreamId({ streamId: stream.id, cursor })
expect(got.items[3].name).to.equal(branch.name)
expect(got.items[0].name).to.equal('main')
diff --git a/packages/server/modules/core/tests/commits.spec.js b/packages/server/modules/core/tests/commits.spec.js
index a55efba7c..ed1e7b150 100644
--- a/packages/server/modules/core/tests/commits.spec.js
+++ b/packages/server/modules/core/tests/commits.spec.js
@@ -23,28 +23,28 @@ const {
} = require('../services/commits')
describe('Commits @core-commits', () => {
- let user = {
+ const user = {
name: 'Dimitrie Stefanescu',
email: 'didimitrie4342@gmail.com',
password: 'sn3aky-1337-b1m'
}
- let stream = {
+ const stream = {
name: 'Test Stream References',
description: 'Whatever goes in here usually...'
}
- let testObject = {
+ const testObject = {
foo: 'bar',
baz: 'qux'
}
- let testObject2 = {
+ const testObject2 = {
foo: 'bar3',
baz: 'qux3'
}
- let testObject3 = {
+ const testObject3 = {
foo: 'bar4',
baz: 'qux5'
}
@@ -100,12 +100,12 @@ describe('Commits @core-commits', () => {
})
it('Should update a commit', async () => {
- let res = await updateCommit({ id: commitId1, message: 'FIRST COMMIT YOOOOOO' })
+ const res = await updateCommit({ id: commitId1, message: 'FIRST COMMIT YOOOOOO' })
expect(res).to.equal(1)
})
it('Should delete a commit', async () => {
- let tempCommit = await createCommitByBranchName({
+ const tempCommit = await createCommitByBranchName({
streamId: stream.id,
branchName: 'main',
message: 'temp commit',
@@ -114,19 +114,19 @@ describe('Commits @core-commits', () => {
authorId: user.id
})
- let res = await deleteCommit({ id: tempCommit })
+ const res = await deleteCommit({ id: tempCommit })
expect(res).to.equal(1)
})
it('Should get a commit by id', async () => {
- let cm = await getCommitById({ streamId: stream.id, id: commitId1 })
+ const cm = await getCommitById({ streamId: stream.id, id: commitId1 })
expect(cm.message).to.equal('FIRST COMMIT YOOOOOO')
expect(cm.authorId).to.equal(user.id)
})
it('Should get the commits from a branch', async () => {
for (let i = 0; i < 10; i++) {
- let t = { qux: i }
+ const t = { qux: i }
t.id = await createObject(stream.id, t)
await createCommitByBranchName({
streamId: stream.id,
@@ -138,7 +138,7 @@ describe('Commits @core-commits', () => {
})
}
- let { commits, cursor } = await getCommitsByBranchName({
+ const { commits, cursor } = await getCommitsByBranchName({
streamId: stream.id,
branchName: 'main',
limit: 2
@@ -146,17 +146,17 @@ describe('Commits @core-commits', () => {
expect(commits).to.be.an('array')
expect(commits.length).to.equal(2)
- let { commits: commits2 } = await getCommitsByBranchName({
+ const { commits: commits2 } = await getCommitsByBranchName({
streamId: stream.id,
branchName: 'main',
limit: 5,
- cursor: cursor
+ cursor
})
expect(commits2.length).to.equal(5)
})
it('Should get the commit count from a branch', async () => {
- let c = await getCommitsTotalCountByBranchName({
+ const c = await getCommitsTotalCountByBranchName({
streamId: stream.id,
branchName: 'main'
})
@@ -167,7 +167,7 @@ describe('Commits @core-commits', () => {
await createBranch({ name: 'dim/dev', streamId: stream.id, authorId: user.id })
for (let i = 0; i < 10; i++) {
- let t = { thud: i }
+ const t = { thud: i }
t.id = await createObject(stream.id, t)
await createCommitByBranchName({
streamId: stream.id,
@@ -179,14 +179,14 @@ describe('Commits @core-commits', () => {
})
}
- let { commits, cursor } = await getCommitsByStreamId({
+ const { commits, cursor } = await getCommitsByStreamId({
streamId: stream.id,
limit: 10
})
- let { commits: commits2 } = await getCommitsByStreamId({
+ const { commits: commits2 } = await getCommitsByStreamId({
streamId: stream.id,
limit: 20,
- cursor: cursor
+ cursor
})
expect(commits.length).to.equal(10)
@@ -194,17 +194,17 @@ describe('Commits @core-commits', () => {
})
it('Should get the commit count of a stream', async () => {
- let c = await getCommitsTotalCountByStreamId({ streamId: stream.id })
+ const c = await getCommitsTotalCountByStreamId({ streamId: stream.id })
expect(c).to.equal(23)
})
it('Should get the commits of a user', async () => {
- let { commits, cursor } = await getCommitsByUserId({ userId: user.id, limit: 3 })
+ const { commits, cursor } = await getCommitsByUserId({ userId: user.id, limit: 3 })
- let { commits: commits2 } = await getCommitsByUserId({
+ const { commits: commits2 } = await getCommitsByUserId({
userId: user.id,
limit: 100,
- cursor: cursor
+ cursor
})
expect(commits.length).to.equal(3)
@@ -212,12 +212,12 @@ describe('Commits @core-commits', () => {
})
it('Should get the public commits of an user only', async () => {
- let privateStreamId = await createStream({
+ const privateStreamId = await createStream({
name: 'private',
isPublic: false,
ownerId: user.id
})
- let objectId = await createObject(privateStreamId, testObject)
+ const objectId = await createObject(privateStreamId, testObject)
await createCommitByBranchName({
streamId: privateStreamId,
branchName: 'main',
@@ -227,38 +227,38 @@ describe('Commits @core-commits', () => {
authorId: user.id
})
- let { commits } = await getCommitsByUserId({ userId: user.id, limit: 1000 })
+ const { commits } = await getCommitsByUserId({ userId: user.id, limit: 1000 })
expect(commits.length).to.equal(23)
})
it('Should get the commit count of an user', async () => {
- let c = await getCommitsTotalCountByUserId({ userId: user.id })
+ const c = await getCommitsTotalCountByUserId({ userId: user.id })
expect(c).to.equal(24)
})
it('Commits should have source, total count, branch name and parents fields', async () => {
- let { commits: userCommits } = await getCommitsByUserId({
+ const { commits: userCommits } = await getCommitsByUserId({
userId: user.id,
limit: 1000
})
- let userCommit = userCommits[0]
+ const userCommit = userCommits[0]
- let { commits: streamCommits } = await getCommitsByStreamId({
+ const { commits: streamCommits } = await getCommitsByStreamId({
streamId: stream.id,
limit: 10
})
- let serverCommit = streamCommits[0]
+ const serverCommit = streamCommits[0]
- let { commits: branchCommits } = await getCommitsByBranchName({
+ const { commits: branchCommits } = await getCommitsByBranchName({
streamId: stream.id,
branchName: 'main',
limit: 2
})
- let branchCommit = branchCommits[0]
+ const branchCommit = branchCommits[0]
- let idCommit = await getCommitById({ streamId: stream.id, id: commitId3 })
+ const idCommit = await getCommitById({ streamId: stream.id, id: commitId3 })
- for (let commit of [userCommit, serverCommit, branchCommit, idCommit]) {
+ for (const commit of [userCommit, serverCommit, branchCommit, idCommit]) {
expect(commit).to.have.property('sourceApplication')
expect(commit.sourceApplication).to.be.a('string')
@@ -276,12 +276,12 @@ describe('Commits @core-commits', () => {
})
it('Should have an array of parents', async () => {
- let commits = [
+ const commits = [
await getCommitById({ streamId: stream.id, id: commitId3 }),
await getCommitById({ streamId: stream.id, id: commitId2 })
]
- for (let commit of commits) {
+ for (const commit of commits) {
expect(commit).to.have.property('parents')
expect(commit.parents).to.be.a('array')
expect(commit.parents.length).to.greaterThan(0)
diff --git a/packages/server/modules/core/tests/favoriteStreams.spec.js b/packages/server/modules/core/tests/favoriteStreams.spec.js
index 713faab8a..104ce53f8 100644
--- a/packages/server/modules/core/tests/favoriteStreams.spec.js
+++ b/packages/server/modules/core/tests/favoriteStreams.spec.js
@@ -83,12 +83,12 @@ describe('Favorite streams', () => {
name: 'Not My Stream 2',
isPublic: true
}
- let me = {
+ const me = {
name: 'Itsa Me',
email: 'me@gmail.com',
password: 'sn3aky-1337-b1m'
}
- let otherGuy = {
+ const otherGuy = {
name: 'Some Other DUde',
email: 'otherguy@gmail.com',
password: 'sn3aky-1337-b1m'
@@ -179,7 +179,7 @@ describe('Favorite streams', () => {
})
describe('and favorited', () => {
- let favoritedStream = {
+ const favoritedStream = {
name: 'Favorited Stream',
isPublic: true
}
@@ -286,7 +286,7 @@ describe('Favorite streams', () => {
let failsafe = 3
while (failsafe > 0) {
- let res = await getPaginatedAndAssert(nextCursor)
+ const res = await getPaginatedAndAssert(nextCursor)
returnedStreamIds = returnedStreamIds.concat(res.sids)
nextCursor = res.cursor
diff --git a/packages/server/modules/core/tests/generic.spec.js b/packages/server/modules/core/tests/generic.spec.js
index dae8888ec..6302a2345 100644
--- a/packages/server/modules/core/tests/generic.spec.js
+++ b/packages/server/modules/core/tests/generic.spec.js
@@ -37,13 +37,13 @@ describe('Generic AuthN & AuthZ controller tests', () => {
})
it('Should create proper context', async () => {
- let res = await buildContext({ req: { headers: { authorization: 'Bearer BS' } } })
+ const res = await buildContext({ req: { headers: { authorization: 'Bearer BS' } } })
expect(res.auth).to.equal(false)
- let res2 = await buildContext({ req: { headers: { authorization: null } } })
+ const res2 = await buildContext({ req: { headers: { authorization: null } } })
expect(res2.auth).to.equal(false)
- let res3 = await buildContext({ req: { headers: { authorization: undefined } } })
+ const res3 = await buildContext({ req: { headers: { authorization: undefined } } })
expect(res3.auth).to.equal(false)
})
@@ -68,7 +68,7 @@ describe('Generic AuthN & AuthZ controller tests', () => {
})
.catch((err) => expect('Invalid server role specified').to.equal(err.message))
- let test = await validateServerRole(
+ const test = await validateServerRole(
{ auth: true, role: 'server:admin' },
'server:user'
)
diff --git a/packages/server/modules/core/tests/graph.spec.js b/packages/server/modules/core/tests/graph.spec.js
index e0952ec17..638f460c7 100644
--- a/packages/server/modules/core/tests/graph.spec.js
+++ b/packages/server/modules/core/tests/graph.spec.js
@@ -13,9 +13,9 @@ let server
let sendRequest
describe('GraphQL API Core @core-api', () => {
- let userA = { name: 'd1', email: 'd.1@speckle.systems', password: 'wowwowwowwowwow' }
- let userB = { name: 'd2', email: 'd.2@speckle.systems', password: 'wowwowwowwowwow' }
- let userC = { name: 'd3', email: 'd.3@speckle.systems', password: 'wowwowwowwowwow' }
+ const userA = { name: 'd1', email: 'd.1@speckle.systems', password: 'wowwowwowwowwow' }
+ const userB = { name: 'd2', email: 'd.2@speckle.systems', password: 'wowwowwowwowwow' }
+ const userC = { name: 'd3', email: 'd.3@speckle.systems', password: 'wowwowwowwowwow' }
// set up app & two basic users to ping pong permissions around
before(async () => {
@@ -91,8 +91,8 @@ describe('GraphQL API Core @core-api', () => {
let objIds
// some commits
- let c1 = {}
- let c2 = {}
+ const c1 = {}
+ const c2 = {}
// some branches
let b1 = {}
@@ -164,7 +164,7 @@ describe('GraphQL API Core @core-api', () => {
})
it('Should delete my account', async () => {
- let userDelete = {
+ const userDelete = {
name: 'delete',
email: 'delete@speckle.systems',
password: 'wowwowwowwowwow'
@@ -186,13 +186,13 @@ describe('GraphQL API Core @core-api', () => {
]
)}`
- let badTokenScopesBadEmail = await sendRequest(userDelete.token, {
+ const badTokenScopesBadEmail = await sendRequest(userDelete.token, {
query:
'mutation($user:UserDeleteInput!) { userDelete( userConfirmation: $user) } ',
variables: { user: { email: 'wrongEmail@email.com' } }
})
expect(badTokenScopesBadEmail.body.errors).to.exist
- let badTokenScopesGoodEmail = await sendRequest(userDelete.token, {
+ const badTokenScopesGoodEmail = await sendRequest(userDelete.token, {
query:
'mutation($user:UserDeleteInput!) { userDelete( userConfirmation: $user) } ',
variables: { user: { email: userDelete.email } }
@@ -215,13 +215,13 @@ describe('GraphQL API Core @core-api', () => {
]
)}`
- let goodTokenScopesBadEmail = await sendRequest(userDelete.token, {
+ const goodTokenScopesBadEmail = await sendRequest(userDelete.token, {
query:
'mutation($user:UserDeleteInput!) { userDelete( userConfirmation: $user) } ',
variables: { user: { email: 'wrongEmail@email.com' } }
})
expect(goodTokenScopesBadEmail.body.errors).to.exist
- let goodTokenScopesGoodEmail = await sendRequest(userDelete.token, {
+ const goodTokenScopesGoodEmail = await sendRequest(userDelete.token, {
query:
'mutation($user:UserDeleteInput!) { userDelete( userConfirmation: $user) } ',
variables: { user: { email: userDelete.email } }
@@ -252,9 +252,9 @@ describe('GraphQL API Core @core-api', () => {
})
it('Only admins can change user role', async () => {
- let query = `mutation { userRoleChange(userRoleInput: {id: "${userB.id}", role: "server:admin"})}`
- let res = await sendRequest(userB.token, { query })
- let queriedUserB = await sendRequest(userA.token, {
+ const query = `mutation { userRoleChange(userRoleInput: {id: "${userB.id}", role: "server:admin"})}`
+ const res = await sendRequest(userB.token, { query })
+ const queriedUserB = await sendRequest(userA.token, {
query: ` { user(id:"${userB.id}") { id name email role } }`
})
expect(res.body.errors).to.exist
@@ -264,23 +264,23 @@ describe('GraphQL API Core @core-api', () => {
describe('User deletion', () => {
it('Only admins can delete user', async () => {
- let userDelete = {
+ const userDelete = {
name: 'delete',
email: 'delete@speckle.systems',
password: 'wowwowwowwowwow'
}
userDelete.id = await createUser(userDelete)
- let users = await getUsers()
+ const users = await getUsers()
expect(users.map((u) => u.id)).to.contain(userDelete.id)
- let query = `mutation { adminDeleteUser( userConfirmation: { email: "${userDelete.email}" } ) } `
- let res = await sendRequest(userB.token, { query })
+ const query = `mutation { adminDeleteUser( userConfirmation: { email: "${userDelete.email}" } ) } `
+ const res = await sendRequest(userB.token, { query })
expect(res.body.errors).to.exist
expect(res.body.errors[0].extensions.code).to.equal('FORBIDDEN')
})
it('Admin can delete user', async () => {
- let userDelete = {
+ const userDelete = {
name: 'delete',
email: 'd3l3t3@speckle.systems',
password: 'wowwowwowwowwow'
@@ -289,16 +289,16 @@ describe('GraphQL API Core @core-api', () => {
let users = await getUsers()
expect(users.map((u) => u.id)).to.contain(userDelete.id)
- let query = `mutation { adminDeleteUser( userConfirmation: { email: "${userDelete.email}" } ) } `
- let deleteResult = await sendRequest(userA.token, { query })
+ const query = `mutation { adminDeleteUser( userConfirmation: { email: "${userDelete.email}" } ) } `
+ const deleteResult = await sendRequest(userA.token, { query })
expect(deleteResult.body.data.adminDeleteUser).to.equal(true)
users = await getUsers()
expect(users.map((u) => u.id)).to.not.contain(userDelete.id)
})
it('Cannot delete the last admin', async () => {
- let query = `mutation { adminDeleteUser( userConfirmation: { email: "${userA.email}" } ) } `
- let res = await sendRequest(userA.token, { query })
+ const query = `mutation { adminDeleteUser( userConfirmation: { email: "${userA.email}" } ) } `
+ const res = await sendRequest(userA.token, { query })
expect(res.body.errors).to.exist
expect(res.body.errors[0].message).to.equal(
'Cannot remove the last admin role from the server'
@@ -480,7 +480,7 @@ describe('GraphQL API Core @core-api', () => {
})
it('Should query streams', async () => {
- let streamResults = await sendRequest(userA.token, {
+ const streamResults = await sendRequest(userA.token, {
query: '{ streams(limit: 200) { totalCount items { id name } } }'
})
expect(streamResults.body.errors).to.exist
@@ -488,7 +488,7 @@ describe('GraphQL API Core @core-api', () => {
})
it('Should be forbidden to query admin streams if not admin', async () => {
- let res = await sendRequest(userC.token, {
+ const res = await sendRequest(userC.token, {
query: '{ adminStreams { totalCount items { id name } } }'
})
expect(res).to.be.json
@@ -601,7 +601,7 @@ describe('GraphQL API Core @core-api', () => {
describe('Objects, Commits & Branches', () => {
it('Should create some objects', async () => {
- let objs = []
+ const objs = []
for (let i = 0; i < 500; i++) {
if (i % 2 === 0)
objs.push({
@@ -632,7 +632,7 @@ describe('GraphQL API Core @core-api', () => {
const res = await sendRequest(userA.token, {
query: `mutation( $objs: [JSONObject]! ) { objectCreate( objectInput: {streamId:"${ts1}", objects: $objs} ) }`,
- variables: { objs: objs }
+ variables: { objs }
})
expect(res).to.be.json
@@ -680,12 +680,12 @@ describe('GraphQL API Core @core-api', () => {
})
it('Should update a commit', async () => {
- let updatePayload = {
+ const updatePayload = {
streamId: ts1,
id: c1.id,
message: 'first commit'
}
- let res = await sendRequest(userA.token, {
+ const res = await sendRequest(userA.token, {
query:
'mutation( $myCommit: CommitUpdateInput! ) { commitUpdate( commit: $myCommit ) }',
variables: { myCommit: updatePayload }
@@ -694,7 +694,7 @@ describe('GraphQL API Core @core-api', () => {
expect(res.body.errors).to.not.exist
expect(res.body.data).to.have.property('commitUpdate')
- let res2 = await sendRequest(userB.token, {
+ const res2 = await sendRequest(userB.token, {
query:
'mutation( $myCommit: CommitUpdateInput! ) { commitUpdate( commit: $myCommit ) }',
variables: { myCommit: updatePayload }
@@ -704,7 +704,7 @@ describe('GraphQL API Core @core-api', () => {
})
it('Should create a read receipt', async () => {
- let res = await sendRequest(userA.token, {
+ const res = await sendRequest(userA.token, {
query:
'mutation($input: CommitReceivedInput!) { commitReceive(input: $input) }',
variables: {
@@ -721,7 +721,7 @@ describe('GraphQL API Core @core-api', () => {
expect(res.body.errors).to.not.exist
expect(res.body.data.commitReceive).to.equal(true)
- let res3 = await sendRequest(null, {
+ const res3 = await sendRequest(null, {
query:
'mutation($input: CommitReceivedInput!) { commitReceive(input: $input) }',
variables: {
@@ -740,9 +740,9 @@ describe('GraphQL API Core @core-api', () => {
})
it('Should delete a commit', async () => {
- let payload = { streamId: ts1, id: c2.id }
+ const payload = { streamId: ts1, id: c2.id }
- let res = await sendRequest(userB.token, {
+ const res = await sendRequest(userB.token, {
query:
'mutation( $myCommit: CommitDeleteInput! ) { commitDelete( commit: $myCommit ) }',
variables: { myCommit: payload }
@@ -750,7 +750,7 @@ describe('GraphQL API Core @core-api', () => {
expect(res).to.be.json
expect(res.body.errors).to.exist
- let res2 = await sendRequest(userA.token, {
+ const res2 = await sendRequest(userA.token, {
query:
'mutation( $myCommit: CommitDeleteInput! ) { commitDelete( commit: $myCommit ) }',
variables: { myCommit: payload }
@@ -807,7 +807,7 @@ describe('GraphQL API Core @core-api', () => {
})
it('Should update a branch', async () => {
- let payload = {
+ const payload = {
streamId: ts1,
id: b2.id,
name: 'userb/whatever/whatever'
@@ -830,12 +830,12 @@ describe('GraphQL API Core @core-api', () => {
query: `mutation{ streamGrantPermission( permissionParams: {streamId: "${ts1}", userId: "${userC.id}" role: "stream:contributor"}) }`
})
- let payload = {
+ const payload = {
streamId: ts1,
id: b2.id
}
- let badPayload = {
+ const badPayload = {
streamId: ts1,
id: 'APRIL FOOOLS!'
}
@@ -875,13 +875,13 @@ describe('GraphQL API Core @core-api', () => {
})
it('Should commit to a non-main branch as well...', async () => {
- let cc = {}
+ const cc = {}
cc.message = 'what a message for a second commit'
cc.streamId = ts1
cc.objectId = objIds[3]
cc.branchName = 'userB/dev/api'
- let res = await sendRequest(userB.token, {
+ const res = await sendRequest(userB.token, {
query:
'mutation( $myCommit: CommitCreateInput! ) { commitCreate( commit: $myCommit ) }',
variables: { myCommit: cc }
@@ -917,7 +917,7 @@ describe('GraphQL API Core @core-api', () => {
expect(res1.body.data.branchCreate).to.be.a('string')
b4.id = res1.body.data.branchCreate
- let badPayload = {
+ const badPayload = {
streamId: ts6, // stream user C has access to
id: b4.id, // branch user C doesn't have access to
name: 'izz/not-so-secret'
@@ -936,7 +936,7 @@ describe('GraphQL API Core @core-api', () => {
})
it('should *not* delete a branch if given the wrong stream id', async () => {
- let badPayload = {
+ const badPayload = {
streamId: ts6, // stream user C has access to
id: b4.id // branch user C doesn't have access to
}
@@ -1004,14 +1004,14 @@ describe('GraphQL API Core @core-api', () => {
expect(res2.body.errors).to.not.exist
expect(res2.body.data.user.streams.items.length).to.equal(3)
- let streams = res2.body.data.user.streams.items
- let s1 = streams.find((s) => s.name === 'TS1 (u A) Private UPDATED')
+ const streams = res2.body.data.user.streams.items
+ const s1 = streams.find((s) => s.name === 'TS1 (u A) Private UPDATED')
expect(s1).to.exist
})
it('Should retrieve my commits (across all streams)', async () => {
for (let i = 10; i < 20; i++) {
- let c1 = {
+ const c1 = {
message: `what a message for commit number ${i}`,
streamId: ts1,
objectId: objIds[i],
@@ -1194,7 +1194,7 @@ describe('GraphQL API Core @core-api', () => {
expect(res).to.be.json
expect(res.body.errors).to.not.exist
- let stream = res.body.data.stream
+ const stream = res.body.data.stream
expect(stream.name).to.equal('TS1 (u A) Private UPDATED')
expect(stream.collaborators).to.have.lengthOf(2)
@@ -1211,7 +1211,7 @@ describe('GraphQL API Core @core-api', () => {
let bees = []
it('should retrieve all stream branches', async () => {
- let query = `
+ const query = `
query{
stream(id: "${ts1}"){
branches( limit: 2 ) {
@@ -1230,7 +1230,7 @@ describe('GraphQL API Core @core-api', () => {
}
`
- let res = await sendRequest(userA.token, { query })
+ const res = await sendRequest(userA.token, { query })
expect(res).to.be.json
expect(res.body.errors).to.not.exist
@@ -1240,7 +1240,7 @@ describe('GraphQL API Core @core-api', () => {
bees = res.body.data.stream.branches.items
- let query2 = `
+ const query2 = `
query{
stream(id: "${ts1}"){
branches( limit: 2, cursor: "${res.body.data.stream.branches.cursor}" ) {
@@ -1258,7 +1258,7 @@ describe('GraphQL API Core @core-api', () => {
}
}
`
- let res2 = await sendRequest(userA.token, { query: query2 })
+ const res2 = await sendRequest(userA.token, { query: query2 })
expect(res2).to.be.json
expect(res2.body.errors).to.not.exist
@@ -1286,7 +1286,7 @@ describe('GraphQL API Core @core-api', () => {
})
it('should retrieve a branch`s commits', async () => {
- let query = `
+ const query = `
query {
stream( id: "${ts1}" ) {
branch( name: "main" ) {
@@ -1307,7 +1307,7 @@ describe('GraphQL API Core @core-api', () => {
}
}
`
- const res = await sendRequest(userA.token, { query: query })
+ const res = await sendRequest(userA.token, { query })
expect(res.body.data.stream.branch.commits.items.length).to.equal(5)
expect(res.body.data.stream.branch.commits.items[0]).to.have.property('id')
expect(res.body.data.stream.branch.commits.items[0]).to.have.property('message')
@@ -1315,7 +1315,7 @@ describe('GraphQL API Core @core-api', () => {
'createdAt'
)
- let query2 = `
+ const query2 = `
query {
stream( id: "${ts1}" ) {
branch( name: "main" ) {
@@ -1354,7 +1354,7 @@ describe('GraphQL API Core @core-api', () => {
let commitList
it('should retrieve all stream commits', async () => {
- let query = `
+ const query = `
query {
stream( id: "${ts1}" ) {
commits( limit: 10 ) {
@@ -1370,7 +1370,7 @@ describe('GraphQL API Core @core-api', () => {
}
}
`
- const res = await sendRequest(userA.token, { query: query })
+ const res = await sendRequest(userA.token, { query })
expect(res).to.be.json
expect(res.body.errors).to.not.exist
@@ -1379,7 +1379,7 @@ describe('GraphQL API Core @core-api', () => {
commitList = res.body.data.stream.commits.items
- let query2 = `
+ const query2 = `
query {
stream( id: "${ts1}" ) {
commits( limit: 10, cursor: "${res.body.data.stream.commits.cursor}" ) {
@@ -1432,19 +1432,19 @@ describe('GraphQL API Core @core-api', () => {
let myObjs
before(async () => {
- let { commit, objs } = generateManyObjects(100, 'noise__')
+ const { commit, objs } = generateManyObjects(100, 'noise__')
myCommit = commit
myObjs = objs
})
it('should save many objects', async () => {
- let everything = [myCommit, ...myObjs]
+ const everything = [myCommit, ...myObjs]
const res = await sendRequest(userA.token, {
query: `mutation($objs:[JSONObject]!) { objectCreate(objectInput: {streamId:"${ts1}", objects: $objs}) }`,
variables: { objs: everything }
})
- let objIds = res.body.data.objectCreate
+ const objIds = res.body.data.objectCreate
expect(res).to.be.json
expect(res.body.errors).to.not.exist
@@ -1452,7 +1452,7 @@ describe('GraphQL API Core @core-api', () => {
})
it("should get an object's subojects objects", async () => {
- let first = await sendRequest(userA.token, {
+ const first = await sendRequest(userA.token, {
query: `
query {
stream( id:"${ts1}" ) {
@@ -1479,7 +1479,7 @@ describe('GraphQL API Core @core-api', () => {
expect(first.body.data.stream.object).to.be.an('object')
expect(first.body.data.stream.object.children.objects.length).to.equal(2)
- let second = await sendRequest(userA.token, {
+ const second = await sendRequest(userA.token, {
query: `
query {
stream(id:"${ts1}") {
@@ -1514,7 +1514,7 @@ describe('GraphQL API Core @core-api', () => {
})
it("should query an object's subojects", async () => {
- let first = await sendRequest(userA.token, {
+ const first = await sendRequest(userA.token, {
query: `
query( $query: [JSONObject!], $orderBy: JSONObject ) {
stream(id:"${ts1}") {
@@ -1564,7 +1564,7 @@ describe('GraphQL API Core @core-api', () => {
})
it('Should return a valid server information object', async () => {
- let q = `
+ const q = `
query{
serverInfo{
name
@@ -1584,13 +1584,13 @@ describe('GraphQL API Core @core-api', () => {
}
}`
- let res = await sendRequest(null, { query: q })
+ const res = await sendRequest(null, { query: q })
expect(res).to.be.json
expect(res.body.errors).to.not.exist
expect(res.body.data.serverInfo).to.be.an('object')
- let si = res.body.data.serverInfo
+ const si = res.body.data.serverInfo
expect(si.name).to.be.a('string')
expect(si.adminContact).to.be.a('string')
expect(si.termsOfService).to.be.a('string')
@@ -1625,7 +1625,7 @@ describe('GraphQL API Core @core-api', () => {
})
describe('Archived role access validation', () => {
- let archivedUser = {
+ const archivedUser = {
name: 'Mark von Archival',
email: 'archi@speckle.systems',
password: 'i"ll be back, just wait'
@@ -1663,7 +1663,7 @@ describe('GraphQL API Core @core-api', () => {
})
expect(grantRes.body.data.streamGrantPermission).to.equal(true)
- let res = await sendRequest(archivedUser.token, {
+ const res = await sendRequest(archivedUser.token, {
query: `query { stream(id:"${streamRes.body.data.streamCreate}") { id name } }`
})
expect(res.body.errors).to.not.exist
@@ -1806,7 +1806,7 @@ describe('GraphQL API Core @core-api', () => {
})
it('Should be forbidden to create object', async () => {
- let objects = generateManyObjects(10)
+ const objects = generateManyObjects(10)
const res = await sendRequest(archivedUser.token, {
query: `mutation( $objs: [JSONObject]! ) { objectCreate( objectInput: {streamId:"${ts1}", objects: $objs} ) }`,
@@ -1822,11 +1822,11 @@ describe('GraphQL API Core @core-api', () => {
it('Should be forbidden to create commit', async () => {
const commit = {
message: 'what a message for a first commit',
- streamId: streamId,
+ streamId,
objectId: 'justARandomHash',
branchName: 'main'
}
- let res = await sendRequest(archivedUser.token, {
+ const res = await sendRequest(archivedUser.token, {
query:
'mutation( $myCommit: CommitCreateInput! ) { commitCreate( commit: $myCommit ) }',
variables: { myCommit: commit }
@@ -1838,8 +1838,8 @@ describe('GraphQL API Core @core-api', () => {
})
it('Should be forbidden to upload via rest API', async () => {
- let objects = generateManyObjects(2)
- let res = await request(app)
+ const objects = generateManyObjects(2)
+ const res = await request(app)
.post(`/objects/${streamId}`)
.set('Authorization', archivedUser.token)
.set('Content-type', 'multipart/form-data')
@@ -1849,7 +1849,7 @@ describe('GraphQL API Core @core-api', () => {
it('Should be forbidden to download from private stream it had access to via rest API', async () => {
// even if the object doesn't exist, so im not creating it...
- let res = await request(app)
+ const res = await request(app)
.get('/objects/thisIs/bogus')
.set('Authorization', archivedUser.token)
expect(res).to.have.status(401)
@@ -1864,7 +1864,7 @@ describe('GraphQL API Core @core-api', () => {
query: `mutation{ streamGrantPermission( permissionParams: {streamId: "${streamRes.body.data.streamCreate}", userId: "${archivedUser.id}" role: "stream:contributor"}) }`
})
expect(grantRes.body.data.streamGrantPermission).to.equal(true)
- let objects = generateManyObjects(2)
+ const objects = generateManyObjects(2)
let res = await request(app)
.post(`/objects/${streamRes.body.data.streamCreate}`)
.set('Authorization', userA.token)
diff --git a/packages/server/modules/core/tests/graphSubs.spec.js b/packages/server/modules/core/tests/graphSubs.spec.js
index c04a00d3f..3e4d18b3a 100644
--- a/packages/server/modules/core/tests/graphSubs.spec.js
+++ b/packages/server/modules/core/tests/graphSubs.spec.js
@@ -20,9 +20,9 @@ let wsAddr
let childPort = null
describe('GraphQL API Subscriptions @gql-subscriptions', () => {
- let userA = { name: 'd1', email: 'd.1@speckle.systems', password: 'wow8charsplease' }
- let userB = { name: 'd2', email: 'd.2@speckle.systems', password: 'wow8charsplease' }
- let userC = { name: 'd3', email: 'd.3@speckle.systems', password: 'wow8charsplease' }
+ const userA = { name: 'd1', email: 'd.1@speckle.systems', password: 'wow8charsplease' }
+ const userB = { name: 'd2', email: 'd.2@speckle.systems', password: 'wow8charsplease' }
+ const userC = { name: 'd3', email: 'd.3@speckle.systems', password: 'wow8charsplease' }
let serverProcess
const getWsClient = (wsurl, authToken) => {
@@ -40,7 +40,7 @@ describe('GraphQL API Subscriptions @gql-subscriptions', () => {
const createSubscriptionObservable = (wsurl, authToken, query, variables) => {
authToken = authToken || userA.token
const link = new WebSocketLink(getWsClient(wsurl, authToken))
- return execute(link, { query: query, variables: variables })
+ return execute(link, { query, variables })
}
// set up app & two basic users to ping pong permissions around
@@ -62,7 +62,7 @@ describe('GraphQL API Subscriptions @gql-subscriptions', () => {
// uncomment this line to understand a bit more what's happening...
// console.error( `stderr: ${data}` )
// ok this is going to be a dirt hack, but I have no better idea ATM
- let match = `${data}`.match(reg)
+ const match = `${data}`.match(reg)
if (!childPort && match) {
childPort = parseInt(match[1])
@@ -82,7 +82,7 @@ describe('GraphQL API Subscriptions @gql-subscriptions', () => {
}
userA.id = await createUser(userA)
- let token = await createPersonalAccessToken(userA.id, 'test token user A', [
+ const token = await createPersonalAccessToken(userA.id, 'test token user A', [
'streams:read',
'streams:write',
'users:read',
diff --git a/packages/server/modules/core/tests/init.spec.js b/packages/server/modules/core/tests/init.spec.js
index 84158c0ba..5f7251ed3 100644
--- a/packages/server/modules/core/tests/init.spec.js
+++ b/packages/server/modules/core/tests/init.spec.js
@@ -18,17 +18,17 @@ describe('Initialization Logic @init-logic', () => {
})
it('should have a lotta scopes', async () => {
- let res = await knex('scopes').select()
+ const res = await knex('scopes').select()
expect(res.length).to.be.greaterThan(10)
})
it('should have some roles', async () => {
- let res = await knex('user_roles').select()
+ const res = await knex('user_roles').select()
expect(res.length).to.be.greaterThan(4)
})
it('should have some apps', async () => {
- let res = await knex('server_apps').select()
+ const res = await knex('server_apps').select()
expect(res.length).to.be.greaterThan(2)
})
})
@@ -39,17 +39,17 @@ describe('Initialization Logic @init-logic', () => {
})
it('should have a lotta scopes second time round too!', async () => {
- let res = await knex('scopes').select()
+ const res = await knex('scopes').select()
expect(res.length).to.be.greaterThan(10)
})
it('should have some roles second time round!', async () => {
- let res = await knex('user_roles').select()
+ const res = await knex('user_roles').select()
expect(res.length).to.be.greaterThan(4)
})
it('should have some apps second time round', async () => {
- let res = await knex('server_apps').select()
+ const res = await knex('server_apps').select()
expect(res.length).to.be.greaterThan(2)
})
})
diff --git a/packages/server/modules/core/tests/objects.spec.js b/packages/server/modules/core/tests/objects.spec.js
index b034c8701..aa4048a27 100644
--- a/packages/server/modules/core/tests/objects.spec.js
+++ b/packages/server/modules/core/tests/objects.spec.js
@@ -20,7 +20,7 @@ const {
getObjectChildrenStream
} = require('../services/objects')
-let sampleCommit = JSON.parse(`{
+const sampleCommit = JSON.parse(`{
"Objects": [
{
"speckleType": "reference",
@@ -36,7 +36,7 @@ let sampleCommit = JSON.parse(`{
"speckleType": "Speckle.Core.Commit"
}`)
-let sampleObject = JSON.parse(`{
+const sampleObject = JSON.parse(`{
"Vertices": [],
"id": "8a9b0676b7fe3e5e487bb34549e67f67",
"applicationId": "test",
@@ -44,13 +44,13 @@ let sampleObject = JSON.parse(`{
}`)
describe('Objects @core-objects', () => {
- let userOne = {
+ const userOne = {
name: 'Dimitrie Stefanescu',
email: 'didimitrie43@gmail.com',
password: 'sn3aky-1337-b1m'
}
- let stream = {
+ const stream = {
name: 'Test Streams',
description: 'Whatever goes in here usually...'
}
@@ -67,10 +67,10 @@ describe('Objects @core-objects', () => {
sampleCommit.id = await createObject(stream.id, sampleCommit)
})
- let objCount_1 = 10
- let objCount_2 = 1000
- let objs = []
- let objs2 = []
+ const objCount_1 = 10
+ const objCount_2 = 1000
+ const objs = []
+ const objs2 = []
it(`Should create ${objCount_1} objects`, async () => {
for (let i = 0; i < objCount_1; i++) {
@@ -80,7 +80,7 @@ describe('Objects @core-objects', () => {
})
}
- let ids = await createObjects(stream.id, objs)
+ const ids = await createObjects(stream.id, objs)
expect(ids).to.have.lengthOf(objCount_1)
}).timeout(30000)
@@ -109,7 +109,7 @@ describe('Objects @core-objects', () => {
})
}
- let myIds = await createObjects(stream.id, objs2)
+ const myIds = await createObjects(stream.id, objs2)
myIds.forEach((h, i) => (objs2[i].id = h))
@@ -117,22 +117,22 @@ describe('Objects @core-objects', () => {
}).timeout(30000)
it('Should get a single object', async () => {
- let obj = await getObject({ streamId: stream.id, objectId: sampleCommit.id })
+ const obj = await getObject({ streamId: stream.id, objectId: sampleCommit.id })
expect(obj).to.not.be.null
})
it('Should get more objects', async () => {
- let myObjs = await getObjects(
+ const myObjs = await getObjects(
stream.id,
objs.map((o) => o.id)
)
expect(myObjs).to.have.lengthOf(objs.length)
- let match1 = myObjs.find((o) => o.id === objs[0].id)
+ const match1 = myObjs.find((o) => o.id === objs[0].id)
expect(match1).to.not.be.null
expect(match1.id).to.equal(objs[0].id)
- let match2 = myObjs.find((o) => o.id === objs[2].id)
+ const match2 = myObjs.find((o) => o.id === objs[2].id)
expect(match2).to.not.be.null
expect(match2.id).to.equal(objs[2].id)
})
@@ -140,8 +140,8 @@ describe('Objects @core-objects', () => {
let parentObjectId
it('Should get object children', async () => {
- let objs_1 = createManyObjects(100, 'noise__')
- let ids = await createObjects(stream.id, objs_1)
+ const objs_1 = createManyObjects(100, 'noise__')
+ const ids = await createObjects(stream.id, objs_1)
// console.log( ids )
// console.log(ids[ 0 ])
@@ -155,8 +155,8 @@ describe('Objects @core-objects', () => {
// let { rows } = await getObjectChildren( { objectId: ids[0], select: ['id', 'name', 'sortValueB'] } )
// let { rows } = await getObjectChildren( { objectId: ids[ 0 ] } )
- let limit = 50
- let { objects: rows_1, cursor: cursor_1 } = await getObjectChildren({
+ const limit = 50
+ const { objects: rows_1, cursor: cursor_1 } = await getObjectChildren({
streamId: stream.id,
limit,
objectId: ids[0],
@@ -177,7 +177,7 @@ describe('Objects @core-objects', () => {
expect(cursor_1).to.be.a('string')
- let { objects: rows_2 } = await getObjectChildren({
+ const { objects: rows_2 } = await getObjectChildren({
streamId: stream.id,
limit,
objectId: ids[0],
@@ -197,7 +197,7 @@ describe('Objects @core-objects', () => {
expect(rows_2[0]).to.have.nested.property('data.test.secondValue')
expect(rows_2[0]).to.have.nested.property('data.nest.mallard')
- let { objects } = await getObjectChildren({
+ const { objects } = await getObjectChildren({
streamId: stream.id,
objectId: ids[0],
limit: 1000
@@ -210,7 +210,7 @@ describe('Objects @core-objects', () => {
it('should query object children, ascending order', async () => {
// we're assuming the prev test objects exist
- let test = await getObjectChildrenQuery({
+ const test = await getObjectChildrenQuery({
streamId: stream.id,
objectId: parentObjectId,
select: ['id', 'test.value'],
@@ -223,7 +223,7 @@ describe('Objects @core-objects', () => {
orderBy: { field: 'test.value', direction: 'asc' }
})
- let test2 = await getObjectChildrenQuery({
+ const test2 = await getObjectChildrenQuery({
streamId: stream.id,
objectId: parentObjectId,
select: ['id', 'test.value', 'nest.duck'],
@@ -268,7 +268,7 @@ describe('Objects @core-objects', () => {
it('should query object children desc on a field with duplicate values, without selecting fields', async () => {
// Note: the `similar` field is incremented on i%3===0, resulting in a pattern of 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, etc.
- let test3 = await getObjectChildrenQuery({
+ const test3 = await getObjectChildrenQuery({
streamId: stream.id,
objectId: parentObjectId,
// select: [ 'similar', 'id' ],
@@ -280,7 +280,7 @@ describe('Objects @core-objects', () => {
limit: 5
})
- let test4 = await getObjectChildrenQuery({
+ const test4 = await getObjectChildrenQuery({
streamId: stream.id,
objectId: parentObjectId,
// select: [ 'similar', 'id' ],
@@ -319,7 +319,7 @@ describe('Objects @core-objects', () => {
})
it('should query object children with no results ', async () => {
- let test = await getObjectChildrenQuery({
+ const test = await getObjectChildrenQuery({
streamId: stream.id,
objectId: parentObjectId,
query: [
@@ -355,7 +355,7 @@ describe('Objects @core-objects', () => {
})
it('should query children and sort them by a boolean value ', async () => {
- let test = await getObjectChildrenQuery({
+ const test = await getObjectChildrenQuery({
streamId: stream.id,
objectId: parentObjectId,
limit: 5,
@@ -364,7 +364,7 @@ describe('Objects @core-objects', () => {
orderBy: { field: 'nest.duck', direction: 'desc' }
})
- let test2 = await getObjectChildrenQuery({
+ const test2 = await getObjectChildrenQuery({
streamId: stream.id,
objectId: parentObjectId,
limit: 5,
@@ -379,9 +379,9 @@ describe('Objects @core-objects', () => {
})
it('should query children and sort them by a string value ', async () => {
- let limVal = 20
+ const limVal = 20
- let test = await getObjectChildrenQuery({
+ const test = await getObjectChildrenQuery({
streamId: stream.id,
objectId: parentObjectId,
limit: 5,
@@ -389,7 +389,7 @@ describe('Objects @core-objects', () => {
orderBy: { field: 'name', direction: 'asc' }
})
- let test2 = await getObjectChildrenQuery({
+ const test2 = await getObjectChildrenQuery({
streamId: stream.id,
objectId: parentObjectId,
limit: 5,
@@ -409,7 +409,7 @@ describe('Objects @core-objects', () => {
})
it('should query children and sort them by id by default ', async () => {
- let test = await getObjectChildrenQuery({
+ const test = await getObjectChildrenQuery({
streamId: stream.id,
objectId: parentObjectId,
limit: 3,
@@ -421,7 +421,7 @@ describe('Objects @core-objects', () => {
expect(test.totalCount).to.equal(90)
- let test2 = await getObjectChildrenQuery({
+ const test2 = await getObjectChildrenQuery({
streamId: stream.id,
objectId: parentObjectId,
limit: 3,
@@ -436,14 +436,14 @@ describe('Objects @core-objects', () => {
})
it('should just order results by something', async () => {
- let test = await getObjectChildrenQuery({
+ const test = await getObjectChildrenQuery({
streamId: stream.id,
objectId: parentObjectId,
limit: 2,
orderBy: { field: 'test.value', direction: 'desc' }
})
- let test2 = await getObjectChildrenQuery({
+ const test2 = await getObjectChildrenQuery({
streamId: stream.id,
objectId: parentObjectId,
limit: 2,
@@ -455,14 +455,14 @@ describe('Objects @core-objects', () => {
test2.objects[0].data.test.value + 1
) // continuity check
- let test3 = await getObjectChildrenQuery({
+ const test3 = await getObjectChildrenQuery({
streamId: stream.id,
objectId: parentObjectId,
limit: 50,
orderBy: { field: 'nest.duck', direction: 'desc' }
})
- let test4 = await getObjectChildrenQuery({
+ const test4 = await getObjectChildrenQuery({
streamId: stream.id,
objectId: parentObjectId,
limit: 50,
@@ -476,14 +476,14 @@ describe('Objects @core-objects', () => {
let commitId
it('should batch create objects', async () => {
- let objs = createManyObjects(3333, 'perlin merlin magic')
+ const objs = createManyObjects(3333, 'perlin merlin magic')
commitId = objs[0].id
await createObjectsBatched(stream.id, objs)
- let parent = await getObject({ streamId: stream.id, objectId: commitId })
+ const parent = await getObject({ streamId: stream.id, objectId: commitId })
expect(parent.totalChildrenCount).to.equal(3333)
- let commitChildren = await getObjectChildren({
+ const commitChildren = await getObjectChildren({
streamId: stream.id,
objectId: commitId,
limit: 2
@@ -506,7 +506,7 @@ describe('Objects @core-objects', () => {
it('should not deadlock when batch inserting in random order', async function () {
this.timeout(5000)
- let objs = createManyObjects(5000, 'perlin merlin magic')
+ const objs = createManyObjects(5000, 'perlin merlin magic')
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
@@ -515,16 +515,16 @@ describe('Objects @core-objects', () => {
}
}
- let shuffledVersions = []
+ const shuffledVersions = []
for (let i = 0; i < 3; i++) {
- let shuffledVersion = objs.slice()
+ const shuffledVersion = objs.slice()
shuffleArray(shuffledVersion)
shuffledVersions.push(shuffledVersion)
}
- let promisses = []
+ const promisses = []
for (let i = 0; i < shuffledVersions.length; i++) {
- let promise = createObjectsBatched(stream.id, shuffledVersions[i])
+ const promise = createObjectsBatched(stream.id, shuffledVersions[i])
promise.catch(() => {})
promisses.push(promise)
}
@@ -539,21 +539,21 @@ function createManyObjects(num, noise) {
num = num || 10000
noise = noise || Math.random() * 100
- let objs = []
+ const objs = []
- let base = { name: 'base bastard 2', noise: noise, __closure: {} }
+ const base = { name: 'base bastard 2', noise, __closure: {} }
objs.push(base)
let k = 0
for (let i = 0; i < num; i++) {
- let baby = {
+ const baby = {
name: `mr. ${i}`,
nest: { duck: i % 2 === 0, mallard: 'falsey', arr: [i + 42, i, i] },
test: { value: i, secondValue: 'mallard ' + (i % 10) },
similar: k,
even: i % 2 === 0,
objArr: [{ a: i }, { b: i * i }, { c: true }],
- noise: noise,
+ noise,
sortValueA: i,
sortValueB: i * 0.42 * i
}
diff --git a/packages/server/modules/core/tests/rest.spec.js b/packages/server/modules/core/tests/rest.spec.js
index b3b2a5fd3..5c561d9c5 100644
--- a/packages/server/modules/core/tests/rest.spec.js
+++ b/packages/server/modules/core/tests/rest.spec.js
@@ -14,23 +14,23 @@ const { createPersonalAccessToken } = require('../services/tokens')
const { createStream } = require('../services/streams')
describe('Upload/Download Routes @api-rest', () => {
- let userA = {
+ const userA = {
name: 'd1',
email: 'd.1@speckle.systems',
password: 'wowwow8charsplease'
}
- let userB = {
+ const userB = {
name: 'd2',
email: 'd.2@speckle.systems',
password: 'wowwow8charsplease'
}
- let testStream = {
+ const testStream = {
name: 'Test Stream 01',
description: 'wonderful test stream'
}
- let privateTestStream = { name: 'Private Test Stream', isPublic: false }
+ const privateTestStream = { name: 'Private Test Stream', isPublic: false }
let app
before(async () => {
@@ -101,7 +101,7 @@ describe('Upload/Download Routes @api-rest', () => {
expect(res).to.have.status(404)
// create some objects
- let objBatches = [createManyObjects(20), createManyObjects(20)]
+ const objBatches = [createManyObjects(20), createManyObjects(20)]
await request(app)
.post(`/objects/${testStream.id}`)
@@ -130,7 +130,7 @@ describe('Upload/Download Routes @api-rest', () => {
})
it('Should not allow getting an object that is not part of the stream', async () => {
- let objBatch = createManyObjects(20)
+ const objBatch = createManyObjects(20)
await request(app)
.post(`/objects/${privateTestStream.id}`)
@@ -172,8 +172,8 @@ describe('Upload/Download Routes @api-rest', () => {
})
let parentId
- let numObjs = 5000
- let objBatches = [
+ const numObjs = 5000
+ const objBatches = [
createManyObjects(numObjs),
createManyObjects(numObjs),
createManyObjects(numObjs)
@@ -182,7 +182,7 @@ describe('Upload/Download Routes @api-rest', () => {
it('Should properly upload a bunch of objects', async () => {
parentId = objBatches[0][0].id
- let res = await request(app)
+ const res = await request(app)
.post(`/objects/${testStream.id}`)
.set('Authorization', userA.token)
.set('Content-type', 'multipart/form-data')
@@ -217,7 +217,7 @@ describe('Upload/Download Routes @api-rest', () => {
.end((err, res) => {
if (err) done(err)
try {
- let o = JSON.parse(res.body)
+ const o = JSON.parse(res.body)
expect(o.length).to.equal(numObjs + 1)
expect(res).to.be.json
done()
@@ -246,7 +246,7 @@ describe('Upload/Download Routes @api-rest', () => {
.end((err, res) => {
if (err) done(err)
try {
- let o = res.body.split('\n').filter((l) => l !== '')
+ const o = res.body.split('\n').filter((l) => l !== '')
expect(o.length).to.equal(numObjs + 1)
expect(res).to.be.text
done()
@@ -257,7 +257,7 @@ describe('Upload/Download Routes @api-rest', () => {
})
it('Should properly download a list of objects', (done) => {
- let objectIds = []
+ const objectIds = []
for (let i = 0; i < objBatches[0].length; i++) {
objectIds.push(objBatches[0][i].id)
}
@@ -279,7 +279,7 @@ describe('Upload/Download Routes @api-rest', () => {
.end((err, res) => {
if (err) done(err)
try {
- let o = res.body.split('\n').filter((l) => l !== '')
+ const o = res.body.split('\n').filter((l) => l !== '')
expect(o.length).to.equal(objectIds.length)
expect(res).to.be.text
done()
@@ -290,13 +290,13 @@ describe('Upload/Download Routes @api-rest', () => {
})
it('Should properly check if the server has a list of objects', (done) => {
- let objectIds = []
+ const objectIds = []
for (let i = 0; i < objBatches[0].length; i++) {
objectIds.push(objBatches[0][i].id)
}
- let fakeIds = []
+ const fakeIds = []
for (let i = 0; i < 100; i++) {
- let fakeId = crypto
+ const fakeId = crypto
.createHash('md5')
.update('fakefake' + i)
.digest('hex')
@@ -321,7 +321,7 @@ describe('Upload/Download Routes @api-rest', () => {
.end((err, res) => {
if (err) done(err)
try {
- let o = JSON.parse(res.body)
+ const o = JSON.parse(res.body)
expect(Object.keys(o).length).to.equal(objectIds.length)
for (let i = 0; i < objBatches[0].length; i++) {
assert(o[objBatches[0][i].id] === true, 'Server is missing an object')
diff --git a/packages/server/modules/core/tests/streams.spec.js b/packages/server/modules/core/tests/streams.spec.js
index e05ad8ba6..5aaa4cc64 100644
--- a/packages/server/modules/core/tests/streams.spec.js
+++ b/packages/server/modules/core/tests/streams.spec.js
@@ -26,13 +26,13 @@ const { beforeEachContext } = require(`${appRoot}/test/hooks`)
const { sleep } = require(`${appRoot}/test/helpers`)
describe('Streams @core-streams', () => {
- let userOne = {
+ const userOne = {
name: 'Dimitrie Stefanescu',
email: 'didimitrie@gmail.com',
password: 'sn3aky-1337-b1m'
}
- let userTwo = {
+ const userTwo = {
name: 'Dimitrie Stefanescu 2',
email: 'didimitrie2@gmail.com',
password: 'sn3aky-1337-b1m'
@@ -44,13 +44,13 @@ describe('Streams @core-streams', () => {
userOne.id = await createUser(userOne)
})
- let testStream = {
+ const testStream = {
name: 'Test Stream 01',
description: 'wonderful test stream',
isPublic: true
}
- let secondTestStream = { name: 'Test Stream 02', description: 'wot' }
+ const secondTestStream = { name: 'Test Stream 02', description: 'wot' }
describe('Create, Read, Update, Delete Streams', () => {
it('Should create a stream', async () => {
@@ -66,7 +66,7 @@ describe('Streams @core-streams', () => {
})
it('Should get a stream', async () => {
- let stream = await getStream({ streamId: testStream.id })
+ const stream = await getStream({ streamId: testStream.id })
expect(stream).to.not.be.null
})
@@ -76,20 +76,20 @@ describe('Streams @core-streams', () => {
name: 'Modified Name',
description: 'Wooot'
})
- let stream = await getStream({ streamId: testStream.id })
+ const stream = await getStream({ streamId: testStream.id })
expect(stream.name).to.equal('Modified Name')
expect(stream.description).to.equal('Wooot')
})
it('Should get all streams of a user', async () => {
- let { streams, cursor } = await getUserStreams({ userId: userOne.id })
+ const { streams, cursor } = await getUserStreams({ userId: userOne.id })
// console.log( res )
expect(streams).to.have.lengthOf(2)
expect(cursor).to.exist
})
it('Should search all streams of a user', async () => {
- let { streams, cursor } = await getUserStreams({
+ const { streams, cursor } = await getUserStreams({
userId: userOne.id,
searchQuery: 'woo'
})
@@ -133,7 +133,7 @@ describe('Streams @core-streams', () => {
})
it('Stream should show up in the other users` list', async () => {
- let { streams: userTwoStreams } = await getUserStreams({ userId: userTwo.id })
+ const { streams: userTwoStreams } = await getUserStreams({ userId: userTwo.id })
expect(userTwoStreams).to.have.lengthOf(1)
expect(userTwoStreams[0]).to.have.property('role')
@@ -141,7 +141,7 @@ describe('Streams @core-streams', () => {
})
it('Should get the users with access to a stream', async () => {
- let users = await getStreamUsers({ streamId: testStream.id })
+ const users = await getStreamUsers({ streamId: testStream.id })
expect(users).to.have.lengthOf(2)
expect(users[0]).to.not.have.property('email')
expect(users[0]).to.have.property('id')
@@ -149,7 +149,7 @@ describe('Streams @core-streams', () => {
it('Should revoke permissions on stream', async () => {
await revokePermissionsStream({ streamId: testStream.id, userId: userTwo.id })
- let { streams: userTwoStreams } = await getUserStreams({ userId: userTwo.id })
+ const { streams: userTwoStreams } = await getUserStreams({ userId: userTwo.id })
expect(userTwoStreams).to.have.lengthOf(0)
})
@@ -176,7 +176,7 @@ describe('Streams @core-streams', () => {
await sleep(100)
await updateStream({ streamId: s.id, name: 'TU1' })
- let su = await getStream({ streamId: s.id })
+ const su = await getStream({ streamId: s.id })
expect(su.updatedAt).to.not.equal(s.updatedAt)
})
@@ -206,13 +206,13 @@ describe('Streams @core-streams', () => {
await sleep(100)
await createBranch({ name: 'dim/lol', streamId: s.id, authorId: userOne.id })
- let su = await getStream({ streamId: s.id })
+ const su = await getStream({ streamId: s.id })
expect(su.updatedAt).to.not.equal(s.updatedAt)
await sleep(100)
- let b = await getBranchByNameAndStreamId({ streamId: s.id, name: 'dim/lol' })
+ const b = await getBranchByNameAndStreamId({ streamId: s.id, name: 'dim/lol' })
await deleteBranchById({ id: b.id, streamId: s.id })
- let su2 = await getStream({ streamId: s.id })
+ const su2 = await getStream({ streamId: s.id })
expect(su2.updatedAt).to.not.equal(su.updatedAt)
})
@@ -220,7 +220,7 @@ describe('Streams @core-streams', () => {
s = await getStream({ streamId: s.id })
await sleep(100)
- let testObject = { foo: 'bar', baz: 'qux' }
+ const testObject = { foo: 'bar', baz: 'qux' }
testObject.id = await createObject(s.id, testObject)
await createCommitByBranchName({
streamId: s.id,
@@ -231,7 +231,7 @@ describe('Streams @core-streams', () => {
sourceApplication: 'tests'
})
- let su = await getStream({ streamId: s.id })
+ const su = await getStream({ streamId: s.id })
expect(su.updatedAt).to.not.equal(s.updatedAt)
})
})
diff --git a/packages/server/modules/core/tests/users.spec.js b/packages/server/modules/core/tests/users.spec.js
index dac8e6d5b..1538850c2 100644
--- a/packages/server/modules/core/tests/users.spec.js
+++ b/packages/server/modules/core/tests/users.spec.js
@@ -44,7 +44,7 @@ const { createObject } = require('../services/objects')
const { beforeEachContext } = require(`${appRoot}/test/hooks`)
describe('Actors & Tokens @user-services', () => {
- let myTestActor = {
+ const myTestActor = {
name: 'Dimitrie Stefanescu',
email: 'didimitrie@gmail.com',
password: 'sn3aky-1337-b1m'
@@ -53,38 +53,38 @@ describe('Actors & Tokens @user-services', () => {
before(async () => {
await beforeEachContext()
- let actorId = await createUser(myTestActor)
+ const actorId = await createUser(myTestActor)
myTestActor.id = actorId
})
describe('Users @core-users', () => {
it('Should create an user', async () => {
- let newUser = { ...myTestActor }
+ const newUser = { ...myTestActor }
newUser.name = 'Bill Gates'
newUser.email = 'bill@gates.com'
newUser.password = 'testthebest'
- let actorId = await createUser(newUser)
+ const actorId = await createUser(newUser)
newUser.id = actorId
expect(actorId).to.be.a('string')
})
it('Should store user email lowercase', async () => {
- let user = {
+ const user = {
name: 'Marty McFly',
email: 'Marty@Mc.Fly',
password: 'something_future_proof'
}
- let userId = await createUser(user)
+ const userId = await createUser(user)
- let storedUser = await getUser(userId)
+ const storedUser = await getUser(userId)
expect(storedUser.email).to.equal(user.email.toLowerCase())
})
it('Get user by should ignore email casing', async () => {
- let user = await getUserByEmail({ email: 'BiLL@GaTES.cOm' })
+ const user = await getUserByEmail({ email: 'BiLL@GaTES.cOm' })
expect(user.email).to.equal('bill@gates.com')
})
@@ -132,7 +132,7 @@ describe('Actors & Tokens @user-services', () => {
})
it('Should not create an user with the same email', async () => {
- let newUser = {}
+ const newUser = {}
newUser.name = 'Bill Gates'
newUser.email = 'bill@gates.com'
newUser.password = 'testthebest'
@@ -149,35 +149,35 @@ describe('Actors & Tokens @user-services', () => {
let ballmerUserId = null
it('Find or create should create a user', async () => {
- let newUser = {}
+ const newUser = {}
newUser.name = 'Steve Ballmer Balls'
newUser.email = 'ballmer@balls.com'
newUser.password = 'testthebest'
- let { id } = await findOrCreateUser({ user: newUser })
+ const { id } = await findOrCreateUser({ user: newUser })
ballmerUserId = id
expect(id).to.be.a('string')
})
it('Find or create should NOT create a user', async () => {
- let newUser = {}
+ const newUser = {}
newUser.name = 'Steve Ballmer Balls'
newUser.email = 'ballmer@balls.com'
newUser.password = 'testthebest'
newUser.suuid = 'really it does not matter'
- let { id } = await findOrCreateUser({ user: newUser })
+ const { id } = await findOrCreateUser({ user: newUser })
expect(id).to.equal(ballmerUserId)
})
// Note: deletion is more complicated.
it('Should delete a user', async () => {
- let soloOwnerStream = {
+ const soloOwnerStream = {
name: 'Test Stream 01',
description: 'wonderful test stream',
isPublic: true
}
- let multiOwnerStream = {
+ const multiOwnerStream = {
name: 'Test Stream 02',
description: 'another test stream',
isPublic: true
@@ -199,14 +199,14 @@ describe('Actors & Tokens @user-services', () => {
})
// create a branch for ballmer on the multiowner stream
- let branch = { name: 'ballmer/dev' }
+ const branch = { name: 'ballmer/dev' }
branch.id = await createBranch({
...branch,
streamId: multiOwnerStream.id,
authorId: ballmerUserId
})
- let branchSecond = { name: 'steve/jobs' }
+ const branchSecond = { name: 'steve/jobs' }
branchSecond.id = await createBranch({
...branchSecond,
streamId: multiOwnerStream.id,
@@ -214,8 +214,8 @@ describe('Actors & Tokens @user-services', () => {
})
// create an object and a commit around it on the multiowner stream
- let objId = await createObject(multiOwnerStream.id, { pie: 'in the sky' })
- let commitId = await createCommitByBranchName({
+ const objId = await createObject(multiOwnerStream.id, { pie: 'in the sky' })
+ const commitId = await createCommitByBranchName({
streamId: multiOwnerStream.id,
branchName: 'ballmer/dev',
message: 'breakfast commit',
@@ -230,29 +230,29 @@ describe('Actors & Tokens @user-services', () => {
assert.fail('user stream not deleted')
}
- let multiOwnerStreamCopy = await getStream({ streamId: multiOwnerStream.id })
+ const multiOwnerStreamCopy = await getStream({ streamId: multiOwnerStream.id })
if (!multiOwnerStreamCopy || multiOwnerStreamCopy.id !== multiOwnerStream.id) {
assert.fail('shared stream deleted')
}
- let branches = await getBranchesByStreamId({ streamId: multiOwnerStream.id })
+ const branches = await getBranchesByStreamId({ streamId: multiOwnerStream.id })
expect(branches.items.length).to.equal(3)
- let branchCommits = await getCommitsByBranchName({
+ const branchCommits = await getCommitsByBranchName({
streamId: multiOwnerStream.id,
branchName: 'ballmer/dev'
})
expect(branchCommits.commits.length).to.equal(1)
- let commit = await getCommitById({ streamId: multiOwnerStream.id, id: commitId })
+ const commit = await getCommitById({ streamId: multiOwnerStream.id, id: commitId })
expect(commit).to.be.not.null
- let commitsByStreamId = await getCommitsByStreamId({
+ const commitsByStreamId = await getCommitsByStreamId({
streamId: multiOwnerStream.id
})
expect(commitsByStreamId.commits.length).to.equal(1)
- let user = await getUser(ballmerUserId)
+ const user = await getUser(ballmerUserId)
if (user) assert.fail('user not deleted')
})
@@ -268,12 +268,12 @@ describe('Actors & Tokens @user-services', () => {
})
it('Should get a user', async () => {
- let actor = await getUser(myTestActor.id)
+ const actor = await getUser(myTestActor.id)
expect(actor).to.not.have.property('passwordDigest')
})
it('Should search and get users', async () => {
- let { users } = await searchUsers('gates', 20, null)
+ const { users } = await searchUsers('gates', 20, null)
expect(users).to.have.lengthOf(1)
expect(users[0].name).to.equal('Bill Gates')
})
@@ -301,22 +301,22 @@ describe('Actors & Tokens @user-services', () => {
})
it('Should update a user', async () => {
- let updatedActor = { ...myTestActor }
+ const updatedActor = { ...myTestActor }
updatedActor.name = 'didimitrie'
await updateUser(myTestActor.id, updatedActor)
- let actor = await getUser(myTestActor.id)
+ const actor = await getUser(myTestActor.id)
expect(actor.name).to.equal(updatedActor.name)
})
it('Should not update password', async () => {
- let updatedActor = { ...myTestActor }
+ const updatedActor = { ...myTestActor }
updatedActor.password = 'failwhale'
await updateUser(myTestActor.id, updatedActor)
- let match = await validatePasssword({
+ const match = await validatePasssword({
email: myTestActor.email,
password: 'failwhale'
})
@@ -324,19 +324,19 @@ describe('Actors & Tokens @user-services', () => {
})
it('Should validate user password', async () => {
- let actor = {}
+ const actor = {}
actor.password = 'super-test-200'
actor.email = 'e@ma.il'
actor.name = 'Bob Gates'
await createUser(actor)
- let match = await validatePasssword({
+ const match = await validatePasssword({
email: actor.email,
password: 'super-test-200'
})
expect(match).to.equal(true)
- let matchWrong = await validatePasssword({
+ const matchWrong = await validatePasssword({
email: actor.email,
password: 'super-test-2000'
})
@@ -344,14 +344,14 @@ describe('Actors & Tokens @user-services', () => {
})
it('Should update the password of a user', async () => {
- let id = await createUser({
+ const id = await createUser({
name: 'D',
email: 'tester@mcbester.com',
password: 'H4!b5at+kWls-8yh4Guq'
}) // https://mostsecure.pw
await updateUserPassword({ id, newPassword: 'Hello Dogs and Cats' })
- let match = await validatePasssword({
+ const match = await validatePasssword({
email: 'tester@mcbester.com',
password: 'Hello Dogs and Cats'
})
@@ -384,8 +384,8 @@ describe('Actors & Tokens @user-services', () => {
})
it('Should create a personal api token', async () => {
- let scopes = ['streams:write', 'profile:read']
- let name = 'My Test Token'
+ const scopes = ['streams:write', 'profile:read']
+ const name = 'My Test Token'
myFirstToken = await createPersonalAccessToken(myTestActor.id, name, scopes)
expect(myFirstToken).to.have.lengthOf(42)
@@ -397,7 +397,7 @@ describe('Actors & Tokens @user-services', () => {
// } )
it('Should validate a token', async () => {
- let res = await validateToken(pregeneratedToken)
+ const res = await validateToken(pregeneratedToken)
expect(res).to.have.property('valid')
expect(res.valid).to.equal(true)
expect(res).to.have.property('scopes')
@@ -407,19 +407,19 @@ describe('Actors & Tokens @user-services', () => {
it('Should revoke an api token', async () => {
await revokeToken(revokedToken, myTestActor.id)
- let res = await validateToken(revokedToken)
+ const res = await validateToken(revokedToken)
expect(res).to.have.property('valid')
expect(res.valid).to.equal(false)
})
it('Should refuse an expired token', async () => {
- let res = await validateToken(expireSoonToken)
+ const res = await validateToken(expireSoonToken)
expect(res.valid).to.equal(false)
// assert.fail( )
})
it('Should get the tokens of an user', async () => {
- let userTokens = await getUserTokens(myTestActor.id)
+ const userTokens = await getUserTokens(myTestActor.id)
expect(userTokens).to.be.an('array')
expect(userTokens).to.have.lengthOf(2)
})
diff --git a/packages/server/modules/core/tests/usersAdmin.spec.js b/packages/server/modules/core/tests/usersAdmin.spec.js
index 7d034210b..896f6ba04 100644
--- a/packages/server/modules/core/tests/usersAdmin.spec.js
+++ b/packages/server/modules/core/tests/usersAdmin.spec.js
@@ -15,7 +15,7 @@ const {
const { beforeEachContext } = require(`${appRoot}/test/hooks`)
describe('User admin @user-services', () => {
- let myTestActor = {
+ const myTestActor = {
name: 'Gergo Jedlicska',
email: 'gergo@jedlicska.com',
password: 'sn3aky-1337-b1m'
@@ -24,28 +24,28 @@ describe('User admin @user-services', () => {
before(async () => {
await beforeEachContext()
- let actorId = await createUser(myTestActor)
+ const actorId = await createUser(myTestActor)
myTestActor.id = actorId
})
it('First created user should be admin', async () => {
- let users = await getUsers(100, 0)
+ const users = await getUsers(100, 0)
expect(users).to.be.an('array')
expect(users).to.have.lengthOf(1)
- let firstUser = users[0]
+ const firstUser = users[0]
- let userRole = await getUserRole(firstUser.id)
+ const userRole = await getUserRole(firstUser.id)
expect(userRole).to.equal('server:admin')
})
it('Count user knows how to count', async () => {
expect(await countUsers()).to.equal(1)
- let newUser = { ...myTestActor }
+ const newUser = { ...myTestActor }
newUser.name = 'Bill Gates'
newUser.email = 'bill@gates.com'
newUser.password = 'testthebest'
- let actorId = await createUser(newUser)
+ const actorId = await createUser(newUser)
expect(await countUsers()).to.equal(2)
@@ -54,7 +54,7 @@ describe('User admin @user-services', () => {
})
it('Get users query limit is sanitized to upper limit', async () => {
- let createNewDroid = (number) => {
+ const createNewDroid = (number) => {
return {
name: `${number}`,
email: `${number}@droidarmy.com`,
@@ -62,7 +62,7 @@ describe('User admin @user-services', () => {
}
}
- let userInputs = Array(250)
+ const userInputs = Array(250)
.fill()
.map((v, i) => createNewDroid(i))
@@ -71,19 +71,19 @@ describe('User admin @user-services', () => {
await Promise.all(userInputs.map((userInput) => createUser(userInput)))
expect(await countUsers()).to.equal(251)
- let users = await getUsers(2000000)
+ const users = await getUsers(2000000)
expect(users).to.have.lengthOf(200)
}).timeout(10000)
it('Get users offset is applied', async () => {
- let users = await getUsers(200, 200)
+ const users = await getUsers(200, 200)
expect(users).to.have.lengthOf(51)
})
it('User query filters', async () => {
- let users = await getUsers(100, 0, 'gergo')
+ const users = await getUsers(100, 0, 'gergo')
expect(users).to.have.lengthOf(1)
- let [user] = users
+ const [user] = users
expect(user.email).to.equal('gergo@jedlicska.com')
})
@@ -92,9 +92,9 @@ describe('User admin @user-services', () => {
})
it('Change user role modifies role', async () => {
- let [user] = await getUsers(1, 10)
+ const [user] = await getUsers(1, 10)
- let oldRole = await getUserRole(user.id)
+ const oldRole = await getUserRole(user.id)
expect(oldRole).to.equal('server:user')
await makeUserAdmin({ userId: user.id })
diff --git a/packages/server/modules/fileuploads/index.js b/packages/server/modules/fileuploads/index.js
index 7ed55565b..30327d252 100644
--- a/packages/server/modules/fileuploads/index.js
+++ b/packages/server/modules/fileuploads/index.js
@@ -37,7 +37,7 @@ exports.init = async (app) => {
await checkBucket()
- let checkStreamPermissions = async (req) => {
+ const checkStreamPermissions = async (req) => {
if (!req.context || !req.context.auth) {
return { hasPermissions: false, httpErrorCode: 401 }
}
@@ -70,13 +70,13 @@ exports.init = async (app) => {
return res.status(503).send('File uploads are disabled on this server')
}
- let fileInfo = await getFileInfo({ fileId: req.params.fileId })
+ const fileInfo = await getFileInfo({ fileId: req.params.fileId })
if (!fileInfo) return res.status(404).send('File not found')
// Check stream read access
- let streamId = fileInfo.streamId
- const stream = await getStream({ streamId: streamId, userId: req.context.userId })
+ const streamId = fileInfo.streamId
+ const stream = await getStream({ streamId, userId: req.context.userId })
if (!stream) {
return res.status(404).send('File stream not found')
@@ -100,7 +100,7 @@ exports.init = async (app) => {
}
}
- let fileStream = await getFileStream({ fileId: req.params.fileId })
+ const fileStream = await getFileStream({ fileId: req.params.fileId })
res.writeHead(200, {
'Content-Type': 'application/octet-stream',
@@ -118,17 +118,17 @@ exports.init = async (app) => {
if (process.env.DISABLE_FILE_UPLOADS) {
return res.status(503).send('File uploads are disabled on this server')
}
- let { hasPermissions, httpErrorCode } = await checkStreamPermissions(req)
+ const { hasPermissions, httpErrorCode } = await checkStreamPermissions(req)
if (!hasPermissions) {
return res.status(httpErrorCode).end()
}
- let fileUploadPromises = []
- let busboy = Busboy({ headers: req.headers })
+ const fileUploadPromises = []
+ const busboy = Busboy({ headers: req.headers })
busboy.on('file', (name, file, info) => {
const { filename } = info
- let promise = uploadFile({
+ const promise = uploadFile({
streamId: req.params.streamId,
branchName: req.params.branchName || '',
userId: req.context.userId,
@@ -140,10 +140,10 @@ exports.init = async (app) => {
})
busboy.on('finish', async function () {
- let fileIds = []
+ const fileIds = []
- for (let promise of fileUploadPromises) {
- let fileId = await promise
+ for (const promise of fileUploadPromises) {
+ const fileId = await promise
fileIds.push(fileId)
}
res.send(fileIds)
diff --git a/packages/server/modules/fileuploads/services/fileuploads.js b/packages/server/modules/fileuploads/services/fileuploads.js
index d45fd5da3..4dcc214fe 100644
--- a/packages/server/modules/fileuploads/services/fileuploads.js
+++ b/packages/server/modules/fileuploads/services/fileuploads.js
@@ -21,7 +21,7 @@ function getS3Config() {
module.exports = {
async checkBucket() {
const s3 = new S3(getS3Config())
- let Bucket = process.env.S3_BUCKET
+ const Bucket = process.env.S3_BUCKET
try {
await s3.headBucket({ Bucket }).promise()
@@ -39,13 +39,13 @@ module.exports = {
},
async getFileInfo({ fileId }) {
- let fileInfo = await FileUploads().where({ id: fileId }).select('*').first()
+ const fileInfo = await FileUploads().where({ id: fileId }).select('*').first()
return fileInfo
},
async getStreamFileUploads({ streamId }) {
- let fileInfos = await FileUploads()
- .where({ streamId: streamId })
+ const fileInfos = await FileUploads()
+ .where({ streamId })
.select('*')
.orderBy([{ column: 'uploadDate', order: 'desc' }])
return fileInfos
@@ -53,17 +53,17 @@ module.exports = {
async getFileStream({ fileId }) {
const s3 = new S3(getS3Config())
- let Bucket = process.env.S3_BUCKET
- let Key = `files/${fileId}`
+ const Bucket = process.env.S3_BUCKET
+ const Key = `files/${fileId}`
- let fileStream = s3.getObject({ Key, Bucket }).createReadStream()
+ const fileStream = s3.getObject({ Key, Bucket }).createReadStream()
return fileStream
},
async uploadFile({ streamId, branchName, userId, fileName, fileType, fileStream }) {
// Create ID and db entry
- let fileId = crs({ length: 10 })
- let dbFile = {
+ const fileId = crs({ length: 10 })
+ const dbFile = {
id: fileId,
streamId,
branchName,
@@ -75,15 +75,15 @@ module.exports = {
// Upload stream
const s3 = new S3(getS3Config())
- let Bucket = process.env.S3_BUCKET
+ const Bucket = process.env.S3_BUCKET
// TODO: error if missing
- let Key = `files/${fileId}`
+ const Key = `files/${fileId}`
await s3.upload({ Bucket, Key, Body: fileStream }).promise()
// Get file size and update db entry
- let headResponse = await s3.headObject({ Key, Bucket }).promise()
- let fileSize = headResponse.ContentLength
+ const headResponse = await s3.headObject({ Key, Bucket }).promise()
+ const fileSize = headResponse.ContentLength
await FileUploads().where({ id: fileId }).update({ uploadComplete: true, fileSize })
diff --git a/packages/server/modules/index.js b/packages/server/modules/index.js
index ab0dfc608..f8e937dd3 100644
--- a/packages/server/modules/index.js
+++ b/packages/server/modules/index.js
@@ -7,7 +7,7 @@ const { values, merge } = require('lodash')
const { scalarResolvers, scalarSchemas } = require('./core/graph/scalars')
exports.init = async (app) => {
- let moduleDirs = [
+ const moduleDirs = [
'./core',
'./auth',
'./apiexplorer',
@@ -20,20 +20,20 @@ exports.init = async (app) => {
]
// Stage 1: initialise all modules
- for (let dir of moduleDirs) {
+ for (const dir of moduleDirs) {
await require(dir).init(app)
}
// Stage 2: finalize init all modules
- for (let dir of moduleDirs) {
+ for (const dir of moduleDirs) {
await require(dir).finalize(app)
}
}
exports.graph = () => {
- let dirs = fs.readdirSync(`${appRoot}/modules`)
+ const dirs = fs.readdirSync(`${appRoot}/modules`)
// Base query and mutation to allow for type extension by modules.
- let typeDefs = [
+ const typeDefs = [
`
${scalarSchemas}
directive @hasScope(scope: String!) on FIELD_DEFINITION
@@ -64,11 +64,11 @@ exports.graph = () => {
let schemaDirectives = {}
dirs.forEach((file) => {
- let fullPath = path.join(`${appRoot}/modules`, file)
+ const fullPath = path.join(`${appRoot}/modules`, file)
// load and merge the type definitions
if (fs.existsSync(path.join(fullPath, 'graph', 'schemas'))) {
- let moduleSchemas = fs.readdirSync(path.join(fullPath, 'graph', 'schemas'))
+ const moduleSchemas = fs.readdirSync(path.join(fullPath, 'graph', 'schemas'))
moduleSchemas.forEach((schema) => {
typeDefs.push(
fs.readFileSync(path.join(fullPath, 'graph', 'schemas', schema), 'utf8')
@@ -92,7 +92,7 @@ exports.graph = () => {
}
})
- let resolvers = { ...scalarResolvers }
+ const resolvers = { ...scalarResolvers }
resolverObjs.forEach((o) => {
merge(resolvers, o)
})
diff --git a/packages/server/modules/previews/index.js b/packages/server/modules/previews/index.js
index c3726a22c..8096b47fe 100644
--- a/packages/server/modules/previews/index.js
+++ b/packages/server/modules/previews/index.js
@@ -33,9 +33,9 @@ exports.init = (app) => {
debug('speckle:modules')('📸 Init object preview module')
}
- let DEFAULT_ANGLE = '0'
+ const DEFAULT_ANGLE = '0'
- let getObjectPreviewBufferOrFilepath = async ({ streamId, objectId, angle }) => {
+ const getObjectPreviewBufferOrFilepath = async ({ streamId, objectId, angle }) => {
if (process.env.DISABLE_PREVIEWS) {
return { type: 'file', file: `${appRoot}/modules/previews/assets/no_preview.png` }
}
@@ -50,7 +50,7 @@ exports.init = (app) => {
}
// Get existing preview metadata
- let previewInfo = await getObjectPreviewInfo({ streamId, objectId })
+ const previewInfo = await getObjectPreviewInfo({ streamId, objectId })
if (!previewInfo) {
await createObjectPreview({ streamId, objectId, priority: 0 })
}
@@ -59,7 +59,7 @@ exports.init = (app) => {
return { type: 'file', file: `${appRoot}/modules/previews/assets/no_preview.png` }
}
- let previewImgId = previewInfo.preview[angle]
+ const previewImgId = previewInfo.preview[angle]
if (!previewImgId) {
debug('speckle:errors')(
`Error: Preview angle '${angle}' not found for object ${streamId}:${objectId}`
@@ -69,7 +69,7 @@ exports.init = (app) => {
file: `${appRoot}/modules/previews/assets/preview_error.png`
}
}
- let previewImg = await getPreviewImage({ previewId: previewImgId })
+ const previewImg = await getPreviewImage({ previewId: previewImgId })
if (!previewImg) {
debug('speckle:errors')(`Error: Preview image not found: ${previewImgId}`)
return {
@@ -80,7 +80,7 @@ exports.init = (app) => {
return { type: 'buffer', buffer: previewImg }
}
- let sendObjectPreview = async (req, res, streamId, objectId, angle) => {
+ const sendObjectPreview = async (req, res, streamId, objectId, angle) => {
let previewBufferOrFile = await getObjectPreviewBufferOrFilepath({
streamId,
objectId,
@@ -114,7 +114,7 @@ exports.init = (app) => {
}
}
- let checkStreamPermissions = async (req) => {
+ const checkStreamPermissions = async (req) => {
const stream = await getStream({
streamId: req.params.streamId,
userId: req.context.userId
@@ -153,7 +153,7 @@ exports.init = (app) => {
contextMiddleware,
matomoMiddleware,
async (req, res) => {
- let { hasPermissions, httpErrorCode } = await checkStreamPermissions(req)
+ const { hasPermissions, httpErrorCode } = await checkStreamPermissions(req)
if (!hasPermissions) {
// return res.status( httpErrorCode ).end()
return res.sendFile(
@@ -176,7 +176,7 @@ exports.init = (app) => {
contextMiddleware,
matomoMiddleware,
async (req, res) => {
- let { hasPermissions, httpErrorCode } = await checkStreamPermissions(req)
+ const { hasPermissions, httpErrorCode } = await checkStreamPermissions(req)
if (!hasPermissions) {
// return res.status( httpErrorCode ).end()
return res.sendFile(
@@ -184,7 +184,7 @@ exports.init = (app) => {
)
}
- let { commits } = await getCommitsByStreamId({
+ const { commits } = await getCommitsByStreamId({
streamId: req.params.streamId,
limit: 1,
ignoreGlobalsBranch: true
@@ -192,7 +192,7 @@ exports.init = (app) => {
if (!commits || commits.length === 0) {
return res.sendFile(`${appRoot}/modules/previews/assets/no_preview.png`)
}
- let lastCommit = commits[0]
+ const lastCommit = commits[0]
return sendObjectPreview(
req,
@@ -209,7 +209,7 @@ exports.init = (app) => {
contextMiddleware,
matomoMiddleware,
async (req, res) => {
- let { hasPermissions, httpErrorCode } = await checkStreamPermissions(req)
+ const { hasPermissions, httpErrorCode } = await checkStreamPermissions(req)
if (!hasPermissions) {
// return res.status( httpErrorCode ).end()
return res.sendFile(
@@ -227,11 +227,11 @@ exports.init = (app) => {
} catch {
commitsObj = {}
}
- let { commits } = commitsObj
+ const { commits } = commitsObj
if (!commits || commits.length === 0) {
return res.sendFile(`${appRoot}/modules/previews/assets/no_preview.png`)
}
- let lastCommit = commits[0]
+ const lastCommit = commits[0]
return sendObjectPreview(
req,
@@ -248,7 +248,7 @@ exports.init = (app) => {
contextMiddleware,
matomoMiddleware,
async (req, res) => {
- let { hasPermissions, httpErrorCode } = await checkStreamPermissions(req)
+ const { hasPermissions, httpErrorCode } = await checkStreamPermissions(req)
if (!hasPermissions) {
// return res.status( httpErrorCode ).end()
return res.sendFile(
@@ -256,7 +256,7 @@ exports.init = (app) => {
)
}
- let commit = await getCommitById({
+ const commit = await getCommitById({
streamId: req.params.streamId,
id: req.params.commitId
})
@@ -279,7 +279,7 @@ exports.init = (app) => {
contextMiddleware,
matomoMiddleware,
async (req, res) => {
- let { hasPermissions, httpErrorCode } = await checkStreamPermissions(req)
+ const { hasPermissions, httpErrorCode } = await checkStreamPermissions(req)
if (!hasPermissions) {
// return res.status( httpErrorCode ).end()
return res.sendFile(
diff --git a/packages/server/modules/previews/ogImage.js b/packages/server/modules/previews/ogImage.js
index 7907a9282..78adfd844 100644
--- a/packages/server/modules/previews/ogImage.js
+++ b/packages/server/modules/previews/ogImage.js
@@ -8,15 +8,15 @@ const pixelWidth = require('string-pixel-width')
module.exports = {
async makeOgImage(previewBufferOrFilename, streamName) {
- let imgWidth = 1200
- let imgHeight = 627
+ const imgWidth = 1200
+ const imgHeight = 627
- let panelPadding = 20
- let panelWidth = imgWidth - 2 * panelPadding
- let panelHeight = 80
+ const panelPadding = 20
+ const panelWidth = imgWidth - 2 * panelPadding
+ const panelHeight = 80
let title = '/ ' + streamName
- let maxTitleSize = 750
+ const maxTitleSize = 750
if (pixelWidth(title, { font: 'open sans', size: 48 }) > maxTitleSize) {
while (pixelWidth(title, { font: 'open sans', size: 48 }) > maxTitleSize) {
title = title.slice(0, -1)
diff --git a/packages/server/modules/previews/services/previews.js b/packages/server/modules/previews/services/previews.js
index bc244965e..26eaba6dd 100644
--- a/packages/server/modules/previews/services/previews.js
+++ b/packages/server/modules/previews/services/previews.js
@@ -13,19 +13,19 @@ module.exports = {
},
async createObjectPreview({ streamId, objectId, priority }) {
- let insertionObject = {
+ const insertionObject = {
streamId,
objectId,
priority,
previewStatus: 0
}
- let sqlQuery =
+ const sqlQuery =
ObjectPreview().insert(insertionObject).toString() + ' on conflict do nothing'
await knex.raw(sqlQuery)
},
async getPreviewImage({ previewId }) {
- let previewRow = await Previews().where({ id: previewId }).first().select('*')
+ const previewRow = await Previews().where({ id: previewId }).first().select('*')
if (!previewRow) {
return null
}
diff --git a/packages/server/modules/pwdreset/index.js b/packages/server/modules/pwdreset/index.js
index d8f862d40..14cfeb35b 100644
--- a/packages/server/modules/pwdreset/index.js
+++ b/packages/server/modules/pwdreset/index.js
@@ -1,5 +1,5 @@
'use strict'
-let debug = require('debug')
+const debug = require('debug')
exports.init = async (app) => {
debug('speckle:modules')('♻️ Init pwd reset module')
diff --git a/packages/server/modules/pwdreset/rest/index.js b/packages/server/modules/pwdreset/rest/index.js
index d19fc3086..3eb0ef45b 100644
--- a/packages/server/modules/pwdreset/rest/index.js
+++ b/packages/server/modules/pwdreset/rest/index.js
@@ -18,11 +18,11 @@ module.exports = (app) => {
try {
if (!req.body.email) throw new Error('Invalid request')
- let user = await getUserByEmail({ email: req.body.email })
+ const user = await getUserByEmail({ email: req.body.email })
if (!user) throw new Error('No user with that email found.')
// check if pwd request has been already sent
- let existingToken = await ResetTokens()
+ const existingToken = await ResetTokens()
.select('*')
.where({ email: req.body.email })
.first()
@@ -38,22 +38,22 @@ module.exports = (app) => {
await ResetTokens().where({ email: req.body.email }).del()
// create a new token
- let token = {
+ const token = {
id: crs({ length: 10 }),
email: req.body.email
}
await ResetTokens().insert(token)
- let serverInfo = await getServerInfo()
+ const serverInfo = await getServerInfo()
// send the reset link email
- let resetLink = new URL(
+ const resetLink = new URL(
`/authn/resetpassword/finalize?t=${token.id}`,
process.env.CANONICAL_URL
)
- let emailText = `
+ const emailText = `
Hi ${user.name},
You've requested a password reset for your Speckle account at ${process.env.CANONICAL_URL}. If this wasn't you, ignore this email; otherwise, follow the link below to reset your password:
@@ -66,7 +66,7 @@ Warm regards,
Speckle
`
- let emailHtml = `
+ const emailHtml = `
Hi ${user.name},
@@ -111,7 +111,7 @@ This email was sent from ${serverInfo.name} at ${
try {
if (!req.body.tokenId || !req.body.password) throw new Error('Invalid request.')
- let token = await ResetTokens()
+ const token = await ResetTokens()
.where({ id: req.body.tokenId })
.select('*')
.first()
@@ -122,7 +122,7 @@ This email was sent from ${serverInfo.name} at ${
throw new Error('Link expired.')
}
- let user = await getUserByEmail({ email: token.email })
+ const user = await getUserByEmail({ email: token.email })
await updateUserPassword({ id: user.id, newPassword: req.body.password })
diff --git a/packages/server/modules/pwdreset/tests/pwdrest.spec.js b/packages/server/modules/pwdreset/tests/pwdrest.spec.js
index f42f2417e..5189c57a6 100644
--- a/packages/server/modules/pwdreset/tests/pwdrest.spec.js
+++ b/packages/server/modules/pwdreset/tests/pwdrest.spec.js
@@ -10,7 +10,7 @@ const { createUser } = require(`${appRoot}/modules/core/services/users`)
describe('Password reset requests @passwordresets', () => {
let app
- let userA = { name: 'd1', email: 'd@speckle.systems', password: 'wowwow8charsplease' }
+ const userA = { name: 'd1', email: 'd@speckle.systems', password: 'wowwow8charsplease' }
before(async () => {
;({ app } = await beforeEachContext())
@@ -41,7 +41,7 @@ describe('Password reset requests @passwordresets', () => {
})
it('Should reset passwords', async () => {
- let token = await ResetTokens().select().first()
+ const token = await ResetTokens().select().first()
// invalid request
await request(app).post('/auth/pwdreset/finalize').expect(400)
diff --git a/packages/server/modules/serverinvites/index.js b/packages/server/modules/serverinvites/index.js
index 24b40a14b..d98da7bc4 100644
--- a/packages/server/modules/serverinvites/index.js
+++ b/packages/server/modules/serverinvites/index.js
@@ -1,5 +1,5 @@
'use strict'
-let debug = require('debug')
+const debug = require('debug')
const appRoot = require('app-root-path')
const { registerOrUpdateScope } = require(`${appRoot}/modules/shared`)
@@ -7,7 +7,7 @@ exports.init = async () => {
debug('speckle:modules')('💌 Init invites module')
const scopes = require('./scopes.js')
- for (let scope of scopes) {
+ for (const scope of scopes) {
await registerOrUpdateScope(scope)
}
}
diff --git a/packages/server/modules/serverinvites/services/index.js b/packages/server/modules/serverinvites/services/index.js
index 7ef18e0d4..16ad4d59f 100644
--- a/packages/server/modules/serverinvites/services/index.js
+++ b/packages/server/modules/serverinvites/services/index.js
@@ -27,7 +27,7 @@ module.exports = {
}) {
// check if email is already registered as a user
email = email.toLowerCase()
- let existingUser = await getUserByEmail({ email })
+ const existingUser = await getUserByEmail({ email })
if (existingUser)
throw new Error(
@@ -43,15 +43,15 @@ module.exports = {
}
// check if email is already invited
- let existingInvite = await module.exports.getInviteByEmail({ email })
+ const existingInvite = await module.exports.getInviteByEmail({ email })
if (existingInvite) throw new Error('Already invited!')
- let inviter = await getUserById({ userId: inviterId })
+ const inviter = await getUserById({ userId: inviterId })
if (!inviter) throw new Error('We dont know this inviter guy')
- let invite = {
+ const invite = {
id: crs({ length: 20 }),
email,
- inviterId: inviterId,
+ inviterId,
message,
resourceTarget,
resourceId,
@@ -60,8 +60,8 @@ module.exports = {
await Invites().insert(invite)
- let serverInfo = await getServerInfo()
- let inviteLink = new URL(
+ const serverInfo = await getServerInfo()
+ const inviteLink = new URL(
`/authn/register?inviteId=${invite.id}`,
process.env.CANONICAL_URL
)
@@ -126,7 +126,7 @@ This email was sent from ${serverInfo.name} at ${
subject = `${inviter.name} wants to share a stream on Speckle with you!`
}
- await sendEmail({ to: email, subject: subject, text: emailText, html: emailHtml })
+ await sendEmail({ to: email, subject, text: emailText, html: emailHtml })
return invite.id
},
@@ -148,7 +148,7 @@ This email was sent from ${serverInfo.name} at ${
// TODO
// send email to inviter that their invite was accepted?
- let invite = await module.exports.getInviteById({ id })
+ const invite = await module.exports.getInviteById({ id })
if (!invite) throw new Error('Invite not found')
if (invite.used) throw new Error('Invite has been used')
if (invite.email !== email.toLowerCase())
@@ -157,7 +157,7 @@ This email was sent from ${serverInfo.name} at ${
)
if (invite.resourceId && invite.resourceTarget && invite.role) {
- let user = await getUserByEmail({ email: invite.email })
+ const user = await getUserByEmail({ email: invite.email })
if (!user) throw new Error('Failed to find new user. Did they register already?')
switch (invite.resourceTarget) {
case 'streams':
@@ -172,7 +172,7 @@ This email was sent from ${serverInfo.name} at ${
}
}
- await Invites().where({ id: id }).update({ used: true })
+ await Invites().where({ id }).update({ used: true })
return true
},
diff --git a/packages/server/modules/serverinvites/tests/serverInvites.spec.js b/packages/server/modules/serverinvites/tests/serverInvites.spec.js
index ea9bef2b2..262165eb9 100644
--- a/packages/server/modules/serverinvites/tests/serverInvites.spec.js
+++ b/packages/server/modules/serverinvites/tests/serverInvites.spec.js
@@ -22,7 +22,7 @@ const { beforeEachContext, initializeTestServer } = require(`${appRoot}/test/hoo
describe('Server Invites @server-invites', () => {
describe('Services @server-invites-services', () => {
- let actor = {
+ const actor = {
name: 'Dimitrie Stefanescu',
email: 'didimitrie-100@gmail.com',
password: 'wtfwtfwtf'
@@ -34,7 +34,7 @@ describe('Server Invites @server-invites', () => {
})
it('should create an invite', async () => {
- let inviteId = await createAndSendInvite({
+ const inviteId = await createAndSendInvite({
email: 'didimitrie@gmail.com',
inviterId: actor.id,
message: 'Hey, join!'
@@ -43,7 +43,7 @@ describe('Server Invites @server-invites', () => {
})
it('should store invited email as lowercase', async () => {
- let inviteId = await createAndSendInvite({
+ const inviteId = await createAndSendInvite({
email: 'GerGO@gmaIl.com',
inviterId: actor.id,
message: 'Hey, join!'
@@ -127,7 +127,7 @@ describe('Server Invites @server-invites', () => {
})
it('should sanitize invite messages', async () => {
- let clean = sanitizeMessage(
+ const clean = sanitizeMessage(
'Click on my spam link please!'
)
const includesLink = clean.includes(' {
})
it('should get an invite by id', async () => {
- let inviteId = await createAndSendInvite({
+ const inviteId = await createAndSendInvite({
email: 'badger@speckle.systems',
inviterId: actor.id,
message: 'Hey, join!'
})
- let invite = await getInviteById({ id: inviteId })
+ const invite = await getInviteById({ id: inviteId })
expect(invite).to.be.not.null
expect(invite.email).to.equal('badger@speckle.systems')
@@ -154,7 +154,7 @@ describe('Server Invites @server-invites', () => {
inviterId: actor.id,
message: 'Hey, join!'
})
- let invite = await getInviteByEmail({ email: 'weasel@speckle.systems' })
+ const invite = await getInviteByEmail({ email: 'weasel@speckle.systems' })
expect(invite).to.be.not.null
expect(invite.email).to.equal('weasel@speckle.systems')
@@ -163,7 +163,7 @@ describe('Server Invites @server-invites', () => {
})
it('should validate an invite', async () => {
- let inviteId = await createAndSendInvite({
+ const inviteId = await createAndSendInvite({
email: 'raven@speckle.systems',
inviterId: actor.id,
message: 'Hey, join!'
@@ -183,7 +183,7 @@ describe('Server Invites @server-invites', () => {
})
it('should use an invite', async () => {
- let inviteId = await createAndSendInvite({
+ const inviteId = await createAndSendInvite({
email: 'crow@speckle.systems',
inviterId: actor.id,
message: 'Hey, join!'
@@ -199,9 +199,9 @@ describe('Server Invites @server-invites', () => {
)
})
- let result = await useInvite({ id: inviteId, email: 'crOw@specKle.systeMs' })
+ const result = await useInvite({ id: inviteId, email: 'crOw@specKle.systeMs' })
- let invite = await getInviteByEmail({ email: 'crow@speCkle.syStems' })
+ const invite = await getInviteByEmail({ email: 'crow@speCkle.syStems' })
expect(result).equals(true)
expect(invite.used).equals(true)
@@ -215,10 +215,10 @@ describe('Server Invites @server-invites', () => {
})
it('should create a stream invite and use it', async () => {
- let stream = { name: 'test', description: 'wow' }
+ const stream = { name: 'test', description: 'wow' }
stream.id = await createStream({ ...stream, ownerId: actor.id })
- let invite = {
+ const invite = {
email: 'bunny@speckle.systems',
inviterId: actor.id,
resourceTarget: 'streams',
@@ -228,7 +228,7 @@ describe('Server Invites @server-invites', () => {
invite.id = await createAndSendInvite(invite)
// fake registration
- let guest = {
+ const guest = {
email: 'bunny@speckle.systems',
name: 'bunny',
password: 'ten toes or more'
@@ -237,7 +237,7 @@ describe('Server Invites @server-invites', () => {
await useInvite({ id: invite.id, email: guest.email })
- let { streams } = await getUserStreams({ userId: guest.id })
+ const { streams } = await getUserStreams({ userId: guest.id })
expect(streams).to.be.an('array')
expect(streams).to.be.not.null
expect(streams.length).to.equal(1)
@@ -247,7 +247,7 @@ describe('Server Invites @server-invites', () => {
// TODO: reinstate these tests; not sure why they pass locally and fail on CI
describe('API @server-invites-api', () => {
let server, sendRequest
- let actor = {
+ const actor = {
name: 'Dimitrie Stefanescu',
email: 'didimitrie-10000@gmail.com',
password: 'wtfwtfwtf'
@@ -256,7 +256,7 @@ describe('Server Invites @server-invites', () => {
let testToken
before(async () => {
- let { app } = await beforeEachContext()
+ const { app } = await beforeEachContext()
;({ server, sendRequest } = await initializeTestServer(app))
actor.id = await createUser(actor)
@@ -282,7 +282,7 @@ describe('Server Invites @server-invites', () => {
})
it('should create a stream invite', async () => {
- let stream = { name: 'test', description: 'wow' }
+ const stream = { name: 'test', description: 'wow' }
stream.id = await createStream({ ...stream, ownerId: actor.id })
const res = await sendRequest(testToken, {
diff --git a/packages/server/modules/shared/index.js b/packages/server/modules/shared/index.js
index 31bd4f87c..6c704a468 100644
--- a/packages/server/modules/shared/index.js
+++ b/packages/server/modules/shared/index.js
@@ -6,7 +6,7 @@ const { RedisPubSub } = require('graphql-redis-subscriptions')
const { buildRequestLoaders } = require('@/modules/core/loaders')
const { validateToken } = require(`@/modules/core/services/tokens`)
-let pubsub = new RedisPubSub({
+const pubsub = new RedisPubSub({
publisher: new Redis(process.env.REDIS_URL),
subscriber: new Redis(process.env.REDIS_URL)
})
@@ -68,7 +68,7 @@ async function contextApiTokenHelper({ req, connection }) {
if (token === null) return { auth: false }
try {
- let { valid, scopes, userId, role } = await validateToken(token)
+ const { valid, scopes, userId, role } = await validateToken(token)
if (!valid) {
return { auth: false }
@@ -85,7 +85,7 @@ async function contextApiTokenHelper({ req, connection }) {
* Express middleware wrapper around the buildContext function. sets req.context to have an auth prop (true/false), userId and server role.
*/
async function contextMiddleware(req, res, next) {
- let result = await buildContext({ req, res })
+ const result = await buildContext({ req, res })
req.context = result
next()
}
@@ -103,8 +103,8 @@ async function validateServerRole(context, requiredRole) {
if (!context.auth) throw new ForbiddenError('You must provide an auth token.')
- let role = roles.find((r) => r.name === requiredRole)
- let myRole = roles.find((r) => r.name === context.role)
+ const role = roles.find((r) => r.name === requiredRole)
+ const myRole = roles.find((r) => r.name === context.role)
if (!role) throw new ApolloError('Invalid server role specified')
if (!myRole)
@@ -140,12 +140,12 @@ async function authorizeResolver(userId, resourceId, requiredRole) {
// TODO: Cache these results with a TTL of 1 mins or so, it's pointless to query the db every time we get a ping.
- let role = roles.find((r) => r.name === requiredRole)
+ const role = roles.find((r) => r.name === requiredRole)
if (!role) throw new ApolloError('Unknown role: ' + requiredRole)
try {
- let { isPublic } = await knex(role.resourceTarget)
+ const { isPublic } = await knex(role.resourceTarget)
.select('isPublic')
.where({ id: resourceId })
.first()
@@ -156,9 +156,9 @@ async function authorizeResolver(userId, resourceId, requiredRole) {
)
}
- let userAclEntry = await knex(role.aclTableName)
+ const userAclEntry = await knex(role.aclTableName)
.select('*')
- .where({ resourceId: resourceId, userId: userId })
+ .where({ resourceId, userId })
.first()
if (!userAclEntry)
diff --git a/packages/server/modules/stats/index.js b/packages/server/modules/stats/index.js
index e2f6e6ba4..1648c4c12 100644
--- a/packages/server/modules/stats/index.js
+++ b/packages/server/modules/stats/index.js
@@ -1,5 +1,5 @@
'use strict'
-let debug = require('debug')
+const debug = require('debug')
exports.init = async () => {
debug('speckle:modules')('📊 Init stats module')
diff --git a/packages/server/modules/stats/tests/stats.spec.js b/packages/server/modules/stats/tests/stats.spec.js
index 998d0fe9a..3d87f0ab5 100644
--- a/packages/server/modules/stats/tests/stats.spec.js
+++ b/packages/server/modules/stats/tests/stats.spec.js
@@ -31,27 +31,27 @@ describe('Server stats services @stats-services', function () {
})
it('should return the total number of users on this server', async () => {
- let res = await getTotalUserCount()
+ const res = await getTotalUserCount()
expect(res).to.equal(params.numUsers)
})
it('should return the total number of streams on this server', async () => {
- let res = await getTotalStreamCount()
+ const res = await getTotalStreamCount()
expect(res).to.equal(params.numStreams)
})
it('should return the total number of commits on this server', async () => {
- let res = await getTotalCommitCount()
+ const res = await getTotalCommitCount()
expect(res).to.equal(params.numCommits)
})
it('should return the total number of objects on this server', async () => {
- let res = await getTotalObjectCount()
+ const res = await getTotalObjectCount()
expect(res).to.equal(params.numObjects)
})
it('should return the stream creation history by month', async () => {
- let res = await getStreamHistory()
+ const res = await getStreamHistory()
expect(res).to.be.an('array')
expect(res[0]).to.have.property('count')
expect(res[0]).to.have.property('created_month')
@@ -60,7 +60,7 @@ describe('Server stats services @stats-services', function () {
})
it('should return the commit creation history by month', async () => {
- let res = await getCommitHistory()
+ const res = await getCommitHistory()
expect(res).to.be.an('array')
expect(res[0]).to.have.property('count')
expect(res[0]).to.have.property('created_month')
@@ -69,7 +69,7 @@ describe('Server stats services @stats-services', function () {
})
it('should return the object creation history by month', async () => {
- let res = await getObjectHistory()
+ const res = await getObjectHistory()
expect(res).to.be.an('array')
expect(res[0]).to.have.property('count')
expect(res[0]).to.have.property('created_month')
@@ -78,7 +78,7 @@ describe('Server stats services @stats-services', function () {
})
it('should return the user creation history by month', async () => {
- let res = await getUserHistory()
+ const res = await getUserHistory()
expect(res).to.be.an('array')
expect(res[0]).to.have.property('count')
expect(res[0]).to.have.property('created_month')
@@ -90,19 +90,19 @@ describe('Server stats services @stats-services', function () {
describe('Server stats api @stats-api', function () {
let server, sendRequest
- let adminUser = {
+ const adminUser = {
name: 'Dimitrie',
password: 'TestPasswordSecure',
email: 'spam@spam.spam'
}
- let notAdminUser = {
+ const notAdminUser = {
name: 'Andrei',
password: 'TestPasswordSecure',
email: 'spasm@spam.spam'
}
- let fullQuery = `
+ const fullQuery = `
query{
serverStats{
totalStreamCount
@@ -120,7 +120,7 @@ describe('Server stats api @stats-api', function () {
before(async function () {
this.timeout(15000)
- let { app } = await beforeEachContext()
+ const { app } = await beforeEachContext()
;({ server, sendRequest } = await initializeTestServer(app))
adminUser.id = await createUser(adminUser)
@@ -155,26 +155,26 @@ describe('Server stats api @stats-api', function () {
})
it('Should not get stats if user is not admin', async () => {
- let res = await sendRequest(adminUser.badToken, { query: fullQuery })
+ const res = await sendRequest(adminUser.badToken, { query: fullQuery })
expect(res.body.errors).to.exist
expect(res.body.errors[0].extensions.code).to.equal('FORBIDDEN')
})
it('Should not get stats if user is not admin even if the token has the correct scopes', async () => {
- let res = await sendRequest(notAdminUser.goodToken, { query: fullQuery })
+ const res = await sendRequest(notAdminUser.goodToken, { query: fullQuery })
expect(res.body.errors).to.exist
expect(res.body.errors[0].extensions.code).to.equal('FORBIDDEN')
})
it('Should not get stats if token does not have required scope', async () => {
- let res = await sendRequest(adminUser.badToken, { query: fullQuery })
+ const res = await sendRequest(adminUser.badToken, { query: fullQuery })
expect(res).to.be.json
expect(res.body.errors).to.exist
expect(res.body.errors[0].extensions.code).to.equal('FORBIDDEN')
})
it('Should get server stats', async () => {
- let res = await sendRequest(adminUser.goodToken, { query: fullQuery })
+ const res = await sendRequest(adminUser.goodToken, { query: fullQuery })
expect(res).to.be.json
expect(res.body.errors).to.not.exist
diff --git a/packages/server/modules/webhooks/graph/resolvers/webhooks.js b/packages/server/modules/webhooks/graph/resolvers/webhooks.js
index 018eb7c4f..7ea944db8 100644
--- a/packages/server/modules/webhooks/graph/resolvers/webhooks.js
+++ b/packages/server/modules/webhooks/graph/resolvers/webhooks.js
@@ -18,23 +18,23 @@ module.exports = {
await authorizeResolver(context.userId, parent.id, 'stream:owner')
if (args.id) {
- let wh = await getWebhook({ id: args.id })
- let items = wh ? [wh] : []
+ const wh = await getWebhook({ id: args.id })
+ const items = wh ? [wh] : []
return { items, totalCount: items.length }
}
- let items = await getStreamWebhooks({ streamId: parent.id })
+ const items = await getStreamWebhooks({ streamId: parent.id })
return { items, totalCount: items.length }
}
},
Webhook: {
async history(parent, args) {
- let items = await getLastWebhookEvents({
+ const items = await getLastWebhookEvents({
webhookId: parent.id,
limit: args.limit
})
- let totalCount = await getWebhookEventsCount({ webhookId: parent.id })
+ const totalCount = await getWebhookEventsCount({ webhookId: parent.id })
return { items, totalCount }
}
@@ -44,7 +44,7 @@ module.exports = {
async webhookCreate(parent, args, context) {
await authorizeResolver(context.userId, args.webhook.streamId, 'stream:owner')
- let id = await createWebhook({
+ const id = await createWebhook({
streamId: args.webhook.streamId,
url: args.webhook.url,
description: args.webhook.description,
@@ -58,13 +58,13 @@ module.exports = {
async webhookUpdate(parent, args, context) {
await authorizeResolver(context.userId, args.webhook.streamId, 'stream:owner')
- let wh = await getWebhook({ id: args.webhook.id })
+ const wh = await getWebhook({ id: args.webhook.id })
if (args.webhook.streamId !== wh.streamId)
throw new ForbiddenError(
'The webhook id and stream id do not match. Please check your inputs.'
)
- let updated = await updateWebhook({
+ const updated = await updateWebhook({
id: args.webhook.id,
url: args.webhook.url,
description: args.webhook.description,
@@ -78,13 +78,13 @@ module.exports = {
async webhookDelete(parent, args, context) {
await authorizeResolver(context.userId, args.webhook.streamId, 'stream:owner')
- let wh = await getWebhook({ id: args.webhook.id })
+ const wh = await getWebhook({ id: args.webhook.id })
if (args.webhook.streamId !== wh.streamId)
throw new ForbiddenError(
'The webhook id and stream id do not match. Please check your inputs.'
)
- let deleted = await deleteWebhook({ id: args.webhook.id })
+ const deleted = await deleteWebhook({ id: args.webhook.id })
return !!deleted
}
diff --git a/packages/server/modules/webhooks/services/webhooks.js b/packages/server/modules/webhooks/services/webhooks.js
index 07b269cbe..1f8f64fad 100644
--- a/packages/server/modules/webhooks/services/webhooks.js
+++ b/packages/server/modules/webhooks/services/webhooks.js
@@ -11,20 +11,20 @@ const Users = () => knex('users')
const { getServerInfo } = require('../../core/services/generic')
const { getStream } = require('../../core/services/streams')
-let MAX_STREAM_WEBHOOKS = 100
+const MAX_STREAM_WEBHOOKS = 100
module.exports = {
async createWebhook({ streamId, url, description, secret, enabled, triggers }) {
- let streamWebhookCount = await module.exports.getStreamWebhooksCount({ streamId })
+ const streamWebhookCount = await module.exports.getStreamWebhooksCount({ streamId })
if (streamWebhookCount >= MAX_STREAM_WEBHOOKS) {
throw new Error(
`Maximum number of webhooks for a stream reached (${MAX_STREAM_WEBHOOKS})`
)
}
- let triggersObj = Object.assign({}, ...triggers.map((x) => ({ [x]: true })))
+ const triggersObj = Object.assign({}, ...triggers.map((x) => ({ [x]: true })))
- let [{ id }] = await WebhooksConfig()
+ const [{ id }] = await WebhooksConfig()
.returning('id')
.insert({
id: crs({ length: 10 }),
@@ -39,7 +39,7 @@ module.exports = {
},
async getWebhook({ id }) {
- let webhook = await WebhooksConfig().select('*').where({ id }).first()
+ const webhook = await WebhooksConfig().select('*').where({ id }).first()
if (webhook) {
webhook.triggers = Object.keys(webhook.triggers)
}
@@ -48,17 +48,17 @@ module.exports = {
},
async updateWebhook({ id, url, description, secret, enabled, triggers }) {
- let fieldsToUpdate = {}
+ const fieldsToUpdate = {}
if (url !== undefined) fieldsToUpdate.url = url
if (description !== undefined) fieldsToUpdate.description = description
if (secret !== undefined) fieldsToUpdate.secret = secret
if (enabled !== undefined) fieldsToUpdate.enabled = enabled
if (triggers !== undefined) {
- let triggersObj = Object.assign({}, ...triggers.map((x) => ({ [x]: true })))
+ const triggersObj = Object.assign({}, ...triggers.map((x) => ({ [x]: true })))
fieldsToUpdate.triggers = triggersObj
}
- let [{ id: res }] = await WebhooksConfig()
+ const [{ id: res }] = await WebhooksConfig()
.returning('id')
.where({ id })
.update(fieldsToUpdate)
@@ -70,8 +70,8 @@ module.exports = {
},
async getStreamWebhooks({ streamId }) {
- let webhooks = await WebhooksConfig().select('*').where({ streamId })
- for (let webhook of webhooks) {
+ const webhooks = await WebhooksConfig().select('*').where({ streamId })
+ for (const webhook of webhooks) {
webhook.triggers = Object.keys(webhook.triggers)
}
@@ -79,7 +79,7 @@ module.exports = {
},
async getStreamWebhooksCount({ streamId }) {
- let [res] = await WebhooksConfig().count().where({ streamId })
+ const [res] = await WebhooksConfig().count().where({ streamId })
return parseInt(res.count)
},
@@ -109,13 +109,13 @@ module.exports = {
}
}
- let { rows } = await knex.raw(
+ const { rows } = await knex.raw(
`
SELECT * FROM webhooks_config WHERE "streamId" = ?
`,
[streamId]
)
- for (let wh of rows) {
+ for (const wh of rows) {
if (!wh.enabled) continue
if (!(event in wh.triggers)) continue
@@ -145,7 +145,7 @@ module.exports = {
},
async getWebhookEventsCount({ webhookId }) {
- let [res] = await WebhooksEvents().count().where({ webhookId })
+ const [res] = await WebhooksEvents().count().where({ webhookId })
return parseInt(res.count)
}
diff --git a/packages/server/modules/webhooks/tests/webhooks.spec.js b/packages/server/modules/webhooks/tests/webhooks.spec.js
index ccec33d76..524e0a37f 100644
--- a/packages/server/modules/webhooks/tests/webhooks.spec.js
+++ b/packages/server/modules/webhooks/tests/webhooks.spec.js
@@ -21,19 +21,19 @@ const { createStream, grantPermissionsStream } = require('../../core/services/st
describe('Webhooks @webhooks', () => {
let server, sendRequest
- let userOne = {
+ const userOne = {
name: 'User',
email: 'user@gmail.com',
password: 'jdsadjsadasfdsa'
}
- let streamOne = {
+ const streamOne = {
name: 'streamOne',
description: 'stream',
isPublic: true
}
- let webhookOne = {
+ const webhookOne = {
streamId: null, // filled in `before`
url: 'http://localhost:42/non-existent',
description: 'test wh',
@@ -43,7 +43,7 @@ describe('Webhooks @webhooks', () => {
}
before(async () => {
- let { app } = await beforeEachContext()
+ const { app } = await beforeEachContext()
;({ server, sendRequest } = await initializeTestServer(app))
userOne.id = await createUser(userOne)
@@ -65,16 +65,16 @@ describe('Webhooks @webhooks', () => {
})
it('Should get a webhook', async () => {
- let webhook = await getWebhook({ id: webhookOne.id })
+ const webhook = await getWebhook({ id: webhookOne.id })
expect(webhook).to.not.be.null
expect(webhook).to.have.property('url')
expect(webhook.url).to.equal(webhookOne.url)
})
it('Should update a webhook', async () => {
- let newUrl = 'http://localhost:42/new-url'
+ const newUrl = 'http://localhost:42/new-url'
await updateWebhook({ id: webhookOne.id, url: newUrl })
- let webhook = await getWebhook({ id: webhookOne.id })
+ const webhook = await getWebhook({ id: webhookOne.id })
expect(webhook).to.not.be.null
expect(webhook).to.have.property('url')
expect(webhook.url).to.equal(newUrl)
@@ -82,7 +82,7 @@ describe('Webhooks @webhooks', () => {
it('Should delete a webhook', async () => {
await deleteWebhook({ id: webhookOne.id })
- let webhook = await getWebhook({ id: webhookOne.id })
+ const webhook = await getWebhook({ id: webhookOne.id })
expect(webhook).to.be.undefined
})
@@ -103,20 +103,20 @@ describe('Webhooks @webhooks', () => {
event: 'commit_create',
eventPayload: { test: 'payload123' }
})
- let lastEvents = await getLastWebhookEvents({ webhookId: webhookOne.id })
+ const lastEvents = await getLastWebhookEvents({ webhookId: webhookOne.id })
expect(lastEvents).to.have.lengthOf(1)
expect(JSON.parse(lastEvents[0].payload).test).to.equal('payload123')
})
})
describe('GraphQL API Webhooks @webhooks-api', () => {
- let userTwo = {
+ const userTwo = {
name: 'User2',
email: 'user2@gmail.com',
password: 'jdsadjsadasfdsa'
}
- let webhookTwo = {
+ const webhookTwo = {
streamId: null,
url: 'http://localhost:42/non-existent-two',
description: 'test wh no 2',
@@ -125,7 +125,7 @@ describe('Webhooks @webhooks', () => {
triggers: ['commit_create', 'commit_update']
}
- let streamTwo = {
+ const streamTwo = {
name: 'streamTwo',
description: 'stream',
isPublic: true
@@ -181,7 +181,7 @@ describe('Webhooks @webhooks', () => {
}`
})
expect(noErrors(res))
- let webhooks = res.body.data.stream.webhooks
+ const webhooks = res.body.data.stream.webhooks
expect(webhooks.totalCount).to.equal(1)
expect(webhooks.items[0].url).to.equal(webhookTwo.url)
@@ -196,7 +196,7 @@ describe('Webhooks @webhooks', () => {
query: `mutation { webhookUpdate(webhook: { id: "${webhookTwo.id}", streamId: "${streamTwo.id}", description: "updated webhook", enabled: false })
}`
})
- let webhook = await getWebhook({ id: webhookTwo.id })
+ const webhook = await getWebhook({ id: webhookTwo.id })
expect(noErrors(res))
expect(res.body.data.webhookUpdate).to.equal('true')
expect(webhook.description).to.equal('updated webhook')
@@ -253,7 +253,7 @@ describe('Webhooks @webhooks', () => {
})
it('Should have a webhook limit for streams', async () => {
- let limit = 100
+ const limit = 100
for (let i = 0; i < limit - 1; i++) {
await createWebhook(webhookOne)
}
@@ -270,7 +270,7 @@ describe('Webhooks @webhooks', () => {
it('Should cleanup stream webhooks', async () => {
// just cleanup the 99 extra webhooks added before (not a real test)
let streamWebhooks = await getStreamWebhooks({ streamId: streamOne.id })
- for (let webhook of streamWebhooks) {
+ for (const webhook of streamWebhooks) {
if (webhook.id !== webhookOne.id) {
await deleteWebhook({ id: webhook.id })
}
diff --git a/packages/server/scripts/duplicateUserMigration.js b/packages/server/scripts/duplicateUserMigration.js
index 59a50cd6c..ba26b7085 100644
--- a/packages/server/scripts/duplicateUserMigration.js
+++ b/packages/server/scripts/duplicateUserMigration.js
@@ -56,7 +56,7 @@ const _migrateSingleStreamAccess = async ({ lowerUser, upperStreamAcl }) => {
.update({ role: upperRole.name })
} else {
// if it didn't have access, just add it
- let lowerStreamAcl = { ...upperStreamAcl }
+ const lowerStreamAcl = { ...upperStreamAcl }
lowerStreamAcl.userId = lowerUser.id
await knex('stream_acl').insert(lowerStreamAcl)
}
@@ -81,12 +81,12 @@ const createMigrations = ({ lowerUser, upperUser }) =>
const userByEmailQuery = (email) => Users().where({ email })
const getDuplicateUsers = async () => {
- let duplicates = await knex.raw(
+ const duplicates = await knex.raw(
'select lower(email) as lowered, count(id) as reg_count from users group by lowered having count(id) > 1'
)
return await Promise.all(
duplicates.rows.map(async (dup) => {
- let lowerEmail = dup.lowered
+ const lowerEmail = dup.lowered
let lowerUser = await userByEmailQuery(lowerEmail).first()
// if no user found migrate to a random one?
@@ -96,7 +96,7 @@ const getDuplicateUsers = async () => {
lowerUser = await Users()
.whereRaw('lower(email) = lower(?)', [lowerEmail])
.first()
- let upperUser = await Users()
+ const upperUser = await Users()
.whereRaw('lower(email) = lower(?)', [lowerEmail])
.whereNot({ id: lowerUser.id })
.first()
diff --git a/packages/server/scripts/seedUsers.js b/packages/server/scripts/seedUsers.js
index 079b59093..5a2d1cce3 100644
--- a/packages/server/scripts/seedUsers.js
+++ b/packages/server/scripts/seedUsers.js
@@ -3,7 +3,7 @@ const { createUser } = require(`${appRoot}/modules/core/services/users`)
const axios = require('axios').default
const main = async () => {
- let userInputs = (
+ const userInputs = (
await axios.get('https://randomuser.me/api/?results=250')
).data.results.map((user) => {
return {
diff --git a/packages/server/test/helpers.js b/packages/server/test/helpers.js
index 830022dbf..7f7524298 100644
--- a/packages/server/test/helpers.js
+++ b/packages/server/test/helpers.js
@@ -5,21 +5,21 @@ function generateManyObjects(shitTon, noise) {
shitTon = shitTon || 10000
noise = noise || Math.random() * 100
- let objs = []
+ const objs = []
- let base = { name: 'base bastard 2', noise: noise, __closure: {} }
+ const base = { name: 'base bastard 2', noise, __closure: {} }
// objs.push( base )
let k = 0
for (let i = 0; i < shitTon; i++) {
- let baby = {
+ const baby = {
name: `mr. ${i}`,
nest: { duck: i % 2 === 0, mallard: 'falsey', arr: [i + 42, i, i] },
test: { value: i, secondValue: 'mallard ' + (i % 10) },
similar: k,
even: i % 2 === 0,
objArr: [{ a: i }, { b: i * i }, { c: true }],
- noise: noise,
+ noise,
sortValueA: i,
sortValueB: i * 0.42 * i
}
@@ -33,20 +33,20 @@ function generateManyObjects(shitTon, noise) {
}
getAnIdForThisOnePlease(base)
- return { commit: base, objs: objs }
+ return { commit: base, objs }
}
function createManyObjects(num, noise) {
num = num || 10000
noise = noise || Math.random() * 100
- let objs = []
+ const objs = []
- let base = { name: 'base bastard 2', noise: noise, __closure: {} }
+ const base = { name: 'base bastard 2', noise, __closure: {} }
objs.push(base)
for (let i = 0; i < num; i++) {
- let baby = {
+ const baby = {
name: `mr. ${i}`,
nest: { duck: i % 2 === 0, mallard: 'falsey', arr: [i + 42, i, i] }
}
diff --git a/packages/viewer/src/modules/FilteringManager.js b/packages/viewer/src/modules/FilteringManager.js
index 66bba645e..a63fcbd43 100644
--- a/packages/viewer/src/modules/FilteringManager.js
+++ b/packages/viewer/src/modules/FilteringManager.js
@@ -28,20 +28,20 @@ export default class FilteringManager {
if (!this.passesFilter(obj.userData, filter.filterBy)) {
if (filter.ghostOthers) {
- let clone = obj.clone()
+ const clone = obj.clone()
this.ghostObject(clone)
return clone
}
return null
}
- let clone = obj.clone()
+ const clone = obj.clone()
if (filter.colorBy) {
if (filter.colorBy.type === 'category') {
- let newMaterial = this.colorWithCategory(obj, filter.colorBy)
+ const newMaterial = this.colorWithCategory(obj, filter.colorBy)
this.setMaterial(clone, newMaterial)
} else if (filter.colorBy.type === 'gradient') {
- let newMaterial = this.colorWithGradient(obj, filter.colorBy)
+ const newMaterial = this.colorWithGradient(obj, filter.colorBy)
this.setMaterial(clone, newMaterial)
}
}
@@ -52,7 +52,7 @@ export default class FilteringManager {
clone.userData = { hidden: true }
if (clone.type === 'Group') {
- for (let child of clone.children) {
+ for (const child of clone.children) {
this.ghostObject(child)
}
} else if (clone.type === 'Mesh') {
@@ -67,7 +67,7 @@ export default class FilteringManager {
setMaterial(clone, material) {
if (clone.type === 'Group') {
- for (let child of clone.children) {
+ for (const child of clone.children) {
this.setMaterial(child, material)
}
} else if (clone.material !== undefined && material !== undefined) {
@@ -78,23 +78,23 @@ export default class FilteringManager {
getObjectProperty(obj, property) {
if (!property) return
- let keyParts = property.split('.')
+ const keyParts = property.split('.')
let crtObj = obj
for (let i = 0; i < keyParts.length - 1; i++) {
if (!(keyParts[i] in crtObj)) return
crtObj = crtObj[keyParts[i]]
if (crtObj.constructor !== Object) return
}
- let attributeName = keyParts[keyParts.length - 1]
+ const attributeName = keyParts[keyParts.length - 1]
return crtObj[attributeName]
}
colorWithCategory(threejsObj, colors) {
- let obj = threejsObj.userData
- let defaultValue = colors.default
+ const obj = threejsObj.userData
+ const defaultValue = colors.default
let color = defaultValue
- let objValue = this.getObjectProperty(obj, colors.property)
- let customPallete = colors.values || {}
+ const objValue = this.getObjectProperty(obj, colors.property)
+ const customPallete = colors.values || {}
if (objValue in customPallete) {
color = customPallete[objValue]
}
@@ -103,29 +103,29 @@ export default class FilteringManager {
return threejsObj.material
} else if (color === undefined) {
// compute value hash
- let objValueAsString = '' + objValue
+ const objValueAsString = '' + objValue
let hash = 0
for (let i = 0; i < objValueAsString.length; i++) {
- let chr = objValueAsString.charCodeAt(i)
+ const chr = objValueAsString.charCodeAt(i)
hash = (hash << 5) - hash + chr
hash |= 0 // Convert to 32bit integer
}
hash = Math.abs(hash)
- let colorHue = hash % 360
+ const colorHue = hash % 360
color = `hsl(${colorHue}, 50%, 30%)`
}
if (objValue !== undefined && objValue !== null)
this.colorLegend[objValue.toString()] = color
- let material = this.ColoredMaterial.clone()
+ const material = this.ColoredMaterial.clone()
material.color = new THREE.Color(color)
return material
}
colorWithGradient(threejsObj, colors) {
- let obj = threejsObj.userData
- let rainbow = new Rainbow()
+ const obj = threejsObj.userData
+ const rainbow = new Rainbow()
if ('minValue' in colors && 'maxValue' in colors)
rainbow.setNumberRange(colors.minValue, colors.maxValue)
if ('gradientColors' in colors) rainbow.setSpectrum(...colors.gradientColors)
@@ -133,26 +133,26 @@ export default class FilteringManager {
let objValue = this.getObjectProperty(obj, colors.property)
objValue = Number(objValue)
if (Number.isNaN(objValue)) {
- let defaultColor = colors.default
+ const defaultColor = colors.default
if (defaultColor === null) return threejsObj.material
if (defaultColor === undefined) return this.WireframeMaterial
- let material = this.ColoredMaterial.clone()
+ const material = this.ColoredMaterial.clone()
material.color = new THREE.Color(defaultColor)
return material
}
- let material = this.ColoredMaterial.clone()
+ const material = this.ColoredMaterial.clone()
material.color = new THREE.Color(`#${rainbow.colourAt(objValue)}`)
return material
}
passesFilter(obj, filterBy) {
if (!filterBy) return true
- for (let filterKey in filterBy) {
- let objValue = this.getObjectProperty(obj, filterKey)
+ for (const filterKey in filterBy) {
+ const objValue = this.getObjectProperty(obj, filterKey)
- let passesFilter = this.filterValue(objValue, filterBy[filterKey])
+ const passesFilter = this.filterValue(objValue, filterBy[filterKey])
if (!passesFilter) return false
}
return true
@@ -170,14 +170,14 @@ export default class FilteringManager {
if ('includes' in valueFilter && Array.isArray(valueFilter.includes)) {
if (!objValue || !Array.isArray(objValue)) return false
- for (let testValue of valueFilter.includes)
+ for (const testValue of valueFilter.includes)
if (objValue.includes(testValue)) return true
return false
}
if ('excludes' in valueFilter && Array.isArray(valueFilter.excludes)) {
if (!objValue || !Array.isArray(objValue)) return true
- for (let testValue of valueFilter.excludes)
+ for (const testValue of valueFilter.excludes)
if (objValue.includes(testValue)) return false
return true
}
diff --git a/packages/viewer/src/modules/InteractionHandler.js b/packages/viewer/src/modules/InteractionHandler.js
index f6da0b012..c7ef8012e 100644
--- a/packages/viewer/src/modules/InteractionHandler.js
+++ b/packages/viewer/src/modules/InteractionHandler.js
@@ -63,15 +63,15 @@ export default class InteractionHandler {
overlayObjects(ids = []) {
this.overlaidObjects.clear()
- let all = this.viewer.sceneManager.allObjects
- let subsetToAdd = all.filter((obj) => ids.indexOf(obj.uuid) !== -1)
+ const all = this.viewer.sceneManager.allObjects
+ const subsetToAdd = all.filter((obj) => ids.indexOf(obj.uuid) !== -1)
- for (let obj of subsetToAdd) {
- let selType = obj.type
+ for (const obj of subsetToAdd) {
+ const selType = obj.type
switch (selType) {
case 'Group': {
- let blockObjs = this.getBlockObjectsCloned(obj)
- for (let child of blockObjs) {
+ const blockObjs = this.getBlockObjectsCloned(obj)
+ for (const child of blockObjs) {
child.material = this.overlayMeshMaterial
this.overlaidObjects.add(child)
}
@@ -130,8 +130,8 @@ export default class InteractionHandler {
rootBlock = this.getParentBlock(objs[0].object.parent)
}
- let objId = selType === 'Block' ? rootBlock.userData.id : objs[0].object.userData.id
- let objIdIndexCheck = this.selectedObjectsUserData.findIndex((o) => o.id === objId)
+ const objId = selType === 'Block' ? rootBlock.userData.id : objs[0].object.userData.id
+ const objIdIndexCheck = this.selectedObjectsUserData.findIndex((o) => o.id === objId)
if (objIdIndexCheck !== -1) {
if (this.selectionHelper.multiSelect) {
// TODO: deselect if in multiple selection mode
@@ -143,8 +143,8 @@ export default class InteractionHandler {
switch (selType) {
case 'Block': {
- let blockObjs = this.getBlockObjectsCloned(rootBlock)
- for (let child of blockObjs) {
+ const blockObjs = this.getBlockObjectsCloned(rootBlock)
+ for (const child of blockObjs) {
child.userData = { id: rootBlock.userData.id }
child.material = this.selectionMeshMaterial
this.selectedObjects.add(child)
@@ -153,14 +153,14 @@ export default class InteractionHandler {
break
}
case 'Mesh': {
- let m = new THREE.Mesh(objs[0].object.geometry, this.selectionMeshMaterial)
+ const m = new THREE.Mesh(objs[0].object.geometry, this.selectionMeshMaterial)
m.userData = { id: objs[0].object.userData.id }
this.selectedObjects.add(m)
//this.viewer.outlinePass.selectedObjects.push( new THREE.Mesh( objs[0].object.geometry, this.selectionMeshMaterial ) )
break
}
case 'Line': {
- let l = new THREE.Line(objs[0].object.geometry, this.selectionMeshMaterial)
+ const l = new THREE.Line(objs[0].object.geometry, this.selectionMeshMaterial)
l.userData = { id: objs[0].object.userData.id }
this.selectedObjects.add(l)
//this.viewer.outlinePass.selectedObjects.push( new THREE.Line( objs[0].object.geometry, this.selectionMeshMaterial ) )
@@ -179,18 +179,18 @@ export default class InteractionHandler {
this.selectedRawObjects.push(objs[0])
}
- let box = new THREE.Box3().setFromObject(this.selectedObjects)
- let boxHelper = new THREE.Box3Helper(box, 0x047efb)
+ const box = new THREE.Box3().setFromObject(this.selectedObjects)
+ const boxHelper = new THREE.Box3Helper(box, 0x047efb)
this.selectionBox.clear()
this.selectionBox.add(boxHelper)
this.viewer.needsRender = true
- let selectionCenter = new THREE.Vector3()
+ const selectionCenter = new THREE.Vector3()
box.getCenter(selectionCenter)
- let selectionInfo = {
+ const selectionInfo = {
userData: this.selectedObjectsUserData,
location: objs[0].point,
- selectionCenter: selectionCenter
+ selectionCenter
}
this.viewer.emit('select', selectionInfo)
}
@@ -202,27 +202,27 @@ export default class InteractionHandler {
}
getBlockObjectsCloned(block, objects = []) {
- for (let child of block.children) {
+ for (const child of block.children) {
if (child instanceof THREE.Group) {
objects.push(...this.getBlockObjectsCloned(child))
} else {
objects.push(child.clone())
}
}
- for (let child of objects) {
+ for (const child of objects) {
child.geometry = child.geometry.clone().applyMatrix4(block.matrix)
}
return objects
}
deselectObj(id) {
- let objToRemove = this.selectedObjects.children.filter((o) => o.userData.id === id)
+ const objToRemove = this.selectedObjects.children.filter((o) => o.userData.id === id)
for (const o of objToRemove) this.selectedObjects.remove(o)
this.selectionBox.clear()
if (this.selectedObjects.children.length !== 0) {
- let box = new THREE.Box3().setFromObject(this.selectedObjects)
- let boxHelper = new THREE.Box3Helper(box, 0x047efb)
+ const box = new THREE.Box3().setFromObject(this.selectedObjects)
+ const boxHelper = new THREE.Box3Helper(box, 0x047efb)
this.selectionBox.add(boxHelper)
}
this.viewer.needsRender = true
@@ -238,7 +238,7 @@ export default class InteractionHandler {
}
zoomToObjectId(id) {
- let obj = this.viewer.sceneManager.allObjects.find((o) => o.uuid === id)
+ const obj = this.viewer.sceneManager.allObjects.find((o) => o.uuid === id)
if (obj) this.zoomToObject(obj)
else console.warn(`No object with id of ${id} found.`)
}
@@ -254,7 +254,7 @@ export default class InteractionHandler {
return
}
if (this.viewer.sceneManager.sceneObjects.objectsInScene.length === 0) {
- let box = new THREE.Box3(
+ const box = new THREE.Box3(
new THREE.Vector3(-1, -1, -1),
new THREE.Vector3(1, 1, 1)
)
@@ -262,7 +262,7 @@ export default class InteractionHandler {
return
}
- let box = new THREE.Box3().setFromObject(
+ const box = new THREE.Box3().setFromObject(
this.viewer.sceneManager.sceneObjects.objectsInScene
)
this.zoomToBox(box, fit, transition)
@@ -276,7 +276,7 @@ export default class InteractionHandler {
const fitOffset = fit
const size = box.getSize(new THREE.Vector3())
- let target = new THREE.Sphere()
+ const target = new THREE.Sphere()
box.getBoundingSphere(target)
target.radius = target.radius * fitOffset
@@ -305,7 +305,7 @@ export default class InteractionHandler {
// fit the camera inside, so we don't have clipping plane issues.
// WIP implementation
- let camPos = this.viewer.cameraHandler.orthoCamera.position
+ const camPos = this.viewer.cameraHandler.orthoCamera.position
let dist = target.distanceToPoint(camPos)
if (dist < 0) {
dist *= -1
@@ -323,7 +323,7 @@ export default class InteractionHandler {
}
screenshot() {
- let sectionBoxVisible = this.viewer.sectionBox.display.visible
+ const sectionBoxVisible = this.viewer.sectionBox.display.visible
if (sectionBoxVisible) {
this.viewer.sectionBox.displayOff()
this.viewer.needsRender = true
@@ -426,14 +426,14 @@ export default class InteractionHandler {
setView(id, transition = true) {
if (!id) return
- let view = this.viewer.sceneManager.views.find((v) => v.id === id)
+ const view = this.viewer.sceneManager.views.find((v) => v.id === id)
if (!view) {
console.warn(`View id ${id} not found.`)
return
}
- let target = view.target
- let position = view.origin
+ const target = view.target
+ const position = view.origin
this.viewer.cameraHandler.activeCam.controls.setLookAt(
position.x,
diff --git a/packages/viewer/src/modules/SceneObjectManager.js b/packages/viewer/src/modules/SceneObjectManager.js
index a4d2839ff..fa5d88b70 100644
--- a/packages/viewer/src/modules/SceneObjectManager.js
+++ b/packages/viewer/src/modules/SceneObjectManager.js
@@ -83,8 +83,8 @@ export default class SceneObjectManager {
}
get filteredObjects() {
- let ret = []
- for (let objectGroup of this.sceneObjects.objectsInScene.children) {
+ const ret = []
+ for (const objectGroup of this.sceneObjects.objectsInScene.children) {
if (objectGroup.name === 'GroupedSolidObjects') continue
ret.push(...objectGroup.children)
}
@@ -140,12 +140,12 @@ export default class SceneObjectManager {
addSolid(wrapper, addToScene = true) {
// Do we have a defined material?
if (wrapper.meta.renderMaterial) {
- let renderMat = wrapper.meta.renderMaterial
- let color = new THREE.Color(this._argbToRGB(renderMat.diffuse))
+ const renderMat = wrapper.meta.renderMaterial
+ const color = new THREE.Color(this._argbToRGB(renderMat.diffuse))
this._normaliseColor(color)
// Is it a transparent material?
if (renderMat.opacity !== 1) {
- let material = this.transparentMaterial.clone()
+ const material = this.transparentMaterial.clone()
material.clippingPlanes = this.viewer.sectionBox.planes
material.color = color
@@ -154,7 +154,7 @@ export default class SceneObjectManager {
// It's not a transparent material!
} else {
- let material = this.solidMaterial.clone()
+ const material = this.solidMaterial.clone()
material.clippingPlanes = this.viewer.sectionBox.planes
material.color = color
@@ -167,7 +167,7 @@ export default class SceneObjectManager {
return this.addSingleSolid(wrapper, this.solidVertexMaterial, addToScene)
} else {
// If we don't have defined material, just use the default
- let material = this.solidMaterial.clone()
+ const material = this.solidMaterial.clone()
material.clippingPlanes = this.viewer.sectionBox.planes
return this.addSingleSolid(wrapper, material, addToScene)
@@ -215,7 +215,7 @@ export default class SceneObjectManager {
}
addPoint(wrapper, addToScene = true) {
- let dot = new THREE.Points(wrapper.bufferGeometry, this.pointMaterial)
+ const dot = new THREE.Points(wrapper.bufferGeometry, this.pointMaterial)
dot.userData = wrapper.meta
dot.uuid = wrapper.meta.id
if (addToScene) {
@@ -230,11 +230,11 @@ export default class SceneObjectManager {
if (wrapper.bufferGeometry.attributes.color) {
clouds = new THREE.Points(wrapper.bufferGeometry, this.pointVertexColorsMaterial)
} else if (wrapper.meta.renderMaterial) {
- let renderMat = wrapper.meta.renderMaterial
- let color = new THREE.Color(this._argbToRGB(renderMat.diffuse))
+ const renderMat = wrapper.meta.renderMaterial
+ const color = new THREE.Color(this._argbToRGB(renderMat.diffuse))
this._normaliseColor(color)
- let material = this.pointMaterial.clone()
+ const material = this.pointMaterial.clone()
material.clippingPlanes = this.viewer.sectionBox.planes
// material.clippingPlanes = this.viewer.interactions.sectionBox.planes
@@ -255,13 +255,13 @@ export default class SceneObjectManager {
}
addBlock(wrapper, addToScene = true) {
- let group = new THREE.Group()
+ const group = new THREE.Group()
wrapper.bufferGeometry.forEach((g) => {
if (wrapper.meta.renderMaterial && !g.meta.renderMaterial) {
g.meta.renderMaterial = wrapper.meta.renderMaterial
}
- let res = this.addObject(g, false)
+ const res = this.addObject(g, false)
if (res) group.add(res)
})
@@ -282,8 +282,8 @@ export default class SceneObjectManager {
async removeImportedObject(importedUrl) {
this.viewer.interactions.deselectObjects()
- for (let objGroup of this.sceneObjects.allObjects.children) {
- let toRemove = objGroup.children.filter(
+ for (const objGroup of this.sceneObjects.allObjects.children) {
+ const toRemove = objGroup.children.filter(
(obj) => obj.userData?.__importedUrl === importedUrl
)
toRemove.forEach((obj) => {
@@ -307,13 +307,13 @@ export default class SceneObjectManager {
getSceneBoundingBox() {
if (this.objects.length === 0) {
- let box = new THREE.Box3(
+ const box = new THREE.Box3(
new THREE.Vector3(-1, -1, -1),
new THREE.Vector3(1, 1, 1)
)
return box
}
- let box = new THREE.Box3().setFromObject(this.userObjects)
+ const box = new THREE.Box3().setFromObject(this.userObjects)
return box
}
@@ -324,7 +324,7 @@ export default class SceneObjectManager {
_normaliseColor(color) {
// Note: full of **magic numbers** that will need changing once global scene
// is properly set up; also to test with materials coming from other software too...
- let hsl = {}
+ const hsl = {}
color.getHSL(hsl)
if (hsl.s + hsl.l > 1) {
diff --git a/packages/viewer/src/modules/SceneObjects.js b/packages/viewer/src/modules/SceneObjects.js
index d546ec21e..98fca405e 100644
--- a/packages/viewer/src/modules/SceneObjects.js
+++ b/packages/viewer/src/modules/SceneObjects.js
@@ -59,16 +59,16 @@ export default class SceneObjects {
}
getObjectsProperties(includeAll = true) {
- let flattenObject = function (obj) {
- let flatten = {}
- for (let k in obj) {
+ const flattenObject = function (obj) {
+ const flatten = {}
+ for (const k in obj) {
if (['id', '__closure', '__parents', 'bbox', 'totalChildrenCount'].includes(k))
continue
- let v = obj[k]
+ const v = obj[k]
if (v === null || v === undefined || Array.isArray(v)) continue
if (v.constructor === Object) {
- let flattenProp = flattenObject(v)
- for (let pk in flattenProp) {
+ const flattenProp = flattenObject(v)
+ for (const pk in flattenProp) {
flatten[`${k}.${pk}`] = flattenProp[pk]
}
continue
@@ -78,13 +78,13 @@ export default class SceneObjects {
return flatten
}
- let targetObjects = includeAll ? this.allObjects : this.objectsInScene
+ const targetObjects = includeAll ? this.allObjects : this.objectsInScene
- let propValues = {}
- for (let objGroup of targetObjects.children) {
- for (let threeObj of objGroup.children) {
- let obj = flattenObject(threeObj.userData)
- for (let prop of Object.keys(obj)) {
+ const propValues = {}
+ for (const objGroup of targetObjects.children) {
+ for (const threeObj of objGroup.children) {
+ const obj = flattenObject(threeObj.userData)
+ for (const prop of Object.keys(obj)) {
if (!(prop in propValues)) {
propValues[prop] = []
}
@@ -93,9 +93,9 @@ export default class SceneObjects {
}
}
- let propInfo = {}
- for (let prop in propValues) {
- let pinfo = {
+ const propInfo = {}
+ for (const prop in propValues) {
+ const pinfo = {
type: typeof propValues[prop][0],
objectCount: propValues[prop].length,
allValues: propValues[prop],
@@ -103,7 +103,7 @@ export default class SceneObjects {
minValue: propValues[prop][0],
maxValue: propValues[prop][0]
}
- for (let v of propValues[prop]) {
+ for (const v of propValues[prop]) {
if (v < pinfo.minValue) pinfo.minValue = v
if (v > pinfo.maxValue) pinfo.maxValue = v
if (!(v in pinfo.uniqueValues)) {
@@ -118,12 +118,12 @@ export default class SceneObjects {
}
async applyFilterToGroup(threejsGroup, filter, ghostedObjectsOutput) {
- let ret = new THREE.Group()
+ const ret = new THREE.Group()
ret.name = 'filtered_' + threejsGroup.name
- for (let obj of threejsGroup.children) {
+ for (const obj of threejsGroup.children) {
await this.asyncPause()
- let filteredObj = this.filteringManager.filterAndColorObject(obj, filter)
+ const filteredObj = this.filteringManager.filterAndColorObject(obj, filter)
if (filteredObj) {
if (ghostedObjectsOutput && filteredObj.userData.hidden) {
ghostedObjectsOutput.add(filteredObj)
@@ -136,7 +136,7 @@ export default class SceneObjects {
}
disposeAndClearGroup(threejsGroup, disposeGeometry = true) {
- for (let child of threejsGroup.children) {
+ for (const child of threejsGroup.children) {
if (child.type === 'Group') {
this.disposeAndClearGroup(child, disposeGeometry)
}
@@ -152,7 +152,7 @@ export default class SceneObjects {
if (filter === null) {
// Remove filters, use allObjects
- let newGoupedSolidObjects = await this.groupSolidObjects(this.allSolidObjects)
+ const newGoupedSolidObjects = await this.groupSolidObjects(this.allSolidObjects)
if (this.groupedSolidObjects !== null) {
this.disposeAndClearGroup(this.groupedSolidObjects)
@@ -178,13 +178,13 @@ export default class SceneObjects {
// A filter is to be applied
this.filteringManager.initFilterOperation()
- let newFilteredObjects = new THREE.Group()
+ const newFilteredObjects = new THREE.Group()
newFilteredObjects.name = 'FilteredObjects'
- let newGhostedObjects = new THREE.Group()
+ const newGhostedObjects = new THREE.Group()
newGhostedObjects.name = 'GhostedObjects'
- let filteredSolidObjects = await this.applyFilterToGroup(
+ const filteredSolidObjects = await this.applyFilterToGroup(
this.allSolidObjects,
filter,
newGhostedObjects
@@ -192,21 +192,21 @@ export default class SceneObjects {
filteredSolidObjects.visible = false
newFilteredObjects.add(filteredSolidObjects)
- let filteredLineObjects = await this.applyFilterToGroup(
+ const filteredLineObjects = await this.applyFilterToGroup(
this.allLineObjects,
filter,
newGhostedObjects
)
newFilteredObjects.add(filteredLineObjects)
- let filteredTransparentObjects = await this.applyFilterToGroup(
+ const filteredTransparentObjects = await this.applyFilterToGroup(
this.allTransparentObjects,
filter,
newGhostedObjects
)
newFilteredObjects.add(filteredTransparentObjects)
- let filteredPointObjects = await this.applyFilterToGroup(
+ const filteredPointObjects = await this.applyFilterToGroup(
this.allPointObjects,
filter,
newGhostedObjects
@@ -214,12 +214,12 @@ export default class SceneObjects {
newFilteredObjects.add(filteredPointObjects)
// group solid objects
- let groupedFilteredSolidObjects = await this.groupSolidObjects(
+ const groupedFilteredSolidObjects = await this.groupSolidObjects(
filteredSolidObjects
)
newFilteredObjects.add(groupedFilteredSolidObjects)
- let groupedGhostedObjects = await this.groupSolidObjects(newGhostedObjects)
+ const groupedGhostedObjects = await this.groupSolidObjects(newGhostedObjects)
// Sync update scene
if (this.filteredObjects !== null) {
@@ -246,15 +246,15 @@ export default class SceneObjects {
}
flattenGroup(group) {
- let acc = []
- for (let child of group.children) {
+ const acc = []
+ for (const child of group.children) {
if (child instanceof THREE.Group) {
acc.push(...this.flattenGroup(child))
} else {
acc.push(child.clone())
}
}
- for (let element of acc) {
+ for (const element of acc) {
element.geometry = element.geometry.clone()
element.geometry.applyMatrix4(group.matrix)
}
@@ -262,14 +262,14 @@ export default class SceneObjects {
}
async groupSolidObjects(threejsGroup) {
- let materialIdToBufferGeometry = {}
- let materialIdToMaterial = {}
- let materialIdToMeshes = {}
+ const materialIdToBufferGeometry = {}
+ const materialIdToMaterial = {}
+ const materialIdToMeshes = {}
- let groupedObjects = new THREE.Group()
+ const groupedObjects = new THREE.Group()
groupedObjects.name = 'GroupedSolidObjects'
- for (let obj of threejsGroup.children) {
+ for (const obj of threejsGroup.children) {
let meshes = []
if (obj instanceof THREE.Group) {
meshes = this.flattenGroup(obj)
@@ -277,8 +277,8 @@ export default class SceneObjects {
meshes = [obj]
}
- for (let mesh of meshes) {
- let m = mesh.material
+ for (const mesh of meshes) {
+ const m = mesh.material
// Pass-through non mesh materials (blocks can contain lines, that end up here)
if (
@@ -311,7 +311,7 @@ export default class SceneObjects {
// Max 1024 objects per group (mergeBufferGeometries is sync and can freeze for large data)
if (materialIdToBufferGeometry[materialId].length >= 1024) {
- let archivedMaterialId = `arch//${materialId}//${mesh.id}`
+ const archivedMaterialId = `arch//${materialId}//${mesh.id}`
materialIdToBufferGeometry[archivedMaterialId] =
materialIdToBufferGeometry[materialId]
materialIdToMaterial[archivedMaterialId] = materialIdToMaterial[materialId]
@@ -325,15 +325,15 @@ export default class SceneObjects {
await this.asyncPause()
- for (let materialId in materialIdToBufferGeometry) {
+ for (const materialId in materialIdToBufferGeometry) {
await this.asyncPause()
- let groupGeometry = BufferGeometryUtils.mergeBufferGeometries(
+ const groupGeometry = BufferGeometryUtils.mergeBufferGeometries(
materialIdToBufferGeometry[materialId]
)
await this.asyncPause()
- let groupMaterial = materialIdToMaterial[materialId]
- let groupMesh = new THREE.Mesh(groupGeometry, groupMaterial)
+ const groupMaterial = materialIdToMaterial[materialId]
+ const groupMesh = new THREE.Mesh(groupGeometry, groupMaterial)
groupMesh.userData = null
groupedObjects.add(groupMesh)
}
diff --git a/packages/viewer/src/modules/SectionBox.js b/packages/viewer/src/modules/SectionBox.js
index 56b362465..c76889e49 100644
--- a/packages/viewer/src/modules/SectionBox.js
+++ b/packages/viewer/src/modules/SectionBox.js
@@ -32,7 +32,7 @@ export default class SectionBox {
this.display.add(this.boxHelper)
// we're attaching the gizmo mover to this sphere in the box centre
- let sphere = new THREE.SphereGeometry(0.01, 10, 10)
+ const sphere = new THREE.SphereGeometry(0.01, 10, 10)
this.sphere = new THREE.Mesh(
sphere,
new THREE.MeshStandardMaterial({ color: 0x00ffff })
@@ -129,7 +129,7 @@ export default class SectionBox {
this.controls.addEventListener('change', this._draggingChangeHandler.bind(this))
this.controls.addEventListener('dragging-changed', (event) => {
if (!this.display.visible) return
- let val = !!event.value
+ const val = !!event.value
if (val) {
this.dragging = val
this.viewer.interactions.preventSelection = val
@@ -156,9 +156,9 @@ export default class SectionBox {
this.prevPosition = this.hoverPlane.position.clone()
this.prevPosition.sub(this.hoverPlane.position)
this.prevPosition.negate()
- let boxArr = this.boxGeometry.attributes.position.array
+ const boxArr = this.boxGeometry.attributes.position.array
for (let i = 0; i < this.currentRange.length; i++) {
- let index = this.currentRange[i]
+ const index = this.currentRange[i]
boxArr[3 * index] += this.prevPosition.x
boxArr[3 * index + 1] += this.prevPosition.y
boxArr[3 * index + 2] += this.prevPosition.z
@@ -203,19 +203,19 @@ export default class SectionBox {
this.attachedToBox = false
this.boxHelper.material.opacity = 0.3
this.hoverPlane.visible = true
- let side = this.sidesSimple[`${args[0].face.a}${args[0].face.b}${args[0].face.c}`]
+ const side = this.sidesSimple[`${args[0].face.a}${args[0].face.b}${args[0].face.c}`]
this.controls.showX = side.axis === 'x'
this.controls.showY = side.axis === 'y'
this.controls.showZ = side.axis === 'z'
this.currentRange = side.verts
- let boxArr = this.boxGeometry.attributes.position
+ const boxArr = this.boxGeometry.attributes.position
let index = 0
- let planeArr = this.plane.attributes.position.array
- let centre = new THREE.Vector3()
+ const planeArr = this.plane.attributes.position.array
+ const centre = new THREE.Vector3()
- let tempArr = []
+ const tempArr = []
for (let i = 0; i < planeArr.length; i++) {
if (i % 3 === 0) {
tempArr.push(boxArr.getX(this.currentRange[index]))
@@ -269,12 +269,12 @@ export default class SectionBox {
7, 2, 6, 4, 5, 0, 0, 5, 1
]
- let positions = []
- for (let vert of vertices) {
+ const positions = []
+ for (const vert of vertices) {
positions.push(...vert)
}
- let g = new THREE.BufferGeometry()
+ const g = new THREE.BufferGeometry()
g.setAttribute(
'position',
new THREE.BufferAttribute(new Float32Array(positions), 3)
@@ -295,29 +295,29 @@ export default class SectionBox {
]
let index = 0
- let boxArr = this.boxGeometry.attributes.position
+ const boxArr = this.boxGeometry.attributes.position
const indexes = [
0, 1, 3, 3, 1, 2, 1, 5, 2, 2, 5, 6, 5, 4, 6, 6, 4, 7, 4, 0, 7, 7, 0, 3, 3, 2, 7,
7, 2, 6, 4, 5, 0, 0, 5, 1
]
for (let i = 0; i < indexes.length; i += 6) {
- let a = new THREE.Vector3(
+ const a = new THREE.Vector3(
boxArr.getX(indexes[i]),
boxArr.getY(indexes[i]),
boxArr.getZ(indexes[i])
)
- let b = new THREE.Vector3(
+ const b = new THREE.Vector3(
boxArr.getX(indexes[i + 1]),
boxArr.getY(indexes[i + 1]),
boxArr.getZ(indexes[i + 1])
)
- let c = new THREE.Vector3(
+ const c = new THREE.Vector3(
boxArr.getX(indexes[i + 2]),
boxArr.getY(indexes[i + 2]),
boxArr.getZ(indexes[i + 2])
)
- let plane = this.planes[index]
+ const plane = this.planes[index]
plane.setFromCoplanarPoints(a, b, c)
index++
}
@@ -326,8 +326,8 @@ export default class SectionBox {
_attachControlsToBox() {
this.controls.detach()
- let centre = new THREE.Vector3()
- let boxArr = this.boxGeometry.attributes.position.array
+ const centre = new THREE.Vector3()
+ const boxArr = this.boxGeometry.attributes.position.array
for (let i = 0; i < boxArr.length; i += 3) {
centre.add(new THREE.Vector3(boxArr[i], boxArr[i + 1], boxArr[i + 2]))
}
@@ -401,7 +401,7 @@ export default class SectionBox {
z2
]
- let boxVerts = this.boxGeometry.attributes.position.array
+ const boxVerts = this.boxGeometry.attributes.position.array
for (let i = 0; i < newVertices.length; i++) {
boxVerts[i] = newVertices[i]
}
@@ -445,7 +445,7 @@ export default class SectionBox {
getCurrentBox() {
if (!this.display.visible) return null
- let box = new THREE.Box3().setFromBufferAttribute(
+ const box = new THREE.Box3().setFromBufferAttribute(
this.boxGeometry.attributes.position
)
return box
diff --git a/packages/viewer/src/modules/SelectionHelper.js b/packages/viewer/src/modules/SelectionHelper.js
index ce8c3b696..d32327d3e 100644
--- a/packages/viewer/src/modules/SelectionHelper.js
+++ b/packages/viewer/src/modules/SelectionHelper.js
@@ -43,12 +43,12 @@ export default class SelectionHelper extends EventEmitter {
e.preventDefault()
if (this.viewer.cameraHandler.orbiting) return
- let delta = new Date().getTime() - mdTime
+ const delta = new Date().getTime() - mdTime
this.pointerDown = false
if (delta > 250) return
- let selectionObjects = this.getClickedObjects(e)
+ const selectionObjects = this.getClickedObjects(e)
this.emit('object-clicked', selectionObjects)
})
@@ -66,11 +66,11 @@ export default class SelectionHelper extends EventEmitter {
if (e.targetTouches.length > 0) {
return
}
- let currentTime = new Date().getTime()
- let tapLength = currentTime - this.lastTap
+ const currentTime = new Date().getTime()
+ const tapLength = currentTime - this.lastTap
clearTimeout(this.tapTimeout)
if (tapLength < 500 && tapLength > 0) {
- let selectionObjects = this.getClickedObjects(this.touchLocation)
+ const selectionObjects = this.getClickedObjects(this.touchLocation)
this.emit('object-doubleclicked', selectionObjects)
} else {
this.tapTimeout = setTimeout(function () {
@@ -81,7 +81,7 @@ export default class SelectionHelper extends EventEmitter {
})
this.viewer.renderer.domElement.addEventListener('dblclick', (e) => {
- let selectionObjects = this.getClickedObjects(e)
+ const selectionObjects = this.getClickedObjects(e)
this.emit('object-doubleclicked', selectionObjects)
})
@@ -112,14 +112,14 @@ export default class SelectionHelper extends EventEmitter {
normalizedPosition,
this.viewer.cameraHandler.activeCam.camera
)
- let targetObjects = this.subset
+ const targetObjects = this.subset
? this.subset
: this.viewer.sceneManager.filteredObjects
let intersectedObjects = this.raycaster.intersectObjects(targetObjects)
// filters objects in section box mode
if (this.viewer.sectionBox.display.visible && this.checkForSectionBoxInclusion) {
- let box = new THREE.Box3().setFromObject(this.viewer.sectionBox.cube)
+ const box = new THREE.Box3().setFromObject(this.viewer.sectionBox.cube)
intersectedObjects = intersectedObjects.filter((obj) => {
return box.containsPoint(obj.point)
})
diff --git a/packages/viewer/src/modules/Viewer.js b/packages/viewer/src/modules/Viewer.js
index c95dd0c64..9852a5322 100644
--- a/packages/viewer/src/modules/Viewer.js
+++ b/packages/viewer/src/modules/Viewer.js
@@ -105,7 +105,7 @@ export default class Viewer extends EventEmitter {
// return
- let ambientLight = new THREE.AmbientLight(0xffffff)
+ const ambientLight = new THREE.AmbientLight(0xffffff)
this.scene.add(ambientLight)
const lights = []
@@ -114,7 +114,7 @@ export default class Viewer extends EventEmitter {
lights[2] = new THREE.PointLight(0xffffff, 0.21, 0)
lights[3] = new THREE.PointLight(0xffffff, 0.21, 0)
- let factor = 1000
+ const factor = 1000
lights[0].position.set(1 * factor, 1 * factor, 1 * factor)
lights[1].position.set(1 * factor, -1 * factor, 1 * factor)
lights[2].position.set(-1 * factor, -1 * factor, 1 * factor)
@@ -137,7 +137,7 @@ export default class Viewer extends EventEmitter {
hemiLight.up.set(0, 0, 1)
this.scene.add(hemiLight)
- let group = new THREE.Group()
+ const group = new THREE.Group()
this.scene.add(group)
}
@@ -172,7 +172,7 @@ export default class Viewer extends EventEmitter {
// Note: scene based "dynamic" reflections need to be handled a bit more carefully, or else:
// GL ERROR :GL_INVALID_OPERATION : glDrawElements: Source and destination textures of the draw are the same.
// First remove the env map from all materials
- for (let obj of this.sceneManager.filteredObjects) {
+ for (const obj of this.sceneManager.filteredObjects) {
obj.material.envMap = null
}
@@ -183,7 +183,7 @@ export default class Viewer extends EventEmitter {
this.scene.background = null
// Finally, re-set the env maps of all materials
- for (let obj of this.sceneManager.filteredObjects) {
+ for (const obj of this.sceneManager.filteredObjects) {
obj.material.envMap = this.cubeCamera.renderTarget.texture
}
this.reflectionsNeedUpdate = false
@@ -220,7 +220,7 @@ export default class Viewer extends EventEmitter {
try {
if (++this.inProgressOperations === 1) this.emit('busy', true)
- let loader = new ViewerObjectLoader(this, url, token, enableCaching)
+ const loader = new ViewerObjectLoader(this, url, token, enableCaching)
this.loaders[url] = loader
await loader.load()
} finally {
@@ -248,7 +248,7 @@ export default class Viewer extends EventEmitter {
}
async unloadAll() {
- for (let key of Object.keys(this.loaders)) {
+ for (const key of Object.keys(this.loaders)) {
await this.loaders[key].unload()
delete this.loaders[key]
}
diff --git a/packages/viewer/src/modules/ViewerObjectLoader.js b/packages/viewer/src/modules/ViewerObjectLoader.js
index 2b62fda64..72fce053a 100644
--- a/packages/viewer/src/modules/ViewerObjectLoader.js
+++ b/packages/viewer/src/modules/ViewerObjectLoader.js
@@ -23,9 +23,9 @@ export default class ViewerObjectLoader {
}
// example url: `https://staging.speckle.dev/streams/a75ab4f10f/objects/f33645dc9a702de8af0af16bd5f655b0`
- let url = new URL(objectUrl)
+ const url = new URL(objectUrl)
- let segments = url.pathname.split('/')
+ const segments = url.pathname.split('/')
if (
segments.length < 5 ||
url.pathname.indexOf('streams') === -1 ||
@@ -43,7 +43,7 @@ export default class ViewerObjectLoader {
token: this.token,
streamId: this.streamId,
objectId: this.objectId,
- options: { enableCaching: enableCaching }
+ options: { enableCaching }
})
this.converter = new Converter(this.loader)
@@ -67,7 +67,7 @@ export default class ViewerObjectLoader {
let total = 0
let viewerLoads = 0
let firstObjectPromise = null
- for await (let obj of this.loader.getObjectIterator()) {
+ for await (const obj of this.loader.getObjectIterator()) {
if (this.cancel) {
this.viewer.emit('load-progress', {
progress: 1,
diff --git a/packages/viewer/src/modules/context/CameraHanlder.js b/packages/viewer/src/modules/context/CameraHanlder.js
index 14b9cafba..4b76dccd6 100644
--- a/packages/viewer/src/modules/context/CameraHanlder.js
+++ b/packages/viewer/src/modules/context/CameraHanlder.js
@@ -14,8 +14,8 @@ export default class CameraHandler {
this.camera.position.set(1, 1, 1)
this.camera.updateProjectionMatrix()
- let aspect = this.viewer.container.offsetWidth / this.viewer.container.offsetHeight
- let fustrumSize = 50
+ const aspect = this.viewer.container.offsetWidth / this.viewer.container.offsetHeight
+ const fustrumSize = 50
this.orthoCamera = new THREE.OrthographicCamera(
(-fustrumSize * aspect) / 2,
(fustrumSize * aspect) / 2,
@@ -28,7 +28,7 @@ export default class CameraHandler {
this.orthoCamera.position.set(100, 100, 100)
this.orthoCamera.updateProjectionMatrix()
- CameraControls.install({ THREE: THREE })
+ CameraControls.install({ THREE })
this.controls = new CameraControls(this.camera, this.viewer.renderer.domElement)
this.controls.maxPolarAngle = Math.PI / 2
this.setupWASDControls()
@@ -143,11 +143,11 @@ export default class CameraHandler {
// fit the camera inside, so we don't have clipping plane issues.
// WIP implementation
- let camPos = this.orthoCamera.position
- let box = new THREE.Box3().setFromObject(
+ const camPos = this.orthoCamera.position
+ const box = new THREE.Box3().setFromObject(
this.viewer.sceneManager.sceneObjects.allObjects
)
- let sphere = new THREE.Sphere()
+ const sphere = new THREE.Sphere()
box.getBoundingSphere(sphere)
let dist = sphere.distanceToPoint(camPos)
@@ -225,8 +225,8 @@ export default class CameraHandler {
this.viewer.container.offsetWidth / this.viewer.container.offsetHeight
this.camera.updateProjectionMatrix()
- let aspect = this.viewer.container.offsetWidth / this.viewer.container.offsetHeight
- let fustrumSize = 50
+ const aspect = this.viewer.container.offsetWidth / this.viewer.container.offsetHeight
+ const fustrumSize = 50
this.orthoCamera.left = (-fustrumSize * aspect) / 2
this.orthoCamera.right = (fustrumSize * aspect) / 2
this.orthoCamera.top = fustrumSize / 2
diff --git a/packages/viewer/src/modules/converter/Converter.js b/packages/viewer/src/modules/converter/Converter.js
index 02fecabce..0e6438e73 100644
--- a/packages/viewer/src/modules/converter/Converter.js
+++ b/packages/viewer/src/modules/converter/Converter.js
@@ -48,16 +48,16 @@ export default class Coverter {
if (obj === null || typeof obj !== 'object') return
if (obj.referencedId) obj = await this.resolveReference(obj)
- let childrenConversionPromisses = []
+ const childrenConversionPromisses = []
// Traverse arrays, and exit early (we don't want to iterate through many numbers)
if (Array.isArray(obj)) {
- for (let element of obj) {
+ for (const element of obj) {
if (typeof element !== 'object') break // exit early for non-object based arrays
if (this.activePromises >= this.maxChildrenPromises) {
await this.traverseAndConvert(element, callback, scale, parents)
} else {
- let childPromise = this.traverseAndConvert(element, callback, scale, parents)
+ const childPromise = this.traverseAndConvert(element, callback, scale, parents)
childrenConversionPromisses.push(childPromise)
}
}
@@ -85,7 +85,7 @@ export default class Coverter {
}
}
- let target = obj.data || obj
+ const target = obj.data || obj
// Check if the object has a display value of sorts
let displayValue =
@@ -98,7 +98,7 @@ export default class Coverter {
displayValue = await this.resolveReference(displayValue)
if (!displayValue.units) displayValue.units = obj.units
try {
- let convertedElement = await this.convert(displayValue, scale)
+ const convertedElement = await this.convert(displayValue, scale)
await callback(
new ObjectWrapper(
convertedElement.bufferGeometry,
@@ -112,10 +112,10 @@ export default class Coverter {
)
}
} else {
- for (let element of displayValue) {
- let val = await this.resolveReference(element)
+ for (const element of displayValue) {
+ const val = await this.resolveReference(element)
if (!val.units) val.units = obj.units
- let convertedElement = await this.convert(val, scale)
+ const convertedElement = await this.convert(val, scale)
await callback(
new ObjectWrapper(
convertedElement.bufferGeometry,
@@ -143,7 +143,7 @@ export default class Coverter {
// Last attempt: iterate through all object keys and see if we can display anything!
// traverses the object in case there's any sub-objects we can convert.
- for (let prop in target) {
+ for (const prop in target) {
if (prop === '__parents' || prop === 'bbox') continue
if (
['displayMesh', '@displayMesh', 'displayValue', '@displayValue'].includes(prop)
@@ -154,7 +154,7 @@ export default class Coverter {
if (this.activePromises >= this.maxChildrenPromises) {
await this.traverseAndConvert(target[prop], callback, scale, obj.__parents)
} else {
- let childPromise = this.traverseAndConvert(
+ const childPromise = this.traverseAndConvert(
target[prop],
callback,
scale,
@@ -178,7 +178,7 @@ export default class Coverter {
async convert(obj, scale = true) {
if (obj.referencedId) obj = await this.resolveReference(obj)
try {
- let type = this.getSpeckleType(obj)
+ const type = this.getSpeckleType(obj)
if (this[`${type}ToBufferGeometry`]) {
return await this[`${type}ToBufferGeometry`](obj.data || obj, scale)
} else return null
@@ -198,14 +198,14 @@ export default class Coverter {
// Handles pre-chunking objects, or arrs that have not been chunked
if (!arr[0].referencedId) return arr
- let chunked = []
- for (let ref of arr) {
- let real = await this.objectLoader.getObject(ref.referencedId)
+ const chunked = []
+ for (const ref of arr) {
+ const real = await this.objectLoader.getObject(ref.referencedId)
chunked.push(real.data)
// await this.asyncPause()
}
- let dechunked = [].concat(...chunked)
+ const dechunked = [].concat(...chunked)
return dechunked
}
@@ -217,7 +217,7 @@ export default class Coverter {
*/
async resolveReference(obj) {
if (obj.referencedId) {
- let resolvedObj = await this.objectLoader.getObject(obj.referencedId)
+ const resolvedObj = await this.objectLoader.getObject(obj.referencedId)
// this.asyncPause()
return resolvedObj
} else return obj
@@ -241,25 +241,25 @@ export default class Coverter {
async View3DToBufferGeometry(obj) {
obj.origin.units = obj.units
obj.target.units = obj.units
- let origin = this.PointToVector3(obj.origin)
- let target = this.PointToVector3(obj.target)
+ const origin = this.PointToVector3(obj.origin)
+ const target = this.PointToVector3(obj.target)
obj.origin = origin
obj.target = target
return new ObjectWrapper(obj, obj, 'View')
}
async BlockInstanceToBufferGeometry(obj, scale) {
- let cF = scale ? getConversionFactor(obj.units) : 1
- let definition = await this.resolveReference(obj.blockDefinition)
+ const cF = scale ? getConversionFactor(obj.units) : 1
+ const definition = await this.resolveReference(obj.blockDefinition)
const matrix = new THREE.Matrix4().set(
...(Array.isArray(obj.transform) ? obj.transform : obj.transform.value)
)
- let geoms = []
- for (let obj of definition.geometry) {
+ const geoms = []
+ for (const obj of definition.geometry) {
// Note: we are passing scale = false to the conversion of all objects, as scaling *needs* to happen
// at a global group level.
- let res = await this.convert(await this.resolveReference(obj), false)
+ const res = await this.convert(await this.resolveReference(obj), false)
// We are not baking the matrix transform in the vertices so as to allow
// for easy composed transforms coming in at nested block levels
// res.bufferGeometry.applyMatrix4( matrix )
@@ -273,10 +273,10 @@ export default class Coverter {
}
async PointcloudToBufferGeometry(obj, scale = true) {
- let conversionFactor = scale ? getConversionFactor(obj.units) : 1
- let buffer = new THREE.BufferGeometry()
+ const conversionFactor = scale ? getConversionFactor(obj.units) : 1
+ const buffer = new THREE.BufferGeometry()
- let vertices = await this.dechunk(obj.points)
+ const vertices = await this.dechunk(obj.points)
buffer.setAttribute(
'position',
@@ -288,7 +288,7 @@ export default class Coverter {
)
)
- let colorsRaw = await this.dechunk(obj.colors)
+ const colorsRaw = await this.dechunk(obj.colors)
if (colorsRaw && colorsRaw.length !== 0) {
if (colorsRaw.length !== buffer.attributes.position.count) {
@@ -306,10 +306,10 @@ export default class Coverter {
)
for (let i = 0; i < buffer.attributes.position.count; i++) {
- let color = colorsRaw[i]
- let r = (color >> 16) & 0xff
- let g = (color >> 8) & 0xff
- let b = color & 0xff
+ const color = colorsRaw[i]
+ const r = (color >> 16) & 0xff
+ const g = (color >> 8) & 0xff
+ const b = color & 0xff
buffer.attributes.color.setXYZ(i, r / 255, g / 255, b / 255)
}
}
@@ -328,7 +328,7 @@ export default class Coverter {
let displayValue = obj.displayValue || obj.displayMesh
if (Array.isArray(displayValue)) displayValue = displayValue[0] //Just take the first display value for now (not ideal)
- let { bufferGeometry } = await this.MeshToBufferGeometry(
+ const { bufferGeometry } = await this.MeshToBufferGeometry(
await this.resolveReference(displayValue),
scale
)
@@ -356,15 +356,15 @@ export default class Coverter {
try {
if (!obj) return
- let conversionFactor = getConversionFactor(obj.units)
- let buffer = new THREE.BufferGeometry()
- let indices = []
+ const conversionFactor = getConversionFactor(obj.units)
+ const buffer = new THREE.BufferGeometry()
+ const indices = []
if (!obj.vertices) return
if (!obj.faces) return
- let vertices = await this.dechunk(obj.vertices)
- let faces = await this.dechunk(obj.faces)
+ const vertices = await this.dechunk(obj.vertices)
+ const faces = await this.dechunk(obj.faces)
let k = 0
while (k < faces.length) {
@@ -403,7 +403,7 @@ export default class Coverter {
)
)
- let colorsRaw = await this.dechunk(obj.colors)
+ const colorsRaw = await this.dechunk(obj.colors)
if (colorsRaw && colorsRaw.length !== 0) {
if (colorsRaw.length !== buffer.attributes.position.count) {
@@ -421,10 +421,10 @@ export default class Coverter {
)
for (let i = 0; i < buffer.attributes.position.count; i++) {
- let color = colorsRaw[i]
- let r = (color >> 16) & 0xff
- let g = (color >> 8) & 0xff
- let b = color & 0xff
+ const color = colorsRaw[i]
+ const r = (color >> 16) & 0xff
+ const g = (color >> 8) & 0xff
+ const b = color & 0xff
buffer.attributes.color.setXYZ(i, r / 255, g / 255, b / 255)
}
}
@@ -445,8 +445,8 @@ export default class Coverter {
}
async PointToBufferGeometry(obj, scale = true) {
- let v = this.PointToVector3(obj, scale)
- let buf = new THREE.BufferGeometry().setFromPoints([v])
+ const v = this.PointToVector3(obj, scale)
+ const buf = new THREE.BufferGeometry().setFromPoints([v])
return new ObjectWrapper(buf, obj, 'point')
}
@@ -456,7 +456,7 @@ export default class Coverter {
//Old line format, treat as polyline
return this.PolylineToBufferGeometry(object, scale)
}
- let obj = {}
+ const obj = {}
Object.assign(obj, object)
const geometry = new THREE.BufferGeometry().setFromPoints([
@@ -467,10 +467,10 @@ export default class Coverter {
}
async PolylineToBufferGeometry(object, scale = true) {
- let obj = {}
+ const obj = {}
Object.assign(obj, object)
- let conversionFactor = scale ? getConversionFactor(obj.units) : 1
+ const conversionFactor = scale ? getConversionFactor(obj.units) : 1
obj.value = await this.dechunk(obj.value)
@@ -495,38 +495,38 @@ export default class Coverter {
}
async BoxToBufferGeometry(object, scale = true) {
- let conversionFactor = scale ? getConversionFactor(object.units) : 1
+ const conversionFactor = scale ? getConversionFactor(object.units) : 1
- let move = this.PointToVector3(object.basePlane.origin)
- let width = (object.xSize.end - object.xSize.start) * conversionFactor
- let depth = (object.ySize.end - object.ySize.start) * conversionFactor
- let height = (object.zSize.end - object.zSize.start) * conversionFactor
+ const move = this.PointToVector3(object.basePlane.origin)
+ const width = (object.xSize.end - object.xSize.start) * conversionFactor
+ const depth = (object.ySize.end - object.ySize.start) * conversionFactor
+ const height = (object.zSize.end - object.zSize.start) * conversionFactor
- let box = new THREE.BoxBufferGeometry(width, depth, height, 1, 1, 1)
+ const box = new THREE.BoxBufferGeometry(width, depth, height, 1, 1, 1)
box.applyMatrix4(new THREE.Matrix4().setPosition(move))
return new ObjectWrapper(box, object)
}
async PolycurveToBufferGeometry(object, scale = true) {
- let obj = {}
+ const obj = {}
Object.assign(obj, object)
- let buffers = []
+ const buffers = []
for (let i = 0; i < obj.segments.length; i++) {
const element = obj.segments[i]
const conv = await this.convert(element, scale)
buffers.push(conv?.bufferGeometry)
}
- let geometry = BufferGeometryUtils.mergeBufferGeometries(buffers)
+ const geometry = BufferGeometryUtils.mergeBufferGeometries(buffers)
return new ObjectWrapper(geometry, obj, 'line')
}
async CurveToBufferGeometry(object, scale = true) {
- let obj = {}
+ const obj = {}
Object.assign(obj, object)
- let displayValue = await this.resolveReference(obj.displayValue)
+ const displayValue = await this.resolveReference(obj.displayValue)
displayValue.units = displayValue.units || obj.units
const poly = await this.PolylineToBufferGeometry(displayValue, scale)
@@ -535,7 +535,7 @@ export default class Coverter {
}
async CircleToBufferGeometry(obj, scale = true) {
- let conversionFactor = scale ? getConversionFactor(obj.units) : 1
+ const conversionFactor = scale ? getConversionFactor(obj.units) : 1
const points = this.getCircularCurvePoints(obj.plane, obj.radius * conversionFactor)
const geometry = new THREE.BufferGeometry().setFromPoints(points)
@@ -588,16 +588,16 @@ export default class Coverter {
let resolution = 2 * Math.PI * obj.firstRadius * conversionFactor * 10
resolution = parseInt(resolution.toString())
- let points = []
+ const points = []
for (let index = 0; index <= resolution; index++) {
- let t = (index * Math.PI * 2) / resolution
- let x = Math.cos(t) * obj.firstRadius * conversionFactor
- let y = Math.sin(t) * obj.secondRadius * conversionFactor
+ const t = (index * Math.PI * 2) / resolution
+ const x = Math.cos(t) * obj.firstRadius * conversionFactor
+ const y = Math.sin(t) * obj.secondRadius * conversionFactor
const xMove = new THREE.Vector3(xAxis.x * x, xAxis.y * x, xAxis.z * x)
const yMove = new THREE.Vector3(yAxis.x * y, yAxis.y * y, yAxis.z * y)
- let pt = new THREE.Vector3().addVectors(xMove, yMove).add(center)
+ const pt = new THREE.Vector3().addVectors(xMove, yMove).add(center)
points.push(pt)
}
@@ -607,7 +607,7 @@ export default class Coverter {
PlaneToMatrix4(plane, scale = true) {
const m = new THREE.Matrix4()
- let conversionFactor = scale ? getConversionFactor(plane.units) : 1
+ const conversionFactor = scale ? getConversionFactor(plane.units) : 1
m.makeBasis(
this.PointToVector3(plane.xdir).normalize(),
@@ -641,12 +641,12 @@ export default class Coverter {
let resolution = ((endAngle - startAngle) * radius) / res
resolution = parseInt(resolution.toString())
- let points = []
+ const points = []
for (let index = 0; index <= resolution; index++) {
- let t = startAngle + (index * (endAngle - startAngle)) / resolution
- let x = Math.cos(t) * radius
- let y = Math.sin(t) * radius
+ const t = startAngle + (index * (endAngle - startAngle)) / resolution
+ const x = Math.cos(t) * radius
+ const y = Math.sin(t) * radius
const xMove = new THREE.Vector3(xAxis.x * x, xAxis.y * x, xAxis.z * x)
const yMove = new THREE.Vector3(yAxis.x * y, yAxis.y * y, yAxis.z * y)
@@ -657,7 +657,7 @@ export default class Coverter {
}
PointToVector3(obj, scale = true) {
- let conversionFactor = scale ? getConversionFactor(obj.units) : 1
+ const conversionFactor = scale ? getConversionFactor(obj.units) : 1
let v = null
if (obj.value) {
// Old point format based on value list
diff --git a/packages/viewer/src/modules/converter/MeshTriangulationHelper.js b/packages/viewer/src/modules/converter/MeshTriangulationHelper.js
index 3fabeff73..4c2daf13e 100644
--- a/packages/viewer/src/modules/converter/MeshTriangulationHelper.js
+++ b/packages/viewer/src/modules/converter/MeshTriangulationHelper.js
@@ -22,17 +22,17 @@ export default class MeshTriangulationHelper {
//Gets vertex from a relative vert index
function V(v) {
- let index = faces[asIndex(v)] * 3
+ const index = faces[asIndex(v)] * 3
return new Vector3(vertices[index], vertices[index + 1], vertices[index + 2])
}
- let triangleFaces = Array((n - 2) * 3)
+ const triangleFaces = Array((n - 2) * 3)
//Calculate face normal using the Newell Method
- let faceNormal = new Vector3(0, 0, 0)
+ const faceNormal = new Vector3(0, 0, 0)
for (let ii = n - 1, jj = 0; jj < n; ii = jj, jj++) {
- let iPos = V(ii)
- let jPos = V(jj)
+ const iPos = V(ii)
+ const jPos = V(jj)
faceNormal.x += (jPos.y - iPos.y) * (iPos.z + jPos.z) // projection on yz
faceNormal.y += (jPos.z - iPos.z) * (iPos.x + jPos.x) // projection on xz
faceNormal.z += (jPos.x - iPos.x) * (iPos.y + jPos.y) // projection on xy
@@ -107,9 +107,9 @@ export default class MeshTriangulationHelper {
*/
static testPointTriangle(v, a, b, c) {
function Test(_v, _a, _b) {
- let crossA = _v.cross(_a)
- let crossB = _v.cross(_b)
- let dotWithEpsilon = Number.EPSILON + crossA.dot(crossB)
+ const crossA = _v.cross(_a)
+ const crossB = _v.cross(_b)
+ const dotWithEpsilon = Number.EPSILON + crossA.dot(crossB)
return Math.sign(dotWithEpsilon) !== -1
}
@@ -129,7 +129,7 @@ export default class MeshTriangulationHelper {
* @returns {boolean} true if triangle is ccw
*/
static triangleIsCCW(referenceNormal, a, b, c) {
- let triangleNormal = c.sub(a).cross(b.sub(a))
+ const triangleNormal = c.sub(a).cross(b.sub(a))
triangleNormal.normalize()
return referenceNormal.dot(triangleNormal) > 0.0
}
diff --git a/packages/viewer/webpack.config.example.js b/packages/viewer/webpack.config.example.js
index ec7c2c2c3..6280904fa 100644
--- a/packages/viewer/webpack.config.example.js
+++ b/packages/viewer/webpack.config.example.js
@@ -4,7 +4,7 @@ const path = require('path')
const yargs = require('yargs')
const env = yargs.argv.env
-let filename = 'demo'
+const filename = 'demo'
let outputFile, mode
@@ -17,7 +17,7 @@ if (env === 'build') {
}
const config = {
- mode: mode,
+ mode,
entry: path.resolve(__dirname + '/src/app.js'),
target: 'web',
devtool: 'source-map',
diff --git a/packages/viewer/webpack.config.js b/packages/viewer/webpack.config.js
index 40ea736c7..7e83522ae 100644
--- a/packages/viewer/webpack.config.js
+++ b/packages/viewer/webpack.config.js
@@ -3,7 +3,7 @@ const path = require('path')
const yargs = require('yargs')
const env = yargs.argv.env
-let libraryName = 'Speckle'
+const libraryName = 'Speckle'
let outputFile, mode
@@ -16,7 +16,7 @@ if (env === 'build') {
}
const config = {
- mode: mode,
+ mode,
entry: path.resolve(__dirname + '/src/index.js'),
target: 'web',
devtool: 'source-map',
diff --git a/packages/webhook-service/src/main.js b/packages/webhook-service/src/main.js
index 4926acb60..cd857e3a7 100644
--- a/packages/webhook-service/src/main.js
+++ b/packages/webhook-service/src/main.js
@@ -10,7 +10,7 @@ const HEALTHCHECK_FILE_PATH = '/tmp/last_successful_query'
const { makeNetworkRequest } = require('./webhookCaller')
async function startTask() {
- let { rows } = await knex.raw(`
+ const { rows } = await knex.raw(`
UPDATE webhooks_events
SET
"status" = 1,
@@ -29,7 +29,7 @@ async function startTask() {
async function doTask(task) {
try {
- let { rows } = await knex.raw(
+ const { rows } = await knex.raw(
`
SELECT
ev.payload as evt,
@@ -41,25 +41,25 @@ async function doTask(task) {
`,
[task.id]
)
- let info = rows[0]
+ const info = rows[0]
if (!info) {
throw new Error('Internal error: DB inconsistent')
}
- let fullPayload = JSON.parse(info.evt)
+ const fullPayload = JSON.parse(info.evt)
- let postData = { payload: info.evt }
+ const postData = { payload: info.evt }
- let signature = crypto
+ const signature = crypto
.createHmac('sha256', info.wh_secret || '')
.update(postData.payload)
.digest('hex')
- let postHeaders = { 'X-WEBHOOK-SIGNATURE': signature }
+ const postHeaders = { 'X-WEBHOOK-SIGNATURE': signature }
console.log(
`Callin webhook ${fullPayload.streamId} : ${fullPayload.event.event_name} at ${fullPayload.webhook.url}...`
)
- let result = await makeNetworkRequest({
+ const result = await makeNetworkRequest({
url: info.wh_url,
data: postData,
headersData: postHeaders
@@ -103,7 +103,7 @@ async function tick() {
}
try {
- let task = await startTask()
+ const task = await startTask()
fs.writeFile(HEALTHCHECK_FILE_PATH, '' + Date.now(), () => {})
diff --git a/packages/webhook-service/src/webhookCaller.js b/packages/webhook-service/src/webhookCaller.js
index cf9ac8feb..71691ff1c 100644
--- a/packages/webhook-service/src/webhookCaller.js
+++ b/packages/webhook-service/src/webhookCaller.js
@@ -4,12 +4,12 @@ const dns = require('dns')
const isIpPrivate = require('private-ip')
const fetch = require('node-fetch')
-let debug = require('debug')('speckle')
+const debug = require('debug')('speckle')
async function isLocalNetworkUrl(url) {
- let parsedUrl = new URL(url)
- let hostname = parsedUrl.hostname
- let ip = await new Promise((resolve, reject) => {
+ const parsedUrl = new URL(url)
+ const hostname = parsedUrl.hostname
+ const ip = await new Promise((resolve, reject) => {
dns.lookup(hostname, (err, addr) => {
if (err) {
reject(err)
@@ -34,32 +34,32 @@ async function makeNetworkRequest({ url, data, headersData }) {
}
}
- let httpSuccessCodes = [200]
- let headers = { 'Content-Type': 'application/json' }
- for (let k in headersData) headers[k] = headersData[k]
+ const httpSuccessCodes = [200]
+ const headers = { 'Content-Type': 'application/json' }
+ for (const k in headersData) headers[k] = headersData[k]
debug('POST request to:', url)
- let t0 = Date.now()
+ const t0 = Date.now()
try {
- let response = await fetch(url, {
+ const response = await fetch(url, {
method: 'POST',
body: JSON.stringify(data),
- headers: headers,
+ headers,
follow: 2, // follow max 2 redirects (fetch defaults to 20)
timeout: 10 * 1000, // timeout after 10sec (defauls to no timeout)
size: 500 * 1000 // 500kb max response size, to accomodate various error responses (defaults to no limit)
}).then(async (res) => ({ status: res.status, body: await res.text() }))
//console.log( 'Server response:', response )
- let error =
+ const error =
httpSuccessCodes.indexOf(response.status) === -1
? `HTTP response code: ${response.status}`
: ''
- let success = httpSuccessCodes.indexOf(response.status) !== -1
+ const success = httpSuccessCodes.indexOf(response.status) !== -1
return {
- success: success,
- error: error,
+ success,
+ error,
duration: (Date.now() - t0) / 1000,
responseCode: response.status,
responseBody: response.body