@teambit/refactoring 0.0.11 → 0.0.14
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.
- package/dist/refactoring.main.runtime.d.ts +2 -2
- package/dist/refactoring.main.runtime.js +4 -4
- package/dist/refactoring.main.runtime.js.map +1 -1
- package/package-tar/teambit-refactoring-0.0.14.tgz +0 -0
- package/package.json +7 -7
- /package/{preview-1650684349376.js → preview-1650916592801.js} +0 -0
- package/package-tar/teambit-refactoring-0.0.11.tgz +0 -0
|
@@ -23,14 +23,14 @@ export declare class RefactoringMain {
|
|
|
23
23
|
* rename multiple packages dependencies.
|
|
24
24
|
* this method changes the source code of the component, but doesn't write to the filesystem.
|
|
25
25
|
*/
|
|
26
|
-
|
|
26
|
+
replaceMultipleStrings(components: Component[], stringsToReplace: MultipleStringsReplacement): Promise<{
|
|
27
27
|
changedComponents: Component[];
|
|
28
28
|
}>;
|
|
29
29
|
private getPackageNameByUnknownId;
|
|
30
30
|
private getPackageNameByComponentID;
|
|
31
31
|
private isValidScopedPackageName;
|
|
32
32
|
private replaceString;
|
|
33
|
-
private
|
|
33
|
+
private replaceMultipleStringsInOneComp;
|
|
34
34
|
static slots: never[];
|
|
35
35
|
static dependencies: import("@teambit/harmony").Aspect[];
|
|
36
36
|
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
@@ -147,9 +147,9 @@ class RefactoringMain {
|
|
|
147
147
|
*/
|
|
148
148
|
|
|
149
149
|
|
|
150
|
-
async
|
|
150
|
+
async replaceMultipleStrings(components, stringsToReplace) {
|
|
151
151
|
const changedComponents = await Promise.all(components.map(async comp => {
|
|
152
|
-
const hasChanged = await this.
|
|
152
|
+
const hasChanged = await this.replaceMultipleStringsInOneComp(comp, stringsToReplace);
|
|
153
153
|
return hasChanged ? comp : null;
|
|
154
154
|
}));
|
|
155
155
|
return {
|
|
@@ -208,7 +208,7 @@ class RefactoringMain {
|
|
|
208
208
|
return changed.some(c => c);
|
|
209
209
|
}
|
|
210
210
|
|
|
211
|
-
async
|
|
211
|
+
async replaceMultipleStringsInOneComp(comp, stringsToReplace) {
|
|
212
212
|
const changed = await Promise.all(comp.filesystem.files.map(async file => {
|
|
213
213
|
const isBinary = await (0, _isbinaryfile().isBinaryFile)(file.contents);
|
|
214
214
|
if (isBinary) return false;
|
|
@@ -219,7 +219,7 @@ class RefactoringMain {
|
|
|
219
219
|
newStr
|
|
220
220
|
}) => {
|
|
221
221
|
const oldStringRegex = new RegExp(oldStr, 'g');
|
|
222
|
-
newContent =
|
|
222
|
+
newContent = newContent.replace(oldStringRegex, newStr);
|
|
223
223
|
});
|
|
224
224
|
|
|
225
225
|
if (strContent !== newContent) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["refactoring.main.runtime.ts"],"names":["RefactoringMain","constructor","componentMain","pkg","refactorDependencyName","components","oldId","newId","oldPackageName","getPackageNameByUnknownId","newPackageName","BitError","changedComponents","Promise","all","map","comp","hasChanged","replaceString","renameMultiplePackages","oldAndNewPackageNames","replaceMultipleStrings","id","ComponentID","getPackageNameByComponentID","Error","host","getHost","componentID","resolveComponentId","err","isValidScopedPackageName","get","toString","getPackageName","name","startsWith","includes","length","oldString","newString","changed","filesystem","files","file","isBinary","contents","strContent","oldStringRegex","RegExp","newContent","replace","Buffer","from","some","c","stringsToReplace","forEach","oldStr","newStr","provider","cli","refactoringMain","subCommands","DependencyNameRefactorCmd","refactorCmd","RefactorCmd","commands","register","ComponentAspect","PkgAspect","CLIAspect","MainRuntime","RefactoringAspect","addRuntime"],"mappings":"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","sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { isBinaryFile } from 'isbinaryfile';\nimport { compact } from 'lodash';\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.replaceString(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 renameMultiplePackages(\n components: Component[],\n oldAndNewPackageNames: MultipleStringsReplacement\n ): Promise<{\n changedComponents: Component[];\n }> {\n const changedComponents = await Promise.all(\n components.map(async (comp) => {\n const hasChanged = await this.replaceMultipleStrings(comp, oldAndNewPackageNames);\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 replaceMultipleStrings(\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 = strContent.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"]}
|
|
1
|
+
{"version":3,"sources":["refactoring.main.runtime.ts"],"names":["RefactoringMain","constructor","componentMain","pkg","refactorDependencyName","components","oldId","newId","oldPackageName","getPackageNameByUnknownId","newPackageName","BitError","changedComponents","Promise","all","map","comp","hasChanged","replaceString","replaceMultipleStrings","stringsToReplace","replaceMultipleStringsInOneComp","id","ComponentID","getPackageNameByComponentID","Error","host","getHost","componentID","resolveComponentId","err","isValidScopedPackageName","get","toString","getPackageName","name","startsWith","includes","length","oldString","newString","changed","filesystem","files","file","isBinary","contents","strContent","oldStringRegex","RegExp","newContent","replace","Buffer","from","some","c","forEach","oldStr","newStr","provider","cli","refactoringMain","subCommands","DependencyNameRefactorCmd","refactorCmd","RefactorCmd","commands","register","ComponentAspect","PkgAspect","CLIAspect","MainRuntime","RefactoringAspect","addRuntime"],"mappings":"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","sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { isBinaryFile } from 'isbinaryfile';\nimport { compact } from 'lodash';\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.replaceString(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 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"]}
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/refactoring",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.14",
|
|
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.
|
|
9
|
+
"version": "0.0.14"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"chalk": "2.4.2",
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
"@babel/runtime": "7.12.18",
|
|
16
16
|
"core-js": "^3.0.0",
|
|
17
17
|
"@teambit/harmony": "0.3.3",
|
|
18
|
-
"@teambit/cli": "0.0.
|
|
19
|
-
"@teambit/component": "0.0.
|
|
18
|
+
"@teambit/cli": "0.0.477",
|
|
19
|
+
"@teambit/component": "0.0.717",
|
|
20
20
|
"@teambit/bit-error": "0.0.394",
|
|
21
|
-
"@teambit/pkg": "0.0.
|
|
21
|
+
"@teambit/pkg": "0.0.717"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"@types/lodash": "4.14.165",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"@types/node": "12.20.4"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
|
-
"@teambit/legacy": "1.0.
|
|
33
|
+
"@teambit/legacy": "1.0.257",
|
|
34
34
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
35
35
|
"react": "^16.8.0 || ^17.0.0"
|
|
36
36
|
},
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"react": "-"
|
|
59
59
|
},
|
|
60
60
|
"peerDependencies": {
|
|
61
|
-
"@teambit/legacy": "1.0.
|
|
61
|
+
"@teambit/legacy": "1.0.257",
|
|
62
62
|
"react-dom": "^16.8.0 || ^17.0.0",
|
|
63
63
|
"react": "^16.8.0 || ^17.0.0"
|
|
64
64
|
}
|
|
File without changes
|
|
Binary file
|