UNPKG

@roots/bud-client

Version:

Client scripts for @roots/bud

34 lines (31 loc) 1.13 kB
type Target = HTMLAnchorElement | HTMLFormElement | HTMLLinkElement type ElementTuple = [HTMLCollectionOf<Target>, any] const intercept = (...args: [string, string]) => { args.every(arg => typeof arg === `string`) && setInterval( () => [ [document.getElementsByTagName(`a`), `href`], [document.getElementsByTagName(`link`), `href`], ] .map( ([elements, attribute]: ElementTuple): [ Array<Target>, any, ] => [Array.from(elements), attribute], ) .forEach(([elements, attribute]: [Array<Target>, any]) => elements .filter(el => el.hasAttribute(attribute)) .filter(el => !el.hasAttribute(`__bud_processed`)) .filter(el => el.getAttribute(attribute).startsWith(args[0])) .map(el => { const value = el.getAttribute(attribute).replace(...args) el.setAttribute(attribute, value) el.toggleAttribute(`__bud_processed`) }), ), 1000, ) } export default intercept