@wroud/di-tools-codemod
Version:
@wroud/di-tools-codemod is a codemod utility that automates the migration of your codebase from Inversify to @wroud/di. It streamlines the transformation process, allowing for effortless and customizable transitions through configuration support.
45 lines (44 loc) • 1.54 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.parser = void 0;
exports.default = transform;
const transformDecorators_js_1 = require("./transformDecorators.js");
const transformImports_js_1 = require("./transformImports.js");
const addServiceToModule_js_1 = require("./addServiceToModule.js");
exports.parser = "tsx";
function transform(file, api, cliOptions) {
const options = {
generateModule: true,
...cliOptions,
transformer: {
esm: false,
...cliOptions?.transformer,
},
};
const j = api.jscodeshift;
const root = j(file.source);
const packages = getSupportedPackages(options);
const replacingPackage = (0, transformImports_js_1.transformImports)(j, root, packages);
if (replacingPackage) {
const decoratedClasses = (0, transformDecorators_js_1.transformDecorators)(j, root, replacingPackage);
if (decoratedClasses.length && options.generateModule) {
(0, addServiceToModule_js_1.addServiceToModule)(file, j, options.transformer, decoratedClasses, replacingPackage);
}
}
return root.toSource();
}
function getSupportedPackages(options) {
if (options?.supportedPackages) {
return options.supportedPackages;
}
return basePackages;
}
const basePackages = [
{
name: "inversify",
replace: "@wroud/di",
injectableDecorator: "injectable",
injectDecorator: "inject",
multiInjectDecorator: "multiInject",
},
];
;