UNPKG

rollup-plugin-type-as-json-schema

Version:
1 lines 4.99 kB
{"version":3,"file":"index.mjs","sources":["../src/index.js"],"sourcesContent":["import {createGenerator} from 'ts-json-schema-generator';\n\n/** @typedef { import('../index').Options } Options */\n/** @typedef { import('rollup').Plugin } Plugin */\n\nconst SCHEMA_QUERY = '?json-schema-source';\n\n/**\n * Rollup plugin\n * @param {Options} options\n * @return {Plugin} plugin\n */\nexport default function typeAsJsonSchemaPlugin({\n mapTsId: mapTsSource = defaultResolveTsSource,\n mapExportName = defaultMapExportName,\n config\n} = {}) {\n const defaultConfig = {\n topRef: false,\n skipTypeCheck: true,\n // https://github.com/vega/ts-json-schema-generator/blob/f55be9f00c67d6ef5c13ee7d45f1dd378162fbf4/src/AnnotationsReader/BasicAnnotationsReader.ts#L86\n extraTags: ['faker'],\n type: '*' // Or <type-name> if you want to generate schema for that one type only\n };\n\n return {\n name: 'type-as-json-schema',\n async resolveId(source, importer, options) {\n const tsSource = mapTsSource(source, importer);\n if (tsSource) {\n const tsFile = await this.resolve(tsSource, importer, {\n ...options,\n skipSelf: true\n });\n return tsFile && tsFile.id + SCHEMA_QUERY;\n }\n },\n load(id) {\n if (id.endsWith(SCHEMA_QUERY)) {\n const tsFile = id.slice(0, -SCHEMA_QUERY.length);\n const generator = createGenerator({\n ...defaultConfig,\n ...config,\n path: tsFile\n });\n const symbols = generator\n // @ts-ignore\n .getRootNodes()\n .map((n) => n.symbol.escapedName);\n\n this.addWatchFile(tsFile);\n\n return symbols\n .map((sym) => {\n const schema = generator.createSchema(sym);\n const jsonSchema = JSON.stringify(schema);\n if (sym === 'default') return `export default ${jsonSchema};`;\n return `export const ${mapExportName(sym)} = ${jsonSchema};`;\n })\n .join('\\n');\n }\n }\n };\n}\n\n/**\n * default map ts source\n * @param {string} id schema source\n * @returns {string | void}\n */\nexport function defaultResolveTsSource(id) {\n if (id.endsWith('.schema')) return id.slice(0, -'.schema'.length);\n}\n\nexport function defaultMapExportName(sym) {\n return `${sym[0].toLocaleLowerCase() + sym.slice(1)}Schema`;\n}\n"],"names":["SCHEMA_QUERY","typeAsJsonSchemaPlugin","mapTsId","mapTsSource","defaultResolveTsSource","mapExportName","defaultMapExportName","config","defaultConfig","topRef","skipTypeCheck","extraTags","type","name","resolveId","source","importer","options","tsSource","tsFile","resolve","skipSelf","id","load","endsWith","slice","length","generator","createGenerator","path","symbols","getRootNodes","map","n","symbol","escapedName","addWatchFile","sym","schema","createSchema","jsonSchema","JSON","stringify","join","toLocaleLowerCase"],"mappings":"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"}