mirror of
https://github.com/SukkaW/Surge.git
synced 2025-12-21 05:40:29 +08:00
79 lines
3.3 KiB
JavaScript
79 lines
3.3 KiB
JavaScript
'use strict';Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});const fetchTextByLine=require('../../_virtual/fetch-text-by-line.cjs'),require$$1=require('node:fs'),require$$1$1=require('node:readline'),textLineTransformStream=require('./text-line-transform-stream.cjs'),require$$0=require('node:stream/web'),processLine=require('./process-line.cjs'),fetchRetry=require('./fetch-retry.cjs'),require$$6=require('foxts/guard');var hasRequiredFetchTextByLine;
|
|
|
|
function requireFetchTextByLine () {
|
|
if (hasRequiredFetchTextByLine) return fetchTextByLine.__exports;
|
|
hasRequiredFetchTextByLine = 1;
|
|
(function (exports) {
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
function _export(target, all) {
|
|
for(var name in all)Object.defineProperty(target, name, {
|
|
enumerable: true,
|
|
get: all[name]
|
|
});
|
|
}
|
|
_export(exports, {
|
|
createReadlineInterfaceFromResponse: function() {
|
|
return createReadlineInterfaceFromResponse;
|
|
},
|
|
fetchRemoteTextByLine: function() {
|
|
return fetchRemoteTextByLine;
|
|
},
|
|
readFileByLine: function() {
|
|
return readFileByLine;
|
|
},
|
|
readFileIntoProcessedArray: function() {
|
|
return readFileIntoProcessedArray;
|
|
}
|
|
});
|
|
const _nodefs = /*#__PURE__*/ _interop_require_default(require$$1);
|
|
const _nodereadline = /*#__PURE__*/ _interop_require_default(require$$1$1);
|
|
const _textlinetransformstream = /*@__PURE__*/ textLineTransformStream.__require();
|
|
const _web = require$$0;
|
|
const _processline = /*@__PURE__*/ processLine.__require();
|
|
const _fetchretry = /*@__PURE__*/ fetchRetry.__require();
|
|
const _guard = require$$6;
|
|
function _interop_require_default(obj) {
|
|
return obj && obj.__esModule ? obj : {
|
|
default: obj
|
|
};
|
|
}
|
|
function readFileByLine(file) {
|
|
return _nodereadline.default.createInterface({
|
|
input: _nodefs.default.createReadStream(file /* , { encoding: 'utf-8' } */ ),
|
|
crlfDelay: Infinity
|
|
});
|
|
}
|
|
const createReadlineInterfaceFromResponse = (resp, processLine = false)=>{
|
|
(0, _guard.invariant)(resp.body, 'Failed to fetch remote text');
|
|
if ('bodyUsed' in resp && resp.bodyUsed) {
|
|
throw new Error('Body has already been consumed.');
|
|
}
|
|
let webStream;
|
|
if ('pipeThrough' in resp.body) {
|
|
webStream = resp.body;
|
|
} else {
|
|
throw new TypeError('Invalid response body!');
|
|
}
|
|
const resultStream = webStream.pipeThrough(new _web.TextDecoderStream()).pipeThrough(new _textlinetransformstream.TextLineStream());
|
|
if (processLine) {
|
|
return resultStream.pipeThrough(new _processline.ProcessLineStream());
|
|
}
|
|
return resultStream;
|
|
};
|
|
function fetchRemoteTextByLine(url, processLine = false) {
|
|
return (0, _fetchretry.$$fetch)(url).then((resp)=>createReadlineInterfaceFromResponse(resp, processLine));
|
|
}
|
|
async function readFileIntoProcessedArray(file/* | FileHandle */ ) {
|
|
const results = [];
|
|
for await (const line of readFileByLine(file)){
|
|
if ((0, _processline.processLine)(line)) {
|
|
results.push(line);
|
|
}
|
|
}
|
|
return results;
|
|
}
|
|
} (fetchTextByLine.__exports));
|
|
return fetchTextByLine.__exports;
|
|
}exports.__require=requireFetchTextByLine; |