@webiny/project 0.0.0-unstable.7be00a75a9 → 0.0.0-unstable.9f53ea597d

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 (61) hide show
  1. package/ProjectSdk.d.ts +1 -0
  2. package/ProjectSdk.js +4 -1
  3. package/ProjectSdk.js.map +1 -1
  4. package/abstractions/features/DestroyApp.d.ts +2 -2
  5. package/abstractions/features/DestroyApp.js.map +1 -1
  6. package/abstractions/services/GetProjectInstallationIdService.d.ts +10 -0
  7. package/abstractions/services/GetProjectInstallationIdService.js +5 -0
  8. package/abstractions/services/GetProjectInstallationIdService.js.map +1 -0
  9. package/abstractions/services/StackOutputCacheService.d.ts +10 -0
  10. package/abstractions/services/StackOutputCacheService.js +5 -0
  11. package/abstractions/services/StackOutputCacheService.js.map +1 -0
  12. package/abstractions/services/index.d.ts +2 -0
  13. package/abstractions/services/index.js +2 -0
  14. package/createProjectSdkContainer.js +3 -1
  15. package/createProjectSdkContainer.js.map +1 -1
  16. package/decorators/DestroyAppClearStackOutputCache.d.ts +25 -0
  17. package/decorators/DestroyAppClearStackOutputCache.js +29 -0
  18. package/decorators/DestroyAppClearStackOutputCache.js.map +1 -0
  19. package/decorators/GetFeatureFlagsWithLicense.js +1 -0
  20. package/decorators/GetFeatureFlagsWithLicense.js.map +1 -1
  21. package/decorators/index.d.ts +1 -0
  22. package/decorators/index.js +1 -0
  23. package/extensions/FeatureFlags.d.ts +7 -0
  24. package/extensions/FeatureFlags.js +10 -3
  25. package/extensions/FeatureFlags.js.map +1 -1
  26. package/extensions/Project/SetAdminAppEnvVarsBeforeBuild.d.ts +3 -2
  27. package/extensions/Project/SetAdminAppEnvVarsBeforeBuild.js +8 -2
  28. package/extensions/Project/SetAdminAppEnvVarsBeforeBuild.js.map +1 -1
  29. package/extensions/Project/SetAdminAppEnvVarsBeforeWatch.d.ts +3 -2
  30. package/extensions/Project/SetAdminAppEnvVarsBeforeWatch.js +8 -2
  31. package/extensions/Project/SetAdminAppEnvVarsBeforeWatch.js.map +1 -1
  32. package/extensions/Project/ValidateProductionPulumiState.d.ts +3 -2
  33. package/extensions/Project/ValidateProductionPulumiState.js +6 -7
  34. package/extensions/Project/ValidateProductionPulumiState.js.map +1 -1
  35. package/extensions/index.d.ts +24 -17
  36. package/package.json +17 -17
  37. package/services/GetProjectConfigService/renderConfigWorker.js +8 -2
  38. package/services/GetProjectConfigService/renderConfigWorker.js.map +1 -1
  39. package/services/GetProjectInstallationIdService/GetProjectInstallationIdService.d.ts +10 -0
  40. package/services/GetProjectInstallationIdService/GetProjectInstallationIdService.js +34 -0
  41. package/services/GetProjectInstallationIdService/GetProjectInstallationIdService.js.map +1 -0
  42. package/services/GetProjectInstallationIdService/index.d.ts +1 -0
  43. package/services/GetProjectInstallationIdService/index.js +1 -0
  44. package/services/InitProjectSdkService/InitProjectSdkService.js +2 -1
  45. package/services/InitProjectSdkService/InitProjectSdkService.js.map +1 -1
  46. package/services/IsRemotePulumiBackendService/IsRemotePulumiBackendService.d.ts +3 -2
  47. package/services/IsRemotePulumiBackendService/IsRemotePulumiBackendService.js +1 -1
  48. package/services/IsRemotePulumiBackendService/IsRemotePulumiBackendService.js.map +1 -1
  49. package/services/LoggerService/LoggerService.js +3 -3
  50. package/services/PulumiGetStackOutputService/PulumiGetStackOutputService.d.ts +3 -11
  51. package/services/PulumiGetStackOutputService/PulumiGetStackOutputService.js +7 -64
  52. package/services/PulumiGetStackOutputService/PulumiGetStackOutputService.js.map +1 -1
  53. package/services/PulumiLoginService/PulumiLoginService.js +1 -1
  54. package/services/PulumiLoginService/PulumiLoginService.js.map +1 -1
  55. package/services/StackOutputCacheService/StackOutputCacheService.d.ts +18 -0
  56. package/services/StackOutputCacheService/StackOutputCacheService.js +89 -0
  57. package/services/StackOutputCacheService/StackOutputCacheService.js.map +1 -0
  58. package/services/StackOutputCacheService/index.d.ts +1 -0
  59. package/services/StackOutputCacheService/index.js +1 -0
  60. package/services/index.d.ts +2 -0
  61. package/services/index.js +2 -0
@@ -1,10 +1,11 @@
1
- import { AdminBeforeWatch, GetProjectIdService, GetProjectVersionService, IsTelemetryEnabled } from "../../abstractions/index.js";
1
+ import { AdminBeforeWatch, GetProjectIdService, GetProjectInstallationIdService, GetProjectVersionService, IsTelemetryEnabled } from "../../abstractions/index.js";
2
2
  import { globalConfig } from "@webiny/global-config";
3
3
  import { isCI } from "ci-info";
