@jpapini/unplugin-deepkit-type
Version:
Unplugin for using Deepkit type with various build tools.
62 lines (60 loc) • 1.86 kB
JavaScript
import path from 'node:path';
import { declarationTransformer, transformer } from '@deepkit/type-compiler';
import * as ts from 'typescript';
import { createUnplugin } from 'unplugin';
import { createFilter } from 'unplugin-utils';
// src/unplugin.ts
var unpluginFactory = (options = {}) => {
const filter = createFilter(
options.include ?? /\.(?:m|c)?tsx?$/u,
options.exclude ?? "node_modules/**"
);
const transformers = options.transformers ?? {
before: [transformer],
after: [declarationTransformer]
};
const configFilePath = options.tsConfig ?? path.resolve("tsconfig.json");
const tsConfig = ts.readConfigFile(
configFilePath,
options.readFile ?? ((p) => ts.sys.readFile(p))
);
if (tsConfig.error) {
throw new Error(
ts.formatDiagnostic(tsConfig.error, {
getCanonicalFileName: (fileName) => fileName,
getCurrentDirectory: () => ts.sys.getCurrentDirectory(),
getNewLine: () => ts.sys.newLine
})
);
}
const compilerOptions = {
target: ts.ScriptTarget.ESNext,
module: ts.ModuleKind.ESNext,
configFilePath,
...tsConfig.config,
...options.compilerOptions ?? {}
};
return {
name: "unplugin-deepkit-type",
enforce: "pre",
transformInclude: (id) => filter(id),
transform: (code, fileName) => {
const transformed = ts.transpileModule(code, {
compilerOptions,
fileName,
transformers
});
return {
code: transformed.outputText,
...transformed.sourceMapText ? {
map: transformed.sourceMapText
} : {}
};
}
};
};
var unplugin = /* @__PURE__ */ createUnplugin(unpluginFactory);
var unplugin_default = unplugin;
export { unplugin, unpluginFactory, unplugin_default };
//# sourceMappingURL=chunk-6HXVT5ZG.mjs.map
//# sourceMappingURL=chunk-6HXVT5ZG.mjs.map