nativescript 8.6.6-vision.9 → 8.7.0-rc.1

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/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
  <br>
9
9
  </h1>
10
10
 
11
- <h4 align="center">The NativeScript CLI lets you create, build, and deploy <a href="https://docs.nativescript.org/" target="_blank">NativeScript</a>-based apps on iOS and Android devices.</h4>
11
+ <h4 align="center">The NativeScript CLI lets you create, build, and deploy <a href="https://docs.nativescript.org/" target="_blank">NativeScript</a> apps.</h4>
12
12
  </a>
13
13
  </h4>
14
14
 
@@ -18,30 +18,51 @@
18
18
 
19
19
  Get it using: `npm install -g nativescript`
20
20
 
21
- * [What is NativeScript](#what-is-nativescript "Quick overview of NativeScript, the JavaScript framework for cross-platform development of native iOS and Android apps")
22
- * [How the NativeScript CLI works](#how-the-nativescript-cli-works "How the CLI works in more detail")
23
- * [Supported Platforms](#supported-platforms "The mobile platforms you can target with NativeScript")
24
- * [System Requirements](#system-requirements "The hardware and software requirements for setting up and working with the NativeScript CLI")
25
- * [Installation](#installation "How to configure and install the NativeScript CLI")
26
- * [Install the NativeScript CLI](#install-the-nativescript-cli)
27
- * [Configure Proxy Usage](#configure-proxy-settings)
28
- * [Quick Start](#quick-start "Get started with the NativeScript CLI")
29
- * [The Commands](#the-commands)
30
- * [Create Project](#create-project)
31
- * [Develop Your Project](#develop-your-project)
32
- * [Build Your Project](#build-your-project)
33
- * [Run Your Project](#run-your-project)
34
- * [Extending the CLI](#extending-the-cli)
35
- * [Troubleshooting](#troubleshooting)
36
- * [How to Contribute](#how-to-contribute)
37
- * [How to Build](#how-to-build)
38
- * [Get Help](#get-help)
39
- * [License](#license)
21
+ - [What is NativeScript](#what-is-nativescript)
22
+ - [How the NativeScript CLI works](#how-the-nativescript-cli-works)
23
+ - [Supported Platforms](#supported-platforms)
24
+ - [System Requirements](#system-requirements)
25
+ - [Installation](#installation)
26
+ - [Install the NativeScript CLI](#install-the-nativescript-cli)
27
+ - [Configure Proxy Settings](#configure-proxy-settings)
28
+ - [Set Proxy Settings](#set-proxy-settings)
29
+ - [Attributes](#attributes)
30
+ - [Options](#options)
31
+ - [Limitations](#limitations)
32
+ - [Display Current Proxy Settings](#display-current-proxy-settings)
33
+ - [Clear Proxy Settings](#clear-proxy-settings)
34
+ - [Quick Start](#quick-start)
35
+ - [The Commands](#the-commands)
36
+ - [Create Project](#create-project)
37
+ - [Develop Your Project](#develop-your-project)
38
+ - [Development with NativeScript](#development-with-nativescript)
39
+ - [Development in `app`](#development-in-app)
40
+ - [Development in `platforms`](#development-in-platforms)
41
+ - [Modifying Configuration Files](#modifying-configuration-files)
42
+ - [Modifying Entitlements File (iOS only)](#modifying-entitlements-file-ios-only)
43
+ - [Build Your Project](#build-your-project)
44
+ - [Run Your Project](#run-your-project)
45
+ - [Extending the CLI](#extending-the-cli)
46
+ - [Troubleshooting](#troubleshooting)
47
+ - [How to Contribute](#how-to-contribute)
48
+ - [How to Build](#how-to-build)
49
+ - [Get Help](#get-help)
50
+ - [License](#license)
40
51
 
41
52
  What is NativeScript
42
53
  ===
43
54
 
44
- NativeScript is a cross-platform JavaScript framework that lets you develop native iOS and Android apps from a single code base. The framework provides JavaScript access to the native APIs, user interface, and rendering engines of iOS and Android. By using JavaScript or TypeScript, you can create one project that builds into an iOS or Android app with completely native user experience.
55
+ NativeScript provides platform APIs directly to the JavaScript runtime (_with strong types_) for a rich TypeScript development experience.
56
+
57
+ Some popular use cases:
58
+
59
+ - Building Web, iOS, Android and Vision Pro apps with a shared codebase (aka, cross platform apps)
60
+ - Building native platform apps with portable JavaScript skills
61
+ - Augmenting JavaScript projects with platform API capabilities
62
+ - AndroidTV and Watch development
63
+ - watchOS development
64
+ - Learning native platforms through JavaScript understanding
65
+ - Exploring platform API documentation by trying APIs [directly from a web browser](https://preview.nativescript.org/) without requiring a platform development machine setup.
45
66
 
46
67
  To learn more about NativeScript, you can check the following resources:
47
68
 
@@ -1 +1 @@
1
- {"@jsdevtools/coverage-istanbul-loader":"3.0.5","karma":"6.4.2","karma-coverage":"2.2.1","karma-nativescript-launcher":"0.4.0","mocha":"10.2.0","karma-mocha":"2.0.1","karma-chai":"0.1.0","karma-jasmine":"4.0.2","karma-qunit":"4.1.2","@types/karma-chai":"0.1.6","@types/mocha":"10.0.6","@types/jasmine":"5.1.4","@types/qunit":"2.19.10","nyc":"15.1.0"}
1
+ {"@jsdevtools/coverage-istanbul-loader":"3.0.5","karma":"6.4.3","karma-coverage":"2.2.1","karma-nativescript-launcher":"0.4.0","mocha":"10.4.0","karma-mocha":"2.0.1","karma-chai":"0.1.0","karma-jasmine":"4.0.2","karma-qunit":"4.2.0","@types/karma-chai":"0.1.6","@types/mocha":"10.0.6","@types/jasmine":"5.1.4","@types/qunit":"2.19.10","nyc":"15.1.0"}
@@ -65,6 +65,9 @@ class CreateProjectCommand {
65
65
  else if (this.$options.svelte) {
66
66
  selectedTemplate = constants.SVELTE_NAME;
67
67
  }
68
+ else if (this.$options["vision"]) {
69
+ selectedTemplate = constants.RESERVED_TEMPLATE_NAMES["vision"];
70
+ }
68
71
  else if (this.$options["vision-ng"]) {
69
72
  selectedTemplate = constants.RESERVED_TEMPLATE_NAMES["vision-ng"];
70
73
  }
@@ -1,4 +1,4 @@
1
- export type IKeyCommandPlatform = "Android" | "iOS" | "all";
1
+ export type IKeyCommandPlatform = "Android" | "iOS" | "visionOS" | "all";
2
2
  export type IKeysLowerCase =
3
3
  | "a"
4
4
  | "b"
@@ -55,6 +55,7 @@ export interface IKeyCommand {
55
55
  key: IValidKeyName;
56
56
  platform: IKeyCommandPlatform;
57
57
  description: string;
58
+ group: string;
58
59
  willBlockKeyCommandExecution?: boolean;
59
60
  execute(platform: string): Promise<void>;
60
61
  canExecute?: (processType: SupportedProcessType) => boolean;
@@ -49,7 +49,7 @@ class IOSDevice extends ios_device_base_1.IOSDeviceBase {
49
49
  this.deviceInfo = {
50
50
  identifier: deviceActionInfo.deviceId,
51
51
  vendor: "Apple",
52
- platform: this.$devicePlatformsConstants.iOS,
52
+ platform: this.getPlatform(productType),
53
53
  status: deviceStatus,
54
54
  errorHelp: deviceStatus === commonConstants.UNREACHABLE_STATUS
55
55
  ? `Device ${deviceActionInfo.deviceId} is ${commonConstants.UNREACHABLE_STATUS}`
@@ -131,13 +131,20 @@ class IOSDevice extends ios_device_base_1.IOSDeviceBase {
131
131
  else if (_.startsWith(productType, "ipod")) {
132
132
  isArm64Architecture = majorVersion >= 7;
133
133
  }
134
- else if (_.startsWith(productType, "vision")) {
134
+ else if (_.startsWith(productType, "realitydevice")) {
135
135
  isArm64Architecture = true;
136
136
  }
137
137
  activeArchitecture = isArm64Architecture ? "arm64" : "armv7";
138
138
  }
139
139
  return activeArchitecture;
140
140
  }
141
+ getPlatform(productType) {
142
+ productType = productType.toLowerCase().trim();
143
+ if (_.startsWith(productType, "realitydevice")) {
144
+ return this.$devicePlatformsConstants.visionOS;
145
+ }
146
+ return this.$devicePlatformsConstants.iOS;
147
+ }
141
148
  }
142
149
  __decorate([
143
150
  (0, decorators_1.cache)()
@@ -55,6 +55,7 @@ class IosDeviceProductNameMapper {
55
55
  "iPod4,1": "iPod touch (4th gen)",
56
56
  "iPod5,1": "iPod touch (5th gen)",
57
57
  "iPod7,1": "iPod touch (6th gen)",
58
+ "RealityDevice14,1": "Vision Pro (1st gen)",
58
59
  };
59
60
  }
60
61
  resolveProductName(deviceType) {
@@ -26,6 +26,7 @@ const ios_device_base_1 = require("../ios-device-base");
26
26
  const constants_1 = require("../../../../constants");
27
27
  class IOSSimulator extends ios_device_base_1.IOSDeviceBase {
28
28
  constructor(simulator, $devicePlatformsConstants, $deviceLogProvider, $errors, $lockService, $injector, $iOSDebuggerPortService, $iOSSimResolver, $iOSEmulatorServices, $iOSNotification, $iOSSimulatorLogProvider, $logger) {
29
+ var _a;
29
30
  super();
30
31
  this.simulator = simulator;
31
32
  this.$devicePlatformsConstants = $devicePlatformsConstants;
@@ -48,7 +49,7 @@ class IOSSimulator extends ios_device_base_1.IOSDeviceBase {
48
49
  model: _.last(this.simulator.fullId.split(".")),
49
50
  version: this.simulator.runtimeVersion,
50
51
  vendor: "Apple",
51
- platform: this.$devicePlatformsConstants.iOS,
52
+ platform: (_a = this.simulator.platform) !== null && _a !== void 0 ? _a : this.$devicePlatformsConstants.iOS,
52
53
  status: constants.CONNECTED_STATUS,
53
54
  errorHelp: null,
54
55
  isTablet: this.simulator.fullId.toLowerCase().indexOf("ipad") !== -1,
@@ -7,7 +7,9 @@ export interface IStartService {
7
7
  toggleVerbose(): void;
8
8
 
9
9
  runIOS(): Promise<void>;
10
+ runVisionOS(): Promise<void>;
10
11
  runAndroid(): Promise<void>;
11
12
  stopIOS(): Promise<void>;
13
+ stopVisionOS(): Promise<void>;
12
14
  stopAndroid(): Promise<void>;
13
15
  }
@@ -106,7 +106,6 @@ class AppDebugSocketProxyFactory extends events_1.EventEmitter {
106
106
  let currentWebSocket = null;
107
107
  const server = new ws.Server({
108
108
  port: localPort,
109
- host: "localhost",
110
109
  verifyClient: (info, callback) => __awaiter(this, void 0, void 0, function* () {
111
110
  let acceptHandshake = true;
112
111
  clientConnectionLockRelease = null;
@@ -72,6 +72,7 @@ class KeyCommandHelper {
72
72
  }
73
73
  printCommands(platform) {
74
74
  const commands = yok_1.injector.getRegisteredKeyCommandsNames();
75
+ const groupings = {};
75
76
  const commandHelp = commands.reduce((arr, key) => {
76
77
  const command = yok_1.injector.resolveKeyCommand(key);
77
78
  if (!command.description ||
@@ -82,6 +83,10 @@ class KeyCommandHelper {
82
83
  return arr;
83
84
  }
84
85
  else {
86
+ if (!groupings[command.group]) {
87
+ groupings[command.group] = true;
88
+ arr.push(` \n${color_1.color.underline(color_1.color.bold(command.group))}\n`);
89
+ }
85
90
  arr.push(` ${color_1.color.bold(command.key)} — ${command.description}`);
86
91
  return arr;
87
92
  }
@@ -3,9 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const yok_1 = require("../common/yok");
4
4
  const path = "./key-commands/index";
5
5
  yok_1.injector.requireKeyCommand("a", path);
6
- yok_1.injector.requireKeyCommand("i", path);
7
6
  yok_1.injector.requireKeyCommand("A", path);
7
+ yok_1.injector.requireKeyCommand("i", path);
8
8
  yok_1.injector.requireKeyCommand("I", path);
9
+ yok_1.injector.requireKeyCommand("v", path);
10
+ yok_1.injector.requireKeyCommand("V", path);
9
11
  yok_1.injector.requireKeyCommand("r", path);
10
12
  yok_1.injector.requireKeyCommand("R", path);
11
13
  yok_1.injector.requireKeyCommand("w", path);
@@ -15,3 +17,5 @@ yok_1.injector.requireKeyCommand("?", path);
15
17
  yok_1.injector.requireKeyCommand("\u0003", path);
16
18
  yok_1.injector.requireCommand("open|ios", path);
17
19
  yok_1.injector.requireCommand("open|android", path);
20
+ yok_1.injector.requireCommand("open|visionos", path);
21
+ yok_1.injector.requireCommand("open|vision", path);
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.QuestionMark = exports.N = exports.C = exports.W = exports.CtrlC = exports.ShiftR = exports.R = exports.OpenIOSCommand = exports.ShiftI = exports.I = exports.OpenAndroidCommand = exports.ShiftA = exports.A = void 0;
12
+ exports.QuestionMark = exports.N = exports.C = exports.W = exports.CtrlC = exports.ShiftR = exports.R = exports.OpenVisionOSCommand = exports.ShiftV = exports.V = exports.OpenIOSCommand = exports.ShiftI = exports.I = exports.OpenAndroidCommand = exports.ShiftA = exports.A = void 0;
13
13
  const fs = require("fs");
14
14
  const os_1 = require("os");
15
15
  const path = require("path");
@@ -20,7 +20,8 @@ class A {
20
20
  this.$startService = $startService;
21
21
  this.key = "a";
22
22
  this.platform = "Android";
23
- this.description = "Run android app";
23
+ this.description = "Run Android app";
24
+ this.group = "Android";
24
25
  }
25
26
  execute() {
26
27
  return __awaiter(this, void 0, void 0, function* () {
@@ -40,7 +41,8 @@ class ShiftA {
40
41
  this.$projectData = $projectData;
41
42
  this.key = "A";
42
43
  this.platform = "Android";
43
- this.description = "Open android project in Android Studio";
44
+ this.description = "Open project in Android Studio";
45
+ this.group = "Android";
44
46
  this.willBlockKeyCommandExecution = true;
45
47
  this.isInteractive = true;
46
48
  }
@@ -118,6 +120,7 @@ class I {
118
120
  this.key = "i";
119
121
  this.platform = "iOS";
120
122
  this.description = "Run iOS app";
123
+ this.group = "iOS";
121
124
  }
122
125
  execute() {
123
126
  return __awaiter(this, void 0, void 0, function* () {
@@ -139,7 +142,8 @@ class ShiftI {
139
142
  this.$xcodebuildArgsService = $xcodebuildArgsService;
140
143
  this.key = "I";
141
144
  this.platform = "iOS";
142
- this.description = "Open iOS project in Xcode";
145
+ this.description = "Open project in Xcode";
146
+ this.group = "iOS";
143
147
  this.willBlockKeyCommandExecution = true;
144
148
  this.isInteractive = true;
145
149
  }
@@ -194,12 +198,100 @@ class OpenIOSCommand extends ShiftI {
194
198
  }
195
199
  }
196
200
  exports.OpenIOSCommand = OpenIOSCommand;
201
+ class V {
202
+ constructor($startService) {
203
+ this.$startService = $startService;
204
+ this.key = "v";
205
+ this.platform = "visionOS";
206
+ this.description = "Run visionOS app";
207
+ this.group = "visionOS";
208
+ }
209
+ execute() {
210
+ return __awaiter(this, void 0, void 0, function* () {
211
+ this.$startService.runVisionOS();
212
+ });
213
+ }
214
+ canExecute(processType) {
215
+ return processType === "start";
216
+ }
217
+ }
218
+ exports.V = V;
219
+ class ShiftV {
220
+ constructor($iOSProjectService, $logger, $childProcess, $projectData, $xcodeSelectService, $xcodebuildArgsService, $options) {
221
+ this.$iOSProjectService = $iOSProjectService;
222
+ this.$logger = $logger;
223
+ this.$childProcess = $childProcess;
224
+ this.$projectData = $projectData;
225
+ this.$xcodeSelectService = $xcodeSelectService;
226
+ this.$xcodebuildArgsService = $xcodebuildArgsService;
227
+ this.$options = $options;
228
+ this.key = "V";
229
+ this.platform = "visionOS";
230
+ this.description = "Open project in Xcode";
231
+ this.group = "visionOS";
232
+ this.willBlockKeyCommandExecution = true;
233
+ this.isInteractive = true;
234
+ }
235
+ execute() {
236
+ return __awaiter(this, void 0, void 0, function* () {
237
+ this.$options.platformOverride = "visionOS";
238
+ const os = (0, os_1.platform)();
239
+ if (os === "darwin") {
240
+ this.$projectData.initializeProjectData();
241
+ const visionOSDir = path.resolve(this.$projectData.platformsDir, "visionos");
242
+ if (!fs.existsSync(visionOSDir)) {
243
+ const prepareCommand = yok_1.injector.resolveCommand("prepare");
244
+ yield prepareCommand.execute(["visionos"]);
245
+ if (this.isInteractive) {
246
+ process.stdin.resume();
247
+ }
248
+ }
249
+ const platformData = this.$iOSProjectService.getPlatformData(this.$projectData);
250
+ const xcprojectFile = this.$xcodebuildArgsService.getXcodeProjectArgs(platformData, this.$projectData)[1];
251
+ if (fs.existsSync(xcprojectFile)) {
252
+ this.$xcodeSelectService
253
+ .getDeveloperDirectoryPath()
254
+ .then(() => this.$childProcess.exec(`open ${xcprojectFile}`, {}))
255
+ .catch((e) => {
256
+ this.$logger.error(e.message);
257
+ });
258
+ }
259
+ else {
260
+ this.$logger.error(`Unable to open project file: ${xcprojectFile}`);
261
+ }
262
+ }
263
+ else {
264
+ this.$logger.error("Opening a project in XCode requires macOS.");
265
+ }
266
+ this.$options.platformOverride = null;
267
+ });
268
+ }
269
+ }
270
+ exports.ShiftV = ShiftV;
271
+ class OpenVisionOSCommand extends ShiftV {
272
+ constructor($iOSProjectService, $logger, $childProcess, $projectData, $xcodeSelectService, $xcodebuildArgsService, $options) {
273
+ super($iOSProjectService, $logger, $childProcess, $projectData, $xcodeSelectService, $xcodebuildArgsService, $options);
274
+ this.$options = $options;
275
+ this.isInteractive = false;
276
+ }
277
+ execute() {
278
+ const _super = Object.create(null, {
279
+ execute: { get: () => super.execute }
280
+ });
281
+ return __awaiter(this, void 0, void 0, function* () {
282
+ this.$options.watch = false;
283
+ _super.execute.call(this);
284
+ });
285
+ }
286
+ }
287
+ exports.OpenVisionOSCommand = OpenVisionOSCommand;
197
288
  class R {
198
289
  constructor($liveSyncCommandHelper) {
199
290
  this.$liveSyncCommandHelper = $liveSyncCommandHelper;
200
291
  this.key = "r";
201
292
  this.platform = "all";
202
293
  this.description = "Rebuild native app if needed and restart";
294
+ this.group = "Development Workflow";
203
295
  this.willBlockKeyCommandExecution = true;
204
296
  }
205
297
  execute(platform) {
@@ -218,6 +310,7 @@ class ShiftR {
218
310
  this.key = "R";
219
311
  this.platform = "all";
220
312
  this.description = "Force rebuild native app and restart";
313
+ this.group = "Development Workflow";
221
314
  this.willBlockKeyCommandExecution = true;
222
315
  }
223
316
  execute(platform) {
@@ -236,6 +329,7 @@ class CtrlC {
236
329
  constructor() {
237
330
  this.key = "\u0003";
238
331
  this.platform = "all";
332
+ this.group = "Development Workflow";
239
333
  this.willBlockKeyCommandExecution = false;
240
334
  }
241
335
  execute() {
@@ -251,6 +345,7 @@ class W {
251
345
  this.key = "w";
252
346
  this.platform = "all";
253
347
  this.description = "Toggle file watcher";
348
+ this.group = "Development Workflow";
254
349
  this.willBlockKeyCommandExecution = true;
255
350
  }
256
351
  execute() {
@@ -273,6 +368,7 @@ class C {
273
368
  this.key = "c";
274
369
  this.platform = "all";
275
370
  this.description = "Clean project";
371
+ this.group = "Development Workflow";
276
372
  this.willBlockKeyCommandExecution = true;
277
373
  }
278
374
  execute() {
@@ -295,6 +391,7 @@ class N {
295
391
  this.key = "n";
296
392
  this.platform = "all";
297
393
  this.description = "Install dependencies";
394
+ this.group = "Development Workflow";
298
395
  this.willBlockKeyCommandExecution = true;
299
396
  }
300
397
  execute(platform) {
@@ -312,6 +409,7 @@ class QuestionMark {
312
409
  this.key = "?";
313
410
  this.platform = "all";
314
411
  this.description = "Show this help";
412
+ this.group = "Development Workflow";
315
413
  this.willBlockKeyCommandExecution = true;
316
414
  }
317
415
  execute(platform_) {
@@ -324,6 +422,10 @@ class QuestionMark {
324
422
  case "ios":
325
423
  platform = "iOS";
326
424
  break;
425
+ case "visionOS":
426
+ case "vision":
427
+ platform = "visionOS";
428
+ break;
327
429
  default:
328
430
  platform = "all";
329
431
  break;
@@ -335,9 +437,11 @@ class QuestionMark {
335
437
  }
336
438
  exports.QuestionMark = QuestionMark;
337
439
  yok_1.injector.registerKeyCommand("a", A);
338
- yok_1.injector.registerKeyCommand("i", I);
339
440
  yok_1.injector.registerKeyCommand("A", ShiftA);
441
+ yok_1.injector.registerKeyCommand("i", I);
340
442
  yok_1.injector.registerKeyCommand("I", ShiftI);
443
+ yok_1.injector.registerKeyCommand("v", V);
444
+ yok_1.injector.registerKeyCommand("V", ShiftV);
341
445
  yok_1.injector.registerKeyCommand("r", R);
342
446
  yok_1.injector.registerKeyCommand("R", ShiftR);
343
447
  yok_1.injector.registerKeyCommand("w", W);
@@ -347,4 +451,6 @@ yok_1.injector.registerKeyCommand("n", N);
347
451
  yok_1.injector.registerKeyCommand("?", QuestionMark);
348
452
  yok_1.injector.registerKeyCommand("\u0003", CtrlC);
349
453
  yok_1.injector.registerCommand("open|ios", OpenIOSCommand);
454
+ yok_1.injector.registerCommand("open|visionos", OpenVisionOSCommand);
455
+ yok_1.injector.registerCommand("open|vision", OpenVisionOSCommand);
350
456
  yok_1.injector.registerCommand("open|android", OpenAndroidCommand);
@@ -60,9 +60,17 @@ class XcodebuildArgsService {
60
60
  return __awaiter(this, void 0, void 0, function* () {
61
61
  const architectures = yield this.getArchitecturesArgs(buildConfig);
62
62
  const archivePath = path.join(platformData.getBuildOutputPath(buildConfig), projectData.projectName + ".xcarchive");
63
+ let destination = "generic/platform=iOS";
64
+ let isvisionOS = this.$devicePlatformsConstants.isvisionOS(buildConfig.platform);
65
+ if (isvisionOS) {
66
+ destination = "platform=visionOS";
67
+ if (buildConfig._device) {
68
+ destination += `,id=${buildConfig._device.deviceInfo.identifier}`;
69
+ }
70
+ }
63
71
  const args = [
64
72
  "-destination",
65
- "generic/platform=iOS",
73
+ destination,
66
74
  "archive",
67
75
  "-archivePath",
68
76
  archivePath,
@@ -107,6 +115,11 @@ class XcodebuildArgsService {
107
115
  if (deployTargetVersion) {
108
116
  extraArgs.push(`${deployTargetProperty}=${deployTargetVersion}`);
109
117
  }
118
+ const bootProperty = "NS_SWIFTUI_BOOT";
119
+ const bootValue = this.$xcconfigService.readPropertyValue(BUILD_SETTINGS_FILE_PATH, bootProperty);
120
+ if (bootValue) {
121
+ extraArgs.push(`${bootProperty}=${bootValue}`);
122
+ }
110
123
  if (this.$fs.exists(xcworkspacePath)) {
111
124
  return ["-workspace", xcworkspacePath, ...extraArgs];
112
125
  }
@@ -14,7 +14,8 @@ const path = require("path");
14
14
  const plist_merge_patch_1 = require("plist-merge-patch");
15
15
  const yok_1 = require("../common/yok");
16
16
  class IOSEntitlementsService {
17
- constructor($fs, $logger, $devicePlatformsConstants, $mobileHelper, $pluginsService) {
17
+ constructor($options, $fs, $logger, $devicePlatformsConstants, $mobileHelper, $pluginsService) {
18
+ this.$options = $options;
18
19
  this.$fs = $fs;
19
20
  this.$logger = $logger;
20
21
  this.$devicePlatformsConstants = $devicePlatformsConstants;
@@ -22,12 +23,14 @@ class IOSEntitlementsService {
22
23
  this.$pluginsService = $pluginsService;
23
24
  }
24
25
  getDefaultAppEntitlementsPath(projectData) {
26
+ var _a;
25
27
  const entitlementsName = IOSEntitlementsService.DefaultEntitlementsName;
26
- const entitlementsPath = path.join(projectData.appResourcesDirectoryPath, this.$mobileHelper.normalizePlatformName(this.$devicePlatformsConstants.iOS), entitlementsName);
28
+ const entitlementsPath = path.join(projectData.appResourcesDirectoryPath, this.$mobileHelper.normalizePlatformName((_a = this.$options.platformOverride) !== null && _a !== void 0 ? _a : this.$devicePlatformsConstants.iOS), entitlementsName);
27
29
  return entitlementsPath;
28
30
  }
29
31
  getPlatformsEntitlementsPath(projectData) {
30
- return path.join(projectData.platformsDir, this.$devicePlatformsConstants.iOS.toLowerCase(), projectData.projectName, projectData.projectName + ".entitlements");
32
+ var _a;
33
+ return path.join(projectData.platformsDir, (_a = this.$options.platformOverride) !== null && _a !== void 0 ? _a : this.$devicePlatformsConstants.iOS.toLowerCase(), projectData.projectName, projectData.projectName + ".entitlements");
31
34
  }
32
35
  getPlatformsEntitlementsRelativePath(projectData) {
33
36
  return path.join(projectData.projectName, projectData.projectName + ".entitlements");
@@ -48,6 +48,11 @@ class StartService {
48
48
  this.runForPlatform(this.$devicePlatformsConstants.iOS);
49
49
  });
50
50
  }
51
+ runVisionOS() {
52
+ return __awaiter(this, void 0, void 0, function* () {
53
+ this.runForPlatform(this.$devicePlatformsConstants.visionOS);
54
+ });
55
+ }
51
56
  runAndroid() {
52
57
  return __awaiter(this, void 0, void 0, function* () {
53
58
  this.runForPlatform(this.$devicePlatformsConstants.Android);
@@ -60,6 +65,13 @@ class StartService {
60
65
  }
61
66
  });
62
67
  }
68
+ stopVisionOS() {
69
+ return __awaiter(this, void 0, void 0, function* () {
70
+ if (this.visionos) {
71
+ this.visionos.kill("SIGINT");
72
+ }
73
+ });
74
+ }
63
75
  stopAndroid() {
64
76
  return __awaiter(this, void 0, void 0, function* () {
65
77
  if (this.android) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nativescript",
3
3
  "preferGlobal": true,
4
- "version": "8.6.6-vision.9",
4
+ "version": "8.7.0-rc.1",
5
5
  "author": "NativeScript <support@nativescript.org>",
6
6
  "description": "Command-line interface for building NativeScript projects",
7
7
  "bin": {
@@ -61,7 +61,7 @@
61
61
  "@npmcli/move-file": "^2.0.0",
62
62
  "@rigor789/resolve-package-path": "1.0.7",
63
63
  "@rigor789/trapezedev-project": "7.1.1",
64
- "ansi-colors": "^4.1.3",
64
+ "ansi-colors": "^4.1.3",
65
65
  "archiver": "^5.3.1",
66
66
  "axios": "1.6.5",
67
67
  "byline": "5.0.0",
@@ -75,7 +75,7 @@
75
75
  "esprima": "4.0.1",
76
76
  "font-finder": "1.1.0",
77
77
  "glob": "9.3.4",
78
- "ios-device-lib": "0.9.2",
78
+ "ios-device-lib": "0.9.3",
79
79
  "ios-mobileprovision-finder": "1.1.0",
80
80
  "ios-sim-portable": "4.5.0",
81
81
  "jimp": "0.22.10",
@@ -86,7 +86,7 @@
86
86
  "minimatch": "7.4.2",
87
87
  "mkdirp": "2.1.6",
88
88
  "mute-stream": "1.0.0",
89
- "nativescript-dev-xcode": "0.6.0",
89
+ "nativescript-dev-xcode": "0.7.0",
90
90
  "open": "8.4.2",
91
91
  "ora": "5.4.1",
92
92
  "pacote": "15.1.1",
@@ -1,15 +0,0 @@
1
- # Changers Lorgs!
2
-
3
- ## 1.0
4
-
5
- Full rewrite. Essentially a brand new module.
6
-
7
- - Return a promise instead of taking a callback.
8
- - Use native `fs.mkdir(path, { recursive: true })` when available.
9
- - Drop support for outdated Node.js versions. (Technically still works on
10
- Node.js v8, but only 10 and above are officially supported.)
11
-
12
- ## 0.x
13
-
14
- Original and most widely used recursive directory creation implementation
15
- in JavaScript, dating back to 2010.
@@ -1,65 +0,0 @@
1
- # v3.0
2
-
3
- - Add `--preserve-root` option to executable (default true)
4
- - Drop support for Node.js below version 6
5
-
6
- # v2.7
7
-
8
- - Make `glob` an optional dependency
9
-
10
- # 2.6
11
-
12
- - Retry on EBUSY on non-windows platforms as well
13
- - Make `rimraf.sync` 10000% more reliable on Windows
14
-
15
- # 2.5
16
-
17
- - Handle Windows EPERM when lstat-ing read-only dirs
18
- - Add glob option to pass options to glob
19
-
20
- # 2.4
21
-
22
- - Add EPERM to delay/retry loop
23
- - Add `disableGlob` option
24
-
25
- # 2.3
26
-
27
- - Make maxBusyTries and emfileWait configurable
28
- - Handle weird SunOS unlink-dir issue
29
- - Glob the CLI arg for better Windows support
30
-
31
- # 2.2
32
-
33
- - Handle ENOENT properly on Windows
34
- - Allow overriding fs methods
35
- - Treat EPERM as indicative of non-empty dir
36
- - Remove optional graceful-fs dep
37
- - Consistently return null error instead of undefined on success
38
- - win32: Treat ENOTEMPTY the same as EBUSY
39
- - Add `rimraf` binary
40
-
41
- # 2.1
42
-
43
- - Fix SunOS error code for a non-empty directory
44
- - Try rmdir before readdir
45
- - Treat EISDIR like EPERM
46
- - Remove chmod
47
- - Remove lstat polyfill, node 0.7 is not supported
48
-
49
- # 2.0
50
-
51
- - Fix myGid call to check process.getgid
52
- - Simplify the EBUSY backoff logic.
53
- - Use fs.lstat in node >= 0.7.9
54
- - Remove gently option
55
- - remove fiber implementation
56
- - Delete files that are marked read-only
57
-
58
- # 1.0
59
-
60
- - Allow ENOENT in sync method
61
- - Throw when no callback is provided
62
- - Make opts.gently an absolute path
63
- - use 'stat' if 'lstat' is not available
64
- - Consistent error naming, and rethrow non-ENOENT stat errors
65
- - add fiber implementation
@@ -1,16 +0,0 @@
1
- # Change Log
2
-
3
- All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
-
5
- <a name="1.0.1"></a>
6
- ## [1.0.1](https://github.com/npm/stringify-package/compare/v1.0.0...v1.0.1) (2019-09-30)
7
-
8
-
9
- ### Bug Fixes
10
-
11
- * strict comparison ([0c5675f](https://github.com/npm/stringify-package/commit/0c5675f)), closes [#2](https://github.com/npm/stringify-package/issues/2)
12
-
13
-
14
-
15
- <a name="1.0.0"></a>
16
- # 1.0.0 (2018-07-18)