flexdataset 0.19.1 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/src/cli.js CHANGED
@@ -48,20 +48,11 @@ Usage:
48
48
  Options:
49
49
  --format Output format for "validate" (default: human).
50
50
  --out Write SVG to a file instead of stdout (graph / er).`;
51
- function formatViolation(violation) {
52
- const location = [
53
- violation.schema,
54
- violation.table,
55
- ].filter(Boolean).join('.');
56
- const where = location ? ` ${location}` : '';
57
- const field = violation.field ? ` (${violation.field})` : '';
58
- return ` ${violation.level.toUpperCase()} [${violation.code}]${where}${field}: ${violation.message}`;
59
- }
60
51
  function printHuman(result) {
61
52
  const errors = result.violations.filter((violation) => violation.level === 'error');
62
53
  const warnings = result.violations.filter((violation) => violation.level === 'warning');
63
54
  for (const violation of result.violations) {
64
- const line = formatViolation(violation);
55
+ const line = ` ${(0, validate_1.formatViolation)(violation)}`;
65
56
  if (violation.level === 'error') {
66
57
  console.error(line);
67
58
  }
@@ -176,4 +167,4 @@ main(process.argv).then((code) => {
176
167
  console.error(error.message);
177
168
  process.exit(1);
178
169
  });
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILHVDQUF5QjtBQUV6Qix5Q0FFb0I7QUFDcEIscUNBRWtCO0FBQ2xCLHVDQUV1QjtBQUN2QixxQ0FFc0I7QUFDdEIsNkNBRTBCO0FBSzFCLE1BQU0sS0FBSyxHQUFHOzs7Ozs7Ozs7O2lFQVVtRCxDQUFDO0FBRWxFLFNBQVMsZUFBZSxDQUFDLFNBQW9CO0lBQ3pDLE1BQU0sUUFBUSxHQUFHO1FBQ2IsU0FBUyxDQUFDLE1BQU07UUFDaEIsU0FBUyxDQUFDLEtBQUs7S0FDbEIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzdDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDN0QsT0FBTyxLQUFLLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssU0FBUyxDQUFDLElBQUksSUFBSSxLQUFLLEdBQUcsS0FBSyxLQUFLLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUMxRyxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsTUFBd0I7SUFDeEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUM7SUFDcEYsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUM7SUFFeEYsS0FBSyxNQUFNLFNBQVMsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDeEMsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksU0FBUyxDQUFDLEtBQUssS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ0osT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLFFBQVEsQ0FBQyxNQUFNLDBCQUEwQixDQUFDLENBQUM7SUFDbkUsQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksTUFBTSxDQUFDLE1BQU0sY0FBYyxRQUFRLENBQUMsTUFBTSxjQUFjLENBQUMsQ0FBQztJQUN4RixDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLElBQWMsRUFBRSxJQUFZO0lBQzlDLElBQUksS0FBeUIsQ0FBQztJQUM5QixNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7SUFDaEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3RDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ25CLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDUCxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLENBQUM7YUFBTSxDQUFDO1lBQ0osVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU87UUFDSCxLQUFLO1FBQ0wsVUFBVTtLQUNiLENBQUM7QUFDTixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsSUFBYztJQUMvQixNQUFNLEVBQ0YsS0FBSyxFQUFFLFVBQVUsR0FDcEIsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ25DLE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxPQUFPLENBQUM7SUFFaEMsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQztRQUMxRSxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxJQUFJLE1BQU0sS0FBSyxPQUFPLElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLE1BQU0sZ0NBQWdDLENBQUMsQ0FBQztRQUN6RSxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxJQUFJLE1BQXdCLENBQUM7SUFDN0IsSUFBSSxDQUFDO1FBQ0QsTUFBTSxHQUFHLElBQUEsdUJBQVksRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUUsS0FBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUN2QixFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDYixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7U0FDaEMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQixDQUFDO1NBQU0sQ0FBQztRQUNKLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQsS0FBSyxVQUFVLFVBQVUsQ0FBQyxPQUF1QixFQUFFLElBQWM7SUFDN0QsTUFBTSxFQUNGLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxHQUN6QixHQUFHLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFaEMsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLE9BQU8sNEJBQTRCLENBQUMsQ0FBQztRQUN6RSxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFBLGlCQUFRLEVBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ25DLE1BQU0sR0FBRyxHQUFHLE9BQU8sS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUEsaUJBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBQSxlQUFVLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDekUsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFBLGtCQUFTLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNOLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNwQyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixPQUFPLENBQUMsS0FBSyxDQUFFLEtBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7QUFDTCxDQUFDO0FBRUQsS0FBSyxVQUFVLElBQUksQ0FBQyxJQUFjO0lBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXhCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBQ0QsSUFBSSxPQUFPLEtBQUssTUFBTSxJQUFJLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ2pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkIsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBQ0QsSUFBSSxPQUFPLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDekIsT0FBTyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxJQUFJLE9BQU8sS0FBSyxPQUFPLElBQUksT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzFDLE9BQU8sVUFBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDN0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixPQUFPLENBQUMsQ0FBQztBQUNiLENBQUM7QUFFRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO0lBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7SUFDZixPQUFPLENBQUMsS0FBSyxDQUFFLEtBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuLyoqXG4gKiBgZmxleGRhdGFzZXRgIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UuXG4gKlxuICogQ29tbWFuZHM6IGB2YWxpZGF0ZWAgKHN0cnVjdHVyYWwgKyBzZW1hbnRpYyBjaGVja3MpLCBgZ3JhcGhgIChkZXBlbmRlbmN5IERBR1xuICogYXMgU1ZHKSwgYW5kIGBlcmAgKGVudGl0eS1yZWxhdGlvbnNoaXAgZGlhZ3JhbSBhcyBTVkcpLiBUaGUgQ0xJIGlzIGEgdGhpblxuICogc2hlbGwgb3ZlciB0aGUgbGlicmFyeTsgYWxsIGxvZ2ljIGFuZCB0ZXN0cyBsaXZlIGluIHRoZSBtb2R1bGVzIGl0IGNhbGxzLlxuICovXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcblxuaW1wb3J0IHtcbiAgICB2YWxpZGF0ZVJvb3QsIFxufSBmcm9tICcuL3ZhbGlkYXRlJztcbmltcG9ydCB7XG4gICAgbG9hZFJvb3QsIFxufSBmcm9tICcuL2xvYWRlcic7XG5pbXBvcnQge1xuICAgIGJ1aWxkRGFnRG90LCBcbn0gZnJvbSAnLi9kaWFncmFtL2RhZyc7XG5pbXBvcnQge1xuICAgIGJ1aWxkRXJEb3QsIFxufSBmcm9tICcuL2RpYWdyYW0vZXInO1xuaW1wb3J0IHtcbiAgICByZW5kZXJEb3QsIFxufSBmcm9tICcuL2RpYWdyYW0vcmVuZGVyJztcbmltcG9ydCB7XG4gICAgVmFsaWRhdGlvblJlc3VsdCwgVmlvbGF0aW9uLFxufSBmcm9tICcuL21vZGVsJztcblxuY29uc3QgVVNBR0UgPSBgZmxleGRhdGFzZXQg4oCUIEZsZXhpYmxlIERhdGFzZXQgRGVmaW5pdGlvbiB2YWxpZGF0b3JcblxuVXNhZ2U6XG4gIGZsZXhkYXRhc2V0IHZhbGlkYXRlIDxyb290PiBbLS1mb3JtYXQganNvbnxodW1hbl1cbiAgZmxleGRhdGFzZXQgZ3JhcGggPHJvb3Q+IFstLW91dCA8ZmlsZS5zdmc+XVxuICBmbGV4ZGF0YXNldCBlciA8cm9vdD4gWy0tb3V0IDxmaWxlLnN2Zz5dXG4gIGZsZXhkYXRhc2V0IGhlbHBcblxuT3B0aW9uczpcbiAgLS1mb3JtYXQgICBPdXRwdXQgZm9ybWF0IGZvciBcInZhbGlkYXRlXCIgKGRlZmF1bHQ6IGh1bWFuKS5cbiAgLS1vdXQgICAgICBXcml0ZSBTVkcgdG8gYSBmaWxlIGluc3RlYWQgb2Ygc3Rkb3V0IChncmFwaCAvIGVyKS5gO1xuXG5mdW5jdGlvbiBmb3JtYXRWaW9sYXRpb24odmlvbGF0aW9uOiBWaW9sYXRpb24pOiBzdHJpbmcge1xuICAgIGNvbnN0IGxvY2F0aW9uID0gW1xuICAgICAgICB2aW9sYXRpb24uc2NoZW1hLFxuICAgICAgICB2aW9sYXRpb24udGFibGUsXG4gICAgXS5maWx0ZXIoQm9vbGVhbikuam9pbignLicpO1xuICAgIGNvbnN0IHdoZXJlID0gbG9jYXRpb24gPyBgICR7bG9jYXRpb259YCA6ICcnO1xuICAgIGNvbnN0IGZpZWxkID0gdmlvbGF0aW9uLmZpZWxkID8gYCAoJHt2aW9sYXRpb24uZmllbGR9KWAgOiAnJztcbiAgICByZXR1cm4gYCAgJHt2aW9sYXRpb24ubGV2ZWwudG9VcHBlckNhc2UoKX0gWyR7dmlvbGF0aW9uLmNvZGV9XSR7d2hlcmV9JHtmaWVsZH06ICR7dmlvbGF0aW9uLm1lc3NhZ2V9YDtcbn1cblxuZnVuY3Rpb24gcHJpbnRIdW1hbihyZXN1bHQ6IFZhbGlkYXRpb25SZXN1bHQpOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvcnMgPSByZXN1bHQudmlvbGF0aW9ucy5maWx0ZXIoKHZpb2xhdGlvbikgPT4gdmlvbGF0aW9uLmxldmVsID09PSAnZXJyb3InKTtcbiAgICBjb25zdCB3YXJuaW5ncyA9IHJlc3VsdC52aW9sYXRpb25zLmZpbHRlcigodmlvbGF0aW9uKSA9PiB2aW9sYXRpb24ubGV2ZWwgPT09ICd3YXJuaW5nJyk7XG5cbiAgICBmb3IgKGNvbnN0IHZpb2xhdGlvbiBvZiByZXN1bHQudmlvbGF0aW9ucykge1xuICAgICAgICBjb25zdCBsaW5lID0gZm9ybWF0VmlvbGF0aW9uKHZpb2xhdGlvbik7XG4gICAgICAgIGlmICh2aW9sYXRpb24ubGV2ZWwgPT09ICdlcnJvcicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IobGluZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4obGluZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVzdWx0Lm9rKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBPSyDigJQgJHt3YXJuaW5ncy5sZW5ndGh9IHdhcm5pbmcocyksIDAgZXJyb3IocykuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRkFJTEVEIOKAlCAke2Vycm9ycy5sZW5ndGh9IGVycm9yKHMpLCAke3dhcm5pbmdzLmxlbmd0aH0gd2FybmluZyhzKS5gKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlT3B0aW9ucyhyZXN0OiBzdHJpbmdbXSwgZmxhZzogc3RyaW5nKTogeyB2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkOyBwb3NpdGlvbmFsOiBzdHJpbmdbXSB9IHtcbiAgICBsZXQgdmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBwb3NpdGlvbmFsOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzdC5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBpZiAocmVzdFtpXSA9PT0gZmxhZykge1xuICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgdmFsdWUgPSByZXN0W2ldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9zaXRpb25hbC5wdXNoKHJlc3RbaV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBwb3NpdGlvbmFsLFxuICAgIH07XG59XG5cbmZ1bmN0aW9uIHJ1blZhbGlkYXRlKHJlc3Q6IHN0cmluZ1tdKTogbnVtYmVyIHtcbiAgICBjb25zdCB7XG4gICAgICAgIHZhbHVlLCBwb3NpdGlvbmFsLCBcbiAgICB9ID0gcGFyc2VPcHRpb25zKHJlc3QsICctLWZvcm1hdCcpO1xuICAgIGNvbnN0IGZvcm1hdCA9IHZhbHVlID8/ICdodW1hbic7XG5cbiAgICBjb25zdCByb290ID0gcG9zaXRpb25hbFswXTtcbiAgICBpZiAoIXJvb3QpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcigndXNhZ2U6IGZsZXhkYXRhc2V0IHZhbGlkYXRlIDxyb290PiBbLS1mb3JtYXQganNvbnxodW1hbl0nKTtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdCAhPT0gJ2h1bWFuJyAmJiBmb3JtYXQgIT09ICdqc29uJykge1xuICAgICAgICBjb25zb2xlLmVycm9yKGB1bmtub3duIGZvcm1hdCBcIiR7Zm9ybWF0fVwiIChleHBlY3RlZCBcImh1bWFuXCIgb3IgXCJqc29uXCIpYCk7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGxldCByZXN1bHQ6IFZhbGlkYXRpb25SZXN1bHQ7XG4gICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gdmFsaWRhdGVSb290KHJvb3QpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdCA9PT0gJ2pzb24nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIG9rOiByZXN1bHQub2ssXG4gICAgICAgICAgICB2aW9sYXRpb25zOiByZXN1bHQudmlvbGF0aW9ucyxcbiAgICAgICAgfSwgbnVsbCwgMikpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHByaW50SHVtYW4ocmVzdWx0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0Lm9rID8gMCA6IDE7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bkRpYWdyYW0oY29tbWFuZDogJ2dyYXBoJyB8ICdlcicsIHJlc3Q6IHN0cmluZ1tdKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB7XG4gICAgICAgIHZhbHVlOiBvdXQsIHBvc2l0aW9uYWwsIFxuICAgIH0gPSBwYXJzZU9wdGlvbnMocmVzdCwgJy0tb3V0Jyk7XG5cbiAgICBjb25zdCByb290ID0gcG9zaXRpb25hbFswXTtcbiAgICBpZiAoIXJvb3QpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgdXNhZ2U6IGZsZXhkYXRhc2V0ICR7Y29tbWFuZH0gPHJvb3Q+IFstLW91dCA8ZmlsZS5zdmc+XWApO1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCB3b3JsZCA9IGxvYWRSb290KHJvb3QpLndvcmxkO1xuICAgICAgICBjb25zdCBkb3QgPSBjb21tYW5kID09PSAnZ3JhcGgnID8gYnVpbGREYWdEb3Qod29ybGQpIDogYnVpbGRFckRvdCh3b3JsZCk7XG4gICAgICAgIGNvbnN0IHN2ZyA9IGF3YWl0IHJlbmRlckRvdChkb3QpO1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKG91dCwgc3ZnLCAndXRmLTgnKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYHdyb3RlICR7b3V0fWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coc3ZnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKChlcnJvciBhcyBFcnJvcikubWVzc2FnZSk7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbWFpbihhcmd2OiBzdHJpbmdbXSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgYXJncyA9IGFyZ3Yuc2xpY2UoMik7XG4gICAgY29uc3QgY29tbWFuZCA9IGFyZ3NbMF07XG5cbiAgICBpZiAoIWNvbW1hbmQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihVU0FHRSk7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBpZiAoY29tbWFuZCA9PT0gJ2hlbHAnIHx8IGNvbW1hbmQgPT09ICctLWhlbHAnIHx8IGNvbW1hbmQgPT09ICctaCcpIHtcbiAgICAgICAgY29uc29sZS5sb2coVVNBR0UpO1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKGNvbW1hbmQgPT09ICd2YWxpZGF0ZScpIHtcbiAgICAgICAgcmV0dXJuIHJ1blZhbGlkYXRlKGFyZ3Muc2xpY2UoMSkpO1xuICAgIH1cbiAgICBpZiAoY29tbWFuZCA9PT0gJ2dyYXBoJyB8fCBjb21tYW5kID09PSAnZXInKSB7XG4gICAgICAgIHJldHVybiBydW5EaWFncmFtKGNvbW1hbmQsIGFyZ3Muc2xpY2UoMSkpO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZXJyb3IoYHVua25vd24gY29tbWFuZDogJHtjb21tYW5kfWApO1xuICAgIGNvbnNvbGUuZXJyb3IoVVNBR0UpO1xuICAgIHJldHVybiAxO1xufVxuXG5tYWluKHByb2Nlc3MuYXJndikudGhlbigoY29kZSkgPT4ge1xuICAgIHByb2Nlc3MuZXhpdChjb2RlKTtcbn0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG59KTtcbiJdfQ==
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILHVDQUF5QjtBQUV6Qix5Q0FHb0I7QUFDcEIscUNBRWtCO0FBQ2xCLHVDQUV1QjtBQUN2QixxQ0FFc0I7QUFDdEIsNkNBRTBCO0FBSzFCLE1BQU0sS0FBSyxHQUFHOzs7Ozs7Ozs7O2lFQVVtRCxDQUFDO0FBRWxFLFNBQVMsVUFBVSxDQUFDLE1BQXdCO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDO0lBQ3BGLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDO0lBRXhGLEtBQUssTUFBTSxTQUFTLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLEtBQUssSUFBQSwwQkFBZSxFQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDL0MsSUFBSSxTQUFTLENBQUMsS0FBSyxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQzthQUFNLENBQUM7WUFDSixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDWixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsUUFBUSxDQUFDLE1BQU0sMEJBQTBCLENBQUMsQ0FBQztJQUNuRSxDQUFDO1NB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LEtBQUssSUFBSSxFQUFFLENBQUM7UUFDakUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFDRCxJQUFJLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUN6QixPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELElBQUksT0FBTyxLQUFLLE9BQU8sSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDMUMsT0FBTyxVQUFVLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUM3QyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQztBQUVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDN0IsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUNmLE9BQU8sQ0FBQyxLQUFLLENBQUUsS0FBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG4vKipcbiAqIGBmbGV4ZGF0YXNldGAgY29tbWFuZC1saW5lIGludGVyZmFjZS5cbiAqXG4gKiBDb21tYW5kczogYHZhbGlkYXRlYCAoc3RydWN0dXJhbCArIHNlbWFudGljIGNoZWNrcyksIGBncmFwaGAgKGRlcGVuZGVuY3kgREFHXG4gKiBhcyBTVkcpLCBhbmQgYGVyYCAoZW50aXR5LXJlbGF0aW9uc2hpcCBkaWFncmFtIGFzIFNWRykuIFRoZSBDTEkgaXMgYSB0aGluXG4gKiBzaGVsbCBvdmVyIHRoZSBsaWJyYXJ5OyBhbGwgbG9naWMgYW5kIHRlc3RzIGxpdmUgaW4gdGhlIG1vZHVsZXMgaXQgY2FsbHMuXG4gKi9cblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuXG5pbXBvcnQge1xuICAgIGZvcm1hdFZpb2xhdGlvbixcbiAgICB2YWxpZGF0ZVJvb3QsXG59IGZyb20gJy4vdmFsaWRhdGUnO1xuaW1wb3J0IHtcbiAgICBsb2FkUm9vdCwgXG59IGZyb20gJy4vbG9hZGVyJztcbmltcG9ydCB7XG4gICAgYnVpbGREYWdEb3QsIFxufSBmcm9tICcuL2RpYWdyYW0vZGFnJztcbmltcG9ydCB7XG4gICAgYnVpbGRFckRvdCwgXG59IGZyb20gJy4vZGlhZ3JhbS9lcic7XG5pbXBvcnQge1xuICAgIHJlbmRlckRvdCwgXG59IGZyb20gJy4vZGlhZ3JhbS9yZW5kZXInO1xuaW1wb3J0IHtcbiAgICBWYWxpZGF0aW9uUmVzdWx0LFxufSBmcm9tICcuL21vZGVsJztcblxuY29uc3QgVVNBR0UgPSBgZmxleGRhdGFzZXQg4oCUIEZsZXhpYmxlIERhdGFzZXQgRGVmaW5pdGlvbiB2YWxpZGF0b3JcblxuVXNhZ2U6XG4gIGZsZXhkYXRhc2V0IHZhbGlkYXRlIDxyb290PiBbLS1mb3JtYXQganNvbnxodW1hbl1cbiAgZmxleGRhdGFzZXQgZ3JhcGggPHJvb3Q+IFstLW91dCA8ZmlsZS5zdmc+XVxuICBmbGV4ZGF0YXNldCBlciA8cm9vdD4gWy0tb3V0IDxmaWxlLnN2Zz5dXG4gIGZsZXhkYXRhc2V0IGhlbHBcblxuT3B0aW9uczpcbiAgLS1mb3JtYXQgICBPdXRwdXQgZm9ybWF0IGZvciBcInZhbGlkYXRlXCIgKGRlZmF1bHQ6IGh1bWFuKS5cbiAgLS1vdXQgICAgICBXcml0ZSBTVkcgdG8gYSBmaWxlIGluc3RlYWQgb2Ygc3Rkb3V0IChncmFwaCAvIGVyKS5gO1xuXG5mdW5jdGlvbiBwcmludEh1bWFuKHJlc3VsdDogVmFsaWRhdGlvblJlc3VsdCk6IHZvaWQge1xuICAgIGNvbnN0IGVycm9ycyA9IHJlc3VsdC52aW9sYXRpb25zLmZpbHRlcigodmlvbGF0aW9uKSA9PiB2aW9sYXRpb24ubGV2ZWwgPT09ICdlcnJvcicpO1xuICAgIGNvbnN0IHdhcm5pbmdzID0gcmVzdWx0LnZpb2xhdGlvbnMuZmlsdGVyKCh2aW9sYXRpb24pID0+IHZpb2xhdGlvbi5sZXZlbCA9PT0gJ3dhcm5pbmcnKTtcblxuICAgIGZvciAoY29uc3QgdmlvbGF0aW9uIG9mIHJlc3VsdC52aW9sYXRpb25zKSB7XG4gICAgICAgIGNvbnN0IGxpbmUgPSBgICAke2Zvcm1hdFZpb2xhdGlvbih2aW9sYXRpb24pfWA7XG4gICAgICAgIGlmICh2aW9sYXRpb24ubGV2ZWwgPT09ICdlcnJvcicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IobGluZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4obGluZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVzdWx0Lm9rKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBPSyDigJQgJHt3YXJuaW5ncy5sZW5ndGh9IHdhcm5pbmcocyksIDAgZXJyb3IocykuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRkFJTEVEIOKAlCAke2Vycm9ycy5sZW5ndGh9IGVycm9yKHMpLCAke3dhcm5pbmdzLmxlbmd0aH0gd2FybmluZyhzKS5gKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlT3B0aW9ucyhyZXN0OiBzdHJpbmdbXSwgZmxhZzogc3RyaW5nKTogeyB2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkOyBwb3NpdGlvbmFsOiBzdHJpbmdbXSB9IHtcbiAgICBsZXQgdmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBwb3NpdGlvbmFsOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzdC5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBpZiAocmVzdFtpXSA9PT0gZmxhZykge1xuICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgdmFsdWUgPSByZXN0W2ldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9zaXRpb25hbC5wdXNoKHJlc3RbaV0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBwb3NpdGlvbmFsLFxuICAgIH07XG59XG5cbmZ1bmN0aW9uIHJ1blZhbGlkYXRlKHJlc3Q6IHN0cmluZ1tdKTogbnVtYmVyIHtcbiAgICBjb25zdCB7XG4gICAgICAgIHZhbHVlLCBwb3NpdGlvbmFsLCBcbiAgICB9ID0gcGFyc2VPcHRpb25zKHJlc3QsICctLWZvcm1hdCcpO1xuICAgIGNvbnN0IGZvcm1hdCA9IHZhbHVlID8/ICdodW1hbic7XG5cbiAgICBjb25zdCByb290ID0gcG9zaXRpb25hbFswXTtcbiAgICBpZiAoIXJvb3QpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcigndXNhZ2U6IGZsZXhkYXRhc2V0IHZhbGlkYXRlIDxyb290PiBbLS1mb3JtYXQganNvbnxodW1hbl0nKTtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdCAhPT0gJ2h1bWFuJyAmJiBmb3JtYXQgIT09ICdqc29uJykge1xuICAgICAgICBjb25zb2xlLmVycm9yKGB1bmtub3duIGZvcm1hdCBcIiR7Zm9ybWF0fVwiIChleHBlY3RlZCBcImh1bWFuXCIgb3IgXCJqc29uXCIpYCk7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGxldCByZXN1bHQ6IFZhbGlkYXRpb25SZXN1bHQ7XG4gICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gdmFsaWRhdGVSb290KHJvb3QpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlKTtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgaWYgKGZvcm1hdCA9PT0gJ2pzb24nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIG9rOiByZXN1bHQub2ssXG4gICAgICAgICAgICB2aW9sYXRpb25zOiByZXN1bHQudmlvbGF0aW9ucyxcbiAgICAgICAgfSwgbnVsbCwgMikpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHByaW50SHVtYW4ocmVzdWx0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0Lm9rID8gMCA6IDE7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bkRpYWdyYW0oY29tbWFuZDogJ2dyYXBoJyB8ICdlcicsIHJlc3Q6IHN0cmluZ1tdKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBjb25zdCB7XG4gICAgICAgIHZhbHVlOiBvdXQsIHBvc2l0aW9uYWwsIFxuICAgIH0gPSBwYXJzZU9wdGlvbnMocmVzdCwgJy0tb3V0Jyk7XG5cbiAgICBjb25zdCByb290ID0gcG9zaXRpb25hbFswXTtcbiAgICBpZiAoIXJvb3QpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgdXNhZ2U6IGZsZXhkYXRhc2V0ICR7Y29tbWFuZH0gPHJvb3Q+IFstLW91dCA8ZmlsZS5zdmc+XWApO1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgICBjb25zdCB3b3JsZCA9IGxvYWRSb290KHJvb3QpLndvcmxkO1xuICAgICAgICBjb25zdCBkb3QgPSBjb21tYW5kID09PSAnZ3JhcGgnID8gYnVpbGREYWdEb3Qod29ybGQpIDogYnVpbGRFckRvdCh3b3JsZCk7XG4gICAgICAgIGNvbnN0IHN2ZyA9IGF3YWl0IHJlbmRlckRvdChkb3QpO1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKG91dCwgc3ZnLCAndXRmLTgnKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYHdyb3RlICR7b3V0fWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coc3ZnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKChlcnJvciBhcyBFcnJvcikubWVzc2FnZSk7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gbWFpbihhcmd2OiBzdHJpbmdbXSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgYXJncyA9IGFyZ3Yuc2xpY2UoMik7XG4gICAgY29uc3QgY29tbWFuZCA9IGFyZ3NbMF07XG5cbiAgICBpZiAoIWNvbW1hbmQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihVU0FHRSk7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBpZiAoY29tbWFuZCA9PT0gJ2hlbHAnIHx8IGNvbW1hbmQgPT09ICctLWhlbHAnIHx8IGNvbW1hbmQgPT09ICctaCcpIHtcbiAgICAgICAgY29uc29sZS5sb2coVVNBR0UpO1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKGNvbW1hbmQgPT09ICd2YWxpZGF0ZScpIHtcbiAgICAgICAgcmV0dXJuIHJ1blZhbGlkYXRlKGFyZ3Muc2xpY2UoMSkpO1xuICAgIH1cbiAgICBpZiAoY29tbWFuZCA9PT0gJ2dyYXBoJyB8fCBjb21tYW5kID09PSAnZXInKSB7XG4gICAgICAgIHJldHVybiBydW5EaWFncmFtKGNvbW1hbmQsIGFyZ3Muc2xpY2UoMSkpO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZXJyb3IoYHVua25vd24gY29tbWFuZDogJHtjb21tYW5kfWApO1xuICAgIGNvbnNvbGUuZXJyb3IoVVNBR0UpO1xuICAgIHJldHVybiAxO1xufVxuXG5tYWluKHByb2Nlc3MuYXJndikudGhlbigoY29kZSkgPT4ge1xuICAgIHByb2Nlc3MuZXhpdChjb2RlKTtcbn0pLmNhdGNoKChlcnJvcikgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG59KTtcbiJdfQ==
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export * from './model';
5
5
  export { LoadedSchema, World, runSemanticRules, } from './world';
6
- export { validateRoot, } from './validate';
6
+ export { validateRoot, loadValidatedRoot, formatViolation, LoadValidatedOptions, } from './validate';
7
7
  export { loadRoot, LoadOutcome, } from './loader';
8
8
  export { TableTypeBase, TableTypeFields, } from './table-type';
9
9
  export { createTableType, } from './table-types/registry';
package/dist/src/index.js CHANGED
@@ -17,12 +17,14 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
17
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.renderDot = exports.buildErDot = exports.buildDagDot = exports.IcebergTransformKind = exports.IcebergTypeKind = exports.transformLegalOnType = exports.parseIcebergTransform = exports.isValidIcebergType = exports.parseIcebergType = exports.isValidPostgresType = exports.isValidHiveType = exports.validateStructure = exports.Postgres18Table = exports.IcebergParquetTable = exports.HiveParquetTable = exports.createTableType = exports.TableTypeBase = exports.loadRoot = exports.validateRoot = exports.runSemanticRules = void 0;
20
+ exports.renderDot = exports.buildErDot = exports.buildDagDot = exports.IcebergTransformKind = exports.IcebergTypeKind = exports.transformLegalOnType = exports.parseIcebergTransform = exports.isValidIcebergType = exports.parseIcebergType = exports.isValidPostgresType = exports.isValidHiveType = exports.validateStructure = exports.Postgres18Table = exports.IcebergParquetTable = exports.HiveParquetTable = exports.createTableType = exports.TableTypeBase = exports.loadRoot = exports.formatViolation = exports.loadValidatedRoot = exports.validateRoot = exports.runSemanticRules = void 0;
21
21
  __exportStar(require("./model"), exports);
22
22
  var world_1 = require("./world");
23
23
  Object.defineProperty(exports, "runSemanticRules", { enumerable: true, get: function () { return world_1.runSemanticRules; } });
24
24
  var validate_1 = require("./validate");
25
25
  Object.defineProperty(exports, "validateRoot", { enumerable: true, get: function () { return validate_1.validateRoot; } });
26
+ Object.defineProperty(exports, "loadValidatedRoot", { enumerable: true, get: function () { return validate_1.loadValidatedRoot; } });
27
+ Object.defineProperty(exports, "formatViolation", { enumerable: true, get: function () { return validate_1.formatViolation; } });
26
28
  var loader_1 = require("./loader");
27
29
  Object.defineProperty(exports, "loadRoot", { enumerable: true, get: function () { return loader_1.loadRoot; } });
28
30
  var table_type_1 = require("./table-type");
@@ -53,4 +55,4 @@ var er_1 = require("./diagram/er");
53
55
  Object.defineProperty(exports, "buildErDot", { enumerable: true, get: function () { return er_1.buildErDot; } });
54
56
  var render_1 = require("./diagram/render");
55
57
  Object.defineProperty(exports, "renderDot", { enumerable: true, get: function () { return render_1.renderDot; } });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDBDQUF3QjtBQUN4QixpQ0FJaUI7QUFEYix5R0FBQSxnQkFBZ0IsT0FBQTtBQUVwQix1Q0FFb0I7QUFEaEIsd0dBQUEsWUFBWSxPQUFBO0FBRWhCLG1DQUdrQjtBQUZkLGtHQUFBLFFBQVEsT0FBQTtBQUdaLDJDQUdzQjtBQUZsQiwyR0FBQSxhQUFhLE9BQUE7QUFHakIsbURBRWdDO0FBRDVCLDJHQUFBLGVBQWUsT0FBQTtBQUVuQiwyREFFb0M7QUFEaEMsZ0hBQUEsZ0JBQWdCLE9BQUE7QUFFcEIsaUVBRXVDO0FBRG5DLHNIQUFBLG1CQUFtQixPQUFBO0FBRXZCLHlEQUVtQztBQUQvQiw4R0FBQSxlQUFlLE9BQUE7QUFFbkIsMkNBS3NCO0FBSmxCLCtHQUFBLGlCQUFpQixPQUFBO0FBS3JCLGlDQUdpQjtBQUZiLHdHQUFBLGVBQWUsT0FBQTtBQUNmLDRHQUFBLG1CQUFtQixPQUFBO0FBRXZCLHFDQVNtQjtBQVJmLDJHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDZHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLGdIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLCtHQUFBLG9CQUFvQixPQUFBO0FBRXBCLDBHQUFBLGVBQWUsT0FBQTtBQUVmLCtHQUFBLG9CQUFvQixPQUFBO0FBRXhCLHFDQUV1QjtBQURuQixrR0FBQSxXQUFXLE9BQUE7QUFFZixtQ0FFc0I7QUFEbEIsZ0dBQUEsVUFBVSxPQUFBO0FBRWQsMkNBRTBCO0FBRHRCLG1HQUFBLFNBQVMsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHVibGljIEFQSSBmb3IgdGhlIEZERCBjb3JlIHBhY2thZ2UuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9tb2RlbCc7XG5leHBvcnQge1xuICAgIExvYWRlZFNjaGVtYSxcbiAgICBXb3JsZCxcbiAgICBydW5TZW1hbnRpY1J1bGVzLFxufSBmcm9tICcuL3dvcmxkJztcbmV4cG9ydCB7XG4gICAgdmFsaWRhdGVSb290LFxufSBmcm9tICcuL3ZhbGlkYXRlJztcbmV4cG9ydCB7XG4gICAgbG9hZFJvb3QsXG4gICAgTG9hZE91dGNvbWUsXG59IGZyb20gJy4vbG9hZGVyJztcbmV4cG9ydCB7XG4gICAgVGFibGVUeXBlQmFzZSxcbiAgICBUYWJsZVR5cGVGaWVsZHMsXG59IGZyb20gJy4vdGFibGUtdHlwZSc7XG5leHBvcnQge1xuICAgIGNyZWF0ZVRhYmxlVHlwZSxcbn0gZnJvbSAnLi90YWJsZS10eXBlcy9yZWdpc3RyeSc7XG5leHBvcnQge1xuICAgIEhpdmVQYXJxdWV0VGFibGUsXG59IGZyb20gJy4vdGFibGUtdHlwZXMvaGl2ZS1wYXJxdWV0JztcbmV4cG9ydCB7XG4gICAgSWNlYmVyZ1BhcnF1ZXRUYWJsZSxcbn0gZnJvbSAnLi90YWJsZS10eXBlcy9pY2ViZXJnLXBhcnF1ZXQnO1xuZXhwb3J0IHtcbiAgICBQb3N0Z3JlczE4VGFibGUsXG59IGZyb20gJy4vdGFibGUtdHlwZXMvcG9zdGdyZXMtMTgnO1xuZXhwb3J0IHtcbiAgICB2YWxpZGF0ZVN0cnVjdHVyZSxcbiAgICBTdHJ1Y3R1cmFsS2luZCxcbiAgICBTdHJ1Y3R1cmFsUmVzdWx0LFxuICAgIFN0cnVjdHVyYWxFcnJvcixcbn0gZnJvbSAnLi9zdHJ1Y3R1cmFsJztcbmV4cG9ydCB7XG4gICAgaXNWYWxpZEhpdmVUeXBlLFxuICAgIGlzVmFsaWRQb3N0Z3Jlc1R5cGUsXG59IGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0IHtcbiAgICBwYXJzZUljZWJlcmdUeXBlLFxuICAgIGlzVmFsaWRJY2ViZXJnVHlwZSxcbiAgICBwYXJzZUljZWJlcmdUcmFuc2Zvcm0sXG4gICAgdHJhbnNmb3JtTGVnYWxPblR5cGUsXG4gICAgSWNlYmVyZ1R5cGUsXG4gICAgSWNlYmVyZ1R5cGVLaW5kLFxuICAgIEljZWJlcmdUcmFuc2Zvcm0sXG4gICAgSWNlYmVyZ1RyYW5zZm9ybUtpbmQsXG59IGZyb20gJy4vaWNlYmVyZyc7XG5leHBvcnQge1xuICAgIGJ1aWxkRGFnRG90LFxufSBmcm9tICcuL2RpYWdyYW0vZGFnJztcbmV4cG9ydCB7XG4gICAgYnVpbGRFckRvdCxcbn0gZnJvbSAnLi9kaWFncmFtL2VyJztcbmV4cG9ydCB7XG4gICAgcmVuZGVyRG90LFxufSBmcm9tICcuL2RpYWdyYW0vcmVuZGVyJztcbiJdfQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDBDQUF3QjtBQUN4QixpQ0FJaUI7QUFEYix5R0FBQSxnQkFBZ0IsT0FBQTtBQUVwQix1Q0FLb0I7QUFKaEIsd0dBQUEsWUFBWSxPQUFBO0FBQ1osNkdBQUEsaUJBQWlCLE9BQUE7QUFDakIsMkdBQUEsZUFBZSxPQUFBO0FBR25CLG1DQUdrQjtBQUZkLGtHQUFBLFFBQVEsT0FBQTtBQUdaLDJDQUdzQjtBQUZsQiwyR0FBQSxhQUFhLE9BQUE7QUFHakIsbURBRWdDO0FBRDVCLDJHQUFBLGVBQWUsT0FBQTtBQUVuQiwyREFFb0M7QUFEaEMsZ0hBQUEsZ0JBQWdCLE9BQUE7QUFFcEIsaUVBRXVDO0FBRG5DLHNIQUFBLG1CQUFtQixPQUFBO0FBRXZCLHlEQUVtQztBQUQvQiw4R0FBQSxlQUFlLE9BQUE7QUFFbkIsMkNBS3NCO0FBSmxCLCtHQUFBLGlCQUFpQixPQUFBO0FBS3JCLGlDQUdpQjtBQUZiLHdHQUFBLGVBQWUsT0FBQTtBQUNmLDRHQUFBLG1CQUFtQixPQUFBO0FBRXZCLHFDQVNtQjtBQVJmLDJHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDZHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLGdIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLCtHQUFBLG9CQUFvQixPQUFBO0FBRXBCLDBHQUFBLGVBQWUsT0FBQTtBQUVmLCtHQUFBLG9CQUFvQixPQUFBO0FBRXhCLHFDQUV1QjtBQURuQixrR0FBQSxXQUFXLE9BQUE7QUFFZixtQ0FFc0I7QUFEbEIsZ0dBQUEsVUFBVSxPQUFBO0FBRWQsMkNBRTBCO0FBRHRCLG1HQUFBLFNBQVMsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUHVibGljIEFQSSBmb3IgdGhlIEZERCBjb3JlIHBhY2thZ2UuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9tb2RlbCc7XG5leHBvcnQge1xuICAgIExvYWRlZFNjaGVtYSxcbiAgICBXb3JsZCxcbiAgICBydW5TZW1hbnRpY1J1bGVzLFxufSBmcm9tICcuL3dvcmxkJztcbmV4cG9ydCB7XG4gICAgdmFsaWRhdGVSb290LFxuICAgIGxvYWRWYWxpZGF0ZWRSb290LFxuICAgIGZvcm1hdFZpb2xhdGlvbixcbiAgICBMb2FkVmFsaWRhdGVkT3B0aW9ucyxcbn0gZnJvbSAnLi92YWxpZGF0ZSc7XG5leHBvcnQge1xuICAgIGxvYWRSb290LFxuICAgIExvYWRPdXRjb21lLFxufSBmcm9tICcuL2xvYWRlcic7XG5leHBvcnQge1xuICAgIFRhYmxlVHlwZUJhc2UsXG4gICAgVGFibGVUeXBlRmllbGRzLFxufSBmcm9tICcuL3RhYmxlLXR5cGUnO1xuZXhwb3J0IHtcbiAgICBjcmVhdGVUYWJsZVR5cGUsXG59IGZyb20gJy4vdGFibGUtdHlwZXMvcmVnaXN0cnknO1xuZXhwb3J0IHtcbiAgICBIaXZlUGFycXVldFRhYmxlLFxufSBmcm9tICcuL3RhYmxlLXR5cGVzL2hpdmUtcGFycXVldCc7XG5leHBvcnQge1xuICAgIEljZWJlcmdQYXJxdWV0VGFibGUsXG59IGZyb20gJy4vdGFibGUtdHlwZXMvaWNlYmVyZy1wYXJxdWV0JztcbmV4cG9ydCB7XG4gICAgUG9zdGdyZXMxOFRhYmxlLFxufSBmcm9tICcuL3RhYmxlLXR5cGVzL3Bvc3RncmVzLTE4JztcbmV4cG9ydCB7XG4gICAgdmFsaWRhdGVTdHJ1Y3R1cmUsXG4gICAgU3RydWN0dXJhbEtpbmQsXG4gICAgU3RydWN0dXJhbFJlc3VsdCxcbiAgICBTdHJ1Y3R1cmFsRXJyb3IsXG59IGZyb20gJy4vc3RydWN0dXJhbCc7XG5leHBvcnQge1xuICAgIGlzVmFsaWRIaXZlVHlwZSxcbiAgICBpc1ZhbGlkUG9zdGdyZXNUeXBlLFxufSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCB7XG4gICAgcGFyc2VJY2ViZXJnVHlwZSxcbiAgICBpc1ZhbGlkSWNlYmVyZ1R5cGUsXG4gICAgcGFyc2VJY2ViZXJnVHJhbnNmb3JtLFxuICAgIHRyYW5zZm9ybUxlZ2FsT25UeXBlLFxuICAgIEljZWJlcmdUeXBlLFxuICAgIEljZWJlcmdUeXBlS2luZCxcbiAgICBJY2ViZXJnVHJhbnNmb3JtLFxuICAgIEljZWJlcmdUcmFuc2Zvcm1LaW5kLFxufSBmcm9tICcuL2ljZWJlcmcnO1xuZXhwb3J0IHtcbiAgICBidWlsZERhZ0RvdCxcbn0gZnJvbSAnLi9kaWFncmFtL2RhZyc7XG5leHBvcnQge1xuICAgIGJ1aWxkRXJEb3QsXG59IGZyb20gJy4vZGlhZ3JhbS9lcic7XG5leHBvcnQge1xuICAgIHJlbmRlckRvdCxcbn0gZnJvbSAnLi9kaWFncmFtL3JlbmRlcic7XG4iXX0=
@@ -2,7 +2,8 @@
2
2
  * Top-level validation: load a dataset root (Layer 1) and run the semantic
3
3
  * rules (Layer 2), aggregating every violation.
4
4
  */
5
- import { ValidationResult } from './model';
5
+ import { ValidationResult, Violation } from './model';
6
+ import { World } from './world';
6
7
  /**
7
8
  * Validate a dataset root.
8
9
  *
@@ -11,3 +12,31 @@ import { ValidationResult } from './model';
11
12
  * @throws Error When `rootDir` is not an existing directory.
12
13
  */
13
14
  export declare function validateRoot(rootDir: string): ValidationResult;
15
+ /**
16
+ * Format a single violation as one human-readable line:
17
+ * `LEVEL [CODE] schema.table (field): message`. The location and field
18
+ * segments are omitted when absent.
19
+ *
20
+ * @param violation The violation to format.
21
+ * @returns The formatted line (no leading or trailing whitespace).
22
+ */
23
+ export declare function formatViolation(violation: Violation): string;
24
+ /** Options for {@link loadValidatedRoot}. */
25
+ export interface LoadValidatedOptions {
26
+ /**
27
+ * Called once for each surviving warning-level violation, in load order.
28
+ * Warnings never fail the load; this is the hook for surfacing them.
29
+ */
30
+ readonly onWarning?: (warning: Violation) => void;
31
+ }
32
+ /**
33
+ * Load a dataset root, run full validation (structural + semantic), and return
34
+ * the validated world. Throws when any error-level violation exists; warnings
35
+ * do not fail the load and are delivered to `options.onWarning` if provided.
36
+ *
37
+ * @param rootDir Path to the dataset root.
38
+ * @param options Optional callbacks, including `onWarning`.
39
+ * @returns The validated World.
40
+ * @throws Error When `rootDir` is not a directory, or any error-level violation is found.
41
+ */
42
+ export declare function loadValidatedRoot(rootDir: string, options?: LoadValidatedOptions): World;
@@ -5,6 +5,8 @@
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.validateRoot = validateRoot;
8
+ exports.formatViolation = formatViolation;
9
+ exports.loadValidatedRoot = loadValidatedRoot;
8
10
  const loader_1 = require("./loader");
9
11
  const world_1 = require("./world");
10
12
  /**
@@ -27,4 +29,51 @@ function validateRoot(rootDir) {
27
29
  violations: all,
28
30
  };
29
31
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7QUFtQkgsb0NBY0M7QUE1QkQscUNBRWtCO0FBQ2xCLG1DQUVpQjtBQUVqQjs7Ozs7O0dBTUc7QUFDSCxTQUFnQixZQUFZLENBQUMsT0FBZTtJQUN4QyxNQUFNLEVBQ0YsS0FBSyxFQUFFLFVBQVUsR0FDcEIsR0FBRyxJQUFBLGlCQUFRLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEIsTUFBTSxRQUFRLEdBQUcsSUFBQSx3QkFBZ0IsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxNQUFNLEdBQUcsR0FBRztRQUNSLEdBQUcsVUFBVTtRQUNiLEdBQUcsUUFBUTtLQUNkLENBQUM7SUFDRixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUM7SUFDakUsT0FBTztRQUNILEVBQUU7UUFDRixVQUFVLEVBQUUsR0FBRztLQUNsQixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVG9wLWxldmVsIHZhbGlkYXRpb246IGxvYWQgYSBkYXRhc2V0IHJvb3QgKExheWVyIDEpIGFuZCBydW4gdGhlIHNlbWFudGljXG4gKiBydWxlcyAoTGF5ZXIgMiksIGFnZ3JlZ2F0aW5nIGV2ZXJ5IHZpb2xhdGlvbi5cbiAqL1xuXG5pbXBvcnQge1xuICAgIFZhbGlkYXRpb25SZXN1bHQsXG59IGZyb20gJy4vbW9kZWwnO1xuaW1wb3J0IHtcbiAgICBsb2FkUm9vdCxcbn0gZnJvbSAnLi9sb2FkZXInO1xuaW1wb3J0IHtcbiAgICBydW5TZW1hbnRpY1J1bGVzLFxufSBmcm9tICcuL3dvcmxkJztcblxuLyoqXG4gKiBWYWxpZGF0ZSBhIGRhdGFzZXQgcm9vdC5cbiAqXG4gKiBAcGFyYW0gcm9vdERpciBQYXRoIHRvIHRoZSBkYXRhc2V0IHJvb3QuXG4gKiBAcmV0dXJucyBUaGUgYWdncmVnYXRlIHJlc3VsdC4gYG9rYCBpcyBmYWxzZSB3aGVuIGFueSBlcnJvci1sZXZlbCB2aW9sYXRpb24gZXhpc3RzLlxuICogQHRocm93cyBFcnJvciBXaGVuIGByb290RGlyYCBpcyBub3QgYW4gZXhpc3RpbmcgZGlyZWN0b3J5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVSb290KHJvb3REaXI6IHN0cmluZyk6IFZhbGlkYXRpb25SZXN1bHQge1xuICAgIGNvbnN0IHtcbiAgICAgICAgd29ybGQsIHZpb2xhdGlvbnMsIFxuICAgIH0gPSBsb2FkUm9vdChyb290RGlyKTtcbiAgICBjb25zdCBzZW1hbnRpYyA9IHJ1blNlbWFudGljUnVsZXMod29ybGQpO1xuICAgIGNvbnN0IGFsbCA9IFtcbiAgICAgICAgLi4udmlvbGF0aW9ucyxcbiAgICAgICAgLi4uc2VtYW50aWMsXG4gICAgXTtcbiAgICBjb25zdCBvayA9ICFhbGwuc29tZSgodmlvbGF0aW9uKSA9PiB2aW9sYXRpb24ubGV2ZWwgPT09ICdlcnJvcicpO1xuICAgIHJldHVybiB7XG4gICAgICAgIG9rLFxuICAgICAgICB2aW9sYXRpb25zOiBhbGwsXG4gICAgfTtcbn1cbiJdfQ==
32
+ /**
33
+ * Format a single violation as one human-readable line:
34
+ * `LEVEL [CODE] schema.table (field): message`. The location and field
35
+ * segments are omitted when absent.
36
+ *
37
+ * @param violation The violation to format.
38
+ * @returns The formatted line (no leading or trailing whitespace).
39
+ */
40
+ function formatViolation(violation) {
41
+ const location = [
42
+ violation.schema,
43
+ violation.table,
44
+ ].filter(Boolean).join('.');
45
+ const where = location ? ` ${location}` : '';
46
+ const field = violation.field ? ` (${violation.field})` : '';
47
+ return `${violation.level.toUpperCase()} [${violation.code}]${where}${field}: ${violation.message}`;
48
+ }
49
+ /**
50
+ * Load a dataset root, run full validation (structural + semantic), and return
51
+ * the validated world. Throws when any error-level violation exists; warnings
52
+ * do not fail the load and are delivered to `options.onWarning` if provided.
53
+ *
54
+ * @param rootDir Path to the dataset root.
55
+ * @param options Optional callbacks, including `onWarning`.
56
+ * @returns The validated World.
57
+ * @throws Error When `rootDir` is not a directory, or any error-level violation is found.
58
+ */
59
+ function loadValidatedRoot(rootDir, options) {
60
+ const { world, violations, } = (0, loader_1.loadRoot)(rootDir);
61
+ const all = [
62
+ ...violations,
63
+ ...(0, world_1.runSemanticRules)(world),
64
+ ];
65
+ const errors = all.filter((violation) => violation.level === 'error');
66
+ if (errors.length > 0) {
67
+ const detail = errors.map(formatViolation).join('\n');
68
+ throw new Error(`validation failed for "${rootDir}":\n${detail}`);
69
+ }
70
+ if (options?.onWarning) {
71
+ for (const warning of all) {
72
+ if (warning.level === 'warning') {
73
+ options.onWarning(warning);
74
+ }
75
+ }
76
+ }
77
+ return world;
78
+ }
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7QUFxQkgsb0NBY0M7QUFVRCwwQ0FRQztBQXFCRCw4Q0F3QkM7QUE1RkQscUNBRWtCO0FBQ2xCLG1DQUdpQjtBQUVqQjs7Ozs7O0dBTUc7QUFDSCxTQUFnQixZQUFZLENBQUMsT0FBZTtJQUN4QyxNQUFNLEVBQ0YsS0FBSyxFQUFFLFVBQVUsR0FDcEIsR0FBRyxJQUFBLGlCQUFRLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEIsTUFBTSxRQUFRLEdBQUcsSUFBQSx3QkFBZ0IsRUFBQyxLQUFLLENBQUMsQ0FBQztJQUN6QyxNQUFNLEdBQUcsR0FBRztRQUNSLEdBQUcsVUFBVTtRQUNiLEdBQUcsUUFBUTtLQUNkLENBQUM7SUFDRixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLENBQUM7SUFDakUsT0FBTztRQUNILEVBQUU7UUFDRixVQUFVLEVBQUUsR0FBRztLQUNsQixDQUFDO0FBQ04sQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixlQUFlLENBQUMsU0FBb0I7SUFDaEQsTUFBTSxRQUFRLEdBQUc7UUFDYixTQUFTLENBQUMsTUFBTTtRQUNoQixTQUFTLENBQUMsS0FBSztLQUNsQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDN0MsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM3RCxPQUFPLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxTQUFTLENBQUMsSUFBSSxJQUFJLEtBQUssR0FBRyxLQUFLLEtBQUssU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3hHLENBQUM7QUFXRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxPQUFlLEVBQUUsT0FBOEI7SUFDN0UsTUFBTSxFQUNGLEtBQUssRUFBRSxVQUFVLEdBQ3BCLEdBQUcsSUFBQSxpQkFBUSxFQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RCLE1BQU0sR0FBRyxHQUFHO1FBQ1IsR0FBRyxVQUFVO1FBQ2IsR0FBRyxJQUFBLHdCQUFnQixFQUFDLEtBQUssQ0FBQztLQUM3QixDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUMsQ0FBQztJQUN0RSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDcEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsT0FBTyxPQUFPLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELElBQUksT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3JCLEtBQUssTUFBTSxPQUFPLElBQUksR0FBRyxFQUFFLENBQUM7WUFDeEIsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUM5QixPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9CLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRvcC1sZXZlbCB2YWxpZGF0aW9uOiBsb2FkIGEgZGF0YXNldCByb290IChMYXllciAxKSBhbmQgcnVuIHRoZSBzZW1hbnRpY1xuICogcnVsZXMgKExheWVyIDIpLCBhZ2dyZWdhdGluZyBldmVyeSB2aW9sYXRpb24uXG4gKi9cblxuaW1wb3J0IHtcbiAgICBWYWxpZGF0aW9uUmVzdWx0LFxuICAgIFZpb2xhdGlvbixcbn0gZnJvbSAnLi9tb2RlbCc7XG5pbXBvcnQge1xuICAgIGxvYWRSb290LFxufSBmcm9tICcuL2xvYWRlcic7XG5pbXBvcnQge1xuICAgIHJ1blNlbWFudGljUnVsZXMsXG4gICAgV29ybGQsXG59IGZyb20gJy4vd29ybGQnO1xuXG4vKipcbiAqIFZhbGlkYXRlIGEgZGF0YXNldCByb290LlxuICpcbiAqIEBwYXJhbSByb290RGlyIFBhdGggdG8gdGhlIGRhdGFzZXQgcm9vdC5cbiAqIEByZXR1cm5zIFRoZSBhZ2dyZWdhdGUgcmVzdWx0LiBgb2tgIGlzIGZhbHNlIHdoZW4gYW55IGVycm9yLWxldmVsIHZpb2xhdGlvbiBleGlzdHMuXG4gKiBAdGhyb3dzIEVycm9yIFdoZW4gYHJvb3REaXJgIGlzIG5vdCBhbiBleGlzdGluZyBkaXJlY3RvcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVJvb3Qocm9vdERpcjogc3RyaW5nKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gICAgY29uc3Qge1xuICAgICAgICB3b3JsZCwgdmlvbGF0aW9ucyxcbiAgICB9ID0gbG9hZFJvb3Qocm9vdERpcik7XG4gICAgY29uc3Qgc2VtYW50aWMgPSBydW5TZW1hbnRpY1J1bGVzKHdvcmxkKTtcbiAgICBjb25zdCBhbGwgPSBbXG4gICAgICAgIC4uLnZpb2xhdGlvbnMsXG4gICAgICAgIC4uLnNlbWFudGljLFxuICAgIF07XG4gICAgY29uc3Qgb2sgPSAhYWxsLnNvbWUoKHZpb2xhdGlvbikgPT4gdmlvbGF0aW9uLmxldmVsID09PSAnZXJyb3InKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBvayxcbiAgICAgICAgdmlvbGF0aW9uczogYWxsLFxuICAgIH07XG59XG5cbi8qKlxuICogRm9ybWF0IGEgc2luZ2xlIHZpb2xhdGlvbiBhcyBvbmUgaHVtYW4tcmVhZGFibGUgbGluZTpcbiAqIGBMRVZFTCBbQ09ERV0gc2NoZW1hLnRhYmxlIChmaWVsZCk6IG1lc3NhZ2VgLiBUaGUgbG9jYXRpb24gYW5kIGZpZWxkXG4gKiBzZWdtZW50cyBhcmUgb21pdHRlZCB3aGVuIGFic2VudC5cbiAqXG4gKiBAcGFyYW0gdmlvbGF0aW9uIFRoZSB2aW9sYXRpb24gdG8gZm9ybWF0LlxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBsaW5lIChubyBsZWFkaW5nIG9yIHRyYWlsaW5nIHdoaXRlc3BhY2UpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VmlvbGF0aW9uKHZpb2xhdGlvbjogVmlvbGF0aW9uKTogc3RyaW5nIHtcbiAgICBjb25zdCBsb2NhdGlvbiA9IFtcbiAgICAgICAgdmlvbGF0aW9uLnNjaGVtYSxcbiAgICAgICAgdmlvbGF0aW9uLnRhYmxlLFxuICAgIF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy4nKTtcbiAgICBjb25zdCB3aGVyZSA9IGxvY2F0aW9uID8gYCAke2xvY2F0aW9ufWAgOiAnJztcbiAgICBjb25zdCBmaWVsZCA9IHZpb2xhdGlvbi5maWVsZCA/IGAgKCR7dmlvbGF0aW9uLmZpZWxkfSlgIDogJyc7XG4gICAgcmV0dXJuIGAke3Zpb2xhdGlvbi5sZXZlbC50b1VwcGVyQ2FzZSgpfSBbJHt2aW9sYXRpb24uY29kZX1dJHt3aGVyZX0ke2ZpZWxkfTogJHt2aW9sYXRpb24ubWVzc2FnZX1gO1xufVxuXG4vKiogT3B0aW9ucyBmb3Ige0BsaW5rIGxvYWRWYWxpZGF0ZWRSb290fS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZFZhbGlkYXRlZE9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIENhbGxlZCBvbmNlIGZvciBlYWNoIHN1cnZpdmluZyB3YXJuaW5nLWxldmVsIHZpb2xhdGlvbiwgaW4gbG9hZCBvcmRlci5cbiAgICAgKiBXYXJuaW5ncyBuZXZlciBmYWlsIHRoZSBsb2FkOyB0aGlzIGlzIHRoZSBob29rIGZvciBzdXJmYWNpbmcgdGhlbS5cbiAgICAgKi9cbiAgICByZWFkb25seSBvbldhcm5pbmc/OiAod2FybmluZzogVmlvbGF0aW9uKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIExvYWQgYSBkYXRhc2V0IHJvb3QsIHJ1biBmdWxsIHZhbGlkYXRpb24gKHN0cnVjdHVyYWwgKyBzZW1hbnRpYyksIGFuZCByZXR1cm5cbiAqIHRoZSB2YWxpZGF0ZWQgd29ybGQuIFRocm93cyB3aGVuIGFueSBlcnJvci1sZXZlbCB2aW9sYXRpb24gZXhpc3RzOyB3YXJuaW5nc1xuICogZG8gbm90IGZhaWwgdGhlIGxvYWQgYW5kIGFyZSBkZWxpdmVyZWQgdG8gYG9wdGlvbnMub25XYXJuaW5nYCBpZiBwcm92aWRlZC5cbiAqXG4gKiBAcGFyYW0gcm9vdERpciBQYXRoIHRvIHRoZSBkYXRhc2V0IHJvb3QuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBjYWxsYmFja3MsIGluY2x1ZGluZyBgb25XYXJuaW5nYC5cbiAqIEByZXR1cm5zIFRoZSB2YWxpZGF0ZWQgV29ybGQuXG4gKiBAdGhyb3dzIEVycm9yIFdoZW4gYHJvb3REaXJgIGlzIG5vdCBhIGRpcmVjdG9yeSwgb3IgYW55IGVycm9yLWxldmVsIHZpb2xhdGlvbiBpcyBmb3VuZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRWYWxpZGF0ZWRSb290KHJvb3REaXI6IHN0cmluZywgb3B0aW9ucz86IExvYWRWYWxpZGF0ZWRPcHRpb25zKTogV29ybGQge1xuICAgIGNvbnN0IHtcbiAgICAgICAgd29ybGQsIHZpb2xhdGlvbnMsXG4gICAgfSA9IGxvYWRSb290KHJvb3REaXIpO1xuICAgIGNvbnN0IGFsbCA9IFtcbiAgICAgICAgLi4udmlvbGF0aW9ucyxcbiAgICAgICAgLi4ucnVuU2VtYW50aWNSdWxlcyh3b3JsZCksXG4gICAgXTtcblxuICAgIGNvbnN0IGVycm9ycyA9IGFsbC5maWx0ZXIoKHZpb2xhdGlvbikgPT4gdmlvbGF0aW9uLmxldmVsID09PSAnZXJyb3InKTtcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgZGV0YWlsID0gZXJyb3JzLm1hcChmb3JtYXRWaW9sYXRpb24pLmpvaW4oJ1xcbicpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHZhbGlkYXRpb24gZmFpbGVkIGZvciBcIiR7cm9vdERpcn1cIjpcXG4ke2RldGFpbH1gKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucz8ub25XYXJuaW5nKSB7XG4gICAgICAgIGZvciAoY29uc3Qgd2FybmluZyBvZiBhbGwpIHtcbiAgICAgICAgICAgIGlmICh3YXJuaW5nLmxldmVsID09PSAnd2FybmluZycpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLm9uV2FybmluZyh3YXJuaW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB3b3JsZDtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flexdataset",
3
- "version": "0.19.1",
3
+ "version": "0.20.0",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Flexible Dataset Definition (FDD) — validator and tooling for the FDD dataset standard.",
6
6
  "author": "Rodrigo Carvajal",