@azure-tools/uri
Version:
Common URI handling code.
58 lines • 1.9 kB
JavaScript
;
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