@jpapini/unplugin-deepkit-type
Version:
Unplugin for using Deepkit type with various build tools.
1 lines • 3.97 kB
Source Map (JSON)
{"version":3,"sources":["../src/unplugin.ts"],"names":["createFilter","transformer","declarationTransformer","path","ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWO,IAAM,eAAwD,GAAA,CAAC,OAAU,GAAA,EAAO,KAAA;AACnF,EAAA,MAAM,MAAS,GAAAA,0BAAA;AAAA,IACX,QAAQ,OAAW,IAAA,kBAAA;AAAA,IACnB,QAAQ,OAAW,IAAA;AAAA,GACvB;AAEA,EAAM,MAAA,YAAA,GAAe,QAAQ,YAAgB,IAAA;AAAA,IACzC,MAAA,EAAQ,CAACC,wBAAW,CAAA;AAAA,IACpB,KAAA,EAAO,CAACC,mCAAsB;AAAA,GAClC;AAEA,EAAA,MAAM,cAAiB,GAAA,OAAA,CAAQ,QAAY,IAAAC,qBAAA,CAAK,QAAQ,eAAe,CAAA;AACvE,EAAA,MAAM,QAAc,GAAAC,aAAA,CAAA,cAAA;AAAA,IAChB,cAAA;AAAA,IACA,QAAQ,QAAa,KAAA,CAAC,CAAS,KAAAA,aAAA,CAAA,GAAA,CAAI,SAAS,CAAC,CAAA;AAAA,GACjD;AAEA,EAAA,IAAI,SAAS,KAAO,EAAA;AAChB,IAAA,MAAM,IAAI,KAAA;AAAA,MACHA,aAAA,CAAA,gBAAA,CAAiB,SAAS,KAAO,EAAA;AAAA,QAChC,oBAAA,EAAsB,CAAC,QAAqB,KAAA,QAAA;AAAA,QAC5C,mBAAA,EAAqB,MAASA,aAAA,CAAA,GAAA,CAAI,mBAAoB,EAAA;AAAA,QACtD,UAAA,EAAY,MAASA,aAAI,CAAA,GAAA,CAAA;AAAA,OAC5B;AAAA,KACL;AAAA;AAGJ,EAAA,MAAM,eAAmC,GAAA;AAAA,IACrC,QAAWA,aAAa,CAAA,YAAA,CAAA,MAAA;AAAA,IACxB,QAAWA,aAAW,CAAA,UAAA,CAAA,MAAA;AAAA,IACtB,cAAA;AAAA,IACA,GAAI,QAAS,CAAA,MAAA;AAAA,IACb,GAAI,OAAQ,CAAA,eAAA,IAAmB;AAAC,GACpC;AAEA,EAAO,OAAA;AAAA,IACH,IAAM,EAAA,uBAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,IACT,gBAAkB,EAAA,CAAC,EAAe,KAAA,MAAA,CAAO,EAAE,CAAA;AAAA,IAC3C,SAAA,EAAW,CAAC,IAAA,EAAc,QAAqB,KAAA;AAC3C,MAAM,MAAA,WAAA,GAAiBA,8BAAgB,IAAM,EAAA;AAAA,QACzC,eAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACH,CAAA;AACD,MAAO,OAAA;AAAA,QACH,MAAM,WAAY,CAAA,UAAA;AAAA,QAClB,GAAI,YAAY,aACV,GAAA;AAAA,UACI,KAAK,WAAY,CAAA;AAAA,YAErB;AAAC,OACX;AAAA;AACJ,GACJ;AACJ;AAEa,IAAA,QAAA,6CAA0C,eAAe;AAEtE,IAAO,gBAAQ,GAAA","file":"chunk-DQIB3NT6.cjs","sourcesContent":["import path from 'node:path';\n\nimport { transformer, declarationTransformer } from '@deepkit/type-compiler';\nimport * as ts from 'typescript';\nimport type { CompilerOptions } from 'typescript';\nimport type { UnpluginFactory } from 'unplugin';\nimport { createUnplugin } from 'unplugin';\nimport { createFilter } from 'unplugin-utils';\n\nimport type { Options } from './types';\n\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (options = {}) => {\n const filter = createFilter(\n options.include ?? /\\.(?:m|c)?tsx?$/u,\n options.exclude ?? 'node_modules/**',\n );\n\n const transformers = options.transformers ?? {\n before: [transformer],\n after: [declarationTransformer],\n };\n\n const configFilePath = options.tsConfig ?? path.resolve('tsconfig.json');\n const tsConfig = ts.readConfigFile(\n configFilePath,\n options.readFile ?? ((p) => ts.sys.readFile(p)),\n );\n\n if (tsConfig.error) {\n throw new Error(\n ts.formatDiagnostic(tsConfig.error, {\n getCanonicalFileName: (fileName: string) => fileName,\n getCurrentDirectory: () => ts.sys.getCurrentDirectory(),\n getNewLine: () => ts.sys.newLine,\n }),\n );\n }\n\n const compilerOptions: CompilerOptions = {\n target: ts.ScriptTarget.ESNext,\n module: ts.ModuleKind.ESNext,\n configFilePath,\n ...(tsConfig.config as CompilerOptions),\n ...(options.compilerOptions ?? {}),\n };\n\n return {\n name: 'unplugin-deepkit-type',\n enforce: 'pre',\n transformInclude: (id: string) => filter(id),\n transform: (code: string, fileName: string) => {\n const transformed = ts.transpileModule(code, {\n compilerOptions,\n fileName,\n transformers,\n });\n return {\n code: transformed.outputText,\n ...(transformed.sourceMapText\n ? {\n map: transformed.sourceMapText,\n }\n : {}),\n };\n },\n };\n};\n\nexport const unplugin = /* #__PURE__ */ createUnplugin(unpluginFactory);\n\nexport default unplugin;\n"]}