@webiny/project 6.0.0-rc.2 → 6.0.0-rc.4

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 (47) 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/GetFeatureFlags.d.ts +8 -0
  5. package/abstractions/features/GetFeatureFlags.js +4 -0
  6. package/abstractions/features/GetFeatureFlags.js.map +1 -0
  7. package/abstractions/features/index.d.ts +1 -0
  8. package/abstractions/features/index.js +1 -0
  9. package/abstractions/features/index.js.map +1 -1
  10. package/components/Wcp.d.ts +2 -0
  11. package/components/Wcp.js +8 -1
  12. package/components/Wcp.js.map +1 -1
  13. package/createProjectSdkContainer.js +4 -1
  14. package/createProjectSdkContainer.js.map +1 -1
  15. package/decorators/GetFeatureFlagsWithLicense.d.ts +13 -0
  16. package/decorators/GetFeatureFlagsWithLicense.js +71 -0
  17. package/decorators/GetFeatureFlagsWithLicense.js.map +1 -0
  18. package/decorators/index.d.ts +1 -0
  19. package/decorators/index.js +1 -0
  20. package/decorators/index.js.map +1 -1
  21. package/exports/infra/index.d.ts +1 -1
  22. package/exports/infra/index.js +1 -1
  23. package/exports/infra/index.js.map +1 -1
  24. package/extensions/AdminBuildParam.js +1 -1
  25. package/extensions/AdminBuildParam.js.map +1 -1
  26. package/extensions/ApiBuildParam.js +1 -1
  27. package/extensions/ApiBuildParam.js.map +1 -1
  28. package/extensions/FeatureFlags.d.ts +13 -6
  29. package/extensions/FeatureFlags.js +5 -4
  30. package/extensions/FeatureFlags.js.map +1 -1
  31. package/extensions/index.d.ts +13 -6
  32. package/features/GetFeatureFlags/GetFeatureFlags.d.ts +10 -0
  33. package/features/GetFeatureFlags/GetFeatureFlags.js +29 -0
  34. package/features/GetFeatureFlags/GetFeatureFlags.js.map +1 -0
  35. package/features/GetFeatureFlags/index.d.ts +1 -0
  36. package/features/GetFeatureFlags/index.js +3 -0
  37. package/features/GetFeatureFlags/index.js.map +1 -0
  38. package/features/index.d.ts +1 -0
  39. package/features/index.js +1 -0
  40. package/features/index.js.map +1 -1
  41. package/package.json +12 -11
  42. package/services/GetProjectConfigService/WcpProjectLicenseContext.d.ts +1 -0
  43. package/services/GetProjectConfigService/WcpProjectLicenseContext.js +2 -1
  44. package/services/GetProjectConfigService/WcpProjectLicenseContext.js.map +1 -1
  45. package/exports/extensions.d.ts +0 -2
  46. package/exports/extensions.js +0 -4
  47. package/exports/extensions.js.map +0 -1
