* Add eslint-plugin-jsx-a11y. * Fix npm script. * Adjust npm scripts so test also runs lint. * Fix existing lint errors. * Don't break on a11y issues. * Add role and tabIndex. * Add vim and Mac files to .gitignore and .dockerignore. * Handle htmlFor (partially), a that's actually a button. * Fix missing tabIndex. * Add cursor:pointer to load-more * Revert change to load_more. * Fixes based on review. * Update yarn.lock. * Don't try to install fsevents on Linux (hides warning noise).
		
			
				
	
	
		
			34 lines
		
	
	
		
			778 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			778 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import Link from 'http-link-header';
 | 
						|
import querystring from 'querystring';
 | 
						|
 | 
						|
Link.parseAttrs = (link, parts) => {
 | 
						|
  let match = null
 | 
						|
  let attr  = ''
 | 
						|
  let value = ''
 | 
						|
  let attrs = ''
 | 
						|
 | 
						|
  let uriAttrs = /<(.*)>;\s*(.*)/gi.exec(parts)
 | 
						|
 | 
						|
  if(uriAttrs) {
 | 
						|
    attrs = uriAttrs[2]
 | 
						|
    link  = Link.parseParams(link, uriAttrs[1])
 | 
						|
  }
 | 
						|
 | 
						|
  while(match = Link.attrPattern.exec(attrs)) { // eslint-disable-line no-cond-assign
 | 
						|
    attr  = match[1].toLowerCase()
 | 
						|
    value = match[4] || match[3] || match[2]
 | 
						|
 | 
						|
    if( /\*$/.test(attr)) {
 | 
						|
      Link.setAttr(link, attr, Link.parseExtendedValue(value))
 | 
						|
    } else if(/%/.test(value)) {
 | 
						|
      Link.setAttr(link, attr, querystring.decode(value))
 | 
						|
    } else {
 | 
						|
      Link.setAttr(link, attr, value)
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  return link
 | 
						|
};
 | 
						|
 | 
						|
export default Link;
 |