* 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;
 |