UNPKG

@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
"use strict"; 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", }, ];