@akylas/nativescript-cli 8.8.7 → 8.10.0

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 (85) hide show
  1. package/config/test-deps-versions-generated.json +16 -0
  2. package/docs/build-jekyll-md.sh +1 -1
  3. package/docs/man_pages/config/config-get.md +36 -0
  4. package/docs/man_pages/config/config-set.md +40 -0
  5. package/docs/man_pages/config/config.md +39 -0
  6. package/docs/man_pages/project/configuration/widget-ios.md +24 -0
  7. package/docs/man_pages/project/configuration/widget.md +24 -0
  8. package/docs/man_pages/project/hooks/hooks.md +35 -0
  9. package/docs/man_pages/start.md +2 -1
  10. package/lib/.d.ts +9 -3
  11. package/lib/bootstrap.js +4 -1
  12. package/lib/bun-package-manager.js +1 -1
  13. package/lib/color.js +38 -7
  14. package/lib/commands/build.js +18 -2
  15. package/lib/commands/clean.js +1 -2
  16. package/lib/commands/config.js +1 -1
  17. package/lib/commands/embedding/embed.js +1 -1
  18. package/lib/commands/generate.js +2 -41
  19. package/lib/commands/hooks/common.js +79 -0
  20. package/lib/commands/hooks/hooks-lock.js +100 -0
  21. package/lib/commands/hooks/hooks.js +71 -0
  22. package/lib/commands/post-install.js +2 -2
  23. package/lib/commands/typings.js +29 -18
  24. package/lib/commands/widget.js +799 -0
  25. package/lib/common/definitions/extensibility.d.ts +2 -2
  26. package/lib/common/definitions/mobile.d.ts +72 -72
  27. package/lib/common/file-system.js +1 -2
  28. package/lib/common/header.js +3 -3
  29. package/lib/common/logger/layouts/cli-layout.js +1 -1
  30. package/lib/common/logger/logger.js +5 -5
  31. package/lib/common/mobile/android/android-device.js +1 -1
  32. package/lib/common/mobile/android/android-emulator-services.js +9 -7
  33. package/lib/common/mobile/device-log-provider.js +3 -4
  34. package/lib/common/mobile/emulator-helper.js +1 -0
  35. package/lib/common/mobile/mobile-core/devices-service.js +2 -1
  36. package/lib/common/opener.js +2 -2
  37. package/lib/common/project-helper.js +15 -2
  38. package/lib/common/services/hooks-service.js +23 -6
  39. package/lib/common/verify-node-version.js +1 -1
  40. package/lib/constants.js +8 -5
  41. package/lib/controllers/migrate-controller.js +11 -12
  42. package/lib/controllers/prepare-controller.js +11 -13
  43. package/lib/controllers/run-controller.js +1 -1
  44. package/lib/declarations.d.ts +5 -0
  45. package/lib/definitions/hooks.d.ts +1 -0
  46. package/lib/definitions/ios.d.ts +11 -1
  47. package/lib/definitions/nativescript-dev-xcode.d.ts +25 -1
  48. package/lib/definitions/project.d.ts +102 -25
  49. package/lib/definitions/temp-service.d.ts +6 -2
  50. package/lib/helpers/key-command-helper.js +2 -1
  51. package/lib/nativescript-cli.js +28 -0
  52. package/lib/node-package-manager.js +1 -1
  53. package/lib/options.js +4 -0
  54. package/lib/project-data.js +10 -4
  55. package/lib/services/analytics/analytics-broker-process.js +1 -1
  56. package/lib/services/analytics/analytics-service.js +2 -1
  57. package/lib/services/analytics-settings-service.js +2 -1
  58. package/lib/services/android/gradle-build-args-service.js +8 -4
  59. package/lib/services/android/gradle-build-service.js +4 -1
  60. package/lib/services/android-plugin-build-service.js +1 -1
  61. package/lib/services/android-project-service.js +12 -10
  62. package/lib/services/assets-generation/assets-generation-service.js +33 -15
  63. package/lib/services/{webpack/webpack-compiler-service.js → bundler/bundler-compiler-service.js} +258 -88
  64. package/lib/services/bundler/bundler.js +2 -0
  65. package/lib/services/extensibility-service.js +1 -1
  66. package/lib/services/ios/spm-service.js +22 -2
  67. package/lib/services/ios/xcodebuild-args-service.js +7 -5
  68. package/lib/services/ios-debugger-port-service.js +1 -1
  69. package/lib/services/ios-project-service.js +45 -15
  70. package/lib/services/ios-watch-app-service.js +540 -16
  71. package/lib/services/livesync/android-livesync-tool.js +4 -2
  72. package/lib/services/plugins-service.js +1 -0
  73. package/lib/services/project-changes-service.js +1 -1
  74. package/lib/services/project-config-service.js +12 -3
  75. package/lib/services/temp-service.js +16 -4
  76. package/lib/services/versions-service.js +2 -1
  77. package/lib/tools/config-manipulation/config-transformer.js +9 -0
  78. package/package.json +59 -66
  79. package/vendor/aab-tool/README.txt +1 -1
  80. package/vendor/aab-tool/bundletool.jar +0 -0
  81. package/vendor/gradle-app/app/build.gradle +365 -130
  82. package/vendor/gradle-app/app/gradle.properties +45 -0
  83. package/vendor/gradle-app/build.gradle +7 -7
  84. package/vendor/gradle-plugin/build.gradle +7 -6
  85. package/lib/services/webpack/webpack.d.ts +0 -227
