From 791ac7efa5828eef2614b10257e4361bebe0c3ce Mon Sep 17 00:00:00 2001 From: rosen-vladimirov Date: Wed, 28 Mar 2018 22:38:11 +0300 Subject: [PATCH 1/5] fix(deps): Remove bufferpack Remove bufferpack dependency, as it is no longer user in CLI's code directly. --- lib/common | 2 +- package.json | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/common b/lib/common index d5b8319094..dd221de96a 160000 --- a/lib/common +++ b/lib/common @@ -1 +1 @@ -Subproject commit d5b83190946bae0cbb2aae5d90d89128aeb63d15 +Subproject commit dd221de96a7b42f4043bb211b4bfda5bda6ae5be diff --git a/package.json b/package.json index 0ab413bc2c..77dd16c1ac 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,6 @@ "mobile" ], "dependencies": { - "bufferpack": "0.0.6", "byline": "4.2.1", "chalk": "1.1.0", "chokidar": "1.7.0", From f141d0d58d39bb75ecd21058252c0782efb25581 Mon Sep 17 00:00:00 2001 From: rosen-vladimirov Date: Wed, 28 Mar 2018 22:50:57 +0300 Subject: [PATCH 2/5] fix(deps): Remove glob Remove bufferpack glob, as it is no longer user in CLI's code directly. --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 77dd16c1ac..7630240157 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,6 @@ "esprima": "2.7.0", "filesize": "3.1.2", "gaze": "1.1.0", - "glob": "^7.0.3", "iconv-lite": "0.4.11", "inquirer": "0.9.0", "ios-device-lib": "0.4.10", From 0d7b2194c09dae0dc8e0e730238fcd3bfdcde680 Mon Sep 17 00:00:00 2001 From: rosen-vladimirov Date: Wed, 28 Mar 2018 23:22:53 +0300 Subject: [PATCH 3/5] fix(deps): Remove properties-parser The properties-parser has been used years ago, to parse `.properties` files. We have not used this code since August 2015, so just remove the support for it. We have used it in AndroidProjectPropertiesManager, but this code is not used since the mentioned date, so remove it as well. --- lib/common | 2 +- lib/definitions/project.d.ts | 6 - .../android-project-properties-manager.ts | 101 ------------ lib/services/android-project-service.ts | 2 - npm-shrinkwrap.json | 5 - package.json | 1 - test/android-project-properties-manager.ts | 145 ------------------ 7 files changed, 1 insertion(+), 261 deletions(-) delete mode 100644 lib/services/android-project-properties-manager.ts delete mode 100644 test/android-project-properties-manager.ts diff --git a/lib/common b/lib/common index dd221de96a..883a0d2faf 160000 --- a/lib/common +++ b/lib/common @@ -1 +1 @@ -Subproject commit dd221de96a7b42f4043bb211b4bfda5bda6ae5be +Subproject commit 883a0d2faf2eb37df0a9087b27c63b59b5f2e048 diff --git a/lib/definitions/project.d.ts b/lib/definitions/project.d.ts index 2e99a72bfd..4ec6eb1d49 100644 --- a/lib/definitions/project.d.ts +++ b/lib/definitions/project.d.ts @@ -401,12 +401,6 @@ interface IPlatformProjectService extends NodeJS.EventEmitter { executeCommand(projectRoot: string, args: any, childProcessOpts?: any, spawnFromEventOptions?: ISpawnFromEventOptions): Promise; } -interface IAndroidProjectPropertiesManager { - getProjectReferences(): Promise; - addProjectReference(referencePath: string): Promise; - removeProjectReference(referencePath: string): Promise; -} - interface ITestExecutionService { startTestRunner(platform: string, projectData: IProjectData, projectFilesConfig: IProjectFilesConfig): Promise; startKarmaServer(platform: string, projectData: IProjectData, projectFilesConfig: IProjectFilesConfig): Promise; diff --git a/lib/services/android-project-properties-manager.ts b/lib/services/android-project-properties-manager.ts deleted file mode 100644 index 71a1338b61..0000000000 --- a/lib/services/android-project-properties-manager.ts +++ /dev/null @@ -1,101 +0,0 @@ -import * as path from "path"; - -export class AndroidProjectPropertiesManager implements IAndroidProjectPropertiesManager { - private _editor: IPropertiesParserEditor = null; - private filePath: string = null; - private projectReferences: ILibRef[]; - private dirty = false; - - constructor(private $propertiesParser: IPropertiesParser, - private $logger: ILogger, - directoryPath: string) { - this.filePath = path.join(directoryPath, "project.properties"); - } - - public async getProjectReferences(): Promise { - if (!this.projectReferences || this.dirty) { - const allProjectProperties = await this.getAllProjectProperties(); - const allProjectPropertiesKeys = _.keys(allProjectProperties); - this.projectReferences = _(allProjectPropertiesKeys) - .filter(key => _.startsWith(key, "android.library.reference.")) - .map(key => this.createLibraryReference(key, allProjectProperties[key])) - .value(); - } - - return this.projectReferences; - } - - public async addProjectReference(referencePath: string): Promise { - const references = await this.getProjectReferences(); - const libRefExists = _.some(references, r => path.normalize(r.path) === path.normalize(referencePath)); - if (!libRefExists) { - await this.addToPropertyList("android.library.reference", referencePath); - } - } - - public async removeProjectReference(referencePath: string): Promise { - const references = await this.getProjectReferences(); - const libRefExists = _.some(references, r => path.normalize(r.path) === path.normalize(referencePath)); - if (libRefExists) { - await this.removeFromPropertyList("android.library.reference", referencePath); - } else { - this.$logger.error(`Could not find ${referencePath}.`); - } - } - - private async createEditor(): Promise { - return this._editor || await this.$propertiesParser.createEditor(this.filePath); - } - - private buildKeyName(key: string, index: number): string { - return `${key}.${index}`; - } - - private async getAllProjectProperties(): Promise { - return this.$propertiesParser.read(this.filePath); - } - - private createLibraryReference(referenceName: string, referencePath: string): ILibRef { - return { - idx: parseInt(referenceName.split("android.library.reference.")[1]), - key: referenceName, - path: referencePath, - adjustedPath: path.join(path.dirname(this.filePath), referencePath) - }; - } - - private async addToPropertyList(key: string, value: string): Promise { - const editor = await this.createEditor(); - let i = 1; - while (editor.get(this.buildKeyName(key, i))) { - i++; - } - - editor.set(this.buildKeyName(key, i), value); - await this.$propertiesParser.saveEditor(); - this.dirty = true; - } - - private async removeFromPropertyList(key: string, value: string): Promise { - const editor = await this.createEditor(); - const valueLowerCase = value.toLowerCase(); - let i = 1; - let currentValue: any; - while (currentValue = editor.get(this.buildKeyName(key, i))) { - if (currentValue.toLowerCase() === valueLowerCase) { - while (currentValue = editor.get(this.buildKeyName(key, i + 1))) { - editor.set(this.buildKeyName(key, i), currentValue); - i++; - } - - editor.set(this.buildKeyName(key, i)); - break; - } - - i++; - } - - await this.$propertiesParser.saveEditor(); - this.dirty = true; - } -} diff --git a/lib/services/android-project-service.ts b/lib/services/android-project-service.ts index e7c36762d3..d47626112f 100644 --- a/lib/services/android-project-service.ts +++ b/lib/services/android-project-service.ts @@ -20,7 +20,6 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject { name: "lazy", version: "^1.0.11" } ]; - private _androidProjectPropertiesManagers: IDictionary; private isAndroidStudioTemplate: boolean; constructor(private $androidEmulatorServices: Mobile.IEmulatorPlatformServices, @@ -39,7 +38,6 @@ export class AndroidProjectService extends projectServiceBaseLib.PlatformProject private $platformEnvironmentRequirements: IPlatformEnvironmentRequirements, private $androidResourcesMigrationService: IAndroidResourcesMigrationService) { super($fs, $projectDataService); - this._androidProjectPropertiesManagers = Object.create(null); this.isAndroidStudioTemplate = false; } diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index 126425193d..f16dd37f3d 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -4615,11 +4615,6 @@ "through2": "0.2.3" } }, - "properties-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/properties-parser/-/properties-parser-0.2.3.tgz", - "integrity": "sha1-91kSVfcHq7/yJ8e1a2N9uwNzoQ8=" - }, "proxy-lib": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/proxy-lib/-/proxy-lib-0.4.0.tgz", diff --git a/package.json b/package.json index 7630240157..de0ba52467 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,6 @@ "plist": "1.1.0", "plist-merge-patch": "0.1.1", "progress-stream": "1.1.1", - "properties-parser": "0.2.3", "proxy-lib": "0.4.0", "qr-image": "3.2.0", "request": "2.81.0", diff --git a/test/android-project-properties-manager.ts b/test/android-project-properties-manager.ts deleted file mode 100644 index 1c51a3a75b..0000000000 --- a/test/android-project-properties-manager.ts +++ /dev/null @@ -1,145 +0,0 @@ -import * as ProjectPropertiesParserLib from "../lib/common/properties-parser"; -import * as FsLib from "../lib/common/file-system"; -import * as ProjectPropertiesManagerLib from "../lib/services/android-project-properties-manager"; -import * as HostInfoLib from "../lib/common/host-info"; -import * as StaticConfigLib from "../lib/config"; -import * as ErrorsLib from "../lib/common/errors"; -import * as LoggerLib from "../lib/common/logger"; -import * as ConfigLib from "../lib/config"; -import * as OptionsLib from "../lib/options"; -import * as yok from "../lib/common/yok"; -import { SettingsService } from "../lib/common/test/unit-tests/stubs"; -import * as path from "path"; -import temp = require("temp"); -temp.track(); -import { assert } from "chai"; - -function createTestInjector(): IInjector { - const testInjector = new yok.Yok(); - testInjector.register("propertiesParser", ProjectPropertiesParserLib.PropertiesParser); - testInjector.register("fs", FsLib.FileSystem); - testInjector.register("hostInfo", HostInfoLib.HostInfo); - testInjector.register("staticConfig", StaticConfigLib.StaticConfig); - testInjector.register("errors", ErrorsLib.Errors); - testInjector.register("logger", LoggerLib.Logger); - testInjector.register("config", ConfigLib.Configuration); - testInjector.register("options", OptionsLib.Options); - testInjector.register("settingsService", SettingsService); - - return testInjector; -} - -describe("Android project properties parser tests", () => { - it("adds project reference", async () => { - const testInjector = createTestInjector(); - const fs = testInjector.resolve("fs"); - - const projectPropertiesFileContent = 'target=android-21'; - const tempFolder = temp.mkdirSync("AndroidProjectPropertiesManager"); - fs.writeFile(path.join(tempFolder, "project.properties"), projectPropertiesFileContent); - - const projectPropertiesManager: IAndroidProjectPropertiesManager = testInjector.resolve( - ProjectPropertiesManagerLib.AndroidProjectPropertiesManager, { directoryPath: tempFolder }); - await projectPropertiesManager.addProjectReference("testValue"); - - const expectedContent = 'target=android-21' + '\n' + - 'android.library.reference.1=testValue'; - const actualContent = fs.readText(path.join(tempFolder, "project.properties")); - - assert.equal(expectedContent, actualContent); - assert.equal(1, _.keys(await projectPropertiesManager.getProjectReferences()).length); - }); - - it("adds project reference if another referencence already exists in project.properties file", async () => { - const testInjector = createTestInjector(); - const fs = testInjector.resolve("fs"); - - const projectPropertiesFileContent = 'target=android-21' + '\n' + - 'android.library.reference.1=someValue'; - const tempFolder = temp.mkdirSync("AndroidProjectPropertiesManager"); - fs.writeFile(path.join(tempFolder, "project.properties"), projectPropertiesFileContent); - - const projectPropertiesManager = testInjector.resolve( - ProjectPropertiesManagerLib.AndroidProjectPropertiesManager, { directoryPath: tempFolder }); - await projectPropertiesManager.addProjectReference("testValue"); - - const expectedContent = ['target=android-21', - 'android.library.reference.1=someValue', - 'android.library.reference.2=testValue'].join('\n'); - const actualContent = fs.readText(path.join(tempFolder, "project.properties")); - - assert.equal(expectedContent, actualContent); - assert.equal(2, _.keys(await projectPropertiesManager.getProjectReferences()).length); - }); - it("adds project reference if more than one references exist in project.properties file", async () => { - const testInjector = createTestInjector(); - const fs = testInjector.resolve("fs"); - - const projectPropertiesFileContent = ['target=android-21', - 'android.library.reference.1=value1', - 'android.library.reference.2=value2', - 'android.library.reference.3=value3', - 'android.library.reference.4=value4', - 'android.library.reference.5=value5'].join('\n'); - const tempFolder = temp.mkdirSync("AndroidProjectPropertiesManager"); - fs.writeFile(path.join(tempFolder, "project.properties"), projectPropertiesFileContent); - - const projectPropertiesManager: IAndroidProjectPropertiesManager = testInjector.resolve( - ProjectPropertiesManagerLib.AndroidProjectPropertiesManager, { directoryPath: tempFolder }); - await projectPropertiesManager.addProjectReference("testValue"); - - const expectedContent = projectPropertiesFileContent + '\n' + - 'android.library.reference.6=testValue'; - - const actualContent = fs.readText(path.join(tempFolder, "project.properties")); - - assert.equal(expectedContent, actualContent); - assert.equal(6, _.keys(await projectPropertiesManager.getProjectReferences()).length); - }); - it("removes project reference if only one reference exists", async () => { - const testInjector = createTestInjector(); - const fs = testInjector.resolve("fs"); - - const projectPropertiesFileContent = 'android.library.reference.1=value1' + '\n' + - 'target=android-21'; - const tempFolder = temp.mkdirSync("AndroidProjectPropertiesManager"); - fs.writeFile(path.join(tempFolder, "project.properties"), projectPropertiesFileContent); - - const projectPropertiesManager: IAndroidProjectPropertiesManager = testInjector.resolve( - ProjectPropertiesManagerLib.AndroidProjectPropertiesManager, { directoryPath: tempFolder }); - await projectPropertiesManager.removeProjectReference("value1"); - - const expectedContent = 'target=android-21'; - const actualContent = fs.readText(path.join(tempFolder, "project.properties")); - - assert.equal(expectedContent, actualContent); - assert.equal(0, _.keys(await projectPropertiesManager.getProjectReferences()).length); - }); - it("removes project reference when another references exist before and after the specified reference", async () => { - const testInjector = createTestInjector(); - const fs = testInjector.resolve("fs"); - - const projectPropertiesFileContent = ['target=android-17', - 'android.library.reference.1=value1', - 'android.library.reference.2=value2', - 'android.library.reference.3=value3', - 'android.library.reference.4=value4', - 'android.library.reference.5=value5'].join('\n'); - const tempFolder = temp.mkdirSync("AndroidProjectPropertiesManager"); - fs.writeFile(path.join(tempFolder, "project.properties"), projectPropertiesFileContent); - - const projectPropertiesManager: IAndroidProjectPropertiesManager = testInjector.resolve( - ProjectPropertiesManagerLib.AndroidProjectPropertiesManager, { directoryPath: tempFolder }); - await projectPropertiesManager.removeProjectReference("value3"); - - const expectedContent = ['target=android-17', - 'android.library.reference.1=value1', - 'android.library.reference.2=value2', - 'android.library.reference.3=value4', - 'android.library.reference.4=value5'].join('\n') + '\n'; - const actualContent = fs.readText(path.join(tempFolder, "project.properties")); - - assert.equal(expectedContent, actualContent); - assert.equal(4, _.keys(await projectPropertiesManager.getProjectReferences()).length); - }); -}); From 825a378762d08153bc637f0db89baa06126c6f52 Mon Sep 17 00:00:00 2001 From: rosen-vladimirov Date: Thu, 29 Mar 2018 00:17:26 +0300 Subject: [PATCH 4/5] fix(deps): Remove filesize and progress-stream Remove filesize and progress-stream dependencies as they've been used only in a function that is never called. As the function implements interesting functionality, it is commented, not deleted. However, the dependencies are not used anywhere else, so they can be safely removed. --- lib/common | 2 +- npm-shrinkwrap.json | 70 --------------------------------------------- package.json | 2 -- 3 files changed, 1 insertion(+), 73 deletions(-) diff --git a/lib/common b/lib/common index 883a0d2faf..a860d8d9a5 160000 --- a/lib/common +++ b/lib/common @@ -1 +1 @@ -Subproject commit 883a0d2faf2eb37df0a9087b27c63b59b5f2e048 +Subproject commit a860d8d9a536b74b0856f5e02d3300c45bed25f7 diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index f16dd37f3d..14929f16b0 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1452,11 +1452,6 @@ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" }, - "filesize": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.1.2.tgz", - "integrity": "sha1-jB0EdXYIY3CZmyPDLyF8TVGr8oo=" - }, "fill-range": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", @@ -4152,11 +4147,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=" - }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -4605,16 +4595,6 @@ "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", "dev": true }, - "progress-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.1.1.tgz", - "integrity": "sha1-nsvxh5MsSUHVUCGRkNdN7ArEX1Q=", - "requires": { - "single-line-log": "0.3.1", - "speedometer": "0.1.4", - "through2": "0.2.3" - } - }, "proxy-lib": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/proxy-lib/-/proxy-lib-0.4.0.tgz", @@ -5126,11 +5106,6 @@ } } }, - "single-line-log": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-0.3.1.tgz", - "integrity": "sha1-p61lB/IYzl3+FsS/LWWSRkGeegY=" - }, "sinon": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.1.2.tgz", @@ -5254,11 +5229,6 @@ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" }, - "speedometer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", - "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=" - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -5510,38 +5480,6 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, - "through2": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", - "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", - "requires": { - "readable-stream": "1.1.14", - "xtend": "2.1.2" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } - } - }, "tiny-lr": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.2.1.tgz", @@ -6047,14 +5985,6 @@ "version": "https://github.com/telerik/node-XMLHttpRequest/tarball/master", "integrity": "sha1-gyu8L8J4DhCCCmdOlAQRCpQ0M6c=" }, - "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", - "requires": { - "object-keys": "0.4.0" - } - }, "y18n": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", diff --git a/package.json b/package.json index de0ba52467..41f2828895 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,6 @@ "colors": "1.1.2", "email-validator": "1.0.4", "esprima": "2.7.0", - "filesize": "3.1.2", "gaze": "1.1.0", "iconv-lite": "0.4.11", "inquirer": "0.9.0", @@ -61,7 +60,6 @@ "pbxproj-dom": "1.0.11", "plist": "1.1.0", "plist-merge-patch": "0.1.1", - "progress-stream": "1.1.1", "proxy-lib": "0.4.0", "qr-image": "3.2.0", "request": "2.81.0", From 9d196fd9af5eb3ed54d0f71b1a71d55e4d63e0c0 Mon Sep 17 00:00:00 2001 From: rosen-vladimirov Date: Thu, 29 Mar 2018 09:50:31 +0300 Subject: [PATCH 5/5] chore: Update to latest common lib --- lib/common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/common b/lib/common index a860d8d9a5..f325d788fe 160000 --- a/lib/common +++ b/lib/common @@ -1 +1 @@ -Subproject commit a860d8d9a536b74b0856f5e02d3300c45bed25f7 +Subproject commit f325d788fe7304039465fde0091d9ae0f7f7c6a9