@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
JavaScript
;
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;