nativescript 9.1.0-alpha.15 → 9.1.0-alpha.16
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/docs/build-jekyll-md.sh +1 -1
- package/docs/man_pages/config/config-set.md +2 -0
- package/lib/android-tools-info.js +0 -12
- package/lib/base-package-manager.js +0 -7
- package/lib/bootstrap.js +1 -5
- package/lib/bun-package-manager.js +1 -14
- package/lib/color.js +0 -4
- package/lib/commands/add-platform.js +0 -1
- package/lib/commands/apple-login.js +0 -1
- package/lib/commands/appstore-list.js +0 -1
- package/lib/commands/appstore-upload.js +0 -3
- package/lib/commands/build.js +3 -3
- package/lib/commands/clean.js +1 -22
- package/lib/commands/command-base.js +0 -1
- package/lib/commands/config.js +0 -5
- package/lib/commands/create-project.js +0 -6
- package/lib/commands/debug.js +2 -6
- package/lib/commands/deploy.js +3 -3
- package/lib/commands/embedding/embed.js +0 -7
- package/lib/commands/extensibility/install-extension.js +0 -1
- package/lib/commands/extensibility/list-extensions.js +0 -1
- package/lib/commands/extensibility/uninstall-extension.js +0 -1
- package/lib/commands/fonts.js +0 -1
- package/lib/commands/generate-assets.js +0 -1
- package/lib/commands/generate-help.js +0 -1
- package/lib/commands/generate.js +1 -48
- package/lib/commands/hooks/common.js +1 -2
- package/lib/commands/hooks/hooks-lock.js +0 -1
- package/lib/commands/hooks/hooks.js +0 -1
- package/lib/commands/info.js +0 -1
- package/lib/commands/install.js +0 -1
- package/lib/commands/list-platforms.js +0 -1
- package/lib/commands/migrate.js +0 -1
- package/lib/commands/native-add.js +0 -5
- package/lib/commands/platform-clean.js +0 -1
- package/lib/commands/plugin/add-plugin.js +0 -1
- package/lib/commands/plugin/build-plugin.js +0 -1
- package/lib/commands/plugin/create-plugin.js +0 -5
- package/lib/commands/plugin/list-plugins.js +0 -1
- package/lib/commands/plugin/remove-plugin.js +0 -2
- package/lib/commands/plugin/update-plugin.js +0 -1
- package/lib/commands/post-install.js +0 -6
- package/lib/commands/prepare.js +5 -5
- package/lib/commands/preview.js +0 -2
- package/lib/commands/remove-platform.js +0 -1
- package/lib/commands/resources/resources-update.js +0 -2
- package/lib/commands/run.js +0 -1
- package/lib/commands/setup.js +0 -1
- package/lib/commands/start.js +0 -1
- package/lib/commands/test-init.js +0 -4
- package/lib/commands/test.js +3 -9
- package/lib/commands/typings.js +1 -2
- package/lib/commands/update-platform.js +0 -5
- package/lib/commands/update.js +0 -2
- package/lib/commands/widget.js +0 -18
- package/lib/common/bootstrap.js +0 -1
- package/lib/common/child-process.js +0 -3
- package/lib/common/codeGeneration/code-entity.js +0 -1
- package/lib/common/codeGeneration/code-printer.js +0 -1
- package/lib/common/command-params.js +0 -1
- package/lib/common/commands/analytics.js +0 -3
- package/lib/common/commands/autocompletion.js +0 -3
- package/lib/common/commands/device/device-log-stream.js +0 -1
- package/lib/common/commands/device/get-file.js +0 -2
- package/lib/common/commands/device/list-applications.js +0 -1
- package/lib/common/commands/device/list-devices.js +0 -3
- package/lib/common/commands/device/list-files.js +0 -2
- package/lib/common/commands/device/put-file.js +0 -2
- package/lib/common/commands/device/run-application.js +0 -1
- package/lib/common/commands/device/stop-application.js +0 -1
- package/lib/common/commands/device/uninstall-application.js +0 -1
- package/lib/common/commands/doctor.js +3 -3
- package/lib/common/commands/generate-messages.js +0 -1
- package/lib/common/commands/help.js +0 -1
- package/lib/common/commands/package-manager-get.js +0 -1
- package/lib/common/commands/package-manager-set.js +0 -1
- package/lib/common/commands/post-install.js +0 -1
- package/lib/common/commands/preuninstall.js +2 -11
- package/lib/common/commands/proxy/proxy-base.js +0 -4
- package/lib/common/commands/proxy/proxy-clear.js +0 -1
- package/lib/common/commands/proxy/proxy-get.js +0 -1
- package/lib/common/commands/proxy/proxy-set.js +0 -1
- package/lib/common/common-lib.js +0 -1
- package/lib/common/constants.js +14 -12
- package/lib/common/declarations.d.ts +37 -117
- package/lib/common/decorators.js +0 -48
- package/lib/common/definitions/key-commands.js +8 -0
- package/lib/common/dispatchers.js +1 -10
- package/lib/common/enums.js +42 -0
- package/lib/common/errors.js +4 -13
- package/lib/common/file-system.js +2 -13
- package/lib/common/header.js +0 -3
- package/lib/common/helpers.js +3 -89
- package/lib/common/host-info.js +0 -4
- package/lib/common/http-client.js +0 -20
- package/lib/common/logger/appenders/cli-appender.js +0 -4
- package/lib/common/logger/appenders/emit-appender.js +0 -4
- package/lib/common/logger/layouts/cli-layout.js +0 -1
- package/lib/common/logger/logger.js +0 -5
- package/lib/common/messages/messages.js +0 -6
- package/lib/common/mobile/android/android-application-manager.js +1 -20
- package/lib/common/mobile/android/android-debug-bridge-result-handler.js +0 -1
- package/lib/common/mobile/android/android-debug-bridge.js +0 -6
- package/lib/common/mobile/android/android-device-file-system.js +0 -4
- package/lib/common/mobile/android/android-device-hash-service.js +0 -3
- package/lib/common/mobile/android/android-device.js +0 -8
- package/lib/common/mobile/android/android-emulator-services.js +1 -2
- package/lib/common/mobile/android/android-ini-file-parser.js +0 -9
- package/lib/common/mobile/android/android-log-filter.js +0 -4
- package/lib/common/mobile/android/android-virtual-device-service.js +0 -26
- package/lib/common/mobile/android/device-android-debug-bridge.js +0 -1
- package/lib/common/mobile/android/genymotion/genymotion-service.js +1 -6
- package/lib/common/mobile/android/genymotion/virtualbox-service.js +0 -11
- package/lib/common/mobile/android/logcat-helper.js +0 -13
- package/lib/common/mobile/application-manager-base.js +0 -6
- package/lib/common/mobile/device-emitter.js +0 -4
- package/lib/common/mobile/device-log-emitter.js +0 -1
- package/lib/common/mobile/device-log-provider-base.js +0 -1
- package/lib/common/mobile/device-log-provider.js +0 -23
- package/lib/common/mobile/device-platforms-constants.js +0 -1
- package/lib/common/mobile/emulator-helper.js +0 -3
- package/lib/common/mobile/ios/device/ios-application-manager.js +0 -3
- package/lib/common/mobile/ios/device/ios-device-file-system.js +0 -9
- package/lib/common/mobile/ios/device/ios-device-operations.js +0 -4
- package/lib/common/mobile/ios/device/ios-device.js +0 -4
- package/lib/common/mobile/ios/ios-device-base.js +0 -1
- package/lib/common/mobile/ios/ios-device-product-name-mapper.js +0 -2
- package/lib/common/mobile/ios/ios-log-filter.js +0 -1
- package/lib/common/mobile/ios/simulator/ios-emulator-services.js +0 -4
- package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +0 -1
- package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +0 -6
- package/lib/common/mobile/ios/simulator/ios-simulator-device.js +0 -5
- package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +0 -1
- package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +0 -1
- package/lib/common/mobile/local-to-device-path-data-factory.js +0 -1
- package/lib/common/mobile/log-filter.js +0 -2
- package/lib/common/mobile/logging-levels.js +0 -1
- package/lib/common/mobile/mobile-core/android-device-discovery.js +0 -2
- package/lib/common/mobile/mobile-core/android-emulator-discovery.js +0 -3
- package/lib/common/mobile/mobile-core/android-process-service.js +0 -32
- package/lib/common/mobile/mobile-core/device-discovery.js +0 -1
- package/lib/common/mobile/mobile-core/devices-service.js +0 -69
- package/lib/common/mobile/mobile-core/ios-device-discovery.js +0 -2
- package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +0 -3
- package/lib/common/mobile/mobile-helper.js +0 -1
- package/lib/common/mobile/wp8/wp8-emulator-services.js +0 -1
- package/lib/common/opener.js +0 -1
- package/lib/common/os-info.js +0 -1
- package/lib/common/plist-parser.js +0 -1
- package/lib/common/project-helper.js +0 -1
- package/lib/common/prompter.js +1 -9
- package/lib/common/queue.js +0 -1
- package/lib/common/resource-loader.js +0 -1
- package/lib/common/services/analytics/google-analytics-custom-dimensions.js +13 -0
- package/lib/common/services/auto-completion-service.js +1 -13
- package/lib/common/services/cancellation.js +2 -2
- package/lib/common/services/commands-service.js +8 -17
- package/lib/common/services/help-service.js +4 -11
- package/lib/common/services/hooks-service.js +0 -13
- package/lib/common/services/ios-notification-service.js +0 -1
- package/lib/common/services/json-file-settings-service.js +0 -6
- package/lib/common/services/lock-service.js +0 -6
- package/lib/common/services/message-contract-generator.js +0 -1
- package/lib/common/services/messages-service.js +0 -1
- package/lib/common/services/micro-templating-service.js +0 -6
- package/lib/common/services/net-service.js +0 -3
- package/lib/common/services/project-files-manager.js +0 -5
- package/lib/common/services/project-files-provider-base.js +0 -1
- package/lib/common/services/proxy-service.js +0 -1
- package/lib/common/services/qr.js +0 -1
- package/lib/common/services/settings-service.js +0 -1
- package/lib/common/services/xcode-select-service.js +0 -1
- package/lib/common/utils.js +0 -1
- package/lib/common/validators/project-name-validator.js +0 -1
- package/lib/common/validators/validation-result.js +0 -1
- package/lib/common/verify-node-version.js +2 -8
- package/lib/common/yok.js +12 -32
- package/lib/config.js +1 -22
- package/lib/constants-provider.js +0 -1
- package/lib/constants.js +54 -58
- package/lib/controllers/build-controller.js +3 -4
- package/lib/controllers/debug-controller.js +3 -8
- package/lib/controllers/deploy-controller.js +0 -1
- package/lib/controllers/migrate-controller.js +4 -90
- package/lib/controllers/platform-controller.js +2 -9
- package/lib/controllers/prepare-controller.js +8 -24
- package/lib/controllers/run-controller.js +1 -81
- package/lib/controllers/update-controller-base.js +0 -1
- package/lib/controllers/update-controller.js +0 -11
- package/lib/data/build-data.js +0 -1
- package/lib/data/controller-data-base.js +0 -1
- package/lib/data/debug-data.js +0 -1
- package/lib/data/platform-data.js +0 -1
- package/lib/data/prepare-data.js +0 -1
- package/lib/data/run-data.js +0 -1
- package/lib/definitions/project.d.ts +1 -6
- package/lib/definitions/system-warnings.js +8 -0
- package/lib/detached-processes/cleanup-js-subprocess.js +3 -8
- package/lib/detached-processes/cleanup-process.js +15 -18
- package/lib/detached-processes/detached-process-enums.js +24 -0
- package/lib/detached-processes/file-log-service.js +2 -2
- package/lib/device-path-provider.js +0 -1
- package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +0 -7
- package/lib/device-sockets/ios/notification.js +0 -3
- package/lib/device-sockets/ios/socket-request-executor.js +0 -3
- package/lib/helpers/android-bundle-validator-helper.js +1 -2
- package/lib/helpers/deploy-command-helper.js +0 -1
- package/lib/helpers/key-command-helper.js +3 -4
- package/lib/helpers/livesync-command-helper.js +2 -4
- package/lib/helpers/network-connectivity-validator.js +0 -1
- package/lib/helpers/options-track-helper.js +4 -3
- package/lib/helpers/package-path-helper.js +0 -1
- package/lib/helpers/platform-command-helper.js +2 -7
- package/lib/helpers/version-validator-helper.js +0 -1
- package/lib/key-commands/bootstrap.js +3 -3
- package/lib/key-commands/index.js +5 -5
- package/lib/nativescript-cli-lib-bootstrap.js +0 -4
- package/lib/nativescript-cli-lib.js +0 -1
- package/lib/nativescript-cli.js +2 -11
- package/lib/node/pbxproj-dom-xcode.js +0 -1
- package/lib/node/xcode.js +0 -1
- package/lib/node-package-manager.js +1 -11
- package/lib/options.js +121 -145
- package/lib/package-installation-manager.js +1 -8
- package/lib/package-manager.js +0 -2
- package/lib/platform-command-param.js +0 -1
- package/lib/pnpm-package-manager.js +1 -4
- package/lib/project-data.js +0 -12
- package/lib/providers/project-files-provider.js +0 -1
- package/lib/resolvers/livesync-service-resolver.js +0 -1
- package/lib/services/analytics/analytics-broker-process.js +8 -10
- package/lib/services/analytics/analytics-broker.js +2 -2
- package/lib/services/analytics/analytics-service.js +29 -29
- package/lib/services/analytics/google-analytics-provider.js +16 -13
- package/lib/services/analytics-settings-service.js +0 -5
- package/lib/services/android/android-bundle-tool-service.js +0 -1
- package/lib/services/android/gradle-build-args-service.js +0 -3
- package/lib/services/android/gradle-build-service.js +0 -1
- package/lib/services/android/gradle-command-service.js +0 -1
- package/lib/services/android-device-debug-service.js +0 -6
- package/lib/services/android-plugin-build-service.js +2 -31
- package/lib/services/android-project-service.js +4 -71
- package/lib/services/android-resources-migration-service.js +0 -7
- package/lib/services/apple-portal/apple-portal-application-service.js +0 -1
- package/lib/services/apple-portal/apple-portal-cookie-service.js +0 -1
- package/lib/services/apple-portal/apple-portal-session-service.js +4 -6
- package/lib/services/apple-portal/srp/srp-wrapper.js +1 -4
- package/lib/services/assets-generation/assets-generation-service.js +13 -11
- package/lib/services/build-artifacts-service.js +1 -2
- package/lib/services/build-data-service.js +0 -1
- package/lib/services/build-info-file-service.js +0 -1
- package/lib/services/bundler/bundler-compiler-service.js +1 -144
- package/lib/services/bundler/bundler.js +0 -1
- package/lib/services/cleanup-service.js +10 -13
- package/lib/services/cocoapods-platform-manager.js +0 -9
- package/lib/services/cocoapods-service.js +1 -21
- package/lib/services/debug-data-service.js +0 -1
- package/lib/services/debug-service-base.js +0 -7
- package/lib/services/device/device-install-app-service.js +1 -2
- package/lib/services/doctor-service.js +6 -21
- package/lib/services/extensibility-service.js +0 -8
- package/lib/services/files-hash-service.js +0 -1
- package/lib/services/hmr-status-service.js +0 -2
- package/lib/services/info-service.js +0 -1
- package/lib/services/initialize-service.js +2 -5
- package/lib/services/ios/export-options-plist-service.js +0 -4
- package/lib/services/ios/ios-signing-service.js +0 -4
- package/lib/services/ios/spm-service.js +0 -119
- package/lib/services/ios/xcodebuild-args-service.js +0 -29
- package/lib/services/ios/xcodebuild-command-service.js +0 -3
- package/lib/services/ios/xcodebuild-service.js +1 -2
- package/lib/services/ios-debugger-port-service.js +0 -1
- package/lib/services/ios-device-debug-service.js +0 -1
- package/lib/services/ios-entitlements-service.js +0 -1
- package/lib/services/ios-extensions-service.js +0 -1
- package/lib/services/ios-log-filter.js +0 -20
- package/lib/services/ios-native-target-service.js +5 -6
- package/lib/services/ios-project-service.js +7 -133
- package/lib/services/ios-provision-service.js +0 -3
- package/lib/services/ios-watch-app-service.js +10 -60
- package/lib/services/ip-service.js +0 -2
- package/lib/services/itmstransporter-service.js +0 -1
- package/lib/services/karma-execution.js +0 -2
- package/lib/services/livesync/android-device-livesync-service-base.js +0 -1
- package/lib/services/livesync/android-device-livesync-service.js +0 -2
- package/lib/services/livesync/android-device-livesync-sockets-service.js +0 -3
- package/lib/services/livesync/android-livesync-service.js +0 -1
- package/lib/services/livesync/android-livesync-tool.js +0 -4
- package/lib/services/livesync/device-livesync-service-base.js +0 -2
- package/lib/services/livesync/ios-device-livesync-service.js +0 -7
- package/lib/services/livesync/ios-livesync-service.js +0 -55
- package/lib/services/livesync/livesync-socket.js +0 -1
- package/lib/services/livesync/platform-livesync-service-base.js +0 -5
- package/lib/services/livesync-process-data-service.js +0 -1
- package/lib/services/log-parser-service.js +0 -1
- package/lib/services/log-source-map-service.js +0 -15
- package/lib/services/marking-mode-service.js +10 -8
- package/lib/services/metadata-filtering-service.js +0 -1
- package/lib/services/npm-config-service.js +0 -4
- package/lib/services/pacote-service.js +0 -7
- package/lib/services/performance-service.js +2 -3
- package/lib/services/platform/add-platform-service.js +2 -49
- package/lib/services/platform/platform-validation-service.js +0 -1
- package/lib/services/platform/prepare-native-platform-service.js +3 -5
- package/lib/services/platform-environment-requirements.js +4 -8
- package/lib/services/platform-project-service-base.js +0 -1
- package/lib/services/platforms-data-service.js +0 -1
- package/lib/services/plugins-service.js +2 -20
- package/lib/services/prepare-data-service.js +0 -1
- package/lib/services/project-backup-service.js +0 -4
- package/lib/services/project-changes-service.js +3 -14
- package/lib/services/project-cleanup-service.js +0 -2
- package/lib/services/project-config-service.js +2 -21
- package/lib/services/project-data-service.js +7 -36
- package/lib/services/project-name-service.js +0 -1
- package/lib/services/project-service.js +0 -10
- package/lib/services/project-templates-service.js +2 -3
- package/lib/services/qr-code-terminal-service.js +0 -1
- package/lib/services/require-service.js +0 -1
- package/lib/services/start-service.js +0 -1
- package/lib/services/temp-service.js +0 -3
- package/lib/services/terminal-spinner-service.js +0 -2
- package/lib/services/test-execution-service.js +3 -9
- package/lib/services/test-initialization-service.js +0 -4
- package/lib/services/timeline-profiler-service.js +0 -1
- package/lib/services/user-settings-service.js +0 -1
- package/lib/services/versions-service.js +5 -6
- package/lib/services/watch-ignore-list-service.js +0 -1
- package/lib/services/xcconfig-service.js +45 -12
- package/lib/services/xcproj-service.js +0 -1
- package/lib/shared-event-bus.js +0 -6
- package/lib/sys-info.js +2 -2
- package/lib/tools/config-manipulation/config-transformer.js +0 -12
- package/lib/tools/node-modules/node-modules-builder.js +0 -1
- package/lib/tools/node-modules/node-modules-dependencies-builder.js +0 -6
- package/lib/yarn-package-manager.js +0 -1
- package/lib/yarn2-package-manager.js +0 -3
- package/package.json +7 -18
- package/lib/.d.ts +0 -504
- package/lib/common/definitions/key-commands.d.ts +0 -62
- package/lib/common/services/analytics/google-analytics-custom-dimensions.d.ts +0 -16
- package/lib/definitions/system-warnings.d.ts +0 -4
- package/lib/detached-processes/detached-process-enums.d.ts +0 -70
- package/lib/services/analytics/google-analytics-cross-client-custom-dimensions.d.ts +0 -6
|
@@ -74,10 +74,7 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
74
74
|
this._platformsDirCache = null;
|
|
75
75
|
this._platformOverrideCache = null;
|
|
76
76
|
this._platformData = null;
|
|
77
|
-
// Track added frameworks by name to prevent duplicates in monorepo/workspace setups
|
|
78
|
-
// where the same plugin may exist in multiple node_modules paths
|
|
79
77
|
this._addedFrameworks = new Set();
|
|
80
|
-
// Track added static libraries by name to prevent duplicates in monorepo/workspace setups
|
|
81
78
|
this._addedStaticLibs = new Set();
|
|
82
79
|
}
|
|
83
80
|
getPlatformData(projectData) {
|
|
@@ -146,7 +143,7 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
146
143
|
".ico",
|
|
147
144
|
".cur",
|
|
148
145
|
".xbm",
|
|
149
|
-
],
|
|
146
|
+
],
|
|
150
147
|
};
|
|
151
148
|
this._platformsDirCache = projectData.platformsDir;
|
|
152
149
|
this._platformOverrideCache = currentOverride;
|
|
@@ -195,11 +192,8 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
195
192
|
this.$fs.ensureDirectoryExists(path.join(this.getPlatformData(projectData).projectRoot, IOSProjectService.IOS_PROJECT_NAME_PLACEHOLDER));
|
|
196
193
|
shell.cp("-R", path.join(frameworkDir, "*"), this.getPlatformData(projectData).projectRoot);
|
|
197
194
|
}
|
|
198
|
-
//TODO: plamen5kov: revisit this method, might have unnecessary/obsolete logic
|
|
199
195
|
async interpolateData(projectData) {
|
|
200
196
|
const projectRootFilePath = path.join(this.getPlatformData(projectData).projectRoot, IOSProjectService.IOS_PROJECT_NAME_PLACEHOLDER);
|
|
201
|
-
// Starting with NativeScript for iOS 1.6.0, the project Info.plist file resides not in the platform project,
|
|
202
|
-
// but in the hello-world app template as a platform specific resource.
|
|
203
197
|
if (this.$fs.exists(path.join(projectRootFilePath, IOSProjectService.IOS_PROJECT_NAME_PLACEHOLDER + "-Info.plist"))) {
|
|
204
198
|
this.replaceFileName("-Info.plist", projectRootFilePath, projectData);
|
|
205
199
|
}
|
|
@@ -243,9 +237,6 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
243
237
|
}
|
|
244
238
|
async buildProject(projectRoot, projectData, buildData) {
|
|
245
239
|
const platformData = this.getPlatformData(projectData);
|
|
246
|
-
// On a first build, the runtime (and any other Swift packages) download
|
|
247
|
-
// here. Pre-resolve under a clear spinner so the subsequent
|
|
248
|
-
// "Xcode build..." step doesn't appear to hang while that happens.
|
|
249
240
|
await this.$spmService.ensureSPMDependenciesResolved(platformData, projectData);
|
|
250
241
|
const handler = (data) => {
|
|
251
242
|
this.emit(constants.BUILD_OUTPUT_EVENT_NAME, data);
|
|
@@ -296,9 +287,6 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
296
287
|
return await isDynamicFrameworkBundle(path.join(frameworkPath, frameworkName));
|
|
297
288
|
}
|
|
298
289
|
}
|
|
299
|
-
/**
|
|
300
|
-
* Clears the framework and static library tracking sets. Should be called at the start of a new prepare cycle.
|
|
301
|
-
*/
|
|
302
290
|
clearFrameworksCache() {
|
|
303
291
|
this._addedFrameworks.clear();
|
|
304
292
|
this._addedStaticLibs.clear();
|
|
@@ -307,7 +295,6 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
307
295
|
if (this.$hostInfo.isWindows) {
|
|
308
296
|
return;
|
|
309
297
|
}
|
|
310
|
-
// Check if framework with same name already added (prevents duplicate output errors in monorepos)
|
|
311
298
|
const frameworkName = path.basename(frameworkPath);
|
|
312
299
|
if (this._addedFrameworks.has(frameworkName)) {
|
|
313
300
|
this.$logger.trace(`Framework ${frameworkName} already added, skipping duplicate from ${frameworkPath}`);
|
|
@@ -323,51 +310,29 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
323
310
|
frameworkAddOptions["sign"] = true;
|
|
324
311
|
}
|
|
325
312
|
if (this.$options.hostProjectPath) {
|
|
326
|
-
// always mark xcframeworks for embedding
|
|
327
313
|
frameworkAddOptions["embed"] = true;
|
|
328
314
|
frameworkAddOptions["sign"] = false;
|
|
329
315
|
}
|
|
330
|
-
// Note: we used to prepend "$(SRCROOT)/" to the framework path, but seems like it's not needed anymore
|
|
331
|
-
// "$(SRCROOT)/" +
|
|
332
316
|
const frameworkRelativePath = this.getLibSubpathRelativeToProjectPath(frameworkPath, projectData);
|
|
333
317
|
project.addFramework(frameworkRelativePath, frameworkAddOptions);
|
|
334
|
-
// filePathsArray, buildPhaseType, comment, target, optionsOrFolderType, subfolderPath
|
|
335
|
-
// project.addBuildPhase(
|
|
336
|
-
// [],
|
|
337
|
-
// "PBXShellScriptBuildPhase",
|
|
338
|
-
// "Debug SRCROOT",
|
|
339
|
-
// undefined,
|
|
340
|
-
// {
|
|
341
|
-
// shellPath: "/bin/sh",
|
|
342
|
-
// shellScript: `echo "SRCROOT: $SRCROOT"`,
|
|
343
|
-
// }
|
|
344
|
-
// );
|
|
345
318
|
this.savePbxProj(project, projectData);
|
|
346
319
|
}
|
|
347
320
|
async addStaticLibrary(staticLibPath, projectData) {
|
|
348
|
-
// Check if static library with same name already added (prevents duplicate errors in monorepos)
|
|
349
321
|
const libraryName = path.basename(staticLibPath, ".a");
|
|
350
322
|
if (this._addedStaticLibs.has(libraryName)) {
|
|
351
323
|
this.$logger.trace(`Static library ${libraryName} already added, skipping duplicate from ${staticLibPath}`);
|
|
352
324
|
return;
|
|
353
325
|
}
|
|
354
326
|
this._addedStaticLibs.add(libraryName);
|
|
355
|
-
// Copy files to lib folder.
|
|
356
327
|
const headersSubpath = path.join(path.dirname(staticLibPath), "include", libraryName);
|
|
357
|
-
// Add static library to project file and setup header search paths
|
|
358
328
|
const project = this.createPbxProj(projectData);
|
|
359
329
|
const relativeStaticLibPath = this.getLibSubpathRelativeToProjectPath(staticLibPath, projectData);
|
|
360
330
|
project.addFramework(relativeStaticLibPath);
|
|
361
331
|
const relativeHeaderSearchPath = path.join(this.getLibSubpathRelativeToProjectPath(headersSubpath, projectData));
|
|
362
332
|
project.addToHeaderSearchPaths({ relativePath: relativeHeaderSearchPath });
|
|
363
|
-
// Write the generated modulemap into a CLI-managed folder under the
|
|
364
|
-
// platform root (never into node_modules). The modulemap references the
|
|
365
|
-
// plugin's headers in-place via relative paths, so nothing is copied.
|
|
366
333
|
const modulemapDir = path.join(this.getPlatformData(projectData).projectRoot, IOSProjectService.GENERATED_PLUGINS_DIR_NAME, libraryName);
|
|
367
334
|
const hasModulemap = this.generateModulemap(headersSubpath, libraryName, modulemapDir);
|
|
368
335
|
if (hasModulemap) {
|
|
369
|
-
// Put the modulemap dir on the header search path so clang discovers
|
|
370
|
-
// the module there instead of inside node_modules.
|
|
371
336
|
project.addToHeaderSearchPaths({
|
|
372
337
|
relativePath: this.getLibSubpathRelativeToProjectPath(modulemapDir, projectData),
|
|
373
338
|
});
|
|
@@ -400,58 +365,10 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
400
365
|
filesRelativeToProject: true,
|
|
401
366
|
uuid: "NATIVESCRIPTNATIVESCRIPT",
|
|
402
367
|
});
|
|
403
|
-
/**
|
|
404
|
-
* 1. Add platforms/ios/{projectname}/app build to the host app
|
|
405
|
-
*/
|
|
406
|
-
// Note: allow customization of this targetFolderName
|
|
407
|
-
// const targetFolderName = "app";
|
|
408
368
|
const buildFolderPath = path.join(this.$options.hostProjectPath, projectData.projectName);
|
|
409
369
|
project.addResourceFile(buildFolderPath, {}, "NATIVESCRIPTNATIVESCRIPT");
|
|
410
|
-
// filePathsArray, buildPhaseType, comment, target, optionsOrFolderType, subfolderPath
|
|
411
|
-
// project.addBuildPhase(
|
|
412
|
-
// [],
|
|
413
|
-
// "PBXShellScriptBuildPhase",
|
|
414
|
-
// "Copy Metadata (DEBUG)",
|
|
415
|
-
// undefined,
|
|
416
|
-
// {
|
|
417
|
-
// shellPath: "/bin/sh",
|
|
418
|
-
// shellScript: `cp ./platforms/ios/build/Debug-iphonesimulator/metadata-arm64.bin $CONFIGURATION_BUILD_DIR`,
|
|
419
|
-
// outputPaths: [
|
|
420
|
-
// JSON.stringify("$(CONFIGURATION_BUILD_DIR)/metadata-arm64.bin"),
|
|
421
|
-
// // JSON.stringify("$(CONFIGURATION_BUILD_DIR)/metadata-arm64e.bin"),
|
|
422
|
-
// // JSON.stringify("$(CONFIGURATION_BUILD_DIR)/metadata-i386.bin"),
|
|
423
|
-
// // JSON.stringify("$(CONFIGURATION_BUILD_DIR)/metadata-x86_64.bin"),
|
|
424
|
-
// ],
|
|
425
|
-
// }
|
|
426
|
-
// );
|
|
427
370
|
const metadataPath = path.relative(this.$options.hostProjectPath, buildFolderPath);
|
|
428
371
|
project.addToOtherLinkerFlags(JSON.stringify(`-sectcreate __DATA __TNSMetadata "${metadataPath}/metadata-arm64.bin"`));
|
|
429
|
-
// // no shorthand way to get UUID of build phase that i can tell
|
|
430
|
-
// // methods return the phase as an object but ommitted the actual key (uuid we need)
|
|
431
|
-
// // this does it same way nativescript-dev-xcode does but gets the uuid we need
|
|
432
|
-
// const resourcesBuildPhaseKeys = Object.keys(
|
|
433
|
-
// project.hash.project.objects["PBXResourcesBuildPhase"]
|
|
434
|
-
// );
|
|
435
|
-
// // console.log('resourcesBuildPhaseKeys:', resourcesBuildPhaseKeys);
|
|
436
|
-
// const buildPhaseUUID = resourcesBuildPhaseKeys[0];
|
|
437
|
-
// const comment = `${targetFolderName} in Resources`;
|
|
438
|
-
// project.hash.project.objects["PBXResourcesBuildPhase"][
|
|
439
|
-
// buildPhaseUUID
|
|
440
|
-
// ].files.forEach((f: any) => {
|
|
441
|
-
// console.log(f);
|
|
442
|
-
// });
|
|
443
|
-
// if (
|
|
444
|
-
// !project.hash.project.objects["PBXResourcesBuildPhase"][
|
|
445
|
-
// buildPhaseUUID
|
|
446
|
-
// ].files.find((f: any) => f.comment === comment)
|
|
447
|
-
// ) {
|
|
448
|
-
// project.addResourceFile(buildFolderPath, {}, buildPhaseUUID);
|
|
449
|
-
// }
|
|
450
|
-
/**
|
|
451
|
-
* 2. Ensure metadata is copied as a file
|
|
452
|
-
* The apps metadata-{arch}.bin should be added as a file reference.
|
|
453
|
-
*/
|
|
454
|
-
// TODO
|
|
455
372
|
this.savePbxProj(project, projectData);
|
|
456
373
|
}
|
|
457
374
|
catch (err) {
|
|
@@ -503,12 +420,10 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
503
420
|
this.$fs.deleteDirectory(platformsAppResourcesPath);
|
|
504
421
|
this.$fs.ensureDirectoryExists(platformsAppResourcesPath);
|
|
505
422
|
const platformAppResourcesPath = path.join(projectAppResourcesPath, platformData.normalizedPlatformName);
|
|
506
|
-
// this allows App_Resources/visionOS
|
|
507
423
|
if (this.$fs.exists(platformAppResourcesPath)) {
|
|
508
424
|
this.$fs.copyFile(path.join(platformAppResourcesPath, "*"), platformsAppResourcesPath);
|
|
509
425
|
}
|
|
510
426
|
else {
|
|
511
|
-
// otherwise falls back to App_Resources/iOS
|
|
512
427
|
this.$fs.copyFile(path.join(projectAppResourcesPath, this.$devicePlatformsConstants.iOS, "*"), platformsAppResourcesPath);
|
|
513
428
|
}
|
|
514
429
|
this.$fs.deleteFile(path.join(platformsAppResourcesPath, platformData.configurationFileName));
|
|
@@ -607,12 +522,6 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
607
522
|
getLibSubpathRelativeToProjectPath(targetPath, projectData) {
|
|
608
523
|
const projectRoot = this.getPlatformData(projectData).projectRoot;
|
|
609
524
|
const frameworkPath = path.relative(projectRoot, targetPath);
|
|
610
|
-
// console.log({
|
|
611
|
-
// targetPath,
|
|
612
|
-
// projectRoot,
|
|
613
|
-
// frameworkPath,
|
|
614
|
-
// resolved: path.resolve(projectRoot, frameworkPath),
|
|
615
|
-
// });
|
|
616
525
|
return frameworkPath;
|
|
617
526
|
}
|
|
618
527
|
getPbxProjPath(projectData) {
|
|
@@ -671,7 +580,6 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
671
580
|
this.$cocoapodsService.removePodfileFromProject(pluginData.name, this.$cocoapodsService.getPluginPodfilePath(pluginData), projectData, projectRoot);
|
|
672
581
|
}
|
|
673
582
|
async handleNativeDependenciesChange(projectData, opts) {
|
|
674
|
-
// Clear framework tracking for fresh duplicate detection
|
|
675
583
|
this.clearFrameworksCache();
|
|
676
584
|
const platformData = this.getPlatformData(projectData);
|
|
677
585
|
const pluginsData = this.getAllProductionPlugins(projectData);
|
|
@@ -683,10 +591,6 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
683
591
|
const projectPodfilePath = this.$cocoapodsService.getProjectPodfilePath(platformData.projectRoot);
|
|
684
592
|
if (this.$fs.exists(projectPodfilePath)) {
|
|
685
593
|
await this.$cocoapodsService.executePodInstall(platformData.projectRoot, this.$xcprojService.getXcodeprojPath(projectData, platformData.projectRoot));
|
|
686
|
-
// The `pod install` command adds a new target to the .pbxproject. This target adds additional build phases to Xcode project.
|
|
687
|
-
// Some of these phases relies on env variables (like PODS_PODFILE_DIR_PATH or PODS_ROOT).
|
|
688
|
-
// These variables are produced from merge of pod's xcconfig file and project's xcconfig file.
|
|
689
|
-
// So the correct order is `pod install` to be executed before merging pod's xcconfig file.
|
|
690
594
|
await this.$cocoapodsService.mergePodXcconfigFile(projectData, platformData, opts);
|
|
691
595
|
}
|
|
692
596
|
const pluginSpmPackages = [];
|
|
@@ -698,11 +602,6 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
698
602
|
const packages = _.get(config, `${platformData.platformNameLowerCase}.SPMPackages`, []);
|
|
699
603
|
if (packages.length) {
|
|
700
604
|
for (const pkg of packages) {
|
|
701
|
-
// a plugin's local package path is naturally authored relative
|
|
702
|
-
// to the plugin itself, but the SPM service resolves relative
|
|
703
|
-
// paths against the app project dir. When the app-relative
|
|
704
|
-
// path doesn't exist (e.g. non-hoisted node_modules layouts),
|
|
705
|
-
// fall back to resolving against the plugin's own directory.
|
|
706
605
|
if ("path" in pkg &&
|
|
707
606
|
pkg.path &&
|
|
708
607
|
!path.isAbsolute(pkg.path) &&
|
|
@@ -729,7 +628,6 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
729
628
|
const hasProvision = provision !== undefined;
|
|
730
629
|
const hasTeamId = teamId !== undefined;
|
|
731
630
|
if (hasProvision || hasTeamId) {
|
|
732
|
-
// Check if the native project's signing is set to the provided provision...
|
|
733
631
|
const pbxprojPath = this.getPbxProjPath(projectData);
|
|
734
632
|
if (this.$fs.exists(pbxprojPath)) {
|
|
735
633
|
const xcode = this.$pbxprojDomXcode.Xcode.open(pbxprojPath);
|
|
@@ -745,9 +643,6 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
745
643
|
}
|
|
746
644
|
}
|
|
747
645
|
else {
|
|
748
|
-
// Specifying provisioning profile requires "Manual" signing style.
|
|
749
|
-
// If the current signing style was not "Manual" it was probably "Automatic" or,
|
|
750
|
-
// it was not uniform for the debug and release build configurations.
|
|
751
646
|
changesInfo.signingChanged = true;
|
|
752
647
|
}
|
|
753
648
|
}
|
|
@@ -761,8 +656,6 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
761
656
|
}
|
|
762
657
|
}
|
|
763
658
|
else {
|
|
764
|
-
// Specifying team id or name requires "Automatic" signing style.
|
|
765
|
-
// If the current signing style was not "Automatic" it was probably "Manual".
|
|
766
659
|
changesInfo.signingChanged = true;
|
|
767
660
|
}
|
|
768
661
|
}
|
|
@@ -818,11 +711,6 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
818
711
|
var _a;
|
|
819
712
|
const project = this.createPbxProj(projectData);
|
|
820
713
|
const group = await this.getRootGroup(groupName, sourceFolderPath);
|
|
821
|
-
// pin the sources to the main app target: without an explicit target the
|
|
822
|
-
// underlying xcode lib picks whichever "Sources" build phase it finds
|
|
823
|
-
// first, which can be an extension target (e.g. a widget) once one
|
|
824
|
-
// exists — compiling plugin native code into extensions breaks their
|
|
825
|
-
// builds (and bloats them) since they lack the app's search paths.
|
|
826
714
|
project.addPbxGroup(group.files, group.name, group.path, null, {
|
|
827
715
|
isMain: true,
|
|
828
716
|
filesRelativeToProject: true,
|
|
@@ -944,7 +832,6 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
944
832
|
project.removeFromHeaderSearchPaths({
|
|
945
833
|
relativePath: relativeHeaderSearchPath,
|
|
946
834
|
});
|
|
947
|
-
// Remove the generated modulemap dir search path (see addStaticLibrary)
|
|
948
835
|
const modulemapDir = path.join(this.getPlatformData(projectData).projectRoot, IOSProjectService.GENERATED_PLUGINS_DIR_NAME, path.basename(staticLibPath, ".a"));
|
|
949
836
|
project.removeFromHeaderSearchPaths({
|
|
950
837
|
relativePath: this.getLibSubpathRelativeToProjectPath(modulemapDir, projectData),
|
|
@@ -954,9 +841,6 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
954
841
|
}
|
|
955
842
|
generateModulemap(headersFolderPath, libraryName, modulemapDir) {
|
|
956
843
|
const modulemapPath = path.join(modulemapDir, "module.modulemap");
|
|
957
|
-
// A plugin may ship a `.a` without an `include/{lib}` headers folder. In
|
|
958
|
-
// that case there's nothing to expose as a module - clean up any stale
|
|
959
|
-
// modulemap and bail out instead of letting readDirectory throw.
|
|
960
844
|
if (!this.$fs.exists(headersFolderPath)) {
|
|
961
845
|
if (this.$fs.exists(modulemapPath)) {
|
|
962
846
|
this.$fs.deleteFile(modulemapPath);
|
|
@@ -973,9 +857,6 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
973
857
|
}
|
|
974
858
|
return false;
|
|
975
859
|
}
|
|
976
|
-
// Reference the plugin's headers (still in node_modules) relative to the
|
|
977
|
-
// generated modulemap's location, so we don't copy headers or write into
|
|
978
|
-
// node_modules.
|
|
979
860
|
const headers = _.map(headerFiles, (value) => {
|
|
980
861
|
const relativeHeaderPath = path.relative(modulemapDir, path.join(headersFolderPath, value));
|
|
981
862
|
return `header "${relativeHeaderPath}"`;
|
|
@@ -991,6 +872,12 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
991
872
|
for (const pluginsXcconfigFilePath of pluginsXcconfigFilePaths) {
|
|
992
873
|
this.$fs.deleteFile(pluginsXcconfigFilePath);
|
|
993
874
|
}
|
|
875
|
+
const appResourcesXcconfigPath = path.join(projectData.appResourcesDirectoryPath, this.getPlatformData(projectData).normalizedPlatformName, constants_2.BUILD_XCCONFIG_FILE_NAME);
|
|
876
|
+
if (this.$fs.exists(appResourcesXcconfigPath)) {
|
|
877
|
+
for (const pluginsXcconfigFilePath of pluginsXcconfigFilePaths) {
|
|
878
|
+
await this.$xcconfigService.mergeFiles(appResourcesXcconfigPath, pluginsXcconfigFilePath);
|
|
879
|
+
}
|
|
880
|
+
}
|
|
994
881
|
const allPlugins = this.getAllProductionPlugins(projectData);
|
|
995
882
|
for (const plugin of allPlugins) {
|
|
996
883
|
const pluginPlatformsFolderPath = plugin.pluginPlatformsFolderPath(IOSProjectService.IOS_PLATFORM_NAME);
|
|
@@ -1001,22 +888,12 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
1001
888
|
}
|
|
1002
889
|
}
|
|
1003
890
|
}
|
|
1004
|
-
const appResourcesXcconfigPath = path.join(projectData.appResourcesDirectoryPath, this.getPlatformData(projectData).normalizedPlatformName, constants_2.BUILD_XCCONFIG_FILE_NAME);
|
|
1005
|
-
if (this.$fs.exists(appResourcesXcconfigPath)) {
|
|
1006
|
-
for (const pluginsXcconfigFilePath of pluginsXcconfigFilePaths) {
|
|
1007
|
-
await this.$xcconfigService.mergeFiles(appResourcesXcconfigPath, pluginsXcconfigFilePath);
|
|
1008
|
-
}
|
|
1009
|
-
}
|
|
1010
891
|
for (const pluginsXcconfigFilePath of pluginsXcconfigFilePaths) {
|
|
1011
892
|
if (!this.$fs.exists(pluginsXcconfigFilePath)) {
|
|
1012
|
-
// We need the pluginsXcconfig file to exist in platforms dir as it is required in the native template:
|
|
1013
|
-
// https://github.com/NativeScript/ios-runtime/blob/9c2b7b5f70b9bee8452b7a24aa6b646214c7d2be/build/project-template/__PROJECT_NAME__/build-debug.xcconfig#L3
|
|
1014
|
-
// From Xcode 10 in case the file is missing, this include fails and the build itself fails (was a warning in previous Xcode versions).
|
|
1015
893
|
this.$fs.writeFile(pluginsXcconfigFilePath, "");
|
|
1016
894
|
}
|
|
1017
895
|
}
|
|
1018
896
|
for (const pluginsXcconfigFilePath of pluginsXcconfigFilePaths) {
|
|
1019
|
-
// Set Entitlements Property to point to default file if not set explicitly by the user.
|
|
1020
897
|
const entitlementsPropertyValue = this.$xcconfigService.readPropertyValue(pluginsXcconfigFilePath, constants.CODE_SIGN_ENTITLEMENTS);
|
|
1021
898
|
if (entitlementsPropertyValue === null &&
|
|
1022
899
|
this.$fs.exists(this.$iOSEntitlementsService.getPlatformsEntitlementsPath(projectData))) {
|
|
@@ -1057,11 +934,8 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
1057
934
|
exports.IOSProjectService = IOSProjectService;
|
|
1058
935
|
IOSProjectService.IOS_PROJECT_NAME_PLACEHOLDER = "__PROJECT_NAME__";
|
|
1059
936
|
IOSProjectService.IOS_PLATFORM_NAME = "ios";
|
|
1060
|
-
// CLI-managed folder under the platform root where we write generated
|
|
1061
|
-
// artifacts (e.g. plugin modulemaps) so we never write into node_modules
|
|
1062
937
|
IOSProjectService.GENERATED_PLUGINS_DIR_NAME = ".plugins";
|
|
1063
938
|
__decorate([
|
|
1064
939
|
(0, helpers_2.hook)("buildIOS")
|
|
1065
940
|
], IOSProjectService.prototype, "buildProject", null);
|
|
1066
941
|
yok_1.injector.register("iOSProjectService", IOSProjectService);
|
|
1067
|
-
//# sourceMappingURL=ios-project-service.js.map
|
|
@@ -127,8 +127,6 @@ class IOSProvisionService {
|
|
|
127
127
|
}
|
|
128
128
|
async getDevelopmentTeams() {
|
|
129
129
|
const teams = {};
|
|
130
|
-
// NOTE: We are reading all provisioning profiles and collect team information from them.
|
|
131
|
-
// It would be better if we can check the Apple ID registered in Xcode and read the teams associated with it.
|
|
132
130
|
mobileprovision.provision.read().forEach((provision) => provision.TeamIdentifier &&
|
|
133
131
|
provision.TeamIdentifier.forEach((id) => {
|
|
134
132
|
if (!teams[provision.TeamName]) {
|
|
@@ -152,4 +150,3 @@ class IOSProvisionService {
|
|
|
152
150
|
}
|
|
153
151
|
exports.IOSProvisionService = IOSProvisionService;
|
|
154
152
|
yok_1.injector.register("iOSProvisionService", IOSProvisionService);
|
|
155
|
-
//# sourceMappingURL=ios-provision-service.js.map
|
|
@@ -23,26 +23,26 @@ const resourceExtensions = [
|
|
|
23
23
|
".jpeg",
|
|
24
24
|
".gif",
|
|
25
25
|
".svg",
|
|
26
|
-
".pdf",
|
|
26
|
+
".pdf",
|
|
27
27
|
".ttf",
|
|
28
28
|
".otf",
|
|
29
29
|
".woff",
|
|
30
|
-
".woff2",
|
|
31
|
-
".xcassets",
|
|
30
|
+
".woff2",
|
|
31
|
+
".xcassets",
|
|
32
32
|
".storyboard",
|
|
33
|
-
".xib",
|
|
33
|
+
".xib",
|
|
34
34
|
".strings",
|
|
35
|
-
".stringsdict",
|
|
35
|
+
".stringsdict",
|
|
36
36
|
".json",
|
|
37
37
|
".xml",
|
|
38
|
-
".plist",
|
|
38
|
+
".plist",
|
|
39
39
|
".m4a",
|
|
40
40
|
".mp3",
|
|
41
41
|
".wav",
|
|
42
|
-
".caf",
|
|
42
|
+
".caf",
|
|
43
43
|
".mp4",
|
|
44
|
-
".mov",
|
|
45
|
-
".bundle",
|
|
44
|
+
".mov",
|
|
45
|
+
".bundle",
|
|
46
46
|
];
|
|
47
47
|
const WATCH_APP_IDENTIFIER = "watchkitapp";
|
|
48
48
|
const WACTCH_EXTENSION_IDENTIFIER = "watchkitextension";
|
|
@@ -76,7 +76,6 @@ class IOSWatchAppService {
|
|
|
76
76
|
const appPath = path.join(watchAppFolderPath, constants_1.IOS_WATCHAPP_FOLDER);
|
|
77
77
|
const extensionPath = path.join(watchAppFolderPath, constants_1.IOS_WATCHAPP_EXTENSION_FOLDER);
|
|
78
78
|
const hasWatchExtension = this.$fs.exists(extensionPath);
|
|
79
|
-
// Check if watchapp exists - it's required
|
|
80
79
|
if (!this.$fs.exists(appPath)) {
|
|
81
80
|
return false;
|
|
82
81
|
}
|
|
@@ -95,7 +94,6 @@ class IOSWatchAppService {
|
|
|
95
94
|
await this.configureTarget(appFolder, path.join(appPath, appFolder), `${projectData.projectIdentifiers.ios}.${WATCH_APP_IDENTIFIER}`, configPath, config, watchApptarget, project, projectData, platformData, pbxProjPath, !hasWatchExtension);
|
|
96
95
|
targetUuids.push(watchApptarget.uuid);
|
|
97
96
|
targetNames.push(appFolder);
|
|
98
|
-
// Extension is optional (Xcode 14+ supports single target)
|
|
99
97
|
if (hasWatchExtension) {
|
|
100
98
|
const extensionFolder = this.$iOSNativeTargetService.getTargetDirectories(extensionPath)[0];
|
|
101
99
|
const configPath = path.join(path.join(extensionPath, extensionFolder), "extension.json");
|
|
@@ -114,10 +112,8 @@ class IOSWatchAppService {
|
|
|
114
112
|
this.$logger.debug("No watch extension found - using single target mode (Xcode 14+)");
|
|
115
113
|
}
|
|
116
114
|
this.$fs.writeFile(pbxProjPath, project.writeSync({ omitEmptyValues: true }));
|
|
117
|
-
// Add SPM packages (file needs to be saved first)
|
|
118
115
|
const watchSPMPackages = this.getWatchSPMPackages(platformData);
|
|
119
116
|
await this.applySPMPackagesToTargets(targetNames, platformData, projectData.projectDir, watchSPMPackages);
|
|
120
|
-
// nothing done after we dont need to reload project
|
|
121
117
|
this.$iOSNativeTargetService.prepareSigning(targetUuids, projectData, pbxProjPath);
|
|
122
118
|
if (disableStubBinary) {
|
|
123
119
|
this.applyWatchAppStubBinaryOverrides(appFolder, pbxProjPath);
|
|
@@ -128,7 +124,6 @@ class IOSWatchAppService {
|
|
|
128
124
|
const targetPath = path.join(targetRootPath, targetFolder);
|
|
129
125
|
const targetRelativePath = path.relative(platformData.projectRoot, targetPath);
|
|
130
126
|
const target = project.addTarget(targetFolder, targetType, targetRelativePath, parentTarget, productTargetType);
|
|
131
|
-
// Add build phases
|
|
132
127
|
project.addBuildPhase([], "PBXSourcesBuildPhase", "Sources", target.uuid);
|
|
133
128
|
project.addBuildPhase([], "PBXResourcesBuildPhase", "Resources", target.uuid);
|
|
134
129
|
project.addBuildPhase([], "PBXFrameworksBuildPhase", "Frameworks", target.uuid);
|
|
@@ -136,14 +131,10 @@ class IOSWatchAppService {
|
|
|
136
131
|
project.addToHeaderSearchPaths(targetPath, target.pbxNativeTarget.productName);
|
|
137
132
|
return target;
|
|
138
133
|
}
|
|
139
|
-
/**
|
|
140
|
-
* Recursively add source files from a directory to a target
|
|
141
|
-
*/
|
|
142
134
|
addSourceFilesFromDirectory(dirPath, targetUuid, project, platformData, groupName, excludePatterns) {
|
|
143
135
|
const items = this.getFolderFiles(dirPath, platformData.projectRoot, excludePatterns);
|
|
144
136
|
for (const item of items) {
|
|
145
137
|
const relativePath = path.relative(platformData.projectRoot, item);
|
|
146
|
-
// Check if file is a source file by extension
|
|
147
138
|
const ext = path.extname(item).toLowerCase();
|
|
148
139
|
if (sourceExtensions.includes(ext)) {
|
|
149
140
|
this.$logger.debug(`Adding source file: ${relativePath}`);
|
|
@@ -166,38 +157,30 @@ class IOSWatchAppService {
|
|
|
166
157
|
this.$logger.warn(`Error adding watch app resources: ${err.message}`);
|
|
167
158
|
}
|
|
168
159
|
}
|
|
169
|
-
/**
|
|
170
|
-
* Recursively add resources from a directory to a target
|
|
171
|
-
*/
|
|
172
160
|
addResourcesFromDirectory(dirPath, targetUuid, project, platformData, groupName, excludePatterns) {
|
|
173
161
|
const items = this.$fs.readDirectory(dirPath);
|
|
174
162
|
for (const item of items) {
|
|
175
|
-
// Skip hidden files and excluded files/directories
|
|
176
163
|
if (item.startsWith(".") || RESOURCES_TO_IGNORE.indexOf(item) !== -1) {
|
|
177
164
|
continue;
|
|
178
165
|
}
|
|
179
166
|
const itemPath = path.join(dirPath, item);
|
|
180
167
|
const stats = this.$fs.getFsStats(itemPath);
|
|
181
168
|
const relativePath = path.relative(platformData.projectRoot, itemPath);
|
|
182
|
-
// Check if file/directory should be excluded based on patterns
|
|
183
169
|
if (excludePatterns &&
|
|
184
170
|
this.shouldExclude(relativePath, excludePatterns)) {
|
|
185
171
|
this.$logger.debug(`Excluding from resources: ${relativePath}`);
|
|
186
172
|
continue;
|
|
187
173
|
}
|
|
188
174
|
if (stats.isDirectory()) {
|
|
189
|
-
// Special handling for .xcassets, .bundle, and other resource bundles
|
|
190
175
|
if (item.endsWith(".xcassets") || item.endsWith(".bundle")) {
|
|
191
176
|
this.$logger.debug(`Adding resource bundle: ${relativePath}`);
|
|
192
177
|
this.addResourceFile(project, relativePath, { target: targetUuid }, groupName);
|
|
193
178
|
}
|
|
194
179
|
else {
|
|
195
|
-
// Recursively scan subdirectories
|
|
196
180
|
this.addResourcesFromDirectory(itemPath, targetUuid, project, platformData, groupName, excludePatterns);
|
|
197
181
|
}
|
|
198
182
|
}
|
|
199
183
|
else {
|
|
200
|
-
// Check if file is a resource by extension
|
|
201
184
|
const ext = path.extname(item).toLowerCase();
|
|
202
185
|
if (resourceExtensions.includes(ext)) {
|
|
203
186
|
this.$logger.debug(`Adding resource file: ${relativePath}`);
|
|
@@ -221,7 +204,6 @@ class IOSWatchAppService {
|
|
|
221
204
|
const identifierParts = identifier.split(".");
|
|
222
205
|
identifierParts.pop();
|
|
223
206
|
const wkAppBundleIdentifier = identifierParts.join(".");
|
|
224
|
-
// Build configuration properties
|
|
225
207
|
const buildConfigProperties = [
|
|
226
208
|
{ name: "PRODUCT_BUNDLE_IDENTIFIER", value: identifier },
|
|
227
209
|
{ name: "SDKROOT", value: "watchos" },
|
|
@@ -257,7 +239,6 @@ class IOSWatchAppService {
|
|
|
257
239
|
}
|
|
258
240
|
const resourcesExclude = (config === null || config === void 0 ? void 0 : config.resourcesExclude) || [];
|
|
259
241
|
const srcExclude = (config === null || config === void 0 ? void 0 : config.srcExclude) || [];
|
|
260
|
-
// Handle custom Info.plist path
|
|
261
242
|
if (config === null || config === void 0 ? void 0 : config.infoPlistPath) {
|
|
262
243
|
const infoPlistPath = path.resolve(basedir, config.infoPlistPath);
|
|
263
244
|
if (this.$fs.exists(infoPlistPath)) {
|
|
@@ -272,7 +253,6 @@ class IOSWatchAppService {
|
|
|
272
253
|
this.$logger.warn(`Custom Info.plist not found at: ${infoPlistPath}`);
|
|
273
254
|
}
|
|
274
255
|
}
|
|
275
|
-
// Handle custom xcprivacy file path
|
|
276
256
|
if (config === null || config === void 0 ? void 0 : config.xcprivacyPath) {
|
|
277
257
|
const xcprivacyPath = path.resolve(basedir, config.xcprivacyPath);
|
|
278
258
|
if (this.$fs.exists(xcprivacyPath)) {
|
|
@@ -294,7 +274,6 @@ class IOSWatchAppService {
|
|
|
294
274
|
await this.addTargetResources(path.dirname(configPath), [target.uuid], project, platformData, resourcesGroup, resourcesExclude);
|
|
295
275
|
}
|
|
296
276
|
if (config) {
|
|
297
|
-
// Process additional configurations
|
|
298
277
|
await this.processWatchAppConfiguration(config, basedir, targetName, target, project, projectData, platformData, pbxProjPath, srcExclude, resourcesExclude);
|
|
299
278
|
}
|
|
300
279
|
}
|
|
@@ -309,7 +288,6 @@ class IOSWatchAppService {
|
|
|
309
288
|
}
|
|
310
289
|
async processWatchAppConfiguration(config, basedir, targetName, target, project, projectData, platformData, pbxProjPath, srcExclude, resourcesExclude) {
|
|
311
290
|
this.$logger.debug(`processWatchAppConfiguration ${JSON.stringify(config)}`);
|
|
312
|
-
// Handle custom resources
|
|
313
291
|
if (config.resources && Array.isArray(config.resources)) {
|
|
314
292
|
this.$logger.debug(`Processing ${config.resources.length} custom resource(s) for watch target: ${targetName}`);
|
|
315
293
|
for (const resourcePath of config.resources) {
|
|
@@ -323,8 +301,6 @@ class IOSWatchAppService {
|
|
|
323
301
|
}
|
|
324
302
|
}
|
|
325
303
|
if (config.SPMPackages && Array.isArray(config.SPMPackages)) {
|
|
326
|
-
// to be able to add SPM the file needs to be saved
|
|
327
|
-
// but it means we need to reload it again after spm packages addition
|
|
328
304
|
this.$fs.writeFile(pbxProjPath, project.writeSync({ omitEmptyValues: true }));
|
|
329
305
|
await this.applySPMPackagesToTargets([targetName], platformData, basedir, config.SPMPackages);
|
|
330
306
|
project.parseSync();
|
|
@@ -394,7 +370,6 @@ class IOSWatchAppService {
|
|
|
394
370
|
const items = this.getFolderFiles(dirPath, platformData.projectRoot, excludePatterns);
|
|
395
371
|
for (const item of items) {
|
|
396
372
|
const relativePath = path.relative(platformData.projectRoot, item);
|
|
397
|
-
// Check if file is a source file by extension
|
|
398
373
|
const ext = path.extname(item).toLowerCase();
|
|
399
374
|
if (sourceExtensions.includes(ext)) {
|
|
400
375
|
this.$logger.debug(`Adding source file: ${relativePath}`);
|
|
@@ -417,7 +392,6 @@ class IOSWatchAppService {
|
|
|
417
392
|
return;
|
|
418
393
|
}
|
|
419
394
|
if (stats.isDirectory()) {
|
|
420
|
-
// Special handling for .xcassets, .bundle - add as bundles, not recursively
|
|
421
395
|
if (item.endsWith(".xcassets") || item.endsWith(".bundle")) {
|
|
422
396
|
this.$logger.debug(`Adding resource bundle: ${relativePath} for target:${targetUuid}`);
|
|
423
397
|
this.addResourceFile(project, relativePath, { target: targetUuid }, groupName);
|
|
@@ -446,11 +420,9 @@ class IOSWatchAppService {
|
|
|
446
420
|
const isFolder = stats.isDirectory() && !isFramework;
|
|
447
421
|
this.$logger.debug(`Adding module dependency: ${JSON.stringify(moduleDef)} to ${targetName}, basedir:${basedir}, isFramework:${isFramework} isFolder:${isFolder}`);
|
|
448
422
|
if (isFramework) {
|
|
449
|
-
// Handle compiled frameworks (xcframework, framework)
|
|
450
423
|
this.addCompiledFramework(moduleDef, relativePath, targetName, target, project);
|
|
451
424
|
}
|
|
452
425
|
else if (isFolder) {
|
|
453
|
-
// Handle folder-based modules
|
|
454
426
|
await this.addFolderModule(moduleDef, modulePath, relativePath, targetName, target, config, project, basedir, srcExclude, resourcesExclude, projectData, platformData);
|
|
455
427
|
}
|
|
456
428
|
else {
|
|
@@ -474,7 +446,7 @@ class IOSWatchAppService {
|
|
|
474
446
|
project.addFramework(relativePath, {
|
|
475
447
|
target: target.uuid,
|
|
476
448
|
customFramework: true,
|
|
477
|
-
embed: moduleDef.embed !== false,
|
|
449
|
+
embed: moduleDef.embed !== false,
|
|
478
450
|
});
|
|
479
451
|
const frameworkDir = path.dirname(relativePath);
|
|
480
452
|
project.addBuildProperty("FRAMEWORK_SEARCH_PATHS", `"$(inherited)" "${frameworkDir}"`, null, targetName);
|
|
@@ -524,7 +496,6 @@ class IOSWatchAppService {
|
|
|
524
496
|
explicitFileType: "wrapper.framework",
|
|
525
497
|
...otherProps,
|
|
526
498
|
});
|
|
527
|
-
// Add build phases
|
|
528
499
|
project.addBuildPhase([], "PBXSourcesBuildPhase", "Sources", moduleTarget.uuid);
|
|
529
500
|
project.addBuildPhase([], "PBXResourcesBuildPhase", "Resources", moduleTarget.uuid);
|
|
530
501
|
project.addBuildPhase([], "PBXFrameworksBuildPhase", "Frameworks", moduleTarget.uuid);
|
|
@@ -582,8 +553,6 @@ class IOSWatchAppService {
|
|
|
582
553
|
}
|
|
583
554
|
}
|
|
584
555
|
if (moduleDef.SPMPackages && Array.isArray(moduleDef.SPMPackages)) {
|
|
585
|
-
// to be able to add SPM the file needs to be saved
|
|
586
|
-
// but it means we need to reload it again after spm packages addition
|
|
587
556
|
this.$fs.writeFile(project.filepath, project.writeSync({ omitEmptyValues: true }));
|
|
588
557
|
await this.applySPMPackagesToTargets([moduleName], platformData, basedir, moduleDef.SPMPackages.map((t) => {
|
|
589
558
|
if (typeof t === "string") {
|
|
@@ -606,9 +575,6 @@ class IOSWatchAppService {
|
|
|
606
575
|
}
|
|
607
576
|
this.$logger.debug(`Added folder-based module ${moduleName} at ${relativePath}`);
|
|
608
577
|
}
|
|
609
|
-
/**
|
|
610
|
-
* Add linker flags to a target's build settings
|
|
611
|
-
*/
|
|
612
578
|
addLinkerFlags(flags, targetName, project) {
|
|
613
579
|
for (const flag of flags) {
|
|
614
580
|
const currentFlags = this.getBuildProperty("OTHER_LDFLAGS", targetName, project);
|
|
@@ -624,11 +590,7 @@ class IOSWatchAppService {
|
|
|
624
590
|
this.$logger.debug(`Added linker flag: ${flag}`);
|
|
625
591
|
}
|
|
626
592
|
}
|
|
627
|
-
/**
|
|
628
|
-
* Get build property value for a specific target
|
|
629
|
-
*/
|
|
630
593
|
getBuildProperty(propertyName, targetName, project) {
|
|
631
|
-
// Access the project hash to read build settings
|
|
632
594
|
const projectHash = project.hash;
|
|
633
595
|
if (!projectHash) {
|
|
634
596
|
return null;
|
|
@@ -648,9 +610,6 @@ class IOSWatchAppService {
|
|
|
648
610
|
}
|
|
649
611
|
return null;
|
|
650
612
|
}
|
|
651
|
-
/**
|
|
652
|
-
* Check if a path should be excluded based on glob patterns
|
|
653
|
-
*/
|
|
654
613
|
shouldExclude(filePath, excludePatterns) {
|
|
655
614
|
for (const pattern of excludePatterns) {
|
|
656
615
|
const matcher = new minimatch_1.Minimatch(pattern, { dot: true });
|
|
@@ -660,9 +619,6 @@ class IOSWatchAppService {
|
|
|
660
619
|
}
|
|
661
620
|
return false;
|
|
662
621
|
}
|
|
663
|
-
/**
|
|
664
|
-
* Apply SPM packages to watch app targets
|
|
665
|
-
*/
|
|
666
622
|
async applySPMPackagesToTargets(targetNames, platformData, basedir, watchSPMPackages) {
|
|
667
623
|
try {
|
|
668
624
|
this.$logger.debug(`applySPMPackagesToTargets ${JSON.stringify(watchSPMPackages)}`);
|
|
@@ -681,7 +637,6 @@ class IOSWatchAppService {
|
|
|
681
637
|
this.$logger.debug("No iOS project found via trapeze");
|
|
682
638
|
return;
|
|
683
639
|
}
|
|
684
|
-
// Add SPM packages to each watch target
|
|
685
640
|
for (const pkg of watchSPMPackages) {
|
|
686
641
|
if ("path" in pkg) {
|
|
687
642
|
pkg.path = path.resolve(basedir, pkg.path);
|
|
@@ -698,16 +653,11 @@ class IOSWatchAppService {
|
|
|
698
653
|
this.$logger.debug(`Error applying SPM packages to targets ${targetNames} "`, err);
|
|
699
654
|
}
|
|
700
655
|
}
|
|
701
|
-
/**
|
|
702
|
-
* Get SPM packages configured for watch app targets
|
|
703
|
-
*/
|
|
704
656
|
getWatchSPMPackages(platformData) {
|
|
705
657
|
const $projectConfigService = yok_1.injector.resolve("projectConfigService");
|
|
706
|
-
// Check for watch-specific SPM packages in config
|
|
707
658
|
const watchPackages = $projectConfigService.getValue(`${platformData.platformNameLowerCase}.watchApp.SPMPackages`, []);
|
|
708
659
|
return watchPackages;
|
|
709
660
|
}
|
|
710
661
|
}
|
|
711
662
|
exports.IOSWatchAppService = IOSWatchAppService;
|
|
712
663
|
yok_1.injector.register("iOSWatchAppService", IOSWatchAppService);
|
|
713
|
-
//# sourceMappingURL=ios-watch-app-service.js.map
|
|
@@ -38,7 +38,6 @@ class IPService {
|
|
|
38
38
|
return ipAddress;
|
|
39
39
|
}
|
|
40
40
|
async getIPAddressFromIpifyOrgAPI() {
|
|
41
|
-
// https://www.ipify.org/
|
|
42
41
|
const ipifyOrgAPIEndpoint = "https://api.ipify.org";
|
|
43
42
|
let ipAddress = null;
|
|
44
43
|
try {
|
|
@@ -62,4 +61,3 @@ __decorate([
|
|
|
62
61
|
(0, decorators_1.cache)()
|
|
63
62
|
], IPService.prototype, "getCurrentIPv4Address", null);
|
|
64
63
|
yok_1.injector.register("ipService", IPService);
|
|
65
|
-
//# sourceMappingURL=ip-service.js.map
|