@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.
Files changed (875) hide show
  1. package/GracefulError.js +13 -15
  2. package/GracefulError.js.map +1 -1
  3. package/ProjectError.js +11 -13
  4. package/ProjectError.js.map +1 -1
  5. package/ProjectSdk.js +113 -129
  6. package/ProjectSdk.js.map +1 -1
  7. package/abstractions/createAbstraction.js +3 -2
  8. package/abstractions/createAbstraction.js.map +1 -1
  9. package/abstractions/features/BuildApp.js +2 -1
  10. package/abstractions/features/BuildApp.js.map +1 -1
  11. package/abstractions/features/BuildExtension.js +2 -1
  12. package/abstractions/features/BuildExtension.js.map +1 -1
  13. package/abstractions/features/DeployApp.js +2 -1
  14. package/abstractions/features/DeployApp.js.map +1 -1
  15. package/abstractions/features/DestroyApp.js +2 -1
  16. package/abstractions/features/DestroyApp.js.map +1 -1
  17. package/abstractions/features/ExportStack.js +2 -1
  18. package/abstractions/features/ExportStack.js.map +1 -1
  19. package/abstractions/features/GetApp.js +2 -1
  20. package/abstractions/features/GetApp.js.map +1 -1
  21. package/abstractions/features/GetAppOutput.js +2 -1
  22. package/abstractions/features/GetAppOutput.js.map +1 -1
  23. package/abstractions/features/GetAppStackOutput.js +2 -6
  24. package/abstractions/features/GetAppStackOutput.js.map +1 -1
  25. package/abstractions/features/GetFeatureFlags.js +2 -1
  26. package/abstractions/features/GetFeatureFlags.js.map +1 -1
  27. package/abstractions/features/GetLogger.js +2 -1
  28. package/abstractions/features/GetLogger.js.map +1 -1
  29. package/abstractions/features/GetProductionEnvironments.js +2 -1
  30. package/abstractions/features/GetProductionEnvironments.js.map +1 -1
  31. package/abstractions/features/GetProject.js +2 -1
  32. package/abstractions/features/GetProject.js.map +1 -1
  33. package/abstractions/features/GetProjectConfig.js +2 -1
  34. package/abstractions/features/GetProjectConfig.js.map +1 -1
  35. package/abstractions/features/GetProjectInfo.js +2 -1
  36. package/abstractions/features/GetProjectInfo.js.map +1 -1
  37. package/abstractions/features/GetPulumiResourceNamePrefix.js +2 -1
  38. package/abstractions/features/GetPulumiResourceNamePrefix.js.map +1 -1
  39. package/abstractions/features/InstallExtension.js +2 -1
  40. package/abstractions/features/InstallExtension.js.map +1 -1
  41. package/abstractions/features/IsCi.js +2 -1
  42. package/abstractions/features/IsCi.js.map +1 -1
  43. package/abstractions/features/IsTelemetryEnabled.js +2 -1
  44. package/abstractions/features/IsTelemetryEnabled.js.map +1 -1
  45. package/abstractions/features/IsWcpEnabled.js +2 -1
  46. package/abstractions/features/IsWcpEnabled.js.map +1 -1
  47. package/abstractions/features/IsWebinyJsRepo.js +2 -1
  48. package/abstractions/features/IsWebinyJsRepo.js.map +1 -1
  49. package/abstractions/features/RefreshApp.js +2 -1
  50. package/abstractions/features/RefreshApp.js.map +1 -1
  51. package/abstractions/features/RunPulumiCommand.js +2 -1
  52. package/abstractions/features/RunPulumiCommand.js.map +1 -1
  53. package/abstractions/features/ValidateProjectConfig.js +2 -1
  54. package/abstractions/features/ValidateProjectConfig.js.map +1 -1
  55. package/abstractions/features/Watch.js +2 -1
  56. package/abstractions/features/Watch.js.map +1 -1
  57. package/abstractions/features/hooks/AdminAfterBuild.js +2 -1
  58. package/abstractions/features/hooks/AdminAfterBuild.js.map +1 -1
  59. package/abstractions/features/hooks/AdminAfterDeploy.js +2 -1
  60. package/abstractions/features/hooks/AdminAfterDeploy.js.map +1 -1
  61. package/abstractions/features/hooks/AdminBeforeBuild.js +2 -1
  62. package/abstractions/features/hooks/AdminBeforeBuild.js.map +1 -1
  63. package/abstractions/features/hooks/AdminBeforeDeploy.js +2 -1
  64. package/abstractions/features/hooks/AdminBeforeDeploy.js.map +1 -1
  65. package/abstractions/features/hooks/AdminBeforeWatch.js +2 -1
  66. package/abstractions/features/hooks/AdminBeforeWatch.js.map +1 -1
  67. package/abstractions/features/hooks/AfterBuild.js +2 -1
  68. package/abstractions/features/hooks/AfterBuild.js.map +1 -1
  69. package/abstractions/features/hooks/AfterDeploy.js +2 -1
  70. package/abstractions/features/hooks/AfterDeploy.js.map +1 -1
  71. package/abstractions/features/hooks/ApiAfterBuild.js +2 -1
  72. package/abstractions/features/hooks/ApiAfterBuild.js.map +1 -1
  73. package/abstractions/features/hooks/ApiAfterDeploy.js +2 -1
  74. package/abstractions/features/hooks/ApiAfterDeploy.js.map +1 -1
  75. package/abstractions/features/hooks/ApiBeforeBuild.js +2 -1
  76. package/abstractions/features/hooks/ApiBeforeBuild.js.map +1 -1
  77. package/abstractions/features/hooks/ApiBeforeDeploy.js +2 -1
  78. package/abstractions/features/hooks/ApiBeforeDeploy.js.map +1 -1
  79. package/abstractions/features/hooks/ApiBeforeWatch.js +2 -1
  80. package/abstractions/features/hooks/ApiBeforeWatch.js.map +1 -1
  81. package/abstractions/features/hooks/BeforeBuild.js +2 -1
  82. package/abstractions/features/hooks/BeforeBuild.js.map +1 -1
  83. package/abstractions/features/hooks/BeforeDeploy.js +2 -1
  84. package/abstractions/features/hooks/BeforeDeploy.js.map +1 -1
  85. package/abstractions/features/hooks/BeforeWatch.js +2 -1
  86. package/abstractions/features/hooks/BeforeWatch.js.map +1 -1
  87. package/abstractions/features/hooks/CoreAfterBuild.js +2 -1
  88. package/abstractions/features/hooks/CoreAfterBuild.js.map +1 -1
  89. package/abstractions/features/hooks/CoreAfterDeploy.js +2 -1
  90. package/abstractions/features/hooks/CoreAfterDeploy.js.map +1 -1
  91. package/abstractions/features/hooks/CoreBeforeBuild.js +2 -1
  92. package/abstractions/features/hooks/CoreBeforeBuild.js.map +1 -1
  93. package/abstractions/features/hooks/CoreBeforeDeploy.js +2 -1
  94. package/abstractions/features/hooks/CoreBeforeDeploy.js.map +1 -1
  95. package/abstractions/features/hooks/CoreBeforeWatch.js +2 -1
  96. package/abstractions/features/hooks/CoreBeforeWatch.js.map +1 -1
  97. package/abstractions/features/hooks/index.js +0 -2
  98. package/abstractions/features/index.js +0 -2
  99. package/abstractions/index.js +0 -2
  100. package/abstractions/models/IAppModel.js +0 -3
  101. package/abstractions/models/IAppPackageModel.js +0 -3
  102. package/abstractions/models/IPathModel.js +0 -3
  103. package/abstractions/models/IProjectConfigDto.js +0 -3
  104. package/abstractions/models/IProjectConfigModel.js +0 -3
  105. package/abstractions/models/IProjectModel.js +0 -3
  106. package/abstractions/models/IUrlModel.js +0 -3
  107. package/abstractions/models/IWcpEnvironmentDto.js +0 -3
  108. package/abstractions/models/IWcpEnvironmentModel.js +0 -3
  109. package/abstractions/models/IWcpUserDto.js +0 -3
  110. package/abstractions/models/IWcpUserModel.js +0 -3
  111. package/abstractions/models/IWcpUserPatDto.js +0 -3
  112. package/abstractions/models/IWcpUserPatModel.js +0 -3
  113. package/abstractions/models/PackagesBuilder/IPackagesBuilder.js +0 -3
  114. package/abstractions/models/PackagesBuilder/IRunnableBuildProcess.js +0 -3
  115. package/abstractions/models/PackagesBuilder/IRunnableBuildProcesses.js +0 -3
  116. package/abstractions/models/PackagesBuilder/index.js +0 -3
  117. package/abstractions/models/index.js +0 -3
  118. package/abstractions/services/BuildAppWorkspaceService.js +2 -1
  119. package/abstractions/services/BuildAppWorkspaceService.js.map +1 -1
  120. package/abstractions/services/BuildProjectWorkspaceService.js +2 -1
  121. package/abstractions/services/BuildProjectWorkspaceService.js.map +1 -1
  122. package/abstractions/services/GetAppPackagesService.js +2 -1
  123. package/abstractions/services/GetAppPackagesService.js.map +1 -1
  124. package/abstractions/services/GetAppService.js +2 -1
  125. package/abstractions/services/GetAppService.js.map +1 -1
  126. package/abstractions/services/GetCwdService.js +2 -1
  127. package/abstractions/services/GetCwdService.js.map +1 -1
  128. package/abstractions/services/GetProjectConfigService.js +2 -1
  129. package/abstractions/services/GetProjectConfigService.js.map +1 -1
  130. package/abstractions/services/GetProjectIdService.js +2 -1
  131. package/abstractions/services/GetProjectIdService.js.map +1 -1
  132. package/abstractions/services/GetProjectService.js +2 -1
  133. package/abstractions/services/GetProjectService.js.map +1 -1
  134. package/abstractions/services/GetProjectVersionService.js +2 -1
  135. package/abstractions/services/GetProjectVersionService.js.map +1 -1
  136. package/abstractions/services/GetPulumiService.js +2 -1
  137. package/abstractions/services/GetPulumiService.js.map +1 -1
  138. package/abstractions/services/InitProjectSdkService.js +2 -1
  139. package/abstractions/services/InitProjectSdkService.js.map +1 -1
  140. package/abstractions/services/InstallExtensionService.js +2 -1
  141. package/abstractions/services/InstallExtensionService.js.map +1 -1
  142. package/abstractions/services/IsRemotePulumiBackendService.js +2 -1
  143. package/abstractions/services/IsRemotePulumiBackendService.js.map +1 -1
  144. package/abstractions/services/ListAppLambdaFunctionsService.js +2 -1
  145. package/abstractions/services/ListAppLambdaFunctionsService.js.map +1 -1
  146. package/abstractions/services/ListDeployedEnvironmentsService.js +2 -1
  147. package/abstractions/services/ListDeployedEnvironmentsService.js.map +1 -1
  148. package/abstractions/services/ListPackagesInAppWorkspaceService.js +2 -1
  149. package/abstractions/services/ListPackagesInAppWorkspaceService.js.map +1 -1
  150. package/abstractions/services/ListPackagesService.js +2 -1
  151. package/abstractions/services/ListPackagesService.js.map +1 -1
  152. package/abstractions/services/LoadEnvVarsService.js +2 -1
  153. package/abstractions/services/LoadEnvVarsService.js.map +1 -1
  154. package/abstractions/services/LocalStorageService.js +2 -1
  155. package/abstractions/services/LocalStorageService.js.map +1 -1
  156. package/abstractions/services/LoggerService.js +2 -1
  157. package/abstractions/services/LoggerService.js.map +1 -1
  158. package/abstractions/services/ProjectInfoService/GetIsCiService.js +2 -1
  159. package/abstractions/services/ProjectInfoService/GetIsCiService.js.map +1 -1
  160. package/abstractions/services/ProjectInfoService/GetNpmVersionService.js +2 -1
  161. package/abstractions/services/ProjectInfoService/GetNpmVersionService.js.map +1 -1
  162. package/abstractions/services/ProjectInfoService/GetNpxVersionService.js +2 -1
  163. package/abstractions/services/ProjectInfoService/GetNpxVersionService.js.map +1 -1
  164. package/abstractions/services/ProjectInfoService/GetPulumiVersionService.js +2 -1
  165. package/abstractions/services/ProjectInfoService/GetPulumiVersionService.js.map +1 -1
  166. package/abstractions/services/ProjectInfoService/GetYarnVersionService.js +2 -1
  167. package/abstractions/services/ProjectInfoService/GetYarnVersionService.js.map +1 -1
  168. package/abstractions/services/ProjectInfoService/ProjectInfoService.js +2 -1
  169. package/abstractions/services/ProjectInfoService/ProjectInfoService.js.map +1 -1
  170. package/abstractions/services/ProjectInfoService/index.js +0 -2
  171. package/abstractions/services/ProjectSdkParamsService.js +2 -1
  172. package/abstractions/services/ProjectSdkParamsService.js.map +1 -1
  173. package/abstractions/services/PulumiExportService.js +3 -4
  174. package/abstractions/services/PulumiExportService.js.map +1 -1
  175. package/abstractions/services/PulumiGetConfigPassphraseService.js +2 -1
  176. package/abstractions/services/PulumiGetConfigPassphraseService.js.map +1 -1
  177. package/abstractions/services/PulumiGetSecretsProviderService.js +2 -1
  178. package/abstractions/services/PulumiGetSecretsProviderService.js.map +1 -1
  179. package/abstractions/services/PulumiGetStackOutputService.js +2 -1
  180. package/abstractions/services/PulumiGetStackOutputService.js.map +1 -1
  181. package/abstractions/services/PulumiImportService.js +2 -1
  182. package/abstractions/services/PulumiImportService.js.map +1 -1
  183. package/abstractions/services/PulumiLoginService.js +2 -1
  184. package/abstractions/services/PulumiLoginService.js.map +1 -1
  185. package/abstractions/services/PulumiSelectStackService.js +2 -1
  186. package/abstractions/services/PulumiSelectStackService.js.map +1 -1
  187. package/abstractions/services/SetProjectIdService.js +2 -1
  188. package/abstractions/services/SetProjectIdService.js.map +1 -1
  189. package/abstractions/services/StdioService.js +2 -1
  190. package/abstractions/services/StdioService.js.map +1 -1
  191. package/abstractions/services/UiService.js +2 -1
  192. package/abstractions/services/UiService.js.map +1 -1
  193. package/abstractions/services/ValidateProjectConfigService.js +2 -1
  194. package/abstractions/services/ValidateProjectConfigService.js.map +1 -1
  195. package/abstractions/services/WatchedLambdaFunctionsService.js +2 -1
  196. package/abstractions/services/WatchedLambdaFunctionsService.js.map +1 -1
  197. package/abstractions/services/WcpService.js +2 -1
  198. package/abstractions/services/WcpService.js.map +1 -1
  199. package/abstractions/services/index.js +0 -2
  200. package/abstractions/types.js +0 -3
  201. package/components/Wcp.js +27 -38
  202. package/components/Wcp.js.map +1 -1
  203. package/createProjectSdkContainer.js +103 -112
  204. package/createProjectSdkContainer.js.map +1 -1
  205. package/decorators/BuildAppWithHooks.js +54 -44
  206. package/decorators/BuildAppWithHooks.js.map +1 -1
  207. package/decorators/DeployAppClearWatchedLambdaFunctions.js +27 -29
  208. package/decorators/DeployAppClearWatchedLambdaFunctions.js.map +1 -1
  209. package/decorators/DeployAppRefreshStackOutputCache.js +26 -30
  210. package/decorators/DeployAppRefreshStackOutputCache.js.map +1 -1
  211. package/decorators/DeployAppWithHooks.js +51 -41
  212. package/decorators/DeployAppWithHooks.js.map +1 -1
  213. package/decorators/DeployAppWithWatchedLambdaReplacement.js +33 -37
  214. package/decorators/DeployAppWithWatchedLambdaReplacement.js.map +1 -1
  215. package/decorators/GetFeatureFlagsWithLicense.js +36 -57
  216. package/decorators/GetFeatureFlagsWithLicense.js.map +1 -1
  217. package/decorators/GetPulumiServiceWithDownloadInfo.js +21 -19
  218. package/decorators/GetPulumiServiceWithDownloadInfo.js.map +1 -1
  219. package/decorators/WatchWithHooks.js +30 -27
  220. package/decorators/WatchWithHooks.js.map +1 -1
  221. package/decorators/index.js +0 -2
  222. package/defineExtension/createExtensionDefinition.js +12 -19
  223. package/defineExtension/createExtensionDefinition.js.map +1 -1
  224. package/defineExtension/createExtensionReactComponent.js +40 -46
  225. package/defineExtension/createExtensionReactComponent.js.map +1 -1
  226. package/defineExtension/defineExtension.js +8 -9
  227. package/defineExtension/defineExtension.js.map +1 -1
  228. package/defineExtension/index.js +0 -2
  229. package/defineExtension/models/ExtensionDefinitionModel.js +11 -10
  230. package/defineExtension/models/ExtensionDefinitionModel.js.map +1 -1
  231. package/defineExtension/models/ExtensionInstanceModel.js +23 -24
  232. package/defineExtension/models/ExtensionInstanceModel.js.map +1 -1
  233. package/defineExtension/models/index.js +0 -2
  234. package/defineExtension/types.js +0 -3
  235. package/defineExtension/zodTypes/zodSrcPath.js +35 -61
  236. package/defineExtension/zodTypes/zodSrcPath.js.map +1 -1
  237. package/exports/infra/admin.js +0 -2
  238. package/exports/infra/api.js +0 -2
  239. package/exports/infra/core.js +0 -2
  240. package/exports/infra.js +0 -2
  241. package/extensions/AdminBuildParam.js +105 -147
  242. package/extensions/AdminBuildParam.js.map +1 -1
  243. package/extensions/AdminExtension.js +64 -90
  244. package/extensions/AdminExtension.js.map +1 -1
  245. package/extensions/ApiBuildParam.js +71 -97
  246. package/extensions/ApiBuildParam.js.map +1 -1
  247. package/extensions/ApiExtension.js +71 -92
  248. package/extensions/ApiExtension.js.map +1 -1
  249. package/extensions/DatabaseSetup.js +14 -9
  250. package/extensions/DatabaseSetup.js.map +1 -1
  251. package/extensions/EnvVar.js +12 -16
  252. package/extensions/EnvVar.js.map +1 -1
  253. package/extensions/ExtensionDefinitions.js +11 -10
  254. package/extensions/ExtensionDefinitions.js.map +1 -1
  255. package/extensions/FeatureFlags.js +47 -48
  256. package/extensions/FeatureFlags.js.map +1 -1
  257. package/extensions/Project/EnsureApiDeployedBeforeAdminBuild.js +20 -21
  258. package/extensions/Project/EnsureApiDeployedBeforeAdminBuild.js.map +1 -1
  259. package/extensions/Project/EnsureApiDeployedBeforeAdminWatch.js +20 -21
  260. package/extensions/Project/EnsureApiDeployedBeforeAdminWatch.js.map +1 -1
  261. package/extensions/Project/EnsureApiDeployedBeforeWatch.js +20 -21
  262. package/extensions/Project/EnsureApiDeployedBeforeWatch.js.map +1 -1
  263. package/extensions/Project/EnsureCoreDeployedBeforeApiDeploy.js +22 -25
  264. package/extensions/Project/EnsureCoreDeployedBeforeApiDeploy.js.map +1 -1
  265. package/extensions/Project/EnsureTelemetryEnabledForOss.js +25 -28
  266. package/extensions/Project/EnsureTelemetryEnabledForOss.js.map +1 -1
  267. package/extensions/Project/SetAdminAppEnvVarsBeforeBuild.js +29 -34
  268. package/extensions/Project/SetAdminAppEnvVarsBeforeBuild.js.map +1 -1
  269. package/extensions/Project/SetAdminAppEnvVarsBeforeWatch.js +30 -35
  270. package/extensions/Project/SetAdminAppEnvVarsBeforeWatch.js.map +1 -1
  271. package/extensions/Project/ShowConfigChangeInfoBeforeAdminWatch.js +12 -9
  272. package/extensions/Project/ShowConfigChangeInfoBeforeAdminWatch.js.map +1 -1
  273. package/extensions/Project/ShowConfigChangeInfoBeforeApiWatch.js +12 -9
  274. package/extensions/Project/ShowConfigChangeInfoBeforeApiWatch.js.map +1 -1
  275. package/extensions/Project/TelemetryNoLongerNewUser.js +7 -7
  276. package/extensions/Project/TelemetryNoLongerNewUser.js.map +1 -1
  277. package/extensions/Project/ValidateEncryptionBeforeDeploy.js +22 -23
  278. package/extensions/Project/ValidateEncryptionBeforeDeploy.js.map +1 -1
  279. package/extensions/Project/ValidateProductionPulumiState.js +25 -28
  280. package/extensions/Project/ValidateProductionPulumiState.js.map +1 -1
  281. package/extensions/Project/WcpInjectTelemetryClientAfterBuild.js +46 -51
  282. package/extensions/Project/WcpInjectTelemetryClientAfterBuild.js.map +1 -1
  283. package/extensions/Project.js +29 -30
  284. package/extensions/Project.js.map +1 -1
  285. package/extensions/ProjectDecorator.js +13 -16
  286. package/extensions/ProjectDecorator.js.map +1 -1
  287. package/extensions/ProjectId.js +11 -13
  288. package/extensions/ProjectId.js.map +1 -1
  289. package/extensions/ProjectImplementation.js +14 -17
  290. package/extensions/ProjectImplementation.js.map +1 -1
  291. package/extensions/Telemetry.js +10 -9
  292. package/extensions/Telemetry.js.map +1 -1
  293. package/extensions/hooks/AdminAfterBuild.js +16 -19
  294. package/extensions/hooks/AdminAfterBuild.js.map +1 -1
  295. package/extensions/hooks/AdminAfterDeploy.js +16 -19
  296. package/extensions/hooks/AdminAfterDeploy.js.map +1 -1
  297. package/extensions/hooks/AdminBeforeBuild.js +16 -19
  298. package/extensions/hooks/AdminBeforeBuild.js.map +1 -1
  299. package/extensions/hooks/AdminBeforeDeploy.js +16 -19
  300. package/extensions/hooks/AdminBeforeDeploy.js.map +1 -1
  301. package/extensions/hooks/AdminBeforeWatch.js +16 -19
  302. package/extensions/hooks/AdminBeforeWatch.js.map +1 -1
  303. package/extensions/hooks/AfterBuild.js +15 -18
  304. package/extensions/hooks/AfterBuild.js.map +1 -1
  305. package/extensions/hooks/AfterDeploy.js +15 -18
  306. package/extensions/hooks/AfterDeploy.js.map +1 -1
  307. package/extensions/hooks/ApiAfterBuild.js +16 -19
  308. package/extensions/hooks/ApiAfterBuild.js.map +1 -1
  309. package/extensions/hooks/ApiAfterDeploy.js +16 -19
  310. package/extensions/hooks/ApiAfterDeploy.js.map +1 -1
  311. package/extensions/hooks/ApiBeforeBuild.js +16 -19
  312. package/extensions/hooks/ApiBeforeBuild.js.map +1 -1
  313. package/extensions/hooks/ApiBeforeDeploy.js +16 -19
  314. package/extensions/hooks/ApiBeforeDeploy.js.map +1 -1
  315. package/extensions/hooks/ApiBeforeWatch.js +16 -19
  316. package/extensions/hooks/ApiBeforeWatch.js.map +1 -1
  317. package/extensions/hooks/BeforeBuild.js +15 -18
  318. package/extensions/hooks/BeforeBuild.js.map +1 -1
  319. package/extensions/hooks/BeforeDeploy.js +15 -18
  320. package/extensions/hooks/BeforeDeploy.js.map +1 -1
  321. package/extensions/hooks/BeforeWatch.js +15 -18
  322. package/extensions/hooks/BeforeWatch.js.map +1 -1
  323. package/extensions/hooks/CoreAfterBuild.js +16 -19
  324. package/extensions/hooks/CoreAfterBuild.js.map +1 -1
  325. package/extensions/hooks/CoreAfterDeploy.js +16 -19
  326. package/extensions/hooks/CoreAfterDeploy.js.map +1 -1
  327. package/extensions/hooks/CoreBeforeBuild.js +16 -19
  328. package/extensions/hooks/CoreBeforeBuild.js.map +1 -1
  329. package/extensions/hooks/CoreBeforeDeploy.js +16 -19
  330. package/extensions/hooks/CoreBeforeDeploy.js.map +1 -1
  331. package/extensions/hooks/CoreBeforeWatch.js +16 -19
  332. package/extensions/hooks/CoreBeforeWatch.js.map +1 -1
  333. package/extensions/hooks/index.js +0 -2
  334. package/extensions/index.js +43 -57
  335. package/extensions/index.js.map +1 -1
  336. package/extensions/infra/Ci.js +8 -24
  337. package/extensions/infra/Ci.js.map +1 -1
  338. package/extensions/infra/Env.js +35 -92
  339. package/extensions/infra/Env.js.map +1 -1
  340. package/extensions/infra/index.js +0 -2
  341. package/extensions/pulumi/AdminStackOutputValue.js +13 -12
  342. package/extensions/pulumi/AdminStackOutputValue.js.map +1 -1
  343. package/extensions/pulumi/ApiStackOutputValue.js +13 -12
  344. package/extensions/pulumi/ApiStackOutputValue.js.map +1 -1
  345. package/extensions/pulumi/CoreStackOutputValue.js +13 -12
  346. package/extensions/pulumi/CoreStackOutputValue.js.map +1 -1
  347. package/extensions/pulumi/ProductionEnvironments.js +29 -39
  348. package/extensions/pulumi/ProductionEnvironments.js.map +1 -1
  349. package/extensions/pulumi/PulumiResourceNamePrefix.js +10 -9
  350. package/extensions/pulumi/PulumiResourceNamePrefix.js.map +1 -1
  351. package/extensions/pulumi/index.js +0 -2
  352. package/features/BuildApp/BuildApp.js +49 -40
  353. package/features/BuildApp/BuildApp.js.map +1 -1
  354. package/features/BuildApp/PackagesBuilder/PackagesBuilder.js +34 -39
  355. package/features/BuildApp/PackagesBuilder/PackagesBuilder.js.map +1 -1
  356. package/features/BuildApp/PackagesBuilder/RunnableBuildProcess.js +39 -33
  357. package/features/BuildApp/PackagesBuilder/RunnableBuildProcess.js.map +1 -1
  358. package/features/BuildApp/PackagesBuilder/RunnableBuildProcesses.js +39 -46
  359. package/features/BuildApp/PackagesBuilder/RunnableBuildProcesses.js.map +1 -1
  360. package/features/BuildApp/PackagesBuilder/worker.js +26 -34
  361. package/features/BuildApp/PackagesBuilder/worker.js.map +1 -1
  362. package/features/BuildApp/index.js +0 -2
  363. package/features/DeployApp/DeployApp.js +79 -79
  364. package/features/DeployApp/DeployApp.js.map +1 -1
  365. package/features/DeployApp/index.js +0 -2
  366. package/features/DestroyApp/DestroyApp.js +60 -46
  367. package/features/DestroyApp/DestroyApp.js.map +1 -1
  368. package/features/DestroyApp/index.js +0 -2
  369. package/features/ExportStack/ExportStack.js +21 -16
  370. package/features/ExportStack/ExportStack.js.map +1 -1
  371. package/features/ExportStack/index.js +0 -2
  372. package/features/GetApp/GetApp.js +14 -11
  373. package/features/GetApp/GetApp.js.map +1 -1
  374. package/features/GetApp/index.js +0 -2
  375. package/features/GetAppOutput/GetAppOutput.js +44 -33
  376. package/features/GetAppOutput/GetAppOutput.js.map +1 -1
  377. package/features/GetAppOutput/index.js +0 -2
  378. package/features/GetAppStackOutput/GetAppStackOutput.js +20 -15
  379. package/features/GetAppStackOutput/GetAppStackOutput.js.map +1 -1
  380. package/features/GetAppStackOutput/index.js +0 -2
  381. package/features/GetFeatureFlags/GetFeatureFlags.js +20 -19
  382. package/features/GetFeatureFlags/GetFeatureFlags.js.map +1 -1
  383. package/features/GetFeatureFlags/index.js +0 -2
  384. package/features/GetLogger/GetLogger.js +14 -11
  385. package/features/GetLogger/GetLogger.js.map +1 -1
  386. package/features/GetLogger/index.js +0 -2
  387. package/features/GetProductionEnvironments/GetProductionEnvironments.js +24 -19
  388. package/features/GetProductionEnvironments/GetProductionEnvironments.js.map +1 -1
  389. package/features/GetProductionEnvironments/index.js +0 -2
  390. package/features/GetProject/GetProject.js +14 -11
  391. package/features/GetProject/GetProject.js.map +1 -1
  392. package/features/GetProject/index.js +0 -2
  393. package/features/GetProjectConfig/GetProjectConfig.js +14 -11
  394. package/features/GetProjectConfig/GetProjectConfig.js.map +1 -1
  395. package/features/GetProjectConfig/index.js +0 -2
  396. package/features/GetProjectInfo/GetProjectInfo.js +14 -11
  397. package/features/GetProjectInfo/GetProjectInfo.js.map +1 -1
  398. package/features/GetProjectInfo/index.js +0 -2
  399. package/features/GetPulumiResourceNamePrefix/GetPulumiResourceNamePrefix.js +18 -17
  400. package/features/GetPulumiResourceNamePrefix/GetPulumiResourceNamePrefix.js.map +1 -1
  401. package/features/GetPulumiResourceNamePrefix/index.js +0 -2
  402. package/features/InstallExtension/InstallExtension.js +14 -11
  403. package/features/InstallExtension/InstallExtension.js.map +1 -1
  404. package/features/InstallExtension/index.js +0 -2
  405. package/features/IsCi/IsCi.js +14 -11
  406. package/features/IsCi/IsCi.js.map +1 -1
  407. package/features/IsCi/index.js +0 -2
  408. package/features/IsTelemetryEnabled/IsTelemetryEnabled.js +19 -18
  409. package/features/IsTelemetryEnabled/IsTelemetryEnabled.js.map +1 -1
  410. package/features/IsTelemetryEnabled/index.js +0 -2
  411. package/features/IsWcpEnabled/IsWcpEnabled.js +15 -12
  412. package/features/IsWcpEnabled/IsWcpEnabled.js.map +1 -1
  413. package/features/IsWcpEnabled/index.js +0 -2
  414. package/features/IsWebinyJsRepo/IsWebinyJsRepo.js +17 -14
  415. package/features/IsWebinyJsRepo/IsWebinyJsRepo.js.map +1 -1
  416. package/features/IsWebinyJsRepo/index.js +0 -2
  417. package/features/RefreshApp/RefreshApp.js +57 -46
  418. package/features/RefreshApp/RefreshApp.js.map +1 -1
  419. package/features/RefreshApp/index.js +0 -2
  420. package/features/RunPulumiCommand/RunPulumiCommand.js +54 -43
  421. package/features/RunPulumiCommand/RunPulumiCommand.js.map +1 -1
  422. package/features/RunPulumiCommand/index.js +0 -2
  423. package/features/ValidateProjectConfig/ValidateProjectConfig.js +14 -11
  424. package/features/ValidateProjectConfig/ValidateProjectConfig.js.map +1 -1
  425. package/features/ValidateProjectConfig/index.js +0 -2
  426. package/features/Watch/Watch.js +178 -181
  427. package/features/Watch/Watch.js.map +1 -1
  428. package/features/Watch/getIotEndpoint.js +14 -12
  429. package/features/Watch/getIotEndpoint.js.map +1 -1
  430. package/features/Watch/index.js +0 -2
  431. package/features/Watch/initInvocationForwarding.js +76 -95
  432. package/features/Watch/initInvocationForwarding.js.map +1 -1
  433. package/features/Watch/localInvocationWorker.js +24 -33
  434. package/features/Watch/localInvocationWorker.js.map +1 -1
  435. package/features/Watch/replaceLambdaFunctions.js +61 -84
  436. package/features/Watch/replaceLambdaFunctions.js.map +1 -1
  437. package/features/Watch/watchers/BasePackagesWatcher.js +10 -13
  438. package/features/Watch/watchers/BasePackagesWatcher.js.map +1 -1
  439. package/features/Watch/watchers/MultiplePackagesWatcher.js +11 -12
  440. package/features/Watch/watchers/MultiplePackagesWatcher.js.map +1 -1
  441. package/features/Watch/watchers/PackagesWatcher.js +15 -18
  442. package/features/Watch/watchers/PackagesWatcher.js.map +1 -1
  443. package/features/Watch/watchers/RunnableWatchProcess.js +41 -40
  444. package/features/Watch/watchers/RunnableWatchProcess.js.map +1 -1
  445. package/features/Watch/watchers/RunnableWatchProcesses.js +35 -34
  446. package/features/Watch/watchers/RunnableWatchProcesses.js.map +1 -1
  447. package/features/Watch/watchers/SinglePackageWatcher.js +11 -8
  448. package/features/Watch/watchers/SinglePackageWatcher.js.map +1 -1
  449. package/features/Watch/watchers/WebinyConfigWatcher.js +30 -40
  450. package/features/Watch/watchers/WebinyConfigWatcher.js.map +1 -1
  451. package/features/Watch/watchers/ZeroPackagesWatcher.js +5 -5
  452. package/features/Watch/watchers/ZeroPackagesWatcher.js.map +1 -1
  453. package/features/Watch/watchers/utils/measureDuration.js +7 -8
  454. package/features/Watch/watchers/utils/measureDuration.js.map +1 -1
  455. package/features/Watch/watchers/worker.js +12 -21
  456. package/features/Watch/watchers/worker.js.map +1 -1
  457. package/features/hooks/AdminAfterBuild/AdminBeforeBuild.js +19 -15
  458. package/features/hooks/AdminAfterBuild/AdminBeforeBuild.js.map +1 -1
  459. package/features/hooks/AdminAfterBuild/index.js +0 -2
  460. package/features/hooks/AdminAfterDeploy/AdminBeforeBuild.js +19 -15
  461. package/features/hooks/AdminAfterDeploy/AdminBeforeBuild.js.map +1 -1
  462. package/features/hooks/AdminAfterDeploy/index.js +0 -2
  463. package/features/hooks/AdminBeforeBuild/AdminBeforeBuild.js +19 -15
  464. package/features/hooks/AdminBeforeBuild/AdminBeforeBuild.js.map +1 -1
  465. package/features/hooks/AdminBeforeBuild/index.js +0 -2
  466. package/features/hooks/AdminBeforeDeploy/AdminBeforeDeploy.js +19 -15
  467. package/features/hooks/AdminBeforeDeploy/AdminBeforeDeploy.js.map +1 -1
  468. package/features/hooks/AdminBeforeDeploy/index.js +0 -2
  469. package/features/hooks/AdminBeforeWatch/AdminBeforeWatch.js +18 -14
  470. package/features/hooks/AdminBeforeWatch/AdminBeforeWatch.js.map +1 -1
  471. package/features/hooks/AdminBeforeWatch/index.js +0 -2
  472. package/features/hooks/AfterBuild/AfterBuild.js +19 -15
  473. package/features/hooks/AfterBuild/AfterBuild.js.map +1 -1
  474. package/features/hooks/AfterBuild/index.js +0 -2
  475. package/features/hooks/AfterDeploy/AfterDeploy.js +19 -15
  476. package/features/hooks/AfterDeploy/AfterDeploy.js.map +1 -1
  477. package/features/hooks/AfterDeploy/index.js +0 -2
  478. package/features/hooks/ApiAfterBuild/ApiBeforeBuild.js +18 -14
  479. package/features/hooks/ApiAfterBuild/ApiBeforeBuild.js.map +1 -1
  480. package/features/hooks/ApiAfterBuild/index.js +0 -2
  481. package/features/hooks/ApiAfterDeploy/ApiBeforeBuild.js +18 -14
  482. package/features/hooks/ApiAfterDeploy/ApiBeforeBuild.js.map +1 -1
  483. package/features/hooks/ApiAfterDeploy/index.js +0 -2
  484. package/features/hooks/ApiBeforeBuild/ApiBeforeBuild.js +18 -14
  485. package/features/hooks/ApiBeforeBuild/ApiBeforeBuild.js.map +1 -1
  486. package/features/hooks/ApiBeforeBuild/index.js +0 -2
  487. package/features/hooks/ApiBeforeDeploy/ApiBeforeDeploy.js +18 -14
  488. package/features/hooks/ApiBeforeDeploy/ApiBeforeDeploy.js.map +1 -1
  489. package/features/hooks/ApiBeforeDeploy/index.js +0 -2
  490. package/features/hooks/ApiBeforeWatch/ApiBeforeWatch.js +18 -14
  491. package/features/hooks/ApiBeforeWatch/ApiBeforeWatch.js.map +1 -1
  492. package/features/hooks/ApiBeforeWatch/index.js +0 -2
  493. package/features/hooks/BeforeBuild/BeforeBuild.js +19 -15
  494. package/features/hooks/BeforeBuild/BeforeBuild.js.map +1 -1
  495. package/features/hooks/BeforeBuild/index.js +0 -2
  496. package/features/hooks/BeforeDeploy/BeforeDeploy.js +19 -15
  497. package/features/hooks/BeforeDeploy/BeforeDeploy.js.map +1 -1
  498. package/features/hooks/BeforeDeploy/index.js +0 -2
  499. package/features/hooks/BeforeWatch/BeforeWatch.js +19 -15
  500. package/features/hooks/BeforeWatch/BeforeWatch.js.map +1 -1
  501. package/features/hooks/BeforeWatch/index.js +0 -2
  502. package/features/hooks/CoreAfterBuild/CoreBeforeBuild.js +18 -14
  503. package/features/hooks/CoreAfterBuild/CoreBeforeBuild.js.map +1 -1
  504. package/features/hooks/CoreAfterBuild/index.js +0 -2
  505. package/features/hooks/CoreAfterDeploy/CoreBeforeBuild.js +18 -14
  506. package/features/hooks/CoreAfterDeploy/CoreBeforeBuild.js.map +1 -1
  507. package/features/hooks/CoreAfterDeploy/index.js +0 -2
  508. package/features/hooks/CoreBeforeBuild/CoreBeforeBuild.js +18 -14
  509. package/features/hooks/CoreBeforeBuild/CoreBeforeBuild.js.map +1 -1
  510. package/features/hooks/CoreBeforeBuild/index.js +0 -2
  511. package/features/hooks/CoreBeforeDeploy/CoreBeforeDeploy.js +18 -14
  512. package/features/hooks/CoreBeforeDeploy/CoreBeforeDeploy.js.map +1 -1
  513. package/features/hooks/CoreBeforeDeploy/index.js +0 -2
  514. package/features/hooks/CoreBeforeWatch/CoreBeforeWatch.js +18 -14
  515. package/features/hooks/CoreBeforeWatch/CoreBeforeWatch.js.map +1 -1
  516. package/features/hooks/CoreBeforeWatch/index.js +0 -2
  517. package/features/hooks/index.js +0 -2
  518. package/features/index.js +0 -2
  519. package/index.js +5 -10
  520. package/index.js.map +1 -1
  521. package/models/AppModel.js +20 -19
  522. package/models/AppModel.js.map +1 -1
  523. package/models/AppPackageModel.js +10 -9
  524. package/models/AppPackageModel.js.map +1 -1
  525. package/models/PathModel.js +23 -26
  526. package/models/PathModel.js.map +1 -1
  527. package/models/ProjectConfigModel.js +12 -16
  528. package/models/ProjectConfigModel.js.map +1 -1
  529. package/models/ProjectModel.js +37 -36
  530. package/models/ProjectModel.js.map +1 -1
  531. package/models/UrlModel.js +23 -23
  532. package/models/UrlModel.js.map +1 -1
  533. package/models/WcpEnvironmentModel.js +23 -22
  534. package/models/WcpEnvironmentModel.js.map +1 -1
  535. package/models/WcpUserModel.js +13 -12
  536. package/models/WcpUserModel.js.map +1 -1
  537. package/models/WcpUserPatModel.js +12 -11
  538. package/models/WcpUserPatModel.js.map +1 -1
  539. package/models/index.js +0 -2
  540. package/package.json +14 -14
  541. package/rslib-runtime.js +14 -0
  542. package/rslib-runtime.js.map +1 -0
  543. package/services/BuildAppWorkspaceService/BuildAppWorkspaceService.js +62 -69
  544. package/services/BuildAppWorkspaceService/BuildAppWorkspaceService.js.map +1 -1
  545. package/services/BuildAppWorkspaceService/index.js +0 -2
  546. package/services/BuildProjectWorkspaceService/BuildProjectWorkspaceService.js +21 -17
  547. package/services/BuildProjectWorkspaceService/BuildProjectWorkspaceService.js.map +1 -1
  548. package/services/BuildProjectWorkspaceService/index.js +0 -2
  549. package/services/GetAppPackagesService/GetAppPackagesService.js +24 -23
  550. package/services/GetAppPackagesService/GetAppPackagesService.js.map +1 -1
  551. package/services/GetAppPackagesService/index.js +0 -2
  552. package/services/GetAppService/GetAppService.js +24 -27
  553. package/services/GetAppService/GetAppService.js.map +1 -1
  554. package/services/GetAppService/index.js +0 -2
  555. package/services/GetCwdService/GetCwdService.js +15 -12
  556. package/services/GetCwdService/GetCwdService.js.map +1 -1
  557. package/services/GetCwdService/index.js +0 -2
  558. package/services/GetProjectConfigService/EnvContext.js +29 -38
  559. package/services/GetProjectConfigService/EnvContext.js.map +1 -1
  560. package/services/GetProjectConfigService/GetProjectConfigService.js +102 -115
  561. package/services/GetProjectConfigService/GetProjectConfigService.js.map +1 -1
  562. package/services/GetProjectConfigService/ProductionEnvironmentsContext.js +13 -18
  563. package/services/GetProjectConfigService/ProductionEnvironmentsContext.js.map +1 -1
  564. package/services/GetProjectConfigService/WcpProjectLicenseContext.js +32 -37
  565. package/services/GetProjectConfigService/WcpProjectLicenseContext.js.map +1 -1
  566. package/services/GetProjectConfigService/index.js +0 -2
  567. package/services/GetProjectConfigService/renderConfig.js +32 -38
  568. package/services/GetProjectConfigService/renderConfig.js.map +1 -1
  569. package/services/GetProjectConfigService/renderConfigWorker.js +37 -48
  570. package/services/GetProjectConfigService/renderConfigWorker.js.map +1 -1
  571. package/services/GetProjectIdService/GetProjectIdService.js +22 -23
  572. package/services/GetProjectIdService/GetProjectIdService.js.map +1 -1
  573. package/services/GetProjectIdService/index.js +0 -2
  574. package/services/GetProjectService/GetProjectService.js +43 -45
  575. package/services/GetProjectService/GetProjectService.js.map +1 -1
  576. package/services/GetProjectService/index.js +0 -2
  577. package/services/GetProjectVersionService/GetProjectVersionService.js +23 -22
  578. package/services/GetProjectVersionService/GetProjectVersionService.js.map +1 -1
  579. package/services/GetProjectVersionService/index.js +0 -2
  580. package/services/GetPulumiService/GetPulumiService.js +36 -41
  581. package/services/GetPulumiService/GetPulumiService.js.map +1 -1
  582. package/services/GetPulumiService/index.js +0 -2
  583. package/services/InitProjectSdkService/InitProjectSdkService.js +36 -46
  584. package/services/InitProjectSdkService/InitProjectSdkService.js.map +1 -1
  585. package/services/InitProjectSdkService/applyEnvVars.js +5 -8
  586. package/services/InitProjectSdkService/applyEnvVars.js.map +1 -1
  587. package/services/InitProjectSdkService/applyWcpEnvVars.js +91 -136
  588. package/services/InitProjectSdkService/applyWcpEnvVars.js.map +1 -1
  589. package/services/InitProjectSdkService/index.js +0 -2
  590. package/services/InitProjectSdkService/registerDecorators.js +10 -7
  591. package/services/InitProjectSdkService/registerDecorators.js.map +1 -1
  592. package/services/InitProjectSdkService/registerHooks.js +30 -7
  593. package/services/InitProjectSdkService/registerHooks.js.map +1 -1
  594. package/services/InitProjectSdkService/registerImplementations.js +10 -11
  595. package/services/InitProjectSdkService/registerImplementations.js.map +1 -1
  596. package/services/InitProjectSdkService/registerPulumiExtensions.js +12 -9
  597. package/services/InitProjectSdkService/registerPulumiExtensions.js.map +1 -1
  598. package/services/InstallExtensionService/InstallExtensionService.js +78 -121
  599. package/services/InstallExtensionService/InstallExtensionService.js.map +1 -1
  600. package/services/InstallExtensionService/downloadFolderFromS3.js +46 -65
  601. package/services/InstallExtensionService/downloadFolderFromS3.js.map +1 -1
  602. package/services/InstallExtensionService/index.js +0 -2
  603. package/services/InstallExtensionService/mergePackageJson.js +15 -25
  604. package/services/InstallExtensionService/mergePackageJson.js.map +1 -1
  605. package/services/InstallExtensionService/types.js +0 -3
  606. package/services/InstallExtensionService/updateWebinyConfig.js +60 -137
  607. package/services/InstallExtensionService/updateWebinyConfig.js.map +1 -1
  608. package/services/IsRemotePulumiBackendService/IsRemotePulumiBackendService.js +9 -17
  609. package/services/IsRemotePulumiBackendService/IsRemotePulumiBackendService.js.map +1 -1
  610. package/services/IsRemotePulumiBackendService/index.js +0 -2
  611. package/services/ListAppLambdaFunctionsService/ListAppLambdaFunctionsService.js +50 -73
  612. package/services/ListAppLambdaFunctionsService/ListAppLambdaFunctionsService.js.map +1 -1
  613. package/services/ListAppLambdaFunctionsService/index.js +0 -2
  614. package/services/ListDeployedEnvironmentsService/ListDeployedEnvironmentsService.js +21 -23
  615. package/services/ListDeployedEnvironmentsService/ListDeployedEnvironmentsService.js.map +1 -1
  616. package/services/ListDeployedEnvironmentsService/index.js +0 -2
  617. package/services/ListPackagesInAppWorkspaceService/ListPackagesInAppWorkspaceService.js +34 -29
  618. package/services/ListPackagesInAppWorkspaceService/ListPackagesInAppWorkspaceService.js.map +1 -1
  619. package/services/ListPackagesInAppWorkspaceService/index.js +0 -2
  620. package/services/ListPackagesService/ListPackagesService.js +81 -114
  621. package/services/ListPackagesService/ListPackagesService.js.map +1 -1
  622. package/services/ListPackagesService/index.js +0 -2
  623. package/services/LoadEnvVarsService/LoadEnvVarsService.js +28 -29
  624. package/services/LoadEnvVarsService/LoadEnvVarsService.js.map +1 -1
  625. package/services/LoadEnvVarsService/index.js +0 -2
  626. package/services/LocalStorageService/LocalStorageService.js +41 -44
  627. package/services/LocalStorageService/LocalStorageService.js.map +1 -1
  628. package/services/LocalStorageService/index.js +0 -2
  629. package/services/LoggerService/LoggerService.js +76 -84
  630. package/services/LoggerService/LoggerService.js.map +1 -1
  631. package/services/LoggerService/index.js +0 -2
  632. package/services/ProjectInfoService/GetIsCiService.js +9 -8
  633. package/services/ProjectInfoService/GetIsCiService.js.map +1 -1
  634. package/services/ProjectInfoService/GetNpmVersionService.js +9 -8
  635. package/services/ProjectInfoService/GetNpmVersionService.js.map +1 -1
  636. package/services/ProjectInfoService/GetNpxVersionService.js +9 -8
  637. package/services/ProjectInfoService/GetNpxVersionService.js.map +1 -1
  638. package/services/ProjectInfoService/GetPulumiVersionService.js +38 -30
  639. package/services/ProjectInfoService/GetPulumiVersionService.js.map +1 -1
  640. package/services/ProjectInfoService/GetYarnVersionService.js +9 -8
  641. package/services/ProjectInfoService/GetYarnVersionService.js.map +1 -1
  642. package/services/ProjectInfoService/ProjectInfoService.js +56 -51
  643. package/services/ProjectInfoService/ProjectInfoService.js.map +1 -1
  644. package/services/ProjectInfoService/index.js +0 -2
  645. package/services/ProjectSdkParamsService/ProjectSdkParamsService.js +37 -34
  646. package/services/ProjectSdkParamsService/ProjectSdkParamsService.js.map +1 -1
  647. package/services/ProjectSdkParamsService/index.js +0 -2
  648. package/services/PulumiExportService/PulumiExportService.js +42 -35
  649. package/services/PulumiExportService/PulumiExportService.js.map +1 -1
  650. package/services/PulumiExportService/index.js +0 -2
  651. package/services/PulumiGetConfigPassphraseService/PulumiGetConfigPassphraseService.js +9 -8
  652. package/services/PulumiGetConfigPassphraseService/PulumiGetConfigPassphraseService.js.map +1 -1
  653. package/services/PulumiGetConfigPassphraseService/index.js +0 -2
  654. package/services/PulumiGetSecretsProviderService/PulumiGetSecretsProviderService.js +9 -8
  655. package/services/PulumiGetSecretsProviderService/PulumiGetSecretsProviderService.js.map +1 -1
  656. package/services/PulumiGetSecretsProviderService/index.js +0 -2
  657. package/services/PulumiGetStackOutputService/PulumiGetStackOutputService.js +108 -100
  658. package/services/PulumiGetStackOutputService/PulumiGetStackOutputService.js.map +1 -1
  659. package/services/PulumiGetStackOutputService/index.js +0 -2
  660. package/services/PulumiGetStackOutputService/mapStackOutput.js +17 -29
  661. package/services/PulumiGetStackOutputService/mapStackOutput.js.map +1 -1
  662. package/services/PulumiImportService/PulumiImportService.js +48 -45
  663. package/services/PulumiImportService/PulumiImportService.js.map +1 -1
  664. package/services/PulumiImportService/index.js +0 -2
  665. package/services/PulumiLoginService/PulumiLoginService.js +43 -40
  666. package/services/PulumiLoginService/PulumiLoginService.js.map +1 -1
  667. package/services/PulumiLoginService/index.js +0 -2
  668. package/services/PulumiSelectStackService/PulumiSelectStackService.js +91 -86
  669. package/services/PulumiSelectStackService/PulumiSelectStackService.js.map +1 -1
  670. package/services/PulumiSelectStackService/index.js +0 -2
  671. package/services/SetProjectIdService/SetProjectIdService.js +43 -57
  672. package/services/SetProjectIdService/SetProjectIdService.js.map +1 -1
  673. package/services/SetProjectIdService/index.js +0 -2
  674. package/services/StdioService/StdioService.js +15 -14
  675. package/services/StdioService/StdioService.js.map +1 -1
  676. package/services/StdioService/index.js +0 -2
  677. package/services/UiService/UiService.js +55 -58
  678. package/services/UiService/UiService.js.map +1 -1
  679. package/services/UiService/index.js +0 -2
  680. package/services/ValidateProjectConfigService/ValidateProjectConfigService.js +18 -19
  681. package/services/ValidateProjectConfigService/ValidateProjectConfigService.js.map +1 -1
  682. package/services/ValidateProjectConfigService/index.js +0 -2
  683. package/services/WatchedLambdaFunctionsService/WatchedLambdaFunctionsService.js +47 -54
  684. package/services/WatchedLambdaFunctionsService/WatchedLambdaFunctionsService.js.map +1 -1
  685. package/services/WatchedLambdaFunctionsService/index.js +0 -2
  686. package/services/WcpService/CreateUserPat.js +20 -23
  687. package/services/WcpService/CreateUserPat.js.map +1 -1
  688. package/services/WcpService/GenerateUserPat.js +15 -18
  689. package/services/WcpService/GenerateUserPat.js.map +1 -1
  690. package/services/WcpService/GetPatFromLocalStorage.js +9 -10
  691. package/services/WcpService/GetPatFromLocalStorage.js.map +1 -1
  692. package/services/WcpService/GetProjectEnvironment.js +34 -47
  693. package/services/WcpService/GetProjectEnvironment.js.map +1 -1
  694. package/services/WcpService/GetProjectLicense.js +28 -38
  695. package/services/WcpService/GetProjectLicense.js.map +1 -1
  696. package/services/WcpService/GetUser.js +43 -46
  697. package/services/WcpService/GetUser.js.map +1 -1
  698. package/services/WcpService/GetUserPat.js +20 -23
  699. package/services/WcpService/GetUserPat.js.map +1 -1
  700. package/services/WcpService/LogoutUser.js +9 -8
  701. package/services/WcpService/LogoutUser.js.map +1 -1
  702. package/services/WcpService/StorePatToLocalStorage.js +9 -10
  703. package/services/WcpService/StorePatToLocalStorage.js.map +1 -1
  704. package/services/WcpService/UnsetPatFromLocalStorage.js +9 -10
  705. package/services/WcpService/UnsetPatFromLocalStorage.js.map +1 -1
  706. package/services/WcpService/WcpGqlClient.js +6 -5
  707. package/services/WcpService/WcpGqlClient.js.map +1 -1
  708. package/services/WcpService/WcpService.js +74 -75
  709. package/services/WcpService/WcpService.js.map +1 -1
  710. package/services/WcpService/index.js +0 -2
  711. package/services/index.js +0 -2
  712. package/utils/ExtensionSrcResolver.js +51 -106
  713. package/utils/ExtensionSrcResolver.js.map +1 -1
  714. package/utils/constants.js +8 -7
  715. package/utils/constants.js.map +1 -1
  716. package/utils/createPathResolver.js +2 -5
  717. package/utils/createPathResolver.js.map +1 -1
  718. package/utils/env/configuration.js +16 -25
  719. package/utils/env/configuration.js.map +1 -1
  720. package/utils/env/index.js +0 -2
  721. package/utils/env/types.js +0 -3
  722. package/utils/env/withEnv.js +4 -7
  723. package/utils/env/withEnv.js.map +1 -1
  724. package/utils/env/withEnvVariant.js +8 -11
  725. package/utils/env/withEnvVariant.js.map +1 -1
  726. package/utils/env/withProjectName.js +4 -9
  727. package/utils/env/withProjectName.js.map +1 -1
  728. package/utils/env/withPulumiConfigPassphrase.js +4 -8
  729. package/utils/env/withPulumiConfigPassphrase.js.map +1 -1
  730. package/utils/env/withRegion.js +10 -17
  731. package/utils/env/withRegion.js.map +1 -1
  732. package/utils/getRandomColorForString.js +86 -8
  733. package/utils/getRandomColorForString.js.map +1 -1
  734. package/utils/getStackName.js +11 -18
  735. package/utils/getStackName.js.map +1 -1
  736. package/utils/getTemplatesFolderPath.js +6 -8
  737. package/utils/getTemplatesFolderPath.js.map +1 -1
  738. package/utils/index.js +0 -2
  739. package/utils/isValidRegionName.js +8 -13
  740. package/utils/isValidRegionName.js.map +1 -1
  741. package/utils/isValidVariantName.js +11 -10
  742. package/utils/isValidVariantName.js.map +1 -1
  743. package/utils/measureDuration.js +7 -8
  744. package/utils/measureDuration.js.map +1 -1
  745. package/utils/projectSdkContext.js +23 -39
  746. package/utils/projectSdkContext.js.map +1 -1
  747. package/utils/regions.js +75 -63
  748. package/utils/regions.js.map +1 -1
  749. package/utils/registerExtension.js +6 -15
  750. package/utils/registerExtension.js.map +1 -1
  751. package/utils/requireConfig.js +7 -12
  752. package/utils/requireConfig.js.map +1 -1
  753. package/utils/toImportSpecifier.js +3 -9
  754. package/utils/toImportSpecifier.js.map +1 -1
  755. package/abstractions/features/hooks/index.js.map +0 -1
  756. package/abstractions/features/index.js.map +0 -1
  757. package/abstractions/index.js.map +0 -1
  758. package/abstractions/models/IAppModel.js.map +0 -1
  759. package/abstractions/models/IAppPackageModel.js.map +0 -1
  760. package/abstractions/models/IPathModel.js.map +0 -1
  761. package/abstractions/models/IProjectConfigDto.js.map +0 -1
  762. package/abstractions/models/IProjectConfigModel.js.map +0 -1
  763. package/abstractions/models/IProjectModel.js.map +0 -1
  764. package/abstractions/models/IUrlModel.js.map +0 -1
  765. package/abstractions/models/IWcpEnvironmentDto.js.map +0 -1
  766. package/abstractions/models/IWcpEnvironmentModel.js.map +0 -1
  767. package/abstractions/models/IWcpUserDto.js.map +0 -1
  768. package/abstractions/models/IWcpUserModel.js.map +0 -1
  769. package/abstractions/models/IWcpUserPatDto.js.map +0 -1
  770. package/abstractions/models/IWcpUserPatModel.js.map +0 -1
  771. package/abstractions/models/PackagesBuilder/IPackagesBuilder.js.map +0 -1
  772. package/abstractions/models/PackagesBuilder/IRunnableBuildProcess.js.map +0 -1
  773. package/abstractions/models/PackagesBuilder/IRunnableBuildProcesses.js.map +0 -1
  774. package/abstractions/models/PackagesBuilder/index.js.map +0 -1
  775. package/abstractions/models/index.js.map +0 -1
  776. package/abstractions/services/ProjectInfoService/index.js.map +0 -1
  777. package/abstractions/services/index.js.map +0 -1
  778. package/abstractions/types.js.map +0 -1
  779. package/decorators/index.js.map +0 -1
  780. package/defineExtension/index.js.map +0 -1
  781. package/defineExtension/models/index.js.map +0 -1
  782. package/defineExtension/types.js.map +0 -1
  783. package/exports/infra/admin.js.map +0 -1
  784. package/exports/infra/api.js.map +0 -1
  785. package/exports/infra/core.js.map +0 -1
  786. package/exports/infra.js.map +0 -1
  787. package/extensions/hooks/index.js.map +0 -1
  788. package/extensions/infra/index.js.map +0 -1
  789. package/extensions/pulumi/index.js.map +0 -1
  790. package/features/BuildApp/index.js.map +0 -1
  791. package/features/DeployApp/index.js.map +0 -1
  792. package/features/DestroyApp/index.js.map +0 -1
  793. package/features/ExportStack/index.js.map +0 -1
  794. package/features/GetApp/index.js.map +0 -1
  795. package/features/GetAppOutput/index.js.map +0 -1
  796. package/features/GetAppStackOutput/index.js.map +0 -1
  797. package/features/GetFeatureFlags/index.js.map +0 -1
  798. package/features/GetLogger/index.js.map +0 -1
  799. package/features/GetProductionEnvironments/index.js.map +0 -1
  800. package/features/GetProject/index.js.map +0 -1
  801. package/features/GetProjectConfig/index.js.map +0 -1
  802. package/features/GetProjectInfo/index.js.map +0 -1
  803. package/features/GetPulumiResourceNamePrefix/index.js.map +0 -1
  804. package/features/InstallExtension/index.js.map +0 -1
  805. package/features/IsCi/index.js.map +0 -1
  806. package/features/IsTelemetryEnabled/index.js.map +0 -1
  807. package/features/IsWcpEnabled/index.js.map +0 -1
  808. package/features/IsWebinyJsRepo/index.js.map +0 -1
  809. package/features/RefreshApp/index.js.map +0 -1
  810. package/features/RunPulumiCommand/index.js.map +0 -1
  811. package/features/ValidateProjectConfig/index.js.map +0 -1
  812. package/features/Watch/index.js.map +0 -1
  813. package/features/hooks/AdminAfterBuild/index.js.map +0 -1
  814. package/features/hooks/AdminAfterDeploy/index.js.map +0 -1
  815. package/features/hooks/AdminBeforeBuild/index.js.map +0 -1
  816. package/features/hooks/AdminBeforeDeploy/index.js.map +0 -1
  817. package/features/hooks/AdminBeforeWatch/index.js.map +0 -1
  818. package/features/hooks/AfterBuild/index.js.map +0 -1
  819. package/features/hooks/AfterDeploy/index.js.map +0 -1
  820. package/features/hooks/ApiAfterBuild/index.js.map +0 -1
  821. package/features/hooks/ApiAfterDeploy/index.js.map +0 -1
  822. package/features/hooks/ApiBeforeBuild/index.js.map +0 -1
  823. package/features/hooks/ApiBeforeDeploy/index.js.map +0 -1
  824. package/features/hooks/ApiBeforeWatch/index.js.map +0 -1
  825. package/features/hooks/BeforeBuild/index.js.map +0 -1
  826. package/features/hooks/BeforeDeploy/index.js.map +0 -1
  827. package/features/hooks/BeforeWatch/index.js.map +0 -1
  828. package/features/hooks/CoreAfterBuild/index.js.map +0 -1
  829. package/features/hooks/CoreAfterDeploy/index.js.map +0 -1
  830. package/features/hooks/CoreBeforeBuild/index.js.map +0 -1
  831. package/features/hooks/CoreBeforeDeploy/index.js.map +0 -1
  832. package/features/hooks/CoreBeforeWatch/index.js.map +0 -1
  833. package/features/hooks/index.js.map +0 -1
  834. package/features/index.js.map +0 -1
  835. package/models/index.js.map +0 -1
  836. package/services/BuildAppWorkspaceService/index.js.map +0 -1
  837. package/services/BuildProjectWorkspaceService/index.js.map +0 -1
  838. package/services/GetAppPackagesService/index.js.map +0 -1
  839. package/services/GetAppService/index.js.map +0 -1
  840. package/services/GetCwdService/index.js.map +0 -1
  841. package/services/GetProjectConfigService/index.js.map +0 -1
  842. package/services/GetProjectIdService/index.js.map +0 -1
  843. package/services/GetProjectService/index.js.map +0 -1
  844. package/services/GetProjectVersionService/index.js.map +0 -1
  845. package/services/GetPulumiService/index.js.map +0 -1
  846. package/services/InitProjectSdkService/index.js.map +0 -1
  847. package/services/InstallExtensionService/index.js.map +0 -1
  848. package/services/InstallExtensionService/types.js.map +0 -1
  849. package/services/IsRemotePulumiBackendService/index.js.map +0 -1
  850. package/services/ListAppLambdaFunctionsService/index.js.map +0 -1
  851. package/services/ListDeployedEnvironmentsService/index.js.map +0 -1
  852. package/services/ListPackagesInAppWorkspaceService/index.js.map +0 -1
  853. package/services/ListPackagesService/index.js.map +0 -1
  854. package/services/LoadEnvVarsService/index.js.map +0 -1
  855. package/services/LocalStorageService/index.js.map +0 -1
  856. package/services/LoggerService/index.js.map +0 -1
  857. package/services/ProjectInfoService/index.js.map +0 -1
  858. package/services/ProjectSdkParamsService/index.js.map +0 -1
  859. package/services/PulumiExportService/index.js.map +0 -1
  860. package/services/PulumiGetConfigPassphraseService/index.js.map +0 -1
  861. package/services/PulumiGetSecretsProviderService/index.js.map +0 -1
  862. package/services/PulumiGetStackOutputService/index.js.map +0 -1
  863. package/services/PulumiImportService/index.js.map +0 -1
  864. package/services/PulumiLoginService/index.js.map +0 -1
  865. package/services/PulumiSelectStackService/index.js.map +0 -1
  866. package/services/SetProjectIdService/index.js.map +0 -1
  867. package/services/StdioService/index.js.map +0 -1
  868. package/services/UiService/index.js.map +0 -1
  869. package/services/ValidateProjectConfigService/index.js.map +0 -1
  870. package/services/WatchedLambdaFunctionsService/index.js.map +0 -1
  871. package/services/WcpService/index.js.map +0 -1
  872. package/services/index.js.map +0 -1
  873. package/utils/env/index.js.map +0 -1
  874. package/utils/env/types.js.map +0 -1
  875. package/utils/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["z","defineExtension","crypto","path","fs","Node","Project","generateBuildParamsFeature","buildParamsDir","ctx","featureFilePath","join","files","readdirSync","filter","f","startsWith","endsWith","imports","map","file","className","parse","name","registrations","featureContent","writeFileSync","updateExtensionsTsx","extensionsTsxFilePath","project","paths","workspaceFolder","toString","addSourceFileAtPath","source","getSourceFileOrThrow","buildParamsFeatureImport","existingFeatureImport","getImportDeclaration","index","importDeclarations","getImportDeclarations","length","last","getChildIndex","insertImportDeclaration","namedImports","moduleSpecifier","buildParamsFeatureImportPath","existingBuildParamsImport","getNamedImports","hasBuildParamsFeature","some","ni","getName","addNamedImport","registerFeatureImportPath","existingRegisterFeatureImport","hasRegisterFeature","extensionsIdentifier","getFirstDescendant","node","isIdentifier","getText","Error","extensionsArrowFn","getNextSibling","isArrowFunction","extensionsArrowFnFragment","isJsxFragment","currentContent","getFullText","replace","trim","includes","newContent","replaceWithText","save","AdminBuildParam","type","tags","runtimeContext","appName","description","multiple","paramsSchema","object","paramName","string","value","union","record","any","array","number","boolean","build","params","valueStr","JSON","stringify","hash","createHash","update","digest","slice","fileName","filePath","existsSync","mkdirSync","recursive","fileContent"],"sources":["AdminBuildParam.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { defineExtension } from \"~/defineExtension/index.js\";\nimport crypto from \"crypto\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport { Node, Project } from \"ts-morph\";\n\nasync function generateBuildParamsFeature(buildParamsDir: string, ctx: any) {\n const featureFilePath = path.join(buildParamsDir, \"feature.ts\");\n\n // Get all BuildParam_*.ts files.\n const files = fs\n .readdirSync(buildParamsDir)\n .filter(f => f.startsWith(\"BuildParam_\") && f.endsWith(\".ts\") && f !== \"feature.ts\");\n\n // Generate imports and registrations.\n const imports = files\n .map(file => {\n const className = path.parse(file).name;\n return `import ${className} from \"./${className}.js\";`;\n })\n .join(\"\\n\");\n\n const registrations = files\n .map(file => {\n const className = path.parse(file).name;\n return ` container.register(${className});`;\n })\n .join(\"\\n\");\n\n const featureContent = `import { createFeature } from \"@webiny/feature/admin\";\nimport { Container } from \"@webiny/di\";\n${imports}\n\nexport const BuildParamsInternalFeature = createFeature({\n name: \"BuildParamsInternal\",\n register(container: Container) {\n${registrations}\n }\n});\n`;\n\n fs.writeFileSync(featureFilePath, featureContent, \"utf8\");\n\n // Now we need to update Extensions.tsx to use RegisterFeature with this feature.\n await updateExtensionsTsx(ctx);\n}\n\nasync function updateExtensionsTsx(ctx: any) {\n const extensionsTsxFilePath = ctx.project.paths.workspaceFolder\n .join(\"apps\", \"admin\", \"src\", \"Extensions.tsx\")\n .toString();\n\n const project = new Project();\n project.addSourceFileAtPath(extensionsTsxFilePath);\n\n const source = project.getSourceFileOrThrow(extensionsTsxFilePath);\n\n // Check if we already have the imports.\n const buildParamsFeatureImport = \"./buildParams/feature.js\";\n const existingFeatureImport = source.getImportDeclaration(buildParamsFeatureImport);\n\n if (!existingFeatureImport) {\n let index = 1;\n const importDeclarations = source.getImportDeclarations();\n if (importDeclarations.length) {\n const last = importDeclarations[importDeclarations.length - 1];\n index = last.getChildIndex() + 1;\n }\n\n // Add import for BuildParamsInternalFeature.\n source.insertImportDeclaration(index, {\n namedImports: [\"BuildParamsInternalFeature\"],\n moduleSpecifier: buildParamsFeatureImport\n });\n\n // Add import for BuildParamsFeature.\n const buildParamsFeatureImportPath = \"@webiny/app-admin\";\n const existingBuildParamsImport = source.getImportDeclaration(buildParamsFeatureImportPath);\n\n if (!existingBuildParamsImport) {\n source.insertImportDeclaration(index, {\n namedImports: [\"BuildParamsFeature\"],\n moduleSpecifier: buildParamsFeatureImportPath\n });\n } else {\n // Add to existing import if BuildParamsFeature not already there.\n const namedImports = existingBuildParamsImport.getNamedImports();\n const hasBuildParamsFeature = namedImports.some(\n ni => ni.getName() === \"BuildParamsFeature\"\n );\n if (!hasBuildParamsFeature) {\n existingBuildParamsImport.addNamedImport(\"BuildParamsFeature\");\n }\n }\n\n // Add import for RegisterFeature if not present.\n const registerFeatureImportPath = \"@webiny/app-admin\";\n const existingRegisterFeatureImport =\n source.getImportDeclaration(registerFeatureImportPath);\n\n if (existingRegisterFeatureImport) {\n const namedImports = existingRegisterFeatureImport.getNamedImports();\n const hasRegisterFeature = namedImports.some(ni => ni.getName() === \"RegisterFeature\");\n if (!hasRegisterFeature) {\n existingRegisterFeatureImport.addNamedImport(\"RegisterFeature\");\n }\n } else {\n source.insertImportDeclaration(index, {\n namedImports: [\"RegisterFeature\"],\n moduleSpecifier: registerFeatureImportPath\n });\n }\n }\n\n // Now add <RegisterFeature> components to the Extensions component.\n const extensionsIdentifier = source.getFirstDescendant(node => {\n if (!Node.isIdentifier(node)) {\n return false;\n }\n return node.getText() === \"Extensions\";\n });\n\n if (!extensionsIdentifier) {\n throw new Error(\n `Could not find the \"Extensions\" React component in \"${extensionsTsxFilePath}\".`\n );\n }\n\n const extensionsArrowFn = extensionsIdentifier.getNextSibling(node =>\n Node.isArrowFunction(node)\n );\n\n if (!extensionsArrowFn) {\n throw new Error(`Could not find the \"Extensions\" React component arrow function.`);\n }\n\n const extensionsArrowFnFragment = extensionsArrowFn.getFirstDescendant(node => {\n return Node.isJsxFragment(node);\n });\n\n if (!extensionsArrowFnFragment) {\n throw new Error(`Could not find JSX fragment in Extensions component.`);\n }\n\n const currentContent = extensionsArrowFnFragment\n .getFullText()\n .replace(\"<>\", \"\")\n .replace(\"</>\", \"\")\n .trim();\n\n // Check if we already have the RegisterFeature components.\n if (!currentContent.includes(\"BuildParamsFeature\")) {\n const newContent = `<><RegisterFeature feature={BuildParamsFeature} /><RegisterFeature feature={BuildParamsInternalFeature} />${currentContent}</>`;\n extensionsArrowFnFragment.replaceWithText(newContent);\n }\n\n await source.save();\n}\n\nexport const AdminBuildParam = defineExtension({\n type: \"Admin/BuildParam\",\n tags: { runtimeContext: \"app-build\", appName: \"admin\" },\n description: \"Add build-time parameter to Admin app.\",\n multiple: true,\n paramsSchema: () => {\n return z.object({\n paramName: z.string(),\n value: z.union([\n z.string(),\n z.record(z.string(), z.any()),\n z.array(z.any()),\n z.number(),\n z.boolean()\n ])\n });\n },\n async build(params, ctx) {\n const buildParamsDir = ctx.project.paths.workspaceFolder\n .join(\"apps\", \"admin\", \"src\", \"buildParams\")\n .toString();\n\n const { paramName, value } = params;\n\n // Serialize value to a TypeScript literal.\n const valueStr = JSON.stringify(value, null, 4);\n\n // Generate a unique class name based on the paramName.\n const hash = crypto.createHash(\"sha256\").update(paramName).digest(\"hex\");\n const className = `BuildParam_${hash.slice(-10)}`;\n const fileName = `${className}.ts`;\n const filePath = path.join(buildParamsDir, fileName);\n\n // Ensure buildParams directory exists.\n if (!fs.existsSync(buildParamsDir)) {\n fs.mkdirSync(buildParamsDir, { recursive: true });\n }\n\n // Check if file already exists.\n if (!fs.existsSync(filePath)) {\n // Create the BuildParam implementation file.\n const fileContent = `import { BuildParam } from \"webiny/admin/build-params\";\n\nclass ${className} implements BuildParam.Interface {\n key = \"${paramName}\";\n value = ${valueStr};\n}\n\nexport default BuildParam.createImplementation({\n implementation: ${className},\n dependencies: []\n});\n`;\n fs.writeFileSync(filePath, fileContent, \"utf8\");\n }\n\n // Now we need to generate/update the feature file that imports all BuildParams.\n await generateBuildParamsFeature(buildParamsDir, ctx);\n }\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"extensions/AdminBuildParam.js","sources":["../../src/extensions/AdminBuildParam.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { defineExtension } from \"~/defineExtension/index.js\";\nimport crypto from \"crypto\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport { Node, Project } from \"ts-morph\";\n\nasync function generateBuildParamsFeature(buildParamsDir: string, ctx: any) {\n const featureFilePath = path.join(buildParamsDir, \"feature.ts\");\n\n // Get all BuildParam_*.ts files.\n const files = fs\n .readdirSync(buildParamsDir)\n .filter(f => f.startsWith(\"BuildParam_\") && f.endsWith(\".ts\") && f !== \"feature.ts\");\n\n // Generate imports and registrations.\n const imports = files\n .map(file => {\n const className = path.parse(file).name;\n return `import ${className} from \"./${className}.js\";`;\n })\n .join(\"\\n\");\n\n const registrations = files\n .map(file => {\n const className = path.parse(file).name;\n return ` container.register(${className});`;\n })\n .join(\"\\n\");\n\n const featureContent = `import { createFeature } from \"@webiny/feature/admin\";\nimport { Container } from \"@webiny/di\";\n${imports}\n\nexport const BuildParamsInternalFeature = createFeature({\n name: \"BuildParamsInternal\",\n register(container: Container) {\n${registrations}\n }\n});\n`;\n\n fs.writeFileSync(featureFilePath, featureContent, \"utf8\");\n\n // Now we need to update Extensions.tsx to use RegisterFeature with this feature.\n await updateExtensionsTsx(ctx);\n}\n\nasync function updateExtensionsTsx(ctx: any) {\n const extensionsTsxFilePath = ctx.project.paths.workspaceFolder\n .join(\"apps\", \"admin\", \"src\", \"Extensions.tsx\")\n .toString();\n\n const project = new Project();\n project.addSourceFileAtPath(extensionsTsxFilePath);\n\n const source = project.getSourceFileOrThrow(extensionsTsxFilePath);\n\n // Check if we already have the imports.\n const buildParamsFeatureImport = \"./buildParams/feature.js\";\n const existingFeatureImport = source.getImportDeclaration(buildParamsFeatureImport);\n\n if (!existingFeatureImport) {\n let index = 1;\n const importDeclarations = source.getImportDeclarations();\n if (importDeclarations.length) {\n const last = importDeclarations[importDeclarations.length - 1];\n index = last.getChildIndex() + 1;\n }\n\n // Add import for BuildParamsInternalFeature.\n source.insertImportDeclaration(index, {\n namedImports: [\"BuildParamsInternalFeature\"],\n moduleSpecifier: buildParamsFeatureImport\n });\n\n // Add import for BuildParamsFeature.\n const buildParamsFeatureImportPath = \"@webiny/app-admin\";\n const existingBuildParamsImport = source.getImportDeclaration(buildParamsFeatureImportPath);\n\n if (!existingBuildParamsImport) {\n source.insertImportDeclaration(index, {\n namedImports: [\"BuildParamsFeature\"],\n moduleSpecifier: buildParamsFeatureImportPath\n });\n } else {\n // Add to existing import if BuildParamsFeature not already there.\n const namedImports = existingBuildParamsImport.getNamedImports();\n const hasBuildParamsFeature = namedImports.some(\n ni => ni.getName() === \"BuildParamsFeature\"\n );\n if (!hasBuildParamsFeature) {\n existingBuildParamsImport.addNamedImport(\"BuildParamsFeature\");\n }\n }\n\n // Add import for RegisterFeature if not present.\n const registerFeatureImportPath = \"@webiny/app-admin\";\n const existingRegisterFeatureImport =\n source.getImportDeclaration(registerFeatureImportPath);\n\n if (existingRegisterFeatureImport) {\n const namedImports = existingRegisterFeatureImport.getNamedImports();\n const hasRegisterFeature = namedImports.some(ni => ni.getName() === \"RegisterFeature\");\n if (!hasRegisterFeature) {\n existingRegisterFeatureImport.addNamedImport(\"RegisterFeature\");\n }\n } else {\n source.insertImportDeclaration(index, {\n namedImports: [\"RegisterFeature\"],\n moduleSpecifier: registerFeatureImportPath\n });\n }\n }\n\n // Now add <RegisterFeature> components to the Extensions component.\n const extensionsIdentifier = source.getFirstDescendant(node => {\n if (!Node.isIdentifier(node)) {\n return false;\n }\n return node.getText() === \"Extensions\";\n });\n\n if (!extensionsIdentifier) {\n throw new Error(\n `Could not find the \"Extensions\" React component in \"${extensionsTsxFilePath}\".`\n );\n }\n\n const extensionsArrowFn = extensionsIdentifier.getNextSibling(node =>\n Node.isArrowFunction(node)\n );\n\n if (!extensionsArrowFn) {\n throw new Error(`Could not find the \"Extensions\" React component arrow function.`);\n }\n\n const extensionsArrowFnFragment = extensionsArrowFn.getFirstDescendant(node => {\n return Node.isJsxFragment(node);\n });\n\n if (!extensionsArrowFnFragment) {\n throw new Error(`Could not find JSX fragment in Extensions component.`);\n }\n\n const currentContent = extensionsArrowFnFragment\n .getFullText()\n .replace(\"<>\", \"\")\n .replace(\"</>\", \"\")\n .trim();\n\n // Check if we already have the RegisterFeature components.\n if (!currentContent.includes(\"BuildParamsFeature\")) {\n const newContent = `<><RegisterFeature feature={BuildParamsFeature} /><RegisterFeature feature={BuildParamsInternalFeature} />${currentContent}</>`;\n extensionsArrowFnFragment.replaceWithText(newContent);\n }\n\n await source.save();\n}\n\nexport const AdminBuildParam = defineExtension({\n type: \"Admin/BuildParam\",\n tags: { runtimeContext: \"app-build\", appName: \"admin\" },\n description: \"Add build-time parameter to Admin app.\",\n multiple: true,\n paramsSchema: () => {\n return z.object({\n paramName: z.string(),\n value: z.union([\n z.string(),\n z.record(z.string(), z.any()),\n z.array(z.any()),\n z.number(),\n z.boolean()\n ])\n });\n },\n async build(params, ctx) {\n const buildParamsDir = ctx.project.paths.workspaceFolder\n .join(\"apps\", \"admin\", \"src\", \"buildParams\")\n .toString();\n\n const { paramName, value } = params;\n\n // Serialize value to a TypeScript literal.\n const valueStr = JSON.stringify(value, null, 4);\n\n // Generate a unique class name based on the paramName.\n const hash = crypto.createHash(\"sha256\").update(paramName).digest(\"hex\");\n const className = `BuildParam_${hash.slice(-10)}`;\n const fileName = `${className}.ts`;\n const filePath = path.join(buildParamsDir, fileName);\n\n // Ensure buildParams directory exists.\n if (!fs.existsSync(buildParamsDir)) {\n fs.mkdirSync(buildParamsDir, { recursive: true });\n }\n\n // Check if file already exists.\n if (!fs.existsSync(filePath)) {\n // Create the BuildParam implementation file.\n const fileContent = `import { BuildParam } from \"webiny/admin/build-params\";\n\nclass ${className} implements BuildParam.Interface {\n key = \"${paramName}\";\n value = ${valueStr};\n}\n\nexport default BuildParam.createImplementation({\n implementation: ${className},\n dependencies: []\n});\n`;\n fs.writeFileSync(filePath, fileContent, \"utf8\");\n }\n\n // Now we need to generate/update the feature file that imports all BuildParams.\n await generateBuildParamsFeature(buildParamsDir, ctx);\n }\n});\n"],"names":["generateBuildParamsFeature","buildParamsDir","ctx","featureFilePath","path","files","fs","f","imports","file","className","registrations","featureContent","updateExtensionsTsx","extensionsTsxFilePath","project","Project","source","buildParamsFeatureImport","existingFeatureImport","index","importDeclarations","last","buildParamsFeatureImportPath","existingBuildParamsImport","namedImports","hasBuildParamsFeature","ni","registerFeatureImportPath","existingRegisterFeatureImport","hasRegisterFeature","extensionsIdentifier","node","Node","Error","extensionsArrowFn","extensionsArrowFnFragment","currentContent","newContent","AdminBuildParam","defineExtension","z","params","paramName","value","valueStr","JSON","hash","crypto","fileName","filePath","fileContent"],"mappings":"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"}
@@ -3,97 +3,71 @@ import { ExtensionSrcResolver } from "@webiny/project";
3
3
  import { z } from "zod";
4
4
  import path from "path";
5
5
  import { Node, Project } from "ts-morph";
6
- import crypto from "crypto";
7
- export const AdminExtension = defineExtension({
8
- type: "Admin/Extension",
9
- tags: {
10
- runtimeContext: "app-build",
11
- appName: "admin"
12
- },
13
- description: "Extend the Admin application with custom functionality.",
14
- multiple: true,
15
- paramsSchema: ({
16
- project
17
- }) => {
18
- return z.object({
19
- src: zodSrcPath({
20
- project
21
- }),
22
- exportName: z.string().optional()
23
- });
24
- },
25
- async build(params, ctx) {
26
- const extensionsTsxFilePath = ctx.project.paths.workspaceFolder.join("apps", "admin", "src", "Extensions.tsx").toString();
27
- const {
28
- src: extensionFilePath
29
- } = params;
30
-
31
- // Resolve to absolute path for file operations.
32
- const absoluteExtensionFilePath = ExtensionSrcResolver.resolvePath(extensionFilePath, ctx.project);
33
- const extensionFileName = path.basename(absoluteExtensionFilePath);
34
-
35
- // Export name can be customized or defaults to the file name without extension.
36
- const exportName = params.exportName ?? path.parse(extensionFileName).name;
37
-
38
- // Generate a constant hash-based component name to avoid using timestamps.
39
- const hash = crypto.createHash("sha256").update(extensionFilePath).digest("hex");
40
- const componentName = `AdminExtension_${hash.slice(-10)}`;
41
- const project = new Project();
42
- const importPath = path.relative(path.dirname(extensionsTsxFilePath), absoluteExtensionFilePath).replace(/\.tsx?$/, ".js");
43
- project.addSourceFileAtPath(extensionsTsxFilePath);
44
- const source = project.getSourceFileOrThrow(extensionsTsxFilePath);
45
- const existingImportDeclaration = source.getImportDeclaration(importPath);
46
- if (existingImportDeclaration) {
47
- return;
48
- }
49
-
50
- // Check if the extension file has a default export or named export.
51
- const extensionProject = new Project();
52
- extensionProject.addSourceFileAtPath(absoluteExtensionFilePath);
53
- const extensionSource = extensionProject.getSourceFileOrThrow(absoluteExtensionFilePath);
54
- const hasDefaultExport = extensionSource.getDefaultExportSymbol() !== undefined;
55
- let index = 1;
56
- const importDeclarations = source.getImportDeclarations();
57
- if (importDeclarations.length) {
58
- const last = importDeclarations[importDeclarations.length - 1];
59
- index = last.getChildIndex() + 1;
60
- }
61
-
62
- // Import as default export if available, otherwise import named export.
63
- if (hasDefaultExport) {
64
- source.insertImportDeclaration(index, {
65
- defaultImport: componentName,
66
- moduleSpecifier: importPath
67
- });
68
- } else {
69
- source.insertImportDeclaration(index, {
70
- namedImports: [{
71
- name: exportName,
72
- alias: componentName
73
- }],
74
- moduleSpecifier: importPath
75
- });
76
- }
77
- const extensionsIdentifier = source.getFirstDescendant(node => {
78
- if (!Node.isIdentifier(node)) {
79
- return false;
80
- }
81
- return node.getText() === "Extensions";
82
- });
83
- if (!extensionsIdentifier) {
84
- throw new Error(`Could not find the "Extensions" React component in "${extensionsTsxFilePath}". Did you maybe change the name of the component?`);
85
- }
86
- const extensionsArrowFn = extensionsIdentifier.getNextSibling(node => Node.isArrowFunction(node));
87
- if (!extensionsArrowFn) {
88
- throw new Error(`Could not find the "Extensions" React component in "${extensionsTsxFilePath}". Did you maybe change its definition? It should be an arrow function.`);
6
+ import crypto_0 from "crypto";
7
+ const AdminExtension = defineExtension({
8
+ type: "Admin/Extension",
9
+ tags: {
10
+ runtimeContext: "app-build",
11
+ appName: "admin"
12
+ },
13
+ description: "Extend the Admin application with custom functionality.",
14
+ multiple: true,
15
+ paramsSchema: ({ project })=>z.object({
16
+ src: zodSrcPath({
17
+ project
18
+ }),
19
+ exportName: z.string().optional()
20
+ }),
21
+ async build (params, ctx) {
22
+ const extensionsTsxFilePath = ctx.project.paths.workspaceFolder.join("apps", "admin", "src", "Extensions.tsx").toString();
23
+ const { src: extensionFilePath } = params;
24
+ const absoluteExtensionFilePath = ExtensionSrcResolver.resolvePath(extensionFilePath, ctx.project);
25
+ const extensionFileName = path.basename(absoluteExtensionFilePath);
26
+ const exportName = params.exportName ?? path.parse(extensionFileName).name;
27
+ const hash = crypto_0.createHash("sha256").update(extensionFilePath).digest("hex");
28
+ const componentName = `AdminExtension_${hash.slice(-10)}`;
29
+ const project = new Project();
30
+ const importPath = path.relative(path.dirname(extensionsTsxFilePath), absoluteExtensionFilePath).replace(/\.tsx?$/, ".js");
31
+ project.addSourceFileAtPath(extensionsTsxFilePath);
32
+ const source = project.getSourceFileOrThrow(extensionsTsxFilePath);
33
+ const existingImportDeclaration = source.getImportDeclaration(importPath);
34
+ if (existingImportDeclaration) return;
35
+ const extensionProject = new Project();
36
+ extensionProject.addSourceFileAtPath(absoluteExtensionFilePath);
37
+ const extensionSource = extensionProject.getSourceFileOrThrow(absoluteExtensionFilePath);
38
+ const hasDefaultExport = void 0 !== extensionSource.getDefaultExportSymbol();
39
+ let index = 1;
40
+ const importDeclarations = source.getImportDeclarations();
41
+ if (importDeclarations.length) {
42
+ const last = importDeclarations[importDeclarations.length - 1];
43
+ index = last.getChildIndex() + 1;
44
+ }
45
+ if (hasDefaultExport) source.insertImportDeclaration(index, {
46
+ defaultImport: componentName,
47
+ moduleSpecifier: importPath
48
+ });
49
+ else source.insertImportDeclaration(index, {
50
+ namedImports: [
51
+ {
52
+ name: exportName,
53
+ alias: componentName
54
+ }
55
+ ],
56
+ moduleSpecifier: importPath
57
+ });
58
+ const extensionsIdentifier = source.getFirstDescendant((node)=>{
59
+ if (!Node.isIdentifier(node)) return false;
60
+ return "Extensions" === node.getText();
61
+ });
62
+ if (!extensionsIdentifier) throw new Error(`Could not find the "Extensions" React component in "${extensionsTsxFilePath}". Did you maybe change the name of the component?`);
63
+ const extensionsArrowFn = extensionsIdentifier.getNextSibling((node)=>Node.isArrowFunction(node));
64
+ if (!extensionsArrowFn) throw new Error(`Could not find the "Extensions" React component in "${extensionsTsxFilePath}". Did you maybe change its definition? It should be an arrow function.`);
65
+ const extensionsArrowFnFragment = extensionsArrowFn.getFirstDescendant((node)=>Node.isJsxFragment(node));
66
+ const extensionsArrowFnFragmentChildrenText = extensionsArrowFnFragment.getFullText().replace("<>", "").replace("</>", "").trim();
67
+ extensionsArrowFnFragment.replaceWithText(`<><${componentName}/>${extensionsArrowFnFragmentChildrenText}</>`);
68
+ await source.save();
89
69
  }
90
- const extensionsArrowFnFragment = extensionsArrowFn.getFirstDescendant(node => {
91
- return Node.isJsxFragment(node);
92
- });
93
- const extensionsArrowFnFragmentChildrenText = extensionsArrowFnFragment.getFullText().replace("<>", "").replace("</>", "").trim();
94
- extensionsArrowFnFragment.replaceWithText(`<><${componentName}/>${extensionsArrowFnFragmentChildrenText}</>`);
95
- await source.save();
96
- }
97
70
  });
71
+ export { AdminExtension };
98
72
 
99
73
  //# sourceMappingURL=AdminExtension.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["defineExtension","zodSrcPath","ExtensionSrcResolver","z","path","Node","Project","crypto","AdminExtension","type","tags","runtimeContext","appName","description","multiple","paramsSchema","project","object","src","exportName","string","optional","build","params","ctx","extensionsTsxFilePath","paths","workspaceFolder","join","toString","extensionFilePath","absoluteExtensionFilePath","resolvePath","extensionFileName","basename","parse","name","hash","createHash","update","digest","componentName","slice","importPath","relative","dirname","replace","addSourceFileAtPath","source","getSourceFileOrThrow","existingImportDeclaration","getImportDeclaration","extensionProject","extensionSource","hasDefaultExport","getDefaultExportSymbol","undefined","index","importDeclarations","getImportDeclarations","length","last","getChildIndex","insertImportDeclaration","defaultImport","moduleSpecifier","namedImports","alias","extensionsIdentifier","getFirstDescendant","node","isIdentifier","getText","Error","extensionsArrowFn","getNextSibling","isArrowFunction","extensionsArrowFnFragment","isJsxFragment","extensionsArrowFnFragmentChildrenText","getFullText","trim","replaceWithText","save"],"sources":["AdminExtension.ts"],"sourcesContent":["import { defineExtension, zodSrcPath } from \"~/extensions/index.js\";\nimport { ExtensionSrcResolver } from \"@webiny/project\";\nimport { z } from \"zod\";\nimport path from \"path\";\nimport { type JsxFragment, Node, Project } from \"ts-morph\";\nimport crypto from \"crypto\";\n\nexport const AdminExtension = defineExtension({\n type: \"Admin/Extension\",\n tags: { runtimeContext: \"app-build\", appName: \"admin\" },\n description: \"Extend the Admin application with custom functionality.\",\n multiple: true,\n paramsSchema: ({ project }) => {\n return z.object({\n src: zodSrcPath({ project }),\n exportName: z.string().optional()\n });\n },\n async build(params, ctx) {\n const extensionsTsxFilePath = ctx.project.paths.workspaceFolder\n .join(\"apps\", \"admin\", \"src\", \"Extensions.tsx\")\n .toString();\n\n const { src: extensionFilePath } = params;\n\n // Resolve to absolute path for file operations.\n const absoluteExtensionFilePath = ExtensionSrcResolver.resolvePath(\n extensionFilePath,\n ctx.project\n );\n\n const extensionFileName = path.basename(absoluteExtensionFilePath);\n\n // Export name can be customized or defaults to the file name without extension.\n const exportName = params.exportName ?? path.parse(extensionFileName).name;\n\n // Generate a constant hash-based component name to avoid using timestamps.\n const hash = crypto.createHash(\"sha256\").update(extensionFilePath).digest(\"hex\");\n const componentName = `AdminExtension_${hash.slice(-10)}`;\n\n const project = new Project();\n\n const importPath = path\n .relative(path.dirname(extensionsTsxFilePath), absoluteExtensionFilePath)\n .replace(/\\.tsx?$/, \".js\");\n\n project.addSourceFileAtPath(extensionsTsxFilePath);\n\n const source = project.getSourceFileOrThrow(extensionsTsxFilePath);\n\n const existingImportDeclaration = source.getImportDeclaration(importPath);\n if (existingImportDeclaration) {\n return;\n }\n\n // Check if the extension file has a default export or named export.\n const extensionProject = new Project();\n extensionProject.addSourceFileAtPath(absoluteExtensionFilePath);\n const extensionSource = extensionProject.getSourceFileOrThrow(absoluteExtensionFilePath);\n const hasDefaultExport = extensionSource.getDefaultExportSymbol() !== undefined;\n\n let index = 1;\n\n const importDeclarations = source.getImportDeclarations();\n if (importDeclarations.length) {\n const last = importDeclarations[importDeclarations.length - 1];\n index = last.getChildIndex() + 1;\n }\n\n // Import as default export if available, otherwise import named export.\n if (hasDefaultExport) {\n source.insertImportDeclaration(index, {\n defaultImport: componentName,\n moduleSpecifier: importPath\n });\n } else {\n source.insertImportDeclaration(index, {\n namedImports: [{ name: exportName, alias: componentName }],\n moduleSpecifier: importPath\n });\n }\n\n const extensionsIdentifier = source.getFirstDescendant(node => {\n if (!Node.isIdentifier(node)) {\n return false;\n }\n\n return node.getText() === \"Extensions\";\n });\n\n if (!extensionsIdentifier) {\n throw new Error(\n `Could not find the \"Extensions\" React component in \"${extensionsTsxFilePath}\". Did you maybe change the name of the component?`\n );\n }\n\n const extensionsArrowFn = extensionsIdentifier.getNextSibling(node =>\n Node.isArrowFunction(node)\n );\n if (!extensionsArrowFn) {\n throw new Error(\n `Could not find the \"Extensions\" React component in \"${extensionsTsxFilePath}\". Did you maybe change its definition? It should be an arrow function.`\n );\n }\n\n const extensionsArrowFnFragment = extensionsArrowFn.getFirstDescendant(node => {\n return Node.isJsxFragment(node);\n }) as JsxFragment;\n\n const extensionsArrowFnFragmentChildrenText = extensionsArrowFnFragment\n .getFullText()\n .replace(\"<>\", \"\")\n .replace(\"</>\", \"\")\n .trim();\n\n extensionsArrowFnFragment.replaceWithText(\n `<><${componentName}/>${extensionsArrowFnFragmentChildrenText}</>`\n );\n\n await source.save();\n }\n});\n"],"mappings":"AAAA,SAASA,eAAe,EAAEC,UAAU;AACpC,SAASC,oBAAoB,QAAQ,iBAAiB;AACtD,SAASC,CAAC,QAAQ,KAAK;AACvB,OAAOC,IAAI,MAAM,MAAM;AACvB,SAA2BC,IAAI,EAAEC,OAAO,QAAQ,UAAU;AAC1D,OAAOC,MAAM,MAAM,QAAQ;AAE3B,OAAO,MAAMC,cAAc,GAAGR,eAAe,CAAC;EAC1CS,IAAI,EAAE,iBAAiB;EACvBC,IAAI,EAAE;IAAEC,cAAc,EAAE,WAAW;IAAEC,OAAO,EAAE;EAAQ,CAAC;EACvDC,WAAW,EAAE,yDAAyD;EACtEC,QAAQ,EAAE,IAAI;EACdC,YAAY,EAAEA,CAAC;IAAEC;EAAQ,CAAC,KAAK;IAC3B,OAAOb,CAAC,CAACc,MAAM,CAAC;MACZC,GAAG,EAAEjB,UAAU,CAAC;QAAEe;MAAQ,CAAC,CAAC;MAC5BG,UAAU,EAAEhB,CAAC,CAACiB,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC;IACpC,CAAC,CAAC;EACN,CAAC;EACD,MAAMC,KAAKA,CAACC,MAAM,EAAEC,GAAG,EAAE;IACrB,MAAMC,qBAAqB,GAAGD,GAAG,CAACR,OAAO,CAACU,KAAK,CAACC,eAAe,CAC1DC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAC9CC,QAAQ,CAAC,CAAC;IAEf,MAAM;MAAEX,GAAG,EAAEY;IAAkB,CAAC,GAAGP,MAAM;;IAEzC;IACA,MAAMQ,yBAAyB,GAAG7B,oBAAoB,CAAC8B,WAAW,CAC9DF,iBAAiB,EACjBN,GAAG,CAACR,OACR,CAAC;IAED,MAAMiB,iBAAiB,GAAG7B,IAAI,CAAC8B,QAAQ,CAACH,yBAAyB,CAAC;;IAElE;IACA,MAAMZ,UAAU,GAAGI,MAAM,CAACJ,UAAU,IAAIf,IAAI,CAAC+B,KAAK,CAACF,iBAAiB,CAAC,CAACG,IAAI;;IAE1E;IACA,MAAMC,IAAI,GAAG9B,MAAM,CAAC+B,UAAU,CAAC,QAAQ,CAAC,CAACC,MAAM,CAACT,iBAAiB,CAAC,CAACU,MAAM,CAAC,KAAK,CAAC;IAChF,MAAMC,aAAa,GAAG,kBAAkBJ,IAAI,CAACK,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;IAEzD,MAAM1B,OAAO,GAAG,IAAIV,OAAO,CAAC,CAAC;IAE7B,MAAMqC,UAAU,GAAGvC,IAAI,CAClBwC,QAAQ,CAACxC,IAAI,CAACyC,OAAO,CAACpB,qBAAqB,CAAC,EAAEM,yBAAyB,CAAC,CACxEe,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;IAE9B9B,OAAO,CAAC+B,mBAAmB,CAACtB,qBAAqB,CAAC;IAElD,MAAMuB,MAAM,GAAGhC,OAAO,CAACiC,oBAAoB,CAACxB,qBAAqB,CAAC;IAElE,MAAMyB,yBAAyB,GAAGF,MAAM,CAACG,oBAAoB,CAACR,UAAU,CAAC;IACzE,IAAIO,yBAAyB,EAAE;MAC3B;IACJ;;IAEA;IACA,MAAME,gBAAgB,GAAG,IAAI9C,OAAO,CAAC,CAAC;IACtC8C,gBAAgB,CAACL,mBAAmB,CAAChB,yBAAyB,CAAC;IAC/D,MAAMsB,eAAe,GAAGD,gBAAgB,CAACH,oBAAoB,CAAClB,yBAAyB,CAAC;IACxF,MAAMuB,gBAAgB,GAAGD,eAAe,CAACE,sBAAsB,CAAC,CAAC,KAAKC,SAAS;IAE/E,IAAIC,KAAK,GAAG,CAAC;IAEb,MAAMC,kBAAkB,GAAGV,MAAM,CAACW,qBAAqB,CAAC,CAAC;IACzD,IAAID,kBAAkB,CAACE,MAAM,EAAE;MAC3B,MAAMC,IAAI,GAAGH,kBAAkB,CAACA,kBAAkB,CAACE,MAAM,GAAG,CAAC,CAAC;MAC9DH,KAAK,GAAGI,IAAI,CAACC,aAAa,CAAC,CAAC,GAAG,CAAC;IACpC;;IAEA;IACA,IAAIR,gBAAgB,EAAE;MAClBN,MAAM,CAACe,uBAAuB,CAACN,KAAK,EAAE;QAClCO,aAAa,EAAEvB,aAAa;QAC5BwB,eAAe,EAAEtB;MACrB,CAAC,CAAC;IACN,CAAC,MAAM;MACHK,MAAM,CAACe,uBAAuB,CAACN,KAAK,EAAE;QAClCS,YAAY,EAAE,CAAC;UAAE9B,IAAI,EAAEjB,UAAU;UAAEgD,KAAK,EAAE1B;QAAc,CAAC,CAAC;QAC1DwB,eAAe,EAAEtB;MACrB,CAAC,CAAC;IACN;IAEA,MAAMyB,oBAAoB,GAAGpB,MAAM,CAACqB,kBAAkB,CAACC,IAAI,IAAI;MAC3D,IAAI,CAACjE,IAAI,CAACkE,YAAY,CAACD,IAAI,CAAC,EAAE;QAC1B,OAAO,KAAK;MAChB;MAEA,OAAOA,IAAI,CAACE,OAAO,CAAC,CAAC,KAAK,YAAY;IAC1C,CAAC,CAAC;IAEF,IAAI,CAACJ,oBAAoB,EAAE;MACvB,MAAM,IAAIK,KAAK,CACX,uDAAuDhD,qBAAqB,oDAChF,CAAC;IACL;IAEA,MAAMiD,iBAAiB,GAAGN,oBAAoB,CAACO,cAAc,CAACL,IAAI,IAC9DjE,IAAI,CAACuE,eAAe,CAACN,IAAI,CAC7B,CAAC;IACD,IAAI,CAACI,iBAAiB,EAAE;MACpB,MAAM,IAAID,KAAK,CACX,uDAAuDhD,qBAAqB,yEAChF,CAAC;IACL;IAEA,MAAMoD,yBAAyB,GAAGH,iBAAiB,CAACL,kBAAkB,CAACC,IAAI,IAAI;MAC3E,OAAOjE,IAAI,CAACyE,aAAa,CAACR,IAAI,CAAC;IACnC,CAAC,CAAgB;IAEjB,MAAMS,qCAAqC,GAAGF,yBAAyB,CAClEG,WAAW,CAAC,CAAC,CACblC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CACjBA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAClBmC,IAAI,CAAC,CAAC;IAEXJ,yBAAyB,CAACK,eAAe,CACrC,MAAMzC,aAAa,KAAKsC,qCAAqC,KACjE,CAAC;IAED,MAAM/B,MAAM,CAACmC,IAAI,CAAC,CAAC;EACvB;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"extensions/AdminExtension.js","sources":["../../src/extensions/AdminExtension.ts"],"sourcesContent":["import { defineExtension, zodSrcPath } from \"~/extensions/index.js\";\nimport { ExtensionSrcResolver } from \"@webiny/project\";\nimport { z } from \"zod\";\nimport path from \"path\";\nimport { type JsxFragment, Node, Project } from \"ts-morph\";\nimport crypto from \"crypto\";\n\nexport const AdminExtension = defineExtension({\n type: \"Admin/Extension\",\n tags: { runtimeContext: \"app-build\", appName: \"admin\" },\n description: \"Extend the Admin application with custom functionality.\",\n multiple: true,\n paramsSchema: ({ project }) => {\n return z.object({\n src: zodSrcPath({ project }),\n exportName: z.string().optional()\n });\n },\n async build(params, ctx) {\n const extensionsTsxFilePath = ctx.project.paths.workspaceFolder\n .join(\"apps\", \"admin\", \"src\", \"Extensions.tsx\")\n .toString();\n\n const { src: extensionFilePath } = params;\n\n // Resolve to absolute path for file operations.\n const absoluteExtensionFilePath = ExtensionSrcResolver.resolvePath(\n extensionFilePath,\n ctx.project\n );\n\n const extensionFileName = path.basename(absoluteExtensionFilePath);\n\n // Export name can be customized or defaults to the file name without extension.\n const exportName = params.exportName ?? path.parse(extensionFileName).name;\n\n // Generate a constant hash-based component name to avoid using timestamps.\n const hash = crypto.createHash(\"sha256\").update(extensionFilePath).digest(\"hex\");\n const componentName = `AdminExtension_${hash.slice(-10)}`;\n\n const project = new Project();\n\n const importPath = path\n .relative(path.dirname(extensionsTsxFilePath), absoluteExtensionFilePath)\n .replace(/\\.tsx?$/, \".js\");\n\n project.addSourceFileAtPath(extensionsTsxFilePath);\n\n const source = project.getSourceFileOrThrow(extensionsTsxFilePath);\n\n const existingImportDeclaration = source.getImportDeclaration(importPath);\n if (existingImportDeclaration) {\n return;\n }\n\n // Check if the extension file has a default export or named export.\n const extensionProject = new Project();\n extensionProject.addSourceFileAtPath(absoluteExtensionFilePath);\n const extensionSource = extensionProject.getSourceFileOrThrow(absoluteExtensionFilePath);\n const hasDefaultExport = extensionSource.getDefaultExportSymbol() !== undefined;\n\n let index = 1;\n\n const importDeclarations = source.getImportDeclarations();\n if (importDeclarations.length) {\n const last = importDeclarations[importDeclarations.length - 1];\n index = last.getChildIndex() + 1;\n }\n\n // Import as default export if available, otherwise import named export.\n if (hasDefaultExport) {\n source.insertImportDeclaration(index, {\n defaultImport: componentName,\n moduleSpecifier: importPath\n });\n } else {\n source.insertImportDeclaration(index, {\n namedImports: [{ name: exportName, alias: componentName }],\n moduleSpecifier: importPath\n });\n }\n\n const extensionsIdentifier = source.getFirstDescendant(node => {\n if (!Node.isIdentifier(node)) {\n return false;\n }\n\n return node.getText() === \"Extensions\";\n });\n\n if (!extensionsIdentifier) {\n throw new Error(\n `Could not find the \"Extensions\" React component in \"${extensionsTsxFilePath}\". Did you maybe change the name of the component?`\n );\n }\n\n const extensionsArrowFn = extensionsIdentifier.getNextSibling(node =>\n Node.isArrowFunction(node)\n );\n if (!extensionsArrowFn) {\n throw new Error(\n `Could not find the \"Extensions\" React component in \"${extensionsTsxFilePath}\". Did you maybe change its definition? It should be an arrow function.`\n );\n }\n\n const extensionsArrowFnFragment = extensionsArrowFn.getFirstDescendant(node => {\n return Node.isJsxFragment(node);\n }) as JsxFragment;\n\n const extensionsArrowFnFragmentChildrenText = extensionsArrowFnFragment\n .getFullText()\n .replace(\"<>\", \"\")\n .replace(\"</>\", \"\")\n .trim();\n\n extensionsArrowFnFragment.replaceWithText(\n `<><${componentName}/>${extensionsArrowFnFragmentChildrenText}</>`\n );\n\n await source.save();\n }\n});\n"],"names":["AdminExtension","defineExtension","project","z","zodSrcPath","params","ctx","extensionsTsxFilePath","extensionFilePath","absoluteExtensionFilePath","ExtensionSrcResolver","extensionFileName","path","exportName","hash","crypto","componentName","Project","importPath","source","existingImportDeclaration","extensionProject","extensionSource","hasDefaultExport","undefined","index","importDeclarations","last","extensionsIdentifier","node","Node","Error","extensionsArrowFn","extensionsArrowFnFragment","extensionsArrowFnFragmentChildrenText"],"mappings":";;;;;;AAOO,MAAMA,iBAAiBC,gBAAgB;IAC1C,MAAM;IACN,MAAM;QAAE,gBAAgB;QAAa,SAAS;IAAQ;IACtD,aAAa;IACb,UAAU;IACV,cAAc,CAAC,EAAEC,OAAO,EAAE,GACfC,EAAE,MAAM,CAAC;YACZ,KAAKC,WAAW;gBAAEF;YAAQ;YAC1B,YAAYC,EAAE,MAAM,GAAG,QAAQ;QACnC;IAEJ,MAAM,OAAME,MAAM,EAAEC,GAAG;QACnB,MAAMC,wBAAwBD,IAAI,OAAO,CAAC,KAAK,CAAC,eAAe,CAC1D,IAAI,CAAC,QAAQ,SAAS,OAAO,kBAC7B,QAAQ;QAEb,MAAM,EAAE,KAAKE,iBAAiB,EAAE,GAAGH;QAGnC,MAAMI,4BAA4BC,qBAAqB,WAAW,CAC9DF,mBACAF,IAAI,OAAO;QAGf,MAAMK,oBAAoBC,KAAK,QAAQ,CAACH;QAGxC,MAAMI,aAAaR,OAAO,UAAU,IAAIO,KAAK,KAAK,CAACD,mBAAmB,IAAI;QAG1E,MAAMG,OAAOC,SAAAA,UAAiB,CAAC,UAAU,MAAM,CAACP,mBAAmB,MAAM,CAAC;QAC1E,MAAMQ,gBAAgB,CAAC,eAAe,EAAEF,KAAK,KAAK,CAAC,MAAM;QAEzD,MAAMZ,UAAU,IAAIe;QAEpB,MAAMC,aAAaN,KAAAA,QACN,CAACA,KAAK,OAAO,CAACL,wBAAwBE,2BAC9C,OAAO,CAAC,WAAW;QAExBP,QAAQ,mBAAmB,CAACK;QAE5B,MAAMY,SAASjB,QAAQ,oBAAoB,CAACK;QAE5C,MAAMa,4BAA4BD,OAAO,oBAAoB,CAACD;QAC9D,IAAIE,2BACA;QAIJ,MAAMC,mBAAmB,IAAIJ;QAC7BI,iBAAiB,mBAAmB,CAACZ;QACrC,MAAMa,kBAAkBD,iBAAiB,oBAAoB,CAACZ;QAC9D,MAAMc,mBAAmBD,AAA6CE,WAA7CF,gBAAgB,sBAAsB;QAE/D,IAAIG,QAAQ;QAEZ,MAAMC,qBAAqBP,OAAO,qBAAqB;QACvD,IAAIO,mBAAmB,MAAM,EAAE;YAC3B,MAAMC,OAAOD,kBAAkB,CAACA,mBAAmB,MAAM,GAAG,EAAE;YAC9DD,QAAQE,KAAK,aAAa,KAAK;QACnC;QAGA,IAAIJ,kBACAJ,OAAO,uBAAuB,CAACM,OAAO;YAClC,eAAeT;YACf,iBAAiBE;QACrB;aAEAC,OAAO,uBAAuB,CAACM,OAAO;YAClC,cAAc;gBAAC;oBAAE,MAAMZ;oBAAY,OAAOG;gBAAc;aAAE;YAC1D,iBAAiBE;QACrB;QAGJ,MAAMU,uBAAuBT,OAAO,kBAAkB,CAACU,CAAAA;YACnD,IAAI,CAACC,KAAK,YAAY,CAACD,OACnB,OAAO;YAGX,OAAOA,AAAmB,iBAAnBA,KAAK,OAAO;QACvB;QAEA,IAAI,CAACD,sBACD,MAAM,IAAIG,MACN,CAAC,oDAAoD,EAAExB,sBAAsB,kDAAkD,CAAC;QAIxI,MAAMyB,oBAAoBJ,qBAAqB,cAAc,CAACC,CAAAA,OAC1DC,KAAK,eAAe,CAACD;QAEzB,IAAI,CAACG,mBACD,MAAM,IAAID,MACN,CAAC,oDAAoD,EAAExB,sBAAsB,uEAAuE,CAAC;QAI7J,MAAM0B,4BAA4BD,kBAAkB,kBAAkB,CAACH,CAAAA,OAC5DC,KAAK,aAAa,CAACD;QAG9B,MAAMK,wCAAwCD,0BACzC,WAAW,GACX,OAAO,CAAC,MAAM,IACd,OAAO,CAAC,OAAO,IACf,IAAI;QAETA,0BAA0B,eAAe,CACrC,CAAC,GAAG,EAAEjB,cAAc,EAAE,EAAEkB,sCAAsC,GAAG,CAAC;QAGtE,MAAMf,OAAO,IAAI;IACrB;AACJ"}
@@ -1,53 +1,42 @@
1
1
  import { z } from "zod";
2
2
  import { Node, Project } from "ts-morph";
3
3
  import { defineExtension } from "../defineExtension/index.js";
4
- import crypto from "crypto";
4
+ import crypto_0 from "crypto";
5
5
  import path from "path";
6
6
  import fs from "fs";
7
- export const BuildParam = defineExtension({
8
- type: "Api/BuildParam",
9
- tags: {
10
- runtimeContext: "app-build",
11
- appName: "api"
12
- },
13
- description: "Add build-time parameter to API app.",
14
- multiple: true,
15
- paramsSchema: () => {
16
- return z.object({
17
- paramName: z.string(),
18
- value: z.union([z.string(), z.record(z.string(), z.any()), z.array(z.any()), z.number(), z.boolean()])
19
- });
20
- },
21
- async build(params, ctx) {
22
- const extensionsTsFilePath = ctx.project.paths.workspaceFolder.join("apps", "api", "graphql", "src", "extensions.ts").toString();
23
- const buildParamsDir = ctx.project.paths.workspaceFolder.join("apps", "api", "graphql", "src", "buildParams").toString();
24
- const {
25
- paramName,
26
- value
27
- } = params;
28
-
29
- // Serialize value to a TypeScript literal.
30
- const valueStr = JSON.stringify(value, null, 4);
31
-
32
- // Generate a unique class name based on the paramName.
33
- const hash = crypto.createHash("sha256").update(paramName).digest("hex");
34
- const className = `BuildParam_${hash.slice(-10)}`;
35
- const fileName = `${className}.ts`;
36
- const filePath = path.join(buildParamsDir, fileName);
37
-
38
- // Ensure buildParams directory exists.
39
- if (!fs.existsSync(buildParamsDir)) {
40
- fs.mkdirSync(buildParamsDir, {
41
- recursive: true
42
- });
43
- }
44
-
45
- // Check if file already exists.
46
- if (fs.existsSync(filePath)) {
47
- // File exists, just ensure it's imported in extensions.ts
48
- } else {
49
- // Create the BuildParam implementation file.
50
- const fileContent = `import { BuildParam } from "webiny/api/build-params";
7
+ const BuildParam = defineExtension({
8
+ type: "Api/BuildParam",
9
+ tags: {
10
+ runtimeContext: "app-build",
11
+ appName: "api"
12
+ },
13
+ description: "Add build-time parameter to API app.",
14
+ multiple: true,
15
+ paramsSchema: ()=>z.object({
16
+ paramName: z.string(),
17
+ value: z.union([
18
+ z.string(),
19
+ z.record(z.string(), z.any()),
20
+ z.array(z.any()),
21
+ z.number(),
22
+ z.boolean()
23
+ ])
24
+ }),
25
+ async build (params, ctx) {
26
+ const extensionsTsFilePath = ctx.project.paths.workspaceFolder.join("apps", "api", "graphql", "src", "extensions.ts").toString();
27
+ const buildParamsDir = ctx.project.paths.workspaceFolder.join("apps", "api", "graphql", "src", "buildParams").toString();
28
+ const { paramName, value } = params;
29
+ const valueStr = JSON.stringify(value, null, 4);
30
+ const hash = crypto_0.createHash("sha256").update(paramName).digest("hex");
31
+ const className = `BuildParam_${hash.slice(-10)}`;
32
+ const fileName = `${className}.ts`;
33
+ const filePath = path.join(buildParamsDir, fileName);
34
+ if (!fs.existsSync(buildParamsDir)) fs.mkdirSync(buildParamsDir, {
35
+ recursive: true
36
+ });
37
+ if (fs.existsSync(filePath)) ;
38
+ else {
39
+ const fileContent = `import { BuildParam } from "webiny/api/build-params";
51
40
 
52
41
  class ${className} implements BuildParam.Interface {
53
42
  key = "${paramName}";
@@ -59,61 +48,46 @@ export default BuildParam.createImplementation({
59
48
  dependencies: []
60
49
  });
61
50
  `;
62
- fs.writeFileSync(filePath, fileContent, "utf8");
63
- }
64
-
65
- // Now update extensions.ts to import and register this BuildParam.
66
- const project = new Project();
67
- project.addSourceFileAtPath(extensionsTsFilePath);
68
- const source = project.getSourceFileOrThrow(extensionsTsFilePath);
69
-
70
- // Calculate import path relative to extensions.ts.
71
- let importPath = path.relative(path.dirname(extensionsTsFilePath), filePath).replace(/\.tsx?$/, ".js");
72
-
73
- // Ensure the path starts with ./
74
- if (!importPath.startsWith(".")) {
75
- importPath = "./" + importPath;
76
- }
77
-
78
- // Check if import already exists.
79
- const existingImportDeclaration = source.getImportDeclaration(importPath);
80
- if (existingImportDeclaration) {
81
- return;
82
- }
83
- let index = 1;
84
- const importDeclarations = source.getImportDeclarations();
85
- if (importDeclarations.length) {
86
- const last = importDeclarations[importDeclarations.length - 1];
87
- index = last.getChildIndex() + 1;
88
- }
89
-
90
- // Add import for the BuildParam implementation.
91
- source.insertImportDeclaration(index, {
92
- defaultImport: className,
93
- moduleSpecifier: importPath
94
- });
95
-
96
- // Add the registration to the plugins array.
97
- const pluginsArray = source.getFirstDescendant(node => Node.isArrayLiteralExpression(node));
98
- pluginsArray.addElement(`\ncreateRegisterExtensionPlugin(ctx => {\n\tregisterExtension(ctx.container, ${className});\n})`);
99
- {
100
- let index = 1;
101
- const importDeclarations = source.getImportDeclarations();
102
- if (importDeclarations.length) {
103
- const last = importDeclarations[importDeclarations.length - 1];
104
- index = last.getChildIndex() + 1;
105
- }
106
- const contextPluginImportPath = "@webiny/handler/plugins/RegisterExtensionPlugin.js";
107
- const existingContextPluginImport = source.getImportDeclaration(contextPluginImportPath);
108
- if (!existingContextPluginImport) {
51
+ fs.writeFileSync(filePath, fileContent, "utf8");
52
+ }
53
+ const project = new Project();
54
+ project.addSourceFileAtPath(extensionsTsFilePath);
55
+ const source = project.getSourceFileOrThrow(extensionsTsFilePath);
56
+ let importPath = path.relative(path.dirname(extensionsTsFilePath), filePath).replace(/\.tsx?$/, ".js");
57
+ if (!importPath.startsWith(".")) importPath = "./" + importPath;
58
+ const existingImportDeclaration = source.getImportDeclaration(importPath);
59
+ if (existingImportDeclaration) return;
60
+ let index = 1;
61
+ const importDeclarations = source.getImportDeclarations();
62
+ if (importDeclarations.length) {
63
+ const last = importDeclarations[importDeclarations.length - 1];
64
+ index = last.getChildIndex() + 1;
65
+ }
109
66
  source.insertImportDeclaration(index, {
110
- namedImports: ["createRegisterExtensionPlugin"],
111
- moduleSpecifier: contextPluginImportPath
67
+ defaultImport: className,
68
+ moduleSpecifier: importPath
112
69
  });
113
- }
70
+ const pluginsArray = source.getFirstDescendant((node)=>Node.isArrayLiteralExpression(node));
71
+ pluginsArray.addElement(`\ncreateRegisterExtensionPlugin(ctx => {\n\tregisterExtension(ctx.container, ${className});\n})`);
72
+ {
73
+ let index = 1;
74
+ const importDeclarations = source.getImportDeclarations();
75
+ if (importDeclarations.length) {
76
+ const last = importDeclarations[importDeclarations.length - 1];
77
+ index = last.getChildIndex() + 1;
78
+ }
79
+ const contextPluginImportPath = "@webiny/handler/plugins/RegisterExtensionPlugin.js";
80
+ const existingContextPluginImport = source.getImportDeclaration(contextPluginImportPath);
81
+ if (!existingContextPluginImport) source.insertImportDeclaration(index, {
82
+ namedImports: [
83
+ "createRegisterExtensionPlugin"
84
+ ],
85
+ moduleSpecifier: contextPluginImportPath
86
+ });
87
+ }
88
+ await source.save();
114
89
  }
115
- await source.save();
116
- }
117
90
  });
91
+ export { BuildParam };
118
92
 
119
93
  //# sourceMappingURL=ApiBuildParam.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["z","Node","Project","defineExtension","crypto","path","fs","BuildParam","type","tags","runtimeContext","appName","description","multiple","paramsSchema","object","paramName","string","value","union","record","any","array","number","boolean","build","params","ctx","extensionsTsFilePath","project","paths","workspaceFolder","join","toString","buildParamsDir","valueStr","JSON","stringify","hash","createHash","update","digest","className","slice","fileName","filePath","existsSync","mkdirSync","recursive","fileContent","writeFileSync","addSourceFileAtPath","source","getSourceFileOrThrow","importPath","relative","dirname","replace","startsWith","existingImportDeclaration","getImportDeclaration","index","importDeclarations","getImportDeclarations","length","last","getChildIndex","insertImportDeclaration","defaultImport","moduleSpecifier","pluginsArray","getFirstDescendant","node","isArrayLiteralExpression","addElement","contextPluginImportPath","existingContextPluginImport","namedImports","save"],"sources":["ApiBuildParam.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { Node, Project, ArrayLiteralExpression } from \"ts-morph\";\nimport { defineExtension } from \"~/defineExtension/index.js\";\nimport crypto from \"crypto\";\nimport path from \"path\";\nimport fs from \"fs\";\n\nexport const BuildParam = defineExtension({\n type: \"Api/BuildParam\",\n tags: { runtimeContext: \"app-build\", appName: \"api\" },\n description: \"Add build-time parameter to API app.\",\n multiple: true,\n paramsSchema: () => {\n return z.object({\n paramName: z.string(),\n value: z.union([\n z.string(),\n z.record(z.string(), z.any()),\n z.array(z.any()),\n z.number(),\n z.boolean()\n ])\n });\n },\n async build(params, ctx) {\n const extensionsTsFilePath = ctx.project.paths.workspaceFolder\n .join(\"apps\", \"api\", \"graphql\", \"src\", \"extensions.ts\")\n .toString();\n\n const buildParamsDir = ctx.project.paths.workspaceFolder\n .join(\"apps\", \"api\", \"graphql\", \"src\", \"buildParams\")\n .toString();\n\n const { paramName, value } = params;\n\n // Serialize value to a TypeScript literal.\n const valueStr = JSON.stringify(value, null, 4);\n\n // Generate a unique class name based on the paramName.\n const hash = crypto.createHash(\"sha256\").update(paramName).digest(\"hex\");\n const className = `BuildParam_${hash.slice(-10)}`;\n const fileName = `${className}.ts`;\n const filePath = path.join(buildParamsDir, fileName);\n\n // Ensure buildParams directory exists.\n if (!fs.existsSync(buildParamsDir)) {\n fs.mkdirSync(buildParamsDir, { recursive: true });\n }\n\n // Check if file already exists.\n if (fs.existsSync(filePath)) {\n // File exists, just ensure it's imported in extensions.ts\n } else {\n // Create the BuildParam implementation file.\n const fileContent = `import { BuildParam } from \"webiny/api/build-params\";\n\nclass ${className} implements BuildParam.Interface {\n key = \"${paramName}\";\n value = ${valueStr};\n}\n\nexport default BuildParam.createImplementation({\n implementation: ${className},\n dependencies: []\n});\n`;\n fs.writeFileSync(filePath, fileContent, \"utf8\");\n }\n\n // Now update extensions.ts to import and register this BuildParam.\n const project = new Project();\n project.addSourceFileAtPath(extensionsTsFilePath);\n\n const source = project.getSourceFileOrThrow(extensionsTsFilePath);\n\n // Calculate import path relative to extensions.ts.\n let importPath = path\n .relative(path.dirname(extensionsTsFilePath), filePath)\n .replace(/\\.tsx?$/, \".js\");\n\n // Ensure the path starts with ./\n if (!importPath.startsWith(\".\")) {\n importPath = \"./\" + importPath;\n }\n\n // Check if import already exists.\n const existingImportDeclaration = source.getImportDeclaration(importPath);\n if (existingImportDeclaration) {\n return;\n }\n\n let index = 1;\n\n const importDeclarations = source.getImportDeclarations();\n if (importDeclarations.length) {\n const last = importDeclarations[importDeclarations.length - 1];\n index = last.getChildIndex() + 1;\n }\n\n // Add import for the BuildParam implementation.\n source.insertImportDeclaration(index, {\n defaultImport: className,\n moduleSpecifier: importPath\n });\n\n // Add the registration to the plugins array.\n const pluginsArray = source.getFirstDescendant(node =>\n Node.isArrayLiteralExpression(node)\n ) as ArrayLiteralExpression;\n\n pluginsArray.addElement(\n `\\ncreateRegisterExtensionPlugin(ctx => {\\n\\tregisterExtension(ctx.container, ${className});\\n})`\n );\n\n {\n let index = 1;\n\n const importDeclarations = source.getImportDeclarations();\n if (importDeclarations.length) {\n const last = importDeclarations[importDeclarations.length - 1];\n index = last.getChildIndex() + 1;\n }\n\n const contextPluginImportPath = \"@webiny/handler/plugins/RegisterExtensionPlugin.js\";\n const existingContextPluginImport =\n source.getImportDeclaration(contextPluginImportPath);\n if (!existingContextPluginImport) {\n source.insertImportDeclaration(index, {\n namedImports: [\"createRegisterExtensionPlugin\"],\n moduleSpecifier: contextPluginImportPath\n });\n }\n }\n\n await source.save();\n }\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"extensions/ApiBuildParam.js","sources":["../../src/extensions/ApiBuildParam.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { Node, Project, ArrayLiteralExpression } from \"ts-morph\";\nimport { defineExtension } from \"~/defineExtension/index.js\";\nimport crypto from \"crypto\";\nimport path from \"path\";\nimport fs from \"fs\";\n\nexport const BuildParam = defineExtension({\n type: \"Api/BuildParam\",\n tags: { runtimeContext: \"app-build\", appName: \"api\" },\n description: \"Add build-time parameter to API app.\",\n multiple: true,\n paramsSchema: () => {\n return z.object({\n paramName: z.string(),\n value: z.union([\n z.string(),\n z.record(z.string(), z.any()),\n z.array(z.any()),\n z.number(),\n z.boolean()\n ])\n });\n },\n async build(params, ctx) {\n const extensionsTsFilePath = ctx.project.paths.workspaceFolder\n .join(\"apps\", \"api\", \"graphql\", \"src\", \"extensions.ts\")\n .toString();\n\n const buildParamsDir = ctx.project.paths.workspaceFolder\n .join(\"apps\", \"api\", \"graphql\", \"src\", \"buildParams\")\n .toString();\n\n const { paramName, value } = params;\n\n // Serialize value to a TypeScript literal.\n const valueStr = JSON.stringify(value, null, 4);\n\n // Generate a unique class name based on the paramName.\n const hash = crypto.createHash(\"sha256\").update(paramName).digest(\"hex\");\n const className = `BuildParam_${hash.slice(-10)}`;\n const fileName = `${className}.ts`;\n const filePath = path.join(buildParamsDir, fileName);\n\n // Ensure buildParams directory exists.\n if (!fs.existsSync(buildParamsDir)) {\n fs.mkdirSync(buildParamsDir, { recursive: true });\n }\n\n // Check if file already exists.\n if (fs.existsSync(filePath)) {\n // File exists, just ensure it's imported in extensions.ts\n } else {\n // Create the BuildParam implementation file.\n const fileContent = `import { BuildParam } from \"webiny/api/build-params\";\n\nclass ${className} implements BuildParam.Interface {\n key = \"${paramName}\";\n value = ${valueStr};\n}\n\nexport default BuildParam.createImplementation({\n implementation: ${className},\n dependencies: []\n});\n`;\n fs.writeFileSync(filePath, fileContent, \"utf8\");\n }\n\n // Now update extensions.ts to import and register this BuildParam.\n const project = new Project();\n project.addSourceFileAtPath(extensionsTsFilePath);\n\n const source = project.getSourceFileOrThrow(extensionsTsFilePath);\n\n // Calculate import path relative to extensions.ts.\n let importPath = path\n .relative(path.dirname(extensionsTsFilePath), filePath)\n .replace(/\\.tsx?$/, \".js\");\n\n // Ensure the path starts with ./\n if (!importPath.startsWith(\".\")) {\n importPath = \"./\" + importPath;\n }\n\n // Check if import already exists.\n const existingImportDeclaration = source.getImportDeclaration(importPath);\n if (existingImportDeclaration) {\n return;\n }\n\n let index = 1;\n\n const importDeclarations = source.getImportDeclarations();\n if (importDeclarations.length) {\n const last = importDeclarations[importDeclarations.length - 1];\n index = last.getChildIndex() + 1;\n }\n\n // Add import for the BuildParam implementation.\n source.insertImportDeclaration(index, {\n defaultImport: className,\n moduleSpecifier: importPath\n });\n\n // Add the registration to the plugins array.\n const pluginsArray = source.getFirstDescendant(node =>\n Node.isArrayLiteralExpression(node)\n ) as ArrayLiteralExpression;\n\n pluginsArray.addElement(\n `\\ncreateRegisterExtensionPlugin(ctx => {\\n\\tregisterExtension(ctx.container, ${className});\\n})`\n );\n\n {\n let index = 1;\n\n const importDeclarations = source.getImportDeclarations();\n if (importDeclarations.length) {\n const last = importDeclarations[importDeclarations.length - 1];\n index = last.getChildIndex() + 1;\n }\n\n const contextPluginImportPath = \"@webiny/handler/plugins/RegisterExtensionPlugin.js\";\n const existingContextPluginImport =\n source.getImportDeclaration(contextPluginImportPath);\n if (!existingContextPluginImport) {\n source.insertImportDeclaration(index, {\n namedImports: [\"createRegisterExtensionPlugin\"],\n moduleSpecifier: contextPluginImportPath\n });\n }\n }\n\n await source.save();\n }\n});\n"],"names":["BuildParam","defineExtension","z","params","ctx","extensionsTsFilePath","buildParamsDir","paramName","value","valueStr","JSON","hash","crypto","className","fileName","filePath","path","fs","fileContent","project","Project","source","importPath","existingImportDeclaration","index","importDeclarations","last","pluginsArray","node","Node","contextPluginImportPath","existingContextPluginImport"],"mappings":"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"}