first
This commit is contained in:
94
node_modules/@11ty/eleventy-fetch/eleventy-fetch.js
generated
vendored
Normal file
94
node_modules/@11ty/eleventy-fetch/eleventy-fetch.js
generated
vendored
Normal file
@ -0,0 +1,94 @@
|
||||
const { default: PQueue } = require("p-queue");
|
||||
const debug = require("debug")("Eleventy:Fetch");
|
||||
|
||||
const Sources = require("./src/Sources.js");
|
||||
const RemoteAssetCache = require("./src/RemoteAssetCache.js");
|
||||
const AssetCache = require("./src/AssetCache.js");
|
||||
const DirectoryManager = require("./src/DirectoryManager.js");
|
||||
|
||||
const globalOptions = {
|
||||
type: "buffer",
|
||||
directory: ".cache",
|
||||
concurrency: 10,
|
||||
fetchOptions: {},
|
||||
dryRun: false, // don’t write anything to the file system
|
||||
|
||||
// *does* affect cache key hash
|
||||
removeUrlQueryParams: false,
|
||||
|
||||
// runs after removeUrlQueryParams, does not affect cache key hash
|
||||
// formatUrlForDisplay: function(url) {
|
||||
// return url;
|
||||
// },
|
||||
|
||||
verbose: false, // Changed in 3.0+
|
||||
|
||||
hashLength: 30,
|
||||
};
|
||||
|
||||
/* Queue */
|
||||
let queue = new PQueue({
|
||||
concurrency: globalOptions.concurrency,
|
||||
});
|
||||
|
||||
queue.on("active", () => {
|
||||
debug(`Concurrency: ${queue.concurrency}, Size: ${queue.size}, Pending: ${queue.pending}`);
|
||||
});
|
||||
|
||||
let instCache = {};
|
||||
|
||||
let directoryManager = new DirectoryManager();
|
||||
|
||||
function createRemoteAssetCache(source, rawOptions = {}) {
|
||||
if (!Sources.isFullUrl(source) && !Sources.isValidSource(source)) {
|
||||
return Promise.reject(new Error("Invalid source. Received: " + source));
|
||||
}
|
||||
|
||||
let options = Object.assign({}, globalOptions, rawOptions);
|
||||
let sourceKey = RemoteAssetCache.getRequestId(source, options);
|
||||
if(!sourceKey) {
|
||||
return Promise.reject(Sources.getInvalidSourceError(source));
|
||||
}
|
||||
|
||||
if(instCache[sourceKey]) {
|
||||
return instCache[sourceKey];
|
||||
}
|
||||
|
||||
let inst = new RemoteAssetCache(source, options.directory, options);
|
||||
inst.setQueue(queue);
|
||||
inst.setDirectoryManager(directoryManager);
|
||||
|
||||
instCache[sourceKey] = inst;
|
||||
|
||||
return inst;
|
||||
}
|
||||
|
||||
module.exports = function (source, options) {
|
||||
let instance = createRemoteAssetCache(source, options);
|
||||
return instance.queue();
|
||||
};
|
||||
|
||||
Object.defineProperty(module.exports, "concurrency", {
|
||||
get: function () {
|
||||
return queue.concurrency;
|
||||
},
|
||||
set: function (concurrency) {
|
||||
queue.concurrency = concurrency;
|
||||
},
|
||||
});
|
||||
|
||||
module.exports.Fetch = createRemoteAssetCache;
|
||||
|
||||
// Deprecated API kept for backwards compat, instead: use default export directly.
|
||||
// Intentional: queueCallback is ignored here
|
||||
module.exports.queue = function(source, queueCallback, options) {
|
||||
let instance = createRemoteAssetCache(source, options);
|
||||
return instance.queue();
|
||||
};
|
||||
|
||||
module.exports.Util = {
|
||||
isFullUrl: Sources.isFullUrl,
|
||||
};
|
||||
module.exports.RemoteAssetCache = RemoteAssetCache;
|
||||
module.exports.AssetCache = AssetCache;
|
||||
module.exports.Sources = Sources;
|
||||
Reference in New Issue
Block a user