Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | /** * @license * Copyright 2022 Open Ag Data Alliance * * Use of this source code is governed by an MIT-style * license that can be found in the LICENSE file or at * https://opensource.org/licenses/MIT. */ import { createRequire } from 'node:module'; import path from 'node:path'; import url from 'node:url'; import type { JSONSchema8 as Schema } from 'jsonschema8'; import globP from 'glob-promise'; const dirname = path.dirname(url.fileURLToPath(import.meta.url)); const schemas = await globP('/**/*.schema.{c,m,}{ts,js}', { cwd: dirname, root: dirname, nomount: true, }); /** * Every .schema.ts file we have */ export const glob = schemas.map((key) => key.replace(/\/+/, '/').replace(/\.[cm]?[jt]s$/, '.json') ); export const requireSchema: (path: string) => Schema = createRequire( path.join(dirname, 'schemas') ); export class SchemaInfo { #schema; key: string; path: string; constructor(key: string) { this.path = path.join(dirname, key); this.key = key; const inFile = this.key.replace(/^\//, './').replace(/\.json$/, ''); this.#schema = requireSchema(inFile); } get schema(): Schema { return this.#schema; } } /** * Load all the schemas */ function* loadAllFormats(): Generator<SchemaInfo, void, void> { for (const key of glob) { yield new SchemaInfo(key); } } export default loadAllFormats; |