renovate
Version:
Automated dependency updates. Flexible so you don't need to be.
41 lines (40 loc) • 1.3 kB
JavaScript
import { regEx } from "../../../util/regex.js";
import { CdnjsDatasource } from "../../datasource/cdnjs/index.js";
import { cloudflareUrlRegex } from "../cdnurl/extract.js";
//#region lib/modules/manager/html/extract.ts
const regex = regEx(/<\s*(script|link)\s+[^>]*?\/?>/i);
const integrityRegex = regEx(/\s+integrity\s*=\s*("|')(?<currentDigest>[^"']+)/);
function extractDep(tag) {
const match = cloudflareUrlRegex.exec(tag);
if (!match?.groups) return null;
const { depName, currentValue, asset } = match.groups;
const dep = {
datasource: CdnjsDatasource.id,
depName,
packageName: `${depName}/${asset}`,
currentValue,
replaceString: tag
};
const integrityMatch = integrityRegex.exec(tag);
if (integrityMatch?.groups) dep.currentDigest = integrityMatch.groups.currentDigest;
return dep;
}
function extractPackageFile(content) {
const deps = [];
let rest = content;
let match = regex.exec(rest);
let offset = 0;
while (match) {
const [replaceString] = match;
offset += match.index + replaceString.length;
rest = content.slice(offset);
match = regex.exec(rest);
const dep = extractDep(replaceString);
if (dep) deps.push(dep);
}
if (!deps.length) return null;
return { deps };
}
//#endregion
export { extractPackageFile };
//# sourceMappingURL=extract.js.map