@akylas/nativescript-cli 8.8.6 → 8.9.4

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.
Files changed (51) hide show
  1. package/config/test-deps-versions-generated.json +16 -0
  2. package/docs/man_pages/project/configuration/widget-ios.md +24 -0
  3. package/docs/man_pages/project/configuration/widget.md +24 -0
  4. package/docs/man_pages/start.md +1 -1
  5. package/lib/.d.ts +2 -0
  6. package/lib/bootstrap.js +1 -0
  7. package/lib/bun-package-manager.js +1 -1
  8. package/lib/commands/appstore-upload.js +3 -6
  9. package/lib/commands/create-project.js +6 -1
  10. package/lib/commands/generate.js +2 -41
  11. package/lib/commands/widget.js +799 -0
  12. package/lib/common/file-system.js +1 -2
  13. package/lib/common/logger/logger.js +4 -4
  14. package/lib/common/mobile/android/android-emulator-services.js +1 -1
  15. package/lib/common/mobile/android/android-ini-file-parser.js +8 -6
  16. package/lib/common/mobile/android/logcat-helper.js +1 -1
  17. package/lib/common/mobile/emulator-helper.js +1 -0
  18. package/lib/common/mobile/mobile-core/devices-service.js +2 -1
  19. package/lib/common/opener.js +2 -2
  20. package/lib/common/services/hooks-service.js +23 -6
  21. package/lib/constants.js +2 -1
  22. package/lib/controllers/migrate-controller.js +8 -8
  23. package/lib/controllers/prepare-controller.js +7 -6
  24. package/lib/data/prepare-data.js +1 -0
  25. package/lib/declarations.d.ts +1 -1
  26. package/lib/definitions/ios.d.ts +11 -1
  27. package/lib/definitions/prepare.d.ts +2 -0
  28. package/lib/definitions/project.d.ts +50 -24
  29. package/lib/key-commands/index.js +28 -21
  30. package/lib/node-package-manager.js +1 -1
  31. package/lib/options.js +1 -0
  32. package/lib/services/analytics/analytics-service.js +2 -1
  33. package/lib/services/android/gradle-build-args-service.js +1 -1
  34. package/lib/services/android-plugin-build-service.js +1 -1
  35. package/lib/services/apple-portal/apple-portal-application-service.js +1 -1
  36. package/lib/services/apple-portal/apple-portal-session-service.js +36 -9
  37. package/lib/services/apple-portal/srp/srp-wrapper.js +61 -0
  38. package/lib/services/assets-generation/assets-generation-service.js +33 -15
  39. package/lib/services/ios/export-options-plist-service.js +4 -2
  40. package/lib/services/ios/ios-signing-service.js +45 -23
  41. package/lib/services/ios/spm-service.js +10 -1
  42. package/lib/services/ios/xcodebuild-service.js +2 -0
  43. package/lib/services/ios-debugger-port-service.js +1 -1
  44. package/lib/services/ios-project-service.js +45 -14
  45. package/lib/services/livesync/android-livesync-tool.js +1 -1
  46. package/lib/services/project-config-service.js +12 -3
  47. package/lib/services/webpack/webpack-compiler-service.js +10 -3
  48. package/lib/tools/config-manipulation/config-transformer.js +9 -0
  49. package/package.json +51 -56
  50. package/vendor/gradle-app/app/build.gradle +347 -119
  51. package/vendor/gradle-app/build.gradle +7 -7
@@ -19,7 +19,6 @@ const helpers_1 = require("./helpers");
19
19
  const constants_1 = require("../constants");
20
20
  const os_1 = require("os");
21
21
  const archiver_1 = require("archiver");
22
- const stringifyPackage = require("stringify-package");
23
22
  const mkdirp = require("mkdirp");
24
23
  const detectNewline = require("detect-newline");
25
24
  let FileSystem = FileSystem_1 = class FileSystem {
@@ -235,7 +234,7 @@ let FileSystem = FileSystem_1 = class FileSystem {
235
234
  const existingFile = this.readText(filename);
236
235
  newline = detectNewline(existingFile);
237
236
  }
238
- stringifiedData = stringifyPackage(data, space, newline);
237
+ stringifiedData = JSON.stringify(data, null, space).concat(newline);
239
238
  }
240
239
  else {
241
240
  stringifiedData = JSON.stringify(data, null, space);
@@ -18,7 +18,7 @@ const cli_layout_1 = require("./layouts/cli-layout");
18
18
  const constants_1 = require("../../constants");
19
19
  const yok_1 = require("../yok");
20
20
  const color_1 = require("../../color");
21
- const markedTerminal = require("marked-terminal").markedTerminal;
21
+ const marked_terminal_1 = require("marked-terminal");
22
22
  class Logger {
23
23
  constructor($config) {
24
24
  this.$config = $config;
@@ -27,7 +27,7 @@ class Logger {
27
27
  this.passwordReplacement = "$1$3*******$2$4";
28
28
  this.defaultLogLevel = this.$config.DEBUG
29
29
  ? constants_1.LoggerLevel.TRACE
30
- : constants_1.LoggerLevel.INFO;
30
+ : constants_1.LoggerLevel.WARN;
31
31
  }
32
32
  initialize(opts) {
33
33
  opts = opts || {};
@@ -123,8 +123,8 @@ class Logger {
123
123
  },
124
124
  },
125
125
  };
126
- marked_1.marked.use(markedTerminal(opts));
127
- const formattedMessage = (0, marked_1.marked)(util.format.apply(null, args));
126
+ marked_1.marked.use((0, marked_terminal_1.markedTerminal)(opts));
127
+ const formattedMessage = marked_1.marked.parse(util.format.apply(null, args));
128
128
  this.info(formattedMessage, { [constants_1.LoggerConfigData.skipNewLine]: true });
129
129
  }
130
130
  isVerbose() {
@@ -146,7 +146,7 @@ class AndroidEmulatorServices {
146
146
  }
147
147
  const minVersion = semver.coerce(constants_1.AndroidVirtualDevice.MIN_ANDROID_VERSION);
148
148
  const bestVersion = best && best.version && semver.coerce(best.version);
149
- return bestVersion && semver.gte(bestVersion, minVersion) ? best : null;
149
+ return !bestVersion || semver.gte(bestVersion, minVersion) ? best : null;
150
150
  }
151
151
  async waitForEmulatorBootToComplete(emulator, endTimeEpoch, timeout) {
152
152
  this.$logger.info("Waiting for emulator device initialization...", {
@@ -15,27 +15,29 @@ class AndroidIniFileParser {
15
15
  const encoding = this.getAvdEncoding(iniFilePath);
16
16
  const contents = this.$fs.readText(iniFilePath, encoding).split("\n");
17
17
  return _.reduce(contents, (result, line) => {
18
+ var _a, _b;
18
19
  const parsedLine = line.split("=");
19
- const key = parsedLine[0];
20
+ const key = (_a = parsedLine[0]) === null || _a === void 0 ? void 0 : _a.trim();
21
+ const value = (_b = parsedLine[1]) === null || _b === void 0 ? void 0 : _b.trim();
20
22
  switch (key) {
21
23
  case "target":
22
- result.target = parsedLine[1];
24
+ result.target = value;
23
25
  result.targetNum = this.readTargetNum(result.target);
24
26
  break;
25
27
  case "path":
26
28
  case "AvdId":
27
- result[_.lowerFirst(key)] = parsedLine[1];
29
+ result[_.lowerFirst(key)] = value;
28
30
  break;
29
31
  case "hw.device.name":
30
- result.device = parsedLine[1];
32
+ result.device = value;
31
33
  break;
32
34
  case "avd.ini.displayname":
33
- result.displayName = parsedLine[1];
35
+ result.displayName = value;
34
36
  break;
35
37
  case "abi.type":
36
38
  case "skin.name":
37
39
  case "sdcard.size":
38
- result[key.split(".")[0]] = parsedLine[1];
40
+ result[key.split(".")[0]] = value;
39
41
  break;
40
42
  }
41
43
  return result;
@@ -143,7 +143,7 @@ class LogcatHelper {
143
143
  "ActivityManager",
144
144
  ];
145
145
  if (appId) {
146
- logcatCommand.push(`--regex=START.*${appId}`);
146
+ logcatCommand.push(`--regex=Start.*${appId}`);
147
147
  }
148
148
  const appStartTrackingStream = await adb.executeCommand(logcatCommand, {
149
149
  returnChildProcess: true,
@@ -7,6 +7,7 @@ const yok_1 = require("../yok");
7
7
  class EmulatorHelper {
8
8
  constructor() {
9
9
  this.mapAndroidApiLevelToVersion = {
10
+ "android-36": "16.0.0",
10
11
  "android-35": "15.0.0",
11
12
  "android-34": "14.0.0",
12
13
  "android-33": "13.0.0",
@@ -498,7 +498,8 @@ class DevicesService extends events_1.EventEmitter {
498
498
  }
499
499
  if (data.platform === this.$devicePlatformsConstants.visionOS &&
500
500
  deviceInstances.length) {
501
- const runningDeviceInstance = deviceInstances.find((device) => device.deviceInfo.platform === this.$devicePlatformsConstants.visionOS);
501
+ const runningDeviceInstance = deviceInstances.find((device) => device.deviceInfo.platform ===
502
+ this.$devicePlatformsConstants.visionOS);
502
503
  if (!runningDeviceInstance) {
503
504
  return this.startEmulatorCore(data);
504
505
  }
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Opener = void 0;
4
- const open_1 = require("open");
4
+ const xopen = require("open");
5
5
  const yok_1 = require("./yok");
6
6
  class Opener {
7
7
  open(target, appname) {
8
- return (0, open_1.default)(target, {
8
+ return xopen(target, {
9
9
  app: {
10
10
  name: appname,
11
11
  },
@@ -93,24 +93,38 @@ class HooksService {
93
93
  }
94
94
  return _.flatten(results);
95
95
  }
96
+ isESModule(hook) {
97
+ const ext = path.extname(hook.fullPath).toLowerCase();
98
+ return ext === ".mjs";
99
+ }
96
100
  async executeHook(directoryPath, hookName, hook, hookArguments) {
97
101
  hookArguments = hookArguments || {};
98
102
  let result;
99
103
  const relativePath = path.relative(directoryPath, hook.fullPath);
100
104
  const trackId = relativePath.replace(new RegExp("\\" + path.sep, "g"), constants_1.AnalyticsEventLabelDelimiter);
105
+ const isESM = this.isESModule(hook);
101
106
  let command = this.getSheBangInterpreter(hook);
102
107
  let inProc = false;
103
108
  if (!command) {
104
109
  command = hook.fullPath;
105
- if (path.extname(hook.fullPath).toLowerCase() === ".js") {
110
+ if ([".mjs", ".cjs", ".js"].includes(path.extname(hook.fullPath).toLowerCase())) {
106
111
  command = process.argv[0];
107
- inProc = this.shouldExecuteInProcess(this.$fs.readText(hook.fullPath));
112
+ inProc = isESM
113
+ ? true
114
+ : this.shouldExecuteInProcess(this.$fs.readText(hook.fullPath));
108
115
  }
109
116
  }
110
117
  const startTime = this.$performanceService.now();
111
118
  if (inProc) {
112
119
  this.$logger.trace("Executing %s hook at location %s in-process", hookName, hook.fullPath);
113
- const hookEntryPoint = require(hook.fullPath);
120
+ let hookEntryPoint;
121
+ if (isESM) {
122
+ const { default: hookFn } = await Promise.resolve(`${hook.fullPath}`).then(s => require(s));
123
+ hookEntryPoint = hookFn;
124
+ }
125
+ else {
126
+ hookEntryPoint = require(hook.fullPath);
127
+ }
114
128
  this.$logger.trace(`Validating ${hookName} arguments.`);
115
129
  const invalidArguments = this.validateHookArguments(hookEntryPoint, hook.fullPath);
116
130
  if (invalidArguments.length) {
@@ -119,7 +133,8 @@ class HooksService {
119
133
  }
120
134
  const projectDataHookArg = hookArguments["hookArgs"] && hookArguments["hookArgs"]["projectData"];
121
135
  if (projectDataHookArg) {
122
- hookArguments["projectData"] = hookArguments["$projectData"] = projectDataHookArg;
136
+ hookArguments["projectData"] = hookArguments["$projectData"] =
137
+ projectDataHookArg;
123
138
  }
124
139
  const maybePromise = this.$injector.resolve(hookEntryPoint, hookArguments);
125
140
  if (maybePromise) {
@@ -215,9 +230,11 @@ class HooksService {
215
230
  prepareEnvironment(hookFullPath) {
216
231
  const clientName = this.$staticConfig.CLIENT_NAME.toUpperCase();
217
232
  const environment = {};
218
- environment[util.format("%s-COMMANDLINE", clientName)] = process.argv.join(" ");
233
+ environment[util.format("%s-COMMANDLINE", clientName)] =
234
+ process.argv.join(" ");
219
235
  environment[util.format("%s-HOOK_FULL_PATH", clientName)] = hookFullPath;
220
- environment[util.format("%s-VERSION", clientName)] = this.$staticConfig.version;
236
+ environment[util.format("%s-VERSION", clientName)] =
237
+ this.$staticConfig.version;
221
238
  return {
222
239
  cwd: this.$projectHelper.projectDir,
223
240
  stdio: "inherit",
package/lib/constants.js CHANGED
@@ -69,7 +69,7 @@ exports.APK_EXTENSION_NAME = ".apk";
69
69
  exports.AAB_EXTENSION_NAME = ".aab";
70
70
  exports.APKS_EXTENSION_NAME = ".apks";
71
71
  exports.HASHES_FILE_NAME = ".nshashes";
72
- exports.TNS_NATIVE_SOURCE_GROUP_NAME = "NSNativeSources";
72
+ exports.TNS_NATIVE_SOURCE_GROUP_NAME = "AppResourcesSrc";
73
73
  exports.NATIVE_SOURCE_FOLDER = "src";
74
74
  exports.APPLICATION_RESPONSE_TIMEOUT_SECONDS = 60;
75
75
  exports.NATIVE_EXTENSION_FOLDER = "extensions";
@@ -146,6 +146,7 @@ exports.RESERVED_TEMPLATE_NAMES = {
146
146
  reactjs: "@nativescript/template-blank-react",
147
147
  solid: "@nativescript/template-blank-solid",
148
148
  solidjs: "@nativescript/template-blank-solid",
149
+ solidts: "@nativescript/template-blank-solid-ts",
149
150
  svelte: "@nativescript/template-blank-svelte",
150
151
  vision: "@nativescript/template-hello-world-ts-vision",
151
152
  "vision-vue": "@nativescript/template-blank-vue-vision",
@@ -40,7 +40,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
40
40
  {
41
41
  packageName: "@nativescript/core",
42
42
  minVersion: "6.5.0",
43
- desiredVersion: "~8.8.0",
43
+ desiredVersion: "~8.9.0",
44
44
  shouldAddIfMissing: true,
45
45
  },
46
46
  {
@@ -50,7 +50,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
50
50
  {
51
51
  packageName: "@nativescript/types",
52
52
  minVersion: "7.0.0",
53
- desiredVersion: "~8.8.0",
53
+ desiredVersion: "~8.9.0",
54
54
  isDev: true,
55
55
  },
56
56
  {
@@ -100,7 +100,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
100
100
  {
101
101
  packageName: "@nativescript/angular",
102
102
  minVersion: "10.0.0",
103
- desiredVersion: "^18.0.0",
103
+ desiredVersion: "^19.0.0",
104
104
  async shouldMigrateAction(dependency, projectData, loose) {
105
105
  if (!this.hasDependency(dependency, projectData)) {
106
106
  return false;
@@ -147,7 +147,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
147
147
  packageName: "typescript",
148
148
  isDev: true,
149
149
  minVersion: "3.7.0",
150
- desiredVersion: "~5.4.0",
150
+ desiredVersion: "~5.7.0",
151
151
  },
152
152
  {
153
153
  packageName: "node-sass",
@@ -176,13 +176,13 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
176
176
  {
177
177
  packageName: "@nativescript/ios",
178
178
  minVersion: "6.5.3",
179
- desiredVersion: "~8.8.0",
179
+ desiredVersion: "~8.9.0",
180
180
  isDev: true,
181
181
  },
182
182
  {
183
183
  packageName: "@nativescript/android",
184
184
  minVersion: "7.0.0",
185
- desiredVersion: "~8.8.0",
185
+ desiredVersion: "~8.9.0",
186
186
  isDev: true,
187
187
  },
188
188
  ];
@@ -722,7 +722,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
722
722
  }
723
723
  async migrateNativeScriptAngular() {
724
724
  const minVersion = "10.0.0";
725
- const desiredVersion = "~18.0.0";
725
+ const desiredVersion = "~19.1.0";
726
726
  const dependencies = [
727
727
  {
728
728
  packageName: "@angular/animations",
@@ -781,7 +781,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
781
781
  {
782
782
  packageName: "zone.js",
783
783
  minVersion: "0.11.1",
784
- desiredVersion: "~0.14.0",
784
+ desiredVersion: "~0.15.0",
785
785
  shouldAddIfMissing: true,
786
786
  },
787
787
  {
@@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.PrepareController = void 0;
10
- const choki = require("chokidar");
10
+ const chokidar_1 = require("chokidar");
11
11
  const events_1 = require("events");
12
12
  const _ = require("lodash");
13
13
  const path = require("path");
@@ -97,7 +97,7 @@ class PrepareController extends events_1.EventEmitter {
97
97
  platform: prepareData.platform.toLowerCase(),
98
98
  };
99
99
  }
100
- await this.writeRuntimePackageJson(projectData, platformData);
100
+ await this.writeRuntimePackageJson(projectData, platformData, prepareData);
101
101
  await this.$projectChangesService.savePrepareInfo(platformData, projectData, prepareData);
102
102
  this.$logger.info(`Project successfully prepared (${prepareData.platform.toLowerCase()})`);
103
103
  return result;
@@ -186,9 +186,7 @@ class PrepareController extends events_1.EventEmitter {
186
186
  },
187
187
  ignored: ["**/.*", ".*"],
188
188
  };
189
- const watcher = choki
190
- .watch(patterns, watcherOptions)
191
- .on("all", async (event, filePath) => {
189
+ const watcher = (0, chokidar_1.watch)(patterns, watcherOptions).on("all", async (event, filePath) => {
192
190
  if (this.isFileWatcherPaused())
193
191
  return;
194
192
  filePath = path.join(projectData.projectDir, filePath);
@@ -228,7 +226,7 @@ class PrepareController extends events_1.EventEmitter {
228
226
  .concat(pluginsPackageJsonFiles);
229
227
  return patterns;
230
228
  }
231
- async writeRuntimePackageJson(projectData, platformData) {
229
+ async writeRuntimePackageJson(projectData, platformData, prepareData = null) {
232
230
  var _a, _b;
233
231
  const configInfo = this.$projectConfigService.detectProjectConfigs(projectData.projectDir);
234
232
  if (configInfo.usingNSConfig) {
@@ -303,6 +301,9 @@ class PrepareController extends events_1.EventEmitter {
303
301
  catch (error) {
304
302
  this.$logger.trace("Failed to read emitted package.json. Error is: ", error);
305
303
  }
304
+ if (prepareData === null || prepareData === void 0 ? void 0 : prepareData.uniqueBundle) {
305
+ packageData.main = `${packageData.main}.${prepareData.uniqueBundle}`;
306
+ }
306
307
  this.$fs.writeJson(packagePath, packageData);
307
308
  }
308
309
  emitPrepareEvent(filesChangeEventData) {
@@ -33,6 +33,7 @@ class PrepareData extends controller_data_base_1.ControllerDataBase {
33
33
  this.watchNative = data.watchNative;
34
34
  }
35
35
  this.hostProjectPath = data.hostProjectPath;
36
+ this.uniqueBundle = !this.watch && data.uniqueBundle ? Date.now() : 0;
36
37
  }
37
38
  }
38
39
  exports.PrepareData = PrepareData;
@@ -711,7 +711,7 @@ interface IOptions
711
711
  dryRun: boolean;
712
712
 
713
713
  platformOverride: string;
714
-
714
+ uniqueBundle: boolean;
715
715
  // allow arbitrary options
716
716
  [optionName: string]: any;
717
717
  }
@@ -41,8 +41,18 @@ declare global {
41
41
  ): Promise<string>;
42
42
  }
43
43
 
44
+ type IosSPMPackage = IosSPMPackageDefinition & { targets?: string[] };
45
+
44
46
  interface ISPMService {
45
- applySPMPackages(platformData: IPlatformData, projectData: IProjectData);
47
+ applySPMPackages(
48
+ platformData: IPlatformData,
49
+ projectData: IProjectData,
50
+ pluginSpmPackages?: IosSPMPackage[]
51
+ );
52
+ getSPMPackages(
53
+ projectData: IProjectData,
54
+ platform: string
55
+ ): IosSPMPackage[];
46
56
  }
47
57
 
48
58
  interface IXcodebuildArgsService {
@@ -14,6 +14,8 @@ declare global {
14
14
 
15
15
  // embedding
16
16
  hostProjectPath?: string;
17
+
18
+ uniqueBundle: number;
17
19
  }
18
20
 
19
21
  interface IiOSCodeSigningData {
@@ -101,10 +101,36 @@ interface INsConfigPlaform {
101
101
  id?: string;
102
102
  }
103
103
 
104
+ interface IOSSPMPackageBase {
105
+ name: string;
106
+ libs: string[];
107
+ /**
108
+ * Optional: If you have more targets (like widgets for example)
109
+ * you can list their names here to include the Swift Package with them
110
+ */
111
+ targets?: string[];
112
+ }
113
+
114
+ export interface IOSRemoteSPMPackage extends IOSSPMPackageBase {
115
+ repositoryURL: string;
116
+ version: string;
117
+ }
118
+
119
+ export interface IOSLocalSPMPackage extends IOSSPMPackageBase {
120
+ path: string;
121
+ }
122
+
123
+ export type IOSSPMPackage = IOSRemoteSPMPackage | IOSLocalSPMPackage;
124
+
104
125
  interface INsConfigIOS extends INsConfigPlaform {
105
126
  discardUncaughtJsExceptions?: boolean;
106
127
  runtimePackageName?: string
107
128
  cocoapodUseBundleExec?: boolean
129
+ /**
130
+ * Swift Package Manager
131
+ * List packages to be included in the iOS build.
132
+ */
133
+ SPMPackages?: Array<IOSSPMPackage>;
108
134
  }
109
135
 
110
136
  interface INSConfigVisionOS extends INsConfigIOS {}
@@ -218,7 +244,7 @@ interface IProjectData extends ICreateProjectData {
218
244
  initializeProjectData(projectDir?: string): void;
219
245
  initializeProjectDataFromContent(
220
246
  packageJsonContent: string,
221
- projectDir?: string
247
+ projectDir?: string,
222
248
  ): void;
223
249
  getAppDirectoryPath(projectDir?: string): string;
224
250
  getAppDirectoryRelativePath(): string;
@@ -309,7 +335,7 @@ interface IProjectDataService {
309
335
  */
310
336
  getRuntimePackage(
311
337
  projectDir: string,
312
- platform: SupportedPlatform
338
+ platform: SupportedPlatform,
313
339
  ): IBasePluginData;
314
340
 
315
341
  /**
@@ -329,7 +355,7 @@ interface IProjectCleanupService {
329
355
  */
330
356
  clean(
331
357
  pathsToClean: string[],
332
- options?: IProjectCleanupOptions
358
+ options?: IProjectCleanupOptions,
333
359
  ): Promise<IProjectCleanupResult>;
334
360
 
335
361
  /**
@@ -338,7 +364,7 @@ interface IProjectCleanupService {
338
364
  */
339
365
  cleanPath(
340
366
  pathToClean: string,
341
- options?: IProjectCleanupOptions
367
+ options?: IProjectCleanupOptions,
342
368
  ): Promise<IProjectCleanupResult>;
343
369
  }
344
370
 
@@ -440,7 +466,7 @@ interface IProjectConfigService {
440
466
 
441
467
  writeLegacyNSConfigIfNeeded(
442
468
  projectDir: string,
443
- runtimePackage: IBasePluginData
469
+ runtimePackage: IBasePluginData,
444
470
  ): Promise<void>;
445
471
  }
446
472
 
@@ -543,14 +569,14 @@ interface IProjectTemplatesService {
543
569
  */
544
570
  prepareTemplate(
545
571
  templateName: string,
546
- projectDir: string
572
+ projectDir: string,
547
573
  ): Promise<ITemplateData>;
548
574
  }
549
575
 
550
576
  interface IPlatformProjectServiceBase {
551
577
  getPluginPlatformsFolderPath(
552
578
  pluginData: IPluginData,
553
- platform: string
579
+ platform: string,
554
580
  ): string;
555
581
  getFrameworkVersion(projectData: IProjectData): string;
556
582
  }
@@ -612,7 +638,7 @@ interface ILocalBuildService {
612
638
  */
613
639
  build(
614
640
  platform: string,
615
- platformBuildOptions: IPlatformBuildData
641
+ platformBuildOptions: IPlatformBuildData,
616
642
  ): Promise<string>;
617
643
  /**
618
644
  * Removes build artifacts specific to the platform
@@ -632,7 +658,7 @@ interface ITestExecutionService {
632
658
  startKarmaServer(
633
659
  platform: string,
634
660
  liveSyncInfo: ILiveSyncInfo,
635
- deviceDescriptors: ILiveSyncDeviceDescriptor[]
661
+ deviceDescriptors: ILiveSyncDeviceDescriptor[],
636
662
  ): Promise<void>;
637
663
  canStartKarmaServer(projectData: IProjectData): Promise<boolean>;
638
664
  }
@@ -666,17 +692,17 @@ interface ICocoaPodsService {
666
692
  */
667
693
  applyPodfileFromAppResources(
668
694
  projectData: IProjectData,
669
- platformData: IPlatformData
695
+ platformData: IPlatformData,
670
696
  ): Promise<void>;
671
697
 
672
698
  applyPodfileArchExclusions(
673
699
  projectData: IProjectData,
674
- platformData: IPlatformData
700
+ platformData: IPlatformData,
675
701
  ): Promise<void>;
676
702
 
677
703
  applyPodfileFromExtensions(
678
704
  projectData: IProjectData,
679
- platformData: IPlatformData
705
+ platformData: IPlatformData,
680
706
  ): Promise<void>;
681
707
 
682
708
  /**
@@ -691,7 +717,7 @@ interface ICocoaPodsService {
691
717
  moduleName: string,
692
718
  podfilePath: string,
693
719
  projectData: IProjectData,
694
- platformData: IPlatformData
720
+ platformData: IPlatformData,
695
721
  ): Promise<void>;
696
722
 
697
723
  /**
@@ -713,7 +739,7 @@ interface ICocoaPodsService {
713
739
  moduleName: string,
714
740
  podfilePath: string,
715
741
  projectData: IProjectData,
716
- nativeProjectPath: string
742
+ nativeProjectPath: string,
717
743
  ): void;
718
744
 
719
745
  /**
@@ -731,7 +757,7 @@ interface ICocoaPodsService {
731
757
  */
732
758
  executePodInstall(
733
759
  projectRoot: string,
734
- xcodeProjPath: string
760
+ xcodeProjPath: string,
735
761
  ): Promise<ISpawnResult>;
736
762
 
737
763
  /**
@@ -743,7 +769,7 @@ interface ICocoaPodsService {
743
769
  mergePodXcconfigFile(
744
770
  projectData: IProjectData,
745
771
  platformData: IPlatformData,
746
- opts: IRelease
772
+ opts: IRelease,
747
773
  ): Promise<void>;
748
774
  }
749
775
 
@@ -751,16 +777,16 @@ interface ICocoaPodsPlatformManager {
751
777
  addPlatformSection(
752
778
  projectData: IProjectData,
753
779
  podfilePlatformData: IPodfilePlatformData,
754
- projectPodfileContent: string
780
+ projectPodfileContent: string,
755
781
  ): string;
756
782
  removePlatformSection(
757
783
  moduleName: string,
758
784
  projectPodFileContent: string,
759
- podfilePath: string
785
+ podfilePath: string,
760
786
  ): string;
761
787
  replacePlatformRow(
762
788
  podfileContent: string,
763
- podfilePath: string
789
+ podfilePath: string,
764
790
  ): { replacedContent: string; podfilePlatformData: IPodfilePlatformData };
765
791
  }
766
792
 
@@ -785,24 +811,24 @@ interface IIOSNativeTargetService {
785
811
  targetType: string,
786
812
  project: IXcode.project,
787
813
  platformData: IPlatformData,
788
- parentTarget?: string
814
+ parentTarget?: string,
789
815
  ): IXcode.target;
790
816
  prepareSigning(
791
817
  targetUuids: string[],
792
818
  projectData: IProjectData,
793
- projectPath: string
819
+ projectPath: string,
794
820
  ): void;
795
821
  getTargetDirectories(folderPath: string): string[];
796
822
  setXcodeTargetBuildConfigurationProperties(
797
823
  properties: IXcodeTargetBuildConfigurationProperty[],
798
824
  targetName: string,
799
- project: IXcode.project
825
+ project: IXcode.project,
800
826
  ): void;
801
827
  setConfigurationsFromJsonFile(
802
828
  jsonPath: string,
803
829
  targetUuid: string,
804
830
  targetName: string,
805
- project: IXcode.project
831
+ project: IXcode.project,
806
832
  ): void;
807
833
  }
808
834
 
@@ -811,7 +837,7 @@ interface IIOSNativeTargetService {
811
837
  */
812
838
  interface IIOSExtensionsService {
813
839
  addExtensionsFromPath(
814
- options: IAddExtensionsFromPathOptions
840
+ options: IAddExtensionsFromPathOptions,
815
841
  ): Promise<boolean>;
816
842
  removeExtensions(options: IRemoveExtensionsOptions): void;
817
843
  }