CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
index.ts63 linesDownload Raw Back to src
1import {2  DefinedFormats,3  FormatMode,4  FormatName,5  formatNames,6  fastFormats,7  fullFormats,8} from "./formats"9import formatLimit from "./limit"10import type Ajv from "ajv"11import type {Plugin, Format} from "ajv"12import {_, Name} from "ajv/dist/compile/codegen"13 14export {FormatMode, FormatName} from "./formats"15export {LimitFormatError} from "./limit"16export interface FormatOptions {17  mode?: FormatMode18  formats?: FormatName[]19  keywords?: boolean20}21 22export type FormatsPluginOptions = FormatName[] | FormatOptions23 24export interface FormatsPlugin extends Plugin<FormatsPluginOptions> {25  get: (format: FormatName, mode?: FormatMode) => Format26}27 28const fullName = new Name("fullFormats")29const fastName = new Name("fastFormats")30 31const formatsPlugin: FormatsPlugin = (32  ajv: Ajv,33  opts: FormatsPluginOptions = {keywords: true}34): Ajv => {35  if (Array.isArray(opts)) {36    addFormats(ajv, opts, fullFormats, fullName)37    return ajv38  }39  const [formats, exportName] =40    opts.mode === "fast" ? [fastFormats, fastName] : [fullFormats, fullName]41  const list = opts.formats || formatNames42  addFormats(ajv, list, formats, exportName)43  if (opts.keywords) formatLimit(ajv)44  return ajv45}46 47formatsPlugin.get = (name: FormatName, mode: FormatMode = "full"): Format => {48  const formats = mode === "fast" ? fastFormats : fullFormats49  const f = formats[name]50  if (!f) throw new Error(`Unknown format "${name}"`)51  return f52}53 54function addFormats(ajv: Ajv, list: FormatName[], fs: DefinedFormats, exportName: Name): void {55  ajv.opts.code.formats ??= _`require("ajv-formats/dist/formats").${exportName}`56  for (const f of list) ajv.addFormat(f, fs[f])57}58 59module.exports = exports = formatsPlugin60Object.defineProperty(exports, "__esModule", {value: true})61 62export default formatsPlugin63 
basant307/AI_Governance_Project · CoolFace