@@ -37,14 +37,16 @@ class AndroidEmulatorServices {
37
37
  async getRunningEmulatorName(emulatorId) {
38
38
  let result = await this.$androidVirtualDeviceService.getRunningEmulatorName(emulatorId);
39
39
  if (!result) {
40
- result = await this.$androidGenymotionService.getRunningEmulatorName(emulatorId);
40
+ result =
41
+ await this.$androidGenymotionService.getRunningEmulatorName(emulatorId);
41
42
  }
42
43
  return result;
43
44
  }
44
45
  async getRunningEmulatorImageIdentifier(emulatorId) {
45
46
  let result = await this.$androidVirtualDeviceService.getRunningEmulatorImageIdentifier(emulatorId);
46
47
  if (!result) {
47
- result = await this.$androidGenymotionService.getRunningEmulatorImageIdentifier(emulatorId);
48
+ result =
49
+ await this.$androidGenymotionService.getRunningEmulatorImageIdentifier(emulatorId);
48
50
  }
49
51
  return result;
50
52
  }
@@ -116,13 +118,13 @@ class AndroidEmulatorServices {
116
118
  let pathToEmulatorExecutable = null;
117
119
  let startEmulatorArgs = null;
118
120
  if (emulator.vendor === constants_1.AndroidVirtualDevice.AVD_VENDOR_NAME) {
119
- pathToEmulatorExecutable = this.$androidVirtualDeviceService
120
- .pathToEmulatorExecutable;
121
+ pathToEmulatorExecutable =
122
+ this.$androidVirtualDeviceService.pathToEmulatorExecutable;
121
123
  startEmulatorArgs = this.$androidVirtualDeviceService.startEmulatorArgs(emulator.imageIdentifier);
122
124
  }
123
125
  else if (emulator.vendor === constants_1.AndroidVirtualDevice.GENYMOTION_VENDOR_NAME) {
124
- pathToEmulatorExecutable = this.$androidGenymotionService
125
- .pathToEmulatorExecutable;
126
+ pathToEmulatorExecutable =
127
+ this.$androidGenymotionService.pathToEmulatorExecutable;
126
128
  startEmulatorArgs = this.$androidGenymotionService.startEmulatorArgs(emulator.imageIdentifier);
127
129
  }
128
130
  this.$logger.info(`Starting Android emulator with image ${emulator.imageIdentifier}`);
@@ -146,7 +148,7 @@ class AndroidEmulatorServices {
146
148
  }
147
149
  const minVersion = semver.coerce(constants_1.AndroidVirtualDevice.MIN_ANDROID_VERSION);
148
150
  const bestVersion = best && best.version && semver.coerce(best.version);
149
- return bestVersion && semver.gte(bestVersion, minVersion) ? best : null;
151
+ return !bestVersion || semver.gte(bestVersion, minVersion) ? best : null;
150
152
  }
151
153
  async waitForEmulatorBootToComplete(emulator, endTimeEpoch, timeout) {
152
154
  this.$logger.info("Waiting for emulator device initialization...", {
@@ -25,13 +25,12 @@ class DeviceLogProvider extends device_log_provider_base_1.DeviceLogProviderBase
25
25
  };
26
26
  this.deviceColorMap = new Map();
27
27
  this.colorPool = [
28
- "bgBlackBright",
29
- "bgMagentaBright",
28
+ "bgGray",
30
29
  "bgBlueBright",
31
30
  "bgWhiteBright",
32
31
  "bgCyanBright",
33
32
  "bgYellowBright",
34
- "bgGreenBright",
33
+ "bgMagentaBright",
35
34
  ];
36
35
  this.colorPoolIndex = 0;
37
36
  }
@@ -113,7 +112,7 @@ class DeviceLogProvider extends device_log_provider_base_1.DeviceLogProviderBase
113
112
  .join("")
114
113
  .trimEnd();
115
114
  toLog.split("\n").forEach((actualLine) => {
116
- this.printLine(color_1.color[this.getDeviceColor(deviceIdentifier)](" "), this.consoleLevelColor[level](actualLine));
115
+ this.printLine(color_1.color.styleText(this.getDeviceColor(deviceIdentifier), " "), this.consoleLevelColor[level](actualLine));
117
116
  });
118
117
  }
119
118
  }
@@ -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
  },
@@ -6,7 +6,8 @@ const _ = require("lodash");
6
6
  const yok_1 = require("./yok");
7
7
  const constants_1 = require("../constants");
