refactor: revert json schema changes

This commit is contained in:
2023-11-01 14:44:45 +01:00
parent 0de613969e
commit d18a579cb8
22 changed files with 173 additions and 371 deletions

View File

@@ -3,41 +3,35 @@ import {generateFiles, Plugin, PluginContext} from '@openstapps/tsup-plugin';
import {JSONSchema7} from 'json-schema';
import {Plugin as EsbuildPlugin} from 'esbuild';
import {createGenerator} from 'ts-json-schema-generator';
import {dirname} from 'path';
export type SchemaConsumer = (this: PluginContext, schema: JSONSchema7) => Record<string, string | Buffer>;
export const esbuildJsonSchemaPlugin: EsbuildPlugin = {
export const jsonSchema: EsbuildPlugin = {
name: 'json-schema',
setup(build) {
const fileRegex = /^schema:/;
const namespace = 'json-schema-ns';
const schemas = new Map<string, string>();
build.onResolve({filter: fileRegex}, async ({path, importer}) => {
const [from, name] = path.replace(fileRegex, '').split('#', 2);
const outputName = `${name}.schema.json`;
if (!schemas.has(outputName)) {
const generator = createGenerator({
path: from
? await build
.resolve(from, {resolveDir: dirname(importer), kind: 'import-statement'})
.then(it => it.path)
: importer,
extraTags: ['elasticsearch'],
skipTypeCheck: true,
});
schemas.set(outputName, JSON.stringify(generator.createSchema(name)));
}
build.onResolve({filter: fileRegex}, ({path, importer}) => {
const [from, name] = path.replace(fileRegex, '').split('#', 1);
return {
path: outputName,
pluginData: {schema: JSON.parse(schemas.get(outputName)!)},
path: `${from === 'file' ? importer : from}#${name}`,
namespace,
};
});
build.onLoad({filter: /.*/, namespace}, ({path}) => {
if (!schemas.has(path)) {
const [sourcePath, schemaName] = path.split('#', 1);
const generator = createGenerator({
path: sourcePath,
extraTags: ['elasticsearch'],
skipTypeCheck: true,
});
schemas.set(path, JSON.stringify(generator.createSchema(schemaName)));
}
return {
contents: schemas.get(path),
loader: 'json',