@vkontakte/vkui-codemods 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,12 +7,23 @@ exports.TRANSFORM_DIR = void 0;
7
7
  var fs_1 = __importDefault(require("fs"));
8
8
  exports.TRANSFORM_DIR = "".concat(__dirname, "/transforms");
9
9
  var CODEMODS = [];
10
- function getAvailableCodemods() {
10
+ var swapElementsOfArray = function (a, b, array) {
11
+ if (a === -1 || b === -1) {
12
+ return;
13
+ }
14
+ var valueA = array[a];
15
+ var valueB = array[b];
16
+ array[b] = valueA;
17
+ array[a] = valueB;
18
+ };
19
+ function getAvailableCodemods(dirname) {
20
+ if (dirname === void 0) { dirname = exports.TRANSFORM_DIR; }
11
21
  if (CODEMODS.length === 0) {
12
22
  CODEMODS = fs_1.default
13
- .readdirSync(exports.TRANSFORM_DIR)
14
- .filter(function (fname) { return fname.endsWith('.js'); })
23
+ .readdirSync(dirname)
24
+ .filter(function (fname) { return fname.endsWith('.js') || fname.endsWith('.ts'); })
15
25
  .map(function (fname) { return fname.slice(0, -3); });
26
+ swapElementsOfArray(CODEMODS.findIndex(function (fname) { return fname === 'text-tooltip'; }), CODEMODS.findIndex(function (fname) { return fname === 'tooltip'; }), CODEMODS);
16
27
  }
17
28
  return CODEMODS;
18
29
  }
package/dist/report.js CHANGED
@@ -8,7 +8,7 @@ var chalk_1 = __importDefault(require("chalk"));
8
8
  var package_json_1 = __importDefault(require("../package.json"));
9
9
  function report(api, message) {
10
10
  var report = api.report;
11
- var finalMessage = "".concat(message, " Advise ").concat(chalk_1.default.white.bgBlue.bold('migration guide'), " - ").concat(package_json_1.default.homepage, "#/Migration \n\n");
11
+ var finalMessage = "".concat(message, " Advise ").concat(chalk_1.default.white.bgBlue.bold('migration guide'), " - ").concat(package_json_1.default.homepage, "#/Migrations \n\n");
12
12
  try {
13
13
  report(finalMessage);
14
14
  }
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.defineSnapshotTestFromFixture = void 0;
6
+ exports.defineSnapshotTestFromFixture = exports.getTestFixturesInputPath = exports.applyTransform = void 0;
7
7
  /**
8
8
  * Adopted version of https://github.com/facebook/jscodeshift/blob/v0.15.0/src/testUtils.js
9
9
  * TODO [jscodeshift@>0.13.0]: Remove it
@@ -11,8 +11,14 @@ exports.defineSnapshotTestFromFixture = void 0;
11
11
  */
12
12
  var fs_1 = __importDefault(require("fs"));
13
13
  var path_1 = __importDefault(require("path"));
14
- // @ts-expect-error: TS7016 no types for package
15
14
  var testUtils_1 = require("jscodeshift/dist/testUtils");
15
+ Object.defineProperty(exports, "applyTransform", { enumerable: true, get: function () { return testUtils_1.applyTransform; } });
16
+ function getTestFixturesInputPath(dirName, testFilePrefix, extension) {
17
+ if (extension === void 0) { extension = 'tsx'; }
18
+ var fixtureDir = path_1.default.join(dirName, '..', '__testfixtures__');
19
+ return path_1.default.join(fixtureDir, testFilePrefix + ".input.".concat(extension));
20
+ }
21
+ exports.getTestFixturesInputPath = getTestFixturesInputPath;
16
22
  /**
17
23
  * Handles file-loading boilerplates, using same defaults as defineTest
18
24
  */
@@ -20,8 +26,7 @@ function defineSnapshotTestFromFixture(dirName, transformName, options, testFile
20
26
  if (extension === void 0) { extension = 'tsx'; }
21
27
  // Assumes transform is one level up from __tests__ directory
22
28
  var module = require(path_1.default.join(dirName, '..', transformName));
23
- var fixtureDir = path_1.default.join(dirName, '..', '__testfixtures__');
24
- var inputPath = path_1.default.join(fixtureDir, testFilePrefix + ".input.".concat(extension));
29
+ var inputPath = getTestFixturesInputPath(dirName, testFilePrefix, extension);
25
30
  var source = fs_1.default.readFileSync(inputPath, 'utf8');
26
31
  (0, testUtils_1.defineSnapshotTest)(module, options, source, 'transforms correctly');
27
32
  }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parser = void 0;
4
+ var codemod_helpers_1 = require("../codemod-helpers");
5
+ exports.parser = 'tsx';
6
+ var componentName = 'TooltipContainer';
7
+ var componentNameTo = 'OnboardingTooltipContainer';
8
+ function transformer(file, api, options) {
9
+ var alias = options.alias;
10
+ var j = api.jscodeshift;
11
+ var source = j(file.source);
12
+ var localName = (0, codemod_helpers_1.getImportInfo)(j, file, componentName, alias).localName;
13
+ var needRename = true;
14
+ // подменяем импорт
15
+ source
16
+ .find(j.ImportDeclaration)
17
+ .filter(function (path) { return path.node.source.value === alias; })
18
+ .find(j.ImportSpecifier, { imported: { name: componentName } })
19
+ .forEach(function (path) {
20
+ j(path).replaceWith(function (path) {
21
+ if (path.node.local && path.node.local.name !== path.node.imported.name) {
22
+ needRename = false;
23
+ }
24
+ return j.importSpecifier(j.jsxIdentifier(componentNameTo), needRename ? null : path.node.local);
25
+ });
26
+ });
27
+ source.findJSXElements(localName).forEach(function (element) {
28
+ // меняем название компонента в JSX на переименованный в импорте (если нужно)
29
+ j(element).replaceWith(function (path) {
30
+ var renamedLocalName = needRename ? componentNameTo : localName;
31
+ return j.jsxElement(j.jsxOpeningElement(j.jsxIdentifier(renamedLocalName), path.node.openingElement.attributes, path.node.closingElement ? false : true), path.node.closingElement ? j.jsxClosingElement(j.jsxIdentifier(renamedLocalName)) : null, path.node.children);
32
+ });
33
+ });
34
+ return source.toSource();
35
+ }
36
+ exports.default = transformer;
@@ -57,6 +57,7 @@ function transformer(file, api, options) {
57
57
  var localName = (0, codemod_helpers_1.getImportInfo)(j, file, componentName, alias).localName;
58
58
  var attributeReplacer = (0, codemod_helpers_1.createAttributeManipulator)(ATTRIBUTE_REPLACER, api);
59
59
  var needRename = true;
60
+ (0, codemod_helpers_1.swapBooleanValue)(api, source, localName, 'arrow', 'disableArrow');
60
61
  // подменяем импорт
61
62
  source
62
63
  .find(j.ImportDeclaration)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/vkui-codemods",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "Codemods for automatic VKUI major version upgrade",
5
5
  "repository": "https://github.com/VKCOM/VKUI",
6
6
  "homepage": "https://vkcom.github.io/VKUI/",
@@ -22,12 +22,12 @@
22
22
  "typescript": "^5.3.3"
23
23
  },
24
24
  "devDependencies": {
25
- "@swc/core": "^1.3.103",
26
- "@swc/jest": "^0.2.29",
25
+ "@swc/core": "^1.3.105",
26
+ "@swc/jest": "^0.2.31",
27
27
  "@types/cross-spawn": "^6.0.6",
28
28
  "@types/jest": "^29.5.11",
29
29
  "@types/jscodeshift": "^0.11.11",
30
- "@types/node": "^20.11.1",
30
+ "@types/node": "^20.11.10",
31
31
  "@types/prompts": "^2.4.2",
32
32
  "jest": "^29.7.0",
33
33
  "ts-node": "^10.9.2"