| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | // @flow// based on https://github.com/styled-components/styled-components/blob/fcf6f3804c57a14dd7984dfab7bc06ee2edca044/src/utils/error.jsdeclare 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))    }  }}
 |