fix: update syntax, use inbuilt buffer funcs
Signed-off-by: Andrew Calcutt <acalcutt@techidiots.net>
This commit is contained in:
parent
a24a48bd1e
commit
d95e8a1f89
1 changed files with 10 additions and 27 deletions
|
|
@ -2,7 +2,7 @@ import fs from 'node:fs';
|
||||||
import PMTiles from 'pmtiles';
|
import PMTiles from 'pmtiles';
|
||||||
import { isValidHttpUrl } from './utils.js';
|
import { isValidHttpUrl } from './utils.js';
|
||||||
|
|
||||||
const PMTilesFileSource = class {
|
class PMTilesFileSource {
|
||||||
constructor(fd) {
|
constructor(fd) {
|
||||||
this.fd = fd;
|
this.fd = fd;
|
||||||
}
|
}
|
||||||
|
|
@ -12,11 +12,12 @@ const PMTilesFileSource = class {
|
||||||
async getBytes(offset, length) {
|
async getBytes(offset, length) {
|
||||||
const buffer = Buffer.alloc(length);
|
const buffer = Buffer.alloc(length);
|
||||||
await ReadFileBytes(this.fd, buffer, offset);
|
await ReadFileBytes(this.fd, buffer, offset);
|
||||||
return { data: BufferToArrayBuffer(buffer) };
|
const ab = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)
|
||||||
|
return { data: ab };
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const ReadFileBytes = async (fd, buffer, offset) => {
|
async function ReadFileBytes(fd, buffer, offset) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
fs.read(fd, buffer, 0, buffer.length, offset, (err) => {
|
fs.read(fd, buffer, 0, buffer.length, offset, (err) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
|
@ -27,7 +28,7 @@ const ReadFileBytes = async (fd, buffer, offset) => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
export const PMtilesOpen = (FilePath) => {
|
export function PMtilesOpen(FilePath) {
|
||||||
let pmtiles = undefined;
|
let pmtiles = undefined;
|
||||||
let fd = undefined;
|
let fd = undefined;
|
||||||
|
|
||||||
|
|
@ -42,11 +43,11 @@ export const PMtilesOpen = (FilePath) => {
|
||||||
return { pmtiles: pmtiles, fd: fd };
|
return { pmtiles: pmtiles, fd: fd };
|
||||||
};
|
};
|
||||||
|
|
||||||
export const PMtilesClose = (fd) => {
|
export function PMtilesClose(fd) {
|
||||||
fs.closeSync(fd);
|
fs.closeSync(fd);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const GetPMtilesInfo = async (pmtiles) => {
|
export async function GetPMtilesInfo(pmtiles) {
|
||||||
const header = await pmtiles.getHeader();
|
const header = await pmtiles.getHeader();
|
||||||
const metadata = await pmtiles.getMetadata();
|
const metadata = await pmtiles.getMetadata();
|
||||||
|
|
||||||
|
|
@ -83,19 +84,19 @@ export const GetPMtilesInfo = async (pmtiles) => {
|
||||||
return metadata;
|
return metadata;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const GetPMtilesTile = async (pmtiles, z, x, y) => {
|
export async function GetPMtilesTile(pmtiles, z, x, y) {
|
||||||
const header = await pmtiles.getHeader();
|
const header = await pmtiles.getHeader();
|
||||||
const TileType = GetPmtilesTileType(header.tileType);
|
const TileType = GetPmtilesTileType(header.tileType);
|
||||||
let zxyTile = await pmtiles.getZxy(z, x, y);
|
let zxyTile = await pmtiles.getZxy(z, x, y);
|
||||||
if (zxyTile && zxyTile.data) {
|
if (zxyTile && zxyTile.data) {
|
||||||
zxyTile = ArrayBufferToBuffer(zxyTile.data);
|
zxyTile = Buffer.from(zxyTile.data);
|
||||||
} else {
|
} else {
|
||||||
zxyTile = undefined;
|
zxyTile = undefined;
|
||||||
}
|
}
|
||||||
return { data: zxyTile, header: TileType.header };
|
return { data: zxyTile, header: TileType.header };
|
||||||
};
|
};
|
||||||
|
|
||||||
const GetPmtilesTileType = (typenum) => {
|
function GetPmtilesTileType(typenum) {
|
||||||
let head = {};
|
let head = {};
|
||||||
let tileType;
|
let tileType;
|
||||||
switch (typenum) {
|
switch (typenum) {
|
||||||
|
|
@ -125,21 +126,3 @@ const GetPmtilesTileType = (typenum) => {
|
||||||
}
|
}
|
||||||
return { type: tileType, header: head };
|
return { type: tileType, header: head };
|
||||||
};
|
};
|
||||||
|
|
||||||
const BufferToArrayBuffer = (buffer) => {
|
|
||||||
const arrayBuffer = new ArrayBuffer(buffer.length);
|
|
||||||
const view = new Uint8Array(arrayBuffer);
|
|
||||||
for (let i = 0; i < buffer.length; ++i) {
|
|
||||||
view[i] = buffer[i];
|
|
||||||
}
|
|
||||||
return arrayBuffer;
|
|
||||||
};
|
|
||||||
|
|
||||||
const ArrayBufferToBuffer = (array_buffer) => {
|
|
||||||
var buffer = Buffer.alloc(array_buffer.byteLength);
|
|
||||||
var view = new Uint8Array(array_buffer);
|
|
||||||
for (var i = 0; i < buffer.length; ++i) {
|
|
||||||
buffer[i] = view[i];
|
|
||||||
}
|
|
||||||
return buffer;
|
|
||||||
};
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue