@webiny/project 6.3.0 → 6.4.0-beta.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.
- package/GracefulError.js +13 -15
- package/GracefulError.js.map +1 -1
- package/ProjectError.js +11 -13
- package/ProjectError.js.map +1 -1
- package/ProjectSdk.js +113 -129
- package/ProjectSdk.js.map +1 -1
- package/abstractions/createAbstraction.js +3 -2
- package/abstractions/createAbstraction.js.map +1 -1
- package/abstractions/features/BuildApp.js +2 -1
- package/abstractions/features/BuildApp.js.map +1 -1
- package/abstractions/features/BuildExtension.js +2 -1
- package/abstractions/features/BuildExtension.js.map +1 -1
- package/abstractions/features/DeployApp.js +2 -1
- package/abstractions/features/DeployApp.js.map +1 -1
- package/abstractions/features/DestroyApp.js +2 -1
- package/abstractions/features/DestroyApp.js.map +1 -1
- package/abstractions/features/ExportStack.js +2 -1
- package/abstractions/features/ExportStack.js.map +1 -1
- package/abstractions/features/GetApp.js +2 -1
- package/abstractions/features/GetApp.js.map +1 -1
- package/abstractions/features/GetAppOutput.js +2 -1
- package/abstractions/features/GetAppOutput.js.map +1 -1
- package/abstractions/features/GetAppStackOutput.js +2 -6
- package/abstractions/features/GetAppStackOutput.js.map +1 -1
- package/abstractions/features/GetFeatureFlags.js +2 -1
- package/abstractions/features/GetFeatureFlags.js.map +1 -1
- package/abstractions/features/GetLogger.js +2 -1
- package/abstractions/features/GetLogger.js.map +1 -1
- package/abstractions/features/GetProductionEnvironments.js +2 -1
- package/abstractions/features/GetProductionEnvironments.js.map +1 -1
- package/abstractions/features/GetProject.js +2 -1
- package/abstractions/features/GetProject.js.map +1 -1
- package/abstractions/features/GetProjectConfig.js +2 -1
- package/abstractions/features/GetProjectConfig.js.map +1 -1
- package/abstractions/features/GetProjectInfo.js +2 -1
- package/abstractions/features/GetProjectInfo.js.map +1 -1
- package/abstractions/features/GetPulumiResourceNamePrefix.js +2 -1
- package/abstractions/features/GetPulumiResourceNamePrefix.js.map +1 -1
- package/abstractions/features/InstallExtension.js +2 -1
- package/abstractions/features/InstallExtension.js.map +1 -1
- package/abstractions/features/IsCi.js +2 -1
- package/abstractions/features/IsCi.js.map +1 -1
- package/abstractions/features/IsTelemetryEnabled.js +2 -1
- package/abstractions/features/IsTelemetryEnabled.js.map +1 -1
- package/abstractions/features/IsWcpEnabled.js +2 -1
- package/abstractions/features/IsWcpEnabled.js.map +1 -1
- package/abstractions/features/IsWebinyJsRepo.js +2 -1
- package/abstractions/features/IsWebinyJsRepo.js.map +1 -1
- package/abstractions/features/RefreshApp.js +2 -1
- package/abstractions/features/RefreshApp.js.map +1 -1
- package/abstractions/features/RunPulumiCommand.js +2 -1
- package/abstractions/features/RunPulumiCommand.js.map +1 -1
- package/abstractions/features/ValidateProjectConfig.js +2 -1
- package/abstractions/features/ValidateProjectConfig.js.map +1 -1
- package/abstractions/features/Watch.js +2 -1
- package/abstractions/features/Watch.js.map +1 -1
- package/abstractions/features/hooks/AdminAfterBuild.js +2 -1
- package/abstractions/features/hooks/AdminAfterBuild.js.map +1 -1
- package/abstractions/features/hooks/AdminAfterDeploy.js +2 -1
- package/abstractions/features/hooks/AdminAfterDeploy.js.map +1 -1
- package/abstractions/features/hooks/AdminBeforeBuild.js +2 -1
- package/abstractions/features/hooks/AdminBeforeBuild.js.map +1 -1
- package/abstractions/features/hooks/AdminBeforeDeploy.js +2 -1
- package/abstractions/features/hooks/AdminBeforeDeploy.js.map +1 -1
- package/abstractions/features/hooks/AdminBeforeWatch.js +2 -1
- package/abstractions/features/hooks/AdminBeforeWatch.js.map +1 -1
- package/abstractions/features/hooks/AfterBuild.js +2 -1
- package/abstractions/features/hooks/AfterBuild.js.map +1 -1
- package/abstractions/features/hooks/AfterDeploy.js +2 -1
- package/abstractions/features/hooks/AfterDeploy.js.map +1 -1
- package/abstractions/features/hooks/ApiAfterBuild.js +2 -1
- package/abstractions/features/hooks/ApiAfterBuild.js.map +1 -1
- package/abstractions/features/hooks/ApiAfterDeploy.js +2 -1
- package/abstractions/features/hooks/ApiAfterDeploy.js.map +1 -1
- package/abstractions/features/hooks/ApiBeforeBuild.js +2 -1
- package/abstractions/features/hooks/ApiBeforeBuild.js.map +1 -1
- package/abstractions/features/hooks/ApiBeforeDeploy.js +2 -1
- package/abstractions/features/hooks/ApiBeforeDeploy.js.map +1 -1
- package/abstractions/features/hooks/ApiBeforeWatch.js +2 -1
- package/abstractions/features/hooks/ApiBeforeWatch.js.map +1 -1
- package/abstractions/features/hooks/BeforeBuild.js +2 -1
- package/abstractions/features/hooks/BeforeBuild.js.map +1 -1
- package/abstractions/features/hooks/BeforeDeploy.js +2 -1
- package/abstractions/features/hooks/BeforeDeploy.js.map +1 -1
- package/abstractions/features/hooks/BeforeWatch.js +2 -1
- package/abstractions/features/hooks/BeforeWatch.js.map +1 -1
- package/abstractions/features/hooks/CoreAfterBuild.js +2 -1
- package/abstractions/features/hooks/CoreAfterBuild.js.map +1 -1
- package/abstractions/features/hooks/CoreAfterDeploy.js +2 -1
- package/abstractions/features/hooks/CoreAfterDeploy.js.map +1 -1
- package/abstractions/features/hooks/CoreBeforeBuild.js +2 -1
- package/abstractions/features/hooks/CoreBeforeBuild.js.map +1 -1
- package/abstractions/features/hooks/CoreBeforeDeploy.js +2 -1
- package/abstractions/features/hooks/CoreBeforeDeploy.js.map +1 -1
- package/abstractions/features/hooks/CoreBeforeWatch.js +2 -1
- package/abstractions/features/hooks/CoreBeforeWatch.js.map +1 -1
- package/abstractions/features/hooks/index.js +0 -2
- package/abstractions/features/index.js +0 -2
- package/abstractions/index.js +0 -2
- package/abstractions/models/IAppModel.js +0 -3
- package/abstractions/models/IAppPackageModel.js +0 -3
- package/abstractions/models/IPathModel.js +0 -3
- package/abstractions/models/IProjectConfigDto.js +0 -3
- package/abstractions/models/IProjectConfigModel.js +0 -3
- package/abstractions/models/IProjectModel.js +0 -3
- package/abstractions/models/IUrlModel.js +0 -3
- package/abstractions/models/IWcpEnvironmentDto.js +0 -3
- package/abstractions/models/IWcpEnvironmentModel.js +0 -3
- package/abstractions/models/IWcpUserDto.js +0 -3
- package/abstractions/models/IWcpUserModel.js +0 -3
- package/abstractions/models/IWcpUserPatDto.js +0 -3
- package/abstractions/models/IWcpUserPatModel.js +0 -3
- package/abstractions/models/PackagesBuilder/IPackagesBuilder.js +0 -3
- package/abstractions/models/PackagesBuilder/IRunnableBuildProcess.js +0 -3
- package/abstractions/models/PackagesBuilder/IRunnableBuildProcesses.js +0 -3
- package/abstractions/models/PackagesBuilder/index.js +0 -3
- package/abstractions/models/index.js +0 -3
- package/abstractions/services/BuildAppWorkspaceService.js +2 -1
- package/abstractions/services/BuildAppWorkspaceService.js.map +1 -1
- package/abstractions/services/BuildProjectWorkspaceService.js +2 -1
- package/abstractions/services/BuildProjectWorkspaceService.js.map +1 -1
- package/abstractions/services/GetAppPackagesService.js +2 -1
- package/abstractions/services/GetAppPackagesService.js.map +1 -1
- package/abstractions/services/GetAppService.js +2 -1
- package/abstractions/services/GetAppService.js.map +1 -1
- package/abstractions/services/GetCwdService.js +2 -1
- package/abstractions/services/GetCwdService.js.map +1 -1
- package/abstractions/services/GetProjectConfigService.js +2 -1
- package/abstractions/services/GetProjectConfigService.js.map +1 -1
- package/abstractions/services/GetProjectIdService.js +2 -1
- package/abstractions/services/GetProjectIdService.js.map +1 -1
- package/abstractions/services/GetProjectService.js +2 -1
- package/abstractions/services/GetProjectService.js.map +1 -1
- package/abstractions/services/GetProjectVersionService.js +2 -1
- package/abstractions/services/GetProjectVersionService.js.map +1 -1
- package/abstractions/services/GetPulumiService.js +2 -1
- package/abstractions/services/GetPulumiService.js.map +1 -1
- package/abstractions/services/InitProjectSdkService.js +2 -1
- package/abstractions/services/InitProjectSdkService.js.map +1 -1
- package/abstractions/services/InstallExtensionService.js +2 -1
- package/abstractions/services/InstallExtensionService.js.map +1 -1
- package/abstractions/services/IsRemotePulumiBackendService.js +2 -1
- package/abstractions/services/IsRemotePulumiBackendService.js.map +1 -1
- package/abstractions/services/ListAppLambdaFunctionsService.js +2 -1
- package/abstractions/services/ListAppLambdaFunctionsService.js.map +1 -1
- package/abstractions/services/ListDeployedEnvironmentsService.js +2 -1
- package/abstractions/services/ListDeployedEnvironmentsService.js.map +1 -1
- package/abstractions/services/ListPackagesInAppWorkspaceService.js +2 -1
- package/abstractions/services/ListPackagesInAppWorkspaceService.js.map +1 -1
- package/abstractions/services/ListPackagesService.js +2 -1
- package/abstractions/services/ListPackagesService.js.map +1 -1
- package/abstractions/services/LoadEnvVarsService.js +2 -1
- package/abstractions/services/LoadEnvVarsService.js.map +1 -1
- package/abstractions/services/LocalStorageService.js +2 -1
- package/abstractions/services/LocalStorageService.js.map +1 -1
- package/abstractions/services/LoggerService.js +2 -1
- package/abstractions/services/LoggerService.js.map +1 -1
- package/abstractions/services/ProjectInfoService/GetIsCiService.js +2 -1
- package/abstractions/services/ProjectInfoService/GetIsCiService.js.map +1 -1
- package/abstractions/services/ProjectInfoService/GetNpmVersionService.js +2 -1
- package/abstractions/services/ProjectInfoService/GetNpmVersionService.js.map +1 -1
- package/abstractions/services/ProjectInfoService/GetNpxVersionService.js +2 -1
- package/abstractions/services/ProjectInfoService/GetNpxVersionService.js.map +1 -1
- package/abstractions/services/ProjectInfoService/GetPulumiVersionService.js +2 -1
- package/abstractions/services/ProjectInfoService/GetPulumiVersionService.js.map +1 -1
- package/abstractions/services/ProjectInfoService/GetYarnVersionService.js +2 -1
- package/abstractions/services/ProjectInfoService/GetYarnVersionService.js.map +1 -1
- package/abstractions/services/ProjectInfoService/ProjectInfoService.js +2 -1
- package/abstractions/services/ProjectInfoService/ProjectInfoService.js.map +1 -1
- package/abstractions/services/ProjectInfoService/index.js +0 -2
- package/abstractions/services/ProjectSdkParamsService.js +2 -1
- package/abstractions/services/ProjectSdkParamsService.js.map +1 -1
- package/abstractions/services/PulumiExportService.js +3 -4
- package/abstractions/services/PulumiExportService.js.map +1 -1
- package/abstractions/services/PulumiGetConfigPassphraseService.js +2 -1
- package/abstractions/services/PulumiGetConfigPassphraseService.js.map +1 -1
- package/abstractions/services/PulumiGetSecretsProviderService.js +2 -1
- package/abstractions/services/PulumiGetSecretsProviderService.js.map +1 -1
- package/abstractions/services/PulumiGetStackOutputService.js +2 -1
- package/abstractions/services/PulumiGetStackOutputService.js.map +1 -1
- package/abstractions/services/PulumiImportService.js +2 -1
- package/abstractions/services/PulumiImportService.js.map +1 -1
- package/abstractions/services/PulumiLoginService.js +2 -1
- package/abstractions/services/PulumiLoginService.js.map +1 -1
- package/abstractions/services/PulumiSelectStackService.js +2 -1
- package/abstractions/services/PulumiSelectStackService.js.map +1 -1
- package/abstractions/services/SetProjectIdService.js +2 -1
- package/abstractions/services/SetProjectIdService.js.map +1 -1
- package/abstractions/services/StdioService.js +2 -1
- package/abstractions/services/StdioService.js.map +1 -1
- package/abstractions/services/UiService.js +2 -1
- package/abstractions/services/UiService.js.map +1 -1
- package/abstractions/services/ValidateProjectConfigService.js +2 -1
- package/abstractions/services/ValidateProjectConfigService.js.map +1 -1
- package/abstractions/services/WatchedLambdaFunctionsService.js +2 -1
- package/abstractions/services/WatchedLambdaFunctionsService.js.map +1 -1
- package/abstractions/services/WcpService.js +2 -1
- package/abstractions/services/WcpService.js.map +1 -1
- package/abstractions/services/index.js +0 -2
- package/abstractions/types.js +0 -3
- package/components/Wcp.js +27 -38
- package/components/Wcp.js.map +1 -1
- package/createProjectSdkContainer.js +103 -112
- package/createProjectSdkContainer.js.map +1 -1
- package/decorators/BuildAppWithHooks.js +54 -44
- package/decorators/BuildAppWithHooks.js.map +1 -1
- package/decorators/DeployAppClearWatchedLambdaFunctions.js +27 -29
- package/decorators/DeployAppClearWatchedLambdaFunctions.js.map +1 -1
- package/decorators/DeployAppRefreshStackOutputCache.js +26 -30
- package/decorators/DeployAppRefreshStackOutputCache.js.map +1 -1
- package/decorators/DeployAppWithHooks.js +51 -41
- package/decorators/DeployAppWithHooks.js.map +1 -1
- package/decorators/DeployAppWithWatchedLambdaReplacement.js +33 -37
- package/decorators/DeployAppWithWatchedLambdaReplacement.js.map +1 -1
- package/decorators/GetFeatureFlagsWithLicense.js +36 -57
- package/decorators/GetFeatureFlagsWithLicense.js.map +1 -1
- package/decorators/GetPulumiServiceWithDownloadInfo.js +21 -19
- package/decorators/GetPulumiServiceWithDownloadInfo.js.map +1 -1
- package/decorators/WatchWithHooks.js +30 -27
- package/decorators/WatchWithHooks.js.map +1 -1
- package/decorators/index.js +0 -2
- package/defineExtension/createExtensionDefinition.js +12 -19
- package/defineExtension/createExtensionDefinition.js.map +1 -1
- package/defineExtension/createExtensionReactComponent.js +40 -46
- package/defineExtension/createExtensionReactComponent.js.map +1 -1
- package/defineExtension/defineExtension.js +8 -9
- package/defineExtension/defineExtension.js.map +1 -1
- package/defineExtension/index.js +0 -2
- package/defineExtension/models/ExtensionDefinitionModel.js +11 -10
- package/defineExtension/models/ExtensionDefinitionModel.js.map +1 -1
- package/defineExtension/models/ExtensionInstanceModel.js +23 -24
- package/defineExtension/models/ExtensionInstanceModel.js.map +1 -1
- package/defineExtension/models/index.js +0 -2
- package/defineExtension/types.js +0 -3
- package/defineExtension/zodTypes/zodSrcPath.js +35 -61
- package/defineExtension/zodTypes/zodSrcPath.js.map +1 -1
- package/exports/infra/admin.js +0 -2
- package/exports/infra/api.js +0 -2
- package/exports/infra/core.js +0 -2
- package/exports/infra.js +0 -2
- package/extensions/AdminBuildParam.js +105 -147
- package/extensions/AdminBuildParam.js.map +1 -1
- package/extensions/AdminExtension.js +64 -90
- package/extensions/AdminExtension.js.map +1 -1
- package/extensions/ApiBuildParam.js +71 -97
- package/extensions/ApiBuildParam.js.map +1 -1
- package/extensions/ApiExtension.js +71 -92
- package/extensions/ApiExtension.js.map +1 -1
- package/extensions/DatabaseSetup.js +14 -9
- package/extensions/DatabaseSetup.js.map +1 -1
- package/extensions/EnvVar.js +12 -16
- package/extensions/EnvVar.js.map +1 -1
- package/extensions/ExtensionDefinitions.js +11 -10
- package/extensions/ExtensionDefinitions.js.map +1 -1
- package/extensions/FeatureFlags.js +47 -48
- package/extensions/FeatureFlags.js.map +1 -1
- package/extensions/Project/EnsureApiDeployedBeforeAdminBuild.js +20 -21
- package/extensions/Project/EnsureApiDeployedBeforeAdminBuild.js.map +1 -1
- package/extensions/Project/EnsureApiDeployedBeforeAdminWatch.js +20 -21
- package/extensions/Project/EnsureApiDeployedBeforeAdminWatch.js.map +1 -1
- package/extensions/Project/EnsureApiDeployedBeforeWatch.js +20 -21
- package/extensions/Project/EnsureApiDeployedBeforeWatch.js.map +1 -1
- package/extensions/Project/EnsureCoreDeployedBeforeApiDeploy.js +22 -25
- package/extensions/Project/EnsureCoreDeployedBeforeApiDeploy.js.map +1 -1
- package/extensions/Project/EnsureTelemetryEnabledForOss.js +25 -28
- package/extensions/Project/EnsureTelemetryEnabledForOss.js.map +1 -1
- package/extensions/Project/SetAdminAppEnvVarsBeforeBuild.js +29 -34
- package/extensions/Project/SetAdminAppEnvVarsBeforeBuild.js.map +1 -1
- package/extensions/Project/SetAdminAppEnvVarsBeforeWatch.js +30 -35
- package/extensions/Project/SetAdminAppEnvVarsBeforeWatch.js.map +1 -1
- package/extensions/Project/ShowConfigChangeInfoBeforeAdminWatch.js +12 -9
- package/extensions/Project/ShowConfigChangeInfoBeforeAdminWatch.js.map +1 -1
- package/extensions/Project/ShowConfigChangeInfoBeforeApiWatch.js +12 -9
- package/extensions/Project/ShowConfigChangeInfoBeforeApiWatch.js.map +1 -1
- package/extensions/Project/TelemetryNoLongerNewUser.js +7 -7
- package/extensions/Project/TelemetryNoLongerNewUser.js.map +1 -1
- package/extensions/Project/ValidateEncryptionBeforeDeploy.js +22 -23
- package/extensions/Project/ValidateEncryptionBeforeDeploy.js.map +1 -1
- package/extensions/Project/ValidateProductionPulumiState.js +25 -28
- package/extensions/Project/ValidateProductionPulumiState.js.map +1 -1
- package/extensions/Project/WcpInjectTelemetryClientAfterBuild.js +46 -51
- package/extensions/Project/WcpInjectTelemetryClientAfterBuild.js.map +1 -1
- package/extensions/Project.js +29 -30
- package/extensions/Project.js.map +1 -1
- package/extensions/ProjectDecorator.js +13 -16
- package/extensions/ProjectDecorator.js.map +1 -1
- package/extensions/ProjectId.js +11 -13
- package/extensions/ProjectId.js.map +1 -1
- package/extensions/ProjectImplementation.js +14 -17
- package/extensions/ProjectImplementation.js.map +1 -1
- package/extensions/Telemetry.js +10 -9
- package/extensions/Telemetry.js.map +1 -1
- package/extensions/hooks/AdminAfterBuild.js +16 -19
- package/extensions/hooks/AdminAfterBuild.js.map +1 -1
- package/extensions/hooks/AdminAfterDeploy.js +16 -19
- package/extensions/hooks/AdminAfterDeploy.js.map +1 -1
- package/extensions/hooks/AdminBeforeBuild.js +16 -19
- package/extensions/hooks/AdminBeforeBuild.js.map +1 -1
- package/extensions/hooks/AdminBeforeDeploy.js +16 -19
- package/extensions/hooks/AdminBeforeDeploy.js.map +1 -1
- package/extensions/hooks/AdminBeforeWatch.js +16 -19
- package/extensions/hooks/AdminBeforeWatch.js.map +1 -1
- package/extensions/hooks/AfterBuild.js +15 -18
- package/extensions/hooks/AfterBuild.js.map +1 -1
- package/extensions/hooks/AfterDeploy.js +15 -18
- package/extensions/hooks/AfterDeploy.js.map +1 -1
- package/extensions/hooks/ApiAfterBuild.js +16 -19
- package/extensions/hooks/ApiAfterBuild.js.map +1 -1
- package/extensions/hooks/ApiAfterDeploy.js +16 -19
- package/extensions/hooks/ApiAfterDeploy.js.map +1 -1
- package/extensions/hooks/ApiBeforeBuild.js +16 -19
- package/extensions/hooks/ApiBeforeBuild.js.map +1 -1
- package/extensions/hooks/ApiBeforeDeploy.js +16 -19
- package/extensions/hooks/ApiBeforeDeploy.js.map +1 -1
- package/extensions/hooks/ApiBeforeWatch.js +16 -19
- package/extensions/hooks/ApiBeforeWatch.js.map +1 -1
- package/extensions/hooks/BeforeBuild.js +15 -18
- package/extensions/hooks/BeforeBuild.js.map +1 -1
- package/extensions/hooks/BeforeDeploy.js +15 -18
- package/extensions/hooks/BeforeDeploy.js.map +1 -1
- package/extensions/hooks/BeforeWatch.js +15 -18
- package/extensions/hooks/BeforeWatch.js.map +1 -1
- package/extensions/hooks/CoreAfterBuild.js +16 -19
- package/extensions/hooks/CoreAfterBuild.js.map +1 -1
- package/extensions/hooks/CoreAfterDeploy.js +16 -19
- package/extensions/hooks/CoreAfterDeploy.js.map +1 -1
- package/extensions/hooks/CoreBeforeBuild.js +16 -19
- package/extensions/hooks/CoreBeforeBuild.js.map +1 -1
- package/extensions/hooks/CoreBeforeDeploy.js +16 -19
- package/extensions/hooks/CoreBeforeDeploy.js.map +1 -1
- package/extensions/hooks/CoreBeforeWatch.js +16 -19
- package/extensions/hooks/CoreBeforeWatch.js.map +1 -1
- package/extensions/hooks/index.js +0 -2
- package/extensions/index.js +43 -57
- package/extensions/index.js.map +1 -1
- package/extensions/infra/Ci.js +8 -24
- package/extensions/infra/Ci.js.map +1 -1
- package/extensions/infra/Env.js +35 -92
- package/extensions/infra/Env.js.map +1 -1
- package/extensions/infra/index.js +0 -2
- package/extensions/pulumi/AdminStackOutputValue.js +13 -12
- package/extensions/pulumi/AdminStackOutputValue.js.map +1 -1
- package/extensions/pulumi/ApiStackOutputValue.js +13 -12
- package/extensions/pulumi/ApiStackOutputValue.js.map +1 -1
- package/extensions/pulumi/CoreStackOutputValue.js +13 -12
- package/extensions/pulumi/CoreStackOutputValue.js.map +1 -1
- package/extensions/pulumi/ProductionEnvironments.js +29 -39
- package/extensions/pulumi/ProductionEnvironments.js.map +1 -1
- package/extensions/pulumi/PulumiResourceNamePrefix.js +10 -9
- package/extensions/pulumi/PulumiResourceNamePrefix.js.map +1 -1
- package/extensions/pulumi/index.js +0 -2
- package/features/BuildApp/BuildApp.js +49 -40
- package/features/BuildApp/BuildApp.js.map +1 -1
- package/features/BuildApp/PackagesBuilder/PackagesBuilder.js +34 -39
- package/features/BuildApp/PackagesBuilder/PackagesBuilder.js.map +1 -1
- package/features/BuildApp/PackagesBuilder/RunnableBuildProcess.js +39 -33
- package/features/BuildApp/PackagesBuilder/RunnableBuildProcess.js.map +1 -1
- package/features/BuildApp/PackagesBuilder/RunnableBuildProcesses.js +39 -46
- package/features/BuildApp/PackagesBuilder/RunnableBuildProcesses.js.map +1 -1
- package/features/BuildApp/PackagesBuilder/worker.js +26 -34
- package/features/BuildApp/PackagesBuilder/worker.js.map +1 -1
- package/features/BuildApp/index.js +0 -2
- package/features/DeployApp/DeployApp.js +79 -79
- package/features/DeployApp/DeployApp.js.map +1 -1
- package/features/DeployApp/index.js +0 -2
- package/features/DestroyApp/DestroyApp.js +60 -46
- package/features/DestroyApp/DestroyApp.js.map +1 -1
- package/features/DestroyApp/index.js +0 -2
- package/features/ExportStack/ExportStack.js +21 -16
- package/features/ExportStack/ExportStack.js.map +1 -1
- package/features/ExportStack/index.js +0 -2
- package/features/GetApp/GetApp.js +14 -11
- package/features/GetApp/GetApp.js.map +1 -1
- package/features/GetApp/index.js +0 -2
- package/features/GetAppOutput/GetAppOutput.js +44 -33
- package/features/GetAppOutput/GetAppOutput.js.map +1 -1
- package/features/GetAppOutput/index.js +0 -2
- package/features/GetAppStackOutput/GetAppStackOutput.js +20 -15
- package/features/GetAppStackOutput/GetAppStackOutput.js.map +1 -1
- package/features/GetAppStackOutput/index.js +0 -2
- package/features/GetFeatureFlags/GetFeatureFlags.js +20 -19
- package/features/GetFeatureFlags/GetFeatureFlags.js.map +1 -1
- package/features/GetFeatureFlags/index.js +0 -2
- package/features/GetLogger/GetLogger.js +14 -11
- package/features/GetLogger/GetLogger.js.map +1 -1
- package/features/GetLogger/index.js +0 -2
- package/features/GetProductionEnvironments/GetProductionEnvironments.js +24 -19
- package/features/GetProductionEnvironments/GetProductionEnvironments.js.map +1 -1
- package/features/GetProductionEnvironments/index.js +0 -2
- package/features/GetProject/GetProject.js +14 -11
- package/features/GetProject/GetProject.js.map +1 -1
- package/features/GetProject/index.js +0 -2
- package/features/GetProjectConfig/GetProjectConfig.js +14 -11
- package/features/GetProjectConfig/GetProjectConfig.js.map +1 -1
- package/features/GetProjectConfig/index.js +0 -2
- package/features/GetProjectInfo/GetProjectInfo.js +14 -11
- package/features/GetProjectInfo/GetProjectInfo.js.map +1 -1
- package/features/GetProjectInfo/index.js +0 -2
- package/features/GetPulumiResourceNamePrefix/GetPulumiResourceNamePrefix.js +18 -17
- package/features/GetPulumiResourceNamePrefix/GetPulumiResourceNamePrefix.js.map +1 -1
- package/features/GetPulumiResourceNamePrefix/index.js +0 -2
- package/features/InstallExtension/InstallExtension.js +14 -11
- package/features/InstallExtension/InstallExtension.js.map +1 -1
- package/features/InstallExtension/index.js +0 -2
- package/features/IsCi/IsCi.js +14 -11
- package/features/IsCi/IsCi.js.map +1 -1
- package/features/IsCi/index.js +0 -2
- package/features/IsTelemetryEnabled/IsTelemetryEnabled.js +19 -18
- package/features/IsTelemetryEnabled/IsTelemetryEnabled.js.map +1 -1
- package/features/IsTelemetryEnabled/index.js +0 -2
- package/features/IsWcpEnabled/IsWcpEnabled.js +15 -12
- package/features/IsWcpEnabled/IsWcpEnabled.js.map +1 -1
- package/features/IsWcpEnabled/index.js +0 -2
- package/features/IsWebinyJsRepo/IsWebinyJsRepo.js +17 -14
- package/features/IsWebinyJsRepo/IsWebinyJsRepo.js.map +1 -1
- package/features/IsWebinyJsRepo/index.js +0 -2
- package/features/RefreshApp/RefreshApp.js +57 -46
- package/features/RefreshApp/RefreshApp.js.map +1 -1
- package/features/RefreshApp/index.js +0 -2
- package/features/RunPulumiCommand/RunPulumiCommand.js +54 -43
- package/features/RunPulumiCommand/RunPulumiCommand.js.map +1 -1
- package/features/RunPulumiCommand/index.js +0 -2
- package/features/ValidateProjectConfig/ValidateProjectConfig.js +14 -11
- package/features/ValidateProjectConfig/ValidateProjectConfig.js.map +1 -1
- package/features/ValidateProjectConfig/index.js +0 -2
- package/features/Watch/Watch.js +178 -181
- package/features/Watch/Watch.js.map +1 -1
- package/features/Watch/getIotEndpoint.js +14 -12
- package/features/Watch/getIotEndpoint.js.map +1 -1
- package/features/Watch/index.js +0 -2
- package/features/Watch/initInvocationForwarding.js +76 -95
- package/features/Watch/initInvocationForwarding.js.map +1 -1
- package/features/Watch/localInvocationWorker.js +24 -33
- package/features/Watch/localInvocationWorker.js.map +1 -1
- package/features/Watch/replaceLambdaFunctions.js +61 -84
- package/features/Watch/replaceLambdaFunctions.js.map +1 -1
- package/features/Watch/watchers/BasePackagesWatcher.js +10 -13
- package/features/Watch/watchers/BasePackagesWatcher.js.map +1 -1
- package/features/Watch/watchers/MultiplePackagesWatcher.js +11 -12
- package/features/Watch/watchers/MultiplePackagesWatcher.js.map +1 -1
- package/features/Watch/watchers/PackagesWatcher.js +15 -18
- package/features/Watch/watchers/PackagesWatcher.js.map +1 -1
- package/features/Watch/watchers/RunnableWatchProcess.js +41 -40
- package/features/Watch/watchers/RunnableWatchProcess.js.map +1 -1
- package/features/Watch/watchers/RunnableWatchProcesses.js +35 -34
- package/features/Watch/watchers/RunnableWatchProcesses.js.map +1 -1
- package/features/Watch/watchers/SinglePackageWatcher.js +11 -8
- package/features/Watch/watchers/SinglePackageWatcher.js.map +1 -1
- package/features/Watch/watchers/WebinyConfigWatcher.js +30 -40
- package/features/Watch/watchers/WebinyConfigWatcher.js.map +1 -1
- package/features/Watch/watchers/ZeroPackagesWatcher.js +5 -5
- package/features/Watch/watchers/ZeroPackagesWatcher.js.map +1 -1
- package/features/Watch/watchers/utils/measureDuration.js +7 -8
- package/features/Watch/watchers/utils/measureDuration.js.map +1 -1
- package/features/Watch/watchers/worker.js +12 -21
- package/features/Watch/watchers/worker.js.map +1 -1
- package/features/hooks/AdminAfterBuild/AdminBeforeBuild.js +19 -15
- package/features/hooks/AdminAfterBuild/AdminBeforeBuild.js.map +1 -1
- package/features/hooks/AdminAfterBuild/index.js +0 -2
- package/features/hooks/AdminAfterDeploy/AdminBeforeBuild.js +19 -15
- package/features/hooks/AdminAfterDeploy/AdminBeforeBuild.js.map +1 -1
- package/features/hooks/AdminAfterDeploy/index.js +0 -2
- package/features/hooks/AdminBeforeBuild/AdminBeforeBuild.js +19 -15
- package/features/hooks/AdminBeforeBuild/AdminBeforeBuild.js.map +1 -1
- package/features/hooks/AdminBeforeBuild/index.js +0 -2
- package/features/hooks/AdminBeforeDeploy/AdminBeforeDeploy.js +19 -15
- package/features/hooks/AdminBeforeDeploy/AdminBeforeDeploy.js.map +1 -1
- package/features/hooks/AdminBeforeDeploy/index.js +0 -2
- package/features/hooks/AdminBeforeWatch/AdminBeforeWatch.js +18 -14
- package/features/hooks/AdminBeforeWatch/AdminBeforeWatch.js.map +1 -1
- package/features/hooks/AdminBeforeWatch/index.js +0 -2
- package/features/hooks/AfterBuild/AfterBuild.js +19 -15
- package/features/hooks/AfterBuild/AfterBuild.js.map +1 -1
- package/features/hooks/AfterBuild/index.js +0 -2
- package/features/hooks/AfterDeploy/AfterDeploy.js +19 -15
- package/features/hooks/AfterDeploy/AfterDeploy.js.map +1 -1
- package/features/hooks/AfterDeploy/index.js +0 -2
- package/features/hooks/ApiAfterBuild/ApiBeforeBuild.js +18 -14
- package/features/hooks/ApiAfterBuild/ApiBeforeBuild.js.map +1 -1
- package/features/hooks/ApiAfterBuild/index.js +0 -2
- package/features/hooks/ApiAfterDeploy/ApiBeforeBuild.js +18 -14
- package/features/hooks/ApiAfterDeploy/ApiBeforeBuild.js.map +1 -1
- package/features/hooks/ApiAfterDeploy/index.js +0 -2
- package/features/hooks/ApiBeforeBuild/ApiBeforeBuild.js +18 -14
- package/features/hooks/ApiBeforeBuild/ApiBeforeBuild.js.map +1 -1
- package/features/hooks/ApiBeforeBuild/index.js +0 -2
- package/features/hooks/ApiBeforeDeploy/ApiBeforeDeploy.js +18 -14
- package/features/hooks/ApiBeforeDeploy/ApiBeforeDeploy.js.map +1 -1
- package/features/hooks/ApiBeforeDeploy/index.js +0 -2
- package/features/hooks/ApiBeforeWatch/ApiBeforeWatch.js +18 -14
- package/features/hooks/ApiBeforeWatch/ApiBeforeWatch.js.map +1 -1
- package/features/hooks/ApiBeforeWatch/index.js +0 -2
- package/features/hooks/BeforeBuild/BeforeBuild.js +19 -15
- package/features/hooks/BeforeBuild/BeforeBuild.js.map +1 -1
- package/features/hooks/BeforeBuild/index.js +0 -2
- package/features/hooks/BeforeDeploy/BeforeDeploy.js +19 -15
- package/features/hooks/BeforeDeploy/BeforeDeploy.js.map +1 -1
- package/features/hooks/BeforeDeploy/index.js +0 -2
- package/features/hooks/BeforeWatch/BeforeWatch.js +19 -15
- package/features/hooks/BeforeWatch/BeforeWatch.js.map +1 -1
- package/features/hooks/BeforeWatch/index.js +0 -2
- package/features/hooks/CoreAfterBuild/CoreBeforeBuild.js +18 -14
- package/features/hooks/CoreAfterBuild/CoreBeforeBuild.js.map +1 -1
- package/features/hooks/CoreAfterBuild/index.js +0 -2
- package/features/hooks/CoreAfterDeploy/CoreBeforeBuild.js +18 -14
- package/features/hooks/CoreAfterDeploy/CoreBeforeBuild.js.map +1 -1
- package/features/hooks/CoreAfterDeploy/index.js +0 -2
- package/features/hooks/CoreBeforeBuild/CoreBeforeBuild.js +18 -14
- package/features/hooks/CoreBeforeBuild/CoreBeforeBuild.js.map +1 -1
- package/features/hooks/CoreBeforeBuild/index.js +0 -2
- package/features/hooks/CoreBeforeDeploy/CoreBeforeDeploy.js +18 -14
- package/features/hooks/CoreBeforeDeploy/CoreBeforeDeploy.js.map +1 -1
- package/features/hooks/CoreBeforeDeploy/index.js +0 -2
- package/features/hooks/CoreBeforeWatch/CoreBeforeWatch.js +18 -14
- package/features/hooks/CoreBeforeWatch/CoreBeforeWatch.js.map +1 -1
- package/features/hooks/CoreBeforeWatch/index.js +0 -2
- package/features/hooks/index.js +0 -2
- package/features/index.js +0 -2
- package/index.js +5 -10
- package/index.js.map +1 -1
- package/models/AppModel.js +20 -19
- package/models/AppModel.js.map +1 -1
- package/models/AppPackageModel.js +10 -9
- package/models/AppPackageModel.js.map +1 -1
- package/models/PathModel.js +23 -26
- package/models/PathModel.js.map +1 -1
- package/models/ProjectConfigModel.js +12 -16
- package/models/ProjectConfigModel.js.map +1 -1
- package/models/ProjectModel.js +37 -36
- package/models/ProjectModel.js.map +1 -1
- package/models/UrlModel.js +23 -23
- package/models/UrlModel.js.map +1 -1
- package/models/WcpEnvironmentModel.js +23 -22
- package/models/WcpEnvironmentModel.js.map +1 -1
- package/models/WcpUserModel.js +13 -12
- package/models/WcpUserModel.js.map +1 -1
- package/models/WcpUserPatModel.js +12 -11
- package/models/WcpUserPatModel.js.map +1 -1
- package/models/index.js +0 -2
- package/package.json +14 -14
- package/rslib-runtime.js +14 -0
- package/rslib-runtime.js.map +1 -0
- package/services/BuildAppWorkspaceService/BuildAppWorkspaceService.js +62 -69
- package/services/BuildAppWorkspaceService/BuildAppWorkspaceService.js.map +1 -1
- package/services/BuildAppWorkspaceService/index.js +0 -2
- package/services/BuildProjectWorkspaceService/BuildProjectWorkspaceService.js +21 -17
- package/services/BuildProjectWorkspaceService/BuildProjectWorkspaceService.js.map +1 -1
- package/services/BuildProjectWorkspaceService/index.js +0 -2
- package/services/GetAppPackagesService/GetAppPackagesService.js +24 -23
- package/services/GetAppPackagesService/GetAppPackagesService.js.map +1 -1
- package/services/GetAppPackagesService/index.js +0 -2
- package/services/GetAppService/GetAppService.js +24 -27
- package/services/GetAppService/GetAppService.js.map +1 -1
- package/services/GetAppService/index.js +0 -2
- package/services/GetCwdService/GetCwdService.js +15 -12
- package/services/GetCwdService/GetCwdService.js.map +1 -1
- package/services/GetCwdService/index.js +0 -2
- package/services/GetProjectConfigService/EnvContext.js +29 -38
- package/services/GetProjectConfigService/EnvContext.js.map +1 -1
- package/services/GetProjectConfigService/GetProjectConfigService.js +102 -115
- package/services/GetProjectConfigService/GetProjectConfigService.js.map +1 -1
- package/services/GetProjectConfigService/ProductionEnvironmentsContext.js +13 -18
- package/services/GetProjectConfigService/ProductionEnvironmentsContext.js.map +1 -1
- package/services/GetProjectConfigService/WcpProjectLicenseContext.js +32 -37
- package/services/GetProjectConfigService/WcpProjectLicenseContext.js.map +1 -1
- package/services/GetProjectConfigService/index.js +0 -2
- package/services/GetProjectConfigService/renderConfig.js +32 -38
- package/services/GetProjectConfigService/renderConfig.js.map +1 -1
- package/services/GetProjectConfigService/renderConfigWorker.js +37 -48
- package/services/GetProjectConfigService/renderConfigWorker.js.map +1 -1
- package/services/GetProjectIdService/GetProjectIdService.js +22 -23
- package/services/GetProjectIdService/GetProjectIdService.js.map +1 -1
- package/services/GetProjectIdService/index.js +0 -2
- package/services/GetProjectService/GetProjectService.js +43 -45
- package/services/GetProjectService/GetProjectService.js.map +1 -1
- package/services/GetProjectService/index.js +0 -2
- package/services/GetProjectVersionService/GetProjectVersionService.js +23 -22
- package/services/GetProjectVersionService/GetProjectVersionService.js.map +1 -1
- package/services/GetProjectVersionService/index.js +0 -2
- package/services/GetPulumiService/GetPulumiService.js +36 -41
- package/services/GetPulumiService/GetPulumiService.js.map +1 -1
- package/services/GetPulumiService/index.js +0 -2
- package/services/InitProjectSdkService/InitProjectSdkService.js +36 -46
- package/services/InitProjectSdkService/InitProjectSdkService.js.map +1 -1
- package/services/InitProjectSdkService/applyEnvVars.js +5 -8
- package/services/InitProjectSdkService/applyEnvVars.js.map +1 -1
- package/services/InitProjectSdkService/applyWcpEnvVars.js +91 -136
- package/services/InitProjectSdkService/applyWcpEnvVars.js.map +1 -1
- package/services/InitProjectSdkService/index.js +0 -2
- package/services/InitProjectSdkService/registerDecorators.js +10 -7
- package/services/InitProjectSdkService/registerDecorators.js.map +1 -1
- package/services/InitProjectSdkService/registerHooks.js +30 -7
- package/services/InitProjectSdkService/registerHooks.js.map +1 -1
- package/services/InitProjectSdkService/registerImplementations.js +10 -11
- package/services/InitProjectSdkService/registerImplementations.js.map +1 -1
- package/services/InitProjectSdkService/registerPulumiExtensions.js +12 -9
- package/services/InitProjectSdkService/registerPulumiExtensions.js.map +1 -1
- package/services/InstallExtensionService/InstallExtensionService.js +78 -121
- package/services/InstallExtensionService/InstallExtensionService.js.map +1 -1
- package/services/InstallExtensionService/downloadFolderFromS3.js +46 -65
- package/services/InstallExtensionService/downloadFolderFromS3.js.map +1 -1
- package/services/InstallExtensionService/index.js +0 -2
- package/services/InstallExtensionService/mergePackageJson.js +15 -25
- package/services/InstallExtensionService/mergePackageJson.js.map +1 -1
- package/services/InstallExtensionService/types.js +0 -3
- package/services/InstallExtensionService/updateWebinyConfig.js +60 -137
- package/services/InstallExtensionService/updateWebinyConfig.js.map +1 -1
- package/services/IsRemotePulumiBackendService/IsRemotePulumiBackendService.js +9 -17
- package/services/IsRemotePulumiBackendService/IsRemotePulumiBackendService.js.map +1 -1
- package/services/IsRemotePulumiBackendService/index.js +0 -2
- package/services/ListAppLambdaFunctionsService/ListAppLambdaFunctionsService.js +50 -73
- package/services/ListAppLambdaFunctionsService/ListAppLambdaFunctionsService.js.map +1 -1
- package/services/ListAppLambdaFunctionsService/index.js +0 -2
- package/services/ListDeployedEnvironmentsService/ListDeployedEnvironmentsService.js +21 -23
- package/services/ListDeployedEnvironmentsService/ListDeployedEnvironmentsService.js.map +1 -1
- package/services/ListDeployedEnvironmentsService/index.js +0 -2
- package/services/ListPackagesInAppWorkspaceService/ListPackagesInAppWorkspaceService.js +34 -29
- package/services/ListPackagesInAppWorkspaceService/ListPackagesInAppWorkspaceService.js.map +1 -1
- package/services/ListPackagesInAppWorkspaceService/index.js +0 -2
- package/services/ListPackagesService/ListPackagesService.js +81 -114
- package/services/ListPackagesService/ListPackagesService.js.map +1 -1
- package/services/ListPackagesService/index.js +0 -2
- package/services/LoadEnvVarsService/LoadEnvVarsService.js +28 -29
- package/services/LoadEnvVarsService/LoadEnvVarsService.js.map +1 -1
- package/services/LoadEnvVarsService/index.js +0 -2
- package/services/LocalStorageService/LocalStorageService.js +41 -44
- package/services/LocalStorageService/LocalStorageService.js.map +1 -1
- package/services/LocalStorageService/index.js +0 -2
- package/services/LoggerService/LoggerService.js +76 -84
- package/services/LoggerService/LoggerService.js.map +1 -1
- package/services/LoggerService/index.js +0 -2
- package/services/ProjectInfoService/GetIsCiService.js +9 -8
- package/services/ProjectInfoService/GetIsCiService.js.map +1 -1
- package/services/ProjectInfoService/GetNpmVersionService.js +9 -8
- package/services/ProjectInfoService/GetNpmVersionService.js.map +1 -1
- package/services/ProjectInfoService/GetNpxVersionService.js +9 -8
- package/services/ProjectInfoService/GetNpxVersionService.js.map +1 -1
- package/services/ProjectInfoService/GetPulumiVersionService.js +38 -30
- package/services/ProjectInfoService/GetPulumiVersionService.js.map +1 -1
- package/services/ProjectInfoService/GetYarnVersionService.js +9 -8
- package/services/ProjectInfoService/GetYarnVersionService.js.map +1 -1
- package/services/ProjectInfoService/ProjectInfoService.js +56 -51
- package/services/ProjectInfoService/ProjectInfoService.js.map +1 -1
- package/services/ProjectInfoService/index.js +0 -2
- package/services/ProjectSdkParamsService/ProjectSdkParamsService.js +37 -34
- package/services/ProjectSdkParamsService/ProjectSdkParamsService.js.map +1 -1
- package/services/ProjectSdkParamsService/index.js +0 -2
- package/services/PulumiExportService/PulumiExportService.js +42 -35
- package/services/PulumiExportService/PulumiExportService.js.map +1 -1
- package/services/PulumiExportService/index.js +0 -2
- package/services/PulumiGetConfigPassphraseService/PulumiGetConfigPassphraseService.js +9 -8
- package/services/PulumiGetConfigPassphraseService/PulumiGetConfigPassphraseService.js.map +1 -1
- package/services/PulumiGetConfigPassphraseService/index.js +0 -2
- package/services/PulumiGetSecretsProviderService/PulumiGetSecretsProviderService.js +9 -8
- package/services/PulumiGetSecretsProviderService/PulumiGetSecretsProviderService.js.map +1 -1
- package/services/PulumiGetSecretsProviderService/index.js +0 -2
- package/services/PulumiGetStackOutputService/PulumiGetStackOutputService.js +108 -100
- package/services/PulumiGetStackOutputService/PulumiGetStackOutputService.js.map +1 -1
- package/services/PulumiGetStackOutputService/index.js +0 -2
- package/services/PulumiGetStackOutputService/mapStackOutput.js +17 -29
- package/services/PulumiGetStackOutputService/mapStackOutput.js.map +1 -1
- package/services/PulumiImportService/PulumiImportService.js +48 -45
- package/services/PulumiImportService/PulumiImportService.js.map +1 -1
- package/services/PulumiImportService/index.js +0 -2
- package/services/PulumiLoginService/PulumiLoginService.js +43 -40
- package/services/PulumiLoginService/PulumiLoginService.js.map +1 -1
- package/services/PulumiLoginService/index.js +0 -2
- package/services/PulumiSelectStackService/PulumiSelectStackService.js +91 -86
- package/services/PulumiSelectStackService/PulumiSelectStackService.js.map +1 -1
- package/services/PulumiSelectStackService/index.js +0 -2
- package/services/SetProjectIdService/SetProjectIdService.js +43 -57
- package/services/SetProjectIdService/SetProjectIdService.js.map +1 -1
- package/services/SetProjectIdService/index.js +0 -2
- package/services/StdioService/StdioService.js +15 -14
- package/services/StdioService/StdioService.js.map +1 -1
- package/services/StdioService/index.js +0 -2
- package/services/UiService/UiService.js +55 -58
- package/services/UiService/UiService.js.map +1 -1
- package/services/UiService/index.js +0 -2
- package/services/ValidateProjectConfigService/ValidateProjectConfigService.js +18 -19
- package/services/ValidateProjectConfigService/ValidateProjectConfigService.js.map +1 -1
- package/services/ValidateProjectConfigService/index.js +0 -2
- package/services/WatchedLambdaFunctionsService/WatchedLambdaFunctionsService.js +47 -54
- package/services/WatchedLambdaFunctionsService/WatchedLambdaFunctionsService.js.map +1 -1
- package/services/WatchedLambdaFunctionsService/index.js +0 -2
- package/services/WcpService/CreateUserPat.js +20 -23
- package/services/WcpService/CreateUserPat.js.map +1 -1
- package/services/WcpService/GenerateUserPat.js +15 -18
- package/services/WcpService/GenerateUserPat.js.map +1 -1
- package/services/WcpService/GetPatFromLocalStorage.js +9 -10
- package/services/WcpService/GetPatFromLocalStorage.js.map +1 -1
- package/services/WcpService/GetProjectEnvironment.js +34 -47
- package/services/WcpService/GetProjectEnvironment.js.map +1 -1
- package/services/WcpService/GetProjectLicense.js +28 -38
- package/services/WcpService/GetProjectLicense.js.map +1 -1
- package/services/WcpService/GetUser.js +43 -46
- package/services/WcpService/GetUser.js.map +1 -1
- package/services/WcpService/GetUserPat.js +20 -23
- package/services/WcpService/GetUserPat.js.map +1 -1
- package/services/WcpService/LogoutUser.js +9 -8
- package/services/WcpService/LogoutUser.js.map +1 -1
- package/services/WcpService/StorePatToLocalStorage.js +9 -10
- package/services/WcpService/StorePatToLocalStorage.js.map +1 -1
- package/services/WcpService/UnsetPatFromLocalStorage.js +9 -10
- package/services/WcpService/UnsetPatFromLocalStorage.js.map +1 -1
- package/services/WcpService/WcpGqlClient.js +6 -5
- package/services/WcpService/WcpGqlClient.js.map +1 -1
- package/services/WcpService/WcpService.js +74 -75
- package/services/WcpService/WcpService.js.map +1 -1
- package/services/WcpService/index.js +0 -2
- package/services/index.js +0 -2
- package/utils/ExtensionSrcResolver.js +51 -106
- package/utils/ExtensionSrcResolver.js.map +1 -1
- package/utils/constants.js +8 -7
- package/utils/constants.js.map +1 -1
- package/utils/createPathResolver.js +2 -5
- package/utils/createPathResolver.js.map +1 -1
- package/utils/env/configuration.js +16 -25
- package/utils/env/configuration.js.map +1 -1
- package/utils/env/index.js +0 -2
- package/utils/env/types.js +0 -3
- package/utils/env/withEnv.js +4 -7
- package/utils/env/withEnv.js.map +1 -1
- package/utils/env/withEnvVariant.js +8 -11
- package/utils/env/withEnvVariant.js.map +1 -1
- package/utils/env/withProjectName.js +4 -9
- package/utils/env/withProjectName.js.map +1 -1
- package/utils/env/withPulumiConfigPassphrase.js +4 -8
- package/utils/env/withPulumiConfigPassphrase.js.map +1 -1
- package/utils/env/withRegion.js +10 -17
- package/utils/env/withRegion.js.map +1 -1
- package/utils/getRandomColorForString.js +86 -8
- package/utils/getRandomColorForString.js.map +1 -1
- package/utils/getStackName.js +11 -18
- package/utils/getStackName.js.map +1 -1
- package/utils/getTemplatesFolderPath.js +6 -8
- package/utils/getTemplatesFolderPath.js.map +1 -1
- package/utils/index.js +0 -2
- package/utils/isValidRegionName.js +8 -13
- package/utils/isValidRegionName.js.map +1 -1
- package/utils/isValidVariantName.js +11 -10
- package/utils/isValidVariantName.js.map +1 -1
- package/utils/measureDuration.js +7 -8
- package/utils/measureDuration.js.map +1 -1
- package/utils/projectSdkContext.js +23 -39
- package/utils/projectSdkContext.js.map +1 -1
- package/utils/regions.js +75 -63
- package/utils/regions.js.map +1 -1
- package/utils/registerExtension.js +6 -15
- package/utils/registerExtension.js.map +1 -1
- package/utils/requireConfig.js +7 -12
- package/utils/requireConfig.js.map +1 -1
- package/utils/toImportSpecifier.js +3 -9
- package/utils/toImportSpecifier.js.map +1 -1
- package/abstractions/features/hooks/index.js.map +0 -1
- package/abstractions/features/index.js.map +0 -1
- package/abstractions/index.js.map +0 -1
- package/abstractions/models/IAppModel.js.map +0 -1
- package/abstractions/models/IAppPackageModel.js.map +0 -1
- package/abstractions/models/IPathModel.js.map +0 -1
- package/abstractions/models/IProjectConfigDto.js.map +0 -1
- package/abstractions/models/IProjectConfigModel.js.map +0 -1
- package/abstractions/models/IProjectModel.js.map +0 -1
- package/abstractions/models/IUrlModel.js.map +0 -1
- package/abstractions/models/IWcpEnvironmentDto.js.map +0 -1
- package/abstractions/models/IWcpEnvironmentModel.js.map +0 -1
- package/abstractions/models/IWcpUserDto.js.map +0 -1
- package/abstractions/models/IWcpUserModel.js.map +0 -1
- package/abstractions/models/IWcpUserPatDto.js.map +0 -1
- package/abstractions/models/IWcpUserPatModel.js.map +0 -1
- package/abstractions/models/PackagesBuilder/IPackagesBuilder.js.map +0 -1
- package/abstractions/models/PackagesBuilder/IRunnableBuildProcess.js.map +0 -1
- package/abstractions/models/PackagesBuilder/IRunnableBuildProcesses.js.map +0 -1
- package/abstractions/models/PackagesBuilder/index.js.map +0 -1
- package/abstractions/models/index.js.map +0 -1
- package/abstractions/services/ProjectInfoService/index.js.map +0 -1
- package/abstractions/services/index.js.map +0 -1
- package/abstractions/types.js.map +0 -1
- package/decorators/index.js.map +0 -1
- package/defineExtension/index.js.map +0 -1
- package/defineExtension/models/index.js.map +0 -1
- package/defineExtension/types.js.map +0 -1
- package/exports/infra/admin.js.map +0 -1
- package/exports/infra/api.js.map +0 -1
- package/exports/infra/core.js.map +0 -1
- package/exports/infra.js.map +0 -1
- package/extensions/hooks/index.js.map +0 -1
- package/extensions/infra/index.js.map +0 -1
- package/extensions/pulumi/index.js.map +0 -1
- package/features/BuildApp/index.js.map +0 -1
- package/features/DeployApp/index.js.map +0 -1
- package/features/DestroyApp/index.js.map +0 -1
- package/features/ExportStack/index.js.map +0 -1
- package/features/GetApp/index.js.map +0 -1
- package/features/GetAppOutput/index.js.map +0 -1
- package/features/GetAppStackOutput/index.js.map +0 -1
- package/features/GetFeatureFlags/index.js.map +0 -1
- package/features/GetLogger/index.js.map +0 -1
- package/features/GetProductionEnvironments/index.js.map +0 -1
- package/features/GetProject/index.js.map +0 -1
- package/features/GetProjectConfig/index.js.map +0 -1
- package/features/GetProjectInfo/index.js.map +0 -1
- package/features/GetPulumiResourceNamePrefix/index.js.map +0 -1
- package/features/InstallExtension/index.js.map +0 -1
- package/features/IsCi/index.js.map +0 -1
- package/features/IsTelemetryEnabled/index.js.map +0 -1
- package/features/IsWcpEnabled/index.js.map +0 -1
- package/features/IsWebinyJsRepo/index.js.map +0 -1
- package/features/RefreshApp/index.js.map +0 -1
- package/features/RunPulumiCommand/index.js.map +0 -1
- package/features/ValidateProjectConfig/index.js.map +0 -1
- package/features/Watch/index.js.map +0 -1
- package/features/hooks/AdminAfterBuild/index.js.map +0 -1
- package/features/hooks/AdminAfterDeploy/index.js.map +0 -1
- package/features/hooks/AdminBeforeBuild/index.js.map +0 -1
- package/features/hooks/AdminBeforeDeploy/index.js.map +0 -1
- package/features/hooks/AdminBeforeWatch/index.js.map +0 -1
- package/features/hooks/AfterBuild/index.js.map +0 -1
- package/features/hooks/AfterDeploy/index.js.map +0 -1
- package/features/hooks/ApiAfterBuild/index.js.map +0 -1
- package/features/hooks/ApiAfterDeploy/index.js.map +0 -1
- package/features/hooks/ApiBeforeBuild/index.js.map +0 -1
- package/features/hooks/ApiBeforeDeploy/index.js.map +0 -1
- package/features/hooks/ApiBeforeWatch/index.js.map +0 -1
- package/features/hooks/BeforeBuild/index.js.map +0 -1
- package/features/hooks/BeforeDeploy/index.js.map +0 -1
- package/features/hooks/BeforeWatch/index.js.map +0 -1
- package/features/hooks/CoreAfterBuild/index.js.map +0 -1
- package/features/hooks/CoreAfterDeploy/index.js.map +0 -1
- package/features/hooks/CoreBeforeBuild/index.js.map +0 -1
- package/features/hooks/CoreBeforeDeploy/index.js.map +0 -1
- package/features/hooks/CoreBeforeWatch/index.js.map +0 -1
- package/features/hooks/index.js.map +0 -1
- package/features/index.js.map +0 -1
- package/models/index.js.map +0 -1
- package/services/BuildAppWorkspaceService/index.js.map +0 -1
- package/services/BuildProjectWorkspaceService/index.js.map +0 -1
- package/services/GetAppPackagesService/index.js.map +0 -1
- package/services/GetAppService/index.js.map +0 -1
- package/services/GetCwdService/index.js.map +0 -1
- package/services/GetProjectConfigService/index.js.map +0 -1
- package/services/GetProjectIdService/index.js.map +0 -1
- package/services/GetProjectService/index.js.map +0 -1
- package/services/GetProjectVersionService/index.js.map +0 -1
- package/services/GetPulumiService/index.js.map +0 -1
- package/services/InitProjectSdkService/index.js.map +0 -1
- package/services/InstallExtensionService/index.js.map +0 -1
- package/services/InstallExtensionService/types.js.map +0 -1
- package/services/IsRemotePulumiBackendService/index.js.map +0 -1
- package/services/ListAppLambdaFunctionsService/index.js.map +0 -1
- package/services/ListDeployedEnvironmentsService/index.js.map +0 -1
- package/services/ListPackagesInAppWorkspaceService/index.js.map +0 -1
- package/services/ListPackagesService/index.js.map +0 -1
- package/services/LoadEnvVarsService/index.js.map +0 -1
- package/services/LocalStorageService/index.js.map +0 -1
- package/services/LoggerService/index.js.map +0 -1
- package/services/ProjectInfoService/index.js.map +0 -1
- package/services/ProjectSdkParamsService/index.js.map +0 -1
- package/services/PulumiExportService/index.js.map +0 -1
- package/services/PulumiGetConfigPassphraseService/index.js.map +0 -1
- package/services/PulumiGetSecretsProviderService/index.js.map +0 -1
- package/services/PulumiGetStackOutputService/index.js.map +0 -1
- package/services/PulumiImportService/index.js.map +0 -1
- package/services/PulumiLoginService/index.js.map +0 -1
- package/services/PulumiSelectStackService/index.js.map +0 -1
- package/services/SetProjectIdService/index.js.map +0 -1
- package/services/StdioService/index.js.map +0 -1
- package/services/UiService/index.js.map +0 -1
- package/services/ValidateProjectConfigService/index.js.map +0 -1
- package/services/WatchedLambdaFunctionsService/index.js.map +0 -1
- package/services/WcpService/index.js.map +0 -1
- package/services/index.js.map +0 -1
- package/utils/env/index.js.map +0 -1
- package/utils/env/types.js.map +0 -1
- package/utils/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"services/InitProjectSdkService/registerImplementations.js","sources":["../../../src/services/InitProjectSdkService/registerImplementations.ts"],"sourcesContent":["import { type IProjectModel } from \"~/abstractions/models/index.js\";\nimport { type IProjectConfigModel } from \"~/abstractions/models/index.js\";\nimport { Container } from \"@webiny/di\";\nimport { ExtensionSrcResolver } from \"~/utils/index.js\";\nimport { ProjectImplementation as ProjectImplementationExt } from \"~/extensions/ProjectImplementation.js\";\n\nexport const registerImplementations = async (\n container: Container,\n projectExtensions: IProjectConfigModel,\n project: IProjectModel\n) => {\n const projectImplementations = [\n ...projectExtensions.extensionsByType(ProjectImplementationExt)\n ];\n\n for (const projectImplementation of projectImplementations) {\n const projectImplementationImpl = await ExtensionSrcResolver.importFromPath(\n projectImplementation.params.src,\n project\n );\n const binding = container.register(projectImplementationImpl);\n\n // Apply singleton scope if specified (defaults to true)\n if (projectImplementation.params.singleton) {\n binding.inSingletonScope();\n }\n }\n};\n"],"names":["registerImplementations","container","projectExtensions","project","projectImplementations","ProjectImplementationExt","projectImplementation","projectImplementationImpl","ExtensionSrcResolver","binding"],"mappings":";;AAMO,MAAMA,0BAA0B,OACnCC,WACAC,mBACAC;IAEA,MAAMC,yBAAyB;WACxBF,kBAAkB,gBAAgB,CAACG;KACzC;IAED,KAAK,MAAMC,yBAAyBF,uBAAwB;QACxD,MAAMG,4BAA4B,MAAMC,qBAAqB,cAAc,CACvEF,sBAAsB,MAAM,CAAC,GAAG,EAChCH;QAEJ,MAAMM,UAAUR,UAAU,QAAQ,CAACM;QAGnC,IAAID,sBAAsB,MAAM,CAAC,SAAS,EACtCG,QAAQ,gBAAgB;IAEhC;AACJ"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import { ExtensionSrcResolver } from "../../utils/index.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
2
|
+
const registerPulumiExtensions = async (container, projectExtensions, project)=>{
|
|
3
|
+
const pulumiExtensions = [
|
|
4
|
+
...projectExtensions.extensionsByType("Core/Pulumi"),
|
|
5
|
+
...projectExtensions.extensionsByType("Api/Pulumi"),
|
|
6
|
+
...projectExtensions.extensionsByType("Admin/Pulumi")
|
|
7
|
+
];
|
|
8
|
+
for (const pulumiExtension of pulumiExtensions){
|
|
9
|
+
const { src } = pulumiExtension.params;
|
|
10
|
+
const pulumiImpl = await ExtensionSrcResolver.importFromPath(src, project);
|
|
11
|
+
container.register(pulumiImpl).inSingletonScope();
|
|
12
|
+
}
|
|
11
13
|
};
|
|
14
|
+
export { registerPulumiExtensions };
|
|
12
15
|
|
|
13
16
|
//# sourceMappingURL=registerPulumiExtensions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"services/InitProjectSdkService/registerPulumiExtensions.js","sources":["../../../src/services/InitProjectSdkService/registerPulumiExtensions.ts"],"sourcesContent":["import { type IProjectModel } from \"~/abstractions/models/index.js\";\nimport { type IProjectConfigModel } from \"~/abstractions/models/index.js\";\nimport { Container } from \"@webiny/di\";\nimport { ExtensionSrcResolver } from \"~/utils/index.js\";\n\nexport const registerPulumiExtensions = async (\n container: Container,\n projectExtensions: IProjectConfigModel,\n project: IProjectModel\n) => {\n const pulumiExtensions = [\n ...projectExtensions.extensionsByType(\"Core/Pulumi\"),\n ...projectExtensions.extensionsByType(\"Api/Pulumi\"),\n ...projectExtensions.extensionsByType(\"Admin/Pulumi\")\n ];\n\n for (const pulumiExtension of pulumiExtensions) {\n const { src } = pulumiExtension.params as { src: string };\n const pulumiImpl = await ExtensionSrcResolver.importFromPath(src, project);\n container.register(pulumiImpl).inSingletonScope();\n }\n};\n"],"names":["registerPulumiExtensions","container","projectExtensions","project","pulumiExtensions","pulumiExtension","src","pulumiImpl","ExtensionSrcResolver"],"mappings":";AAKO,MAAMA,2BAA2B,OACpCC,WACAC,mBACAC;IAEA,MAAMC,mBAAmB;WAClBF,kBAAkB,gBAAgB,CAAC;WACnCA,kBAAkB,gBAAgB,CAAC;WACnCA,kBAAkB,gBAAgB,CAAC;KACzC;IAED,KAAK,MAAMG,mBAAmBD,iBAAkB;QAC5C,MAAM,EAAEE,GAAG,EAAE,GAAGD,gBAAgB,MAAM;QACtC,MAAME,aAAa,MAAMC,qBAAqB,cAAc,CAACF,KAAKH;QAClEF,UAAU,QAAQ,CAACM,YAAY,gBAAgB;IACnD;AACJ"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import os from "os";
|
|
2
2
|
import path from "path";
|
|
3
3
|
import fs from "fs";
|
|
4
|
-
import
|
|
4
|
+
import promises from "fs/promises";
|
|
5
5
|
import { loadJsonFileSync } from "load-json-file";
|
|
6
6
|
import { createImplementation } from "@webiny/di";
|
|
7
7
|
import { GetProjectService, GetProjectVersionService, InstallExtensionService } from "../../abstractions/index.js";
|
|
@@ -13,131 +13,88 @@ const S3_BUCKET_NAME = "webiny-examples";
|
|
|
13
13
|
const S3_BUCKET_REGION = "us-east-1";
|
|
14
14
|
const FOLDER_NAME_IS_VERSION_REGEX = /^\d+\.\d+\.x$/;
|
|
15
15
|
const WEBINY_DEV_VERSION = "0.0.0";
|
|
16
|
-
const getVersionFromVersionFolders = async (versionFoldersList, currentWebinyVersion)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
versionToUse
|
|
23
|
-
} else {
|
|
24
|
-
for (const availableVersion of availableVersions) {
|
|
25
|
-
if (currentWebinyVersion >= availableVersion) {
|
|
26
|
-
versionToUse = availableVersion;
|
|
27
|
-
} else {
|
|
28
|
-
break;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return versionToUse.replace(/\.0$/, ".x");
|
|
16
|
+
const getVersionFromVersionFolders = async (versionFoldersList, currentWebinyVersion)=>{
|
|
17
|
+
const availableVersions = versionFoldersList.filter((v)=>v.match(FOLDER_NAME_IS_VERSION_REGEX)).map((v)=>v.replace(/\.x$/, ".0")).sort();
|
|
18
|
+
let versionToUse = "";
|
|
19
|
+
if (currentWebinyVersion.startsWith(WEBINY_DEV_VERSION)) versionToUse = availableVersions[availableVersions.length - 1];
|
|
20
|
+
else for (const availableVersion of availableVersions)if (currentWebinyVersion >= availableVersion) versionToUse = availableVersion;
|
|
21
|
+
else break;
|
|
22
|
+
return versionToUse.replace(/\.0$/, ".x");
|
|
33
23
|
};
|
|
34
24
|
class DefaultInstallExtensionService {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
async execute(source) {
|
|
40
|
-
const currentWebinyVersion = this.getProjectVersion.execute();
|
|
41
|
-
const project = this.getProject.execute();
|
|
42
|
-
const projectRoot = project.paths.rootFolder.toString();
|
|
43
|
-
const randomId = String(Date.now());
|
|
44
|
-
const downloadFolderPath = path.join(os.tmpdir(), `wby-ext-${randomId}`);
|
|
45
|
-
|
|
46
|
-
// Check if source is a local path
|
|
47
|
-
const isLocalPath = source.startsWith("../") || source.startsWith("./") || source.startsWith("/");
|
|
48
|
-
if (isLocalPath) {
|
|
49
|
-
// Resolve the local path relative to the project root
|
|
50
|
-
const resolvedPath = path.isAbsolute(source) ? source : path.resolve(projectRoot, source);
|
|
51
|
-
|
|
52
|
-
// Copy the local directory to the temporary download folder
|
|
53
|
-
await fsAsync.cp(resolvedPath, downloadFolderPath, {
|
|
54
|
-
recursive: true
|
|
55
|
-
});
|
|
56
|
-
} else {
|
|
57
|
-
// Download from S3
|
|
58
|
-
await downloadFolderFromS3({
|
|
59
|
-
bucketName: S3_BUCKET_NAME,
|
|
60
|
-
bucketRegion: S3_BUCKET_REGION,
|
|
61
|
-
bucketFolderKey: source,
|
|
62
|
-
downloadFolderPath
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
let extensionsFolderToCopyPath = path.join(downloadFolderPath, "extensions");
|
|
66
|
-
let extensionJsonPath = path.join(downloadFolderPath, "extension.json");
|
|
67
|
-
|
|
68
|
-
// If we have `extensions` folder in the root of the downloaded extension,
|
|
69
|
-
// it means the extension is not versioned, and we can just copy it.
|
|
70
|
-
const extensionsFolderExistsInRoot = fs.existsSync(extensionsFolderToCopyPath);
|
|
71
|
-
const versionedExtension = !extensionsFolderExistsInRoot;
|
|
72
|
-
if (versionedExtension) {
|
|
73
|
-
// If we have `x.x.x` folders in the root of the downloaded
|
|
74
|
-
// extension, we need to find the right version to use.
|
|
75
|
-
|
|
76
|
-
// This can be `5.40.x`, `6.0.x`, etc.
|
|
77
|
-
const versionFolders = await fsAsync.readdir(downloadFolderPath);
|
|
78
|
-
const versionToUse = await getVersionFromVersionFolders(versionFolders, currentWebinyVersion);
|
|
79
|
-
extensionsFolderToCopyPath = path.join(downloadFolderPath, versionToUse, "extensions");
|
|
80
|
-
const subExtensionJsonPath = path.join(downloadFolderPath, versionToUse, "extension.json");
|
|
81
|
-
if (fs.existsSync(subExtensionJsonPath)) {
|
|
82
|
-
extensionJsonPath = subExtensionJsonPath;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// Read and parse extension.json.
|
|
87
|
-
const extensionJsonExists = fs.existsSync(extensionJsonPath);
|
|
88
|
-
const extensionJson = extensionJsonExists ? loadJsonFileSync(extensionJsonPath) : {
|
|
89
|
-
name: "unknown",
|
|
90
|
-
type: "admin"
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
// Ensure the extensions root folder exists.
|
|
94
|
-
const targetExtensionsFolder = path.join(projectRoot, EXTENSIONS_ROOT_FOLDER);
|
|
95
|
-
if (!fs.existsSync(targetExtensionsFolder)) {
|
|
96
|
-
fs.mkdirSync(targetExtensionsFolder, {
|
|
97
|
-
recursive: true
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// Copy the extensions folder contents.
|
|
102
|
-
await fsAsync.cp(extensionsFolderToCopyPath, targetExtensionsFolder, {
|
|
103
|
-
recursive: true
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
// Get the list of extensions that were copied.
|
|
107
|
-
const extensionsFolderNames = await fsAsync.readdir(extensionsFolderToCopyPath);
|
|
108
|
-
const extensionPaths = extensionsFolderNames.map(name => path.join(EXTENSIONS_ROOT_FOLDER, name));
|
|
109
|
-
|
|
110
|
-
// Merge package.json if provided.
|
|
111
|
-
if (extensionJson.packageJson && Object.keys(extensionJson.packageJson).length > 0) {
|
|
112
|
-
await mergePackageJson({
|
|
113
|
-
projectRoot,
|
|
114
|
-
extensionPackageJson: extensionJson.packageJson
|
|
115
|
-
});
|
|
25
|
+
constructor(getProjectVersion, getProject){
|
|
26
|
+
this.getProjectVersion = getProjectVersion;
|
|
27
|
+
this.getProject = getProject;
|
|
116
28
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
29
|
+
async execute(source) {
|
|
30
|
+
const currentWebinyVersion = this.getProjectVersion.execute();
|
|
31
|
+
const project = this.getProject.execute();
|
|
32
|
+
const projectRoot = project.paths.rootFolder.toString();
|
|
33
|
+
const randomId = String(Date.now());
|
|
34
|
+
const downloadFolderPath = path.join(os.tmpdir(), `wby-ext-${randomId}`);
|
|
35
|
+
const isLocalPath = source.startsWith("../") || source.startsWith("./") || source.startsWith("/");
|
|
36
|
+
if (isLocalPath) {
|
|
37
|
+
const resolvedPath = path.isAbsolute(source) ? source : path.resolve(projectRoot, source);
|
|
38
|
+
await promises.cp(resolvedPath, downloadFolderPath, {
|
|
39
|
+
recursive: true
|
|
40
|
+
});
|
|
41
|
+
} else await downloadFolderFromS3({
|
|
42
|
+
bucketName: S3_BUCKET_NAME,
|
|
43
|
+
bucketRegion: S3_BUCKET_REGION,
|
|
44
|
+
bucketFolderKey: source,
|
|
45
|
+
downloadFolderPath
|
|
46
|
+
});
|
|
47
|
+
let extensionsFolderToCopyPath = path.join(downloadFolderPath, "extensions");
|
|
48
|
+
let extensionJsonPath = path.join(downloadFolderPath, "extension.json");
|
|
49
|
+
const extensionsFolderExistsInRoot = fs.existsSync(extensionsFolderToCopyPath);
|
|
50
|
+
const versionedExtension = !extensionsFolderExistsInRoot;
|
|
51
|
+
if (versionedExtension) {
|
|
52
|
+
const versionFolders = await promises.readdir(downloadFolderPath);
|
|
53
|
+
const versionToUse = await getVersionFromVersionFolders(versionFolders, currentWebinyVersion);
|
|
54
|
+
extensionsFolderToCopyPath = path.join(downloadFolderPath, versionToUse, "extensions");
|
|
55
|
+
const subExtensionJsonPath = path.join(downloadFolderPath, versionToUse, "extension.json");
|
|
56
|
+
if (fs.existsSync(subExtensionJsonPath)) extensionJsonPath = subExtensionJsonPath;
|
|
57
|
+
}
|
|
58
|
+
const extensionJsonExists = fs.existsSync(extensionJsonPath);
|
|
59
|
+
const extensionJson = extensionJsonExists ? loadJsonFileSync(extensionJsonPath) : {
|
|
60
|
+
name: "unknown",
|
|
61
|
+
type: "admin"
|
|
62
|
+
};
|
|
63
|
+
const targetExtensionsFolder = path.join(projectRoot, EXTENSIONS_ROOT_FOLDER);
|
|
64
|
+
if (!fs.existsSync(targetExtensionsFolder)) fs.mkdirSync(targetExtensionsFolder, {
|
|
65
|
+
recursive: true
|
|
66
|
+
});
|
|
67
|
+
await promises.cp(extensionsFolderToCopyPath, targetExtensionsFolder, {
|
|
68
|
+
recursive: true
|
|
69
|
+
});
|
|
70
|
+
const extensionsFolderNames = await promises.readdir(extensionsFolderToCopyPath);
|
|
71
|
+
const extensionPaths = extensionsFolderNames.map((name)=>path.join(EXTENSIONS_ROOT_FOLDER, name));
|
|
72
|
+
if (extensionJson.packageJson && Object.keys(extensionJson.packageJson).length > 0) await mergePackageJson({
|
|
73
|
+
projectRoot,
|
|
74
|
+
extensionPackageJson: extensionJson.packageJson
|
|
75
|
+
});
|
|
76
|
+
if (extensionJson.webinyConfigTsx) await updateWebinyConfig({
|
|
77
|
+
projectRoot,
|
|
78
|
+
webinyConfigTsx: extensionJson.webinyConfigTsx
|
|
79
|
+
});
|
|
80
|
+
const nextSteps = extensionJson.nextSteps?.messages || [];
|
|
81
|
+
const additionalNotes = extensionJson.additionalNotes?.messages || [];
|
|
82
|
+
return {
|
|
83
|
+
extensionName: extensionJson.name,
|
|
84
|
+
extensionPaths,
|
|
85
|
+
nextSteps,
|
|
86
|
+
additionalNotes
|
|
87
|
+
};
|
|
124
88
|
}
|
|
125
|
-
|
|
126
|
-
// Extract next steps and additional notes.
|
|
127
|
-
const nextSteps = extensionJson.nextSteps?.messages || [];
|
|
128
|
-
const additionalNotes = extensionJson.additionalNotes?.messages || [];
|
|
129
|
-
return {
|
|
130
|
-
extensionName: extensionJson.name,
|
|
131
|
-
extensionPaths,
|
|
132
|
-
nextSteps,
|
|
133
|
-
additionalNotes
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
89
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
90
|
+
const installExtensionService = createImplementation({
|
|
91
|
+
abstraction: InstallExtensionService,
|
|
92
|
+
implementation: DefaultInstallExtensionService,
|
|
93
|
+
dependencies: [
|
|
94
|
+
GetProjectVersionService,
|
|
95
|
+
GetProjectService
|
|
96
|
+
]
|
|
141
97
|
});
|
|
98
|
+
export { installExtensionService };
|
|
142
99
|
|
|
143
100
|
//# sourceMappingURL=InstallExtensionService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["os","path","fs","fsAsync","loadJsonFileSync","createImplementation","GetProjectService","GetProjectVersionService","InstallExtensionService","downloadFolderFromS3","mergePackageJson","updateWebinyConfig","EXTENSIONS_ROOT_FOLDER","S3_BUCKET_NAME","S3_BUCKET_REGION","FOLDER_NAME_IS_VERSION_REGEX","WEBINY_DEV_VERSION","getVersionFromVersionFolders","versionFoldersList","currentWebinyVersion","availableVersions","filter","v","match","map","replace","sort","versionToUse","startsWith","length","availableVersion","DefaultInstallExtensionService","constructor","getProjectVersion","getProject","execute","source","project","projectRoot","paths","rootFolder","toString","randomId","String","Date","now","downloadFolderPath","join","tmpdir","isLocalPath","resolvedPath","isAbsolute","resolve","cp","recursive","bucketName","bucketRegion","bucketFolderKey","extensionsFolderToCopyPath","extensionJsonPath","extensionsFolderExistsInRoot","existsSync","versionedExtension","versionFolders","readdir","subExtensionJsonPath","extensionJsonExists","extensionJson","name","type","targetExtensionsFolder","mkdirSync","extensionsFolderNames","extensionPaths","packageJson","Object","keys","extensionPackageJson","webinyConfigTsx","nextSteps","messages","additionalNotes","extensionName","installExtensionService","abstraction","implementation","dependencies"],"sources":["InstallExtensionService.ts"],"sourcesContent":["import os from \"os\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport fsAsync from \"fs/promises\";\nimport { loadJsonFileSync } from \"load-json-file\";\nimport { createImplementation } from \"@webiny/di\";\nimport {\n GetProjectService,\n GetProjectVersionService,\n InstallExtensionService\n} from \"~/abstractions/index.js\";\nimport { downloadFolderFromS3 } from \"./downloadFolderFromS3.js\";\nimport { mergePackageJson } from \"./mergePackageJson.js\";\nimport { updateWebinyConfig } from \"./updateWebinyConfig.js\";\nimport type { ExtensionJson } from \"./types.js\";\n\nconst EXTENSIONS_ROOT_FOLDER = \"extensions\";\nconst S3_BUCKET_NAME = \"webiny-examples\";\nconst S3_BUCKET_REGION = \"us-east-1\";\nconst FOLDER_NAME_IS_VERSION_REGEX = /^\\d+\\.\\d+\\.x$/;\nconst WEBINY_DEV_VERSION = \"0.0.0\";\n\nconst getVersionFromVersionFolders = async (\n versionFoldersList: string[],\n currentWebinyVersion: string\n) => {\n const availableVersions = versionFoldersList\n .filter(v => v.match(FOLDER_NAME_IS_VERSION_REGEX))\n .map(v => v.replace(/\\.x$/, \".0\"))\n .sort();\n\n let versionToUse = \"\";\n\n // When developing Webiny, we want to use the latest version.\n if (currentWebinyVersion.startsWith(WEBINY_DEV_VERSION)) {\n versionToUse = availableVersions[availableVersions.length - 1];\n } else {\n for (const availableVersion of availableVersions) {\n if (currentWebinyVersion >= availableVersion) {\n versionToUse = availableVersion;\n } else {\n break;\n }\n }\n }\n\n return versionToUse.replace(/\\.0$/, \".x\");\n};\n\nclass DefaultInstallExtensionService implements InstallExtensionService.Interface {\n constructor(\n private getProjectVersion: GetProjectVersionService.Interface,\n private getProject: GetProjectService.Interface\n ) {}\n\n async execute(source: string): Promise<InstallExtensionService.Result> {\n const currentWebinyVersion = this.getProjectVersion.execute();\n const project = this.getProject.execute();\n const projectRoot = project.paths.rootFolder.toString();\n\n const randomId = String(Date.now());\n const downloadFolderPath = path.join(os.tmpdir(), `wby-ext-${randomId}`);\n\n // Check if source is a local path\n const isLocalPath =\n source.startsWith(\"../\") || source.startsWith(\"./\") || source.startsWith(\"/\");\n\n if (isLocalPath) {\n // Resolve the local path relative to the project root\n const resolvedPath = path.isAbsolute(source)\n ? source\n : path.resolve(projectRoot, source);\n\n // Copy the local directory to the temporary download folder\n await fsAsync.cp(resolvedPath, downloadFolderPath, {\n recursive: true\n });\n } else {\n // Download from S3\n await downloadFolderFromS3({\n bucketName: S3_BUCKET_NAME,\n bucketRegion: S3_BUCKET_REGION,\n bucketFolderKey: source,\n downloadFolderPath\n });\n }\n\n let extensionsFolderToCopyPath = path.join(downloadFolderPath, \"extensions\");\n let extensionJsonPath = path.join(downloadFolderPath, \"extension.json\");\n\n // If we have `extensions` folder in the root of the downloaded extension,\n // it means the extension is not versioned, and we can just copy it.\n const extensionsFolderExistsInRoot = fs.existsSync(extensionsFolderToCopyPath);\n const versionedExtension = !extensionsFolderExistsInRoot;\n\n if (versionedExtension) {\n // If we have `x.x.x` folders in the root of the downloaded\n // extension, we need to find the right version to use.\n\n // This can be `5.40.x`, `6.0.x`, etc.\n const versionFolders = await fsAsync.readdir(downloadFolderPath);\n\n const versionToUse = await getVersionFromVersionFolders(\n versionFolders,\n currentWebinyVersion\n );\n\n extensionsFolderToCopyPath = path.join(downloadFolderPath, versionToUse, \"extensions\");\n const subExtensionJsonPath = path.join(\n downloadFolderPath,\n versionToUse,\n \"extension.json\"\n );\n if (fs.existsSync(subExtensionJsonPath)) {\n extensionJsonPath = subExtensionJsonPath;\n }\n }\n\n // Read and parse extension.json.\n const extensionJsonExists = fs.existsSync(extensionJsonPath);\n const extensionJson: ExtensionJson = extensionJsonExists\n ? loadJsonFileSync(extensionJsonPath)\n : { name: \"unknown\", type: \"admin\" };\n\n // Ensure the extensions root folder exists.\n const targetExtensionsFolder = path.join(projectRoot, EXTENSIONS_ROOT_FOLDER);\n if (!fs.existsSync(targetExtensionsFolder)) {\n fs.mkdirSync(targetExtensionsFolder, { recursive: true });\n }\n\n // Copy the extensions folder contents.\n await fsAsync.cp(extensionsFolderToCopyPath, targetExtensionsFolder, {\n recursive: true\n });\n\n // Get the list of extensions that were copied.\n const extensionsFolderNames = await fsAsync.readdir(extensionsFolderToCopyPath);\n const extensionPaths = extensionsFolderNames.map(name =>\n path.join(EXTENSIONS_ROOT_FOLDER, name)\n );\n\n // Merge package.json if provided.\n if (extensionJson.packageJson && Object.keys(extensionJson.packageJson).length > 0) {\n await mergePackageJson({\n projectRoot,\n extensionPackageJson: extensionJson.packageJson\n });\n }\n\n // Update webiny.config.tsx if provided.\n if (extensionJson.webinyConfigTsx) {\n await updateWebinyConfig({\n projectRoot,\n webinyConfigTsx: extensionJson.webinyConfigTsx\n });\n }\n\n // Extract next steps and additional notes.\n const nextSteps = extensionJson.nextSteps?.messages || [];\n const additionalNotes = extensionJson.additionalNotes?.messages || [];\n\n return {\n extensionName: extensionJson.name,\n extensionPaths,\n nextSteps,\n additionalNotes\n };\n }\n}\n\nexport const installExtensionService = createImplementation({\n abstraction: InstallExtensionService,\n implementation: DefaultInstallExtensionService,\n dependencies: [GetProjectVersionService, GetProjectService]\n});\n"],"mappings":"AAAA,OAAOA,EAAE,MAAM,IAAI;AACnB,OAAOC,IAAI,MAAM,MAAM;AACvB,OAAOC,EAAE,MAAM,IAAI;AACnB,OAAOC,OAAO,MAAM,aAAa;AACjC,SAASC,gBAAgB,QAAQ,gBAAgB;AACjD,SAASC,oBAAoB,QAAQ,YAAY;AACjD,SACIC,iBAAiB,EACjBC,wBAAwB,EACxBC,uBAAuB;AAE3B,SAASC,oBAAoB;AAC7B,SAASC,gBAAgB;AACzB,SAASC,kBAAkB;AAG3B,MAAMC,sBAAsB,GAAG,YAAY;AAC3C,MAAMC,cAAc,GAAG,iBAAiB;AACxC,MAAMC,gBAAgB,GAAG,WAAW;AACpC,MAAMC,4BAA4B,GAAG,eAAe;AACpD,MAAMC,kBAAkB,GAAG,OAAO;AAElC,MAAMC,4BAA4B,GAAG,MAAAA,CACjCC,kBAA4B,EAC5BC,oBAA4B,KAC3B;EACD,MAAMC,iBAAiB,GAAGF,kBAAkB,CACvCG,MAAM,CAACC,CAAC,IAAIA,CAAC,CAACC,KAAK,CAACR,4BAA4B,CAAC,CAAC,CAClDS,GAAG,CAACF,CAAC,IAAIA,CAAC,CAACG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CACjCC,IAAI,CAAC,CAAC;EAEX,IAAIC,YAAY,GAAG,EAAE;;EAErB;EACA,IAAIR,oBAAoB,CAACS,UAAU,CAACZ,kBAAkB,CAAC,EAAE;IACrDW,YAAY,GAAGP,iBAAiB,CAACA,iBAAiB,CAACS,MAAM,GAAG,CAAC,CAAC;EAClE,CAAC,MAAM;IACH,KAAK,MAAMC,gBAAgB,IAAIV,iBAAiB,EAAE;MAC9C,IAAID,oBAAoB,IAAIW,gBAAgB,EAAE;QAC1CH,YAAY,GAAGG,gBAAgB;MACnC,CAAC,MAAM;QACH;MACJ;IACJ;EACJ;EAEA,OAAOH,YAAY,CAACF,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;AAC7C,CAAC;AAED,MAAMM,8BAA8B,CAA8C;EAC9EC,WAAWA,CACCC,iBAAqD,EACrDC,UAAuC,EACjD;IAAA,KAFUD,iBAAqD,GAArDA,iBAAqD;IAAA,KACrDC,UAAuC,GAAvCA,UAAuC;EAChD;EAEH,MAAMC,OAAOA,CAACC,MAAc,EAA2C;IACnE,MAAMjB,oBAAoB,GAAG,IAAI,CAACc,iBAAiB,CAACE,OAAO,CAAC,CAAC;IAC7D,MAAME,OAAO,GAAG,IAAI,CAACH,UAAU,CAACC,OAAO,CAAC,CAAC;IACzC,MAAMG,WAAW,GAAGD,OAAO,CAACE,KAAK,CAACC,UAAU,CAACC,QAAQ,CAAC,CAAC;IAEvD,MAAMC,QAAQ,GAAGC,MAAM,CAACC,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC;IACnC,MAAMC,kBAAkB,GAAG7C,IAAI,CAAC8C,IAAI,CAAC/C,EAAE,CAACgD,MAAM,CAAC,CAAC,EAAE,WAAWN,QAAQ,EAAE,CAAC;;IAExE;IACA,MAAMO,WAAW,GACbb,MAAM,CAACR,UAAU,CAAC,KAAK,CAAC,IAAIQ,MAAM,CAACR,UAAU,CAAC,IAAI,CAAC,IAAIQ,MAAM,CAACR,UAAU,CAAC,GAAG,CAAC;IAEjF,IAAIqB,WAAW,EAAE;MACb;MACA,MAAMC,YAAY,GAAGjD,IAAI,CAACkD,UAAU,CAACf,MAAM,CAAC,GACtCA,MAAM,GACNnC,IAAI,CAACmD,OAAO,CAACd,WAAW,EAAEF,MAAM,CAAC;;MAEvC;MACA,MAAMjC,OAAO,CAACkD,EAAE,CAACH,YAAY,EAAEJ,kBAAkB,EAAE;QAC/CQ,SAAS,EAAE;MACf,CAAC,CAAC;IACN,CAAC,MAAM;MACH;MACA,MAAM7C,oBAAoB,CAAC;QACvB8C,UAAU,EAAE1C,cAAc;QAC1B2C,YAAY,EAAE1C,gBAAgB;QAC9B2C,eAAe,EAAErB,MAAM;QACvBU;MACJ,CAAC,CAAC;IACN;IAEA,IAAIY,0BAA0B,GAAGzD,IAAI,CAAC8C,IAAI,CAACD,kBAAkB,EAAE,YAAY,CAAC;IAC5E,IAAIa,iBAAiB,GAAG1D,IAAI,CAAC8C,IAAI,CAACD,kBAAkB,EAAE,gBAAgB,CAAC;;IAEvE;IACA;IACA,MAAMc,4BAA4B,GAAG1D,EAAE,CAAC2D,UAAU,CAACH,0BAA0B,CAAC;IAC9E,MAAMI,kBAAkB,GAAG,CAACF,4BAA4B;IAExD,IAAIE,kBAAkB,EAAE;MACpB;MACA;;MAEA;MACA,MAAMC,cAAc,GAAG,MAAM5D,OAAO,CAAC6D,OAAO,CAAClB,kBAAkB,CAAC;MAEhE,MAAMnB,YAAY,GAAG,MAAMV,4BAA4B,CACnD8C,cAAc,EACd5C,oBACJ,CAAC;MAEDuC,0BAA0B,GAAGzD,IAAI,CAAC8C,IAAI,CAACD,kBAAkB,EAAEnB,YAAY,EAAE,YAAY,CAAC;MACtF,MAAMsC,oBAAoB,GAAGhE,IAAI,CAAC8C,IAAI,CAClCD,kBAAkB,EAClBnB,YAAY,EACZ,gBACJ,CAAC;MACD,IAAIzB,EAAE,CAAC2D,UAAU,CAACI,oBAAoB,CAAC,EAAE;QACrCN,iBAAiB,GAAGM,oBAAoB;MAC5C;IACJ;;IAEA;IACA,MAAMC,mBAAmB,GAAGhE,EAAE,CAAC2D,UAAU,CAACF,iBAAiB,CAAC;IAC5D,MAAMQ,aAA4B,GAAGD,mBAAmB,GAClD9D,gBAAgB,CAACuD,iBAAiB,CAAC,GACnC;MAAES,IAAI,EAAE,SAAS;MAAEC,IAAI,EAAE;IAAQ,CAAC;;IAExC;IACA,MAAMC,sBAAsB,GAAGrE,IAAI,CAAC8C,IAAI,CAACT,WAAW,EAAE1B,sBAAsB,CAAC;IAC7E,IAAI,CAACV,EAAE,CAAC2D,UAAU,CAACS,sBAAsB,CAAC,EAAE;MACxCpE,EAAE,CAACqE,SAAS,CAACD,sBAAsB,EAAE;QAAEhB,SAAS,EAAE;MAAK,CAAC,CAAC;IAC7D;;IAEA;IACA,MAAMnD,OAAO,CAACkD,EAAE,CAACK,0BAA0B,EAAEY,sBAAsB,EAAE;MACjEhB,SAAS,EAAE;IACf,CAAC,CAAC;;IAEF;IACA,MAAMkB,qBAAqB,GAAG,MAAMrE,OAAO,CAAC6D,OAAO,CAACN,0BAA0B,CAAC;IAC/E,MAAMe,cAAc,GAAGD,qBAAqB,CAAChD,GAAG,CAAC4C,IAAI,IACjDnE,IAAI,CAAC8C,IAAI,CAACnC,sBAAsB,EAAEwD,IAAI,CAC1C,CAAC;;IAED;IACA,IAAID,aAAa,CAACO,WAAW,IAAIC,MAAM,CAACC,IAAI,CAACT,aAAa,CAACO,WAAW,CAAC,CAAC7C,MAAM,GAAG,CAAC,EAAE;MAChF,MAAMnB,gBAAgB,CAAC;QACnB4B,WAAW;QACXuC,oBAAoB,EAAEV,aAAa,CAACO;MACxC,CAAC,CAAC;IACN;;IAEA;IACA,IAAIP,aAAa,CAACW,eAAe,EAAE;MAC/B,MAAMnE,kBAAkB,CAAC;QACrB2B,WAAW;QACXwC,eAAe,EAAEX,aAAa,CAACW;MACnC,CAAC,CAAC;IACN;;IAEA;IACA,MAAMC,SAAS,GAAGZ,aAAa,CAACY,SAAS,EAAEC,QAAQ,IAAI,EAAE;IACzD,MAAMC,eAAe,GAAGd,aAAa,CAACc,eAAe,EAAED,QAAQ,IAAI,EAAE;IAErE,OAAO;MACHE,aAAa,EAAEf,aAAa,CAACC,IAAI;MACjCK,cAAc;MACdM,SAAS;MACTE;IACJ,CAAC;EACL;AACJ;AAEA,OAAO,MAAME,uBAAuB,GAAG9E,oBAAoB,CAAC;EACxD+E,WAAW,EAAE5E,uBAAuB;EACpC6E,cAAc,EAAEtD,8BAA8B;EAC9CuD,YAAY,EAAE,CAAC/E,wBAAwB,EAAED,iBAAiB;AAC9D,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"services/InstallExtensionService/InstallExtensionService.js","sources":["../../../src/services/InstallExtensionService/InstallExtensionService.ts"],"sourcesContent":["import os from \"os\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport fsAsync from \"fs/promises\";\nimport { loadJsonFileSync } from \"load-json-file\";\nimport { createImplementation } from \"@webiny/di\";\nimport {\n GetProjectService,\n GetProjectVersionService,\n InstallExtensionService\n} from \"~/abstractions/index.js\";\nimport { downloadFolderFromS3 } from \"./downloadFolderFromS3.js\";\nimport { mergePackageJson } from \"./mergePackageJson.js\";\nimport { updateWebinyConfig } from \"./updateWebinyConfig.js\";\nimport type { ExtensionJson } from \"./types.js\";\n\nconst EXTENSIONS_ROOT_FOLDER = \"extensions\";\nconst S3_BUCKET_NAME = \"webiny-examples\";\nconst S3_BUCKET_REGION = \"us-east-1\";\nconst FOLDER_NAME_IS_VERSION_REGEX = /^\\d+\\.\\d+\\.x$/;\nconst WEBINY_DEV_VERSION = \"0.0.0\";\n\nconst getVersionFromVersionFolders = async (\n versionFoldersList: string[],\n currentWebinyVersion: string\n) => {\n const availableVersions = versionFoldersList\n .filter(v => v.match(FOLDER_NAME_IS_VERSION_REGEX))\n .map(v => v.replace(/\\.x$/, \".0\"))\n .sort();\n\n let versionToUse = \"\";\n\n // When developing Webiny, we want to use the latest version.\n if (currentWebinyVersion.startsWith(WEBINY_DEV_VERSION)) {\n versionToUse = availableVersions[availableVersions.length - 1];\n } else {\n for (const availableVersion of availableVersions) {\n if (currentWebinyVersion >= availableVersion) {\n versionToUse = availableVersion;\n } else {\n break;\n }\n }\n }\n\n return versionToUse.replace(/\\.0$/, \".x\");\n};\n\nclass DefaultInstallExtensionService implements InstallExtensionService.Interface {\n constructor(\n private getProjectVersion: GetProjectVersionService.Interface,\n private getProject: GetProjectService.Interface\n ) {}\n\n async execute(source: string): Promise<InstallExtensionService.Result> {\n const currentWebinyVersion = this.getProjectVersion.execute();\n const project = this.getProject.execute();\n const projectRoot = project.paths.rootFolder.toString();\n\n const randomId = String(Date.now());\n const downloadFolderPath = path.join(os.tmpdir(), `wby-ext-${randomId}`);\n\n // Check if source is a local path\n const isLocalPath =\n source.startsWith(\"../\") || source.startsWith(\"./\") || source.startsWith(\"/\");\n\n if (isLocalPath) {\n // Resolve the local path relative to the project root\n const resolvedPath = path.isAbsolute(source)\n ? source\n : path.resolve(projectRoot, source);\n\n // Copy the local directory to the temporary download folder\n await fsAsync.cp(resolvedPath, downloadFolderPath, {\n recursive: true\n });\n } else {\n // Download from S3\n await downloadFolderFromS3({\n bucketName: S3_BUCKET_NAME,\n bucketRegion: S3_BUCKET_REGION,\n bucketFolderKey: source,\n downloadFolderPath\n });\n }\n\n let extensionsFolderToCopyPath = path.join(downloadFolderPath, \"extensions\");\n let extensionJsonPath = path.join(downloadFolderPath, \"extension.json\");\n\n // If we have `extensions` folder in the root of the downloaded extension,\n // it means the extension is not versioned, and we can just copy it.\n const extensionsFolderExistsInRoot = fs.existsSync(extensionsFolderToCopyPath);\n const versionedExtension = !extensionsFolderExistsInRoot;\n\n if (versionedExtension) {\n // If we have `x.x.x` folders in the root of the downloaded\n // extension, we need to find the right version to use.\n\n // This can be `5.40.x`, `6.0.x`, etc.\n const versionFolders = await fsAsync.readdir(downloadFolderPath);\n\n const versionToUse = await getVersionFromVersionFolders(\n versionFolders,\n currentWebinyVersion\n );\n\n extensionsFolderToCopyPath = path.join(downloadFolderPath, versionToUse, \"extensions\");\n const subExtensionJsonPath = path.join(\n downloadFolderPath,\n versionToUse,\n \"extension.json\"\n );\n if (fs.existsSync(subExtensionJsonPath)) {\n extensionJsonPath = subExtensionJsonPath;\n }\n }\n\n // Read and parse extension.json.\n const extensionJsonExists = fs.existsSync(extensionJsonPath);\n const extensionJson: ExtensionJson = extensionJsonExists\n ? loadJsonFileSync(extensionJsonPath)\n : { name: \"unknown\", type: \"admin\" };\n\n // Ensure the extensions root folder exists.\n const targetExtensionsFolder = path.join(projectRoot, EXTENSIONS_ROOT_FOLDER);\n if (!fs.existsSync(targetExtensionsFolder)) {\n fs.mkdirSync(targetExtensionsFolder, { recursive: true });\n }\n\n // Copy the extensions folder contents.\n await fsAsync.cp(extensionsFolderToCopyPath, targetExtensionsFolder, {\n recursive: true\n });\n\n // Get the list of extensions that were copied.\n const extensionsFolderNames = await fsAsync.readdir(extensionsFolderToCopyPath);\n const extensionPaths = extensionsFolderNames.map(name =>\n path.join(EXTENSIONS_ROOT_FOLDER, name)\n );\n\n // Merge package.json if provided.\n if (extensionJson.packageJson && Object.keys(extensionJson.packageJson).length > 0) {\n await mergePackageJson({\n projectRoot,\n extensionPackageJson: extensionJson.packageJson\n });\n }\n\n // Update webiny.config.tsx if provided.\n if (extensionJson.webinyConfigTsx) {\n await updateWebinyConfig({\n projectRoot,\n webinyConfigTsx: extensionJson.webinyConfigTsx\n });\n }\n\n // Extract next steps and additional notes.\n const nextSteps = extensionJson.nextSteps?.messages || [];\n const additionalNotes = extensionJson.additionalNotes?.messages || [];\n\n return {\n extensionName: extensionJson.name,\n extensionPaths,\n nextSteps,\n additionalNotes\n };\n }\n}\n\nexport const installExtensionService = createImplementation({\n abstraction: InstallExtensionService,\n implementation: DefaultInstallExtensionService,\n dependencies: [GetProjectVersionService, GetProjectService]\n});\n"],"names":["EXTENSIONS_ROOT_FOLDER","S3_BUCKET_NAME","S3_BUCKET_REGION","FOLDER_NAME_IS_VERSION_REGEX","WEBINY_DEV_VERSION","getVersionFromVersionFolders","versionFoldersList","currentWebinyVersion","availableVersions","v","versionToUse","availableVersion","DefaultInstallExtensionService","getProjectVersion","getProject","source","project","projectRoot","randomId","String","Date","downloadFolderPath","path","os","isLocalPath","resolvedPath","fsAsync","downloadFolderFromS3","extensionsFolderToCopyPath","extensionJsonPath","extensionsFolderExistsInRoot","fs","versionedExtension","versionFolders","subExtensionJsonPath","extensionJsonExists","extensionJson","loadJsonFileSync","targetExtensionsFolder","extensionsFolderNames","extensionPaths","name","Object","mergePackageJson","updateWebinyConfig","nextSteps","additionalNotes","installExtensionService","createImplementation","InstallExtensionService","GetProjectVersionService","GetProjectService"],"mappings":"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"}
|
|
@@ -1,72 +1,53 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
2
|
import path from "path";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
this.name = "NoObjectsFoundError";
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
export const downloadFolderFromS3 = async params => {
|
|
11
|
-
const {
|
|
12
|
-
bucketName,
|
|
13
|
-
bucketRegion,
|
|
14
|
-
bucketFolderKey,
|
|
15
|
-
downloadFolderPath
|
|
16
|
-
} = params;
|
|
17
|
-
const s3FolderKey = `v6/${bucketFolderKey}`;
|
|
18
|
-
const baseUrl = `https://${bucketName}.s3.${bucketRegion}.amazonaws.com`;
|
|
19
|
-
const listObjects = async () => {
|
|
20
|
-
const keys = [];
|
|
21
|
-
let continuationToken;
|
|
22
|
-
do {
|
|
23
|
-
let url = `${baseUrl}/?list-type=2&prefix=${encodeURIComponent(s3FolderKey)}`;
|
|
24
|
-
if (continuationToken) {
|
|
25
|
-
url += `&continuation-token=${encodeURIComponent(continuationToken)}`;
|
|
26
|
-
}
|
|
27
|
-
const response = await fetch(url);
|
|
28
|
-
if (!response.ok) {
|
|
29
|
-
throw new Error(`Failed to list objects: ${response.status} ${response.statusText}`);
|
|
30
|
-
}
|
|
31
|
-
const xml = await response.text();
|
|
32
|
-
for (const match of xml.matchAll(/<Key>([^<]+)<\/Key>/g)) {
|
|
33
|
-
keys.push(match[1]);
|
|
34
|
-
}
|
|
35
|
-
const isTruncated = xml.includes("<IsTruncated>true</IsTruncated>");
|
|
36
|
-
continuationToken = isTruncated ? xml.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/)?.[1] : undefined;
|
|
37
|
-
} while (continuationToken);
|
|
38
|
-
return keys;
|
|
39
|
-
};
|
|
40
|
-
const downloadFile = async (key, localPath) => {
|
|
41
|
-
const response = await fetch(`${baseUrl}/${key}`);
|
|
42
|
-
if (!response.ok) {
|
|
43
|
-
throw new Error(`Failed to download ${key}: ${response.status} ${response.statusText}`);
|
|
3
|
+
class NoObjectsFoundError extends Error {
|
|
4
|
+
constructor(message){
|
|
5
|
+
super(message), this.code = "NO_OBJECTS_FOUND";
|
|
6
|
+
this.name = "NoObjectsFoundError";
|
|
44
7
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
8
|
+
}
|
|
9
|
+
const downloadFolderFromS3 = async (params)=>{
|
|
10
|
+
const { bucketName, bucketRegion, bucketFolderKey, downloadFolderPath } = params;
|
|
11
|
+
const s3FolderKey = `v6/${bucketFolderKey}`;
|
|
12
|
+
const baseUrl = `https://${bucketName}.s3.${bucketRegion}.amazonaws.com`;
|
|
13
|
+
const listObjects = async ()=>{
|
|
14
|
+
const keys = [];
|
|
15
|
+
let continuationToken;
|
|
16
|
+
do {
|
|
17
|
+
let url = `${baseUrl}/?list-type=2&prefix=${encodeURIComponent(s3FolderKey)}`;
|
|
18
|
+
if (continuationToken) url += `&continuation-token=${encodeURIComponent(continuationToken)}`;
|
|
19
|
+
const response = await fetch(url);
|
|
20
|
+
if (!response.ok) throw new Error(`Failed to list objects: ${response.status} ${response.statusText}`);
|
|
21
|
+
const xml = await response.text();
|
|
22
|
+
for (const match of xml.matchAll(/<Key>([^<]+)<\/Key>/g))keys.push(match[1]);
|
|
23
|
+
const isTruncated = xml.includes("<IsTruncated>true</IsTruncated>");
|
|
24
|
+
continuationToken = isTruncated ? xml.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/)?.[1] : void 0;
|
|
25
|
+
}while (continuationToken)
|
|
26
|
+
return keys;
|
|
27
|
+
};
|
|
28
|
+
const downloadFile = async (key, localPath)=>{
|
|
29
|
+
const response = await fetch(`${baseUrl}/${key}`);
|
|
30
|
+
if (!response.ok) throw new Error(`Failed to download ${key}: ${response.status} ${response.statusText}`);
|
|
31
|
+
fs.writeFileSync(localPath, Buffer.from(await response.arrayBuffer()));
|
|
32
|
+
};
|
|
33
|
+
const keys = await listObjects();
|
|
34
|
+
if (!keys.length) throw new NoObjectsFoundError("No objects found in the specified S3 folder.");
|
|
35
|
+
for (const key of keys){
|
|
36
|
+
const relativePath = path.relative(s3FolderKey, key);
|
|
37
|
+
const localFilePath = path.join(downloadFolderPath, relativePath);
|
|
38
|
+
if (key.endsWith("/")) {
|
|
39
|
+
if (!fs.existsSync(localFilePath)) fs.mkdirSync(localFilePath, {
|
|
40
|
+
recursive: true
|
|
41
|
+
});
|
|
42
|
+
} else {
|
|
43
|
+
const localDirPath = path.dirname(localFilePath);
|
|
44
|
+
if (!fs.existsSync(localDirPath)) fs.mkdirSync(localDirPath, {
|
|
45
|
+
recursive: true
|
|
46
|
+
});
|
|
47
|
+
await downloadFile(key, localFilePath);
|
|
48
|
+
}
|
|
68
49
|
}
|
|
69
|
-
}
|
|
70
50
|
};
|
|
51
|
+
export { NoObjectsFoundError, downloadFolderFromS3 };
|
|
71
52
|
|
|
72
53
|
//# sourceMappingURL=downloadFolderFromS3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"services/InstallExtensionService/downloadFolderFromS3.js","sources":["../../../src/services/InstallExtensionService/downloadFolderFromS3.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\n\ninterface DownloadFolderFromS3Params {\n bucketName: string;\n bucketRegion: string;\n bucketFolderKey: string;\n downloadFolderPath: string;\n}\n\nexport class NoObjectsFoundError extends Error {\n code = \"NO_OBJECTS_FOUND\";\n constructor(message: string) {\n super(message);\n this.name = \"NoObjectsFoundError\";\n }\n}\n\nexport const downloadFolderFromS3 = async (params: DownloadFolderFromS3Params) => {\n const { bucketName, bucketRegion, bucketFolderKey, downloadFolderPath } = params;\n\n const s3FolderKey = `v6/${bucketFolderKey}`;\n const baseUrl = `https://${bucketName}.s3.${bucketRegion}.amazonaws.com`;\n\n const listObjects = async (): Promise<string[]> => {\n const keys: string[] = [];\n let continuationToken: string | undefined;\n\n do {\n let url = `${baseUrl}/?list-type=2&prefix=${encodeURIComponent(s3FolderKey)}`;\n if (continuationToken) {\n url += `&continuation-token=${encodeURIComponent(continuationToken)}`;\n }\n\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(\n `Failed to list objects: ${response.status} ${response.statusText}`\n );\n }\n\n const xml = await response.text();\n\n for (const match of xml.matchAll(/<Key>([^<]+)<\\/Key>/g)) {\n keys.push(match[1]);\n }\n\n const isTruncated = xml.includes(\"<IsTruncated>true</IsTruncated>\");\n continuationToken = isTruncated\n ? xml.match(/<NextContinuationToken>([^<]+)<\\/NextContinuationToken>/)?.[1]\n : undefined;\n } while (continuationToken);\n\n return keys;\n };\n\n const downloadFile = async (key: string, localPath: string): Promise<void> => {\n const response = await fetch(`${baseUrl}/${key}`);\n if (!response.ok) {\n throw new Error(`Failed to download ${key}: ${response.status} ${response.statusText}`);\n }\n fs.writeFileSync(localPath, Buffer.from(await response.arrayBuffer()));\n };\n\n const keys = await listObjects();\n if (!keys.length) {\n throw new NoObjectsFoundError(`No objects found in the specified S3 folder.`);\n }\n\n for (const key of keys) {\n const relativePath = path.relative(s3FolderKey, key);\n const localFilePath = path.join(downloadFolderPath, relativePath);\n\n if (key.endsWith(\"/\")) {\n if (!fs.existsSync(localFilePath)) {\n fs.mkdirSync(localFilePath, { recursive: true });\n }\n } else {\n const localDirPath = path.dirname(localFilePath);\n if (!fs.existsSync(localDirPath)) {\n fs.mkdirSync(localDirPath, { recursive: true });\n }\n await downloadFile(key, localFilePath);\n }\n }\n};\n"],"names":["NoObjectsFoundError","Error","message","downloadFolderFromS3","params","bucketName","bucketRegion","bucketFolderKey","downloadFolderPath","s3FolderKey","baseUrl","listObjects","keys","continuationToken","url","encodeURIComponent","response","fetch","xml","match","isTruncated","undefined","downloadFile","key","localPath","fs","Buffer","relativePath","path","localFilePath","localDirPath"],"mappings":";;AAUO,MAAMA,4BAA4BC;IAErC,YAAYC,OAAe,CAAE;QACzB,KAAK,CAACA,UAAAA,IAAAA,CAFV,IAAI,GAAG;QAGH,IAAI,CAAC,IAAI,GAAG;IAChB;AACJ;AAEO,MAAMC,uBAAuB,OAAOC;IACvC,MAAM,EAAEC,UAAU,EAAEC,YAAY,EAAEC,eAAe,EAAEC,kBAAkB,EAAE,GAAGJ;IAE1E,MAAMK,cAAc,CAAC,GAAG,EAAEF,iBAAiB;IAC3C,MAAMG,UAAU,CAAC,QAAQ,EAAEL,WAAW,IAAI,EAAEC,aAAa,cAAc,CAAC;IAExE,MAAMK,cAAc;QAChB,MAAMC,OAAiB,EAAE;QACzB,IAAIC;QAEJ,GAAG;YACC,IAAIC,MAAM,GAAGJ,QAAQ,qBAAqB,EAAEK,mBAAmBN,cAAc;YAC7E,IAAII,mBACAC,OAAO,CAAC,oBAAoB,EAAEC,mBAAmBF,oBAAoB;YAGzE,MAAMG,WAAW,MAAMC,MAAMH;YAC7B,IAAI,CAACE,SAAS,EAAE,EACZ,MAAM,IAAIf,MACN,CAAC,wBAAwB,EAAEe,SAAS,MAAM,CAAC,CAAC,EAAEA,SAAS,UAAU,EAAE;YAI3E,MAAME,MAAM,MAAMF,SAAS,IAAI;YAE/B,KAAK,MAAMG,SAASD,IAAI,QAAQ,CAAC,wBAC7BN,KAAK,IAAI,CAACO,KAAK,CAAC,EAAE;YAGtB,MAAMC,cAAcF,IAAI,QAAQ,CAAC;YACjCL,oBAAoBO,cACdF,IAAI,KAAK,CAAC,4DAA4D,CAAC,EAAE,GACzEG;QACV,QAASR,kBAAmB;QAE5B,OAAOD;IACX;IAEA,MAAMU,eAAe,OAAOC,KAAaC;QACrC,MAAMR,WAAW,MAAMC,MAAM,GAAGP,QAAQ,CAAC,EAAEa,KAAK;QAChD,IAAI,CAACP,SAAS,EAAE,EACZ,MAAM,IAAIf,MAAM,CAAC,mBAAmB,EAAEsB,IAAI,EAAE,EAAEP,SAAS,MAAM,CAAC,CAAC,EAAEA,SAAS,UAAU,EAAE;QAE1FS,GAAG,aAAa,CAACD,WAAWE,OAAO,IAAI,CAAC,MAAMV,SAAS,WAAW;IACtE;IAEA,MAAMJ,OAAO,MAAMD;IACnB,IAAI,CAACC,KAAK,MAAM,EACZ,MAAM,IAAIZ,oBAAoB;IAGlC,KAAK,MAAMuB,OAAOX,KAAM;QACpB,MAAMe,eAAeC,KAAK,QAAQ,CAACnB,aAAac;QAChD,MAAMM,gBAAgBD,KAAK,IAAI,CAACpB,oBAAoBmB;QAEpD,IAAIJ,IAAI,QAAQ,CAAC,MACb;YAAA,IAAI,CAACE,GAAG,UAAU,CAACI,gBACfJ,GAAG,SAAS,CAACI,eAAe;gBAAE,WAAW;YAAK;QAClD,OACG;YACH,MAAMC,eAAeF,KAAK,OAAO,CAACC;YAClC,IAAI,CAACJ,GAAG,UAAU,CAACK,eACfL,GAAG,SAAS,CAACK,cAAc;gBAAE,WAAW;YAAK;YAEjD,MAAMR,aAAaC,KAAKM;QAC5B;IACJ;AACJ"}
|
|
@@ -1,31 +1,21 @@
|
|
|
1
1
|
import { loadJsonFileSync } from "load-json-file";
|
|
2
2
|
import { writeJsonFileSync } from "write-json-file";
|
|
3
3
|
import deepmerge from "deepmerge";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
// Use deepmerge to combine arrays and objects properly
|
|
19
|
-
const mergedPackageJson = deepmerge(currentPackageJson, extensionPackageJson, {
|
|
20
|
-
// For arrays, concatenate and remove duplicates
|
|
21
|
-
arrayMerge: (target, source) => {
|
|
22
|
-
const combined = [...target, ...source];
|
|
23
|
-
return Array.from(new Set(combined));
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
// Write the merged package.json back
|
|
28
|
-
return writeJsonFileSync(packageJsonPath, mergedPackageJson);
|
|
4
|
+
const mergePackageJson = async (params)=>{
|
|
5
|
+
const { projectRoot, extensionPackageJson } = params;
|
|
6
|
+
const packageJsonPath = `${projectRoot}/package.json`;
|
|
7
|
+
const currentPackageJson = await loadJsonFileSync(packageJsonPath);
|
|
8
|
+
const mergedPackageJson = deepmerge(currentPackageJson, extensionPackageJson, {
|
|
9
|
+
arrayMerge: (target, source)=>{
|
|
10
|
+
const combined = [
|
|
11
|
+
...target,
|
|
12
|
+
...source
|
|
13
|
+
];
|
|
14
|
+
return Array.from(new Set(combined));
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
return writeJsonFileSync(packageJsonPath, mergedPackageJson);
|
|
29
18
|
};
|
|
19
|
+
export { mergePackageJson };
|
|
30
20
|
|
|
31
21
|
//# sourceMappingURL=mergePackageJson.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"services/InstallExtensionService/mergePackageJson.js","sources":["../../../src/services/InstallExtensionService/mergePackageJson.ts"],"sourcesContent":["import { loadJsonFileSync } from \"load-json-file\";\nimport { writeJsonFileSync } from \"write-json-file\";\nimport deepmerge from \"deepmerge\";\n\ninterface MergePackageJsonParams {\n projectRoot: string;\n extensionPackageJson: Record<string, any>;\n}\n\n/**\n * Merge extension package.json properties into the project's root package.json.\n */\nexport const mergePackageJson = async (params: MergePackageJsonParams): Promise<void> => {\n const { projectRoot, extensionPackageJson } = params;\n\n const packageJsonPath = `${projectRoot}/package.json`;\n\n // Load the current package.json\n const currentPackageJson = await loadJsonFileSync<Record<string, any>>(packageJsonPath);\n\n // Merge the extension's package.json into the current one\n // Use deepmerge to combine arrays and objects properly\n const mergedPackageJson = deepmerge(currentPackageJson, extensionPackageJson, {\n // For arrays, concatenate and remove duplicates\n arrayMerge: (target, source) => {\n const combined = [...target, ...source];\n return Array.from(new Set(combined));\n }\n });\n\n // Write the merged package.json back\n return writeJsonFileSync(packageJsonPath, mergedPackageJson);\n};\n"],"names":["mergePackageJson","params","projectRoot","extensionPackageJson","packageJsonPath","currentPackageJson","loadJsonFileSync","mergedPackageJson","deepmerge","target","source","combined","Array","Set","writeJsonFileSync"],"mappings":";;;AAYO,MAAMA,mBAAmB,OAAOC;IACnC,MAAM,EAAEC,WAAW,EAAEC,oBAAoB,EAAE,GAAGF;IAE9C,MAAMG,kBAAkB,GAAGF,YAAY,aAAa,CAAC;IAGrD,MAAMG,qBAAqB,MAAMC,iBAAsCF;IAIvE,MAAMG,oBAAoBC,UAAUH,oBAAoBF,sBAAsB;QAE1E,YAAY,CAACM,QAAQC;YACjB,MAAMC,WAAW;mBAAIF;mBAAWC;aAAO;YACvC,OAAOE,MAAM,IAAI,CAAC,IAAIC,IAAIF;QAC9B;IACJ;IAGA,OAAOG,kBAAkBV,iBAAiBG;AAC9C"}
|