8
8
  class ProjectHelper {
9
- constructor($logger, $fs, $staticConfig, $errors, $options) {
9
+ constructor($injector, $logger, $fs, $staticConfig, $errors, $options) {
10
+ this.$injector = $injector;
10
11
  this.$logger = $logger;
11
12
  this.$fs = $fs;
12
13
  this.$staticConfig = $staticConfig;
@@ -57,7 +58,8 @@ class ProjectHelper {
57
58
  isProjectFileCorrect(projectFilePath) {
58
59
  try {
59
60
  const fileContent = this.$fs.readText(projectFilePath);
60
- return (fileContent.includes(constants_1.SCOPED_TNS_CORE_MODULES) ||
61
+ const packageName = this.getProjectData(path.dirname(projectFilePath)).nsConfig.corePackageName || constants_1.SCOPED_TNS_CORE_MODULES;
62
+ return (fileContent.includes(packageName) ||
61
63
  fileContent.includes(constants_1.TNS_CORE_MODULES_NAME));
62
64
  }
63
65
  catch (err) {
@@ -65,6 +67,17 @@ class ProjectHelper {
65
67
  }
66
68
  return false;
67
69
  }
70
+ getProjectData(projectFilePath) {
71
+ try {
72
+ const projectData = this.$injector.resolve("projectData");
73
+ projectData.initializeProjectData(projectFilePath);
74
+ return projectData;
75
+ }
76
+ catch (error) {
77
+ console.error(error);
78
+ return null;
79
+ }
80
+ }
68
81
  }
69
82
  exports.ProjectHelper = ProjectHelper;
70
83
  yok_1.injector.register("projectHelper", ProjectHelper);
@@ -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",
@@ -28,7 +28,7 @@ function verifyNodeVersion() {
28
28
  if (versionsCausingFailure.indexOf(nodeVer) !== -1 ||
29
29
  !semver.valid(nodeVer) ||
30
30
  semver.lt(nodeVer, minimumRequiredVersion)) {
31
- console.error(color_1.color.red.bold(util.format("%sNode.js '%s' is not supported. To be able to work with %s CLI, install any Node.js version in the following range: %s.%s", os.EOL, nodeVer, cliName, supportedVersionsRange, os.EOL)));
31
+ console.error(color_1.color.bold(color_1.color.red(util.format("%sNode.js '%s' is not supported. To be able to work with %s CLI, install any Node.js version in the following range: %s.%s", os.EOL, nodeVer, cliName, supportedVersionsRange, os.EOL))));
32
32
  process.exit(1);
33
33
  }
34
34
  }
package/lib/constants.js CHANGED
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OUTPUTS_DIR = exports.BUILD_DIR = exports.BUILD_XCCONFIG_FILE_NAME = exports.INCLUDE_GRADLE_NAME = exports.INFO_PLIST_FILE_NAME = exports.APP_GRADLE_FILE_NAME = exports.MANIFEST_FILE_NAME = exports.ANDROID_ANALYTICS_DATA_FILE = exports.ANDROID_ANALYTICS_DATA_DIR = exports.FONTS_DIR = exports.ASSETS_DIR = exports.MAIN_DIR = exports.SRC_DIR = exports.AWAIT_NOTIFICATION_TIMEOUT_SECONDS = exports.CODE_SIGN_ENTITLEMENTS = exports.LIB_DIR_NAME = exports.KARMA_CONFIG_NAME = exports.TSCCONFIG_TNS_JSON_NAME = exports.WEBPACK_CONFIG_NAME = exports.HOOKS_DIR_NAME = exports.PLATFORMS_DIR_NAME = exports.XML_FILE_EXTENSION = exports.LIVESYNC_EXCLUDED_FILE_PATTERNS = exports.TEST_RUNNER_NAME = exports.TESTING_FRAMEWORKS = exports.LIVESYNC_EXCLUDED_DIRECTORIES = exports.DEFAULT_APP_IDENTIFIER_PREFIX = exports.NODE_MODULE_CACHE_PATH_KEY_NAME = exports.ANDROID_DEVICE_APP_ROOT_TEMPLATE = exports.PACKAGE_LOCK_JSON_FILE_NAME = exports.PACKAGE_JSON_FILE_NAME = exports.SCOPED_VISIONOS_RUNTIME_NAME = exports.SCOPED_IOS_RUNTIME_NAME = exports.SCOPED_ANDROID_RUNTIME_NAME = exports.TNS_IOS_RUNTIME_NAME = exports.TNS_ANDROID_RUNTIME_NAME = exports.UI_MOBILE_BASE_NAME = exports.TNS_CORE_MODULES_WIDGETS_NAME = exports.WEBPACK_PLUGIN_NAME = exports.SCOPED_TNS_CORE_THEME_NAME = exports.TNS_CORE_THEME_NAME = exports.SCOPED_TNS_CORE_MODULES = exports.TNS_CORE_MODULES_NAME = exports.TNS_MODULES_FOLDER_NAME = exports.NODE_MODULES_FOLDER_NAME = exports.NATIVESCRIPT_KEY_NAME = exports.NS_BASE_PODFILE = exports.PROJECT_FRAMEWORK_FOLDER_NAME = exports.APP_RESOURCES_FOLDER_NAME = exports.APP_FOLDER_NAME = void 0;
4
- exports.BUILD_OUTPUT_EVENT_NAME = exports.ProjectTypes = exports.JsFlavorName = exports.TsFlavorName = exports.SvelteFlavorName = exports.SolidFlavorName = exports.ReactFlavorName = exports.VueFlavorName = exports.NgFlavorName = exports.SVELTE_NAME = exports.SOLID_NAME = exports.REACT_NAME = exports.TYPESCRIPT_NAME = exports.JAVASCRIPT_NAME = exports.ANGULAR_NAME = exports.VUE_NAME = exports.ItunesConnectApplicationTypes = exports.androidAppResourcesFolderName = exports.iOSAppResourcesFolderName = exports.ITMSConstants = exports.ANALYTICS_LOCAL_TEMPLATE_PREFIX = exports.RESERVED_TEMPLATE_NAMES = exports.ReleaseType = exports.SaveOptions = exports.TemplatesV2PackageJsonKeysToRemove = exports.PackageJsonKeysToKeep = exports.LiveSyncTrackActionNames = exports.PackageVersion = exports.MetadataFilteringConstants = exports.IOS_WATCHAPP_EXTENSION_FOLDER = exports.IOS_WATCHAPP_FOLDER = exports.NATIVE_EXTENSION_FOLDER = exports.APPLICATION_RESPONSE_TIMEOUT_SECONDS = exports.NATIVE_SOURCE_FOLDER = exports.TNS_NATIVE_SOURCE_GROUP_NAME = exports.HASHES_FILE_NAME = exports.APKS_EXTENSION_NAME = exports.AAB_EXTENSION_NAME = exports.APK_EXTENSION_NAME = exports.DEPENDENCIES_JSON_NAME = exports.CONFIG_FILE_NAME_TS = exports.CONFIG_FILE_NAME_JS = exports.CONFIG_FILE_NAME_DISPLAY = exports.CONFIG_NS_APP_ENTRY = exports.CONFIG_NS_BUILD_ENTRY = exports.CONFIG_NS_APP_RESOURCES_ENTRY = exports.CONFIG_NS_FILE_NAME = exports.RESOURCES_DIR = exports.BUNDLE_DIR = exports.APK_DIR = void 0;
5
- exports.PackageManagers = exports.EMIT_APPENDER_EVENT_NAME = exports.LoggerConfigData = exports.LoggerLevel = exports.DeviceConnectionType = exports.LoggerAppenders = exports.IOSNativeTargetTypes = exports.IOSNativeTargetProductTypes = exports.IOSDeviceTargets = exports.RunOnDeviceEvents = exports.AndroidAppBundleMessages = exports.AndroidBundleValidatorMessages = exports.BundleValidatorMessages = exports.IosProjectConstants = exports.EXTENSION_PROVISIONING_FILENAME = exports.PODFILE_NAME = exports.PLUGINS_BUILD_DATA_FILENAME = exports.PLUGIN_BUILD_DATA_FILENAME = exports.AddPlaformErrors = exports.PACKAGE_PLACEHOLDER_NAME = exports.AndroidBuildDefaults = exports.Hooks = exports.XcodeDeprecationStringFormat = exports.MacOSDeprecationStringFormat = exports.MacOSVersions = exports.AssetConstants = exports.CLI_RESOURCES_DIR_NAME = exports.NATIVESCRIPT_PROPS_INTERNAL_DELIMITER = exports.AnalyticsEventLabelDelimiter = exports.DebugCommandErrors = exports.WEBPACK_COMPILATION_COMPLETE = exports.PREPARE_READY_EVENT_NAME = exports.INITIAL_SYNC_EVENT_NAME = exports.FILES_CHANGE_EVENT_NAME = exports.CACACHE_DIRECTORY_NAME = exports.ANDROID_APP_BUNDLE_SIGNING_ERROR_MESSAGE = exports.ANDROID_RELEASE_BUILD_ERROR_MESSAGE = exports.POST_INSTALL_COMMAND_NAME = exports.INSPECTOR_CACHE_DIRNAME = exports.VERSION_STRING = exports.DEBUGGER_DETACHED_EVENT_NAME = exports.DEBUGGER_ATTACHED_EVENT_NAME = exports.USER_INTERACTION_NEEDED_EVENT_NAME = exports.CONNECTION_ERROR_EVENT_NAME = void 0;
3
+ exports.BUILD_XCCONFIG_FILE_NAME = exports.INCLUDE_GRADLE_NAME = exports.INFO_PLIST_FILE_NAME = exports.APP_GRADLE_FILE_NAME = exports.MANIFEST_FILE_NAME = exports.ANDROID_ANALYTICS_DATA_FILE = exports.ANDROID_ANALYTICS_DATA_DIR = exports.FONTS_DIR = exports.ASSETS_DIR = exports.MAIN_DIR = exports.SRC_DIR = exports.AWAIT_NOTIFICATION_TIMEOUT_SECONDS = exports.CODE_SIGN_ENTITLEMENTS = exports.LIB_DIR_NAME = exports.KARMA_CONFIG_NAME = exports.TSCCONFIG_TNS_JSON_NAME = exports.RSPACK_CONFIG_NAME = exports.WEBPACK_CONFIG_NAME = exports.HOOKS_DIR_NAME = exports.PLATFORMS_DIR_NAME = exports.XML_FILE_EXTENSION = exports.LIVESYNC_EXCLUDED_FILE_PATTERNS = exports.TEST_RUNNER_NAME = exports.TESTING_FRAMEWORKS = exports.LIVESYNC_EXCLUDED_DIRECTORIES = exports.DEFAULT_APP_IDENTIFIER_PREFIX = exports.NODE_MODULE_CACHE_PATH_KEY_NAME = exports.ANDROID_DEVICE_APP_ROOT_TEMPLATE = exports.PACKAGE_LOCK_JSON_FILE_NAME = exports.PACKAGE_JSON_FILE_NAME = exports.SCOPED_VISIONOS_RUNTIME_NAME = exports.SCOPED_IOS_RUNTIME_NAME = exports.SCOPED_ANDROID_RUNTIME_NAME = exports.TNS_IOS_RUNTIME_NAME = exports.TNS_ANDROID_RUNTIME_NAME = exports.UI_MOBILE_BASE_NAME = exports.TNS_CORE_MODULES_WIDGETS_NAME = exports.RSPACK_PLUGIN_NAME = exports.WEBPACK_PLUGIN_NAME = exports.SCOPED_TNS_CORE_THEME_NAME = exports.TNS_CORE_THEME_NAME = exports.SCOPED_TNS_CORE_MODULES = exports.TNS_CORE_MODULES_NAME = exports.TNS_MODULES_FOLDER_NAME = exports.NODE_MODULES_FOLDER_NAME = exports.NATIVESCRIPT_KEY_NAME = exports.NS_BASE_PODFILE = exports.PROJECT_FRAMEWORK_FOLDER_NAME = exports.APP_RESOURCES_FOLDER_NAME = exports.APP_FOLDER_NAME = void 0;
4
+ exports.JsFlavorName = exports.TsFlavorName = exports.SvelteFlavorName = exports.SolidFlavorName = exports.ReactFlavorName = exports.VueFlavorName = exports.NgFlavorName = exports.SVELTE_NAME = exports.SOLID_NAME = exports.REACT_NAME = exports.TYPESCRIPT_NAME = exports.JAVASCRIPT_NAME = exports.ANGULAR_NAME = exports.VUE_NAME = exports.ItunesConnectApplicationTypes = exports.androidAppResourcesFolderName = exports.iOSAppResourcesFolderName = exports.ITMSConstants = exports.ANALYTICS_LOCAL_TEMPLATE_PREFIX = exports.RESERVED_TEMPLATE_NAMES = exports.ReleaseType = exports.SaveOptions = exports.TemplatesV2PackageJsonKeysToRemove = exports.PackageJsonKeysToKeep = exports.LiveSyncTrackActionNames = exports.PackageVersion = exports.MetadataFilteringConstants = exports.IOS_WATCHAPP_EXTENSION_FOLDER = exports.IOS_WATCHAPP_FOLDER = exports.NATIVE_EXTENSION_FOLDER = exports.APPLICATION_RESPONSE_TIMEOUT_SECONDS = exports.NATIVE_SOURCE_FOLDER = exports.TNS_NATIVE_SOURCE_GROUP_NAME = exports.HASHES_FILE_NAME = exports.APKS_EXTENSION_NAME = exports.AAB_EXTENSION_NAME = exports.APK_EXTENSION_NAME = exports.DEPENDENCIES_JSON_NAME = exports.CONFIG_FILE_NAME_TS = exports.CONFIG_FILE_NAME_JS = exports.CONFIG_FILE_NAME_DISPLAY = exports.CONFIG_NS_APP_ENTRY = exports.CONFIG_NS_BUILD_ENTRY = exports.CONFIG_NS_APP_RESOURCES_ENTRY = exports.CONFIG_NS_FILE_NAME = exports.RESOURCES_DIR = exports.BUNDLE_DIR = exports.APK_DIR = exports.OUTPUTS_DIR = exports.BUILD_DIR = void 0;
5
+ exports.PackageManagers = exports.EMIT_APPENDER_EVENT_NAME = exports.LoggerConfigData = exports.LoggerLevel = exports.DeviceConnectionType = exports.LoggerAppenders = exports.IOSNativeTargetTypes = exports.IOSNativeTargetProductTypes = exports.IOSDeviceTargets = exports.RunOnDeviceEvents = exports.AndroidAppBundleMessages = exports.AndroidBundleValidatorMessages = exports.BundleValidatorMessages = exports.IosProjectConstants = exports.EXTENSION_PROVISIONING_FILENAME = exports.PODFILE_NAME = exports.PLUGINS_BUILD_DATA_FILENAME = exports.PLUGIN_BUILD_DATA_FILENAME = exports.AddPlaformErrors = exports.PACKAGE_PLACEHOLDER_NAME = exports.AndroidBuildDefaults = exports.Hooks = exports.XcodeDeprecationStringFormat = exports.MacOSDeprecationStringFormat = exports.MacOSVersions = exports.AssetConstants = exports.CLI_RESOURCES_DIR_NAME = exports.NATIVESCRIPT_PROPS_INTERNAL_DELIMITER = exports.AnalyticsEventLabelDelimiter = exports.DebugCommandErrors = exports.BUNDLER_COMPILATION_COMPLETE = exports.PREPARE_READY_EVENT_NAME = exports.INITIAL_SYNC_EVENT_NAME = exports.FILES_CHANGE_EVENT_NAME = exports.CACACHE_DIRECTORY_NAME = exports.ANDROID_APP_BUNDLE_SIGNING_ERROR_MESSAGE = exports.ANDROID_RELEASE_BUILD_ERROR_MESSAGE = exports.POST_INSTALL_COMMAND_NAME = exports.INSPECTOR_CACHE_DIRNAME = exports.VERSION_STRING = exports.DEBUGGER_DETACHED_EVENT_NAME = exports.DEBUGGER_ATTACHED_EVENT_NAME = exports.USER_INTERACTION_NEEDED_EVENT_NAME = exports.CONNECTION_ERROR_EVENT_NAME = exports.BUILD_OUTPUT_EVENT_NAME = exports.ProjectTypes = void 0;
6
6
  const path_1 = require("path");
7
7
  exports.APP_FOLDER_NAME = "app";
8
8
  exports.APP_RESOURCES_FOLDER_NAME = "App_Resources";
@@ -16,6 +16,7 @@ exports.SCOPED_TNS_CORE_MODULES = "@nativescript/core";
16
16
  exports.TNS_CORE_THEME_NAME = "nativescript-theme-core";
17
17
  exports.SCOPED_TNS_CORE_THEME_NAME = "@nativescript/theme";
18
18
  exports.WEBPACK_PLUGIN_NAME = "@nativescript/webpack";
19
+ exports.RSPACK_PLUGIN_NAME = "@nativescript/rspack";
19
20
  exports.TNS_CORE_MODULES_WIDGETS_NAME = "tns-core-modules-widgets";
20
21
  exports.UI_MOBILE_BASE_NAME = "@nativescript/ui-mobile-base";
21
22
  exports.TNS_ANDROID_RUNTIME_NAME = "tns-android";
@@ -36,6 +37,7 @@ exports.XML_FILE_EXTENSION = ".xml";
36
37
  exports.PLATFORMS_DIR_NAME = "platforms";
37
38
  exports.HOOKS_DIR_NAME = "hooks";
38
39
  exports.WEBPACK_CONFIG_NAME = "webpack.config.js";
40
+ exports.RSPACK_CONFIG_NAME = "rspack.config.js";
39
41
  exports.TSCCONFIG_TNS_JSON_NAME = "tsconfig.tns.json";
40
42
  exports.KARMA_CONFIG_NAME = "karma.conf.js";
41
43
  exports.LIB_DIR_NAME = "lib";
@@ -69,7 +71,7 @@ exports.APK_EXTENSION_NAME = ".apk";
69
71
  exports.AAB_EXTENSION_NAME = ".aab";
70
72
  exports.APKS_EXTENSION_NAME = ".apks";
71
73
  exports.HASHES_FILE_NAME = ".nshashes";
72
- exports.TNS_NATIVE_SOURCE_GROUP_NAME = "NSNativeSources";
74
+ exports.TNS_NATIVE_SOURCE_GROUP_NAME = "AppResourcesSrc";
73
75
  exports.NATIVE_SOURCE_FOLDER = "src";
74
76
  exports.APPLICATION_RESPONSE_TIMEOUT_SECONDS = 60;
75
77
  exports.NATIVE_EXTENSION_FOLDER = "extensions";
@@ -215,7 +217,7 @@ exports.CACACHE_DIRECTORY_NAME = "_cacache";
215
217
  exports.FILES_CHANGE_EVENT_NAME = "filesChangeEvent";
216
218
  exports.INITIAL_SYNC_EVENT_NAME = "initialSyncEvent";
217
219
  exports.PREPARE_READY_EVENT_NAME = "prepareReadyEvent";
218
- exports.WEBPACK_COMPILATION_COMPLETE = "webpackCompilationComplete";
220
+ exports.BUNDLER_COMPILATION_COMPLETE = "bundlerCompilationComplete";
219
221
  class DebugCommandErrors {
220
222
  }
221
223
  exports.DebugCommandErrors = DebugCommandErrors;
@@ -309,6 +311,7 @@ var IOSNativeTargetTypes;
309
311
  IOSNativeTargetTypes["watchApp"] = "watch_app";
310
312
  IOSNativeTargetTypes["watchExtension"] = "watch_extension";
311
313
  IOSNativeTargetTypes["appExtension"] = "app_extension";
314
+ IOSNativeTargetTypes["application"] = "application";
312
315
  })(IOSNativeTargetTypes || (exports.IOSNativeTargetTypes = IOSNativeTargetTypes = {}));
313
316
  const pathToLoggerAppendersDir = (0, path_1.join)(__dirname, "common", "logger", "appenders");
314
317
  exports.LoggerAppenders = {
@@ -10,7 +10,8 @@ const simple_git_1 = require("simple-git");
10
10
  const update_controller_base_1 = require("./update-controller-base");
11
11
  const helpers_1 = require("../common/helpers");
12
12
  const yok_1 = require("../common/yok");
13
- const temp = require("temp");
13
+ const fs = require("fs");
14
+ const os_1 = require("os");
14
15
  const color_1 = require("../color");
15
16
  class MigrateController extends update_controller_base_1.UpdateControllerBase {
16
17
  constructor($fs, $platformCommandHelper, $platformsDataService, $packageInstallationManager, $packageManager, $pacoteService, $logger, $errors, $pluginsService, $projectDataService, $projectConfigService, $projectData, $options, $resources, $injector, $settingsService, $staticConfig, $terminalSpinnerService, $projectCleanupService, $projectBackupService, $childProcess) {
@@ -40,7 +41,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
40
41
  {
41
42
  packageName: "@nativescript/core",
42
43
  minVersion: "6.5.0",
43
- desiredVersion: "~8.8.0",
44
+ desiredVersion: "~8.9.0",
44
45
  shouldAddIfMissing: true,
45
46
  },
46
47
  {
@@ -50,7 +51,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
50
51
  {
51
52
  packageName: "@nativescript/types",
52
53
  minVersion: "7.0.0",
53
- desiredVersion: "~8.8.0",
54
+ desiredVersion: "~8.9.0",
54
55
  isDev: true,
55
56
  },
56
57
  {
@@ -100,7 +101,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
100
101
  {
101
102
  packageName: "@nativescript/angular",
102
103
  minVersion: "10.0.0",
103
- desiredVersion: "^18.0.0",
104
+ desiredVersion: "^19.0.0",
104
105
  async shouldMigrateAction(dependency, projectData, loose) {
105
106
  if (!this.hasDependency(dependency, projectData)) {
106
107
  return false;
@@ -147,7 +148,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
147
148
  packageName: "typescript",
148
149
  isDev: true,
149
150
  minVersion: "3.7.0",
150
- desiredVersion: "~5.4.0",
151
+ desiredVersion: "~5.7.0",
151
152
  },
152
153
  {
153
154
  packageName: "node-sass",
@@ -176,13 +177,13 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
176
177
  {
177
178
  packageName: "@nativescript/ios",
178
179
  minVersion: "6.5.3",
179
- desiredVersion: "~8.8.0",
180
+ desiredVersion: "~8.9.0",
180
181
  isDev: true,
181
182
  },
182
183
  {
183
184
  packageName: "@nativescript/android",
184
185
  minVersion: "7.0.0",
185
- desiredVersion: "~8.8.0",
186
+ desiredVersion: "~8.9.0",
186
187
  isDev: true,
187
188
  },
188
189
  ];
@@ -711,9 +712,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
711
712
  if (polyfillsPath) {
712
713
  return "./" + path.relative(projectDir, polyfillsPath);
713
714
  }
714
- const tempDir = temp.mkdirSync({
715
- prefix: "migrate-angular-polyfills",
716
- });
715
+ const tempDir = fs.mkdtempSync(path.join((0, os_1.tmpdir)(), "migrate-angular-polyfills-"));
717
716
  await this.$pacoteService.extractPackage(constants.RESERVED_TEMPLATE_NAMES["angular"], tempDir);
718
717
  this.$fs.copyFile(path.resolve(tempDir, "src/polyfills.ts"), possiblePaths[0]);
719
718
  this.$fs.deleteDirectory(tempDir);
@@ -722,7 +721,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
722
721
  }
723
722
  async migrateNativeScriptAngular() {
724
723
  const minVersion = "10.0.0";
725
- const desiredVersion = "~18.0.0";
724
+ const desiredVersion = "~19.1.0";
726
725
  const dependencies = [
727
726
  {
728
727
  packageName: "@angular/animations",
@@ -781,7 +780,7 @@ class MigrateController extends update_controller_base_1.UpdateControllerBase {
781
780
  {
782
781
  packageName: "zone.js",
783
782
  minVersion: "0.11.1",
784
- desiredVersion: "~0.14.0",
783
+ desiredVersion: "~0.15.0",
785
784
  shouldAddIfMissing: true,
786
785
  },
787
786
  {
@@ -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");
@@ -17,7 +17,7 @@ const yok_1 = require("../common/yok");
17
17
  const constants_1 = require("../constants");
18
18
  const resolve_package_path_1 = require("@rigor789/resolve-package-path");
19
19
  class PrepareController extends events_1.EventEmitter {
20
- constructor($platformController, $hooksService, $fs, $logger, $options, $mobileHelper, $nodeModulesDependenciesBuilder, $platformsDataService, $pluginsService, $prepareNativePlatformService, $projectChangesService, $projectDataService, $webpackCompilerService, $watchIgnoreListService, $analyticsService, $markingModeService, $projectConfigService, $projectService) {
20
+ constructor($platformController, $hooksService, $fs, $logger, $options, $mobileHelper, $nodeModulesDependenciesBuilder, $platformsDataService, $pluginsService, $prepareNativePlatformService, $projectChangesService, $projectDataService, $bundlerCompilerService, $watchIgnoreListService, $analyticsService, $markingModeService, $projectConfigService, $projectService) {
21
21
  super();
22
22
  this.$platformController = $platformController;
23
23
  this.$hooksService = $hooksService;
@@ -31,7 +31,7 @@ class PrepareController extends events_1.EventEmitter {
31
31
  this.$prepareNativePlatformService = $prepareNativePlatformService;
32
32
  this.$projectChangesService = $projectChangesService;
33
33
  this.$projectDataService = $projectDataService;
34
- this.$webpackCompilerService = $webpackCompilerService;
34
+ this.$bundlerCompilerService = $bundlerCompilerService;
35
35
  this.$watchIgnoreListService = $watchIgnoreListService;
36
36
  this.$analyticsService = $analyticsService;
37
37
  this.$markingModeService = $markingModeService;
@@ -67,8 +67,8 @@ class PrepareController extends events_1.EventEmitter {
67
67
  this.watchersData[projectDir] &&
68
68
  this.watchersData[projectDir][platformLowerCase] &&
69
69
  this.watchersData[projectDir][platformLowerCase].hasWebpackCompilerProcess) {
70
- await this.$webpackCompilerService.stopWebpackCompiler(platformLowerCase);
71
- this.$webpackCompilerService.removeListener(constants_1.WEBPACK_COMPILATION_COMPLETE, this.webpackCompilerHandler);
70
+ await this.$bundlerCompilerService.stopBundlerCompiler(platformLowerCase);
71
+ this.$bundlerCompilerService.removeListener(constants_1.BUNDLER_COMPILATION_COMPLETE, this.webpackCompilerHandler);
72
72
  this.watchersData[projectDir][platformLowerCase].hasWebpackCompilerProcess = false;
73
73
  }
74
74
  }
@@ -90,7 +90,7 @@ class PrepareController extends events_1.EventEmitter {
90
90
  result = await this.startWatchersWithPrepare(platformData, projectData, prepareData);
91
91
  }
92
92
  else {
93
- await this.$webpackCompilerService.compileWithoutWatch(platformData, projectData, prepareData);
93
+ await this.$bundlerCompilerService.compileWithoutWatch(platformData, projectData, prepareData);
94
94
  const hasNativeChanges = await this.$prepareNativePlatformService.prepareNativePlatform(platformData, projectData, prepareData);
95
95
  result = {
96
96
  hasNativeChanges,
@@ -155,9 +155,9 @@ class PrepareController extends events_1.EventEmitter {
155
155
  }
156
156
  };
157
157
  this.webpackCompilerHandler = handler.bind(this);
158
- this.$webpackCompilerService.on(constants_1.WEBPACK_COMPILATION_COMPLETE, this.webpackCompilerHandler);
158
+ this.$bundlerCompilerService.on(constants_1.BUNDLER_COMPILATION_COMPLETE, this.webpackCompilerHandler);
159
159
  this.watchersData[projectData.projectDir][platformData.platformNameLowerCase].hasWebpackCompilerProcess = true;
160
- await this.$webpackCompilerService.compileWithWatch(platformData, projectData, prepareData);
160
+ await this.$bundlerCompilerService.compileWithWatch(platformData, projectData, prepareData);
161
161
  }
162
162
  }
163
163
  async startNativeWatcherWithPrepare(platformData, projectData, prepareData) {
@@ -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);
@@ -336,7 +334,7 @@ class PrepareController extends events_1.EventEmitter {
336
334
  if (this.pausedFileWatch) {
337
335
  for (const watcher of watchers) {
338
336
  for (const platform in watcher) {
339
- await this.$webpackCompilerService.stopWebpackCompiler(platform);
337
+ await this.$bundlerCompilerService.stopBundlerCompiler(platform);
340
338
  watcher[platform].hasWebpackCompilerProcess = false;
341
339
  }
342
340
  }
@@ -346,7 +344,7 @@ class PrepareController extends events_1.EventEmitter {
346
344
  for (const platform in watcher) {
347
345
  const args = watcher[platform].prepareArguments;
348
346
  watcher[platform].hasWebpackCompilerProcess = true;
349
- await this.$webpackCompilerService.compileWithWatch(args.platformData, args.projectData, args.prepareData);
347
+ await this.$bundlerCompilerService.compileWithWatch(args.platformData, args.projectData, args.prepareData);
350
348
  }
351
349
  }
352
350
  }
@@ -60,7 +60,7 @@ class RunController extends events_1.EventEmitter {
60
60
  if (data.hasNativeChanges) {
61
61
  const platformData = this.$platformsDataService.getPlatformData(data.platform, projectData);
62
62
  const prepareData = this.$prepareDataService.getPrepareData(liveSyncInfo.projectDir, data.platform, { ...liveSyncInfo, watch: !liveSyncInfo.skipWatcher });
63
- const changesInfo = await this.$projectChangesService.checkForChanges(platformData, projectData, prepareData, data);
63
+ const changesInfo = await this.$projectChangesService.checkForChanges(platformData, projectData, prepareData);
64
64
  if (changesInfo.hasChanges) {
65
65
  await this.syncChangedDataOnDevices(data, projectData, platformData, liveSyncInfo);
66
66
  }
@@ -594,8 +594,13 @@ interface IIOSOptions extends IEmbedOptions {}
594
594
 
595
595
  interface ITypingsOptions {
596
596
  jar: string;
597
+ dtsGeneratorPath: string;
597
598
  aar: string;
598
599
  filter: string;
600
+ dtsGeneratorPath: string;
601
+ lookupPath: string;
602
+ super: string;
603
+ skipDeclarations: boolean;
599
604
  }
600
605
 
601
606
  interface IOptions
@@ -0,0 +1 @@
1
+ declare module "@nativescript/hook";
@@ -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 {
@@ -8,16 +8,27 @@ declare module "nativescript-dev-xcode" {
8
8
  }
9
9
 
10
10
  class project {
11
+ hash: any;
12
+ filepath: string;
11
13
  constructor(filename: string);
12
14
 
13
15
  parse(callback: () => void): void;
14
16
  parseSync(): void;
15
17
 
18
+ generateUuid(): string;
19
+
16
20
  writeSync(options: any): string;
17
21
 
18
22
  addFramework(filepath: string, options?: Options): void;
19
23
  removeFramework(filePath: string, options?: Options): void;
20
24
 
25
+
26
+ getProductFile(watchApptarget: target): any;
27
+ addToPbxFrameworksBuildPhase(file);
28
+ addToPbxCopyfilesBuildPhase(file, comment: string, targetid: string);
29
+ pbxFrameworksBuildPhaseObj(targetid: string): any;
30
+ pbxBuildFileSection(): {[k: string] : any};
31
+
21
32
  addPbxGroup(
22
33
  filePathsArray: any[],
23
34
  name: string,
@@ -27,17 +38,30 @@ declare module "nativescript-dev-xcode" {
27
38
 
28
39
  removePbxGroup(groupName: string, path: string): void;
29
40
 
41
+ addTargetDependency(target: string, dependencyTargets: string[]);
42
+
43
+ findTargetKey(name: string);
44
+ pbxTargetByName(name: string): target;
45
+ pbxNativeTargetSection(): {[key: string]: any};
46
+
30
47
  addToHeaderSearchPaths(options?: Options): void;
31
48
  removeFromHeaderSearchPaths(options?: Options): void;
32
49
  updateBuildProperty(key: string, value: any): void;
33
50
 
34
51
  pbxXCBuildConfigurationSection(): any;
35
52
 
53
+ buildPhaseObject(
54
+ buildPhaseType: string,
55
+ comment: string,
56
+ target: tstring
57
+ )
58
+
36
59
  addTarget(
37
60
  targetName: string,
38
61
  targetType: string,
39
62
  targetPath?: string,
40
- parentTarget?: string
63
+ parentTarget?: string,
64
+ productTargetType?: string
41
65
  ): target;
42
66
  addBuildPhase(
43
67
  filePathsArray: string[],