UNPKG

@clawject/di

Version:

<p align="center"> <a href="https://clawject.com/" target="_blank"><img src="https://clawject.com/img/logo.svg" align="center" alt="Clawject Logo" width="120" height="120" /></a> </p>

70 lines (69 loc) 2.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.unplugin = exports.unpluginFactory = void 0; const unplugin_1 = require("unplugin"); const types_1 = require("./types"); const pluginutils_1 = require("@rollup/pluginutils"); const PluginCompiler_1 = require("./core/PluginCompiler"); const ProgramStorage_1 = require("./core/ProgramStorage"); const ErrorsReporter_1 = require("./core/ErrorsReporter"); const Context_1 = require("@clawject/core/compilation-context/Context"); const excludedFrameworksForReportingErrorsDuringTransform = new Set([ 'webpack', 'rspack' ]); const unpluginFactory = (maybeOptions, meta) => { const options = (0, types_1.resolveOptions)(maybeOptions); const filter = (0, pluginutils_1.createFilter)(options.include, options.exclude); const errorsReporter = new ErrorsReporter_1.ErrorsReporter(); const programStorage = new ProgramStorage_1.ProgramStorage(options); const pluginCompiler = new PluginCompiler_1.PluginCompiler(programStorage); Context_1.Context.areErrorsHandled = true; const enforce = options.skipCompilation ? 'post' : 'pre'; return { name: 'clawject-unplugin', enforce, transformInclude(id) { return filter(id); }, async transform(source, id) { const reportErrorsCallback = this.error.bind(this); const reportErrors = () => { if (!excludedFrameworksForReportingErrorsDuringTransform.has(meta.framework)) { errorsReporter.reportErrors(reportErrorsCallback); } }; if (options.skipCompilation) { reportErrors(); return null; } const result = await pluginCompiler.transform(id, source); reportErrors(); return result; }, async watchChange(id, event) { if (event.event === 'delete') { await programStorage.deleteFile(id); } }, webpack(compiler) { compiler.hooks.afterEmit.tap('clawject-unplugin', async (compilation) => { errorsReporter.reportErrors(error => { compilation.errors.push(new Error(error.message)); }); }); }, rspack(compiler) { compiler.hooks.afterEmit.tap('clawject-unplugin', async (compilation) => { errorsReporter.reportErrors(error => { compilation.errors.push(new Error(error.message)); }); }); } }; }; exports.unpluginFactory = unpluginFactory; /** @public */ exports.unplugin = (0, unplugin_1.createUnplugin)(exports.unpluginFactory); /** @public */ exports.default = exports.unplugin;