UNPKG

@minilibs/ip2geo

Version:

Ip to Geo location instantly ⚡

54 lines (47 loc) 1.68 kB
import { __require as requirePonyfill_es2018 } from '../web-streams-polyfill/dist/ponyfill.es2018.js'; /* c8 ignore start */ // 64 KiB (same size chrome slice theirs blob into Uint8array's) const POOL_SIZE = 65536; if (!globalThis.ReadableStream) { // `node:stream/web` got introduced in v16.5.0 as experimental // and it's preferred over the polyfilled version. So we also // suppress the warning that gets emitted by NodeJS for using it. try { const process = require('node:process'); const { emitWarning } = process; try { process.emitWarning = () => {}; Object.assign(globalThis, require('node:stream/web')); process.emitWarning = emitWarning; } catch (error) { process.emitWarning = emitWarning; throw error } } catch (error) { // fallback to polyfill implementation Object.assign(globalThis, requirePonyfill_es2018()); } } try { // Don't use node: prefix for this, require+node: is not supported until node v14.14 // Only `import()` can use prefix in 12.20 and later const { Blob } = require('buffer'); if (Blob && !Blob.prototype.stream) { Blob.prototype.stream = function name (params) { let position = 0; const blob = this; return new ReadableStream({ type: 'bytes', async pull (ctrl) { const chunk = blob.slice(position, Math.min(blob.size, position + POOL_SIZE)); const buffer = await chunk.arrayBuffer(); position += buffer.byteLength; ctrl.enqueue(new Uint8Array(buffer)); if (position === blob.size) { ctrl.close(); } } }) }; } } catch (error) {}