UNPKG

edge-mock

Version:

types for testing an developer edge applications

91 lines 2.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.escape_regex = exports.getType = exports.catArraysBufferViews = exports.rsFromArray = exports.rsToArrayBufferView = exports.rsToString = exports.decode = exports.encode = void 0; const util_1 = require("util"); const models_1 = require("./models"); const encoder = new util_1.TextEncoder(); const decoder = new util_1.TextDecoder(); function encode(input) { return encoder.encode(input); } exports.encode = encode; function decode(input) { return decoder.decode(input); } exports.decode = decode; async function rsToString(rs) { const ab = await rsToArrayBufferView(rs); return decode(ab); } exports.rsToString = rsToString; async function rsToArrayBufferView(rs) { const reader = rs.getReader(); const chunks = []; while (true) { const { done, value } = await reader.read(); if (done) { return catArraysBufferViews(chunks); } else { if (typeof value == 'string') { chunks.push(encode(value)); } else if ('buffer' in value) { chunks.push(value); } else if ('byteLength' in value) { chunks.push(new Uint8Array(value)); } else { throw new TypeError(`Unexpected type "${getType(value)}", expected string, ArrayBuffer or Uint8Array`); } } } } exports.rsToArrayBufferView = rsToArrayBufferView; function rsFromArray(array) { const iterator = array[Symbol.iterator](); return new models_1.EdgeReadableStream({ pull(controller) { const { value, done } = iterator.next(); if (done) { controller.close(); } else { controller.enqueue(value); } }, }); } exports.rsFromArray = rsFromArray; function catArraysBufferViews(arrays) { // TODO would Buffer.concat be faster here? const byteLength = arrays.reduce((byteLength, a) => byteLength + a.byteLength, 0); const combinedArray = new Uint8Array(byteLength); let pos = 0; for (const a of arrays) { combinedArray.set(a, pos); pos += a.byteLength; } return combinedArray; } exports.catArraysBufferViews = catArraysBufferViews; function getType(obj) { if (obj === null) { return 'Null'; } else if (obj === undefined) { return 'Undefined'; } else { return Object.getPrototypeOf(obj).constructor.name; } } exports.getType = getType; /* * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping * $& means the whole matched string */ const escape_regex = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); exports.escape_regex = escape_regex; //# sourceMappingURL=utils.js.map