collab/mermaid/.vite/jsonSchemaPlugin.tsblame
View source
6dd74de1import type { PluginOption } from 'vite';
6dd74de2import { getDefaults, getSchema, loadSchema } from '../.build/jsonSchema.js';
6dd74de3
6dd74de4/**
6dd74de5 * Vite plugin that handles JSON Schemas saved as a `.schema.yaml` file.
6dd74de6 *
6dd74de7 * Use `my-example.schema.yaml?only-defaults=true` to only load the default values.
6dd74de8 */
6dd74de9export default function jsonSchemaPlugin(): PluginOption {
6dd74de10 return {
6dd74de11 name: 'json-schema-plugin',
6dd74de12 transform(src: string, id: string) {
6dd74de13 const idAsUrl = new URL(id, 'file:///');
6dd74de14
6dd74de15 if (!idAsUrl.pathname.endsWith('schema.yaml')) {
6dd74de16 return;
6dd74de17 }
6dd74de18
6dd74de19 const jsonSchema = loadSchema(src, idAsUrl.pathname);
6dd74de20 return {
6dd74de21 code: idAsUrl.searchParams.get('only-defaults')
6dd74de22 ? getDefaults(jsonSchema)
6dd74de23 : getSchema(jsonSchema),
6dd74de24 map: null, // no source map
6dd74de25 };
6dd74de26 },
6dd74de27 };
6dd74de28}