4
4
  class SetAdminAppEnvVarsBeforeWatchImpl {
5
- constructor(isTelemetryEnabled, getProjectIdService, getProjectVersionService){
5
+ constructor(isTelemetryEnabled, getProjectIdService, getProjectInstallationIdService, getProjectVersionService){
6
6
  this.isTelemetryEnabled = isTelemetryEnabled;
7
7
  this.getProjectIdService = getProjectIdService;
8
+ this.getProjectInstallationIdService = getProjectInstallationIdService;
8
9
  this.getProjectVersionService = getProjectVersionService;
9
10
  }
10
11
  async execute() {
@@ -15,6 +16,10 @@ class SetAdminAppEnvVarsBeforeWatchImpl {
15
16
  process.env.REACT_APP_WEBINY_PROJECT_ID = projectId;
16
17
  process.env.REACT_APP_WCP_PROJECT_ID = projectId;
17
18
  }
19
+ if (!("REACT_APP_WEBINY_INSTALLATION_ID" in process.env)) {
20
+ const installationId = this.getProjectInstallationIdService.execute();
21
+ if (installationId) process.env.REACT_APP_WEBINY_INSTALLATION_ID = installationId;
22
+ }
18
23
  if (!("REACT_APP_WEBINY_TELEMETRY" in process.env)) process.env.REACT_APP_WEBINY_TELEMETRY = String(telemetry);
19
24
  if (!("REACT_APP_WEBINY_TELEMETRY_USER_ID" in process.env)) process.env.REACT_APP_WEBINY_TELEMETRY_USER_ID = globalConfig.get("id");
20
25
  if (!("REACT_APP_WEBINY_TELEMETRY_NEW_USER" in process.env)) {
@@ -31,6 +36,7 @@ const SetAdminAppEnvVarsBeforeWatch = AdminBeforeWatch.createImplementation({
31
36
  dependencies: [
32
37
  IsTelemetryEnabled,
33
38
  GetProjectIdService,
39
+ GetProjectInstallationIdService,
34
40
  GetProjectVersionService
35
41
  ]
36
42
  });
@@ -1 +1 @@
1
- {"version":3,"file":"extensions/Project/SetAdminAppEnvVarsBeforeWatch.js","sources":["../../../src/extensions/Project/SetAdminAppEnvVarsBeforeWatch.ts"],"sourcesContent":["import {\n AdminBeforeWatch,\n IsTelemetryEnabled,\n GetProjectIdService,\n GetProjectVersionService\n} from \"~/abstractions/index.js\";\nimport { globalConfig } from \"@webiny/global-config\";\nimport { isCI } from \"ci-info\";\n\nclass SetAdminAppEnvVarsBeforeWatchImpl implements AdminBeforeWatch.Interface {\n constructor(\n private isTelemetryEnabled: IsTelemetryEnabled.Interface,\n private getProjectIdService: GetProjectIdService.Interface,\n private getProjectVersionService: GetProjectVersionService.Interface\n ) {}\n\n async execute() {\n const projectId = await this.getProjectIdService.execute();\n const projectVersion = this.getProjectVersionService.execute();\n\n const telemetry = await this.isTelemetryEnabled.execute();\n\n if (projectId) {\n process.env.REACT_APP_WEBINY_PROJECT_ID = projectId;\n process.env.REACT_APP_WCP_PROJECT_ID = projectId;\n }\n\n if (!(\"REACT_APP_WEBINY_TELEMETRY\" in process.env)) {\n process.env.REACT_APP_WEBINY_TELEMETRY = String(telemetry);\n }\n\n if (!(\"REACT_APP_WEBINY_TELEMETRY_USER_ID\" in process.env)) {\n process.env.REACT_APP_WEBINY_TELEMETRY_USER_ID = globalConfig.get(\"id\");\n }\n\n if (!(\"REACT_APP_WEBINY_TELEMETRY_NEW_USER\" in process.env)) {\n const newUser = Boolean(globalConfig.get(\"newUser\")).toString();\n process.env.REACT_APP_WEBINY_TELEMETRY_NEW_USER = newUser;\n }\n\n if (!(\"INLINE_RUNTIME_CHUNK\" in process.env)) {\n process.env.INLINE_RUNTIME_CHUNK = \"true\";\n }\n\n if (!(\"REACT_APP_IS_CI\" in process.env)) {\n process.env.REACT_APP_IS_CI = Boolean(isCI).toString();\n }\n\n if (!(\"REACT_APP_WEBINY_VERSION\" in process.env)) {\n process.env.REACT_APP_WEBINY_VERSION = projectVersion;\n }\n }\n}\n\nexport const SetAdminAppEnvVarsBeforeWatch = AdminBeforeWatch.createImplementation({\n implementation: SetAdminAppEnvVarsBeforeWatchImpl,\n dependencies: [IsTelemetryEnabled, GetProjectIdService, GetProjectVersionService]\n});\n"],"names":["SetAdminAppEnvVarsBeforeWatchImpl","isTelemetryEnabled","getProjectIdService","getProjectVersionService","projectId","projectVersion","telemetry","process","String","globalConfig","newUser","Boolean","isCI","SetAdminAppEnvVarsBeforeWatch","AdminBeforeWatch","IsTelemetryEnabled","GetProjectIdService","GetProjectVersionService"],"mappings":";;;AASA,MAAMA;IACF,YACYC,kBAAgD,EAChDC,mBAAkD,EAClDC,wBAA4D,CACtE;aAHUF,kBAAkB,GAAlBA;aACAC,mBAAmB,GAAnBA;aACAC,wBAAwB,GAAxBA;IACT;IAEH,MAAM,UAAU;QACZ,MAAMC,YAAY,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO;QACxD,MAAMC,iBAAiB,IAAI,CAAC,wBAAwB,CAAC,OAAO;QAE5D,MAAMC,YAAY,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO;QAEvD,IAAIF,WAAW;YACXG,QAAQ,GAAG,CAAC,2BAA2B,GAAGH;YAC1CG,QAAQ,GAAG,CAAC,wBAAwB,GAAGH;QAC3C;QAEA,IAAI,CAAE,iCAAgCG,QAAQ,GAAE,GAC5CA,QAAQ,GAAG,CAAC,0BAA0B,GAAGC,OAAOF;QAGpD,IAAI,CAAE,yCAAwCC,QAAQ,GAAE,GACpDA,QAAQ,GAAG,CAAC,kCAAkC,GAAGE,aAAa,GAAG,CAAC;QAGtE,IAAI,CAAE,0CAAyCF,QAAQ,GAAE,GAAI;YACzD,MAAMG,UAAUC,QAAQF,aAAa,GAAG,CAAC,YAAY,QAAQ;YAC7DF,QAAQ,GAAG,CAAC,mCAAmC,GAAGG;QACtD;QAEA,IAAI,CAAE,2BAA0BH,QAAQ,GAAE,GACtCA,QAAQ,GAAG,CAAC,oBAAoB,GAAG;QAGvC,IAAI,CAAE,sBAAqBA,QAAQ,GAAE,GACjCA,QAAQ,GAAG,CAAC,eAAe,GAAGI,QAAQC,MAAM,QAAQ;QAGxD,IAAI,CAAE,+BAA8BL,QAAQ,GAAE,GAC1CA,QAAQ,GAAG,CAAC,wBAAwB,GAAGF;IAE/C;AACJ;AAEO,MAAMQ,gCAAgCC,iBAAiB,oBAAoB,CAAC;IAC/E,gBAAgBd;IAChB,cAAc;QAACe;QAAoBC;QAAqBC;KAAyB;AACrF"}
1
+ {"version":3,"file":"extensions/Project/SetAdminAppEnvVarsBeforeWatch.js","sources":["../../../src/extensions/Project/SetAdminAppEnvVarsBeforeWatch.ts"],"sourcesContent":["import {\n AdminBeforeWatch,\n IsTelemetryEnabled,\n GetProjectIdService,\n GetProjectInstallationIdService,\n GetProjectVersionService\n} from \"~/abstractions/index.js\";\nimport { globalConfig } from \"@webiny/global-config\";\nimport { isCI } from \"ci-info\";\n\nclass SetAdminAppEnvVarsBeforeWatchImpl implements AdminBeforeWatch.Interface {\n constructor(\n private isTelemetryEnabled: IsTelemetryEnabled.Interface,\n private getProjectIdService: GetProjectIdService.Interface,\n private getProjectInstallationIdService: GetProjectInstallationIdService.Interface,\n private getProjectVersionService: GetProjectVersionService.Interface\n ) {}\n\n async execute() {\n const projectId = await this.getProjectIdService.execute();\n const projectVersion = this.getProjectVersionService.execute();\n\n const telemetry = await this.isTelemetryEnabled.execute();\n\n if (projectId) {\n process.env.REACT_APP_WEBINY_PROJECT_ID = projectId;\n process.env.REACT_APP_WCP_PROJECT_ID = projectId;\n }\n\n if (!(\"REACT_APP_WEBINY_INSTALLATION_ID\" in process.env)) {\n const installationId = this.getProjectInstallationIdService.execute();\n if (installationId) {\n process.env.REACT_APP_WEBINY_INSTALLATION_ID = installationId;\n }\n }\n\n if (!(\"REACT_APP_WEBINY_TELEMETRY\" in process.env)) {\n process.env.REACT_APP_WEBINY_TELEMETRY = String(telemetry);\n }\n\n if (!(\"REACT_APP_WEBINY_TELEMETRY_USER_ID\" in process.env)) {\n process.env.REACT_APP_WEBINY_TELEMETRY_USER_ID = globalConfig.get(\"id\");\n }\n\n if (!(\"REACT_APP_WEBINY_TELEMETRY_NEW_USER\" in process.env)) {\n const newUser = Boolean(globalConfig.get(\"newUser\")).toString();\n process.env.REACT_APP_WEBINY_TELEMETRY_NEW_USER = newUser;\n }\n\n if (!(\"INLINE_RUNTIME_CHUNK\" in process.env)) {\n process.env.INLINE_RUNTIME_CHUNK = \"true\";\n }\n\n if (!(\"REACT_APP_IS_CI\" in process.env)) {\n process.env.REACT_APP_IS_CI = Boolean(isCI).toString();\n }\n\n if (!(\"REACT_APP_WEBINY_VERSION\" in process.env)) {\n process.env.REACT_APP_WEBINY_VERSION = projectVersion;\n }\n }\n}\n\nexport const SetAdminAppEnvVarsBeforeWatch = AdminBeforeWatch.createImplementation({\n implementation: SetAdminAppEnvVarsBeforeWatchImpl,\n dependencies: [\n IsTelemetryEnabled,\n GetProjectIdService,\n GetProjectInstallationIdService,\n GetProjectVersionService\n ]\n});\n"],"names":["SetAdminAppEnvVarsBeforeWatchImpl","isTelemetryEnabled","getProjectIdService","getProjectInstallationIdService","getProjectVersionService","projectId","projectVersion","telemetry","process","installationId","String","globalConfig","newUser","Boolean","isCI","SetAdminAppEnvVarsBeforeWatch","AdminBeforeWatch","IsTelemetryEnabled","GetProjectIdService","GetProjectInstallationIdService","GetProjectVersionService"],"mappings":";;;AAUA,MAAMA;IACF,YACYC,kBAAgD,EAChDC,mBAAkD,EAClDC,+BAA0E,EAC1EC,wBAA4D,CACtE;aAJUH,kBAAkB,GAAlBA;aACAC,mBAAmB,GAAnBA;aACAC,+BAA+B,GAA/BA;aACAC,wBAAwB,GAAxBA;IACT;IAEH,MAAM,UAAU;QACZ,MAAMC,YAAY,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO;QACxD,MAAMC,iBAAiB,IAAI,CAAC,wBAAwB,CAAC,OAAO;QAE5D,MAAMC,YAAY,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO;QAEvD,IAAIF,WAAW;YACXG,QAAQ,GAAG,CAAC,2BAA2B,GAAGH;YAC1CG,QAAQ,GAAG,CAAC,wBAAwB,GAAGH;QAC3C;QAEA,IAAI,CAAE,uCAAsCG,QAAQ,GAAE,GAAI;YACtD,MAAMC,iBAAiB,IAAI,CAAC,+BAA+B,CAAC,OAAO;YACnE,IAAIA,gBACAD,QAAQ,GAAG,CAAC,gCAAgC,GAAGC;QAEvD;QAEA,IAAI,CAAE,iCAAgCD,QAAQ,GAAE,GAC5CA,QAAQ,GAAG,CAAC,0BAA0B,GAAGE,OAAOH;QAGpD,IAAI,CAAE,yCAAwCC,QAAQ,GAAE,GACpDA,QAAQ,GAAG,CAAC,kCAAkC,GAAGG,aAAa,GAAG,CAAC;QAGtE,IAAI,CAAE,0CAAyCH,QAAQ,GAAE,GAAI;YACzD,MAAMI,UAAUC,QAAQF,aAAa,GAAG,CAAC,YAAY,QAAQ;YAC7DH,QAAQ,GAAG,CAAC,mCAAmC,GAAGI;QACtD;QAEA,IAAI,CAAE,2BAA0BJ,QAAQ,GAAE,GACtCA,QAAQ,GAAG,CAAC,oBAAoB,GAAG;QAGvC,IAAI,CAAE,sBAAqBA,QAAQ,GAAE,GACjCA,QAAQ,GAAG,CAAC,eAAe,GAAGK,QAAQC,MAAM,QAAQ;QAGxD,IAAI,CAAE,+BAA8BN,QAAQ,GAAE,GAC1CA,QAAQ,GAAG,CAAC,wBAAwB,GAAGF;IAE/C;AACJ;AAEO,MAAMS,gCAAgCC,iBAAiB,oBAAoB,CAAC;IAC/E,gBAAgBhB;IAChB,cAAc;QACViB;QACAC;QACAC;QACAC;KACH;AACL"}
@@ -1,8 +1,9 @@
1
- import { CoreBeforeDeploy, IsRemotePulumiBackendService, ProjectSdkParamsService } from "../../abstractions/index.js";
1
+ import { CoreBeforeDeploy, GetProductionEnvironments, IsRemotePulumiBackendService, ProjectSdkParamsService } from "../../abstractions/index.js";
2
2
  declare class ValidateProductionPulumiStateImpl implements CoreBeforeDeploy.Interface {
3
3
  private isRemotePulumiBackendService;
4
4
  private projectSdkParamsService;
5
- constructor(isRemotePulumiBackendService: IsRemotePulumiBackendService.Interface, projectSdkParamsService: ProjectSdkParamsService.Interface);
5
+ private getProductionEnvironments;
6
+ constructor(isRemotePulumiBackendService: IsRemotePulumiBackendService.Interface, projectSdkParamsService: ProjectSdkParamsService.Interface, getProductionEnvironments: GetProductionEnvironments.Interface);
6
7
  execute(params: CoreBeforeDeploy.Params): Promise<void>;
7
8
  }
8
9
  export declare const ValidateProductionPulumiState: typeof ValidateProductionPulumiStateImpl & {
@@ -1,18 +1,16 @@
1
- import { CoreBeforeDeploy, IsRemotePulumiBackendService, ProjectSdkParamsService } from "../../abstractions/index.js";
1
+ import { CoreBeforeDeploy, GetProductionEnvironments, IsRemotePulumiBackendService, ProjectSdkParamsService } from "../../abstractions/index.js";
2
2
  import { GracefulError } from "../../index.js";
3
3
  class ValidateProductionPulumiStateImpl {
4
- constructor(isRemotePulumiBackendService, projectSdkParamsService){
4
+ constructor(isRemotePulumiBackendService, projectSdkParamsService, getProductionEnvironments){
5
5
  this.isRemotePulumiBackendService = isRemotePulumiBackendService;
6
6
  this.projectSdkParamsService = projectSdkParamsService;
7
+ this.getProductionEnvironments = getProductionEnvironments;
7
8
  }
8
9
  async execute(params) {
9
10
  const sdkParams = this.projectSdkParamsService.get();
10
11
  const { env } = sdkParams;
11
12
  const { allowLocalStateFiles } = params;
12
- const prodEnvs = [
13
- "prod",
14
- "production"
15
- ];
13
+ const prodEnvs = await this.getProductionEnvironments.execute();
16
14
  const isProdEnv = prodEnvs.includes(env);
17
15
  if (!isProdEnv) return;
18
16
  if (this.isRemotePulumiBackendService.execute()) return;
@@ -26,7 +24,8 @@ const ValidateProductionPulumiState = CoreBeforeDeploy.createImplementation({
26
24
  implementation: ValidateProductionPulumiStateImpl,
27
25
  dependencies: [
28
26
  IsRemotePulumiBackendService,
29
- ProjectSdkParamsService
27
+ ProjectSdkParamsService,
28
+ GetProductionEnvironments
30
29
  ]
31
30
  });
32
31
  export { ValidateProductionPulumiState };
@@ -1 +1 @@
1
- {"version":3,"file":"extensions/Project/ValidateProductionPulumiState.js","sources":["../../../src/extensions/Project/ValidateProductionPulumiState.ts"],"sourcesContent":["import {\n CoreBeforeDeploy,\n IsRemotePulumiBackendService,\n ProjectSdkParamsService\n} from \"~/abstractions/index.js\";\nimport { GracefulError } from \"~/index.js\";\n\nclass ValidateProductionPulumiStateImpl implements CoreBeforeDeploy.Interface {\n constructor(\n private isRemotePulumiBackendService: IsRemotePulumiBackendService.Interface,\n private projectSdkParamsService: ProjectSdkParamsService.Interface\n ) {}\n\n async execute(params: CoreBeforeDeploy.Params) {\n const sdkParams = this.projectSdkParamsService.get();\n const { env } = sdkParams;\n const { allowLocalStateFiles } = params;\n\n const prodEnvs = [\"prod\", \"production\"];\n const isProdEnv = prodEnvs.includes(env);\n\n if (!isProdEnv) {\n return;\n }\n\n if (this.isRemotePulumiBackendService.execute()) {\n return;\n }\n\n if (allowLocalStateFiles) {\n return;\n }\n\n const error = new Error(\"Cannot deploy to production with local state files.\");\n\n const message = [\n \"Use the %s flag to continue with local Pulumi state files,\",\n \"or configure a remote backend for production deployments.\",\n \"Learn more: https://webiny.link/state-files-production.\"\n ].join(\" \");\n\n throw GracefulError.from(error, message, \"--allow-local-state-files\");\n }\n}\n\nexport const ValidateProductionPulumiState = CoreBeforeDeploy.createImplementation({\n implementation: ValidateProductionPulumiStateImpl,\n dependencies: [IsRemotePulumiBackendService, ProjectSdkParamsService]\n});\n"],"names":["ValidateProductionPulumiStateImpl","isRemotePulumiBackendService","projectSdkParamsService","params","sdkParams","env","allowLocalStateFiles","prodEnvs","isProdEnv","error","Error","message","GracefulError","ValidateProductionPulumiState","CoreBeforeDeploy","IsRemotePulumiBackendService","ProjectSdkParamsService"],"mappings":";;AAOA,MAAMA;IACF,YACYC,4BAAoE,EACpEC,uBAA0D,CACpE;aAFUD,4BAA4B,GAA5BA;aACAC,uBAAuB,GAAvBA;IACT;IAEH,MAAM,QAAQC,MAA+B,EAAE;QAC3C,MAAMC,YAAY,IAAI,CAAC,uBAAuB,CAAC,GAAG;QAClD,MAAM,EAAEC,GAAG,EAAE,GAAGD;QAChB,MAAM,EAAEE,oBAAoB,EAAE,GAAGH;QAEjC,MAAMI,WAAW;YAAC;YAAQ;SAAa;QACvC,MAAMC,YAAYD,SAAS,QAAQ,CAACF;QAEpC,IAAI,CAACG,WACD;QAGJ,IAAI,IAAI,CAAC,4BAA4B,CAAC,OAAO,IACzC;QAGJ,IAAIF,sBACA;QAGJ,MAAMG,QAAQ,IAAIC,MAAM;QAExB,MAAMC,UAAU;QAMhB,MAAMC,cAAc,IAAI,CAACH,OAAOE,SAAS;IAC7C;AACJ;AAEO,MAAME,gCAAgCC,iBAAiB,oBAAoB,CAAC;IAC/E,gBAAgBd;IAChB,cAAc;QAACe;QAA8BC;KAAwB;AACzE"}
1
+ {"version":3,"file":"extensions/Project/ValidateProductionPulumiState.js","sources":["../../../src/extensions/Project/ValidateProductionPulumiState.ts"],"sourcesContent":["import {\n CoreBeforeDeploy,\n GetProductionEnvironments,\n IsRemotePulumiBackendService,\n ProjectSdkParamsService\n} from \"~/abstractions/index.js\";\nimport { GracefulError } from \"~/index.js\";\n\nclass ValidateProductionPulumiStateImpl implements CoreBeforeDeploy.Interface {\n constructor(\n private isRemotePulumiBackendService: IsRemotePulumiBackendService.Interface,\n private projectSdkParamsService: ProjectSdkParamsService.Interface,\n private getProductionEnvironments: GetProductionEnvironments.Interface\n ) {}\n\n async execute(params: CoreBeforeDeploy.Params) {\n const sdkParams = this.projectSdkParamsService.get();\n const { env } = sdkParams;\n const { allowLocalStateFiles } = params;\n\n const prodEnvs = await this.getProductionEnvironments.execute();\n const isProdEnv = prodEnvs.includes(env);\n\n if (!isProdEnv) {\n return;\n }\n\n if (this.isRemotePulumiBackendService.execute()) {\n return;\n }\n\n if (allowLocalStateFiles) {\n return;\n }\n\n const error = new Error(\"Cannot deploy to production with local state files.\");\n\n const message = [\n \"Use the %s flag to continue with local Pulumi state files,\",\n \"or configure a remote backend for production deployments.\",\n \"Learn more: https://webiny.link/state-files-production.\"\n ].join(\" \");\n\n throw GracefulError.from(error, message, \"--allow-local-state-files\");\n }\n}\n\nexport const ValidateProductionPulumiState = CoreBeforeDeploy.createImplementation({\n implementation: ValidateProductionPulumiStateImpl,\n dependencies: [IsRemotePulumiBackendService, ProjectSdkParamsService, GetProductionEnvironments]\n});\n"],"names":["ValidateProductionPulumiStateImpl","isRemotePulumiBackendService","projectSdkParamsService","getProductionEnvironments","params","sdkParams","env","allowLocalStateFiles","prodEnvs","isProdEnv","error","Error","message","GracefulError","ValidateProductionPulumiState","CoreBeforeDeploy","IsRemotePulumiBackendService","ProjectSdkParamsService","GetProductionEnvironments"],"mappings":";;AAQA,MAAMA;IACF,YACYC,4BAAoE,EACpEC,uBAA0D,EAC1DC,yBAA8D,CACxE;aAHUF,4BAA4B,GAA5BA;aACAC,uBAAuB,GAAvBA;aACAC,yBAAyB,GAAzBA;IACT;IAEH,MAAM,QAAQC,MAA+B,EAAE;QAC3C,MAAMC,YAAY,IAAI,CAAC,uBAAuB,CAAC,GAAG;QAClD,MAAM,EAAEC,GAAG,EAAE,GAAGD;QAChB,MAAM,EAAEE,oBAAoB,EAAE,GAAGH;QAEjC,MAAMI,WAAW,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO;QAC7D,MAAMC,YAAYD,SAAS,QAAQ,CAACF;QAEpC,IAAI,CAACG,WACD;QAGJ,IAAI,IAAI,CAAC,4BAA4B,CAAC,OAAO,IACzC;QAGJ,IAAIF,sBACA;QAGJ,MAAMG,QAAQ,IAAIC,MAAM;QAExB,MAAMC,UAAU;QAMhB,MAAMC,cAAc,IAAI,CAACH,OAAOE,SAAS;IAC7C;AACJ;AAEO,MAAME,gCAAgCC,iBAAiB,oBAAoB,CAAC;IAC/E,gBAAgBf;IAChB,cAAc;QAACgB;QAA8BC;QAAyBC;KAA0B;AACpG"}
@@ -52,16 +52,30 @@ export { CoreStackOutputValue };
52
52
  export { ApiStackOutputValue };
53
53
  export { AdminStackOutputValue };
54
54
  export declare const definitions: (import("./index.js").ExtensionDefinitionModel<import("zod").ZodObject<{
55
- src: import("zod").ZodString;
55
+ prefix: import("zod").ZodString;
56
56
  }, import("zod/v4/core").$strip>> | import("./index.js").ExtensionDefinitionModel<import("zod").ZodObject<{
57
- src: import("zod").ZodPipe<import("zod").ZodString, import("zod").ZodTransform<string, string>>;
57
+ key: import("zod").ZodString;
58
+ value: import("zod").ZodAny;
58
59
  }, import("zod/v4/core").$strip>> | import("./index.js").ExtensionDefinitionModel<import("zod").ZodObject<{
59
- enabled: import("zod").ZodDefault<import("zod").ZodBoolean>;
60
+ paramName: import("zod").ZodString;
61
+ value: import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodAny>, import("zod").ZodArray<import("zod").ZodAny>, import("zod").ZodNumber, import("zod").ZodBoolean]>;
60
62
  }, import("zod/v4/core").$strip>> | import("./index.js").ExtensionDefinitionModel<import("zod").ZodObject<{
61
63
  id: import("zod").ZodString;
62
64
  }, import("zod/v4/core").$strip>> | import("./index.js").ExtensionDefinitionModel<import("zod").ZodObject<{
63
65
  varName: import("zod").ZodString;
64
66
  value: import("zod").ZodString;
67
+ }, import("zod/v4/core").$strip>> | import("./index.js").ExtensionDefinitionModel<import("zod").ZodObject<{
68
+ src: import("zod").ZodPipe<import("zod").ZodString, import("zod").ZodTransform<string, string>>;
69
+ }, import("zod/v4/core").$strip>> | import("./index.js").ExtensionDefinitionModel<import("zod").ZodObject<{
70
+ setupName: import("zod").ZodEnum<{
71
+ ddb: "ddb";
72
+ "ddb+es": "ddb+es";
73
+ "ddb+os": "ddb+os";
74
+ }>;
75
+ }, import("zod/v4/core").$strip>> | import("./index.js").ExtensionDefinitionModel<import("zod").ZodObject<{
76
+ enabled: import("zod").ZodDefault<import("zod").ZodBoolean>;
77
+ }, import("zod/v4/core").$strip>> | import("./index.js").ExtensionDefinitionModel<import("zod").ZodObject<{
78
+ src: import("zod").ZodString;
65
79
  }, import("zod/v4/core").$strip>> | import("./index.js").ExtensionDefinitionModel<import("zod").ZodObject<{
66
80
  features: import("zod").ZodObject<{
67
81
  multiTenancy: import("zod").ZodOptional<import("zod").ZodBoolean>;
@@ -82,30 +96,23 @@ export declare const definitions: (import("./index.js").ExtensionDefinitionModel
82
96
  options: import("zod").ZodOptional<import("zod").ZodObject<{
83
97
  websiteBuilder: import("zod").ZodOptional<import("zod").ZodObject<{
84
98
  pageGeneration: import("zod").ZodOptional<import("zod").ZodBoolean>;
99
+ pageTranslation: import("zod").ZodOptional<import("zod").ZodBoolean>;
85
100
  }, import("zod/v4/core").$strip>>;
86
101
  fileManager: import("zod").ZodOptional<import("zod").ZodObject<{
87
102
  imageEnrichment: import("zod").ZodOptional<import("zod").ZodBoolean>;
88
103
  }, import("zod/v4/core").$strip>>;
89
104
  lexicalGeneration: import("zod").ZodOptional<import("zod").ZodBoolean>;
105
+ cms: import("zod").ZodOptional<import("zod").ZodObject<{
106
+ entryGeneration: import("zod").ZodOptional<import("zod").ZodBoolean>;
107
+ entryComparison: import("zod").ZodOptional<import("zod").ZodBoolean>;
108
+ entryTranslation: import("zod").ZodOptional<import("zod").ZodBoolean>;
109
+ }, import("zod/v4/core").$strip>>;
90
110
  }, import("zod/v4/core").$strip>>;
91
111
  }, import("zod/v4/core").$strip>>;
112
+ abTesting: import("zod").ZodOptional<import("zod").ZodBoolean>;
92
113
  }, import("zod/v4/core").$strip>;
93
- }, import("zod/v4/core").$strip>> | import("./index.js").ExtensionDefinitionModel<import("zod").ZodObject<{
94
- prefix: import("zod").ZodString;
95
114
  }, import("zod/v4/core").$strip>> | import("./index.js").ExtensionDefinitionModel<import("zod").ZodObject<{
96
115
  environments: import("zod").ZodArray<import("zod").ZodString>;
97
- }, import("zod/v4/core").$strip>> | import("./index.js").ExtensionDefinitionModel<import("zod").ZodObject<{
98
- key: import("zod").ZodString;
99
- value: import("zod").ZodAny;
100
- }, import("zod/v4/core").$strip>> | import("./index.js").ExtensionDefinitionModel<import("zod").ZodObject<{
101
- setupName: import("zod").ZodEnum<{
102
- ddb: "ddb";
103
- "ddb+es": "ddb+es";
104
- "ddb+os": "ddb+os";
105
- }>;
106
- }, import("zod/v4/core").$strip>> | import("./index.js").ExtensionDefinitionModel<import("zod").ZodObject<{
107
- paramName: import("zod").ZodString;
108
- value: import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodAny>, import("zod").ZodArray<import("zod").ZodAny>, import("zod").ZodNumber, import("zod").ZodBoolean]>;
109
116
  }, import("zod/v4/core").$strip>> | import("./index.js").ExtensionDefinitionModel<import("zod").ZodObject<{
110
117
  size: import("zod").ZodNumber;
111
118
  }, import("zod/v4/core").$strip>>)[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/project",
3
- "version": "0.0.0-unstable.7be00a75a9",
3
+ "version": "0.0.0-unstable.9f53ea597d",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -13,17 +13,17 @@
13
13
  "description": "An SDK for managing Webiny projects.",
14
14
  "license": "MIT",
15
15
  "dependencies": {
16
- "@webiny/aws-sdk": "0.0.0-unstable.7be00a75a9",
17
- "@webiny/build-tools": "0.0.0-unstable.7be00a75a9",
18
- "@webiny/di": "0.0.0-unstable.7be00a75a9",
19
- "@webiny/feature-flags": "0.0.0-unstable.7be00a75a9",
20
- "@webiny/global-config": "0.0.0-unstable.7be00a75a9",
21
- "@webiny/pulumi-sdk": "0.0.0-unstable.7be00a75a9",
22
- "@webiny/react-properties": "0.0.0-unstable.7be00a75a9",
23
- "@webiny/system-requirements": "0.0.0-unstable.7be00a75a9",
24
- "@webiny/telemetry": "0.0.0-unstable.7be00a75a9",
25
- "@webiny/utils": "0.0.0-unstable.7be00a75a9",
26
- "@webiny/wcp": "0.0.0-unstable.7be00a75a9",
16
+ "@webiny/aws-sdk": "0.0.0-unstable.9f53ea597d",
17
+ "@webiny/build-tools": "0.0.0-unstable.9f53ea597d",
18
+ "@webiny/di": "1.0.2",
19
+ "@webiny/feature-flags": "0.0.0-unstable.9f53ea597d",
20
+ "@webiny/global-config": "0.0.0-unstable.9f53ea597d",
21
+ "@webiny/pulumi-sdk": "0.0.0-unstable.9f53ea597d",
22
+ "@webiny/react-properties": "0.0.0-unstable.9f53ea597d",
23
+ "@webiny/system-requirements": "0.0.0-unstable.9f53ea597d",
24
+ "@webiny/telemetry": "0.0.0-unstable.9f53ea597d",
25
+ "@webiny/utils": "0.0.0-unstable.9f53ea597d",
26
+ "@webiny/wcp": "0.0.0-unstable.9f53ea597d",
27
27
  "chalk": "5.6.2",
28
28
  "chokidar": "5.0.0",
29
29
  "ci-info": "4.4.0",
@@ -36,12 +36,12 @@
36
36
  "find-up": "8.0.0",
37
37
  "get-tsconfig": "4.14.0",
38
38
  "graphql-request": "7.4.0",
39
- "humanize-duration": "3.33.2",
39
+ "humanize-duration": "3.34.0",
40
40
  "jsdom": "29.1.1",
41
41
  "load-json-file": "7.0.1",
42
42
  "lodash": "4.18.1",
43
43
  "minimatch": "10.2.5",
44
- "mqtt": "5.15.1",
44
+ "mqtt": "5.15.2",
45
45
  "neverthrow": "8.2.0",
46
46
  "p-retry": "8.0.0",
47
47
  "pino": "10.3.1",
@@ -51,7 +51,7 @@
51
51
  "replace-in-path": "1.1.0",
52
52
  "serialize-error": "13.0.1",
53
53
  "ts-morph": "28.0.0",
54
- "tsx": "4.21.0",
54
+ "tsx": "4.23.1",
55
55
  "write-json-file": "7.0.0",
56
56
  "zod": "4.4.3"
57
57
  },
@@ -61,8 +61,8 @@
61
61
  "@types/jsdom": "28.0.3",
62
62
  "@types/lodash": "4.17.24",
63
63
  "rimraf": "6.1.3",
64
- "type-fest": "5.6.0",
65
- "typescript": "6.0.3"
64
+ "type-fest": "5.8.0",
65
+ "typescript": "7.0.2"
66
66
  },
67
67
  "adio": {
68
68
  "ignore": {
@@ -1,5 +1,5 @@
1
1
  import "tsx/esm";
2
- import { Properties, toObject } from "@webiny/react-properties";
2
+ import { AsyncProperties, toObject } from "@webiny/react-properties";
3
3
  import debounce from "debounce";
4
4
  import react from "react";
5
5
  import { createRoot } from "react-dom/client";
@@ -41,7 +41,13 @@ process.on("unhandledRejection", (reason)=>{
41
41
  const { project: projectModelDto } = JSON.parse(process.argv[2]);
42
42
  const project = ProjectModel.fromDto(projectModelDto);
43
43
  const { Extensions: Extensions } = await import(toImportSpecifier(project.paths.webinyConfigBaseFile.toString()));
44
+ const RENDER_TIMEOUT_MS = 30000;
45
+ const timeout = setTimeout(()=>{
46
+ sendError(new Error(`Config rendering timed out after ${RENDER_TIMEOUT_MS}ms. This usually means an <Await> promise never settled.`));
47
+ process.exit(1);
48
+ }, RENDER_TIMEOUT_MS);
44
49
  const onChange = debounce((value)=>{
50
+ clearTimeout(timeout);
45
51
  sendSuccess(toObject(value));
46
52
  process.exit(0);
47
53
  });
@@ -50,7 +56,7 @@ __webpack_require__.g.window = renderConfigWorker_window;
50
56
  __webpack_require__.g.document = renderConfigWorker_window.document;
51
57
  const root = renderConfigWorker_window.document.getElementById("root");
52
58
  const reactRoot = createRoot(root);
53
- reactRoot.render(/*#__PURE__*/ react.createElement(WcpProjectLicenseProvider, null, /*#__PURE__*/ react.createElement(EnvProvider, null, /*#__PURE__*/ react.createElement(ProductionEnvironmentsCollector, null, /*#__PURE__*/ react.createElement(Properties, {
59
+ reactRoot.render(/*#__PURE__*/ react.createElement(WcpProjectLicenseProvider, null, /*#__PURE__*/ react.createElement(EnvProvider, null, /*#__PURE__*/ react.createElement(ProductionEnvironmentsCollector, null, /*#__PURE__*/ react.createElement(AsyncProperties, {
54
60
  onChange: onChange
55
61
  }, /*#__PURE__*/ react.createElement(Extensions, null))))));
56
62
 
@@ -1 +1 @@
1
- {"version":3,"file":"services/GetProjectConfigService/renderConfigWorker.js","sources":["../../../src/services/GetProjectConfigService/renderConfigWorker.tsx"],"sourcesContent":["import \"tsx/esm\";\nimport { Properties, toObject } from \"@webiny/react-properties\";\nimport debounce from \"debounce\";\nimport React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { JSDOM } from \"jsdom\";\nimport { serializeError } from \"serialize-error\";\nimport type { RenderConfigParamsDto, RenderConfigWorkerMessageDto } from \"./renderConfig.js\";\nimport { ProjectModel } from \"~/models/ProjectModel.js\";\nimport { toImportSpecifier } from \"~/utils/index.js\";\nimport { EnvProvider } from \"./EnvContext.js\";\nimport { WcpProjectLicenseProvider } from \"./WcpProjectLicenseContext.js\";\nimport { ProductionEnvironmentsCollector } from \"./ProductionEnvironmentsContext.js\";\n\nconst sendError = (err: Error) => {\n const message: RenderConfigWorkerMessageDto = {\n type: \"error\",\n error: serializeError(err),\n data: null\n };\n\n if (process.send) {\n process.send!(message);\n } else {\n console.error(message);\n }\n};\n\nconst sendSuccess = (data: Record<string, any> = {}) => {\n const message: RenderConfigWorkerMessageDto = {\n type: \"success\",\n error: null,\n data\n };\n\n if (process.send) {\n process.send!(message);\n } else {\n console.log(message);\n }\n};\n\nprocess.on(\"uncaughtException\", err => {\n sendError(err);\n process.exit(1);\n});\n\nprocess.on(\"unhandledRejection\", reason => {\n const err = reason instanceof Error ? reason : new Error(String(reason));\n sendError(err);\n process.exit(1);\n});\n\nconst { project: projectModelDto } = JSON.parse(process.argv[2]) as RenderConfigParamsDto;\nconst project = ProjectModel.fromDto(projectModelDto);\n\nconst { Extensions } = await import(\n toImportSpecifier(project.paths.webinyConfigBaseFile.toString())\n);\n\nconst onChange = debounce((value: any) => {\n sendSuccess(toObject(value));\n process.exit(0);\n});\n\nconst { window } = new JSDOM(`<div id=\"root\"/>`);\n\n(global as any).window = window;\n\n(global as any).document = window.document;\n\nconst root = window.document.getElementById(\"root\")!;\n\nconst reactRoot = createRoot(root);\n\nreactRoot.render(\n <WcpProjectLicenseProvider>\n <EnvProvider>\n <ProductionEnvironmentsCollector>\n <Properties onChange={onChange}>\n <Extensions />\n </Properties>\n </ProductionEnvironmentsCollector>\n </EnvProvider>\n </WcpProjectLicenseProvider>\n);\n"],"names":["sendError","err","message","serializeError","process","console","sendSuccess","data","reason","Error","String","projectModelDto","JSON","project","ProjectModel","Extensions","toImportSpecifier","onChange","debounce","value","toObject","window","JSDOM","global","root","reactRoot","createRoot","WcpProjectLicenseProvider","EnvProvider","ProductionEnvironmentsCollector","Properties"],"mappings":";;;;;;;;;;;;;AAcA,MAAMA,YAAY,CAACC;IACf,MAAMC,UAAwC;QAC1C,MAAM;QACN,OAAOC,eAAeF;QACtB,MAAM;IACV;IAEA,IAAIG,QAAQ,IAAI,EACZA,QAAQ,IAAI,CAAEF;SAEdG,QAAQ,KAAK,CAACH;AAEtB;AAEA,MAAMI,cAAc,CAACC,OAA4B,CAAC,CAAC;IAC/C,MAAML,UAAwC;QAC1C,MAAM;QACN,OAAO;QACPK;IACJ;IAEA,IAAIH,QAAQ,IAAI,EACZA,QAAQ,IAAI,CAAEF;SAEdG,QAAQ,GAAG,CAACH;AAEpB;AAEAE,QAAQ,EAAE,CAAC,qBAAqBH,CAAAA;IAC5BD,UAAUC;IACVG,QAAQ,IAAI,CAAC;AACjB;AAEAA,QAAQ,EAAE,CAAC,sBAAsBI,CAAAA;IAC7B,MAAMP,MAAMO,kBAAkBC,QAAQD,SAAS,IAAIC,MAAMC,OAAOF;IAChER,UAAUC;IACVG,QAAQ,IAAI,CAAC;AACjB;AAEA,MAAM,EAAE,SAASO,eAAe,EAAE,GAAGC,KAAK,KAAK,CAACR,QAAQ,IAAI,CAAC,EAAE;AAC/D,MAAMS,UAAUC,aAAa,OAAO,CAACH;AAErC,MAAM,EAAEI,YAAAA,UAAU,EAAE,GAAG,MAAM,MAAM,CAC/BC,kBAAkBH,QAAQ,KAAK,CAAC,oBAAoB,CAAC,QAAQ;AAGjE,MAAMI,WAAWC,SAAS,CAACC;IACvBb,YAAYc,SAASD;IACrBf,QAAQ,IAAI,CAAC;AACjB;AAEA,MAAM,EAAEiB,QAAAA,yBAAM,EAAE,GAAG,IAAIC,MAAM;AAE5BC,oBAAAA,CAAMA,CAAS,MAAM,GAAGF;AAExBE,oBAAAA,CAAMA,CAAS,QAAQ,GAAGF,0BAAO,QAAQ;AAE1C,MAAMG,OAAOH,0BAAO,QAAQ,CAAC,cAAc,CAAC;AAE5C,MAAMI,YAAYC,WAAWF;AAE7BC,UAAU,MAAM,CAAC,WAAD,GACZ,oBAACE,2BAAyBA,MAAAA,WAAAA,GACtB,oBAACC,aAAWA,MAAAA,WAAAA,GACR,oBAACC,iCAA+BA,MAAAA,WAAAA,GAC5B,oBAACC,YAAUA;IAAC,UAAUb;iBAClB,oBAACF,YAAUA"}
1
+ {"version":3,"file":"services/GetProjectConfigService/renderConfigWorker.js","sources":["../../../src/services/GetProjectConfigService/renderConfigWorker.tsx"],"sourcesContent":["import \"tsx/esm\";\nimport { AsyncProperties, toObject } from \"@webiny/react-properties\";\nimport debounce from \"debounce\";\nimport React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { JSDOM } from \"jsdom\";\nimport { serializeError } from \"serialize-error\";\nimport type { RenderConfigParamsDto, RenderConfigWorkerMessageDto } from \"./renderConfig.js\";\nimport { ProjectModel } from \"~/models/ProjectModel.js\";\nimport { toImportSpecifier } from \"~/utils/index.js\";\nimport { EnvProvider } from \"./EnvContext.js\";\nimport { WcpProjectLicenseProvider } from \"./WcpProjectLicenseContext.js\";\nimport { ProductionEnvironmentsCollector } from \"./ProductionEnvironmentsContext.js\";\n\nconst sendError = (err: Error) => {\n const message: RenderConfigWorkerMessageDto = {\n type: \"error\",\n error: serializeError(err),\n data: null\n };\n\n if (process.send) {\n process.send!(message);\n } else {\n console.error(message);\n }\n};\n\nconst sendSuccess = (data: Record<string, any> = {}) => {\n const message: RenderConfigWorkerMessageDto = {\n type: \"success\",\n error: null,\n data\n };\n\n if (process.send) {\n process.send!(message);\n } else {\n console.log(message);\n }\n};\n\nprocess.on(\"uncaughtException\", err => {\n sendError(err);\n process.exit(1);\n});\n\nprocess.on(\"unhandledRejection\", reason => {\n const err = reason instanceof Error ? reason : new Error(String(reason));\n sendError(err);\n process.exit(1);\n});\n\nconst { project: projectModelDto } = JSON.parse(process.argv[2]) as RenderConfigParamsDto;\nconst project = ProjectModel.fromDto(projectModelDto);\n\nconst { Extensions } = await import(\n toImportSpecifier(project.paths.webinyConfigBaseFile.toString())\n);\n\nconst RENDER_TIMEOUT_MS = 30_000;\n\nconst timeout = setTimeout(() => {\n sendError(\n new Error(\n `Config rendering timed out after ${RENDER_TIMEOUT_MS}ms. ` +\n `This usually means an <Await> promise never settled.`\n )\n );\n process.exit(1);\n}, RENDER_TIMEOUT_MS);\n\nconst onChange = debounce((value: any) => {\n clearTimeout(timeout);\n sendSuccess(toObject(value));\n process.exit(0);\n});\n\nconst { window } = new JSDOM(`<div id=\"root\"/>`);\n\n(global as any).window = window;\n\n(global as any).document = window.document;\n\nconst root = window.document.getElementById(\"root\")!;\n\nconst reactRoot = createRoot(root);\n\nreactRoot.render(\n <WcpProjectLicenseProvider>\n <EnvProvider>\n <ProductionEnvironmentsCollector>\n <AsyncProperties onChange={onChange}>\n <Extensions />\n </AsyncProperties>\n </ProductionEnvironmentsCollector>\n </EnvProvider>\n </WcpProjectLicenseProvider>\n);\n"],"names":["sendError","err","message","serializeError","process","console","sendSuccess","data","reason","Error","String","projectModelDto","JSON","project","ProjectModel","Extensions","toImportSpecifier","RENDER_TIMEOUT_MS","timeout","setTimeout","onChange","debounce","value","clearTimeout","toObject","window","JSDOM","global","root","reactRoot","createRoot","WcpProjectLicenseProvider","EnvProvider","ProductionEnvironmentsCollector","AsyncProperties"],"mappings":";;;;;;;;;;;;;AAcA,MAAMA,YAAY,CAACC;IACf,MAAMC,UAAwC;QAC1C,MAAM;QACN,OAAOC,eAAeF;QACtB,MAAM;IACV;IAEA,IAAIG,QAAQ,IAAI,EACZA,QAAQ,IAAI,CAAEF;SAEdG,QAAQ,KAAK,CAACH;AAEtB;AAEA,MAAMI,cAAc,CAACC,OAA4B,CAAC,CAAC;IAC/C,MAAML,UAAwC;QAC1C,MAAM;QACN,OAAO;QACPK;IACJ;IAEA,IAAIH,QAAQ,IAAI,EACZA,QAAQ,IAAI,CAAEF;SAEdG,QAAQ,GAAG,CAACH;AAEpB;AAEAE,QAAQ,EAAE,CAAC,qBAAqBH,CAAAA;IAC5BD,UAAUC;IACVG,QAAQ,IAAI,CAAC;AACjB;AAEAA,QAAQ,EAAE,CAAC,sBAAsBI,CAAAA;IAC7B,MAAMP,MAAMO,kBAAkBC,QAAQD,SAAS,IAAIC,MAAMC,OAAOF;IAChER,UAAUC;IACVG,QAAQ,IAAI,CAAC;AACjB;AAEA,MAAM,EAAE,SAASO,eAAe,EAAE,GAAGC,KAAK,KAAK,CAACR,QAAQ,IAAI,CAAC,EAAE;AAC/D,MAAMS,UAAUC,aAAa,OAAO,CAACH;AAErC,MAAM,EAAEI,YAAAA,UAAU,EAAE,GAAG,MAAM,MAAM,CAC/BC,kBAAkBH,QAAQ,KAAK,CAAC,oBAAoB,CAAC,QAAQ;AAGjE,MAAMI,oBAAoB;AAE1B,MAAMC,UAAUC,WAAW;IACvBnB,UACI,IAAIS,MACA,CAAC,iCAAiC,EAAEQ,kBAAkB,wDAAI,CAAC;IAInEb,QAAQ,IAAI,CAAC;AACjB,GAAGa;AAEH,MAAMG,WAAWC,SAAS,CAACC;IACvBC,aAAaL;IACbZ,YAAYkB,SAASF;IACrBlB,QAAQ,IAAI,CAAC;AACjB;AAEA,MAAM,EAAEqB,QAAAA,yBAAM,EAAE,GAAG,IAAIC,MAAM;AAE5BC,oBAAAA,CAAMA,CAAS,MAAM,GAAGF;AAExBE,oBAAAA,CAAMA,CAAS,QAAQ,GAAGF,0BAAO,QAAQ;AAE1C,MAAMG,OAAOH,0BAAO,QAAQ,CAAC,cAAc,CAAC;AAE5C,MAAMI,YAAYC,WAAWF;AAE7BC,UAAU,MAAM,CAAC,WAAD,GACZ,oBAACE,2BAAyBA,MAAAA,WAAAA,GACtB,oBAACC,aAAWA,MAAAA,WAAAA,GACR,oBAACC,iCAA+BA,MAAAA,WAAAA,GAC5B,oBAACC,iBAAeA;IAAC,UAAUd;iBACvB,oBAACL,YAAUA"}
@@ -0,0 +1,10 @@
1
+ import { GetCwdService, GetProjectInstallationIdService } from "../../abstractions/index.js";
2
+ declare class DefaultGetProjectInstallationIdService implements GetProjectInstallationIdService.Interface {
3
+ private getCwdService;
4
+ private loaded;
5
+ private installationId;
6
+ constructor(getCwdService: GetCwdService.Interface);
7
+ execute(): string | null;
8
+ }
9
+ export declare const getProjectInstallationIdService: import("@webiny/di").Implementation<typeof DefaultGetProjectInstallationIdService>;
10
+ export {};
@@ -0,0 +1,34 @@
1
+ import { createImplementation } from "@webiny/di";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { GetCwdService, GetProjectInstallationIdService } from "../../abstractions/index.js";
5
+ class DefaultGetProjectInstallationIdService {
6
+ constructor(getCwdService){
7
+ this.getCwdService = getCwdService;
8
+ this.loaded = false;
9
+ this.installationId = null;
10
+ }
11
+ execute() {
12
+ if (this.loaded) return this.installationId;
13
+ try {
14
+ const path = join(this.getCwdService.execute(), "package.json");
15
+ if (!existsSync(path)) return null;
16
+ const data = JSON.parse(readFileSync(path, "utf8"));
17
+ this.installationId = "string" == typeof data?.webiny?.installationId ? data.webiny.installationId : null;
18
+ } catch {
19
+ this.installationId = null;
20
+ }
21
+ this.loaded = true;
22
+ return this.installationId;
23
+ }
24
+ }
25
+ const getProjectInstallationIdService = createImplementation({
26
+ abstraction: GetProjectInstallationIdService,
27
+ implementation: DefaultGetProjectInstallationIdService,
28
+ dependencies: [
29
+ GetCwdService
30
+ ]
31
+ });
32
+ export { getProjectInstallationIdService };
33
+
34
+ //# sourceMappingURL=GetProjectInstallationIdService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services/GetProjectInstallationIdService/GetProjectInstallationIdService.js","sources":["../../../src/services/GetProjectInstallationIdService/GetProjectInstallationIdService.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { GetCwdService, GetProjectInstallationIdService } from \"~/abstractions/index.js\";\n\nclass DefaultGetProjectInstallationIdService implements GetProjectInstallationIdService.Interface {\n private loaded = false;\n private installationId: string | null = null;\n\n constructor(private getCwdService: GetCwdService.Interface) {}\n\n execute() {\n if (this.loaded) {\n return this.installationId;\n }\n\n try {\n const path = join(this.getCwdService.execute(), \"package.json\");\n if (!existsSync(path)) {\n return null;\n }\n const data = JSON.parse(readFileSync(path, \"utf8\"));\n this.installationId =\n typeof data?.webiny?.installationId === \"string\"\n ? data.webiny.installationId\n : null;\n } catch {\n this.installationId = null;\n }\n\n this.loaded = true;\n return this.installationId;\n }\n}\n\nexport const getProjectInstallationIdService = createImplementation({\n abstraction: GetProjectInstallationIdService,\n implementation: DefaultGetProjectInstallationIdService,\n dependencies: [GetCwdService]\n});\n"],"names":["DefaultGetProjectInstallationIdService","getCwdService","path","join","existsSync","data","JSON","readFileSync","getProjectInstallationIdService","createImplementation","GetProjectInstallationIdService","GetCwdService"],"mappings":";;;;AAKA,MAAMA;IAIF,YAAoBC,aAAsC,CAAE;aAAxCA,aAAa,GAAbA;aAHZ,MAAM,GAAG;aACT,cAAc,GAAkB;IAEqB;IAE7D,UAAU;QACN,IAAI,IAAI,CAAC,MAAM,EACX,OAAO,IAAI,CAAC,cAAc;QAG9B,IAAI;YACA,MAAMC,OAAOC,KAAK,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI;YAChD,IAAI,CAACC,WAAWF,OACZ,OAAO;YAEX,MAAMG,OAAOC,KAAK,KAAK,CAACC,aAAaL,MAAM;YAC3C,IAAI,CAAC,cAAc,GACf,AAAwC,YAAxC,OAAOG,MAAM,QAAQ,iBACfA,KAAK,MAAM,CAAC,cAAc,GAC1B;QACd,EAAE,OAAM;YACJ,IAAI,CAAC,cAAc,GAAG;QAC1B;QAEA,IAAI,CAAC,MAAM,GAAG;QACd,OAAO,IAAI,CAAC,cAAc;IAC9B;AACJ;AAEO,MAAMG,kCAAkCC,qBAAqB;IAChE,aAAaC;IACb,gBAAgBV;IAChB,cAAc;QAACW;KAAc;AACjC"}
@@ -0,0 +1 @@
1
+ export * from "./GetProjectInstallationIdService.js";
@@ -0,0 +1 @@
1
+ export * from "./GetProjectInstallationIdService.js";
@@ -1,6 +1,6 @@
1
1
  import { createImplementation } from "@webiny/di";
2
2
  import { GetProjectConfig, GetProjectService, InitProjectSdkService } from "../../abstractions/index.js";
3
- import { buildAppWithHooks, deployAppClearWatchedLambdaFunctions, deployAppRefreshStackOutputCache, deployAppWithHooks, deployAppWithWatchedLambdaReplacement, getPulumiServiceWithDownloadInfo, watchWithHooks } from "../../decorators/index.js";
3
+ import { buildAppWithHooks, deployAppClearWatchedLambdaFunctions, deployAppRefreshStackOutputCache, deployAppWithHooks, deployAppWithWatchedLambdaReplacement, destroyAppClearStackOutputCache, getPulumiServiceWithDownloadInfo, watchWithHooks } from "../../decorators/index.js";
4
4
  import { applyEnvVars } from "./applyEnvVars.js";
5
5
  import { applyWcpEnvVars } from "./applyWcpEnvVars.js";
6
6
  import { registerHooks } from "./registerHooks.js";
@@ -27,6 +27,7 @@ class DefaultInitProjectSdkService {
27
27
  container.registerDecorator(deployAppWithWatchedLambdaReplacement);
28
28
  container.registerDecorator(deployAppClearWatchedLambdaFunctions);
29
29
  container.registerDecorator(deployAppRefreshStackOutputCache);
30
+ container.registerDecorator(destroyAppClearStackOutputCache);
30
31
  container.registerDecorator(deployAppWithHooks);
31
32
  container.registerDecorator(watchWithHooks);
32
33
  container.registerDecorator(getPulumiServiceWithDownloadInfo);
@@ -1 +1 @@
1
- {"version":3,"file":"services/InitProjectSdkService/InitProjectSdkService.js","sources":["../../../src/services/InitProjectSdkService/InitProjectSdkService.ts"],"sourcesContent":["import { createImplementation, Container } from \"@webiny/di\";\nimport {\n GetProjectService,\n GetProjectConfig,\n InitProjectSdkService\n} from \"~/abstractions/index.js\";\nimport {\n buildAppWithHooks,\n deployAppClearWatchedLambdaFunctions,\n deployAppRefreshStackOutputCache,\n deployAppWithHooks,\n deployAppWithWatchedLambdaReplacement,\n watchWithHooks,\n getPulumiServiceWithDownloadInfo\n} from \"~/decorators/index.js\";\nimport { applyEnvVars } from \"./applyEnvVars.js\";\nimport { applyWcpEnvVars } from \"./applyWcpEnvVars.js\";\nimport { registerHooks } from \"./registerHooks.js\";\nimport { registerPulumiExtensions } from \"./registerPulumiExtensions.js\";\nimport { registerImplementations } from \"./registerImplementations.js\";\nimport { registerDecorators } from \"./registerDecorators.js\";\n\nexport class DefaultInitProjectSdkService implements InitProjectSdkService.Interface {\n constructor(\n private getProjectService: GetProjectService.Interface,\n private getProjectConfig: GetProjectConfig.Interface\n ) {}\n\n async execute(container: Container) {\n const project = this.getProjectService.execute();\n const projectExtensions = await this.getProjectConfig.execute({\n tags: { runtimeContext: \"project\" }\n });\n\n // Apply environment variables from extensions.\n applyEnvVars(projectExtensions);\n\n // Set WCP environment variables if project ID exists.\n await applyWcpEnvVars(container);\n\n // Register hooks from extensions.\n await registerHooks(container, projectExtensions, project);\n\n // Register Pulumi extensions.\n await registerPulumiExtensions(container, projectExtensions, project);\n\n // Decorators that must be applied last on top of potentially custom ones.\n container.registerDecorator(buildAppWithHooks);\n container.registerDecorator(deployAppWithWatchedLambdaReplacement);\n container.registerDecorator(deployAppClearWatchedLambdaFunctions);\n container.registerDecorator(deployAppRefreshStackOutputCache);\n container.registerDecorator(deployAppWithHooks);\n container.registerDecorator(watchWithHooks);\n container.registerDecorator(getPulumiServiceWithDownloadInfo);\n\n // Register custom implementations first (they replace existing implementations).\n await registerImplementations(container, projectExtensions, project);\n\n // Register decorators after implementations (they enhance existing implementations).\n await registerDecorators(container, projectExtensions, project);\n }\n}\n\nexport const initProjectSdkService = createImplementation({\n abstraction: InitProjectSdkService,\n implementation: DefaultInitProjectSdkService,\n dependencies: [GetProjectService, GetProjectConfig]\n});\n"],"names":["DefaultInitProjectSdkService","getProjectService","getProjectConfig","container","project","projectExtensions","applyEnvVars","applyWcpEnvVars","registerHooks","registerPulumiExtensions","buildAppWithHooks","deployAppWithWatchedLambdaReplacement","deployAppClearWatchedLambdaFunctions","deployAppRefreshStackOutputCache","deployAppWithHooks","watchWithHooks","getPulumiServiceWithDownloadInfo","registerImplementations","registerDecorators","initProjectSdkService","createImplementation","InitProjectSdkService","GetProjectService","GetProjectConfig"],"mappings":";;;;;;;;;AAsBO,MAAMA;IACT,YACYC,iBAA8C,EAC9CC,gBAA4C,CACtD;aAFUD,iBAAiB,GAAjBA;aACAC,gBAAgB,GAAhBA;IACT;IAEH,MAAM,QAAQC,SAAoB,EAAE;QAChC,MAAMC,UAAU,IAAI,CAAC,iBAAiB,CAAC,OAAO;QAC9C,MAAMC,oBAAoB,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC1D,MAAM;gBAAE,gBAAgB;YAAU;QACtC;QAGAC,aAAaD;QAGb,MAAME,gBAAgBJ;QAGtB,MAAMK,cAAcL,WAAWE,mBAAmBD;QAGlD,MAAMK,yBAAyBN,WAAWE,mBAAmBD;QAG7DD,UAAU,iBAAiB,CAACO;QAC5BP,UAAU,iBAAiB,CAACQ;QAC5BR,UAAU,iBAAiB,CAACS;QAC5BT,UAAU,iBAAiB,CAACU;QAC5BV,UAAU,iBAAiB,CAACW;QAC5BX,UAAU,iBAAiB,CAACY;QAC5BZ,UAAU,iBAAiB,CAACa;QAG5B,MAAMC,wBAAwBd,WAAWE,mBAAmBD;QAG5D,MAAMc,mBAAmBf,WAAWE,mBAAmBD;IAC3D;AACJ;AAEO,MAAMe,wBAAwBC,qBAAqB;IACtD,aAAaC;IACb,gBAAgBrB;IAChB,cAAc;QAACsB;QAAmBC;KAAiB;AACvD"}
1
+ {"version":3,"file":"services/InitProjectSdkService/InitProjectSdkService.js","sources":["../../../src/services/InitProjectSdkService/InitProjectSdkService.ts"],"sourcesContent":["import { createImplementation, Container } from \"@webiny/di\";\nimport {\n GetProjectService,\n GetProjectConfig,\n InitProjectSdkService\n} from \"~/abstractions/index.js\";\nimport {\n buildAppWithHooks,\n deployAppClearWatchedLambdaFunctions,\n deployAppRefreshStackOutputCache,\n deployAppWithHooks,\n deployAppWithWatchedLambdaReplacement,\n destroyAppClearStackOutputCache,\n watchWithHooks,\n getPulumiServiceWithDownloadInfo\n} from \"~/decorators/index.js\";\nimport { applyEnvVars } from \"./applyEnvVars.js\";\nimport { applyWcpEnvVars } from \"./applyWcpEnvVars.js\";\nimport { registerHooks } from \"./registerHooks.js\";\nimport { registerPulumiExtensions } from \"./registerPulumiExtensions.js\";\nimport { registerImplementations } from \"./registerImplementations.js\";\nimport { registerDecorators } from \"./registerDecorators.js\";\n\nexport class DefaultInitProjectSdkService implements InitProjectSdkService.Interface {\n constructor(\n private getProjectService: GetProjectService.Interface,\n private getProjectConfig: GetProjectConfig.Interface\n ) {}\n\n async execute(container: Container) {\n const project = this.getProjectService.execute();\n const projectExtensions = await this.getProjectConfig.execute({\n tags: { runtimeContext: \"project\" }\n });\n\n // Apply environment variables from extensions.\n applyEnvVars(projectExtensions);\n\n // Set WCP environment variables if project ID exists.\n await applyWcpEnvVars(container);\n\n // Register hooks from extensions.\n await registerHooks(container, projectExtensions, project);\n\n // Register Pulumi extensions.\n await registerPulumiExtensions(container, projectExtensions, project);\n\n // Decorators that must be applied last on top of potentially custom ones.\n container.registerDecorator(buildAppWithHooks);\n container.registerDecorator(deployAppWithWatchedLambdaReplacement);\n container.registerDecorator(deployAppClearWatchedLambdaFunctions);\n container.registerDecorator(deployAppRefreshStackOutputCache);\n container.registerDecorator(destroyAppClearStackOutputCache);\n container.registerDecorator(deployAppWithHooks);\n container.registerDecorator(watchWithHooks);\n container.registerDecorator(getPulumiServiceWithDownloadInfo);\n\n // Register custom implementations first (they replace existing implementations).\n await registerImplementations(container, projectExtensions, project);\n\n // Register decorators after implementations (they enhance existing implementations).\n await registerDecorators(container, projectExtensions, project);\n }\n}\n\nexport const initProjectSdkService = createImplementation({\n abstraction: InitProjectSdkService,\n implementation: DefaultInitProjectSdkService,\n dependencies: [GetProjectService, GetProjectConfig]\n});\n"],"names":["DefaultInitProjectSdkService","getProjectService","getProjectConfig","container","project","projectExtensions","applyEnvVars","applyWcpEnvVars","registerHooks","registerPulumiExtensions","buildAppWithHooks","deployAppWithWatchedLambdaReplacement","deployAppClearWatchedLambdaFunctions","deployAppRefreshStackOutputCache","destroyAppClearStackOutputCache","deployAppWithHooks","watchWithHooks","getPulumiServiceWithDownloadInfo","registerImplementations","registerDecorators","initProjectSdkService","createImplementation","InitProjectSdkService","GetProjectService","GetProjectConfig"],"mappings":";;;;;;;;;AAuBO,MAAMA;IACT,YACYC,iBAA8C,EAC9CC,gBAA4C,CACtD;aAFUD,iBAAiB,GAAjBA;aACAC,gBAAgB,GAAhBA;IACT;IAEH,MAAM,QAAQC,SAAoB,EAAE;QAChC,MAAMC,UAAU,IAAI,CAAC,iBAAiB,CAAC,OAAO;QAC9C,MAAMC,oBAAoB,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC1D,MAAM;gBAAE,gBAAgB;YAAU;QACtC;QAGAC,aAAaD;QAGb,MAAME,gBAAgBJ;QAGtB,MAAMK,cAAcL,WAAWE,mBAAmBD;QAGlD,MAAMK,yBAAyBN,WAAWE,mBAAmBD;QAG7DD,UAAU,iBAAiB,CAACO;QAC5BP,UAAU,iBAAiB,CAACQ;QAC5BR,UAAU,iBAAiB,CAACS;QAC5BT,UAAU,iBAAiB,CAACU;QAC5BV,UAAU,iBAAiB,CAACW;QAC5BX,UAAU,iBAAiB,CAACY;QAC5BZ,UAAU,iBAAiB,CAACa;QAC5Bb,UAAU,iBAAiB,CAACc;QAG5B,MAAMC,wBAAwBf,WAAWE,mBAAmBD;QAG5D,MAAMe,mBAAmBhB,WAAWE,mBAAmBD;IAC3D;AACJ;AAEO,MAAMgB,wBAAwBC,qBAAqB;IACtD,aAAaC;IACb,gBAAgBtB;IAChB,cAAc;QAACuB;QAAmBC;KAAiB;AACvD"}
@@ -2,9 +2,10 @@ import { IsRemotePulumiBackendService } from "../../abstractions/index.js";
2
2
  /**
3
3
  * Service to check if a remote Pulumi backend is configured via environment variables.
4
4
  *
5
- * Checks for the following environment variables in order:
6
- * - WEBINY_CLI_PULUMI_BACKEND
5
+ * Checks for the following environment variables:
6
+ * - WEBINY_CLI_PULUMI_BACKEND (canonical)
7
7
  * - WEBINY_CLI_PULUMI_BACKEND_URL
8
+ * - WEBINY_PULUMI_BACKEND (legacy, kept for backwards compatibility)
8
9
  * - PULUMI_LOGIN (fallback for standard Pulumi configuration)
9
10
  */
10
11
  export declare class DefaultIsRemotePulumiBackendService implements IsRemotePulumiBackendService.Interface {
@@ -2,7 +2,7 @@ import { createImplementation } from "@webiny/di";
2
2
  import { IsRemotePulumiBackendService } from "../../abstractions/index.js";
3
3
  class DefaultIsRemotePulumiBackendService {
4
4
  execute() {
5
- return !!(process.env.WEBINY_CLI_PULUMI_BACKEND || process.env.WEBINY_CLI_PULUMI_BACKEND_URL || process.env.PULUMI_LOGIN);
5
+ return !!(process.env.WEBINY_CLI_PULUMI_BACKEND || process.env.WEBINY_CLI_PULUMI_BACKEND_URL || process.env.WEBINY_PULUMI_BACKEND || process.env.PULUMI_LOGIN);
6
6
  }
7
7
  }
8
8
  const isRemotePulumiBackendService = createImplementation({
@@ -1 +1 @@
1
- {"version":3,"file":"services/IsRemotePulumiBackendService/IsRemotePulumiBackendService.js","sources":["../../../src/services/IsRemotePulumiBackendService/IsRemotePulumiBackendService.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport { IsRemotePulumiBackendService } from \"~/abstractions/index.js\";\n\n/**\n * Service to check if a remote Pulumi backend is configured via environment variables.\n *\n * Checks for the following environment variables in order:\n * - WEBINY_CLI_PULUMI_BACKEND\n * - WEBINY_CLI_PULUMI_BACKEND_URL\n * - PULUMI_LOGIN (fallback for standard Pulumi configuration)\n */\nexport class DefaultIsRemotePulumiBackendService implements IsRemotePulumiBackendService.Interface {\n execute(): boolean {\n return !!(\n process.env.WEBINY_CLI_PULUMI_BACKEND ||\n process.env.WEBINY_CLI_PULUMI_BACKEND_URL ||\n process.env.PULUMI_LOGIN\n );\n }\n}\n\nexport const isRemotePulumiBackendService = createImplementation({\n abstraction: IsRemotePulumiBackendService,\n implementation: DefaultIsRemotePulumiBackendService,\n dependencies: []\n});\n"],"names":["DefaultIsRemotePulumiBackendService","process","isRemotePulumiBackendService","createImplementation","IsRemotePulumiBackendService"],"mappings":";;AAWO,MAAMA;IACT,UAAmB;QACf,OAAO,CAAC,CACJC,CAAAA,QAAQ,GAAG,CAAC,yBAAyB,IACrCA,QAAQ,GAAG,CAAC,6BAA6B,IACzCA,QAAQ,GAAG,CAAC,YAAW;IAE/B;AACJ;AAEO,MAAMC,+BAA+BC,qBAAqB;IAC7D,aAAaC;IACb,gBAAgBJ;IAChB,cAAc,EAAE;AACpB"}
1
+ {"version":3,"file":"services/IsRemotePulumiBackendService/IsRemotePulumiBackendService.js","sources":["../../../src/services/IsRemotePulumiBackendService/IsRemotePulumiBackendService.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport { IsRemotePulumiBackendService } from \"~/abstractions/index.js\";\n\n/**\n * Service to check if a remote Pulumi backend is configured via environment variables.\n *\n * Checks for the following environment variables:\n * - WEBINY_CLI_PULUMI_BACKEND (canonical)\n * - WEBINY_CLI_PULUMI_BACKEND_URL\n * - WEBINY_PULUMI_BACKEND (legacy, kept for backwards compatibility)\n * - PULUMI_LOGIN (fallback for standard Pulumi configuration)\n */\nexport class DefaultIsRemotePulumiBackendService implements IsRemotePulumiBackendService.Interface {\n execute(): boolean {\n return !!(\n process.env.WEBINY_CLI_PULUMI_BACKEND ||\n process.env.WEBINY_CLI_PULUMI_BACKEND_URL ||\n process.env.WEBINY_PULUMI_BACKEND ||\n process.env.PULUMI_LOGIN\n );\n }\n}\n\nexport const isRemotePulumiBackendService = createImplementation({\n abstraction: IsRemotePulumiBackendService,\n implementation: DefaultIsRemotePulumiBackendService,\n dependencies: []\n});\n"],"names":["DefaultIsRemotePulumiBackendService","process","isRemotePulumiBackendService","createImplementation","IsRemotePulumiBackendService"],"mappings":";;AAYO,MAAMA;IACT,UAAmB;QACf,OAAO,CAAC,CACJC,CAAAA,QAAQ,GAAG,CAAC,yBAAyB,IACrCA,QAAQ,GAAG,CAAC,6BAA6B,IACzCA,QAAQ,GAAG,CAAC,qBAAqB,IACjCA,QAAQ,GAAG,CAAC,YAAW;IAE/B;AACJ;AAEO,MAAMC,+BAA+BC,qBAAqB;IAC7D,aAAaC;IACb,gBAAgBJ;IAChB,cAAc,EAAE;AACpB"}
@@ -3,7 +3,7 @@ import { GetProjectService, LoggerService, ProjectSdkParamsService } from "../..
3
3
  import node_path from "node:path";
4
4
  import { pino } from "pino";
5
5
  import pino_pretty from "pino-pretty";
6
- import * as __rspack_external_node_fs_5ea92f0c from "node:fs";
6
+ import * as __rspack_external_node_fs_1b05aee1 from "node:fs";
7
7
  const DEFAULT_LOG_LEVEL = "info";
8
8
  class DefaultLoggerService {
9
9
  constructor(getProjectService, projectSdkParamsService){
@@ -56,11 +56,11 @@ class DefaultLoggerService {
56
56
  const project = this.getProjectService.execute();
57
57
  const logsFolderPath = project.paths.dotWebinyFolder.join("logs").toString();
58
58
  const logsFileName = this.getLogFileName();
59
- if (!__rspack_external_node_fs_5ea92f0c.existsSync(logsFolderPath)) __rspack_external_node_fs_5ea92f0c.mkdirSync(logsFolderPath, {
59
+ if (!__rspack_external_node_fs_1b05aee1.existsSync(logsFolderPath)) __rspack_external_node_fs_1b05aee1.mkdirSync(logsFolderPath, {
60
60
  recursive: true
61
61
  });
62
62
  const logFilePath = node_path.join(logsFolderPath, logsFileName);
63
- return __rspack_external_node_fs_5ea92f0c.createWriteStream(logFilePath, {
63
+ return __rspack_external_node_fs_1b05aee1.createWriteStream(logFilePath, {
64
64
  flags: "a"
65
65
  });
66
66
  }
@@ -1,20 +1,12 @@
1
- import { GetPulumiService, GetProjectService, LoggerService, PulumiGetStackOutputService, PulumiSelectStackService, ProjectSdkParamsService } from "../../abstractions/index.js";
1
+ import { GetPulumiService, LoggerService, PulumiGetStackOutputService, PulumiSelectStackService, StackOutputCacheService } from "../../abstractions/index.js";
2
2
  import { type AppModel } from "../../models/index.js";
3
3
  export declare class DefaultPulumiGetStackOutputService implements PulumiGetStackOutputService.Interface {
4
4
  private getPulumiService;
5
5
  private pulumiSelectStackService;
6
6
  private loggerService;
7
- private getProjectService;
8
- private projectSdkParamsService;
9
- private static readonly DEFAULT_ENV;
10
- private static readonly DEFAULT_REGION;
11
- private static readonly DEFAULT_VARIANT;
12
- constructor(getPulumiService: GetPulumiService.Interface, pulumiSelectStackService: PulumiSelectStackService.Interface, loggerService: LoggerService.Interface, getProjectService: GetProjectService.Interface, projectSdkParamsService: ProjectSdkParamsService.Interface);
7
+ private stackOutputCacheService;
8
+ constructor(getPulumiService: GetPulumiService.Interface, pulumiSelectStackService: PulumiSelectStackService.Interface, loggerService: LoggerService.Interface, stackOutputCacheService: StackOutputCacheService.Interface);
13
9
  execute<TOutput extends Record<string, any> = Record<string, any>>(app: AppModel, params?: PulumiGetStackOutputService.Params): Promise<TOutput | null>;
14
10
  private applyMapping;
15
- private getCacheKey;
16
- private getCachePath;
17
- private readFromCache;
18
- private writeToCache;
19
11
  }
20
12
  export declare const pulumiGetStackOutputService: import("@webiny/di").Implementation<typeof DefaultPulumiGetStackOutputService>;