You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							57 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							57 lines
						
					
					
						
							1.3 KiB
						
					
					
				// @flow
 | 
						|
 | 
						|
// based on https://github.com/styled-components/styled-components/blob/fcf6f3804c57a14dd7984dfab7bc06ee2edca044/src/utils/error.js
 | 
						|
 | 
						|
declare var preval: Function
 | 
						|
 | 
						|
/**
 | 
						|
 * Parse errors.md and turn it into a simple hash of code: message
 | 
						|
 * @private
 | 
						|
 */
 | 
						|
const ERRORS = preval`
 | 
						|
  const fs = require('fs');
 | 
						|
  const md = fs.readFileSync(__dirname + '/errors.md', 'utf8');
 | 
						|
  module.exports = md.split(/^#/gm).slice(1).reduce((errors, str) => {
 | 
						|
    const [, code, message] = str.split(/^.*?(\\d+)\\s*\\n/)
 | 
						|
    errors[code] = message
 | 
						|
    return errors;
 | 
						|
  }, {});
 | 
						|
`
 | 
						|
 | 
						|
/**
 | 
						|
 * super basic version of sprintf
 | 
						|
 * @private
 | 
						|
 */
 | 
						|
function format(...args) {
 | 
						|
  let a = args[0]
 | 
						|
  const b = []
 | 
						|
  let c
 | 
						|
 | 
						|
  for (c = 1; c < args.length; c += 1) {
 | 
						|
    b.push(args[c])
 | 
						|
  }
 | 
						|
 | 
						|
  b.forEach(d => {
 | 
						|
    a = a.replace(/%[a-z]/, d)
 | 
						|
  })
 | 
						|
 | 
						|
  return a
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Create an error file out of errors.md for development and a simple web link to the full errors
 | 
						|
 * in production mode.
 | 
						|
 * @private
 | 
						|
 */
 | 
						|
export default class PolishedError extends Error {
 | 
						|
  constructor(code: string | number, ...args: Array<any>) {
 | 
						|
    if (process.env.NODE_ENV === 'production') {
 | 
						|
      super(
 | 
						|
        `An error occurred. See https://github.com/styled-components/polished/blob/main/src/internalHelpers/errors.md#${code} for more information.`,
 | 
						|
      )
 | 
						|
    } else {
 | 
						|
      super(format(ERRORS[code], ...args))
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |