UNPKG

@azure-tools/uri

Version:
58 lines 1.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExistsUri = exports.ReadUri = exports.existsUri = exports.readUri = void 0; const getUri = require("get-uri"); const uri_manipulation_1 = require("./uri-manipulation"); function stripBom(text) { if (text.charCodeAt(0) === 0xfeff) { return text.slice(1); } return text; } function getUriAsync(uri, options) { // headers being passed is not described in the typing but does works. return getUri(uri, options); } /** * Loads a UTF8 string from given URI. * @uri to load. Can be a remote url or a local file path(using file: protocol). */ async function readUri(uri, headers = {}) { const actualUri = uri_manipulation_1.toRawDataUrl(uri); const readable = await getUriAsync(actualUri, { headers: headers }); const readAll = new Promise(function (resolve, reject) { let result = Buffer.alloc(0); readable.on("data", (data) => (result = Buffer.concat([result, data]))); readable.on("end", () => resolve(result)); readable.on("error", (err) => reject(err)); }); const result = await readAll; // make sure we can read 4 bytes into the file before trying to fix it! if (result.length > 3) { // fix up UTF16le files if (result.readUInt16LE(0) === 65533 && result.readUInt16LE(1) === 65533) { return stripBom(result.slice(2).toString("utf16le")); } } return stripBom(result.toString("utf8")); } exports.readUri = readUri; async function existsUri(uri) { try { await readUri(uri); return true; } catch (e) { return false; } } exports.existsUri = existsUri; /** * @deprecated use readUri instead */ exports.ReadUri = readUri; /** * @deprecated use existsUri instead */ exports.ExistsUri = existsUri; //# sourceMappingURL=data-acquisition.js.map