package/ProjectSdk.d.ts CHANGED
@@ -13,6 +13,7 @@ export declare class ProjectSdk {
13
13
  setProjectId(projectId: string, options?: SetProjectIdService.Options): Promise<void>;
14
14
  getProjectVersion(): string;
15
15
  getProjectInfo(): Promise<import("./abstractions/services/ProjectInfoService/ProjectInfoService.js").IProjectInfoServiceResult>;
16
+ getFeatureFlags(): Promise<import("@webiny/feature-flags/FeatureFlags.js").FeatureFlags>;
16
17
  getApp(appName: GetApp.Params): Promise<import("./index.js").IAppModel>;
17
18
  getAppOutput(params: GetAppOutput.Params): Promise<{
18
19
  pulumiProcess: import("child_process").ChildProcess & import("execa").ExecaChildPromise<string> & Promise<import("execa").ExecaReturnValue<string>>;
package/ProjectSdk.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { createProjectSdkContainer } from "./createProjectSdkContainer.js";
2
- import { BuildApp, DeployApp, DestroyApp, ExportStack, GetApp, GetAppOutput, GetAppStackOutput, GetProductionEnvironments, GetProject, GetProjectIdService, SetProjectIdService, GetProjectConfig, GetProjectInfo, GetPulumiResourceNamePrefix, InstallExtension, IsCi, IsTelemetryEnabled, LocalStorageService, LoggerService, RefreshApp, RunPulumiCommand, ValidateProjectConfig, ListDeployedEnvironmentsService, Watch, WcpService, GetProjectVersionService } from "./abstractions/index.js";
2
+ import { BuildApp, DeployApp, DestroyApp, ExportStack, GetApp, GetAppOutput, GetAppStackOutput, GetFeatureFlags, GetProductionEnvironments, GetProject, GetProjectIdService, SetProjectIdService, GetProjectConfig, GetProjectInfo, GetPulumiResourceNamePrefix, InstallExtension, IsCi, IsTelemetryEnabled, LocalStorageService, LoggerService, RefreshApp, RunPulumiCommand, ValidateProjectConfig, ListDeployedEnvironmentsService, Watch, WcpService, GetProjectVersionService } from "./abstractions/index.js";
3
3
  import { isValidRegionName, isValidVariantName, getProjectSdkContextFromEnv } from "./utils/index.js";
4
4
  const projectSdkCache = new Map();
5
5
  export class ProjectSdk {
@@ -50,6 +50,9 @@ export class ProjectSdk {
50
50
  getProjectInfo() {
51
51
  return this.container.resolve(GetProjectInfo).execute();
52
52
  }
53
+ getFeatureFlags() {
54
+ return this.container.resolve(GetFeatureFlags).execute();
55
+ }
53
56
 
54
57
  // App-related methods.
55
58
  async getApp(appName) {
package/ProjectSdk.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["createProjectSdkContainer","BuildApp","DeployApp","DestroyApp","ExportStack","GetApp","GetAppOutput","GetAppStackOutput","GetProductionEnvironments","GetProject","GetProjectIdService","SetProjectIdService","GetProjectConfig","GetProjectInfo","GetPulumiResourceNamePrefix","InstallExtension","IsCi","IsTelemetryEnabled","LocalStorageService","LoggerService","RefreshApp","RunPulumiCommand","ValidateProjectConfig","ListDeployedEnvironmentsService","Watch","WcpService","GetProjectVersionService","isValidRegionName","isValidVariantName","getProjectSdkContextFromEnv","projectSdkCache","Map","ProjectSdk","constructor","container","init","params","envContext","Object","keys","length","cacheKey","getCacheKey","has","get","instance","set","env","variant","region","getProject","resolve","execute","getProjectConfig","validateProjectConfig","projectConfig","getProjectId","setProjectId","projectId","options","getProjectVersion","getProjectInfo","getApp","appName","getAppOutput","getAppStackOutput","getAppStackExport","buildApp","deployApp","destroyApp","refreshApp","runPulumiCommand","watch","wcp","localStorage","getPulumiResourceNamePrefix","getProductionEnvironments","listDeployedEnvironments","installExtension","source","name","isTelemetryEnabled","isCi","getLogger","getContainer"],"sources":["ProjectSdk.ts"],"sourcesContent":["import { type Container } from \"@webiny/di\";\nimport { createProjectSdkContainer } from \"./createProjectSdkContainer.js\";\nimport {\n BuildApp,\n DeployApp,\n DestroyApp,\n ExportStack,\n GetApp,\n GetAppOutput,\n GetAppStackOutput,\n GetProductionEnvironments,\n GetProject,\n GetProjectIdService,\n SetProjectIdService,\n GetProjectConfig,\n GetProjectInfo,\n GetPulumiResourceNamePrefix,\n InstallExtension,\n IsCi,\n IsTelemetryEnabled,\n LocalStorageService,\n LoggerService,\n type ProjectSdkParamsService,\n RefreshApp,\n RunPulumiCommand,\n ValidateProjectConfig,\n ListDeployedEnvironmentsService,\n Watch,\n WcpService,\n GetProjectVersionService\n} from \"~/abstractions/index.js\";\nimport { type AppName } from \"~/abstractions/types.js\";\nimport {\n isValidRegionName,\n isValidVariantName,\n getProjectSdkContextFromEnv\n} from \"./utils/index.js\";\n\nconst projectSdkCache = new Map<string, ProjectSdk>();\n\nexport class ProjectSdk {\n container: Container;\n\n protected constructor(container: Container) {\n this.container = container;\n }\n\n static async init(params: Partial<ProjectSdkParamsService.Params> = {}) {\n // If no params provided, check if we have context from parent process via env var\n const envContext = getProjectSdkContextFromEnv();\n if (envContext && Object.keys(params).length === 0) {\n params = envContext;\n }\n\n const cacheKey = ProjectSdk.getCacheKey(params);\n\n if (projectSdkCache.has(cacheKey)) {\n return projectSdkCache.get(cacheKey)!;\n }\n\n const container = await createProjectSdkContainer(params);\n const instance = new ProjectSdk(container);\n projectSdkCache.set(cacheKey, instance);\n\n return instance;\n }\n\n private static getCacheKey(params: Partial<ProjectSdkParamsService.Params>): string {\n const env = params.env || \"\";\n const variant = params.variant || \"\";\n const region = params.region || \"\";\n return `${env}:${variant}:${region}`;\n }\n\n // Project-related methods.\n getProject() {\n return this.container.resolve(GetProject).execute();\n }\n\n getProjectConfig(params?: GetProjectConfig.Params) {\n return this.container.resolve(GetProjectConfig).execute(params);\n }\n\n validateProjectConfig(projectConfig: ValidateProjectConfig.Params) {\n return this.container.resolve(ValidateProjectConfig).execute(projectConfig);\n }\n\n async getProjectId() {\n return this.container.resolve(GetProjectIdService).execute();\n }\n async setProjectId(projectId: string, options: SetProjectIdService.Options = {}) {\n return this.container.resolve(SetProjectIdService).execute(projectId, options);\n }\n getProjectVersion() {\n return this.container.resolve(GetProjectVersionService).execute();\n }\n\n getProjectInfo() {\n return this.container.resolve(GetProjectInfo).execute();\n }\n\n // App-related methods.\n async getApp(appName: GetApp.Params) {\n return this.container.resolve(GetApp).execute(appName);\n }\n\n // Here we have two stack output methods. Both do the same thing, but one is returning\n // raw Pulumi output, while the other is returning a JSON, which is far more suitable\n // in multiple places throughout the codebase (like Pulumi code, deploy hooks, ...).\n // TODO: we could probably merge these two methods into one, and have an option to return\n // TODO: raw or JSON output. For now, just writing it here.\n async getAppOutput(params: GetAppOutput.Params) {\n return this.container.resolve(GetAppOutput).execute(params);\n }\n\n async getAppStackOutput<\n TOutput extends GetAppStackOutput.StackOutput = GetAppStackOutput.StackOutput\n >(appName: AppName) {\n return this.container.resolve(GetAppStackOutput).execute<TOutput>(appName);\n }\n\n async getAppStackExport<TExport extends ExportStack.StackExport = ExportStack.StackExport>(\n params: ExportStack.Params\n ) {\n return this.container.resolve(ExportStack).execute<TExport>(params);\n }\n\n buildApp(params: BuildApp.Params) {\n return this.container.resolve(BuildApp).execute(params);\n }\n\n deployApp(params: DeployApp.Params) {\n return this.container.resolve(DeployApp).execute(params);\n }\n\n destroyApp(params: DestroyApp.Params) {\n return this.container.resolve(DestroyApp).execute(params);\n }\n\n refreshApp(params: RefreshApp.Params) {\n return this.container.resolve(RefreshApp).execute(params);\n }\n\n runPulumiCommand(params: RunPulumiCommand.Params) {\n return this.container.resolve(RunPulumiCommand).execute(params);\n }\n\n watch(params: Watch.Params) {\n return this.container.resolve(Watch).execute(params);\n }\n\n get wcp() {\n return this.container.resolve(WcpService);\n }\n\n get localStorage() {\n return this.container.resolve(LocalStorageService);\n }\n\n getPulumiResourceNamePrefix() {\n return this.container.resolve(GetPulumiResourceNamePrefix).execute();\n }\n\n getProductionEnvironments() {\n return this.container.resolve(GetProductionEnvironments).execute();\n }\n\n listDeployedEnvironments() {\n return this.container.resolve(ListDeployedEnvironmentsService).execute();\n }\n\n installExtension(source: string) {\n return this.container.resolve(InstallExtension).execute(source);\n }\n\n // Utility methods.\n isValidRegionName(name?: string) {\n return isValidRegionName(name);\n }\n\n isValidVariantName(name?: string) {\n return isValidVariantName(name);\n }\n\n isTelemetryEnabled() {\n return this.container.resolve(IsTelemetryEnabled).execute();\n }\n\n isCi() {\n return this.container.resolve(IsCi).execute();\n }\n\n getLogger() {\n return this.container.resolve(LoggerService);\n }\n\n getContainer() {\n return this.container;\n }\n}\n"],"mappings":"AACA,SAASA,yBAAyB;AAClC,SACIC,QAAQ,EACRC,SAAS,EACTC,UAAU,EACVC,WAAW,EACXC,MAAM,EACNC,YAAY,EACZC,iBAAiB,EACjBC,yBAAyB,EACzBC,UAAU,EACVC,mBAAmB,EACnBC,mBAAmB,EACnBC,gBAAgB,EAChBC,cAAc,EACdC,2BAA2B,EAC3BC,gBAAgB,EAChBC,IAAI,EACJC,kBAAkB,EAClBC,mBAAmB,EACnBC,aAAa,EAEbC,UAAU,EACVC,gBAAgB,EAChBC,qBAAqB,EACrBC,+BAA+B,EAC/BC,KAAK,EACLC,UAAU,EACVC,wBAAwB;AAG5B,SACIC,iBAAiB,EACjBC,kBAAkB,EAClBC,2BAA2B;AAG/B,MAAMC,eAAe,GAAG,IAAIC,GAAG,CAAqB,CAAC;AAErD,OAAO,MAAMC,UAAU,CAAC;EAGVC,WAAWA,CAACC,SAAoB,EAAE;IACxC,IAAI,CAACA,SAAS,GAAGA,SAAS;EAC9B;EAEA,aAAaC,IAAIA,CAACC,MAA+C,GAAG,CAAC,CAAC,EAAE;IACpE;IACA,MAAMC,UAAU,GAAGR,2BAA2B,CAAC,CAAC;IAChD,IAAIQ,UAAU,IAAIC,MAAM,CAACC,IAAI,CAACH,MAAM,CAAC,CAACI,MAAM,KAAK,CAAC,EAAE;MAChDJ,MAAM,GAAGC,UAAU;IACvB;IAEA,MAAMI,QAAQ,GAAGT,UAAU,CAACU,WAAW,CAACN,MAAM,CAAC;IAE/C,IAAIN,eAAe,CAACa,GAAG,CAACF,QAAQ,CAAC,EAAE;MAC/B,OAAOX,eAAe,CAACc,GAAG,CAACH,QAAQ,CAAC;IACxC;IAEA,MAAMP,SAAS,GAAG,MAAMlC,yBAAyB,CAACoC,MAAM,CAAC;IACzD,MAAMS,QAAQ,GAAG,IAAIb,UAAU,CAACE,SAAS,CAAC;IAC1CJ,eAAe,CAACgB,GAAG,CAACL,QAAQ,EAAEI,QAAQ,CAAC;IAEvC,OAAOA,QAAQ;EACnB;EAEA,OAAeH,WAAWA,CAACN,MAA+C,EAAU;IAChF,MAAMW,GAAG,GAAGX,MAAM,CAACW,GAAG,IAAI,EAAE;IAC5B,MAAMC,OAAO,GAAGZ,MAAM,CAACY,OAAO,IAAI,EAAE;IACpC,MAAMC,MAAM,GAAGb,MAAM,CAACa,MAAM,IAAI,EAAE;IAClC,OAAO,GAAGF,GAAG,IAAIC,OAAO,IAAIC,MAAM,EAAE;EACxC;;EAEA;EACAC,UAAUA,CAAA,EAAG;IACT,OAAO,IAAI,CAAChB,SAAS,CAACiB,OAAO,CAAC1C,UAAU,CAAC,CAAC2C,OAAO,CAAC,CAAC;EACvD;EAEAC,gBAAgBA,CAACjB,MAAgC,EAAE;IAC/C,OAAO,IAAI,CAACF,SAAS,CAACiB,OAAO,CAACvC,gBAAgB,CAAC,CAACwC,OAAO,CAAChB,MAAM,CAAC;EACnE;EAEAkB,qBAAqBA,CAACC,aAA2C,EAAE;IAC/D,OAAO,IAAI,CAACrB,SAAS,CAACiB,OAAO,CAAC7B,qBAAqB,CAAC,CAAC8B,OAAO,CAACG,aAAa,CAAC;EAC/E;EAEA,MAAMC,YAAYA,CAAA,EAAG;IACjB,OAAO,IAAI,CAACtB,SAAS,CAACiB,OAAO,CAACzC,mBAAmB,CAAC,CAAC0C,OAAO,CAAC,CAAC;EAChE;EACA,MAAMK,YAAYA,CAACC,SAAiB,EAAEC,OAAoC,GAAG,CAAC,CAAC,EAAE;IAC7E,OAAO,IAAI,CAACzB,SAAS,CAACiB,OAAO,CAACxC,mBAAmB,CAAC,CAACyC,OAAO,CAACM,SAAS,EAAEC,OAAO,CAAC;EAClF;EACAC,iBAAiBA,CAAA,EAAG;IAChB,OAAO,IAAI,CAAC1B,SAAS,CAACiB,OAAO,CAACzB,wBAAwB,CAAC,CAAC0B,OAAO,CAAC,CAAC;EACrE;EAEAS,cAAcA,CAAA,EAAG;IACb,OAAO,IAAI,CAAC3B,SAAS,CAACiB,OAAO,CAACtC,cAAc,CAAC,CAACuC,OAAO,CAAC,CAAC;EAC3D;;EAEA;EACA,MAAMU,MAAMA,CAACC,OAAsB,EAAE;IACjC,OAAO,IAAI,CAAC7B,SAAS,CAACiB,OAAO,CAAC9C,MAAM,CAAC,CAAC+C,OAAO,CAACW,OAAO,CAAC;EAC1D;;EAEA;EACA;EACA;EACA;EACA;EACA,MAAMC,YAAYA,CAAC5B,MAA2B,EAAE;IAC5C,OAAO,IAAI,CAACF,SAAS,CAACiB,OAAO,CAAC7C,YAAY,CAAC,CAAC8C,OAAO,CAAChB,MAAM,CAAC;EAC/D;EAEA,MAAM6B,iBAAiBA,CAErBF,OAAgB,EAAE;IAChB,OAAO,IAAI,CAAC7B,SAAS,CAACiB,OAAO,CAAC5C,iBAAiB,CAAC,CAAC6C,OAAO,CAAUW,OAAO,CAAC;EAC9E;EAEA,MAAMG,iBAAiBA,CACnB9B,MAA0B,EAC5B;IACE,OAAO,IAAI,CAACF,SAAS,CAACiB,OAAO,CAAC/C,WAAW,CAAC,CAACgD,OAAO,CAAUhB,MAAM,CAAC;EACvE;EAEA+B,QAAQA,CAAC/B,MAAuB,EAAE;IAC9B,OAAO,IAAI,CAACF,SAAS,CAACiB,OAAO,CAAClD,QAAQ,CAAC,CAACmD,OAAO,CAAChB,MAAM,CAAC;EAC3D;EAEAgC,SAASA,CAAChC,MAAwB,EAAE;IAChC,OAAO,IAAI,CAACF,SAAS,CAACiB,OAAO,CAACjD,SAAS,CAAC,CAACkD,OAAO,CAAChB,MAAM,CAAC;EAC5D;EAEAiC,UAAUA,CAACjC,MAAyB,EAAE;IAClC,OAAO,IAAI,CAACF,SAAS,CAACiB,OAAO,CAAChD,UAAU,CAAC,CAACiD,OAAO,CAAChB,MAAM,CAAC;EAC7D;EAEAkC,UAAUA,CAAClC,MAAyB,EAAE;IAClC,OAAO,IAAI,CAACF,SAAS,CAACiB,OAAO,CAAC/B,UAAU,CAAC,CAACgC,OAAO,CAAChB,MAAM,CAAC;EAC7D;EAEAmC,gBAAgBA,CAACnC,MAA+B,EAAE;IAC9C,OAAO,IAAI,CAACF,SAAS,CAACiB,OAAO,CAAC9B,gBAAgB,CAAC,CAAC+B,OAAO,CAAChB,MAAM,CAAC;EACnE;EAEAoC,KAAKA,CAACpC,MAAoB,EAAE;IACxB,OAAO,IAAI,CAACF,SAAS,CAACiB,OAAO,CAAC3B,KAAK,CAAC,CAAC4B,OAAO,CAAChB,MAAM,CAAC;EACxD;EAEA,IAAIqC,GAAGA,CAAA,EAAG;IACN,OAAO,IAAI,CAACvC,SAAS,CAACiB,OAAO,CAAC1B,UAAU,CAAC;EAC7C;EAEA,IAAIiD,YAAYA,CAAA,EAAG;IACf,OAAO,IAAI,CAACxC,SAAS,CAACiB,OAAO,CAACjC,mBAAmB,CAAC;EACtD;EAEAyD,2BAA2BA,CAAA,EAAG;IAC1B,OAAO,IAAI,CAACzC,SAAS,CAACiB,OAAO,CAACrC,2BAA2B,CAAC,CAACsC,OAAO,CAAC,CAAC;EACxE;EAEAwB,yBAAyBA,CAAA,EAAG;IACxB,OAAO,IAAI,CAAC1C,SAAS,CAACiB,OAAO,CAAC3C,yBAAyB,CAAC,CAAC4C,OAAO,CAAC,CAAC;EACtE;EAEAyB,wBAAwBA,CAAA,EAAG;IACvB,OAAO,IAAI,CAAC3C,SAAS,CAACiB,OAAO,CAAC5B,+BAA+B,CAAC,CAAC6B,OAAO,CAAC,CAAC;EAC5E;EAEA0B,gBAAgBA,CAACC,MAAc,EAAE;IAC7B,OAAO,IAAI,CAAC7C,SAAS,CAACiB,OAAO,CAACpC,gBAAgB,CAAC,CAACqC,OAAO,CAAC2B,MAAM,CAAC;EACnE;;EAEA;EACApD,iBAAiBA,CAACqD,IAAa,EAAE;IAC7B,OAAOrD,iBAAiB,CAACqD,IAAI,CAAC;EAClC;EAEApD,kBAAkBA,CAACoD,IAAa,EAAE;IAC9B,OAAOpD,kBAAkB,CAACoD,IAAI,CAAC;EACnC;EAEAC,kBAAkBA,CAAA,EAAG;IACjB,OAAO,IAAI,CAAC/C,SAAS,CAACiB,OAAO,CAAClC,kBAAkB,CAAC,CAACmC,OAAO,CAAC,CAAC;EAC/D;EAEA8B,IAAIA,CAAA,EAAG;IACH,OAAO,IAAI,CAAChD,SAAS,CAACiB,OAAO,CAACnC,IAAI,CAAC,CAACoC,OAAO,CAAC,CAAC;EACjD;EAEA+B,SAASA,CAAA,EAAG;IACR,OAAO,IAAI,CAACjD,SAAS,CAACiB,OAAO,CAAChC,aAAa,CAAC;EAChD;EAEAiE,YAAYA,CAAA,EAAG;IACX,OAAO,IAAI,CAAClD,SAAS;EACzB;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["createProjectSdkContainer","BuildApp","DeployApp","DestroyApp","ExportStack","GetApp","GetAppOutput","GetAppStackOutput","GetFeatureFlags","GetProductionEnvironments","GetProject","GetProjectIdService","SetProjectIdService","GetProjectConfig","GetProjectInfo","GetPulumiResourceNamePrefix","InstallExtension","IsCi","IsTelemetryEnabled","LocalStorageService","LoggerService","RefreshApp","RunPulumiCommand","ValidateProjectConfig","ListDeployedEnvironmentsService","Watch","WcpService","GetProjectVersionService","isValidRegionName","isValidVariantName","getProjectSdkContextFromEnv","projectSdkCache","Map","ProjectSdk","constructor","container","init","params","envContext","Object","keys","length","cacheKey","getCacheKey","has","get","instance","set","env","variant","region","getProject","resolve","execute","getProjectConfig","validateProjectConfig","projectConfig","getProjectId","setProjectId","projectId","options","getProjectVersion","getProjectInfo","getFeatureFlags","getApp","appName","getAppOutput","getAppStackOutput","getAppStackExport","buildApp","deployApp","destroyApp","refreshApp","runPulumiCommand","watch","wcp","localStorage","getPulumiResourceNamePrefix","getProductionEnvironments","listDeployedEnvironments","installExtension","source","name","isTelemetryEnabled","isCi","getLogger","getContainer"],"sources":["ProjectSdk.ts"],"sourcesContent":["import { type Container } from \"@webiny/di\";\nimport { createProjectSdkContainer } from \"./createProjectSdkContainer.js\";\nimport {\n BuildApp,\n DeployApp,\n DestroyApp,\n ExportStack,\n GetApp,\n GetAppOutput,\n GetAppStackOutput,\n GetFeatureFlags,\n GetProductionEnvironments,\n GetProject,\n GetProjectIdService,\n SetProjectIdService,\n GetProjectConfig,\n GetProjectInfo,\n GetPulumiResourceNamePrefix,\n InstallExtension,\n IsCi,\n IsTelemetryEnabled,\n LocalStorageService,\n LoggerService,\n type ProjectSdkParamsService,\n RefreshApp,\n RunPulumiCommand,\n ValidateProjectConfig,\n ListDeployedEnvironmentsService,\n Watch,\n WcpService,\n GetProjectVersionService\n} from \"~/abstractions/index.js\";\nimport { type AppName } from \"~/abstractions/types.js\";\nimport {\n isValidRegionName,\n isValidVariantName,\n getProjectSdkContextFromEnv\n} from \"./utils/index.js\";\n\nconst projectSdkCache = new Map<string, ProjectSdk>();\n\nexport class ProjectSdk {\n container: Container;\n\n protected constructor(container: Container) {\n this.container = container;\n }\n\n static async init(params: Partial<ProjectSdkParamsService.Params> = {}) {\n // If no params provided, check if we have context from parent process via env var\n const envContext = getProjectSdkContextFromEnv();\n if (envContext && Object.keys(params).length === 0) {\n params = envContext;\n }\n\n const cacheKey = ProjectSdk.getCacheKey(params);\n\n if (projectSdkCache.has(cacheKey)) {\n return projectSdkCache.get(cacheKey)!;\n }\n\n const container = await createProjectSdkContainer(params);\n const instance = new ProjectSdk(container);\n projectSdkCache.set(cacheKey, instance);\n\n return instance;\n }\n\n private static getCacheKey(params: Partial<ProjectSdkParamsService.Params>): string {\n const env = params.env || \"\";\n const variant = params.variant || \"\";\n const region = params.region || \"\";\n return `${env}:${variant}:${region}`;\n }\n\n // Project-related methods.\n getProject() {\n return this.container.resolve(GetProject).execute();\n }\n\n getProjectConfig(params?: GetProjectConfig.Params) {\n return this.container.resolve(GetProjectConfig).execute(params);\n }\n\n validateProjectConfig(projectConfig: ValidateProjectConfig.Params) {\n return this.container.resolve(ValidateProjectConfig).execute(projectConfig);\n }\n\n async getProjectId() {\n return this.container.resolve(GetProjectIdService).execute();\n }\n async setProjectId(projectId: string, options: SetProjectIdService.Options = {}) {\n return this.container.resolve(SetProjectIdService).execute(projectId, options);\n }\n getProjectVersion() {\n return this.container.resolve(GetProjectVersionService).execute();\n }\n\n getProjectInfo() {\n return this.container.resolve(GetProjectInfo).execute();\n }\n\n getFeatureFlags() {\n return this.container.resolve(GetFeatureFlags).execute();\n }\n\n // App-related methods.\n async getApp(appName: GetApp.Params) {\n return this.container.resolve(GetApp).execute(appName);\n }\n\n // Here we have two stack output methods. Both do the same thing, but one is returning\n // raw Pulumi output, while the other is returning a JSON, which is far more suitable\n // in multiple places throughout the codebase (like Pulumi code, deploy hooks, ...).\n // TODO: we could probably merge these two methods into one, and have an option to return\n // TODO: raw or JSON output. For now, just writing it here.\n async getAppOutput(params: GetAppOutput.Params) {\n return this.container.resolve(GetAppOutput).execute(params);\n }\n\n async getAppStackOutput<\n TOutput extends GetAppStackOutput.StackOutput = GetAppStackOutput.StackOutput\n >(appName: AppName) {\n return this.container.resolve(GetAppStackOutput).execute<TOutput>(appName);\n }\n\n async getAppStackExport<TExport extends ExportStack.StackExport = ExportStack.StackExport>(\n params: ExportStack.Params\n ) {\n return this.container.resolve(ExportStack).execute<TExport>(params);\n }\n\n buildApp(params: BuildApp.Params) {\n return this.container.resolve(BuildApp).execute(params);\n }\n\n deployApp(params: DeployApp.Params) {\n return this.container.resolve(DeployApp).execute(params);\n }\n\n destroyApp(params: DestroyApp.Params) {\n return this.container.resolve(DestroyApp).execute(params);\n }\n\n refreshApp(params: RefreshApp.Params) {\n return this.container.resolve(RefreshApp).execute(params);\n }\n\n runPulumiCommand(params: RunPulumiCommand.Params) {\n return this.container.resolve(RunPulumiCommand).execute(params);\n }\n\n watch(params: Watch.Params) {\n return this.container.resolve(Watch).execute(params);\n }\n\n get wcp() {\n return this.container.resolve(WcpService);\n }\n\n get localStorage() {\n return this.container.resolve(LocalStorageService);\n }\n\n getPulumiResourceNamePrefix() {\n return this.container.resolve(GetPulumiResourceNamePrefix).execute();\n }\n\n getProductionEnvironments() {\n return this.container.resolve(GetProductionEnvironments).execute();\n }\n\n listDeployedEnvironments() {\n return this.container.resolve(ListDeployedEnvironmentsService).execute();\n }\n\n installExtension(source: string) {\n return this.container.resolve(InstallExtension).execute(source);\n }\n\n // Utility methods.\n isValidRegionName(name?: string) {\n return isValidRegionName(name);\n }\n\n isValidVariantName(name?: string) {\n return isValidVariantName(name);\n }\n\n isTelemetryEnabled() {\n return this.container.resolve(IsTelemetryEnabled).execute();\n }\n\n isCi() {\n return this.container.resolve(IsCi).execute();\n }\n\n getLogger() {\n return this.container.resolve(LoggerService);\n }\n\n getContainer() {\n return this.container;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import { type FeatureFlags } from "@webiny/feature-flags";
2
+ export interface IGetFeatureFlags {
3
+ execute(): Promise<FeatureFlags>;
4
+ }
5
+ export declare const GetFeatureFlags: import("@webiny/di").Abstraction<IGetFeatureFlags>;
6
+ export declare namespace GetFeatureFlags {
7
+ type Interface = IGetFeatureFlags;
8
+ }
@@ -0,0 +1,4 @@
1
+ import { createAbstraction } from "../createAbstraction.js";
2
+ export const GetFeatureFlags = createAbstraction("GetFeatureFlags");
3
+
4
+ //# sourceMappingURL=GetFeatureFlags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createAbstraction","GetFeatureFlags"],"sources":["GetFeatureFlags.ts"],"sourcesContent":["import { createAbstraction } from \"~/abstractions/createAbstraction.js\";\nimport { type FeatureFlags } from \"@webiny/feature-flags\";\n\nexport interface IGetFeatureFlags {\n execute(): Promise<FeatureFlags>;\n}\n\nexport const GetFeatureFlags = createAbstraction<IGetFeatureFlags>(\"GetFeatureFlags\");\n\nexport namespace GetFeatureFlags {\n export type Interface = IGetFeatureFlags;\n}\n"],"mappings":"AAAA,SAASA,iBAAiB;AAO1B,OAAO,MAAMC,eAAe,GAAGD,iBAAiB,CAAmB,iBAAiB,CAAC","ignoreList":[]}
@@ -23,3 +23,4 @@ export { RefreshApp } from "./RefreshApp.js";
23
23
  export { RunPulumiCommand } from "./RunPulumiCommand.js";
24
24
  export { ValidateProjectConfig } from "./ValidateProjectConfig.js";
25
25
  export { Watch } from "./Watch.js";
26
+ export { GetFeatureFlags } from "./GetFeatureFlags.js";
@@ -23,5 +23,6 @@ export { RefreshApp } from "./RefreshApp.js";
23
23
  export { RunPulumiCommand } from "./RunPulumiCommand.js";
24
24
  export { ValidateProjectConfig } from "./ValidateProjectConfig.js";
25
25
  export { Watch } from "./Watch.js";
26
+ export { GetFeatureFlags } from "./GetFeatureFlags.js";
26
27
 
27
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["BuildApp","BuildExtension","DeployApp","DestroyApp","ExportStack","GetApp","GetAppOutput","GetAppStackOutput","GetLogger","GetProductionEnvironments","GetProject","GetProjectConfig","GetProjectInfo","GetPulumiResourceNamePrefix","InstallExtension","IsCi","IsTelemetryEnabled","IsWcpEnabled","IsWebinyJsRepo","RefreshApp","RunPulumiCommand","ValidateProjectConfig","Watch"],"sources":["index.ts"],"sourcesContent":["export * from \"./hooks/index.js\";\nexport * from \"./pulumi/index.js\";\nexport { BuildApp } from \"./BuildApp.js\";\nexport { BuildExtension } from \"./BuildExtension.js\";\nexport { DeployApp } from \"./DeployApp.js\";\nexport { DestroyApp } from \"./DestroyApp.js\";\nexport { ExportStack } from \"./ExportStack.js\";\nexport { GetApp } from \"./GetApp.js\";\nexport { GetAppOutput } from \"./GetAppOutput.js\";\nexport { GetAppStackOutput } from \"./GetAppStackOutput.js\";\nexport { GetLogger } from \"./GetLogger.js\";\nexport { GetProductionEnvironments } from \"./GetProductionEnvironments.js\";\nexport { GetProject } from \"./GetProject.js\";\nexport { GetProjectConfig } from \"./GetProjectConfig.js\";\nexport { GetProjectInfo } from \"./GetProjectInfo.js\";\nexport { GetPulumiResourceNamePrefix } from \"./GetPulumiResourceNamePrefix.js\";\nexport { InstallExtension } from \"./InstallExtension.js\";\nexport { IsCi } from \"./IsCi.js\";\nexport { IsTelemetryEnabled } from \"./IsTelemetryEnabled.js\";\nexport { IsWcpEnabled } from \"./IsWcpEnabled.js\";\nexport { IsWebinyJsRepo } from \"./IsWebinyJsRepo.js\";\nexport { RefreshApp } from \"./RefreshApp.js\";\nexport { RunPulumiCommand } from \"./RunPulumiCommand.js\";\nexport { ValidateProjectConfig } from \"./ValidateProjectConfig.js\";\nexport { Watch } from \"./Watch.js\";\n"],"mappings":"AAAA;AACA;AACA,SAASA,QAAQ;AACjB,SAASC,cAAc;AACvB,SAASC,SAAS;AAClB,SAASC,UAAU;AACnB,SAASC,WAAW;AACpB,SAASC,MAAM;AACf,SAASC,YAAY;AACrB,SAASC,iBAAiB;AAC1B,SAASC,SAAS;AAClB,SAASC,yBAAyB;AAClC,SAASC,UAAU;AACnB,SAASC,gBAAgB;AACzB,SAASC,cAAc;AACvB,SAASC,2BAA2B;AACpC,SAASC,gBAAgB;AACzB,SAASC,IAAI;AACb,SAASC,kBAAkB;AAC3B,SAASC,YAAY;AACrB,SAASC,cAAc;AACvB,SAASC,UAAU;AACnB,SAASC,gBAAgB;AACzB,SAASC,qBAAqB;AAC9B,SAASC,KAAK","ignoreList":[]}
1
+ {"version":3,"names":["BuildApp","BuildExtension","DeployApp","DestroyApp","ExportStack","GetApp","GetAppOutput","GetAppStackOutput","GetLogger","GetProductionEnvironments","GetProject","GetProjectConfig","GetProjectInfo","GetPulumiResourceNamePrefix","InstallExtension","IsCi","IsTelemetryEnabled","IsWcpEnabled","IsWebinyJsRepo","RefreshApp","RunPulumiCommand","ValidateProjectConfig","Watch","GetFeatureFlags"],"sources":["index.ts"],"sourcesContent":["export * from \"./hooks/index.js\";\nexport * from \"./pulumi/index.js\";\nexport { BuildApp } from \"./BuildApp.js\";\nexport { BuildExtension } from \"./BuildExtension.js\";\nexport { DeployApp } from \"./DeployApp.js\";\nexport { DestroyApp } from \"./DestroyApp.js\";\nexport { ExportStack } from \"./ExportStack.js\";\nexport { GetApp } from \"./GetApp.js\";\nexport { GetAppOutput } from \"./GetAppOutput.js\";\nexport { GetAppStackOutput } from \"./GetAppStackOutput.js\";\nexport { GetLogger } from \"./GetLogger.js\";\nexport { GetProductionEnvironments } from \"./GetProductionEnvironments.js\";\nexport { GetProject } from \"./GetProject.js\";\nexport { GetProjectConfig } from \"./GetProjectConfig.js\";\nexport { GetProjectInfo } from \"./GetProjectInfo.js\";\nexport { GetPulumiResourceNamePrefix } from \"./GetPulumiResourceNamePrefix.js\";\nexport { InstallExtension } from \"./InstallExtension.js\";\nexport { IsCi } from \"./IsCi.js\";\nexport { IsTelemetryEnabled } from \"./IsTelemetryEnabled.js\";\nexport { IsWcpEnabled } from \"./IsWcpEnabled.js\";\nexport { IsWebinyJsRepo } from \"./IsWebinyJsRepo.js\";\nexport { RefreshApp } from \"./RefreshApp.js\";\nexport { RunPulumiCommand } from \"./RunPulumiCommand.js\";\nexport { ValidateProjectConfig } from \"./ValidateProjectConfig.js\";\nexport { Watch } from \"./Watch.js\";\nexport { GetFeatureFlags } from \"./GetFeatureFlags.js\";\n"],"mappings":"AAAA;AACA;AACA,SAASA,QAAQ;AACjB,SAASC,cAAc;AACvB,SAASC,SAAS;AAClB,SAASC,UAAU;AACnB,SAASC,WAAW;AACpB,SAASC,MAAM;AACf,SAASC,YAAY;AACrB,SAASC,iBAAiB;AAC1B,SAASC,SAAS;AAClB,SAASC,yBAAyB;AAClC,SAASC,UAAU;AACnB,SAASC,gBAAgB;AACzB,SAASC,cAAc;AACvB,SAASC,2BAA2B;AACpC,SAASC,gBAAgB;AACzB,SAASC,IAAI;AACb,SAASC,kBAAkB;AAC3B,SAASC,YAAY;AACrB,SAASC,cAAc;AACvB,SAASC,UAAU;AACnB,SAASC,gBAAgB;AACzB,SAASC,qBAAqB;AAC9B,SAASC,KAAK;AACd,SAASC,eAAe","ignoreList":[]}
@@ -7,11 +7,13 @@ declare function CanUseTeams({ children }: ChildrenProps): React.JSX.Element | n
7
7
  declare function CanUsePrivateFiles({ children }: ChildrenProps): React.JSX.Element | null;
8
8
  declare function CanUseFileManagerThreatDetection({ children }: ChildrenProps): React.JSX.Element | null;
9
9
  declare function CanUseWorkflows({ children }: ChildrenProps): React.JSX.Element | null;
10
+ declare function CanUseHcmsFieldPermissions({ children }: ChildrenProps): React.JSX.Element | null;
10
11
  export declare const Wcp: {
11
12
  CanUseMultiTenancy: typeof CanUseMultiTenancy;
12
13
  CanUseTeams: typeof CanUseTeams;
13
14
  CanUsePrivateFiles: typeof CanUsePrivateFiles;
14
15
  CanUseFileManagerThreatDetection: typeof CanUseFileManagerThreatDetection;
15
16
  CanUseWorkflows: typeof CanUseWorkflows;
17
+ CanUseHcmsFieldPermissions: typeof CanUseHcmsFieldPermissions;
16
18
  };
17
19
  export {};
package/components/Wcp.js CHANGED
@@ -30,12 +30,19 @@ function CanUseWorkflows({
30
30
  const wcp = useWcpProjectLicense();
31
31
  return wcp.canUseWorkflows() ? /*#__PURE__*/React.createElement(React.Fragment, null, children) : null;
32
32
  }
33
+ function CanUseHcmsFieldPermissions({
34
+ children
35
+ }) {
36
+ const wcp = useWcpProjectLicense();
37
+ return wcp.canUseHcmsFieldPermissions() ? /*#__PURE__*/React.createElement(React.Fragment, null, children) : null;
38
+ }
33
39
  export const Wcp = {
34
40
  CanUseMultiTenancy,
35
41
  CanUseTeams,
36
42
  CanUsePrivateFiles,
37
43
  CanUseFileManagerThreatDetection,
38
- CanUseWorkflows
44
+ CanUseWorkflows,
45
+ CanUseHcmsFieldPermissions
39
46
  };
40
47
 
41
48
  //# sourceMappingURL=Wcp.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useWcpProjectLicense","CanUseMultiTenancy","children","wcp","canUseMultiTenancy","createElement","Fragment","CanUseTeams","canUseTeams","CanUsePrivateFiles","canUsePrivateFiles","CanUseFileManagerThreatDetection","canUseFileManagerThreatDetection","CanUseWorkflows","canUseWorkflows","Wcp"],"sources":["Wcp.tsx"],"sourcesContent":["import React from \"react\";\nimport { useWcpProjectLicense } from \"~/services/GetProjectConfigService/WcpProjectLicenseContext.js\";\n\ninterface ChildrenProps {\n children: React.ReactNode;\n}\n\nfunction CanUseMultiTenancy({ children }: ChildrenProps) {\n const wcp = useWcpProjectLicense();\n\n return wcp.canUseMultiTenancy() ? <>{children}</> : null;\n}\n\nfunction CanUseTeams({ children }: ChildrenProps) {\n const wcp = useWcpProjectLicense();\n\n return wcp.canUseTeams() ? <>{children}</> : null;\n}\n\nfunction CanUsePrivateFiles({ children }: ChildrenProps) {\n const wcp = useWcpProjectLicense();\n\n return wcp.canUsePrivateFiles() ? <>{children}</> : null;\n}\n\nfunction CanUseFileManagerThreatDetection({ children }: ChildrenProps) {\n const wcp = useWcpProjectLicense();\n\n return wcp.canUseFileManagerThreatDetection() ? <>{children}</> : null;\n}\n\nfunction CanUseWorkflows({ children }: ChildrenProps) {\n const wcp = useWcpProjectLicense();\n\n return wcp.canUseWorkflows() ? <>{children}</> : null;\n}\n\nexport const Wcp = {\n CanUseMultiTenancy,\n CanUseTeams,\n CanUsePrivateFiles,\n CanUseFileManagerThreatDetection,\n CanUseWorkflows\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,oBAAoB;AAM7B,SAASC,kBAAkBA,CAAC;EAAEC;AAAwB,CAAC,EAAE;EACrD,MAAMC,GAAG,GAAGH,oBAAoB,CAAC,CAAC;EAElC,OAAOG,GAAG,CAACC,kBAAkB,CAAC,CAAC,gBAAGL,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,QAAGJ,QAAW,CAAC,GAAG,IAAI;AAC5D;AAEA,SAASK,WAAWA,CAAC;EAAEL;AAAwB,CAAC,EAAE;EAC9C,MAAMC,GAAG,GAAGH,oBAAoB,CAAC,CAAC;EAElC,OAAOG,GAAG,CAACK,WAAW,CAAC,CAAC,gBAAGT,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,QAAGJ,QAAW,CAAC,GAAG,IAAI;AACrD;AAEA,SAASO,kBAAkBA,CAAC;EAAEP;AAAwB,CAAC,EAAE;EACrD,MAAMC,GAAG,GAAGH,oBAAoB,CAAC,CAAC;EAElC,OAAOG,GAAG,CAACO,kBAAkB,CAAC,CAAC,gBAAGX,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,QAAGJ,QAAW,CAAC,GAAG,IAAI;AAC5D;AAEA,SAASS,gCAAgCA,CAAC;EAAET;AAAwB,CAAC,EAAE;EACnE,MAAMC,GAAG,GAAGH,oBAAoB,CAAC,CAAC;EAElC,OAAOG,GAAG,CAACS,gCAAgC,CAAC,CAAC,gBAAGb,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,QAAGJ,QAAW,CAAC,GAAG,IAAI;AAC1E;AAEA,SAASW,eAAeA,CAAC;EAAEX;AAAwB,CAAC,EAAE;EAClD,MAAMC,GAAG,GAAGH,oBAAoB,CAAC,CAAC;EAElC,OAAOG,GAAG,CAACW,eAAe,CAAC,CAAC,gBAAGf,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,QAAGJ,QAAW,CAAC,GAAG,IAAI;AACzD;AAEA,OAAO,MAAMa,GAAG,GAAG;EACfd,kBAAkB;EAClBM,WAAW;EACXE,kBAAkB;EAClBE,gCAAgC;EAChCE;AACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useWcpProjectLicense","CanUseMultiTenancy","children","wcp","canUseMultiTenancy","createElement","Fragment","CanUseTeams","canUseTeams","CanUsePrivateFiles","canUsePrivateFiles","CanUseFileManagerThreatDetection","canUseFileManagerThreatDetection","CanUseWorkflows","canUseWorkflows","CanUseHcmsFieldPermissions","canUseHcmsFieldPermissions","Wcp"],"sources":["Wcp.tsx"],"sourcesContent":["import React from \"react\";\nimport { useWcpProjectLicense } from \"~/services/GetProjectConfigService/WcpProjectLicenseContext.js\";\n\ninterface ChildrenProps {\n children: React.ReactNode;\n}\n\nfunction CanUseMultiTenancy({ children }: ChildrenProps) {\n const wcp = useWcpProjectLicense();\n\n return wcp.canUseMultiTenancy() ? <>{children}</> : null;\n}\n\nfunction CanUseTeams({ children }: ChildrenProps) {\n const wcp = useWcpProjectLicense();\n\n return wcp.canUseTeams() ? <>{children}</> : null;\n}\n\nfunction CanUsePrivateFiles({ children }: ChildrenProps) {\n const wcp = useWcpProjectLicense();\n\n return wcp.canUsePrivateFiles() ? <>{children}</> : null;\n}\n\nfunction CanUseFileManagerThreatDetection({ children }: ChildrenProps) {\n const wcp = useWcpProjectLicense();\n\n return wcp.canUseFileManagerThreatDetection() ? <>{children}</> : null;\n}\n\nfunction CanUseWorkflows({ children }: ChildrenProps) {\n const wcp = useWcpProjectLicense();\n\n return wcp.canUseWorkflows() ? <>{children}</> : null;\n}\n\nfunction CanUseHcmsFieldPermissions({ children }: ChildrenProps) {\n const wcp = useWcpProjectLicense();\n\n return wcp.canUseHcmsFieldPermissions() ? <>{children}</> : null;\n}\n\nexport const Wcp = {\n CanUseMultiTenancy,\n CanUseTeams,\n CanUsePrivateFiles,\n CanUseFileManagerThreatDetection,\n CanUseWorkflows,\n CanUseHcmsFieldPermissions\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,oBAAoB;AAM7B,SAASC,kBAAkBA,CAAC;EAAEC;AAAwB,CAAC,EAAE;EACrD,MAAMC,GAAG,GAAGH,oBAAoB,CAAC,CAAC;EAElC,OAAOG,GAAG,CAACC,kBAAkB,CAAC,CAAC,gBAAGL,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,QAAGJ,QAAW,CAAC,GAAG,IAAI;AAC5D;AAEA,SAASK,WAAWA,CAAC;EAAEL;AAAwB,CAAC,EAAE;EAC9C,MAAMC,GAAG,GAAGH,oBAAoB,CAAC,CAAC;EAElC,OAAOG,GAAG,CAACK,WAAW,CAAC,CAAC,gBAAGT,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,QAAGJ,QAAW,CAAC,GAAG,IAAI;AACrD;AAEA,SAASO,kBAAkBA,CAAC;EAAEP;AAAwB,CAAC,EAAE;EACrD,MAAMC,GAAG,GAAGH,oBAAoB,CAAC,CAAC;EAElC,OAAOG,GAAG,CAACO,kBAAkB,CAAC,CAAC,gBAAGX,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,QAAGJ,QAAW,CAAC,GAAG,IAAI;AAC5D;AAEA,SAASS,gCAAgCA,CAAC;EAAET;AAAwB,CAAC,EAAE;EACnE,MAAMC,GAAG,GAAGH,oBAAoB,CAAC,CAAC;EAElC,OAAOG,GAAG,CAACS,gCAAgC,CAAC,CAAC,gBAAGb,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,QAAGJ,QAAW,CAAC,GAAG,IAAI;AAC1E;AAEA,SAASW,eAAeA,CAAC;EAAEX;AAAwB,CAAC,EAAE;EAClD,MAAMC,GAAG,GAAGH,oBAAoB,CAAC,CAAC;EAElC,OAAOG,GAAG,CAACW,eAAe,CAAC,CAAC,gBAAGf,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,QAAGJ,QAAW,CAAC,GAAG,IAAI;AACzD;AAEA,SAASa,0BAA0BA,CAAC;EAAEb;AAAwB,CAAC,EAAE;EAC7D,MAAMC,GAAG,GAAGH,oBAAoB,CAAC,CAAC;EAElC,OAAOG,GAAG,CAACa,0BAA0B,CAAC,CAAC,gBAAGjB,KAAA,CAAAM,aAAA,CAAAN,KAAA,CAAAO,QAAA,QAAGJ,QAAW,CAAC,GAAG,IAAI;AACpE;AAEA,OAAO,MAAMe,GAAG,GAAG;EACfhB,kBAAkB;EAClBM,WAAW;EACXE,kBAAkB;EAClBE,gCAAgC;EAChCE,eAAe;EACfE;AACJ,CAAC","ignoreList":[]}
@@ -1,7 +1,8 @@
1
1
  import { Container } from "@webiny/di";
2
- import { beforeBuild, afterBuild, beforeWatch, beforeDeploy, afterDeploy, adminAfterBuild, adminAfterDeploy, adminBeforeBuild, adminBeforeDeploy, adminBeforeWatch, apiAfterBuild, apiAfterDeploy, apiBeforeBuild, apiBeforeDeploy, apiBeforeWatch, buildApp, coreAfterBuild, coreAfterDeploy, coreBeforeBuild, coreBeforeDeploy, coreBeforeWatch, deployApp, destroyApp, exportStack, getApp, getAppOutput, getAppStackOutput, getLogger, getProductionEnvironments, getProject, getProjectConfig, getProjectInfo, getPulumiResourceNamePrefix, installExtension, isCi, isTelemetryEnabled, isWcpEnabled, isWebinyJsRepo, refreshApp, runPulumiCommand, validateProjectConfig, watch } from "./features/index.js";
2
+ import { beforeBuild, afterBuild, beforeWatch, beforeDeploy, afterDeploy, adminAfterBuild, adminAfterDeploy, adminBeforeBuild, adminBeforeDeploy, adminBeforeWatch, apiAfterBuild, apiAfterDeploy, apiBeforeBuild, apiBeforeDeploy, apiBeforeWatch, buildApp, coreAfterBuild, coreAfterDeploy, coreBeforeBuild, coreBeforeDeploy, coreBeforeWatch, deployApp, destroyApp, exportStack, getApp, getAppOutput, getAppStackOutput, getLogger, getProductionEnvironments, getProject, getProjectConfig, getProjectInfo, getPulumiResourceNamePrefix, getFeatureFlags, installExtension, isCi, isTelemetryEnabled, isWcpEnabled, isWebinyJsRepo, refreshApp, runPulumiCommand, validateProjectConfig, watch } from "./features/index.js";
3
3
  import { getAppService, buildAppWorkspaceService, buildProjectWorkspaceService, watchedLambdaFunctionsService, getAppPackagesService, getCwdService, getIsCiService, getNpmVersionService, getNpxVersionService, getProjectConfigService, getProjectIdService, getProjectService, getProjectVersionService, getPulumiService, getPulumiVersionService, getYarnVersionService, initProjectSdkService, installExtensionService, isRemotePulumiBackendService, listAppLambdaFunctionsService, listDeployedEnvironmentsService, listPackagesInAppWorkspaceService, listPackagesService, loadEnvVarsService, localStorageService, loggerService, projectInfoService, projectSdkParamsService, pulumiGetConfigPassphraseService, pulumiGetSecretsProviderService, pulumiExportService, pulumiImportService, pulumiGetStackOutputService, pulumiLoginService, pulumiSelectStackService, setProjectIdService, stdioService, uiService, validateProjectConfigService, wcpService } from "./services/index.js";
4
4
  import { GetProjectConfig, BuildProjectWorkspaceService, ProjectSdkParamsService, LoadEnvVarsService, ValidateProjectConfig, LoggerService, InitProjectSdkService } from "./abstractions/index.js";
5
+ import { getFeatureFlagsWithLicense } from "./decorators/index.js";
5
6
  export const createProjectSdkContainer = async params => {
6
7
  const container = new Container();
7
8
 
@@ -68,8 +69,10 @@ export const createProjectSdkContainer = async params => {
68
69
  container.register(isWebinyJsRepo).inSingletonScope();
69
70
  container.register(refreshApp).inSingletonScope();
70
71
  container.register(runPulumiCommand).inSingletonScope();
72
+ container.register(getFeatureFlags).inSingletonScope();
71
73
  container.register(validateProjectConfig).inSingletonScope();
72
74
  container.register(watch).inSingletonScope();
75
+ container.registerDecorator(getFeatureFlagsWithLicense);
73
76
 
74
77
  // Hooks.
75
78
  container.registerComposite(beforeBuild);
@@ -1 +1 @@
1
- {"version":3,"names":["Container","beforeBuild","afterBuild","beforeWatch","beforeDeploy","afterDeploy","adminAfterBuild","adminAfterDeploy","adminBeforeBuild","adminBeforeDeploy","adminBeforeWatch","apiAfterBuild","apiAfterDeploy","apiBeforeBuild","apiBeforeDeploy","apiBeforeWatch","buildApp","coreAfterBuild","coreAfterDeploy","coreBeforeBuild","coreBeforeDeploy","coreBeforeWatch","deployApp","destroyApp","exportStack","getApp","getAppOutput","getAppStackOutput","getLogger","getProductionEnvironments","getProject","getProjectConfig","getProjectInfo","getPulumiResourceNamePrefix","installExtension","isCi","isTelemetryEnabled","isWcpEnabled","isWebinyJsRepo","refreshApp","runPulumiCommand","validateProjectConfig","watch","getAppService","buildAppWorkspaceService","buildProjectWorkspaceService","watchedLambdaFunctionsService","getAppPackagesService","getCwdService","getIsCiService","getNpmVersionService","getNpxVersionService","getProjectConfigService","getProjectIdService","getProjectService","getProjectVersionService","getPulumiService","getPulumiVersionService","getYarnVersionService","initProjectSdkService","installExtensionService","isRemotePulumiBackendService","listAppLambdaFunctionsService","listDeployedEnvironmentsService","listPackagesInAppWorkspaceService","listPackagesService","loadEnvVarsService","localStorageService","loggerService","projectInfoService","projectSdkParamsService","pulumiGetConfigPassphraseService","pulumiGetSecretsProviderService","pulumiExportService","pulumiImportService","pulumiGetStackOutputService","pulumiLoginService","pulumiSelectStackService","setProjectIdService","stdioService","uiService","validateProjectConfigService","wcpService","GetProjectConfig","BuildProjectWorkspaceService","ProjectSdkParamsService","LoadEnvVarsService","ValidateProjectConfig","LoggerService","InitProjectSdkService","createProjectSdkContainer","params","container","register","inSingletonScope","registerComposite","resolve","set","execute","logger","log","projectExtensions","tags","runtimeContext"],"sources":["createProjectSdkContainer.ts"],"sourcesContent":["import { Container } from \"@webiny/di\";\nimport {\n beforeBuild,\n afterBuild,\n beforeWatch,\n beforeDeploy,\n afterDeploy,\n adminAfterBuild,\n adminAfterDeploy,\n adminBeforeBuild,\n adminBeforeDeploy,\n adminBeforeWatch,\n apiAfterBuild,\n apiAfterDeploy,\n apiBeforeBuild,\n apiBeforeDeploy,\n apiBeforeWatch,\n buildApp,\n coreAfterBuild,\n coreAfterDeploy,\n coreBeforeBuild,\n coreBeforeDeploy,\n coreBeforeWatch,\n deployApp,\n destroyApp,\n exportStack,\n getApp,\n getAppOutput,\n getAppStackOutput,\n getLogger,\n getProductionEnvironments,\n getProject,\n getProjectConfig,\n getProjectInfo,\n getPulumiResourceNamePrefix,\n installExtension,\n isCi,\n isTelemetryEnabled,\n isWcpEnabled,\n isWebinyJsRepo,\n refreshApp,\n runPulumiCommand,\n validateProjectConfig,\n watch\n} from \"./features/index.js\";\n\nimport {\n getAppService,\n buildAppWorkspaceService,\n buildProjectWorkspaceService,\n watchedLambdaFunctionsService,\n getAppPackagesService,\n getCwdService,\n getIsCiService,\n getNpmVersionService,\n getNpxVersionService,\n getProjectConfigService,\n getProjectIdService,\n getProjectService,\n getProjectVersionService,\n getPulumiService,\n getPulumiVersionService,\n getYarnVersionService,\n initProjectSdkService,\n installExtensionService,\n isRemotePulumiBackendService,\n listAppLambdaFunctionsService,\n listDeployedEnvironmentsService,\n listPackagesInAppWorkspaceService,\n listPackagesService,\n loadEnvVarsService,\n localStorageService,\n loggerService,\n projectInfoService,\n projectSdkParamsService,\n pulumiGetConfigPassphraseService,\n pulumiGetSecretsProviderService,\n pulumiExportService,\n pulumiImportService,\n pulumiGetStackOutputService,\n pulumiLoginService,\n pulumiSelectStackService,\n setProjectIdService,\n stdioService,\n uiService,\n validateProjectConfigService,\n wcpService\n} from \"./services/index.js\";\n\nimport {\n GetProjectConfig,\n BuildProjectWorkspaceService,\n ProjectSdkParamsService,\n LoadEnvVarsService,\n ValidateProjectConfig,\n LoggerService,\n InitProjectSdkService\n} from \"~/abstractions/index.js\";\n\nexport const createProjectSdkContainer = async (\n params: Partial<ProjectSdkParamsService.Params>\n) => {\n const container = new Container();\n\n // Services.\n container.register(getAppService).inSingletonScope();\n container.register(buildAppWorkspaceService).inSingletonScope();\n container.register(buildProjectWorkspaceService).inSingletonScope();\n container.register(watchedLambdaFunctionsService).inSingletonScope();\n container.register(getAppPackagesService).inSingletonScope();\n container.register(getCwdService).inSingletonScope();\n container.register(getIsCiService).inSingletonScope();\n container.register(getNpmVersionService).inSingletonScope();\n container.register(getNpxVersionService).inSingletonScope();\n container.register(getProjectConfigService).inSingletonScope();\n container.register(getProjectIdService).inSingletonScope();\n container.register(getProjectService).inSingletonScope();\n container.register(getProjectVersionService).inSingletonScope();\n container.register(getPulumiService).inSingletonScope();\n container.register(getPulumiVersionService).inSingletonScope();\n container.register(getYarnVersionService).inSingletonScope();\n container.register(initProjectSdkService).inSingletonScope();\n container.register(installExtensionService).inSingletonScope();\n container.register(isRemotePulumiBackendService).inSingletonScope();\n container.register(listAppLambdaFunctionsService).inSingletonScope();\n container.register(listDeployedEnvironmentsService).inSingletonScope();\n container.register(listPackagesInAppWorkspaceService).inSingletonScope();\n container.register(listPackagesService).inSingletonScope();\n container.register(loadEnvVarsService).inSingletonScope();\n container.register(localStorageService).inSingletonScope();\n container.register(loggerService).inSingletonScope();\n container.register(projectInfoService).inSingletonScope();\n container.register(projectSdkParamsService).inSingletonScope();\n container.register(pulumiGetConfigPassphraseService).inSingletonScope();\n container.register(pulumiGetSecretsProviderService).inSingletonScope();\n container.register(pulumiExportService).inSingletonScope();\n container.register(pulumiImportService).inSingletonScope();\n container.register(pulumiGetStackOutputService).inSingletonScope();\n container.register(pulumiLoginService).inSingletonScope();\n container.register(pulumiSelectStackService).inSingletonScope();\n container.register(setProjectIdService).inSingletonScope();\n container.register(stdioService).inSingletonScope();\n container.register(uiService).inSingletonScope();\n container.register(validateProjectConfigService).inSingletonScope();\n container.register(wcpService).inSingletonScope();\n\n // Features.\n container.register(buildApp).inSingletonScope();\n container.register(deployApp).inSingletonScope();\n container.register(destroyApp).inSingletonScope();\n container.register(exportStack).inSingletonScope();\n container.register(getApp).inSingletonScope();\n container.register(getAppOutput).inSingletonScope();\n container.register(getAppStackOutput).inSingletonScope();\n container.register(getLogger).inSingletonScope();\n container.register(getProductionEnvironments).inSingletonScope();\n container.register(getProject).inSingletonScope();\n container.register(getProjectConfig).inSingletonScope();\n container.register(getProjectInfo).inSingletonScope();\n container.register(getPulumiResourceNamePrefix).inSingletonScope();\n container.register(installExtension).inSingletonScope();\n container.register(isCi).inSingletonScope();\n container.register(isTelemetryEnabled).inSingletonScope();\n container.register(isWcpEnabled).inSingletonScope();\n container.register(isWebinyJsRepo).inSingletonScope();\n container.register(refreshApp).inSingletonScope();\n container.register(runPulumiCommand).inSingletonScope();\n container.register(validateProjectConfig).inSingletonScope();\n container.register(watch).inSingletonScope();\n\n // Hooks.\n container.registerComposite(beforeBuild);\n container.registerComposite(afterBuild);\n container.registerComposite(beforeWatch);\n container.registerComposite(beforeDeploy);\n container.registerComposite(afterDeploy);\n container.registerComposite(apiBeforeBuild);\n container.registerComposite(apiBeforeDeploy);\n container.registerComposite(apiBeforeWatch);\n container.registerComposite(apiAfterBuild);\n container.registerComposite(apiAfterDeploy);\n container.registerComposite(adminBeforeBuild);\n container.registerComposite(adminBeforeDeploy);\n container.registerComposite(adminBeforeWatch);\n container.registerComposite(adminAfterBuild);\n container.registerComposite(adminAfterDeploy);\n container.registerComposite(coreBeforeBuild);\n container.registerComposite(coreBeforeDeploy);\n container.registerComposite(coreBeforeWatch);\n container.registerComposite(coreAfterBuild);\n container.registerComposite(coreAfterDeploy);\n\n // Initialize project SDK.\n container.resolve(ProjectSdkParamsService).set(params);\n await container.resolve(LoadEnvVarsService).execute();\n await container.resolve(BuildProjectWorkspaceService).execute();\n\n const logger = container.resolve(LoggerService);\n logger.log(\"Initializing Project SDK container...\");\n\n const projectExtensions = await container.resolve(GetProjectConfig).execute({\n tags: { runtimeContext: \"project\" }\n });\n\n await container.resolve(ValidateProjectConfig).execute(projectExtensions);\n\n // Initialize project SDK extensions (env vars, hooks, pulumi, implementations, decorators).\n await container.resolve(InitProjectSdkService).execute(container);\n\n return container;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Container","beforeBuild","afterBuild","beforeWatch","beforeDeploy","afterDeploy","adminAfterBuild","adminAfterDeploy","adminBeforeBuild","adminBeforeDeploy","adminBeforeWatch","apiAfterBuild","apiAfterDeploy","apiBeforeBuild","apiBeforeDeploy","apiBeforeWatch","buildApp","coreAfterBuild","coreAfterDeploy","coreBeforeBuild","coreBeforeDeploy","coreBeforeWatch","deployApp","destroyApp","exportStack","getApp","getAppOutput","getAppStackOutput","getLogger","getProductionEnvironments","getProject","getProjectConfig","getProjectInfo","getPulumiResourceNamePrefix","getFeatureFlags","installExtension","isCi","isTelemetryEnabled","isWcpEnabled","isWebinyJsRepo","refreshApp","runPulumiCommand","validateProjectConfig","watch","getAppService","buildAppWorkspaceService","buildProjectWorkspaceService","watchedLambdaFunctionsService","getAppPackagesService","getCwdService","getIsCiService","getNpmVersionService","getNpxVersionService","getProjectConfigService","getProjectIdService","getProjectService","getProjectVersionService","getPulumiService","getPulumiVersionService","getYarnVersionService","initProjectSdkService","installExtensionService","isRemotePulumiBackendService","listAppLambdaFunctionsService","listDeployedEnvironmentsService","listPackagesInAppWorkspaceService","listPackagesService","loadEnvVarsService","localStorageService","loggerService","projectInfoService","projectSdkParamsService","pulumiGetConfigPassphraseService","pulumiGetSecretsProviderService","pulumiExportService","pulumiImportService","pulumiGetStackOutputService","pulumiLoginService","pulumiSelectStackService","setProjectIdService","stdioService","uiService","validateProjectConfigService","wcpService","GetProjectConfig","BuildProjectWorkspaceService","ProjectSdkParamsService","LoadEnvVarsService","ValidateProjectConfig","LoggerService","InitProjectSdkService","getFeatureFlagsWithLicense","createProjectSdkContainer","params","container","register","inSingletonScope","registerDecorator","registerComposite","resolve","set","execute","logger","log","projectExtensions","tags","runtimeContext"],"sources":["createProjectSdkContainer.ts"],"sourcesContent":["import { Container } from \"@webiny/di\";\nimport {\n beforeBuild,\n afterBuild,\n beforeWatch,\n beforeDeploy,\n afterDeploy,\n adminAfterBuild,\n adminAfterDeploy,\n adminBeforeBuild,\n adminBeforeDeploy,\n adminBeforeWatch,\n apiAfterBuild,\n apiAfterDeploy,\n apiBeforeBuild,\n apiBeforeDeploy,\n apiBeforeWatch,\n buildApp,\n coreAfterBuild,\n coreAfterDeploy,\n coreBeforeBuild,\n coreBeforeDeploy,\n coreBeforeWatch,\n deployApp,\n destroyApp,\n exportStack,\n getApp,\n getAppOutput,\n getAppStackOutput,\n getLogger,\n getProductionEnvironments,\n getProject,\n getProjectConfig,\n getProjectInfo,\n getPulumiResourceNamePrefix,\n getFeatureFlags,\n installExtension,\n isCi,\n isTelemetryEnabled,\n isWcpEnabled,\n isWebinyJsRepo,\n refreshApp,\n runPulumiCommand,\n validateProjectConfig,\n watch\n} from \"./features/index.js\";\n\nimport {\n getAppService,\n buildAppWorkspaceService,\n buildProjectWorkspaceService,\n watchedLambdaFunctionsService,\n getAppPackagesService,\n getCwdService,\n getIsCiService,\n getNpmVersionService,\n getNpxVersionService,\n getProjectConfigService,\n getProjectIdService,\n getProjectService,\n getProjectVersionService,\n getPulumiService,\n getPulumiVersionService,\n getYarnVersionService,\n initProjectSdkService,\n installExtensionService,\n isRemotePulumiBackendService,\n listAppLambdaFunctionsService,\n listDeployedEnvironmentsService,\n listPackagesInAppWorkspaceService,\n listPackagesService,\n loadEnvVarsService,\n localStorageService,\n loggerService,\n projectInfoService,\n projectSdkParamsService,\n pulumiGetConfigPassphraseService,\n pulumiGetSecretsProviderService,\n pulumiExportService,\n pulumiImportService,\n pulumiGetStackOutputService,\n pulumiLoginService,\n pulumiSelectStackService,\n setProjectIdService,\n stdioService,\n uiService,\n validateProjectConfigService,\n wcpService\n} from \"./services/index.js\";\n\nimport {\n GetProjectConfig,\n BuildProjectWorkspaceService,\n ProjectSdkParamsService,\n LoadEnvVarsService,\n ValidateProjectConfig,\n LoggerService,\n InitProjectSdkService\n} from \"~/abstractions/index.js\";\nimport { getFeatureFlagsWithLicense } from \"./decorators/index.js\";\n\nexport const createProjectSdkContainer = async (\n params: Partial<ProjectSdkParamsService.Params>\n) => {\n const container = new Container();\n\n // Services.\n container.register(getAppService).inSingletonScope();\n container.register(buildAppWorkspaceService).inSingletonScope();\n container.register(buildProjectWorkspaceService).inSingletonScope();\n container.register(watchedLambdaFunctionsService).inSingletonScope();\n container.register(getAppPackagesService).inSingletonScope();\n container.register(getCwdService).inSingletonScope();\n container.register(getIsCiService).inSingletonScope();\n container.register(getNpmVersionService).inSingletonScope();\n container.register(getNpxVersionService).inSingletonScope();\n container.register(getProjectConfigService).inSingletonScope();\n container.register(getProjectIdService).inSingletonScope();\n container.register(getProjectService).inSingletonScope();\n container.register(getProjectVersionService).inSingletonScope();\n container.register(getPulumiService).inSingletonScope();\n container.register(getPulumiVersionService).inSingletonScope();\n container.register(getYarnVersionService).inSingletonScope();\n container.register(initProjectSdkService).inSingletonScope();\n container.register(installExtensionService).inSingletonScope();\n container.register(isRemotePulumiBackendService).inSingletonScope();\n container.register(listAppLambdaFunctionsService).inSingletonScope();\n container.register(listDeployedEnvironmentsService).inSingletonScope();\n container.register(listPackagesInAppWorkspaceService).inSingletonScope();\n container.register(listPackagesService).inSingletonScope();\n container.register(loadEnvVarsService).inSingletonScope();\n container.register(localStorageService).inSingletonScope();\n container.register(loggerService).inSingletonScope();\n container.register(projectInfoService).inSingletonScope();\n container.register(projectSdkParamsService).inSingletonScope();\n container.register(pulumiGetConfigPassphraseService).inSingletonScope();\n container.register(pulumiGetSecretsProviderService).inSingletonScope();\n container.register(pulumiExportService).inSingletonScope();\n container.register(pulumiImportService).inSingletonScope();\n container.register(pulumiGetStackOutputService).inSingletonScope();\n container.register(pulumiLoginService).inSingletonScope();\n container.register(pulumiSelectStackService).inSingletonScope();\n container.register(setProjectIdService).inSingletonScope();\n container.register(stdioService).inSingletonScope();\n container.register(uiService).inSingletonScope();\n container.register(validateProjectConfigService).inSingletonScope();\n container.register(wcpService).inSingletonScope();\n\n // Features.\n container.register(buildApp).inSingletonScope();\n container.register(deployApp).inSingletonScope();\n container.register(destroyApp).inSingletonScope();\n container.register(exportStack).inSingletonScope();\n container.register(getApp).inSingletonScope();\n container.register(getAppOutput).inSingletonScope();\n container.register(getAppStackOutput).inSingletonScope();\n container.register(getLogger).inSingletonScope();\n container.register(getProductionEnvironments).inSingletonScope();\n container.register(getProject).inSingletonScope();\n container.register(getProjectConfig).inSingletonScope();\n container.register(getProjectInfo).inSingletonScope();\n container.register(getPulumiResourceNamePrefix).inSingletonScope();\n container.register(installExtension).inSingletonScope();\n container.register(isCi).inSingletonScope();\n container.register(isTelemetryEnabled).inSingletonScope();\n container.register(isWcpEnabled).inSingletonScope();\n container.register(isWebinyJsRepo).inSingletonScope();\n container.register(refreshApp).inSingletonScope();\n container.register(runPulumiCommand).inSingletonScope();\n container.register(getFeatureFlags).inSingletonScope();\n container.register(validateProjectConfig).inSingletonScope();\n container.register(watch).inSingletonScope();\n container.registerDecorator(getFeatureFlagsWithLicense);\n\n // Hooks.\n container.registerComposite(beforeBuild);\n container.registerComposite(afterBuild);\n container.registerComposite(beforeWatch);\n container.registerComposite(beforeDeploy);\n container.registerComposite(afterDeploy);\n container.registerComposite(apiBeforeBuild);\n container.registerComposite(apiBeforeDeploy);\n container.registerComposite(apiBeforeWatch);\n container.registerComposite(apiAfterBuild);\n container.registerComposite(apiAfterDeploy);\n container.registerComposite(adminBeforeBuild);\n container.registerComposite(adminBeforeDeploy);\n container.registerComposite(adminBeforeWatch);\n container.registerComposite(adminAfterBuild);\n container.registerComposite(adminAfterDeploy);\n container.registerComposite(coreBeforeBuild);\n container.registerComposite(coreBeforeDeploy);\n container.registerComposite(coreBeforeWatch);\n container.registerComposite(coreAfterBuild);\n container.registerComposite(coreAfterDeploy);\n\n // Initialize project SDK.\n container.resolve(ProjectSdkParamsService).set(params);\n await container.resolve(LoadEnvVarsService).execute();\n await container.resolve(BuildProjectWorkspaceService).execute();\n\n const logger = container.resolve(LoggerService);\n logger.log(\"Initializing Project SDK container...\");\n\n const projectExtensions = await container.resolve(GetProjectConfig).execute({\n tags: { runtimeContext: \"project\" }\n });\n\n await container.resolve(ValidateProjectConfig).execute(projectExtensions);\n\n // Initialize project SDK extensions (env vars, hooks, pulumi, implementations, decorators).\n await container.resolve(InitProjectSdkService).execute(container);\n\n return container;\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,YAAY;AACtC,SACIC,WAAW,EACXC,UAAU,EACVC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,eAAe,EACfC,gBAAgB,EAChBC,gBAAgB,EAChBC,iBAAiB,EACjBC,gBAAgB,EAChBC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,eAAe,EACfC,cAAc,EACdC,QAAQ,EACRC,cAAc,EACdC,eAAe,EACfC,eAAe,EACfC,gBAAgB,EAChBC,eAAe,EACfC,SAAS,EACTC,UAAU,EACVC,WAAW,EACXC,MAAM,EACNC,YAAY,EACZC,iBAAiB,EACjBC,SAAS,EACTC,yBAAyB,EACzBC,UAAU,EACVC,gBAAgB,EAChBC,cAAc,EACdC,2BAA2B,EAC3BC,eAAe,EACfC,gBAAgB,EAChBC,IAAI,EACJC,kBAAkB,EAClBC,YAAY,EACZC,cAAc,EACdC,UAAU,EACVC,gBAAgB,EAChBC,qBAAqB,EACrBC,KAAK;AAGT,SACIC,aAAa,EACbC,wBAAwB,EACxBC,4BAA4B,EAC5BC,6BAA6B,EAC7BC,qBAAqB,EACrBC,aAAa,EACbC,cAAc,EACdC,oBAAoB,EACpBC,oBAAoB,EACpBC,uBAAuB,EACvBC,mBAAmB,EACnBC,iBAAiB,EACjBC,wBAAwB,EACxBC,gBAAgB,EAChBC,uBAAuB,EACvBC,qBAAqB,EACrBC,qBAAqB,EACrBC,uBAAuB,EACvBC,4BAA4B,EAC5BC,6BAA6B,EAC7BC,+BAA+B,EAC/BC,iCAAiC,EACjCC,mBAAmB,EACnBC,kBAAkB,EAClBC,mBAAmB,EACnBC,aAAa,EACbC,kBAAkB,EAClBC,uBAAuB,EACvBC,gCAAgC,EAChCC,+BAA+B,EAC/BC,mBAAmB,EACnBC,mBAAmB,EACnBC,2BAA2B,EAC3BC,kBAAkB,EAClBC,wBAAwB,EACxBC,mBAAmB,EACnBC,YAAY,EACZC,SAAS,EACTC,4BAA4B,EAC5BC,UAAU;AAGd,SACIC,gBAAgB,EAChBC,4BAA4B,EAC5BC,uBAAuB,EACvBC,kBAAkB,EAClBC,qBAAqB,EACrBC,aAAa,EACbC,qBAAqB;AAEzB,SAASC,0BAA0B;AAEnC,OAAO,MAAMC,yBAAyB,GAAG,MACrCC,MAA+C,IAC9C;EACD,MAAMC,SAAS,GAAG,IAAI9F,SAAS,CAAC,CAAC;;EAEjC;EACA8F,SAAS,CAACC,QAAQ,CAACnD,aAAa,CAAC,CAACoD,gBAAgB,CAAC,CAAC;EACpDF,SAAS,CAACC,QAAQ,CAAClD,wBAAwB,CAAC,CAACmD,gBAAgB,CAAC,CAAC;EAC/DF,SAAS,CAACC,QAAQ,CAACjD,4BAA4B,CAAC,CAACkD,gBAAgB,CAAC,CAAC;EACnEF,SAAS,CAACC,QAAQ,CAAChD,6BAA6B,CAAC,CAACiD,gBAAgB,CAAC,CAAC;EACpEF,SAAS,CAACC,QAAQ,CAAC/C,qBAAqB,CAAC,CAACgD,gBAAgB,CAAC,CAAC;EAC5DF,SAAS,CAACC,QAAQ,CAAC9C,aAAa,CAAC,CAAC+C,gBAAgB,CAAC,CAAC;EACpDF,SAAS,CAACC,QAAQ,CAAC7C,cAAc,CAAC,CAAC8C,gBAAgB,CAAC,CAAC;EACrDF,SAAS,CAACC,QAAQ,CAAC5C,oBAAoB,CAAC,CAAC6C,gBAAgB,CAAC,CAAC;EAC3DF,SAAS,CAACC,QAAQ,CAAC3C,oBAAoB,CAAC,CAAC4C,gBAAgB,CAAC,CAAC;EAC3DF,SAAS,CAACC,QAAQ,CAAC1C,uBAAuB,CAAC,CAAC2C,gBAAgB,CAAC,CAAC;EAC9DF,SAAS,CAACC,QAAQ,CAACzC,mBAAmB,CAAC,CAAC0C,gBAAgB,CAAC,CAAC;EAC1DF,SAAS,CAACC,QAAQ,CAACxC,iBAAiB,CAAC,CAACyC,gBAAgB,CAAC,CAAC;EACxDF,SAAS,CAACC,QAAQ,CAACvC,wBAAwB,CAAC,CAACwC,gBAAgB,CAAC,CAAC;EAC/DF,SAAS,CAACC,QAAQ,CAACtC,gBAAgB,CAAC,CAACuC,gBAAgB,CAAC,CAAC;EACvDF,SAAS,CAACC,QAAQ,CAACrC,uBAAuB,CAAC,CAACsC,gBAAgB,CAAC,CAAC;EAC9DF,SAAS,CAACC,QAAQ,CAACpC,qBAAqB,CAAC,CAACqC,gBAAgB,CAAC,CAAC;EAC5DF,SAAS,CAACC,QAAQ,CAACnC,qBAAqB,CAAC,CAACoC,gBAAgB,CAAC,CAAC;EAC5DF,SAAS,CAACC,QAAQ,CAAClC,uBAAuB,CAAC,CAACmC,gBAAgB,CAAC,CAAC;EAC9DF,SAAS,CAACC,QAAQ,CAACjC,4BAA4B,CAAC,CAACkC,gBAAgB,CAAC,CAAC;EACnEF,SAAS,CAACC,QAAQ,CAAChC,6BAA6B,CAAC,CAACiC,gBAAgB,CAAC,CAAC;EACpEF,SAAS,CAACC,QAAQ,CAAC/B,+BAA+B,CAAC,CAACgC,gBAAgB,CAAC,CAAC;EACtEF,SAAS,CAACC,QAAQ,CAAC9B,iCAAiC,CAAC,CAAC+B,gBAAgB,CAAC,CAAC;EACxEF,SAAS,CAACC,QAAQ,CAAC7B,mBAAmB,CAAC,CAAC8B,gBAAgB,CAAC,CAAC;EAC1DF,SAAS,CAACC,QAAQ,CAAC5B,kBAAkB,CAAC,CAAC6B,gBAAgB,CAAC,CAAC;EACzDF,SAAS,CAACC,QAAQ,CAAC3B,mBAAmB,CAAC,CAAC4B,gBAAgB,CAAC,CAAC;EAC1DF,SAAS,CAACC,QAAQ,CAAC1B,aAAa,CAAC,CAAC2B,gBAAgB,CAAC,CAAC;EACpDF,SAAS,CAACC,QAAQ,CAACzB,kBAAkB,CAAC,CAAC0B,gBAAgB,CAAC,CAAC;EACzDF,SAAS,CAACC,QAAQ,CAACxB,uBAAuB,CAAC,CAACyB,gBAAgB,CAAC,CAAC;EAC9DF,SAAS,CAACC,QAAQ,CAACvB,gCAAgC,CAAC,CAACwB,gBAAgB,CAAC,CAAC;EACvEF,SAAS,CAACC,QAAQ,CAACtB,+BAA+B,CAAC,CAACuB,gBAAgB,CAAC,CAAC;EACtEF,SAAS,CAACC,QAAQ,CAACrB,mBAAmB,CAAC,CAACsB,gBAAgB,CAAC,CAAC;EAC1DF,SAAS,CAACC,QAAQ,CAACpB,mBAAmB,CAAC,CAACqB,gBAAgB,CAAC,CAAC;EAC1DF,SAAS,CAACC,QAAQ,CAACnB,2BAA2B,CAAC,CAACoB,gBAAgB,CAAC,CAAC;EAClEF,SAAS,CAACC,QAAQ,CAAClB,kBAAkB,CAAC,CAACmB,gBAAgB,CAAC,CAAC;EACzDF,SAAS,CAACC,QAAQ,CAACjB,wBAAwB,CAAC,CAACkB,gBAAgB,CAAC,CAAC;EAC/DF,SAAS,CAACC,QAAQ,CAAChB,mBAAmB,CAAC,CAACiB,gBAAgB,CAAC,CAAC;EAC1DF,SAAS,CAACC,QAAQ,CAACf,YAAY,CAAC,CAACgB,gBAAgB,CAAC,CAAC;EACnDF,SAAS,CAACC,QAAQ,CAACd,SAAS,CAAC,CAACe,gBAAgB,CAAC,CAAC;EAChDF,SAAS,CAACC,QAAQ,CAACb,4BAA4B,CAAC,CAACc,gBAAgB,CAAC,CAAC;EACnEF,SAAS,CAACC,QAAQ,CAACZ,UAAU,CAAC,CAACa,gBAAgB,CAAC,CAAC;;EAEjD;EACAF,SAAS,CAACC,QAAQ,CAAC/E,QAAQ,CAAC,CAACgF,gBAAgB,CAAC,CAAC;EAC/CF,SAAS,CAACC,QAAQ,CAACzE,SAAS,CAAC,CAAC0E,gBAAgB,CAAC,CAAC;EAChDF,SAAS,CAACC,QAAQ,CAACxE,UAAU,CAAC,CAACyE,gBAAgB,CAAC,CAAC;EACjDF,SAAS,CAACC,QAAQ,CAACvE,WAAW,CAAC,CAACwE,gBAAgB,CAAC,CAAC;EAClDF,SAAS,CAACC,QAAQ,CAACtE,MAAM,CAAC,CAACuE,gBAAgB,CAAC,CAAC;EAC7CF,SAAS,CAACC,QAAQ,CAACrE,YAAY,CAAC,CAACsE,gBAAgB,CAAC,CAAC;EACnDF,SAAS,CAACC,QAAQ,CAACpE,iBAAiB,CAAC,CAACqE,gBAAgB,CAAC,CAAC;EACxDF,SAAS,CAACC,QAAQ,CAACnE,SAAS,CAAC,CAACoE,gBAAgB,CAAC,CAAC;EAChDF,SAAS,CAACC,QAAQ,CAAClE,yBAAyB,CAAC,CAACmE,gBAAgB,CAAC,CAAC;EAChEF,SAAS,CAACC,QAAQ,CAACjE,UAAU,CAAC,CAACkE,gBAAgB,CAAC,CAAC;EACjDF,SAAS,CAACC,QAAQ,CAAChE,gBAAgB,CAAC,CAACiE,gBAAgB,CAAC,CAAC;EACvDF,SAAS,CAACC,QAAQ,CAAC/D,cAAc,CAAC,CAACgE,gBAAgB,CAAC,CAAC;EACrDF,SAAS,CAACC,QAAQ,CAAC9D,2BAA2B,CAAC,CAAC+D,gBAAgB,CAAC,CAAC;EAClEF,SAAS,CAACC,QAAQ,CAAC5D,gBAAgB,CAAC,CAAC6D,gBAAgB,CAAC,CAAC;EACvDF,SAAS,CAACC,QAAQ,CAAC3D,IAAI,CAAC,CAAC4D,gBAAgB,CAAC,CAAC;EAC3CF,SAAS,CAACC,QAAQ,CAAC1D,kBAAkB,CAAC,CAAC2D,gBAAgB,CAAC,CAAC;EACzDF,SAAS,CAACC,QAAQ,CAACzD,YAAY,CAAC,CAAC0D,gBAAgB,CAAC,CAAC;EACnDF,SAAS,CAACC,QAAQ,CAACxD,cAAc,CAAC,CAACyD,gBAAgB,CAAC,CAAC;EACrDF,SAAS,CAACC,QAAQ,CAACvD,UAAU,CAAC,CAACwD,gBAAgB,CAAC,CAAC;EACjDF,SAAS,CAACC,QAAQ,CAACtD,gBAAgB,CAAC,CAACuD,gBAAgB,CAAC,CAAC;EACvDF,SAAS,CAACC,QAAQ,CAAC7D,eAAe,CAAC,CAAC8D,gBAAgB,CAAC,CAAC;EACtDF,SAAS,CAACC,QAAQ,CAACrD,qBAAqB,CAAC,CAACsD,gBAAgB,CAAC,CAAC;EAC5DF,SAAS,CAACC,QAAQ,CAACpD,KAAK,CAAC,CAACqD,gBAAgB,CAAC,CAAC;EAC5CF,SAAS,CAACG,iBAAiB,CAACN,0BAA0B,CAAC;;EAEvD;EACAG,SAAS,CAACI,iBAAiB,CAACjG,WAAW,CAAC;EACxC6F,SAAS,CAACI,iBAAiB,CAAChG,UAAU,CAAC;EACvC4F,SAAS,CAACI,iBAAiB,CAAC/F,WAAW,CAAC;EACxC2F,SAAS,CAACI,iBAAiB,CAAC9F,YAAY,CAAC;EACzC0F,SAAS,CAACI,iBAAiB,CAAC7F,WAAW,CAAC;EACxCyF,SAAS,CAACI,iBAAiB,CAACrF,cAAc,CAAC;EAC3CiF,SAAS,CAACI,iBAAiB,CAACpF,eAAe,CAAC;EAC5CgF,SAAS,CAACI,iBAAiB,CAACnF,cAAc,CAAC;EAC3C+E,SAAS,CAACI,iBAAiB,CAACvF,aAAa,CAAC;EAC1CmF,SAAS,CAACI,iBAAiB,CAACtF,cAAc,CAAC;EAC3CkF,SAAS,CAACI,iBAAiB,CAAC1F,gBAAgB,CAAC;EAC7CsF,SAAS,CAACI,iBAAiB,CAACzF,iBAAiB,CAAC;EAC9CqF,SAAS,CAACI,iBAAiB,CAACxF,gBAAgB,CAAC;EAC7CoF,SAAS,CAACI,iBAAiB,CAAC5F,eAAe,CAAC;EAC5CwF,SAAS,CAACI,iBAAiB,CAAC3F,gBAAgB,CAAC;EAC7CuF,SAAS,CAACI,iBAAiB,CAAC/E,eAAe,CAAC;EAC5C2E,SAAS,CAACI,iBAAiB,CAAC9E,gBAAgB,CAAC;EAC7C0E,SAAS,CAACI,iBAAiB,CAAC7E,eAAe,CAAC;EAC5CyE,SAAS,CAACI,iBAAiB,CAACjF,cAAc,CAAC;EAC3C6E,SAAS,CAACI,iBAAiB,CAAChF,eAAe,CAAC;;EAE5C;EACA4E,SAAS,CAACK,OAAO,CAACb,uBAAuB,CAAC,CAACc,GAAG,CAACP,MAAM,CAAC;EACtD,MAAMC,SAAS,CAACK,OAAO,CAACZ,kBAAkB,CAAC,CAACc,OAAO,CAAC,CAAC;EACrD,MAAMP,SAAS,CAACK,OAAO,CAACd,4BAA4B,CAAC,CAACgB,OAAO,CAAC,CAAC;EAE/D,MAAMC,MAAM,GAAGR,SAAS,CAACK,OAAO,CAACV,aAAa,CAAC;EAC/Ca,MAAM,CAACC,GAAG,CAAC,uCAAuC,CAAC;EAEnD,MAAMC,iBAAiB,GAAG,MAAMV,SAAS,CAACK,OAAO,CAACf,gBAAgB,CAAC,CAACiB,OAAO,CAAC;IACxEI,IAAI,EAAE;MAAEC,cAAc,EAAE;IAAU;EACtC,CAAC,CAAC;EAEF,MAAMZ,SAAS,CAACK,OAAO,CAACX,qBAAqB,CAAC,CAACa,OAAO,CAACG,iBAAiB,CAAC;;EAEzE;EACA,MAAMV,SAAS,CAACK,OAAO,CAACT,qBAAqB,CAAC,CAACW,OAAO,CAACP,SAAS,CAAC;EAEjE,OAAOA,SAAS;AACpB,CAAC","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ import { FeatureFlags } from "@webiny/feature-flags";
2
+ import { GetFeatureFlags } from "../abstractions/index.js";
3
+ declare class GetFeatureFlagsWithLicenseDecorator implements GetFeatureFlags.Interface {
4
+ private decoratee;
5
+ constructor(decoratee: GetFeatureFlags.Interface);
6
+ execute(): Promise<FeatureFlags>;
7
+ private getLicenseFromEnv;
8
+ private applyLicense;
9
+ }
10
+ export declare const getFeatureFlagsWithLicense: typeof GetFeatureFlagsWithLicenseDecorator & {
11
+ __abstraction: import("@webiny/di").Abstraction<import("../abstractions/features/GetFeatureFlags").IGetFeatureFlags>;
12
+ };
13
+ export {};
@@ -0,0 +1,71 @@
1
+ import { License } from "@webiny/wcp";
2
+ import { FeatureFlags } from "@webiny/feature-flags";
3
+ import { GetFeatureFlags } from "../abstractions/index.js";
4
+
5
+ /* Returns the user's value when the license permits it, otherwise false.
6
+ * This preserves an explicit user false (opt-out), while blocking features
7
+ * the license doesn't cover. */
8
+ function applyLicenseFlag(userValue, licenseAllows) {
9
+ return licenseAllows ? userValue : false;
10
+ }
11
+ class GetFeatureFlagsWithLicenseDecorator {
12
+ constructor(decoratee) {
13
+ this.decoratee = decoratee;
14
+ }
15
+ async execute() {
16
+ const userFlags = await this.decoratee.execute();
17
+ const license = this.getLicenseFromEnv();
18
+ // toDto() returns a structuredClone, so we can safely mutate it in applyLicense.
19
+ return FeatureFlags.fromDto(this.applyLicense(userFlags.toDto(), license));
20
+ }
21
+ getLicenseFromEnv() {
22
+ const licenseEnv = process.env.WCP_PROJECT_LICENSE;
23
+ if (!licenseEnv) {
24
+ return License.fromLicenseDto(null);
25
+ }
26
+ try {
27
+ const licenseDto = JSON.parse(licenseEnv);
28
+ return License.fromLicenseDto(licenseDto);
29
+ } catch {
30
+ return License.fromLicenseDto(null);
31
+ }
32
+ }
33
+
34
+ /* For each licensable flag: final = user_value && license_allows.
35
+ * If the user disables a feature they have access to, we respect false.
36
+ * If the user enables a feature the license doesn't allow, we force false.
37
+ * fileManager (base) is always allowed; only threatDetection is restricted. */
38
+ applyLicense(featureFlagsDto, license) {
39
+ featureFlagsDto.multiTenancy = applyLicenseFlag(featureFlagsDto.multiTenancy, license.canUseFeature("multiTenancy"));
40
+ featureFlagsDto.advancedPublishingWorkflow = applyLicenseFlag(featureFlagsDto.advancedPublishingWorkflow, license.canUseWorkflows());
41
+
42
+ // advancedAccessControlLayer.
43
+ if (featureFlagsDto.advancedAccessControlLayer !== false) {
44
+ if (!license.canUseAacl()) {
45
+ // License doesn't allow AACL at all.
46
+ featureFlagsDto.advancedAccessControlLayer = false;
47
+ } else if (typeof featureFlagsDto.advancedAccessControlLayer === "object") {
48
+ // License allows AACL; constrain sub-options.
49
+ const aacl = featureFlagsDto.advancedAccessControlLayer;
50
+ aacl.teams = applyLicenseFlag(aacl.teams, license.canUseTeams());
51
+ aacl.privateFiles = applyLicenseFlag(aacl.privateFiles, license.canUsePrivateFiles());
52
+ aacl.folderLevelPermissions = applyLicenseFlag(aacl.folderLevelPermissions, license.canUseFolderLevelPermissions());
53
+ }
54
+ }
55
+ featureFlagsDto.auditLogs = applyLicenseFlag(featureFlagsDto.auditLogs, license.canUseAuditLogs());
56
+ featureFlagsDto.recordLocking = applyLicenseFlag(featureFlagsDto.recordLocking, license.canUseRecordLocking());
57
+
58
+ // fileManager is always enabled; only restrict threatDetection via license.
59
+ if (!featureFlagsDto.fileManager) {
60
+ featureFlagsDto.fileManager = {};
61
+ }
62
+ featureFlagsDto.fileManager.threatDetection = applyLicenseFlag(featureFlagsDto.fileManager.threatDetection, license.canUseFileManagerThreatDetection());
63
+ return featureFlagsDto;
64
+ }
65
+ }
66
+ export const getFeatureFlagsWithLicense = GetFeatureFlags.createDecorator({
67
+ decorator: GetFeatureFlagsWithLicenseDecorator,
68
+ dependencies: []
69
+ });
70
+
71
+ //# sourceMappingURL=GetFeatureFlagsWithLicense.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["License","FeatureFlags","GetFeatureFlags","applyLicenseFlag","userValue","licenseAllows","GetFeatureFlagsWithLicenseDecorator","constructor","decoratee","execute","userFlags","license","getLicenseFromEnv","fromDto","applyLicense","toDto","licenseEnv","process","env","WCP_PROJECT_LICENSE","fromLicenseDto","licenseDto","JSON","parse","featureFlagsDto","multiTenancy","canUseFeature","advancedPublishingWorkflow","canUseWorkflows","advancedAccessControlLayer","canUseAacl","aacl","teams","canUseTeams","privateFiles","canUsePrivateFiles","folderLevelPermissions","canUseFolderLevelPermissions","auditLogs","canUseAuditLogs","recordLocking","canUseRecordLocking","fileManager","threatDetection","canUseFileManagerThreatDetection","getFeatureFlagsWithLicense","createDecorator","decorator","dependencies"],"sources":["GetFeatureFlagsWithLicense.ts"],"sourcesContent":["import { License } from \"@webiny/wcp\";\nimport type { ILicense, DecryptedWcpProjectLicense } from \"@webiny/wcp/types.js\";\nimport { FeatureFlags } from \"@webiny/feature-flags\";\nimport type { IFeatureFlagsDto, IAaclFeatureFlags } from \"@webiny/feature-flags\";\nimport { GetFeatureFlags } from \"~/abstractions/index.js\";\n\n/* Returns the user's value when the license permits it, otherwise false.\n * This preserves an explicit user false (opt-out), while blocking features\n * the license doesn't cover. */\nfunction applyLicenseFlag<T extends boolean | undefined>(\n userValue: T,\n licenseAllows: boolean\n): T | false {\n return licenseAllows ? userValue : false;\n}\n\nclass GetFeatureFlagsWithLicenseDecorator implements GetFeatureFlags.Interface {\n constructor(private decoratee: GetFeatureFlags.Interface) {}\n\n async execute(): Promise<FeatureFlags> {\n const userFlags = await this.decoratee.execute();\n const license = this.getLicenseFromEnv();\n // toDto() returns a structuredClone, so we can safely mutate it in applyLicense.\n return FeatureFlags.fromDto(this.applyLicense(userFlags.toDto(), license));\n }\n\n private getLicenseFromEnv(): ILicense {\n const licenseEnv = process.env.WCP_PROJECT_LICENSE;\n if (!licenseEnv) {\n return License.fromLicenseDto(null);\n }\n\n try {\n const licenseDto = JSON.parse(licenseEnv) as DecryptedWcpProjectLicense;\n return License.fromLicenseDto(licenseDto);\n } catch {\n return License.fromLicenseDto(null);\n }\n }\n\n /* For each licensable flag: final = user_value && license_allows.\n * If the user disables a feature they have access to, we respect false.\n * If the user enables a feature the license doesn't allow, we force false.\n * fileManager (base) is always allowed; only threatDetection is restricted. */\n private applyLicense(featureFlagsDto: IFeatureFlagsDto, license: ILicense): IFeatureFlagsDto {\n featureFlagsDto.multiTenancy = applyLicenseFlag(\n featureFlagsDto.multiTenancy,\n license.canUseFeature(\"multiTenancy\")\n );\n\n featureFlagsDto.advancedPublishingWorkflow = applyLicenseFlag(\n featureFlagsDto.advancedPublishingWorkflow,\n license.canUseWorkflows()\n );\n\n // advancedAccessControlLayer.\n if (featureFlagsDto.advancedAccessControlLayer !== false) {\n if (!license.canUseAacl()) {\n // License doesn't allow AACL at all.\n featureFlagsDto.advancedAccessControlLayer = false;\n } else if (typeof featureFlagsDto.advancedAccessControlLayer === \"object\") {\n // License allows AACL; constrain sub-options.\n const aacl = featureFlagsDto.advancedAccessControlLayer as IAaclFeatureFlags;\n aacl.teams = applyLicenseFlag(aacl.teams, license.canUseTeams());\n aacl.privateFiles = applyLicenseFlag(\n aacl.privateFiles,\n license.canUsePrivateFiles()\n );\n aacl.folderLevelPermissions = applyLicenseFlag(\n aacl.folderLevelPermissions,\n license.canUseFolderLevelPermissions()\n );\n }\n }\n\n featureFlagsDto.auditLogs = applyLicenseFlag(\n featureFlagsDto.auditLogs,\n license.canUseAuditLogs()\n );\n featureFlagsDto.recordLocking = applyLicenseFlag(\n featureFlagsDto.recordLocking,\n license.canUseRecordLocking()\n );\n\n // fileManager is always enabled; only restrict threatDetection via license.\n if (!featureFlagsDto.fileManager) {\n featureFlagsDto.fileManager = {};\n }\n featureFlagsDto.fileManager.threatDetection = applyLicenseFlag(\n featureFlagsDto.fileManager.threatDetection,\n license.canUseFileManagerThreatDetection()\n );\n\n return featureFlagsDto;\n }\n}\n\nexport const getFeatureFlagsWithLicense = GetFeatureFlags.createDecorator({\n decorator: GetFeatureFlagsWithLicenseDecorator,\n dependencies: []\n});\n"],"mappings":"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","ignoreList":[]}
@@ -5,3 +5,4 @@ export * from "./DeployAppWithHooks.js";
5
5
  export * from "./DeployAppWithWatchedLambdaReplacement.js";
6
6
  export * from "./WatchWithHooks.js";
7
7
  export * from "./GetPulumiServiceWithDownloadInfo.js";
8
+ export * from "./GetFeatureFlagsWithLicense.js";
@@ -5,5 +5,6 @@ export * from "./DeployAppWithHooks.js";
5
5
  export * from "./DeployAppWithWatchedLambdaReplacement.js";
6
6
  export * from "./WatchWithHooks.js";
7
7
  export * from "./GetPulumiServiceWithDownloadInfo.js";
8
+ export * from "./GetFeatureFlagsWithLicense.js";
8
9
 
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./BuildAppWithHooks.js\";\nexport * from \"./DeployAppClearWatchedLambdaFunctions.js\";\nexport * from \"./DeployAppRefreshStackOutputCache.js\";\nexport * from \"./DeployAppWithHooks.js\";\nexport * from \"./DeployAppWithWatchedLambdaReplacement.js\";\nexport * from \"./WatchWithHooks.js\";\nexport * from \"./GetPulumiServiceWithDownloadInfo.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./BuildAppWithHooks.js\";\nexport * from \"./DeployAppClearWatchedLambdaFunctions.js\";\nexport * from \"./DeployAppRefreshStackOutputCache.js\";\nexport * from \"./DeployAppWithHooks.js\";\nexport * from \"./DeployAppWithWatchedLambdaReplacement.js\";\nexport * from \"./WatchWithHooks.js\";\nexport * from \"./GetPulumiServiceWithDownloadInfo.js\";\nexport * from \"./GetFeatureFlagsWithLicense.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
@@ -5,4 +5,4 @@ export { BeforeBuild as BeforeBuildHook } from "../../abstractions/features/hook
5
5
  export { AfterDeploy as AfterDeployHook } from "../../abstractions/features/hooks/AfterDeploy.js";
6
6
  export { BeforeDeploy as BeforeDeployHook } from "../../abstractions/features/hooks/BeforeDeploy.js";
7
7
  export { BeforeWatch as BeforeWatchHook } from "../../abstractions/features/hooks/BeforeWatch.js";
8
- export { GetAppStackOutput } from "../../abstractions/features/GetAppStackOutput.js";
8
+ export { EnvVar } from "../../extensions/EnvVar.js";
@@ -5,6 +5,6 @@ export { BeforeBuild as BeforeBuildHook } from "../../abstractions/features/hook
5
5
  export { AfterDeploy as AfterDeployHook } from "../../abstractions/features/hooks/AfterDeploy.js";
6
6
  export { BeforeDeploy as BeforeDeployHook } from "../../abstractions/features/hooks/BeforeDeploy.js";
7
7
  export { BeforeWatch as BeforeWatchHook } from "../../abstractions/features/hooks/BeforeWatch.js";
8
- export { GetAppStackOutput } from "../../abstractions/features/GetAppStackOutput.js";
8
+ export { EnvVar } from "../../extensions/EnvVar.js";
9
9
 
10
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["LoggerService","Logger","UiService","Ui","AfterBuild","AfterBuildHook","BeforeBuild","BeforeBuildHook","AfterDeploy","AfterDeployHook","BeforeDeploy","BeforeDeployHook","BeforeWatch","BeforeWatchHook","GetAppStackOutput"],"sources":["index.ts"],"sourcesContent":["export { LoggerService as Logger } from \"~/abstractions/services/LoggerService.js\";\nexport { UiService as Ui } from \"~/abstractions/services/UiService.js\";\nexport { AfterBuild as AfterBuildHook } from \"~/abstractions/features/hooks/AfterBuild.js\";\nexport { BeforeBuild as BeforeBuildHook } from \"~/abstractions/features/hooks/BeforeBuild.js\";\nexport { AfterDeploy as AfterDeployHook } from \"~/abstractions/features/hooks/AfterDeploy.js\";\nexport { BeforeDeploy as BeforeDeployHook } from \"~/abstractions/features/hooks/BeforeDeploy.js\";\nexport { BeforeWatch as BeforeWatchHook } from \"~/abstractions/features/hooks/BeforeWatch.js\";\nexport { GetAppStackOutput } from \"~/abstractions/features/GetAppStackOutput.js\";\n"],"mappings":"AAAA,SAASA,aAAa,IAAIC,MAAM;AAChC,SAASC,SAAS,IAAIC,EAAE;AACxB,SAASC,UAAU,IAAIC,cAAc;AACrC,SAASC,WAAW,IAAIC,eAAe;AACvC,SAASC,WAAW,IAAIC,eAAe;AACvC,SAASC,YAAY,IAAIC,gBAAgB;AACzC,SAASC,WAAW,IAAIC,eAAe;AACvC,SAASC,iBAAiB","ignoreList":[]}
1
+ {"version":3,"names":["LoggerService","Logger","UiService","Ui","AfterBuild","AfterBuildHook","BeforeBuild","BeforeBuildHook","AfterDeploy","AfterDeployHook","BeforeDeploy","BeforeDeployHook","BeforeWatch","BeforeWatchHook","EnvVar"],"sources":["index.ts"],"sourcesContent":["export { LoggerService as Logger } from \"~/abstractions/services/LoggerService.js\";\nexport { UiService as Ui } from \"~/abstractions/services/UiService.js\";\nexport { AfterBuild as AfterBuildHook } from \"~/abstractions/features/hooks/AfterBuild.js\";\nexport { BeforeBuild as BeforeBuildHook } from \"~/abstractions/features/hooks/BeforeBuild.js\";\nexport { AfterDeploy as AfterDeployHook } from \"~/abstractions/features/hooks/AfterDeploy.js\";\nexport { BeforeDeploy as BeforeDeployHook } from \"~/abstractions/features/hooks/BeforeDeploy.js\";\nexport { BeforeWatch as BeforeWatchHook } from \"~/abstractions/features/hooks/BeforeWatch.js\";\nexport { EnvVar } from \"~/extensions/EnvVar.js\";\n"],"mappings":"AAAA,SAASA,aAAa,IAAIC,MAAM;AAChC,SAASC,SAAS,IAAIC,EAAE;AACxB,SAASC,UAAU,IAAIC,cAAc;AACrC,SAASC,WAAW,IAAIC,eAAe;AACvC,SAASC,WAAW,IAAIC,eAAe;AACvC,SAASC,YAAY,IAAIC,gBAAgB;AACzC,SAASC,WAAW,IAAIC,eAAe;AACvC,SAASC,MAAM","ignoreList":[]}
@@ -161,7 +161,7 @@ export const AdminBuildParam = defineExtension({
161
161
  // Check if file already exists.
162
162
  if (!fs.existsSync(filePath)) {
163
163
  // Create the BuildParam implementation file.
164
- const fileContent = `import { BuildParam } from "webiny/admin/buildParams";
164
+ const fileContent = `import { BuildParam } from "webiny/admin/build-params";
165
165
 
166
166
  class ${className} implements BuildParam.Interface {
167
167
  key = "${paramName}";
@@ -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.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/buildParams\";\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,"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.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":[]}
@@ -47,7 +47,7 @@ export const BuildParam = defineExtension({
47
47
  // File exists, just ensure it's imported in extensions.ts
48
48
  } else {
49
49
  // Create the BuildParam implementation file.
50
- const fileContent = `import { BuildParam } from "webiny/api/buildParams";
50
+ const fileContent = `import { BuildParam } from "webiny/api/build-params";
51
51
 
52
52
  class ${className} implements BuildParam.Interface {
53
53
  key = "${paramName}";
@@ -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.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/buildParams\";\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 `\\ncreateContextPlugin(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/api/plugins/ContextPlugin\";\n const existingContextPluginImport =\n source.getImportDeclaration(contextPluginImportPath);\n if (!existingContextPluginImport) {\n source.insertImportDeclaration(index, {\n namedImports: [\"createContextPlugin\"],\n moduleSpecifier: contextPluginImportPath\n });\n }\n }\n\n await source.save();\n }\n});\n"],"mappings":"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","ignoreList":[]}
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.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 `\\ncreateContextPlugin(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/api/plugins/ContextPlugin\";\n const existingContextPluginImport =\n source.getImportDeclaration(contextPluginImportPath);\n if (!existingContextPluginImport) {\n source.insertImportDeclaration(index, {\n namedImports: [\"createContextPlugin\"],\n moduleSpecifier: contextPluginImportPath\n });\n }\n }\n\n await source.save();\n }\n});\n"],"mappings":"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","ignoreList":[]}
@@ -7,24 +7,27 @@ export declare const FeatureFlags: import("~/defineExtension/index.js").Extensio
7
7
  teams: z.ZodOptional<z.ZodBoolean>;
8
8
  privateFiles: z.ZodOptional<z.ZodBoolean>;
9
9
  folderLevelPermissions: z.ZodOptional<z.ZodBoolean>;
10
+ hcmsFieldPermissions: z.ZodOptional<z.ZodBoolean>;
10
11
  }, "strip", z.ZodTypeAny, {
11
12
  teams?: boolean | undefined;
12
13
  privateFiles?: boolean | undefined;
13
14
  folderLevelPermissions?: boolean | undefined;
15
+ hcmsFieldPermissions?: boolean | undefined;
14
16
  }, {
15
17
  teams?: boolean | undefined;
16
18
  privateFiles?: boolean | undefined;
17
19
  folderLevelPermissions?: boolean | undefined;
20
+ hcmsFieldPermissions?: boolean | undefined;
18
21
  }>]>>;
19
22
  auditLogs: z.ZodOptional<z.ZodBoolean>;
20
23
  recordLocking: z.ZodOptional<z.ZodBoolean>;
21
- fileManager: z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodObject<{
24
+ fileManager: z.ZodOptional<z.ZodObject<{
22
25
  threatDetection: z.ZodOptional<z.ZodBoolean>;
23
26
  }, "strip", z.ZodTypeAny, {
24
27
  threatDetection?: boolean | undefined;
25
28
  }, {
26
29
  threatDetection?: boolean | undefined;
27
- }>]>>;
30
+ }>>;
28
31
  }, "strip", z.ZodTypeAny, {
29
32
  multiTenancy?: boolean | undefined;
30
33
  advancedPublishingWorkflow?: boolean | undefined;
@@ -32,10 +35,11 @@ export declare const FeatureFlags: import("~/defineExtension/index.js").Extensio
32
35
  teams?: boolean | undefined;
33
36
  privateFiles?: boolean | undefined;
34
37
  folderLevelPermissions?: boolean | undefined;
38
+ hcmsFieldPermissions?: boolean | undefined;
35
39
  } | undefined;
36
40
  auditLogs?: boolean | undefined;
37
41
  recordLocking?: boolean | undefined;
38
- fileManager?: boolean | {
42
+ fileManager?: {
39
43
  threatDetection?: boolean | undefined;
40
44
  } | undefined;
41
45
  }, {
@@ -45,10 +49,11 @@ export declare const FeatureFlags: import("~/defineExtension/index.js").Extensio
45
49
  teams?: boolean | undefined;
46
50
  privateFiles?: boolean | undefined;
47
51
  folderLevelPermissions?: boolean | undefined;
52
+ hcmsFieldPermissions?: boolean | undefined;
48
53
  } | undefined;
49
54
  auditLogs?: boolean | undefined;
50
55
  recordLocking?: boolean | undefined;
51
- fileManager?: boolean | {
56
+ fileManager?: {
52
57
  threatDetection?: boolean | undefined;
53
58
  } | undefined;
54
59
  }>;
@@ -60,10 +65,11 @@ export declare const FeatureFlags: import("~/defineExtension/index.js").Extensio
60
65
  teams?: boolean | undefined;
61
66
  privateFiles?: boolean | undefined;
62
67
  folderLevelPermissions?: boolean | undefined;
68
+ hcmsFieldPermissions?: boolean | undefined;
63
69
  } | undefined;
64
70
  auditLogs?: boolean | undefined;
65
71
  recordLocking?: boolean | undefined;
66
- fileManager?: boolean | {
72
+ fileManager?: {
67
73
  threatDetection?: boolean | undefined;
68
74
  } | undefined;
69
75
  };
@@ -75,10 +81,11 @@ export declare const FeatureFlags: import("~/defineExtension/index.js").Extensio
75
81
  teams?: boolean | undefined;
76
82
  privateFiles?: boolean | undefined;
77
83
  folderLevelPermissions?: boolean | undefined;
84
+ hcmsFieldPermissions?: boolean | undefined;
78
85
  } | undefined;
79
86
  auditLogs?: boolean | undefined;
80
87
  recordLocking?: boolean | undefined;
81
- fileManager?: boolean | {
88
+ fileManager?: {
82
89
  threatDetection?: boolean | undefined;
83
90
  } | undefined;
84
91
  };
@@ -10,20 +10,21 @@ export const FeatureFlags = defineExtension({
10
10
  },
11
11
  description: "Enable or disable WCP features.",
12
12
  paramsSchema: z.object({
13
- // Follows `IFeatureFlagsDto` from `packages/feature-flags/src/index.ts`.
13
+ // Follows `IFeatureFlagsDto` from `packages/feature-flags/src/types.ts`.
14
14
  features: z.object({
15
15
  multiTenancy: z.boolean().optional(),
16
16
  advancedPublishingWorkflow: z.boolean().optional(),
17
17
  advancedAccessControlLayer: z.union([z.boolean(), z.object({
18
18
  teams: z.boolean().optional(),
19
19
  privateFiles: z.boolean().optional(),
20
- folderLevelPermissions: z.boolean().optional()
20
+ folderLevelPermissions: z.boolean().optional(),
21
+ hcmsFieldPermissions: z.boolean().optional()
21
22
  })]).optional(),
22
23
  auditLogs: z.boolean().optional(),
23
24
  recordLocking: z.boolean().optional(),
24
- fileManager: z.union([z.boolean(), z.object({
25
+ fileManager: z.object({
25
26
  threatDetection: z.boolean().optional()
26
- })]).optional()
27
+ }).optional()
27
28
  })
28
29
  }),
29
30
  render: ({
@@ -1 +1 @@
1
- {"version":3,"names":["React","z","BuildParam","AdminBuildParam","defineExtension","FeatureFlags","type","tags","runtimeContext","description","paramsSchema","object","features","multiTenancy","boolean","optional","advancedPublishingWorkflow","advancedAccessControlLayer","union","teams","privateFiles","folderLevelPermissions","auditLogs","recordLocking","fileManager","threatDetection","render","createElement","Fragment","paramName","value"],"sources":["FeatureFlags.tsx"],"sourcesContent":["import React from \"react\";\nimport { z } from \"zod\";\nimport { BuildParam } from \"./ApiBuildParam.js\";\nimport { AdminBuildParam } from \"./AdminBuildParam.js\";\nimport { defineExtension } from \"~/defineExtension/index.js\";\n\nexport const FeatureFlags = defineExtension({\n type: \"FeatureFlags\",\n tags: { runtimeContext: \"project\" },\n description: \"Enable or disable WCP features.\",\n paramsSchema: z.object({\n // Follows `IFeatureFlagsDto` from `packages/feature-flags/src/index.ts`.\n features: z.object({\n multiTenancy: z.boolean().optional(),\n advancedPublishingWorkflow: z.boolean().optional(),\n advancedAccessControlLayer: z\n .union([\n z.boolean(),\n z.object({\n teams: z.boolean().optional(),\n privateFiles: z.boolean().optional(),\n folderLevelPermissions: z.boolean().optional()\n })\n ])\n .optional(),\n auditLogs: z.boolean().optional(),\n recordLocking: z.boolean().optional(),\n fileManager: z\n .union([\n z.boolean(),\n z.object({\n threatDetection: z.boolean().optional()\n })\n ])\n .optional()\n })\n }),\n render: ({ features = {} }) => {\n return (\n <>\n <BuildParam paramName=\"FeatureFlags\" value={features} />\n <AdminBuildParam paramName=\"FeatureFlags\" value={features} />\n </>\n );\n }\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,CAAC,QAAQ,KAAK;AACvB,SAASC,UAAU;AACnB,SAASC,eAAe;AACxB,SAASC,eAAe;AAExB,OAAO,MAAMC,YAAY,GAAGD,eAAe,CAAC;EACxCE,IAAI,EAAE,cAAc;EACpBC,IAAI,EAAE;IAAEC,cAAc,EAAE;EAAU,CAAC;EACnCC,WAAW,EAAE,iCAAiC;EAC9CC,YAAY,EAAET,CAAC,CAACU,MAAM,CAAC;IACnB;IACAC,QAAQ,EAAEX,CAAC,CAACU,MAAM,CAAC;MACfE,YAAY,EAAEZ,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;MACpCC,0BAA0B,EAAEf,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;MAClDE,0BAA0B,EAAEhB,CAAC,CACxBiB,KAAK,CAAC,CACHjB,CAAC,CAACa,OAAO,CAAC,CAAC,EACXb,CAAC,CAACU,MAAM,CAAC;QACLQ,KAAK,EAAElB,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;QAC7BK,YAAY,EAAEnB,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;QACpCM,sBAAsB,EAAEpB,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC;MACjD,CAAC,CAAC,CACL,CAAC,CACDA,QAAQ,CAAC,CAAC;MACfO,SAAS,EAAErB,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;MACjCQ,aAAa,EAAEtB,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;MACrCS,WAAW,EAAEvB,CAAC,CACTiB,KAAK,CAAC,CACHjB,CAAC,CAACa,OAAO,CAAC,CAAC,EACXb,CAAC,CAACU,MAAM,CAAC;QACLc,eAAe,EAAExB,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC;MAC1C,CAAC,CAAC,CACL,CAAC,CACDA,QAAQ,CAAC;IAClB,CAAC;EACL,CAAC,CAAC;EACFW,MAAM,EAAEA,CAAC;IAAEd,QAAQ,GAAG,CAAC;EAAE,CAAC,KAAK;IAC3B,oBACIZ,KAAA,CAAA2B,aAAA,CAAA3B,KAAA,CAAA4B,QAAA,qBACI5B,KAAA,CAAA2B,aAAA,CAACzB,UAAU;MAAC2B,SAAS,EAAC,cAAc;MAACC,KAAK,EAAElB;IAAS,CAAE,CAAC,eACxDZ,KAAA,CAAA2B,aAAA,CAACxB,eAAe;MAAC0B,SAAS,EAAC,cAAc;MAACC,KAAK,EAAElB;IAAS,CAAE,CAC9D,CAAC;EAEX;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","z","BuildParam","AdminBuildParam","defineExtension","FeatureFlags","type","tags","runtimeContext","description","paramsSchema","object","features","multiTenancy","boolean","optional","advancedPublishingWorkflow","advancedAccessControlLayer","union","teams","privateFiles","folderLevelPermissions","hcmsFieldPermissions","auditLogs","recordLocking","fileManager","threatDetection","render","createElement","Fragment","paramName","value"],"sources":["FeatureFlags.tsx"],"sourcesContent":["import React from \"react\";\nimport { z } from \"zod\";\nimport { BuildParam } from \"./ApiBuildParam.js\";\nimport { AdminBuildParam } from \"./AdminBuildParam.js\";\nimport { defineExtension } from \"~/defineExtension/index.js\";\n\nexport const FeatureFlags = defineExtension({\n type: \"FeatureFlags\",\n tags: { runtimeContext: \"project\" },\n description: \"Enable or disable WCP features.\",\n paramsSchema: z.object({\n // Follows `IFeatureFlagsDto` from `packages/feature-flags/src/types.ts`.\n features: z.object({\n multiTenancy: z.boolean().optional(),\n advancedPublishingWorkflow: z.boolean().optional(),\n advancedAccessControlLayer: z\n .union([\n z.boolean(),\n z.object({\n teams: z.boolean().optional(),\n privateFiles: z.boolean().optional(),\n folderLevelPermissions: z.boolean().optional(),\n hcmsFieldPermissions: z.boolean().optional()\n })\n ])\n .optional(),\n auditLogs: z.boolean().optional(),\n recordLocking: z.boolean().optional(),\n fileManager: z\n .object({\n threatDetection: z.boolean().optional()\n })\n .optional()\n })\n }),\n render: ({ features = {} }) => {\n return (\n <>\n <BuildParam paramName=\"FeatureFlags\" value={features} />\n <AdminBuildParam paramName=\"FeatureFlags\" value={features} />\n </>\n );\n }\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,CAAC,QAAQ,KAAK;AACvB,SAASC,UAAU;AACnB,SAASC,eAAe;AACxB,SAASC,eAAe;AAExB,OAAO,MAAMC,YAAY,GAAGD,eAAe,CAAC;EACxCE,IAAI,EAAE,cAAc;EACpBC,IAAI,EAAE;IAAEC,cAAc,EAAE;EAAU,CAAC;EACnCC,WAAW,EAAE,iCAAiC;EAC9CC,YAAY,EAAET,CAAC,CAACU,MAAM,CAAC;IACnB;IACAC,QAAQ,EAAEX,CAAC,CAACU,MAAM,CAAC;MACfE,YAAY,EAAEZ,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;MACpCC,0BAA0B,EAAEf,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;MAClDE,0BAA0B,EAAEhB,CAAC,CACxBiB,KAAK,CAAC,CACHjB,CAAC,CAACa,OAAO,CAAC,CAAC,EACXb,CAAC,CAACU,MAAM,CAAC;QACLQ,KAAK,EAAElB,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;QAC7BK,YAAY,EAAEnB,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;QACpCM,sBAAsB,EAAEpB,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;QAC9CO,oBAAoB,EAAErB,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC;MAC/C,CAAC,CAAC,CACL,CAAC,CACDA,QAAQ,CAAC,CAAC;MACfQ,SAAS,EAAEtB,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;MACjCS,aAAa,EAAEvB,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;MACrCU,WAAW,EAAExB,CAAC,CACTU,MAAM,CAAC;QACJe,eAAe,EAAEzB,CAAC,CAACa,OAAO,CAAC,CAAC,CAACC,QAAQ,CAAC;MAC1C,CAAC,CAAC,CACDA,QAAQ,CAAC;IAClB,CAAC;EACL,CAAC,CAAC;EACFY,MAAM,EAAEA,CAAC;IAAEf,QAAQ,GAAG,CAAC;EAAE,CAAC,KAAK;IAC3B,oBACIZ,KAAA,CAAA4B,aAAA,CAAA5B,KAAA,CAAA6B,QAAA,qBACI7B,KAAA,CAAA4B,aAAA,CAAC1B,UAAU;MAAC4B,SAAS,EAAC,cAAc;MAACC,KAAK,EAAEnB;IAAS,CAAE,CAAC,eACxDZ,KAAA,CAAA4B,aAAA,CAACzB,eAAe;MAAC2B,SAAS,EAAC,cAAc;MAACC,KAAK,EAAEnB;IAAS,CAAE,CAC9D,CAAC;EAEX;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -93,24 +93,27 @@ export declare const definitions: (import("../defineExtension/index.js").Extensi
93
93
  teams: import("zod").ZodOptional<import("zod").ZodBoolean>;
94
94
  privateFiles: import("zod").ZodOptional<import("zod").ZodBoolean>;
95
95
  folderLevelPermissions: import("zod").ZodOptional<import("zod").ZodBoolean>;
96
+ hcmsFieldPermissions: import("zod").ZodOptional<import("zod").ZodBoolean>;
96
97
  }, "strip", import("zod").ZodTypeAny, {
97
98
  teams?: boolean | undefined;
98
99
  privateFiles?: boolean | undefined;
99
100
  folderLevelPermissions?: boolean | undefined;
101
+ hcmsFieldPermissions?: boolean | undefined;
100
102
  }, {
101
103
  teams?: boolean | undefined;
102
104
  privateFiles?: boolean | undefined;
103
105
  folderLevelPermissions?: boolean | undefined;
106
+ hcmsFieldPermissions?: boolean | undefined;
104
107
  }>]>>;
105
108
  auditLogs: import("zod").ZodOptional<import("zod").ZodBoolean>;
106
109
  recordLocking: import("zod").ZodOptional<import("zod").ZodBoolean>;
107
- fileManager: import("zod").ZodOptional<import("zod").ZodUnion<[import("zod").ZodBoolean, import("zod").ZodObject<{
110
+ fileManager: import("zod").ZodOptional<import("zod").ZodObject<{
108
111
  threatDetection: import("zod").ZodOptional<import("zod").ZodBoolean>;
109
112
  }, "strip", import("zod").ZodTypeAny, {
110
113
  threatDetection?: boolean | undefined;
111
114
  }, {
112
115
  threatDetection?: boolean | undefined;
113
- }>]>>;
116
+ }>>;
114
117
  }, "strip", import("zod").ZodTypeAny, {
115
118
  multiTenancy?: boolean | undefined;
116
119
  advancedPublishingWorkflow?: boolean | undefined;
@@ -118,10 +121,11 @@ export declare const definitions: (import("../defineExtension/index.js").Extensi
118
121
  teams?: boolean | undefined;
119
122
  privateFiles?: boolean | undefined;
120
123
  folderLevelPermissions?: boolean | undefined;
124
+ hcmsFieldPermissions?: boolean | undefined;
121
125
  } | undefined;
122
126
  auditLogs?: boolean | undefined;
123
127
  recordLocking?: boolean | undefined;
124
- fileManager?: boolean | {
128
+ fileManager?: {
125
129
  threatDetection?: boolean | undefined;
126
130
  } | undefined;
127
131
  }, {
@@ -131,10 +135,11 @@ export declare const definitions: (import("../defineExtension/index.js").Extensi
131
135
  teams?: boolean | undefined;
132
136
  privateFiles?: boolean | undefined;
133
137
  folderLevelPermissions?: boolean | undefined;
138
+ hcmsFieldPermissions?: boolean | undefined;
134
139
  } | undefined;
135
140
  auditLogs?: boolean | undefined;
136
141
  recordLocking?: boolean | undefined;
137
- fileManager?: boolean | {
142
+ fileManager?: {
138
143
  threatDetection?: boolean | undefined;
139
144
  } | undefined;
140
145
  }>;
@@ -146,10 +151,11 @@ export declare const definitions: (import("../defineExtension/index.js").Extensi
146
151
  teams?: boolean | undefined;
147
152
  privateFiles?: boolean | undefined;
148
153
  folderLevelPermissions?: boolean | undefined;
154
+ hcmsFieldPermissions?: boolean | undefined;
149
155
  } | undefined;
150
156
  auditLogs?: boolean | undefined;
151
157
  recordLocking?: boolean | undefined;
152
- fileManager?: boolean | {
158
+ fileManager?: {
153
159
  threatDetection?: boolean | undefined;
154
160
  } | undefined;
155
161
  };
@@ -161,10 +167,11 @@ export declare const definitions: (import("../defineExtension/index.js").Extensi
161
167
  teams?: boolean | undefined;
162
168
  privateFiles?: boolean | undefined;
163
169
  folderLevelPermissions?: boolean | undefined;
170
+ hcmsFieldPermissions?: boolean | undefined;
164
171
  } | undefined;
165
172
  auditLogs?: boolean | undefined;
166
173
  recordLocking?: boolean | undefined;
167
- fileManager?: boolean | {
174
+ fileManager?: {
168
175
  threatDetection?: boolean | undefined;
169
176
  } | undefined;
170
177
  };
@@ -0,0 +1,10 @@
1
+ import { FeatureFlags } from "@webiny/feature-flags";
2
+ import { GetFeatureFlags } from "../../abstractions/index.js";
3
+ import { GetProjectConfig } from "../../abstractions/index.js";
4
+ declare class DefaultGetFeatureFlags implements GetFeatureFlags.Interface {
5
+ private getProjectConfig;
6
+ constructor(getProjectConfig: GetProjectConfig.Interface);
7
+ execute(): Promise<FeatureFlags>;
8
+ }
9
+ export declare const getFeatureFlags: import("@webiny/di").Implementation<typeof DefaultGetFeatureFlags>;
10
+ export {};
@@ -0,0 +1,29 @@
1
+ import { createImplementation } from "@webiny/di";
2
+ import { FeatureFlags } from "@webiny/feature-flags";
3
+ import { GetFeatureFlags } from "../../abstractions/index.js";
4
+ import { GetProjectConfig } from "../../abstractions/index.js";
5
+ import { FeatureFlags as FeatureFlagsExtension } from "../../extensions/FeatureFlags.js";
6
+ class DefaultGetFeatureFlags {
7
+ constructor(getProjectConfig) {
8
+ this.getProjectConfig = getProjectConfig;
9
+ }
10
+ async execute() {
11
+ const projectConfig = await this.getProjectConfig.execute({
12
+ tags: {
13
+ runtimeContext: "project"
14
+ }
15
+ });
16
+ const extensions = projectConfig.extensionsByType(FeatureFlagsExtension);
17
+ if (extensions.length === 0) {
18
+ return new FeatureFlags({});
19
+ }
20
+ return FeatureFlags.fromDto(extensions[0].params.features);
21
+ }
22
+ }
23
+ export const getFeatureFlags = createImplementation({
24
+ abstraction: GetFeatureFlags,
25
+ implementation: DefaultGetFeatureFlags,
26
+ dependencies: [GetProjectConfig]
27
+ });
28
+
29
+ //# sourceMappingURL=GetFeatureFlags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createImplementation","FeatureFlags","GetFeatureFlags","GetProjectConfig","FeatureFlagsExtension","DefaultGetFeatureFlags","constructor","getProjectConfig","execute","projectConfig","tags","runtimeContext","extensions","extensionsByType","length","fromDto","params","features","getFeatureFlags","abstraction","implementation","dependencies"],"sources":["GetFeatureFlags.ts"],"sourcesContent":["import { createImplementation } from \"@webiny/di\";\nimport { FeatureFlags } from \"@webiny/feature-flags\";\nimport { GetFeatureFlags } from \"~/abstractions/index.js\";\nimport { GetProjectConfig } from \"~/abstractions/index.js\";\nimport { FeatureFlags as FeatureFlagsExtension } from \"~/extensions/FeatureFlags.js\";\n\nclass DefaultGetFeatureFlags implements GetFeatureFlags.Interface {\n constructor(private getProjectConfig: GetProjectConfig.Interface) {}\n\n async execute(): Promise<FeatureFlags> {\n const projectConfig = await this.getProjectConfig.execute({\n tags: { runtimeContext: \"project\" }\n });\n\n const extensions = projectConfig.extensionsByType(FeatureFlagsExtension);\n\n if (extensions.length === 0) {\n return new FeatureFlags({});\n }\n\n return FeatureFlags.fromDto(extensions[0].params.features);\n }\n}\n\nexport const getFeatureFlags = createImplementation({\n abstraction: GetFeatureFlags,\n implementation: DefaultGetFeatureFlags,\n dependencies: [GetProjectConfig]\n});\n"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,YAAY;AACjD,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,eAAe;AACxB,SAASC,gBAAgB;AACzB,SAASF,YAAY,IAAIG,qBAAqB;AAE9C,MAAMC,sBAAsB,CAAsC;EAC9DC,WAAWA,CAASC,gBAA4C,EAAE;IAAA,KAA9CA,gBAA4C,GAA5CA,gBAA4C;EAAG;EAEnE,MAAMC,OAAOA,CAAA,EAA0B;IACnC,MAAMC,aAAa,GAAG,MAAM,IAAI,CAACF,gBAAgB,CAACC,OAAO,CAAC;MACtDE,IAAI,EAAE;QAAEC,cAAc,EAAE;MAAU;IACtC,CAAC,CAAC;IAEF,MAAMC,UAAU,GAAGH,aAAa,CAACI,gBAAgB,CAACT,qBAAqB,CAAC;IAExE,IAAIQ,UAAU,CAACE,MAAM,KAAK,CAAC,EAAE;MACzB,OAAO,IAAIb,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/B;IAEA,OAAOA,YAAY,CAACc,OAAO,CAACH,UAAU,CAAC,CAAC,CAAC,CAACI,MAAM,CAACC,QAAQ,CAAC;EAC9D;AACJ;AAEA,OAAO,MAAMC,eAAe,GAAGlB,oBAAoB,CAAC;EAChDmB,WAAW,EAAEjB,eAAe;EAC5BkB,cAAc,EAAEf,sBAAsB;EACtCgB,YAAY,EAAE,CAAClB,gBAAgB;AACnC,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export * from "./GetFeatureFlags.js";
@@ -0,0 +1,3 @@
1
+ export * from "./GetFeatureFlags.js";
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./GetFeatureFlags.js\";\n"],"mappings":"AAAA","ignoreList":[]}
@@ -22,3 +22,4 @@ export * from "./RefreshApp/index.js";
22
22
  export * from "./RunPulumiCommand/index.js";
23
23
  export * from "./ValidateProjectConfig/index.js";
24
24
  export * from "./Watch/index.js";
25
+ export * from "./GetFeatureFlags/index.js";
package/features/index.js CHANGED
@@ -22,5 +22,6 @@ export * from "./RefreshApp/index.js";
22
22
  export * from "./RunPulumiCommand/index.js";
23
23
  export * from "./ValidateProjectConfig/index.js";
24
24
  export * from "./Watch/index.js";
25
+ export * from "./GetFeatureFlags/index.js";
25
26
 
26
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./hooks/index.js\";\nexport * from \"./pulumi/index.js\";\nexport * from \"./BuildApp/index.js\";\nexport * from \"./DeployApp/index.js\";\nexport * from \"./DestroyApp/index.js\";\nexport * from \"./ExportStack/index.js\";\nexport * from \"./GetApp/index.js\";\nexport * from \"./GetAppOutput/index.js\";\nexport * from \"./GetAppStackOutput/index.js\";\nexport * from \"./GetLogger/index.js\";\nexport * from \"./GetProductionEnvironments/index.js\";\nexport * from \"./GetProject/index.js\";\nexport * from \"./GetProjectConfig/index.js\";\nexport * from \"./GetProjectInfo/index.js\";\nexport * from \"./GetPulumiResourceNamePrefix/index.js\";\nexport * from \"./InstallExtension/index.js\";\nexport * from \"./IsCi/index.js\";\nexport * from \"./IsTelemetryEnabled/index.js\";\nexport * from \"./IsWcpEnabled/index.js\";\nexport * from \"./IsWebinyJsRepo/index.js\";\nexport * from \"./RefreshApp/index.js\";\nexport * from \"./RunPulumiCommand/index.js\";\nexport * from \"./ValidateProjectConfig/index.js\";\nexport * from \"./Watch/index.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./hooks/index.js\";\nexport * from \"./pulumi/index.js\";\nexport * from \"./BuildApp/index.js\";\nexport * from \"./DeployApp/index.js\";\nexport * from \"./DestroyApp/index.js\";\nexport * from \"./ExportStack/index.js\";\nexport * from \"./GetApp/index.js\";\nexport * from \"./GetAppOutput/index.js\";\nexport * from \"./GetAppStackOutput/index.js\";\nexport * from \"./GetLogger/index.js\";\nexport * from \"./GetProductionEnvironments/index.js\";\nexport * from \"./GetProject/index.js\";\nexport * from \"./GetProjectConfig/index.js\";\nexport * from \"./GetProjectInfo/index.js\";\nexport * from \"./GetPulumiResourceNamePrefix/index.js\";\nexport * from \"./InstallExtension/index.js\";\nexport * from \"./IsCi/index.js\";\nexport * from \"./IsTelemetryEnabled/index.js\";\nexport * from \"./IsWcpEnabled/index.js\";\nexport * from \"./IsWebinyJsRepo/index.js\";\nexport * from \"./RefreshApp/index.js\";\nexport * from \"./RunPulumiCommand/index.js\";\nexport * from \"./ValidateProjectConfig/index.js\";\nexport * from \"./Watch/index.js\";\nexport * from \"./GetFeatureFlags/index.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/project",
3
- "version": "6.0.0-rc.2",
3
+ "version": "6.0.0-rc.4",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -10,16 +10,17 @@
10
10
  "description": "An SDK for managing Webiny projects.",
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
- "@webiny/aws-sdk": "6.0.0-rc.2",
14
- "@webiny/build-tools": "6.0.0-rc.2",
13
+ "@webiny/aws-sdk": "6.0.0-rc.4",
14
+ "@webiny/build-tools": "6.0.0-rc.4",
15
15
  "@webiny/di": "0.2.3",
16
- "@webiny/global-config": "6.0.0-rc.2",
17
- "@webiny/pulumi-sdk": "6.0.0-rc.2",
18
- "@webiny/react-properties": "6.0.0-rc.2",
19
- "@webiny/system-requirements": "6.0.0-rc.2",
20
- "@webiny/telemetry": "6.0.0-rc.2",
21
- "@webiny/utils": "6.0.0-rc.2",
22
- "@webiny/wcp": "6.0.0-rc.2",
16
+ "@webiny/feature-flags": "6.0.0-rc.4",
17
+ "@webiny/global-config": "6.0.0-rc.4",
18
+ "@webiny/pulumi-sdk": "6.0.0-rc.4",
19
+ "@webiny/react-properties": "6.0.0-rc.4",
20
+ "@webiny/system-requirements": "6.0.0-rc.4",
21
+ "@webiny/telemetry": "6.0.0-rc.4",
22
+ "@webiny/utils": "6.0.0-rc.4",
23
+ "@webiny/wcp": "6.0.0-rc.4",
23
24
  "chalk": "4.1.2",
24
25
  "chokidar": "4.0.3",
25
26
  "ci-info": "4.4.0",
@@ -75,5 +76,5 @@
75
76
  "access": "public",
76
77
  "directory": "dist"
77
78
  },
78
- "gitHead": "5facada4cbb8617cc60e3c98be0f1839f44be38e"
79
+ "gitHead": "e2758ee1cfa3b9a7152e9bb995a90ccabd33266f"
79
80
  }
@@ -6,6 +6,7 @@ export interface WcpProjectLicenseContextValue {
6
6
  canUsePrivateFiles: () => boolean;
7
7
  canUseFileManagerThreatDetection: () => boolean;
8
8
  canUseWorkflows: () => boolean;
9
+ canUseHcmsFieldPermissions: () => boolean;
9
10
  }
10
11
  export declare const WcpProjectLicenseProvider: React.FC<{
11
12
  children: React.ReactNode;
@@ -24,7 +24,8 @@ export const WcpProjectLicenseProvider = ({
24
24
  canUseTeams: () => license?.canUseTeams() ?? false,
25
25
  canUsePrivateFiles: () => license?.canUsePrivateFiles() ?? false,
26
26
  canUseFileManagerThreatDetection: () => license?.canUseFileManagerThreatDetection() ?? false,
27
- canUseWorkflows: () => license?.canUseWorkflows() ?? false
27
+ canUseWorkflows: () => license?.canUseWorkflows() ?? false,
28
+ canUseHcmsFieldPermissions: () => license?.canUseHcmsFieldPermissions() ?? false
28
29
  };
29
30
  return /*#__PURE__*/React.createElement(WcpProjectLicenseContext.Provider, {
30
31
  value: value
@@ -1 +1 @@
1
- {"version":3,"names":["React","createContext","useContext","useMemo","License","WcpProjectLicenseContext","WcpProjectLicenseProvider","children","license","licenseEnv","process","env","WCP_PROJECT_LICENSE","licenseDto","JSON","parse","fromLicenseDto","e","console","warn","hasLicense","value","canUseMultiTenancy","canUseTeams","canUsePrivateFiles","canUseFileManagerThreatDetection","canUseWorkflows","createElement","Provider","useWcpProjectLicense","context","Error"],"sources":["WcpProjectLicenseContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo } from \"react\";\nimport { License } from \"@webiny/wcp\";\nimport type { DecryptedWcpProjectLicense } from \"@webiny/wcp/types.js\";\n\nexport interface WcpProjectLicenseContextValue {\n hasLicense: boolean;\n canUseMultiTenancy: () => boolean;\n canUseTeams: () => boolean;\n canUsePrivateFiles: () => boolean;\n canUseFileManagerThreatDetection: () => boolean;\n canUseWorkflows: () => boolean;\n}\n\nconst WcpProjectLicenseContext = createContext<WcpProjectLicenseContextValue | null>(null);\n\nexport const WcpProjectLicenseProvider: React.FC<{ children: React.ReactNode }> = ({\n children\n}) => {\n const license = useMemo(() => {\n const licenseEnv = process.env.WCP_PROJECT_LICENSE;\n if (!licenseEnv) {\n return null;\n }\n\n try {\n const licenseDto = JSON.parse(licenseEnv) as DecryptedWcpProjectLicense;\n return License.fromLicenseDto(licenseDto);\n } catch (e) {\n console.warn(\n \"Failed to parse WCP_PROJECT_LICENSE environment variable. Expected valid JSON with DecryptedWcpProjectLicense format:\",\n e\n );\n return null;\n }\n }, []);\n\n const hasLicense = !!license;\n\n const value: WcpProjectLicenseContextValue = {\n hasLicense,\n canUseMultiTenancy: () => hasLicense,\n canUseTeams: () => license?.canUseTeams() ?? false,\n canUsePrivateFiles: () => license?.canUsePrivateFiles() ?? false,\n canUseFileManagerThreatDetection: () =>\n license?.canUseFileManagerThreatDetection() ?? false,\n canUseWorkflows: () => license?.canUseWorkflows() ?? false\n };\n\n return (\n <WcpProjectLicenseContext.Provider value={value}>\n {children}\n </WcpProjectLicenseContext.Provider>\n );\n};\n\nexport const useWcpProjectLicense = () => {\n const context = useContext(WcpProjectLicenseContext);\n if (!context) {\n throw new Error(\"useWcpProjectLicense must be used within a WcpProjectLicenseProvider\");\n }\n return context;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AACjE,SAASC,OAAO,QAAQ,aAAa;AAYrC,MAAMC,wBAAwB,gBAAGJ,aAAa,CAAuC,IAAI,CAAC;AAE1F,OAAO,MAAMK,yBAAkE,GAAGA,CAAC;EAC/EC;AACJ,CAAC,KAAK;EACF,MAAMC,OAAO,GAAGL,OAAO,CAAC,MAAM;IAC1B,MAAMM,UAAU,GAAGC,OAAO,CAACC,GAAG,CAACC,mBAAmB;IAClD,IAAI,CAACH,UAAU,EAAE;MACb,OAAO,IAAI;IACf;IAEA,IAAI;MACA,MAAMI,UAAU,GAAGC,IAAI,CAACC,KAAK,CAACN,UAAU,CAA+B;MACvE,OAAOL,OAAO,CAACY,cAAc,CAACH,UAAU,CAAC;IAC7C,CAAC,CAAC,OAAOI,CAAC,EAAE;MACRC,OAAO,CAACC,IAAI,CACR,uHAAuH,EACvHF,CACJ,CAAC;MACD,OAAO,IAAI;IACf;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMG,UAAU,GAAG,CAAC,CAACZ,OAAO;EAE5B,MAAMa,KAAoC,GAAG;IACzCD,UAAU;IACVE,kBAAkB,EAAEA,CAAA,KAAMF,UAAU;IACpCG,WAAW,EAAEA,CAAA,KAAMf,OAAO,EAAEe,WAAW,CAAC,CAAC,IAAI,KAAK;IAClDC,kBAAkB,EAAEA,CAAA,KAAMhB,OAAO,EAAEgB,kBAAkB,CAAC,CAAC,IAAI,KAAK;IAChEC,gCAAgC,EAAEA,CAAA,KAC9BjB,OAAO,EAAEiB,gCAAgC,CAAC,CAAC,IAAI,KAAK;IACxDC,eAAe,EAAEA,CAAA,KAAMlB,OAAO,EAAEkB,eAAe,CAAC,CAAC,IAAI;EACzD,CAAC;EAED,oBACI1B,KAAA,CAAA2B,aAAA,CAACtB,wBAAwB,CAACuB,QAAQ;IAACP,KAAK,EAAEA;EAAM,GAC3Cd,QAC8B,CAAC;AAE5C,CAAC;AAED,OAAO,MAAMsB,oBAAoB,GAAGA,CAAA,KAAM;EACtC,MAAMC,OAAO,GAAG5B,UAAU,CAACG,wBAAwB,CAAC;EACpD,IAAI,CAACyB,OAAO,EAAE;IACV,MAAM,IAAIC,KAAK,CAAC,sEAAsE,CAAC;EAC3F;EACA,OAAOD,OAAO;AAClB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","createContext","useContext","useMemo","License","WcpProjectLicenseContext","WcpProjectLicenseProvider","children","license","licenseEnv","process","env","WCP_PROJECT_LICENSE","licenseDto","JSON","parse","fromLicenseDto","e","console","warn","hasLicense","value","canUseMultiTenancy","canUseTeams","canUsePrivateFiles","canUseFileManagerThreatDetection","canUseWorkflows","canUseHcmsFieldPermissions","createElement","Provider","useWcpProjectLicense","context","Error"],"sources":["WcpProjectLicenseContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo } from \"react\";\nimport { License } from \"@webiny/wcp\";\nimport type { DecryptedWcpProjectLicense } from \"@webiny/wcp/types.js\";\n\nexport interface WcpProjectLicenseContextValue {\n hasLicense: boolean;\n canUseMultiTenancy: () => boolean;\n canUseTeams: () => boolean;\n canUsePrivateFiles: () => boolean;\n canUseFileManagerThreatDetection: () => boolean;\n canUseWorkflows: () => boolean;\n canUseHcmsFieldPermissions: () => boolean;\n}\n\nconst WcpProjectLicenseContext = createContext<WcpProjectLicenseContextValue | null>(null);\n\nexport const WcpProjectLicenseProvider: React.FC<{ children: React.ReactNode }> = ({\n children\n}) => {\n const license = useMemo(() => {\n const licenseEnv = process.env.WCP_PROJECT_LICENSE;\n if (!licenseEnv) {\n return null;\n }\n\n try {\n const licenseDto = JSON.parse(licenseEnv) as DecryptedWcpProjectLicense;\n return License.fromLicenseDto(licenseDto);\n } catch (e) {\n console.warn(\n \"Failed to parse WCP_PROJECT_LICENSE environment variable. Expected valid JSON with DecryptedWcpProjectLicense format:\",\n e\n );\n return null;\n }\n }, []);\n\n const hasLicense = !!license;\n\n const value: WcpProjectLicenseContextValue = {\n hasLicense,\n canUseMultiTenancy: () => hasLicense,\n canUseTeams: () => license?.canUseTeams() ?? false,\n canUsePrivateFiles: () => license?.canUsePrivateFiles() ?? false,\n canUseFileManagerThreatDetection: () =>\n license?.canUseFileManagerThreatDetection() ?? false,\n canUseWorkflows: () => license?.canUseWorkflows() ?? false,\n canUseHcmsFieldPermissions: () => license?.canUseHcmsFieldPermissions() ?? false\n };\n\n return (\n <WcpProjectLicenseContext.Provider value={value}>\n {children}\n </WcpProjectLicenseContext.Provider>\n );\n};\n\nexport const useWcpProjectLicense = () => {\n const context = useContext(WcpProjectLicenseContext);\n if (!context) {\n throw new Error(\"useWcpProjectLicense must be used within a WcpProjectLicenseProvider\");\n }\n return context;\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AACjE,SAASC,OAAO,QAAQ,aAAa;AAarC,MAAMC,wBAAwB,gBAAGJ,aAAa,CAAuC,IAAI,CAAC;AAE1F,OAAO,MAAMK,yBAAkE,GAAGA,CAAC;EAC/EC;AACJ,CAAC,KAAK;EACF,MAAMC,OAAO,GAAGL,OAAO,CAAC,MAAM;IAC1B,MAAMM,UAAU,GAAGC,OAAO,CAACC,GAAG,CAACC,mBAAmB;IAClD,IAAI,CAACH,UAAU,EAAE;MACb,OAAO,IAAI;IACf;IAEA,IAAI;MACA,MAAMI,UAAU,GAAGC,IAAI,CAACC,KAAK,CAACN,UAAU,CAA+B;MACvE,OAAOL,OAAO,CAACY,cAAc,CAACH,UAAU,CAAC;IAC7C,CAAC,CAAC,OAAOI,CAAC,EAAE;MACRC,OAAO,CAACC,IAAI,CACR,uHAAuH,EACvHF,CACJ,CAAC;MACD,OAAO,IAAI;IACf;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMG,UAAU,GAAG,CAAC,CAACZ,OAAO;EAE5B,MAAMa,KAAoC,GAAG;IACzCD,UAAU;IACVE,kBAAkB,EAAEA,CAAA,KAAMF,UAAU;IACpCG,WAAW,EAAEA,CAAA,KAAMf,OAAO,EAAEe,WAAW,CAAC,CAAC,IAAI,KAAK;IAClDC,kBAAkB,EAAEA,CAAA,KAAMhB,OAAO,EAAEgB,kBAAkB,CAAC,CAAC,IAAI,KAAK;IAChEC,gCAAgC,EAAEA,CAAA,KAC9BjB,OAAO,EAAEiB,gCAAgC,CAAC,CAAC,IAAI,KAAK;IACxDC,eAAe,EAAEA,CAAA,KAAMlB,OAAO,EAAEkB,eAAe,CAAC,CAAC,IAAI,KAAK;IAC1DC,0BAA0B,EAAEA,CAAA,KAAMnB,OAAO,EAAEmB,0BAA0B,CAAC,CAAC,IAAI;EAC/E,CAAC;EAED,oBACI3B,KAAA,CAAA4B,aAAA,CAACvB,wBAAwB,CAACwB,QAAQ;IAACR,KAAK,EAAEA;EAAM,GAC3Cd,QAC8B,CAAC;AAE5C,CAAC;AAED,OAAO,MAAMuB,oBAAoB,GAAGA,CAAA,KAAM;EACtC,MAAMC,OAAO,GAAG7B,UAAU,CAACG,wBAAwB,CAAC;EACpD,IAAI,CAAC0B,OAAO,EAAE;IACV,MAAM,IAAIC,KAAK,CAAC,sEAAsE,CAAC;EAC3F;EACA,OAAOD,OAAO;AAClB,CAAC","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- export { EnvVar } from "../extensions/EnvVar.js";
2
- export { FeatureFlags } from "../extensions/FeatureFlags.js";
@@ -1,4 +0,0 @@
1
- export { EnvVar } from "../extensions/EnvVar.js";
2
- export { FeatureFlags } from "../extensions/FeatureFlags.js";
3
-
4
- //# sourceMappingURL=extensions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["EnvVar","FeatureFlags"],"sources":["extensions.ts"],"sourcesContent":["export { EnvVar } from \"~/extensions/EnvVar.js\";\nexport { FeatureFlags } from \"~/extensions/FeatureFlags.js\";\n"],"mappings":"AAAA,SAASA,MAAM;AACf,SAASC,YAAY","ignoreList":[]}