UNPKG

@digicatapult/dtdl-parser

Version:

JS tool to parse DTDL defined Ontologies

60 lines (59 loc) 2.26 kB
import r from 'fs'; import e from 'path'; import { errorHandler as t, isModelingException as l, isResolutionException as n } from './error.js'; let { log: s, error: i } = console; export { getInterop } from './interop.js'; export const searchForJsonFiles = (t)=>r.existsSync(t) ? r.readdirSync(t).map((r)=>e.join(t, r)).reduce((t, l)=>r.statSync(l).isDirectory() ? t.concat(searchForJsonFiles(l)) : '.json' === e.extname(l) ? t.concat(l) : t, []) : (i(`'${t}' not a valid filepath`), []); let a = (e)=>{ try { let t = r.readFileSync(e, 'utf-8'); return JSON.parse(t); } catch (r) { return i(`Invalid JSON at '${e}'`), i(r), null; } }, o = (e, l, a)=>{ try { let t = r.readFileSync(e, 'utf-8'); return l.parse(t), s(`Successfully validated '${e}'`), !0; } catch (r) { if (!a && n(r)) return s(`Successfully validated '${e}'`), !0; return i(`Error parsing '${e}'`), t(r), !1; } }; export const parseDtdl = (r, e)=>{ try { let t = JSON.parse(e.parse(r)); return s("Successfully parsed"), t; } catch (r) { return i("Error parsing"), t(r); } }; export const validateDirectories = (r, e, t)=>{ s(`${e.parserVersion()}\n`), s(`Validating DTDL at: '${r}'`); let l = searchForJsonFiles(r); if (l.length < 1) return !1; for (let r of (s(`Found ${l.length} files:`), s(l), l))if (!o(r, e, t)) return !1; return s(`All files validated!\n`), !0; }; export const parseDirectories = (r, e)=>{ s(`${e.parserVersion()}\n`), s(`Parsing DTDL at: '${r}'`); let t = searchForJsonFiles(r); if (t.length < 1) return null; s(`Found ${t.length} files:`), s(t); let n = ((r)=>{ let e = []; for (let t of r){ let r = a(t); if (null === r) return null; e.push(r); } return e; })(t); if (null === n) return null; let i = parseDtdl(JSON.stringify(n), e); if (l(i)) return s('Error while parsing directories:'), s(i), null; s(`All files parsed!\n`), s("Entities:"), s(Object.keys(i)); let o = Object.values(i).filter((r)=>'Interface' === r.EntityKind); return s(`Number of interfaces: ${o.length}`), i; }; //# sourceMappingURL=index.js.map