UNPKG

@dpkit/core

Version:

Fast TypeScript data management framework built on top of the Data Package standard and Polars DataFrames

30 lines (23 loc) 936 B
import { type Descriptor, validateDescriptor } from "../general/index.ts" import { loadProfile } from "../general/index.ts" import type { Dialect } from "./Dialect.ts" import { normalizeDialect } from "./normalize.ts" const DEFAULT_PROFILE = "https://datapackage.org/profiles/1.0/tabledialect.json" /** * Validate a Dialect descriptor (JSON Object) against its profile */ export async function validateDialect(source: Descriptor | Dialect) { const descriptor = source as Descriptor const $schema = typeof descriptor.$schema === "string" ? descriptor.$schema : DEFAULT_PROFILE const profile = await loadProfile($schema) const { valid, errors } = await validateDescriptor(descriptor, { profile }) let dialect: Dialect | undefined = undefined if (valid) { // Validation + normalization = we can cast it dialect = normalizeDialect(descriptor) as Dialect } return { valid, errors, dialect } }