35 lines
939 B
TypeScript
35 lines
939 B
TypeScript
export async function getBufferFromStream (stream) {
|
|
return new Promise((resolve, reject) => {
|
|
let buffer = Buffer.from([])
|
|
stream.on('data', buf => {
|
|
buffer = Buffer.concat([buffer, buf])
|
|
})
|
|
stream.on('end', () => resolve(buffer))
|
|
stream.on('error', reject)
|
|
})
|
|
}
|
|
|
|
export function openURL (url, newTab = true) {
|
|
if (newTab) {
|
|
window.open(url, '_blank', 'noopener,noreferrer')
|
|
} else {
|
|
window.open(url, '_self')
|
|
}
|
|
}
|
|
|
|
export const isMobile = () => {
|
|
return window.matchMedia('(pointer: coarse)').matches || navigator.userAgent.includes('Mobile')
|
|
}
|
|
|
|
export function chunkPos (pos: { x: number, z: number }) {
|
|
const x = Math.floor(pos.x / 16)
|
|
const z = Math.floor(pos.z / 16)
|
|
return [x, z]
|
|
}
|
|
|
|
export function sectionPos (pos: { x: number, y: number, z: number }) {
|
|
const x = Math.floor(pos.x / 16)
|
|
const y = Math.floor(pos.y / 16)
|
|
const z = Math.floor(pos.z / 16)
|
|
return [x, y, z]
|
|
}
|