|
|
"use strict"; |
|
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
|
exports.getDefaultTask = getDefaultTask; |
|
|
const config_js_1 = require("../config.js"); |
|
|
const isUrl_js_1 = require("./isUrl.js"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const taskCache = new Map(); |
|
|
const CACHE_DURATION = 10 * 60 * 1000; |
|
|
const MAX_CACHE_ITEMS = 1000; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async function getDefaultTask(model, accessToken, options) { |
|
|
if ((0, isUrl_js_1.isUrl)(model)) { |
|
|
return null; |
|
|
} |
|
|
const key = `${model}:${accessToken}`; |
|
|
let cachedTask = taskCache.get(key); |
|
|
if (cachedTask && cachedTask.date < new Date(Date.now() - CACHE_DURATION)) { |
|
|
taskCache.delete(key); |
|
|
cachedTask = undefined; |
|
|
} |
|
|
if (cachedTask === undefined) { |
|
|
const modelTask = await (options?.fetch ?? fetch)(`${config_js_1.HF_HUB_URL}/api/models/${model}?expand[]=pipeline_tag`, { |
|
|
headers: accessToken ? { Authorization: `Bearer ${accessToken}` } : {}, |
|
|
}) |
|
|
.then((resp) => resp.json()) |
|
|
.then((json) => json.pipeline_tag) |
|
|
.catch(() => null); |
|
|
if (!modelTask) { |
|
|
return null; |
|
|
} |
|
|
cachedTask = { task: modelTask, date: new Date() }; |
|
|
taskCache.set(key, { task: modelTask, date: new Date() }); |
|
|
if (taskCache.size > MAX_CACHE_ITEMS) { |
|
|
|
|
|
taskCache.delete(taskCache.keys().next().value); |
|
|
} |
|
|
} |
|
|
return cachedTask.task; |
|
|
} |
|
|
|