{"version":3,"sources":["../node_modules/ms/index.js","../node_modules/debug/src/common.js","../node_modules/debug/src/browser.js","../node_modules/debug/src/node.js","../node_modules/debug/src/index.js","../src/index.ts","../src/parse-kicad-mod-to-kicad-json.ts","../src/kicad-zod.ts","../src/get-attr.ts","../src/convert-kicad-json-to-tscircuit-soup.ts","../src/parse-kicad-mod-to-tscircuit-soup.ts"],"sourcesContent":["/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n  return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n *   $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = `  ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","export { parseKicadModToKicadJson } from \"./parse-kicad-mod-to-kicad-json\"\nexport { parseKicadModToTscircuitSoup } from \"./parse-kicad-mod-to-tscircuit-soup\"\nexport { convertKicadJsonToTsCircuitSoup } from \"./convert-kicad-json-to-tscircuit-soup\"\n","import parseSExpression from \"s-expression\"\nimport {\n  attributes_def,\n  kicad_mod_json_def,\n  pad_def,\n  type FpLine,\n  type FpText,\n  type KicadModJson,\n  type Pad,\n  type Property,\n} from \"./kicad-zod\"\nimport { formatAttr, getAttr } from \"./get-attr\"\nimport Debug from \"debug\"\n\nconst debug = Debug(\"kicad-mod-converter\")\n\nexport const parseKicadModToKicadJson = (fileContent: string): KicadModJson => {\n  const kicadSExpr = parseSExpression(fileContent)\n\n  const footprintName = kicadSExpr[1].valueOf()\n\n  const topLevelAttributes: any = {}\n\n  const simpleTopLevelAttributes = Object.entries(kicad_mod_json_def.shape)\n    .filter(\n      ([attributeKey, def]) =>\n        def._def.typeName === \"ZodString\" || attributeKey === \"tags\"\n    )\n    .map(([attributeKey]) => attributeKey)\n  for (const kicadSExprRow of kicadSExpr.slice(2)) {\n    if (!simpleTopLevelAttributes.includes(kicadSExprRow[0])) continue\n\n    const key = kicadSExprRow[0].valueOf()\n    const val = formatAttr(kicadSExprRow.slice(1), key)\n    topLevelAttributes[key] = val\n  }\n\n  const properties = kicadSExpr\n    .slice(2)\n    .filter((row: any[]) => row[0] === \"property\")\n    .map((row: any) => {\n      const key = row[1].valueOf()\n      const val = row[2].valueOf()\n      const attributes = attributes_def.parse(\n        row.slice(3).reduce((acc: any, attrAr: any[]) => {\n          const attrKey = attrAr[0].valueOf()\n          acc[attrKey] = formatAttr(attrAr.slice(1), attrKey)\n          return acc\n        }, {} as any)\n      )\n\n      return {\n        key,\n        val,\n        attributes,\n      } as Property\n    })\n\n  const padRows = kicadSExpr.slice(2).filter((row: any[]) => row[0] === \"pad\")\n\n  const pads: Array<Pad> = []\n\n  for (const row of padRows) {\n    const at = getAttr(row, \"at\")\n    const size = getAttr(row, \"size\")\n    let layers = getAttr(row, \"layers\")\n    if (Array.isArray(layers)) {\n      layers = layers.map((layer) => layer.valueOf())\n    } else if (typeof layers === \"string\") {\n      layers = [layers]\n    } else if (!layers) {\n      layers = []\n    }\n\n    const roundrect_rratio = getAttr(row, \"roundrect_rratio\")\n    const uuid = getAttr(row, \"uuid\")\n    const padRaw = {\n      name: row[1].valueOf(),\n      pad_type: row[2].valueOf(),\n      pad_shape: row[3].valueOf(),\n      at,\n      size,\n      layers,\n      roundrect_rratio,\n      uuid,\n    }\n\n    debug(`attempting to parse pad: ${JSON.stringify(padRaw, null, \"  \")}`)\n    pads.push(pad_def.parse(padRaw))\n  }\n\n  const fp_texts_rows = kicadSExpr\n    .slice(2)\n    .filter((row: any[]) => row[0] === \"fp_text\")\n\n  const fp_texts: FpText[] = []\n\n  for (const fp_text_row of fp_texts_rows) {\n    const text = fp_text_row[1].valueOf()\n    const at = getAttr(fp_text_row, \"at\")\n    const layer = getAttr(fp_text_row, \"layer\")\n    const uuid = getAttr(fp_text_row, \"uuid\")\n    const effects = getAttr(fp_text_row, \"effects\")\n\n    fp_texts.push({\n      fp_text_type: \"user\",\n      text,\n      at,\n      layer,\n      uuid,\n      effects,\n    })\n  }\n\n  const fp_lines: FpLine[] = []\n\n  const fp_lines_rows = kicadSExpr\n    .slice(2)\n    .filter((row: any[]) => row[0] === \"fp_line\")\n\n  for (const fp_line_row of fp_lines_rows) {\n    const start = getAttr(fp_line_row, \"start\")\n    const end = getAttr(fp_line_row, \"end\")\n    const stroke = getAttr(fp_line_row, \"stroke\")\n    const layer = getAttr(fp_line_row, \"layer\")\n    const uuid = getAttr(fp_line_row, \"uuid\")\n\n    fp_lines.push({\n      start,\n      end,\n      stroke,\n      layer,\n      uuid,\n    })\n  }\n\n  return kicad_mod_json_def.parse({\n    footprint_name: footprintName,\n    ...topLevelAttributes,\n    properties,\n    fp_lines,\n    fp_texts,\n    pads,\n  })\n}\n","import { z } from \"zod\"\n\nexport const point2 = z.tuple([z.number(), z.number()])\nexport const point3 = z.tuple([z.number(), z.number(), z.number()])\nexport const point = z.union([point2, point3])\n\nexport const attributes_def = z\n  .object({\n    at: point,\n    size: point2,\n    layers: z.array(z.string()),\n    roundrect_rratio: z.number(),\n    uuid: z.string(),\n  })\n  .partial()\n\nexport const property_def = z.object({\n  key: z.string(),\n  val: z.string(),\n  attributes: attributes_def,\n})\n\nexport const pad_def = z.object({\n  name: z.string(),\n  pad_type: z.enum([\"thru_hole\", \"smd\", \"np_thru_hole\", \"connect\"]),\n  pad_shape: z.enum([\n    \"roundrect\",\n    \"circle\",\n    \"rect\",\n    \"oval\",\n    \"trapezoid\",\n    \"custom\",\n  ]),\n  at: point,\n  size: point2,\n  layers: z.array(z.string()).optional(),\n  roundrect_rratio: z.number().optional(),\n  chamfer_ratio: z.number().optional(),\n  solder_paste_margin: z.number().optional(),\n  solder_paste_margin_ratio: z.number().optional(),\n  clearance: z.number().optional(),\n  zone_connection: z\n    .union([\n      z.literal(0).describe(\"Pad is not connect to zone\"),\n      z.literal(1).describe(\"Pad is connected to zone using thermal relief\"),\n      z.literal(2).describe(\"Pad is connected to zone using solid fill\"),\n    ])\n    .optional(),\n  thermal_width: z.number().optional(),\n  thermal_gap: z.number().optional(),\n  uuid: z.string().optional(),\n})\n\nexport const drill_def = z.object({\n  oval: z.boolean().default(false),\n  diameter: z.number(),\n  width: z.number().optional(),\n  offset: point2.optional(),\n})\n\nexport const effects_def = z\n  .object({\n    font: z.object({\n      size: point2,\n      thickness: z.number().optional(),\n    }),\n  })\n  .partial()\n\nexport const fp_text_def = z.object({\n  fp_text_type: z.literal(\"user\"),\n  text: z.string(),\n  at: point,\n  layer: z.string(),\n  uuid: z.string().optional(),\n  effects: effects_def.partial(),\n})\n\nexport const fp_line = z.object({\n  start: point2,\n  end: point2,\n  stroke: z.object({\n    width: z.number(),\n    type: z.string(),\n  }),\n  layer: z.string(),\n  uuid: z.string().optional(),\n})\n\nexport const kicad_mod_json_def = z.object({\n  footprint_name: z.string(),\n  version: z.string(),\n  generator: z.string(),\n  generator_version: z.string().optional(),\n  layer: z.string(),\n  descr: z.string().default(\"\"),\n  tags: z.array(z.string()).optional(),\n  properties: z.array(property_def),\n  fp_lines: z.array(fp_line),\n  fp_texts: z.array(fp_text_def),\n  pads: z.array(pad_def),\n})\n\nexport type Point2 = z.infer<typeof point2>\nexport type Point3 = z.infer<typeof point3>\nexport type Point = z.infer<typeof point>\nexport type Attributes = z.infer<typeof attributes_def>\nexport type Property = z.infer<typeof property_def>\nexport type Pad = z.infer<typeof pad_def>\nexport type EffectsObj = z.infer<typeof effects_def>\nexport type FpText = z.infer<typeof fp_text_def>\nexport type FpLine = z.infer<typeof fp_line>\nexport type KicadModJson = z.infer<typeof kicad_mod_json_def>\n","import { type EffectsObj, effects_def } from \"./kicad-zod\"\n\nexport const formatAttr = (val: any, attrKey: string) => {\n  if (attrKey === \"effects\" && Array.isArray(val)) {\n    // val = [ [ 'font', [ 'size', '1', '1' ], [ 'thickness', '0.2' ] ] ]\n    const effectsObj: EffectsObj = {}\n    for (const elm of val) {\n      if (elm[0] === \"font\") {\n        const fontObj: any = {}\n        for (const fontElm of elm.slice(1)) {\n          if (fontElm.length === 2) {\n            fontObj[fontElm[0].valueOf()] = Number.parseFloat(\n              fontElm[1].valueOf()\n            )\n          } else {\n            fontObj[fontElm[0].valueOf()] = fontElm\n              .slice(1)\n              .map((n: any) => Number.parseFloat(n.valueOf()))\n          }\n        }\n        effectsObj.font = fontObj\n      }\n    }\n    return effects_def.parse(effectsObj)\n  }\n  if (attrKey === \"stroke\") {\n    const strokeObj: any = {}\n    for (const strokeElm of val) {\n      const strokePropKey = strokeElm[0].valueOf()\n      strokeObj[strokePropKey] = formatAttr(strokeElm.slice(1), strokePropKey)\n    }\n    return strokeObj\n  }\n  if (\n    attrKey === \"at\" ||\n    attrKey === \"size\" ||\n    attrKey === \"start\" ||\n    attrKey === \"end\"\n  ) {\n    return val.map((n: any) => Number.parseFloat(n.valueOf()))\n  }\n  if (attrKey === \"tags\") {\n    return val.map((n: any) => n.valueOf())\n  }\n  if (attrKey === \"generator_version\" || attrKey === \"version\") {\n    return val[0].valueOf()\n  }\n  if (val.length === 2) {\n    return val.valueOf()\n  }\n  if (attrKey === \"uuid\") {\n    if (Array.isArray(val)) {\n      return val[0].valueOf()\n    }\n    return val.valueOf()\n  }\n  if (/^[\\d\\.]+$/.test(val) && !Number.isNaN(Number.parseFloat(val))) {\n    return Number.parseFloat(val)\n  }\n  if (Array.isArray(val) && val.length === 1) {\n    return val[0].valueOf()\n  }\n  if (Array.isArray(val)) {\n    return val.map((s) => s.valueOf())\n  }\n  return val\n}\n\nexport const getAttr = (s: Array<any>, key: string) => {\n  for (const elm of s) {\n    if (Array.isArray(elm) && elm[0] === key) {\n      return formatAttr(elm.slice(1), key)\n    }\n  }\n}\n","import type { KicadModJson } from \"./kicad-zod\"\nimport type { AnySoupElement } from \"@tscircuit/soup\"\nimport { createProjectBuilder } from \"@tscircuit/builder\"\nimport Debug from \"debug\"\n\nconst debug = Debug(\"kicad-mod-converter\")\n\nexport const convertKicadLayerToTscircuitLayer = (kicadLayer: string) => {\n  switch (kicadLayer) {\n    case \"F.Cu\":\n    case \"F.SilkS\":\n      return \"top\"\n    case \"B.Cu\":\n    case \"B.SilkS\":\n      return \"bottom\"\n  }\n}\n\nexport const convertKicadJsonToTsCircuitSoup = async (\n  kicadJson: KicadModJson\n): Promise<AnySoupElement[]> => {\n  const { fp_lines, fp_texts, pads, footprint_name } = kicadJson\n\n  const pb = createProjectBuilder()\n\n  pb.add(\"component\", (cb) => {\n    for (const pad of pads) {\n      cb.footprint.add(\"smtpad\", (pb) =>\n        pb\n          .setProps({\n            x: pad.at[0],\n            y: -pad.at[1],\n            // ??? @tscircuit/builder bug? width and height are not recognized\n            width: pad.size[0],\n            height: pad.size[1],\n            layer: pad.layers?.[0]! as any,\n            shape: \"rect\",\n            port_hints: [pad.name],\n          })\n          .setSize(pad.size[0], pad.size[1])\n      )\n    }\n    for (const fp_line of fp_lines) {\n      if (fp_line.layer === \"F.Cu\") {\n        cb.footprint.add(\"pcbtrace\", (pb) =>\n          pb.setProps({\n            route: [\n              { x: fp_line.start[0], y: -fp_line.start[1] },\n              { x: fp_line.end[0], y: -fp_line.end[1] },\n            ],\n            layer: convertKicadLayerToTscircuitLayer(fp_line.layer),\n            thickness: fp_line.stroke.width,\n          })\n        )\n      } else if (fp_line.layer === \"F.SilkS\") {\n        cb.footprint.add(\"silkscreenpath\", (lb) =>\n          lb.setProps({\n            route: [\n              { x: fp_line.start[0], y: -fp_line.start[1] },\n              { x: fp_line.end[0], y: -fp_line.end[1] },\n            ],\n            layer: \"top\", //convertKicadLayerToTscircuitLayer(fp_line.layer),\n          })\n        )\n      } else {\n        debug(\"Unhandled layer for fp_line\", fp_line.layer)\n      }\n    }\n  })\n\n  const soup = await pb.build()\n\n  return soup as any\n}\n","import type { AnySoupElement } from \"@tscircuit/soup\"\nimport { parseKicadModToKicadJson } from \"./parse-kicad-mod-to-kicad-json\"\nimport { convertKicadJsonToTsCircuitSoup } from \"./convert-kicad-json-to-tscircuit-soup\"\n\nexport const parseKicadModToTscircuitSoup = async (\n  kicadMod: string\n): Promise<AnySoupElement[]> => {\n  const kicadJson = parseKicadModToKicadJson(kicadMod)\n\n  const soup = await convertKicadJsonToTsCircuitSoup(kicadJson)\n  return soup\n}\n"],"mappings":"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","names":["exports","module","exports","module","debug","exports","module","exports","module","useColors","debug","exports","module","Debug","parseSExpression","import_debug","debug","Debug","pb","fp_line"]}