@teambit/refactoring 0.0.317 → 0.0.319

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.
@@ -19,6 +19,12 @@ export declare class RefactoringMain {
19
19
  newPackageName: string;
20
20
  changedComponents: Component[];
21
21
  }>;
22
+ /**
23
+ * replaces the old-name inside the source code of the given component with the new name.
24
+ * helpful when renaming/forking an aspect/env where the component-name is used as the class-name and variable-name.
25
+ */
26
+ refactorVariableAndClasses(component: Component, sourceId: ComponentID, targetId: ComponentID): Promise<void>;
27
+ refactorFilenames(component: Component, sourceId: ComponentID, targetId: ComponentID): void;
22
28
  /**
23
29
  * rename multiple packages dependencies.
24
30
  * this method changes the source code of the component, but doesn't write to the filesystem.
@@ -31,6 +31,13 @@ function _isbinaryfile() {
31
31
  };
32
32
  return data;
33
33
  }
34
+ function _camelcase() {
35
+ const data = _interopRequireDefault(require("camelcase"));
36
+ _camelcase = function () {
37
+ return data;
38
+ };
39
+ return data;
40
+ }
34
41
  function _lodash() {
35
42
  const data = require("lodash");
36
43
  _lodash = function () {
@@ -110,6 +117,36 @@ class RefactoringMain {
110
117
  };
111
118
  }
112
119
 
120
+ /**
121
+ * replaces the old-name inside the source code of the given component with the new name.
122
+ * helpful when renaming/forking an aspect/env where the component-name is used as the class-name and variable-name.
123
+ */
124
+ async refactorVariableAndClasses(component, sourceId, targetId) {
125
+ await this.replaceMultipleStrings([component], [{
126
+ oldStr: sourceId.name,
127
+ newStr: targetId.name
128
+ }, {
129
+ oldStr: (0, _camelcase().default)(sourceId.name),
130
+ newStr: (0, _camelcase().default)(targetId.name)
131
+ }, {
132
+ oldStr: (0, _camelcase().default)(sourceId.name, {
133
+ pascalCase: true
134
+ }),
135
+ newStr: (0, _camelcase().default)(targetId.name, {
136
+ pascalCase: true
137
+ })
138
+ }]);
139
+ }
140
+ refactorFilenames(component, sourceId, targetId) {
141
+ component.filesystem.files.forEach(file => {
142
+ if (file.relative.includes(sourceId.name)) {
143
+ file.updatePaths({
144
+ newRelative: file.relative.replace(sourceId.name, targetId.name)
145
+ });
146
+ }
147
+ });
148
+ }
149
+
113
150
  /**
114
151
  * rename multiple packages dependencies.
115
152
  * this method changes the source code of the component, but doesn't write to the filesystem.
@@ -1 +1 @@
1
- {"version":3,"names":["RefactoringMain","constructor","componentMain","pkg","refactorDependencyName","components","oldId","newId","oldPackageName","getPackageNameByUnknownId","newPackageName","BitError","changedComponents","Promise","all","map","comp","hasChanged","replacePackageNameInComponent","compact","replaceMultipleStrings","stringsToReplace","replaceMultipleStringsInOneComp","id","ComponentID","getPackageNameByComponentID","Error","host","getHost","componentID","resolveComponentId","err","isValidScopedPackageName","get","toString","getPackageName","name","startsWith","includes","length","replaceString","oldString","newString","changed","filesystem","files","file","isBinary","isBinaryFile","contents","strContent","oldStringRegex","RegExp","newContent","replace","Buffer","from","some","c","oldPkg","newPkg","newStrContent","replacePackageName","forEach","oldStr","newStr","provider","cli","refactoringMain","subCommands","DependencyNameRefactorCmd","refactorCmd","RefactorCmd","commands","register","ComponentAspect","PkgAspect","CLIAspect","MainRuntime","RefactoringAspect","addRuntime"],"sources":["refactoring.main.runtime.ts"],"sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { isBinaryFile } from 'isbinaryfile';\nimport { compact } from 'lodash';\nimport replacePackageName from '@teambit/legacy/dist/utils/string/replace-package-name';\nimport ComponentAspect, { Component, ComponentID, ComponentMain } from '@teambit/component';\nimport { BitError } from '@teambit/bit-error';\nimport PkgAspect, { PkgMain } from '@teambit/pkg';\nimport { RefactoringAspect } from './refactoring.aspect';\nimport { DependencyNameRefactorCmd, RefactorCmd } from './refactor.cmd';\n\nexport type MultipleStringsReplacement = Array<{ oldStr: string; newStr: string }>;\n\nexport class RefactoringMain {\n constructor(private componentMain: ComponentMain, private pkg: PkgMain) {}\n\n /**\n * refactor the dependency name of a component.\n * oldId and newId can be either a component-id or a package-name.\n * this method changes the source code of the component, but doesn't write to the filesystem.\n */\n async refactorDependencyName(\n components: Component[],\n oldId: ComponentID | string,\n newId: ComponentID | string\n ): Promise<{ oldPackageName: string; newPackageName: string; changedComponents: Component[] }> {\n const oldPackageName = await this.getPackageNameByUnknownId(oldId);\n const newPackageName = await this.getPackageNameByUnknownId(newId);\n if (oldPackageName === newPackageName) {\n throw new BitError(`refactoring: the old package-name and the new package-name are the same: ${oldPackageName}`);\n }\n const changedComponents = await Promise.all(\n components.map(async (comp) => {\n const hasChanged = await this.replacePackageNameInComponent(comp, oldPackageName, newPackageName);\n return hasChanged ? comp : null;\n })\n );\n return { oldPackageName, newPackageName, changedComponents: compact(changedComponents) };\n }\n\n /**\n * rename multiple packages dependencies.\n * this method changes the source code of the component, but doesn't write to the filesystem.\n */\n async replaceMultipleStrings(\n components: Component[],\n stringsToReplace: MultipleStringsReplacement\n ): Promise<{\n changedComponents: Component[];\n }> {\n const changedComponents = await Promise.all(\n components.map(async (comp) => {\n const hasChanged = await this.replaceMultipleStringsInOneComp(comp, stringsToReplace);\n return hasChanged ? comp : null;\n })\n );\n return { changedComponents: compact(changedComponents) };\n }\n\n private async getPackageNameByUnknownId(id: ComponentID | string): Promise<string> {\n if (id instanceof ComponentID) {\n return this.getPackageNameByComponentID(id);\n }\n if (typeof id !== 'string') {\n throw new Error(`getPackageNameByUnknownId expects id to be either string or ComponentID, got ${typeof id}`);\n }\n try {\n const host = this.componentMain.getHost();\n const componentID = await host.resolveComponentId(id);\n return await this.getPackageNameByComponentID(componentID);\n } catch (err) {\n if (this.isValidScopedPackageName(id)) {\n return id; // assume this is a package-name\n }\n throw new BitError(\n `refactoring: the id \"${id}\" is neither a valid scoped-package-name nor an existing component-id`\n );\n }\n }\n\n private async getPackageNameByComponentID(id: ComponentID) {\n const host = this.componentMain.getHost();\n const comp = await host.get(id);\n if (!comp) throw new Error(`unable to find a component: \"${id.toString()}\"`);\n return this.pkg.getPackageName(comp);\n }\n\n private isValidScopedPackageName(name: string) {\n return (\n name.startsWith('@') && name.includes('/') && name.length <= 214 && !name.includes('\\\\') && !name.includes('..')\n );\n }\n\n private async replaceString(comp: Component, oldString: string, newString: string): Promise<boolean> {\n const changed = await Promise.all(\n comp.filesystem.files.map(async (file) => {\n const isBinary = await isBinaryFile(file.contents);\n if (isBinary) return false;\n const strContent = file.contents.toString();\n if (strContent.includes(oldString)) {\n const oldStringRegex = new RegExp(oldString, 'g');\n const newContent = strContent.replace(oldStringRegex, newString);\n file.contents = Buffer.from(newContent);\n return true;\n }\n return false;\n })\n );\n return changed.some((c) => c);\n }\n\n private async replacePackageNameInComponent(comp: Component, oldPkg: string, newPkg: string): Promise<boolean> {\n const changed = await Promise.all(\n comp.filesystem.files.map(async (file) => {\n const isBinary = await isBinaryFile(file.contents);\n if (isBinary) {\n return false;\n }\n const strContent = file.contents.toString();\n const newStrContent = replacePackageName(strContent, oldPkg, newPkg);\n if (strContent === newStrContent) {\n return false;\n }\n file.contents = Buffer.from(newStrContent);\n return true;\n })\n );\n return changed.some((c) => c);\n }\n\n private async replaceMultipleStringsInOneComp(\n comp: Component,\n stringsToReplace: MultipleStringsReplacement\n ): Promise<boolean> {\n const changed = await Promise.all(\n comp.filesystem.files.map(async (file) => {\n const isBinary = await isBinaryFile(file.contents);\n if (isBinary) return false;\n const strContent = file.contents.toString();\n let newContent = strContent;\n stringsToReplace.forEach(({ oldStr, newStr }) => {\n const oldStringRegex = new RegExp(oldStr, 'g');\n newContent = newContent.replace(oldStringRegex, newStr);\n });\n if (strContent !== newContent) {\n file.contents = Buffer.from(newContent);\n return true;\n }\n return false;\n })\n );\n return changed.some((c) => c);\n }\n\n static slots = [];\n static dependencies = [ComponentAspect, PkgAspect, CLIAspect];\n static runtime = MainRuntime;\n static async provider([componentMain, pkg, cli]: [ComponentMain, PkgMain, CLIMain]) {\n const refactoringMain = new RefactoringMain(componentMain, pkg);\n const subCommands = [new DependencyNameRefactorCmd(refactoringMain, componentMain)];\n const refactorCmd = new RefactorCmd();\n refactorCmd.commands = subCommands;\n cli.register(refactorCmd);\n return refactoringMain;\n }\n}\n\nRefactoringAspect.addRuntime(RefactoringMain);\n"],"mappings":"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"}
1
+ {"version":3,"names":["RefactoringMain","constructor","componentMain","pkg","refactorDependencyName","components","oldId","newId","oldPackageName","getPackageNameByUnknownId","newPackageName","BitError","changedComponents","Promise","all","map","comp","hasChanged","replacePackageNameInComponent","compact","refactorVariableAndClasses","component","sourceId","targetId","replaceMultipleStrings","oldStr","name","newStr","camelCase","pascalCase","refactorFilenames","filesystem","files","forEach","file","relative","includes","updatePaths","newRelative","replace","stringsToReplace","replaceMultipleStringsInOneComp","id","ComponentID","getPackageNameByComponentID","Error","host","getHost","componentID","resolveComponentId","err","isValidScopedPackageName","get","toString","getPackageName","startsWith","length","replaceString","oldString","newString","changed","isBinary","isBinaryFile","contents","strContent","oldStringRegex","RegExp","newContent","Buffer","from","some","c","oldPkg","newPkg","newStrContent","replacePackageName","provider","cli","refactoringMain","subCommands","DependencyNameRefactorCmd","refactorCmd","RefactorCmd","commands","register","ComponentAspect","PkgAspect","CLIAspect","MainRuntime","RefactoringAspect","addRuntime"],"sources":["refactoring.main.runtime.ts"],"sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { isBinaryFile } from 'isbinaryfile';\nimport camelCase from 'camelcase';\nimport { compact } from 'lodash';\nimport replacePackageName from '@teambit/legacy/dist/utils/string/replace-package-name';\nimport ComponentAspect, { Component, ComponentID, ComponentMain } from '@teambit/component';\nimport { BitError } from '@teambit/bit-error';\nimport PkgAspect, { PkgMain } from '@teambit/pkg';\nimport { RefactoringAspect } from './refactoring.aspect';\nimport { DependencyNameRefactorCmd, RefactorCmd } from './refactor.cmd';\n\nexport type MultipleStringsReplacement = Array<{ oldStr: string; newStr: string }>;\n\nexport class RefactoringMain {\n constructor(private componentMain: ComponentMain, private pkg: PkgMain) {}\n\n /**\n * refactor the dependency name of a component.\n * oldId and newId can be either a component-id or a package-name.\n * this method changes the source code of the component, but doesn't write to the filesystem.\n */\n async refactorDependencyName(\n components: Component[],\n oldId: ComponentID | string,\n newId: ComponentID | string\n ): Promise<{ oldPackageName: string; newPackageName: string; changedComponents: Component[] }> {\n const oldPackageName = await this.getPackageNameByUnknownId(oldId);\n const newPackageName = await this.getPackageNameByUnknownId(newId);\n if (oldPackageName === newPackageName) {\n throw new BitError(`refactoring: the old package-name and the new package-name are the same: ${oldPackageName}`);\n }\n const changedComponents = await Promise.all(\n components.map(async (comp) => {\n const hasChanged = await this.replacePackageNameInComponent(comp, oldPackageName, newPackageName);\n return hasChanged ? comp : null;\n })\n );\n return { oldPackageName, newPackageName, changedComponents: compact(changedComponents) };\n }\n\n /**\n * replaces the old-name inside the source code of the given component with the new name.\n * helpful when renaming/forking an aspect/env where the component-name is used as the class-name and variable-name.\n */\n async refactorVariableAndClasses(component: Component, sourceId: ComponentID, targetId: ComponentID) {\n await this.replaceMultipleStrings(\n [component],\n [\n {\n oldStr: sourceId.name,\n newStr: targetId.name,\n },\n {\n oldStr: camelCase(sourceId.name),\n newStr: camelCase(targetId.name),\n },\n {\n oldStr: camelCase(sourceId.name, { pascalCase: true }),\n newStr: camelCase(targetId.name, { pascalCase: true }),\n },\n ]\n );\n }\n\n refactorFilenames(component: Component, sourceId: ComponentID, targetId: ComponentID) {\n component.filesystem.files.forEach((file) => {\n if (file.relative.includes(sourceId.name)) {\n file.updatePaths({ newRelative: file.relative.replace(sourceId.name, targetId.name) });\n }\n });\n }\n\n /**\n * rename multiple packages dependencies.\n * this method changes the source code of the component, but doesn't write to the filesystem.\n */\n async replaceMultipleStrings(\n components: Component[],\n stringsToReplace: MultipleStringsReplacement\n ): Promise<{\n changedComponents: Component[];\n }> {\n const changedComponents = await Promise.all(\n components.map(async (comp) => {\n const hasChanged = await this.replaceMultipleStringsInOneComp(comp, stringsToReplace);\n return hasChanged ? comp : null;\n })\n );\n return { changedComponents: compact(changedComponents) };\n }\n\n private async getPackageNameByUnknownId(id: ComponentID | string): Promise<string> {\n if (id instanceof ComponentID) {\n return this.getPackageNameByComponentID(id);\n }\n if (typeof id !== 'string') {\n throw new Error(`getPackageNameByUnknownId expects id to be either string or ComponentID, got ${typeof id}`);\n }\n try {\n const host = this.componentMain.getHost();\n const componentID = await host.resolveComponentId(id);\n return await this.getPackageNameByComponentID(componentID);\n } catch (err) {\n if (this.isValidScopedPackageName(id)) {\n return id; // assume this is a package-name\n }\n throw new BitError(\n `refactoring: the id \"${id}\" is neither a valid scoped-package-name nor an existing component-id`\n );\n }\n }\n\n private async getPackageNameByComponentID(id: ComponentID) {\n const host = this.componentMain.getHost();\n const comp = await host.get(id);\n if (!comp) throw new Error(`unable to find a component: \"${id.toString()}\"`);\n return this.pkg.getPackageName(comp);\n }\n\n private isValidScopedPackageName(name: string) {\n return (\n name.startsWith('@') && name.includes('/') && name.length <= 214 && !name.includes('\\\\') && !name.includes('..')\n );\n }\n\n private async replaceString(comp: Component, oldString: string, newString: string): Promise<boolean> {\n const changed = await Promise.all(\n comp.filesystem.files.map(async (file) => {\n const isBinary = await isBinaryFile(file.contents);\n if (isBinary) return false;\n const strContent = file.contents.toString();\n if (strContent.includes(oldString)) {\n const oldStringRegex = new RegExp(oldString, 'g');\n const newContent = strContent.replace(oldStringRegex, newString);\n file.contents = Buffer.from(newContent);\n return true;\n }\n return false;\n })\n );\n return changed.some((c) => c);\n }\n\n private async replacePackageNameInComponent(comp: Component, oldPkg: string, newPkg: string): Promise<boolean> {\n const changed = await Promise.all(\n comp.filesystem.files.map(async (file) => {\n const isBinary = await isBinaryFile(file.contents);\n if (isBinary) {\n return false;\n }\n const strContent = file.contents.toString();\n const newStrContent = replacePackageName(strContent, oldPkg, newPkg);\n if (strContent === newStrContent) {\n return false;\n }\n file.contents = Buffer.from(newStrContent);\n return true;\n })\n );\n return changed.some((c) => c);\n }\n\n private async replaceMultipleStringsInOneComp(\n comp: Component,\n stringsToReplace: MultipleStringsReplacement\n ): Promise<boolean> {\n const changed = await Promise.all(\n comp.filesystem.files.map(async (file) => {\n const isBinary = await isBinaryFile(file.contents);\n if (isBinary) return false;\n const strContent = file.contents.toString();\n let newContent = strContent;\n stringsToReplace.forEach(({ oldStr, newStr }) => {\n const oldStringRegex = new RegExp(oldStr, 'g');\n newContent = newContent.replace(oldStringRegex, newStr);\n });\n if (strContent !== newContent) {\n file.contents = Buffer.from(newContent);\n return true;\n }\n return false;\n })\n );\n return changed.some((c) => c);\n }\n\n static slots = [];\n static dependencies = [ComponentAspect, PkgAspect, CLIAspect];\n static runtime = MainRuntime;\n static async provider([componentMain, pkg, cli]: [ComponentMain, PkgMain, CLIMain]) {\n const refactoringMain = new RefactoringMain(componentMain, pkg);\n const subCommands = [new DependencyNameRefactorCmd(refactoringMain, componentMain)];\n const refactorCmd = new RefactorCmd();\n refactorCmd.commands = subCommands;\n cli.register(refactorCmd);\n return refactoringMain;\n }\n}\n\nRefactoringAspect.addRuntime(RefactoringMain);\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,24 +1,25 @@
1
1
  {
2
2
  "name": "@teambit/refactoring",
3
- "version": "0.0.317",
3
+ "version": "0.0.319",
4
4
  "homepage": "https://bit.dev/teambit/component/refactoring",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.component",
8
8
  "name": "refactoring",
9
- "version": "0.0.317"
9
+ "version": "0.0.319"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
13
+ "camelcase": "6.2.0",
13
14
  "isbinaryfile": "4.0.6",
14
15
  "lodash": "4.17.21",
15
16
  "core-js": "^3.0.0",
16
17
  "@babel/runtime": "7.20.0",
17
18
  "@teambit/harmony": "0.4.6",
18
- "@teambit/cli": "0.0.683",
19
- "@teambit/component": "0.0.1020",
19
+ "@teambit/cli": "0.0.685",
20
+ "@teambit/component": "0.0.1022",
20
21
  "@teambit/bit-error": "0.0.402",
21
- "@teambit/pkg": "0.0.1020"
22
+ "@teambit/pkg": "0.0.1022"
22
23
  },
23
24
  "devDependencies": {
24
25
  "@types/lodash": "4.14.165",
@@ -30,7 +31,7 @@
30
31
  "@types/testing-library__jest-dom": "5.9.5"
31
32
  },
32
33
  "peerDependencies": {
33
- "@teambit/legacy": "1.0.462",
34
+ "@teambit/legacy": "1.0.465",
34
35
  "react": "^16.8.0 || ^17.0.0",
35
36
  "react-dom": "^16.8.0 || ^17.0.0"
36
37
  },