{"version":3,"file":"rrdlint","sources":["../rrdlint.js"],"sourcesContent":["import globSync from 'tiny-glob/sync';\nimport { readFileSync } from 'fs';\nimport { join, extname } from 'path';\nimport { safeLoad } from 'js-yaml';\nimport rr, { Diagram } from 'railroad-diagrams';\n\nconst args = process.argv;\nlet verbose = false;\nconst patterns = [];\nlet forcedInputType;\n\nfunction usage () {\n  console.log(`Checks the syntax of railroad diagrams in JSON, YAML or JavaScript.\n\nUsage: rrdlint [option...] [pattern...]\n\nOptions:\n  -i|--input <type>  read input from json, yaml or javascript. defaults to json\n  -v|--verbose       print checked file names and error stacktrace\n  -V|--version       print version number\n  -h|--help          print usage instructions\n\nIf no file name pattern is provided, standard input will be read.\nIf no input type is provided, it will be inferred from the file extension:\n\".json\" -> json, \".yaml\" or \".yml\" -> yaml, \".js\" -> javascript.\n    \nExamples:\n  cat foo.yaml | rrdlint -i yaml\n  rrdlint diagrams/*`);\n  process.exit(0);\n}\n\nif (!args.length) usage();\n\nfor (let i = 2, l = args.length; i < l; ++i) {\n  const arg = args[i];\n  let match;\n  if ((match = /^(?:-|--)(?:(no)-)?(\\w+)$/.exec(arg))) {\n    switch (match[2]) {\n      case 'v': case 'verbose':\n        verbose = true;\n        continue;\n      case 'i': case 'input':\n        forcedInputType = args[++i];\n        if (forcedInputType !== 'json' && forcedInputType !== 'yaml' && forcedInputType !== 'javascript') {\n          console.error(`Invalid input type: \"${forcedInputType}\".`);\n          process.exit(2);\n        }\n        continue;\n      case 'V': case 'version':\n        console.log(JSON.parse(readFileSync(join(\n          __dirname, '../package.json'), 'utf-8')).version);\n        process.exit(0);\n        continue;\n      case 'h': case 'help':\n        usage();\n    }\n    console.error(`Unknown option: \"${match[0]}\".`);\n    process.exit(2);\n  }\n  patterns.push(arg);\n}\n\nif (patterns.length) {\n  for (const pattern of patterns) {\n    const names = globSync(pattern, { filesOnly: true });\n    for (const name of names) {\n      let inputType;\n      if (forcedInputType === undefined) {\n        const ext = extname(name);\n        switch (ext) {\n          case '.json': inputType = 'json'; break;\n          case '.yml': case '.yaml': inputType = 'yaml'; break;\n          case '.js': inputType = 'javascript';\n        }\n      } else {\n        inputType = forcedInputType;\n      }\n      run({ name, code: readFileSync(name, 'utf-8') }, inputType);\n    }\n  }\n}\n\nfunction run (source, inputType) {\n  try {\n    switch (inputType) {\n      case 'javascript':\n        fromJavaScript(source.code); break;\n      case 'yaml':\n        Diagram.fromJSON(safeLoad(source.code)); break;\n      case 'json':\n      default:\n        Diagram.fromJSON(JSON.parse(source.code));\n    }\n    if (verbose) console.log(`${source.name}: OK`);\n  } catch (error) {\n    console.error(`${source.name}: ${error.message}`);\n    if (verbose) console.log(error.stack);\n    process.exitCode = 1;\n  }\n}\n\nfunction fromJavaScript (input) {\n  global.rr = rr;\n  const diagramFunctions = `const { ${Object.keys(rr).join(', ')} } = rr;`;\n  const createDiagram = new Function(`${diagramFunctions}\n${input}`);\n  createDiagram();\n}\n\nif (!patterns.length) {\n  let input = '';\n  process.stdin.setEncoding('utf8');\n  process.stdin\n    .on('data', chunk => (input += chunk))\n    .on('end', () => {\n      run({ name: 'snippet', code: input }, forcedInputType);\n    })\n    .resume();\n}\n"],"names":["readFileSync","join","extname","Diagram","safeLoad","rr"],"mappings":"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"}