From d896dfc4236e893dc578d373cb7ff37852269744 Mon Sep 17 00:00:00 2001 From: Igor Randjelovic Date: Tue, 19 Apr 2022 19:32:04 +0200 Subject: [PATCH 1/8] wip: hmr checks and debug logs --- lib/commands/create-project.ts | 2 +- lib/controllers/run-controller.ts | 4 ++++ lib/services/hmr-status-service.ts | 10 ++++++++++ lib/services/webpack/webpack-compiler-service.ts | 4 ++-- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/lib/commands/create-project.ts b/lib/commands/create-project.ts index c7ad65e82c..eca0965463 100644 --- a/lib/commands/create-project.ts +++ b/lib/commands/create-project.ts @@ -99,7 +99,7 @@ export class CreateProjectCommand implements ICommand { } this.createdProjectData = await this.$projectService.createProject({ - projectName: projectName, + projectName: projectName.toLowerCase(), template: selectedTemplate, appId: this.$options.appid, pathToProject: this.$options.path, diff --git a/lib/controllers/run-controller.ts b/lib/controllers/run-controller.ts index 62c07915ea..44b02866f8 100644 --- a/lib/controllers/run-controller.ts +++ b/lib/controllers/run-controller.ts @@ -778,11 +778,15 @@ export class RunController extends EventEmitter implements IRunController { ); if (!liveSyncResultInfo.didRecover && isInHMRMode) { + console.time("hmrStatus"); + const status = await this.$hmrStatusService.getHmrStatus( device.deviceInfo.identifier, data.hmrData.hash ); + console.timeEnd("hmrStatus"); + // the timeout is assumed OK as the app could be blocked on a breakpoint if (status === HmrConstants.HMR_ERROR_STATUS) { await fullSyncAction(); diff --git a/lib/services/hmr-status-service.ts b/lib/services/hmr-status-service.ts index 288dcabd86..2eea685d50 100644 --- a/lib/services/hmr-status-service.ts +++ b/lib/services/hmr-status-service.ts @@ -27,9 +27,19 @@ export class HmrStatusService implements IHmrStatusService { ): Promise { return new Promise((resolve, reject) => { const key = `${deviceId}${operationHash}`; + + console.log("1. CHECKING HASH STATUS", key); + const status = this.getStatusByKey(key); + if (status) { + resolve(status); + + return; + } + let retryCount = 40; this.intervals[key] = setInterval(() => { + console.log("CHECKING HASH STATUS", key); const status = this.getStatusByKey(key); if (status || retryCount === 0) { clearInterval(this.intervals[key]); diff --git a/lib/services/webpack/webpack-compiler-service.ts b/lib/services/webpack/webpack-compiler-service.ts index 85118b5b6d..9c9017bf68 100644 --- a/lib/services/webpack/webpack-compiler-service.ts +++ b/lib/services/webpack/webpack-compiler-service.ts @@ -562,7 +562,7 @@ export class WebpackCompilerService if (!fileWithLastHash) { return null; } - const matches = fileWithLastHash.match(/\.(.+).hot-update\.js/); + const matches = fileWithLastHash.match(/\.([^.]+?)\.hot-update\.js$/); if (matches) { return matches[1]; @@ -579,7 +579,7 @@ export class WebpackCompilerService staleFiles, hasOnlyHotUpdateFiles: prepareData.hmr, hmrData: { - hash: lastHash || message.hash, + hash: message.hash || lastHash, fallbackFiles: [], }, platform: platformData.platformNameLowerCase, From 548c005c155c96689c71db34950be4108d6aeecb Mon Sep 17 00:00:00 2001 From: Eduardo Speroni Date: Tue, 19 Apr 2022 16:12:15 -0300 Subject: [PATCH 2/8] wip: handle emits --- lib/controllers/run-controller.ts | 8 ++- lib/services/hmr-status-service.ts | 6 +-- .../webpack/webpack-compiler-service.ts | 53 +++++++++++++------ 3 files changed, 46 insertions(+), 21 deletions(-) diff --git a/lib/controllers/run-controller.ts b/lib/controllers/run-controller.ts index 44b02866f8..0566d2776c 100644 --- a/lib/controllers/run-controller.ts +++ b/lib/controllers/run-controller.ts @@ -776,8 +776,14 @@ export class RunController extends EventEmitter implements IRunController { deviceDescriptor, fullSyncAction ); + console.log(`FILESTOSYNC ${filesToSync}`); + // if() { - if (!liveSyncResultInfo.didRecover && isInHMRMode) { + if ( + !liveSyncResultInfo.didRecover && + isInHMRMode && + filesToSync.some((file) => file.includes("hot-update")) + ) { console.time("hmrStatus"); const status = await this.$hmrStatusService.getHmrStatus( diff --git a/lib/services/hmr-status-service.ts b/lib/services/hmr-status-service.ts index 2eea685d50..cc84acf60b 100644 --- a/lib/services/hmr-status-service.ts +++ b/lib/services/hmr-status-service.ts @@ -28,8 +28,8 @@ export class HmrStatusService implements IHmrStatusService { return new Promise((resolve, reject) => { const key = `${deviceId}${operationHash}`; - console.log("1. CHECKING HASH STATUS", key); - const status = this.getStatusByKey(key); + console.log("1. CHECKING HASH STATUS", operationHash); + const status = this.getStatusByKey(operationHash); if (status) { resolve(status); @@ -39,7 +39,7 @@ export class HmrStatusService implements IHmrStatusService { let retryCount = 40; this.intervals[key] = setInterval(() => { - console.log("CHECKING HASH STATUS", key); + console.log("CHECKING HASH STATUS", operationHash); const status = this.getStatusByKey(key); if (status || retryCount === 0) { clearInterval(this.intervals[key]); diff --git a/lib/services/webpack/webpack-compiler-service.ts b/lib/services/webpack/webpack-compiler-service.ts index 9c9017bf68..1e3a03a37c 100644 --- a/lib/services/webpack/webpack-compiler-service.ts +++ b/lib/services/webpack/webpack-compiler-service.ts @@ -52,6 +52,9 @@ export class WebpackCompilerService private webpackProcesses: IDictionary = {}; private expectedHashes: IStringDictionary = {}; + private hashQueue: string[] = []; + private currentCompilationHash: string; + constructor( private $options: IOptions, private $errors: IErrors, @@ -97,6 +100,16 @@ export class WebpackCompilerService "version" in message && "type" in message ) { + const currentHash = (message as IWebpackMessage< + IWebpackCompilation + >).hash; + if ( + this.hashQueue.length == 0 || + this.hashQueue[this.hashQueue.length - 1] !== currentHash + ) { + this.hashQueue.push(currentHash); + } + this.currentCompilationHash = currentHash; // first compilation can be ignored because it will be synced regardless // handling it here would trigger 2 syncs if (isFirstWebpackWatchCompilation) { @@ -504,6 +517,7 @@ export class WebpackCompilerService } private getCurrentHotUpdateHash(emittedFiles: string[]) { + // TODO: don't do this. use the hashQueue instead let hotHash; const hotUpdateScripts = emittedFiles.filter((x) => x.endsWith(".hot-update.js") @@ -544,7 +558,7 @@ export class WebpackCompilerService this.$logger.trace("Webpack build done!"); - const files = message.data.emittedAssets.map((asset: string) => + const files: string[] = message.data.emittedAssets.map((asset: string) => path.join(platformData.appDestinationDirectoryPath, "app", asset) ); const staleFiles = message.data.staleAssets.map((asset: string) => @@ -553,33 +567,38 @@ export class WebpackCompilerService // console.log({ staleFiles }); - // extract last hash from emitted filenames - const lastHash = (() => { - const fileWithLastHash = files.find((fileName: string) => - fileName.endsWith("hot-update.js") - ); - - if (!fileWithLastHash) { - return null; - } - const matches = fileWithLastHash.match(/\.([^.]+?)\.hot-update\.js$/); - - if (matches) { - return matches[1]; - } - })(); + // grab the next hash that needs to be processed. Fallback to current hash. if (!files.length) { // ignore compilations if no new files are emitted return; } + console.log( + `HANDLE HMR MESSAGE ${this.hashQueue} ${this.currentCompilationHash} ${files}` + ); + let currentIdx = 0; + let lastHash = + this.hashQueue.length > 0 + ? this.hashQueue[currentIdx] + : this.currentCompilationHash; + while (lastHash !== this.currentCompilationHash) { + if (files.some((f) => f.endsWith(`${lastHash}.hot-update.js`))) { + this.hashQueue.splice(0, currentIdx + 1); + break; + } + currentIdx++; + lastHash = + this.hashQueue.length > currentIdx + ? this.hashQueue[currentIdx] + : this.currentCompilationHash; + } this.emit(WEBPACK_COMPILATION_COMPLETE, { files, staleFiles, hasOnlyHotUpdateFiles: prepareData.hmr, hmrData: { - hash: message.hash || lastHash, + hash: lastHash, fallbackFiles: [], }, platform: platformData.platformNameLowerCase, From 4bedf0d454bb30b88e518b58449e5f48d483e1f4 Mon Sep 17 00:00:00 2001 From: Eduardo Speroni Date: Wed, 20 Apr 2022 16:40:26 -0300 Subject: [PATCH 3/8] wip: handle app boot --- lib/controllers/run-controller.ts | 17 ++++++++++++++--- lib/definitions/hmr-status-service.d.ts | 1 + lib/services/hmr-status-service.ts | 10 +++++++++- .../webpack/webpack-compiler-service.ts | 3 ++- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/lib/controllers/run-controller.ts b/lib/controllers/run-controller.ts index 0566d2776c..f12e11a48f 100644 --- a/lib/controllers/run-controller.ts +++ b/lib/controllers/run-controller.ts @@ -23,6 +23,7 @@ import { } from "../common/declarations"; import { IInjector } from "../common/definitions/yok"; import { injector } from "../common/yok"; +// import { ISharedEventBus } from "../declarations"; export class RunController extends EventEmitter implements IRunController { private prepareReadyEventHandler: any = null; @@ -48,11 +49,17 @@ export class RunController extends EventEmitter implements IRunController { private $prepareNativePlatformService: IPrepareNativePlatformService, private $projectChangesService: IProjectChangesService, protected $projectDataService: IProjectDataService - ) { + ) // private $sharedEventBus: ISharedEventBus + { super(); } + currentStartingHash = ""; public async run(runData: IRunData): Promise { + // this.$sharedEventBus.on("lastHashChanged", (v) => { + // this.lastHash = v; + // console.log("lasthashchanged", v); + // }); const { liveSyncInfo, deviceDescriptors } = runData; const { projectDir } = liveSyncInfo; @@ -777,13 +784,17 @@ export class RunController extends EventEmitter implements IRunController { fullSyncAction ); console.log(`FILESTOSYNC ${filesToSync}`); - // if() { + const startingHash = this.$hmrStatusService.getStartingHash(); if ( !liveSyncResultInfo.didRecover && isInHMRMode && - filesToSync.some((file) => file.includes("hot-update")) + filesToSync.some((file) => file.includes("hot-update")) && + (!startingHash || + this.currentStartingHash === startingHash || + startingHash === data.hmrData.hash) ) { + this.currentStartingHash = startingHash; console.time("hmrStatus"); const status = await this.$hmrStatusService.getHmrStatus( diff --git a/lib/definitions/hmr-status-service.d.ts b/lib/definitions/hmr-status-service.d.ts index ca78363518..e2a6e1d946 100644 --- a/lib/definitions/hmr-status-service.d.ts +++ b/lib/definitions/hmr-status-service.d.ts @@ -2,4 +2,5 @@ interface IHmrStatusService { watchHmrStatus(deviceId: string, operationHash: string): void; getHmrStatus(deviceId: string, operationHash: string): Promise; attachToHmrStatusEvent(): void; + getStartingHash(): string; } diff --git a/lib/services/hmr-status-service.ts b/lib/services/hmr-status-service.ts index cc84acf60b..ddc126f043 100644 --- a/lib/services/hmr-status-service.ts +++ b/lib/services/hmr-status-service.ts @@ -12,6 +12,7 @@ export class HmrStatusService implements IHmrStatusService { public static STARTED_MESSAGE = "Checking for updates to the bundle with"; public static SUCCESS_MESSAGE = "Successfully applied update with"; public static FAILED_MESSAGE = "Cannot apply update with"; + private startingBundleHash: string; private hashOperationStatuses: IDictionary = {}; private intervals: IDictionary = {}; @@ -44,7 +45,7 @@ export class HmrStatusService implements IHmrStatusService { if (status || retryCount === 0) { clearInterval(this.intervals[key]); this.intervals[key] = null; - resolve(status); + resolve(status ?? HmrConstants.HMR_ERROR_STATUS); } else { retryCount--; } @@ -85,6 +86,9 @@ export class HmrStatusService implements IHmrStatusService { regex: /\[HMR]\[(.+)]\s*(\w+)\s*\|/, handler: (matches: RegExpMatchArray, deviceId: string) => { const [hash, status] = matches.slice(1); + if (status.trim() === "boot") { + this.startingBundleHash = hash; + } const mappedStatus = statusStringMap[status.trim()]; if (mappedStatus) { this.setData(deviceId, hash, statusStringMap[status]); @@ -94,6 +98,10 @@ export class HmrStatusService implements IHmrStatusService { }); } + public getStartingHash() { + return this.startingBundleHash; + } + private handleAppCrash(matches: RegExpMatchArray, deviceId: string): void { for (const operationId in this.hashOperationStatuses) { const operation = this.hashOperationStatuses[operationId]; diff --git a/lib/services/webpack/webpack-compiler-service.ts b/lib/services/webpack/webpack-compiler-service.ts index 1e3a03a37c..cc0a7b4e5f 100644 --- a/lib/services/webpack/webpack-compiler-service.ts +++ b/lib/services/webpack/webpack-compiler-service.ts @@ -66,7 +66,7 @@ export class WebpackCompilerService private $mobileHelper: Mobile.IMobileHelper, private $cleanupService: ICleanupService, private $packageManager: IPackageManager, - private $packageInstallationManager: IPackageInstallationManager // private $sharedEventBus: ISharedEventBus + private $packageInstallationManager: IPackageInstallationManager ) { super(); } @@ -543,6 +543,7 @@ export class WebpackCompilerService } } + lastEmittedHash = ""; private handleHMRMessage( message: IWebpackMessage, platformData: IPlatformData, From 97cc96a56b4a5b61e3154a48e3288ab81fea008e Mon Sep 17 00:00:00 2001 From: Igor Randjelovic Date: Thu, 21 Apr 2022 23:43:23 +0200 Subject: [PATCH 4/8] chore: cleanup --- lib/commands/create-project.ts | 2 +- lib/controllers/run-controller.ts | 7 +++---- lib/services/hmr-status-service.ts | 4 ++-- lib/services/webpack/webpack-compiler-service.ts | 6 +++--- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/lib/commands/create-project.ts b/lib/commands/create-project.ts index eca0965463..78ffc5eb99 100644 --- a/lib/commands/create-project.ts +++ b/lib/commands/create-project.ts @@ -99,7 +99,7 @@ export class CreateProjectCommand implements ICommand { } this.createdProjectData = await this.$projectService.createProject({ - projectName: projectName.toLowerCase(), + projectName: projectName?.toLowerCase(), template: selectedTemplate, appId: this.$options.appid, pathToProject: this.$options.path, diff --git a/lib/controllers/run-controller.ts b/lib/controllers/run-controller.ts index f12e11a48f..28613c70ac 100644 --- a/lib/controllers/run-controller.ts +++ b/lib/controllers/run-controller.ts @@ -48,9 +48,8 @@ export class RunController extends EventEmitter implements IRunController { private $prepareDataService: IPrepareDataService, private $prepareNativePlatformService: IPrepareNativePlatformService, private $projectChangesService: IProjectChangesService, - protected $projectDataService: IProjectDataService - ) // private $sharedEventBus: ISharedEventBus - { + protected $projectDataService: IProjectDataService // private $sharedEventBus: ISharedEventBus + ) { super(); } currentStartingHash = ""; @@ -783,7 +782,7 @@ export class RunController extends EventEmitter implements IRunController { deviceDescriptor, fullSyncAction ); - console.log(`FILESTOSYNC ${filesToSync}`); + // console.log(`FILESTOSYNC ${filesToSync}`); const startingHash = this.$hmrStatusService.getStartingHash(); if ( diff --git a/lib/services/hmr-status-service.ts b/lib/services/hmr-status-service.ts index ddc126f043..16325f0be8 100644 --- a/lib/services/hmr-status-service.ts +++ b/lib/services/hmr-status-service.ts @@ -29,7 +29,7 @@ export class HmrStatusService implements IHmrStatusService { return new Promise((resolve, reject) => { const key = `${deviceId}${operationHash}`; - console.log("1. CHECKING HASH STATUS", operationHash); + this.$logger.trace("INITIAL CHECKING HASH STATUS", operationHash); const status = this.getStatusByKey(operationHash); if (status) { resolve(status); @@ -40,7 +40,7 @@ export class HmrStatusService implements IHmrStatusService { let retryCount = 40; this.intervals[key] = setInterval(() => { - console.log("CHECKING HASH STATUS", operationHash); + this.$logger.trace("CHECKING HASH STATUS", operationHash); const status = this.getStatusByKey(key); if (status || retryCount === 0) { clearInterval(this.intervals[key]); diff --git a/lib/services/webpack/webpack-compiler-service.ts b/lib/services/webpack/webpack-compiler-service.ts index cc0a7b4e5f..f25373ed22 100644 --- a/lib/services/webpack/webpack-compiler-service.ts +++ b/lib/services/webpack/webpack-compiler-service.ts @@ -574,9 +574,9 @@ export class WebpackCompilerService // ignore compilations if no new files are emitted return; } - console.log( - `HANDLE HMR MESSAGE ${this.hashQueue} ${this.currentCompilationHash} ${files}` - ); + // console.log( + // `HANDLE HMR MESSAGE ${this.hashQueue} ${this.currentCompilationHash} ${files}` + // ); let currentIdx = 0; let lastHash = this.hashQueue.length > 0 From b82811a0b92806d3e34e958e7cddccdeeb3f21ae Mon Sep 17 00:00:00 2001 From: Igor Randjelovic Date: Thu, 21 Apr 2022 23:43:37 +0200 Subject: [PATCH 5/8] chore(release): 8.2.4-alpha.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a0020fe2ad..c3ed0a48b3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "nativescript", "preferGlobal": true, - "version": "8.2.3", + "version": "8.2.4-alpha.0", "author": "NativeScript ", "description": "Command-line interface for building NativeScript projects", "bin": { From 8b473dbca9f19a4bfacbc7bb12dadcd00c504010 Mon Sep 17 00:00:00 2001 From: Igor Randjelovic Date: Fri, 29 Apr 2022 16:57:59 +0200 Subject: [PATCH 6/8] revert: projectName lowercase --- lib/commands/create-project.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/commands/create-project.ts b/lib/commands/create-project.ts index 78ffc5eb99..0304f44db5 100644 --- a/lib/commands/create-project.ts +++ b/lib/commands/create-project.ts @@ -99,7 +99,7 @@ export class CreateProjectCommand implements ICommand { } this.createdProjectData = await this.$projectService.createProject({ - projectName: projectName?.toLowerCase(), + projectName, template: selectedTemplate, appId: this.$options.appid, pathToProject: this.$options.path, From 99e05bd7d721afec6c236f66e3cb469fad1f28e9 Mon Sep 17 00:00:00 2001 From: Igor Randjelovic Date: Fri, 29 Apr 2022 16:59:35 +0200 Subject: [PATCH 7/8] chore: bump nativescript-dev-xcode --- package-lock.json | 14 +++++++------- package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package-lock.json b/package-lock.json index f794a0db27..562e3bc150 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,7 +39,7 @@ "minimatch": "3.0.4", "mkdirp": "1.0.4", "mute-stream": "0.0.8", - "nativescript-dev-xcode": "0.2.1", + "nativescript-dev-xcode": "0.4.0", "nativescript-preview-sdk": "0.4.2", "open": "7.1.0", "ora": "5.0.0", @@ -8784,9 +8784,9 @@ } }, "node_modules/nativescript-dev-xcode": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/nativescript-dev-xcode/-/nativescript-dev-xcode-0.2.1.tgz", - "integrity": "sha512-uzqkcUnEx0YIi6jkz/EvdhkCBoOmv6XL40qoNYnPQpSAHmbHIOduZC2sg3TQJs4nq1vnKz+J6myq7Pmyocm6tw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/nativescript-dev-xcode/-/nativescript-dev-xcode-0.4.0.tgz", + "integrity": "sha512-6pSGJOoFvTd1nNRA6RvBSgXWW5VV4WChhqiAWpLBv46VePwpccPqrAQ0qXvxHk373DwU9GwojQVFa178KVYTBw==", "dependencies": { "simple-plist": "^1.0.0", "uuid": "^3.3.2" @@ -20040,9 +20040,9 @@ } }, "nativescript-dev-xcode": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/nativescript-dev-xcode/-/nativescript-dev-xcode-0.2.1.tgz", - "integrity": "sha512-uzqkcUnEx0YIi6jkz/EvdhkCBoOmv6XL40qoNYnPQpSAHmbHIOduZC2sg3TQJs4nq1vnKz+J6myq7Pmyocm6tw==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/nativescript-dev-xcode/-/nativescript-dev-xcode-0.4.0.tgz", + "integrity": "sha512-6pSGJOoFvTd1nNRA6RvBSgXWW5VV4WChhqiAWpLBv46VePwpccPqrAQ0qXvxHk373DwU9GwojQVFa178KVYTBw==", "requires": { "simple-plist": "^1.0.0", "uuid": "^3.3.2" diff --git a/package.json b/package.json index c3ed0a48b3..3c266cc2be 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ "minimatch": "3.0.4", "mkdirp": "1.0.4", "mute-stream": "0.0.8", - "nativescript-dev-xcode": "0.2.1", + "nativescript-dev-xcode": "0.4.0", "nativescript-preview-sdk": "0.4.2", "open": "7.1.0", "ora": "5.0.0", diff --git a/yarn.lock b/yarn.lock index 43b1af8262..5d2a89ab97 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4926,10 +4926,10 @@ "snapdragon" "^0.8.1" "to-regex" "^3.0.1" -"nativescript-dev-xcode@0.2.1": - "integrity" "sha512-uzqkcUnEx0YIi6jkz/EvdhkCBoOmv6XL40qoNYnPQpSAHmbHIOduZC2sg3TQJs4nq1vnKz+J6myq7Pmyocm6tw==" - "resolved" "https://registry.npmjs.org/nativescript-dev-xcode/-/nativescript-dev-xcode-0.2.1.tgz" - "version" "0.2.1" +"nativescript-dev-xcode@0.4.0": + "integrity" "sha512-6pSGJOoFvTd1nNRA6RvBSgXWW5VV4WChhqiAWpLBv46VePwpccPqrAQ0qXvxHk373DwU9GwojQVFa178KVYTBw==" + "resolved" "https://registry.npmjs.org/nativescript-dev-xcode/-/nativescript-dev-xcode-0.4.0.tgz" + "version" "0.4.0" dependencies: "simple-plist" "^1.0.0" "uuid" "^3.3.2" From f979251c60743db94755f6aaa9799e44237be87e Mon Sep 17 00:00:00 2001 From: Igor Randjelovic Date: Fri, 29 Apr 2022 17:22:01 +0200 Subject: [PATCH 8/8] chore(release): 8.2.4-alpha.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 562e3bc150..816aa83888 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "nativescript", - "version": "8.2.3", + "version": "8.2.4-alpha.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "nativescript", - "version": "8.2.3", + "version": "8.2.4-alpha.1", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 3c266cc2be..823d06da86 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "nativescript", "preferGlobal": true, - "version": "8.2.4-alpha.0", + "version": "8.2.4-alpha.1", "author": "NativeScript ", "description": "Command-line interface for building NativeScript projects", "bin": {